pybik-3.0/0000755000175000017500000000000013173167603012647 5ustar barccbarcc00000000000000pybik-3.0/COPYING0000664000175000017500000010451312130247775013711 0ustar barccbarcc00000000000000 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. Copyright (C) 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: Copyright (C) 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 . pybik-3.0/build_local.sh0000775000175000017500000000014212556223565015462 0ustar barccbarcc00000000000000#!/bin/sh set -e ./setup.py build --inplace --parallel=True "$@" build_doc install_desktop --ask pybik-3.0/PKG-INFO0000644000175000017500000000222113173167603013741 0ustar barccbarcc00000000000000Metadata-Version: 1.1 Name: pybik Version: 3.0 Summary: Rubik's cube game Home-page: https://launchpad.net/pybik/ Author: B. Clausius Author-email: barcc@gmx.de License: GPL-3.0+ Download-URL: https://launchpad.net/pybik/+download Description: Pybik is a 3D puzzle game about the cube invented by Ernő Rubik. * Various 3D puzzles, such as cubes, towers, prisms, tetrahedra, octahedra, dodecahedra and many more * Solvers for some puzzles * Pretty patterns * Editor for move sequences * Custom colors and images on the surface of the puzzles Keywords: rubik cube puzzle game Platform: UNKNOWN Classifier: Development Status :: 5 - Production/Stable Classifier: Environment :: X11 Applications :: Qt Classifier: Intended Audience :: End Users/Desktop Classifier: License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+) Classifier: Operating System :: POSIX Classifier: Operating System :: POSIX :: Linux Classifier: Programming Language :: Python :: 3 Classifier: Programming Language :: Python :: 3.4 Classifier: Programming Language :: Cython Classifier: Topic :: Games/Entertainment :: Puzzle Games pybik-3.0/po/0000755000175000017500000000000013173167603013265 5ustar barccbarcc00000000000000pybik-3.0/po/de.po0000644000175000017500000016564313173052130014220 0ustar barccbarcc00000000000000# German translation for pybik # Copyright (C) 2009-2017 B. Clausius # This file is distributed under the same license as the pybik package. # B. Clausius , 2009-2017. # msgid "" msgstr "" "Project-Id-Version: pybik\n" "Report-Msgid-Bugs-To: https://bugs.launchpad.net/pybik/+filebug\n" "POT-Creation-Date: 2017-09-10 21:58+0200\n" "PO-Revision-Date: 2017-09-17 05:55+0000\n" "Last-Translator: B. Clausius \n" "Language-Team: German\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Launchpad-Export-Date: 2017-09-18 05:31+0000\n" "X-Generator: Launchpad (build 18449)\n" "Language: \n" # translated by: B. Clausius https://launchpad.net/~barcc on 2012-12-12 18:48:26 UTC #: pybiklib/application.py:294 msgid "Press the Esc key to exit Edit Mode" msgstr "Drücken Sie die Esc-Taste, um den Edit-Modus zu beenden" # translated by: B. Clausius https://launchpad.net/~barcc on 2012-12-04 14:31:10 UTC #. substitution for {move_text} in statusbar text #: pybiklib/application.py:302 #, python-brace-format msgid "{current} / {total} move" msgid_plural "{current} / {total} moves" msgstr[0] "{current} / {total} Zug" msgstr[1] "{current} / {total} Züge" # translated by: B. Clausius https://launchpad.net/~barcc on 2011-06-22 12:04:49 UTC #. substitution for {solved_text} in statusbar text #: pybiklib/application.py:306 msgid "solved" msgstr "gelöst" # translated by: B. Clausius https://launchpad.net/~barcc on 2011-06-22 12:04:49 UTC #: pybiklib/application.py:306 msgid "not solved" msgstr "ungelöst" # translated by: B. Clausius https://launchpad.net/~barcc on 2012-12-12 18:48:26 UTC #. statusbar text #: pybiklib/application.py:309 #, python-brace-format msgid "{move_text}, {solved_text}" msgstr "{move_text}, {solved_text}" # translated by: B. Clausius https://launchpad.net/~barcc on 2012-12-12 18:48:26 UTC #: pybiklib/application.py:314 msgid "Congratulations, you have solved the puzzle!" msgstr "Glückwunsch, Sie haben das Puzzle gelöst!" # translated by: B. Clausius https://launchpad.net/~barcc on 2011-06-22 12:04:49 UTC #. Name of the application, probably should not be translated. #: pybiklib/config.py:35 data/ui/qt/main.ui.h:271 #: data/app-meta/pybik.desktop.in:3 msgid "Pybik" msgstr "Pybik" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-03-28 22:58:20 UTC #. short description #: pybiklib/config.py:65 data/app-meta/pybik.desktop.in:4 msgid "Rubik's cube game" msgstr "Rubiks Zauberwürfelspiel" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-07-20 18:06:30 UTC #. The next 7 lines belong together and form the long description #: pybiklib/config.py:68 msgid "Pybik is a 3D puzzle game about the cube invented by Ernő Rubik." msgstr "Pybik ist ein 3D-Puzzle mit dem von Ernő Rubik erfundenen Würfel." # translated by: B. Clausius https://launchpad.net/~barcc on 2017-09-10 10:43:33 UTC #: pybiklib/config.py:70 msgid "" "Various 3D puzzles, such as cubes, towers, prisms, tetrahedra, octahedra, " "dodecahedra and many more" msgstr "" "Verschiedene 3D-Puzzles: Würfel, Türme, Prismen, Tetraeder, Oktaeder, " "Dodekaeder und viele mehr" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-07-20 18:06:30 UTC #: pybiklib/config.py:71 msgid "Solvers for some puzzles" msgstr "Lösungen für einige Puzzles" # translated by: B. Clausius https://launchpad.net/~barcc on 2011-06-22 12:04:49 UTC #. Use something that is common in the Rubik scene in your language, sometimes it's just the equivalent of "patterns". #: pybiklib/config.py:72 data/plugins/80-pretty-patterns.plugins.py:19 #: data/plugins/80-pretty-patterns.plugins.py:22 #: data/plugins/80-pretty-patterns.plugins.py:26 #: data/plugins/80-pretty-patterns.plugins.py:30 #: data/plugins/80-pretty-patterns.plugins.py:34 #: data/plugins/80-pretty-patterns.plugins.py:39 #: data/plugins/80-pretty-patterns.plugins.py:43 #: data/plugins/80-pretty-patterns.plugins.py:48 #: data/plugins/80-pretty-patterns.plugins.py:52 #: data/plugins/80-pretty-patterns.plugins.py:56 #: data/plugins/80-pretty-patterns.plugins.py:60 #: data/plugins/80-pretty-patterns.plugins.py:64 #: data/plugins/80-pretty-patterns.plugins.py:68 #: data/plugins/80-pretty-patterns.plugins.py:72 #: data/plugins/80-pretty-patterns.plugins.py:76 #: data/plugins/80-pretty-patterns.plugins.py:82 #: data/plugins/80-pretty-patterns.plugins.py:86 #: data/plugins/80-pretty-patterns.plugins.py:91 #: data/plugins/80-pretty-patterns.plugins.py:95 #: data/plugins/80-pretty-patterns.plugins.py:99 #: data/plugins/80-pretty-patterns.plugins.py:103 #: data/plugins/80-pretty-patterns.plugins.py:107 #: data/plugins/80-pretty-patterns.plugins.py:111 #: data/plugins/80-pretty-patterns.plugins.py:116 #: data/plugins/80-pretty-patterns.plugins.py:120 #: data/plugins/80-pretty-patterns.plugins.py:124 #: data/plugins/80-pretty-patterns.plugins.py:128 #: data/plugins/80-pretty-patterns.plugins.py:133 #: data/plugins/80-pretty-patterns.plugins.py:137 #: data/plugins/80-pretty-patterns.plugins.py:141 #: data/plugins/80-pretty-patterns.plugins.py:145 #: data/plugins/80-pretty-patterns.plugins.py:149 #: data/plugins/80-pretty-patterns.plugins.py:153 #: data/plugins/80-pretty-patterns.plugins.py:157 #: data/plugins/80-pretty-patterns.plugins.py:161 #: data/plugins/80-pretty-patterns.plugins.py:165 #: data/plugins/80-pretty-patterns.plugins.py:169 #: data/plugins/80-pretty-patterns.plugins.py:173 #: data/plugins/80-pretty-patterns.plugins.py:177 #: data/plugins/80-pretty-patterns.plugins.py:181 #: data/plugins/80-pretty-patterns.plugins.py:185 #: data/plugins/80-pretty-patterns.plugins.py:190 #: data/plugins/80-pretty-patterns.plugins.py:195 #: data/plugins/80-pretty-patterns.plugins.py:199 #: data/plugins/80-pretty-patterns.plugins.py:203 #: data/plugins/80-pretty-patterns.plugins.py:207 #: data/plugins/80-pretty-patterns.plugins.py:211 #: data/plugins/80-pretty-patterns.plugins.py:215 #: data/plugins/80-pretty-patterns.plugins.py:219 msgid "Pretty patterns" msgstr "Muster" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-07-20 18:06:30 UTC #: pybiklib/config.py:73 msgid "Editor for move sequences" msgstr "Bearbeitbare Zugfolgen" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-07-20 18:06:30 UTC #: pybiklib/config.py:74 msgid "Custom colors and images on the surface of the puzzles" msgstr "Benutzerdefinierte Farben und Bilder auf der Oberfläche der Puzzles" # translated by: B. Clausius https://launchpad.net/~barcc on 2012-11-01 01:46:43 UTC #: pybiklib/config.py:78 msgid "" "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.\n" "\n" "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." msgstr "" "Dieses Programm ist freie Software. Sie können es unter den Bedingungen der " "GNU General Public License, wie von der Free Software Foundation " "veröffentlicht, weitergeben und/oder modifizieren, entweder gemäß Version 3 " "der Lizenz oder (nach Ihrer Option) jeder späteren Version.\n" "\n" "Die Veröffentlichung dieses Programms erfolgt in der Hoffnung, dass es Ihnen " "von Nutzen sein wird, aber OHNE IRGENDEINE GARANTIE, sogar ohne die " "implizite Garantie der MARKTREIFE oder der VERWENDBARKEIT FÜR EINEN " "BESTIMMTEN ZWECK. Details finden Sie in der GNU General Public License." # translated by: B. Clausius https://launchpad.net/~barcc on 2012-11-01 01:46:43 UTC #. Text between "<" and ">" is expanded to a link by the program and should not be modified. #. Text between "" and "<|>" is the translatable text for the link. #: pybiklib/config.py:90 msgid "" "Read the full text of the GNU General Public " "License<|> or see ." msgstr "" "Lesen sie den vollständigen Text der GNU General " "Public License<|> oder siehe ." # translated by: B. Clausius https://launchpad.net/~barcc on 2012-01-04 15:33:14 UTC #: pybiklib/config.py:93 msgid "" "You should have received a copy of the GNU General Public License along with " "this program. If not, see ." msgstr "" "Sie sollten ein Exemplar der GNU General Public License zusammen mit diesem " "Programm erhalten haben. Falls nicht, siehe ." # translated by: B. Clausius https://launchpad.net/~barcc on 2012-12-12 18:48:26 UTC #: pybiklib/config.py:98 #, python-brace-format msgid "" "If you find any bugs in Pybik or have a suggestion for an improvement then " "please submit a <{CONTACT_FILEBUG}|>bug report<|>." msgstr "" "Wenn Sie irgendwelche Fehler in Pybik gefunden haben oder einen " "Verbesserungsvorschlag haben, erstellen Sie bitte einen " "<{CONTACT_FILEBUG}|>Fehlerbericht<|>." # translated by: B. Clausius https://launchpad.net/~barcc on 2012-12-12 18:48:26 UTC #: pybiklib/config.py:103 msgid "" "Translations are managed by the " "Launchpad " "translation group<|>.\n" "\n" "If you want help to translate Pybik to your language you can do it through " "the web interface<|>.\n" "\n" "Read more about \"Translating with " "Launchpad\"<|> and " "\"Starting to " "translate\"<|>." msgstr "" "Übersetzungen werden von der " "Launchpad " "Übersetzer-Gruppe<|> gemacht.\n" "\n" "Wenn Sie bei der Übersetzung von Pybik helfen wollen, können Sie das über " "die Web-Oberfläche<|> tun.\n" "\n" "Lesen Sie mehr über „Translating " "with Launchpad“<|> und " "„Starting to " "translate“<|>." # translated by: B. Clausius https://launchpad.net/~barcc on 2015-03-28 22:58:20 UTC #: pybiklib/dialogs.py:44 msgid "Lighting" msgstr "Beleuchtung" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-03-28 22:58:20 UTC #: pybiklib/dialogs.py:44 msgid "Simple" msgstr "einfach" # translated by: B. Clausius https://launchpad.net/~barcc on 2017-09-10 10:43:33 UTC #. labels are the colored stickers on the cube #: pybiklib/dialogs.py:46 msgid "Labels" msgstr "Aufkleber" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-03-28 22:58:20 UTC #: pybiklib/dialogs.py:104 data/ui/qt/main.ui.h:275 msgid "Select Puzzle" msgstr "Puzzle auswählen" # translated by: B. Clausius https://launchpad.net/~barcc on 2011-07-06 09:11:12 UTC #. 1 slice, 2 slices, 3 slices, ... #: pybiklib/dialogs.py:134 pybiklib/dialogs.py:154 pybiklib/dialogs.py:180 #: pybiklib/dialogs.py:201 msgid "{} slice" msgid_plural "{} slices" msgstr[0] "{} Schicht" msgstr[1] "{} Schichten" # translated by: B. Clausius https://launchpad.net/~barcc on 2017-09-10 10:43:33 UTC #: pybiklib/dialogs.py:196 pybiklib/dialogs.py:225 msgid "{}×{} slices" msgstr "{}×{} Schichten" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-03-28 22:58:20 UTC #. The next strings form the text in the help dialog: #. Title of the 1st paragraph #: pybiklib/dialogs.py:290 msgid "Using the mouse to rotate the cube" msgstr "Die Maus benutzen zum Würfeldrehen" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-07-20 18:06:30 UTC #. Text of the 1st paragraph, followed by bullet list items #: pybiklib/dialogs.py:292 msgid "" "Position the mouse cursor over the puzzle and you will see an arrow that " "gives you a hint in which direction the slice under the mouse cursor will be " "rotated." msgstr "" "Wenn man die Maus über das Puzzle bewegt, zeigt der pfeilförmige Mauszeiger " "die Richtung an, in der sich die Schicht bewegen wird." # translated by: B. Clausius https://launchpad.net/~barcc on 2015-07-20 18:06:30 UTC #: pybiklib/dialogs.py:294 msgid "" "The left mouse button rotates a single slice of the cube in the direction of " "the arrow." msgstr "Der linke Maustaste dreht eine einzelne Schicht in Pfeilrichtung." # translated by: B. Clausius https://launchpad.net/~barcc on 2015-07-20 18:06:30 UTC #: pybiklib/dialogs.py:295 msgid "" "The right mouse button rotates a single slice of the cube against the " "direction of the arrow." msgstr "" "Der rechte Maustaste dreht eine einzelne Schicht entgegen der Pfeilrichtung." # translated by: B. Clausius https://launchpad.net/~barcc on 2015-07-20 18:06:30 UTC #: pybiklib/dialogs.py:296 msgid "" "To rotate the whole cube instead of a single slice press the Ctrl key " "together with the mouse button." msgstr "" "Um den ganzen Würfel zu drehen anstelle einer einzelnen Schicht, muss man " "die Strg-Taste halten während man die Maustaste drückt." # translated by: B. Clausius https://launchpad.net/~barcc on 2015-03-28 22:58:20 UTC #. Title of the 2nd paragraph #: pybiklib/dialogs.py:298 msgid "Using the keyboard to rotate the cube" msgstr "Die Tastatur benutzen zum Würfeldrehen" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-03-28 22:58:20 UTC #. Text of the 2nd paragraph, followed by bullet list items #: pybiklib/dialogs.py:300 msgid "" "Make sure the keyboard focus is on the cube area (e.g. click on the " "background of the cube). The keys can be configured in the preferences " "dialog, the default is:" msgstr "" "Der Tastatur-Fokus muss auf dem Würfel sein (um das zu erreichen kann man " "beispielsweise auf Hintergrund klicken). Die Tasten können im " "Einstellungsdialog geändert werden, die Voreinstellung ist:" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-03-28 22:58:20 UTC #. before the item text is a list of keys #: pybiklib/dialogs.py:303 pybiklib/dialogs.py:318 msgid "Moves the left, right, upper, down, front or back slice clockwise." msgstr "" "Bewegt die linke, rechte, obere, untere, vordere oder hintere Schicht im " "Uhrzeigersinn." # translated by: B. Clausius https://launchpad.net/~barcc on 2015-03-28 22:58:20 UTC #: pybiklib/dialogs.py:304 pybiklib/dialogs.py:319 msgid "Moves a slice couterclockwise." msgstr "Bewegt eine Schicht gegen den Uhrzeigersinn." # translated by: B. Clausius https://launchpad.net/~barcc on 2015-03-28 22:58:20 UTC #: pybiklib/dialogs.py:305 pybiklib/dialogs.py:320 msgid "Moves the whole cube." msgstr "Bewegt den ganzen Würfel." # translated by: B. Clausius https://launchpad.net/~barcc on 2015-03-28 22:58:20 UTC #. Title of the 3rd paragraph #: pybiklib/dialogs.py:307 msgid "Other keys and buttons" msgstr "Andere (Maus-)Tasten" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-03-28 22:58:20 UTC #. bullet list items of the 3rd paragraph #: pybiklib/dialogs.py:309 msgid "Mouse wheel – Zoom in/out" msgstr "Mausrad – Vergrößern/Verkleinern" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-04-07 19:21:55 UTC #: pybiklib/dialogs.py:310 msgid "" "Arrow keys, Left mouse button on the background – Changes the direction of " "looking at the cube." msgstr "" "Pfeiltasten, Linke Maustaste auf den Hintergrund – Ändert die Blickrichtung " "auf den Würfel." # translated by: B. Clausius https://launchpad.net/~barcc on 2015-03-28 22:58:20 UTC #: pybiklib/dialogs.py:311 msgid "" "Moves keyboard focus to the sequence editor above the cube area where you " "can edit the move sequence in the notation described below. Hit enter when " "done." msgstr "" "Bewegt den Tastatur-Fokus zur Bearbeitungsleiste für Zugfolgen. Die Notation " "für die Zugfolgen werden weiter unten beschrieben. Durch das Drücken der " "Eingabetaste werden die Änderungen angewendet." # translated by: B. Clausius https://launchpad.net/~barcc on 2015-03-28 22:58:20 UTC #. Title of the 4th paragraph #: pybiklib/dialogs.py:315 msgid "Notation for moves" msgstr "Notation für Zugfolgen" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-07-20 18:06:30 UTC #. Text of the 4th paragraph, followed by bullet list items #: pybiklib/dialogs.py:317 msgid "" "All moves, however they are made, are displayed progressively above the cube " "area:" msgstr "Alle Züge werden sofort über dem Würfelbereich angezeigt:" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-03-28 22:58:20 UTC #: pybiklib/dialogs.py:321 msgid "" "Moves the first, second or third slice from left clockwise. The allowed " "numbers are in the range from 1 to the count of parallel slices. \"l1\" is " "always the same as \"l\" and for the classic 3×3×3-Cube \"l2\" is the same " "as \"r2-\" and \"l3\" is the same as \"r-\"." msgstr "" "Bewegt die erste, zweite oder dritte Schicht von links im Uhrzeigersinn. " "Erlaubt sind Zahlen von 1 bis zur Anzahl paralleler Schichten. \"l1\" ist " "immer gleich \"l\" und für den klassischen 3×3×3-Würfel is \"l2\" gleich " "\"r2-\" und \"l3\" ist gleich \"r-\"." # translated by: B. Clausius https://launchpad.net/~barcc on 2015-07-20 18:06:30 UTC #: pybiklib/dialogs.py:325 msgid "You can use a space to separate groups of moves." msgstr "Ein Leerzeichen trennt Gruppen von Zugfolgen." # translated by: B. Clausius https://launchpad.net/~barcc on 2012-11-03 14:13:02 UTC #: pybiklib/dialogs.py:379 msgid "Pybik project website" msgstr "Pybik Projekt-Webseite" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-03-28 22:58:20 UTC #: pybiklib/pluginlib.py:301 msgid "This plugin does not work for any model." msgstr "Dieses Plugin funktioniert für kein Modell." # translated by: B. Clausius https://launchpad.net/~barcc on 2015-03-28 22:58:20 UTC #: pybiklib/pluginlib.py:303 pybiklib/pluginlib.py:306 msgid "This plugin only works for:" msgstr "Dieses Plugin funktioniert nur für:" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-07-20 18:06:30 UTC #: pybiklib/pluginlib.py:498 msgid "This puzzle is not solvable." msgstr "Dieses Puzzle ist nicht lösbar." # translated by: B. Clausius https://launchpad.net/~barcc on 2013-05-31 16:53:26 UTC #. The following 6 words are for the antialiasing levels: disabled, ugly, low, medium, high, higher #: pybiklib/schema.py:211 msgid "disabled" msgstr "deaktiviert" # translated by: B. Clausius https://launchpad.net/~barcc on 2013-05-31 16:53:26 UTC #: pybiklib/schema.py:211 msgid "ugly" msgstr "hässlich" # translated by: B. Clausius https://launchpad.net/~barcc on 2013-05-31 16:53:26 UTC #: pybiklib/schema.py:211 msgid "low" msgstr "schwach" # translated by: B. Clausius https://launchpad.net/~barcc on 2013-05-31 16:53:26 UTC #: pybiklib/schema.py:212 msgid "medium" msgstr "mittel" # translated by: B. Clausius https://launchpad.net/~barcc on 2013-05-31 16:53:26 UTC #: pybiklib/schema.py:212 msgid "high" msgstr "stark" # translated by: B. Clausius https://launchpad.net/~barcc on 2013-05-31 16:53:26 UTC #: pybiklib/schema.py:212 msgid "higher" msgstr "stärker" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-03-28 22:58:20 UTC #: data/ui/qt/about.ui.h:212 msgid "About Pybik" msgstr "Über Pybik" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-03-28 22:58:20 UTC #: data/ui/qt/about.ui.h:213 msgid "Translators:" msgstr "Übersetzer:" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-03-28 22:58:20 UTC #: data/ui/qt/about.ui.h:214 msgid "About" msgstr "Über" # translated by: B. Clausius https://launchpad.net/~barcc on 2017-09-10 10:43:33 UTC #: data/ui/qt/about.ui.h:215 msgid "Contribute" msgstr "Mitwirken" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-03-28 22:58:20 UTC #: data/ui/qt/about.ui.h:216 msgid "License" msgstr "Lizenz" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-03-28 22:58:20 UTC #: data/ui/qt/help.ui.h:53 data/ui/qt/main.ui.h:297 msgid "Help" msgstr "Hilfe" # translated by: B. Clausius https://launchpad.net/~barcc on 2012-11-01 01:46:43 UTC #: data/ui/qt/main.ui.h:272 msgid "&New Challenge" msgstr "&Neue Herausforderung" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-03-28 22:58:20 UTC #: data/ui/qt/main.ui.h:273 msgid "Ne&w Solved" msgstr "Ne&u, gelöst" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-03-28 22:58:20 UTC #: data/ui/qt/main.ui.h:274 msgid "&Quit" msgstr "&Beenden" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-03-28 22:58:20 UTC #: data/ui/qt/main.ui.h:276 msgid "&Set as Initial State" msgstr "Als &Ausgangszustand festlegen" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-03-28 22:58:20 UTC #: data/ui/qt/main.ui.h:277 msgid "&Reset Rotation" msgstr "&Rotation zurücksetzen" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-03-28 22:58:20 UTC #: data/ui/qt/main.ui.h:278 msgid "&Preferences …" msgstr "&Einstellungen …" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-03-28 22:58:20 UTC #: data/ui/qt/main.ui.h:279 msgid "&Status Bar" msgstr "&Statusleiste" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-03-28 22:58:20 UTC #: data/ui/qt/main.ui.h:280 msgid "&Info …" msgstr "&Info …" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-03-28 22:58:20 UTC #: data/ui/qt/main.ui.h:281 msgid "Rewind" msgstr "Zurückspulen" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-03-28 22:58:20 UTC #: data/ui/qt/main.ui.h:282 msgid "Previous" msgstr "Zurück" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-03-28 22:58:20 UTC #: data/ui/qt/main.ui.h:283 msgid "Stop" msgstr "Stopp" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-03-28 22:58:20 UTC #: data/ui/qt/main.ui.h:284 msgid "Play" msgstr "Abspielen" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-03-28 22:58:20 UTC #: data/ui/qt/main.ui.h:285 msgid "Next" msgstr "Weiter" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-03-28 22:58:20 UTC #: data/ui/qt/main.ui.h:286 msgid "Forward" msgstr "Vorspulen" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-03-28 22:58:20 UTC #: data/ui/qt/main.ui.h:287 msgid "Add Mark" msgstr "Markierung einfügen" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-03-28 22:58:20 UTC #: data/ui/qt/main.ui.h:289 msgid "Mark the current place in the sequence of moves" msgstr "Markiere die aktuelle Stelle in der Zugabfolge" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-03-28 22:58:20 UTC #: data/ui/qt/main.ui.h:291 msgid "Remove Mark" msgstr "Markierung entfernen" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-03-28 22:58:20 UTC #: data/ui/qt/main.ui.h:293 msgid "Remove the mark at the current place in the sequence of moves" msgstr "Markierung an der aktuellen Stelle in der Zugabfolge entfernen" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-03-28 22:58:20 UTC #: data/ui/qt/main.ui.h:295 msgid "&Edit Bar" msgstr "&Bearbeiten-Leiste" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-03-28 22:58:20 UTC #: data/ui/qt/main.ui.h:296 msgid "&Help …" msgstr "&Hilfe …" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-03-28 22:58:20 UTC #: data/ui/qt/preferences.ui.h:372 msgid "Preferences" msgstr "Einstellungen" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-03-28 22:58:20 UTC #: data/ui/qt/preferences.ui.h:373 msgid "Animation Speed:" msgstr "Animationsgeschwindigkeit:" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-03-28 22:58:20 UTC #: data/ui/qt/preferences.ui.h:375 msgid "Mirror Distance:" msgstr "Spiegel-Abstand:" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-03-28 22:58:20 UTC #: data/ui/qt/preferences.ui.h:377 msgid "Quality:" msgstr "Qualität:" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-03-28 22:58:20 UTC #: data/ui/qt/preferences.ui.h:380 msgid "" "Lower antialiasing has better performance, higher antialiasing has better " "quality." msgstr "" "Schwächeres Antialiasing bedeutet eine bessere Leistung, stärkeres " "Antialiasing bedeutet eine bessere Qualität." # translated by: B. Clausius https://launchpad.net/~barcc on 2015-03-28 22:58:20 UTC #: data/ui/qt/preferences.ui.h:382 msgid "Antialiasing:" msgstr "Antialiasing:" # translated by: B. Clausius https://launchpad.net/~barcc on 2013-05-31 23:46:02 UTC #: data/ui/qt/preferences.ui.h:384 msgid "The program needs to be restarted for the changes to take effect." msgstr "" "Das Programm muss neu gestartet werden, damit die Änderungen wirksam werden." # translated by: B. Clausius https://launchpad.net/~barcc on 2015-03-28 22:58:20 UTC #: data/ui/qt/preferences.ui.h:385 msgid "Graphic" msgstr "Grafik" # translated by: B. Clausius https://launchpad.net/~barcc on 2017-09-10 10:43:33 UTC #: data/ui/qt/preferences.ui.h:386 msgid "Point and click, all directions" msgstr "Point and click, alle Richtungen" # translated by: B. Clausius https://launchpad.net/~barcc on 2017-09-10 10:43:33 UTC #: data/ui/qt/preferences.ui.h:387 msgid "Point and click, simplified" msgstr "Point and click, vereinfacht" # translated by: B. Clausius https://launchpad.net/~barcc on 2017-09-10 10:43:33 UTC #: data/ui/qt/preferences.ui.h:388 msgid "Gestures" msgstr "Gesten" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-03-28 22:58:20 UTC #: data/ui/qt/preferences.ui.h:389 msgid "Mouse" msgstr "Maus" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-03-28 22:58:20 UTC #: data/ui/qt/preferences.ui.h:391 data/ui/qt/preferences.ui.h:393 msgid "Add" msgstr "Hinzufügen" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-03-28 22:58:20 UTC #: data/ui/qt/preferences.ui.h:395 data/ui/qt/preferences.ui.h:397 msgid "Remove" msgstr "Entfernen" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-03-28 22:58:20 UTC #: data/ui/qt/preferences.ui.h:399 data/ui/qt/preferences.ui.h:401 msgid "Reset" msgstr "Zurücksetzen" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-03-28 22:58:20 UTC #: data/ui/qt/preferences.ui.h:402 msgid "Keys" msgstr "Tasten" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-03-28 22:58:20 UTC #: data/ui/qt/preferences.ui.h:403 msgid "Color:" msgstr "Farbe:" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-03-28 22:58:20 UTC #: data/ui/qt/preferences.ui.h:405 msgid "Image File:" msgstr "Bildauswahl:" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-03-28 22:58:20 UTC #: data/ui/qt/preferences.ui.h:407 msgid "Tiled" msgstr "Gekachelt" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-03-28 22:58:20 UTC #: data/ui/qt/preferences.ui.h:408 msgid "Mosaic" msgstr "Mosaik" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-03-28 22:58:20 UTC #: data/ui/qt/preferences.ui.h:409 msgid "Background:" msgstr "Hintergrund:" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-03-28 22:58:20 UTC #: data/ui/qt/preferences.ui.h:411 msgid "Appearance" msgstr "Aussehen" # translated by: B. Clausius https://launchpad.net/~barcc on 2012-11-01 01:46:43 UTC #: pybiklib/ext/qt.py:1578 msgid "Move" msgstr "Zug" # translated by: B. Clausius https://launchpad.net/~barcc on 2012-11-01 01:46:43 UTC #: pybiklib/ext/qt.py:1581 msgid "Key" msgstr "Taste" # translated by: B. Clausius https://launchpad.net/~barcc on 2012-11-01 01:46:43 UTC #: pybiklib/ext/qt.py:1682 msgid "Open Image" msgstr "Ein Bild öffnen" # translated by: B. Clausius https://launchpad.net/~barcc on 2011-06-22 12:04:49 UTC #: pybiklib/ext/qt.py:1720 msgid "plain" msgstr "einfarbig" # translated by: B. Clausius https://launchpad.net/~barcc on 2012-12-12 18:48:26 UTC #: pybiklib/ext/qt.py:1723 msgid "select …" msgstr "Auswählen …" # translated by: B. Clausius https://launchpad.net/~barcc on 2012-11-03 14:13:02 UTC # reviewed by: B. Clausius https://launchpad.net/~barcc on 2012-11-03 19:14:15 UTC #: pybiklib/ext/qtui.py:94 msgid "Press a key …" msgstr "Drücken Sie eine Taste …" # translated by: B. Clausius https://launchpad.net/~barcc on 2013-02-01 09:44:31 UTC #. Add whatever keywords you want in your language, separated by semicolons, last character must be a semicolon. These keywords are used when searching for applications in Unity, GNOME Shell, etc. #: data/app-meta/pybik.desktop.in:10 msgid "rubik;cube;puzzle;magic;" msgstr "rubik;cube;würfel;puzzle;zauberwürfel;" # translated by: B. Clausius https://launchpad.net/~barcc on 2012-11-01 01:46:43 UTC #: data/plugins/01-challenges.plugins.py:18 #: data/plugins/01-challenges.plugins.py:21 #: data/plugins/01-challenges.plugins.py:24 #: data/plugins/01-challenges.plugins.py:27 #: data/plugins/01-challenges.plugins.py:30 #: data/plugins/01-challenges.plugins.py:33 #: data/plugins/01-challenges.plugins.py:36 #: data/plugins/01-challenges.plugins.py:39 #: data/plugins/01-challenges.plugins.py:42 #: data/plugins/01-challenges.plugins.py:45 #: data/plugins/01-challenges.plugins.py:48 msgid "Challenges" msgstr "Herausforderungen" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-07-20 18:06:30 UTC #: data/plugins/01-challenges.plugins.py:19 msgid "Solve random puzzle" msgstr "Zufälliges Puzzle lösen" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-03-28 22:58:20 UTC #: data/plugins/01-challenges.plugins.py:22 #: data/plugins/01-challenges.plugins.py:25 #: data/plugins/01-challenges.plugins.py:28 #: data/plugins/01-challenges.plugins.py:31 #: data/plugins/01-challenges.plugins.py:34 #: data/plugins/01-challenges.plugins.py:37 #: data/plugins/01-challenges.plugins.py:40 #: data/plugins/01-challenges.plugins.py:43 #: data/plugins/01-challenges.plugins.py:46 #: data/plugins/01-challenges.plugins.py:49 msgid "Solve in {} move" msgid_plural "Solve in {} moves" msgstr[0] "In einem Zug lösen" msgstr[1] "In {} Zügen lösen" # translated by: B. Clausius https://launchpad.net/~barcc on 2011-06-22 12:04:49 UTC #: data/plugins/10-beginners.plugins.py:31 #: data/plugins/10-beginners.plugins.py:34 #: data/plugins/10-beginners.plugins.py:56 #: data/plugins/10-beginners.plugins.py:73 #: data/plugins/10-beginners.plugins.py:100 #: data/plugins/10-beginners.plugins.py:118 #: data/plugins/10-beginners.plugins.py:140 #: data/plugins/10-beginners.plugins.py:158 #: data/plugins/14-leyan-lo.plugins.py:21 #: data/plugins/14-leyan-lo.plugins.py:24 #: data/plugins/14-leyan-lo.plugins.py:53 #: data/plugins/14-leyan-lo.plugins.py:74 #: data/plugins/14-leyan-lo.plugins.py:90 #: data/plugins/14-leyan-lo.plugins.py:107 #: data/plugins/14-leyan-lo.plugins.py:129 #: data/plugins/14-leyan-lo.plugins.py:170 #: data/plugins/150-spiegel.plugins.py:32 #: data/plugins/150-spiegel.plugins.py:35 #: data/plugins/150-spiegel.plugins.py:64 #: data/plugins/150-spiegel.plugins.py:85 #: data/plugins/150-spiegel.plugins.py:100 #: data/plugins/150-spiegel.plugins.py:113 #: data/plugins/150-spiegel.plugins.py:130 #: data/plugins/150-spiegel.plugins.py:141 #: data/plugins/151-spiegel-improved.plugins.py:20 #: data/plugins/151-spiegel-improved.plugins.py:23 #: data/plugins/151-spiegel-improved.plugins.py:68 #: data/plugins/151-spiegel-improved.plugins.py:107 #: data/plugins/151-spiegel-improved.plugins.py:139 #: data/plugins/151-spiegel-improved.plugins.py:165 #: data/plugins/151-spiegel-improved.plugins.py:183 #: data/plugins/151-spiegel-improved.plugins.py:197 #: data/plugins/20-2x2x2.plugins.py:18 data/plugins/20-2x2x2.plugins.py:21 #: data/plugins/20-2x2x2.plugins.py:37 data/plugins/20-2x2x2.plugins.py:55 msgid "Solvers" msgstr "Lösungen" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-04-04 19:29:06 UTC #: data/plugins/10-beginners.plugins.py:32 #: data/plugins/10-beginners.plugins.py:35 #: data/plugins/10-beginners.plugins.py:57 #: data/plugins/10-beginners.plugins.py:74 #: data/plugins/10-beginners.plugins.py:101 #: data/plugins/10-beginners.plugins.py:119 #: data/plugins/10-beginners.plugins.py:141 #: data/plugins/10-beginners.plugins.py:159 msgid "Beginner's method" msgstr "Anfängermethode" # translated by: B. Clausius https://launchpad.net/~barcc on 2011-07-06 09:11:12 UTC #: data/plugins/10-beginners.plugins.py:36 #: data/plugins/14-leyan-lo.plugins.py:26 #: data/plugins/150-spiegel.plugins.py:37 #: data/plugins/151-spiegel-improved.plugins.py:25 msgid "Top edges" msgstr "Obere Kanten" # translated by: B. Clausius https://launchpad.net/~barcc on 2011-07-06 09:14:00 UTC #: data/plugins/10-beginners.plugins.py:58 #: data/plugins/14-leyan-lo.plugins.py:55 #: data/plugins/150-spiegel.plugins.py:66 #: data/plugins/151-spiegel-improved.plugins.py:70 msgid "Top corners" msgstr "Obere Ecken" # translated by: B. Clausius https://launchpad.net/~barcc on 2011-07-06 09:11:12 UTC #: data/plugins/10-beginners.plugins.py:75 #: data/plugins/14-leyan-lo.plugins.py:76 #: data/plugins/150-spiegel.plugins.py:87 #: data/plugins/151-spiegel-improved.plugins.py:109 msgid "Middle slice" msgstr "Mittlere Schicht" # translated by: B. Clausius https://launchpad.net/~barcc on 2011-07-06 09:12:27 UTC #: data/plugins/10-beginners.plugins.py:102 #: data/plugins/14-leyan-lo.plugins.py:92 #: data/plugins/150-spiegel.plugins.py:115 #: data/plugins/151-spiegel-improved.plugins.py:167 msgid "Bottom edge orient" msgstr "Untere Kanten ausrichten" # translated by: B. Clausius https://launchpad.net/~barcc on 2011-07-06 09:12:27 UTC #: data/plugins/10-beginners.plugins.py:120 #: data/plugins/14-leyan-lo.plugins.py:131 #: data/plugins/150-spiegel.plugins.py:143 #: data/plugins/151-spiegel-improved.plugins.py:199 #: data/plugins/20-2x2x2.plugins.py:57 msgid "Bottom corner orient" msgstr "Untere Ecken ausrichten" # translated by: B. Clausius https://launchpad.net/~barcc on 2011-07-06 09:11:12 UTC #: data/plugins/10-beginners.plugins.py:142 #: data/plugins/14-leyan-lo.plugins.py:109 #: data/plugins/150-spiegel.plugins.py:132 #: data/plugins/151-spiegel-improved.plugins.py:185 #: data/plugins/20-2x2x2.plugins.py:39 msgid "Bottom corner place" msgstr "Untere Ecken platzieren" # translated by: B. Clausius https://launchpad.net/~barcc on 2011-07-06 09:12:27 UTC #: data/plugins/10-beginners.plugins.py:160 #: data/plugins/14-leyan-lo.plugins.py:172 #: data/plugins/150-spiegel.plugins.py:102 #: data/plugins/151-spiegel-improved.plugins.py:141 msgid "Bottom edge place" msgstr "Untere Kanten platzieren" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-03-28 22:58:20 UTC #. Leyan Lo is the inventor of the solution #: data/plugins/14-leyan-lo.plugins.py:23 #: data/plugins/14-leyan-lo.plugins.py:25 #: data/plugins/14-leyan-lo.plugins.py:54 #: data/plugins/14-leyan-lo.plugins.py:75 #: data/plugins/14-leyan-lo.plugins.py:91 #: data/plugins/14-leyan-lo.plugins.py:108 #: data/plugins/14-leyan-lo.plugins.py:130 #: data/plugins/14-leyan-lo.plugins.py:171 msgid "Leyan Lo" msgstr "Leyan Lo" # translated by: B. Clausius https://launchpad.net/~barcc on 2011-07-06 09:14:00 UTC #. Spiegel is a german magazine #: data/plugins/150-spiegel.plugins.py:34 #: data/plugins/150-spiegel.plugins.py:36 #: data/plugins/150-spiegel.plugins.py:65 #: data/plugins/150-spiegel.plugins.py:86 #: data/plugins/150-spiegel.plugins.py:101 #: data/plugins/150-spiegel.plugins.py:114 #: data/plugins/150-spiegel.plugins.py:131 #: data/plugins/150-spiegel.plugins.py:142 msgid "Spiegel" msgstr "Spiegel" # translated by: B. Clausius https://launchpad.net/~barcc on 2011-12-09 03:36:38 UTC #. Spiegel is a german magazine #: data/plugins/151-spiegel-improved.plugins.py:22 #: data/plugins/151-spiegel-improved.plugins.py:24 #: data/plugins/151-spiegel-improved.plugins.py:69 #: data/plugins/151-spiegel-improved.plugins.py:108 #: data/plugins/151-spiegel-improved.plugins.py:140 #: data/plugins/151-spiegel-improved.plugins.py:166 #: data/plugins/151-spiegel-improved.plugins.py:184 #: data/plugins/151-spiegel-improved.plugins.py:198 msgid "Spiegel improved" msgstr "Spiegel verbessert" # translated by: B. Clausius https://launchpad.net/~barcc on 2011-12-25 12:55:55 UTC #: data/plugins/20-2x2x2.plugins.py:19 data/plugins/20-2x2x2.plugins.py:22 #: data/plugins/20-2x2x2.plugins.py:38 data/plugins/20-2x2x2.plugins.py:56 msgid "2×2×2" msgstr "2×2×2" # translated by: B. Clausius https://launchpad.net/~barcc on 2011-07-06 09:11:12 UTC #: data/plugins/20-2x2x2.plugins.py:23 msgid "Top slice" msgstr "Obere Schicht" # translated by: B. Clausius https://launchpad.net/~barcc on 2011-06-22 12:04:49 UTC #: data/plugins/80-pretty-patterns.plugins.py:20 #: data/plugins/80-pretty-patterns.plugins.py:23 #: data/plugins/80-pretty-patterns.plugins.py:27 #: data/plugins/80-pretty-patterns.plugins.py:31 #: data/plugins/80-pretty-patterns.plugins.py:35 #: data/plugins/80-pretty-patterns.plugins.py:40 #: data/plugins/80-pretty-patterns.plugins.py:44 msgid "Stripes" msgstr "Streifen" # translated by: B. Clausius https://launchpad.net/~barcc on 2011-07-06 09:12:27 UTC #: data/plugins/80-pretty-patterns.plugins.py:49 #: data/plugins/80-pretty-patterns.plugins.py:53 msgid "Criss-Cross" msgstr "Kreuz und Quer" # translated by: B. Clausius https://launchpad.net/~barcc on 2011-06-22 12:04:49 UTC #: data/plugins/80-pretty-patterns.plugins.py:57 msgid "Fried Eggs" msgstr "Spiegeleier" # translated by: B. Clausius https://launchpad.net/~barcc on 2012-11-01 01:46:43 UTC #: data/plugins/80-pretty-patterns.plugins.py:61 msgid "Big Fried Eggs" msgstr "Große Spiegeleier" # translated by: B. Clausius https://launchpad.net/~barcc on 2011-06-22 12:04:49 UTC #: data/plugins/80-pretty-patterns.plugins.py:65 #: data/plugins/80-pretty-patterns.plugins.py:69 msgid "4 Fried Eggs" msgstr "4 Spiegeleier" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-04-04 19:29:06 UTC #: data/plugins/80-pretty-patterns.plugins.py:73 msgid "2 Fried Eggs" msgstr "2 Spiegeleier" # translated by: B. Clausius https://launchpad.net/~barcc on 2012-11-01 01:46:43 UTC #: data/plugins/80-pretty-patterns.plugins.py:77 msgid "Chessboard" msgstr "Schachbrett" # translated by: B. Clausius https://launchpad.net/~barcc on 2012-11-01 01:46:43 UTC #: data/plugins/80-pretty-patterns.plugins.py:83 msgid "Cross" msgstr "Kreuz" # translated by: B. Clausius https://launchpad.net/~barcc on 2011-06-22 12:04:49 UTC #: data/plugins/80-pretty-patterns.plugins.py:87 msgid "Zig Zag" msgstr "Zick Zack" # translated by: B. Clausius https://launchpad.net/~barcc on 2011-06-24 10:22:30 UTC #. T is the shape formed by the cube labels. T-Time is a pun (Tea Time) and not suitable for literal translation. Don't translate it or use something common or whatever you think makes sense. #: data/plugins/80-pretty-patterns.plugins.py:93 #: data/plugins/80-pretty-patterns.plugins.py:96 #: data/plugins/80-pretty-patterns.plugins.py:100 #: data/plugins/80-pretty-patterns.plugins.py:104 #: data/plugins/80-pretty-patterns.plugins.py:108 #: data/plugins/80-pretty-patterns.plugins.py:112 msgid "T-Time" msgstr "T-Time" # translated by: B. Clausius https://launchpad.net/~barcc on 2012-11-01 01:46:43 UTC #. C is the shape formed by the cube labels #: data/plugins/80-pretty-patterns.plugins.py:118 msgid "C" msgstr "C" # translated by: B. Clausius https://launchpad.net/~barcc on 2012-11-01 01:46:43 UTC #: data/plugins/80-pretty-patterns.plugins.py:121 msgid "Cube in a Cube" msgstr "Würfel im Würfel" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-03-28 22:58:20 UTC #: data/plugins/80-pretty-patterns.plugins.py:125 msgid "Striped Cube in a Cube" msgstr "Gestreifter Würfel im Würfel" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-03-28 22:58:20 UTC #: data/plugins/80-pretty-patterns.plugins.py:129 msgid "Six square cuboids" msgstr "Sechs quadratische Quader" # translated by: B. Clausius https://launchpad.net/~barcc on 2012-11-01 01:46:43 UTC #. Superflip may be not translated, because it has a special meaning in the mathematical theory behind the Rubik's Cube. #: data/plugins/80-pretty-patterns.plugins.py:135 msgid "Superflip" msgstr "Superflip" # translated by: B. Clausius https://launchpad.net/~barcc on 2012-11-01 01:46:43 UTC #: data/plugins/80-pretty-patterns.plugins.py:138 msgid "Superflip easy" msgstr "Superflip einfach" # translated by: B. Clausius https://launchpad.net/~barcc on 2012-11-01 01:46:43 UTC #: data/plugins/80-pretty-patterns.plugins.py:142 msgid "Green Mamba" msgstr "Grüne Mamba" # translated by: B. Clausius https://launchpad.net/~barcc on 2012-11-01 01:46:43 UTC #: data/plugins/80-pretty-patterns.plugins.py:146 msgid "Anaconda" msgstr "Anakonda" # translated by: B. Clausius https://launchpad.net/~barcc on 2012-11-01 01:46:43 UTC #: data/plugins/80-pretty-patterns.plugins.py:150 msgid "Duck Feet" msgstr "Entenfüße" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-03-28 22:58:20 UTC #: data/plugins/80-pretty-patterns.plugins.py:154 #: data/plugins/80-pretty-patterns.plugins.py:158 #: data/plugins/80-pretty-patterns.plugins.py:162 #: data/plugins/80-pretty-patterns.plugins.py:166 #: data/plugins/80-pretty-patterns.plugins.py:170 #: data/plugins/80-pretty-patterns.plugins.py:174 #: data/plugins/80-pretty-patterns.plugins.py:178 #: data/plugins/80-pretty-patterns.plugins.py:182 msgid "Plus" msgstr "Plus" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-03-28 22:58:20 UTC #: data/plugins/80-pretty-patterns.plugins.py:186 #: data/plugins/80-pretty-patterns.plugins.py:191 #: data/plugins/80-pretty-patterns.plugins.py:196 #: data/plugins/80-pretty-patterns.plugins.py:200 msgid "Minus" msgstr "Minus" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-03-28 22:58:20 UTC #: data/plugins/80-pretty-patterns.plugins.py:204 msgid "Volcano" msgstr "Vulkan" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-03-28 22:58:20 UTC #: data/plugins/80-pretty-patterns.plugins.py:208 msgid "Checkerboard (easy)" msgstr "Schachbrett (einfach)" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-03-28 22:58:20 UTC #: data/plugins/80-pretty-patterns.plugins.py:212 msgid "Checkerboard (fast)" msgstr "Schachbrett (schnell)" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-03-28 22:58:20 UTC #: data/plugins/80-pretty-patterns.plugins.py:216 msgid "Mixed Checkerboard" msgstr "Gemischtes Schachbrett" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-03-28 22:58:20 UTC #: data/plugins/80-pretty-patterns.plugins.py:220 msgid "Tipi" msgstr "Tipi" # translated by: B. Clausius https://launchpad.net/~barcc on 2012-11-01 01:46:43 UTC #: data/plugins/90-library.plugins.py:18 data/plugins/90-library.plugins.py:22 #: data/plugins/90-library.plugins.py:26 data/plugins/90-library.plugins.py:30 #: data/plugins/90-library.plugins.py:34 data/plugins/90-library.plugins.py:38 #: data/plugins/90-library.plugins.py:42 data/plugins/90-library.plugins.py:46 #: data/plugins/90-library.plugins.py:50 data/plugins/90-library.plugins.py:54 #: data/plugins/90-library.plugins.py:58 data/plugins/90-library.plugins.py:62 #: data/plugins/90-library.plugins.py:66 data/plugins/90-library.plugins.py:70 #: data/plugins/90-library.plugins.py:74 data/plugins/90-library.plugins.py:78 #: data/plugins/90-library.plugins.py:82 data/plugins/90-library.plugins.py:86 #: data/plugins/90-library.plugins.py:91 data/plugins/90-library.plugins.py:96 #: data/plugins/90-library.plugins.py:101 #: data/plugins/90-library.plugins.py:105 #: data/plugins/90-library.plugins.py:110 #: data/plugins/90-library.plugins.py:115 #: data/plugins/90-library.plugins.py:119 #: data/plugins/90-library.plugins.py:123 #: data/plugins/90-library.plugins.py:127 msgid "Library" msgstr "Sammlung" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-03-28 22:58:20 UTC #: data/plugins/90-library.plugins.py:19 data/plugins/90-library.plugins.py:23 #: data/plugins/90-library.plugins.py:27 data/plugins/90-library.plugins.py:31 #: data/plugins/90-library.plugins.py:35 msgid "Swap edges" msgstr "Tausche Kanten" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-04-07 16:12:04 UTC #: data/plugins/90-library.plugins.py:20 msgid "3 edges ⟳, top layer" msgstr "3 Kanten ⟳, obere Schicht" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-04-07 16:12:04 UTC #: data/plugins/90-library.plugins.py:24 msgid "3 edges ⟲, top layer" msgstr "3 Kanten ⟲, obere Schicht" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-04-07 16:12:04 UTC #: data/plugins/90-library.plugins.py:28 msgid "3 edges, middle layer" msgstr "3 Kanten, mittlere Schicht" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-04-07 16:12:04 UTC #: data/plugins/90-library.plugins.py:32 msgid "4 edges, front and right" msgstr "4 Kanten, vorne und rechts" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-04-07 16:12:04 UTC #: data/plugins/90-library.plugins.py:36 msgid "4 edges, front and back" msgstr "4 Kanten, vorne und hinten" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-04-07 16:12:04 UTC #: data/plugins/90-library.plugins.py:39 msgid "Swap 2 edges and 2 corners, top layer" msgstr "Vertausche 2 Kanten und 2 Ecken, obere Schicht" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-04-07 16:12:04 UTC #: data/plugins/90-library.plugins.py:43 data/plugins/90-library.plugins.py:47 msgid "Flip edges" msgstr "Kanten kippen" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-04-07 16:12:04 UTC #: data/plugins/90-library.plugins.py:44 msgid "4 edges" msgstr "4 Kanten" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-04-07 16:12:04 UTC #: data/plugins/90-library.plugins.py:48 msgid "2 edges, top layer" msgstr "2 Kanten, obere Schicht" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-03-28 22:58:20 UTC #: data/plugins/90-library.plugins.py:51 data/plugins/90-library.plugins.py:55 #: data/plugins/90-library.plugins.py:59 data/plugins/90-library.plugins.py:63 #: data/plugins/90-library.plugins.py:67 data/plugins/90-library.plugins.py:71 msgid "Swap corners" msgstr "Ecken vertauschen" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-04-07 16:17:41 UTC #: data/plugins/90-library.plugins.py:52 data/plugins/90-library.plugins.py:76 msgid "2 corners, top layer" msgstr "2 Ecken, obere Schicht" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-04-07 16:17:41 UTC #: data/plugins/90-library.plugins.py:56 msgid "2 corners diagonal, top layer" msgstr "2 Ecken diagonal, obere Schicht" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-04-07 16:17:41 UTC #: data/plugins/90-library.plugins.py:60 data/plugins/90-library.plugins.py:80 msgid "3 corners ⟳, top layer" msgstr "3 Ecken ⟳, obere Schicht" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-04-07 16:17:41 UTC #: data/plugins/90-library.plugins.py:64 msgid "3 corners ⟲, top layer" msgstr "3 Ecken ⟲, obere Schicht" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-04-07 16:17:41 UTC #: data/plugins/90-library.plugins.py:68 msgid "4 corners, top layer" msgstr "4 Ecken, obere Schicht" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-04-07 16:17:41 UTC #: data/plugins/90-library.plugins.py:72 msgid "2 corners, partial sequence, top layer" msgstr "2 Ecken, Teilsequenz, obere Schicht" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-03-28 22:58:20 UTC #: data/plugins/90-library.plugins.py:75 data/plugins/90-library.plugins.py:79 #: data/plugins/90-library.plugins.py:83 data/plugins/90-library.plugins.py:87 msgid "Rotate corners" msgstr "Ecken drehen" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-04-07 16:17:41 UTC #: data/plugins/90-library.plugins.py:84 msgid "1 corner ⟳, partial sequence, top layer" msgstr "1 Ecke ⟳, Teilsequenz, obere Schicht" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-04-07 16:17:41 UTC #: data/plugins/90-library.plugins.py:88 msgid "1 corner ⟲, partial sequence, top layer" msgstr "1 Ecke ⟲, Teilsequenz, obere Schicht" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-03-28 22:58:20 UTC #: data/plugins/90-library.plugins.py:92 data/plugins/90-library.plugins.py:97 #: data/plugins/90-library.plugins.py:102 #: data/plugins/90-library.plugins.py:111 msgid "Rotate center" msgstr "Zentrum drehen" # translated by: B. Clausius https://launchpad.net/~barcc on 2012-12-12 18:48:26 UTC #. 2 rotations of the center face in the upper layer #: data/plugins/90-library.plugins.py:94 msgid "2×Up" msgstr "2×Oben" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-03-28 22:58:20 UTC #. Up clockwise and front clockwise #: data/plugins/90-library.plugins.py:99 msgid "Up ⟳ and front ⟳" msgstr "Oben ⟳ und Vorne ⟳" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-03-28 22:58:20 UTC #. Up clockwise and front counterclockwise #: data/plugins/90-library.plugins.py:104 msgid "Up ⟳ and front ⟲" msgstr "Oben ⟳ und Vorne ⟲" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-04-07 16:17:41 UTC #: data/plugins/90-library.plugins.py:106 msgid "Swap center parts, up and front" msgstr "Tausche Mittelteile, oben und vorne" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-03-28 22:58:20 UTC #. Up clockwise and down counterclockwise #: data/plugins/90-library.plugins.py:113 msgid "Up ⟳ and down ⟲" msgstr "Oben ⟳ und Unten ⟲" # translated by: B. Clausius https://launchpad.net/~barcc on 2012-11-01 01:46:43 UTC #: data/plugins/90-library.plugins.py:116 #: data/plugins/90-library.plugins.py:120 #: data/plugins/90-library.plugins.py:124 #: data/plugins/90-library.plugins.py:128 msgid "Misc" msgstr "Verschiedenes" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-03-28 22:58:20 UTC #. Yields in a rotated back layer, but the sequence of moves does not touch the back layer #: data/plugins/90-library.plugins.py:118 #: data/plugins/90-library.plugins.py:125 #: data/plugins/90-library.plugins.py:129 msgid "Back without back" msgstr "Hinten ohne Hinten" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-03-28 22:58:20 UTC #: data/plugins/90-library.plugins.py:121 msgid "2×Back without back" msgstr "2×Hinten ohne Hinten" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-03-28 22:58:20 UTC #: data/plugins/95-transformations.plugins.py:18 #: data/plugins/95-transformations.plugins.py:21 #: data/plugins/95-transformations.plugins.py:24 msgid "Move transformations" msgstr "Zugfolgen-Transformationen" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-03-28 22:58:20 UTC #: data/plugins/95-transformations.plugins.py:19 msgid "Invert move sequence" msgstr "Zugfolge invertieren" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-03-28 22:58:20 UTC #: data/plugins/95-transformations.plugins.py:22 msgid "Normalize cube rotations" msgstr "Würfeldrehungen normalisieren" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-03-28 22:58:20 UTC #: data/plugins/95-transformations.plugins.py:25 msgid "Normalize move sequence" msgstr "Zugfolge normalisieren" # translated by: B. Clausius https://launchpad.net/~barcc on 2012-11-01 01:46:43 UTC #: buildlib/modeldef.py:110 msgid "Brick" msgstr "Ziegel" # translated by: B. Clausius https://launchpad.net/~barcc on 2012-11-01 01:46:43 UTC #: buildlib/modeldef.py:111 #, python-brace-format msgid "{0}×{1}×{2}-Brick" msgstr "{0}×{1}×{2}-Ziegel" # translated by: B. Clausius https://launchpad.net/~barcc on 2012-11-01 01:46:43 UTC #: buildlib/modeldef.py:112 msgid "Width:" msgstr "Breite:" # translated by: B. Clausius https://launchpad.net/~barcc on 2012-12-15 00:22:45 UTC #: buildlib/modeldef.py:112 buildlib/modeldef.py:151 buildlib/modeldef.py:249 #: buildlib/modeldef.py:300 buildlib/modeldef.py:311 msgid "Height:" msgstr "Höhe:" # translated by: B. Clausius https://launchpad.net/~barcc on 2012-11-01 01:46:43 UTC #: buildlib/modeldef.py:112 msgid "Depth:" msgstr "Tiefe:" # translated by: B. Clausius https://launchpad.net/~barcc on 2017-09-10 10:43:33 UTC #: buildlib/modeldef.py:120 buildlib/modeldef.py:257 buildlib/modeldef.py:319 #: buildlib/modeldef.py:374 buildlib/modeldef.py:433 msgid "up" msgstr "oben" # translated by: B. Clausius https://launchpad.net/~barcc on 2017-09-10 10:43:33 UTC #: buildlib/modeldef.py:120 buildlib/modeldef.py:205 buildlib/modeldef.py:257 #: buildlib/modeldef.py:319 buildlib/modeldef.py:373 buildlib/modeldef.py:430 msgid "down" msgstr "unten" # translated by: B. Clausius https://launchpad.net/~barcc on 2017-09-10 10:43:33 UTC #: buildlib/modeldef.py:120 buildlib/modeldef.py:205 buildlib/modeldef.py:257 msgid "left" msgstr "links" # translated by: B. Clausius https://launchpad.net/~barcc on 2011-06-22 12:04:49 UTC #: buildlib/modeldef.py:120 buildlib/modeldef.py:205 buildlib/modeldef.py:257 msgid "right" msgstr "rechts" # translated by: B. Clausius https://launchpad.net/~barcc on 2011-06-22 12:04:49 UTC #: buildlib/modeldef.py:120 buildlib/modeldef.py:374 msgid "front" msgstr "vorne" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-03-28 22:58:20 UTC #: buildlib/modeldef.py:120 buildlib/modeldef.py:205 buildlib/modeldef.py:257 #: buildlib/modeldef.py:320 buildlib/modeldef.py:373 msgid "back" msgstr "hinten" # translated by: B. Clausius https://launchpad.net/~barcc on 2012-11-01 01:46:43 UTC #: buildlib/modeldef.py:149 msgid "Tower" msgstr "Turm" # translated by: B. Clausius https://launchpad.net/~barcc on 2012-11-01 01:46:43 UTC #: buildlib/modeldef.py:150 #, python-brace-format msgid "{0}×{1}-Tower" msgstr "{0}×{1}-Turm" # translated by: B. Clausius https://launchpad.net/~barcc on 2012-11-01 01:46:43 UTC #: buildlib/modeldef.py:151 buildlib/modeldef.py:249 buildlib/modeldef.py:300 #: buildlib/modeldef.py:311 msgid "Basis:" msgstr "Basis:" # translated by: B. Clausius https://launchpad.net/~barcc on 2012-11-01 01:46:43 UTC #: buildlib/modeldef.py:163 msgid "Cube" msgstr "Würfel" # translated by: B. Clausius https://launchpad.net/~barcc on 2012-11-01 01:46:43 UTC #: buildlib/modeldef.py:164 #, python-brace-format msgid "{0}×{0}×{0}-Cube" msgstr "{0}×{0}×{0}-Würfel" # translated by: B. Clausius https://launchpad.net/~barcc on 2011-06-22 12:04:49 UTC #: buildlib/modeldef.py:165 buildlib/modeldef.py:197 buildlib/modeldef.py:365 #: buildlib/modeldef.py:422 msgid "Size:" msgstr "Größe:" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-07-20 18:06:30 UTC #: buildlib/modeldef.py:177 buildlib/modeldef.py:178 msgid "Void Cube" msgstr "Hohler Würfel" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-03-28 22:58:20 UTC #: buildlib/modeldef.py:195 msgid "Tetrahedron" msgstr "Tetraeder" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-03-28 22:58:20 UTC #: buildlib/modeldef.py:196 #, python-brace-format msgid "{0}-Tetrahedron" msgstr "{0}-Tetraeder" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-07-20 18:06:30 UTC #: buildlib/modeldef.py:247 msgid "Triangular Prism" msgstr "Dreieck-Prisma" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-07-20 18:06:30 UTC #: buildlib/modeldef.py:248 #, python-brace-format msgid "{0}×{1} Triangular Prism" msgstr "{0}×{1} Dreieck-Prisma" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-07-20 18:06:30 UTC #: buildlib/modeldef.py:298 msgid "Triangular Prism (complex)" msgstr "Dreieck-Prisma (komplex)" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-07-20 18:06:30 UTC #: buildlib/modeldef.py:299 #, python-brace-format msgid "{0}×{1} Triangular Prism (complex)" msgstr "{0}×{1} Dreieck-Prisma (komplex)" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-07-20 18:06:30 UTC #: buildlib/modeldef.py:309 msgid "Pentagonal Prism" msgstr "Fünfeck-Prisma" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-07-20 18:06:30 UTC #: buildlib/modeldef.py:310 #, python-brace-format msgid "{0}×{1} Pentagonal Prism" msgstr "{0}×{1} Fünfeck-Prisma" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-07-20 18:06:30 UTC #: buildlib/modeldef.py:320 buildlib/modeldef.py:373 msgid "front-right" msgstr "vorne rechts" # translated by: B. Clausius https://launchpad.net/~barcc on 2017-09-10 10:43:33 UTC #: buildlib/modeldef.py:320 buildlib/modeldef.py:374 msgid "back-right" msgstr "hinten rechts" # translated by: B. Clausius https://launchpad.net/~barcc on 2017-09-10 10:43:33 UTC #: buildlib/modeldef.py:320 buildlib/modeldef.py:374 msgid "back-left" msgstr "hinten links" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-07-20 18:06:30 UTC #: buildlib/modeldef.py:320 buildlib/modeldef.py:373 msgid "front-left" msgstr "vorne links" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-07-20 18:06:30 UTC #: buildlib/modeldef.py:354 msgid "Pentagonal Prism (stretched)" msgstr "Fünfeck-Prisma (gestreckt)" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-07-20 18:06:30 UTC #: buildlib/modeldef.py:355 #, python-brace-format msgid "{0}×{1} Pentagonal Prism (stretched)" msgstr "{0}×{1} Fünfeck-Prisma (gestreckt)" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-03-28 22:58:20 UTC #: buildlib/modeldef.py:363 msgid "Octahedron" msgstr "Oktaeder" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-03-28 22:58:20 UTC #: buildlib/modeldef.py:364 #, python-brace-format msgid "{0}-Octahedron" msgstr "{0}-Oktaeder" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-03-28 22:58:20 UTC #: buildlib/modeldef.py:420 msgid "Dodecahedron" msgstr "Dodekaeder" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-03-28 22:58:20 UTC #: buildlib/modeldef.py:421 #, python-brace-format msgid "{0}-Dodecahedron" msgstr "{0}-Dodekaeder" # translated by: B. Clausius https://launchpad.net/~barcc on 2017-09-10 10:43:33 UTC #: buildlib/modeldef.py:430 msgid "down-back-right" msgstr "unten hinten rechts" # translated by: B. Clausius https://launchpad.net/~barcc on 2017-09-10 10:43:33 UTC #: buildlib/modeldef.py:430 msgid "down-front-right" msgstr "unten vorne rechts" # translated by: B. Clausius https://launchpad.net/~barcc on 2017-09-10 10:43:33 UTC #: buildlib/modeldef.py:431 msgid "down-front" msgstr "unten vorne" # translated by: B. Clausius https://launchpad.net/~barcc on 2017-09-10 10:43:33 UTC #: buildlib/modeldef.py:431 msgid "down-front-left" msgstr "unten vorne links" # translated by: B. Clausius https://launchpad.net/~barcc on 2017-09-10 10:43:33 UTC #: buildlib/modeldef.py:431 msgid "down-back-left" msgstr "unten hinten links" # translated by: B. Clausius https://launchpad.net/~barcc on 2017-09-10 10:43:33 UTC #: buildlib/modeldef.py:432 msgid "up-back" msgstr "oben hinten" # translated by: B. Clausius https://launchpad.net/~barcc on 2017-09-10 10:43:33 UTC #: buildlib/modeldef.py:432 msgid "up-back-right" msgstr "oben hinten rechts" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-07-20 18:06:30 UTC #: buildlib/modeldef.py:432 msgid "up-front-right" msgstr "oben vorne rechts" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-07-20 18:06:30 UTC #: buildlib/modeldef.py:433 msgid "up-front-left" msgstr "oben vorne links" # translated by: B. Clausius https://launchpad.net/~barcc on 2017-09-10 10:43:33 UTC #: buildlib/modeldef.py:433 msgid "up-back-left" msgstr "oben hinten links" pybik-3.0/po/bs.po0000664000175000017500000013164213173052130014226 0ustar barccbarcc00000000000000# Bosnian translation for pybik # Copyright (c) 2013-2017 Rosetta Contributors and Canonical Ltd 2013 # This file is distributed under the same license as the pybik package. # FIRST AUTHOR , 2013. # msgid "" msgstr "" "Project-Id-Version: pybik\n" "Report-Msgid-Bugs-To: https://bugs.launchpad.net/pybik/+filebug\n" "POT-Creation-Date: 2017-09-10 21:58+0200\n" "PO-Revision-Date: 2017-10-10 18:44+0000\n" "Last-Translator: Kenan Dervišević \n" "Language-Team: Bosnian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" "X-Launchpad-Export-Date: 2017-10-11 05:46+0000\n" "X-Generator: Launchpad (build 18474)\n" "Language: bs\n" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2013-06-09 11:05:48 UTC #: pybiklib/application.py:294 msgid "Press the Esc key to exit Edit Mode" msgstr "Pritisnite Esc tipku da zatvorite mod za uređivanje" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2013-06-09 10:48:08 UTC #. substitution for {move_text} in statusbar text #: pybiklib/application.py:302 #, python-brace-format msgid "{current} / {total} move" msgid_plural "{current} / {total} moves" msgstr[0] "{current} / {total} pokret" msgstr[1] "{current} / {total} pokreta" msgstr[2] "{current} / {total} pokreta" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2013-06-09 10:48:08 UTC #. substitution for {solved_text} in statusbar text #: pybiklib/application.py:306 msgid "solved" msgstr "riješeno" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2013-06-09 11:05:48 UTC #: pybiklib/application.py:306 msgid "not solved" msgstr "nije riješeno" #. statusbar text #: pybiklib/application.py:309 #, python-brace-format msgid "{move_text}, {solved_text}" msgstr "" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2013-06-09 10:48:08 UTC #: pybiklib/application.py:314 msgid "Congratulations, you have solved the puzzle!" msgstr "Čestitamo, riješili ste zagonetku!" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2013-06-09 10:48:08 UTC #. Name of the application, probably should not be translated. #: pybiklib/config.py:35 data/ui/qt/main.ui.h:271 #: data/app-meta/pybik.desktop.in:3 msgid "Pybik" msgstr "Pybik" #. short description #: pybiklib/config.py:65 data/app-meta/pybik.desktop.in:4 msgid "Rubik's cube game" msgstr "" #. The next 7 lines belong together and form the long description #: pybiklib/config.py:68 msgid "Pybik is a 3D puzzle game about the cube invented by Ernő Rubik." msgstr "" #: pybiklib/config.py:70 msgid "" "Various 3D puzzles, such as cubes, towers, prisms, tetrahedra, octahedra, " "dodecahedra and many more" msgstr "" #: pybiklib/config.py:71 msgid "Solvers for some puzzles" msgstr "" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2013-06-09 11:18:11 UTC #. Use something that is common in the Rubik scene in your language, sometimes it's just the equivalent of "patterns". #: pybiklib/config.py:72 data/plugins/80-pretty-patterns.plugins.py:19 #: data/plugins/80-pretty-patterns.plugins.py:22 #: data/plugins/80-pretty-patterns.plugins.py:26 #: data/plugins/80-pretty-patterns.plugins.py:30 #: data/plugins/80-pretty-patterns.plugins.py:34 #: data/plugins/80-pretty-patterns.plugins.py:39 #: data/plugins/80-pretty-patterns.plugins.py:43 #: data/plugins/80-pretty-patterns.plugins.py:48 #: data/plugins/80-pretty-patterns.plugins.py:52 #: data/plugins/80-pretty-patterns.plugins.py:56 #: data/plugins/80-pretty-patterns.plugins.py:60 #: data/plugins/80-pretty-patterns.plugins.py:64 #: data/plugins/80-pretty-patterns.plugins.py:68 #: data/plugins/80-pretty-patterns.plugins.py:72 #: data/plugins/80-pretty-patterns.plugins.py:76 #: data/plugins/80-pretty-patterns.plugins.py:82 #: data/plugins/80-pretty-patterns.plugins.py:86 #: data/plugins/80-pretty-patterns.plugins.py:91 #: data/plugins/80-pretty-patterns.plugins.py:95 #: data/plugins/80-pretty-patterns.plugins.py:99 #: data/plugins/80-pretty-patterns.plugins.py:103 #: data/plugins/80-pretty-patterns.plugins.py:107 #: data/plugins/80-pretty-patterns.plugins.py:111 #: data/plugins/80-pretty-patterns.plugins.py:116 #: data/plugins/80-pretty-patterns.plugins.py:120 #: data/plugins/80-pretty-patterns.plugins.py:124 #: data/plugins/80-pretty-patterns.plugins.py:128 #: data/plugins/80-pretty-patterns.plugins.py:133 #: data/plugins/80-pretty-patterns.plugins.py:137 #: data/plugins/80-pretty-patterns.plugins.py:141 #: data/plugins/80-pretty-patterns.plugins.py:145 #: data/plugins/80-pretty-patterns.plugins.py:149 #: data/plugins/80-pretty-patterns.plugins.py:153 #: data/plugins/80-pretty-patterns.plugins.py:157 #: data/plugins/80-pretty-patterns.plugins.py:161 #: data/plugins/80-pretty-patterns.plugins.py:165 #: data/plugins/80-pretty-patterns.plugins.py:169 #: data/plugins/80-pretty-patterns.plugins.py:173 #: data/plugins/80-pretty-patterns.plugins.py:177 #: data/plugins/80-pretty-patterns.plugins.py:181 #: data/plugins/80-pretty-patterns.plugins.py:185 #: data/plugins/80-pretty-patterns.plugins.py:190 #: data/plugins/80-pretty-patterns.plugins.py:195 #: data/plugins/80-pretty-patterns.plugins.py:199 #: data/plugins/80-pretty-patterns.plugins.py:203 #: data/plugins/80-pretty-patterns.plugins.py:207 #: data/plugins/80-pretty-patterns.plugins.py:211 #: data/plugins/80-pretty-patterns.plugins.py:215 #: data/plugins/80-pretty-patterns.plugins.py:219 msgid "Pretty patterns" msgstr "Lijepi uzorci" #: pybiklib/config.py:73 msgid "Editor for move sequences" msgstr "" #: pybiklib/config.py:74 msgid "Custom colors and images on the surface of the puzzles" msgstr "" #: pybiklib/config.py:78 msgid "" "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.\n" "\n" "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." msgstr "" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2013-06-09 11:52:00 UTC #. Text between "<" and ">" is expanded to a link by the program and should not be modified. #. Text between "" and "<|>" is the translatable text for the link. #: pybiklib/config.py:90 msgid "" "Read the full text of the GNU General Public " "License<|> or see ." msgstr "" "Pročitajte cijeli tekst GNU Opće javne licence<|> " "ili posjetite ." # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2013-06-09 10:49:13 UTC #: pybiklib/config.py:93 msgid "" "You should have received a copy of the GNU General Public License along with " "this program. If not, see ." msgstr "" #: pybiklib/config.py:98 #, python-brace-format msgid "" "If you find any bugs in Pybik or have a suggestion for an improvement then " "please submit a <{CONTACT_FILEBUG}|>bug report<|>." msgstr "" #: pybiklib/config.py:103 msgid "" "Translations are managed by the " "Launchpad " "translation group<|>.\n" "\n" "If you want help to translate Pybik to your language you can do it through " "the web interface<|>.\n" "\n" "Read more about \"Translating with " "Launchpad\"<|> and " "\"Starting to " "translate\"<|>." msgstr "" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2015-03-28 22:58:06 UTC #: pybiklib/dialogs.py:44 msgid "Lighting" msgstr "Osvjetljenje" #: pybiklib/dialogs.py:44 msgid "Simple" msgstr "" #. labels are the colored stickers on the cube #: pybiklib/dialogs.py:46 msgid "Labels" msgstr "" #: pybiklib/dialogs.py:104 data/ui/qt/main.ui.h:275 msgid "Select Puzzle" msgstr "" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2013-06-09 11:13:25 UTC #. 1 slice, 2 slices, 3 slices, ... #: pybiklib/dialogs.py:134 pybiklib/dialogs.py:154 pybiklib/dialogs.py:180 #: pybiklib/dialogs.py:201 msgid "{} slice" msgid_plural "{} slices" msgstr[0] "" msgstr[1] "" #: pybiklib/dialogs.py:196 pybiklib/dialogs.py:225 msgid "{}×{} slices" msgstr "" #. The next strings form the text in the help dialog: #. Title of the 1st paragraph #: pybiklib/dialogs.py:290 msgid "Using the mouse to rotate the cube" msgstr "" #. Text of the 1st paragraph, followed by bullet list items #: pybiklib/dialogs.py:292 msgid "" "Position the mouse cursor over the puzzle and you will see an arrow that " "gives you a hint in which direction the slice under the mouse cursor will be " "rotated." msgstr "" #: pybiklib/dialogs.py:294 msgid "" "The left mouse button rotates a single slice of the cube in the direction of " "the arrow." msgstr "" #: pybiklib/dialogs.py:295 msgid "" "The right mouse button rotates a single slice of the cube against the " "direction of the arrow." msgstr "" #: pybiklib/dialogs.py:296 msgid "" "To rotate the whole cube instead of a single slice press the Ctrl key " "together with the mouse button." msgstr "" #. Title of the 2nd paragraph #: pybiklib/dialogs.py:298 msgid "Using the keyboard to rotate the cube" msgstr "" #. Text of the 2nd paragraph, followed by bullet list items #: pybiklib/dialogs.py:300 msgid "" "Make sure the keyboard focus is on the cube area (e.g. click on the " "background of the cube). The keys can be configured in the preferences " "dialog, the default is:" msgstr "" #. before the item text is a list of keys #: pybiklib/dialogs.py:303 pybiklib/dialogs.py:318 msgid "Moves the left, right, upper, down, front or back slice clockwise." msgstr "" #: pybiklib/dialogs.py:304 pybiklib/dialogs.py:319 msgid "Moves a slice couterclockwise." msgstr "" #: pybiklib/dialogs.py:305 pybiklib/dialogs.py:320 msgid "Moves the whole cube." msgstr "" #. Title of the 3rd paragraph #: pybiklib/dialogs.py:307 msgid "Other keys and buttons" msgstr "" #. bullet list items of the 3rd paragraph #: pybiklib/dialogs.py:309 msgid "Mouse wheel – Zoom in/out" msgstr "" #: pybiklib/dialogs.py:310 msgid "" "Arrow keys, Left mouse button on the background – Changes the direction of " "looking at the cube." msgstr "" #: pybiklib/dialogs.py:311 msgid "" "Moves keyboard focus to the sequence editor above the cube area where you " "can edit the move sequence in the notation described below. Hit enter when " "done." msgstr "" #. Title of the 4th paragraph #: pybiklib/dialogs.py:315 msgid "Notation for moves" msgstr "" #. Text of the 4th paragraph, followed by bullet list items #: pybiklib/dialogs.py:317 msgid "" "All moves, however they are made, are displayed progressively above the cube " "area:" msgstr "" #: pybiklib/dialogs.py:321 msgid "" "Moves the first, second or third slice from left clockwise. The allowed " "numbers are in the range from 1 to the count of parallel slices. \"l1\" is " "always the same as \"l\" and for the classic 3×3×3-Cube \"l2\" is the same " "as \"r2-\" and \"l3\" is the same as \"r-\"." msgstr "" #: pybiklib/dialogs.py:325 msgid "You can use a space to separate groups of moves." msgstr "" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2013-06-09 11:05:48 UTC #: pybiklib/dialogs.py:379 msgid "Pybik project website" msgstr "Pybik web stranica" #: pybiklib/pluginlib.py:301 msgid "This plugin does not work for any model." msgstr "" #: pybiklib/pluginlib.py:303 pybiklib/pluginlib.py:306 msgid "This plugin only works for:" msgstr "" #: pybiklib/pluginlib.py:498 msgid "This puzzle is not solvable." msgstr "" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2013-06-09 10:51:33 UTC #. The following 6 words are for the antialiasing levels: disabled, ugly, low, medium, high, higher #: pybiklib/schema.py:211 msgid "disabled" msgstr "onemogućeno" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2013-06-09 10:51:33 UTC #: pybiklib/schema.py:211 msgid "ugly" msgstr "ružno" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2013-06-09 10:51:33 UTC #: pybiklib/schema.py:211 msgid "low" msgstr "slabo" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2013-06-09 10:51:33 UTC #: pybiklib/schema.py:212 msgid "medium" msgstr "srednji" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2013-06-09 10:51:33 UTC #: pybiklib/schema.py:212 msgid "high" msgstr "jako" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2013-06-09 10:51:33 UTC #: pybiklib/schema.py:212 msgid "higher" msgstr "više" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2015-03-28 22:58:06 UTC #: data/ui/qt/about.ui.h:212 msgid "About Pybik" msgstr "O Pybiku" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2015-03-28 22:58:06 UTC #: data/ui/qt/about.ui.h:213 msgid "Translators:" msgstr "Prevodioci:" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2015-03-28 22:58:06 UTC #: data/ui/qt/about.ui.h:214 msgid "About" msgstr "O programu" #: data/ui/qt/about.ui.h:215 msgid "Contribute" msgstr "" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2015-03-28 22:58:06 UTC #: data/ui/qt/about.ui.h:216 msgid "License" msgstr "Licenca" #: data/ui/qt/help.ui.h:53 data/ui/qt/main.ui.h:297 msgid "Help" msgstr "" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2013-06-09 10:57:12 UTC #: data/ui/qt/main.ui.h:272 msgid "&New Challenge" msgstr "" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2015-03-28 22:58:06 UTC #: data/ui/qt/main.ui.h:273 msgid "Ne&w Solved" msgstr "No&vo riješeno" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2015-03-28 22:58:06 UTC #: data/ui/qt/main.ui.h:274 msgid "&Quit" msgstr "&Izađi" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2015-03-28 22:58:06 UTC #: data/ui/qt/main.ui.h:276 msgid "&Set as Initial State" msgstr "&Postavi kao početno stanje" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2015-03-28 22:58:06 UTC #: data/ui/qt/main.ui.h:277 msgid "&Reset Rotation" msgstr "&Resetuj rotaciju" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2015-03-28 22:58:06 UTC #: data/ui/qt/main.ui.h:278 msgid "&Preferences …" msgstr "&Opcije..." # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2015-03-28 22:58:06 UTC #: data/ui/qt/main.ui.h:279 msgid "&Status Bar" msgstr "&Statusna traka" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2015-03-28 22:58:06 UTC #: data/ui/qt/main.ui.h:280 msgid "&Info …" msgstr "&Info …" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2015-03-28 22:58:06 UTC #: data/ui/qt/main.ui.h:281 msgid "Rewind" msgstr "Premotaj" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2015-03-28 22:58:06 UTC #: data/ui/qt/main.ui.h:282 msgid "Previous" msgstr "Prethodna" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2015-03-28 22:58:06 UTC #: data/ui/qt/main.ui.h:283 msgid "Stop" msgstr "Stani" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2015-03-28 22:58:06 UTC #: data/ui/qt/main.ui.h:284 msgid "Play" msgstr "Pokreni" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2015-03-28 22:58:06 UTC #: data/ui/qt/main.ui.h:285 msgid "Next" msgstr "Sljedeća" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2015-03-28 22:58:06 UTC #: data/ui/qt/main.ui.h:286 msgid "Forward" msgstr "Naprijed" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2015-03-28 22:58:06 UTC #: data/ui/qt/main.ui.h:287 msgid "Add Mark" msgstr "Dodaj mjesto" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2015-03-28 22:58:06 UTC #: data/ui/qt/main.ui.h:289 msgid "Mark the current place in the sequence of moves" msgstr "Označi trenutno mjestu u sekvenci koraka" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2015-03-28 22:58:06 UTC #: data/ui/qt/main.ui.h:291 msgid "Remove Mark" msgstr "Ukloni mjesto" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2015-03-28 22:58:06 UTC #: data/ui/qt/main.ui.h:293 msgid "Remove the mark at the current place in the sequence of moves" msgstr "Ukloni oznaku na trenutnoj lokaciji u sekvenci koraka" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2015-03-28 22:58:06 UTC #: data/ui/qt/main.ui.h:295 msgid "&Edit Bar" msgstr "&Traka za uređivanje" #: data/ui/qt/main.ui.h:296 msgid "&Help …" msgstr "" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2015-03-28 22:58:06 UTC #: data/ui/qt/preferences.ui.h:372 msgid "Preferences" msgstr "Postavke" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2015-03-28 22:58:06 UTC #: data/ui/qt/preferences.ui.h:373 msgid "Animation Speed:" msgstr "Brzina animacije:" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2015-03-28 22:58:06 UTC #: data/ui/qt/preferences.ui.h:375 msgid "Mirror Distance:" msgstr "Udaljenost slike:" #: data/ui/qt/preferences.ui.h:377 msgid "Quality:" msgstr "" #: data/ui/qt/preferences.ui.h:380 msgid "" "Lower antialiasing has better performance, higher antialiasing has better " "quality." msgstr "" #: data/ui/qt/preferences.ui.h:382 msgid "Antialiasing:" msgstr "" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2013-06-09 11:17:45 UTC #: data/ui/qt/preferences.ui.h:384 msgid "The program needs to be restarted for the changes to take effect." msgstr "" "Program je potrebno ponovo pokrenuti da bi promjene počele djelovati." # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2015-03-28 22:58:06 UTC #: data/ui/qt/preferences.ui.h:385 msgid "Graphic" msgstr "Grafika" #: data/ui/qt/preferences.ui.h:386 msgid "Point and click, all directions" msgstr "" #: data/ui/qt/preferences.ui.h:387 msgid "Point and click, simplified" msgstr "" #: data/ui/qt/preferences.ui.h:388 msgid "Gestures" msgstr "" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2015-03-28 22:58:06 UTC #: data/ui/qt/preferences.ui.h:389 msgid "Mouse" msgstr "Miš" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2015-03-28 22:58:06 UTC #: data/ui/qt/preferences.ui.h:391 data/ui/qt/preferences.ui.h:393 msgid "Add" msgstr "Dodaj" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2015-03-28 22:58:06 UTC #: data/ui/qt/preferences.ui.h:395 data/ui/qt/preferences.ui.h:397 msgid "Remove" msgstr "Ukloni" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2015-03-28 22:58:06 UTC #: data/ui/qt/preferences.ui.h:399 data/ui/qt/preferences.ui.h:401 msgid "Reset" msgstr "Resetuj" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2015-03-28 22:58:06 UTC #: data/ui/qt/preferences.ui.h:402 msgid "Keys" msgstr "Tipke" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2015-03-28 22:58:06 UTC #: data/ui/qt/preferences.ui.h:403 msgid "Color:" msgstr "Boja:" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2015-03-28 22:58:06 UTC #: data/ui/qt/preferences.ui.h:405 msgid "Image File:" msgstr "Datoteka slike:" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2015-03-28 22:58:06 UTC #: data/ui/qt/preferences.ui.h:407 msgid "Tiled" msgstr "Popločano" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2015-03-28 22:58:06 UTC #: data/ui/qt/preferences.ui.h:408 msgid "Mosaic" msgstr "Mozaik" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2015-03-28 22:58:06 UTC #: data/ui/qt/preferences.ui.h:409 msgid "Background:" msgstr "Pozadina:" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2015-03-28 22:58:06 UTC #: data/ui/qt/preferences.ui.h:411 msgid "Appearance" msgstr "Izgled" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2013-06-09 10:49:59 UTC #: pybiklib/ext/qt.py:1578 msgid "Move" msgstr "Pomjeri" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2013-06-09 10:49:59 UTC #: pybiklib/ext/qt.py:1581 msgid "Key" msgstr "Tipka" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2013-06-09 10:49:59 UTC #: pybiklib/ext/qt.py:1682 msgid "Open Image" msgstr "Otvori sliku" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2013-06-09 10:49:13 UTC #: pybiklib/ext/qt.py:1720 msgid "plain" msgstr "obično" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2013-06-09 10:49:13 UTC #: pybiklib/ext/qt.py:1723 msgid "select …" msgstr "odaberi ..." # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2013-06-09 10:49:13 UTC #: pybiklib/ext/qtui.py:94 msgid "Press a key …" msgstr "Pritisnite tipku ..." # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2013-06-09 10:57:12 UTC #. Add whatever keywords you want in your language, separated by semicolons, last character must be a semicolon. These keywords are used when searching for applications in Unity, GNOME Shell, etc. #: data/app-meta/pybik.desktop.in:10 msgid "rubik;cube;puzzle;magic;" msgstr "rubik;kocka;puzzle;slagalica;zagonetka;" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2013-06-09 10:57:12 UTC #: data/plugins/01-challenges.plugins.py:18 #: data/plugins/01-challenges.plugins.py:21 #: data/plugins/01-challenges.plugins.py:24 #: data/plugins/01-challenges.plugins.py:27 #: data/plugins/01-challenges.plugins.py:30 #: data/plugins/01-challenges.plugins.py:33 #: data/plugins/01-challenges.plugins.py:36 #: data/plugins/01-challenges.plugins.py:39 #: data/plugins/01-challenges.plugins.py:42 #: data/plugins/01-challenges.plugins.py:45 #: data/plugins/01-challenges.plugins.py:48 msgid "Challenges" msgstr "Izazovi" #: data/plugins/01-challenges.plugins.py:19 msgid "Solve random puzzle" msgstr "" #: data/plugins/01-challenges.plugins.py:22 #: data/plugins/01-challenges.plugins.py:25 #: data/plugins/01-challenges.plugins.py:28 #: data/plugins/01-challenges.plugins.py:31 #: data/plugins/01-challenges.plugins.py:34 #: data/plugins/01-challenges.plugins.py:37 #: data/plugins/01-challenges.plugins.py:40 #: data/plugins/01-challenges.plugins.py:43 #: data/plugins/01-challenges.plugins.py:46 #: data/plugins/01-challenges.plugins.py:49 msgid "Solve in {} move" msgid_plural "Solve in {} moves" msgstr[0] "" msgstr[1] "" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2013-06-09 10:58:11 UTC #: data/plugins/10-beginners.plugins.py:31 #: data/plugins/10-beginners.plugins.py:34 #: data/plugins/10-beginners.plugins.py:56 #: data/plugins/10-beginners.plugins.py:73 #: data/plugins/10-beginners.plugins.py:100 #: data/plugins/10-beginners.plugins.py:118 #: data/plugins/10-beginners.plugins.py:140 #: data/plugins/10-beginners.plugins.py:158 #: data/plugins/14-leyan-lo.plugins.py:21 #: data/plugins/14-leyan-lo.plugins.py:24 #: data/plugins/14-leyan-lo.plugins.py:53 #: data/plugins/14-leyan-lo.plugins.py:74 #: data/plugins/14-leyan-lo.plugins.py:90 #: data/plugins/14-leyan-lo.plugins.py:107 #: data/plugins/14-leyan-lo.plugins.py:129 #: data/plugins/14-leyan-lo.plugins.py:170 #: data/plugins/150-spiegel.plugins.py:32 #: data/plugins/150-spiegel.plugins.py:35 #: data/plugins/150-spiegel.plugins.py:64 #: data/plugins/150-spiegel.plugins.py:85 #: data/plugins/150-spiegel.plugins.py:100 #: data/plugins/150-spiegel.plugins.py:113 #: data/plugins/150-spiegel.plugins.py:130 #: data/plugins/150-spiegel.plugins.py:141 #: data/plugins/151-spiegel-improved.plugins.py:20 #: data/plugins/151-spiegel-improved.plugins.py:23 #: data/plugins/151-spiegel-improved.plugins.py:68 #: data/plugins/151-spiegel-improved.plugins.py:107 #: data/plugins/151-spiegel-improved.plugins.py:139 #: data/plugins/151-spiegel-improved.plugins.py:165 #: data/plugins/151-spiegel-improved.plugins.py:183 #: data/plugins/151-spiegel-improved.plugins.py:197 #: data/plugins/20-2x2x2.plugins.py:18 data/plugins/20-2x2x2.plugins.py:21 #: data/plugins/20-2x2x2.plugins.py:37 data/plugins/20-2x2x2.plugins.py:55 msgid "Solvers" msgstr "Način rješavanja" #: data/plugins/10-beginners.plugins.py:32 #: data/plugins/10-beginners.plugins.py:35 #: data/plugins/10-beginners.plugins.py:57 #: data/plugins/10-beginners.plugins.py:74 #: data/plugins/10-beginners.plugins.py:101 #: data/plugins/10-beginners.plugins.py:119 #: data/plugins/10-beginners.plugins.py:141 #: data/plugins/10-beginners.plugins.py:159 msgid "Beginner's method" msgstr "" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2013-06-09 10:58:11 UTC #: data/plugins/10-beginners.plugins.py:36 #: data/plugins/14-leyan-lo.plugins.py:26 #: data/plugins/150-spiegel.plugins.py:37 #: data/plugins/151-spiegel-improved.plugins.py:25 msgid "Top edges" msgstr "Gornje ivice" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2013-06-09 10:58:11 UTC #: data/plugins/10-beginners.plugins.py:58 #: data/plugins/14-leyan-lo.plugins.py:55 #: data/plugins/150-spiegel.plugins.py:66 #: data/plugins/151-spiegel-improved.plugins.py:70 msgid "Top corners" msgstr "Gornji uglovi" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2013-06-09 11:11:37 UTC #: data/plugins/10-beginners.plugins.py:75 #: data/plugins/14-leyan-lo.plugins.py:76 #: data/plugins/150-spiegel.plugins.py:87 #: data/plugins/151-spiegel-improved.plugins.py:109 msgid "Middle slice" msgstr "Srednji dio" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2013-06-09 11:17:45 UTC #: data/plugins/10-beginners.plugins.py:102 #: data/plugins/14-leyan-lo.plugins.py:92 #: data/plugins/150-spiegel.plugins.py:115 #: data/plugins/151-spiegel-improved.plugins.py:167 msgid "Bottom edge orient" msgstr "Orijentacija donje ivice" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2013-06-09 11:52:00 UTC #: data/plugins/10-beginners.plugins.py:120 #: data/plugins/14-leyan-lo.plugins.py:131 #: data/plugins/150-spiegel.plugins.py:143 #: data/plugins/151-spiegel-improved.plugins.py:199 #: data/plugins/20-2x2x2.plugins.py:57 msgid "Bottom corner orient" msgstr "Orijentacija donjeg ugla" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2013-06-09 11:52:00 UTC #: data/plugins/10-beginners.plugins.py:142 #: data/plugins/14-leyan-lo.plugins.py:109 #: data/plugins/150-spiegel.plugins.py:132 #: data/plugins/151-spiegel-improved.plugins.py:185 #: data/plugins/20-2x2x2.plugins.py:39 msgid "Bottom corner place" msgstr "Lokacija donjeg ugla" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2013-06-09 11:17:45 UTC #: data/plugins/10-beginners.plugins.py:160 #: data/plugins/14-leyan-lo.plugins.py:172 #: data/plugins/150-spiegel.plugins.py:102 #: data/plugins/151-spiegel-improved.plugins.py:141 msgid "Bottom edge place" msgstr "Lokacija donje ivice" #. Leyan Lo is the inventor of the solution #: data/plugins/14-leyan-lo.plugins.py:23 #: data/plugins/14-leyan-lo.plugins.py:25 #: data/plugins/14-leyan-lo.plugins.py:54 #: data/plugins/14-leyan-lo.plugins.py:75 #: data/plugins/14-leyan-lo.plugins.py:91 #: data/plugins/14-leyan-lo.plugins.py:108 #: data/plugins/14-leyan-lo.plugins.py:130 #: data/plugins/14-leyan-lo.plugins.py:171 msgid "Leyan Lo" msgstr "" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2013-06-09 10:58:11 UTC #. Spiegel is a german magazine #: data/plugins/150-spiegel.plugins.py:34 #: data/plugins/150-spiegel.plugins.py:36 #: data/plugins/150-spiegel.plugins.py:65 #: data/plugins/150-spiegel.plugins.py:86 #: data/plugins/150-spiegel.plugins.py:101 #: data/plugins/150-spiegel.plugins.py:114 #: data/plugins/150-spiegel.plugins.py:131 #: data/plugins/150-spiegel.plugins.py:142 msgid "Spiegel" msgstr "Spiegel" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2013-06-09 11:13:25 UTC #. Spiegel is a german magazine #: data/plugins/151-spiegel-improved.plugins.py:22 #: data/plugins/151-spiegel-improved.plugins.py:24 #: data/plugins/151-spiegel-improved.plugins.py:69 #: data/plugins/151-spiegel-improved.plugins.py:108 #: data/plugins/151-spiegel-improved.plugins.py:140 #: data/plugins/151-spiegel-improved.plugins.py:166 #: data/plugins/151-spiegel-improved.plugins.py:184 #: data/plugins/151-spiegel-improved.plugins.py:198 msgid "Spiegel improved" msgstr "Poboljšani Spiegel" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2013-06-09 10:58:33 UTC #: data/plugins/20-2x2x2.plugins.py:19 data/plugins/20-2x2x2.plugins.py:22 #: data/plugins/20-2x2x2.plugins.py:38 data/plugins/20-2x2x2.plugins.py:56 msgid "2×2×2" msgstr "2×2×2" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2013-06-09 11:13:25 UTC #: data/plugins/20-2x2x2.plugins.py:23 msgid "Top slice" msgstr "Gornji dio" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2013-06-09 10:58:33 UTC #: data/plugins/80-pretty-patterns.plugins.py:20 #: data/plugins/80-pretty-patterns.plugins.py:23 #: data/plugins/80-pretty-patterns.plugins.py:27 #: data/plugins/80-pretty-patterns.plugins.py:31 #: data/plugins/80-pretty-patterns.plugins.py:35 #: data/plugins/80-pretty-patterns.plugins.py:40 #: data/plugins/80-pretty-patterns.plugins.py:44 msgid "Stripes" msgstr "Trake" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2013-06-09 10:58:33 UTC #: data/plugins/80-pretty-patterns.plugins.py:49 #: data/plugins/80-pretty-patterns.plugins.py:53 msgid "Criss-Cross" msgstr "Križanja" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2013-06-09 11:13:25 UTC #: data/plugins/80-pretty-patterns.plugins.py:57 msgid "Fried Eggs" msgstr "Pržena jaja" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2013-06-09 11:13:25 UTC #: data/plugins/80-pretty-patterns.plugins.py:61 msgid "Big Fried Eggs" msgstr "Velika pržena jaja" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2013-06-09 11:13:25 UTC #: data/plugins/80-pretty-patterns.plugins.py:65 #: data/plugins/80-pretty-patterns.plugins.py:69 msgid "4 Fried Eggs" msgstr "4 pržena jajeta" #: data/plugins/80-pretty-patterns.plugins.py:73 msgid "2 Fried Eggs" msgstr "" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2013-06-09 10:59:10 UTC #: data/plugins/80-pretty-patterns.plugins.py:77 msgid "Chessboard" msgstr "Šahovska tabla" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2013-06-09 10:59:10 UTC #: data/plugins/80-pretty-patterns.plugins.py:83 msgid "Cross" msgstr "Ukrštanje" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2013-06-09 10:59:10 UTC #: data/plugins/80-pretty-patterns.plugins.py:87 msgid "Zig Zag" msgstr "Cik-cak" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2013-06-09 11:13:25 UTC #. T is the shape formed by the cube labels. T-Time is a pun (Tea Time) and not suitable for literal translation. Don't translate it or use something common or whatever you think makes sense. #: data/plugins/80-pretty-patterns.plugins.py:93 #: data/plugins/80-pretty-patterns.plugins.py:96 #: data/plugins/80-pretty-patterns.plugins.py:100 #: data/plugins/80-pretty-patterns.plugins.py:104 #: data/plugins/80-pretty-patterns.plugins.py:108 #: data/plugins/80-pretty-patterns.plugins.py:112 msgid "T-Time" msgstr "T-vrijeme" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2013-06-09 10:59:10 UTC #. C is the shape formed by the cube labels #: data/plugins/80-pretty-patterns.plugins.py:118 msgid "C" msgstr "C" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2013-06-09 10:59:10 UTC #: data/plugins/80-pretty-patterns.plugins.py:121 msgid "Cube in a Cube" msgstr "Kocka u kocki" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2013-06-09 11:13:25 UTC #: data/plugins/80-pretty-patterns.plugins.py:125 msgid "Striped Cube in a Cube" msgstr "Prugasta kocka u kocki" #: data/plugins/80-pretty-patterns.plugins.py:129 msgid "Six square cuboids" msgstr "" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2013-06-09 11:15:04 UTC #. Superflip may be not translated, because it has a special meaning in the mathematical theory behind the Rubik's Cube. #: data/plugins/80-pretty-patterns.plugins.py:135 msgid "Superflip" msgstr "Superflip" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2013-06-09 11:15:04 UTC #: data/plugins/80-pretty-patterns.plugins.py:138 msgid "Superflip easy" msgstr "Pojednostavljeni superflip" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2013-06-09 11:15:04 UTC #: data/plugins/80-pretty-patterns.plugins.py:142 msgid "Green Mamba" msgstr "Zelena Mamba" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2013-06-09 11:00:04 UTC #: data/plugins/80-pretty-patterns.plugins.py:146 msgid "Anaconda" msgstr "Anakonda" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2013-06-09 11:15:04 UTC #: data/plugins/80-pretty-patterns.plugins.py:150 msgid "Duck Feet" msgstr "Pačije stopalo" #: data/plugins/80-pretty-patterns.plugins.py:154 #: data/plugins/80-pretty-patterns.plugins.py:158 #: data/plugins/80-pretty-patterns.plugins.py:162 #: data/plugins/80-pretty-patterns.plugins.py:166 #: data/plugins/80-pretty-patterns.plugins.py:170 #: data/plugins/80-pretty-patterns.plugins.py:174 #: data/plugins/80-pretty-patterns.plugins.py:178 #: data/plugins/80-pretty-patterns.plugins.py:182 msgid "Plus" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:186 #: data/plugins/80-pretty-patterns.plugins.py:191 #: data/plugins/80-pretty-patterns.plugins.py:196 #: data/plugins/80-pretty-patterns.plugins.py:200 msgid "Minus" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:204 msgid "Volcano" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:208 msgid "Checkerboard (easy)" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:212 msgid "Checkerboard (fast)" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:216 msgid "Mixed Checkerboard" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:220 msgid "Tipi" msgstr "" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2013-06-09 11:00:04 UTC #: data/plugins/90-library.plugins.py:18 data/plugins/90-library.plugins.py:22 #: data/plugins/90-library.plugins.py:26 data/plugins/90-library.plugins.py:30 #: data/plugins/90-library.plugins.py:34 data/plugins/90-library.plugins.py:38 #: data/plugins/90-library.plugins.py:42 data/plugins/90-library.plugins.py:46 #: data/plugins/90-library.plugins.py:50 data/plugins/90-library.plugins.py:54 #: data/plugins/90-library.plugins.py:58 data/plugins/90-library.plugins.py:62 #: data/plugins/90-library.plugins.py:66 data/plugins/90-library.plugins.py:70 #: data/plugins/90-library.plugins.py:74 data/plugins/90-library.plugins.py:78 #: data/plugins/90-library.plugins.py:82 data/plugins/90-library.plugins.py:86 #: data/plugins/90-library.plugins.py:91 data/plugins/90-library.plugins.py:96 #: data/plugins/90-library.plugins.py:101 #: data/plugins/90-library.plugins.py:105 #: data/plugins/90-library.plugins.py:110 #: data/plugins/90-library.plugins.py:115 #: data/plugins/90-library.plugins.py:119 #: data/plugins/90-library.plugins.py:123 #: data/plugins/90-library.plugins.py:127 msgid "Library" msgstr "Biblioteka" #: data/plugins/90-library.plugins.py:19 data/plugins/90-library.plugins.py:23 #: data/plugins/90-library.plugins.py:27 data/plugins/90-library.plugins.py:31 #: data/plugins/90-library.plugins.py:35 msgid "Swap edges" msgstr "" #: data/plugins/90-library.plugins.py:20 msgid "3 edges ⟳, top layer" msgstr "" #: data/plugins/90-library.plugins.py:24 msgid "3 edges ⟲, top layer" msgstr "" #: data/plugins/90-library.plugins.py:28 msgid "3 edges, middle layer" msgstr "" #: data/plugins/90-library.plugins.py:32 msgid "4 edges, front and right" msgstr "" #: data/plugins/90-library.plugins.py:36 msgid "4 edges, front and back" msgstr "" #: data/plugins/90-library.plugins.py:39 msgid "Swap 2 edges and 2 corners, top layer" msgstr "" #: data/plugins/90-library.plugins.py:43 data/plugins/90-library.plugins.py:47 msgid "Flip edges" msgstr "" #: data/plugins/90-library.plugins.py:44 msgid "4 edges" msgstr "" #: data/plugins/90-library.plugins.py:48 msgid "2 edges, top layer" msgstr "" #: data/plugins/90-library.plugins.py:51 data/plugins/90-library.plugins.py:55 #: data/plugins/90-library.plugins.py:59 data/plugins/90-library.plugins.py:63 #: data/plugins/90-library.plugins.py:67 data/plugins/90-library.plugins.py:71 msgid "Swap corners" msgstr "" #: data/plugins/90-library.plugins.py:52 data/plugins/90-library.plugins.py:76 msgid "2 corners, top layer" msgstr "" #: data/plugins/90-library.plugins.py:56 msgid "2 corners diagonal, top layer" msgstr "" #: data/plugins/90-library.plugins.py:60 data/plugins/90-library.plugins.py:80 msgid "3 corners ⟳, top layer" msgstr "" #: data/plugins/90-library.plugins.py:64 msgid "3 corners ⟲, top layer" msgstr "" #: data/plugins/90-library.plugins.py:68 msgid "4 corners, top layer" msgstr "" #: data/plugins/90-library.plugins.py:72 msgid "2 corners, partial sequence, top layer" msgstr "" #: data/plugins/90-library.plugins.py:75 data/plugins/90-library.plugins.py:79 #: data/plugins/90-library.plugins.py:83 data/plugins/90-library.plugins.py:87 msgid "Rotate corners" msgstr "" #: data/plugins/90-library.plugins.py:84 msgid "1 corner ⟳, partial sequence, top layer" msgstr "" #: data/plugins/90-library.plugins.py:88 msgid "1 corner ⟲, partial sequence, top layer" msgstr "" #: data/plugins/90-library.plugins.py:92 data/plugins/90-library.plugins.py:97 #: data/plugins/90-library.plugins.py:102 #: data/plugins/90-library.plugins.py:111 msgid "Rotate center" msgstr "" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2013-06-09 11:16:24 UTC #. 2 rotations of the center face in the upper layer #: data/plugins/90-library.plugins.py:94 msgid "2×Up" msgstr "2×Gore" #. Up clockwise and front clockwise #: data/plugins/90-library.plugins.py:99 msgid "Up ⟳ and front ⟳" msgstr "" #. Up clockwise and front counterclockwise #: data/plugins/90-library.plugins.py:104 msgid "Up ⟳ and front ⟲" msgstr "" #: data/plugins/90-library.plugins.py:106 msgid "Swap center parts, up and front" msgstr "" #. Up clockwise and down counterclockwise #: data/plugins/90-library.plugins.py:113 msgid "Up ⟳ and down ⟲" msgstr "" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2013-06-09 11:00:19 UTC #: data/plugins/90-library.plugins.py:116 #: data/plugins/90-library.plugins.py:120 #: data/plugins/90-library.plugins.py:124 #: data/plugins/90-library.plugins.py:128 msgid "Misc" msgstr "Razno" #. Yields in a rotated back layer, but the sequence of moves does not touch the back layer #: data/plugins/90-library.plugins.py:118 #: data/plugins/90-library.plugins.py:125 #: data/plugins/90-library.plugins.py:129 msgid "Back without back" msgstr "" #: data/plugins/90-library.plugins.py:121 msgid "2×Back without back" msgstr "" #: data/plugins/95-transformations.plugins.py:18 #: data/plugins/95-transformations.plugins.py:21 #: data/plugins/95-transformations.plugins.py:24 msgid "Move transformations" msgstr "" #: data/plugins/95-transformations.plugins.py:19 msgid "Invert move sequence" msgstr "" #: data/plugins/95-transformations.plugins.py:22 msgid "Normalize cube rotations" msgstr "" #: data/plugins/95-transformations.plugins.py:25 msgid "Normalize move sequence" msgstr "" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2013-06-09 10:50:31 UTC #: buildlib/modeldef.py:110 msgid "Brick" msgstr "Cigla" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2013-06-09 10:50:31 UTC #: buildlib/modeldef.py:111 #, python-brace-format msgid "{0}×{1}×{2}-Brick" msgstr "{0}×{1}×{2}-Cigla" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2013-06-09 10:49:59 UTC #: buildlib/modeldef.py:112 msgid "Width:" msgstr "Širina:" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2013-06-09 10:54:03 UTC #: buildlib/modeldef.py:112 buildlib/modeldef.py:151 buildlib/modeldef.py:249 #: buildlib/modeldef.py:300 buildlib/modeldef.py:311 msgid "Height:" msgstr "Visina:" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2013-06-09 10:54:54 UTC #: buildlib/modeldef.py:112 msgid "Depth:" msgstr "Dubina:" #: buildlib/modeldef.py:120 buildlib/modeldef.py:257 buildlib/modeldef.py:319 #: buildlib/modeldef.py:374 buildlib/modeldef.py:433 msgid "up" msgstr "" #: buildlib/modeldef.py:120 buildlib/modeldef.py:205 buildlib/modeldef.py:257 #: buildlib/modeldef.py:319 buildlib/modeldef.py:373 buildlib/modeldef.py:430 msgid "down" msgstr "" #: buildlib/modeldef.py:120 buildlib/modeldef.py:205 buildlib/modeldef.py:257 msgid "left" msgstr "" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2013-06-09 10:49:59 UTC #: buildlib/modeldef.py:120 buildlib/modeldef.py:205 buildlib/modeldef.py:257 msgid "right" msgstr "" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2013-06-09 10:49:59 UTC #: buildlib/modeldef.py:120 buildlib/modeldef.py:374 msgid "front" msgstr "" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2015-03-28 22:58:06 UTC #: buildlib/modeldef.py:120 buildlib/modeldef.py:205 buildlib/modeldef.py:257 #: buildlib/modeldef.py:320 buildlib/modeldef.py:373 msgid "back" msgstr "" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2013-06-09 10:50:31 UTC #: buildlib/modeldef.py:149 msgid "Tower" msgstr "Kula" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2013-06-09 10:50:31 UTC #: buildlib/modeldef.py:150 #, python-brace-format msgid "{0}×{1}-Tower" msgstr "{0}×{1}-Kula" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2013-06-09 10:49:59 UTC #: buildlib/modeldef.py:151 buildlib/modeldef.py:249 buildlib/modeldef.py:300 #: buildlib/modeldef.py:311 msgid "Basis:" msgstr "Baza:" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2013-06-09 10:50:31 UTC #: buildlib/modeldef.py:163 msgid "Cube" msgstr "Kocka" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2013-06-09 10:50:31 UTC #: buildlib/modeldef.py:164 #, python-brace-format msgid "{0}×{0}×{0}-Cube" msgstr "{0}×{0}×{0}-Kocka" # translated by: Kenan Dervišević https://launchpad.net/~kenan3008 on 2013-06-09 10:49:59 UTC #: buildlib/modeldef.py:165 buildlib/modeldef.py:197 buildlib/modeldef.py:365 #: buildlib/modeldef.py:422 msgid "Size:" msgstr "Veličina:" #: buildlib/modeldef.py:177 buildlib/modeldef.py:178 msgid "Void Cube" msgstr "" #: buildlib/modeldef.py:195 msgid "Tetrahedron" msgstr "" #: buildlib/modeldef.py:196 #, python-brace-format msgid "{0}-Tetrahedron" msgstr "" #: buildlib/modeldef.py:247 msgid "Triangular Prism" msgstr "" #: buildlib/modeldef.py:248 #, python-brace-format msgid "{0}×{1} Triangular Prism" msgstr "" #: buildlib/modeldef.py:298 msgid "Triangular Prism (complex)" msgstr "" #: buildlib/modeldef.py:299 #, python-brace-format msgid "{0}×{1} Triangular Prism (complex)" msgstr "" #: buildlib/modeldef.py:309 msgid "Pentagonal Prism" msgstr "" #: buildlib/modeldef.py:310 #, python-brace-format msgid "{0}×{1} Pentagonal Prism" msgstr "" #: buildlib/modeldef.py:320 buildlib/modeldef.py:373 msgid "front-right" msgstr "" #: buildlib/modeldef.py:320 buildlib/modeldef.py:374 msgid "back-right" msgstr "" #: buildlib/modeldef.py:320 buildlib/modeldef.py:374 msgid "back-left" msgstr "" #: buildlib/modeldef.py:320 buildlib/modeldef.py:373 msgid "front-left" msgstr "" #: buildlib/modeldef.py:354 msgid "Pentagonal Prism (stretched)" msgstr "" #: buildlib/modeldef.py:355 #, python-brace-format msgid "{0}×{1} Pentagonal Prism (stretched)" msgstr "" #: buildlib/modeldef.py:363 msgid "Octahedron" msgstr "" #: buildlib/modeldef.py:364 #, python-brace-format msgid "{0}-Octahedron" msgstr "" #: buildlib/modeldef.py:420 msgid "Dodecahedron" msgstr "" #: buildlib/modeldef.py:421 #, python-brace-format msgid "{0}-Dodecahedron" msgstr "" #: buildlib/modeldef.py:430 msgid "down-back-right" msgstr "" #: buildlib/modeldef.py:430 msgid "down-front-right" msgstr "" #: buildlib/modeldef.py:431 msgid "down-front" msgstr "" #: buildlib/modeldef.py:431 msgid "down-front-left" msgstr "" #: buildlib/modeldef.py:431 msgid "down-back-left" msgstr "" #: buildlib/modeldef.py:432 msgid "up-back" msgstr "" #: buildlib/modeldef.py:432 msgid "up-back-right" msgstr "" #: buildlib/modeldef.py:432 msgid "up-front-right" msgstr "" #: buildlib/modeldef.py:433 msgid "up-front-left" msgstr "" #: buildlib/modeldef.py:433 msgid "up-back-left" msgstr "" pybik-3.0/po/fi.po0000644000175000017500000014230013173052130014207 0ustar barccbarcc00000000000000# Finnish translation for pybik # Copyright (c) 2014-2017 Rosetta Contributors and Canonical Ltd 2014 # This file is distributed under the same license as the pybik package. # FIRST AUTHOR , 2014. # msgid "" msgstr "" "Project-Id-Version: pybik\n" "Report-Msgid-Bugs-To: https://bugs.launchpad.net/pybik/+filebug\n" "POT-Creation-Date: 2017-09-10 21:58+0200\n" "PO-Revision-Date: 2017-09-18 06:32+0000\n" "Last-Translator: Jiri Grönroos \n" "Language-Team: Finnish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Launchpad-Export-Date: 2017-09-19 05:11+0000\n" "X-Generator: Launchpad (build 18449)\n" "Language: fi\n" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2015-04-09 08:42:58 UTC #: pybiklib/application.py:294 msgid "Press the Esc key to exit Edit Mode" msgstr "Paina Esc poistuaksesi muokkaustilasta" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2014-02-05 18:24:34 UTC #. substitution for {move_text} in statusbar text #: pybiklib/application.py:302 #, python-brace-format msgid "{current} / {total} move" msgid_plural "{current} / {total} moves" msgstr[0] "{current} / {total} siirto" msgstr[1] "{current} / {total} siirtoa" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2014-02-05 18:40:12 UTC #. substitution for {solved_text} in statusbar text #: pybiklib/application.py:306 msgid "solved" msgstr "ratkaistu" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2014-02-05 18:40:12 UTC #: pybiklib/application.py:306 msgid "not solved" msgstr "ei ratkaistu" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2014-02-07 07:39:09 UTC #. statusbar text #: pybiklib/application.py:309 #, python-brace-format msgid "{move_text}, {solved_text}" msgstr "{move_text}, {solved_text}" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2015-04-12 15:24:05 UTC #: pybiklib/application.py:314 msgid "Congratulations, you have solved the puzzle!" msgstr "Onnittelut, ratkaisit pulman!" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2014-02-05 18:24:34 UTC #. Name of the application, probably should not be translated. #: pybiklib/config.py:35 data/ui/qt/main.ui.h:271 #: data/app-meta/pybik.desktop.in:3 msgid "Pybik" msgstr "Pybik" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2015-04-10 09:06:12 UTC #. short description #: pybiklib/config.py:65 data/app-meta/pybik.desktop.in:4 msgid "Rubik's cube game" msgstr "Rubiikin kuutio -peli" #. The next 7 lines belong together and form the long description #: pybiklib/config.py:68 msgid "Pybik is a 3D puzzle game about the cube invented by Ernő Rubik." msgstr "" "Pybik on 3D-pulmapeli, joka perustuu Ernő Rubikin keksimään kuutioon." #: pybiklib/config.py:70 msgid "" "Various 3D puzzles, such as cubes, towers, prisms, tetrahedra, octahedra, " "dodecahedra and many more" msgstr "" #: pybiklib/config.py:71 msgid "Solvers for some puzzles" msgstr "Ratkaisumenetelmiä joihinkin pulmiin" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2014-02-05 18:38:12 UTC #. Use something that is common in the Rubik scene in your language, sometimes it's just the equivalent of "patterns". #: pybiklib/config.py:72 data/plugins/80-pretty-patterns.plugins.py:19 #: data/plugins/80-pretty-patterns.plugins.py:22 #: data/plugins/80-pretty-patterns.plugins.py:26 #: data/plugins/80-pretty-patterns.plugins.py:30 #: data/plugins/80-pretty-patterns.plugins.py:34 #: data/plugins/80-pretty-patterns.plugins.py:39 #: data/plugins/80-pretty-patterns.plugins.py:43 #: data/plugins/80-pretty-patterns.plugins.py:48 #: data/plugins/80-pretty-patterns.plugins.py:52 #: data/plugins/80-pretty-patterns.plugins.py:56 #: data/plugins/80-pretty-patterns.plugins.py:60 #: data/plugins/80-pretty-patterns.plugins.py:64 #: data/plugins/80-pretty-patterns.plugins.py:68 #: data/plugins/80-pretty-patterns.plugins.py:72 #: data/plugins/80-pretty-patterns.plugins.py:76 #: data/plugins/80-pretty-patterns.plugins.py:82 #: data/plugins/80-pretty-patterns.plugins.py:86 #: data/plugins/80-pretty-patterns.plugins.py:91 #: data/plugins/80-pretty-patterns.plugins.py:95 #: data/plugins/80-pretty-patterns.plugins.py:99 #: data/plugins/80-pretty-patterns.plugins.py:103 #: data/plugins/80-pretty-patterns.plugins.py:107 #: data/plugins/80-pretty-patterns.plugins.py:111 #: data/plugins/80-pretty-patterns.plugins.py:116 #: data/plugins/80-pretty-patterns.plugins.py:120 #: data/plugins/80-pretty-patterns.plugins.py:124 #: data/plugins/80-pretty-patterns.plugins.py:128 #: data/plugins/80-pretty-patterns.plugins.py:133 #: data/plugins/80-pretty-patterns.plugins.py:137 #: data/plugins/80-pretty-patterns.plugins.py:141 #: data/plugins/80-pretty-patterns.plugins.py:145 #: data/plugins/80-pretty-patterns.plugins.py:149 #: data/plugins/80-pretty-patterns.plugins.py:153 #: data/plugins/80-pretty-patterns.plugins.py:157 #: data/plugins/80-pretty-patterns.plugins.py:161 #: data/plugins/80-pretty-patterns.plugins.py:165 #: data/plugins/80-pretty-patterns.plugins.py:169 #: data/plugins/80-pretty-patterns.plugins.py:173 #: data/plugins/80-pretty-patterns.plugins.py:177 #: data/plugins/80-pretty-patterns.plugins.py:181 #: data/plugins/80-pretty-patterns.plugins.py:185 #: data/plugins/80-pretty-patterns.plugins.py:190 #: data/plugins/80-pretty-patterns.plugins.py:195 #: data/plugins/80-pretty-patterns.plugins.py:199 #: data/plugins/80-pretty-patterns.plugins.py:203 #: data/plugins/80-pretty-patterns.plugins.py:207 #: data/plugins/80-pretty-patterns.plugins.py:211 #: data/plugins/80-pretty-patterns.plugins.py:215 #: data/plugins/80-pretty-patterns.plugins.py:219 msgid "Pretty patterns" msgstr "Nätit kuviot" #: pybiklib/config.py:73 msgid "Editor for move sequences" msgstr "Muokkain siirtosarjoja varten" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2017-09-18 06:29:12 UTC #: pybiklib/config.py:74 msgid "Custom colors and images on the surface of the puzzles" msgstr "Omavalintaisia värejä ja kuvia pulmien pinnoissa" #: pybiklib/config.py:78 msgid "" "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.\n" "\n" "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." msgstr "" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2015-04-12 15:22:43 UTC #. Text between "<" and ">" is expanded to a link by the program and should not be modified. #. Text between "" and "<|>" is the translatable text for the link. #: pybiklib/config.py:90 msgid "" "Read the full text of the GNU General Public " "License<|> or see ." msgstr "" "Lue koko GNU GPL -lisenssin teksti<|> tai katso " "." # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2014-02-07 07:39:09 UTC #: pybiklib/config.py:93 msgid "" "You should have received a copy of the GNU General Public License along with " "this program. If not, see ." msgstr "" "Tämän ohjelman mukana pitäisi tulla kopio GPL-lisenssistä; jos näin ei ole, " "katso lisätietoja sivulta ." # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2015-04-12 15:44:06 UTC #: pybiklib/config.py:98 #, python-brace-format msgid "" "If you find any bugs in Pybik or have a suggestion for an improvement then " "please submit a <{CONTACT_FILEBUG}|>bug report<|>." msgstr "" "Jos kohtaat ongelmia Pybikin käytön suhteen tai sinulla on ideoita, tee " "<{CONTACT_FILEBUG}|>vikailmoitus<|>." # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2015-04-12 15:44:06 UTC #: pybiklib/config.py:103 msgid "" "Translations are managed by the " "Launchpad " "translation group<|>.\n" "\n" "If you want help to translate Pybik to your language you can do it through " "the web interface<|>.\n" "\n" "Read more about \"Translating with " "Launchpad\"<|> and " "\"Starting to " "translate\"<|>." msgstr "" "Käännöksiä hallitsee Launchpadin käännösryhmä<|>.\n" "\n" "Halutessasi voit kääntää Pybikin omalle kielellesi " "selainkäyttöliittymän kautta<|>.\n" "\n" "Lue seuraavat artikkelit: " "\"Translating with Launchpad\"<|> " "ja \"Starting " "to translate\"<|>." # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2015-04-09 08:38:39 UTC #: pybiklib/dialogs.py:44 msgid "Lighting" msgstr "Valaistus" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2015-04-12 16:45:30 UTC #: pybiklib/dialogs.py:44 msgid "Simple" msgstr "Yksinkertainen" #. labels are the colored stickers on the cube #: pybiklib/dialogs.py:46 msgid "Labels" msgstr "" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2015-04-09 08:40:37 UTC #: pybiklib/dialogs.py:104 data/ui/qt/main.ui.h:275 msgid "Select Puzzle" msgstr "Valitse pulma" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2015-04-22 14:56:48 UTC #. 1 slice, 2 slices, 3 slices, ... #: pybiklib/dialogs.py:134 pybiklib/dialogs.py:154 pybiklib/dialogs.py:180 #: pybiklib/dialogs.py:201 msgid "{} slice" msgid_plural "{} slices" msgstr[0] "{} siivu" msgstr[1] "{} siivua" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2017-09-18 06:28:14 UTC #: pybiklib/dialogs.py:196 pybiklib/dialogs.py:225 msgid "{}×{} slices" msgstr "{}×{} siivua" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2015-04-12 16:04:30 UTC #. The next strings form the text in the help dialog: #. Title of the 1st paragraph #: pybiklib/dialogs.py:290 msgid "Using the mouse to rotate the cube" msgstr "Hiiren käyttäminen kuution kääntämiseksi" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2015-04-22 14:56:16 UTC #. Text of the 1st paragraph, followed by bullet list items #: pybiklib/dialogs.py:292 msgid "" "Position the mouse cursor over the puzzle and you will see an arrow that " "gives you a hint in which direction the slice under the mouse cursor will be " "rotated." msgstr "" "Aseta hiiren kursori pulman päälle, jolloin näet kursorin muuttuvan " "nuoleksi. Nuolen suunta osoittaa, mihin suuntaan siivua käännetään." # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2015-04-12 15:52:38 UTC #: pybiklib/dialogs.py:294 msgid "" "The left mouse button rotates a single slice of the cube in the direction of " "the arrow." msgstr "" "Hiiren vasen näppäin kääntää kuution yksittäisen siivun nuolen osoittamaan " "suuntaan." # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2015-04-12 15:52:38 UTC #: pybiklib/dialogs.py:295 msgid "" "The right mouse button rotates a single slice of the cube against the " "direction of the arrow." msgstr "" "Hiiren oikea näppäin kääntää kuution yksittäisen siivun nuolen osoittamaan " "vastakkaiseen suuntaan." # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2015-04-12 15:52:38 UTC #: pybiklib/dialogs.py:296 msgid "" "To rotate the whole cube instead of a single slice press the Ctrl key " "together with the mouse button." msgstr "" "Kääntääksesi koko kuution yksittäisen siivun sijaan, pidä Ctrl pohjassa kun " "napsautat hiiren painiketta." # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2015-04-12 15:52:38 UTC #. Title of the 2nd paragraph #: pybiklib/dialogs.py:298 msgid "Using the keyboard to rotate the cube" msgstr "Näppäimistön käyttäminen kuution kääntämiseksi" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2015-04-22 14:56:16 UTC #. Text of the 2nd paragraph, followed by bullet list items #: pybiklib/dialogs.py:300 msgid "" "Make sure the keyboard focus is on the cube area (e.g. click on the " "background of the cube). The keys can be configured in the preferences " "dialog, the default is:" msgstr "" "Varmista, että näppäimistön kohdistus on kuutioalueella (voit esimerkiksi " "napsauttaa kuution taustaa). Näppäimiä voi muuttaa asetuksista, oletus on:" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2015-04-22 14:56:16 UTC #. before the item text is a list of keys #: pybiklib/dialogs.py:303 pybiklib/dialogs.py:318 msgid "Moves the left, right, upper, down, front or back slice clockwise." msgstr "" "Siirtää vasenta, oikeaa, ylhäällä, alhaalla, edessä tai takana olevaa siivua " "myötäpäivään." # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2015-04-12 15:37:10 UTC #: pybiklib/dialogs.py:304 pybiklib/dialogs.py:319 msgid "Moves a slice couterclockwise." msgstr "Siirtää siivua vastapäivään." # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2015-04-12 15:37:10 UTC #: pybiklib/dialogs.py:305 pybiklib/dialogs.py:320 msgid "Moves the whole cube." msgstr "Siirtää koko kuutiota." # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2015-04-12 15:52:38 UTC #. Title of the 3rd paragraph #: pybiklib/dialogs.py:307 msgid "Other keys and buttons" msgstr "Muut näppäimet ja painikkeet" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2015-04-12 15:52:38 UTC #. bullet list items of the 3rd paragraph #: pybiklib/dialogs.py:309 msgid "Mouse wheel – Zoom in/out" msgstr "Hiiren rulla – suurenna tai pienennä" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2015-04-12 15:52:38 UTC #: pybiklib/dialogs.py:310 msgid "" "Arrow keys, Left mouse button on the background – Changes the direction of " "looking at the cube." msgstr "" "Nuolinäppäimet ja hiiren vasen painike taustan päällä – muuttaa " "katselusuuntaa kuutiota kohti." #: pybiklib/dialogs.py:311 msgid "" "Moves keyboard focus to the sequence editor above the cube area where you " "can edit the move sequence in the notation described below. Hit enter when " "done." msgstr "" #. Title of the 4th paragraph #: pybiklib/dialogs.py:315 msgid "Notation for moves" msgstr "" #. Text of the 4th paragraph, followed by bullet list items #: pybiklib/dialogs.py:317 msgid "" "All moves, however they are made, are displayed progressively above the cube " "area:" msgstr "" #: pybiklib/dialogs.py:321 msgid "" "Moves the first, second or third slice from left clockwise. The allowed " "numbers are in the range from 1 to the count of parallel slices. \"l1\" is " "always the same as \"l\" and for the classic 3×3×3-Cube \"l2\" is the same " "as \"r2-\" and \"l3\" is the same as \"r-\"." msgstr "" #: pybiklib/dialogs.py:325 msgid "You can use a space to separate groups of moves." msgstr "" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2014-02-05 18:28:46 UTC #: pybiklib/dialogs.py:379 msgid "Pybik project website" msgstr "Pybikin verkkosivusto" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2015-04-12 15:55:54 UTC #: pybiklib/pluginlib.py:301 msgid "This plugin does not work for any model." msgstr "Tämä liitännäinen ei toimi kaikille malleille." # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2015-04-12 15:36:15 UTC #: pybiklib/pluginlib.py:303 pybiklib/pluginlib.py:306 msgid "This plugin only works for:" msgstr "Tämä liitännäinen toimii vain seuraaville:" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2015-04-10 09:07:11 UTC #: pybiklib/pluginlib.py:498 msgid "This puzzle is not solvable." msgstr "Tämä pulma ei ole ratkaistavissa." # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2014-02-21 19:24:48 UTC #. The following 6 words are for the antialiasing levels: disabled, ugly, low, medium, high, higher #: pybiklib/schema.py:211 msgid "disabled" msgstr "ei käytössä" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2014-02-21 19:25:52 UTC #: pybiklib/schema.py:211 msgid "ugly" msgstr "heikko" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2014-02-21 19:25:52 UTC #: pybiklib/schema.py:211 msgid "low" msgstr "matala" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2014-02-21 19:25:52 UTC #: pybiklib/schema.py:212 msgid "medium" msgstr "keskitaso" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2014-02-21 19:25:52 UTC #: pybiklib/schema.py:212 msgid "high" msgstr "korkea" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2014-02-21 19:25:52 UTC #: pybiklib/schema.py:212 msgid "higher" msgstr "paras" #: data/ui/qt/about.ui.h:212 msgid "About Pybik" msgstr "Tietoja - Pybik" #: data/ui/qt/about.ui.h:213 msgid "Translators:" msgstr "Kääntäjät:" #: data/ui/qt/about.ui.h:214 msgid "About" msgstr "Tietoja" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2017-09-18 06:21:58 UTC #: data/ui/qt/about.ui.h:215 msgid "Contribute" msgstr "Osallistu" #: data/ui/qt/about.ui.h:216 msgid "License" msgstr "Lisenssi" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2015-04-09 08:39:47 UTC #: data/ui/qt/help.ui.h:53 data/ui/qt/main.ui.h:297 msgid "Help" msgstr "Ohje" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2014-02-05 18:37:06 UTC #: data/ui/qt/main.ui.h:272 msgid "&New Challenge" msgstr "&Uusi haaste" #: data/ui/qt/main.ui.h:273 msgid "Ne&w Solved" msgstr "Uusi &ratkaistu" #: data/ui/qt/main.ui.h:274 msgid "&Quit" msgstr "&Lopeta" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2015-04-12 15:55:54 UTC #: data/ui/qt/main.ui.h:276 msgid "&Set as Initial State" msgstr "&Aseta alkutilaksi" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2015-04-12 15:55:54 UTC #: data/ui/qt/main.ui.h:277 msgid "&Reset Rotation" msgstr "&Palauta oletussuunta" #: data/ui/qt/main.ui.h:278 msgid "&Preferences …" msgstr "&Asetukset …" #: data/ui/qt/main.ui.h:279 msgid "&Status Bar" msgstr "Tilapal&kki" #: data/ui/qt/main.ui.h:280 msgid "&Info …" msgstr "Ti&etoja…" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2015-04-12 15:59:50 UTC #: data/ui/qt/main.ui.h:281 msgid "Rewind" msgstr "Kelaa takaisin" #: data/ui/qt/main.ui.h:282 msgid "Previous" msgstr "Edellinen" #: data/ui/qt/main.ui.h:283 msgid "Stop" msgstr "Pysäytä" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2015-04-12 15:59:50 UTC #: data/ui/qt/main.ui.h:284 msgid "Play" msgstr "Toista" #: data/ui/qt/main.ui.h:285 msgid "Next" msgstr "Seuraava" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2015-04-12 15:59:50 UTC #: data/ui/qt/main.ui.h:286 msgid "Forward" msgstr "Kelaa eteen" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2015-04-10 09:07:35 UTC #: data/ui/qt/main.ui.h:287 msgid "Add Mark" msgstr "Lisää merkki" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2015-04-12 16:06:51 UTC #: data/ui/qt/main.ui.h:289 msgid "Mark the current place in the sequence of moves" msgstr "Merkitse nykyinen sijainti siirtosarjassa" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2015-04-10 09:07:35 UTC #: data/ui/qt/main.ui.h:291 msgid "Remove Mark" msgstr "Poista merkki" #: data/ui/qt/main.ui.h:293 msgid "Remove the mark at the current place in the sequence of moves" msgstr "" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2015-04-10 09:03:33 UTC #: data/ui/qt/main.ui.h:295 msgid "&Edit Bar" msgstr "&Muokkauspalkki" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2015-04-09 08:40:37 UTC #: data/ui/qt/main.ui.h:296 msgid "&Help …" msgstr "&Ohje…" #: data/ui/qt/preferences.ui.h:372 msgid "Preferences" msgstr "Asetukset" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2015-04-10 09:02:57 UTC #: data/ui/qt/preferences.ui.h:373 msgid "Animation Speed:" msgstr "Animaationopeus:" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2015-04-10 09:05:18 UTC #: data/ui/qt/preferences.ui.h:375 msgid "Mirror Distance:" msgstr "Peilausetäisyys:" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2015-04-09 08:40:37 UTC #: data/ui/qt/preferences.ui.h:377 msgid "Quality:" msgstr "Laatu:" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2015-04-12 16:00:49 UTC #: data/ui/qt/preferences.ui.h:380 msgid "" "Lower antialiasing has better performance, higher antialiasing has better " "quality." msgstr "" "Pienempi reunanpehmennys tarjoaa paremman suorityskyvyn, suurempi paremman " "kuvanlaadun." # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2015-04-09 08:40:37 UTC #: data/ui/qt/preferences.ui.h:382 msgid "Antialiasing:" msgstr "Reunanpehmennys:" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2014-02-05 18:25:39 UTC #: data/ui/qt/preferences.ui.h:384 msgid "The program needs to be restarted for the changes to take effect." msgstr "" "Tämä sovellus tulee käynnistää uudelleen, jotta muutokset tulevat voimaan." # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2015-04-10 09:02:45 UTC #: data/ui/qt/preferences.ui.h:385 msgid "Graphic" msgstr "Grafiikka" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2017-09-18 06:29:45 UTC #: data/ui/qt/preferences.ui.h:386 msgid "Point and click, all directions" msgstr "Osoita ja napsauta, kaikki suunnat" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2017-09-18 06:29:45 UTC #: data/ui/qt/preferences.ui.h:387 msgid "Point and click, simplified" msgstr "Osoita ja napsauta, yksinkertaistettu" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2017-09-18 06:21:58 UTC #: data/ui/qt/preferences.ui.h:388 msgid "Gestures" msgstr "Eleet" #: data/ui/qt/preferences.ui.h:389 msgid "Mouse" msgstr "Hiiri" #: data/ui/qt/preferences.ui.h:391 data/ui/qt/preferences.ui.h:393 msgid "Add" msgstr "Lisää" #: data/ui/qt/preferences.ui.h:395 data/ui/qt/preferences.ui.h:397 msgid "Remove" msgstr "Poista" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2015-04-12 16:46:01 UTC #: data/ui/qt/preferences.ui.h:399 data/ui/qt/preferences.ui.h:401 msgid "Reset" msgstr "Palauta oletusasetus" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2015-04-10 09:03:08 UTC #: data/ui/qt/preferences.ui.h:402 msgid "Keys" msgstr "Näppäimet" #: data/ui/qt/preferences.ui.h:403 msgid "Color:" msgstr "Väri:" #: data/ui/qt/preferences.ui.h:405 msgid "Image File:" msgstr "Kuvatiedosto:" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2015-04-10 09:07:52 UTC #: data/ui/qt/preferences.ui.h:407 msgid "Tiled" msgstr "Kaakeloitu" #: data/ui/qt/preferences.ui.h:408 msgid "Mosaic" msgstr "Mosaiikki" #: data/ui/qt/preferences.ui.h:409 msgid "Background:" msgstr "Tausta:" #: data/ui/qt/preferences.ui.h:411 msgid "Appearance" msgstr "Ulkoasu" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2015-04-12 16:04:11 UTC #: pybiklib/ext/qt.py:1578 msgid "Move" msgstr "Siirto" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2015-04-10 09:05:50 UTC #: pybiklib/ext/qt.py:1581 msgid "Key" msgstr "Näppäin" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2014-02-05 18:27:50 UTC #: pybiklib/ext/qt.py:1682 msgid "Open Image" msgstr "Avaa kuva" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2015-04-12 16:41:35 UTC #: pybiklib/ext/qt.py:1720 msgid "plain" msgstr "puhdas" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2014-02-05 18:25:39 UTC #: pybiklib/ext/qt.py:1723 msgid "select …" msgstr "valitse…" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2014-02-05 18:25:39 UTC #: pybiklib/ext/qtui.py:94 msgid "Press a key …" msgstr "Paina näppäintä…" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2015-04-12 15:24:24 UTC #. Add whatever keywords you want in your language, separated by semicolons, last character must be a semicolon. These keywords are used when searching for applications in Unity, GNOME Shell, etc. #: data/app-meta/pybik.desktop.in:10 msgid "rubik;cube;puzzle;magic;" msgstr "rubik;cube;puzzle;magic;rubikin;kuutio;pulma;" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2014-02-05 18:37:06 UTC #: data/plugins/01-challenges.plugins.py:18 #: data/plugins/01-challenges.plugins.py:21 #: data/plugins/01-challenges.plugins.py:24 #: data/plugins/01-challenges.plugins.py:27 #: data/plugins/01-challenges.plugins.py:30 #: data/plugins/01-challenges.plugins.py:33 #: data/plugins/01-challenges.plugins.py:36 #: data/plugins/01-challenges.plugins.py:39 #: data/plugins/01-challenges.plugins.py:42 #: data/plugins/01-challenges.plugins.py:45 #: data/plugins/01-challenges.plugins.py:48 msgid "Challenges" msgstr "Haasteet" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2015-07-21 15:12:46 UTC #: data/plugins/01-challenges.plugins.py:19 msgid "Solve random puzzle" msgstr "Ratkaise satunnainen pulma" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2015-04-12 15:35:20 UTC #: data/plugins/01-challenges.plugins.py:22 #: data/plugins/01-challenges.plugins.py:25 #: data/plugins/01-challenges.plugins.py:28 #: data/plugins/01-challenges.plugins.py:31 #: data/plugins/01-challenges.plugins.py:34 #: data/plugins/01-challenges.plugins.py:37 #: data/plugins/01-challenges.plugins.py:40 #: data/plugins/01-challenges.plugins.py:43 #: data/plugins/01-challenges.plugins.py:46 #: data/plugins/01-challenges.plugins.py:49 msgid "Solve in {} move" msgid_plural "Solve in {} moves" msgstr[0] "Ratkaise {} siirrolla" msgstr[1] "Ratkaise {} siirrolla" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2014-02-05 18:42:52 UTC #: data/plugins/10-beginners.plugins.py:31 #: data/plugins/10-beginners.plugins.py:34 #: data/plugins/10-beginners.plugins.py:56 #: data/plugins/10-beginners.plugins.py:73 #: data/plugins/10-beginners.plugins.py:100 #: data/plugins/10-beginners.plugins.py:118 #: data/plugins/10-beginners.plugins.py:140 #: data/plugins/10-beginners.plugins.py:158 #: data/plugins/14-leyan-lo.plugins.py:21 #: data/plugins/14-leyan-lo.plugins.py:24 #: data/plugins/14-leyan-lo.plugins.py:53 #: data/plugins/14-leyan-lo.plugins.py:74 #: data/plugins/14-leyan-lo.plugins.py:90 #: data/plugins/14-leyan-lo.plugins.py:107 #: data/plugins/14-leyan-lo.plugins.py:129 #: data/plugins/14-leyan-lo.plugins.py:170 #: data/plugins/150-spiegel.plugins.py:32 #: data/plugins/150-spiegel.plugins.py:35 #: data/plugins/150-spiegel.plugins.py:64 #: data/plugins/150-spiegel.plugins.py:85 #: data/plugins/150-spiegel.plugins.py:100 #: data/plugins/150-spiegel.plugins.py:113 #: data/plugins/150-spiegel.plugins.py:130 #: data/plugins/150-spiegel.plugins.py:141 #: data/plugins/151-spiegel-improved.plugins.py:20 #: data/plugins/151-spiegel-improved.plugins.py:23 #: data/plugins/151-spiegel-improved.plugins.py:68 #: data/plugins/151-spiegel-improved.plugins.py:107 #: data/plugins/151-spiegel-improved.plugins.py:139 #: data/plugins/151-spiegel-improved.plugins.py:165 #: data/plugins/151-spiegel-improved.plugins.py:183 #: data/plugins/151-spiegel-improved.plugins.py:197 #: data/plugins/20-2x2x2.plugins.py:18 data/plugins/20-2x2x2.plugins.py:21 #: data/plugins/20-2x2x2.plugins.py:37 data/plugins/20-2x2x2.plugins.py:55 msgid "Solvers" msgstr "Ratkaisijat" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2015-04-12 15:35:20 UTC #: data/plugins/10-beginners.plugins.py:32 #: data/plugins/10-beginners.plugins.py:35 #: data/plugins/10-beginners.plugins.py:57 #: data/plugins/10-beginners.plugins.py:74 #: data/plugins/10-beginners.plugins.py:101 #: data/plugins/10-beginners.plugins.py:119 #: data/plugins/10-beginners.plugins.py:141 #: data/plugins/10-beginners.plugins.py:159 msgid "Beginner's method" msgstr "Aloittelijan tapa" #: data/plugins/10-beginners.plugins.py:36 #: data/plugins/14-leyan-lo.plugins.py:26 #: data/plugins/150-spiegel.plugins.py:37 #: data/plugins/151-spiegel-improved.plugins.py:25 msgid "Top edges" msgstr "" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2017-09-18 06:21:58 UTC #: data/plugins/10-beginners.plugins.py:58 #: data/plugins/14-leyan-lo.plugins.py:55 #: data/plugins/150-spiegel.plugins.py:66 #: data/plugins/151-spiegel-improved.plugins.py:70 msgid "Top corners" msgstr "Yläkulmat" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2015-04-22 14:56:48 UTC #: data/plugins/10-beginners.plugins.py:75 #: data/plugins/14-leyan-lo.plugins.py:76 #: data/plugins/150-spiegel.plugins.py:87 #: data/plugins/151-spiegel-improved.plugins.py:109 msgid "Middle slice" msgstr "Keskimmäinen siivu" #: data/plugins/10-beginners.plugins.py:102 #: data/plugins/14-leyan-lo.plugins.py:92 #: data/plugins/150-spiegel.plugins.py:115 #: data/plugins/151-spiegel-improved.plugins.py:167 msgid "Bottom edge orient" msgstr "" #: data/plugins/10-beginners.plugins.py:120 #: data/plugins/14-leyan-lo.plugins.py:131 #: data/plugins/150-spiegel.plugins.py:143 #: data/plugins/151-spiegel-improved.plugins.py:199 #: data/plugins/20-2x2x2.plugins.py:57 msgid "Bottom corner orient" msgstr "" #: data/plugins/10-beginners.plugins.py:142 #: data/plugins/14-leyan-lo.plugins.py:109 #: data/plugins/150-spiegel.plugins.py:132 #: data/plugins/151-spiegel-improved.plugins.py:185 #: data/plugins/20-2x2x2.plugins.py:39 msgid "Bottom corner place" msgstr "" #: data/plugins/10-beginners.plugins.py:160 #: data/plugins/14-leyan-lo.plugins.py:172 #: data/plugins/150-spiegel.plugins.py:102 #: data/plugins/151-spiegel-improved.plugins.py:141 msgid "Bottom edge place" msgstr "" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2015-04-09 08:41:05 UTC #. Leyan Lo is the inventor of the solution #: data/plugins/14-leyan-lo.plugins.py:23 #: data/plugins/14-leyan-lo.plugins.py:25 #: data/plugins/14-leyan-lo.plugins.py:54 #: data/plugins/14-leyan-lo.plugins.py:75 #: data/plugins/14-leyan-lo.plugins.py:91 #: data/plugins/14-leyan-lo.plugins.py:108 #: data/plugins/14-leyan-lo.plugins.py:130 #: data/plugins/14-leyan-lo.plugins.py:171 msgid "Leyan Lo" msgstr "Leyan Lo" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2015-04-09 08:41:05 UTC #. Spiegel is a german magazine #: data/plugins/150-spiegel.plugins.py:34 #: data/plugins/150-spiegel.plugins.py:36 #: data/plugins/150-spiegel.plugins.py:65 #: data/plugins/150-spiegel.plugins.py:86 #: data/plugins/150-spiegel.plugins.py:101 #: data/plugins/150-spiegel.plugins.py:114 #: data/plugins/150-spiegel.plugins.py:131 #: data/plugins/150-spiegel.plugins.py:142 msgid "Spiegel" msgstr "Spiegel" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2015-04-12 15:34:11 UTC #. Spiegel is a german magazine #: data/plugins/151-spiegel-improved.plugins.py:22 #: data/plugins/151-spiegel-improved.plugins.py:24 #: data/plugins/151-spiegel-improved.plugins.py:69 #: data/plugins/151-spiegel-improved.plugins.py:108 #: data/plugins/151-spiegel-improved.plugins.py:140 #: data/plugins/151-spiegel-improved.plugins.py:166 #: data/plugins/151-spiegel-improved.plugins.py:184 #: data/plugins/151-spiegel-improved.plugins.py:198 msgid "Spiegel improved" msgstr "Spiegel, paranneltu" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2014-02-05 18:38:12 UTC #: data/plugins/20-2x2x2.plugins.py:19 data/plugins/20-2x2x2.plugins.py:22 #: data/plugins/20-2x2x2.plugins.py:38 data/plugins/20-2x2x2.plugins.py:56 msgid "2×2×2" msgstr "2×2×2" #: data/plugins/20-2x2x2.plugins.py:23 msgid "Top slice" msgstr "" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2014-02-05 18:38:12 UTC #: data/plugins/80-pretty-patterns.plugins.py:20 #: data/plugins/80-pretty-patterns.plugins.py:23 #: data/plugins/80-pretty-patterns.plugins.py:27 #: data/plugins/80-pretty-patterns.plugins.py:31 #: data/plugins/80-pretty-patterns.plugins.py:35 #: data/plugins/80-pretty-patterns.plugins.py:40 #: data/plugins/80-pretty-patterns.plugins.py:44 msgid "Stripes" msgstr "Raidat" #: data/plugins/80-pretty-patterns.plugins.py:49 #: data/plugins/80-pretty-patterns.plugins.py:53 msgid "Criss-Cross" msgstr "" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2015-04-12 15:34:11 UTC #: data/plugins/80-pretty-patterns.plugins.py:57 msgid "Fried Eggs" msgstr "Paistetut munat" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2015-04-12 15:34:11 UTC #: data/plugins/80-pretty-patterns.plugins.py:61 msgid "Big Fried Eggs" msgstr "Isot paistetut munat" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2015-04-12 15:34:11 UTC #: data/plugins/80-pretty-patterns.plugins.py:65 #: data/plugins/80-pretty-patterns.plugins.py:69 msgid "4 Fried Eggs" msgstr "Neljä paistettua munaa" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2015-04-12 15:34:11 UTC #: data/plugins/80-pretty-patterns.plugins.py:73 msgid "2 Fried Eggs" msgstr "Kaksi paistettua munaa" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2014-02-05 18:39:12 UTC #: data/plugins/80-pretty-patterns.plugins.py:77 msgid "Chessboard" msgstr "Shakkilauta" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2015-04-12 15:30:33 UTC #: data/plugins/80-pretty-patterns.plugins.py:83 msgid "Cross" msgstr "Risti" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2015-04-12 15:30:33 UTC #: data/plugins/80-pretty-patterns.plugins.py:87 msgid "Zig Zag" msgstr "Siksak" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2015-04-12 15:30:33 UTC #. T is the shape formed by the cube labels. T-Time is a pun (Tea Time) and not suitable for literal translation. Don't translate it or use something common or whatever you think makes sense. #: data/plugins/80-pretty-patterns.plugins.py:93 #: data/plugins/80-pretty-patterns.plugins.py:96 #: data/plugins/80-pretty-patterns.plugins.py:100 #: data/plugins/80-pretty-patterns.plugins.py:104 #: data/plugins/80-pretty-patterns.plugins.py:108 #: data/plugins/80-pretty-patterns.plugins.py:112 msgid "T-Time" msgstr "T-aika" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2014-02-05 18:39:12 UTC #. C is the shape formed by the cube labels #: data/plugins/80-pretty-patterns.plugins.py:118 msgid "C" msgstr "C" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2014-02-05 18:43:21 UTC #: data/plugins/80-pretty-patterns.plugins.py:121 msgid "Cube in a Cube" msgstr "Kuutio kuutiossa" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2015-04-12 15:30:33 UTC #: data/plugins/80-pretty-patterns.plugins.py:125 msgid "Striped Cube in a Cube" msgstr "Raidallinen kuutio kuutiossa" #: data/plugins/80-pretty-patterns.plugins.py:129 msgid "Six square cuboids" msgstr "" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2015-04-12 15:30:33 UTC #. Superflip may be not translated, because it has a special meaning in the mathematical theory behind the Rubik's Cube. #: data/plugins/80-pretty-patterns.plugins.py:135 msgid "Superflip" msgstr "Superflip" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2015-04-12 15:30:33 UTC #: data/plugins/80-pretty-patterns.plugins.py:138 msgid "Superflip easy" msgstr "Superflip, helppo" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2015-04-12 15:30:33 UTC #: data/plugins/80-pretty-patterns.plugins.py:142 msgid "Green Mamba" msgstr "Vihermamba" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2015-04-12 16:47:38 UTC #: data/plugins/80-pretty-patterns.plugins.py:146 msgid "Anaconda" msgstr "Anakonda" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2015-04-12 16:07:35 UTC #: data/plugins/80-pretty-patterns.plugins.py:150 msgid "Duck Feet" msgstr "Ankkajalat" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2015-04-09 08:41:31 UTC #: data/plugins/80-pretty-patterns.plugins.py:154 #: data/plugins/80-pretty-patterns.plugins.py:158 #: data/plugins/80-pretty-patterns.plugins.py:162 #: data/plugins/80-pretty-patterns.plugins.py:166 #: data/plugins/80-pretty-patterns.plugins.py:170 #: data/plugins/80-pretty-patterns.plugins.py:174 #: data/plugins/80-pretty-patterns.plugins.py:178 #: data/plugins/80-pretty-patterns.plugins.py:182 msgid "Plus" msgstr "Plus" #: data/plugins/80-pretty-patterns.plugins.py:186 #: data/plugins/80-pretty-patterns.plugins.py:191 #: data/plugins/80-pretty-patterns.plugins.py:196 #: data/plugins/80-pretty-patterns.plugins.py:200 msgid "Minus" msgstr "" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2015-04-12 16:07:35 UTC #: data/plugins/80-pretty-patterns.plugins.py:204 msgid "Volcano" msgstr "Tulivuori" #: data/plugins/80-pretty-patterns.plugins.py:208 msgid "Checkerboard (easy)" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:212 msgid "Checkerboard (fast)" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:216 msgid "Mixed Checkerboard" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:220 msgid "Tipi" msgstr "" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2014-02-05 18:39:28 UTC #: data/plugins/90-library.plugins.py:18 data/plugins/90-library.plugins.py:22 #: data/plugins/90-library.plugins.py:26 data/plugins/90-library.plugins.py:30 #: data/plugins/90-library.plugins.py:34 data/plugins/90-library.plugins.py:38 #: data/plugins/90-library.plugins.py:42 data/plugins/90-library.plugins.py:46 #: data/plugins/90-library.plugins.py:50 data/plugins/90-library.plugins.py:54 #: data/plugins/90-library.plugins.py:58 data/plugins/90-library.plugins.py:62 #: data/plugins/90-library.plugins.py:66 data/plugins/90-library.plugins.py:70 #: data/plugins/90-library.plugins.py:74 data/plugins/90-library.plugins.py:78 #: data/plugins/90-library.plugins.py:82 data/plugins/90-library.plugins.py:86 #: data/plugins/90-library.plugins.py:91 data/plugins/90-library.plugins.py:96 #: data/plugins/90-library.plugins.py:101 #: data/plugins/90-library.plugins.py:105 #: data/plugins/90-library.plugins.py:110 #: data/plugins/90-library.plugins.py:115 #: data/plugins/90-library.plugins.py:119 #: data/plugins/90-library.plugins.py:123 #: data/plugins/90-library.plugins.py:127 msgid "Library" msgstr "Kirjasto" #: data/plugins/90-library.plugins.py:19 data/plugins/90-library.plugins.py:23 #: data/plugins/90-library.plugins.py:27 data/plugins/90-library.plugins.py:31 #: data/plugins/90-library.plugins.py:35 msgid "Swap edges" msgstr "" #: data/plugins/90-library.plugins.py:20 msgid "3 edges ⟳, top layer" msgstr "" #: data/plugins/90-library.plugins.py:24 msgid "3 edges ⟲, top layer" msgstr "" #: data/plugins/90-library.plugins.py:28 msgid "3 edges, middle layer" msgstr "" #: data/plugins/90-library.plugins.py:32 msgid "4 edges, front and right" msgstr "" #: data/plugins/90-library.plugins.py:36 msgid "4 edges, front and back" msgstr "" #: data/plugins/90-library.plugins.py:39 msgid "Swap 2 edges and 2 corners, top layer" msgstr "" #: data/plugins/90-library.plugins.py:43 data/plugins/90-library.plugins.py:47 msgid "Flip edges" msgstr "" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2017-09-18 06:32:32 UTC #: data/plugins/90-library.plugins.py:44 msgid "4 edges" msgstr "4 reunaa" #: data/plugins/90-library.plugins.py:48 msgid "2 edges, top layer" msgstr "" #: data/plugins/90-library.plugins.py:51 data/plugins/90-library.plugins.py:55 #: data/plugins/90-library.plugins.py:59 data/plugins/90-library.plugins.py:63 #: data/plugins/90-library.plugins.py:67 data/plugins/90-library.plugins.py:71 msgid "Swap corners" msgstr "" #: data/plugins/90-library.plugins.py:52 data/plugins/90-library.plugins.py:76 msgid "2 corners, top layer" msgstr "" #: data/plugins/90-library.plugins.py:56 msgid "2 corners diagonal, top layer" msgstr "" #: data/plugins/90-library.plugins.py:60 data/plugins/90-library.plugins.py:80 msgid "3 corners ⟳, top layer" msgstr "" #: data/plugins/90-library.plugins.py:64 msgid "3 corners ⟲, top layer" msgstr "" #: data/plugins/90-library.plugins.py:68 msgid "4 corners, top layer" msgstr "" #: data/plugins/90-library.plugins.py:72 msgid "2 corners, partial sequence, top layer" msgstr "" #: data/plugins/90-library.plugins.py:75 data/plugins/90-library.plugins.py:79 #: data/plugins/90-library.plugins.py:83 data/plugins/90-library.plugins.py:87 msgid "Rotate corners" msgstr "" #: data/plugins/90-library.plugins.py:84 msgid "1 corner ⟳, partial sequence, top layer" msgstr "" #: data/plugins/90-library.plugins.py:88 msgid "1 corner ⟲, partial sequence, top layer" msgstr "" #: data/plugins/90-library.plugins.py:92 data/plugins/90-library.plugins.py:97 #: data/plugins/90-library.plugins.py:102 #: data/plugins/90-library.plugins.py:111 msgid "Rotate center" msgstr "" #. 2 rotations of the center face in the upper layer #: data/plugins/90-library.plugins.py:94 msgid "2×Up" msgstr "" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2015-04-12 16:03:22 UTC #. Up clockwise and front clockwise #: data/plugins/90-library.plugins.py:99 msgid "Up ⟳ and front ⟳" msgstr "Ylös ⟳ ja eteen ⟳" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2015-04-12 16:03:22 UTC #. Up clockwise and front counterclockwise #: data/plugins/90-library.plugins.py:104 msgid "Up ⟳ and front ⟲" msgstr "Ylös ⟳ ja eteen ⟲" #: data/plugins/90-library.plugins.py:106 msgid "Swap center parts, up and front" msgstr "" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2015-04-12 15:26:10 UTC #. Up clockwise and down counterclockwise #: data/plugins/90-library.plugins.py:113 msgid "Up ⟳ and down ⟲" msgstr "Ylös ⟳ ja alas ⟲" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2015-04-12 15:26:58 UTC #: data/plugins/90-library.plugins.py:116 #: data/plugins/90-library.plugins.py:120 #: data/plugins/90-library.plugins.py:124 #: data/plugins/90-library.plugins.py:128 msgid "Misc" msgstr "Muut" #. Yields in a rotated back layer, but the sequence of moves does not touch the back layer #: data/plugins/90-library.plugins.py:118 #: data/plugins/90-library.plugins.py:125 #: data/plugins/90-library.plugins.py:129 msgid "Back without back" msgstr "" #: data/plugins/90-library.plugins.py:121 msgid "2×Back without back" msgstr "" #: data/plugins/95-transformations.plugins.py:18 #: data/plugins/95-transformations.plugins.py:21 #: data/plugins/95-transformations.plugins.py:24 msgid "Move transformations" msgstr "" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2015-04-12 15:26:10 UTC #: data/plugins/95-transformations.plugins.py:19 msgid "Invert move sequence" msgstr "Käänteinen siirtosarja" #: data/plugins/95-transformations.plugins.py:22 msgid "Normalize cube rotations" msgstr "" #: data/plugins/95-transformations.plugins.py:25 msgid "Normalize move sequence" msgstr "" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2015-04-12 15:40:13 UTC #: buildlib/modeldef.py:110 msgid "Brick" msgstr "Tiili" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2015-04-12 15:40:13 UTC #: buildlib/modeldef.py:111 #, python-brace-format msgid "{0}×{1}×{2}-Brick" msgstr "{0}×{1}×{2}-tiili" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2014-02-05 18:27:50 UTC #: buildlib/modeldef.py:112 msgid "Width:" msgstr "Leveys:" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2014-02-05 18:33:54 UTC #: buildlib/modeldef.py:112 buildlib/modeldef.py:151 buildlib/modeldef.py:249 #: buildlib/modeldef.py:300 buildlib/modeldef.py:311 msgid "Height:" msgstr "Korkeus:" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2015-04-10 09:04:01 UTC #: buildlib/modeldef.py:112 msgid "Depth:" msgstr "Syvyys:" #: buildlib/modeldef.py:120 buildlib/modeldef.py:257 buildlib/modeldef.py:319 #: buildlib/modeldef.py:374 buildlib/modeldef.py:433 msgid "up" msgstr "" #: buildlib/modeldef.py:120 buildlib/modeldef.py:205 buildlib/modeldef.py:257 #: buildlib/modeldef.py:319 buildlib/modeldef.py:373 buildlib/modeldef.py:430 msgid "down" msgstr "" #: buildlib/modeldef.py:120 buildlib/modeldef.py:205 buildlib/modeldef.py:257 msgid "left" msgstr "" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2014-02-05 18:27:50 UTC #: buildlib/modeldef.py:120 buildlib/modeldef.py:205 buildlib/modeldef.py:257 msgid "right" msgstr "" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2015-04-12 16:44:21 UTC #: buildlib/modeldef.py:120 buildlib/modeldef.py:374 msgid "front" msgstr "" #: buildlib/modeldef.py:120 buildlib/modeldef.py:205 buildlib/modeldef.py:257 #: buildlib/modeldef.py:320 buildlib/modeldef.py:373 msgid "back" msgstr "" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2014-02-05 18:28:46 UTC #: buildlib/modeldef.py:149 msgid "Tower" msgstr "Torni" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2015-04-12 15:25:28 UTC #: buildlib/modeldef.py:150 #, python-brace-format msgid "{0}×{1}-Tower" msgstr "{0}×{1}-torni" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2015-04-12 15:38:35 UTC #: buildlib/modeldef.py:151 buildlib/modeldef.py:249 buildlib/modeldef.py:300 #: buildlib/modeldef.py:311 msgid "Basis:" msgstr "Perusta:" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2014-02-05 18:28:46 UTC #: buildlib/modeldef.py:163 msgid "Cube" msgstr "Kuutio" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2014-02-05 18:28:46 UTC #: buildlib/modeldef.py:164 #, python-brace-format msgid "{0}×{0}×{0}-Cube" msgstr "{0}×{0}×{0}-kuutio" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2014-02-05 18:27:50 UTC #: buildlib/modeldef.py:165 buildlib/modeldef.py:197 buildlib/modeldef.py:365 #: buildlib/modeldef.py:422 msgid "Size:" msgstr "Koko:" #: buildlib/modeldef.py:177 buildlib/modeldef.py:178 msgid "Void Cube" msgstr "" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2015-04-12 15:25:28 UTC #: buildlib/modeldef.py:195 msgid "Tetrahedron" msgstr "Tetraedri" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2015-04-12 15:25:28 UTC #: buildlib/modeldef.py:196 #, python-brace-format msgid "{0}-Tetrahedron" msgstr "{0}-tetraedri" #: buildlib/modeldef.py:247 msgid "Triangular Prism" msgstr "" #: buildlib/modeldef.py:248 #, python-brace-format msgid "{0}×{1} Triangular Prism" msgstr "" #: buildlib/modeldef.py:298 msgid "Triangular Prism (complex)" msgstr "" #: buildlib/modeldef.py:299 #, python-brace-format msgid "{0}×{1} Triangular Prism (complex)" msgstr "" #: buildlib/modeldef.py:309 msgid "Pentagonal Prism" msgstr "" #: buildlib/modeldef.py:310 #, python-brace-format msgid "{0}×{1} Pentagonal Prism" msgstr "" #: buildlib/modeldef.py:320 buildlib/modeldef.py:373 msgid "front-right" msgstr "" #: buildlib/modeldef.py:320 buildlib/modeldef.py:374 msgid "back-right" msgstr "" #: buildlib/modeldef.py:320 buildlib/modeldef.py:374 msgid "back-left" msgstr "" #: buildlib/modeldef.py:320 buildlib/modeldef.py:373 msgid "front-left" msgstr "" #: buildlib/modeldef.py:354 msgid "Pentagonal Prism (stretched)" msgstr "" #: buildlib/modeldef.py:355 #, python-brace-format msgid "{0}×{1} Pentagonal Prism (stretched)" msgstr "" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2015-04-12 15:25:28 UTC #: buildlib/modeldef.py:363 msgid "Octahedron" msgstr "Oktaedri" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2015-04-12 15:25:28 UTC #: buildlib/modeldef.py:364 #, python-brace-format msgid "{0}-Octahedron" msgstr "{0}-Oktaedri" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2015-04-12 15:25:28 UTC #: buildlib/modeldef.py:420 msgid "Dodecahedron" msgstr "Dodekaedri" # translated by: Jiri Grönroos https://launchpad.net/~jiri-gronroos on 2015-04-12 15:25:28 UTC #: buildlib/modeldef.py:421 #, python-brace-format msgid "{0}-Dodecahedron" msgstr "{0}-Dodekaedri" #: buildlib/modeldef.py:430 msgid "down-back-right" msgstr "" #: buildlib/modeldef.py:430 msgid "down-front-right" msgstr "" #: buildlib/modeldef.py:431 msgid "down-front" msgstr "" #: buildlib/modeldef.py:431 msgid "down-front-left" msgstr "" #: buildlib/modeldef.py:431 msgid "down-back-left" msgstr "" #: buildlib/modeldef.py:432 msgid "up-back" msgstr "" #: buildlib/modeldef.py:432 msgid "up-back-right" msgstr "" #: buildlib/modeldef.py:432 msgid "up-front-right" msgstr "" #: buildlib/modeldef.py:433 msgid "up-front-left" msgstr "" #: buildlib/modeldef.py:433 msgid "up-back-left" msgstr "" pybik-3.0/po/en_GB.po0000644000175000017500000016747513173052130014607 0ustar barccbarcc00000000000000# English (United Kingdom) translation for pybik # Copyright (c) 2011-2017 Rosetta Contributors # This file is distributed under the same license as the pybik package. # B. Clausius , 2009. # msgid "" msgstr "" "Project-Id-Version: pybik\n" "Report-Msgid-Bugs-To: https://bugs.launchpad.net/pybik/+filebug\n" "POT-Creation-Date: 2017-09-10 21:58+0200\n" "PO-Revision-Date: 2017-09-25 14:13+0000\n" "Last-Translator: Anthony Harrington \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Launchpad-Export-Date: 2017-09-26 05:11+0000\n" "X-Generator: Launchpad (build 18463)\n" "Language: \n" # translated by: Andi Chandler https://launchpad.net/~bing on 2013-01-15 18:45:20 UTC #: pybiklib/application.py:294 msgid "Press the Esc key to exit Edit Mode" msgstr "Press the Esc key to exit Edit Mode" # translated by: Andi Chandler https://launchpad.net/~bing on 2013-01-15 18:45:20 UTC #. substitution for {move_text} in statusbar text #: pybiklib/application.py:302 #, python-brace-format msgid "{current} / {total} move" msgid_plural "{current} / {total} moves" msgstr[0] "{current} / {total} move" msgstr[1] "{current} / {total} moves" # translated by: Andi Chandler https://launchpad.net/~bing on 2013-01-15 18:45:20 UTC #. substitution for {solved_text} in statusbar text #: pybiklib/application.py:306 msgid "solved" msgstr "solved" # translated by: Andi Chandler https://launchpad.net/~bing on 2013-01-15 18:45:20 UTC #: pybiklib/application.py:306 msgid "not solved" msgstr "not solved" # translated by: Andi Chandler https://launchpad.net/~bing on 2013-01-15 18:45:20 UTC #. statusbar text #: pybiklib/application.py:309 #, python-brace-format msgid "{move_text}, {solved_text}" msgstr "{move_text}, {solved_text}" # translated by: Andi Chandler https://launchpad.net/~bing on 2013-01-15 18:45:20 UTC #: pybiklib/application.py:314 msgid "Congratulations, you have solved the puzzle!" msgstr "Congratulations, you have solved the puzzle!" # translated by: Andi Chandler https://launchpad.net/~bing on 2013-01-15 18:45:20 UTC #. Name of the application, probably should not be translated. #: pybiklib/config.py:35 data/ui/qt/main.ui.h:271 #: data/app-meta/pybik.desktop.in:3 msgid "Pybik" msgstr "Pybik" # translated by: Andi Chandler https://launchpad.net/~bing on 2015-04-10 12:41:51 UTC #. short description #: pybiklib/config.py:65 data/app-meta/pybik.desktop.in:4 msgid "Rubik's cube game" msgstr "Rubik's cube game" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-07-20 18:06:33 UTC #. The next 7 lines belong together and form the long description #: pybiklib/config.py:68 msgid "Pybik is a 3D puzzle game about the cube invented by Ernő Rubik." msgstr "Pybik is a 3D puzzle game about the cube invented by Ernő Rubik." # translated by: Andi Chandler https://launchpad.net/~bing on 2017-09-23 21:33:23 UTC #: pybiklib/config.py:70 msgid "" "Various 3D puzzles, such as cubes, towers, prisms, tetrahedra, octahedra, " "dodecahedra and many more" msgstr "" "Various 3D puzzles, such as cubes, towers, prisms, tetrahedra, octahedra, " "dodecahedra and many more" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-07-20 18:06:33 UTC #: pybiklib/config.py:71 msgid "Solvers for some puzzles" msgstr "Solvers for some puzzles" # translated by: Anthony Harrington https://launchpad.net/~untaintableangel on 2013-06-01 23:29:03 UTC #. Use something that is common in the Rubik scene in your language, sometimes it's just the equivalent of "patterns". #: pybiklib/config.py:72 data/plugins/80-pretty-patterns.plugins.py:19 #: data/plugins/80-pretty-patterns.plugins.py:22 #: data/plugins/80-pretty-patterns.plugins.py:26 #: data/plugins/80-pretty-patterns.plugins.py:30 #: data/plugins/80-pretty-patterns.plugins.py:34 #: data/plugins/80-pretty-patterns.plugins.py:39 #: data/plugins/80-pretty-patterns.plugins.py:43 #: data/plugins/80-pretty-patterns.plugins.py:48 #: data/plugins/80-pretty-patterns.plugins.py:52 #: data/plugins/80-pretty-patterns.plugins.py:56 #: data/plugins/80-pretty-patterns.plugins.py:60 #: data/plugins/80-pretty-patterns.plugins.py:64 #: data/plugins/80-pretty-patterns.plugins.py:68 #: data/plugins/80-pretty-patterns.plugins.py:72 #: data/plugins/80-pretty-patterns.plugins.py:76 #: data/plugins/80-pretty-patterns.plugins.py:82 #: data/plugins/80-pretty-patterns.plugins.py:86 #: data/plugins/80-pretty-patterns.plugins.py:91 #: data/plugins/80-pretty-patterns.plugins.py:95 #: data/plugins/80-pretty-patterns.plugins.py:99 #: data/plugins/80-pretty-patterns.plugins.py:103 #: data/plugins/80-pretty-patterns.plugins.py:107 #: data/plugins/80-pretty-patterns.plugins.py:111 #: data/plugins/80-pretty-patterns.plugins.py:116 #: data/plugins/80-pretty-patterns.plugins.py:120 #: data/plugins/80-pretty-patterns.plugins.py:124 #: data/plugins/80-pretty-patterns.plugins.py:128 #: data/plugins/80-pretty-patterns.plugins.py:133 #: data/plugins/80-pretty-patterns.plugins.py:137 #: data/plugins/80-pretty-patterns.plugins.py:141 #: data/plugins/80-pretty-patterns.plugins.py:145 #: data/plugins/80-pretty-patterns.plugins.py:149 #: data/plugins/80-pretty-patterns.plugins.py:153 #: data/plugins/80-pretty-patterns.plugins.py:157 #: data/plugins/80-pretty-patterns.plugins.py:161 #: data/plugins/80-pretty-patterns.plugins.py:165 #: data/plugins/80-pretty-patterns.plugins.py:169 #: data/plugins/80-pretty-patterns.plugins.py:173 #: data/plugins/80-pretty-patterns.plugins.py:177 #: data/plugins/80-pretty-patterns.plugins.py:181 #: data/plugins/80-pretty-patterns.plugins.py:185 #: data/plugins/80-pretty-patterns.plugins.py:190 #: data/plugins/80-pretty-patterns.plugins.py:195 #: data/plugins/80-pretty-patterns.plugins.py:199 #: data/plugins/80-pretty-patterns.plugins.py:203 #: data/plugins/80-pretty-patterns.plugins.py:207 #: data/plugins/80-pretty-patterns.plugins.py:211 #: data/plugins/80-pretty-patterns.plugins.py:215 #: data/plugins/80-pretty-patterns.plugins.py:219 msgid "Pretty patterns" msgstr "Pretty patterns" # translated by: B. Clausius https://launchpad.net/~barcc on 2015-07-20 18:06:33 UTC #: pybiklib/config.py:73 msgid "Editor for move sequences" msgstr "Editor for move sequences" # translated by: Andi Chandler https://launchpad.net/~bing on 2017-09-23 21:33:23 UTC #: pybiklib/config.py:74 msgid "Custom colors and images on the surface of the puzzles" msgstr "Custom colours and images on the surface of the puzzles" # translated by: Anthony Harrington https://launchpad.net/~untaintableangel on 2013-01-08 13:25:49 UTC #: pybiklib/config.py:78 msgid "" "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.\n" "\n" "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." msgstr "" "This program is free software: you can redistribute it and/or modify it " "under the terms of the GNU General Public Licence as published by the Free " "Software Foundation, either version 3 of the Licence, or (at your option) " "any later version.\n" "\n" "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 Licence for " "more details." # translated by: Anthony Harrington https://launchpad.net/~untaintableangel on 2013-01-08 13:25:49 UTC #. Text between "<" and ">" is expanded to a link by the program and should not be modified. #. Text between "" and "<|>" is the translatable text for the link. #: pybiklib/config.py:90 msgid "" "Read the full text of the GNU General Public " "License<|> or see ." msgstr "" "Read the full text of the GNU General Public " "Licence<|> or see ." # translated by: B. Clausius https://launchpad.net/~barcc on 2013-05-31 19:41:52 UTC #: pybiklib/config.py:93 msgid "" "You should have received a copy of the GNU General Public License along with " "this program. If not, see ." msgstr "" "You should have received a copy of the GNU General Public Licence along with " "this program. If not, see ." # translated by: Anthony Harrington https://launchpad.net/~untaintableangel on 2013-01-08 13:27:16 UTC #: pybiklib/config.py:98 #, python-brace-format msgid "" "If you find any bugs in Pybik or have a suggestion for an improvement then " "please submit a <{CONTACT_FILEBUG}|>bug report<|>." msgstr "" "If you find any bugs in Pybik or have a suggestion for an improvement then " "please submit a <{CONTACT_FILEBUG}|>bug report<|>." # translated by: Anthony Harrington https://launchpad.net/~untaintableangel on 2017-09-25 14:13:36 UTC #: pybiklib/config.py:103 msgid "" "Translations are managed by the " "Launchpad " "translation group<|>.\n" "\n" "If you want help to translate Pybik to your language you can do it through " "the web interface<|>.\n" "\n" "Read more about \"Translating with " "Launchpad\"<|> and " "\"Starting to " "translate\"<|>." msgstr "" "Translations are managed by the " "Launchpad " "translation group<|>.\n" "\n" "If you want help to translate Pybik to your language, you can do it through " "the web interface<|>.\n" "\n" "Read more about \"Translating with " "Launchpad\"<|> and " "\"Starting to " "translate\"<|>." # translated by: Anthony Harrington https://launchpad.net/~untaintableangel on 2015-03-28 22:58:36 UTC #: pybiklib/dialogs.py:44 msgid "Lighting" msgstr "Lighting" # translated by: Andi Chandler https://launchpad.net/~bing on 2015-04-16 09:30:56 UTC #: pybiklib/dialogs.py:44 msgid "Simple" msgstr "Simple" # translated by: Andi Chandler https://launchpad.net/~bing on 2017-09-23 21:33:23 UTC #. labels are the colored stickers on the cube #: pybiklib/dialogs.py:46 msgid "Labels" msgstr "Labels" # translated by: Andi Chandler https://launchpad.net/~bing on 2015-04-16 07:50:51 UTC #: pybiklib/dialogs.py:104 data/ui/qt/main.ui.h:275 msgid "Select Puzzle" msgstr "Select Puzzle" # translated by: Andi Chandler https://launchpad.net/~bing on 2017-09-23 21:33:23 UTC #. 1 slice, 2 slices, 3 slices, ... #: pybiklib/dialogs.py:134 pybiklib/dialogs.py:154 pybiklib/dialogs.py:180 #: pybiklib/dialogs.py:201 msgid "{} slice" msgid_plural "{} slices" msgstr[0] "{} slice" msgstr[1] "{} slices" # translated by: Andi Chandler https://launchpad.net/~bing on 2017-09-23 21:33:23 UTC #: pybiklib/dialogs.py:196 pybiklib/dialogs.py:225 msgid "{}×{} slices" msgstr "{}×{} slices" # translated by: Andi Chandler https://launchpad.net/~bing on 2015-04-16 09:31:33 UTC #. The next strings form the text in the help dialog: #. Title of the 1st paragraph #: pybiklib/dialogs.py:290 msgid "Using the mouse to rotate the cube" msgstr "Using the mouse to rotate the cube" # translated by: Andi Chandler https://launchpad.net/~bing on 2015-04-16 09:30:56 UTC #. Text of the 1st paragraph, followed by bullet list items #: pybiklib/dialogs.py:292 msgid "" "Position the mouse cursor over the puzzle and you will see an arrow that " "gives you a hint in which direction the slice under the mouse cursor will be " "rotated." msgstr "" "Position the mouse cursor over the puzzle and you will see an arrow that " "gives you a hint in which direction the slice under the mouse cursor will be " "rotated." # translated by: Andi Chandler https://launchpad.net/~bing on 2015-04-16 09:30:56 UTC #: pybiklib/dialogs.py:294 msgid "" "The left mouse button rotates a single slice of the cube in the direction of " "the arrow." msgstr "" "The left mouse button rotates a single slice of the cube in the direction of " "the arrow." # translated by: Andi Chandler https://launchpad.net/~bing on 2015-04-16 09:30:56 UTC #: pybiklib/dialogs.py:295 msgid "" "The right mouse button rotates a single slice of the cube against the " "direction of the arrow." msgstr "" "The right mouse button rotates a single slice of the cube against the " "direction of the arrow." # translated by: Andi Chandler https://launchpad.net/~bing on 2015-04-16 09:30:56 UTC #: pybiklib/dialogs.py:296 msgid "" "To rotate the whole cube instead of a single slice press the Ctrl key " "together with the mouse button." msgstr "" "To rotate the whole cube instead of a single slice press the Ctrl key " "together with the mouse button." # translated by: Andi Chandler https://launchpad.net/~bing on 2015-04-16 09:31:33 UTC #. Title of the 2nd paragraph #: pybiklib/dialogs.py:298 msgid "Using the keyboard to rotate the cube" msgstr "Using the keyboard to rotate the cube" # translated by: Andi Chandler https://launchpad.net/~bing on 2015-04-16 09:30:56 UTC #. Text of the 2nd paragraph, followed by bullet list items #: pybiklib/dialogs.py:300 msgid "" "Make sure the keyboard focus is on the cube area (e.g. click on the " "background of the cube). The keys can be configured in the preferences " "dialog, the default is:" msgstr "" "Make sure the keyboard focus is on the cube area (e.g. click on the " "background of the cube). The keys can be configured in the preferences " "dialogue, the default is:" # translated by: Andi Chandler https://launchpad.net/~bing on 2015-04-10 18:01:28 UTC #. before the item text is a list of keys #: pybiklib/dialogs.py:303 pybiklib/dialogs.py:318 msgid "Moves the left, right, upper, down, front or back slice clockwise." msgstr "Moves the left, right, upper, down, front or back slice clockwise." # translated by: Andi Chandler https://launchpad.net/~bing on 2015-04-10 18:01:28 UTC #: pybiklib/dialogs.py:304 pybiklib/dialogs.py:319 msgid "Moves a slice couterclockwise." msgstr "Moves a slice anticlockwise." # translated by: Andi Chandler https://launchpad.net/~bing on 2015-04-10 18:01:28 UTC #: pybiklib/dialogs.py:305 pybiklib/dialogs.py:320 msgid "Moves the whole cube." msgstr "Moves the whole cube." # translated by: Andi Chandler https://launchpad.net/~bing on 2015-04-10 18:01:28 UTC #. Title of the 3rd paragraph #: pybiklib/dialogs.py:307 msgid "Other keys and buttons" msgstr "Other keys and buttons" # translated by: Andi Chandler https://launchpad.net/~bing on 2015-04-10 18:01:28 UTC #. bullet list items of the 3rd paragraph #: pybiklib/dialogs.py:309 msgid "Mouse wheel – Zoom in/out" msgstr "Mouse wheel – Zoom in/out" # translated by: Andi Chandler https://launchpad.net/~bing on 2015-04-10 18:01:28 UTC #: pybiklib/dialogs.py:310 msgid "" "Arrow keys, Left mouse button on the background – Changes the direction of " "looking at the cube." msgstr "" "Arrow keys, Left mouse button on the background – Changes the direction of " "looking at the cube." # translated by: Andi Chandler https://launchpad.net/~bing on 2015-04-10 18:01:28 UTC #: pybiklib/dialogs.py:311 msgid "" "Moves keyboard focus to the sequence editor above the cube area where you " "can edit the move sequence in the notation described below. Hit enter when " "done." msgstr "" "Moves keyboard focus to the sequence editor above the cube area where you " "can edit the move sequence in the notation described below. Hit enter when " "done." # translated by: Andi Chandler https://launchpad.net/~bing on 2015-04-10 18:01:28 UTC #. Title of the 4th paragraph #: pybiklib/dialogs.py:315 msgid "Notation for moves" msgstr "Notation for moves" # translated by: Andi Chandler https://launchpad.net/~bing on 2015-04-10 18:01:28 UTC #. Text of the 4th paragraph, followed by bullet list items #: pybiklib/dialogs.py:317 msgid "" "All moves, however they are made, are displayed progressively above the cube " "area:" msgstr "" "All moves, however they are made, are displayed progressively above the cube " "area:" # translated by: Andi Chandler https://launchpad.net/~bing on 2015-04-10 18:01:28 UTC #: pybiklib/dialogs.py:321 msgid "" "Moves the first, second or third slice from left clockwise. The allowed " "numbers are in the range from 1 to the count of parallel slices. \"l1\" is " "always the same as \"l\" and for the classic 3×3×3-Cube \"l2\" is the same " "as \"r2-\" and \"l3\" is the same as \"r-\"." msgstr "" "Moves the first, second or third slice from left clockwise. The allowed " "numbers are in the range from 1 to the count of parallel slices. \"l1\" is " "always the same as \"l\" and for the classic 3×3×3-Cube \"l2\" is the same " "as \"r2-\" and \"l3\" is the same as \"r-\"." # translated by: Andi Chandler https://launchpad.net/~bing on 2015-04-16 07:50:51 UTC #: pybiklib/dialogs.py:325 msgid "You can use a space to separate groups of moves." msgstr "You can use a space to separate groups of moves." # translated by: Andi Chandler https://launchpad.net/~bing on 2013-01-15 18:49:43 UTC #: pybiklib/dialogs.py:379 msgid "Pybik project website" msgstr "Pybik project website" # translated by: Andi Chandler https://launchpad.net/~bing on 2015-04-16 07:50:51 UTC #: pybiklib/pluginlib.py:301 msgid "This plugin does not work for any model." msgstr "This plugin does not work for any model." # translated by: Andi Chandler https://launchpad.net/~bing on 2015-04-16 07:50:51 UTC #: pybiklib/pluginlib.py:303 pybiklib/pluginlib.py:306 msgid "This plugin only works for:" msgstr "This plugin only works for:" # translated by: Andi Chandler https://launchpad.net/~bing on 2015-04-16 09:30:56 UTC #: pybiklib/pluginlib.py:498 msgid "This puzzle is not solvable." msgstr "This puzzle is not solvable." # translated by: Anthony Harrington https://launchpad.net/~untaintableangel on 2013-06-01 22:23:23 UTC #. The following 6 words are for the antialiasing levels: disabled, ugly, low, medium, high, higher #: pybiklib/schema.py:211 msgid "disabled" msgstr "disabled" # translated by: Anthony Harrington https://launchpad.net/~untaintableangel on 2013-06-01 22:23:23 UTC #: pybiklib/schema.py:211 msgid "ugly" msgstr "ugly" # translated by: Anthony Harrington https://launchpad.net/~untaintableangel on 2013-06-01 23:31:14 UTC #: pybiklib/schema.py:211 msgid "low" msgstr "low" # translated by: Anthony Harrington https://launchpad.net/~untaintableangel on 2013-06-01 22:23:23 UTC #: pybiklib/schema.py:212 msgid "medium" msgstr "medium" # translated by: Anthony Harrington https://launchpad.net/~untaintableangel on 2013-06-01 22:23:23 UTC #: pybiklib/schema.py:212 msgid "high" msgstr "high" # translated by: Anthony Harrington https://launchpad.net/~untaintableangel on 2013-06-01 22:23:23 UTC #: pybiklib/schema.py:212 msgid "higher" msgstr "higher" # translated by: Anthony Harrington https://launchpad.net/~untaintableangel on 2015-03-28 22:58:36 UTC #: data/ui/qt/about.ui.h:212 msgid "About Pybik" msgstr "About Pybik" # translated by: Anthony Harrington https://launchpad.net/~untaintableangel on 2015-03-28 22:58:36 UTC #: data/ui/qt/about.ui.h:213 msgid "Translators:" msgstr "Translators:" # translated by: Anthony Harrington https://launchpad.net/~untaintableangel on 2015-03-28 22:58:36 UTC #: data/ui/qt/about.ui.h:214 msgid "About" msgstr "About" # translated by: Andi Chandler https://launchpad.net/~bing on 2017-09-23 21:33:23 UTC #: data/ui/qt/about.ui.h:215 msgid "Contribute" msgstr "Contribute" # translated by: Anthony Harrington https://launchpad.net/~untaintableangel on 2015-03-28 22:58:36 UTC #: data/ui/qt/about.ui.h:216 msgid "License" msgstr "Licence" # translated by: Andi Chandler https://launchpad.net/~bing on 2015-04-16 07:50:51 UTC #: data/ui/qt/help.ui.h:53 data/ui/qt/main.ui.h:297 msgid "Help" msgstr "Help" # translated by: Andi Chandler https://launchpad.net/~bing on 2017-09-23 21:33:23 UTC #: data/ui/qt/main.ui.h:272 msgid "&New Challenge" msgstr "&New Challenge" # translated by: Anthony Harrington https://launchpad.net/~untaintableangel on 2015-03-28 22:58:36 UTC #: data/ui/qt/main.ui.h:273 msgid "Ne&w Solved" msgstr "Ne&w Solved" # translated by: Anthony Harrington https://launchpad.net/~untaintableangel on 2015-03-28 22:58:36 UTC #: data/ui/qt/main.ui.h:274 msgid "&Quit" msgstr "&Quit" # translated by: Anthony Harrington https://launchpad.net/~untaintableangel on 2015-03-28 22:58:36 UTC #: data/ui/qt/main.ui.h:276 msgid "&Set as Initial State" msgstr "&Set as Initial State" # translated by: Anthony Harrington https://launchpad.net/~untaintableangel on 2015-03-28 22:58:36 UTC #: data/ui/qt/main.ui.h:277 msgid "&Reset Rotation" msgstr "&Reset Rotation" # translated by: Anthony Harrington https://launchpad.net/~untaintableangel on 2015-03-28 22:58:36 UTC #: data/ui/qt/main.ui.h:278 msgid "&Preferences …" msgstr "&Preferences …" # translated by: Anthony Harrington https://launchpad.net/~untaintableangel on 2015-03-28 22:58:36 UTC #: data/ui/qt/main.ui.h:279 msgid "&Status Bar" msgstr "&Status Bar" # translated by: Anthony Harrington https://launchpad.net/~untaintableangel on 2015-03-28 22:58:36 UTC #: data/ui/qt/main.ui.h:280 msgid "&Info …" msgstr "&Info …" # translated by: Anthony Harrington https://launchpad.net/~untaintableangel on 2015-03-28 22:58:36 UTC #: data/ui/qt/main.ui.h:281 msgid "Rewind" msgstr "Rewind" # translated by: Anthony Harrington https://launchpad.net/~untaintableangel on 2015-03-28 22:58:36 UTC #: data/ui/qt/main.ui.h:282 msgid "Previous" msgstr "Previous" # translated by: Anthony Harrington https://launchpad.net/~untaintableangel on 2015-03-28 22:58:36 UTC #: data/ui/qt/main.ui.h:283 msgid "Stop" msgstr "Stop" # translated by: Anthony Harrington https://launchpad.net/~untaintableangel on 2015-03-28 22:58:36 UTC #: data/ui/qt/main.ui.h:284 msgid "Play" msgstr "Play" # translated by: Anthony Harrington https://launchpad.net/~untaintableangel on 2015-03-28 22:58:36 UTC #: data/ui/qt/main.ui.h:285 msgid "Next" msgstr "Next" # translated by: Anthony Harrington https://launchpad.net/~untaintableangel on 2015-03-28 22:58:36 UTC #: data/ui/qt/main.ui.h:286 msgid "Forward" msgstr "Forward" # translated by: Anthony Harrington https://launchpad.net/~untaintableangel on 2015-03-28 22:58:36 UTC #: data/ui/qt/main.ui.h:287 msgid "Add Mark" msgstr "Add Mark" # translated by: Anthony Harrington https://launchpad.net/~untaintableangel on 2015-03-28 22:58:36 UTC #: data/ui/qt/main.ui.h:289 msgid "Mark the current place in the sequence of moves" msgstr "Mark the current place in the sequence of moves" # translated by: Anthony Harrington https://launchpad.net/~untaintableangel on 2015-03-28 22:58:36 UTC #: data/ui/qt/main.ui.h:291 msgid "Remove Mark" msgstr "Remove Mark" # translated by: Anthony Harrington https://launchpad.net/~untaintableangel on 2015-03-28 22:58:36 UTC #: data/ui/qt/main.ui.h:293 msgid "Remove the mark at the current place in the sequence of moves" msgstr "Remove the mark at the current place in the sequence of moves" # translated by: Anthony Harrington https://launchpad.net/~untaintableangel on 2015-03-28 22:58:36 UTC #: data/ui/qt/main.ui.h:295 msgid "&Edit Bar" msgstr "&Edit Bar" # translated by: Andi Chandler https://launchpad.net/~bing on 2015-04-16 07:50:51 UTC #: data/ui/qt/main.ui.h:296 msgid "&Help …" msgstr "&Help …" # translated by: Anthony Harrington https://launchpad.net/~untaintableangel on 2015-03-28 22:58:36 UTC #: data/ui/qt/preferences.ui.h:372 msgid "Preferences" msgstr "Preferences" # translated by: Anthony Harrington https://launchpad.net/~untaintableangel on 2015-03-28 22:58:36 UTC #: data/ui/qt/preferences.ui.h:373 msgid "Animation Speed:" msgstr "Animation Speed:" # translated by: Anthony Harrington https://launchpad.net/~untaintableangel on 2015-03-28 22:58:36 UTC #: data/ui/qt/preferences.ui.h:375 msgid "Mirror Distance:" msgstr "Mirror Distance:" # translated by: Andi Chandler https://launchpad.net/~bing on 2015-04-16 07:50:51 UTC #: data/ui/qt/preferences.ui.h:377 msgid "Quality:" msgstr "Quality:" # translated by: Andi Chandler https://launchpad.net/~bing on 2015-04-16 07:50:51 UTC #: data/ui/qt/preferences.ui.h:380 msgid "" "Lower antialiasing has better performance, higher antialiasing has better " "quality." msgstr "" "Lower antialiasing has better performance, higher antialiasing has better " "quality." # translated by: Andi Chandler https://launchpad.net/~bing on 2015-04-16 07:51:13 UTC #: data/ui/qt/preferences.ui.h:382 msgid "Antialiasing:" msgstr "Antialiasing:" # translated by: Anthony Harrington https://launchpad.net/~untaintableangel on 2013-06-01 22:23:23 UTC #: data/ui/qt/preferences.ui.h:384 msgid "The program needs to be restarted for the changes to take effect." msgstr "The program needs to be restarted for the changes to take effect." # translated by: Anthony Harrington https://launchpad.net/~untaintableangel on 2015-03-28 22:58:36 UTC #: data/ui/qt/preferences.ui.h:385 msgid "Graphic" msgstr "Graphic" # translated by: Andi Chandler https://launchpad.net/~bing on 2017-09-23 21:33:23 UTC #: data/ui/qt/preferences.ui.h:386 msgid "Point and click, all directions" msgstr "Point and click, all directions" # translated by: Andi Chandler https://launchpad.net/~bing on 2017-09-23 21:33:23 UTC #: data/ui/qt/preferences.ui.h:387 msgid "Point and click, simplified" msgstr "Point and click, simplified" # translated by: Andi Chandler https://launchpad.net/~bing on 2017-09-23 21:33:23 UTC #: data/ui/qt/preferences.ui.h:388 msgid "Gestures" msgstr "Gestures" # translated by: Anthony Harrington https://launchpad.net/~untaintableangel on 2015-03-28 22:58:36 UTC #: data/ui/qt/preferences.ui.h:389 msgid "Mouse" msgstr "Mouse" # translated by: Anthony Harrington https://launchpad.net/~untaintableangel on 2015-03-28 22:58:36 UTC #: data/ui/qt/preferences.ui.h:391 data/ui/qt/preferences.ui.h:393 msgid "Add" msgstr "Add" # translated by: Anthony Harrington https://launchpad.net/~untaintableangel on 2015-03-28 22:58:36 UTC #: data/ui/qt/preferences.ui.h:395 data/ui/qt/preferences.ui.h:397 msgid "Remove" msgstr "Remove" # translated by: Anthony Harrington https://launchpad.net/~untaintableangel on 2015-03-28 22:58:36 UTC #: data/ui/qt/preferences.ui.h:399 data/ui/qt/preferences.ui.h:401 msgid "Reset" msgstr "Reset" # translated by: Anthony Harrington https://launchpad.net/~untaintableangel on 2015-03-28 22:58:36 UTC #: data/ui/qt/preferences.ui.h:402 msgid "Keys" msgstr "Keys" # translated by: Anthony Harrington https://launchpad.net/~untaintableangel on 2015-03-28 22:58:36 UTC #: data/ui/qt/preferences.ui.h:403 msgid "Color:" msgstr "Colour:" # translated by: Anthony Harrington https://launchpad.net/~untaintableangel on 2015-03-28 22:58:36 UTC #: data/ui/qt/preferences.ui.h:405 msgid "Image File:" msgstr "Image File:" # translated by: Anthony Harrington https://launchpad.net/~untaintableangel on 2015-03-28 22:58:36 UTC #: data/ui/qt/preferences.ui.h:407 msgid "Tiled" msgstr "Tiled" # translated by: Anthony Harrington https://launchpad.net/~untaintableangel on 2015-03-28 22:58:36 UTC #: data/ui/qt/preferences.ui.h:408 msgid "Mosaic" msgstr "Mosaic" # translated by: Anthony Harrington https://launchpad.net/~untaintableangel on 2015-03-28 22:58:36 UTC #: data/ui/qt/preferences.ui.h:409 msgid "Background:" msgstr "Background:" # translated by: Anthony Harrington https://launchpad.net/~untaintableangel on 2015-03-28 22:58:36 UTC #: data/ui/qt/preferences.ui.h:411 msgid "Appearance" msgstr "Appearance" # translated by: Andi Chandler https://launchpad.net/~bing on 2013-01-15 18:46:21 UTC #: pybiklib/ext/qt.py:1578 msgid "Move" msgstr "Move" # translated by: Andi Chandler https://launchpad.net/~bing on 2013-01-15 18:46:21 UTC #: pybiklib/ext/qt.py:1581 msgid "Key" msgstr "Key" # translated by: Andi Chandler https://launchpad.net/~bing on 2013-01-15 18:49:43 UTC #: pybiklib/ext/qt.py:1682 msgid "Open Image" msgstr "Open Image" # translated by: Andi Chandler https://launchpad.net/~bing on 2013-01-15 18:46:21 UTC #: pybiklib/ext/qt.py:1720 msgid "plain" msgstr "plain" # translated by: Andi Chandler https://launchpad.net/~bing on 2013-01-15 18:46:21 UTC #: pybiklib/ext/qt.py:1723 msgid "select …" msgstr "select …" # translated by: Andi Chandler https://launchpad.net/~bing on 2013-01-15 18:45:20 UTC #: pybiklib/ext/qtui.py:94 msgid "Press a key …" msgstr "Press a key …" # translated by: Anthony Harrington https://launchpad.net/~untaintableangel on 2013-06-01 23:27:33 UTC #. Add whatever keywords you want in your language, separated by semicolons, last character must be a semicolon. These keywords are used when searching for applications in Unity, GNOME Shell, etc. #: data/app-meta/pybik.desktop.in:10 msgid "rubik;cube;puzzle;magic;" msgstr "rubik;cube;puzzle;magic;" # translated by: Anthony Harrington https://launchpad.net/~untaintableangel on 2013-06-01 23:27:33 UTC #: data/plugins/01-challenges.plugins.py:18 #: data/plugins/01-challenges.plugins.py:21 #: data/plugins/01-challenges.plugins.py:24 #: data/plugins/01-challenges.plugins.py:27 #: data/plugins/01-challenges.plugins.py:30 #: data/plugins/01-challenges.plugins.py:33 #: data/plugins/01-challenges.plugins.py:36 #: data/plugins/01-challenges.plugins.py:39 #: data/plugins/01-challenges.plugins.py:42 #: data/plugins/01-challenges.plugins.py:45 #: data/plugins/01-challenges.plugins.py:48 msgid "Challenges" msgstr "Challenges" # translated by: James Tait https://launchpad.net/~jamestait on 2015-07-27 11:48:28 UTC #: data/plugins/01-challenges.plugins.py:19 msgid "Solve random puzzle" msgstr "Solve random puzzle" # translated by: Andi Chandler https://launchpad.net/~bing on 2015-04-16 07:51:13 UTC #: data/plugins/01-challenges.plugins.py:22 #: data/plugins/01-challenges.plugins.py:25 #: data/plugins/01-challenges.plugins.py:28 #: data/plugins/01-challenges.plugins.py:31 #: data/plugins/01-challenges.plugins.py:34 #: data/plugins/01-challenges.plugins.py:37 #: data/plugins/01-challenges.plugins.py:40 #: data/plugins/01-challenges.plugins.py:43 #: data/plugins/01-challenges.plugins.py:46 #: data/plugins/01-challenges.plugins.py:49 msgid "Solve in {} move" msgid_plural "Solve in {} moves" msgstr[0] "Solve in {} move" msgstr[1] "Solve in {} moves" # translated by: Anthony Harrington https://launchpad.net/~untaintableangel on 2013-06-01 23:28:05 UTC #: data/plugins/10-beginners.plugins.py:31 #: data/plugins/10-beginners.plugins.py:34 #: data/plugins/10-beginners.plugins.py:56 #: data/plugins/10-beginners.plugins.py:73 #: data/plugins/10-beginners.plugins.py:100 #: data/plugins/10-beginners.plugins.py:118 #: data/plugins/10-beginners.plugins.py:140 #: data/plugins/10-beginners.plugins.py:158 #: data/plugins/14-leyan-lo.plugins.py:21 #: data/plugins/14-leyan-lo.plugins.py:24 #: data/plugins/14-leyan-lo.plugins.py:53 #: data/plugins/14-leyan-lo.plugins.py:74 #: data/plugins/14-leyan-lo.plugins.py:90 #: data/plugins/14-leyan-lo.plugins.py:107 #: data/plugins/14-leyan-lo.plugins.py:129 #: data/plugins/14-leyan-lo.plugins.py:170 #: data/plugins/150-spiegel.plugins.py:32 #: data/plugins/150-spiegel.plugins.py:35 #: data/plugins/150-spiegel.plugins.py:64 #: data/plugins/150-spiegel.plugins.py:85 #: data/plugins/150-spiegel.plugins.py:100 #: data/plugins/150-spiegel.plugins.py:113 #: data/plugins/150-spiegel.plugins.py:130 #: data/plugins/150-spiegel.plugins.py:141 #: data/plugins/151-spiegel-improved.plugins.py:20 #: data/plugins/151-spiegel-improved.plugins.py:23 #: data/plugins/151-spiegel-improved.plugins.py:68 #: data/plugins/151-spiegel-improved.plugins.py:107 #: data/plugins/151-spiegel-improved.plugins.py:139 #: data/plugins/151-spiegel-improved.plugins.py:165 #: data/plugins/151-spiegel-improved.plugins.py:183 #: data/plugins/151-spiegel-improved.plugins.py:197 #: data/plugins/20-2x2x2.plugins.py:18 data/plugins/20-2x2x2.plugins.py:21 #: data/plugins/20-2x2x2.plugins.py:37 data/plugins/20-2x2x2.plugins.py:55 msgid "Solvers" msgstr "Solvers" # translated by: Andi Chandler https://launchpad.net/~bing on 2015-04-16 07:51:13 UTC #: data/plugins/10-beginners.plugins.py:32 #: data/plugins/10-beginners.plugins.py:35 #: data/plugins/10-beginners.plugins.py:57 #: data/plugins/10-beginners.plugins.py:74 #: data/plugins/10-beginners.plugins.py:101 #: data/plugins/10-beginners.plugins.py:119 #: data/plugins/10-beginners.plugins.py:141 #: data/plugins/10-beginners.plugins.py:159 msgid "Beginner's method" msgstr "Beginner's method" # translated by: Anthony Harrington https://launchpad.net/~untaintableangel on 2013-06-01 23:28:05 UTC #: data/plugins/10-beginners.plugins.py:36 #: data/plugins/14-leyan-lo.plugins.py:26 #: data/plugins/150-spiegel.plugins.py:37 #: data/plugins/151-spiegel-improved.plugins.py:25 msgid "Top edges" msgstr "Top edges" # translated by: Anthony Harrington https://launchpad.net/~untaintableangel on 2013-06-01 23:28:05 UTC #: data/plugins/10-beginners.plugins.py:58 #: data/plugins/14-leyan-lo.plugins.py:55 #: data/plugins/150-spiegel.plugins.py:66 #: data/plugins/151-spiegel-improved.plugins.py:70 msgid "Top corners" msgstr "Top corners" # translated by: Anthony Harrington https://launchpad.net/~untaintableangel on 2013-06-01 23:29:03 UTC #: data/plugins/10-beginners.plugins.py:75 #: data/plugins/14-leyan-lo.plugins.py:76 #: data/plugins/150-spiegel.plugins.py:87 #: data/plugins/151-spiegel-improved.plugins.py:109 msgid "Middle slice" msgstr "Middle slice" # translated by: Anthony Harrington https://launchpad.net/~untaintableangel on 2013-06-01 23:29:03 UTC #: data/plugins/10-beginners.plugins.py:102 #: data/plugins/14-leyan-lo.plugins.py:92 #: data/plugins/150-spiegel.plugins.py:115 #: data/plugins/151-spiegel-improved.plugins.py:167 msgid "Bottom edge orient" msgstr "Bottom edge orient" # translated by: Anthony Harrington https://launchpad.net/~untaintableangel on 2013-06-01 23:29:03 UTC #: data/plugins/10-beginners.plugins.py:120 #: data/plugins/14-leyan-lo.plugins.py:131 #: data/plugins/150-spiegel.plugins.py:143 #: data/plugins/151-spiegel-improved.plugins.py:199 #: data/plugins/20-2x2x2.plugins.py:57 msgid "Bottom corner orient" msgstr "Bottom corner orient" # translated by: Anthony Harrington https://launchpad.net/~untaintableangel on 2013-06-01 23:29:03 UTC #: data/plugins/10-beginners.plugins.py:142 #: data/plugins/14-leyan-lo.plugins.py:109 #: data/plugins/150-spiegel.plugins.py:132 #: data/plugins/151-spiegel-improved.plugins.py:185 #: data/plugins/20-2x2x2.plugins.py:39 msgid "Bottom corner place" msgstr "Bottom corner place" # translated by: Anthony Harrington https://launchpad.net/~untaintableangel on 2013-06-01 23:29:03 UTC #: data/plugins/10-beginners.plugins.py:160 #: data/plugins/14-leyan-lo.plugins.py:172 #: data/plugins/150-spiegel.plugins.py:102 #: data/plugins/151-spiegel-improved.plugins.py:141 msgid "Bottom edge place" msgstr "Bottom edge place" # translated by: Andi Chandler https://launchpad.net/~bing on 2015-04-16 07:51:13 UTC #. Leyan Lo is the inventor of the solution #: data/plugins/14-leyan-lo.plugins.py:23 #: data/plugins/14-leyan-lo.plugins.py:25 #: data/plugins/14-leyan-lo.plugins.py:54 #: data/plugins/14-leyan-lo.plugins.py:75 #: data/plugins/14-leyan-lo.plugins.py:91 #: data/plugins/14-leyan-lo.plugins.py:108 #: data/plugins/14-leyan-lo.plugins.py:130 #: data/plugins/14-leyan-lo.plugins.py:171 msgid "Leyan Lo" msgstr "Leyan Lo" # translated by: Anthony Harrington https://launchpad.net/~untaintableangel on 2013-06-01 23:28:05 UTC #. Spiegel is a german magazine #: data/plugins/150-spiegel.plugins.py:34 #: data/plugins/150-spiegel.plugins.py:36 #: data/plugins/150-spiegel.plugins.py:65 #: data/plugins/150-spiegel.plugins.py:86 #: data/plugins/150-spiegel.plugins.py:101 #: data/plugins/150-spiegel.plugins.py:114 #: data/plugins/150-spiegel.plugins.py:131 #: data/plugins/150-spiegel.plugins.py:142 msgid "Spiegel" msgstr "Spiegel" # translated by: Anthony Harrington https://launchpad.net/~untaintableangel on 2013-06-01 23:29:03 UTC #. Spiegel is a german magazine #: data/plugins/151-spiegel-improved.plugins.py:22 #: data/plugins/151-spiegel-improved.plugins.py:24 #: data/plugins/151-spiegel-improved.plugins.py:69 #: data/plugins/151-spiegel-improved.plugins.py:108 #: data/plugins/151-spiegel-improved.plugins.py:140 #: data/plugins/151-spiegel-improved.plugins.py:166 #: data/plugins/151-spiegel-improved.plugins.py:184 #: data/plugins/151-spiegel-improved.plugins.py:198 msgid "Spiegel improved" msgstr "Spiegel improved" # translated by: Anthony Harrington https://launchpad.net/~untaintableangel on 2013-06-01 23:29:03 UTC #: data/plugins/20-2x2x2.plugins.py:19 data/plugins/20-2x2x2.plugins.py:22 #: data/plugins/20-2x2x2.plugins.py:38 data/plugins/20-2x2x2.plugins.py:56 msgid "2×2×2" msgstr "2×2×2" # translated by: Anthony Harrington https://launchpad.net/~untaintableangel on 2013-06-01 23:29:03 UTC #: data/plugins/20-2x2x2.plugins.py:23 msgid "Top slice" msgstr "Top slice" # translated by: Anthony Harrington https://launchpad.net/~untaintableangel on 2013-06-01 23:29:32 UTC #: data/plugins/80-pretty-patterns.plugins.py:20 #: data/plugins/80-pretty-patterns.plugins.py:23 #: data/plugins/80-pretty-patterns.plugins.py:27 #: data/plugins/80-pretty-patterns.plugins.py:31 #: data/plugins/80-pretty-patterns.plugins.py:35 #: data/plugins/80-pretty-patterns.plugins.py:40 #: data/plugins/80-pretty-patterns.plugins.py:44 msgid "Stripes" msgstr "Stripes" # translated by: Anthony Harrington https://launchpad.net/~untaintableangel on 2013-06-01 23:29:32 UTC #: data/plugins/80-pretty-patterns.plugins.py:49 #: data/plugins/80-pretty-patterns.plugins.py:53 msgid "Criss-Cross" msgstr "Criss-Cross" # translated by: Anthony Harrington https://launchpad.net/~untaintableangel on 2013-06-01 23:29:32 UTC #: data/plugins/80-pretty-patterns.plugins.py:57 msgid "Fried Eggs" msgstr "Fried Eggs" # translated by: Anthony Harrington https://launchpad.net/~untaintableangel on 2013-06-01 23:29:32 UTC #: data/plugins/80-pretty-patterns.plugins.py:61 msgid "Big Fried Eggs" msgstr "Big Fried Eggs" # translated by: Anthony Harrington https://launchpad.net/~untaintableangel on 2013-06-01 23:29:32 UTC #: data/plugins/80-pretty-patterns.plugins.py:65 #: data/plugins/80-pretty-patterns.plugins.py:69 msgid "4 Fried Eggs" msgstr "4 Fried Eggs" # translated by: Andi Chandler https://launchpad.net/~bing on 2015-04-16 07:51:13 UTC #: data/plugins/80-pretty-patterns.plugins.py:73 msgid "2 Fried Eggs" msgstr "2 Fried Eggs" # translated by: Anthony Harrington https://launchpad.net/~untaintableangel on 2013-06-01 23:29:32 UTC #: data/plugins/80-pretty-patterns.plugins.py:77 msgid "Chessboard" msgstr "Chessboard" # translated by: Anthony Harrington https://launchpad.net/~untaintableangel on 2013-06-01 23:29:32 UTC #: data/plugins/80-pretty-patterns.plugins.py:83 msgid "Cross" msgstr "Cross" # translated by: Anthony Harrington https://launchpad.net/~untaintableangel on 2013-06-01 23:29:32 UTC #: data/plugins/80-pretty-patterns.plugins.py:87 msgid "Zig Zag" msgstr "Zig Zag" # translated by: Anthony Harrington https://launchpad.net/~untaintableangel on 2013-06-01 23:29:32 UTC #. T is the shape formed by the cube labels. T-Time is a pun (Tea Time) and not suitable for literal translation. Don't translate it or use something common or whatever you think makes sense. #: data/plugins/80-pretty-patterns.plugins.py:93 #: data/plugins/80-pretty-patterns.plugins.py:96 #: data/plugins/80-pretty-patterns.plugins.py:100 #: data/plugins/80-pretty-patterns.plugins.py:104 #: data/plugins/80-pretty-patterns.plugins.py:108 #: data/plugins/80-pretty-patterns.plugins.py:112 msgid "T-Time" msgstr "T-Time" # translated by: Anthony Harrington https://launchpad.net/~untaintableangel on 2013-06-01 23:29:32 UTC #. C is the shape formed by the cube labels #: data/plugins/80-pretty-patterns.plugins.py:118 msgid "C" msgstr "C" # translated by: Anthony Harrington https://launchpad.net/~untaintableangel on 2013-06-01 23:30:07 UTC #: data/plugins/80-pretty-patterns.plugins.py:121 msgid "Cube in a Cube" msgstr "Cube in a Cube" # translated by: Anthony Harrington https://launchpad.net/~untaintableangel on 2013-06-01 23:30:07 UTC #: data/plugins/80-pretty-patterns.plugins.py:125 msgid "Striped Cube in a Cube" msgstr "Striped Cube in a Cube" # translated by: Andi Chandler https://launchpad.net/~bing on 2015-04-16 09:31:15 UTC #: data/plugins/80-pretty-patterns.plugins.py:129 msgid "Six square cuboids" msgstr "Six square cuboids" # translated by: Anthony Harrington https://launchpad.net/~untaintableangel on 2013-06-01 23:30:07 UTC #. Superflip may be not translated, because it has a special meaning in the mathematical theory behind the Rubik's Cube. #: data/plugins/80-pretty-patterns.plugins.py:135 msgid "Superflip" msgstr "Superflip" # translated by: Anthony Harrington https://launchpad.net/~untaintableangel on 2013-06-01 23:30:07 UTC #: data/plugins/80-pretty-patterns.plugins.py:138 msgid "Superflip easy" msgstr "Superflip easy" # translated by: Anthony Harrington https://launchpad.net/~untaintableangel on 2013-06-01 23:30:07 UTC #: data/plugins/80-pretty-patterns.plugins.py:142 msgid "Green Mamba" msgstr "Green Mamba" # translated by: Anthony Harrington https://launchpad.net/~untaintableangel on 2013-06-01 23:30:07 UTC #: data/plugins/80-pretty-patterns.plugins.py:146 msgid "Anaconda" msgstr "Anaconda" # translated by: Anthony Harrington https://launchpad.net/~untaintableangel on 2013-06-01 23:30:07 UTC #: data/plugins/80-pretty-patterns.plugins.py:150 msgid "Duck Feet" msgstr "Duck Feet" # translated by: Andi Chandler https://launchpad.net/~bing on 2015-04-16 09:31:15 UTC #: data/plugins/80-pretty-patterns.plugins.py:154 #: data/plugins/80-pretty-patterns.plugins.py:158 #: data/plugins/80-pretty-patterns.plugins.py:162 #: data/plugins/80-pretty-patterns.plugins.py:166 #: data/plugins/80-pretty-patterns.plugins.py:170 #: data/plugins/80-pretty-patterns.plugins.py:174 #: data/plugins/80-pretty-patterns.plugins.py:178 #: data/plugins/80-pretty-patterns.plugins.py:182 msgid "Plus" msgstr "Plus" # translated by: Andi Chandler https://launchpad.net/~bing on 2015-04-16 09:31:15 UTC #: data/plugins/80-pretty-patterns.plugins.py:186 #: data/plugins/80-pretty-patterns.plugins.py:191 #: data/plugins/80-pretty-patterns.plugins.py:196 #: data/plugins/80-pretty-patterns.plugins.py:200 msgid "Minus" msgstr "Minus" # translated by: Andi Chandler https://launchpad.net/~bing on 2015-04-16 09:31:15 UTC #: data/plugins/80-pretty-patterns.plugins.py:204 msgid "Volcano" msgstr "Volcano" # translated by: Andi Chandler https://launchpad.net/~bing on 2015-04-16 09:31:15 UTC #: data/plugins/80-pretty-patterns.plugins.py:208 msgid "Checkerboard (easy)" msgstr "Checkerboard (easy)" # translated by: Andi Chandler https://launchpad.net/~bing on 2015-04-16 09:21:30 UTC #: data/plugins/80-pretty-patterns.plugins.py:212 msgid "Checkerboard (fast)" msgstr "Checkerboard (fast)" # translated by: Andi Chandler https://launchpad.net/~bing on 2015-04-16 09:21:30 UTC #: data/plugins/80-pretty-patterns.plugins.py:216 msgid "Mixed Checkerboard" msgstr "Mixed Checkerboard" # translated by: Andi Chandler https://launchpad.net/~bing on 2015-04-16 09:21:30 UTC #: data/plugins/80-pretty-patterns.plugins.py:220 msgid "Tipi" msgstr "Tipi" # translated by: Anthony Harrington https://launchpad.net/~untaintableangel on 2013-06-01 23:30:07 UTC #: data/plugins/90-library.plugins.py:18 data/plugins/90-library.plugins.py:22 #: data/plugins/90-library.plugins.py:26 data/plugins/90-library.plugins.py:30 #: data/plugins/90-library.plugins.py:34 data/plugins/90-library.plugins.py:38 #: data/plugins/90-library.plugins.py:42 data/plugins/90-library.plugins.py:46 #: data/plugins/90-library.plugins.py:50 data/plugins/90-library.plugins.py:54 #: data/plugins/90-library.plugins.py:58 data/plugins/90-library.plugins.py:62 #: data/plugins/90-library.plugins.py:66 data/plugins/90-library.plugins.py:70 #: data/plugins/90-library.plugins.py:74 data/plugins/90-library.plugins.py:78 #: data/plugins/90-library.plugins.py:82 data/plugins/90-library.plugins.py:86 #: data/plugins/90-library.plugins.py:91 data/plugins/90-library.plugins.py:96 #: data/plugins/90-library.plugins.py:101 #: data/plugins/90-library.plugins.py:105 #: data/plugins/90-library.plugins.py:110 #: data/plugins/90-library.plugins.py:115 #: data/plugins/90-library.plugins.py:119 #: data/plugins/90-library.plugins.py:123 #: data/plugins/90-library.plugins.py:127 msgid "Library" msgstr "Library" # translated by: Andi Chandler https://launchpad.net/~bing on 2015-04-16 09:21:30 UTC #: data/plugins/90-library.plugins.py:19 data/plugins/90-library.plugins.py:23 #: data/plugins/90-library.plugins.py:27 data/plugins/90-library.plugins.py:31 #: data/plugins/90-library.plugins.py:35 msgid "Swap edges" msgstr "Swap edges" # translated by: Andi Chandler https://launchpad.net/~bing on 2015-04-16 09:31:15 UTC #: data/plugins/90-library.plugins.py:20 msgid "3 edges ⟳, top layer" msgstr "3 edges ⟳, top layer" # translated by: Andi Chandler https://launchpad.net/~bing on 2015-04-16 09:31:15 UTC #: data/plugins/90-library.plugins.py:24 msgid "3 edges ⟲, top layer" msgstr "3 edges ⟲, top layer" # translated by: Andi Chandler https://launchpad.net/~bing on 2015-04-16 09:21:30 UTC #: data/plugins/90-library.plugins.py:28 msgid "3 edges, middle layer" msgstr "3 edges, middle layer" # translated by: Andi Chandler https://launchpad.net/~bing on 2015-04-16 09:21:30 UTC #: data/plugins/90-library.plugins.py:32 msgid "4 edges, front and right" msgstr "4 edges, front and right" # translated by: Andi Chandler https://launchpad.net/~bing on 2015-04-16 09:21:30 UTC #: data/plugins/90-library.plugins.py:36 msgid "4 edges, front and back" msgstr "4 edges, front and back" # translated by: Andi Chandler https://launchpad.net/~bing on 2015-04-16 09:21:30 UTC #: data/plugins/90-library.plugins.py:39 msgid "Swap 2 edges and 2 corners, top layer" msgstr "Swap 2 edges and 2 corners, top layer" # translated by: Andi Chandler https://launchpad.net/~bing on 2015-04-16 09:29:48 UTC #: data/plugins/90-library.plugins.py:43 data/plugins/90-library.plugins.py:47 msgid "Flip edges" msgstr "Flip edges" # translated by: Andi Chandler https://launchpad.net/~bing on 2015-04-16 09:29:48 UTC #: data/plugins/90-library.plugins.py:44 msgid "4 edges" msgstr "4 edges" # translated by: Andi Chandler https://launchpad.net/~bing on 2015-04-16 09:29:48 UTC #: data/plugins/90-library.plugins.py:48 msgid "2 edges, top layer" msgstr "2 edges, top layer" # translated by: Andi Chandler https://launchpad.net/~bing on 2015-04-16 09:29:48 UTC #: data/plugins/90-library.plugins.py:51 data/plugins/90-library.plugins.py:55 #: data/plugins/90-library.plugins.py:59 data/plugins/90-library.plugins.py:63 #: data/plugins/90-library.plugins.py:67 data/plugins/90-library.plugins.py:71 msgid "Swap corners" msgstr "Swap corners" # translated by: Andi Chandler https://launchpad.net/~bing on 2015-04-16 09:29:48 UTC #: data/plugins/90-library.plugins.py:52 data/plugins/90-library.plugins.py:76 msgid "2 corners, top layer" msgstr "2 corners, top layer" # translated by: Andi Chandler https://launchpad.net/~bing on 2015-04-16 09:29:48 UTC #: data/plugins/90-library.plugins.py:56 msgid "2 corners diagonal, top layer" msgstr "2 corners diagonal, top layer" # translated by: Andi Chandler https://launchpad.net/~bing on 2015-04-16 09:29:48 UTC #: data/plugins/90-library.plugins.py:60 data/plugins/90-library.plugins.py:80 msgid "3 corners ⟳, top layer" msgstr "3 corners ⟳, top layer" # translated by: Andi Chandler https://launchpad.net/~bing on 2015-04-16 09:29:48 UTC #: data/plugins/90-library.plugins.py:64 msgid "3 corners ⟲, top layer" msgstr "3 corners ⟲, top layer" # translated by: Andi Chandler https://launchpad.net/~bing on 2015-04-16 09:29:48 UTC #: data/plugins/90-library.plugins.py:68 msgid "4 corners, top layer" msgstr "4 corners, top layer" # translated by: Andi Chandler https://launchpad.net/~bing on 2015-04-16 09:29:48 UTC #: data/plugins/90-library.plugins.py:72 msgid "2 corners, partial sequence, top layer" msgstr "2 corners, partial sequence, top layer" # translated by: Andi Chandler https://launchpad.net/~bing on 2015-04-16 09:30:17 UTC #: data/plugins/90-library.plugins.py:75 data/plugins/90-library.plugins.py:79 #: data/plugins/90-library.plugins.py:83 data/plugins/90-library.plugins.py:87 msgid "Rotate corners" msgstr "Rotate corners" # translated by: Andi Chandler https://launchpad.net/~bing on 2015-04-16 09:30:17 UTC #: data/plugins/90-library.plugins.py:84 msgid "1 corner ⟳, partial sequence, top layer" msgstr "1 corner ⟳, partial sequence, top layer" # translated by: Andi Chandler https://launchpad.net/~bing on 2015-04-16 09:30:17 UTC #: data/plugins/90-library.plugins.py:88 msgid "1 corner ⟲, partial sequence, top layer" msgstr "1 corner ⟲, partial sequence, top layer" # translated by: Andi Chandler https://launchpad.net/~bing on 2015-04-16 09:30:17 UTC #: data/plugins/90-library.plugins.py:92 data/plugins/90-library.plugins.py:97 #: data/plugins/90-library.plugins.py:102 #: data/plugins/90-library.plugins.py:111 msgid "Rotate center" msgstr "Rotate centre" # translated by: Anthony Harrington https://launchpad.net/~untaintableangel on 2013-06-01 23:30:42 UTC #. 2 rotations of the center face in the upper layer #: data/plugins/90-library.plugins.py:94 msgid "2×Up" msgstr "2×Up" # translated by: Andi Chandler https://launchpad.net/~bing on 2015-04-16 09:30:17 UTC #. Up clockwise and front clockwise #: data/plugins/90-library.plugins.py:99 msgid "Up ⟳ and front ⟳" msgstr "Up ⟳ and front ⟳" # translated by: Andi Chandler https://launchpad.net/~bing on 2015-04-16 09:30:17 UTC #. Up clockwise and front counterclockwise #: data/plugins/90-library.plugins.py:104 msgid "Up ⟳ and front ⟲" msgstr "Up ⟳ and front ⟲" # translated by: Andi Chandler https://launchpad.net/~bing on 2015-04-16 09:30:17 UTC #: data/plugins/90-library.plugins.py:106 msgid "Swap center parts, up and front" msgstr "Swap centre parts, up and front" # translated by: Andi Chandler https://launchpad.net/~bing on 2015-04-16 09:30:17 UTC #. Up clockwise and down counterclockwise #: data/plugins/90-library.plugins.py:113 msgid "Up ⟳ and down ⟲" msgstr "Up ⟳ and down ⟲" # translated by: Anthony Harrington https://launchpad.net/~untaintableangel on 2013-06-01 23:31:33 UTC #: data/plugins/90-library.plugins.py:116 #: data/plugins/90-library.plugins.py:120 #: data/plugins/90-library.plugins.py:124 #: data/plugins/90-library.plugins.py:128 msgid "Misc" msgstr "Misc" # translated by: Andi Chandler https://launchpad.net/~bing on 2015-04-16 09:30:17 UTC #. Yields in a rotated back layer, but the sequence of moves does not touch the back layer #: data/plugins/90-library.plugins.py:118 #: data/plugins/90-library.plugins.py:125 #: data/plugins/90-library.plugins.py:129 msgid "Back without back" msgstr "Back without back" # translated by: Andi Chandler https://launchpad.net/~bing on 2015-04-16 09:30:17 UTC #: data/plugins/90-library.plugins.py:121 msgid "2×Back without back" msgstr "2×Back without back" # translated by: Andi Chandler https://launchpad.net/~bing on 2015-04-16 09:31:15 UTC #: data/plugins/95-transformations.plugins.py:18 #: data/plugins/95-transformations.plugins.py:21 #: data/plugins/95-transformations.plugins.py:24 msgid "Move transformations" msgstr "Move transformations" # translated by: Andi Chandler https://launchpad.net/~bing on 2015-04-16 09:31:15 UTC #: data/plugins/95-transformations.plugins.py:19 msgid "Invert move sequence" msgstr "Invert move sequence" # translated by: Andi Chandler https://launchpad.net/~bing on 2015-04-16 09:31:33 UTC #: data/plugins/95-transformations.plugins.py:22 msgid "Normalize cube rotations" msgstr "Normalise cube rotations" # translated by: Andi Chandler https://launchpad.net/~bing on 2015-04-16 09:31:33 UTC #: data/plugins/95-transformations.plugins.py:25 msgid "Normalize move sequence" msgstr "Normalise move sequence" # translated by: Andi Chandler https://launchpad.net/~bing on 2013-01-15 18:49:43 UTC #: buildlib/modeldef.py:110 msgid "Brick" msgstr "Brick" # translated by: Andi Chandler https://launchpad.net/~bing on 2013-01-15 18:49:43 UTC #: buildlib/modeldef.py:111 #, python-brace-format msgid "{0}×{1}×{2}-Brick" msgstr "{0}×{1}×{2}-Brick" # translated by: Andi Chandler https://launchpad.net/~bing on 2013-01-15 18:49:43 UTC #: buildlib/modeldef.py:112 msgid "Width:" msgstr "Width:" # translated by: Anthony Harrington https://launchpad.net/~untaintableangel on 2013-06-01 23:31:14 UTC #: buildlib/modeldef.py:112 buildlib/modeldef.py:151 buildlib/modeldef.py:249 #: buildlib/modeldef.py:300 buildlib/modeldef.py:311 msgid "Height:" msgstr "Height:" # translated by: Anthony Harrington https://launchpad.net/~untaintableangel on 2013-06-01 23:24:16 UTC #: buildlib/modeldef.py:112 msgid "Depth:" msgstr "Depth:" # translated by: Andi Chandler https://launchpad.net/~bing on 2017-09-23 21:34:06 UTC #: buildlib/modeldef.py:120 buildlib/modeldef.py:257 buildlib/modeldef.py:319 #: buildlib/modeldef.py:374 buildlib/modeldef.py:433 msgid "up" msgstr "up" # translated by: Andi Chandler https://launchpad.net/~bing on 2017-09-23 21:34:06 UTC #: buildlib/modeldef.py:120 buildlib/modeldef.py:205 buildlib/modeldef.py:257 #: buildlib/modeldef.py:319 buildlib/modeldef.py:373 buildlib/modeldef.py:430 msgid "down" msgstr "down" # translated by: Andi Chandler https://launchpad.net/~bing on 2017-09-23 21:34:06 UTC #: buildlib/modeldef.py:120 buildlib/modeldef.py:205 buildlib/modeldef.py:257 msgid "left" msgstr "left" # translated by: Andi Chandler https://launchpad.net/~bing on 2013-01-15 18:46:21 UTC #: buildlib/modeldef.py:120 buildlib/modeldef.py:205 buildlib/modeldef.py:257 msgid "right" msgstr "right" # translated by: Andi Chandler https://launchpad.net/~bing on 2013-01-15 18:46:21 UTC #: buildlib/modeldef.py:120 buildlib/modeldef.py:374 msgid "front" msgstr "front" # translated by: Andi Chandler https://launchpad.net/~bing on 2017-09-23 21:34:06 UTC #: buildlib/modeldef.py:120 buildlib/modeldef.py:205 buildlib/modeldef.py:257 #: buildlib/modeldef.py:320 buildlib/modeldef.py:373 msgid "back" msgstr "back" # translated by: Andi Chandler https://launchpad.net/~bing on 2013-01-15 18:53:19 UTC #: buildlib/modeldef.py:149 msgid "Tower" msgstr "Tower" # translated by: Andi Chandler https://launchpad.net/~bing on 2013-01-15 18:53:19 UTC #: buildlib/modeldef.py:150 #, python-brace-format msgid "{0}×{1}-Tower" msgstr "{0}×{1}-Tower" # translated by: Anthony Harrington https://launchpad.net/~untaintableangel on 2013-06-01 22:23:23 UTC #: buildlib/modeldef.py:151 buildlib/modeldef.py:249 buildlib/modeldef.py:300 #: buildlib/modeldef.py:311 msgid "Basis:" msgstr "Basis:" # translated by: Andi Chandler https://launchpad.net/~bing on 2013-01-15 18:53:19 UTC #: buildlib/modeldef.py:163 msgid "Cube" msgstr "Cube" # translated by: Andi Chandler https://launchpad.net/~bing on 2013-01-15 18:57:48 UTC #: buildlib/modeldef.py:164 #, python-brace-format msgid "{0}×{0}×{0}-Cube" msgstr "{0}×{0}×{0}-Cube" # translated by: Andi Chandler https://launchpad.net/~bing on 2013-01-15 18:49:43 UTC #: buildlib/modeldef.py:165 buildlib/modeldef.py:197 buildlib/modeldef.py:365 #: buildlib/modeldef.py:422 msgid "Size:" msgstr "Size:" # translated by: James Tait https://launchpad.net/~jamestait on 2015-07-27 11:48:28 UTC #: buildlib/modeldef.py:177 buildlib/modeldef.py:178 msgid "Void Cube" msgstr "Void Cube" # translated by: Andi Chandler https://launchpad.net/~bing on 2015-04-16 09:31:33 UTC #: buildlib/modeldef.py:195 msgid "Tetrahedron" msgstr "Tetrahedron" # translated by: Andi Chandler https://launchpad.net/~bing on 2015-04-16 09:31:33 UTC #: buildlib/modeldef.py:196 #, python-brace-format msgid "{0}-Tetrahedron" msgstr "{0}-Tetrahedron" # translated by: James Tait https://launchpad.net/~jamestait on 2015-07-27 11:48:28 UTC #: buildlib/modeldef.py:247 msgid "Triangular Prism" msgstr "Triangular Prism" # translated by: Andi Chandler https://launchpad.net/~bing on 2017-09-23 21:34:06 UTC #: buildlib/modeldef.py:248 #, python-brace-format msgid "{0}×{1} Triangular Prism" msgstr "{0}×{1} Triangular Prism" # translated by: James Tait https://launchpad.net/~jamestait on 2015-07-27 11:48:28 UTC #: buildlib/modeldef.py:298 msgid "Triangular Prism (complex)" msgstr "Triangular Prism (complex)" # translated by: Andi Chandler https://launchpad.net/~bing on 2017-09-23 21:34:06 UTC #: buildlib/modeldef.py:299 #, python-brace-format msgid "{0}×{1} Triangular Prism (complex)" msgstr "{0}×{1} Triangular Prism (complex)" # translated by: James Tait https://launchpad.net/~jamestait on 2015-07-27 11:48:28 UTC #: buildlib/modeldef.py:309 msgid "Pentagonal Prism" msgstr "Pentagonal Prism" # translated by: Andi Chandler https://launchpad.net/~bing on 2017-09-23 21:34:06 UTC #: buildlib/modeldef.py:310 #, python-brace-format msgid "{0}×{1} Pentagonal Prism" msgstr "{0}×{1} Pentagonal Prism" # translated by: Andi Chandler https://launchpad.net/~bing on 2017-09-23 21:34:06 UTC #: buildlib/modeldef.py:320 buildlib/modeldef.py:373 msgid "front-right" msgstr "front-right" # translated by: Andi Chandler https://launchpad.net/~bing on 2017-09-23 21:41:21 UTC #: buildlib/modeldef.py:320 buildlib/modeldef.py:374 msgid "back-right" msgstr "back-right" # translated by: Andi Chandler https://launchpad.net/~bing on 2017-09-23 21:41:21 UTC #: buildlib/modeldef.py:320 buildlib/modeldef.py:374 msgid "back-left" msgstr "back-left" # translated by: Andi Chandler https://launchpad.net/~bing on 2017-09-23 21:41:21 UTC #: buildlib/modeldef.py:320 buildlib/modeldef.py:373 msgid "front-left" msgstr "front-left" # translated by: James Tait https://launchpad.net/~jamestait on 2015-07-27 11:48:40 UTC #: buildlib/modeldef.py:354 msgid "Pentagonal Prism (stretched)" msgstr "Pentagonal Prism (stretched)" # translated by: Andi Chandler https://launchpad.net/~bing on 2017-09-23 21:41:21 UTC #: buildlib/modeldef.py:355 #, python-brace-format msgid "{0}×{1} Pentagonal Prism (stretched)" msgstr "{0}×{1} Pentagonal Prism (stretched)" # translated by: Andi Chandler https://launchpad.net/~bing on 2015-04-16 09:31:33 UTC #: buildlib/modeldef.py:363 msgid "Octahedron" msgstr "Octahedron" # translated by: Andi Chandler https://launchpad.net/~bing on 2015-04-16 09:31:33 UTC #: buildlib/modeldef.py:364 #, python-brace-format msgid "{0}-Octahedron" msgstr "{0}-Octahedron" # translated by: Andi Chandler https://launchpad.net/~bing on 2015-04-16 09:31:33 UTC #: buildlib/modeldef.py:420 msgid "Dodecahedron" msgstr "Dodecahedron" # translated by: Andi Chandler https://launchpad.net/~bing on 2015-04-16 09:31:33 UTC #: buildlib/modeldef.py:421 #, python-brace-format msgid "{0}-Dodecahedron" msgstr "{0}-Dodecahedron" # translated by: Andi Chandler https://launchpad.net/~bing on 2017-09-23 21:41:21 UTC #: buildlib/modeldef.py:430 msgid "down-back-right" msgstr "down-back-right" # translated by: Andi Chandler https://launchpad.net/~bing on 2017-09-23 21:41:21 UTC #: buildlib/modeldef.py:430 msgid "down-front-right" msgstr "down-front-right" # translated by: Andi Chandler https://launchpad.net/~bing on 2017-09-23 21:43:47 UTC #: buildlib/modeldef.py:431 msgid "down-front" msgstr "down-front" # translated by: Andi Chandler https://launchpad.net/~bing on 2017-09-23 21:43:47 UTC #: buildlib/modeldef.py:431 msgid "down-front-left" msgstr "down-front-left" # translated by: Andi Chandler https://launchpad.net/~bing on 2017-09-23 21:43:47 UTC #: buildlib/modeldef.py:431 msgid "down-back-left" msgstr "down-back-left" # translated by: Andi Chandler https://launchpad.net/~bing on 2017-09-23 21:43:47 UTC #: buildlib/modeldef.py:432 msgid "up-back" msgstr "up-back" # translated by: Andi Chandler https://launchpad.net/~bing on 2017-09-23 21:43:47 UTC #: buildlib/modeldef.py:432 msgid "up-back-right" msgstr "up-back-right" # translated by: Andi Chandler https://launchpad.net/~bing on 2017-09-23 21:43:47 UTC #: buildlib/modeldef.py:432 msgid "up-front-right" msgstr "up-front-right" # translated by: Andi Chandler https://launchpad.net/~bing on 2017-09-23 21:43:47 UTC #: buildlib/modeldef.py:433 msgid "up-front-left" msgstr "up-front-left" # translated by: Andi Chandler https://launchpad.net/~bing on 2017-09-23 21:43:47 UTC #: buildlib/modeldef.py:433 msgid "up-back-left" msgstr "up-back-left" pybik-3.0/po/uk.po0000664000175000017500000020724213173052130014241 0ustar barccbarcc00000000000000# Ukrainian translation for pybik # Copyright (c) 2012-2017 Rosetta Contributors and Canonical Ltd 2012 # This file is distributed under the same license as the pybik package. # FIRST AUTHOR , 2012. # Yuri Chornoivan , 2012. # msgid "" msgstr "" "Project-Id-Version: pybik\n" "Report-Msgid-Bugs-To: https://bugs.launchpad.net/pybik/+filebug\n" "POT-Creation-Date: 2017-09-10 21:58+0200\n" "PO-Revision-Date: 2017-09-18 05:05+0000\n" "Last-Translator: Yuri Chornoivan \n" "Language-Team: Ukrainian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" "X-Launchpad-Export-Date: 2017-09-19 05:11+0000\n" "X-Generator: Launchpad (build 18449)\n" "Language: uk\n" # translated by: yurchor https://launchpad.net/~yurchor-deactivatedaccount on 2012-12-15 00:03:14 UTC #: pybiklib/application.py:294 msgid "Press the Esc key to exit Edit Mode" msgstr "Натисніть клавішу Esc, щоб вийти з режиму редагування" # translated by: yurchor https://launchpad.net/~yurchor-deactivatedaccount on 2012-12-15 00:03:14 UTC #. substitution for {move_text} in statusbar text #: pybiklib/application.py:302 #, python-brace-format msgid "{current} / {total} move" msgid_plural "{current} / {total} moves" msgstr[0] "{current} з {total} ходу" msgstr[1] "{current} з {total} ходів" msgstr[2] "{current} з {total} ходів" # translated by: yurchor https://launchpad.net/~yurchor-deactivatedaccount on 2012-12-15 00:03:14 UTC #. substitution for {solved_text} in statusbar text #: pybiklib/application.py:306 msgid "solved" msgstr "розв’язано" # translated by: yurchor https://launchpad.net/~yurchor-deactivatedaccount on 2012-12-15 00:03:14 UTC #: pybiklib/application.py:306 msgid "not solved" msgstr "не розв’язано" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2017-09-10 10:43:37 UTC #. statusbar text #: pybiklib/application.py:309 #, python-brace-format msgid "{move_text}, {solved_text}" msgstr "{move_text}, {solved_text}" # translated by: yurchor https://launchpad.net/~yurchor-deactivatedaccount on 2012-12-15 00:03:14 UTC #: pybiklib/application.py:314 msgid "Congratulations, you have solved the puzzle!" msgstr "Вітаємо, ви розв’язали головоломку!" # translated by: yurchor https://launchpad.net/~yurchor-deactivatedaccount on 2012-12-15 00:03:14 UTC #. Name of the application, probably should not be translated. #: pybiklib/config.py:35 data/ui/qt/main.ui.h:271 #: data/app-meta/pybik.desktop.in:3 msgid "Pybik" msgstr "Pybik" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-04-08 17:38:24 UTC #. short description #: pybiklib/config.py:65 data/app-meta/pybik.desktop.in:4 msgid "Rubik's cube game" msgstr "Гра з кубиком Рубіка" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-07-21 01:59:37 UTC #. The next 7 lines belong together and form the long description #: pybiklib/config.py:68 msgid "Pybik is a 3D puzzle game about the cube invented by Ernő Rubik." msgstr "Pybik — просторова гра з кубиком, винайденим Ерно Рубіком." # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2017-09-18 05:05:32 UTC #: pybiklib/config.py:70 msgid "" "Various 3D puzzles, such as cubes, towers, prisms, tetrahedra, octahedra, " "dodecahedra and many more" msgstr "" "Різноманітні просторові головоломки, зокрема кубики, башточки, призми, " "тетраедри, октаедри, додекаедри тощо" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-07-21 01:59:37 UTC #: pybiklib/config.py:71 msgid "Solvers for some puzzles" msgstr "Засоби розв’язування для деяких головоломок" # translated by: yurchor https://launchpad.net/~yurchor-deactivatedaccount on 2012-12-15 00:03:14 UTC #. Use something that is common in the Rubik scene in your language, sometimes it's just the equivalent of "patterns". #: pybiklib/config.py:72 data/plugins/80-pretty-patterns.plugins.py:19 #: data/plugins/80-pretty-patterns.plugins.py:22 #: data/plugins/80-pretty-patterns.plugins.py:26 #: data/plugins/80-pretty-patterns.plugins.py:30 #: data/plugins/80-pretty-patterns.plugins.py:34 #: data/plugins/80-pretty-patterns.plugins.py:39 #: data/plugins/80-pretty-patterns.plugins.py:43 #: data/plugins/80-pretty-patterns.plugins.py:48 #: data/plugins/80-pretty-patterns.plugins.py:52 #: data/plugins/80-pretty-patterns.plugins.py:56 #: data/plugins/80-pretty-patterns.plugins.py:60 #: data/plugins/80-pretty-patterns.plugins.py:64 #: data/plugins/80-pretty-patterns.plugins.py:68 #: data/plugins/80-pretty-patterns.plugins.py:72 #: data/plugins/80-pretty-patterns.plugins.py:76 #: data/plugins/80-pretty-patterns.plugins.py:82 #: data/plugins/80-pretty-patterns.plugins.py:86 #: data/plugins/80-pretty-patterns.plugins.py:91 #: data/plugins/80-pretty-patterns.plugins.py:95 #: data/plugins/80-pretty-patterns.plugins.py:99 #: data/plugins/80-pretty-patterns.plugins.py:103 #: data/plugins/80-pretty-patterns.plugins.py:107 #: data/plugins/80-pretty-patterns.plugins.py:111 #: data/plugins/80-pretty-patterns.plugins.py:116 #: data/plugins/80-pretty-patterns.plugins.py:120 #: data/plugins/80-pretty-patterns.plugins.py:124 #: data/plugins/80-pretty-patterns.plugins.py:128 #: data/plugins/80-pretty-patterns.plugins.py:133 #: data/plugins/80-pretty-patterns.plugins.py:137 #: data/plugins/80-pretty-patterns.plugins.py:141 #: data/plugins/80-pretty-patterns.plugins.py:145 #: data/plugins/80-pretty-patterns.plugins.py:149 #: data/plugins/80-pretty-patterns.plugins.py:153 #: data/plugins/80-pretty-patterns.plugins.py:157 #: data/plugins/80-pretty-patterns.plugins.py:161 #: data/plugins/80-pretty-patterns.plugins.py:165 #: data/plugins/80-pretty-patterns.plugins.py:169 #: data/plugins/80-pretty-patterns.plugins.py:173 #: data/plugins/80-pretty-patterns.plugins.py:177 #: data/plugins/80-pretty-patterns.plugins.py:181 #: data/plugins/80-pretty-patterns.plugins.py:185 #: data/plugins/80-pretty-patterns.plugins.py:190 #: data/plugins/80-pretty-patterns.plugins.py:195 #: data/plugins/80-pretty-patterns.plugins.py:199 #: data/plugins/80-pretty-patterns.plugins.py:203 #: data/plugins/80-pretty-patterns.plugins.py:207 #: data/plugins/80-pretty-patterns.plugins.py:211 #: data/plugins/80-pretty-patterns.plugins.py:215 #: data/plugins/80-pretty-patterns.plugins.py:219 msgid "Pretty patterns" msgstr "Чудові візерунки" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-07-21 01:59:37 UTC #: pybiklib/config.py:73 msgid "Editor for move sequences" msgstr "Редактор послідовності обертань" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-07-21 01:59:37 UTC #: pybiklib/config.py:74 msgid "Custom colors and images on the surface of the puzzles" msgstr "Нетипові кольори і зображення на поверхнях головоломок" # translated by: yurchor https://launchpad.net/~yurchor-deactivatedaccount on 2012-12-15 00:03:14 UTC #: pybiklib/config.py:78 msgid "" "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.\n" "\n" "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." msgstr "" "Ця програма є вільним програмним забезпеченням. Ви можете поширювати і/або " "змінювати її за умов дотримання GNU General Public License у тій формі, у " "якій її оприлюднено Free Software Foundation; версії 3 цієї ліцензії або " "(якщо бажаєте) будь-якої пізнішої її версії.\n" "\n" "Ця програм поширюється у сподіванні, що вона буде корисною, але її поширення " "НЕ СУПРОВОДЖУЄТЬСЯ ЖОДНИМИ ГАРАНТІЯМИ навіть очевидними гарантіями " "КОМЕРЦІЙНОЇ ЦІННОСТІ або ПРИДАТНОСТІ ДО ПЕВНОЇ МЕТИ. Докладніше про це можна " "дізнатися з GNU General Public License." # translated by: yurchor https://launchpad.net/~yurchor-deactivatedaccount on 2012-12-15 00:03:14 UTC #. Text between "<" and ">" is expanded to a link by the program and should not be modified. #. Text between "" and "<|>" is the translatable text for the link. #: pybiklib/config.py:90 msgid "" "Read the full text of the GNU General Public " "License<|> or see ." msgstr "" "Ознайомтеся з повним текстом Загальної громадської " "ліцензії GNU<|> або відвідайте сторінку ." # translated by: yurchor https://launchpad.net/~yurchor-deactivatedaccount on 2012-12-15 00:03:14 UTC #: pybiklib/config.py:93 msgid "" "You should have received a copy of the GNU General Public License along with " "this program. If not, see ." msgstr "" "Ви маєте отримати копію GNU General Public License разом з цією програмою. " "Якщо цього не сталося, скористайтеся ." # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2017-09-10 10:43:37 UTC #: pybiklib/config.py:98 #, python-brace-format msgid "" "If you find any bugs in Pybik or have a suggestion for an improvement then " "please submit a <{CONTACT_FILEBUG}|>bug report<|>." msgstr "" "Якщо вами буде виявлено вади у Pybik або у вас виникнуть пропозиції щодо її " "покращення, будь ласка, створіть відповідний <{CONTACT_FILEBUG}|>звіт щодо " "вади<|>." # translated by: yurchor https://launchpad.net/~yurchor-deactivatedaccount on 2012-12-15 00:03:14 UTC #: pybiklib/config.py:103 msgid "" "Translations are managed by the " "Launchpad " "translation group<|>.\n" "\n" "If you want help to translate Pybik to your language you can do it through " "the web interface<|>.\n" "\n" "Read more about \"Translating with " "Launchpad\"<|> and " "\"Starting to " "translate\"<|>." msgstr "" "Переклади виконуються групою перекладачів Launchpad<|>.\n" "\n" "Якщо ви хочете допомогти перекласти Pybik вашою мовою, скористайтеся " "відповідним інтерфейсом<|>.\n" "\n" "Ознайомтеся з настановами щодо " "перекладу за допомогою " "Launchpad<|> та " "початкових " "кроків з перекладу<|>." # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-03-28 23:00:54 UTC #: pybiklib/dialogs.py:44 msgid "Lighting" msgstr "Підсвічування" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-04-08 17:38:24 UTC #: pybiklib/dialogs.py:44 msgid "Simple" msgstr "Простий" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2017-09-18 04:48:01 UTC #. labels are the colored stickers on the cube #: pybiklib/dialogs.py:46 msgid "Labels" msgstr "Мітки" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-04-08 17:43:13 UTC #: pybiklib/dialogs.py:104 data/ui/qt/main.ui.h:275 msgid "Select Puzzle" msgstr "Виберіть головоломку" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2017-09-18 04:48:01 UTC #. 1 slice, 2 slices, 3 slices, ... #: pybiklib/dialogs.py:134 pybiklib/dialogs.py:154 pybiklib/dialogs.py:180 #: pybiklib/dialogs.py:201 msgid "{} slice" msgid_plural "{} slices" msgstr[0] "{} шар" msgstr[1] "{} шари" msgstr[2] "{} шарів" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2017-09-18 04:48:01 UTC #: pybiklib/dialogs.py:196 pybiklib/dialogs.py:225 msgid "{}×{} slices" msgstr "{}×{} шарів" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-04-08 17:38:24 UTC #. The next strings form the text in the help dialog: #. Title of the 1st paragraph #: pybiklib/dialogs.py:290 msgid "Using the mouse to rotate the cube" msgstr "Використання миші для обертання кубика" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-04-08 18:00:10 UTC #. Text of the 1st paragraph, followed by bullet list items #: pybiklib/dialogs.py:292 msgid "" "Position the mouse cursor over the puzzle and you will see an arrow that " "gives you a hint in which direction the slice under the mouse cursor will be " "rotated." msgstr "" "Розташуйте вказівник миші над головоломкою, і програма покаже стрілку, яка " "підкаже вам, у якому напрямку буде обернуто шар під вказівником." # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-04-08 18:00:10 UTC #: pybiklib/dialogs.py:294 msgid "" "The left mouse button rotates a single slice of the cube in the direction of " "the arrow." msgstr "" "Клацання лівою кнопкою миші обертає один шар кубика у напрямку стрілки." # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-04-08 18:00:10 UTC #: pybiklib/dialogs.py:295 msgid "" "The right mouse button rotates a single slice of the cube against the " "direction of the arrow." msgstr "" "Клацання правою кнопкою миші обертає один шар кубика проти напрямку стрілки." # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-04-08 18:00:10 UTC #: pybiklib/dialogs.py:296 msgid "" "To rotate the whole cube instead of a single slice press the Ctrl key " "together with the mouse button." msgstr "" "Щоб обернути увесь кубик, а не лише один шар, натисніть клавішу Ctrl і " "клацніть відповідною кнопкою миші." # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-04-08 18:00:10 UTC #. Title of the 2nd paragraph #: pybiklib/dialogs.py:298 msgid "Using the keyboard to rotate the cube" msgstr "Користуванн яклавіатурою для обертання кубика" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-04-08 18:06:41 UTC #. Text of the 2nd paragraph, followed by bullet list items #: pybiklib/dialogs.py:300 msgid "" "Make sure the keyboard focus is on the cube area (e.g. click on the " "background of the cube). The keys can be configured in the preferences " "dialog, the default is:" msgstr "" "Переконайтеся, що фокус введення з клавіатури перебуває на області кубика " "(наприклад, клацніть лівою кнопкою миші на тлі області показу кубика). " "Клавіатурне керування можна налаштувати у діалоговому вікні параметрів " "програми. Типовим є таке:" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-04-08 17:40:16 UTC #. before the item text is a list of keys #: pybiklib/dialogs.py:303 pybiklib/dialogs.py:318 msgid "Moves the left, right, upper, down, front or back slice clockwise." msgstr "" "Обертання ліворуч, праворуч, вгору, вниз переднього або заднього шару за " "годинниковою стрілкою." # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-04-08 17:40:16 UTC #: pybiklib/dialogs.py:304 pybiklib/dialogs.py:319 msgid "Moves a slice couterclockwise." msgstr "Обертання шару проти годинникової стрілки." # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-04-08 17:40:16 UTC #: pybiklib/dialogs.py:305 pybiklib/dialogs.py:320 msgid "Moves the whole cube." msgstr "Обертання усього кубика." # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-04-08 17:40:16 UTC #. Title of the 3rd paragraph #: pybiklib/dialogs.py:307 msgid "Other keys and buttons" msgstr "Інші клавіші і кнопки" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-04-08 17:40:16 UTC #. bullet list items of the 3rd paragraph #: pybiklib/dialogs.py:309 msgid "Mouse wheel – Zoom in/out" msgstr "Коліщатко миші: збільшення і зменшення масштабу" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-04-08 18:03:47 UTC #: pybiklib/dialogs.py:310 msgid "" "Arrow keys, Left mouse button on the background – Changes the direction of " "looking at the cube." msgstr "" "Клавіші зі стрілками та клацання лівою кнопкою миші на тлі — змінити " "напрямок погляду на кубик." # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-04-08 18:06:41 UTC #: pybiklib/dialogs.py:311 msgid "" "Moves keyboard focus to the sequence editor above the cube area where you " "can edit the move sequence in the notation described below. Hit enter when " "done." msgstr "" "Пересуває фокус введення з клавіатури на область редактора послідовності " "обертань, розташовану над областю показу кубика. Там ви зможете редагувати " "послідовність обертань за допомогою позначень, описаних нижче. Натисніть " "Enter, коли редагування буде завершено." # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-04-08 17:40:16 UTC #. Title of the 4th paragraph #: pybiklib/dialogs.py:315 msgid "Notation for moves" msgstr "Позначення ходів" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-04-08 18:03:47 UTC #. Text of the 4th paragraph, followed by bullet list items #: pybiklib/dialogs.py:317 msgid "" "All moves, however they are made, are displayed progressively above the cube " "area:" msgstr "" "Усі обертання, незалежно від способу виконання, буде показано як " "послідовність над областю показу кубика:" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-04-08 18:09:20 UTC #: pybiklib/dialogs.py:321 msgid "" "Moves the first, second or third slice from left clockwise. The allowed " "numbers are in the range from 1 to the count of parallel slices. \"l1\" is " "always the same as \"l\" and for the classic 3×3×3-Cube \"l2\" is the same " "as \"r2-\" and \"l3\" is the same as \"r-\"." msgstr "" "Обертає перший, другий і третій шар зліва за годинниковою стрілкою. " "Дозволені значення чисел від 1до кількість паралельних шарів. «l1» — те " "саме, що і «l», а для класичного кубика 3×3×3 «l2» — те саме, що і «r2-», а " "«l3» — те саме, що і «r-»." # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-04-08 17:43:13 UTC #: pybiklib/dialogs.py:325 msgid "You can use a space to separate groups of moves." msgstr "Ви можете скористатися пробілом для відокремлення груп обертань." # translated by: yurchor https://launchpad.net/~yurchor-deactivatedaccount on 2012-12-15 00:03:14 UTC #: pybiklib/dialogs.py:379 msgid "Pybik project website" msgstr "Сайт проекту Pybik" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-04-08 17:43:13 UTC #: pybiklib/pluginlib.py:301 msgid "This plugin does not work for any model." msgstr "Цей додаток не працює для жодної з моделей." # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-04-08 17:43:13 UTC #: pybiklib/pluginlib.py:303 pybiklib/pluginlib.py:306 msgid "This plugin only works for:" msgstr "Цей додаток працює лише для таких моделей:" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-04-08 17:43:13 UTC #: pybiklib/pluginlib.py:498 msgid "This puzzle is not solvable." msgstr "Розв’язати цю головоломку неможливо." # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2013-06-02 05:43:42 UTC #. The following 6 words are for the antialiasing levels: disabled, ugly, low, medium, high, higher #: pybiklib/schema.py:211 msgid "disabled" msgstr "вимкнено" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2013-06-02 05:43:42 UTC #: pybiklib/schema.py:211 msgid "ugly" msgstr "слабке" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2013-06-02 05:43:42 UTC #: pybiklib/schema.py:211 msgid "low" msgstr "низьке" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2013-06-02 05:43:42 UTC #: pybiklib/schema.py:212 msgid "medium" msgstr "середнє" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2013-06-02 05:43:42 UTC #: pybiklib/schema.py:212 msgid "high" msgstr "значне" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2013-06-02 05:43:42 UTC #: pybiklib/schema.py:212 msgid "higher" msgstr "потужне" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-03-28 23:00:54 UTC #: data/ui/qt/about.ui.h:212 msgid "About Pybik" msgstr "Про Pybik" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-03-28 23:00:54 UTC #: data/ui/qt/about.ui.h:213 msgid "Translators:" msgstr "Перекладачі:" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-03-28 23:00:54 UTC #: data/ui/qt/about.ui.h:214 msgid "About" msgstr "Про програму" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2017-09-18 04:48:01 UTC #: data/ui/qt/about.ui.h:215 msgid "Contribute" msgstr "Зробити внесок" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-03-28 23:00:54 UTC #: data/ui/qt/about.ui.h:216 msgid "License" msgstr "Ліцензія" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-04-08 17:43:13 UTC #: data/ui/qt/help.ui.h:53 data/ui/qt/main.ui.h:297 msgid "Help" msgstr "Довідка" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2017-09-18 05:00:11 UTC #: data/ui/qt/main.ui.h:272 msgid "&New Challenge" msgstr "&Нова спроба" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-03-28 23:00:54 UTC #: data/ui/qt/main.ui.h:273 msgid "Ne&w Solved" msgstr "Н&овий розв’язаний" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-03-28 23:00:54 UTC #: data/ui/qt/main.ui.h:274 msgid "&Quit" msgstr "Ви&йти" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-03-28 23:00:54 UTC #: data/ui/qt/main.ui.h:276 msgid "&Set as Initial State" msgstr "З&робити початковим станом" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-03-28 23:00:54 UTC #: data/ui/qt/main.ui.h:277 msgid "&Reset Rotation" msgstr "С&кинути обертання" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-03-28 23:00:54 UTC #: data/ui/qt/main.ui.h:278 msgid "&Preferences …" msgstr "П&араметри…" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-03-28 23:00:54 UTC #: data/ui/qt/main.ui.h:279 msgid "&Status Bar" msgstr "Смужка &стану" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-03-28 23:00:54 UTC #: data/ui/qt/main.ui.h:280 msgid "&Info …" msgstr "Ін&формація…" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-03-28 23:00:54 UTC #: data/ui/qt/main.ui.h:281 msgid "Rewind" msgstr "Повний назад" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-03-28 23:00:54 UTC #: data/ui/qt/main.ui.h:282 msgid "Previous" msgstr "Попередній" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-03-28 23:00:54 UTC #: data/ui/qt/main.ui.h:283 msgid "Stop" msgstr "Зупинити" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-03-28 23:00:54 UTC #: data/ui/qt/main.ui.h:284 msgid "Play" msgstr "Пуск" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-03-28 23:00:54 UTC #: data/ui/qt/main.ui.h:285 msgid "Next" msgstr "Далі" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-03-28 23:00:54 UTC #: data/ui/qt/main.ui.h:286 msgid "Forward" msgstr "Вперед" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-03-28 23:00:54 UTC #: data/ui/qt/main.ui.h:287 msgid "Add Mark" msgstr "Додати позначку" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-03-28 23:00:54 UTC #: data/ui/qt/main.ui.h:289 msgid "Mark the current place in the sequence of moves" msgstr "Встановити позначку на поточній позиції у послідовності обертань" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-03-28 23:00:54 UTC #: data/ui/qt/main.ui.h:291 msgid "Remove Mark" msgstr "Вилучити позначку" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-03-28 23:00:54 UTC #: data/ui/qt/main.ui.h:293 msgid "Remove the mark at the current place in the sequence of moves" msgstr "Вилучити позначку з поточного місця у послідовності ходів" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-03-28 23:00:54 UTC #: data/ui/qt/main.ui.h:295 msgid "&Edit Bar" msgstr "Панель &редагування" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-04-08 17:43:13 UTC #: data/ui/qt/main.ui.h:296 msgid "&Help …" msgstr "&Довідка…" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-03-28 23:00:54 UTC #: data/ui/qt/preferences.ui.h:372 msgid "Preferences" msgstr "Параметри" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-03-28 23:00:54 UTC #: data/ui/qt/preferences.ui.h:373 msgid "Animation Speed:" msgstr "Швидкість анімації:" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-03-28 23:00:54 UTC #: data/ui/qt/preferences.ui.h:375 msgid "Mirror Distance:" msgstr "Відстань до дзеркала:" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-04-08 17:43:13 UTC #: data/ui/qt/preferences.ui.h:377 msgid "Quality:" msgstr "Якість:" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-04-08 17:43:13 UTC #: data/ui/qt/preferences.ui.h:380 msgid "" "Lower antialiasing has better performance, higher antialiasing has better " "quality." msgstr "" "Нижчий рівень згладжування забезпечить кращу швидкодію, а вищий — кращу " "якість." # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-04-08 17:44:36 UTC #: data/ui/qt/preferences.ui.h:382 msgid "Antialiasing:" msgstr "Згладжування:" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2013-06-02 05:43:42 UTC #: data/ui/qt/preferences.ui.h:384 msgid "The program needs to be restarted for the changes to take effect." msgstr "Щоб зміни набули чинності, програму слід перезапустити." # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-03-28 23:00:54 UTC #: data/ui/qt/preferences.ui.h:385 msgid "Graphic" msgstr "Графіка" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2017-09-18 04:48:01 UTC #: data/ui/qt/preferences.ui.h:386 msgid "Point and click, all directions" msgstr "Вкажіть і клацніть, усі напрямки" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2017-09-18 04:48:01 UTC #: data/ui/qt/preferences.ui.h:387 msgid "Point and click, simplified" msgstr "Вкажіть і клацніть, спрощено" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2017-09-18 04:48:01 UTC #: data/ui/qt/preferences.ui.h:388 msgid "Gestures" msgstr "Жести" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-03-28 23:00:54 UTC #: data/ui/qt/preferences.ui.h:389 msgid "Mouse" msgstr "Миша" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-03-28 23:00:54 UTC #: data/ui/qt/preferences.ui.h:391 data/ui/qt/preferences.ui.h:393 msgid "Add" msgstr "Додати" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-03-28 23:00:54 UTC #: data/ui/qt/preferences.ui.h:395 data/ui/qt/preferences.ui.h:397 msgid "Remove" msgstr "Вилучити" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-03-28 23:00:54 UTC #: data/ui/qt/preferences.ui.h:399 data/ui/qt/preferences.ui.h:401 msgid "Reset" msgstr "Скинути" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-03-28 23:00:54 UTC #: data/ui/qt/preferences.ui.h:402 msgid "Keys" msgstr "Клавіші" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-03-28 23:00:54 UTC #: data/ui/qt/preferences.ui.h:403 msgid "Color:" msgstr "Колір:" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-03-28 23:00:54 UTC #: data/ui/qt/preferences.ui.h:405 msgid "Image File:" msgstr "Файл зображення:" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-03-28 23:00:54 UTC #: data/ui/qt/preferences.ui.h:407 msgid "Tiled" msgstr "Плиткою" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-03-28 23:00:54 UTC #: data/ui/qt/preferences.ui.h:408 msgid "Mosaic" msgstr "Мозаїка" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-03-28 23:00:54 UTC #: data/ui/qt/preferences.ui.h:409 msgid "Background:" msgstr "Тло:" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-03-28 23:00:54 UTC #: data/ui/qt/preferences.ui.h:411 msgid "Appearance" msgstr "Вигляд" # translated by: yurchor https://launchpad.net/~yurchor-deactivatedaccount on 2012-12-15 00:03:14 UTC #: pybiklib/ext/qt.py:1578 msgid "Move" msgstr "Хід" # translated by: yurchor https://launchpad.net/~yurchor-deactivatedaccount on 2012-12-15 00:03:14 UTC #: pybiklib/ext/qt.py:1581 msgid "Key" msgstr "Клавіша" # translated by: yurchor https://launchpad.net/~yurchor-deactivatedaccount on 2012-12-15 00:03:14 UTC #: pybiklib/ext/qt.py:1682 msgid "Open Image" msgstr "Відкрити зображення" # translated by: yurchor https://launchpad.net/~yurchor-deactivatedaccount on 2012-12-15 00:03:14 UTC #: pybiklib/ext/qt.py:1720 msgid "plain" msgstr "площина" # translated by: yurchor https://launchpad.net/~yurchor-deactivatedaccount on 2012-12-15 00:03:14 UTC #: pybiklib/ext/qt.py:1723 msgid "select …" msgstr "вибрати…" # translated by: yurchor https://launchpad.net/~yurchor-deactivatedaccount on 2012-12-15 00:03:14 UTC #: pybiklib/ext/qtui.py:94 msgid "Press a key …" msgstr "Натисніть клавішу…" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2013-06-02 05:44:28 UTC #. Add whatever keywords you want in your language, separated by semicolons, last character must be a semicolon. These keywords are used when searching for applications in Unity, GNOME Shell, etc. #: data/app-meta/pybik.desktop.in:10 msgid "rubik;cube;puzzle;magic;" msgstr "rubik;cube;puzzle;magic;рубік;кубик;головоломка;загадка;гра;" # translated by: yurchor https://launchpad.net/~yurchor-deactivatedaccount on 2012-12-15 00:03:14 UTC #: data/plugins/01-challenges.plugins.py:18 #: data/plugins/01-challenges.plugins.py:21 #: data/plugins/01-challenges.plugins.py:24 #: data/plugins/01-challenges.plugins.py:27 #: data/plugins/01-challenges.plugins.py:30 #: data/plugins/01-challenges.plugins.py:33 #: data/plugins/01-challenges.plugins.py:36 #: data/plugins/01-challenges.plugins.py:39 #: data/plugins/01-challenges.plugins.py:42 #: data/plugins/01-challenges.plugins.py:45 #: data/plugins/01-challenges.plugins.py:48 msgid "Challenges" msgstr "Виклики" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-07-21 06:18:48 UTC #: data/plugins/01-challenges.plugins.py:19 msgid "Solve random puzzle" msgstr "Скласти випадкову головоломку" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-04-08 18:01:46 UTC #: data/plugins/01-challenges.plugins.py:22 #: data/plugins/01-challenges.plugins.py:25 #: data/plugins/01-challenges.plugins.py:28 #: data/plugins/01-challenges.plugins.py:31 #: data/plugins/01-challenges.plugins.py:34 #: data/plugins/01-challenges.plugins.py:37 #: data/plugins/01-challenges.plugins.py:40 #: data/plugins/01-challenges.plugins.py:43 #: data/plugins/01-challenges.plugins.py:46 #: data/plugins/01-challenges.plugins.py:49 msgid "Solve in {} move" msgid_plural "Solve in {} moves" msgstr[0] "Розв’язати за {} обертання" msgstr[1] "Розв’язати за {} обертання" msgstr[2] "Розв’язати за {} обертань" # translated by: yurchor https://launchpad.net/~yurchor-deactivatedaccount on 2012-12-15 00:03:14 UTC #: data/plugins/10-beginners.plugins.py:31 #: data/plugins/10-beginners.plugins.py:34 #: data/plugins/10-beginners.plugins.py:56 #: data/plugins/10-beginners.plugins.py:73 #: data/plugins/10-beginners.plugins.py:100 #: data/plugins/10-beginners.plugins.py:118 #: data/plugins/10-beginners.plugins.py:140 #: data/plugins/10-beginners.plugins.py:158 #: data/plugins/14-leyan-lo.plugins.py:21 #: data/plugins/14-leyan-lo.plugins.py:24 #: data/plugins/14-leyan-lo.plugins.py:53 #: data/plugins/14-leyan-lo.plugins.py:74 #: data/plugins/14-leyan-lo.plugins.py:90 #: data/plugins/14-leyan-lo.plugins.py:107 #: data/plugins/14-leyan-lo.plugins.py:129 #: data/plugins/14-leyan-lo.plugins.py:170 #: data/plugins/150-spiegel.plugins.py:32 #: data/plugins/150-spiegel.plugins.py:35 #: data/plugins/150-spiegel.plugins.py:64 #: data/plugins/150-spiegel.plugins.py:85 #: data/plugins/150-spiegel.plugins.py:100 #: data/plugins/150-spiegel.plugins.py:113 #: data/plugins/150-spiegel.plugins.py:130 #: data/plugins/150-spiegel.plugins.py:141 #: data/plugins/151-spiegel-improved.plugins.py:20 #: data/plugins/151-spiegel-improved.plugins.py:23 #: data/plugins/151-spiegel-improved.plugins.py:68 #: data/plugins/151-spiegel-improved.plugins.py:107 #: data/plugins/151-spiegel-improved.plugins.py:139 #: data/plugins/151-spiegel-improved.plugins.py:165 #: data/plugins/151-spiegel-improved.plugins.py:183 #: data/plugins/151-spiegel-improved.plugins.py:197 #: data/plugins/20-2x2x2.plugins.py:18 data/plugins/20-2x2x2.plugins.py:21 #: data/plugins/20-2x2x2.plugins.py:37 data/plugins/20-2x2x2.plugins.py:55 msgid "Solvers" msgstr "Розв’язувачі" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-04-08 17:44:36 UTC #: data/plugins/10-beginners.plugins.py:32 #: data/plugins/10-beginners.plugins.py:35 #: data/plugins/10-beginners.plugins.py:57 #: data/plugins/10-beginners.plugins.py:74 #: data/plugins/10-beginners.plugins.py:101 #: data/plugins/10-beginners.plugins.py:119 #: data/plugins/10-beginners.plugins.py:141 #: data/plugins/10-beginners.plugins.py:159 msgid "Beginner's method" msgstr "Метод для початківців" # translated by: yurchor https://launchpad.net/~yurchor-deactivatedaccount on 2012-12-15 00:03:14 UTC #: data/plugins/10-beginners.plugins.py:36 #: data/plugins/14-leyan-lo.plugins.py:26 #: data/plugins/150-spiegel.plugins.py:37 #: data/plugins/151-spiegel-improved.plugins.py:25 msgid "Top edges" msgstr "Верхні краї" # translated by: yurchor https://launchpad.net/~yurchor-deactivatedaccount on 2012-12-15 00:03:14 UTC #: data/plugins/10-beginners.plugins.py:58 #: data/plugins/14-leyan-lo.plugins.py:55 #: data/plugins/150-spiegel.plugins.py:66 #: data/plugins/151-spiegel-improved.plugins.py:70 msgid "Top corners" msgstr "Верхні кути" # translated by: yurchor https://launchpad.net/~yurchor-deactivatedaccount on 2012-12-15 00:03:14 UTC #: data/plugins/10-beginners.plugins.py:75 #: data/plugins/14-leyan-lo.plugins.py:76 #: data/plugins/150-spiegel.plugins.py:87 #: data/plugins/151-spiegel-improved.plugins.py:109 msgid "Middle slice" msgstr "Середній шар" # translated by: yurchor https://launchpad.net/~yurchor-deactivatedaccount on 2012-12-15 00:03:14 UTC #: data/plugins/10-beginners.plugins.py:102 #: data/plugins/14-leyan-lo.plugins.py:92 #: data/plugins/150-spiegel.plugins.py:115 #: data/plugins/151-spiegel-improved.plugins.py:167 msgid "Bottom edge orient" msgstr "Орієнтація нижнього краю" # translated by: yurchor https://launchpad.net/~yurchor-deactivatedaccount on 2012-12-15 00:03:14 UTC #: data/plugins/10-beginners.plugins.py:120 #: data/plugins/14-leyan-lo.plugins.py:131 #: data/plugins/150-spiegel.plugins.py:143 #: data/plugins/151-spiegel-improved.plugins.py:199 #: data/plugins/20-2x2x2.plugins.py:57 msgid "Bottom corner orient" msgstr "Орієнтація нижнього кута" # translated by: yurchor https://launchpad.net/~yurchor-deactivatedaccount on 2012-12-15 00:03:14 UTC #: data/plugins/10-beginners.plugins.py:142 #: data/plugins/14-leyan-lo.plugins.py:109 #: data/plugins/150-spiegel.plugins.py:132 #: data/plugins/151-spiegel-improved.plugins.py:185 #: data/plugins/20-2x2x2.plugins.py:39 msgid "Bottom corner place" msgstr "Місце нижнього кута" # translated by: yurchor https://launchpad.net/~yurchor-deactivatedaccount on 2012-12-15 00:03:14 UTC #: data/plugins/10-beginners.plugins.py:160 #: data/plugins/14-leyan-lo.plugins.py:172 #: data/plugins/150-spiegel.plugins.py:102 #: data/plugins/151-spiegel-improved.plugins.py:141 msgid "Bottom edge place" msgstr "Місце нижнього краю" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-04-08 17:44:36 UTC #. Leyan Lo is the inventor of the solution #: data/plugins/14-leyan-lo.plugins.py:23 #: data/plugins/14-leyan-lo.plugins.py:25 #: data/plugins/14-leyan-lo.plugins.py:54 #: data/plugins/14-leyan-lo.plugins.py:75 #: data/plugins/14-leyan-lo.plugins.py:91 #: data/plugins/14-leyan-lo.plugins.py:108 #: data/plugins/14-leyan-lo.plugins.py:130 #: data/plugins/14-leyan-lo.plugins.py:171 msgid "Leyan Lo" msgstr "Леян Ло" # translated by: yurchor https://launchpad.net/~yurchor-deactivatedaccount on 2012-12-15 00:03:14 UTC #. Spiegel is a german magazine #: data/plugins/150-spiegel.plugins.py:34 #: data/plugins/150-spiegel.plugins.py:36 #: data/plugins/150-spiegel.plugins.py:65 #: data/plugins/150-spiegel.plugins.py:86 #: data/plugins/150-spiegel.plugins.py:101 #: data/plugins/150-spiegel.plugins.py:114 #: data/plugins/150-spiegel.plugins.py:131 #: data/plugins/150-spiegel.plugins.py:142 msgid "Spiegel" msgstr "Метод Шпігеля" # translated by: yurchor https://launchpad.net/~yurchor-deactivatedaccount on 2012-12-15 00:03:14 UTC #. Spiegel is a german magazine #: data/plugins/151-spiegel-improved.plugins.py:22 #: data/plugins/151-spiegel-improved.plugins.py:24 #: data/plugins/151-spiegel-improved.plugins.py:69 #: data/plugins/151-spiegel-improved.plugins.py:108 #: data/plugins/151-spiegel-improved.plugins.py:140 #: data/plugins/151-spiegel-improved.plugins.py:166 #: data/plugins/151-spiegel-improved.plugins.py:184 #: data/plugins/151-spiegel-improved.plugins.py:198 msgid "Spiegel improved" msgstr "Покращений метод Шпігеля" # translated by: yurchor https://launchpad.net/~yurchor-deactivatedaccount on 2012-12-15 00:03:14 UTC #: data/plugins/20-2x2x2.plugins.py:19 data/plugins/20-2x2x2.plugins.py:22 #: data/plugins/20-2x2x2.plugins.py:38 data/plugins/20-2x2x2.plugins.py:56 msgid "2×2×2" msgstr "2×2×2" # translated by: yurchor https://launchpad.net/~yurchor-deactivatedaccount on 2012-12-15 00:03:14 UTC #: data/plugins/20-2x2x2.plugins.py:23 msgid "Top slice" msgstr "Верхній шар" # translated by: yurchor https://launchpad.net/~yurchor-deactivatedaccount on 2012-12-15 00:03:14 UTC #: data/plugins/80-pretty-patterns.plugins.py:20 #: data/plugins/80-pretty-patterns.plugins.py:23 #: data/plugins/80-pretty-patterns.plugins.py:27 #: data/plugins/80-pretty-patterns.plugins.py:31 #: data/plugins/80-pretty-patterns.plugins.py:35 #: data/plugins/80-pretty-patterns.plugins.py:40 #: data/plugins/80-pretty-patterns.plugins.py:44 msgid "Stripes" msgstr "Смуги" # translated by: yurchor https://launchpad.net/~yurchor-deactivatedaccount on 2012-12-15 00:03:14 UTC #: data/plugins/80-pretty-patterns.plugins.py:49 #: data/plugins/80-pretty-patterns.plugins.py:53 msgid "Criss-Cross" msgstr "Хрест-навхрест" # translated by: yurchor https://launchpad.net/~yurchor-deactivatedaccount on 2012-12-15 00:03:14 UTC #: data/plugins/80-pretty-patterns.plugins.py:57 msgid "Fried Eggs" msgstr "Яєшня" # translated by: yurchor https://launchpad.net/~yurchor-deactivatedaccount on 2012-12-15 00:03:14 UTC #: data/plugins/80-pretty-patterns.plugins.py:61 msgid "Big Fried Eggs" msgstr "Велика оката яєшня" # translated by: yurchor https://launchpad.net/~yurchor-deactivatedaccount on 2012-12-15 00:03:14 UTC #: data/plugins/80-pretty-patterns.plugins.py:65 #: data/plugins/80-pretty-patterns.plugins.py:69 msgid "4 Fried Eggs" msgstr "4 очка у яєшні" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-04-08 17:44:36 UTC #: data/plugins/80-pretty-patterns.plugins.py:73 msgid "2 Fried Eggs" msgstr "Дві яєшні" # translated by: yurchor https://launchpad.net/~yurchor-deactivatedaccount on 2012-12-15 00:03:14 UTC #: data/plugins/80-pretty-patterns.plugins.py:77 msgid "Chessboard" msgstr "Шахова дошка" # translated by: yurchor https://launchpad.net/~yurchor-deactivatedaccount on 2012-12-15 00:03:14 UTC #: data/plugins/80-pretty-patterns.plugins.py:83 msgid "Cross" msgstr "Хрестик" # translated by: yurchor https://launchpad.net/~yurchor-deactivatedaccount on 2012-12-15 00:03:14 UTC #: data/plugins/80-pretty-patterns.plugins.py:87 msgid "Zig Zag" msgstr "Зиґзаґ" # translated by: yurchor https://launchpad.net/~yurchor-deactivatedaccount on 2012-12-15 00:03:14 UTC #. T is the shape formed by the cube labels. T-Time is a pun (Tea Time) and not suitable for literal translation. Don't translate it or use something common or whatever you think makes sense. #: data/plugins/80-pretty-patterns.plugins.py:93 #: data/plugins/80-pretty-patterns.plugins.py:96 #: data/plugins/80-pretty-patterns.plugins.py:100 #: data/plugins/80-pretty-patterns.plugins.py:104 #: data/plugins/80-pretty-patterns.plugins.py:108 #: data/plugins/80-pretty-patterns.plugins.py:112 msgid "T-Time" msgstr "Час-T" # translated by: yurchor https://launchpad.net/~yurchor-deactivatedaccount on 2012-12-15 00:03:14 UTC #. C is the shape formed by the cube labels #: data/plugins/80-pretty-patterns.plugins.py:118 msgid "C" msgstr "C" # translated by: yurchor https://launchpad.net/~yurchor-deactivatedaccount on 2012-12-15 00:03:14 UTC #: data/plugins/80-pretty-patterns.plugins.py:121 msgid "Cube in a Cube" msgstr "Куб у кубі" # translated by: yurchor https://launchpad.net/~yurchor-deactivatedaccount on 2012-12-15 00:03:14 UTC #: data/plugins/80-pretty-patterns.plugins.py:125 msgid "Striped Cube in a Cube" msgstr "Смуговий куб у кубі" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-04-08 17:44:36 UTC #: data/plugins/80-pretty-patterns.plugins.py:129 msgid "Six square cuboids" msgstr "Шість квадратних кубоїдів" # translated by: yurchor https://launchpad.net/~yurchor-deactivatedaccount on 2012-12-15 00:03:14 UTC #. Superflip may be not translated, because it has a special meaning in the mathematical theory behind the Rubik's Cube. #: data/plugins/80-pretty-patterns.plugins.py:135 msgid "Superflip" msgstr "Супервіддзеркалення" # translated by: yurchor https://launchpad.net/~yurchor-deactivatedaccount on 2012-12-15 00:03:14 UTC #: data/plugins/80-pretty-patterns.plugins.py:138 msgid "Superflip easy" msgstr "Просте супервіддзеркалення" # translated by: yurchor https://launchpad.net/~yurchor-deactivatedaccount on 2012-12-15 00:03:14 UTC #: data/plugins/80-pretty-patterns.plugins.py:142 msgid "Green Mamba" msgstr "Зелена мамба" # translated by: yurchor https://launchpad.net/~yurchor-deactivatedaccount on 2012-12-15 00:03:14 UTC #: data/plugins/80-pretty-patterns.plugins.py:146 msgid "Anaconda" msgstr "Анаконда" # translated by: yurchor https://launchpad.net/~yurchor-deactivatedaccount on 2012-12-15 00:03:14 UTC #: data/plugins/80-pretty-patterns.plugins.py:150 msgid "Duck Feet" msgstr "Качина лапа" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-04-08 17:44:36 UTC #: data/plugins/80-pretty-patterns.plugins.py:154 #: data/plugins/80-pretty-patterns.plugins.py:158 #: data/plugins/80-pretty-patterns.plugins.py:162 #: data/plugins/80-pretty-patterns.plugins.py:166 #: data/plugins/80-pretty-patterns.plugins.py:170 #: data/plugins/80-pretty-patterns.plugins.py:174 #: data/plugins/80-pretty-patterns.plugins.py:178 #: data/plugins/80-pretty-patterns.plugins.py:182 msgid "Plus" msgstr "Плюс" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-04-08 17:44:36 UTC #: data/plugins/80-pretty-patterns.plugins.py:186 #: data/plugins/80-pretty-patterns.plugins.py:191 #: data/plugins/80-pretty-patterns.plugins.py:196 #: data/plugins/80-pretty-patterns.plugins.py:200 msgid "Minus" msgstr "Мінус" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-04-08 17:44:36 UTC #: data/plugins/80-pretty-patterns.plugins.py:204 msgid "Volcano" msgstr "Вулкан" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-04-08 17:44:36 UTC #: data/plugins/80-pretty-patterns.plugins.py:208 msgid "Checkerboard (easy)" msgstr "Шахівниця (просто)" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-04-08 17:51:05 UTC #: data/plugins/80-pretty-patterns.plugins.py:212 msgid "Checkerboard (fast)" msgstr "Шахівниця (швидко)" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-04-08 17:51:05 UTC #: data/plugins/80-pretty-patterns.plugins.py:216 msgid "Mixed Checkerboard" msgstr "Мішана шахівниця" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-04-08 17:51:05 UTC #: data/plugins/80-pretty-patterns.plugins.py:220 msgid "Tipi" msgstr "Тіпі" # translated by: yurchor https://launchpad.net/~yurchor-deactivatedaccount on 2012-12-15 00:03:14 UTC #: data/plugins/90-library.plugins.py:18 data/plugins/90-library.plugins.py:22 #: data/plugins/90-library.plugins.py:26 data/plugins/90-library.plugins.py:30 #: data/plugins/90-library.plugins.py:34 data/plugins/90-library.plugins.py:38 #: data/plugins/90-library.plugins.py:42 data/plugins/90-library.plugins.py:46 #: data/plugins/90-library.plugins.py:50 data/plugins/90-library.plugins.py:54 #: data/plugins/90-library.plugins.py:58 data/plugins/90-library.plugins.py:62 #: data/plugins/90-library.plugins.py:66 data/plugins/90-library.plugins.py:70 #: data/plugins/90-library.plugins.py:74 data/plugins/90-library.plugins.py:78 #: data/plugins/90-library.plugins.py:82 data/plugins/90-library.plugins.py:86 #: data/plugins/90-library.plugins.py:91 data/plugins/90-library.plugins.py:96 #: data/plugins/90-library.plugins.py:101 #: data/plugins/90-library.plugins.py:105 #: data/plugins/90-library.plugins.py:110 #: data/plugins/90-library.plugins.py:115 #: data/plugins/90-library.plugins.py:119 #: data/plugins/90-library.plugins.py:123 #: data/plugins/90-library.plugins.py:127 msgid "Library" msgstr "Бібліотека" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-04-08 17:51:05 UTC #: data/plugins/90-library.plugins.py:19 data/plugins/90-library.plugins.py:23 #: data/plugins/90-library.plugins.py:27 data/plugins/90-library.plugins.py:31 #: data/plugins/90-library.plugins.py:35 msgid "Swap edges" msgstr "Поміняти місцями краї" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-04-08 17:51:05 UTC #: data/plugins/90-library.plugins.py:20 msgid "3 edges ⟳, top layer" msgstr "3 реберних ⟳, верхній шар" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-04-08 17:51:05 UTC #: data/plugins/90-library.plugins.py:24 msgid "3 edges ⟲, top layer" msgstr "3 реберних ⟲, верхній шар" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-04-08 17:51:05 UTC #: data/plugins/90-library.plugins.py:28 msgid "3 edges, middle layer" msgstr "3 реберних, середній шар" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-04-08 17:51:05 UTC #: data/plugins/90-library.plugins.py:32 msgid "4 edges, front and right" msgstr "4 реберних, передній і правий" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-04-08 17:51:05 UTC #: data/plugins/90-library.plugins.py:36 msgid "4 edges, front and back" msgstr "4 реберних, передній і задній" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-04-08 17:51:05 UTC #: data/plugins/90-library.plugins.py:39 msgid "Swap 2 edges and 2 corners, top layer" msgstr "Поміняти місцями 2 реберних і 2 кутових, верхній шар" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-04-08 17:53:02 UTC #: data/plugins/90-library.plugins.py:43 data/plugins/90-library.plugins.py:47 msgid "Flip edges" msgstr "Поміняти місцями реберні" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-04-08 17:53:02 UTC #: data/plugins/90-library.plugins.py:44 msgid "4 edges" msgstr "4 реберних" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-04-08 17:53:02 UTC #: data/plugins/90-library.plugins.py:48 msgid "2 edges, top layer" msgstr "2 реберних, верхній шар" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-04-08 17:53:02 UTC #: data/plugins/90-library.plugins.py:51 data/plugins/90-library.plugins.py:55 #: data/plugins/90-library.plugins.py:59 data/plugins/90-library.plugins.py:63 #: data/plugins/90-library.plugins.py:67 data/plugins/90-library.plugins.py:71 msgid "Swap corners" msgstr "Поміняти місцями кутові" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-04-08 17:53:02 UTC #: data/plugins/90-library.plugins.py:52 data/plugins/90-library.plugins.py:76 msgid "2 corners, top layer" msgstr "2 кутових, верхній шар" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-04-08 17:53:02 UTC #: data/plugins/90-library.plugins.py:56 msgid "2 corners diagonal, top layer" msgstr "2 кутових за діагоналлю, верхній шар" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-04-08 17:53:02 UTC #: data/plugins/90-library.plugins.py:60 data/plugins/90-library.plugins.py:80 msgid "3 corners ⟳, top layer" msgstr "3 кутових ⟳, верхній шар" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-04-08 17:53:02 UTC #: data/plugins/90-library.plugins.py:64 msgid "3 corners ⟲, top layer" msgstr "3 кутових ⟲, верхній шар" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-04-08 17:53:02 UTC #: data/plugins/90-library.plugins.py:68 msgid "4 corners, top layer" msgstr "4 кутових, верхній шар" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-04-08 17:53:02 UTC #: data/plugins/90-library.plugins.py:72 msgid "2 corners, partial sequence, top layer" msgstr "2 кутових, часткова послідовність, верхній шар" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-04-08 17:57:15 UTC #: data/plugins/90-library.plugins.py:75 data/plugins/90-library.plugins.py:79 #: data/plugins/90-library.plugins.py:83 data/plugins/90-library.plugins.py:87 msgid "Rotate corners" msgstr "Обертання кутових" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-04-08 17:57:15 UTC #: data/plugins/90-library.plugins.py:84 msgid "1 corner ⟳, partial sequence, top layer" msgstr "1 кутовий ⟳, часткова послідовність, верхній шар" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-04-08 17:57:15 UTC #: data/plugins/90-library.plugins.py:88 msgid "1 corner ⟲, partial sequence, top layer" msgstr "1 кутовий ⟲, часткова послідовність, верхній шар" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-04-08 17:57:15 UTC #: data/plugins/90-library.plugins.py:92 data/plugins/90-library.plugins.py:97 #: data/plugins/90-library.plugins.py:102 #: data/plugins/90-library.plugins.py:111 msgid "Rotate center" msgstr "Обертання центрального" # translated by: yurchor https://launchpad.net/~yurchor-deactivatedaccount on 2012-12-15 00:03:14 UTC #. 2 rotations of the center face in the upper layer #: data/plugins/90-library.plugins.py:94 msgid "2×Up" msgstr "Подвійний вгору" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-04-08 17:57:15 UTC #. Up clockwise and front clockwise #: data/plugins/90-library.plugins.py:99 msgid "Up ⟳ and front ⟳" msgstr "Верхній ⟳ і передній ⟳" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-04-08 17:57:15 UTC #. Up clockwise and front counterclockwise #: data/plugins/90-library.plugins.py:104 msgid "Up ⟳ and front ⟲" msgstr "Верхній ⟳ і передній ⟲" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-04-08 17:57:15 UTC #: data/plugins/90-library.plugins.py:106 msgid "Swap center parts, up and front" msgstr "Обмін місцями центральних частин, верхньої і передньої" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-04-08 17:57:15 UTC #. Up clockwise and down counterclockwise #: data/plugins/90-library.plugins.py:113 msgid "Up ⟳ and down ⟲" msgstr "Верхній ⟳ і нижній ⟲" # translated by: yurchor https://launchpad.net/~yurchor-deactivatedaccount on 2012-12-15 00:03:14 UTC #: data/plugins/90-library.plugins.py:116 #: data/plugins/90-library.plugins.py:120 #: data/plugins/90-library.plugins.py:124 #: data/plugins/90-library.plugins.py:128 msgid "Misc" msgstr "Інше" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-04-08 17:57:15 UTC #. Yields in a rotated back layer, but the sequence of moves does not touch the back layer #: data/plugins/90-library.plugins.py:118 #: data/plugins/90-library.plugins.py:125 #: data/plugins/90-library.plugins.py:129 msgid "Back without back" msgstr "Задній без заднього" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-04-08 17:57:15 UTC #: data/plugins/90-library.plugins.py:121 msgid "2×Back without back" msgstr "Подвійний задній без заднього" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-04-08 18:03:47 UTC #: data/plugins/95-transformations.plugins.py:18 #: data/plugins/95-transformations.plugins.py:21 #: data/plugins/95-transformations.plugins.py:24 msgid "Move transformations" msgstr "Перетворення обертань" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-04-08 18:01:46 UTC #: data/plugins/95-transformations.plugins.py:19 msgid "Invert move sequence" msgstr "Інвертувати послідовність обертань" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-04-08 18:01:46 UTC #: data/plugins/95-transformations.plugins.py:22 msgid "Normalize cube rotations" msgstr "Нормалізувати обертання кубика" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-04-08 18:01:46 UTC #: data/plugins/95-transformations.plugins.py:25 msgid "Normalize move sequence" msgstr "Нормалізувати послідовність обертань" # translated by: yurchor https://launchpad.net/~yurchor-deactivatedaccount on 2012-12-15 00:03:14 UTC #: buildlib/modeldef.py:110 msgid "Brick" msgstr "Цеглинка" # translated by: yurchor https://launchpad.net/~yurchor-deactivatedaccount on 2012-12-15 00:03:14 UTC #: buildlib/modeldef.py:111 #, python-brace-format msgid "{0}×{1}×{2}-Brick" msgstr "Цеглинка-{0}×{1}×{2}" # translated by: yurchor https://launchpad.net/~yurchor-deactivatedaccount on 2012-12-15 00:03:14 UTC #: buildlib/modeldef.py:112 msgid "Width:" msgstr "Ширина:" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2012-12-15 08:39:55 UTC #: buildlib/modeldef.py:112 buildlib/modeldef.py:151 buildlib/modeldef.py:249 #: buildlib/modeldef.py:300 buildlib/modeldef.py:311 msgid "Height:" msgstr "Висота:" # translated by: yurchor https://launchpad.net/~yurchor-deactivatedaccount on 2012-12-15 00:03:14 UTC #: buildlib/modeldef.py:112 msgid "Depth:" msgstr "Глибина:" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2017-09-18 04:57:34 UTC #: buildlib/modeldef.py:120 buildlib/modeldef.py:257 buildlib/modeldef.py:319 #: buildlib/modeldef.py:374 buildlib/modeldef.py:433 msgid "up" msgstr "вгору" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2017-09-18 04:57:34 UTC #: buildlib/modeldef.py:120 buildlib/modeldef.py:205 buildlib/modeldef.py:257 #: buildlib/modeldef.py:319 buildlib/modeldef.py:373 buildlib/modeldef.py:430 msgid "down" msgstr "вниз" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2017-09-18 04:57:34 UTC #: buildlib/modeldef.py:120 buildlib/modeldef.py:205 buildlib/modeldef.py:257 msgid "left" msgstr "ліворуч" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2017-09-18 04:57:34 UTC #: buildlib/modeldef.py:120 buildlib/modeldef.py:205 buildlib/modeldef.py:257 msgid "right" msgstr "праворуч" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2017-09-18 04:57:34 UTC #: buildlib/modeldef.py:120 buildlib/modeldef.py:374 msgid "front" msgstr "спереду" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-03-28 23:00:54 UTC #: buildlib/modeldef.py:120 buildlib/modeldef.py:205 buildlib/modeldef.py:257 #: buildlib/modeldef.py:320 buildlib/modeldef.py:373 msgid "back" msgstr "ззаду" # translated by: yurchor https://launchpad.net/~yurchor-deactivatedaccount on 2012-12-15 00:03:14 UTC #: buildlib/modeldef.py:149 msgid "Tower" msgstr "Башта" # translated by: yurchor https://launchpad.net/~yurchor-deactivatedaccount on 2012-12-15 00:03:14 UTC #: buildlib/modeldef.py:150 #, python-brace-format msgid "{0}×{1}-Tower" msgstr "Башта-{0}×{1}" # translated by: yurchor https://launchpad.net/~yurchor-deactivatedaccount on 2012-12-15 00:03:14 UTC #: buildlib/modeldef.py:151 buildlib/modeldef.py:249 buildlib/modeldef.py:300 #: buildlib/modeldef.py:311 msgid "Basis:" msgstr "Основа:" # translated by: yurchor https://launchpad.net/~yurchor-deactivatedaccount on 2012-12-15 00:03:14 UTC #: buildlib/modeldef.py:163 msgid "Cube" msgstr "Куб" # translated by: yurchor https://launchpad.net/~yurchor-deactivatedaccount on 2012-12-15 00:03:14 UTC #: buildlib/modeldef.py:164 #, python-brace-format msgid "{0}×{0}×{0}-Cube" msgstr "Куб-{0}×{0}×{0}" # translated by: yurchor https://launchpad.net/~yurchor-deactivatedaccount on 2012-12-15 00:03:14 UTC #: buildlib/modeldef.py:165 buildlib/modeldef.py:197 buildlib/modeldef.py:365 #: buildlib/modeldef.py:422 msgid "Size:" msgstr "Розмір:" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-07-21 06:18:48 UTC #: buildlib/modeldef.py:177 buildlib/modeldef.py:178 msgid "Void Cube" msgstr "Порожній куб" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-04-08 18:01:46 UTC #: buildlib/modeldef.py:195 msgid "Tetrahedron" msgstr "Тетраедр" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-04-08 18:01:46 UTC #: buildlib/modeldef.py:196 #, python-brace-format msgid "{0}-Tetrahedron" msgstr "{0}-тетраедр" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-07-21 06:18:48 UTC #: buildlib/modeldef.py:247 msgid "Triangular Prism" msgstr "Трикутна призма" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-07-21 06:18:48 UTC #: buildlib/modeldef.py:248 #, python-brace-format msgid "{0}×{1} Triangular Prism" msgstr "Ктрикутна призма {0}×{1}" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-07-21 06:18:48 UTC #: buildlib/modeldef.py:298 msgid "Triangular Prism (complex)" msgstr "Трикутна призма (складна)" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-07-21 06:18:48 UTC #: buildlib/modeldef.py:299 #, python-brace-format msgid "{0}×{1} Triangular Prism (complex)" msgstr "Трикутна призма {0}×{1} (складна)" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-07-21 06:18:48 UTC #: buildlib/modeldef.py:309 msgid "Pentagonal Prism" msgstr "П’ятикутна призма" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-07-21 06:18:48 UTC #: buildlib/modeldef.py:310 #, python-brace-format msgid "{0}×{1} Pentagonal Prism" msgstr "П’ятикутна призма {0}×{1}" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-07-21 06:19:31 UTC #: buildlib/modeldef.py:320 buildlib/modeldef.py:373 msgid "front-right" msgstr "спереду праворуч" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2017-09-18 04:57:34 UTC #: buildlib/modeldef.py:320 buildlib/modeldef.py:374 msgid "back-right" msgstr "ззаду праворуч" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2017-09-18 04:57:34 UTC #: buildlib/modeldef.py:320 buildlib/modeldef.py:374 msgid "back-left" msgstr "ззаду ліворуч" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-07-21 06:19:31 UTC #: buildlib/modeldef.py:320 buildlib/modeldef.py:373 msgid "front-left" msgstr "спереду ліворуч" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-07-21 06:19:31 UTC #: buildlib/modeldef.py:354 msgid "Pentagonal Prism (stretched)" msgstr "П’ятикутна призма (витягнута)" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-07-21 06:19:31 UTC #: buildlib/modeldef.py:355 #, python-brace-format msgid "{0}×{1} Pentagonal Prism (stretched)" msgstr "П’ятикутна призма (витягнута) {0}×{1}" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-04-08 18:01:46 UTC #: buildlib/modeldef.py:363 msgid "Octahedron" msgstr "Октаедр" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-04-08 18:01:46 UTC #: buildlib/modeldef.py:364 #, python-brace-format msgid "{0}-Octahedron" msgstr "{0}-октаедр" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-04-08 18:01:46 UTC #: buildlib/modeldef.py:420 msgid "Dodecahedron" msgstr "Додекаедр" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-04-08 18:01:46 UTC #: buildlib/modeldef.py:421 #, python-brace-format msgid "{0}-Dodecahedron" msgstr "{0}-додекаедр" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2017-09-18 04:59:22 UTC #: buildlib/modeldef.py:430 msgid "down-back-right" msgstr "вниз ззаду праворуч" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2017-09-18 04:59:22 UTC #: buildlib/modeldef.py:430 msgid "down-front-right" msgstr "вниз спереду праворуч" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2017-09-18 04:59:22 UTC #: buildlib/modeldef.py:431 msgid "down-front" msgstr "вниз спереду" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2017-09-18 05:05:32 UTC #: buildlib/modeldef.py:431 msgid "down-front-left" msgstr "вниз спереду ліворуч" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2017-09-18 05:05:32 UTC #: buildlib/modeldef.py:431 msgid "down-back-left" msgstr "вниз ззаду ліворуч" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2017-09-18 04:59:22 UTC #: buildlib/modeldef.py:432 msgid "up-back" msgstr "вгору ззаду" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2017-09-18 05:05:32 UTC #: buildlib/modeldef.py:432 msgid "up-back-right" msgstr "вгору назад праворуч" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-07-21 06:19:31 UTC #: buildlib/modeldef.py:432 msgid "up-front-right" msgstr "вгору спереду праворуч" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2015-07-21 06:19:31 UTC #: buildlib/modeldef.py:433 msgid "up-front-left" msgstr "вгору спереду ліворуч" # translated by: Yuri Chornoivan https://launchpad.net/~yurchor-gmail on 2017-09-18 05:00:11 UTC #: buildlib/modeldef.py:433 msgid "up-back-left" msgstr "вгору ззаду ліворуч" pybik-3.0/po/pybik.pot0000644000175000017500000010145713173052420015125 0ustar barccbarcc00000000000000# SOME DESCRIPTIVE TITLE. # Copyright © 2009-2017, B. Clausius # This file is distributed under the same license as the pybik package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: pybik 3.0~alpha1\n" "Report-Msgid-Bugs-To: https://bugs.launchpad.net/pybik/+filebug\n" "POT-Creation-Date: 2017-09-10 21:58+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" #: pybiklib/application.py:294 msgid "Press the Esc key to exit Edit Mode" msgstr "" #. substitution for {move_text} in statusbar text #: pybiklib/application.py:302 #, python-brace-format msgid "{current} / {total} move" msgid_plural "{current} / {total} moves" msgstr[0] "" msgstr[1] "" #. substitution for {solved_text} in statusbar text #: pybiklib/application.py:306 msgid "solved" msgstr "" #: pybiklib/application.py:306 msgid "not solved" msgstr "" #. statusbar text #: pybiklib/application.py:309 #, python-brace-format msgid "{move_text}, {solved_text}" msgstr "" #: pybiklib/application.py:314 msgid "Congratulations, you have solved the puzzle!" msgstr "" #. Name of the application, probably should not be translated. #: pybiklib/config.py:35 data/ui/qt/main.ui.h:271 #: data/app-meta/pybik.desktop.in:3 msgid "Pybik" msgstr "" #. short description #: pybiklib/config.py:65 data/app-meta/pybik.desktop.in:4 msgid "Rubik's cube game" msgstr "" #. The next 7 lines belong together and form the long description #: pybiklib/config.py:68 msgid "Pybik is a 3D puzzle game about the cube invented by Ernő Rubik." msgstr "" #: pybiklib/config.py:70 msgid "" "Various 3D puzzles, such as cubes, towers, prisms, tetrahedra, octahedra, " "dodecahedra and many more" msgstr "" #: pybiklib/config.py:71 msgid "Solvers for some puzzles" msgstr "" #. Use something that is common in the Rubik scene in your language, sometimes it's just the equivalent of "patterns". #: pybiklib/config.py:72 data/plugins/80-pretty-patterns.plugins.py:19 #: data/plugins/80-pretty-patterns.plugins.py:22 #: data/plugins/80-pretty-patterns.plugins.py:26 #: data/plugins/80-pretty-patterns.plugins.py:30 #: data/plugins/80-pretty-patterns.plugins.py:34 #: data/plugins/80-pretty-patterns.plugins.py:39 #: data/plugins/80-pretty-patterns.plugins.py:43 #: data/plugins/80-pretty-patterns.plugins.py:48 #: data/plugins/80-pretty-patterns.plugins.py:52 #: data/plugins/80-pretty-patterns.plugins.py:56 #: data/plugins/80-pretty-patterns.plugins.py:60 #: data/plugins/80-pretty-patterns.plugins.py:64 #: data/plugins/80-pretty-patterns.plugins.py:68 #: data/plugins/80-pretty-patterns.plugins.py:72 #: data/plugins/80-pretty-patterns.plugins.py:76 #: data/plugins/80-pretty-patterns.plugins.py:82 #: data/plugins/80-pretty-patterns.plugins.py:86 #: data/plugins/80-pretty-patterns.plugins.py:91 #: data/plugins/80-pretty-patterns.plugins.py:95 #: data/plugins/80-pretty-patterns.plugins.py:99 #: data/plugins/80-pretty-patterns.plugins.py:103 #: data/plugins/80-pretty-patterns.plugins.py:107 #: data/plugins/80-pretty-patterns.plugins.py:111 #: data/plugins/80-pretty-patterns.plugins.py:116 #: data/plugins/80-pretty-patterns.plugins.py:120 #: data/plugins/80-pretty-patterns.plugins.py:124 #: data/plugins/80-pretty-patterns.plugins.py:128 #: data/plugins/80-pretty-patterns.plugins.py:133 #: data/plugins/80-pretty-patterns.plugins.py:137 #: data/plugins/80-pretty-patterns.plugins.py:141 #: data/plugins/80-pretty-patterns.plugins.py:145 #: data/plugins/80-pretty-patterns.plugins.py:149 #: data/plugins/80-pretty-patterns.plugins.py:153 #: data/plugins/80-pretty-patterns.plugins.py:157 #: data/plugins/80-pretty-patterns.plugins.py:161 #: data/plugins/80-pretty-patterns.plugins.py:165 #: data/plugins/80-pretty-patterns.plugins.py:169 #: data/plugins/80-pretty-patterns.plugins.py:173 #: data/plugins/80-pretty-patterns.plugins.py:177 #: data/plugins/80-pretty-patterns.plugins.py:181 #: data/plugins/80-pretty-patterns.plugins.py:185 #: data/plugins/80-pretty-patterns.plugins.py:190 #: data/plugins/80-pretty-patterns.plugins.py:195 #: data/plugins/80-pretty-patterns.plugins.py:199 #: data/plugins/80-pretty-patterns.plugins.py:203 #: data/plugins/80-pretty-patterns.plugins.py:207 #: data/plugins/80-pretty-patterns.plugins.py:211 #: data/plugins/80-pretty-patterns.plugins.py:215 #: data/plugins/80-pretty-patterns.plugins.py:219 msgid "Pretty patterns" msgstr "" #: pybiklib/config.py:73 msgid "Editor for move sequences" msgstr "" #: pybiklib/config.py:74 msgid "Custom colors and images on the surface of the puzzles" msgstr "" #: pybiklib/config.py:78 msgid "" "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.\n" "\n" "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." msgstr "" #. Text between "<" and ">" is expanded to a link by the program and should not be modified. #. Text between "" and "<|>" is the translatable text for the link. #: pybiklib/config.py:90 msgid "" "Read the full text of the GNU General Public " "License<|> or see ." msgstr "" #: pybiklib/config.py:93 msgid "" "You should have received a copy of the GNU General Public License along with " "this program. If not, see ." msgstr "" #: pybiklib/config.py:98 #, python-brace-format msgid "" "If you find any bugs in Pybik or have a suggestion for an improvement then " "please submit a <{CONTACT_FILEBUG}|>bug report<|>." msgstr "" #: pybiklib/config.py:103 msgid "" "Translations are managed by the Launchpad translation group<|>.\n" "\n" "If you want help to translate Pybik to your language you can do it through " "the web interface<|>.\n" "\n" "Read more about \"Translating with " "Launchpad\"<|> and \"Starting to translate\"<|>." msgstr "" #: pybiklib/dialogs.py:44 msgid "Lighting" msgstr "" #: pybiklib/dialogs.py:44 msgid "Simple" msgstr "" #. labels are the colored stickers on the cube #: pybiklib/dialogs.py:46 msgid "Labels" msgstr "" #: pybiklib/dialogs.py:104 data/ui/qt/main.ui.h:275 msgid "Select Puzzle" msgstr "" #. 1 slice, 2 slices, 3 slices, ... #: pybiklib/dialogs.py:134 pybiklib/dialogs.py:154 pybiklib/dialogs.py:180 #: pybiklib/dialogs.py:201 msgid "{} slice" msgid_plural "{} slices" msgstr[0] "" msgstr[1] "" #: pybiklib/dialogs.py:196 pybiklib/dialogs.py:225 msgid "{}×{} slices" msgstr "" #. The next strings form the text in the help dialog: #. Title of the 1st paragraph #: pybiklib/dialogs.py:290 msgid "Using the mouse to rotate the cube" msgstr "" #. Text of the 1st paragraph, followed by bullet list items #: pybiklib/dialogs.py:292 msgid "" "Position the mouse cursor over the puzzle and you will see an arrow that " "gives you a hint in which direction the slice under the mouse cursor will be " "rotated." msgstr "" #: pybiklib/dialogs.py:294 msgid "" "The left mouse button rotates a single slice of the cube in the direction of " "the arrow." msgstr "" #: pybiklib/dialogs.py:295 msgid "" "The right mouse button rotates a single slice of the cube against the " "direction of the arrow." msgstr "" #: pybiklib/dialogs.py:296 msgid "" "To rotate the whole cube instead of a single slice press the Ctrl key " "together with the mouse button." msgstr "" #. Title of the 2nd paragraph #: pybiklib/dialogs.py:298 msgid "Using the keyboard to rotate the cube" msgstr "" #. Text of the 2nd paragraph, followed by bullet list items #: pybiklib/dialogs.py:300 msgid "" "Make sure the keyboard focus is on the cube area (e.g. click on the " "background of the cube). The keys can be configured in the preferences " "dialog, the default is:" msgstr "" #. before the item text is a list of keys #: pybiklib/dialogs.py:303 pybiklib/dialogs.py:318 msgid "Moves the left, right, upper, down, front or back slice clockwise." msgstr "" #: pybiklib/dialogs.py:304 pybiklib/dialogs.py:319 msgid "Moves a slice couterclockwise." msgstr "" #: pybiklib/dialogs.py:305 pybiklib/dialogs.py:320 msgid "Moves the whole cube." msgstr "" #. Title of the 3rd paragraph #: pybiklib/dialogs.py:307 msgid "Other keys and buttons" msgstr "" #. bullet list items of the 3rd paragraph #: pybiklib/dialogs.py:309 msgid "Mouse wheel – Zoom in/out" msgstr "" #: pybiklib/dialogs.py:310 msgid "" "Arrow keys, Left mouse button on the background – Changes the direction of " "looking at the cube." msgstr "" #: pybiklib/dialogs.py:311 msgid "" "Moves keyboard focus to the sequence editor above the cube area where you " "can edit the move sequence in the notation described below. Hit enter when " "done." msgstr "" #. Title of the 4th paragraph #: pybiklib/dialogs.py:315 msgid "Notation for moves" msgstr "" #. Text of the 4th paragraph, followed by bullet list items #: pybiklib/dialogs.py:317 msgid "" "All moves, however they are made, are displayed progressively above the cube " "area:" msgstr "" #: pybiklib/dialogs.py:321 msgid "" "Moves the first, second or third slice from left clockwise. The allowed " "numbers are in the range from 1 to the count of parallel slices. \"l1\" is " "always the same as \"l\" and for the classic 3×3×3-Cube \"l2\" is the same " "as \"r2-\" and \"l3\" is the same as \"r-\"." msgstr "" #: pybiklib/dialogs.py:325 msgid "You can use a space to separate groups of moves." msgstr "" #: pybiklib/dialogs.py:379 msgid "Pybik project website" msgstr "" #: pybiklib/pluginlib.py:301 msgid "This plugin does not work for any model." msgstr "" #: pybiklib/pluginlib.py:303 pybiklib/pluginlib.py:306 msgid "This plugin only works for:" msgstr "" #: pybiklib/pluginlib.py:498 msgid "This puzzle is not solvable." msgstr "" #. The following 6 words are for the antialiasing levels: disabled, ugly, low, medium, high, higher #: pybiklib/schema.py:211 msgid "disabled" msgstr "" #: pybiklib/schema.py:211 msgid "ugly" msgstr "" #: pybiklib/schema.py:211 msgid "low" msgstr "" #: pybiklib/schema.py:212 msgid "medium" msgstr "" #: pybiklib/schema.py:212 msgid "high" msgstr "" #: pybiklib/schema.py:212 msgid "higher" msgstr "" #: data/ui/qt/about.ui.h:212 msgid "About Pybik" msgstr "" #: data/ui/qt/about.ui.h:213 msgid "Translators:" msgstr "" #: data/ui/qt/about.ui.h:214 msgid "About" msgstr "" #: data/ui/qt/about.ui.h:215 msgid "Contribute" msgstr "" #: data/ui/qt/about.ui.h:216 msgid "License" msgstr "" #: data/ui/qt/help.ui.h:53 data/ui/qt/main.ui.h:297 msgid "Help" msgstr "" #: data/ui/qt/main.ui.h:272 msgid "&New Challenge" msgstr "" #: data/ui/qt/main.ui.h:273 msgid "Ne&w Solved" msgstr "" #: data/ui/qt/main.ui.h:274 msgid "&Quit" msgstr "" #: data/ui/qt/main.ui.h:276 msgid "&Set as Initial State" msgstr "" #: data/ui/qt/main.ui.h:277 msgid "&Reset Rotation" msgstr "" #: data/ui/qt/main.ui.h:278 msgid "&Preferences …" msgstr "" #: data/ui/qt/main.ui.h:279 msgid "&Status Bar" msgstr "" #: data/ui/qt/main.ui.h:280 msgid "&Info …" msgstr "" #: data/ui/qt/main.ui.h:281 msgid "Rewind" msgstr "" #: data/ui/qt/main.ui.h:282 msgid "Previous" msgstr "" #: data/ui/qt/main.ui.h:283 msgid "Stop" msgstr "" #: data/ui/qt/main.ui.h:284 msgid "Play" msgstr "" #: data/ui/qt/main.ui.h:285 msgid "Next" msgstr "" #: data/ui/qt/main.ui.h:286 msgid "Forward" msgstr "" #: data/ui/qt/main.ui.h:287 msgid "Add Mark" msgstr "" #: data/ui/qt/main.ui.h:289 msgid "Mark the current place in the sequence of moves" msgstr "" #: data/ui/qt/main.ui.h:291 msgid "Remove Mark" msgstr "" #: data/ui/qt/main.ui.h:293 msgid "Remove the mark at the current place in the sequence of moves" msgstr "" #: data/ui/qt/main.ui.h:295 msgid "&Edit Bar" msgstr "" #: data/ui/qt/main.ui.h:296 msgid "&Help …" msgstr "" #: data/ui/qt/preferences.ui.h:372 msgid "Preferences" msgstr "" #: data/ui/qt/preferences.ui.h:373 msgid "Animation Speed:" msgstr "" #: data/ui/qt/preferences.ui.h:375 msgid "Mirror Distance:" msgstr "" #: data/ui/qt/preferences.ui.h:377 msgid "Quality:" msgstr "" #: data/ui/qt/preferences.ui.h:380 msgid "" "Lower antialiasing has better performance, higher antialiasing has better " "quality." msgstr "" #: data/ui/qt/preferences.ui.h:382 msgid "Antialiasing:" msgstr "" #: data/ui/qt/preferences.ui.h:384 msgid "The program needs to be restarted for the changes to take effect." msgstr "" #: data/ui/qt/preferences.ui.h:385 msgid "Graphic" msgstr "" #: data/ui/qt/preferences.ui.h:386 msgid "Point and click, all directions" msgstr "" #: data/ui/qt/preferences.ui.h:387 msgid "Point and click, simplified" msgstr "" #: data/ui/qt/preferences.ui.h:388 msgid "Gestures" msgstr "" #: data/ui/qt/preferences.ui.h:389 msgid "Mouse" msgstr "" #: data/ui/qt/preferences.ui.h:391 data/ui/qt/preferences.ui.h:393 msgid "Add" msgstr "" #: data/ui/qt/preferences.ui.h:395 data/ui/qt/preferences.ui.h:397 msgid "Remove" msgstr "" #: data/ui/qt/preferences.ui.h:399 data/ui/qt/preferences.ui.h:401 msgid "Reset" msgstr "" #: data/ui/qt/preferences.ui.h:402 msgid "Keys" msgstr "" #: data/ui/qt/preferences.ui.h:403 msgid "Color:" msgstr "" #: data/ui/qt/preferences.ui.h:405 msgid "Image File:" msgstr "" #: data/ui/qt/preferences.ui.h:407 msgid "Tiled" msgstr "" #: data/ui/qt/preferences.ui.h:408 msgid "Mosaic" msgstr "" #: data/ui/qt/preferences.ui.h:409 msgid "Background:" msgstr "" #: data/ui/qt/preferences.ui.h:411 msgid "Appearance" msgstr "" #: pybiklib/ext/qt.py:1578 msgid "Move" msgstr "" #: pybiklib/ext/qt.py:1581 msgid "Key" msgstr "" #: pybiklib/ext/qt.py:1682 msgid "Open Image" msgstr "" #: pybiklib/ext/qt.py:1720 msgid "plain" msgstr "" #: pybiklib/ext/qt.py:1723 msgid "select …" msgstr "" #: pybiklib/ext/qtui.py:94 msgid "Press a key …" msgstr "" #. Add whatever keywords you want in your language, separated by semicolons, last character must be a semicolon. These keywords are used when searching for applications in Unity, GNOME Shell, etc. #: data/app-meta/pybik.desktop.in:10 msgid "rubik;cube;puzzle;magic;" msgstr "" #: data/plugins/01-challenges.plugins.py:18 #: data/plugins/01-challenges.plugins.py:21 #: data/plugins/01-challenges.plugins.py:24 #: data/plugins/01-challenges.plugins.py:27 #: data/plugins/01-challenges.plugins.py:30 #: data/plugins/01-challenges.plugins.py:33 #: data/plugins/01-challenges.plugins.py:36 #: data/plugins/01-challenges.plugins.py:39 #: data/plugins/01-challenges.plugins.py:42 #: data/plugins/01-challenges.plugins.py:45 #: data/plugins/01-challenges.plugins.py:48 msgid "Challenges" msgstr "" #: data/plugins/01-challenges.plugins.py:19 msgid "Solve random puzzle" msgstr "" #: data/plugins/01-challenges.plugins.py:22 #: data/plugins/01-challenges.plugins.py:25 #: data/plugins/01-challenges.plugins.py:28 #: data/plugins/01-challenges.plugins.py:31 #: data/plugins/01-challenges.plugins.py:34 #: data/plugins/01-challenges.plugins.py:37 #: data/plugins/01-challenges.plugins.py:40 #: data/plugins/01-challenges.plugins.py:43 #: data/plugins/01-challenges.plugins.py:46 #: data/plugins/01-challenges.plugins.py:49 msgid "Solve in {} move" msgid_plural "Solve in {} moves" msgstr[0] "" msgstr[1] "" #: data/plugins/10-beginners.plugins.py:31 #: data/plugins/10-beginners.plugins.py:34 #: data/plugins/10-beginners.plugins.py:56 #: data/plugins/10-beginners.plugins.py:73 #: data/plugins/10-beginners.plugins.py:100 #: data/plugins/10-beginners.plugins.py:118 #: data/plugins/10-beginners.plugins.py:140 #: data/plugins/10-beginners.plugins.py:158 #: data/plugins/14-leyan-lo.plugins.py:21 #: data/plugins/14-leyan-lo.plugins.py:24 #: data/plugins/14-leyan-lo.plugins.py:53 #: data/plugins/14-leyan-lo.plugins.py:74 #: data/plugins/14-leyan-lo.plugins.py:90 #: data/plugins/14-leyan-lo.plugins.py:107 #: data/plugins/14-leyan-lo.plugins.py:129 #: data/plugins/14-leyan-lo.plugins.py:170 #: data/plugins/150-spiegel.plugins.py:32 #: data/plugins/150-spiegel.plugins.py:35 #: data/plugins/150-spiegel.plugins.py:64 #: data/plugins/150-spiegel.plugins.py:85 #: data/plugins/150-spiegel.plugins.py:100 #: data/plugins/150-spiegel.plugins.py:113 #: data/plugins/150-spiegel.plugins.py:130 #: data/plugins/150-spiegel.plugins.py:141 #: data/plugins/151-spiegel-improved.plugins.py:20 #: data/plugins/151-spiegel-improved.plugins.py:23 #: data/plugins/151-spiegel-improved.plugins.py:68 #: data/plugins/151-spiegel-improved.plugins.py:107 #: data/plugins/151-spiegel-improved.plugins.py:139 #: data/plugins/151-spiegel-improved.plugins.py:165 #: data/plugins/151-spiegel-improved.plugins.py:183 #: data/plugins/151-spiegel-improved.plugins.py:197 #: data/plugins/20-2x2x2.plugins.py:18 data/plugins/20-2x2x2.plugins.py:21 #: data/plugins/20-2x2x2.plugins.py:37 data/plugins/20-2x2x2.plugins.py:55 msgid "Solvers" msgstr "" #: data/plugins/10-beginners.plugins.py:32 #: data/plugins/10-beginners.plugins.py:35 #: data/plugins/10-beginners.plugins.py:57 #: data/plugins/10-beginners.plugins.py:74 #: data/plugins/10-beginners.plugins.py:101 #: data/plugins/10-beginners.plugins.py:119 #: data/plugins/10-beginners.plugins.py:141 #: data/plugins/10-beginners.plugins.py:159 msgid "Beginner's method" msgstr "" #: data/plugins/10-beginners.plugins.py:36 #: data/plugins/14-leyan-lo.plugins.py:26 #: data/plugins/150-spiegel.plugins.py:37 #: data/plugins/151-spiegel-improved.plugins.py:25 msgid "Top edges" msgstr "" #: data/plugins/10-beginners.plugins.py:58 #: data/plugins/14-leyan-lo.plugins.py:55 #: data/plugins/150-spiegel.plugins.py:66 #: data/plugins/151-spiegel-improved.plugins.py:70 msgid "Top corners" msgstr "" #: data/plugins/10-beginners.plugins.py:75 #: data/plugins/14-leyan-lo.plugins.py:76 #: data/plugins/150-spiegel.plugins.py:87 #: data/plugins/151-spiegel-improved.plugins.py:109 msgid "Middle slice" msgstr "" #: data/plugins/10-beginners.plugins.py:102 #: data/plugins/14-leyan-lo.plugins.py:92 #: data/plugins/150-spiegel.plugins.py:115 #: data/plugins/151-spiegel-improved.plugins.py:167 msgid "Bottom edge orient" msgstr "" #: data/plugins/10-beginners.plugins.py:120 #: data/plugins/14-leyan-lo.plugins.py:131 #: data/plugins/150-spiegel.plugins.py:143 #: data/plugins/151-spiegel-improved.plugins.py:199 #: data/plugins/20-2x2x2.plugins.py:57 msgid "Bottom corner orient" msgstr "" #: data/plugins/10-beginners.plugins.py:142 #: data/plugins/14-leyan-lo.plugins.py:109 #: data/plugins/150-spiegel.plugins.py:132 #: data/plugins/151-spiegel-improved.plugins.py:185 #: data/plugins/20-2x2x2.plugins.py:39 msgid "Bottom corner place" msgstr "" #: data/plugins/10-beginners.plugins.py:160 #: data/plugins/14-leyan-lo.plugins.py:172 #: data/plugins/150-spiegel.plugins.py:102 #: data/plugins/151-spiegel-improved.plugins.py:141 msgid "Bottom edge place" msgstr "" #. Leyan Lo is the inventor of the solution #: data/plugins/14-leyan-lo.plugins.py:23 #: data/plugins/14-leyan-lo.plugins.py:25 #: data/plugins/14-leyan-lo.plugins.py:54 #: data/plugins/14-leyan-lo.plugins.py:75 #: data/plugins/14-leyan-lo.plugins.py:91 #: data/plugins/14-leyan-lo.plugins.py:108 #: data/plugins/14-leyan-lo.plugins.py:130 #: data/plugins/14-leyan-lo.plugins.py:171 msgid "Leyan Lo" msgstr "" #. Spiegel is a german magazine #: data/plugins/150-spiegel.plugins.py:34 #: data/plugins/150-spiegel.plugins.py:36 #: data/plugins/150-spiegel.plugins.py:65 #: data/plugins/150-spiegel.plugins.py:86 #: data/plugins/150-spiegel.plugins.py:101 #: data/plugins/150-spiegel.plugins.py:114 #: data/plugins/150-spiegel.plugins.py:131 #: data/plugins/150-spiegel.plugins.py:142 msgid "Spiegel" msgstr "" #. Spiegel is a german magazine #: data/plugins/151-spiegel-improved.plugins.py:22 #: data/plugins/151-spiegel-improved.plugins.py:24 #: data/plugins/151-spiegel-improved.plugins.py:69 #: data/plugins/151-spiegel-improved.plugins.py:108 #: data/plugins/151-spiegel-improved.plugins.py:140 #: data/plugins/151-spiegel-improved.plugins.py:166 #: data/plugins/151-spiegel-improved.plugins.py:184 #: data/plugins/151-spiegel-improved.plugins.py:198 msgid "Spiegel improved" msgstr "" #: data/plugins/20-2x2x2.plugins.py:19 data/plugins/20-2x2x2.plugins.py:22 #: data/plugins/20-2x2x2.plugins.py:38 data/plugins/20-2x2x2.plugins.py:56 msgid "2×2×2" msgstr "" #: data/plugins/20-2x2x2.plugins.py:23 msgid "Top slice" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:20 #: data/plugins/80-pretty-patterns.plugins.py:23 #: data/plugins/80-pretty-patterns.plugins.py:27 #: data/plugins/80-pretty-patterns.plugins.py:31 #: data/plugins/80-pretty-patterns.plugins.py:35 #: data/plugins/80-pretty-patterns.plugins.py:40 #: data/plugins/80-pretty-patterns.plugins.py:44 msgid "Stripes" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:49 #: data/plugins/80-pretty-patterns.plugins.py:53 msgid "Criss-Cross" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:57 msgid "Fried Eggs" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:61 msgid "Big Fried Eggs" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:65 #: data/plugins/80-pretty-patterns.plugins.py:69 msgid "4 Fried Eggs" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:73 msgid "2 Fried Eggs" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:77 msgid "Chessboard" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:83 msgid "Cross" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:87 msgid "Zig Zag" msgstr "" #. T is the shape formed by the cube labels. T-Time is a pun (Tea Time) and not suitable for literal translation. Don't translate it or use something common or whatever you think makes sense. #: data/plugins/80-pretty-patterns.plugins.py:93 #: data/plugins/80-pretty-patterns.plugins.py:96 #: data/plugins/80-pretty-patterns.plugins.py:100 #: data/plugins/80-pretty-patterns.plugins.py:104 #: data/plugins/80-pretty-patterns.plugins.py:108 #: data/plugins/80-pretty-patterns.plugins.py:112 msgid "T-Time" msgstr "" #. C is the shape formed by the cube labels #: data/plugins/80-pretty-patterns.plugins.py:118 msgid "C" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:121 msgid "Cube in a Cube" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:125 msgid "Striped Cube in a Cube" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:129 msgid "Six square cuboids" msgstr "" #. Superflip may be not translated, because it has a special meaning in the mathematical theory behind the Rubik's Cube. #: data/plugins/80-pretty-patterns.plugins.py:135 msgid "Superflip" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:138 msgid "Superflip easy" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:142 msgid "Green Mamba" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:146 msgid "Anaconda" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:150 msgid "Duck Feet" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:154 #: data/plugins/80-pretty-patterns.plugins.py:158 #: data/plugins/80-pretty-patterns.plugins.py:162 #: data/plugins/80-pretty-patterns.plugins.py:166 #: data/plugins/80-pretty-patterns.plugins.py:170 #: data/plugins/80-pretty-patterns.plugins.py:174 #: data/plugins/80-pretty-patterns.plugins.py:178 #: data/plugins/80-pretty-patterns.plugins.py:182 msgid "Plus" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:186 #: data/plugins/80-pretty-patterns.plugins.py:191 #: data/plugins/80-pretty-patterns.plugins.py:196 #: data/plugins/80-pretty-patterns.plugins.py:200 msgid "Minus" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:204 msgid "Volcano" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:208 msgid "Checkerboard (easy)" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:212 msgid "Checkerboard (fast)" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:216 msgid "Mixed Checkerboard" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:220 msgid "Tipi" msgstr "" #: data/plugins/90-library.plugins.py:18 data/plugins/90-library.plugins.py:22 #: data/plugins/90-library.plugins.py:26 data/plugins/90-library.plugins.py:30 #: data/plugins/90-library.plugins.py:34 data/plugins/90-library.plugins.py:38 #: data/plugins/90-library.plugins.py:42 data/plugins/90-library.plugins.py:46 #: data/plugins/90-library.plugins.py:50 data/plugins/90-library.plugins.py:54 #: data/plugins/90-library.plugins.py:58 data/plugins/90-library.plugins.py:62 #: data/plugins/90-library.plugins.py:66 data/plugins/90-library.plugins.py:70 #: data/plugins/90-library.plugins.py:74 data/plugins/90-library.plugins.py:78 #: data/plugins/90-library.plugins.py:82 data/plugins/90-library.plugins.py:86 #: data/plugins/90-library.plugins.py:91 data/plugins/90-library.plugins.py:96 #: data/plugins/90-library.plugins.py:101 #: data/plugins/90-library.plugins.py:105 #: data/plugins/90-library.plugins.py:110 #: data/plugins/90-library.plugins.py:115 #: data/plugins/90-library.plugins.py:119 #: data/plugins/90-library.plugins.py:123 #: data/plugins/90-library.plugins.py:127 msgid "Library" msgstr "" #: data/plugins/90-library.plugins.py:19 data/plugins/90-library.plugins.py:23 #: data/plugins/90-library.plugins.py:27 data/plugins/90-library.plugins.py:31 #: data/plugins/90-library.plugins.py:35 msgid "Swap edges" msgstr "" #: data/plugins/90-library.plugins.py:20 msgid "3 edges ⟳, top layer" msgstr "" #: data/plugins/90-library.plugins.py:24 msgid "3 edges ⟲, top layer" msgstr "" #: data/plugins/90-library.plugins.py:28 msgid "3 edges, middle layer" msgstr "" #: data/plugins/90-library.plugins.py:32 msgid "4 edges, front and right" msgstr "" #: data/plugins/90-library.plugins.py:36 msgid "4 edges, front and back" msgstr "" #: data/plugins/90-library.plugins.py:39 msgid "Swap 2 edges and 2 corners, top layer" msgstr "" #: data/plugins/90-library.plugins.py:43 data/plugins/90-library.plugins.py:47 msgid "Flip edges" msgstr "" #: data/plugins/90-library.plugins.py:44 msgid "4 edges" msgstr "" #: data/plugins/90-library.plugins.py:48 msgid "2 edges, top layer" msgstr "" #: data/plugins/90-library.plugins.py:51 data/plugins/90-library.plugins.py:55 #: data/plugins/90-library.plugins.py:59 data/plugins/90-library.plugins.py:63 #: data/plugins/90-library.plugins.py:67 data/plugins/90-library.plugins.py:71 msgid "Swap corners" msgstr "" #: data/plugins/90-library.plugins.py:52 data/plugins/90-library.plugins.py:76 msgid "2 corners, top layer" msgstr "" #: data/plugins/90-library.plugins.py:56 msgid "2 corners diagonal, top layer" msgstr "" #: data/plugins/90-library.plugins.py:60 data/plugins/90-library.plugins.py:80 msgid "3 corners ⟳, top layer" msgstr "" #: data/plugins/90-library.plugins.py:64 msgid "3 corners ⟲, top layer" msgstr "" #: data/plugins/90-library.plugins.py:68 msgid "4 corners, top layer" msgstr "" #: data/plugins/90-library.plugins.py:72 msgid "2 corners, partial sequence, top layer" msgstr "" #: data/plugins/90-library.plugins.py:75 data/plugins/90-library.plugins.py:79 #: data/plugins/90-library.plugins.py:83 data/plugins/90-library.plugins.py:87 msgid "Rotate corners" msgstr "" #: data/plugins/90-library.plugins.py:84 msgid "1 corner ⟳, partial sequence, top layer" msgstr "" #: data/plugins/90-library.plugins.py:88 msgid "1 corner ⟲, partial sequence, top layer" msgstr "" #: data/plugins/90-library.plugins.py:92 data/plugins/90-library.plugins.py:97 #: data/plugins/90-library.plugins.py:102 #: data/plugins/90-library.plugins.py:111 msgid "Rotate center" msgstr "" #. 2 rotations of the center face in the upper layer #: data/plugins/90-library.plugins.py:94 msgid "2×Up" msgstr "" #. Up clockwise and front clockwise #: data/plugins/90-library.plugins.py:99 msgid "Up ⟳ and front ⟳" msgstr "" #. Up clockwise and front counterclockwise #: data/plugins/90-library.plugins.py:104 msgid "Up ⟳ and front ⟲" msgstr "" #: data/plugins/90-library.plugins.py:106 msgid "Swap center parts, up and front" msgstr "" #. Up clockwise and down counterclockwise #: data/plugins/90-library.plugins.py:113 msgid "Up ⟳ and down ⟲" msgstr "" #: data/plugins/90-library.plugins.py:116 #: data/plugins/90-library.plugins.py:120 #: data/plugins/90-library.plugins.py:124 #: data/plugins/90-library.plugins.py:128 msgid "Misc" msgstr "" #. Yields in a rotated back layer, but the sequence of moves does not touch the back layer #: data/plugins/90-library.plugins.py:118 #: data/plugins/90-library.plugins.py:125 #: data/plugins/90-library.plugins.py:129 msgid "Back without back" msgstr "" #: data/plugins/90-library.plugins.py:121 msgid "2×Back without back" msgstr "" #: data/plugins/95-transformations.plugins.py:18 #: data/plugins/95-transformations.plugins.py:21 #: data/plugins/95-transformations.plugins.py:24 msgid "Move transformations" msgstr "" #: data/plugins/95-transformations.plugins.py:19 msgid "Invert move sequence" msgstr "" #: data/plugins/95-transformations.plugins.py:22 msgid "Normalize cube rotations" msgstr "" #: data/plugins/95-transformations.plugins.py:25 msgid "Normalize move sequence" msgstr "" #: buildlib/modeldef.py:110 msgid "Brick" msgstr "" #: buildlib/modeldef.py:111 #, python-brace-format msgid "{0}×{1}×{2}-Brick" msgstr "" #: buildlib/modeldef.py:112 msgid "Width:" msgstr "" #: buildlib/modeldef.py:112 buildlib/modeldef.py:151 buildlib/modeldef.py:249 #: buildlib/modeldef.py:300 buildlib/modeldef.py:311 msgid "Height:" msgstr "" #: buildlib/modeldef.py:112 msgid "Depth:" msgstr "" #: buildlib/modeldef.py:120 buildlib/modeldef.py:257 buildlib/modeldef.py:319 #: buildlib/modeldef.py:374 buildlib/modeldef.py:433 msgid "up" msgstr "" #: buildlib/modeldef.py:120 buildlib/modeldef.py:205 buildlib/modeldef.py:257 #: buildlib/modeldef.py:319 buildlib/modeldef.py:373 buildlib/modeldef.py:430 msgid "down" msgstr "" #: buildlib/modeldef.py:120 buildlib/modeldef.py:205 buildlib/modeldef.py:257 msgid "left" msgstr "" #: buildlib/modeldef.py:120 buildlib/modeldef.py:205 buildlib/modeldef.py:257 msgid "right" msgstr "" #: buildlib/modeldef.py:120 buildlib/modeldef.py:374 msgid "front" msgstr "" #: buildlib/modeldef.py:120 buildlib/modeldef.py:205 buildlib/modeldef.py:257 #: buildlib/modeldef.py:320 buildlib/modeldef.py:373 msgid "back" msgstr "" #: buildlib/modeldef.py:149 msgid "Tower" msgstr "" #: buildlib/modeldef.py:150 #, python-brace-format msgid "{0}×{1}-Tower" msgstr "" #: buildlib/modeldef.py:151 buildlib/modeldef.py:249 buildlib/modeldef.py:300 #: buildlib/modeldef.py:311 msgid "Basis:" msgstr "" #: buildlib/modeldef.py:163 msgid "Cube" msgstr "" #: buildlib/modeldef.py:164 #, python-brace-format msgid "{0}×{0}×{0}-Cube" msgstr "" #: buildlib/modeldef.py:165 buildlib/modeldef.py:197 buildlib/modeldef.py:365 #: buildlib/modeldef.py:422 msgid "Size:" msgstr "" #: buildlib/modeldef.py:177 buildlib/modeldef.py:178 msgid "Void Cube" msgstr "" #: buildlib/modeldef.py:195 msgid "Tetrahedron" msgstr "" #: buildlib/modeldef.py:196 #, python-brace-format msgid "{0}-Tetrahedron" msgstr "" #: buildlib/modeldef.py:247 msgid "Triangular Prism" msgstr "" #: buildlib/modeldef.py:248 #, python-brace-format msgid "{0}×{1} Triangular Prism" msgstr "" #: buildlib/modeldef.py:298 msgid "Triangular Prism (complex)" msgstr "" #: buildlib/modeldef.py:299 #, python-brace-format msgid "{0}×{1} Triangular Prism (complex)" msgstr "" #: buildlib/modeldef.py:309 msgid "Pentagonal Prism" msgstr "" #: buildlib/modeldef.py:310 #, python-brace-format msgid "{0}×{1} Pentagonal Prism" msgstr "" #: buildlib/modeldef.py:320 buildlib/modeldef.py:373 msgid "front-right" msgstr "" #: buildlib/modeldef.py:320 buildlib/modeldef.py:374 msgid "back-right" msgstr "" #: buildlib/modeldef.py:320 buildlib/modeldef.py:374 msgid "back-left" msgstr "" #: buildlib/modeldef.py:320 buildlib/modeldef.py:373 msgid "front-left" msgstr "" #: buildlib/modeldef.py:354 msgid "Pentagonal Prism (stretched)" msgstr "" #: buildlib/modeldef.py:355 #, python-brace-format msgid "{0}×{1} Pentagonal Prism (stretched)" msgstr "" #: buildlib/modeldef.py:363 msgid "Octahedron" msgstr "" #: buildlib/modeldef.py:364 #, python-brace-format msgid "{0}-Octahedron" msgstr "" #: buildlib/modeldef.py:420 msgid "Dodecahedron" msgstr "" #: buildlib/modeldef.py:421 #, python-brace-format msgid "{0}-Dodecahedron" msgstr "" #: buildlib/modeldef.py:430 msgid "down-back-right" msgstr "" #: buildlib/modeldef.py:430 msgid "down-front-right" msgstr "" #: buildlib/modeldef.py:431 msgid "down-front" msgstr "" #: buildlib/modeldef.py:431 msgid "down-front-left" msgstr "" #: buildlib/modeldef.py:431 msgid "down-back-left" msgstr "" #: buildlib/modeldef.py:432 msgid "up-back" msgstr "" #: buildlib/modeldef.py:432 msgid "up-back-right" msgstr "" #: buildlib/modeldef.py:432 msgid "up-front-right" msgstr "" #: buildlib/modeldef.py:433 msgid "up-front-left" msgstr "" #: buildlib/modeldef.py:433 msgid "up-back-left" msgstr "" pybik-3.0/po/pt_BR.po0000664000175000017500000011337513173052130014633 0ustar barccbarcc00000000000000# Brazilian Portuguese translation for pybik # Copyright (c) 2012-2017 Rosetta Contributors and Canonical Ltd 2012 # This file is distributed under the same license as the pybik package. # FIRST AUTHOR , 2012. # msgid "" msgstr "" "Project-Id-Version: pybik\n" "Report-Msgid-Bugs-To: https://bugs.launchpad.net/pybik/+filebug\n" "POT-Creation-Date: 2017-09-10 21:58+0200\n" "PO-Revision-Date: 2017-09-17 05:54+0000\n" "Last-Translator: Rodrigo Borges Freitas \n" "Language-Team: Brazilian Portuguese \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" "X-Launchpad-Export-Date: 2017-09-18 05:31+0000\n" "X-Generator: Launchpad (build 18449)\n" "Language: pt_BR\n" # translated by: Fábio Nogueira https://launchpad.net/~fnogueira on 2012-12-14 13:37:26 UTC #: pybiklib/application.py:294 msgid "Press the Esc key to exit Edit Mode" msgstr "Pressione a tecla ESC para sair do Modo edição" # translated by: Rodrigo Borges Freitas https://launchpad.net/~rodrigo-borges-freitas on 2015-04-18 12:23:07 UTC #. substitution for {move_text} in statusbar text #: pybiklib/application.py:302 #, python-brace-format msgid "{current} / {total} move" msgid_plural "{current} / {total} moves" msgstr[0] "{current} / {total} movimento" msgstr[1] "{current} / {total} movimentos" # translated by: Fábio Nogueira https://launchpad.net/~fnogueira on 2012-12-14 12:52:09 UTC #. substitution for {solved_text} in statusbar text #: pybiklib/application.py:306 msgid "solved" msgstr "resolvido" # translated by: Fábio Nogueira https://launchpad.net/~fnogueira on 2012-12-14 12:52:09 UTC #: pybiklib/application.py:306 msgid "not solved" msgstr "não resolvido" # translated by: Rodrigo Borges Freitas https://launchpad.net/~rodrigo-borges-freitas on 2015-04-18 12:23:07 UTC #. statusbar text #: pybiklib/application.py:309 #, python-brace-format msgid "{move_text}, {solved_text}" msgstr "{move_text}, {solved_text}" # translated by: Fábio Nogueira https://launchpad.net/~fnogueira on 2012-12-14 12:52:09 UTC #: pybiklib/application.py:314 msgid "Congratulations, you have solved the puzzle!" msgstr "Parabéns! Você resolveu o quebra-cabeças!" # translated by: Fábio Nogueira https://launchpad.net/~fnogueira on 2012-12-14 12:52:09 UTC #. Name of the application, probably should not be translated. #: pybiklib/config.py:35 data/ui/qt/main.ui.h:271 #: data/app-meta/pybik.desktop.in:3 msgid "Pybik" msgstr "Pybik" #. short description #: pybiklib/config.py:65 data/app-meta/pybik.desktop.in:4 msgid "Rubik's cube game" msgstr "" #. The next 7 lines belong together and form the long description #: pybiklib/config.py:68 msgid "Pybik is a 3D puzzle game about the cube invented by Ernő Rubik." msgstr "" #: pybiklib/config.py:70 msgid "" "Various 3D puzzles, such as cubes, towers, prisms, tetrahedra, octahedra, " "dodecahedra and many more" msgstr "" #: pybiklib/config.py:71 msgid "Solvers for some puzzles" msgstr "" #. Use something that is common in the Rubik scene in your language, sometimes it's just the equivalent of "patterns". #: pybiklib/config.py:72 data/plugins/80-pretty-patterns.plugins.py:19 #: data/plugins/80-pretty-patterns.plugins.py:22 #: data/plugins/80-pretty-patterns.plugins.py:26 #: data/plugins/80-pretty-patterns.plugins.py:30 #: data/plugins/80-pretty-patterns.plugins.py:34 #: data/plugins/80-pretty-patterns.plugins.py:39 #: data/plugins/80-pretty-patterns.plugins.py:43 #: data/plugins/80-pretty-patterns.plugins.py:48 #: data/plugins/80-pretty-patterns.plugins.py:52 #: data/plugins/80-pretty-patterns.plugins.py:56 #: data/plugins/80-pretty-patterns.plugins.py:60 #: data/plugins/80-pretty-patterns.plugins.py:64 #: data/plugins/80-pretty-patterns.plugins.py:68 #: data/plugins/80-pretty-patterns.plugins.py:72 #: data/plugins/80-pretty-patterns.plugins.py:76 #: data/plugins/80-pretty-patterns.plugins.py:82 #: data/plugins/80-pretty-patterns.plugins.py:86 #: data/plugins/80-pretty-patterns.plugins.py:91 #: data/plugins/80-pretty-patterns.plugins.py:95 #: data/plugins/80-pretty-patterns.plugins.py:99 #: data/plugins/80-pretty-patterns.plugins.py:103 #: data/plugins/80-pretty-patterns.plugins.py:107 #: data/plugins/80-pretty-patterns.plugins.py:111 #: data/plugins/80-pretty-patterns.plugins.py:116 #: data/plugins/80-pretty-patterns.plugins.py:120 #: data/plugins/80-pretty-patterns.plugins.py:124 #: data/plugins/80-pretty-patterns.plugins.py:128 #: data/plugins/80-pretty-patterns.plugins.py:133 #: data/plugins/80-pretty-patterns.plugins.py:137 #: data/plugins/80-pretty-patterns.plugins.py:141 #: data/plugins/80-pretty-patterns.plugins.py:145 #: data/plugins/80-pretty-patterns.plugins.py:149 #: data/plugins/80-pretty-patterns.plugins.py:153 #: data/plugins/80-pretty-patterns.plugins.py:157 #: data/plugins/80-pretty-patterns.plugins.py:161 #: data/plugins/80-pretty-patterns.plugins.py:165 #: data/plugins/80-pretty-patterns.plugins.py:169 #: data/plugins/80-pretty-patterns.plugins.py:173 #: data/plugins/80-pretty-patterns.plugins.py:177 #: data/plugins/80-pretty-patterns.plugins.py:181 #: data/plugins/80-pretty-patterns.plugins.py:185 #: data/plugins/80-pretty-patterns.plugins.py:190 #: data/plugins/80-pretty-patterns.plugins.py:195 #: data/plugins/80-pretty-patterns.plugins.py:199 #: data/plugins/80-pretty-patterns.plugins.py:203 #: data/plugins/80-pretty-patterns.plugins.py:207 #: data/plugins/80-pretty-patterns.plugins.py:211 #: data/plugins/80-pretty-patterns.plugins.py:215 #: data/plugins/80-pretty-patterns.plugins.py:219 msgid "Pretty patterns" msgstr "" #: pybiklib/config.py:73 msgid "Editor for move sequences" msgstr "" #: pybiklib/config.py:74 msgid "Custom colors and images on the surface of the puzzles" msgstr "" #: pybiklib/config.py:78 msgid "" "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.\n" "\n" "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." msgstr "" # translated by: Rodrigo Borges Freitas https://launchpad.net/~rodrigo-borges-freitas on 2015-04-18 12:25:57 UTC #. Text between "<" and ">" is expanded to a link by the program and should not be modified. #. Text between "" and "<|>" is the translatable text for the link. #: pybiklib/config.py:90 msgid "" "Read the full text of the GNU General Public " "License<|> or see ." msgstr "" "Leia na íntegra a Licença Pública Geral GNU<|> ou " "visite ." # translated by: Rodrigo Borges Freitas https://launchpad.net/~rodrigo-borges-freitas on 2015-04-18 12:25:57 UTC #: pybiklib/config.py:93 msgid "" "You should have received a copy of the GNU General Public License along with " "this program. If not, see ." msgstr "" "Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este " "programa. Caso contrário, veja ." #: pybiklib/config.py:98 #, python-brace-format msgid "" "If you find any bugs in Pybik or have a suggestion for an improvement then " "please submit a <{CONTACT_FILEBUG}|>bug report<|>." msgstr "" #: pybiklib/config.py:103 msgid "" "Translations are managed by the " "Launchpad " "translation group<|>.\n" "\n" "If you want help to translate Pybik to your language you can do it through " "the web interface<|>.\n" "\n" "Read more about \"Translating with " "Launchpad\"<|> and " "\"Starting to " "translate\"<|>." msgstr "" #: pybiklib/dialogs.py:44 msgid "Lighting" msgstr "Iluminação" #: pybiklib/dialogs.py:44 msgid "Simple" msgstr "" #. labels are the colored stickers on the cube #: pybiklib/dialogs.py:46 msgid "Labels" msgstr "" #: pybiklib/dialogs.py:104 data/ui/qt/main.ui.h:275 msgid "Select Puzzle" msgstr "" # translated by: Fábio Nogueira https://launchpad.net/~fnogueira on 2012-12-14 13:32:48 UTC #. 1 slice, 2 slices, 3 slices, ... #: pybiklib/dialogs.py:134 pybiklib/dialogs.py:154 pybiklib/dialogs.py:180 #: pybiklib/dialogs.py:201 msgid "{} slice" msgid_plural "{} slices" msgstr[0] "" msgstr[1] "" #: pybiklib/dialogs.py:196 pybiklib/dialogs.py:225 msgid "{}×{} slices" msgstr "" #. The next strings form the text in the help dialog: #. Title of the 1st paragraph #: pybiklib/dialogs.py:290 msgid "Using the mouse to rotate the cube" msgstr "" #. Text of the 1st paragraph, followed by bullet list items #: pybiklib/dialogs.py:292 msgid "" "Position the mouse cursor over the puzzle and you will see an arrow that " "gives you a hint in which direction the slice under the mouse cursor will be " "rotated." msgstr "" #: pybiklib/dialogs.py:294 msgid "" "The left mouse button rotates a single slice of the cube in the direction of " "the arrow." msgstr "" #: pybiklib/dialogs.py:295 msgid "" "The right mouse button rotates a single slice of the cube against the " "direction of the arrow." msgstr "" #: pybiklib/dialogs.py:296 msgid "" "To rotate the whole cube instead of a single slice press the Ctrl key " "together with the mouse button." msgstr "" #. Title of the 2nd paragraph #: pybiklib/dialogs.py:298 msgid "Using the keyboard to rotate the cube" msgstr "" #. Text of the 2nd paragraph, followed by bullet list items #: pybiklib/dialogs.py:300 msgid "" "Make sure the keyboard focus is on the cube area (e.g. click on the " "background of the cube). The keys can be configured in the preferences " "dialog, the default is:" msgstr "" #. before the item text is a list of keys #: pybiklib/dialogs.py:303 pybiklib/dialogs.py:318 msgid "Moves the left, right, upper, down, front or back slice clockwise." msgstr "" #: pybiklib/dialogs.py:304 pybiklib/dialogs.py:319 msgid "Moves a slice couterclockwise." msgstr "" #: pybiklib/dialogs.py:305 pybiklib/dialogs.py:320 msgid "Moves the whole cube." msgstr "" #. Title of the 3rd paragraph #: pybiklib/dialogs.py:307 msgid "Other keys and buttons" msgstr "" #. bullet list items of the 3rd paragraph #: pybiklib/dialogs.py:309 msgid "Mouse wheel – Zoom in/out" msgstr "" #: pybiklib/dialogs.py:310 msgid "" "Arrow keys, Left mouse button on the background – Changes the direction of " "looking at the cube." msgstr "" #: pybiklib/dialogs.py:311 msgid "" "Moves keyboard focus to the sequence editor above the cube area where you " "can edit the move sequence in the notation described below. Hit enter when " "done." msgstr "" #. Title of the 4th paragraph #: pybiklib/dialogs.py:315 msgid "Notation for moves" msgstr "" #. Text of the 4th paragraph, followed by bullet list items #: pybiklib/dialogs.py:317 msgid "" "All moves, however they are made, are displayed progressively above the cube " "area:" msgstr "" #: pybiklib/dialogs.py:321 msgid "" "Moves the first, second or third slice from left clockwise. The allowed " "numbers are in the range from 1 to the count of parallel slices. \"l1\" is " "always the same as \"l\" and for the classic 3×3×3-Cube \"l2\" is the same " "as \"r2-\" and \"l3\" is the same as \"r-\"." msgstr "" #: pybiklib/dialogs.py:325 msgid "You can use a space to separate groups of moves." msgstr "" #: pybiklib/dialogs.py:379 msgid "Pybik project website" msgstr "" #: pybiklib/pluginlib.py:301 msgid "This plugin does not work for any model." msgstr "" #: pybiklib/pluginlib.py:303 pybiklib/pluginlib.py:306 msgid "This plugin only works for:" msgstr "" #: pybiklib/pluginlib.py:498 msgid "This puzzle is not solvable." msgstr "" #. The following 6 words are for the antialiasing levels: disabled, ugly, low, medium, high, higher #: pybiklib/schema.py:211 msgid "disabled" msgstr "" #: pybiklib/schema.py:211 msgid "ugly" msgstr "" #: pybiklib/schema.py:211 msgid "low" msgstr "" #: pybiklib/schema.py:212 msgid "medium" msgstr "" #: pybiklib/schema.py:212 msgid "high" msgstr "" #: pybiklib/schema.py:212 msgid "higher" msgstr "" #: data/ui/qt/about.ui.h:212 msgid "About Pybik" msgstr "Sobre o Pybik" #: data/ui/qt/about.ui.h:213 msgid "Translators:" msgstr "" #: data/ui/qt/about.ui.h:214 msgid "About" msgstr "Sobre" #: data/ui/qt/about.ui.h:215 msgid "Contribute" msgstr "" #: data/ui/qt/about.ui.h:216 msgid "License" msgstr "Licença" #: data/ui/qt/help.ui.h:53 data/ui/qt/main.ui.h:297 msgid "Help" msgstr "" # translated by: Fábio Nogueira https://launchpad.net/~fnogueira on 2012-12-14 13:27:46 UTC #: data/ui/qt/main.ui.h:272 msgid "&New Challenge" msgstr "" #: data/ui/qt/main.ui.h:273 msgid "Ne&w Solved" msgstr "" #: data/ui/qt/main.ui.h:274 msgid "&Quit" msgstr "&Sair" #: data/ui/qt/main.ui.h:276 msgid "&Set as Initial State" msgstr "Definir como estado inicial" #: data/ui/qt/main.ui.h:277 msgid "&Reset Rotation" msgstr "" #: data/ui/qt/main.ui.h:278 msgid "&Preferences …" msgstr "&Preferências" #: data/ui/qt/main.ui.h:279 msgid "&Status Bar" msgstr "Barra de &status" #: data/ui/qt/main.ui.h:280 msgid "&Info …" msgstr "&Informações ..." #: data/ui/qt/main.ui.h:281 msgid "Rewind" msgstr "" #: data/ui/qt/main.ui.h:282 msgid "Previous" msgstr "Anterior" #: data/ui/qt/main.ui.h:283 msgid "Stop" msgstr "Parar" #: data/ui/qt/main.ui.h:284 msgid "Play" msgstr "Reproduzir" #: data/ui/qt/main.ui.h:285 msgid "Next" msgstr "Próximo" #: data/ui/qt/main.ui.h:286 msgid "Forward" msgstr "Avançar" #: data/ui/qt/main.ui.h:287 msgid "Add Mark" msgstr "Adicionar marcador" #: data/ui/qt/main.ui.h:289 msgid "Mark the current place in the sequence of moves" msgstr "Marcar o lugar atual na sequencia de movimentos" #: data/ui/qt/main.ui.h:291 msgid "Remove Mark" msgstr "Remover marcador" #: data/ui/qt/main.ui.h:293 msgid "Remove the mark at the current place in the sequence of moves" msgstr "" #: data/ui/qt/main.ui.h:295 msgid "&Edit Bar" msgstr "&Editar barra" #: data/ui/qt/main.ui.h:296 msgid "&Help …" msgstr "" #: data/ui/qt/preferences.ui.h:372 msgid "Preferences" msgstr "Perferências" #: data/ui/qt/preferences.ui.h:373 msgid "Animation Speed:" msgstr "Velocidade da animação:" #: data/ui/qt/preferences.ui.h:375 msgid "Mirror Distance:" msgstr "" #: data/ui/qt/preferences.ui.h:377 msgid "Quality:" msgstr "" #: data/ui/qt/preferences.ui.h:380 msgid "" "Lower antialiasing has better performance, higher antialiasing has better " "quality." msgstr "" #: data/ui/qt/preferences.ui.h:382 msgid "Antialiasing:" msgstr "" #: data/ui/qt/preferences.ui.h:384 msgid "The program needs to be restarted for the changes to take effect." msgstr "" #: data/ui/qt/preferences.ui.h:385 msgid "Graphic" msgstr "Gráfico" #: data/ui/qt/preferences.ui.h:386 msgid "Point and click, all directions" msgstr "" #: data/ui/qt/preferences.ui.h:387 msgid "Point and click, simplified" msgstr "" #: data/ui/qt/preferences.ui.h:388 msgid "Gestures" msgstr "" #: data/ui/qt/preferences.ui.h:389 msgid "Mouse" msgstr "Mouse" #: data/ui/qt/preferences.ui.h:391 data/ui/qt/preferences.ui.h:393 msgid "Add" msgstr "Adicionar" #: data/ui/qt/preferences.ui.h:395 data/ui/qt/preferences.ui.h:397 msgid "Remove" msgstr "Remover" #: data/ui/qt/preferences.ui.h:399 data/ui/qt/preferences.ui.h:401 msgid "Reset" msgstr "Reiniciar" #: data/ui/qt/preferences.ui.h:402 msgid "Keys" msgstr "Chaves" #: data/ui/qt/preferences.ui.h:403 msgid "Color:" msgstr "Cor:" #: data/ui/qt/preferences.ui.h:405 msgid "Image File:" msgstr "Arquivo de imagem:" #: data/ui/qt/preferences.ui.h:407 msgid "Tiled" msgstr "" #: data/ui/qt/preferences.ui.h:408 msgid "Mosaic" msgstr "Mosaico" #: data/ui/qt/preferences.ui.h:409 msgid "Background:" msgstr "Plano de fundo:" #: data/ui/qt/preferences.ui.h:411 msgid "Appearance" msgstr "Aparência" # translated by: Fábio Nogueira https://launchpad.net/~fnogueira on 2012-12-14 12:58:14 UTC #: pybiklib/ext/qt.py:1578 msgid "Move" msgstr "Mover" # translated by: Fábio Nogueira https://launchpad.net/~fnogueira on 2012-12-14 12:58:14 UTC #: pybiklib/ext/qt.py:1581 msgid "Key" msgstr "Tecla" # translated by: Fábio Nogueira https://launchpad.net/~fnogueira on 2012-12-14 12:58:14 UTC #: pybiklib/ext/qt.py:1682 msgid "Open Image" msgstr "Abrir imagem" # translated by: Rafael Neri https://launchpad.net/~rafepel on 2012-12-14 14:00:11 UTC #: pybiklib/ext/qt.py:1720 msgid "plain" msgstr "plano" #: pybiklib/ext/qt.py:1723 msgid "select …" msgstr "" # translated by: Fábio Nogueira https://launchpad.net/~fnogueira on 2012-12-14 12:55:04 UTC #: pybiklib/ext/qtui.py:94 msgid "Press a key …" msgstr "Pressione uma tecla ..." #. Add whatever keywords you want in your language, separated by semicolons, last character must be a semicolon. These keywords are used when searching for applications in Unity, GNOME Shell, etc. #: data/app-meta/pybik.desktop.in:10 msgid "rubik;cube;puzzle;magic;" msgstr "" # translated by: Fábio Nogueira https://launchpad.net/~fnogueira on 2012-12-14 13:27:46 UTC #: data/plugins/01-challenges.plugins.py:18 #: data/plugins/01-challenges.plugins.py:21 #: data/plugins/01-challenges.plugins.py:24 #: data/plugins/01-challenges.plugins.py:27 #: data/plugins/01-challenges.plugins.py:30 #: data/plugins/01-challenges.plugins.py:33 #: data/plugins/01-challenges.plugins.py:36 #: data/plugins/01-challenges.plugins.py:39 #: data/plugins/01-challenges.plugins.py:42 #: data/plugins/01-challenges.plugins.py:45 #: data/plugins/01-challenges.plugins.py:48 msgid "Challenges" msgstr "Desafios" #: data/plugins/01-challenges.plugins.py:19 msgid "Solve random puzzle" msgstr "" #: data/plugins/01-challenges.plugins.py:22 #: data/plugins/01-challenges.plugins.py:25 #: data/plugins/01-challenges.plugins.py:28 #: data/plugins/01-challenges.plugins.py:31 #: data/plugins/01-challenges.plugins.py:34 #: data/plugins/01-challenges.plugins.py:37 #: data/plugins/01-challenges.plugins.py:40 #: data/plugins/01-challenges.plugins.py:43 #: data/plugins/01-challenges.plugins.py:46 #: data/plugins/01-challenges.plugins.py:49 msgid "Solve in {} move" msgid_plural "Solve in {} moves" msgstr[0] "" msgstr[1] "" #: data/plugins/10-beginners.plugins.py:31 #: data/plugins/10-beginners.plugins.py:34 #: data/plugins/10-beginners.plugins.py:56 #: data/plugins/10-beginners.plugins.py:73 #: data/plugins/10-beginners.plugins.py:100 #: data/plugins/10-beginners.plugins.py:118 #: data/plugins/10-beginners.plugins.py:140 #: data/plugins/10-beginners.plugins.py:158 #: data/plugins/14-leyan-lo.plugins.py:21 #: data/plugins/14-leyan-lo.plugins.py:24 #: data/plugins/14-leyan-lo.plugins.py:53 #: data/plugins/14-leyan-lo.plugins.py:74 #: data/plugins/14-leyan-lo.plugins.py:90 #: data/plugins/14-leyan-lo.plugins.py:107 #: data/plugins/14-leyan-lo.plugins.py:129 #: data/plugins/14-leyan-lo.plugins.py:170 #: data/plugins/150-spiegel.plugins.py:32 #: data/plugins/150-spiegel.plugins.py:35 #: data/plugins/150-spiegel.plugins.py:64 #: data/plugins/150-spiegel.plugins.py:85 #: data/plugins/150-spiegel.plugins.py:100 #: data/plugins/150-spiegel.plugins.py:113 #: data/plugins/150-spiegel.plugins.py:130 #: data/plugins/150-spiegel.plugins.py:141 #: data/plugins/151-spiegel-improved.plugins.py:20 #: data/plugins/151-spiegel-improved.plugins.py:23 #: data/plugins/151-spiegel-improved.plugins.py:68 #: data/plugins/151-spiegel-improved.plugins.py:107 #: data/plugins/151-spiegel-improved.plugins.py:139 #: data/plugins/151-spiegel-improved.plugins.py:165 #: data/plugins/151-spiegel-improved.plugins.py:183 #: data/plugins/151-spiegel-improved.plugins.py:197 #: data/plugins/20-2x2x2.plugins.py:18 data/plugins/20-2x2x2.plugins.py:21 #: data/plugins/20-2x2x2.plugins.py:37 data/plugins/20-2x2x2.plugins.py:55 msgid "Solvers" msgstr "" #: data/plugins/10-beginners.plugins.py:32 #: data/plugins/10-beginners.plugins.py:35 #: data/plugins/10-beginners.plugins.py:57 #: data/plugins/10-beginners.plugins.py:74 #: data/plugins/10-beginners.plugins.py:101 #: data/plugins/10-beginners.plugins.py:119 #: data/plugins/10-beginners.plugins.py:141 #: data/plugins/10-beginners.plugins.py:159 msgid "Beginner's method" msgstr "" # translated by: Fábio Nogueira https://launchpad.net/~fnogueira on 2012-12-14 13:32:05 UTC #: data/plugins/10-beginners.plugins.py:36 #: data/plugins/14-leyan-lo.plugins.py:26 #: data/plugins/150-spiegel.plugins.py:37 #: data/plugins/151-spiegel-improved.plugins.py:25 msgid "Top edges" msgstr "Margens superiores" # translated by: Fábio Nogueira https://launchpad.net/~fnogueira on 2012-12-14 13:32:05 UTC #: data/plugins/10-beginners.plugins.py:58 #: data/plugins/14-leyan-lo.plugins.py:55 #: data/plugins/150-spiegel.plugins.py:66 #: data/plugins/151-spiegel-improved.plugins.py:70 msgid "Top corners" msgstr "Cantos superiores" # translated by: Fábio Nogueira https://launchpad.net/~fnogueira on 2012-12-14 13:32:05 UTC #: data/plugins/10-beginners.plugins.py:75 #: data/plugins/14-leyan-lo.plugins.py:76 #: data/plugins/150-spiegel.plugins.py:87 #: data/plugins/151-spiegel-improved.plugins.py:109 msgid "Middle slice" msgstr "Fatia média" #: data/plugins/10-beginners.plugins.py:102 #: data/plugins/14-leyan-lo.plugins.py:92 #: data/plugins/150-spiegel.plugins.py:115 #: data/plugins/151-spiegel-improved.plugins.py:167 msgid "Bottom edge orient" msgstr "" #: data/plugins/10-beginners.plugins.py:120 #: data/plugins/14-leyan-lo.plugins.py:131 #: data/plugins/150-spiegel.plugins.py:143 #: data/plugins/151-spiegel-improved.plugins.py:199 #: data/plugins/20-2x2x2.plugins.py:57 msgid "Bottom corner orient" msgstr "" #: data/plugins/10-beginners.plugins.py:142 #: data/plugins/14-leyan-lo.plugins.py:109 #: data/plugins/150-spiegel.plugins.py:132 #: data/plugins/151-spiegel-improved.plugins.py:185 #: data/plugins/20-2x2x2.plugins.py:39 msgid "Bottom corner place" msgstr "" #: data/plugins/10-beginners.plugins.py:160 #: data/plugins/14-leyan-lo.plugins.py:172 #: data/plugins/150-spiegel.plugins.py:102 #: data/plugins/151-spiegel-improved.plugins.py:141 msgid "Bottom edge place" msgstr "" #. Leyan Lo is the inventor of the solution #: data/plugins/14-leyan-lo.plugins.py:23 #: data/plugins/14-leyan-lo.plugins.py:25 #: data/plugins/14-leyan-lo.plugins.py:54 #: data/plugins/14-leyan-lo.plugins.py:75 #: data/plugins/14-leyan-lo.plugins.py:91 #: data/plugins/14-leyan-lo.plugins.py:108 #: data/plugins/14-leyan-lo.plugins.py:130 #: data/plugins/14-leyan-lo.plugins.py:171 msgid "Leyan Lo" msgstr "" # translated by: Fábio Nogueira https://launchpad.net/~fnogueira on 2012-12-14 13:30:54 UTC #. Spiegel is a german magazine #: data/plugins/150-spiegel.plugins.py:34 #: data/plugins/150-spiegel.plugins.py:36 #: data/plugins/150-spiegel.plugins.py:65 #: data/plugins/150-spiegel.plugins.py:86 #: data/plugins/150-spiegel.plugins.py:101 #: data/plugins/150-spiegel.plugins.py:114 #: data/plugins/150-spiegel.plugins.py:131 #: data/plugins/150-spiegel.plugins.py:142 msgid "Spiegel" msgstr "Spiegel" #. Spiegel is a german magazine #: data/plugins/151-spiegel-improved.plugins.py:22 #: data/plugins/151-spiegel-improved.plugins.py:24 #: data/plugins/151-spiegel-improved.plugins.py:69 #: data/plugins/151-spiegel-improved.plugins.py:108 #: data/plugins/151-spiegel-improved.plugins.py:140 #: data/plugins/151-spiegel-improved.plugins.py:166 #: data/plugins/151-spiegel-improved.plugins.py:184 #: data/plugins/151-spiegel-improved.plugins.py:198 msgid "Spiegel improved" msgstr "" # translated by: Fábio Nogueira https://launchpad.net/~fnogueira on 2012-12-14 13:32:05 UTC #: data/plugins/20-2x2x2.plugins.py:19 data/plugins/20-2x2x2.plugins.py:22 #: data/plugins/20-2x2x2.plugins.py:38 data/plugins/20-2x2x2.plugins.py:56 msgid "2×2×2" msgstr "2×2×2" # translated by: Fábio Nogueira https://launchpad.net/~fnogueira on 2012-12-14 13:32:48 UTC #: data/plugins/20-2x2x2.plugins.py:23 msgid "Top slice" msgstr "Fatia superior" #: data/plugins/80-pretty-patterns.plugins.py:20 #: data/plugins/80-pretty-patterns.plugins.py:23 #: data/plugins/80-pretty-patterns.plugins.py:27 #: data/plugins/80-pretty-patterns.plugins.py:31 #: data/plugins/80-pretty-patterns.plugins.py:35 #: data/plugins/80-pretty-patterns.plugins.py:40 #: data/plugins/80-pretty-patterns.plugins.py:44 msgid "Stripes" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:49 #: data/plugins/80-pretty-patterns.plugins.py:53 msgid "Criss-Cross" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:57 msgid "Fried Eggs" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:61 msgid "Big Fried Eggs" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:65 #: data/plugins/80-pretty-patterns.plugins.py:69 msgid "4 Fried Eggs" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:73 msgid "2 Fried Eggs" msgstr "" # translated by: Fábio Nogueira https://launchpad.net/~fnogueira on 2012-12-14 13:32:48 UTC #: data/plugins/80-pretty-patterns.plugins.py:77 msgid "Chessboard" msgstr "Tabuleiro de xadrez" # translated by: Fábio Nogueira https://launchpad.net/~fnogueira on 2012-12-14 13:32:48 UTC #: data/plugins/80-pretty-patterns.plugins.py:83 msgid "Cross" msgstr "Cruz" # translated by: Fábio Nogueira https://launchpad.net/~fnogueira on 2012-12-14 13:32:48 UTC #: data/plugins/80-pretty-patterns.plugins.py:87 msgid "Zig Zag" msgstr "Zigue-zague" #. T is the shape formed by the cube labels. T-Time is a pun (Tea Time) and not suitable for literal translation. Don't translate it or use something common or whatever you think makes sense. #: data/plugins/80-pretty-patterns.plugins.py:93 #: data/plugins/80-pretty-patterns.plugins.py:96 #: data/plugins/80-pretty-patterns.plugins.py:100 #: data/plugins/80-pretty-patterns.plugins.py:104 #: data/plugins/80-pretty-patterns.plugins.py:108 #: data/plugins/80-pretty-patterns.plugins.py:112 msgid "T-Time" msgstr "" # translated by: Fábio Nogueira https://launchpad.net/~fnogueira on 2012-12-14 13:33:37 UTC #. C is the shape formed by the cube labels #: data/plugins/80-pretty-patterns.plugins.py:118 msgid "C" msgstr "C" # translated by: Fábio Nogueira https://launchpad.net/~fnogueira on 2012-12-14 13:33:37 UTC #: data/plugins/80-pretty-patterns.plugins.py:121 msgid "Cube in a Cube" msgstr "Cubo em um cubo" #: data/plugins/80-pretty-patterns.plugins.py:125 msgid "Striped Cube in a Cube" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:129 msgid "Six square cuboids" msgstr "" #. Superflip may be not translated, because it has a special meaning in the mathematical theory behind the Rubik's Cube. #: data/plugins/80-pretty-patterns.plugins.py:135 msgid "Superflip" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:138 msgid "Superflip easy" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:142 msgid "Green Mamba" msgstr "" # translated by: Fábio Nogueira https://launchpad.net/~fnogueira on 2012-12-14 13:33:37 UTC #: data/plugins/80-pretty-patterns.plugins.py:146 msgid "Anaconda" msgstr "Anaconda" #: data/plugins/80-pretty-patterns.plugins.py:150 msgid "Duck Feet" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:154 #: data/plugins/80-pretty-patterns.plugins.py:158 #: data/plugins/80-pretty-patterns.plugins.py:162 #: data/plugins/80-pretty-patterns.plugins.py:166 #: data/plugins/80-pretty-patterns.plugins.py:170 #: data/plugins/80-pretty-patterns.plugins.py:174 #: data/plugins/80-pretty-patterns.plugins.py:178 #: data/plugins/80-pretty-patterns.plugins.py:182 msgid "Plus" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:186 #: data/plugins/80-pretty-patterns.plugins.py:191 #: data/plugins/80-pretty-patterns.plugins.py:196 #: data/plugins/80-pretty-patterns.plugins.py:200 msgid "Minus" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:204 msgid "Volcano" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:208 msgid "Checkerboard (easy)" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:212 msgid "Checkerboard (fast)" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:216 msgid "Mixed Checkerboard" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:220 msgid "Tipi" msgstr "" # translated by: Fábio Nogueira https://launchpad.net/~fnogueira on 2012-12-14 13:34:33 UTC #: data/plugins/90-library.plugins.py:18 data/plugins/90-library.plugins.py:22 #: data/plugins/90-library.plugins.py:26 data/plugins/90-library.plugins.py:30 #: data/plugins/90-library.plugins.py:34 data/plugins/90-library.plugins.py:38 #: data/plugins/90-library.plugins.py:42 data/plugins/90-library.plugins.py:46 #: data/plugins/90-library.plugins.py:50 data/plugins/90-library.plugins.py:54 #: data/plugins/90-library.plugins.py:58 data/plugins/90-library.plugins.py:62 #: data/plugins/90-library.plugins.py:66 data/plugins/90-library.plugins.py:70 #: data/plugins/90-library.plugins.py:74 data/plugins/90-library.plugins.py:78 #: data/plugins/90-library.plugins.py:82 data/plugins/90-library.plugins.py:86 #: data/plugins/90-library.plugins.py:91 data/plugins/90-library.plugins.py:96 #: data/plugins/90-library.plugins.py:101 #: data/plugins/90-library.plugins.py:105 #: data/plugins/90-library.plugins.py:110 #: data/plugins/90-library.plugins.py:115 #: data/plugins/90-library.plugins.py:119 #: data/plugins/90-library.plugins.py:123 #: data/plugins/90-library.plugins.py:127 msgid "Library" msgstr "Biblioteca" #: data/plugins/90-library.plugins.py:19 data/plugins/90-library.plugins.py:23 #: data/plugins/90-library.plugins.py:27 data/plugins/90-library.plugins.py:31 #: data/plugins/90-library.plugins.py:35 msgid "Swap edges" msgstr "" #: data/plugins/90-library.plugins.py:20 msgid "3 edges ⟳, top layer" msgstr "" #: data/plugins/90-library.plugins.py:24 msgid "3 edges ⟲, top layer" msgstr "" #: data/plugins/90-library.plugins.py:28 msgid "3 edges, middle layer" msgstr "" #: data/plugins/90-library.plugins.py:32 msgid "4 edges, front and right" msgstr "" #: data/plugins/90-library.plugins.py:36 msgid "4 edges, front and back" msgstr "" #: data/plugins/90-library.plugins.py:39 msgid "Swap 2 edges and 2 corners, top layer" msgstr "" #: data/plugins/90-library.plugins.py:43 data/plugins/90-library.plugins.py:47 msgid "Flip edges" msgstr "" #: data/plugins/90-library.plugins.py:44 msgid "4 edges" msgstr "" #: data/plugins/90-library.plugins.py:48 msgid "2 edges, top layer" msgstr "" #: data/plugins/90-library.plugins.py:51 data/plugins/90-library.plugins.py:55 #: data/plugins/90-library.plugins.py:59 data/plugins/90-library.plugins.py:63 #: data/plugins/90-library.plugins.py:67 data/plugins/90-library.plugins.py:71 msgid "Swap corners" msgstr "" #: data/plugins/90-library.plugins.py:52 data/plugins/90-library.plugins.py:76 msgid "2 corners, top layer" msgstr "" #: data/plugins/90-library.plugins.py:56 msgid "2 corners diagonal, top layer" msgstr "" #: data/plugins/90-library.plugins.py:60 data/plugins/90-library.plugins.py:80 msgid "3 corners ⟳, top layer" msgstr "" #: data/plugins/90-library.plugins.py:64 msgid "3 corners ⟲, top layer" msgstr "" #: data/plugins/90-library.plugins.py:68 msgid "4 corners, top layer" msgstr "" #: data/plugins/90-library.plugins.py:72 msgid "2 corners, partial sequence, top layer" msgstr "" #: data/plugins/90-library.plugins.py:75 data/plugins/90-library.plugins.py:79 #: data/plugins/90-library.plugins.py:83 data/plugins/90-library.plugins.py:87 msgid "Rotate corners" msgstr "" #: data/plugins/90-library.plugins.py:84 msgid "1 corner ⟳, partial sequence, top layer" msgstr "" #: data/plugins/90-library.plugins.py:88 msgid "1 corner ⟲, partial sequence, top layer" msgstr "" #: data/plugins/90-library.plugins.py:92 data/plugins/90-library.plugins.py:97 #: data/plugins/90-library.plugins.py:102 #: data/plugins/90-library.plugins.py:111 msgid "Rotate center" msgstr "" #. 2 rotations of the center face in the upper layer #: data/plugins/90-library.plugins.py:94 msgid "2×Up" msgstr "" #. Up clockwise and front clockwise #: data/plugins/90-library.plugins.py:99 msgid "Up ⟳ and front ⟳" msgstr "" #. Up clockwise and front counterclockwise #: data/plugins/90-library.plugins.py:104 msgid "Up ⟳ and front ⟲" msgstr "" #: data/plugins/90-library.plugins.py:106 msgid "Swap center parts, up and front" msgstr "" #. Up clockwise and down counterclockwise #: data/plugins/90-library.plugins.py:113 msgid "Up ⟳ and down ⟲" msgstr "" # translated by: Fábio Nogueira https://launchpad.net/~fnogueira on 2012-12-14 13:35:05 UTC #: data/plugins/90-library.plugins.py:116 #: data/plugins/90-library.plugins.py:120 #: data/plugins/90-library.plugins.py:124 #: data/plugins/90-library.plugins.py:128 msgid "Misc" msgstr "Diversos" #. Yields in a rotated back layer, but the sequence of moves does not touch the back layer #: data/plugins/90-library.plugins.py:118 #: data/plugins/90-library.plugins.py:125 #: data/plugins/90-library.plugins.py:129 msgid "Back without back" msgstr "" #: data/plugins/90-library.plugins.py:121 msgid "2×Back without back" msgstr "" #: data/plugins/95-transformations.plugins.py:18 #: data/plugins/95-transformations.plugins.py:21 #: data/plugins/95-transformations.plugins.py:24 msgid "Move transformations" msgstr "" #: data/plugins/95-transformations.plugins.py:19 msgid "Invert move sequence" msgstr "" #: data/plugins/95-transformations.plugins.py:22 msgid "Normalize cube rotations" msgstr "" #: data/plugins/95-transformations.plugins.py:25 msgid "Normalize move sequence" msgstr "" # translated by: Fábio Nogueira https://launchpad.net/~fnogueira on 2012-12-14 12:58:40 UTC #: buildlib/modeldef.py:110 msgid "Brick" msgstr "Tijolo" #: buildlib/modeldef.py:111 #, python-brace-format msgid "{0}×{1}×{2}-Brick" msgstr "" # translated by: Fábio Nogueira https://launchpad.net/~fnogueira on 2012-12-14 12:58:14 UTC #: buildlib/modeldef.py:112 msgid "Width:" msgstr "Largura:" #: buildlib/modeldef.py:112 buildlib/modeldef.py:151 buildlib/modeldef.py:249 #: buildlib/modeldef.py:300 buildlib/modeldef.py:311 msgid "Height:" msgstr "" # translated by: Fábio Nogueira https://launchpad.net/~fnogueira on 2012-12-14 13:23:20 UTC #: buildlib/modeldef.py:112 msgid "Depth:" msgstr "Profundidade:" #: buildlib/modeldef.py:120 buildlib/modeldef.py:257 buildlib/modeldef.py:319 #: buildlib/modeldef.py:374 buildlib/modeldef.py:433 msgid "up" msgstr "" #: buildlib/modeldef.py:120 buildlib/modeldef.py:205 buildlib/modeldef.py:257 #: buildlib/modeldef.py:319 buildlib/modeldef.py:373 buildlib/modeldef.py:430 msgid "down" msgstr "" #: buildlib/modeldef.py:120 buildlib/modeldef.py:205 buildlib/modeldef.py:257 msgid "left" msgstr "" # translated by: Fábio Nogueira https://launchpad.net/~fnogueira on 2012-12-14 12:58:14 UTC #: buildlib/modeldef.py:120 buildlib/modeldef.py:205 buildlib/modeldef.py:257 msgid "right" msgstr "" # translated by: Fábio Nogueira https://launchpad.net/~fnogueira on 2012-12-14 12:58:14 UTC #: buildlib/modeldef.py:120 buildlib/modeldef.py:374 msgid "front" msgstr "" #: buildlib/modeldef.py:120 buildlib/modeldef.py:205 buildlib/modeldef.py:257 #: buildlib/modeldef.py:320 buildlib/modeldef.py:373 msgid "back" msgstr "" # translated by: Fábio Nogueira https://launchpad.net/~fnogueira on 2012-12-14 12:58:40 UTC #: buildlib/modeldef.py:149 msgid "Tower" msgstr "Torre" #: buildlib/modeldef.py:150 #, python-brace-format msgid "{0}×{1}-Tower" msgstr "" # translated by: Fábio Nogueira https://launchpad.net/~fnogueira on 2012-12-14 12:58:14 UTC #: buildlib/modeldef.py:151 buildlib/modeldef.py:249 buildlib/modeldef.py:300 #: buildlib/modeldef.py:311 msgid "Basis:" msgstr "Base:" # translated by: Fábio Nogueira https://launchpad.net/~fnogueira on 2012-12-14 12:58:40 UTC #: buildlib/modeldef.py:163 msgid "Cube" msgstr "Cubo" #: buildlib/modeldef.py:164 #, python-brace-format msgid "{0}×{0}×{0}-Cube" msgstr "" # translated by: Fábio Nogueira https://launchpad.net/~fnogueira on 2012-12-14 12:58:14 UTC #: buildlib/modeldef.py:165 buildlib/modeldef.py:197 buildlib/modeldef.py:365 #: buildlib/modeldef.py:422 msgid "Size:" msgstr "Tamanho:" #: buildlib/modeldef.py:177 buildlib/modeldef.py:178 msgid "Void Cube" msgstr "" #: buildlib/modeldef.py:195 msgid "Tetrahedron" msgstr "" #: buildlib/modeldef.py:196 #, python-brace-format msgid "{0}-Tetrahedron" msgstr "" #: buildlib/modeldef.py:247 msgid "Triangular Prism" msgstr "" #: buildlib/modeldef.py:248 #, python-brace-format msgid "{0}×{1} Triangular Prism" msgstr "" #: buildlib/modeldef.py:298 msgid "Triangular Prism (complex)" msgstr "" #: buildlib/modeldef.py:299 #, python-brace-format msgid "{0}×{1} Triangular Prism (complex)" msgstr "" #: buildlib/modeldef.py:309 msgid "Pentagonal Prism" msgstr "" #: buildlib/modeldef.py:310 #, python-brace-format msgid "{0}×{1} Pentagonal Prism" msgstr "" #: buildlib/modeldef.py:320 buildlib/modeldef.py:373 msgid "front-right" msgstr "" #: buildlib/modeldef.py:320 buildlib/modeldef.py:374 msgid "back-right" msgstr "" #: buildlib/modeldef.py:320 buildlib/modeldef.py:374 msgid "back-left" msgstr "" #: buildlib/modeldef.py:320 buildlib/modeldef.py:373 msgid "front-left" msgstr "" #: buildlib/modeldef.py:354 msgid "Pentagonal Prism (stretched)" msgstr "" #: buildlib/modeldef.py:355 #, python-brace-format msgid "{0}×{1} Pentagonal Prism (stretched)" msgstr "" #: buildlib/modeldef.py:363 msgid "Octahedron" msgstr "" #: buildlib/modeldef.py:364 #, python-brace-format msgid "{0}-Octahedron" msgstr "" #: buildlib/modeldef.py:420 msgid "Dodecahedron" msgstr "" #: buildlib/modeldef.py:421 #, python-brace-format msgid "{0}-Dodecahedron" msgstr "" #: buildlib/modeldef.py:430 msgid "down-back-right" msgstr "" #: buildlib/modeldef.py:430 msgid "down-front-right" msgstr "" #: buildlib/modeldef.py:431 msgid "down-front" msgstr "" #: buildlib/modeldef.py:431 msgid "down-front-left" msgstr "" #: buildlib/modeldef.py:431 msgid "down-back-left" msgstr "" #: buildlib/modeldef.py:432 msgid "up-back" msgstr "" #: buildlib/modeldef.py:432 msgid "up-back-right" msgstr "" #: buildlib/modeldef.py:432 msgid "up-front-right" msgstr "" #: buildlib/modeldef.py:433 msgid "up-front-left" msgstr "" #: buildlib/modeldef.py:433 msgid "up-back-left" msgstr "" pybik-3.0/po/fr.po0000664000175000017500000021203013173052130014220 0ustar barccbarcc00000000000000# French translation for pybik # Copyright (c) 2012-2017 Rosetta Contributors and Canonical Ltd 2012 # This file is distributed under the same license as the pybik package. # FIRST AUTHOR , 2012. # msgid "" msgstr "" "Project-Id-Version: pybik\n" "Report-Msgid-Bugs-To: https://bugs.launchpad.net/pybik/+filebug\n" "POT-Creation-Date: 2017-09-10 21:58+0200\n" "PO-Revision-Date: 2017-10-15 10:53+0000\n" "Last-Translator: Jean-Marc \n" "Language-Team: French \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" "X-Launchpad-Export-Date: 2017-10-16 05:41+0000\n" "X-Generator: Launchpad (build 18474)\n" "Language: fr\n" # translated by: Aurélien Ribeiro https://launchpad.net/~aurel-koala on 2012-12-15 15:27:32 UTC # reviewed by: Nicolas Delvaux https://launchpad.net/~malizor on 2013-01-08 12:53:48 UTC #: pybiklib/application.py:294 msgid "Press the Esc key to exit Edit Mode" msgstr "Appuyez sur la touche Échap pour quitter le mode Édition" # translated by: Baptiste Fontaine https://launchpad.net/~bfontaine on 2012-12-14 08:50:20 UTC # reviewed by: Sylvie Gallet https://launchpad.net/~sylvie-gallet on 2012-12-14 09:22:57 UTC #. substitution for {move_text} in statusbar text #: pybiklib/application.py:302 #, python-brace-format msgid "{current} / {total} move" msgid_plural "{current} / {total} moves" msgstr[0] "{current} / {total} mouvement" msgstr[1] "{current} / {total} mouvements" # translated by: Baptiste Fontaine https://launchpad.net/~bfontaine on 2012-12-14 08:50:20 UTC # reviewed by: Sylvie Gallet https://launchpad.net/~sylvie-gallet on 2012-12-14 09:22:57 UTC #. substitution for {solved_text} in statusbar text #: pybiklib/application.py:306 msgid "solved" msgstr "résolu" # translated by: Baptiste Fontaine https://launchpad.net/~bfontaine on 2012-12-14 08:50:20 UTC # reviewed by: Sylvie Gallet https://launchpad.net/~sylvie-gallet on 2012-12-14 09:22:57 UTC #: pybiklib/application.py:306 msgid "not solved" msgstr "non résolu" # translated by: Baptiste Fontaine https://launchpad.net/~bfontaine on 2012-12-14 08:50:20 UTC # reviewed by: Sylvie Gallet https://launchpad.net/~sylvie-gallet on 2012-12-14 09:22:57 UTC #. statusbar text #: pybiklib/application.py:309 #, python-brace-format msgid "{move_text}, {solved_text}" msgstr "{move_text}, {solved_text}" # translated by: Sylvie Gallet https://launchpad.net/~sylvie-gallet on 2012-12-14 09:22:57 UTC # reviewed by: Nicolas Delvaux https://launchpad.net/~malizor on 2012-12-21 23:00:47 UTC #: pybiklib/application.py:314 msgid "Congratulations, you have solved the puzzle!" msgstr "Félicitations, vous avez résolu le casse-tête !" # translated by: Sylvie Gallet https://launchpad.net/~sylvie-gallet on 2012-12-14 22:35:12 UTC #. Name of the application, probably should not be translated. #: pybiklib/config.py:35 data/ui/qt/main.ui.h:271 #: data/app-meta/pybik.desktop.in:3 msgid "Pybik" msgstr "Pybik" # translated by: Éfrit https://launchpad.net/~efrit on 2015-04-17 22:40:42 UTC # reviewed by: Jean-Marc https://launchpad.net/~m-balthazar on 2015-09-24 19:27:55 UTC #. short description #: pybiklib/config.py:65 data/app-meta/pybik.desktop.in:4 msgid "Rubik's cube game" msgstr "Rubik’s cube" #. The next 7 lines belong together and form the long description #: pybiklib/config.py:68 msgid "Pybik is a 3D puzzle game about the cube invented by Ernő Rubik." msgstr "Pybik est un casse-tête 3D inspiré du cube inventé par Ernő Rubik." # translated by: Jean-Marc https://launchpad.net/~m-balthazar on 2017-09-18 06:09:28 UTC #: pybiklib/config.py:70 msgid "" "Various 3D puzzles, such as cubes, towers, prisms, tetrahedra, octahedra, " "dodecahedra and many more" msgstr "" "Casse-têtes variés en 3D en forme de cubes, de tours, de tétraèdres, de " "octaèdres, de dodécaèdres et plus encore" #: pybiklib/config.py:71 msgid "Solvers for some puzzles" msgstr "Solveurs pour quelques casse-têtes" # translated by: Sylvie Gallet https://launchpad.net/~sylvie-gallet on 2012-12-14 21:32:45 UTC # reviewed by: Nicolas Delvaux https://launchpad.net/~malizor on 2013-06-09 12:36:38 UTC #. Use something that is common in the Rubik scene in your language, sometimes it's just the equivalent of "patterns". #: pybiklib/config.py:72 data/plugins/80-pretty-patterns.plugins.py:19 #: data/plugins/80-pretty-patterns.plugins.py:22 #: data/plugins/80-pretty-patterns.plugins.py:26 #: data/plugins/80-pretty-patterns.plugins.py:30 #: data/plugins/80-pretty-patterns.plugins.py:34 #: data/plugins/80-pretty-patterns.plugins.py:39 #: data/plugins/80-pretty-patterns.plugins.py:43 #: data/plugins/80-pretty-patterns.plugins.py:48 #: data/plugins/80-pretty-patterns.plugins.py:52 #: data/plugins/80-pretty-patterns.plugins.py:56 #: data/plugins/80-pretty-patterns.plugins.py:60 #: data/plugins/80-pretty-patterns.plugins.py:64 #: data/plugins/80-pretty-patterns.plugins.py:68 #: data/plugins/80-pretty-patterns.plugins.py:72 #: data/plugins/80-pretty-patterns.plugins.py:76 #: data/plugins/80-pretty-patterns.plugins.py:82 #: data/plugins/80-pretty-patterns.plugins.py:86 #: data/plugins/80-pretty-patterns.plugins.py:91 #: data/plugins/80-pretty-patterns.plugins.py:95 #: data/plugins/80-pretty-patterns.plugins.py:99 #: data/plugins/80-pretty-patterns.plugins.py:103 #: data/plugins/80-pretty-patterns.plugins.py:107 #: data/plugins/80-pretty-patterns.plugins.py:111 #: data/plugins/80-pretty-patterns.plugins.py:116 #: data/plugins/80-pretty-patterns.plugins.py:120 #: data/plugins/80-pretty-patterns.plugins.py:124 #: data/plugins/80-pretty-patterns.plugins.py:128 #: data/plugins/80-pretty-patterns.plugins.py:133 #: data/plugins/80-pretty-patterns.plugins.py:137 #: data/plugins/80-pretty-patterns.plugins.py:141 #: data/plugins/80-pretty-patterns.plugins.py:145 #: data/plugins/80-pretty-patterns.plugins.py:149 #: data/plugins/80-pretty-patterns.plugins.py:153 #: data/plugins/80-pretty-patterns.plugins.py:157 #: data/plugins/80-pretty-patterns.plugins.py:161 #: data/plugins/80-pretty-patterns.plugins.py:165 #: data/plugins/80-pretty-patterns.plugins.py:169 #: data/plugins/80-pretty-patterns.plugins.py:173 #: data/plugins/80-pretty-patterns.plugins.py:177 #: data/plugins/80-pretty-patterns.plugins.py:181 #: data/plugins/80-pretty-patterns.plugins.py:185 #: data/plugins/80-pretty-patterns.plugins.py:190 #: data/plugins/80-pretty-patterns.plugins.py:195 #: data/plugins/80-pretty-patterns.plugins.py:199 #: data/plugins/80-pretty-patterns.plugins.py:203 #: data/plugins/80-pretty-patterns.plugins.py:207 #: data/plugins/80-pretty-patterns.plugins.py:211 #: data/plugins/80-pretty-patterns.plugins.py:215 #: data/plugins/80-pretty-patterns.plugins.py:219 msgid "Pretty patterns" msgstr "Jolis motifs" #: pybiklib/config.py:73 msgid "Editor for move sequences" msgstr "Éditeur pour les séquences de déplacement" # translated by: Jean-Marc https://launchpad.net/~m-balthazar on 2017-09-18 06:09:28 UTC #: pybiklib/config.py:74 msgid "Custom colors and images on the surface of the puzzles" msgstr "Couleurs et images personnalisées à la surface des jeux" # translated by: Sylvie Gallet https://launchpad.net/~sylvie-gallet on 2012-12-14 22:33:10 UTC # reviewed by: Nicolas Delvaux https://launchpad.net/~malizor on 2013-06-09 12:50:40 UTC #: pybiklib/config.py:78 msgid "" "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.\n" "\n" "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." msgstr "" "Ce programme est un logiciel libre : vous pouvez le modifier et/ou le " "redistribuer selon les termes de la licence publique générale GNU, telle que " "publiée par la Free Software Foundation, que ce soit la version 3 de la " "licence ou (à votre choix) n'importe quelle version ultérieure.\n" "\n" "Le programme est distribué en espérant qu'il vous soit utile, mais ce SANS " "AUCUNE GARANTIE ; sans même les garanties implicites de VALEUR COMMERCIALE, " "QUALITÉ, ou D'ADAPTATION À UN USAGE PARTICULIER. Voir la licence publique " "générale GNU pour plus de détails." # translated by: Jean-Marc https://launchpad.net/~m-balthazar on 2016-04-04 13:16:07 UTC #. Text between "<" and ">" is expanded to a link by the program and should not be modified. #. Text between "" and "<|>" is the translatable text for the link. #: pybiklib/config.py:90 msgid "" "Read the full text of the GNU General Public " "License<|> or see ." msgstr "" "Veuillez lire le texte intégral de la licence " "publique générale GNU<|> ou aller sur ." # translated by: Sylvie Gallet https://launchpad.net/~sylvie-gallet on 2012-12-14 22:35:12 UTC #: pybiklib/config.py:93 msgid "" "You should have received a copy of the GNU General Public License along with " "this program. If not, see ." msgstr "" "Vous devriez avoir reçu une copie de la « GNU General Public License » avec " "ce programme. Sinon, voir ." # translated by: Sylvie Gallet https://launchpad.net/~sylvie-gallet on 2012-12-14 22:35:12 UTC #: pybiklib/config.py:98 #, python-brace-format msgid "" "If you find any bugs in Pybik or have a suggestion for an improvement then " "please submit a <{CONTACT_FILEBUG}|>bug report<|>." msgstr "" "Si vous trouvez des bogues dans Pybik ou si vous souhaitez suggérer une " "amélioration, veuillez déposer un <{CONTACT_FILEBUG}|>rapport de bogue<|>." # translated by: Sylvie Gallet https://launchpad.net/~sylvie-gallet on 2012-12-14 22:33:10 UTC # reviewed by: Jean-Marc https://launchpad.net/~m-balthazar on 2015-04-08 19:26:04 UTC #: pybiklib/config.py:103 msgid "" "Translations are managed by the " "Launchpad " "translation group<|>.\n" "\n" "If you want help to translate Pybik to your language you can do it through " "the web interface<|>.\n" "\n" "Read more about \"Translating with " "Launchpad\"<|> and " "\"Starting to " "translate\"<|>." msgstr "" "Les traductions sont gérées par le " "Launchpad " "translation group<|>.\n" "\n" "Si vous voulez aider à traduire Pybik dans votre langue, vous pouvez le " "faire sur l'interface web<|>.\n" "\n" "Pour en savoir plus, veuillez lire " "\"Translating with Launchpad\"<|> " "et \"Starting " "to translate\"<|>." #: pybiklib/dialogs.py:44 msgid "Lighting" msgstr "Éclairage" # translated by: Jean-Marc https://launchpad.net/~m-balthazar on 2015-04-08 18:47:36 UTC # reviewed by: Nicolas Delvaux https://launchpad.net/~malizor on 2015-04-13 17:53:22 UTC #: pybiklib/dialogs.py:44 msgid "Simple" msgstr "Simple" # translated by: Jean-Marc https://launchpad.net/~m-balthazar on 2017-09-18 06:01:51 UTC #. labels are the colored stickers on the cube #: pybiklib/dialogs.py:46 msgid "Labels" msgstr "Étiquettes" # translated by: Jean-Marc https://launchpad.net/~m-balthazar on 2015-04-08 19:17:13 UTC # reviewed by: Jean-Marc https://launchpad.net/~m-balthazar on 2016-02-28 22:29:47 UTC #: pybiklib/dialogs.py:104 data/ui/qt/main.ui.h:275 msgid "Select Puzzle" msgstr "Sélectionner le casse-tête" # translated by: Jean-Marc https://launchpad.net/~m-balthazar on 2017-09-18 06:16:29 UTC # reviewed by: Sylvie Gallet https://launchpad.net/~sylvie-gallet on 2012-12-14 21:32:45 UTC #. 1 slice, 2 slices, 3 slices, ... #: pybiklib/dialogs.py:134 pybiklib/dialogs.py:154 pybiklib/dialogs.py:180 #: pybiklib/dialogs.py:201 msgid "{} slice" msgid_plural "{} slices" msgstr[0] "{} tranche" msgstr[1] "{} tranches" # translated by: Jean-Marc https://launchpad.net/~m-balthazar on 2017-09-18 06:16:29 UTC #: pybiklib/dialogs.py:196 pybiklib/dialogs.py:225 msgid "{}×{} slices" msgstr "{} × {} tranches" # translated by: Jean-Marc https://launchpad.net/~m-balthazar on 2015-04-08 18:47:36 UTC # reviewed by: Nicolas Delvaux https://launchpad.net/~malizor on 2015-04-13 17:53:22 UTC #. The next strings form the text in the help dialog: #. Title of the 1st paragraph #: pybiklib/dialogs.py:290 msgid "Using the mouse to rotate the cube" msgstr "Utilisation de la souris pour faire tourner le cube" # translated by: Jean-Marc https://launchpad.net/~m-balthazar on 2015-04-08 19:11:16 UTC # reviewed by: Nicolas Delvaux https://launchpad.net/~malizor on 2015-04-13 17:53:22 UTC #. Text of the 1st paragraph, followed by bullet list items #: pybiklib/dialogs.py:292 msgid "" "Position the mouse cursor over the puzzle and you will see an arrow that " "gives you a hint in which direction the slice under the mouse cursor will be " "rotated." msgstr "" "Placez le curseur de la souris sur le casse-tête et vous verrez une flèche " "qui vous donne la direction dans laquelle la tranche située sous le curseur " "de la souris sera tournée." # translated by: Nicolas Delvaux https://launchpad.net/~malizor on 2015-04-13 17:53:22 UTC #: pybiklib/dialogs.py:294 msgid "" "The left mouse button rotates a single slice of the cube in the direction of " "the arrow." msgstr "" "Le bouton gauche de la souris tourne une tranche du cube dans le sens de la " "flèche." # translated by: Nicolas Delvaux https://launchpad.net/~malizor on 2015-04-13 17:53:22 UTC #: pybiklib/dialogs.py:295 msgid "" "The right mouse button rotates a single slice of the cube against the " "direction of the arrow." msgstr "" "Le bouton droit de la souris tourne une tranche du cube dans le sens inverse " "de la flèche." # translated by: Jean-Marc https://launchpad.net/~m-balthazar on 2015-04-08 19:00:48 UTC # reviewed by: Nicolas Delvaux https://launchpad.net/~malizor on 2015-04-13 17:53:22 UTC #: pybiklib/dialogs.py:296 msgid "" "To rotate the whole cube instead of a single slice press the Ctrl key " "together with the mouse button." msgstr "" "Pour faire pivoter le cube entier plutôt qu'une seule tranche, presser la " "touche Ctrl en même temps que le bouton de la souris." # translated by: Jean-Marc https://launchpad.net/~m-balthazar on 2015-04-08 18:47:36 UTC # reviewed by: Nicolas Delvaux https://launchpad.net/~malizor on 2015-04-13 17:53:22 UTC #. Title of the 2nd paragraph #: pybiklib/dialogs.py:298 msgid "Using the keyboard to rotate the cube" msgstr "Utilisation du clavier pour faire tourner le cube" # translated by: Éfrit https://launchpad.net/~efrit on 2015-04-17 22:55:34 UTC # reviewed by: Jean-Marc https://launchpad.net/~m-balthazar on 2017-09-18 06:12:56 UTC #. Text of the 2nd paragraph, followed by bullet list items #: pybiklib/dialogs.py:300 msgid "" "Make sure the keyboard focus is on the cube area (e.g. click on the " "background of the cube). The keys can be configured in the preferences " "dialog, the default is:" msgstr "" "Assurez-vous que le focus du clavier est dans la zone du cube (par exemple " "en cliquant sur l’arrière-plan du cube). Les raccourcis peuvent être " "configurés dans la boîte de dialogue des préférences, la configuration par " "défaut étant :" # translated by: Jean-Marc https://launchpad.net/~m-balthazar on 2015-04-09 17:07:28 UTC # reviewed by: Nicolas Delvaux https://launchpad.net/~malizor on 2015-04-13 17:53:22 UTC #. before the item text is a list of keys #: pybiklib/dialogs.py:303 pybiklib/dialogs.py:318 msgid "Moves the left, right, upper, down, front or back slice clockwise." msgstr "" "Déplace les tranches gauche, droite, supérieure, inférieure, avant et " "arrière dans le sens horaire." # translated by: Jean-Marc https://launchpad.net/~m-balthazar on 2015-04-08 18:49:21 UTC # reviewed by: Nicolas Delvaux https://launchpad.net/~malizor on 2015-04-13 17:54:45 UTC #: pybiklib/dialogs.py:304 pybiklib/dialogs.py:319 msgid "Moves a slice couterclockwise." msgstr "Déplace une tranche dans le sens antihoraire." # translated by: Jean-Marc https://launchpad.net/~m-balthazar on 2015-04-08 18:49:21 UTC # reviewed by: Nicolas Delvaux https://launchpad.net/~malizor on 2015-04-13 17:54:45 UTC #: pybiklib/dialogs.py:305 pybiklib/dialogs.py:320 msgid "Moves the whole cube." msgstr "Déplace le cube entier." # translated by: Jean-Marc https://launchpad.net/~m-balthazar on 2015-04-08 18:49:21 UTC # reviewed by: Nicolas Delvaux https://launchpad.net/~malizor on 2015-04-13 17:54:45 UTC #. Title of the 3rd paragraph #: pybiklib/dialogs.py:307 msgid "Other keys and buttons" msgstr "Autres touches et boutons" # translated by: Jean-Marc https://launchpad.net/~m-balthazar on 2015-04-08 19:13:52 UTC # reviewed by: Nicolas Delvaux https://launchpad.net/~malizor on 2015-04-13 17:54:45 UTC #. bullet list items of the 3rd paragraph #: pybiklib/dialogs.py:309 msgid "Mouse wheel – Zoom in/out" msgstr "Molette de la souris - Zoom avant/arrière" # translated by: Jean-Marc https://launchpad.net/~m-balthazar on 2017-09-23 12:54:40 UTC #: pybiklib/dialogs.py:310 msgid "" "Arrow keys, Left mouse button on the background – Changes the direction of " "looking at the cube." msgstr "" "Touches fléchées, bouton gauche de la souris sur l’arrière-plan – change la " "direction de la vue sur le cube." # translated by: Jean-Marc https://launchpad.net/~m-balthazar on 2017-09-23 13:09:36 UTC #: pybiklib/dialogs.py:311 msgid "" "Moves keyboard focus to the sequence editor above the cube area where you " "can edit the move sequence in the notation described below. Hit enter when " "done." msgstr "" "Change le focus du clavier sur l’éditeur de séquences au-dessus de la zone " "du cube où vous pouvez modifer la séquence de mouvement avec la notation " "décrite ci-dessous. Appuyez sur Entrée lorsque vous avez terminé." # translated by: Jean-Marc https://launchpad.net/~m-balthazar on 2015-04-08 18:49:21 UTC # reviewed by: Nicolas Delvaux https://launchpad.net/~malizor on 2015-04-13 17:54:45 UTC #. Title of the 4th paragraph #: pybiklib/dialogs.py:315 msgid "Notation for moves" msgstr "Notation pour les déplacements" # translated by: Nicolas Delvaux https://launchpad.net/~malizor on 2015-04-13 17:54:45 UTC #. Text of the 4th paragraph, followed by bullet list items #: pybiklib/dialogs.py:317 msgid "" "All moves, however they are made, are displayed progressively above the cube " "area:" msgstr "" "Tous les déplacements, quels qu'ils soient, sont affichés progressivement au-" "dessus de la zone du cube :" # translated by: Jean-Marc https://launchpad.net/~m-balthazar on 2017-09-23 13:09:36 UTC #: pybiklib/dialogs.py:321 msgid "" "Moves the first, second or third slice from left clockwise. The allowed " "numbers are in the range from 1 to the count of parallel slices. \"l1\" is " "always the same as \"l\" and for the classic 3×3×3-Cube \"l2\" is the same " "as \"r2-\" and \"l3\" is the same as \"r-\"." msgstr "" "Bouge la première, deuxième ou troisième couche de la gauche, dans le sens " "horaire. Le nombre autorisé va de 1 au nombre de couches parallèles. « l1 » " "est toujours identique à « l » et pour le cube classique « 3 × 3 × 3 », « l2 " "» est identique à « r2- » et « l3 »\r\n" " est comme « r- »." # translated by: Jean-Marc https://launchpad.net/~m-balthazar on 2015-04-08 19:17:13 UTC # reviewed by: Nicolas Delvaux https://launchpad.net/~malizor on 2015-04-13 17:54:45 UTC #: pybiklib/dialogs.py:325 msgid "You can use a space to separate groups of moves." msgstr "" "Vous pouvez utiliser une espace pour séparer les groupes de déplacements." # translated by: Sylvie Gallet https://launchpad.net/~sylvie-gallet on 2012-12-14 22:44:18 UTC # reviewed by: Nicolas Delvaux https://launchpad.net/~malizor on 2013-06-09 12:32:25 UTC #: pybiklib/dialogs.py:379 msgid "Pybik project website" msgstr "Site web du projet Pybik" # translated by: Jean-Marc https://launchpad.net/~m-balthazar on 2015-04-08 18:50:56 UTC #: pybiklib/pluginlib.py:301 msgid "This plugin does not work for any model." msgstr "Ce greffon ne fonctionne pas pour n'importe quel modèle." # translated by: Jean-Marc https://launchpad.net/~m-balthazar on 2015-04-08 18:50:56 UTC # reviewed by: Nicolas Delvaux https://launchpad.net/~malizor on 2015-04-13 17:54:45 UTC #: pybiklib/pluginlib.py:303 pybiklib/pluginlib.py:306 msgid "This plugin only works for:" msgstr "Ce greffon fonctionne seulement pour :" # translated by: Jean-Marc https://launchpad.net/~m-balthazar on 2015-04-08 19:17:13 UTC # reviewed by: Nicolas Delvaux https://launchpad.net/~malizor on 2015-04-13 17:54:45 UTC #: pybiklib/pluginlib.py:498 msgid "This puzzle is not solvable." msgstr "Ce casse-tête ne peut pas être résolu." # translated by: Nicolas Delvaux https://launchpad.net/~malizor on 2013-06-09 12:39:41 UTC #. The following 6 words are for the antialiasing levels: disabled, ugly, low, medium, high, higher #: pybiklib/schema.py:211 msgid "disabled" msgstr "Désactivé" # translated by: Nicolas Delvaux https://launchpad.net/~malizor on 2013-06-09 12:39:41 UTC #: pybiklib/schema.py:211 msgid "ugly" msgstr "moche" # translated by: Nicolas Delvaux https://launchpad.net/~malizor on 2013-06-09 12:39:41 UTC #: pybiklib/schema.py:211 msgid "low" msgstr "faible" # translated by: Nicolas Delvaux https://launchpad.net/~malizor on 2013-06-09 12:39:41 UTC #: pybiklib/schema.py:212 msgid "medium" msgstr "moyen" # translated by: Nicolas Delvaux https://launchpad.net/~malizor on 2013-06-09 12:39:41 UTC #: pybiklib/schema.py:212 msgid "high" msgstr "élevé" # translated by: Nicolas Delvaux https://launchpad.net/~malizor on 2013-06-09 12:39:41 UTC #: pybiklib/schema.py:212 msgid "higher" msgstr "maximum" #: data/ui/qt/about.ui.h:212 msgid "About Pybik" msgstr "À propos de Pybik" #: data/ui/qt/about.ui.h:213 msgid "Translators:" msgstr "Traducteurs :" #: data/ui/qt/about.ui.h:214 msgid "About" msgstr "À propos" # translated by: Jean-Marc https://launchpad.net/~m-balthazar on 2017-09-18 06:01:51 UTC #: data/ui/qt/about.ui.h:215 msgid "Contribute" msgstr "Contribuer" #: data/ui/qt/about.ui.h:216 msgid "License" msgstr "Licence" # translated by: Jean-Marc https://launchpad.net/~m-balthazar on 2015-04-08 18:50:56 UTC # reviewed by: Nicolas Delvaux https://launchpad.net/~malizor on 2015-04-13 17:54:45 UTC #: data/ui/qt/help.ui.h:53 data/ui/qt/main.ui.h:297 msgid "Help" msgstr "Aide" # translated by: Jean-Marc https://launchpad.net/~m-balthazar on 2017-09-18 06:12:56 UTC # reviewed by: Sylvie Gallet https://launchpad.net/~sylvie-gallet on 2012-12-14 21:18:51 UTC #: data/ui/qt/main.ui.h:272 msgid "&New Challenge" msgstr "&Nouveau défi" #: data/ui/qt/main.ui.h:273 msgid "Ne&w Solved" msgstr "No&uveau résolu" #: data/ui/qt/main.ui.h:274 msgid "&Quit" msgstr "&Quitter" # translated by: Jean-Marc https://launchpad.net/~m-balthazar on 2015-04-09 17:10:06 UTC #: data/ui/qt/main.ui.h:276 msgid "&Set as Initial State" msgstr "&Définir comme à l'état initial" #: data/ui/qt/main.ui.h:277 msgid "&Reset Rotation" msgstr "&Annuler la rotation" #: data/ui/qt/main.ui.h:278 msgid "&Preferences …" msgstr "&Préférences…" #: data/ui/qt/main.ui.h:279 msgid "&Status Bar" msgstr "Ba&rre d'état" #: data/ui/qt/main.ui.h:280 msgid "&Info …" msgstr "&Info…" #: data/ui/qt/main.ui.h:281 msgid "Rewind" msgstr "Reculer" # translated by: Jean-Marc https://launchpad.net/~m-balthazar on 2015-04-11 17:13:06 UTC #: data/ui/qt/main.ui.h:282 msgid "Previous" msgstr "Précédent" #: data/ui/qt/main.ui.h:283 msgid "Stop" msgstr "Arrêter" #: data/ui/qt/main.ui.h:284 msgid "Play" msgstr "Lire" #: data/ui/qt/main.ui.h:285 msgid "Next" msgstr "Suivant" #: data/ui/qt/main.ui.h:286 msgid "Forward" msgstr "En avant" #: data/ui/qt/main.ui.h:287 msgid "Add Mark" msgstr "Ajouter une marque" #: data/ui/qt/main.ui.h:289 msgid "Mark the current place in the sequence of moves" msgstr "Marquer la position actuelle dans la séquence de mouvements" #: data/ui/qt/main.ui.h:291 msgid "Remove Mark" msgstr "Supprimer une marque" #: data/ui/qt/main.ui.h:293 msgid "Remove the mark at the current place in the sequence of moves" msgstr "" "Supprimer la marque de la position actuelle dans la séquence de mouvements" #: data/ui/qt/main.ui.h:295 msgid "&Edit Bar" msgstr "&Barre d'édition" # translated by: Jean-Marc https://launchpad.net/~m-balthazar on 2015-04-08 18:50:56 UTC # reviewed by: Nicolas Delvaux https://launchpad.net/~malizor on 2015-04-13 17:55:39 UTC #: data/ui/qt/main.ui.h:296 msgid "&Help …" msgstr "&Aide…" #: data/ui/qt/preferences.ui.h:372 msgid "Preferences" msgstr "Préférences" #: data/ui/qt/preferences.ui.h:373 msgid "Animation Speed:" msgstr "Vitesse d'animation :" #: data/ui/qt/preferences.ui.h:375 msgid "Mirror Distance:" msgstr "Distance du miroir :" # translated by: Jean-Marc https://launchpad.net/~m-balthazar on 2015-04-08 18:50:56 UTC # reviewed by: Nicolas Delvaux https://launchpad.net/~malizor on 2015-04-13 17:55:39 UTC #: data/ui/qt/preferences.ui.h:377 msgid "Quality:" msgstr "Qualité :" # translated by: Éfrit https://launchpad.net/~efrit on 2015-04-18 20:15:38 UTC # reviewed by: Jean-Marc https://launchpad.net/~m-balthazar on 2016-04-04 13:16:07 UTC #: data/ui/qt/preferences.ui.h:380 msgid "" "Lower antialiasing has better performance, higher antialiasing has better " "quality." msgstr "" "Diminuer l’anticrénelage donne de meilleurs performances, augmenter " "l’anticrénelage donne une meilleure qualité." # translated by: Jean-Marc https://launchpad.net/~m-balthazar on 2015-04-08 18:51:26 UTC # reviewed by: Nicolas Delvaux https://launchpad.net/~malizor on 2015-04-13 17:55:39 UTC #: data/ui/qt/preferences.ui.h:382 msgid "Antialiasing:" msgstr "Anti-crénelage :" # translated by: Nicolas Delvaux https://launchpad.net/~malizor on 2013-06-09 12:31:30 UTC #: data/ui/qt/preferences.ui.h:384 msgid "The program needs to be restarted for the changes to take effect." msgstr "" "Ce programme a besoin d'être redémarré pour que les changements prennent " "effet" #: data/ui/qt/preferences.ui.h:385 msgid "Graphic" msgstr "Graphique" # translated by: Jean-Marc https://launchpad.net/~m-balthazar on 2017-09-18 06:17:19 UTC #: data/ui/qt/preferences.ui.h:386 msgid "Point and click, all directions" msgstr "Pointez et cliquez, toutes les directions" # translated by: Jean-Marc https://launchpad.net/~m-balthazar on 2017-09-18 06:17:19 UTC #: data/ui/qt/preferences.ui.h:387 msgid "Point and click, simplified" msgstr "Pointez et cliquez, simplifié" # translated by: Jean-Marc https://launchpad.net/~m-balthazar on 2017-09-18 06:02:19 UTC #: data/ui/qt/preferences.ui.h:388 msgid "Gestures" msgstr "Mouvements" #: data/ui/qt/preferences.ui.h:389 msgid "Mouse" msgstr "Souris" #: data/ui/qt/preferences.ui.h:391 data/ui/qt/preferences.ui.h:393 msgid "Add" msgstr "Ajouter" #: data/ui/qt/preferences.ui.h:395 data/ui/qt/preferences.ui.h:397 msgid "Remove" msgstr "Enlever" #: data/ui/qt/preferences.ui.h:399 data/ui/qt/preferences.ui.h:401 msgid "Reset" msgstr "Réinitialiser" #: data/ui/qt/preferences.ui.h:402 msgid "Keys" msgstr "Touches" #: data/ui/qt/preferences.ui.h:403 msgid "Color:" msgstr "Couleur :" #: data/ui/qt/preferences.ui.h:405 msgid "Image File:" msgstr "Fichier image :" # translated by: Éfrit https://launchpad.net/~efrit on 2015-04-17 22:40:42 UTC # reviewed by: Jean-Marc https://launchpad.net/~m-balthazar on 2016-02-28 22:27:12 UTC #: data/ui/qt/preferences.ui.h:407 msgid "Tiled" msgstr "En tuiles" #: data/ui/qt/preferences.ui.h:408 msgid "Mosaic" msgstr "Mosaïque" #: data/ui/qt/preferences.ui.h:409 msgid "Background:" msgstr "Arrière plan :" #: data/ui/qt/preferences.ui.h:411 msgid "Appearance" msgstr "Apparence" # translated by: Sylvie Gallet https://launchpad.net/~sylvie-gallet on 2012-12-14 22:40:54 UTC #: pybiklib/ext/qt.py:1578 msgid "Move" msgstr "Mouvement" # translated by: lann https://launchpad.net/~lann on 2013-06-16 05:04:11 UTC # reviewed by: Sylvie Gallet https://launchpad.net/~sylvie-gallet on 2014-01-27 18:52:51 UTC #: pybiklib/ext/qt.py:1581 msgid "Key" msgstr "Clé" # translated by: Sylvie Gallet https://launchpad.net/~sylvie-gallet on 2012-12-14 22:40:54 UTC # reviewed by: Nicolas Delvaux https://launchpad.net/~malizor on 2013-06-09 12:32:25 UTC #: pybiklib/ext/qt.py:1682 msgid "Open Image" msgstr "Ouvrir une image" # translated by: Sylvie Gallet https://launchpad.net/~sylvie-gallet on 2012-12-14 22:36:49 UTC # reviewed by: Nicolas Delvaux https://launchpad.net/~malizor on 2013-06-09 12:31:30 UTC #: pybiklib/ext/qt.py:1720 msgid "plain" msgstr "uni" # translated by: Baptiste Fontaine https://launchpad.net/~bfontaine on 2012-12-14 08:56:25 UTC # reviewed by: Nicolas Delvaux https://launchpad.net/~malizor on 2013-06-09 12:50:40 UTC #: pybiklib/ext/qt.py:1723 msgid "select …" msgstr "sélectionner…" # translated by: Havok Novak https://launchpad.net/~havok-novak-deactivatedaccount on 2012-12-14 09:01:56 UTC # reviewed by: Sylvie Gallet https://launchpad.net/~sylvie-gallet on 2012-12-14 09:22:57 UTC #: pybiklib/ext/qtui.py:94 msgid "Press a key …" msgstr "Appuyez sur une touche…" # translated by: Nicolas Delvaux https://launchpad.net/~malizor on 2013-06-09 12:52:02 UTC #. Add whatever keywords you want in your language, separated by semicolons, last character must be a semicolon. These keywords are used when searching for applications in Unity, GNOME Shell, etc. #: data/app-meta/pybik.desktop.in:10 msgid "rubik;cube;puzzle;magic;" msgstr "rubik;cube;casse-tête;magique;jeu;énigme;" # translated by: Havok Novak https://launchpad.net/~havok-novak-deactivatedaccount on 2012-12-14 16:10:03 UTC # reviewed by: Sylvie Gallet https://launchpad.net/~sylvie-gallet on 2012-12-14 21:18:51 UTC #: data/plugins/01-challenges.plugins.py:18 #: data/plugins/01-challenges.plugins.py:21 #: data/plugins/01-challenges.plugins.py:24 #: data/plugins/01-challenges.plugins.py:27 #: data/plugins/01-challenges.plugins.py:30 #: data/plugins/01-challenges.plugins.py:33 #: data/plugins/01-challenges.plugins.py:36 #: data/plugins/01-challenges.plugins.py:39 #: data/plugins/01-challenges.plugins.py:42 #: data/plugins/01-challenges.plugins.py:45 #: data/plugins/01-challenges.plugins.py:48 msgid "Challenges" msgstr "Défis" # translated by: Jean-Marc https://launchpad.net/~m-balthazar on 2015-07-21 17:15:44 UTC # reviewed by: Jean-Marc https://launchpad.net/~m-balthazar on 2016-02-28 22:29:47 UTC #: data/plugins/01-challenges.plugins.py:19 msgid "Solve random puzzle" msgstr "Résoudre le casse-tête aléatoire" # translated by: Jean-Marc https://launchpad.net/~m-balthazar on 2015-04-09 17:14:30 UTC # reviewed by: Nicolas Delvaux https://launchpad.net/~malizor on 2015-04-13 17:55:39 UTC #: data/plugins/01-challenges.plugins.py:22 #: data/plugins/01-challenges.plugins.py:25 #: data/plugins/01-challenges.plugins.py:28 #: data/plugins/01-challenges.plugins.py:31 #: data/plugins/01-challenges.plugins.py:34 #: data/plugins/01-challenges.plugins.py:37 #: data/plugins/01-challenges.plugins.py:40 #: data/plugins/01-challenges.plugins.py:43 #: data/plugins/01-challenges.plugins.py:46 #: data/plugins/01-challenges.plugins.py:49 msgid "Solve in {} move" msgid_plural "Solve in {} moves" msgstr[0] "Résolu en {} mouvement" msgstr[1] "Résolu en {} mouvements" # translated by: Havok Novak https://launchpad.net/~havok-novak-deactivatedaccount on 2012-12-14 16:13:24 UTC # reviewed by: Sylvie Gallet https://launchpad.net/~sylvie-gallet on 2012-12-15 08:14:13 UTC #: data/plugins/10-beginners.plugins.py:31 #: data/plugins/10-beginners.plugins.py:34 #: data/plugins/10-beginners.plugins.py:56 #: data/plugins/10-beginners.plugins.py:73 #: data/plugins/10-beginners.plugins.py:100 #: data/plugins/10-beginners.plugins.py:118 #: data/plugins/10-beginners.plugins.py:140 #: data/plugins/10-beginners.plugins.py:158 #: data/plugins/14-leyan-lo.plugins.py:21 #: data/plugins/14-leyan-lo.plugins.py:24 #: data/plugins/14-leyan-lo.plugins.py:53 #: data/plugins/14-leyan-lo.plugins.py:74 #: data/plugins/14-leyan-lo.plugins.py:90 #: data/plugins/14-leyan-lo.plugins.py:107 #: data/plugins/14-leyan-lo.plugins.py:129 #: data/plugins/14-leyan-lo.plugins.py:170 #: data/plugins/150-spiegel.plugins.py:32 #: data/plugins/150-spiegel.plugins.py:35 #: data/plugins/150-spiegel.plugins.py:64 #: data/plugins/150-spiegel.plugins.py:85 #: data/plugins/150-spiegel.plugins.py:100 #: data/plugins/150-spiegel.plugins.py:113 #: data/plugins/150-spiegel.plugins.py:130 #: data/plugins/150-spiegel.plugins.py:141 #: data/plugins/151-spiegel-improved.plugins.py:20 #: data/plugins/151-spiegel-improved.plugins.py:23 #: data/plugins/151-spiegel-improved.plugins.py:68 #: data/plugins/151-spiegel-improved.plugins.py:107 #: data/plugins/151-spiegel-improved.plugins.py:139 #: data/plugins/151-spiegel-improved.plugins.py:165 #: data/plugins/151-spiegel-improved.plugins.py:183 #: data/plugins/151-spiegel-improved.plugins.py:197 #: data/plugins/20-2x2x2.plugins.py:18 data/plugins/20-2x2x2.plugins.py:21 #: data/plugins/20-2x2x2.plugins.py:37 data/plugins/20-2x2x2.plugins.py:55 msgid "Solvers" msgstr "Solveurs" # translated by: Jean-Marc https://launchpad.net/~m-balthazar on 2015-04-08 19:18:54 UTC # reviewed by: Nicolas Delvaux https://launchpad.net/~malizor on 2015-04-13 17:55:39 UTC #: data/plugins/10-beginners.plugins.py:32 #: data/plugins/10-beginners.plugins.py:35 #: data/plugins/10-beginners.plugins.py:57 #: data/plugins/10-beginners.plugins.py:74 #: data/plugins/10-beginners.plugins.py:101 #: data/plugins/10-beginners.plugins.py:119 #: data/plugins/10-beginners.plugins.py:141 #: data/plugins/10-beginners.plugins.py:159 msgid "Beginner's method" msgstr "La méthode du débutant" # translated by: Havok Novak https://launchpad.net/~havok-novak-deactivatedaccount on 2012-12-14 16:17:06 UTC # reviewed by: Sylvie Gallet https://launchpad.net/~sylvie-gallet on 2012-12-14 21:32:45 UTC #: data/plugins/10-beginners.plugins.py:36 #: data/plugins/14-leyan-lo.plugins.py:26 #: data/plugins/150-spiegel.plugins.py:37 #: data/plugins/151-spiegel-improved.plugins.py:25 msgid "Top edges" msgstr "Bords supérieurs" # translated by: Havok Novak https://launchpad.net/~havok-novak-deactivatedaccount on 2012-12-14 16:17:06 UTC # reviewed by: Sylvie Gallet https://launchpad.net/~sylvie-gallet on 2012-12-14 21:32:45 UTC #: data/plugins/10-beginners.plugins.py:58 #: data/plugins/14-leyan-lo.plugins.py:55 #: data/plugins/150-spiegel.plugins.py:66 #: data/plugins/151-spiegel-improved.plugins.py:70 msgid "Top corners" msgstr "Coins supérieurs" # translated by: Célestin Taramarcaz https://launchpad.net/~ctaramarcaz on 2013-01-10 09:34:47 UTC # reviewed by: Jean-Marc https://launchpad.net/~m-balthazar on 2015-04-08 19:26:38 UTC #: data/plugins/10-beginners.plugins.py:75 #: data/plugins/14-leyan-lo.plugins.py:76 #: data/plugins/150-spiegel.plugins.py:87 #: data/plugins/151-spiegel-improved.plugins.py:109 msgid "Middle slice" msgstr "Tranche intermédiaire" # translated by: Éfrit https://launchpad.net/~efrit on 2015-04-18 20:15:38 UTC # reviewed by: Jean-Marc https://launchpad.net/~m-balthazar on 2016-02-28 22:27:49 UTC #: data/plugins/10-beginners.plugins.py:102 #: data/plugins/14-leyan-lo.plugins.py:92 #: data/plugins/150-spiegel.plugins.py:115 #: data/plugins/151-spiegel-improved.plugins.py:167 msgid "Bottom edge orient" msgstr "Orientation du bord inférieur" # translated by: Éfrit https://launchpad.net/~efrit on 2015-04-18 20:19:34 UTC # reviewed by: Jean-Marc https://launchpad.net/~m-balthazar on 2016-02-28 22:27:49 UTC #: data/plugins/10-beginners.plugins.py:120 #: data/plugins/14-leyan-lo.plugins.py:131 #: data/plugins/150-spiegel.plugins.py:143 #: data/plugins/151-spiegel-improved.plugins.py:199 #: data/plugins/20-2x2x2.plugins.py:57 msgid "Bottom corner orient" msgstr "Orientation du coin inférieur" # translated by: Éfrit https://launchpad.net/~efrit on 2015-04-18 20:19:34 UTC # reviewed by: Jean-Marc https://launchpad.net/~m-balthazar on 2017-10-15 10:51:14 UTC #: data/plugins/10-beginners.plugins.py:142 #: data/plugins/14-leyan-lo.plugins.py:109 #: data/plugins/150-spiegel.plugins.py:132 #: data/plugins/151-spiegel-improved.plugins.py:185 #: data/plugins/20-2x2x2.plugins.py:39 msgid "Bottom corner place" msgstr "Au niveau du coin inférieur" # translated by: Éfrit https://launchpad.net/~efrit on 2015-04-18 20:19:34 UTC # reviewed by: Jean-Marc https://launchpad.net/~m-balthazar on 2017-10-15 10:51:14 UTC #: data/plugins/10-beginners.plugins.py:160 #: data/plugins/14-leyan-lo.plugins.py:172 #: data/plugins/150-spiegel.plugins.py:102 #: data/plugins/151-spiegel-improved.plugins.py:141 msgid "Bottom edge place" msgstr "Au niveau du bord inférieur" # translated by: Jean-Marc https://launchpad.net/~m-balthazar on 2015-04-08 18:53:22 UTC # reviewed by: Nicolas Delvaux https://launchpad.net/~malizor on 2015-04-13 17:55:39 UTC #. Leyan Lo is the inventor of the solution #: data/plugins/14-leyan-lo.plugins.py:23 #: data/plugins/14-leyan-lo.plugins.py:25 #: data/plugins/14-leyan-lo.plugins.py:54 #: data/plugins/14-leyan-lo.plugins.py:75 #: data/plugins/14-leyan-lo.plugins.py:91 #: data/plugins/14-leyan-lo.plugins.py:108 #: data/plugins/14-leyan-lo.plugins.py:130 #: data/plugins/14-leyan-lo.plugins.py:171 msgid "Leyan Lo" msgstr "Leyan Lo" # translated by: Havok Novak https://launchpad.net/~havok-novak-deactivatedaccount on 2012-12-14 16:13:24 UTC # reviewed by: Sylvie Gallet https://launchpad.net/~sylvie-gallet on 2012-12-14 21:32:45 UTC #. Spiegel is a german magazine #: data/plugins/150-spiegel.plugins.py:34 #: data/plugins/150-spiegel.plugins.py:36 #: data/plugins/150-spiegel.plugins.py:65 #: data/plugins/150-spiegel.plugins.py:86 #: data/plugins/150-spiegel.plugins.py:101 #: data/plugins/150-spiegel.plugins.py:114 #: data/plugins/150-spiegel.plugins.py:131 #: data/plugins/150-spiegel.plugins.py:142 msgid "Spiegel" msgstr "Spiegel" # translated by: Célestin Taramarcaz https://launchpad.net/~ctaramarcaz on 2013-01-10 09:34:47 UTC # reviewed by: Jean-Marc https://launchpad.net/~m-balthazar on 2015-04-08 19:27:07 UTC #. Spiegel is a german magazine #: data/plugins/151-spiegel-improved.plugins.py:22 #: data/plugins/151-spiegel-improved.plugins.py:24 #: data/plugins/151-spiegel-improved.plugins.py:69 #: data/plugins/151-spiegel-improved.plugins.py:108 #: data/plugins/151-spiegel-improved.plugins.py:140 #: data/plugins/151-spiegel-improved.plugins.py:166 #: data/plugins/151-spiegel-improved.plugins.py:184 #: data/plugins/151-spiegel-improved.plugins.py:198 msgid "Spiegel improved" msgstr "Méthode Spiegel améliorée" # translated by: Célestin Taramarcaz https://launchpad.net/~ctaramarcaz on 2013-01-10 09:34:47 UTC # reviewed by: Nicolas Delvaux https://launchpad.net/~malizor on 2013-06-09 12:36:38 UTC #: data/plugins/20-2x2x2.plugins.py:19 data/plugins/20-2x2x2.plugins.py:22 #: data/plugins/20-2x2x2.plugins.py:38 data/plugins/20-2x2x2.plugins.py:56 msgid "2×2×2" msgstr "2x2x2" # translated by: Havok Novak https://launchpad.net/~havok-novak-deactivatedaccount on 2012-12-14 16:19:08 UTC # reviewed by: Sylvie Gallet https://launchpad.net/~sylvie-gallet on 2012-12-14 21:32:45 UTC #: data/plugins/20-2x2x2.plugins.py:23 msgid "Top slice" msgstr "Tranche supérieure" # translated by: lann https://launchpad.net/~lann on 2013-06-16 05:05:49 UTC # reviewed by: Sylvie Gallet https://launchpad.net/~sylvie-gallet on 2014-01-27 18:54:18 UTC #: data/plugins/80-pretty-patterns.plugins.py:20 #: data/plugins/80-pretty-patterns.plugins.py:23 #: data/plugins/80-pretty-patterns.plugins.py:27 #: data/plugins/80-pretty-patterns.plugins.py:31 #: data/plugins/80-pretty-patterns.plugins.py:35 #: data/plugins/80-pretty-patterns.plugins.py:40 #: data/plugins/80-pretty-patterns.plugins.py:44 msgid "Stripes" msgstr "Bandes" # translated by: Sylvie Gallet https://launchpad.net/~sylvie-gallet on 2012-12-14 21:32:45 UTC # reviewed by: Jean-Marc https://launchpad.net/~m-balthazar on 2015-04-08 19:27:07 UTC #: data/plugins/80-pretty-patterns.plugins.py:49 #: data/plugins/80-pretty-patterns.plugins.py:53 msgid "Criss-Cross" msgstr "Croisillon" # translated by: Sylvie Gallet https://launchpad.net/~sylvie-gallet on 2012-12-14 21:32:45 UTC # reviewed by: Nicolas Delvaux https://launchpad.net/~malizor on 2013-06-09 12:36:38 UTC #: data/plugins/80-pretty-patterns.plugins.py:57 msgid "Fried Eggs" msgstr "Œufs au plat" # translated by: Sylvie Gallet https://launchpad.net/~sylvie-gallet on 2012-12-14 21:32:45 UTC # reviewed by: Nicolas Delvaux https://launchpad.net/~malizor on 2013-06-09 12:36:38 UTC #: data/plugins/80-pretty-patterns.plugins.py:61 msgid "Big Fried Eggs" msgstr "Grands œufs au plat" # translated by: Sylvie Gallet https://launchpad.net/~sylvie-gallet on 2012-12-14 21:32:45 UTC # reviewed by: Nicolas Delvaux https://launchpad.net/~malizor on 2013-06-09 12:37:35 UTC #: data/plugins/80-pretty-patterns.plugins.py:65 #: data/plugins/80-pretty-patterns.plugins.py:69 msgid "4 Fried Eggs" msgstr "4 œufs au plat" # translated by: Éfrit https://launchpad.net/~efrit on 2015-04-17 22:40:42 UTC # reviewed by: Jean-Marc https://launchpad.net/~m-balthazar on 2015-07-21 17:15:44 UTC #: data/plugins/80-pretty-patterns.plugins.py:73 msgid "2 Fried Eggs" msgstr "2 œufs sur le plat" # translated by: Pierre Soulat https://launchpad.net/~pierre-soulat on 2014-01-27 19:28:24 UTC # reviewed by: Sylvie Gallet https://launchpad.net/~sylvie-gallet on 2014-01-27 22:59:34 UTC #: data/plugins/80-pretty-patterns.plugins.py:77 msgid "Chessboard" msgstr "Échiquier" # translated by: lann https://launchpad.net/~lann on 2013-06-16 05:05:49 UTC # reviewed by: Sylvie Gallet https://launchpad.net/~sylvie-gallet on 2014-01-27 18:54:18 UTC #: data/plugins/80-pretty-patterns.plugins.py:83 msgid "Cross" msgstr "Croix" # translated by: lann https://launchpad.net/~lann on 2013-06-16 05:05:49 UTC # reviewed by: Sylvie Gallet https://launchpad.net/~sylvie-gallet on 2014-01-27 18:54:18 UTC #: data/plugins/80-pretty-patterns.plugins.py:87 msgid "Zig Zag" msgstr "Zig Zag" # translated by: Sylvie Gallet https://launchpad.net/~sylvie-gallet on 2012-12-14 21:32:45 UTC # reviewed by: Nicolas Delvaux https://launchpad.net/~malizor on 2013-06-09 12:37:35 UTC #. T is the shape formed by the cube labels. T-Time is a pun (Tea Time) and not suitable for literal translation. Don't translate it or use something common or whatever you think makes sense. #: data/plugins/80-pretty-patterns.plugins.py:93 #: data/plugins/80-pretty-patterns.plugins.py:96 #: data/plugins/80-pretty-patterns.plugins.py:100 #: data/plugins/80-pretty-patterns.plugins.py:104 #: data/plugins/80-pretty-patterns.plugins.py:108 #: data/plugins/80-pretty-patterns.plugins.py:112 msgid "T-Time" msgstr "Heure du T" # translated by: Nicolas Delvaux https://launchpad.net/~malizor on 2013-06-09 12:47:28 UTC #. C is the shape formed by the cube labels #: data/plugins/80-pretty-patterns.plugins.py:118 msgid "C" msgstr "C" # translated by: Sylvie Gallet https://launchpad.net/~sylvie-gallet on 2012-12-14 21:33:53 UTC # reviewed by: Nicolas Delvaux https://launchpad.net/~malizor on 2013-06-09 12:37:35 UTC #: data/plugins/80-pretty-patterns.plugins.py:121 msgid "Cube in a Cube" msgstr "Cube dans un cube" # translated by: Sylvie Gallet https://launchpad.net/~sylvie-gallet on 2012-12-15 08:14:13 UTC # reviewed by: Jean-Marc https://launchpad.net/~m-balthazar on 2015-04-08 19:27:07 UTC #: data/plugins/80-pretty-patterns.plugins.py:125 msgid "Striped Cube in a Cube" msgstr "Cube rayé dans un cube" # translated by: Jean-Marc https://launchpad.net/~m-balthazar on 2015-04-08 19:20:01 UTC # reviewed by: Jean-Marc https://launchpad.net/~m-balthazar on 2017-10-15 10:53:16 UTC #: data/plugins/80-pretty-patterns.plugins.py:129 msgid "Six square cuboids" msgstr "Six parallélépipèdes carrés" # translated by: Havok Novak https://launchpad.net/~havok-novak-deactivatedaccount on 2012-12-14 16:20:34 UTC # reviewed by: Nicolas Delvaux https://launchpad.net/~malizor on 2013-06-09 12:53:13 UTC #. Superflip may be not translated, because it has a special meaning in the mathematical theory behind the Rubik's Cube. #: data/plugins/80-pretty-patterns.plugins.py:135 msgid "Superflip" msgstr "Superflip" # translated by: Célestin Taramarcaz https://launchpad.net/~ctaramarcaz on 2013-01-10 09:44:31 UTC # reviewed by: Nicolas Delvaux https://launchpad.net/~malizor on 2013-06-09 12:53:25 UTC #: data/plugins/80-pretty-patterns.plugins.py:138 msgid "Superflip easy" msgstr "Superflip facile" # translated by: Havok Novak https://launchpad.net/~havok-novak-deactivatedaccount on 2012-12-14 16:20:34 UTC # reviewed by: Sylvie Gallet https://launchpad.net/~sylvie-gallet on 2014-01-27 23:06:12 UTC #: data/plugins/80-pretty-patterns.plugins.py:142 msgid "Green Mamba" msgstr "Green Mamba" # translated by: Nicolas Delvaux https://launchpad.net/~malizor on 2013-06-09 12:47:50 UTC #: data/plugins/80-pretty-patterns.plugins.py:146 msgid "Anaconda" msgstr "Anaconda" # translated by: Célestin Taramarcaz https://launchpad.net/~ctaramarcaz on 2013-01-10 09:44:31 UTC # reviewed by: Sylvie Gallet https://launchpad.net/~sylvie-gallet on 2014-01-27 23:06:12 UTC #: data/plugins/80-pretty-patterns.plugins.py:150 msgid "Duck Feet" msgstr "Duck Feet" # translated by: Jean-Marc https://launchpad.net/~m-balthazar on 2015-04-08 18:53:22 UTC # reviewed by: Nicolas Delvaux https://launchpad.net/~malizor on 2015-04-13 17:56:35 UTC #: data/plugins/80-pretty-patterns.plugins.py:154 #: data/plugins/80-pretty-patterns.plugins.py:158 #: data/plugins/80-pretty-patterns.plugins.py:162 #: data/plugins/80-pretty-patterns.plugins.py:166 #: data/plugins/80-pretty-patterns.plugins.py:170 #: data/plugins/80-pretty-patterns.plugins.py:174 #: data/plugins/80-pretty-patterns.plugins.py:178 #: data/plugins/80-pretty-patterns.plugins.py:182 msgid "Plus" msgstr "Plus" # translated by: Jean-Marc https://launchpad.net/~m-balthazar on 2015-04-08 18:53:22 UTC # reviewed by: Nicolas Delvaux https://launchpad.net/~malizor on 2015-04-13 17:56:35 UTC #: data/plugins/80-pretty-patterns.plugins.py:186 #: data/plugins/80-pretty-patterns.plugins.py:191 #: data/plugins/80-pretty-patterns.plugins.py:196 #: data/plugins/80-pretty-patterns.plugins.py:200 msgid "Minus" msgstr "Moins" # translated by: Jean-Marc https://launchpad.net/~m-balthazar on 2015-04-08 18:53:22 UTC # reviewed by: Nicolas Delvaux https://launchpad.net/~malizor on 2015-04-13 17:56:35 UTC #: data/plugins/80-pretty-patterns.plugins.py:204 msgid "Volcano" msgstr "Volcan" # translated by: Jean-Marc https://launchpad.net/~m-balthazar on 2015-04-08 18:53:22 UTC # reviewed by: Jean-Marc https://launchpad.net/~m-balthazar on 2016-02-28 22:27:49 UTC #: data/plugins/80-pretty-patterns.plugins.py:208 msgid "Checkerboard (easy)" msgstr "Damier (facile)" # translated by: Jean-Marc https://launchpad.net/~m-balthazar on 2015-04-08 18:54:59 UTC # reviewed by: Jean-Marc https://launchpad.net/~m-balthazar on 2016-02-28 22:27:49 UTC #: data/plugins/80-pretty-patterns.plugins.py:212 msgid "Checkerboard (fast)" msgstr "Damier (rapide)" # translated by: Éfrit https://launchpad.net/~efrit on 2015-04-17 22:40:42 UTC # reviewed by: Jean-Marc https://launchpad.net/~m-balthazar on 2016-02-28 22:27:49 UTC #: data/plugins/80-pretty-patterns.plugins.py:216 msgid "Mixed Checkerboard" msgstr "Damier mélangé" # translated by: Jean-Marc https://launchpad.net/~m-balthazar on 2015-04-08 18:54:59 UTC # reviewed by: Jean-Marc https://launchpad.net/~m-balthazar on 2016-02-28 22:27:49 UTC #: data/plugins/80-pretty-patterns.plugins.py:220 msgid "Tipi" msgstr "Tipi" # translated by: Nicolas Delvaux https://launchpad.net/~malizor on 2013-06-09 12:47:50 UTC #: data/plugins/90-library.plugins.py:18 data/plugins/90-library.plugins.py:22 #: data/plugins/90-library.plugins.py:26 data/plugins/90-library.plugins.py:30 #: data/plugins/90-library.plugins.py:34 data/plugins/90-library.plugins.py:38 #: data/plugins/90-library.plugins.py:42 data/plugins/90-library.plugins.py:46 #: data/plugins/90-library.plugins.py:50 data/plugins/90-library.plugins.py:54 #: data/plugins/90-library.plugins.py:58 data/plugins/90-library.plugins.py:62 #: data/plugins/90-library.plugins.py:66 data/plugins/90-library.plugins.py:70 #: data/plugins/90-library.plugins.py:74 data/plugins/90-library.plugins.py:78 #: data/plugins/90-library.plugins.py:82 data/plugins/90-library.plugins.py:86 #: data/plugins/90-library.plugins.py:91 data/plugins/90-library.plugins.py:96 #: data/plugins/90-library.plugins.py:101 #: data/plugins/90-library.plugins.py:105 #: data/plugins/90-library.plugins.py:110 #: data/plugins/90-library.plugins.py:115 #: data/plugins/90-library.plugins.py:119 #: data/plugins/90-library.plugins.py:123 #: data/plugins/90-library.plugins.py:127 msgid "Library" msgstr "Bibliothèque" # translated by: Jean-Marc https://launchpad.net/~m-balthazar on 2017-10-15 10:51:14 UTC #: data/plugins/90-library.plugins.py:19 data/plugins/90-library.plugins.py:23 #: data/plugins/90-library.plugins.py:27 data/plugins/90-library.plugins.py:31 #: data/plugins/90-library.plugins.py:35 msgid "Swap edges" msgstr "Inverser les bords" # translated by: Éfrit https://launchpad.net/~efrit on 2015-04-25 09:46:03 UTC # reviewed by: Jean-Marc https://launchpad.net/~m-balthazar on 2016-04-04 13:16:41 UTC #: data/plugins/90-library.plugins.py:20 msgid "3 edges ⟳, top layer" msgstr "3 bords ⟳, couche supérieure" # translated by: Éfrit https://launchpad.net/~efrit on 2015-04-25 09:46:03 UTC # reviewed by: Jean-Marc https://launchpad.net/~m-balthazar on 2016-04-04 13:16:41 UTC #: data/plugins/90-library.plugins.py:24 msgid "3 edges ⟲, top layer" msgstr "3 bords ⟲, couche supérieure" # translated by: Éfrit https://launchpad.net/~efrit on 2015-04-25 09:46:03 UTC # reviewed by: Jean-Marc https://launchpad.net/~m-balthazar on 2016-04-04 13:16:41 UTC #: data/plugins/90-library.plugins.py:28 msgid "3 edges, middle layer" msgstr "3 bords, couche du milieu" # translated by: Éfrit https://launchpad.net/~efrit on 2015-04-25 09:46:03 UTC # reviewed by: Jean-Marc https://launchpad.net/~m-balthazar on 2017-09-23 12:59:41 UTC #: data/plugins/90-library.plugins.py:32 msgid "4 edges, front and right" msgstr "4 bords, devant et à droite" # translated by: Éfrit https://launchpad.net/~efrit on 2015-04-25 09:46:03 UTC # reviewed by: Jean-Marc https://launchpad.net/~m-balthazar on 2017-09-23 12:59:41 UTC #: data/plugins/90-library.plugins.py:36 msgid "4 edges, front and back" msgstr "4 bords, devant et derrière" # translated by: Éfrit https://launchpad.net/~efrit on 2015-04-25 09:46:03 UTC # reviewed by: Jean-Marc https://launchpad.net/~m-balthazar on 2017-09-23 12:59:41 UTC #: data/plugins/90-library.plugins.py:39 msgid "Swap 2 edges and 2 corners, top layer" msgstr "Échanger 2 bords et 2 coins, couche supérieure" # translated by: Jean-Marc https://launchpad.net/~m-balthazar on 2017-10-15 10:52:30 UTC #: data/plugins/90-library.plugins.py:43 data/plugins/90-library.plugins.py:47 msgid "Flip edges" msgstr "Retourner les bords" # translated by: Jean-Marc https://launchpad.net/~m-balthazar on 2015-04-08 19:21:21 UTC # reviewed by: Nicolas Delvaux https://launchpad.net/~malizor on 2015-04-13 17:56:35 UTC #: data/plugins/90-library.plugins.py:44 msgid "4 edges" msgstr "4 bords" # translated by: Éfrit https://launchpad.net/~efrit on 2015-04-25 09:46:03 UTC # reviewed by: Jean-Marc https://launchpad.net/~m-balthazar on 2017-09-18 06:10:14 UTC #: data/plugins/90-library.plugins.py:48 msgid "2 edges, top layer" msgstr "2 bords, couche supérieure" # translated by: Éfrit https://launchpad.net/~efrit on 2015-04-25 09:46:03 UTC # reviewed by: Stanislas Michalak https://launchpad.net/~stanislas-michalak on 2017-10-11 08:19:37 UTC #: data/plugins/90-library.plugins.py:51 data/plugins/90-library.plugins.py:55 #: data/plugins/90-library.plugins.py:59 data/plugins/90-library.plugins.py:63 #: data/plugins/90-library.plugins.py:67 data/plugins/90-library.plugins.py:71 msgid "Swap corners" msgstr "Échanger les coins" # translated by: Éfrit https://launchpad.net/~efrit on 2015-04-25 09:46:03 UTC # reviewed by: Jean-Marc https://launchpad.net/~m-balthazar on 2016-04-04 13:16:41 UTC #: data/plugins/90-library.plugins.py:52 data/plugins/90-library.plugins.py:76 msgid "2 corners, top layer" msgstr "2 coins, couche supérieure" # translated by: Éfrit https://launchpad.net/~efrit on 2015-04-25 09:49:21 UTC # reviewed by: Jean-Marc https://launchpad.net/~m-balthazar on 2017-09-23 13:00:27 UTC #: data/plugins/90-library.plugins.py:56 msgid "2 corners diagonal, top layer" msgstr "2 coins diagonaux, couche supérieure" # translated by: Éfrit https://launchpad.net/~efrit on 2015-04-25 09:49:21 UTC # reviewed by: Jean-Marc https://launchpad.net/~m-balthazar on 2016-04-04 13:21:05 UTC #: data/plugins/90-library.plugins.py:60 data/plugins/90-library.plugins.py:80 msgid "3 corners ⟳, top layer" msgstr "3 coins ⟳, couche supérieure" # translated by: Éfrit https://launchpad.net/~efrit on 2015-04-25 09:49:21 UTC # reviewed by: Jean-Marc https://launchpad.net/~m-balthazar on 2016-04-04 13:21:05 UTC #: data/plugins/90-library.plugins.py:64 msgid "3 corners ⟲, top layer" msgstr "3 coins ⟲, couche supérieure" # translated by: Éfrit https://launchpad.net/~efrit on 2015-04-25 09:49:21 UTC # reviewed by: Jean-Marc https://launchpad.net/~m-balthazar on 2016-04-04 13:21:05 UTC #: data/plugins/90-library.plugins.py:68 msgid "4 corners, top layer" msgstr "4 coins, couche supérieure" # translated by: Jean-Marc https://launchpad.net/~m-balthazar on 2017-09-23 13:02:32 UTC #: data/plugins/90-library.plugins.py:72 msgid "2 corners, partial sequence, top layer" msgstr "2 coins, séquence partielle, couche supérieure" # translated by: Éfrit https://launchpad.net/~efrit on 2015-04-25 09:49:21 UTC # reviewed by: Jean-Marc https://launchpad.net/~m-balthazar on 2017-09-23 13:11:25 UTC #: data/plugins/90-library.plugins.py:75 data/plugins/90-library.plugins.py:79 #: data/plugins/90-library.plugins.py:83 data/plugins/90-library.plugins.py:87 msgid "Rotate corners" msgstr "Faire tourner les coins" # translated by: Jean-Marc https://launchpad.net/~m-balthazar on 2017-09-23 13:02:59 UTC #: data/plugins/90-library.plugins.py:84 msgid "1 corner ⟳, partial sequence, top layer" msgstr "1 coin ⟳, séquence partielle, couche supérieure" # translated by: Jean-Marc https://launchpad.net/~m-balthazar on 2017-09-23 13:02:59 UTC #: data/plugins/90-library.plugins.py:88 msgid "1 corner ⟲, partial sequence, top layer" msgstr "1 coin ⟲, séquence partielle, couche supérieure" # translated by: Jean-Marc https://launchpad.net/~m-balthazar on 2016-04-04 13:21:29 UTC #: data/plugins/90-library.plugins.py:92 data/plugins/90-library.plugins.py:97 #: data/plugins/90-library.plugins.py:102 #: data/plugins/90-library.plugins.py:111 msgid "Rotate center" msgstr "Faire pivoter le centre" # translated by: Nicolas Delvaux https://launchpad.net/~malizor on 2015-04-13 17:56:35 UTC #. 2 rotations of the center face in the upper layer #: data/plugins/90-library.plugins.py:94 msgid "2×Up" msgstr "2×haut" # translated by: Éfrit https://launchpad.net/~efrit on 2015-04-25 09:49:21 UTC # reviewed by: Jean-Marc https://launchpad.net/~m-balthazar on 2016-04-04 13:21:29 UTC #. Up clockwise and front clockwise #: data/plugins/90-library.plugins.py:99 msgid "Up ⟳ and front ⟳" msgstr "En-haut ⟳ et devant ⟳" # translated by: Éfrit https://launchpad.net/~efrit on 2015-04-25 09:50:48 UTC # reviewed by: Jean-Marc https://launchpad.net/~m-balthazar on 2016-04-04 13:20:34 UTC #. Up clockwise and front counterclockwise #: data/plugins/90-library.plugins.py:104 msgid "Up ⟳ and front ⟲" msgstr "En-haut ⟳ et devant ⟲" # translated by: Jean-Marc https://launchpad.net/~m-balthazar on 2017-10-15 10:51:14 UTC #: data/plugins/90-library.plugins.py:106 msgid "Swap center parts, up and front" msgstr "Inverser les parties du centre, du haut et avant" # translated by: Éfrit https://launchpad.net/~efrit on 2015-04-25 09:50:48 UTC # reviewed by: Jean-Marc https://launchpad.net/~m-balthazar on 2016-04-04 13:20:34 UTC #. Up clockwise and down counterclockwise #: data/plugins/90-library.plugins.py:113 msgid "Up ⟳ and down ⟲" msgstr "En-haut ⟳ et en-bas ⟲" # translated by: Nicolas Delvaux https://launchpad.net/~malizor on 2013-06-09 12:48:07 UTC #: data/plugins/90-library.plugins.py:116 #: data/plugins/90-library.plugins.py:120 #: data/plugins/90-library.plugins.py:124 #: data/plugins/90-library.plugins.py:128 msgid "Misc" msgstr "Divers" #. Yields in a rotated back layer, but the sequence of moves does not touch the back layer #: data/plugins/90-library.plugins.py:118 #: data/plugins/90-library.plugins.py:125 #: data/plugins/90-library.plugins.py:129 msgid "Back without back" msgstr "" #: data/plugins/90-library.plugins.py:121 msgid "2×Back without back" msgstr "" # translated by: Éfrit https://launchpad.net/~efrit on 2015-04-25 09:50:48 UTC # reviewed by: Jean-Marc https://launchpad.net/~m-balthazar on 2016-02-28 22:28:57 UTC #: data/plugins/95-transformations.plugins.py:18 #: data/plugins/95-transformations.plugins.py:21 #: data/plugins/95-transformations.plugins.py:24 msgid "Move transformations" msgstr "Transformations de mouvement" # translated by: Nicolas Delvaux https://launchpad.net/~malizor on 2015-04-13 17:57:17 UTC #: data/plugins/95-transformations.plugins.py:19 msgid "Invert move sequence" msgstr "Inverser la séquence de déplacements" # translated by: Jean-Marc https://launchpad.net/~m-balthazar on 2015-04-08 19:23:17 UTC # reviewed by: Jean-Marc https://launchpad.net/~m-balthazar on 2016-02-28 22:28:57 UTC #: data/plugins/95-transformations.plugins.py:22 msgid "Normalize cube rotations" msgstr "Normaliser les rotations du cube" # translated by: Jean-Marc https://launchpad.net/~m-balthazar on 2015-04-09 17:17:54 UTC # reviewed by: Jean-Marc https://launchpad.net/~m-balthazar on 2016-02-28 22:28:57 UTC #: data/plugins/95-transformations.plugins.py:25 msgid "Normalize move sequence" msgstr "Normaliser la séquence de mouvements" # translated by: Sylvie Gallet https://launchpad.net/~sylvie-gallet on 2012-12-14 22:44:18 UTC # reviewed by: Jean-Marc https://launchpad.net/~m-balthazar on 2015-04-08 19:27:34 UTC #: buildlib/modeldef.py:110 msgid "Brick" msgstr "Brique" # translated by: Sylvie Gallet https://launchpad.net/~sylvie-gallet on 2012-12-14 22:44:18 UTC # reviewed by: Jean-Marc https://launchpad.net/~m-balthazar on 2015-04-08 19:27:34 UTC #: buildlib/modeldef.py:111 #, python-brace-format msgid "{0}×{1}×{2}-Brick" msgstr "Brique-{0}×{1}×{2}" # translated by: Sylvie Gallet https://launchpad.net/~sylvie-gallet on 2012-12-14 22:40:54 UTC # reviewed by: Nicolas Delvaux https://launchpad.net/~malizor on 2013-06-09 12:32:25 UTC #: buildlib/modeldef.py:112 msgid "Width:" msgstr "Largeur :" # translated by: Nicolas Delvaux https://launchpad.net/~malizor on 2013-06-09 12:42:31 UTC #: buildlib/modeldef.py:112 buildlib/modeldef.py:151 buildlib/modeldef.py:249 #: buildlib/modeldef.py:300 buildlib/modeldef.py:311 msgid "Height:" msgstr "Hauteur :" # translated by: Nicolas Delvaux https://launchpad.net/~malizor on 2013-06-09 12:42:31 UTC #: buildlib/modeldef.py:112 msgid "Depth:" msgstr "Profondeur :" # translated by: Jean-Marc https://launchpad.net/~m-balthazar on 2017-09-18 06:03:38 UTC #: buildlib/modeldef.py:120 buildlib/modeldef.py:257 buildlib/modeldef.py:319 #: buildlib/modeldef.py:374 buildlib/modeldef.py:433 msgid "up" msgstr "vers le haut" # translated by: Jean-Marc https://launchpad.net/~m-balthazar on 2017-09-18 06:03:38 UTC #: buildlib/modeldef.py:120 buildlib/modeldef.py:205 buildlib/modeldef.py:257 #: buildlib/modeldef.py:319 buildlib/modeldef.py:373 buildlib/modeldef.py:430 msgid "down" msgstr "vers le bas" # translated by: Jean-Marc https://launchpad.net/~m-balthazar on 2017-09-18 06:03:38 UTC #: buildlib/modeldef.py:120 buildlib/modeldef.py:205 buildlib/modeldef.py:257 msgid "left" msgstr "à gauche" # translated by: Jean-Marc https://launchpad.net/~m-balthazar on 2017-09-18 06:03:38 UTC # reviewed by: Nicolas Delvaux https://launchpad.net/~malizor on 2013-06-09 12:31:30 UTC #: buildlib/modeldef.py:120 buildlib/modeldef.py:205 buildlib/modeldef.py:257 msgid "right" msgstr "à droite" # translated by: Jean-Marc https://launchpad.net/~m-balthazar on 2017-09-18 06:03:38 UTC # reviewed by: Nicolas Delvaux https://launchpad.net/~malizor on 2013-06-09 12:50:40 UTC #: buildlib/modeldef.py:120 buildlib/modeldef.py:374 msgid "front" msgstr "devant" # translated by: Jean-Marc https://launchpad.net/~m-balthazar on 2017-09-18 06:03:38 UTC #: buildlib/modeldef.py:120 buildlib/modeldef.py:205 buildlib/modeldef.py:257 #: buildlib/modeldef.py:320 buildlib/modeldef.py:373 msgid "back" msgstr "derrière" # translated by: Sylvie Gallet https://launchpad.net/~sylvie-gallet on 2012-12-14 22:44:18 UTC # reviewed by: Nicolas Delvaux https://launchpad.net/~malizor on 2013-06-09 12:50:40 UTC #: buildlib/modeldef.py:149 msgid "Tower" msgstr "Tour" # translated by: Sylvie Gallet https://launchpad.net/~sylvie-gallet on 2012-12-14 22:44:18 UTC # reviewed by: Jean-Marc https://launchpad.net/~m-balthazar on 2015-04-08 19:27:34 UTC #: buildlib/modeldef.py:150 #, python-brace-format msgid "{0}×{1}-Tower" msgstr "Tour-{0}×{1}" # translated by: Havok Novak https://launchpad.net/~havok-novak-deactivatedaccount on 2012-12-14 09:23:45 UTC # reviewed by: Sylvie Gallet https://launchpad.net/~sylvie-gallet on 2012-12-14 21:12:04 UTC #: buildlib/modeldef.py:151 buildlib/modeldef.py:249 buildlib/modeldef.py:300 #: buildlib/modeldef.py:311 msgid "Basis:" msgstr "Principe de base :" # translated by: Sylvie Gallet https://launchpad.net/~sylvie-gallet on 2012-12-14 22:44:18 UTC # reviewed by: Nicolas Delvaux https://launchpad.net/~malizor on 2013-06-09 12:33:10 UTC #: buildlib/modeldef.py:163 msgid "Cube" msgstr "Cube" # translated by: Jean-Marc https://launchpad.net/~m-balthazar on 2016-04-04 13:20:34 UTC #: buildlib/modeldef.py:164 #, python-brace-format msgid "{0}×{0}×{0}-Cube" msgstr "Cube - {0} × {0} × {0}" # translated by: Sylvie Gallet https://launchpad.net/~sylvie-gallet on 2012-12-14 22:40:54 UTC # reviewed by: Nicolas Delvaux https://launchpad.net/~malizor on 2013-06-09 12:32:25 UTC #: buildlib/modeldef.py:165 buildlib/modeldef.py:197 buildlib/modeldef.py:365 #: buildlib/modeldef.py:422 msgid "Size:" msgstr "Taille :" # translated by: Stanislas Michalak https://launchpad.net/~stanislas-michalak on 2017-10-11 08:19:37 UTC # reviewed by: Jean-Marc https://launchpad.net/~m-balthazar on 2017-10-15 10:52:30 UTC #: buildlib/modeldef.py:177 buildlib/modeldef.py:178 msgid "Void Cube" msgstr "Void Cube" # translated by: Jean-Marc https://launchpad.net/~m-balthazar on 2015-04-08 18:56:14 UTC # reviewed by: Nicolas Delvaux https://launchpad.net/~malizor on 2015-04-13 17:57:17 UTC #: buildlib/modeldef.py:195 msgid "Tetrahedron" msgstr "Tétraèdre" # translated by: Jean-Marc https://launchpad.net/~m-balthazar on 2015-04-08 18:56:31 UTC # reviewed by: Nicolas Delvaux https://launchpad.net/~malizor on 2015-04-13 17:57:17 UTC #: buildlib/modeldef.py:196 #, python-brace-format msgid "{0}-Tetrahedron" msgstr "{0}-Tétraèdre" # translated by: Jean-Marc https://launchpad.net/~m-balthazar on 2015-07-21 17:17:49 UTC #: buildlib/modeldef.py:247 msgid "Triangular Prism" msgstr "Prisme triangulaire" # translated by: Jean-Marc https://launchpad.net/~m-balthazar on 2017-09-23 13:01:40 UTC #: buildlib/modeldef.py:248 #, python-brace-format msgid "{0}×{1} Triangular Prism" msgstr "{0} × {1} Prisme triangulaire" # translated by: Jean-Marc https://launchpad.net/~m-balthazar on 2015-07-21 17:17:49 UTC # reviewed by: Jean-Marc https://launchpad.net/~m-balthazar on 2016-02-28 22:29:23 UTC #: buildlib/modeldef.py:298 msgid "Triangular Prism (complex)" msgstr "Prisme triangulaire (complexe)" # translated by: Jean-Marc https://launchpad.net/~m-balthazar on 2017-09-23 13:01:40 UTC #: buildlib/modeldef.py:299 #, python-brace-format msgid "{0}×{1} Triangular Prism (complex)" msgstr "{0} × {1} Prisme triangulaire (complexe)" # translated by: Jean-Marc https://launchpad.net/~m-balthazar on 2015-07-21 17:17:49 UTC # reviewed by: Jean-Marc https://launchpad.net/~m-balthazar on 2016-02-28 22:29:23 UTC #: buildlib/modeldef.py:309 msgid "Pentagonal Prism" msgstr "Prisme pentagonal" # translated by: Jean-Marc https://launchpad.net/~m-balthazar on 2017-09-23 13:01:40 UTC #: buildlib/modeldef.py:310 #, python-brace-format msgid "{0}×{1} Pentagonal Prism" msgstr "{0} × {1} Prisme pentagonal" # translated by: Jean-Marc https://launchpad.net/~m-balthazar on 2015-07-21 17:17:49 UTC # reviewed by: Jean-Marc https://launchpad.net/~m-balthazar on 2016-02-28 22:29:23 UTC #: buildlib/modeldef.py:320 buildlib/modeldef.py:373 msgid "front-right" msgstr "avant-droit" # translated by: Jean-Marc https://launchpad.net/~m-balthazar on 2017-09-23 12:57:23 UTC #: buildlib/modeldef.py:320 buildlib/modeldef.py:374 msgid "back-right" msgstr "arrière-droit" # translated by: Jean-Marc https://launchpad.net/~m-balthazar on 2017-09-23 12:57:23 UTC #: buildlib/modeldef.py:320 buildlib/modeldef.py:374 msgid "back-left" msgstr "arrière-gauche" # translated by: Jean-Marc https://launchpad.net/~m-balthazar on 2015-07-21 17:17:49 UTC # reviewed by: Jean-Marc https://launchpad.net/~m-balthazar on 2016-02-28 22:29:23 UTC #: buildlib/modeldef.py:320 buildlib/modeldef.py:373 msgid "front-left" msgstr "avant-gauche" # translated by: Jean-Marc https://launchpad.net/~m-balthazar on 2017-09-23 12:57:23 UTC #: buildlib/modeldef.py:354 msgid "Pentagonal Prism (stretched)" msgstr "Prisme pentagonal (étiré)" # translated by: Jean-Marc https://launchpad.net/~m-balthazar on 2017-09-23 12:57:23 UTC #: buildlib/modeldef.py:355 #, python-brace-format msgid "{0}×{1} Pentagonal Prism (stretched)" msgstr "{0} × {1} Prisme pentagonal (étiré)" # translated by: Jean-Marc https://launchpad.net/~m-balthazar on 2015-04-08 18:56:14 UTC # reviewed by: Nicolas Delvaux https://launchpad.net/~malizor on 2015-04-13 17:57:17 UTC #: buildlib/modeldef.py:363 msgid "Octahedron" msgstr "Octaèdre" # translated by: Jean-Marc https://launchpad.net/~m-balthazar on 2015-04-08 18:56:31 UTC # reviewed by: Nicolas Delvaux https://launchpad.net/~malizor on 2015-04-13 17:57:17 UTC #: buildlib/modeldef.py:364 #, python-brace-format msgid "{0}-Octahedron" msgstr "{0}-Octaèdre" # translated by: Jean-Marc https://launchpad.net/~m-balthazar on 2015-04-08 18:56:14 UTC # reviewed by: Nicolas Delvaux https://launchpad.net/~malizor on 2015-04-13 17:57:17 UTC #: buildlib/modeldef.py:420 msgid "Dodecahedron" msgstr "Dodécaèdre" # translated by: Jean-Marc https://launchpad.net/~m-balthazar on 2015-04-08 18:56:31 UTC # reviewed by: Nicolas Delvaux https://launchpad.net/~malizor on 2015-04-13 17:57:17 UTC #: buildlib/modeldef.py:421 #, python-brace-format msgid "{0}-Dodecahedron" msgstr "{0}-Dodécaèdre" # translated by: Stanislas Michalak https://launchpad.net/~stanislas-michalak on 2017-10-11 08:28:04 UTC # reviewed by: Jean-Marc https://launchpad.net/~m-balthazar on 2017-10-15 10:48:39 UTC #: buildlib/modeldef.py:430 msgid "down-back-right" msgstr "dessous-arrière-droit" # translated by: Stanislas Michalak https://launchpad.net/~stanislas-michalak on 2017-10-11 08:28:04 UTC # reviewed by: Jean-Marc https://launchpad.net/~m-balthazar on 2017-10-15 10:49:13 UTC #: buildlib/modeldef.py:430 msgid "down-front-right" msgstr "dessous-avant-droit" # translated by: Stanislas Michalak https://launchpad.net/~stanislas-michalak on 2017-10-11 08:28:04 UTC # reviewed by: Jean-Marc https://launchpad.net/~m-balthazar on 2017-10-15 10:49:13 UTC #: buildlib/modeldef.py:431 msgid "down-front" msgstr "dessous-avant" # translated by: Stanislas Michalak https://launchpad.net/~stanislas-michalak on 2017-10-11 08:28:04 UTC # reviewed by: Jean-Marc https://launchpad.net/~m-balthazar on 2017-10-15 10:49:13 UTC #: buildlib/modeldef.py:431 msgid "down-front-left" msgstr "dessous-avant-gauche" # translated by: Stanislas Michalak https://launchpad.net/~stanislas-michalak on 2017-10-11 08:28:04 UTC # reviewed by: Jean-Marc https://launchpad.net/~m-balthazar on 2017-10-15 10:49:13 UTC #: buildlib/modeldef.py:431 msgid "down-back-left" msgstr "dessous-arrière-gauche" # translated by: Stanislas Michalak https://launchpad.net/~stanislas-michalak on 2017-10-11 08:28:04 UTC # reviewed by: Jean-Marc https://launchpad.net/~m-balthazar on 2017-10-15 10:49:13 UTC #: buildlib/modeldef.py:432 msgid "up-back" msgstr "dessus-arrière" # translated by: Stanislas Michalak https://launchpad.net/~stanislas-michalak on 2017-10-11 08:28:04 UTC # reviewed by: Jean-Marc https://launchpad.net/~m-balthazar on 2017-10-15 10:49:13 UTC #: buildlib/modeldef.py:432 msgid "up-back-right" msgstr "dessus-arrière-droit" # translated by: Stanislas Michalak https://launchpad.net/~stanislas-michalak on 2017-10-11 08:28:04 UTC # reviewed by: Jean-Marc https://launchpad.net/~m-balthazar on 2016-02-28 22:29:23 UTC #: buildlib/modeldef.py:432 msgid "up-front-right" msgstr "dessus-avant-droit" # translated by: Stanislas Michalak https://launchpad.net/~stanislas-michalak on 2017-10-11 08:28:04 UTC # reviewed by: Jean-Marc https://launchpad.net/~m-balthazar on 2016-02-28 22:29:23 UTC #: buildlib/modeldef.py:433 msgid "up-front-left" msgstr "dessus-avant-gauche" # translated by: Stanislas Michalak https://launchpad.net/~stanislas-michalak on 2017-10-11 08:28:04 UTC # reviewed by: Jean-Marc https://launchpad.net/~m-balthazar on 2017-10-15 10:49:13 UTC #: buildlib/modeldef.py:433 msgid "up-back-left" msgstr "dessus-arrière-gauche" pybik-3.0/po/he.po0000664000175000017500000013417213173052130014217 0ustar barccbarcc00000000000000# Hebrew translation for pybik # Copyright (c) 2012-2017 Rosetta Contributors and Canonical Ltd 2012 # This file is distributed under the same license as the pybik package. # FIRST AUTHOR , 2012. # msgid "" msgstr "" "Project-Id-Version: pybik\n" "Report-Msgid-Bugs-To: https://bugs.launchpad.net/pybik/+filebug\n" "POT-Creation-Date: 2017-09-10 21:58+0200\n" "PO-Revision-Date: 2017-09-17 05:55+0000\n" "Last-Translator: Yaron \n" "Language-Team: Hebrew \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Launchpad-Export-Date: 2017-09-18 05:31+0000\n" "X-Generator: Launchpad (build 18449)\n" "Language: he\n" # translated by: Yaron https://launchpad.net/~sh-yaron on 2012-12-14 07:58:59 UTC #: pybiklib/application.py:294 msgid "Press the Esc key to exit Edit Mode" msgstr "יש ללחוץ על מקש ה־Esc כדי לצאת ממצב העריכה" # translated by: Yaron https://launchpad.net/~sh-yaron on 2012-12-14 07:58:59 UTC #. substitution for {move_text} in statusbar text #: pybiklib/application.py:302 #, python-brace-format msgid "{current} / {total} move" msgid_plural "{current} / {total} moves" msgstr[0] "{current} / מהלך {total}" msgstr[1] "{current} / {total} מהלכים" # translated by: Yaron https://launchpad.net/~sh-yaron on 2012-12-14 07:58:59 UTC #. substitution for {solved_text} in statusbar text #: pybiklib/application.py:306 msgid "solved" msgstr "נפתר" # translated by: Yaron https://launchpad.net/~sh-yaron on 2012-12-14 07:58:59 UTC #: pybiklib/application.py:306 msgid "not solved" msgstr "לא נפתר" # translated by: Yaron https://launchpad.net/~sh-yaron on 2012-12-14 07:58:59 UTC #. statusbar text #: pybiklib/application.py:309 #, python-brace-format msgid "{move_text}, {solved_text}" msgstr "{move_text}, {solved_text}" # translated by: Yaron https://launchpad.net/~sh-yaron on 2012-12-14 07:58:59 UTC #: pybiklib/application.py:314 msgid "Congratulations, you have solved the puzzle!" msgstr "ברכות, פתרת את הפאזל!" # translated by: Yaron https://launchpad.net/~sh-yaron on 2012-12-14 07:58:59 UTC #. Name of the application, probably should not be translated. #: pybiklib/config.py:35 data/ui/qt/main.ui.h:271 #: data/app-meta/pybik.desktop.in:3 msgid "Pybik" msgstr "Pybik" # translated by: Yaron https://launchpad.net/~sh-yaron on 2015-04-12 14:47:04 UTC #. short description #: pybiklib/config.py:65 data/app-meta/pybik.desktop.in:4 msgid "Rubik's cube game" msgstr "משחק הקובייה ההונגרית" #. The next 7 lines belong together and form the long description #: pybiklib/config.py:68 msgid "Pybik is a 3D puzzle game about the cube invented by Ernő Rubik." msgstr "" #: pybiklib/config.py:70 msgid "" "Various 3D puzzles, such as cubes, towers, prisms, tetrahedra, octahedra, " "dodecahedra and many more" msgstr "" #: pybiklib/config.py:71 msgid "Solvers for some puzzles" msgstr "" # translated by: Yaron https://launchpad.net/~sh-yaron on 2012-12-17 09:43:29 UTC #. Use something that is common in the Rubik scene in your language, sometimes it's just the equivalent of "patterns". #: pybiklib/config.py:72 data/plugins/80-pretty-patterns.plugins.py:19 #: data/plugins/80-pretty-patterns.plugins.py:22 #: data/plugins/80-pretty-patterns.plugins.py:26 #: data/plugins/80-pretty-patterns.plugins.py:30 #: data/plugins/80-pretty-patterns.plugins.py:34 #: data/plugins/80-pretty-patterns.plugins.py:39 #: data/plugins/80-pretty-patterns.plugins.py:43 #: data/plugins/80-pretty-patterns.plugins.py:48 #: data/plugins/80-pretty-patterns.plugins.py:52 #: data/plugins/80-pretty-patterns.plugins.py:56 #: data/plugins/80-pretty-patterns.plugins.py:60 #: data/plugins/80-pretty-patterns.plugins.py:64 #: data/plugins/80-pretty-patterns.plugins.py:68 #: data/plugins/80-pretty-patterns.plugins.py:72 #: data/plugins/80-pretty-patterns.plugins.py:76 #: data/plugins/80-pretty-patterns.plugins.py:82 #: data/plugins/80-pretty-patterns.plugins.py:86 #: data/plugins/80-pretty-patterns.plugins.py:91 #: data/plugins/80-pretty-patterns.plugins.py:95 #: data/plugins/80-pretty-patterns.plugins.py:99 #: data/plugins/80-pretty-patterns.plugins.py:103 #: data/plugins/80-pretty-patterns.plugins.py:107 #: data/plugins/80-pretty-patterns.plugins.py:111 #: data/plugins/80-pretty-patterns.plugins.py:116 #: data/plugins/80-pretty-patterns.plugins.py:120 #: data/plugins/80-pretty-patterns.plugins.py:124 #: data/plugins/80-pretty-patterns.plugins.py:128 #: data/plugins/80-pretty-patterns.plugins.py:133 #: data/plugins/80-pretty-patterns.plugins.py:137 #: data/plugins/80-pretty-patterns.plugins.py:141 #: data/plugins/80-pretty-patterns.plugins.py:145 #: data/plugins/80-pretty-patterns.plugins.py:149 #: data/plugins/80-pretty-patterns.plugins.py:153 #: data/plugins/80-pretty-patterns.plugins.py:157 #: data/plugins/80-pretty-patterns.plugins.py:161 #: data/plugins/80-pretty-patterns.plugins.py:165 #: data/plugins/80-pretty-patterns.plugins.py:169 #: data/plugins/80-pretty-patterns.plugins.py:173 #: data/plugins/80-pretty-patterns.plugins.py:177 #: data/plugins/80-pretty-patterns.plugins.py:181 #: data/plugins/80-pretty-patterns.plugins.py:185 #: data/plugins/80-pretty-patterns.plugins.py:190 #: data/plugins/80-pretty-patterns.plugins.py:195 #: data/plugins/80-pretty-patterns.plugins.py:199 #: data/plugins/80-pretty-patterns.plugins.py:203 #: data/plugins/80-pretty-patterns.plugins.py:207 #: data/plugins/80-pretty-patterns.plugins.py:211 #: data/plugins/80-pretty-patterns.plugins.py:215 #: data/plugins/80-pretty-patterns.plugins.py:219 msgid "Pretty patterns" msgstr "תבניות יפות" #: pybiklib/config.py:73 msgid "Editor for move sequences" msgstr "" #: pybiklib/config.py:74 msgid "Custom colors and images on the surface of the puzzles" msgstr "" # translated by: Yaron https://launchpad.net/~sh-yaron on 2013-01-08 13:42:36 UTC #: pybiklib/config.py:78 msgid "" "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.\n" "\n" "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." msgstr "" "תכנית זו הנה תכנה חופשית; ניתן להפיץ אותה תחת תנאי הרישיון הציבורי הכללי של " "גנו כפי שפורסם על ידי קרן התכנה החופשית, בין אם גרסה 3 של הרישיון או כל גרסה " "עדכנית יותר לבחירתך.\n" "\n" "תכנית זו מופצת בתקווה שתביא תועלת אך אינה כוללת כל סוג של אחריות; אפילו לא " "מרומזת לצורכי מסחר או התאמה לצרכים מסוימים. ניתן לעיין ברישיון הציבורי הכללי " "של גנו לקבלת פרטים נוספים." # translated by: Yaron https://launchpad.net/~sh-yaron on 2012-12-14 08:02:11 UTC #. Text between "<" and ">" is expanded to a link by the program and should not be modified. #. Text between "" and "<|>" is the translatable text for the link. #: pybiklib/config.py:90 msgid "" "Read the full text of the GNU General Public " "License<|> or see ." msgstr "" "ניתן לקרוא את התוכן המלא של הרישיון הציבורי הכללי " "של גנו<|> להיכנס ל־." # translated by: Yaron https://launchpad.net/~sh-yaron on 2012-12-17 09:48:23 UTC #: pybiklib/config.py:93 msgid "" "You should have received a copy of the GNU General Public License along with " "this program. If not, see ." msgstr "" "לתכנית זו אמור היה להיות מצורף עותק של הרישיון הציבורי הכללי של GNU; אם לא " "צורף, ניתן לבקר בכתובת ." # translated by: Yaron https://launchpad.net/~sh-yaron on 2012-12-14 08:06:17 UTC #: pybiklib/config.py:98 #, python-brace-format msgid "" "If you find any bugs in Pybik or have a suggestion for an improvement then " "please submit a <{CONTACT_FILEBUG}|>bug report<|>." msgstr "" "אם מצאת תקלות ב־Pybik או שיש לך הצעות לשיפורים נא לשלוח " "<{CONTACT_FILEBUG}|>דיווח על תקלה<|>." # translated by: Yaron https://launchpad.net/~sh-yaron on 2012-12-14 08:02:11 UTC #: pybiklib/config.py:103 msgid "" "Translations are managed by the " "Launchpad " "translation group<|>.\n" "\n" "If you want help to translate Pybik to your language you can do it through " "the web interface<|>.\n" "\n" "Read more about \"Translating with " "Launchpad\"<|> and " "\"Starting to " "translate\"<|>." msgstr "" "התרגומים מנוהלים באמצעות " "קבוצת " "התרגום של לאנצ׳פד<|>.\n" "\n" "אם בא לך לסייע בתרגום Pybik לשפתך ניתן לעשות זאת דרך " "המנשק המקוון<|>.\n" "\n" "ניתן לקרוא עוד על \"תרגום עם " "לאנצ׳פד\"<|> ועל " "\"כיצד מתחילים " "לתרגם\"<|>." # translated by: Yaron https://launchpad.net/~sh-yaron on 2015-03-28 22:59:20 UTC #: pybiklib/dialogs.py:44 msgid "Lighting" msgstr "תאורה" # translated by: Yaron https://launchpad.net/~sh-yaron on 2015-04-12 14:47:04 UTC #: pybiklib/dialogs.py:44 msgid "Simple" msgstr "פשוט" #. labels are the colored stickers on the cube #: pybiklib/dialogs.py:46 msgid "Labels" msgstr "" #: pybiklib/dialogs.py:104 data/ui/qt/main.ui.h:275 msgid "Select Puzzle" msgstr "" # translated by: Yaron https://launchpad.net/~sh-yaron on 2012-12-17 09:43:29 UTC #. 1 slice, 2 slices, 3 slices, ... #: pybiklib/dialogs.py:134 pybiklib/dialogs.py:154 pybiklib/dialogs.py:180 #: pybiklib/dialogs.py:201 msgid "{} slice" msgid_plural "{} slices" msgstr[0] "" msgstr[1] "" #: pybiklib/dialogs.py:196 pybiklib/dialogs.py:225 msgid "{}×{} slices" msgstr "" # translated by: Yaron https://launchpad.net/~sh-yaron on 2015-04-12 14:47:04 UTC #. The next strings form the text in the help dialog: #. Title of the 1st paragraph #: pybiklib/dialogs.py:290 msgid "Using the mouse to rotate the cube" msgstr "שימוש בעכבר לסיבוב הקובייה" #. Text of the 1st paragraph, followed by bullet list items #: pybiklib/dialogs.py:292 msgid "" "Position the mouse cursor over the puzzle and you will see an arrow that " "gives you a hint in which direction the slice under the mouse cursor will be " "rotated." msgstr "" #: pybiklib/dialogs.py:294 msgid "" "The left mouse button rotates a single slice of the cube in the direction of " "the arrow." msgstr "" #: pybiklib/dialogs.py:295 msgid "" "The right mouse button rotates a single slice of the cube against the " "direction of the arrow." msgstr "" #: pybiklib/dialogs.py:296 msgid "" "To rotate the whole cube instead of a single slice press the Ctrl key " "together with the mouse button." msgstr "" #. Title of the 2nd paragraph #: pybiklib/dialogs.py:298 msgid "Using the keyboard to rotate the cube" msgstr "" #. Text of the 2nd paragraph, followed by bullet list items #: pybiklib/dialogs.py:300 msgid "" "Make sure the keyboard focus is on the cube area (e.g. click on the " "background of the cube). The keys can be configured in the preferences " "dialog, the default is:" msgstr "" #. before the item text is a list of keys #: pybiklib/dialogs.py:303 pybiklib/dialogs.py:318 msgid "Moves the left, right, upper, down, front or back slice clockwise." msgstr "" #: pybiklib/dialogs.py:304 pybiklib/dialogs.py:319 msgid "Moves a slice couterclockwise." msgstr "" #: pybiklib/dialogs.py:305 pybiklib/dialogs.py:320 msgid "Moves the whole cube." msgstr "" #. Title of the 3rd paragraph #: pybiklib/dialogs.py:307 msgid "Other keys and buttons" msgstr "" #. bullet list items of the 3rd paragraph #: pybiklib/dialogs.py:309 msgid "Mouse wheel – Zoom in/out" msgstr "" #: pybiklib/dialogs.py:310 msgid "" "Arrow keys, Left mouse button on the background – Changes the direction of " "looking at the cube." msgstr "" #: pybiklib/dialogs.py:311 msgid "" "Moves keyboard focus to the sequence editor above the cube area where you " "can edit the move sequence in the notation described below. Hit enter when " "done." msgstr "" #. Title of the 4th paragraph #: pybiklib/dialogs.py:315 msgid "Notation for moves" msgstr "" #. Text of the 4th paragraph, followed by bullet list items #: pybiklib/dialogs.py:317 msgid "" "All moves, however they are made, are displayed progressively above the cube " "area:" msgstr "" #: pybiklib/dialogs.py:321 msgid "" "Moves the first, second or third slice from left clockwise. The allowed " "numbers are in the range from 1 to the count of parallel slices. \"l1\" is " "always the same as \"l\" and for the classic 3×3×3-Cube \"l2\" is the same " "as \"r2-\" and \"l3\" is the same as \"r-\"." msgstr "" #: pybiklib/dialogs.py:325 msgid "You can use a space to separate groups of moves." msgstr "" # translated by: Yaron https://launchpad.net/~sh-yaron on 2012-12-14 08:06:17 UTC #: pybiklib/dialogs.py:379 msgid "Pybik project website" msgstr "אתר המיזם Pybik" #: pybiklib/pluginlib.py:301 msgid "This plugin does not work for any model." msgstr "" #: pybiklib/pluginlib.py:303 pybiklib/pluginlib.py:306 msgid "This plugin only works for:" msgstr "" #: pybiklib/pluginlib.py:498 msgid "This puzzle is not solvable." msgstr "" # translated by: Yaron https://launchpad.net/~sh-yaron on 2013-06-03 14:40:05 UTC #. The following 6 words are for the antialiasing levels: disabled, ugly, low, medium, high, higher #: pybiklib/schema.py:211 msgid "disabled" msgstr "מנוטרל" # translated by: Yaron https://launchpad.net/~sh-yaron on 2013-06-03 14:40:05 UTC #: pybiklib/schema.py:211 msgid "ugly" msgstr "מכוער" # translated by: Yaron https://launchpad.net/~sh-yaron on 2013-06-03 14:40:05 UTC #: pybiklib/schema.py:211 msgid "low" msgstr "נמוך" # translated by: Yaron https://launchpad.net/~sh-yaron on 2013-06-03 14:40:05 UTC #: pybiklib/schema.py:212 msgid "medium" msgstr "רגיל" # translated by: Yaron https://launchpad.net/~sh-yaron on 2013-06-03 14:40:05 UTC #: pybiklib/schema.py:212 msgid "high" msgstr "גבוה" # translated by: Yaron https://launchpad.net/~sh-yaron on 2013-06-03 14:40:05 UTC #: pybiklib/schema.py:212 msgid "higher" msgstr "גבוה יותר" # translated by: Yaron https://launchpad.net/~sh-yaron on 2015-03-28 22:59:20 UTC #: data/ui/qt/about.ui.h:212 msgid "About Pybik" msgstr "על אודות Pybik" # translated by: Yaron https://launchpad.net/~sh-yaron on 2015-03-28 22:59:20 UTC #: data/ui/qt/about.ui.h:213 msgid "Translators:" msgstr "מתרגמים:" # translated by: Yaron https://launchpad.net/~sh-yaron on 2015-03-28 22:59:20 UTC #: data/ui/qt/about.ui.h:214 msgid "About" msgstr "על אודות" #: data/ui/qt/about.ui.h:215 msgid "Contribute" msgstr "" # translated by: Yaron https://launchpad.net/~sh-yaron on 2015-03-28 22:59:20 UTC #: data/ui/qt/about.ui.h:216 msgid "License" msgstr "רישיון" #: data/ui/qt/help.ui.h:53 data/ui/qt/main.ui.h:297 msgid "Help" msgstr "" # translated by: Yaron https://launchpad.net/~sh-yaron on 2012-12-17 09:40:27 UTC #: data/ui/qt/main.ui.h:272 msgid "&New Challenge" msgstr "" # translated by: Yaron https://launchpad.net/~sh-yaron on 2015-03-28 22:59:20 UTC #: data/ui/qt/main.ui.h:273 msgid "Ne&w Solved" msgstr "&פתור חדש" # translated by: Yaron https://launchpad.net/~sh-yaron on 2015-03-28 22:59:20 UTC #: data/ui/qt/main.ui.h:274 msgid "&Quit" msgstr "י&ציאה" # translated by: Yaron https://launchpad.net/~sh-yaron on 2015-03-28 22:59:20 UTC #: data/ui/qt/main.ui.h:276 msgid "&Set as Initial State" msgstr "ה&גדרה כמצב ההתחלתי" # translated by: Yaron https://launchpad.net/~sh-yaron on 2015-03-28 22:59:20 UTC #: data/ui/qt/main.ui.h:277 msgid "&Reset Rotation" msgstr "איפוס ה&סיבוב" # translated by: Yaron https://launchpad.net/~sh-yaron on 2015-03-28 22:59:20 UTC #: data/ui/qt/main.ui.h:278 msgid "&Preferences …" msgstr "ה&עדפות …" # translated by: Yaron https://launchpad.net/~sh-yaron on 2015-03-28 22:59:20 UTC #: data/ui/qt/main.ui.h:279 msgid "&Status Bar" msgstr "&שורת מצב" # translated by: Yaron https://launchpad.net/~sh-yaron on 2015-03-28 22:59:20 UTC #: data/ui/qt/main.ui.h:280 msgid "&Info …" msgstr "&פרטים …" # translated by: Yaron https://launchpad.net/~sh-yaron on 2015-03-28 22:59:20 UTC #: data/ui/qt/main.ui.h:281 msgid "Rewind" msgstr "הרצה אחורנית" # translated by: Yaron https://launchpad.net/~sh-yaron on 2015-03-28 22:59:20 UTC #: data/ui/qt/main.ui.h:282 msgid "Previous" msgstr "אחורה" # translated by: Yaron https://launchpad.net/~sh-yaron on 2015-03-28 22:59:20 UTC #: data/ui/qt/main.ui.h:283 msgid "Stop" msgstr "עצירה" # translated by: Yaron https://launchpad.net/~sh-yaron on 2015-03-28 22:59:20 UTC #: data/ui/qt/main.ui.h:284 msgid "Play" msgstr "נגינה" # translated by: Yaron https://launchpad.net/~sh-yaron on 2015-03-28 22:59:20 UTC #: data/ui/qt/main.ui.h:285 msgid "Next" msgstr "הבא" # translated by: Yaron https://launchpad.net/~sh-yaron on 2015-03-28 22:59:20 UTC #: data/ui/qt/main.ui.h:286 msgid "Forward" msgstr "קדימה" # translated by: Yaron https://launchpad.net/~sh-yaron on 2015-03-28 22:59:20 UTC #: data/ui/qt/main.ui.h:287 msgid "Add Mark" msgstr "הוספת סמן" # translated by: Yaron https://launchpad.net/~sh-yaron on 2015-03-28 22:59:20 UTC #: data/ui/qt/main.ui.h:289 msgid "Mark the current place in the sequence of moves" msgstr "סימון המיקום הנוכחי ברצף המהלכים" # translated by: Yaron https://launchpad.net/~sh-yaron on 2015-03-28 22:59:20 UTC #: data/ui/qt/main.ui.h:291 msgid "Remove Mark" msgstr "הסרת סמן" # translated by: Yaron https://launchpad.net/~sh-yaron on 2015-03-28 22:59:20 UTC #: data/ui/qt/main.ui.h:293 msgid "Remove the mark at the current place in the sequence of moves" msgstr "הסרת סמן מהמיקום הנוכחי ברצף המהלכים" # translated by: Yaron https://launchpad.net/~sh-yaron on 2015-03-28 22:59:20 UTC #: data/ui/qt/main.ui.h:295 msgid "&Edit Bar" msgstr "סרגל &עריכה" #: data/ui/qt/main.ui.h:296 msgid "&Help …" msgstr "" # translated by: Yaron https://launchpad.net/~sh-yaron on 2015-03-28 22:59:20 UTC #: data/ui/qt/preferences.ui.h:372 msgid "Preferences" msgstr "העדפות" # translated by: Yaron https://launchpad.net/~sh-yaron on 2015-03-28 22:59:20 UTC #: data/ui/qt/preferences.ui.h:373 msgid "Animation Speed:" msgstr "מהירות ההנפשה:" # translated by: Yaron https://launchpad.net/~sh-yaron on 2015-03-28 22:59:20 UTC #: data/ui/qt/preferences.ui.h:375 msgid "Mirror Distance:" msgstr "מרחק מהמראה:" #: data/ui/qt/preferences.ui.h:377 msgid "Quality:" msgstr "" #: data/ui/qt/preferences.ui.h:380 msgid "" "Lower antialiasing has better performance, higher antialiasing has better " "quality." msgstr "" #: data/ui/qt/preferences.ui.h:382 msgid "Antialiasing:" msgstr "" # translated by: Yaron https://launchpad.net/~sh-yaron on 2013-06-03 14:40:05 UTC #: data/ui/qt/preferences.ui.h:384 msgid "The program needs to be restarted for the changes to take effect." msgstr "יש להפעיל את התכנית מחדש כדי שהשינויים יכנסו לתוקף." # translated by: Yaron https://launchpad.net/~sh-yaron on 2015-03-28 22:59:20 UTC #: data/ui/qt/preferences.ui.h:385 msgid "Graphic" msgstr "גרפיקה" #: data/ui/qt/preferences.ui.h:386 msgid "Point and click, all directions" msgstr "" #: data/ui/qt/preferences.ui.h:387 msgid "Point and click, simplified" msgstr "" #: data/ui/qt/preferences.ui.h:388 msgid "Gestures" msgstr "" # translated by: Yaron https://launchpad.net/~sh-yaron on 2015-03-28 22:59:20 UTC #: data/ui/qt/preferences.ui.h:389 msgid "Mouse" msgstr "עכבר" # translated by: Yaron https://launchpad.net/~sh-yaron on 2015-03-28 22:59:20 UTC #: data/ui/qt/preferences.ui.h:391 data/ui/qt/preferences.ui.h:393 msgid "Add" msgstr "הוספה" # translated by: Yaron https://launchpad.net/~sh-yaron on 2015-03-28 22:59:20 UTC #: data/ui/qt/preferences.ui.h:395 data/ui/qt/preferences.ui.h:397 msgid "Remove" msgstr "הסרה" # translated by: Yaron https://launchpad.net/~sh-yaron on 2015-03-28 22:59:20 UTC #: data/ui/qt/preferences.ui.h:399 data/ui/qt/preferences.ui.h:401 msgid "Reset" msgstr "איפוס" # translated by: Yaron https://launchpad.net/~sh-yaron on 2015-03-28 22:59:20 UTC #: data/ui/qt/preferences.ui.h:402 msgid "Keys" msgstr "מקשים" # translated by: Yaron https://launchpad.net/~sh-yaron on 2015-03-28 22:59:20 UTC #: data/ui/qt/preferences.ui.h:403 msgid "Color:" msgstr "צבע:" # translated by: Yaron https://launchpad.net/~sh-yaron on 2015-03-28 22:59:20 UTC #: data/ui/qt/preferences.ui.h:405 msgid "Image File:" msgstr "קובץ תמונה:" # translated by: Yaron https://launchpad.net/~sh-yaron on 2015-03-28 22:59:20 UTC #: data/ui/qt/preferences.ui.h:407 msgid "Tiled" msgstr "פרוש" # translated by: Yaron https://launchpad.net/~sh-yaron on 2015-03-28 22:59:20 UTC #: data/ui/qt/preferences.ui.h:408 msgid "Mosaic" msgstr "פסיפס" # translated by: Yaron https://launchpad.net/~sh-yaron on 2015-03-28 22:59:20 UTC #: data/ui/qt/preferences.ui.h:409 msgid "Background:" msgstr "רקע:" # translated by: Yaron https://launchpad.net/~sh-yaron on 2015-03-28 22:59:20 UTC #: data/ui/qt/preferences.ui.h:411 msgid "Appearance" msgstr "מראה" # translated by: Yaron https://launchpad.net/~sh-yaron on 2012-12-14 08:03:25 UTC #: pybiklib/ext/qt.py:1578 msgid "Move" msgstr "הזזה" # translated by: Yaron https://launchpad.net/~sh-yaron on 2012-12-14 08:03:25 UTC #: pybiklib/ext/qt.py:1581 msgid "Key" msgstr "מקש" # translated by: Yaron https://launchpad.net/~sh-yaron on 2012-12-14 08:03:25 UTC #: pybiklib/ext/qt.py:1682 msgid "Open Image" msgstr "פתיחת תמונה" # translated by: Yaron https://launchpad.net/~sh-yaron on 2012-12-14 08:02:11 UTC #: pybiklib/ext/qt.py:1720 msgid "plain" msgstr "פשוט" # translated by: Yaron https://launchpad.net/~sh-yaron on 2012-12-14 08:02:11 UTC #: pybiklib/ext/qt.py:1723 msgid "select …" msgstr "בחירה …" # translated by: Yaron https://launchpad.net/~sh-yaron on 2012-12-14 08:02:11 UTC #: pybiklib/ext/qtui.py:94 msgid "Press a key …" msgstr "נא ללחוץ על מקש כלשהו …" # translated by: Yaron https://launchpad.net/~sh-yaron on 2013-06-03 14:40:45 UTC #. Add whatever keywords you want in your language, separated by semicolons, last character must be a semicolon. These keywords are used when searching for applications in Unity, GNOME Shell, etc. #: data/app-meta/pybik.desktop.in:10 msgid "rubik;cube;puzzle;magic;" msgstr "הונגרית;רוביק;תצרף;פאזל;פזל;קסם;טריק;" # translated by: Yaron https://launchpad.net/~sh-yaron on 2012-12-17 09:40:27 UTC #: data/plugins/01-challenges.plugins.py:18 #: data/plugins/01-challenges.plugins.py:21 #: data/plugins/01-challenges.plugins.py:24 #: data/plugins/01-challenges.plugins.py:27 #: data/plugins/01-challenges.plugins.py:30 #: data/plugins/01-challenges.plugins.py:33 #: data/plugins/01-challenges.plugins.py:36 #: data/plugins/01-challenges.plugins.py:39 #: data/plugins/01-challenges.plugins.py:42 #: data/plugins/01-challenges.plugins.py:45 #: data/plugins/01-challenges.plugins.py:48 msgid "Challenges" msgstr "אתגרים" #: data/plugins/01-challenges.plugins.py:19 msgid "Solve random puzzle" msgstr "" #: data/plugins/01-challenges.plugins.py:22 #: data/plugins/01-challenges.plugins.py:25 #: data/plugins/01-challenges.plugins.py:28 #: data/plugins/01-challenges.plugins.py:31 #: data/plugins/01-challenges.plugins.py:34 #: data/plugins/01-challenges.plugins.py:37 #: data/plugins/01-challenges.plugins.py:40 #: data/plugins/01-challenges.plugins.py:43 #: data/plugins/01-challenges.plugins.py:46 #: data/plugins/01-challenges.plugins.py:49 msgid "Solve in {} move" msgid_plural "Solve in {} moves" msgstr[0] "" msgstr[1] "" # translated by: Yaron https://launchpad.net/~sh-yaron on 2012-12-17 09:41:39 UTC #: data/plugins/10-beginners.plugins.py:31 #: data/plugins/10-beginners.plugins.py:34 #: data/plugins/10-beginners.plugins.py:56 #: data/plugins/10-beginners.plugins.py:73 #: data/plugins/10-beginners.plugins.py:100 #: data/plugins/10-beginners.plugins.py:118 #: data/plugins/10-beginners.plugins.py:140 #: data/plugins/10-beginners.plugins.py:158 #: data/plugins/14-leyan-lo.plugins.py:21 #: data/plugins/14-leyan-lo.plugins.py:24 #: data/plugins/14-leyan-lo.plugins.py:53 #: data/plugins/14-leyan-lo.plugins.py:74 #: data/plugins/14-leyan-lo.plugins.py:90 #: data/plugins/14-leyan-lo.plugins.py:107 #: data/plugins/14-leyan-lo.plugins.py:129 #: data/plugins/14-leyan-lo.plugins.py:170 #: data/plugins/150-spiegel.plugins.py:32 #: data/plugins/150-spiegel.plugins.py:35 #: data/plugins/150-spiegel.plugins.py:64 #: data/plugins/150-spiegel.plugins.py:85 #: data/plugins/150-spiegel.plugins.py:100 #: data/plugins/150-spiegel.plugins.py:113 #: data/plugins/150-spiegel.plugins.py:130 #: data/plugins/150-spiegel.plugins.py:141 #: data/plugins/151-spiegel-improved.plugins.py:20 #: data/plugins/151-spiegel-improved.plugins.py:23 #: data/plugins/151-spiegel-improved.plugins.py:68 #: data/plugins/151-spiegel-improved.plugins.py:107 #: data/plugins/151-spiegel-improved.plugins.py:139 #: data/plugins/151-spiegel-improved.plugins.py:165 #: data/plugins/151-spiegel-improved.plugins.py:183 #: data/plugins/151-spiegel-improved.plugins.py:197 #: data/plugins/20-2x2x2.plugins.py:18 data/plugins/20-2x2x2.plugins.py:21 #: data/plugins/20-2x2x2.plugins.py:37 data/plugins/20-2x2x2.plugins.py:55 msgid "Solvers" msgstr "פותרים" #: data/plugins/10-beginners.plugins.py:32 #: data/plugins/10-beginners.plugins.py:35 #: data/plugins/10-beginners.plugins.py:57 #: data/plugins/10-beginners.plugins.py:74 #: data/plugins/10-beginners.plugins.py:101 #: data/plugins/10-beginners.plugins.py:119 #: data/plugins/10-beginners.plugins.py:141 #: data/plugins/10-beginners.plugins.py:159 msgid "Beginner's method" msgstr "" # translated by: Yaron https://launchpad.net/~sh-yaron on 2012-12-17 09:41:39 UTC #: data/plugins/10-beginners.plugins.py:36 #: data/plugins/14-leyan-lo.plugins.py:26 #: data/plugins/150-spiegel.plugins.py:37 #: data/plugins/151-spiegel-improved.plugins.py:25 msgid "Top edges" msgstr "קצוות עליונים" # translated by: Yaron https://launchpad.net/~sh-yaron on 2012-12-17 09:41:39 UTC #: data/plugins/10-beginners.plugins.py:58 #: data/plugins/14-leyan-lo.plugins.py:55 #: data/plugins/150-spiegel.plugins.py:66 #: data/plugins/151-spiegel-improved.plugins.py:70 msgid "Top corners" msgstr "פינות עליונות" # translated by: Yaron https://launchpad.net/~sh-yaron on 2012-12-17 09:43:29 UTC #: data/plugins/10-beginners.plugins.py:75 #: data/plugins/14-leyan-lo.plugins.py:76 #: data/plugins/150-spiegel.plugins.py:87 #: data/plugins/151-spiegel-improved.plugins.py:109 msgid "Middle slice" msgstr "חיתוך באמצע" # translated by: Yaron https://launchpad.net/~sh-yaron on 2012-12-17 12:37:34 UTC #: data/plugins/10-beginners.plugins.py:102 #: data/plugins/14-leyan-lo.plugins.py:92 #: data/plugins/150-spiegel.plugins.py:115 #: data/plugins/151-spiegel-improved.plugins.py:167 msgid "Bottom edge orient" msgstr "כיוון קצה תחתון" # translated by: Yaron https://launchpad.net/~sh-yaron on 2012-12-17 12:37:34 UTC #: data/plugins/10-beginners.plugins.py:120 #: data/plugins/14-leyan-lo.plugins.py:131 #: data/plugins/150-spiegel.plugins.py:143 #: data/plugins/151-spiegel-improved.plugins.py:199 #: data/plugins/20-2x2x2.plugins.py:57 msgid "Bottom corner orient" msgstr "כיוון פינה תחתונה" # translated by: Yaron https://launchpad.net/~sh-yaron on 2012-12-17 12:37:34 UTC #: data/plugins/10-beginners.plugins.py:142 #: data/plugins/14-leyan-lo.plugins.py:109 #: data/plugins/150-spiegel.plugins.py:132 #: data/plugins/151-spiegel-improved.plugins.py:185 #: data/plugins/20-2x2x2.plugins.py:39 msgid "Bottom corner place" msgstr "מיקום פינה תחתונה" # translated by: Yaron https://launchpad.net/~sh-yaron on 2012-12-17 12:37:34 UTC #: data/plugins/10-beginners.plugins.py:160 #: data/plugins/14-leyan-lo.plugins.py:172 #: data/plugins/150-spiegel.plugins.py:102 #: data/plugins/151-spiegel-improved.plugins.py:141 msgid "Bottom edge place" msgstr "מיקום קצה תחתון" #. Leyan Lo is the inventor of the solution #: data/plugins/14-leyan-lo.plugins.py:23 #: data/plugins/14-leyan-lo.plugins.py:25 #: data/plugins/14-leyan-lo.plugins.py:54 #: data/plugins/14-leyan-lo.plugins.py:75 #: data/plugins/14-leyan-lo.plugins.py:91 #: data/plugins/14-leyan-lo.plugins.py:108 #: data/plugins/14-leyan-lo.plugins.py:130 #: data/plugins/14-leyan-lo.plugins.py:171 msgid "Leyan Lo" msgstr "" # translated by: Yaron https://launchpad.net/~sh-yaron on 2012-12-17 09:41:39 UTC #. Spiegel is a german magazine #: data/plugins/150-spiegel.plugins.py:34 #: data/plugins/150-spiegel.plugins.py:36 #: data/plugins/150-spiegel.plugins.py:65 #: data/plugins/150-spiegel.plugins.py:86 #: data/plugins/150-spiegel.plugins.py:101 #: data/plugins/150-spiegel.plugins.py:114 #: data/plugins/150-spiegel.plugins.py:131 #: data/plugins/150-spiegel.plugins.py:142 msgid "Spiegel" msgstr "שפיגל" # translated by: Yaron https://launchpad.net/~sh-yaron on 2012-12-17 09:43:29 UTC #. Spiegel is a german magazine #: data/plugins/151-spiegel-improved.plugins.py:22 #: data/plugins/151-spiegel-improved.plugins.py:24 #: data/plugins/151-spiegel-improved.plugins.py:69 #: data/plugins/151-spiegel-improved.plugins.py:108 #: data/plugins/151-spiegel-improved.plugins.py:140 #: data/plugins/151-spiegel-improved.plugins.py:166 #: data/plugins/151-spiegel-improved.plugins.py:184 #: data/plugins/151-spiegel-improved.plugins.py:198 msgid "Spiegel improved" msgstr "שפיגל משופר" # translated by: Yaron https://launchpad.net/~sh-yaron on 2012-12-17 09:43:29 UTC #: data/plugins/20-2x2x2.plugins.py:19 data/plugins/20-2x2x2.plugins.py:22 #: data/plugins/20-2x2x2.plugins.py:38 data/plugins/20-2x2x2.plugins.py:56 msgid "2×2×2" msgstr "2×2×2" # translated by: Yaron https://launchpad.net/~sh-yaron on 2012-12-17 09:43:29 UTC #: data/plugins/20-2x2x2.plugins.py:23 msgid "Top slice" msgstr "חיתוך עליון" # translated by: Yaron https://launchpad.net/~sh-yaron on 2012-12-17 09:45:54 UTC #: data/plugins/80-pretty-patterns.plugins.py:20 #: data/plugins/80-pretty-patterns.plugins.py:23 #: data/plugins/80-pretty-patterns.plugins.py:27 #: data/plugins/80-pretty-patterns.plugins.py:31 #: data/plugins/80-pretty-patterns.plugins.py:35 #: data/plugins/80-pretty-patterns.plugins.py:40 #: data/plugins/80-pretty-patterns.plugins.py:44 msgid "Stripes" msgstr "רצועות" # translated by: Yaron https://launchpad.net/~sh-yaron on 2012-12-17 09:45:54 UTC #: data/plugins/80-pretty-patterns.plugins.py:49 #: data/plugins/80-pretty-patterns.plugins.py:53 msgid "Criss-Cross" msgstr "משבצות" # translated by: Yaron https://launchpad.net/~sh-yaron on 2012-12-17 09:45:54 UTC #: data/plugins/80-pretty-patterns.plugins.py:57 msgid "Fried Eggs" msgstr "ביצים מטוגנות" # translated by: Yaron https://launchpad.net/~sh-yaron on 2012-12-17 09:45:54 UTC #: data/plugins/80-pretty-patterns.plugins.py:61 msgid "Big Fried Eggs" msgstr "ביצים גדולות מטוגנות" # translated by: Yaron https://launchpad.net/~sh-yaron on 2012-12-17 09:45:54 UTC #: data/plugins/80-pretty-patterns.plugins.py:65 #: data/plugins/80-pretty-patterns.plugins.py:69 msgid "4 Fried Eggs" msgstr "4 ביצים מטוגנות" #: data/plugins/80-pretty-patterns.plugins.py:73 msgid "2 Fried Eggs" msgstr "" # translated by: Yaron https://launchpad.net/~sh-yaron on 2012-12-17 09:45:54 UTC #: data/plugins/80-pretty-patterns.plugins.py:77 msgid "Chessboard" msgstr "לוח שח" # translated by: Yaron https://launchpad.net/~sh-yaron on 2012-12-17 09:45:54 UTC #: data/plugins/80-pretty-patterns.plugins.py:83 msgid "Cross" msgstr "צלב" # translated by: Yaron https://launchpad.net/~sh-yaron on 2012-12-17 09:45:54 UTC #: data/plugins/80-pretty-patterns.plugins.py:87 msgid "Zig Zag" msgstr "זיג זג" # translated by: Yaron https://launchpad.net/~sh-yaron on 2012-12-17 09:45:54 UTC #. T is the shape formed by the cube labels. T-Time is a pun (Tea Time) and not suitable for literal translation. Don't translate it or use something common or whatever you think makes sense. #: data/plugins/80-pretty-patterns.plugins.py:93 #: data/plugins/80-pretty-patterns.plugins.py:96 #: data/plugins/80-pretty-patterns.plugins.py:100 #: data/plugins/80-pretty-patterns.plugins.py:104 #: data/plugins/80-pretty-patterns.plugins.py:108 #: data/plugins/80-pretty-patterns.plugins.py:112 msgid "T-Time" msgstr "זמן T" # translated by: Yaron https://launchpad.net/~sh-yaron on 2012-12-17 09:50:37 UTC #. C is the shape formed by the cube labels #: data/plugins/80-pretty-patterns.plugins.py:118 msgid "C" msgstr "C" # translated by: Yaron https://launchpad.net/~sh-yaron on 2012-12-17 09:46:29 UTC #: data/plugins/80-pretty-patterns.plugins.py:121 msgid "Cube in a Cube" msgstr "קובייה בתוך קובייה" # translated by: Yaron https://launchpad.net/~sh-yaron on 2012-12-17 12:51:34 UTC #: data/plugins/80-pretty-patterns.plugins.py:125 msgid "Striped Cube in a Cube" msgstr "קוביה מפוספסת בתוך קוביה" #: data/plugins/80-pretty-patterns.plugins.py:129 msgid "Six square cuboids" msgstr "" # translated by: Yaron https://launchpad.net/~sh-yaron on 2012-12-17 09:50:24 UTC #. Superflip may be not translated, because it has a special meaning in the mathematical theory behind the Rubik's Cube. #: data/plugins/80-pretty-patterns.plugins.py:135 msgid "Superflip" msgstr "סופר היפוך" # translated by: Yaron https://launchpad.net/~sh-yaron on 2012-12-17 09:56:04 UTC #: data/plugins/80-pretty-patterns.plugins.py:138 msgid "Superflip easy" msgstr "סופר היפוך קל" # translated by: Yaron https://launchpad.net/~sh-yaron on 2012-12-17 09:50:24 UTC #: data/plugins/80-pretty-patterns.plugins.py:142 msgid "Green Mamba" msgstr "ממבה ירוקה" # translated by: Yaron https://launchpad.net/~sh-yaron on 2012-12-17 09:46:29 UTC #: data/plugins/80-pretty-patterns.plugins.py:146 msgid "Anaconda" msgstr "אנקונדה" # translated by: Yaron https://launchpad.net/~sh-yaron on 2012-12-17 09:49:01 UTC #: data/plugins/80-pretty-patterns.plugins.py:150 msgid "Duck Feet" msgstr "רגלי ברווז" #: data/plugins/80-pretty-patterns.plugins.py:154 #: data/plugins/80-pretty-patterns.plugins.py:158 #: data/plugins/80-pretty-patterns.plugins.py:162 #: data/plugins/80-pretty-patterns.plugins.py:166 #: data/plugins/80-pretty-patterns.plugins.py:170 #: data/plugins/80-pretty-patterns.plugins.py:174 #: data/plugins/80-pretty-patterns.plugins.py:178 #: data/plugins/80-pretty-patterns.plugins.py:182 msgid "Plus" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:186 #: data/plugins/80-pretty-patterns.plugins.py:191 #: data/plugins/80-pretty-patterns.plugins.py:196 #: data/plugins/80-pretty-patterns.plugins.py:200 msgid "Minus" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:204 msgid "Volcano" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:208 msgid "Checkerboard (easy)" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:212 msgid "Checkerboard (fast)" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:216 msgid "Mixed Checkerboard" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:220 msgid "Tipi" msgstr "" # translated by: Yaron https://launchpad.net/~sh-yaron on 2012-12-17 09:46:29 UTC #: data/plugins/90-library.plugins.py:18 data/plugins/90-library.plugins.py:22 #: data/plugins/90-library.plugins.py:26 data/plugins/90-library.plugins.py:30 #: data/plugins/90-library.plugins.py:34 data/plugins/90-library.plugins.py:38 #: data/plugins/90-library.plugins.py:42 data/plugins/90-library.plugins.py:46 #: data/plugins/90-library.plugins.py:50 data/plugins/90-library.plugins.py:54 #: data/plugins/90-library.plugins.py:58 data/plugins/90-library.plugins.py:62 #: data/plugins/90-library.plugins.py:66 data/plugins/90-library.plugins.py:70 #: data/plugins/90-library.plugins.py:74 data/plugins/90-library.plugins.py:78 #: data/plugins/90-library.plugins.py:82 data/plugins/90-library.plugins.py:86 #: data/plugins/90-library.plugins.py:91 data/plugins/90-library.plugins.py:96 #: data/plugins/90-library.plugins.py:101 #: data/plugins/90-library.plugins.py:105 #: data/plugins/90-library.plugins.py:110 #: data/plugins/90-library.plugins.py:115 #: data/plugins/90-library.plugins.py:119 #: data/plugins/90-library.plugins.py:123 #: data/plugins/90-library.plugins.py:127 msgid "Library" msgstr "ספרייה" #: data/plugins/90-library.plugins.py:19 data/plugins/90-library.plugins.py:23 #: data/plugins/90-library.plugins.py:27 data/plugins/90-library.plugins.py:31 #: data/plugins/90-library.plugins.py:35 msgid "Swap edges" msgstr "" #: data/plugins/90-library.plugins.py:20 msgid "3 edges ⟳, top layer" msgstr "" #: data/plugins/90-library.plugins.py:24 msgid "3 edges ⟲, top layer" msgstr "" #: data/plugins/90-library.plugins.py:28 msgid "3 edges, middle layer" msgstr "" #: data/plugins/90-library.plugins.py:32 msgid "4 edges, front and right" msgstr "" #: data/plugins/90-library.plugins.py:36 msgid "4 edges, front and back" msgstr "" #: data/plugins/90-library.plugins.py:39 msgid "Swap 2 edges and 2 corners, top layer" msgstr "" #: data/plugins/90-library.plugins.py:43 data/plugins/90-library.plugins.py:47 msgid "Flip edges" msgstr "" #: data/plugins/90-library.plugins.py:44 msgid "4 edges" msgstr "" #: data/plugins/90-library.plugins.py:48 msgid "2 edges, top layer" msgstr "" #: data/plugins/90-library.plugins.py:51 data/plugins/90-library.plugins.py:55 #: data/plugins/90-library.plugins.py:59 data/plugins/90-library.plugins.py:63 #: data/plugins/90-library.plugins.py:67 data/plugins/90-library.plugins.py:71 msgid "Swap corners" msgstr "" #: data/plugins/90-library.plugins.py:52 data/plugins/90-library.plugins.py:76 msgid "2 corners, top layer" msgstr "" #: data/plugins/90-library.plugins.py:56 msgid "2 corners diagonal, top layer" msgstr "" #: data/plugins/90-library.plugins.py:60 data/plugins/90-library.plugins.py:80 msgid "3 corners ⟳, top layer" msgstr "" #: data/plugins/90-library.plugins.py:64 msgid "3 corners ⟲, top layer" msgstr "" #: data/plugins/90-library.plugins.py:68 msgid "4 corners, top layer" msgstr "" #: data/plugins/90-library.plugins.py:72 msgid "2 corners, partial sequence, top layer" msgstr "" #: data/plugins/90-library.plugins.py:75 data/plugins/90-library.plugins.py:79 #: data/plugins/90-library.plugins.py:83 data/plugins/90-library.plugins.py:87 msgid "Rotate corners" msgstr "" #: data/plugins/90-library.plugins.py:84 msgid "1 corner ⟳, partial sequence, top layer" msgstr "" #: data/plugins/90-library.plugins.py:88 msgid "1 corner ⟲, partial sequence, top layer" msgstr "" #: data/plugins/90-library.plugins.py:92 data/plugins/90-library.plugins.py:97 #: data/plugins/90-library.plugins.py:102 #: data/plugins/90-library.plugins.py:111 msgid "Rotate center" msgstr "" # translated by: Yaron https://launchpad.net/~sh-yaron on 2012-12-17 09:47:28 UTC #. 2 rotations of the center face in the upper layer #: data/plugins/90-library.plugins.py:94 msgid "2×Up" msgstr "2×למעלה" #. Up clockwise and front clockwise #: data/plugins/90-library.plugins.py:99 msgid "Up ⟳ and front ⟳" msgstr "" #. Up clockwise and front counterclockwise #: data/plugins/90-library.plugins.py:104 msgid "Up ⟳ and front ⟲" msgstr "" #: data/plugins/90-library.plugins.py:106 msgid "Swap center parts, up and front" msgstr "" #. Up clockwise and down counterclockwise #: data/plugins/90-library.plugins.py:113 msgid "Up ⟳ and down ⟲" msgstr "" # translated by: Yaron https://launchpad.net/~sh-yaron on 2012-12-17 09:49:01 UTC #: data/plugins/90-library.plugins.py:116 #: data/plugins/90-library.plugins.py:120 #: data/plugins/90-library.plugins.py:124 #: data/plugins/90-library.plugins.py:128 msgid "Misc" msgstr "שונות" #. Yields in a rotated back layer, but the sequence of moves does not touch the back layer #: data/plugins/90-library.plugins.py:118 #: data/plugins/90-library.plugins.py:125 #: data/plugins/90-library.plugins.py:129 msgid "Back without back" msgstr "" #: data/plugins/90-library.plugins.py:121 msgid "2×Back without back" msgstr "" #: data/plugins/95-transformations.plugins.py:18 #: data/plugins/95-transformations.plugins.py:21 #: data/plugins/95-transformations.plugins.py:24 msgid "Move transformations" msgstr "" #: data/plugins/95-transformations.plugins.py:19 msgid "Invert move sequence" msgstr "" #: data/plugins/95-transformations.plugins.py:22 msgid "Normalize cube rotations" msgstr "" #: data/plugins/95-transformations.plugins.py:25 msgid "Normalize move sequence" msgstr "" # translated by: Yaron https://launchpad.net/~sh-yaron on 2012-12-14 08:06:17 UTC #: buildlib/modeldef.py:110 msgid "Brick" msgstr "לבנה" # translated by: Yaron https://launchpad.net/~sh-yaron on 2012-12-14 08:07:24 UTC #: buildlib/modeldef.py:111 #, python-brace-format msgid "{0}×{1}×{2}-Brick" msgstr "{0}×{1}×{2}-לבנה" # translated by: Yaron https://launchpad.net/~sh-yaron on 2012-12-14 08:06:17 UTC #: buildlib/modeldef.py:112 msgid "Width:" msgstr "רוחב:‏" # translated by: Yaron https://launchpad.net/~sh-yaron on 2012-12-17 09:37:18 UTC #: buildlib/modeldef.py:112 buildlib/modeldef.py:151 buildlib/modeldef.py:249 #: buildlib/modeldef.py:300 buildlib/modeldef.py:311 msgid "Height:" msgstr "גובה:" # translated by: Yaron https://launchpad.net/~sh-yaron on 2012-12-17 09:37:52 UTC #: buildlib/modeldef.py:112 msgid "Depth:" msgstr "עומק:" #: buildlib/modeldef.py:120 buildlib/modeldef.py:257 buildlib/modeldef.py:319 #: buildlib/modeldef.py:374 buildlib/modeldef.py:433 msgid "up" msgstr "" #: buildlib/modeldef.py:120 buildlib/modeldef.py:205 buildlib/modeldef.py:257 #: buildlib/modeldef.py:319 buildlib/modeldef.py:373 buildlib/modeldef.py:430 msgid "down" msgstr "" #: buildlib/modeldef.py:120 buildlib/modeldef.py:205 buildlib/modeldef.py:257 msgid "left" msgstr "" # translated by: Yaron https://launchpad.net/~sh-yaron on 2012-12-14 08:03:25 UTC #: buildlib/modeldef.py:120 buildlib/modeldef.py:205 buildlib/modeldef.py:257 msgid "right" msgstr "" # translated by: Yaron https://launchpad.net/~sh-yaron on 2012-12-14 08:03:25 UTC #: buildlib/modeldef.py:120 buildlib/modeldef.py:374 msgid "front" msgstr "" # translated by: Yaron https://launchpad.net/~sh-yaron on 2015-03-28 22:59:20 UTC #: buildlib/modeldef.py:120 buildlib/modeldef.py:205 buildlib/modeldef.py:257 #: buildlib/modeldef.py:320 buildlib/modeldef.py:373 msgid "back" msgstr "" # translated by: Yaron https://launchpad.net/~sh-yaron on 2012-12-14 08:07:24 UTC #: buildlib/modeldef.py:149 msgid "Tower" msgstr "מגדל" # translated by: Yaron https://launchpad.net/~sh-yaron on 2012-12-14 08:07:24 UTC #: buildlib/modeldef.py:150 #, python-brace-format msgid "{0}×{1}-Tower" msgstr "{0}×{1}-מגדל" # translated by: Yaron https://launchpad.net/~sh-yaron on 2012-12-14 08:06:17 UTC #: buildlib/modeldef.py:151 buildlib/modeldef.py:249 buildlib/modeldef.py:300 #: buildlib/modeldef.py:311 msgid "Basis:" msgstr "בסיס:" # translated by: Yaron https://launchpad.net/~sh-yaron on 2012-12-14 08:07:24 UTC #: buildlib/modeldef.py:163 msgid "Cube" msgstr "קוביה" # translated by: Yaron https://launchpad.net/~sh-yaron on 2012-12-14 08:07:24 UTC #: buildlib/modeldef.py:164 #, python-brace-format msgid "{0}×{0}×{0}-Cube" msgstr "{0}×{0}×{0}-קוביה" # translated by: Yaron https://launchpad.net/~sh-yaron on 2012-12-14 08:06:17 UTC #: buildlib/modeldef.py:165 buildlib/modeldef.py:197 buildlib/modeldef.py:365 #: buildlib/modeldef.py:422 msgid "Size:" msgstr "גודל:‏" #: buildlib/modeldef.py:177 buildlib/modeldef.py:178 msgid "Void Cube" msgstr "" #: buildlib/modeldef.py:195 msgid "Tetrahedron" msgstr "" #: buildlib/modeldef.py:196 #, python-brace-format msgid "{0}-Tetrahedron" msgstr "" #: buildlib/modeldef.py:247 msgid "Triangular Prism" msgstr "" #: buildlib/modeldef.py:248 #, python-brace-format msgid "{0}×{1} Triangular Prism" msgstr "" #: buildlib/modeldef.py:298 msgid "Triangular Prism (complex)" msgstr "" #: buildlib/modeldef.py:299 #, python-brace-format msgid "{0}×{1} Triangular Prism (complex)" msgstr "" #: buildlib/modeldef.py:309 msgid "Pentagonal Prism" msgstr "" #: buildlib/modeldef.py:310 #, python-brace-format msgid "{0}×{1} Pentagonal Prism" msgstr "" #: buildlib/modeldef.py:320 buildlib/modeldef.py:373 msgid "front-right" msgstr "" #: buildlib/modeldef.py:320 buildlib/modeldef.py:374 msgid "back-right" msgstr "" #: buildlib/modeldef.py:320 buildlib/modeldef.py:374 msgid "back-left" msgstr "" #: buildlib/modeldef.py:320 buildlib/modeldef.py:373 msgid "front-left" msgstr "" #: buildlib/modeldef.py:354 msgid "Pentagonal Prism (stretched)" msgstr "" #: buildlib/modeldef.py:355 #, python-brace-format msgid "{0}×{1} Pentagonal Prism (stretched)" msgstr "" #: buildlib/modeldef.py:363 msgid "Octahedron" msgstr "" #: buildlib/modeldef.py:364 #, python-brace-format msgid "{0}-Octahedron" msgstr "" #: buildlib/modeldef.py:420 msgid "Dodecahedron" msgstr "" #: buildlib/modeldef.py:421 #, python-brace-format msgid "{0}-Dodecahedron" msgstr "" #: buildlib/modeldef.py:430 msgid "down-back-right" msgstr "" #: buildlib/modeldef.py:430 msgid "down-front-right" msgstr "" #: buildlib/modeldef.py:431 msgid "down-front" msgstr "" #: buildlib/modeldef.py:431 msgid "down-front-left" msgstr "" #: buildlib/modeldef.py:431 msgid "down-back-left" msgstr "" #: buildlib/modeldef.py:432 msgid "up-back" msgstr "" #: buildlib/modeldef.py:432 msgid "up-back-right" msgstr "" #: buildlib/modeldef.py:432 msgid "up-front-right" msgstr "" #: buildlib/modeldef.py:433 msgid "up-front-left" msgstr "" #: buildlib/modeldef.py:433 msgid "up-back-left" msgstr "" pybik-3.0/po/gl.po0000664000175000017500000017275113173052130014232 0ustar barccbarcc00000000000000# Galician translation for pybik # Copyright (c) 2012-2017 Rosetta Contributors and Canonical Ltd 2012 # This file is distributed under the same license as the pybik package. # FIRST AUTHOR , 2012. # msgid "" msgstr "" "Project-Id-Version: pybik\n" "Report-Msgid-Bugs-To: https://bugs.launchpad.net/pybik/+filebug\n" "POT-Creation-Date: 2017-09-10 21:58+0200\n" "PO-Revision-Date: 2017-10-07 09:15+0000\n" "Last-Translator: Miguel Anxo Bouzada \n" "Language-Team: Galician \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Launchpad-Export-Date: 2017-10-08 05:42+0000\n" "X-Generator: Launchpad (build 18474)\n" "Language: gl\n" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2012-12-15 17:51:15 UTC #: pybiklib/application.py:294 msgid "Press the Esc key to exit Edit Mode" msgstr "Prema a tecla Esc para saír do modo de edición" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2012-12-15 18:16:55 UTC #. substitution for {move_text} in statusbar text #: pybiklib/application.py:302 #, python-brace-format msgid "{current} / {total} move" msgid_plural "{current} / {total} moves" msgstr[0] "{current} / {total} movemento" msgstr[1] "{current} / {total} movementos" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2012-12-15 17:51:15 UTC #. substitution for {solved_text} in statusbar text #: pybiklib/application.py:306 msgid "solved" msgstr "resolto" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2012-12-15 17:51:15 UTC #: pybiklib/application.py:306 msgid "not solved" msgstr "sen resolver" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2012-12-15 18:16:55 UTC #. statusbar text #: pybiklib/application.py:309 #, python-brace-format msgid "{move_text}, {solved_text}" msgstr "{move_text}, {solved_text}" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2012-12-15 18:16:55 UTC #: pybiklib/application.py:314 msgid "Congratulations, you have solved the puzzle!" msgstr "Parabéns, resolveu o crebacabezas!" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2012-12-15 17:51:15 UTC #. Name of the application, probably should not be translated. #: pybiklib/config.py:35 data/ui/qt/main.ui.h:271 #: data/app-meta/pybik.desktop.in:3 msgid "Pybik" msgstr "Pybik" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-04-12 13:13:37 UTC #. short description #: pybiklib/config.py:65 data/app-meta/pybik.desktop.in:4 msgid "Rubik's cube game" msgstr "Xogo do cubo de Rubik" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-07-21 01:59:23 UTC #. The next 7 lines belong together and form the long description #: pybiklib/config.py:68 msgid "Pybik is a 3D puzzle game about the cube invented by Ernő Rubik." msgstr "Pybik é un crebacabezas 3D baseado no cubo inventado por Ernő Rubik." # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2017-10-07 09:15:23 UTC #: pybiklib/config.py:70 msgid "" "Various 3D puzzles, such as cubes, towers, prisms, tetrahedra, octahedra, " "dodecahedra and many more" msgstr "" "Varios crebacabezas 3D, como cubos, torres, prismas, tetraedros, octaedros, " "dodecaedros e moitos máis" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-07-21 01:59:23 UTC #: pybiklib/config.py:71 msgid "Solvers for some puzzles" msgstr "Solucionadores para algúns crebacabezas" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2012-12-20 09:08:36 UTC #. Use something that is common in the Rubik scene in your language, sometimes it's just the equivalent of "patterns". #: pybiklib/config.py:72 data/plugins/80-pretty-patterns.plugins.py:19 #: data/plugins/80-pretty-patterns.plugins.py:22 #: data/plugins/80-pretty-patterns.plugins.py:26 #: data/plugins/80-pretty-patterns.plugins.py:30 #: data/plugins/80-pretty-patterns.plugins.py:34 #: data/plugins/80-pretty-patterns.plugins.py:39 #: data/plugins/80-pretty-patterns.plugins.py:43 #: data/plugins/80-pretty-patterns.plugins.py:48 #: data/plugins/80-pretty-patterns.plugins.py:52 #: data/plugins/80-pretty-patterns.plugins.py:56 #: data/plugins/80-pretty-patterns.plugins.py:60 #: data/plugins/80-pretty-patterns.plugins.py:64 #: data/plugins/80-pretty-patterns.plugins.py:68 #: data/plugins/80-pretty-patterns.plugins.py:72 #: data/plugins/80-pretty-patterns.plugins.py:76 #: data/plugins/80-pretty-patterns.plugins.py:82 #: data/plugins/80-pretty-patterns.plugins.py:86 #: data/plugins/80-pretty-patterns.plugins.py:91 #: data/plugins/80-pretty-patterns.plugins.py:95 #: data/plugins/80-pretty-patterns.plugins.py:99 #: data/plugins/80-pretty-patterns.plugins.py:103 #: data/plugins/80-pretty-patterns.plugins.py:107 #: data/plugins/80-pretty-patterns.plugins.py:111 #: data/plugins/80-pretty-patterns.plugins.py:116 #: data/plugins/80-pretty-patterns.plugins.py:120 #: data/plugins/80-pretty-patterns.plugins.py:124 #: data/plugins/80-pretty-patterns.plugins.py:128 #: data/plugins/80-pretty-patterns.plugins.py:133 #: data/plugins/80-pretty-patterns.plugins.py:137 #: data/plugins/80-pretty-patterns.plugins.py:141 #: data/plugins/80-pretty-patterns.plugins.py:145 #: data/plugins/80-pretty-patterns.plugins.py:149 #: data/plugins/80-pretty-patterns.plugins.py:153 #: data/plugins/80-pretty-patterns.plugins.py:157 #: data/plugins/80-pretty-patterns.plugins.py:161 #: data/plugins/80-pretty-patterns.plugins.py:165 #: data/plugins/80-pretty-patterns.plugins.py:169 #: data/plugins/80-pretty-patterns.plugins.py:173 #: data/plugins/80-pretty-patterns.plugins.py:177 #: data/plugins/80-pretty-patterns.plugins.py:181 #: data/plugins/80-pretty-patterns.plugins.py:185 #: data/plugins/80-pretty-patterns.plugins.py:190 #: data/plugins/80-pretty-patterns.plugins.py:195 #: data/plugins/80-pretty-patterns.plugins.py:199 #: data/plugins/80-pretty-patterns.plugins.py:203 #: data/plugins/80-pretty-patterns.plugins.py:207 #: data/plugins/80-pretty-patterns.plugins.py:211 #: data/plugins/80-pretty-patterns.plugins.py:215 #: data/plugins/80-pretty-patterns.plugins.py:219 msgid "Pretty patterns" msgstr "Patróns agradábeis" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-07-21 01:59:23 UTC #: pybiklib/config.py:73 msgid "Editor for move sequences" msgstr "Editor para secuencias de movementos" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-07-21 01:59:23 UTC #: pybiklib/config.py:74 msgid "Custom colors and images on the surface of the puzzles" msgstr "Cores personalizadas e imaxes na superficie dos crebacabezas" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2013-08-15 14:25:53 UTC #: pybiklib/config.py:78 msgid "" "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.\n" "\n" "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." msgstr "" "Este programa é software lbre: vostede pode redistribuílo e/ou modificalo " "baixo os termos da Licenza Pública Xeral GNU, tal e como é publicada pola " "Free Software Foundation, na súa versión 3, ou (á súa elección) segundo unha " "versión posterior.\n" "\n" "Este programa distribúese agardando que sexa útil, mais SEN NINGUNHA " "GARANTÍA, incluso sen a garantía expresa de COMERCIALIZACIÓN ou de " "IDONEIDADE PARA UN PROPÓSITO PARTICULAR. Vexa a Licenza Pública Xeral GNU " "para obter máis detalles." # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2012-12-17 09:14:42 UTC #. Text between "<" and ">" is expanded to a link by the program and should not be modified. #. Text between "" and "<|>" is the translatable text for the link. #: pybiklib/config.py:90 msgid "" "Read the full text of the GNU General Public " "License<|> or see ." msgstr "" "Lea o texto completo da Licenza Pública Xeral de " "GNU<|> ou olle ." # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2012-12-15 17:52:26 UTC #: pybiklib/config.py:93 msgid "" "You should have received a copy of the GNU General Public License along with " "this program. If not, see ." msgstr "" "Debeu recibir unha copia da Licenza pública xeral GNU xunto con este " "programa; en caso contrario, olle ." # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2013-08-15 14:27:35 UTC #: pybiklib/config.py:98 #, python-brace-format msgid "" "If you find any bugs in Pybik or have a suggestion for an improvement then " "please submit a <{CONTACT_FILEBUG}|>bug report<|>." msgstr "" "Se atopa algún erro no Pybik ou ten unha suxestión para melloralo, envíe un " "<{CONTACT_FILEBUG}|>informe de erro<|>." # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-07-22 06:43:21 UTC #: pybiklib/config.py:103 msgid "" "Translations are managed by the " "Launchpad " "translation group<|>.\n" "\n" "If you want help to translate Pybik to your language you can do it through " "the web interface<|>.\n" "\n" "Read more about \"Translating with " "Launchpad\"<|> and " "\"Starting to " "translate\"<|>." msgstr "" "As traducións son xestionadas polo " "Grupo de " "tradución de Launchpad<|>.\n" "\n" "Se quere axudar na tradución do Pybik o seu idioma pode facelo na " "interface web<|>.\n" "\n" "Bótelle unha ollada a \"Traducindo " "co Launchpad\"<|> e " "\"Comezar a " "traducir\"<|>." # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-03-28 22:59:12 UTC #: pybiklib/dialogs.py:44 msgid "Lighting" msgstr "Iluminación" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-04-12 13:13:37 UTC #: pybiklib/dialogs.py:44 msgid "Simple" msgstr "Simple" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2017-10-07 08:59:34 UTC #. labels are the colored stickers on the cube #: pybiklib/dialogs.py:46 msgid "Labels" msgstr "Etiquetas" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-04-16 16:08:30 UTC #: pybiklib/dialogs.py:104 data/ui/qt/main.ui.h:275 msgid "Select Puzzle" msgstr "Seleccione o crebacabezas" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-04-16 16:19:43 UTC #. 1 slice, 2 slices, 3 slices, ... #: pybiklib/dialogs.py:134 pybiklib/dialogs.py:154 pybiklib/dialogs.py:180 #: pybiklib/dialogs.py:201 msgid "{} slice" msgid_plural "{} slices" msgstr[0] "{} rebanda" msgstr[1] "{} rebandas" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2017-10-07 08:59:34 UTC #: pybiklib/dialogs.py:196 pybiklib/dialogs.py:225 msgid "{}×{} slices" msgstr "{}×{} rebandas" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-04-12 13:13:37 UTC #. The next strings form the text in the help dialog: #. Title of the 1st paragraph #: pybiklib/dialogs.py:290 msgid "Using the mouse to rotate the cube" msgstr "Usando o rato para rotar o cubo" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-04-18 15:39:34 UTC #. Text of the 1st paragraph, followed by bullet list items #: pybiklib/dialogs.py:292 msgid "" "Position the mouse cursor over the puzzle and you will see an arrow that " "gives you a hint in which direction the slice under the mouse cursor will be " "rotated." msgstr "" "Sitúe o punteiro do rato sobre o crebacabezas e vará unha frecha que indica " "a dirección na que vai ser xirada a a rebanda situada baixo o punteiro." # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-04-18 14:31:42 UTC #: pybiklib/dialogs.py:294 msgid "" "The left mouse button rotates a single slice of the cube in the direction of " "the arrow." msgstr "" "O botón esquerdo do rato xira unha soa rebanda do cubo na dirección da " "frecha." # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-04-18 14:31:42 UTC #: pybiklib/dialogs.py:295 msgid "" "The right mouse button rotates a single slice of the cube against the " "direction of the arrow." msgstr "" "O botón dereito do rato xira unha soa rebanda do cubo na dirección contraria " "a da frecha." # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-04-18 14:31:42 UTC #: pybiklib/dialogs.py:296 msgid "" "To rotate the whole cube instead of a single slice press the Ctrl key " "together with the mouse button." msgstr "" "Para xirar o cubo enteiro no canto de unha soa rebanda prema a tecla Ctrl " "xunto co botón do rato." # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-04-12 13:13:37 UTC #. Title of the 2nd paragraph #: pybiklib/dialogs.py:298 msgid "Using the keyboard to rotate the cube" msgstr "Usando o teclado para rotar o cubo" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-04-19 11:24:07 UTC #. Text of the 2nd paragraph, followed by bullet list items #: pybiklib/dialogs.py:300 msgid "" "Make sure the keyboard focus is on the cube area (e.g. click on the " "background of the cube). The keys can be configured in the preferences " "dialog, the default is:" msgstr "" "Asegúrese de que o foco do teclado está na zona do cubo (p. ex. premendo no " "fondo do cubo). Pode configurar as teclas no diálogo de preferencias, o " "predeterminado é:" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-04-18 15:51:05 UTC #. before the item text is a list of keys #: pybiklib/dialogs.py:303 pybiklib/dialogs.py:318 msgid "Moves the left, right, upper, down, front or back slice clockwise." msgstr "" "Move as rebandas cara a esquerda, dereita, arriba, abaixo, adiante ou atrás " "no sentido das agullas do reloxo." # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-04-18 15:49:12 UTC #: pybiklib/dialogs.py:304 pybiklib/dialogs.py:319 msgid "Moves a slice couterclockwise." msgstr "Mover unha rebanda no sentido contrario das agullas do reloxo" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-04-16 16:17:50 UTC #: pybiklib/dialogs.py:305 pybiklib/dialogs.py:320 msgid "Moves the whole cube." msgstr "Mover todo o cubo." # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-04-16 16:17:50 UTC #. Title of the 3rd paragraph #: pybiklib/dialogs.py:307 msgid "Other keys and buttons" msgstr "Outras teclas e botóns" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-04-16 16:16:37 UTC #. bullet list items of the 3rd paragraph #: pybiklib/dialogs.py:309 msgid "Mouse wheel – Zoom in/out" msgstr "Roda do rato – Achegar/afastar" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-04-18 15:35:18 UTC #: pybiklib/dialogs.py:310 msgid "" "Arrow keys, Left mouse button on the background – Changes the direction of " "looking at the cube." msgstr "" "As teclas de frecha, co botón esquerdo do rato premido sobre o fondo, cambia " "a orientación do cubo." # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-04-19 11:24:07 UTC #: pybiklib/dialogs.py:311 msgid "" "Moves keyboard focus to the sequence editor above the cube area where you " "can edit the move sequence in the notation described below. Hit enter when " "done." msgstr "" "Despraza o foco do teclado para o editor de secuencias por riba da zona do " "cubo onde pode editar a secuencia de movementos na notación que se describe " "a seguir. Prema Intro cando teña rematado." # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-04-16 16:16:37 UTC #. Title of the 4th paragraph #: pybiklib/dialogs.py:315 msgid "Notation for moves" msgstr "Notación para os movementos" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-04-16 16:16:37 UTC #. Text of the 4th paragraph, followed by bullet list items #: pybiklib/dialogs.py:317 msgid "" "All moves, however they are made, are displayed progressively above the cube " "area:" msgstr "" "Todos os movementos, calquera que sexan, amósanse progresivamente baixo a " "área do cubo:" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-04-19 11:31:04 UTC #: pybiklib/dialogs.py:321 msgid "" "Moves the first, second or third slice from left clockwise. The allowed " "numbers are in the range from 1 to the count of parallel slices. \"l1\" is " "always the same as \"l\" and for the classic 3×3×3-Cube \"l2\" is the same " "as \"r2-\" and \"l3\" is the same as \"r-\"." msgstr "" "Move a primeira, segunda ou terceira rebanda no sentido das agullas do " "reloxo. Os números permitidos están no rango desde 1 ata o número de lados " "paralelos. «l1» é sempre o mesmo que «l», e para o clásico cubos 3×3×3 «l2» " "é o mesmo que «r2-» e «l3» é o mesmo que «r-»." # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-04-16 16:16:37 UTC #: pybiklib/dialogs.py:325 msgid "You can use a space to separate groups of moves." msgstr "Pode empregar un espazo para separar grupos de movementos." # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2012-12-18 11:00:57 UTC #: pybiklib/dialogs.py:379 msgid "Pybik project website" msgstr "Páxina web do proxecto Pybik" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-04-16 16:16:37 UTC #: pybiklib/pluginlib.py:301 msgid "This plugin does not work for any model." msgstr "Este engadido non funciona en ningún modelo." # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-04-16 16:16:37 UTC #: pybiklib/pluginlib.py:303 pybiklib/pluginlib.py:306 msgid "This plugin only works for:" msgstr "Este engadido só funciona en:" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-04-16 16:16:37 UTC #: pybiklib/pluginlib.py:498 msgid "This puzzle is not solvable." msgstr "Este crebacabezas non ten solución." # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2013-06-01 22:16:26 UTC #. The following 6 words are for the antialiasing levels: disabled, ugly, low, medium, high, higher #: pybiklib/schema.py:211 msgid "disabled" msgstr "desactivado" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2013-06-01 22:16:26 UTC #: pybiklib/schema.py:211 msgid "ugly" msgstr "pobre" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2013-06-01 22:16:26 UTC #: pybiklib/schema.py:211 msgid "low" msgstr "baixo" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2013-06-01 22:16:26 UTC #: pybiklib/schema.py:212 msgid "medium" msgstr "medio" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2013-06-01 22:16:26 UTC #: pybiklib/schema.py:212 msgid "high" msgstr "alto" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2013-06-01 22:16:26 UTC #: pybiklib/schema.py:212 msgid "higher" msgstr "moi alto" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-03-28 22:59:12 UTC #: data/ui/qt/about.ui.h:212 msgid "About Pybik" msgstr "Sobre o Pybik" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-03-28 22:59:12 UTC #: data/ui/qt/about.ui.h:213 msgid "Translators:" msgstr "Tradutores:" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-03-28 22:59:12 UTC #: data/ui/qt/about.ui.h:214 msgid "About" msgstr "Sobre" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2017-10-07 08:59:34 UTC #: data/ui/qt/about.ui.h:215 msgid "Contribute" msgstr "Colaborar" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-03-28 22:59:12 UTC #: data/ui/qt/about.ui.h:216 msgid "License" msgstr "Licenza" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-04-16 10:48:42 UTC #: data/ui/qt/help.ui.h:53 data/ui/qt/main.ui.h:297 msgid "Help" msgstr "Axuda" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2012-12-19 10:09:54 UTC #: data/ui/qt/main.ui.h:272 msgid "&New Challenge" msgstr "&Novo desafío" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-03-28 22:59:12 UTC #: data/ui/qt/main.ui.h:273 msgid "Ne&w Solved" msgstr "No&vo resolto" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-03-28 22:59:12 UTC #: data/ui/qt/main.ui.h:274 msgid "&Quit" msgstr "&Saír" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-03-28 22:59:12 UTC #: data/ui/qt/main.ui.h:276 msgid "&Set as Initial State" msgstr "&Definir como estado inicial" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-03-28 22:59:12 UTC #: data/ui/qt/main.ui.h:277 msgid "&Reset Rotation" msgstr "&Restabelecer a rotación" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-03-28 22:59:12 UTC #: data/ui/qt/main.ui.h:278 msgid "&Preferences …" msgstr "&Preferencias…" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-03-28 22:59:12 UTC #: data/ui/qt/main.ui.h:279 msgid "&Status Bar" msgstr "Barra de &estado" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-03-28 22:59:12 UTC #: data/ui/qt/main.ui.h:280 msgid "&Info …" msgstr "&Información…" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-03-28 22:59:12 UTC #: data/ui/qt/main.ui.h:281 msgid "Rewind" msgstr "Retroceder" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-03-28 22:59:12 UTC #: data/ui/qt/main.ui.h:282 msgid "Previous" msgstr "Anterior" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-03-28 22:59:12 UTC #: data/ui/qt/main.ui.h:283 msgid "Stop" msgstr "Deter" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-03-28 22:59:12 UTC #: data/ui/qt/main.ui.h:284 msgid "Play" msgstr "Xogar" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-03-28 22:59:12 UTC #: data/ui/qt/main.ui.h:285 msgid "Next" msgstr "Seguinte" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-03-28 22:59:12 UTC #: data/ui/qt/main.ui.h:286 msgid "Forward" msgstr "Avanzar" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-03-28 22:59:12 UTC #: data/ui/qt/main.ui.h:287 msgid "Add Mark" msgstr "Engadir marca" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-03-28 22:59:12 UTC #: data/ui/qt/main.ui.h:289 msgid "Mark the current place in the sequence of moves" msgstr "Marcar o lugar actual na secuencia de movementos" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-03-28 22:59:12 UTC #: data/ui/qt/main.ui.h:291 msgid "Remove Mark" msgstr "Retirar marca" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-07-22 06:27:45 UTC #: data/ui/qt/main.ui.h:293 msgid "Remove the mark at the current place in the sequence of moves" msgstr "Retirar a marca do lugar actual na secuencia de movementos" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-07-22 06:27:45 UTC #: data/ui/qt/main.ui.h:295 msgid "&Edit Bar" msgstr "Barra de &edición" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-07-22 06:27:45 UTC #: data/ui/qt/main.ui.h:296 msgid "&Help …" msgstr "&Axuda…" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-03-28 22:59:12 UTC #: data/ui/qt/preferences.ui.h:372 msgid "Preferences" msgstr "Preferencias" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-03-28 22:59:12 UTC #: data/ui/qt/preferences.ui.h:373 msgid "Animation Speed:" msgstr "Velocidade da animación:" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-03-28 22:59:12 UTC #: data/ui/qt/preferences.ui.h:375 msgid "Mirror Distance:" msgstr "Distancia do espello:" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-04-16 10:48:42 UTC #: data/ui/qt/preferences.ui.h:377 msgid "Quality:" msgstr "Calidade:" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-04-16 16:10:27 UTC #: data/ui/qt/preferences.ui.h:380 msgid "" "Lower antialiasing has better performance, higher antialiasing has better " "quality." msgstr "" "Un suavizado baixo ten mellor rendemento, un suavizado alto ten maior " "calidade." # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-04-16 10:48:42 UTC #: data/ui/qt/preferences.ui.h:382 msgid "Antialiasing:" msgstr "Suavizado:" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2013-06-01 22:17:46 UTC #: data/ui/qt/preferences.ui.h:384 msgid "The program needs to be restarted for the changes to take effect." msgstr "É necesario reiniciar o programa para que os cambios teñan efecto" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-03-28 22:59:12 UTC #: data/ui/qt/preferences.ui.h:385 msgid "Graphic" msgstr "Gráfico" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2017-10-07 09:15:23 UTC #: data/ui/qt/preferences.ui.h:386 msgid "Point and click, all directions" msgstr "Apunte e prema, todas as direccións" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2017-10-07 09:15:23 UTC #: data/ui/qt/preferences.ui.h:387 msgid "Point and click, simplified" msgstr "Apunte e prema, simplificado" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2017-10-07 08:59:34 UTC #: data/ui/qt/preferences.ui.h:388 msgid "Gestures" msgstr "Xestos" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-03-28 22:59:12 UTC #: data/ui/qt/preferences.ui.h:389 msgid "Mouse" msgstr "Rato" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-03-28 22:59:12 UTC #: data/ui/qt/preferences.ui.h:391 data/ui/qt/preferences.ui.h:393 msgid "Add" msgstr "Engadir" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-03-28 22:59:12 UTC #: data/ui/qt/preferences.ui.h:395 data/ui/qt/preferences.ui.h:397 msgid "Remove" msgstr "Retirar" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-03-28 22:59:12 UTC #: data/ui/qt/preferences.ui.h:399 data/ui/qt/preferences.ui.h:401 msgid "Reset" msgstr "Restabelecer" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-03-28 22:59:12 UTC #: data/ui/qt/preferences.ui.h:402 msgid "Keys" msgstr "Teclas" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-03-28 22:59:12 UTC #: data/ui/qt/preferences.ui.h:403 msgid "Color:" msgstr "Cor:" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-03-28 22:59:12 UTC #: data/ui/qt/preferences.ui.h:405 msgid "Image File:" msgstr "Ficheiro de imaxe:" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-03-28 22:59:12 UTC #: data/ui/qt/preferences.ui.h:407 msgid "Tiled" msgstr "Teselado" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-03-28 22:59:12 UTC #: data/ui/qt/preferences.ui.h:408 msgid "Mosaic" msgstr "Mosaico" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-03-28 22:59:12 UTC #: data/ui/qt/preferences.ui.h:409 msgid "Background:" msgstr "Fondo:" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-03-28 22:59:12 UTC #: data/ui/qt/preferences.ui.h:411 msgid "Appearance" msgstr "Aparencia" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2012-12-15 17:54:14 UTC #: pybiklib/ext/qt.py:1578 msgid "Move" msgstr "Mover" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2012-12-17 08:16:27 UTC #: pybiklib/ext/qt.py:1581 msgid "Key" msgstr "Tecla" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2012-12-15 17:54:14 UTC #: pybiklib/ext/qt.py:1682 msgid "Open Image" msgstr "Abrir a imaxe" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2012-12-15 17:52:26 UTC #: pybiklib/ext/qt.py:1720 msgid "plain" msgstr "simple" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2012-12-19 11:04:43 UTC #: pybiklib/ext/qt.py:1723 msgid "select …" msgstr "seleccionar..." # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2012-12-15 17:52:26 UTC #: pybiklib/ext/qtui.py:94 msgid "Press a key …" msgstr "Prema unha tecla…" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-07-22 06:29:33 UTC #. Add whatever keywords you want in your language, separated by semicolons, last character must be a semicolon. These keywords are used when searching for applications in Unity, GNOME Shell, etc. #: data/app-meta/pybik.desktop.in:10 msgid "rubik;cube;puzzle;magic;" msgstr "rubik;cubo;crebacabezas;máxico;" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2012-12-19 10:09:54 UTC #: data/plugins/01-challenges.plugins.py:18 #: data/plugins/01-challenges.plugins.py:21 #: data/plugins/01-challenges.plugins.py:24 #: data/plugins/01-challenges.plugins.py:27 #: data/plugins/01-challenges.plugins.py:30 #: data/plugins/01-challenges.plugins.py:33 #: data/plugins/01-challenges.plugins.py:36 #: data/plugins/01-challenges.plugins.py:39 #: data/plugins/01-challenges.plugins.py:42 #: data/plugins/01-challenges.plugins.py:45 #: data/plugins/01-challenges.plugins.py:48 msgid "Challenges" msgstr "Retos" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-07-22 06:43:21 UTC #: data/plugins/01-challenges.plugins.py:19 msgid "Solve random puzzle" msgstr "Resolver un crebacabezas o chou" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-04-16 16:07:48 UTC #: data/plugins/01-challenges.plugins.py:22 #: data/plugins/01-challenges.plugins.py:25 #: data/plugins/01-challenges.plugins.py:28 #: data/plugins/01-challenges.plugins.py:31 #: data/plugins/01-challenges.plugins.py:34 #: data/plugins/01-challenges.plugins.py:37 #: data/plugins/01-challenges.plugins.py:40 #: data/plugins/01-challenges.plugins.py:43 #: data/plugins/01-challenges.plugins.py:46 #: data/plugins/01-challenges.plugins.py:49 msgid "Solve in {} move" msgid_plural "Solve in {} moves" msgstr[0] "Resolver en {} movemento" msgstr[1] "Resolver en {} movementos" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2012-12-19 10:51:35 UTC #: data/plugins/10-beginners.plugins.py:31 #: data/plugins/10-beginners.plugins.py:34 #: data/plugins/10-beginners.plugins.py:56 #: data/plugins/10-beginners.plugins.py:73 #: data/plugins/10-beginners.plugins.py:100 #: data/plugins/10-beginners.plugins.py:118 #: data/plugins/10-beginners.plugins.py:140 #: data/plugins/10-beginners.plugins.py:158 #: data/plugins/14-leyan-lo.plugins.py:21 #: data/plugins/14-leyan-lo.plugins.py:24 #: data/plugins/14-leyan-lo.plugins.py:53 #: data/plugins/14-leyan-lo.plugins.py:74 #: data/plugins/14-leyan-lo.plugins.py:90 #: data/plugins/14-leyan-lo.plugins.py:107 #: data/plugins/14-leyan-lo.plugins.py:129 #: data/plugins/14-leyan-lo.plugins.py:170 #: data/plugins/150-spiegel.plugins.py:32 #: data/plugins/150-spiegel.plugins.py:35 #: data/plugins/150-spiegel.plugins.py:64 #: data/plugins/150-spiegel.plugins.py:85 #: data/plugins/150-spiegel.plugins.py:100 #: data/plugins/150-spiegel.plugins.py:113 #: data/plugins/150-spiegel.plugins.py:130 #: data/plugins/150-spiegel.plugins.py:141 #: data/plugins/151-spiegel-improved.plugins.py:20 #: data/plugins/151-spiegel-improved.plugins.py:23 #: data/plugins/151-spiegel-improved.plugins.py:68 #: data/plugins/151-spiegel-improved.plugins.py:107 #: data/plugins/151-spiegel-improved.plugins.py:139 #: data/plugins/151-spiegel-improved.plugins.py:165 #: data/plugins/151-spiegel-improved.plugins.py:183 #: data/plugins/151-spiegel-improved.plugins.py:197 #: data/plugins/20-2x2x2.plugins.py:18 data/plugins/20-2x2x2.plugins.py:21 #: data/plugins/20-2x2x2.plugins.py:37 data/plugins/20-2x2x2.plugins.py:55 msgid "Solvers" msgstr "Solucionadores" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-04-16 16:07:48 UTC #: data/plugins/10-beginners.plugins.py:32 #: data/plugins/10-beginners.plugins.py:35 #: data/plugins/10-beginners.plugins.py:57 #: data/plugins/10-beginners.plugins.py:74 #: data/plugins/10-beginners.plugins.py:101 #: data/plugins/10-beginners.plugins.py:119 #: data/plugins/10-beginners.plugins.py:141 #: data/plugins/10-beginners.plugins.py:159 msgid "Beginner's method" msgstr "Método para principiantes" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2012-12-17 08:42:47 UTC #: data/plugins/10-beginners.plugins.py:36 #: data/plugins/14-leyan-lo.plugins.py:26 #: data/plugins/150-spiegel.plugins.py:37 #: data/plugins/151-spiegel-improved.plugins.py:25 msgid "Top edges" msgstr "Marxes superiores" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2012-12-17 08:42:47 UTC #: data/plugins/10-beginners.plugins.py:58 #: data/plugins/14-leyan-lo.plugins.py:55 #: data/plugins/150-spiegel.plugins.py:66 #: data/plugins/151-spiegel-improved.plugins.py:70 msgid "Top corners" msgstr "Cantos superiores" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-04-16 16:19:43 UTC #: data/plugins/10-beginners.plugins.py:75 #: data/plugins/14-leyan-lo.plugins.py:76 #: data/plugins/150-spiegel.plugins.py:87 #: data/plugins/151-spiegel-improved.plugins.py:109 msgid "Middle slice" msgstr "Rebanda do medio" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2012-12-17 08:42:47 UTC #: data/plugins/10-beginners.plugins.py:102 #: data/plugins/14-leyan-lo.plugins.py:92 #: data/plugins/150-spiegel.plugins.py:115 #: data/plugins/151-spiegel-improved.plugins.py:167 msgid "Bottom edge orient" msgstr "Orientar o bordo inferior" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2012-12-17 08:42:47 UTC #: data/plugins/10-beginners.plugins.py:120 #: data/plugins/14-leyan-lo.plugins.py:131 #: data/plugins/150-spiegel.plugins.py:143 #: data/plugins/151-spiegel-improved.plugins.py:199 #: data/plugins/20-2x2x2.plugins.py:57 msgid "Bottom corner orient" msgstr "Orientar o canto inferior" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2012-12-17 08:42:47 UTC #: data/plugins/10-beginners.plugins.py:142 #: data/plugins/14-leyan-lo.plugins.py:109 #: data/plugins/150-spiegel.plugins.py:132 #: data/plugins/151-spiegel-improved.plugins.py:185 #: data/plugins/20-2x2x2.plugins.py:39 msgid "Bottom corner place" msgstr "Situar o canto inferior" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2012-12-17 08:42:47 UTC #: data/plugins/10-beginners.plugins.py:160 #: data/plugins/14-leyan-lo.plugins.py:172 #: data/plugins/150-spiegel.plugins.py:102 #: data/plugins/151-spiegel-improved.plugins.py:141 msgid "Bottom edge place" msgstr "Situar o bordo inferior" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-04-16 16:07:48 UTC #. Leyan Lo is the inventor of the solution #: data/plugins/14-leyan-lo.plugins.py:23 #: data/plugins/14-leyan-lo.plugins.py:25 #: data/plugins/14-leyan-lo.plugins.py:54 #: data/plugins/14-leyan-lo.plugins.py:75 #: data/plugins/14-leyan-lo.plugins.py:91 #: data/plugins/14-leyan-lo.plugins.py:108 #: data/plugins/14-leyan-lo.plugins.py:130 #: data/plugins/14-leyan-lo.plugins.py:171 msgid "Leyan Lo" msgstr "Leyan Lo" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2012-12-15 18:05:15 UTC #. Spiegel is a german magazine #: data/plugins/150-spiegel.plugins.py:34 #: data/plugins/150-spiegel.plugins.py:36 #: data/plugins/150-spiegel.plugins.py:65 #: data/plugins/150-spiegel.plugins.py:86 #: data/plugins/150-spiegel.plugins.py:101 #: data/plugins/150-spiegel.plugins.py:114 #: data/plugins/150-spiegel.plugins.py:131 #: data/plugins/150-spiegel.plugins.py:142 msgid "Spiegel" msgstr "Spiegel" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2012-12-15 18:06:32 UTC #. Spiegel is a german magazine #: data/plugins/151-spiegel-improved.plugins.py:22 #: data/plugins/151-spiegel-improved.plugins.py:24 #: data/plugins/151-spiegel-improved.plugins.py:69 #: data/plugins/151-spiegel-improved.plugins.py:108 #: data/plugins/151-spiegel-improved.plugins.py:140 #: data/plugins/151-spiegel-improved.plugins.py:166 #: data/plugins/151-spiegel-improved.plugins.py:184 #: data/plugins/151-spiegel-improved.plugins.py:198 msgid "Spiegel improved" msgstr "Spiegel mellorado" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2012-12-15 18:06:32 UTC #: data/plugins/20-2x2x2.plugins.py:19 data/plugins/20-2x2x2.plugins.py:22 #: data/plugins/20-2x2x2.plugins.py:38 data/plugins/20-2x2x2.plugins.py:56 msgid "2×2×2" msgstr "2×2×2" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-04-16 16:19:43 UTC #: data/plugins/20-2x2x2.plugins.py:23 msgid "Top slice" msgstr "Rebanda superior" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2012-12-15 18:07:51 UTC #: data/plugins/80-pretty-patterns.plugins.py:20 #: data/plugins/80-pretty-patterns.plugins.py:23 #: data/plugins/80-pretty-patterns.plugins.py:27 #: data/plugins/80-pretty-patterns.plugins.py:31 #: data/plugins/80-pretty-patterns.plugins.py:35 #: data/plugins/80-pretty-patterns.plugins.py:40 #: data/plugins/80-pretty-patterns.plugins.py:44 msgid "Stripes" msgstr "Raias" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2012-12-19 10:14:20 UTC #: data/plugins/80-pretty-patterns.plugins.py:49 #: data/plugins/80-pretty-patterns.plugins.py:53 msgid "Criss-Cross" msgstr "Entrelazado" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2012-12-17 08:45:28 UTC #: data/plugins/80-pretty-patterns.plugins.py:57 msgid "Fried Eggs" msgstr "Ovos fritidos" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2012-12-17 08:45:28 UTC #: data/plugins/80-pretty-patterns.plugins.py:61 msgid "Big Fried Eggs" msgstr "Ovos fritidos grandes" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2012-12-17 08:45:28 UTC #: data/plugins/80-pretty-patterns.plugins.py:65 #: data/plugins/80-pretty-patterns.plugins.py:69 msgid "4 Fried Eggs" msgstr "4 ovos fritidos" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-04-16 10:51:47 UTC #: data/plugins/80-pretty-patterns.plugins.py:73 msgid "2 Fried Eggs" msgstr "2 ovos fritidos" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2012-12-15 18:07:51 UTC #: data/plugins/80-pretty-patterns.plugins.py:77 msgid "Chessboard" msgstr "Taboleiro de xadrez" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2012-12-15 18:07:51 UTC #: data/plugins/80-pretty-patterns.plugins.py:83 msgid "Cross" msgstr "Cruzamento" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2012-12-17 08:45:28 UTC #: data/plugins/80-pretty-patterns.plugins.py:87 msgid "Zig Zag" msgstr "Zigzag" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-07-22 06:33:42 UTC #. T is the shape formed by the cube labels. T-Time is a pun (Tea Time) and not suitable for literal translation. Don't translate it or use something common or whatever you think makes sense. #: data/plugins/80-pretty-patterns.plugins.py:93 #: data/plugins/80-pretty-patterns.plugins.py:96 #: data/plugins/80-pretty-patterns.plugins.py:100 #: data/plugins/80-pretty-patterns.plugins.py:104 #: data/plugins/80-pretty-patterns.plugins.py:108 #: data/plugins/80-pretty-patterns.plugins.py:112 msgid "T-Time" msgstr "Cruzamento en T" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2012-12-19 10:11:57 UTC #. C is the shape formed by the cube labels #: data/plugins/80-pretty-patterns.plugins.py:118 msgid "C" msgstr "C" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2012-12-17 08:46:14 UTC #: data/plugins/80-pretty-patterns.plugins.py:121 msgid "Cube in a Cube" msgstr "Cubo nun cubo" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2012-12-19 11:07:42 UTC #: data/plugins/80-pretty-patterns.plugins.py:125 msgid "Striped Cube in a Cube" msgstr "Cubo a raias nun cubo" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-04-16 10:51:47 UTC #: data/plugins/80-pretty-patterns.plugins.py:129 msgid "Six square cuboids" msgstr "Seis paralelepípedos cadrados" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2012-12-19 11:04:43 UTC #. Superflip may be not translated, because it has a special meaning in the mathematical theory behind the Rubik's Cube. #: data/plugins/80-pretty-patterns.plugins.py:135 msgid "Superflip" msgstr "Superflip" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2012-12-19 11:04:43 UTC #: data/plugins/80-pretty-patterns.plugins.py:138 msgid "Superflip easy" msgstr "Superflip doado" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2012-12-15 18:13:59 UTC #: data/plugins/80-pretty-patterns.plugins.py:142 msgid "Green Mamba" msgstr "Mamba verde" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2012-12-15 18:13:59 UTC #: data/plugins/80-pretty-patterns.plugins.py:146 msgid "Anaconda" msgstr "Anaconda" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2012-12-15 18:13:59 UTC #: data/plugins/80-pretty-patterns.plugins.py:150 msgid "Duck Feet" msgstr "Pé de pato" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-04-16 10:51:47 UTC #: data/plugins/80-pretty-patterns.plugins.py:154 #: data/plugins/80-pretty-patterns.plugins.py:158 #: data/plugins/80-pretty-patterns.plugins.py:162 #: data/plugins/80-pretty-patterns.plugins.py:166 #: data/plugins/80-pretty-patterns.plugins.py:170 #: data/plugins/80-pretty-patterns.plugins.py:174 #: data/plugins/80-pretty-patterns.plugins.py:178 #: data/plugins/80-pretty-patterns.plugins.py:182 msgid "Plus" msgstr "Máis" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-04-16 10:51:47 UTC #: data/plugins/80-pretty-patterns.plugins.py:186 #: data/plugins/80-pretty-patterns.plugins.py:191 #: data/plugins/80-pretty-patterns.plugins.py:196 #: data/plugins/80-pretty-patterns.plugins.py:200 msgid "Minus" msgstr "Menos" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-04-16 10:51:47 UTC #: data/plugins/80-pretty-patterns.plugins.py:204 msgid "Volcano" msgstr "Volcán" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-04-16 16:07:48 UTC #: data/plugins/80-pretty-patterns.plugins.py:208 msgid "Checkerboard (easy)" msgstr "Taboleiro de xadrex (doado)" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-04-16 16:07:48 UTC #: data/plugins/80-pretty-patterns.plugins.py:212 msgid "Checkerboard (fast)" msgstr "Taboleiro de xadrex (rápido)" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-04-16 16:07:48 UTC #: data/plugins/80-pretty-patterns.plugins.py:216 msgid "Mixed Checkerboard" msgstr "Taboleiro de xadrex mixto" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-04-16 16:07:48 UTC #: data/plugins/80-pretty-patterns.plugins.py:220 msgid "Tipi" msgstr "Tipi" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2012-12-15 18:14:46 UTC #: data/plugins/90-library.plugins.py:18 data/plugins/90-library.plugins.py:22 #: data/plugins/90-library.plugins.py:26 data/plugins/90-library.plugins.py:30 #: data/plugins/90-library.plugins.py:34 data/plugins/90-library.plugins.py:38 #: data/plugins/90-library.plugins.py:42 data/plugins/90-library.plugins.py:46 #: data/plugins/90-library.plugins.py:50 data/plugins/90-library.plugins.py:54 #: data/plugins/90-library.plugins.py:58 data/plugins/90-library.plugins.py:62 #: data/plugins/90-library.plugins.py:66 data/plugins/90-library.plugins.py:70 #: data/plugins/90-library.plugins.py:74 data/plugins/90-library.plugins.py:78 #: data/plugins/90-library.plugins.py:82 data/plugins/90-library.plugins.py:86 #: data/plugins/90-library.plugins.py:91 data/plugins/90-library.plugins.py:96 #: data/plugins/90-library.plugins.py:101 #: data/plugins/90-library.plugins.py:105 #: data/plugins/90-library.plugins.py:110 #: data/plugins/90-library.plugins.py:115 #: data/plugins/90-library.plugins.py:119 #: data/plugins/90-library.plugins.py:123 #: data/plugins/90-library.plugins.py:127 msgid "Library" msgstr "Biblioteca" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-04-16 16:01:39 UTC #: data/plugins/90-library.plugins.py:19 data/plugins/90-library.plugins.py:23 #: data/plugins/90-library.plugins.py:27 data/plugins/90-library.plugins.py:31 #: data/plugins/90-library.plugins.py:35 msgid "Swap edges" msgstr "Intercambiar os bordos" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-04-16 16:01:39 UTC #: data/plugins/90-library.plugins.py:20 msgid "3 edges ⟳, top layer" msgstr "3 bordos ⟳, capa superior" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-04-16 16:01:39 UTC #: data/plugins/90-library.plugins.py:24 msgid "3 edges ⟲, top layer" msgstr "3 bordos ⟲, capa superior" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-04-16 16:01:39 UTC #: data/plugins/90-library.plugins.py:28 msgid "3 edges, middle layer" msgstr "3 bordos, capa media" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-04-18 14:25:19 UTC #: data/plugins/90-library.plugins.py:32 msgid "4 edges, front and right" msgstr "4 bordos, adiante e dereita" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-04-18 14:25:19 UTC #: data/plugins/90-library.plugins.py:36 msgid "4 edges, front and back" msgstr "4 bordos, adiante e atrás" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-04-16 16:01:39 UTC #: data/plugins/90-library.plugins.py:39 msgid "Swap 2 edges and 2 corners, top layer" msgstr "Intercambiar 2 bordos e 2 cantos, capa superior" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-04-16 16:03:13 UTC #: data/plugins/90-library.plugins.py:43 data/plugins/90-library.plugins.py:47 msgid "Flip edges" msgstr "Inverter bordos" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-04-16 16:01:39 UTC #: data/plugins/90-library.plugins.py:44 msgid "4 edges" msgstr "4 bordos" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-04-16 16:01:39 UTC #: data/plugins/90-library.plugins.py:48 msgid "2 edges, top layer" msgstr "2 bordos, capa superior" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-04-16 15:58:34 UTC #: data/plugins/90-library.plugins.py:51 data/plugins/90-library.plugins.py:55 #: data/plugins/90-library.plugins.py:59 data/plugins/90-library.plugins.py:63 #: data/plugins/90-library.plugins.py:67 data/plugins/90-library.plugins.py:71 msgid "Swap corners" msgstr "Intercambiar os cantos" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-04-16 15:58:34 UTC #: data/plugins/90-library.plugins.py:52 data/plugins/90-library.plugins.py:76 msgid "2 corners, top layer" msgstr "2 cantos, capa superior" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-04-16 15:58:34 UTC #: data/plugins/90-library.plugins.py:56 msgid "2 corners diagonal, top layer" msgstr "2 cantos en diagonal, capa superior" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-04-16 15:58:34 UTC #: data/plugins/90-library.plugins.py:60 data/plugins/90-library.plugins.py:80 msgid "3 corners ⟳, top layer" msgstr "3 cantos ⟳, capa superior" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-04-16 15:58:34 UTC #: data/plugins/90-library.plugins.py:64 msgid "3 corners ⟲, top layer" msgstr "3 cantos ⟲, capa superior" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-04-16 15:58:34 UTC #: data/plugins/90-library.plugins.py:68 msgid "4 corners, top layer" msgstr "4 cantos, capa superior" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-04-16 15:58:34 UTC #: data/plugins/90-library.plugins.py:72 msgid "2 corners, partial sequence, top layer" msgstr "2 cantos, secuencia parcial, capa superior" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-04-16 15:58:34 UTC #: data/plugins/90-library.plugins.py:75 data/plugins/90-library.plugins.py:79 #: data/plugins/90-library.plugins.py:83 data/plugins/90-library.plugins.py:87 msgid "Rotate corners" msgstr "Rotar os cantos" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-04-16 15:58:34 UTC #: data/plugins/90-library.plugins.py:84 msgid "1 corner ⟳, partial sequence, top layer" msgstr "1 canto ⟳, secuencia parcial, capa superior" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-04-16 15:58:34 UTC #: data/plugins/90-library.plugins.py:88 msgid "1 corner ⟲, partial sequence, top layer" msgstr "1 canto ⟲, secuencia parcial, capa superior" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-04-16 15:51:07 UTC #: data/plugins/90-library.plugins.py:92 data/plugins/90-library.plugins.py:97 #: data/plugins/90-library.plugins.py:102 #: data/plugins/90-library.plugins.py:111 msgid "Rotate center" msgstr "Rotar o centro" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2012-12-19 10:11:57 UTC #. 2 rotations of the center face in the upper layer #: data/plugins/90-library.plugins.py:94 msgid "2×Up" msgstr "2×arriba" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-04-18 14:25:19 UTC #. Up clockwise and front clockwise #: data/plugins/90-library.plugins.py:99 msgid "Up ⟳ and front ⟳" msgstr "Arriba ⟳ e adiante ⟳" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-04-18 14:25:19 UTC #. Up clockwise and front counterclockwise #: data/plugins/90-library.plugins.py:104 msgid "Up ⟳ and front ⟲" msgstr "Arriba ⟳ e adiante ⟲" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-04-18 14:25:19 UTC #: data/plugins/90-library.plugins.py:106 msgid "Swap center parts, up and front" msgstr "Intercambiar as partes centrais, arriba e adiante" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-04-16 15:51:07 UTC #. Up clockwise and down counterclockwise #: data/plugins/90-library.plugins.py:113 msgid "Up ⟳ and down ⟲" msgstr "Arriba ⟳ e abaixo ⟲" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2012-12-15 18:15:15 UTC #: data/plugins/90-library.plugins.py:116 #: data/plugins/90-library.plugins.py:120 #: data/plugins/90-library.plugins.py:124 #: data/plugins/90-library.plugins.py:128 msgid "Misc" msgstr "Miscelánea" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-04-18 15:52:53 UTC #. Yields in a rotated back layer, but the sequence of moves does not touch the back layer #: data/plugins/90-library.plugins.py:118 #: data/plugins/90-library.plugins.py:125 #: data/plugins/90-library.plugins.py:129 msgid "Back without back" msgstr "Volver sen traseira" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-04-18 15:52:53 UTC #: data/plugins/90-library.plugins.py:121 msgid "2×Back without back" msgstr "2xVolver sen traseira" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-04-18 15:36:33 UTC #: data/plugins/95-transformations.plugins.py:18 #: data/plugins/95-transformations.plugins.py:21 #: data/plugins/95-transformations.plugins.py:24 msgid "Move transformations" msgstr "Transformacións do movemento" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-04-16 15:51:07 UTC #: data/plugins/95-transformations.plugins.py:19 msgid "Invert move sequence" msgstr "Inverter a secuencia do movemento" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-04-16 15:51:07 UTC #: data/plugins/95-transformations.plugins.py:22 msgid "Normalize cube rotations" msgstr "Normalizar as rotacións do cubo" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-04-16 15:54:39 UTC #: data/plugins/95-transformations.plugins.py:25 msgid "Normalize move sequence" msgstr "Normalizar a secuencia de movementos" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2012-12-17 08:20:39 UTC #: buildlib/modeldef.py:110 msgid "Brick" msgstr "Ladrillo" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2012-12-17 08:20:39 UTC #: buildlib/modeldef.py:111 #, python-brace-format msgid "{0}×{1}×{2}-Brick" msgstr "{0}×{1}×{2}-ladrillo" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2012-12-15 17:54:14 UTC #: buildlib/modeldef.py:112 msgid "Width:" msgstr "Largo:" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2012-12-15 18:01:11 UTC #: buildlib/modeldef.py:112 buildlib/modeldef.py:151 buildlib/modeldef.py:249 #: buildlib/modeldef.py:300 buildlib/modeldef.py:311 msgid "Height:" msgstr "Alto:" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2012-12-15 18:01:11 UTC #: buildlib/modeldef.py:112 msgid "Depth:" msgstr "Profundidade:" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2017-10-07 09:01:06 UTC #: buildlib/modeldef.py:120 buildlib/modeldef.py:257 buildlib/modeldef.py:319 #: buildlib/modeldef.py:374 buildlib/modeldef.py:433 msgid "up" msgstr "arriba" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2017-10-07 09:01:06 UTC #: buildlib/modeldef.py:120 buildlib/modeldef.py:205 buildlib/modeldef.py:257 #: buildlib/modeldef.py:319 buildlib/modeldef.py:373 buildlib/modeldef.py:430 msgid "down" msgstr "abaixo" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2017-10-07 09:01:06 UTC #: buildlib/modeldef.py:120 buildlib/modeldef.py:205 buildlib/modeldef.py:257 msgid "left" msgstr "esquerda" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2012-12-15 17:54:14 UTC #: buildlib/modeldef.py:120 buildlib/modeldef.py:205 buildlib/modeldef.py:257 msgid "right" msgstr "dereita" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2012-12-15 17:54:14 UTC #: buildlib/modeldef.py:120 buildlib/modeldef.py:374 msgid "front" msgstr "fronte" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-03-28 22:59:12 UTC #: buildlib/modeldef.py:120 buildlib/modeldef.py:205 buildlib/modeldef.py:257 #: buildlib/modeldef.py:320 buildlib/modeldef.py:373 msgid "back" msgstr "atrás" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2012-12-15 17:54:58 UTC #: buildlib/modeldef.py:149 msgid "Tower" msgstr "Torre" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2012-12-17 08:20:39 UTC #: buildlib/modeldef.py:150 #, python-brace-format msgid "{0}×{1}-Tower" msgstr "{0}×{1}-torre" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2012-12-15 17:54:14 UTC #: buildlib/modeldef.py:151 buildlib/modeldef.py:249 buildlib/modeldef.py:300 #: buildlib/modeldef.py:311 msgid "Basis:" msgstr "Base:" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2012-12-15 17:54:58 UTC #: buildlib/modeldef.py:163 msgid "Cube" msgstr "Cubo" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2012-12-15 17:54:58 UTC #: buildlib/modeldef.py:164 #, python-brace-format msgid "{0}×{0}×{0}-Cube" msgstr "{0}×{0}×{0}-Cubo" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2012-12-15 17:54:14 UTC #: buildlib/modeldef.py:165 buildlib/modeldef.py:197 buildlib/modeldef.py:365 #: buildlib/modeldef.py:422 msgid "Size:" msgstr "Tamaño:" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-07-22 06:39:52 UTC #: buildlib/modeldef.py:177 buildlib/modeldef.py:178 msgid "Void Cube" msgstr "Cubo baleiro" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-04-16 10:53:25 UTC #: buildlib/modeldef.py:195 msgid "Tetrahedron" msgstr "Tetraedro" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-04-16 10:53:25 UTC #: buildlib/modeldef.py:196 #, python-brace-format msgid "{0}-Tetrahedron" msgstr "{0}-Tetraedro" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-07-22 06:13:21 UTC #: buildlib/modeldef.py:247 msgid "Triangular Prism" msgstr "Prisma triangular" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-07-22 06:39:52 UTC #: buildlib/modeldef.py:248 #, python-brace-format msgid "{0}×{1} Triangular Prism" msgstr "{0}×{1} prisma triangular" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-07-22 06:13:21 UTC #: buildlib/modeldef.py:298 msgid "Triangular Prism (complex)" msgstr "Prisma triangular (complexo)" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-07-22 06:41:56 UTC #: buildlib/modeldef.py:299 #, python-brace-format msgid "{0}×{1} Triangular Prism (complex)" msgstr "{0}×{1} prisma triangular (complexo)" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-07-22 06:13:21 UTC #: buildlib/modeldef.py:309 msgid "Pentagonal Prism" msgstr "Prisma pentagonal" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-07-22 06:41:56 UTC #: buildlib/modeldef.py:310 #, python-brace-format msgid "{0}×{1} Pentagonal Prism" msgstr "{0}×{1} prisma pentagonal" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-07-22 06:41:56 UTC #: buildlib/modeldef.py:320 buildlib/modeldef.py:373 msgid "front-right" msgstr "fronte-dereita" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2017-10-07 09:04:14 UTC #: buildlib/modeldef.py:320 buildlib/modeldef.py:374 msgid "back-right" msgstr "atrás-dereita" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2017-10-07 09:01:06 UTC #: buildlib/modeldef.py:320 buildlib/modeldef.py:374 msgid "back-left" msgstr "atrás-esquerda" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-07-22 06:41:56 UTC #: buildlib/modeldef.py:320 buildlib/modeldef.py:373 msgid "front-left" msgstr "fronte-esquerda" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-07-22 06:41:56 UTC #: buildlib/modeldef.py:354 msgid "Pentagonal Prism (stretched)" msgstr "Prisma pentagonal (estirado)" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-07-22 06:41:56 UTC #: buildlib/modeldef.py:355 #, python-brace-format msgid "{0}×{1} Pentagonal Prism (stretched)" msgstr "{0}×{1} prisma pentagonal (estirado)" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-04-16 10:53:25 UTC #: buildlib/modeldef.py:363 msgid "Octahedron" msgstr "Octaedro" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-04-16 10:53:25 UTC #: buildlib/modeldef.py:364 #, python-brace-format msgid "{0}-Octahedron" msgstr "{0}-Octaedro" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-04-16 10:53:25 UTC #: buildlib/modeldef.py:420 msgid "Dodecahedron" msgstr "Dodecaedro" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-04-16 10:53:25 UTC #: buildlib/modeldef.py:421 #, python-brace-format msgid "{0}-Dodecahedron" msgstr "{0}-Dodecaedro" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2017-10-07 09:03:57 UTC #: buildlib/modeldef.py:430 msgid "down-back-right" msgstr "abaixo-atrás-dereita" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2017-10-07 09:02:40 UTC #: buildlib/modeldef.py:430 msgid "down-front-right" msgstr "abaixo-fronte-dereita" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2017-10-07 09:02:40 UTC #: buildlib/modeldef.py:431 msgid "down-front" msgstr "abaixo-fronte" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2017-10-07 09:02:40 UTC #: buildlib/modeldef.py:431 msgid "down-front-left" msgstr "abaixo-fronte-esquerda" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2017-10-07 09:02:40 UTC #: buildlib/modeldef.py:431 msgid "down-back-left" msgstr "abaixo-atrás-esquerda" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2017-10-07 09:02:40 UTC #: buildlib/modeldef.py:432 msgid "up-back" msgstr "arriba-atrás" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2017-10-07 09:03:57 UTC #: buildlib/modeldef.py:432 msgid "up-back-right" msgstr "arriba-atrás-dereita" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-07-22 06:41:56 UTC #: buildlib/modeldef.py:432 msgid "up-front-right" msgstr "arriba-fronte-dereita" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2015-07-22 06:41:56 UTC #: buildlib/modeldef.py:433 msgid "up-front-left" msgstr "arriba-fronte-esquerda" # translated by: Miguel Anxo Bouzada https://launchpad.net/~mbouzada on 2017-10-07 09:03:57 UTC #: buildlib/modeldef.py:433 msgid "up-back-left" msgstr "arriba-atrás-esquerda" pybik-3.0/po/pl.po0000664000175000017500000012363713173052130014242 0ustar barccbarcc00000000000000# Polish translation for pybik # Copyright (c) 2013-2017 Rosetta Contributors and Canonical Ltd 2013 # This file is distributed under the same license as the pybik package. # FIRST AUTHOR , 2013. # msgid "" msgstr "" "Project-Id-Version: pybik\n" "Report-Msgid-Bugs-To: https://bugs.launchpad.net/pybik/+filebug\n" "POT-Creation-Date: 2017-09-10 21:58+0200\n" "PO-Revision-Date: 2017-09-17 05:54+0000\n" "Last-Translator: B. Clausius \n" "Language-Team: Polish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " "|| n%100>=20) ? 1 : 2;\n" "X-Launchpad-Export-Date: 2017-09-18 05:31+0000\n" "X-Generator: Launchpad (build 18449)\n" "Language: pl\n" # translated by: Szymon Nieznański https://launchpad.net/~isamu715 on 2013-06-02 10:46:06 UTC #: pybiklib/application.py:294 msgid "Press the Esc key to exit Edit Mode" msgstr "Wciśnij Esc by opuścić tryb edycji" # translated by: Szymon Nieznański https://launchpad.net/~isamu715 on 2013-06-02 10:46:06 UTC # reviewed by: Szymon Nieznański https://launchpad.net/~isamu715 on 2013-06-09 15:22:54 UTC #. substitution for {move_text} in statusbar text #: pybiklib/application.py:302 #, python-brace-format msgid "{current} / {total} move" msgid_plural "{current} / {total} moves" msgstr[0] "{current} / {total} ruch" msgstr[1] "{current} / {total} ruchy" msgstr[2] "{current} / {total} ruchów" # translated by: Szymon Nieznański https://launchpad.net/~isamu715 on 2013-06-02 10:46:06 UTC #. substitution for {solved_text} in statusbar text #: pybiklib/application.py:306 msgid "solved" msgstr "rozwiązane" # translated by: Szymon Nieznański https://launchpad.net/~isamu715 on 2013-06-02 10:46:06 UTC #: pybiklib/application.py:306 msgid "not solved" msgstr "nierozwiązane" # translated by: Szymon Nieznański https://launchpad.net/~isamu715 on 2013-06-02 10:46:06 UTC #. statusbar text #: pybiklib/application.py:309 #, python-brace-format msgid "{move_text}, {solved_text}" msgstr "{move_text}, {solved_text}" # translated by: Szymon Nieznański https://launchpad.net/~isamu715 on 2013-06-02 10:46:06 UTC #: pybiklib/application.py:314 msgid "Congratulations, you have solved the puzzle!" msgstr "Gratulacje, łamigłówka rozwiązana!" # translated by: Szymon Nieznański https://launchpad.net/~isamu715 on 2013-06-02 10:46:06 UTC #. Name of the application, probably should not be translated. #: pybiklib/config.py:35 data/ui/qt/main.ui.h:271 #: data/app-meta/pybik.desktop.in:3 msgid "Pybik" msgstr "Pybik" #. short description #: pybiklib/config.py:65 data/app-meta/pybik.desktop.in:4 msgid "Rubik's cube game" msgstr "" #. The next 7 lines belong together and form the long description #: pybiklib/config.py:68 msgid "Pybik is a 3D puzzle game about the cube invented by Ernő Rubik." msgstr "" #: pybiklib/config.py:70 msgid "" "Various 3D puzzles, such as cubes, towers, prisms, tetrahedra, octahedra, " "dodecahedra and many more" msgstr "" #: pybiklib/config.py:71 msgid "Solvers for some puzzles" msgstr "" #. Use something that is common in the Rubik scene in your language, sometimes it's just the equivalent of "patterns". #: pybiklib/config.py:72 data/plugins/80-pretty-patterns.plugins.py:19 #: data/plugins/80-pretty-patterns.plugins.py:22 #: data/plugins/80-pretty-patterns.plugins.py:26 #: data/plugins/80-pretty-patterns.plugins.py:30 #: data/plugins/80-pretty-patterns.plugins.py:34 #: data/plugins/80-pretty-patterns.plugins.py:39 #: data/plugins/80-pretty-patterns.plugins.py:43 #: data/plugins/80-pretty-patterns.plugins.py:48 #: data/plugins/80-pretty-patterns.plugins.py:52 #: data/plugins/80-pretty-patterns.plugins.py:56 #: data/plugins/80-pretty-patterns.plugins.py:60 #: data/plugins/80-pretty-patterns.plugins.py:64 #: data/plugins/80-pretty-patterns.plugins.py:68 #: data/plugins/80-pretty-patterns.plugins.py:72 #: data/plugins/80-pretty-patterns.plugins.py:76 #: data/plugins/80-pretty-patterns.plugins.py:82 #: data/plugins/80-pretty-patterns.plugins.py:86 #: data/plugins/80-pretty-patterns.plugins.py:91 #: data/plugins/80-pretty-patterns.plugins.py:95 #: data/plugins/80-pretty-patterns.plugins.py:99 #: data/plugins/80-pretty-patterns.plugins.py:103 #: data/plugins/80-pretty-patterns.plugins.py:107 #: data/plugins/80-pretty-patterns.plugins.py:111 #: data/plugins/80-pretty-patterns.plugins.py:116 #: data/plugins/80-pretty-patterns.plugins.py:120 #: data/plugins/80-pretty-patterns.plugins.py:124 #: data/plugins/80-pretty-patterns.plugins.py:128 #: data/plugins/80-pretty-patterns.plugins.py:133 #: data/plugins/80-pretty-patterns.plugins.py:137 #: data/plugins/80-pretty-patterns.plugins.py:141 #: data/plugins/80-pretty-patterns.plugins.py:145 #: data/plugins/80-pretty-patterns.plugins.py:149 #: data/plugins/80-pretty-patterns.plugins.py:153 #: data/plugins/80-pretty-patterns.plugins.py:157 #: data/plugins/80-pretty-patterns.plugins.py:161 #: data/plugins/80-pretty-patterns.plugins.py:165 #: data/plugins/80-pretty-patterns.plugins.py:169 #: data/plugins/80-pretty-patterns.plugins.py:173 #: data/plugins/80-pretty-patterns.plugins.py:177 #: data/plugins/80-pretty-patterns.plugins.py:181 #: data/plugins/80-pretty-patterns.plugins.py:185 #: data/plugins/80-pretty-patterns.plugins.py:190 #: data/plugins/80-pretty-patterns.plugins.py:195 #: data/plugins/80-pretty-patterns.plugins.py:199 #: data/plugins/80-pretty-patterns.plugins.py:203 #: data/plugins/80-pretty-patterns.plugins.py:207 #: data/plugins/80-pretty-patterns.plugins.py:211 #: data/plugins/80-pretty-patterns.plugins.py:215 #: data/plugins/80-pretty-patterns.plugins.py:219 msgid "Pretty patterns" msgstr "" #: pybiklib/config.py:73 msgid "Editor for move sequences" msgstr "" #: pybiklib/config.py:74 msgid "Custom colors and images on the surface of the puzzles" msgstr "" # translated by: Michał Rzepiński https://launchpad.net/~micou8 on 2013-06-27 12:09:01 UTC #: pybiklib/config.py:78 msgid "" "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.\n" "\n" "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." msgstr "" "Ten program jest wolnym oprogramowaniem: możesz go redystrybuować i/lub " "modyfikować zgodnie z warunkami GNU General Public License opublikowanej " "przez Free Software Foundation (Fundacja Wolnego Oprogramowania), w wersji 3 " "lub (wedle Twojego uznania) każdej poprzedniej wersji.\n" "\n" "Ten program jest dystrybuowany w nadziei, iż będzie użyteczny, lecz NIE " "POSIADA ŻADNEJ GWARANCJI; nie posiada \"dorozumianej gwarancji przydatności " "do sprzedaży\" (IMPLIED WARRANTY OF MERCHANTABILITY) ani \"dorozumianej " "gwarancji przydatności do określonego celu\" (IMPLIED WARRANTY OF FITNESS " "FOR A PARTICULAR PURPOSE). By poznać szczegóły, zajrzyj do dokumentacji GNU " "General Public License." # translated by: Szymon Nieznański https://launchpad.net/~isamu715 on 2013-06-15 11:09:15 UTC #. Text between "<" and ">" is expanded to a link by the program and should not be modified. #. Text between "" and "<|>" is the translatable text for the link. #: pybiklib/config.py:90 msgid "" "Read the full text of the GNU General Public " "License<|> or see ." msgstr "" "Przeczytaj pełny tekst Powszechnej licencji " "publicznej GNU<|> lub zobacz ." # translated by: Szymon Nieznański https://launchpad.net/~isamu715 on 2013-06-02 11:24:56 UTC #: pybiklib/config.py:93 msgid "" "You should have received a copy of the GNU General Public License along with " "this program. If not, see ." msgstr "" "Wraz z niniejszym programem dostarczono egzemplarz Powszechnej Licencji " "Publicznej GNU (GNU General Public License); jeśli nie - odwiedź stronę " "." # translated by: Szymon Nieznański https://launchpad.net/~isamu715 on 2013-06-09 15:22:54 UTC #: pybiklib/config.py:98 #, python-brace-format msgid "" "If you find any bugs in Pybik or have a suggestion for an improvement then " "please submit a <{CONTACT_FILEBUG}|>bug report<|>." msgstr "" "Jeśli znajdziesz jakiekolwiek błędy w programie Pybik lub masz sugestie " "dotyczące jego usprawnienia zgłoś <{CONTACT_FILEBUG}|>raport o błędach<|>." # translated by: Michał Rzepiński https://launchpad.net/~micou8 on 2013-06-27 11:52:24 UTC #: pybiklib/config.py:103 msgid "" "Translations are managed by the " "Launchpad " "translation group<|>.\n" "\n" "If you want help to translate Pybik to your language you can do it through " "the web interface<|>.\n" "\n" "Read more about \"Translating with " "Launchpad\"<|> and " "\"Starting to " "translate\"<|>." msgstr "" "Tłumaczenia są zarządzane przez: " "Launchpad " "translation group<|>.\n" "\n" "Jeśli chcesz pomóc przetłumaczyć Pybik na Twój język, możesz to zrobić " "poprzez interfejs sieciowy<|>.\n" "\n" "Przeczytaj więcej o \"Translating " "with Launchpad\" (Tłumaczenie z Launchpadem)<|> oraz " "\"Starting to " "translate\" (Zaczynanie tłumaczenia)<|>." #: pybiklib/dialogs.py:44 msgid "Lighting" msgstr "Oświetlenie" #: pybiklib/dialogs.py:44 msgid "Simple" msgstr "" #. labels are the colored stickers on the cube #: pybiklib/dialogs.py:46 msgid "Labels" msgstr "" #: pybiklib/dialogs.py:104 data/ui/qt/main.ui.h:275 msgid "Select Puzzle" msgstr "" #. 1 slice, 2 slices, 3 slices, ... #: pybiklib/dialogs.py:134 pybiklib/dialogs.py:154 pybiklib/dialogs.py:180 #: pybiklib/dialogs.py:201 msgid "{} slice" msgid_plural "{} slices" msgstr[0] "" msgstr[1] "" #: pybiklib/dialogs.py:196 pybiklib/dialogs.py:225 msgid "{}×{} slices" msgstr "" #. The next strings form the text in the help dialog: #. Title of the 1st paragraph #: pybiklib/dialogs.py:290 msgid "Using the mouse to rotate the cube" msgstr "" #. Text of the 1st paragraph, followed by bullet list items #: pybiklib/dialogs.py:292 msgid "" "Position the mouse cursor over the puzzle and you will see an arrow that " "gives you a hint in which direction the slice under the mouse cursor will be " "rotated." msgstr "" #: pybiklib/dialogs.py:294 msgid "" "The left mouse button rotates a single slice of the cube in the direction of " "the arrow." msgstr "" #: pybiklib/dialogs.py:295 msgid "" "The right mouse button rotates a single slice of the cube against the " "direction of the arrow." msgstr "" #: pybiklib/dialogs.py:296 msgid "" "To rotate the whole cube instead of a single slice press the Ctrl key " "together with the mouse button." msgstr "" #. Title of the 2nd paragraph #: pybiklib/dialogs.py:298 msgid "Using the keyboard to rotate the cube" msgstr "" #. Text of the 2nd paragraph, followed by bullet list items #: pybiklib/dialogs.py:300 msgid "" "Make sure the keyboard focus is on the cube area (e.g. click on the " "background of the cube). The keys can be configured in the preferences " "dialog, the default is:" msgstr "" #. before the item text is a list of keys #: pybiklib/dialogs.py:303 pybiklib/dialogs.py:318 msgid "Moves the left, right, upper, down, front or back slice clockwise." msgstr "" #: pybiklib/dialogs.py:304 pybiklib/dialogs.py:319 msgid "Moves a slice couterclockwise." msgstr "" #: pybiklib/dialogs.py:305 pybiklib/dialogs.py:320 msgid "Moves the whole cube." msgstr "" #. Title of the 3rd paragraph #: pybiklib/dialogs.py:307 msgid "Other keys and buttons" msgstr "" #. bullet list items of the 3rd paragraph #: pybiklib/dialogs.py:309 msgid "Mouse wheel – Zoom in/out" msgstr "" #: pybiklib/dialogs.py:310 msgid "" "Arrow keys, Left mouse button on the background – Changes the direction of " "looking at the cube." msgstr "" #: pybiklib/dialogs.py:311 msgid "" "Moves keyboard focus to the sequence editor above the cube area where you " "can edit the move sequence in the notation described below. Hit enter when " "done." msgstr "" #. Title of the 4th paragraph #: pybiklib/dialogs.py:315 msgid "Notation for moves" msgstr "" #. Text of the 4th paragraph, followed by bullet list items #: pybiklib/dialogs.py:317 msgid "" "All moves, however they are made, are displayed progressively above the cube " "area:" msgstr "" #: pybiklib/dialogs.py:321 msgid "" "Moves the first, second or third slice from left clockwise. The allowed " "numbers are in the range from 1 to the count of parallel slices. \"l1\" is " "always the same as \"l\" and for the classic 3×3×3-Cube \"l2\" is the same " "as \"r2-\" and \"l3\" is the same as \"r-\"." msgstr "" #: pybiklib/dialogs.py:325 msgid "You can use a space to separate groups of moves." msgstr "" # translated by: Szymon Nieznański https://launchpad.net/~isamu715 on 2013-06-09 15:22:54 UTC #: pybiklib/dialogs.py:379 msgid "Pybik project website" msgstr "Strona projektu Pybik" #: pybiklib/pluginlib.py:301 msgid "This plugin does not work for any model." msgstr "" #: pybiklib/pluginlib.py:303 pybiklib/pluginlib.py:306 msgid "This plugin only works for:" msgstr "" #: pybiklib/pluginlib.py:498 msgid "This puzzle is not solvable." msgstr "" # translated by: Szymon Nieznański https://launchpad.net/~isamu715 on 2013-06-02 11:33:57 UTC #. The following 6 words are for the antialiasing levels: disabled, ugly, low, medium, high, higher #: pybiklib/schema.py:211 msgid "disabled" msgstr "wyłączony" # translated by: Szymon Nieznański https://launchpad.net/~isamu715 on 2013-06-02 11:33:57 UTC #: pybiklib/schema.py:211 msgid "ugly" msgstr "brzydki" # translated by: Szymon Nieznański https://launchpad.net/~isamu715 on 2013-06-02 11:36:16 UTC #: pybiklib/schema.py:211 msgid "low" msgstr "niski" # translated by: Szymon Nieznański https://launchpad.net/~isamu715 on 2013-06-02 11:36:16 UTC #: pybiklib/schema.py:212 msgid "medium" msgstr "średni" # translated by: Szymon Nieznański https://launchpad.net/~isamu715 on 2013-06-02 11:36:16 UTC #: pybiklib/schema.py:212 msgid "high" msgstr "wysoki" # translated by: Szymon Nieznański https://launchpad.net/~isamu715 on 2013-06-02 11:36:16 UTC #: pybiklib/schema.py:212 msgid "higher" msgstr "wyższy" #: data/ui/qt/about.ui.h:212 msgid "About Pybik" msgstr "O programie Pybik" #: data/ui/qt/about.ui.h:213 msgid "Translators:" msgstr "Tłumacze:" #: data/ui/qt/about.ui.h:214 msgid "About" msgstr "O programie" #: data/ui/qt/about.ui.h:215 msgid "Contribute" msgstr "" #: data/ui/qt/about.ui.h:216 msgid "License" msgstr "Licencja" #: data/ui/qt/help.ui.h:53 data/ui/qt/main.ui.h:297 msgid "Help" msgstr "" # translated by: Szymon Nieznański https://launchpad.net/~isamu715 on 2013-06-09 15:52:05 UTC #: data/ui/qt/main.ui.h:272 msgid "&New Challenge" msgstr "" #: data/ui/qt/main.ui.h:273 msgid "Ne&w Solved" msgstr "No&wa rozwiązana" #: data/ui/qt/main.ui.h:274 msgid "&Quit" msgstr "&Wyjdź" #: data/ui/qt/main.ui.h:276 msgid "&Set as Initial State" msgstr "&Ustaw jako stan początkowy" #: data/ui/qt/main.ui.h:277 msgid "&Reset Rotation" msgstr "&Resetuj obrót" #: data/ui/qt/main.ui.h:278 msgid "&Preferences …" msgstr "&Preferencje" #: data/ui/qt/main.ui.h:279 msgid "&Status Bar" msgstr "&Pasek stanu" #: data/ui/qt/main.ui.h:280 msgid "&Info …" msgstr "&Informacje..." #: data/ui/qt/main.ui.h:281 msgid "Rewind" msgstr "Przewiń do tyłu" #: data/ui/qt/main.ui.h:282 msgid "Previous" msgstr "Poprzedni" #: data/ui/qt/main.ui.h:283 msgid "Stop" msgstr "Zatrzymaj" #: data/ui/qt/main.ui.h:284 msgid "Play" msgstr "Odtwarzaj" #: data/ui/qt/main.ui.h:285 msgid "Next" msgstr "Następny" #: data/ui/qt/main.ui.h:286 msgid "Forward" msgstr "Dalej" #: data/ui/qt/main.ui.h:287 msgid "Add Mark" msgstr "Dodaj oznaczenie" #: data/ui/qt/main.ui.h:289 msgid "Mark the current place in the sequence of moves" msgstr "Oznacz aktualne miejsce w sekwencji ruchów" #: data/ui/qt/main.ui.h:291 msgid "Remove Mark" msgstr "Usuń oznaczenie" #: data/ui/qt/main.ui.h:293 msgid "Remove the mark at the current place in the sequence of moves" msgstr "Usuń oznaczenie z aktualnego miejsca w sekwencji ruchów" #: data/ui/qt/main.ui.h:295 msgid "&Edit Bar" msgstr "&Pasek edycji" #: data/ui/qt/main.ui.h:296 msgid "&Help …" msgstr "" #: data/ui/qt/preferences.ui.h:372 msgid "Preferences" msgstr "Preferencje" #: data/ui/qt/preferences.ui.h:373 msgid "Animation Speed:" msgstr "Szybkość animacji:" #: data/ui/qt/preferences.ui.h:375 msgid "Mirror Distance:" msgstr "" #: data/ui/qt/preferences.ui.h:377 msgid "Quality:" msgstr "" #: data/ui/qt/preferences.ui.h:380 msgid "" "Lower antialiasing has better performance, higher antialiasing has better " "quality." msgstr "" #: data/ui/qt/preferences.ui.h:382 msgid "Antialiasing:" msgstr "" # translated by: Szymon Nieznański https://launchpad.net/~isamu715 on 2013-06-02 11:24:56 UTC #: data/ui/qt/preferences.ui.h:384 msgid "The program needs to be restarted for the changes to take effect." msgstr "Aby wprowadzić zmiany niezbędne jest ponowne uruchomienie programu." #: data/ui/qt/preferences.ui.h:385 msgid "Graphic" msgstr "Grafika" #: data/ui/qt/preferences.ui.h:386 msgid "Point and click, all directions" msgstr "" #: data/ui/qt/preferences.ui.h:387 msgid "Point and click, simplified" msgstr "" #: data/ui/qt/preferences.ui.h:388 msgid "Gestures" msgstr "" #: data/ui/qt/preferences.ui.h:389 msgid "Mouse" msgstr "Mysz" #: data/ui/qt/preferences.ui.h:391 data/ui/qt/preferences.ui.h:393 msgid "Add" msgstr "Dodaj" #: data/ui/qt/preferences.ui.h:395 data/ui/qt/preferences.ui.h:397 msgid "Remove" msgstr "Usuń" #: data/ui/qt/preferences.ui.h:399 data/ui/qt/preferences.ui.h:401 msgid "Reset" msgstr "Przywróć" #: data/ui/qt/preferences.ui.h:402 msgid "Keys" msgstr "Klawisze" #: data/ui/qt/preferences.ui.h:403 msgid "Color:" msgstr "Kolor:" #: data/ui/qt/preferences.ui.h:405 msgid "Image File:" msgstr "Plik obrazu:" #: data/ui/qt/preferences.ui.h:407 msgid "Tiled" msgstr "Kafelki" #: data/ui/qt/preferences.ui.h:408 msgid "Mosaic" msgstr "Mozaika" #: data/ui/qt/preferences.ui.h:409 msgid "Background:" msgstr "Tło:" #: data/ui/qt/preferences.ui.h:411 msgid "Appearance" msgstr "Wygląd" # translated by: Szymon Nieznański https://launchpad.net/~isamu715 on 2013-06-02 11:29:28 UTC #: pybiklib/ext/qt.py:1578 msgid "Move" msgstr "Przesuń" # translated by: Michał Rzepiński https://launchpad.net/~micou8 on 2013-06-27 11:52:24 UTC #: pybiklib/ext/qt.py:1581 msgid "Key" msgstr "Klucz" # translated by: Szymon Nieznański https://launchpad.net/~isamu715 on 2013-06-02 11:29:28 UTC #: pybiklib/ext/qt.py:1682 msgid "Open Image" msgstr "Otwórz obraz" # translated by: Szymon Nieznański https://launchpad.net/~isamu715 on 2013-06-15 11:09:15 UTC #: pybiklib/ext/qt.py:1720 msgid "plain" msgstr "zwykły" # translated by: Szymon Nieznański https://launchpad.net/~isamu715 on 2013-06-02 11:24:56 UTC #: pybiklib/ext/qt.py:1723 msgid "select …" msgstr "wybierz ..." # translated by: Szymon Nieznański https://launchpad.net/~isamu715 on 2013-06-02 11:24:56 UTC #: pybiklib/ext/qtui.py:94 msgid "Press a key …" msgstr "Wciśnij dowolny klawisz ..." #. Add whatever keywords you want in your language, separated by semicolons, last character must be a semicolon. These keywords are used when searching for applications in Unity, GNOME Shell, etc. #: data/app-meta/pybik.desktop.in:10 msgid "rubik;cube;puzzle;magic;" msgstr "rubik;kostka;puzzle;łamigłówka;magiczna;" # translated by: Szymon Nieznański https://launchpad.net/~isamu715 on 2013-06-09 15:52:05 UTC #: data/plugins/01-challenges.plugins.py:18 #: data/plugins/01-challenges.plugins.py:21 #: data/plugins/01-challenges.plugins.py:24 #: data/plugins/01-challenges.plugins.py:27 #: data/plugins/01-challenges.plugins.py:30 #: data/plugins/01-challenges.plugins.py:33 #: data/plugins/01-challenges.plugins.py:36 #: data/plugins/01-challenges.plugins.py:39 #: data/plugins/01-challenges.plugins.py:42 #: data/plugins/01-challenges.plugins.py:45 #: data/plugins/01-challenges.plugins.py:48 msgid "Challenges" msgstr "Wyzwania" #: data/plugins/01-challenges.plugins.py:19 msgid "Solve random puzzle" msgstr "" #: data/plugins/01-challenges.plugins.py:22 #: data/plugins/01-challenges.plugins.py:25 #: data/plugins/01-challenges.plugins.py:28 #: data/plugins/01-challenges.plugins.py:31 #: data/plugins/01-challenges.plugins.py:34 #: data/plugins/01-challenges.plugins.py:37 #: data/plugins/01-challenges.plugins.py:40 #: data/plugins/01-challenges.plugins.py:43 #: data/plugins/01-challenges.plugins.py:46 #: data/plugins/01-challenges.plugins.py:49 msgid "Solve in {} move" msgid_plural "Solve in {} moves" msgstr[0] "" msgstr[1] "" #: data/plugins/10-beginners.plugins.py:31 #: data/plugins/10-beginners.plugins.py:34 #: data/plugins/10-beginners.plugins.py:56 #: data/plugins/10-beginners.plugins.py:73 #: data/plugins/10-beginners.plugins.py:100 #: data/plugins/10-beginners.plugins.py:118 #: data/plugins/10-beginners.plugins.py:140 #: data/plugins/10-beginners.plugins.py:158 #: data/plugins/14-leyan-lo.plugins.py:21 #: data/plugins/14-leyan-lo.plugins.py:24 #: data/plugins/14-leyan-lo.plugins.py:53 #: data/plugins/14-leyan-lo.plugins.py:74 #: data/plugins/14-leyan-lo.plugins.py:90 #: data/plugins/14-leyan-lo.plugins.py:107 #: data/plugins/14-leyan-lo.plugins.py:129 #: data/plugins/14-leyan-lo.plugins.py:170 #: data/plugins/150-spiegel.plugins.py:32 #: data/plugins/150-spiegel.plugins.py:35 #: data/plugins/150-spiegel.plugins.py:64 #: data/plugins/150-spiegel.plugins.py:85 #: data/plugins/150-spiegel.plugins.py:100 #: data/plugins/150-spiegel.plugins.py:113 #: data/plugins/150-spiegel.plugins.py:130 #: data/plugins/150-spiegel.plugins.py:141 #: data/plugins/151-spiegel-improved.plugins.py:20 #: data/plugins/151-spiegel-improved.plugins.py:23 #: data/plugins/151-spiegel-improved.plugins.py:68 #: data/plugins/151-spiegel-improved.plugins.py:107 #: data/plugins/151-spiegel-improved.plugins.py:139 #: data/plugins/151-spiegel-improved.plugins.py:165 #: data/plugins/151-spiegel-improved.plugins.py:183 #: data/plugins/151-spiegel-improved.plugins.py:197 #: data/plugins/20-2x2x2.plugins.py:18 data/plugins/20-2x2x2.plugins.py:21 #: data/plugins/20-2x2x2.plugins.py:37 data/plugins/20-2x2x2.plugins.py:55 msgid "Solvers" msgstr "" #: data/plugins/10-beginners.plugins.py:32 #: data/plugins/10-beginners.plugins.py:35 #: data/plugins/10-beginners.plugins.py:57 #: data/plugins/10-beginners.plugins.py:74 #: data/plugins/10-beginners.plugins.py:101 #: data/plugins/10-beginners.plugins.py:119 #: data/plugins/10-beginners.plugins.py:141 #: data/plugins/10-beginners.plugins.py:159 msgid "Beginner's method" msgstr "" # translated by: Szymon Nieznański https://launchpad.net/~isamu715 on 2013-06-09 15:56:38 UTC #: data/plugins/10-beginners.plugins.py:36 #: data/plugins/14-leyan-lo.plugins.py:26 #: data/plugins/150-spiegel.plugins.py:37 #: data/plugins/151-spiegel-improved.plugins.py:25 msgid "Top edges" msgstr "Górne krawędzie" # translated by: Szymon Nieznański https://launchpad.net/~isamu715 on 2013-06-09 15:56:38 UTC #: data/plugins/10-beginners.plugins.py:58 #: data/plugins/14-leyan-lo.plugins.py:55 #: data/plugins/150-spiegel.plugins.py:66 #: data/plugins/151-spiegel-improved.plugins.py:70 msgid "Top corners" msgstr "Górne rogi" #: data/plugins/10-beginners.plugins.py:75 #: data/plugins/14-leyan-lo.plugins.py:76 #: data/plugins/150-spiegel.plugins.py:87 #: data/plugins/151-spiegel-improved.plugins.py:109 msgid "Middle slice" msgstr "" #: data/plugins/10-beginners.plugins.py:102 #: data/plugins/14-leyan-lo.plugins.py:92 #: data/plugins/150-spiegel.plugins.py:115 #: data/plugins/151-spiegel-improved.plugins.py:167 msgid "Bottom edge orient" msgstr "" #: data/plugins/10-beginners.plugins.py:120 #: data/plugins/14-leyan-lo.plugins.py:131 #: data/plugins/150-spiegel.plugins.py:143 #: data/plugins/151-spiegel-improved.plugins.py:199 #: data/plugins/20-2x2x2.plugins.py:57 msgid "Bottom corner orient" msgstr "" #: data/plugins/10-beginners.plugins.py:142 #: data/plugins/14-leyan-lo.plugins.py:109 #: data/plugins/150-spiegel.plugins.py:132 #: data/plugins/151-spiegel-improved.plugins.py:185 #: data/plugins/20-2x2x2.plugins.py:39 msgid "Bottom corner place" msgstr "" #: data/plugins/10-beginners.plugins.py:160 #: data/plugins/14-leyan-lo.plugins.py:172 #: data/plugins/150-spiegel.plugins.py:102 #: data/plugins/151-spiegel-improved.plugins.py:141 msgid "Bottom edge place" msgstr "" #. Leyan Lo is the inventor of the solution #: data/plugins/14-leyan-lo.plugins.py:23 #: data/plugins/14-leyan-lo.plugins.py:25 #: data/plugins/14-leyan-lo.plugins.py:54 #: data/plugins/14-leyan-lo.plugins.py:75 #: data/plugins/14-leyan-lo.plugins.py:91 #: data/plugins/14-leyan-lo.plugins.py:108 #: data/plugins/14-leyan-lo.plugins.py:130 #: data/plugins/14-leyan-lo.plugins.py:171 msgid "Leyan Lo" msgstr "" # translated by: Michał Rzepiński https://launchpad.net/~micou8 on 2013-06-27 12:09:01 UTC #. Spiegel is a german magazine #: data/plugins/150-spiegel.plugins.py:34 #: data/plugins/150-spiegel.plugins.py:36 #: data/plugins/150-spiegel.plugins.py:65 #: data/plugins/150-spiegel.plugins.py:86 #: data/plugins/150-spiegel.plugins.py:101 #: data/plugins/150-spiegel.plugins.py:114 #: data/plugins/150-spiegel.plugins.py:131 #: data/plugins/150-spiegel.plugins.py:142 msgid "Spiegel" msgstr "Metoda Spiegel" # translated by: Michał Rzepiński https://launchpad.net/~micou8 on 2013-06-27 11:56:12 UTC # reviewed by: Michał Rzepiński https://launchpad.net/~micou8 on 2013-06-27 12:09:01 UTC #. Spiegel is a german magazine #: data/plugins/151-spiegel-improved.plugins.py:22 #: data/plugins/151-spiegel-improved.plugins.py:24 #: data/plugins/151-spiegel-improved.plugins.py:69 #: data/plugins/151-spiegel-improved.plugins.py:108 #: data/plugins/151-spiegel-improved.plugins.py:140 #: data/plugins/151-spiegel-improved.plugins.py:166 #: data/plugins/151-spiegel-improved.plugins.py:184 #: data/plugins/151-spiegel-improved.plugins.py:198 msgid "Spiegel improved" msgstr "Ulepszona metoda Spiegel" # translated by: Szymon Nieznański https://launchpad.net/~isamu715 on 2013-06-15 11:11:26 UTC #: data/plugins/20-2x2x2.plugins.py:19 data/plugins/20-2x2x2.plugins.py:22 #: data/plugins/20-2x2x2.plugins.py:38 data/plugins/20-2x2x2.plugins.py:56 msgid "2×2×2" msgstr "2×2×2" #: data/plugins/20-2x2x2.plugins.py:23 msgid "Top slice" msgstr "" # translated by: Michał Rzepiński https://launchpad.net/~micou8 on 2013-06-12 10:37:03 UTC #: data/plugins/80-pretty-patterns.plugins.py:20 #: data/plugins/80-pretty-patterns.plugins.py:23 #: data/plugins/80-pretty-patterns.plugins.py:27 #: data/plugins/80-pretty-patterns.plugins.py:31 #: data/plugins/80-pretty-patterns.plugins.py:35 #: data/plugins/80-pretty-patterns.plugins.py:40 #: data/plugins/80-pretty-patterns.plugins.py:44 msgid "Stripes" msgstr "Paski" #: data/plugins/80-pretty-patterns.plugins.py:49 #: data/plugins/80-pretty-patterns.plugins.py:53 msgid "Criss-Cross" msgstr "" # translated by: Szymon Nieznański https://launchpad.net/~isamu715 on 2013-06-15 11:12:58 UTC #: data/plugins/80-pretty-patterns.plugins.py:57 msgid "Fried Eggs" msgstr "Jajka sadzone" # translated by: Szymon Nieznański https://launchpad.net/~isamu715 on 2013-06-15 11:12:58 UTC #: data/plugins/80-pretty-patterns.plugins.py:61 msgid "Big Fried Eggs" msgstr "Duże jajka sadzone" # translated by: Szymon Nieznański https://launchpad.net/~isamu715 on 2013-06-15 11:12:58 UTC #: data/plugins/80-pretty-patterns.plugins.py:65 #: data/plugins/80-pretty-patterns.plugins.py:69 msgid "4 Fried Eggs" msgstr "4 jajaka sadzone" #: data/plugins/80-pretty-patterns.plugins.py:73 msgid "2 Fried Eggs" msgstr "" # translated by: Szymon Nieznański https://launchpad.net/~isamu715 on 2013-06-15 11:12:58 UTC #: data/plugins/80-pretty-patterns.plugins.py:77 msgid "Chessboard" msgstr "Szachownica" #: data/plugins/80-pretty-patterns.plugins.py:83 msgid "Cross" msgstr "" # translated by: Szymon Nieznański https://launchpad.net/~isamu715 on 2013-06-15 11:18:42 UTC #: data/plugins/80-pretty-patterns.plugins.py:87 msgid "Zig Zag" msgstr "Zygzak" #. T is the shape formed by the cube labels. T-Time is a pun (Tea Time) and not suitable for literal translation. Don't translate it or use something common or whatever you think makes sense. #: data/plugins/80-pretty-patterns.plugins.py:93 #: data/plugins/80-pretty-patterns.plugins.py:96 #: data/plugins/80-pretty-patterns.plugins.py:100 #: data/plugins/80-pretty-patterns.plugins.py:104 #: data/plugins/80-pretty-patterns.plugins.py:108 #: data/plugins/80-pretty-patterns.plugins.py:112 msgid "T-Time" msgstr "" # translated by: Michał Rzepiński https://launchpad.net/~micou8 on 2013-06-27 11:57:03 UTC #. C is the shape formed by the cube labels #: data/plugins/80-pretty-patterns.plugins.py:118 msgid "C" msgstr "C" # translated by: Szymon Nieznański https://launchpad.net/~isamu715 on 2013-06-15 11:15:51 UTC #: data/plugins/80-pretty-patterns.plugins.py:121 msgid "Cube in a Cube" msgstr "Kostka w kostce" # translated by: Szymon Nieznański https://launchpad.net/~isamu715 on 2013-06-15 11:15:51 UTC #: data/plugins/80-pretty-patterns.plugins.py:125 msgid "Striped Cube in a Cube" msgstr "Pasiasta kostka w kostce" #: data/plugins/80-pretty-patterns.plugins.py:129 msgid "Six square cuboids" msgstr "" # translated by: Michał Rzepiński https://launchpad.net/~micou8 on 2013-06-27 11:57:03 UTC #. Superflip may be not translated, because it has a special meaning in the mathematical theory behind the Rubik's Cube. #: data/plugins/80-pretty-patterns.plugins.py:135 msgid "Superflip" msgstr "Superflip" # translated by: Michał Rzepiński https://launchpad.net/~micou8 on 2013-06-27 11:57:03 UTC #: data/plugins/80-pretty-patterns.plugins.py:138 msgid "Superflip easy" msgstr "Superflip łatwy" # translated by: Szymon Nieznański https://launchpad.net/~isamu715 on 2013-06-15 11:15:51 UTC #: data/plugins/80-pretty-patterns.plugins.py:142 msgid "Green Mamba" msgstr "Zielona mamba" # translated by: Szymon Nieznański https://launchpad.net/~isamu715 on 2013-06-15 11:15:51 UTC #: data/plugins/80-pretty-patterns.plugins.py:146 msgid "Anaconda" msgstr "Anakonda" # translated by: Szymon Nieznański https://launchpad.net/~isamu715 on 2013-06-15 11:15:51 UTC #: data/plugins/80-pretty-patterns.plugins.py:150 msgid "Duck Feet" msgstr "Kacza stopa" #: data/plugins/80-pretty-patterns.plugins.py:154 #: data/plugins/80-pretty-patterns.plugins.py:158 #: data/plugins/80-pretty-patterns.plugins.py:162 #: data/plugins/80-pretty-patterns.plugins.py:166 #: data/plugins/80-pretty-patterns.plugins.py:170 #: data/plugins/80-pretty-patterns.plugins.py:174 #: data/plugins/80-pretty-patterns.plugins.py:178 #: data/plugins/80-pretty-patterns.plugins.py:182 msgid "Plus" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:186 #: data/plugins/80-pretty-patterns.plugins.py:191 #: data/plugins/80-pretty-patterns.plugins.py:196 #: data/plugins/80-pretty-patterns.plugins.py:200 msgid "Minus" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:204 msgid "Volcano" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:208 msgid "Checkerboard (easy)" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:212 msgid "Checkerboard (fast)" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:216 msgid "Mixed Checkerboard" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:220 msgid "Tipi" msgstr "" # translated by: Szymon Nieznański https://launchpad.net/~isamu715 on 2013-06-15 11:15:51 UTC #: data/plugins/90-library.plugins.py:18 data/plugins/90-library.plugins.py:22 #: data/plugins/90-library.plugins.py:26 data/plugins/90-library.plugins.py:30 #: data/plugins/90-library.plugins.py:34 data/plugins/90-library.plugins.py:38 #: data/plugins/90-library.plugins.py:42 data/plugins/90-library.plugins.py:46 #: data/plugins/90-library.plugins.py:50 data/plugins/90-library.plugins.py:54 #: data/plugins/90-library.plugins.py:58 data/plugins/90-library.plugins.py:62 #: data/plugins/90-library.plugins.py:66 data/plugins/90-library.plugins.py:70 #: data/plugins/90-library.plugins.py:74 data/plugins/90-library.plugins.py:78 #: data/plugins/90-library.plugins.py:82 data/plugins/90-library.plugins.py:86 #: data/plugins/90-library.plugins.py:91 data/plugins/90-library.plugins.py:96 #: data/plugins/90-library.plugins.py:101 #: data/plugins/90-library.plugins.py:105 #: data/plugins/90-library.plugins.py:110 #: data/plugins/90-library.plugins.py:115 #: data/plugins/90-library.plugins.py:119 #: data/plugins/90-library.plugins.py:123 #: data/plugins/90-library.plugins.py:127 msgid "Library" msgstr "Biblioteka" #: data/plugins/90-library.plugins.py:19 data/plugins/90-library.plugins.py:23 #: data/plugins/90-library.plugins.py:27 data/plugins/90-library.plugins.py:31 #: data/plugins/90-library.plugins.py:35 msgid "Swap edges" msgstr "" #: data/plugins/90-library.plugins.py:20 msgid "3 edges ⟳, top layer" msgstr "" #: data/plugins/90-library.plugins.py:24 msgid "3 edges ⟲, top layer" msgstr "" #: data/plugins/90-library.plugins.py:28 msgid "3 edges, middle layer" msgstr "" #: data/plugins/90-library.plugins.py:32 msgid "4 edges, front and right" msgstr "" #: data/plugins/90-library.plugins.py:36 msgid "4 edges, front and back" msgstr "" #: data/plugins/90-library.plugins.py:39 msgid "Swap 2 edges and 2 corners, top layer" msgstr "" #: data/plugins/90-library.plugins.py:43 data/plugins/90-library.plugins.py:47 msgid "Flip edges" msgstr "" #: data/plugins/90-library.plugins.py:44 msgid "4 edges" msgstr "" #: data/plugins/90-library.plugins.py:48 msgid "2 edges, top layer" msgstr "" #: data/plugins/90-library.plugins.py:51 data/plugins/90-library.plugins.py:55 #: data/plugins/90-library.plugins.py:59 data/plugins/90-library.plugins.py:63 #: data/plugins/90-library.plugins.py:67 data/plugins/90-library.plugins.py:71 msgid "Swap corners" msgstr "" #: data/plugins/90-library.plugins.py:52 data/plugins/90-library.plugins.py:76 msgid "2 corners, top layer" msgstr "" #: data/plugins/90-library.plugins.py:56 msgid "2 corners diagonal, top layer" msgstr "" #: data/plugins/90-library.plugins.py:60 data/plugins/90-library.plugins.py:80 msgid "3 corners ⟳, top layer" msgstr "" #: data/plugins/90-library.plugins.py:64 msgid "3 corners ⟲, top layer" msgstr "" #: data/plugins/90-library.plugins.py:68 msgid "4 corners, top layer" msgstr "" #: data/plugins/90-library.plugins.py:72 msgid "2 corners, partial sequence, top layer" msgstr "" #: data/plugins/90-library.plugins.py:75 data/plugins/90-library.plugins.py:79 #: data/plugins/90-library.plugins.py:83 data/plugins/90-library.plugins.py:87 msgid "Rotate corners" msgstr "" #: data/plugins/90-library.plugins.py:84 msgid "1 corner ⟳, partial sequence, top layer" msgstr "" #: data/plugins/90-library.plugins.py:88 msgid "1 corner ⟲, partial sequence, top layer" msgstr "" #: data/plugins/90-library.plugins.py:92 data/plugins/90-library.plugins.py:97 #: data/plugins/90-library.plugins.py:102 #: data/plugins/90-library.plugins.py:111 msgid "Rotate center" msgstr "" # translated by: Szymon Nieznański https://launchpad.net/~isamu715 on 2013-06-15 11:17:32 UTC #. 2 rotations of the center face in the upper layer #: data/plugins/90-library.plugins.py:94 msgid "2×Up" msgstr "2xDo góry" #. Up clockwise and front clockwise #: data/plugins/90-library.plugins.py:99 msgid "Up ⟳ and front ⟳" msgstr "" #. Up clockwise and front counterclockwise #: data/plugins/90-library.plugins.py:104 msgid "Up ⟳ and front ⟲" msgstr "" #: data/plugins/90-library.plugins.py:106 msgid "Swap center parts, up and front" msgstr "" #. Up clockwise and down counterclockwise #: data/plugins/90-library.plugins.py:113 msgid "Up ⟳ and down ⟲" msgstr "" #: data/plugins/90-library.plugins.py:116 #: data/plugins/90-library.plugins.py:120 #: data/plugins/90-library.plugins.py:124 #: data/plugins/90-library.plugins.py:128 msgid "Misc" msgstr "" #. Yields in a rotated back layer, but the sequence of moves does not touch the back layer #: data/plugins/90-library.plugins.py:118 #: data/plugins/90-library.plugins.py:125 #: data/plugins/90-library.plugins.py:129 msgid "Back without back" msgstr "" #: data/plugins/90-library.plugins.py:121 msgid "2×Back without back" msgstr "" #: data/plugins/95-transformations.plugins.py:18 #: data/plugins/95-transformations.plugins.py:21 #: data/plugins/95-transformations.plugins.py:24 msgid "Move transformations" msgstr "" #: data/plugins/95-transformations.plugins.py:19 msgid "Invert move sequence" msgstr "" #: data/plugins/95-transformations.plugins.py:22 msgid "Normalize cube rotations" msgstr "" #: data/plugins/95-transformations.plugins.py:25 msgid "Normalize move sequence" msgstr "" # translated by: Szymon Nieznański https://launchpad.net/~isamu715 on 2013-06-02 11:33:57 UTC #: buildlib/modeldef.py:110 msgid "Brick" msgstr "Klocek" # translated by: Szymon Nieznański https://launchpad.net/~isamu715 on 2013-06-09 15:26:38 UTC #: buildlib/modeldef.py:111 #, python-brace-format msgid "{0}×{1}×{2}-Brick" msgstr "{0}×{1}×{2}-Klocek" # translated by: Szymon Nieznański https://launchpad.net/~isamu715 on 2013-06-02 11:29:28 UTC #: buildlib/modeldef.py:112 msgid "Width:" msgstr "Szerokość:" # translated by: Szymon Nieznański https://launchpad.net/~isamu715 on 2013-06-09 15:43:55 UTC #: buildlib/modeldef.py:112 buildlib/modeldef.py:151 buildlib/modeldef.py:249 #: buildlib/modeldef.py:300 buildlib/modeldef.py:311 msgid "Height:" msgstr "Wysokość:" # translated by: Szymon Nieznański https://launchpad.net/~isamu715 on 2013-06-09 15:43:55 UTC #: buildlib/modeldef.py:112 msgid "Depth:" msgstr "Głębokość:" #: buildlib/modeldef.py:120 buildlib/modeldef.py:257 buildlib/modeldef.py:319 #: buildlib/modeldef.py:374 buildlib/modeldef.py:433 msgid "up" msgstr "" #: buildlib/modeldef.py:120 buildlib/modeldef.py:205 buildlib/modeldef.py:257 #: buildlib/modeldef.py:319 buildlib/modeldef.py:373 buildlib/modeldef.py:430 msgid "down" msgstr "" #: buildlib/modeldef.py:120 buildlib/modeldef.py:205 buildlib/modeldef.py:257 msgid "left" msgstr "" # translated by: Szymon Nieznański https://launchpad.net/~isamu715 on 2013-06-02 11:29:28 UTC #: buildlib/modeldef.py:120 buildlib/modeldef.py:205 buildlib/modeldef.py:257 msgid "right" msgstr "" # translated by: Szymon Nieznański https://launchpad.net/~isamu715 on 2013-06-02 11:29:28 UTC #: buildlib/modeldef.py:120 buildlib/modeldef.py:374 msgid "front" msgstr "" #: buildlib/modeldef.py:120 buildlib/modeldef.py:205 buildlib/modeldef.py:257 #: buildlib/modeldef.py:320 buildlib/modeldef.py:373 msgid "back" msgstr "" # translated by: Szymon Nieznański https://launchpad.net/~isamu715 on 2013-06-02 11:33:57 UTC #: buildlib/modeldef.py:149 msgid "Tower" msgstr "Wieża" # translated by: Szymon Nieznański https://launchpad.net/~isamu715 on 2013-06-09 15:26:38 UTC #: buildlib/modeldef.py:150 #, python-brace-format msgid "{0}×{1}-Tower" msgstr "{0}×{1}-Wieża" # translated by: Szymon Nieznański https://launchpad.net/~isamu715 on 2013-06-02 11:30:48 UTC #: buildlib/modeldef.py:151 buildlib/modeldef.py:249 buildlib/modeldef.py:300 #: buildlib/modeldef.py:311 msgid "Basis:" msgstr "Podstawa" # translated by: Szymon Nieznański https://launchpad.net/~isamu715 on 2013-06-02 11:33:57 UTC #: buildlib/modeldef.py:163 msgid "Cube" msgstr "Kostka" # translated by: Szymon Nieznański https://launchpad.net/~isamu715 on 2013-06-09 15:26:38 UTC #: buildlib/modeldef.py:164 #, python-brace-format msgid "{0}×{0}×{0}-Cube" msgstr "{0}×{0}×{0}-Kostka" # translated by: Szymon Nieznański https://launchpad.net/~isamu715 on 2013-06-02 11:29:28 UTC #: buildlib/modeldef.py:165 buildlib/modeldef.py:197 buildlib/modeldef.py:365 #: buildlib/modeldef.py:422 msgid "Size:" msgstr "Rozmiar:" #: buildlib/modeldef.py:177 buildlib/modeldef.py:178 msgid "Void Cube" msgstr "" #: buildlib/modeldef.py:195 msgid "Tetrahedron" msgstr "" #: buildlib/modeldef.py:196 #, python-brace-format msgid "{0}-Tetrahedron" msgstr "" #: buildlib/modeldef.py:247 msgid "Triangular Prism" msgstr "" #: buildlib/modeldef.py:248 #, python-brace-format msgid "{0}×{1} Triangular Prism" msgstr "" #: buildlib/modeldef.py:298 msgid "Triangular Prism (complex)" msgstr "" #: buildlib/modeldef.py:299 #, python-brace-format msgid "{0}×{1} Triangular Prism (complex)" msgstr "" #: buildlib/modeldef.py:309 msgid "Pentagonal Prism" msgstr "" #: buildlib/modeldef.py:310 #, python-brace-format msgid "{0}×{1} Pentagonal Prism" msgstr "" #: buildlib/modeldef.py:320 buildlib/modeldef.py:373 msgid "front-right" msgstr "" #: buildlib/modeldef.py:320 buildlib/modeldef.py:374 msgid "back-right" msgstr "" #: buildlib/modeldef.py:320 buildlib/modeldef.py:374 msgid "back-left" msgstr "" #: buildlib/modeldef.py:320 buildlib/modeldef.py:373 msgid "front-left" msgstr "" #: buildlib/modeldef.py:354 msgid "Pentagonal Prism (stretched)" msgstr "" #: buildlib/modeldef.py:355 #, python-brace-format msgid "{0}×{1} Pentagonal Prism (stretched)" msgstr "" #: buildlib/modeldef.py:363 msgid "Octahedron" msgstr "" #: buildlib/modeldef.py:364 #, python-brace-format msgid "{0}-Octahedron" msgstr "" #: buildlib/modeldef.py:420 msgid "Dodecahedron" msgstr "" #: buildlib/modeldef.py:421 #, python-brace-format msgid "{0}-Dodecahedron" msgstr "" #: buildlib/modeldef.py:430 msgid "down-back-right" msgstr "" #: buildlib/modeldef.py:430 msgid "down-front-right" msgstr "" #: buildlib/modeldef.py:431 msgid "down-front" msgstr "" #: buildlib/modeldef.py:431 msgid "down-front-left" msgstr "" #: buildlib/modeldef.py:431 msgid "down-back-left" msgstr "" #: buildlib/modeldef.py:432 msgid "up-back" msgstr "" #: buildlib/modeldef.py:432 msgid "up-back-right" msgstr "" #: buildlib/modeldef.py:432 msgid "up-front-right" msgstr "" #: buildlib/modeldef.py:433 msgid "up-front-left" msgstr "" #: buildlib/modeldef.py:433 msgid "up-back-left" msgstr "" pybik-3.0/po/uz.po0000664000175000017500000013731013173052130014256 0ustar barccbarcc00000000000000# Uzbek translation for pybik # Copyright (c) 2013-2017 Rosetta Contributors and Canonical Ltd 2013 # This file is distributed under the same license as the pybik package. # FIRST AUTHOR , 2013. # msgid "" msgstr "" "Project-Id-Version: pybik\n" "Report-Msgid-Bugs-To: https://bugs.launchpad.net/pybik/+filebug\n" "POT-Creation-Date: 2017-09-10 21:58+0200\n" "PO-Revision-Date: 2017-09-17 05:54+0000\n" "Last-Translator: Akmal Xushvaqov \n" "Language-Team: Uzbek \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Launchpad-Export-Date: 2017-09-18 05:31+0000\n" "X-Generator: Launchpad (build 18449)\n" "Language: uz\n" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2013-06-02 00:46:06 UTC #: pybiklib/application.py:294 msgid "Press the Esc key to exit Edit Mode" msgstr "\"Tahrirlash usuli\"dan chiqish uchun \"Esc\" tugmasini bosing." # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2013-06-02 00:46:06 UTC #. substitution for {move_text} in statusbar text #: pybiklib/application.py:302 #, python-brace-format msgid "{current} / {total} move" msgid_plural "{current} / {total} moves" msgstr[0] "{current} / {total} koʻchirish" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2013-06-02 00:46:06 UTC #. substitution for {solved_text} in statusbar text #: pybiklib/application.py:306 msgid "solved" msgstr "hal qilindi" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2013-06-02 00:46:06 UTC #: pybiklib/application.py:306 msgid "not solved" msgstr "hal qilinmadi" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2013-06-02 00:46:06 UTC #. statusbar text #: pybiklib/application.py:309 #, python-brace-format msgid "{move_text}, {solved_text}" msgstr "{move_text}, {solved_text}" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2013-06-02 00:46:06 UTC #: pybiklib/application.py:314 msgid "Congratulations, you have solved the puzzle!" msgstr "Tabriklaymiz, siz muammoni hal qildingiz!" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2013-06-02 00:46:06 UTC #. Name of the application, probably should not be translated. #: pybiklib/config.py:35 data/ui/qt/main.ui.h:271 #: data/app-meta/pybik.desktop.in:3 msgid "Pybik" msgstr "Pybik" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2015-04-12 13:32:36 UTC #. short description #: pybiklib/config.py:65 data/app-meta/pybik.desktop.in:4 msgid "Rubik's cube game" msgstr "Rubik'ning kubik o‘yini" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2015-07-21 01:59:38 UTC #. The next 7 lines belong together and form the long description #: pybiklib/config.py:68 msgid "Pybik is a 3D puzzle game about the cube invented by Ernő Rubik." msgstr "" "\"Pybik\" - 3D Ernő Rubik tomonidan kashf qilingan kubik haqidagi " "boshqotirma o‘yindir." #: pybiklib/config.py:70 msgid "" "Various 3D puzzles, such as cubes, towers, prisms, tetrahedra, octahedra, " "dodecahedra and many more" msgstr "" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2015-07-21 01:59:38 UTC #: pybiklib/config.py:71 msgid "Solvers for some puzzles" msgstr "Ba’zi boshqotirmalar uchun yechimlar" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2014-02-08 14:04:29 UTC #. Use something that is common in the Rubik scene in your language, sometimes it's just the equivalent of "patterns". #: pybiklib/config.py:72 data/plugins/80-pretty-patterns.plugins.py:19 #: data/plugins/80-pretty-patterns.plugins.py:22 #: data/plugins/80-pretty-patterns.plugins.py:26 #: data/plugins/80-pretty-patterns.plugins.py:30 #: data/plugins/80-pretty-patterns.plugins.py:34 #: data/plugins/80-pretty-patterns.plugins.py:39 #: data/plugins/80-pretty-patterns.plugins.py:43 #: data/plugins/80-pretty-patterns.plugins.py:48 #: data/plugins/80-pretty-patterns.plugins.py:52 #: data/plugins/80-pretty-patterns.plugins.py:56 #: data/plugins/80-pretty-patterns.plugins.py:60 #: data/plugins/80-pretty-patterns.plugins.py:64 #: data/plugins/80-pretty-patterns.plugins.py:68 #: data/plugins/80-pretty-patterns.plugins.py:72 #: data/plugins/80-pretty-patterns.plugins.py:76 #: data/plugins/80-pretty-patterns.plugins.py:82 #: data/plugins/80-pretty-patterns.plugins.py:86 #: data/plugins/80-pretty-patterns.plugins.py:91 #: data/plugins/80-pretty-patterns.plugins.py:95 #: data/plugins/80-pretty-patterns.plugins.py:99 #: data/plugins/80-pretty-patterns.plugins.py:103 #: data/plugins/80-pretty-patterns.plugins.py:107 #: data/plugins/80-pretty-patterns.plugins.py:111 #: data/plugins/80-pretty-patterns.plugins.py:116 #: data/plugins/80-pretty-patterns.plugins.py:120 #: data/plugins/80-pretty-patterns.plugins.py:124 #: data/plugins/80-pretty-patterns.plugins.py:128 #: data/plugins/80-pretty-patterns.plugins.py:133 #: data/plugins/80-pretty-patterns.plugins.py:137 #: data/plugins/80-pretty-patterns.plugins.py:141 #: data/plugins/80-pretty-patterns.plugins.py:145 #: data/plugins/80-pretty-patterns.plugins.py:149 #: data/plugins/80-pretty-patterns.plugins.py:153 #: data/plugins/80-pretty-patterns.plugins.py:157 #: data/plugins/80-pretty-patterns.plugins.py:161 #: data/plugins/80-pretty-patterns.plugins.py:165 #: data/plugins/80-pretty-patterns.plugins.py:169 #: data/plugins/80-pretty-patterns.plugins.py:173 #: data/plugins/80-pretty-patterns.plugins.py:177 #: data/plugins/80-pretty-patterns.plugins.py:181 #: data/plugins/80-pretty-patterns.plugins.py:185 #: data/plugins/80-pretty-patterns.plugins.py:190 #: data/plugins/80-pretty-patterns.plugins.py:195 #: data/plugins/80-pretty-patterns.plugins.py:199 #: data/plugins/80-pretty-patterns.plugins.py:203 #: data/plugins/80-pretty-patterns.plugins.py:207 #: data/plugins/80-pretty-patterns.plugins.py:211 #: data/plugins/80-pretty-patterns.plugins.py:215 #: data/plugins/80-pretty-patterns.plugins.py:219 msgid "Pretty patterns" msgstr "Ajoyib namunalar" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2015-07-21 01:59:38 UTC #: pybiklib/config.py:73 msgid "Editor for move sequences" msgstr "Harakat davomiyligini tahrirlagich" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2015-07-21 01:59:38 UTC #: pybiklib/config.py:74 msgid "Custom colors and images on the surface of the puzzles" msgstr "" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2014-02-08 13:03:29 UTC #: pybiklib/config.py:78 msgid "" "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.\n" "\n" "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." msgstr "" "Ushbu dastur erkin va ochiq kodli dastur: siz uni tarqatishingiz yoki \"Free " "Software Foundation\" tomonidan e’lon qilingan \"GNU General Public " "License\" litsenziyasi (3ta versiyasi yoki xohishingiz bo‘yicha so‘nggi " "versiyalari) shartlari ostida o‘zgartirishingiz mumkin.\n" "\n" "Ushbu dastur boshqalarga foydali bo‘ladi degan umidda tekin tarqatiladi, " "ammo SAVDO yoki SHAXSIY MAQSADLARDA FOYDALANISHDA HECH QANDAY KAFOLAY " "BERILMAYDI. Batafsil ma’lumot uchun \"GNU General Public License\" bilan " "tanishib chiqing." # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2014-02-08 13:03:29 UTC #. Text between "<" and ">" is expanded to a link by the program and should not be modified. #. Text between "" and "<|>" is the translatable text for the link. #: pybiklib/config.py:90 msgid "" "Read the full text of the GNU General Public " "License<|> or see ." msgstr "" "GNU General Public License<|> matnini to‘liq o‘qing " "yoki ni ko‘ring." # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2014-02-08 13:03:29 UTC #: pybiklib/config.py:93 msgid "" "You should have received a copy of the GNU General Public License along with " "this program. If not, see ." msgstr "" "Siz GNU General Public License'ning nusxasini ushbu dastur bilan birga qabul " "qilgan bo‘lishingiz kerak. Agar bunday bo‘lmasa, ushbu saytni ko‘ring: " "." # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2014-02-08 13:03:29 UTC #: pybiklib/config.py:98 #, python-brace-format msgid "" "If you find any bugs in Pybik or have a suggestion for an improvement then " "please submit a <{CONTACT_FILEBUG}|>bug report<|>." msgstr "" "\"Pybik\" da birorta nosozlik topsangiz yoki yaxshilash uchun " "tavsiyalaringiz bo‘lsa, marhamat, <{CONTACT_FILEBUG}|>nosizlikni xabar " "berish<|>ni to‘ldiring va jo‘nating." # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2014-02-08 13:03:29 UTC #: pybiklib/config.py:103 msgid "" "Translations are managed by the " "Launchpad " "translation group<|>.\n" "\n" "If you want help to translate Pybik to your language you can do it through " "the web interface<|>.\n" "\n" "Read more about \"Translating with " "Launchpad\"<|> and " "\"Starting to " "translate\"<|>." msgstr "" "Tarjimalar Launchpad tarjima guruhi<|> tomonidan nazorat qilinadi.\n" "\n" "Agar \"Pybic\"ni ona tilingizga tarjima qilishga yordam bermoqchi " "bo‘lsangiz, veb interfys<|> " "orqali amalga oshirishingiz mumkin.\n" "\n" "\"Launchpad yordamida tarjima " "qilish\"<|> va " "\"Tarjimani " "boshlash\"<|> haqida ko‘proq o‘qing." # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2015-03-28 23:00:59 UTC #: pybiklib/dialogs.py:44 msgid "Lighting" msgstr "Yoritish" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2015-04-12 13:32:36 UTC #: pybiklib/dialogs.py:44 msgid "Simple" msgstr "Oddiy" #. labels are the colored stickers on the cube #: pybiklib/dialogs.py:46 msgid "Labels" msgstr "" #: pybiklib/dialogs.py:104 data/ui/qt/main.ui.h:275 msgid "Select Puzzle" msgstr "" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2014-02-08 14:04:29 UTC #. 1 slice, 2 slices, 3 slices, ... #: pybiklib/dialogs.py:134 pybiklib/dialogs.py:154 pybiklib/dialogs.py:180 #: pybiklib/dialogs.py:201 msgid "{} slice" msgid_plural "{} slices" msgstr[0] "" msgstr[1] "" #: pybiklib/dialogs.py:196 pybiklib/dialogs.py:225 msgid "{}×{} slices" msgstr "" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2015-04-12 13:32:36 UTC #. The next strings form the text in the help dialog: #. Title of the 1st paragraph #: pybiklib/dialogs.py:290 msgid "Using the mouse to rotate the cube" msgstr "Kubikni burish uchun sichqonchadan foydalaning" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2015-04-12 13:32:36 UTC #. Text of the 1st paragraph, followed by bullet list items #: pybiklib/dialogs.py:292 msgid "" "Position the mouse cursor over the puzzle and you will see an arrow that " "gives you a hint in which direction the slice under the mouse cursor will be " "rotated." msgstr "" "Sichqoncha ko‘rsatkichini jumboqqa yaqinlashtiring va ko‘rsatkich sichqoncha " "ko‘rsatkichi ostidagi burildigan parcha yo‘nalishi uchun ishora beradi." # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2015-04-12 13:32:36 UTC #: pybiklib/dialogs.py:294 msgid "" "The left mouse button rotates a single slice of the cube in the direction of " "the arrow." msgstr "" "Sichqonchaning chap tugmasi kubikning bitta bo‘lagini ko‘rsatkich yo‘nalishi " "bo‘yicha buradi." # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2015-04-12 13:32:36 UTC #: pybiklib/dialogs.py:295 msgid "" "The right mouse button rotates a single slice of the cube against the " "direction of the arrow." msgstr "" "Sichqonchaning o‘ng tugmasi kubikning bitta bo‘lagini ko‘rsatkich " "yo‘nalishiga teskari buradi." # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2015-04-12 13:32:36 UTC #: pybiklib/dialogs.py:296 msgid "" "To rotate the whole cube instead of a single slice press the Ctrl key " "together with the mouse button." msgstr "" "Bitta bo‘lak o‘rniga butun kubikni burish uchun sichqoncha tugmasi bilan " "birga Ctrl tugmasini bosing." # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2015-04-12 13:32:36 UTC #. Title of the 2nd paragraph #: pybiklib/dialogs.py:298 msgid "Using the keyboard to rotate the cube" msgstr "Kubikni burish uchun klaviaturadan foydalaning" #. Text of the 2nd paragraph, followed by bullet list items #: pybiklib/dialogs.py:300 msgid "" "Make sure the keyboard focus is on the cube area (e.g. click on the " "background of the cube). The keys can be configured in the preferences " "dialog, the default is:" msgstr "" #. before the item text is a list of keys #: pybiklib/dialogs.py:303 pybiklib/dialogs.py:318 msgid "Moves the left, right, upper, down, front or back slice clockwise." msgstr "" #: pybiklib/dialogs.py:304 pybiklib/dialogs.py:319 msgid "Moves a slice couterclockwise." msgstr "" #: pybiklib/dialogs.py:305 pybiklib/dialogs.py:320 msgid "Moves the whole cube." msgstr "" #. Title of the 3rd paragraph #: pybiklib/dialogs.py:307 msgid "Other keys and buttons" msgstr "" #. bullet list items of the 3rd paragraph #: pybiklib/dialogs.py:309 msgid "Mouse wheel – Zoom in/out" msgstr "" #: pybiklib/dialogs.py:310 msgid "" "Arrow keys, Left mouse button on the background – Changes the direction of " "looking at the cube." msgstr "" #: pybiklib/dialogs.py:311 msgid "" "Moves keyboard focus to the sequence editor above the cube area where you " "can edit the move sequence in the notation described below. Hit enter when " "done." msgstr "" #. Title of the 4th paragraph #: pybiklib/dialogs.py:315 msgid "Notation for moves" msgstr "" #. Text of the 4th paragraph, followed by bullet list items #: pybiklib/dialogs.py:317 msgid "" "All moves, however they are made, are displayed progressively above the cube " "area:" msgstr "" #: pybiklib/dialogs.py:321 msgid "" "Moves the first, second or third slice from left clockwise. The allowed " "numbers are in the range from 1 to the count of parallel slices. \"l1\" is " "always the same as \"l\" and for the classic 3×3×3-Cube \"l2\" is the same " "as \"r2-\" and \"l3\" is the same as \"r-\"." msgstr "" #: pybiklib/dialogs.py:325 msgid "You can use a space to separate groups of moves." msgstr "" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2014-02-08 13:17:32 UTC #: pybiklib/dialogs.py:379 msgid "Pybik project website" msgstr "Pybik loyihasi sayti" #: pybiklib/pluginlib.py:301 msgid "This plugin does not work for any model." msgstr "" #: pybiklib/pluginlib.py:303 pybiklib/pluginlib.py:306 msgid "This plugin only works for:" msgstr "" #: pybiklib/pluginlib.py:498 msgid "This puzzle is not solvable." msgstr "" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2014-02-08 13:25:10 UTC #. The following 6 words are for the antialiasing levels: disabled, ugly, low, medium, high, higher #: pybiklib/schema.py:211 msgid "disabled" msgstr "o‘chirilgan" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2014-02-08 13:25:10 UTC #: pybiklib/schema.py:211 msgid "ugly" msgstr "xunuk" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2014-02-08 13:25:10 UTC #: pybiklib/schema.py:211 msgid "low" msgstr "past" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2014-02-08 13:25:10 UTC #: pybiklib/schema.py:212 msgid "medium" msgstr "o‘rtacha" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2014-02-08 13:25:10 UTC #: pybiklib/schema.py:212 msgid "high" msgstr "yuqori" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2014-02-08 13:25:10 UTC #: pybiklib/schema.py:212 msgid "higher" msgstr "yuqoriroq" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2015-03-28 23:00:59 UTC #: data/ui/qt/about.ui.h:212 msgid "About Pybik" msgstr "Pybik haqida" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2015-03-28 23:00:59 UTC #: data/ui/qt/about.ui.h:213 msgid "Translators:" msgstr "Tarjimonlar:" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2015-03-28 23:00:59 UTC #: data/ui/qt/about.ui.h:214 msgid "About" msgstr "Haqida" #: data/ui/qt/about.ui.h:215 msgid "Contribute" msgstr "" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2015-03-28 23:00:59 UTC #: data/ui/qt/about.ui.h:216 msgid "License" msgstr "Litsenziya" #: data/ui/qt/help.ui.h:53 data/ui/qt/main.ui.h:297 msgid "Help" msgstr "" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2014-02-08 14:00:18 UTC #: data/ui/qt/main.ui.h:272 msgid "&New Challenge" msgstr "" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2015-03-28 23:00:59 UTC #: data/ui/qt/main.ui.h:273 msgid "Ne&w Solved" msgstr "Ya&ngi bajarilgan" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2015-03-28 23:00:59 UTC #: data/ui/qt/main.ui.h:274 msgid "&Quit" msgstr "Chi&qish" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2015-03-28 23:00:59 UTC #: data/ui/qt/main.ui.h:276 msgid "&Set as Initial State" msgstr "Boshlang‘ich holat sifatida o‘rnati&sh" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2015-03-28 23:00:59 UTC #: data/ui/qt/main.ui.h:277 msgid "&Reset Rotation" msgstr "Bu&rishni bekor qilish" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2015-03-28 23:00:59 UTC #: data/ui/qt/main.ui.h:278 msgid "&Preferences …" msgstr "&Sozlamalar" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2015-03-28 23:00:59 UTC #: data/ui/qt/main.ui.h:279 msgid "&Status Bar" msgstr "&Holat paneli" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2015-03-28 23:00:59 UTC #: data/ui/qt/main.ui.h:280 msgid "&Info …" msgstr "&Ma’lumot …" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2015-03-28 23:00:59 UTC #: data/ui/qt/main.ui.h:281 msgid "Rewind" msgstr "Orqaga" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2015-03-28 23:00:59 UTC #: data/ui/qt/main.ui.h:282 msgid "Previous" msgstr "Oldingi" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2015-03-28 23:00:59 UTC #: data/ui/qt/main.ui.h:283 msgid "Stop" msgstr "To‘xtatish" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2015-03-28 23:00:59 UTC #: data/ui/qt/main.ui.h:284 msgid "Play" msgstr "O‘yinni boshlash" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2015-03-28 23:00:59 UTC #: data/ui/qt/main.ui.h:285 msgid "Next" msgstr "Keyingi" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2015-03-28 23:00:59 UTC #: data/ui/qt/main.ui.h:286 msgid "Forward" msgstr "Oldinga" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2015-03-28 23:00:59 UTC #: data/ui/qt/main.ui.h:287 msgid "Add Mark" msgstr "Belgilashni qo‘shish" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2015-03-28 23:00:59 UTC #: data/ui/qt/main.ui.h:289 msgid "Mark the current place in the sequence of moves" msgstr "Yurishlardagi joriy joyni belgilash" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2015-03-28 23:00:59 UTC #: data/ui/qt/main.ui.h:291 msgid "Remove Mark" msgstr "Belgilashni olib tashlash" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2015-03-28 23:00:59 UTC #: data/ui/qt/main.ui.h:293 msgid "Remove the mark at the current place in the sequence of moves" msgstr "Yurishlardagi joriy joyni belgilashni olib tashlash" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2015-03-28 23:00:59 UTC #: data/ui/qt/main.ui.h:295 msgid "&Edit Bar" msgstr "&Tahrirlash paneli" #: data/ui/qt/main.ui.h:296 msgid "&Help …" msgstr "" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2015-03-28 23:00:59 UTC #: data/ui/qt/preferences.ui.h:372 msgid "Preferences" msgstr "Parametrlar" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2015-03-28 23:00:59 UTC #: data/ui/qt/preferences.ui.h:373 msgid "Animation Speed:" msgstr "Animatsiya tezligi:" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2015-03-28 23:00:59 UTC #: data/ui/qt/preferences.ui.h:375 msgid "Mirror Distance:" msgstr "Oyna uzoqligi:" #: data/ui/qt/preferences.ui.h:377 msgid "Quality:" msgstr "" #: data/ui/qt/preferences.ui.h:380 msgid "" "Lower antialiasing has better performance, higher antialiasing has better " "quality." msgstr "" #: data/ui/qt/preferences.ui.h:382 msgid "Antialiasing:" msgstr "" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2014-02-08 13:03:29 UTC #: data/ui/qt/preferences.ui.h:384 msgid "The program needs to be restarted for the changes to take effect." msgstr "" "O‘zgarishlar kuchga kirishi uchun dasturni qaytadan ishga tushirish kerak." # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2015-03-28 23:00:59 UTC #: data/ui/qt/preferences.ui.h:385 msgid "Graphic" msgstr "Grafik" #: data/ui/qt/preferences.ui.h:386 msgid "Point and click, all directions" msgstr "" #: data/ui/qt/preferences.ui.h:387 msgid "Point and click, simplified" msgstr "" #: data/ui/qt/preferences.ui.h:388 msgid "Gestures" msgstr "" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2015-03-28 23:00:59 UTC #: data/ui/qt/preferences.ui.h:389 msgid "Mouse" msgstr "Sichqoncha" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2015-03-28 23:00:59 UTC #: data/ui/qt/preferences.ui.h:391 data/ui/qt/preferences.ui.h:393 msgid "Add" msgstr "Qo‘shish" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2015-03-28 23:00:59 UTC #: data/ui/qt/preferences.ui.h:395 data/ui/qt/preferences.ui.h:397 msgid "Remove" msgstr "Olib tashlash" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2015-03-28 23:00:59 UTC #: data/ui/qt/preferences.ui.h:399 data/ui/qt/preferences.ui.h:401 msgid "Reset" msgstr "Bekor qilish" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2015-03-28 23:00:59 UTC #: data/ui/qt/preferences.ui.h:402 msgid "Keys" msgstr "Tugmalar" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2015-03-28 23:00:59 UTC #: data/ui/qt/preferences.ui.h:403 msgid "Color:" msgstr "Rangi:" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2015-03-28 23:00:59 UTC #: data/ui/qt/preferences.ui.h:405 msgid "Image File:" msgstr "Rasm fayli:" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2015-03-28 23:00:59 UTC #: data/ui/qt/preferences.ui.h:407 msgid "Tiled" msgstr "Plitkali" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2015-03-28 23:00:59 UTC #: data/ui/qt/preferences.ui.h:408 msgid "Mosaic" msgstr "Mozayka" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2015-03-28 23:00:59 UTC #: data/ui/qt/preferences.ui.h:409 msgid "Background:" msgstr "Orqa fon:" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2015-03-28 23:00:59 UTC #: data/ui/qt/preferences.ui.h:411 msgid "Appearance" msgstr "Ko‘rinishi" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2014-02-08 13:06:42 UTC #: pybiklib/ext/qt.py:1578 msgid "Move" msgstr "Ko‘chirish" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2014-02-08 13:06:42 UTC #: pybiklib/ext/qt.py:1581 msgid "Key" msgstr "Tugma" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2014-02-08 13:06:42 UTC #: pybiklib/ext/qt.py:1682 msgid "Open Image" msgstr "Rasmni ochish" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2015-04-12 13:32:36 UTC #: pybiklib/ext/qt.py:1720 msgid "plain" msgstr "tekis" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2014-02-08 13:03:29 UTC #: pybiklib/ext/qt.py:1723 msgid "select …" msgstr "tanlash..." # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2014-02-08 13:03:29 UTC #: pybiklib/ext/qtui.py:94 msgid "Press a key …" msgstr "Tugmani bosing:" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2014-02-08 14:00:18 UTC #. Add whatever keywords you want in your language, separated by semicolons, last character must be a semicolon. These keywords are used when searching for applications in Unity, GNOME Shell, etc. #: data/app-meta/pybik.desktop.in:10 msgid "rubik;cube;puzzle;magic;" msgstr "rubik;kubik;boshqotirma;sehrli;" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2014-02-08 14:00:18 UTC #: data/plugins/01-challenges.plugins.py:18 #: data/plugins/01-challenges.plugins.py:21 #: data/plugins/01-challenges.plugins.py:24 #: data/plugins/01-challenges.plugins.py:27 #: data/plugins/01-challenges.plugins.py:30 #: data/plugins/01-challenges.plugins.py:33 #: data/plugins/01-challenges.plugins.py:36 #: data/plugins/01-challenges.plugins.py:39 #: data/plugins/01-challenges.plugins.py:42 #: data/plugins/01-challenges.plugins.py:45 #: data/plugins/01-challenges.plugins.py:48 msgid "Challenges" msgstr "Muammolar" #: data/plugins/01-challenges.plugins.py:19 msgid "Solve random puzzle" msgstr "" #: data/plugins/01-challenges.plugins.py:22 #: data/plugins/01-challenges.plugins.py:25 #: data/plugins/01-challenges.plugins.py:28 #: data/plugins/01-challenges.plugins.py:31 #: data/plugins/01-challenges.plugins.py:34 #: data/plugins/01-challenges.plugins.py:37 #: data/plugins/01-challenges.plugins.py:40 #: data/plugins/01-challenges.plugins.py:43 #: data/plugins/01-challenges.plugins.py:46 #: data/plugins/01-challenges.plugins.py:49 msgid "Solve in {} move" msgid_plural "Solve in {} moves" msgstr[0] "" msgstr[1] "" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2014-02-08 14:02:14 UTC #: data/plugins/10-beginners.plugins.py:31 #: data/plugins/10-beginners.plugins.py:34 #: data/plugins/10-beginners.plugins.py:56 #: data/plugins/10-beginners.plugins.py:73 #: data/plugins/10-beginners.plugins.py:100 #: data/plugins/10-beginners.plugins.py:118 #: data/plugins/10-beginners.plugins.py:140 #: data/plugins/10-beginners.plugins.py:158 #: data/plugins/14-leyan-lo.plugins.py:21 #: data/plugins/14-leyan-lo.plugins.py:24 #: data/plugins/14-leyan-lo.plugins.py:53 #: data/plugins/14-leyan-lo.plugins.py:74 #: data/plugins/14-leyan-lo.plugins.py:90 #: data/plugins/14-leyan-lo.plugins.py:107 #: data/plugins/14-leyan-lo.plugins.py:129 #: data/plugins/14-leyan-lo.plugins.py:170 #: data/plugins/150-spiegel.plugins.py:32 #: data/plugins/150-spiegel.plugins.py:35 #: data/plugins/150-spiegel.plugins.py:64 #: data/plugins/150-spiegel.plugins.py:85 #: data/plugins/150-spiegel.plugins.py:100 #: data/plugins/150-spiegel.plugins.py:113 #: data/plugins/150-spiegel.plugins.py:130 #: data/plugins/150-spiegel.plugins.py:141 #: data/plugins/151-spiegel-improved.plugins.py:20 #: data/plugins/151-spiegel-improved.plugins.py:23 #: data/plugins/151-spiegel-improved.plugins.py:68 #: data/plugins/151-spiegel-improved.plugins.py:107 #: data/plugins/151-spiegel-improved.plugins.py:139 #: data/plugins/151-spiegel-improved.plugins.py:165 #: data/plugins/151-spiegel-improved.plugins.py:183 #: data/plugins/151-spiegel-improved.plugins.py:197 #: data/plugins/20-2x2x2.plugins.py:18 data/plugins/20-2x2x2.plugins.py:21 #: data/plugins/20-2x2x2.plugins.py:37 data/plugins/20-2x2x2.plugins.py:55 msgid "Solvers" msgstr "Yechimlar" #: data/plugins/10-beginners.plugins.py:32 #: data/plugins/10-beginners.plugins.py:35 #: data/plugins/10-beginners.plugins.py:57 #: data/plugins/10-beginners.plugins.py:74 #: data/plugins/10-beginners.plugins.py:101 #: data/plugins/10-beginners.plugins.py:119 #: data/plugins/10-beginners.plugins.py:141 #: data/plugins/10-beginners.plugins.py:159 msgid "Beginner's method" msgstr "" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2014-02-08 14:02:14 UTC #: data/plugins/10-beginners.plugins.py:36 #: data/plugins/14-leyan-lo.plugins.py:26 #: data/plugins/150-spiegel.plugins.py:37 #: data/plugins/151-spiegel-improved.plugins.py:25 msgid "Top edges" msgstr "Yuqori chegaralar" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2014-02-08 14:02:14 UTC #: data/plugins/10-beginners.plugins.py:58 #: data/plugins/14-leyan-lo.plugins.py:55 #: data/plugins/150-spiegel.plugins.py:66 #: data/plugins/151-spiegel-improved.plugins.py:70 msgid "Top corners" msgstr "Yuqori burchaklar" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2014-02-08 14:04:29 UTC #: data/plugins/10-beginners.plugins.py:75 #: data/plugins/14-leyan-lo.plugins.py:76 #: data/plugins/150-spiegel.plugins.py:87 #: data/plugins/151-spiegel-improved.plugins.py:109 msgid "Middle slice" msgstr "O‘rtadagi qism" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2014-02-08 14:04:29 UTC #: data/plugins/10-beginners.plugins.py:102 #: data/plugins/14-leyan-lo.plugins.py:92 #: data/plugins/150-spiegel.plugins.py:115 #: data/plugins/151-spiegel-improved.plugins.py:167 msgid "Bottom edge orient" msgstr "Pastgi chegara hududi" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2014-02-08 14:04:29 UTC #: data/plugins/10-beginners.plugins.py:120 #: data/plugins/14-leyan-lo.plugins.py:131 #: data/plugins/150-spiegel.plugins.py:143 #: data/plugins/151-spiegel-improved.plugins.py:199 #: data/plugins/20-2x2x2.plugins.py:57 msgid "Bottom corner orient" msgstr "Pastgi burchak hududi" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2014-02-08 14:04:29 UTC #: data/plugins/10-beginners.plugins.py:142 #: data/plugins/14-leyan-lo.plugins.py:109 #: data/plugins/150-spiegel.plugins.py:132 #: data/plugins/151-spiegel-improved.plugins.py:185 #: data/plugins/20-2x2x2.plugins.py:39 msgid "Bottom corner place" msgstr "Pastgi burchak joyi" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2014-02-08 14:04:29 UTC #: data/plugins/10-beginners.plugins.py:160 #: data/plugins/14-leyan-lo.plugins.py:172 #: data/plugins/150-spiegel.plugins.py:102 #: data/plugins/151-spiegel-improved.plugins.py:141 msgid "Bottom edge place" msgstr "Pastgi chegara joyi" #. Leyan Lo is the inventor of the solution #: data/plugins/14-leyan-lo.plugins.py:23 #: data/plugins/14-leyan-lo.plugins.py:25 #: data/plugins/14-leyan-lo.plugins.py:54 #: data/plugins/14-leyan-lo.plugins.py:75 #: data/plugins/14-leyan-lo.plugins.py:91 #: data/plugins/14-leyan-lo.plugins.py:108 #: data/plugins/14-leyan-lo.plugins.py:130 #: data/plugins/14-leyan-lo.plugins.py:171 msgid "Leyan Lo" msgstr "" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2014-02-08 14:02:14 UTC #. Spiegel is a german magazine #: data/plugins/150-spiegel.plugins.py:34 #: data/plugins/150-spiegel.plugins.py:36 #: data/plugins/150-spiegel.plugins.py:65 #: data/plugins/150-spiegel.plugins.py:86 #: data/plugins/150-spiegel.plugins.py:101 #: data/plugins/150-spiegel.plugins.py:114 #: data/plugins/150-spiegel.plugins.py:131 #: data/plugins/150-spiegel.plugins.py:142 msgid "Spiegel" msgstr "Spiegel" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2014-02-08 14:04:29 UTC #. Spiegel is a german magazine #: data/plugins/151-spiegel-improved.plugins.py:22 #: data/plugins/151-spiegel-improved.plugins.py:24 #: data/plugins/151-spiegel-improved.plugins.py:69 #: data/plugins/151-spiegel-improved.plugins.py:108 #: data/plugins/151-spiegel-improved.plugins.py:140 #: data/plugins/151-spiegel-improved.plugins.py:166 #: data/plugins/151-spiegel-improved.plugins.py:184 #: data/plugins/151-spiegel-improved.plugins.py:198 msgid "Spiegel improved" msgstr "Shpigel yaxshilandi" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2014-02-08 14:04:29 UTC #: data/plugins/20-2x2x2.plugins.py:19 data/plugins/20-2x2x2.plugins.py:22 #: data/plugins/20-2x2x2.plugins.py:38 data/plugins/20-2x2x2.plugins.py:56 msgid "2×2×2" msgstr "2×2×2" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2014-02-08 14:04:29 UTC #: data/plugins/20-2x2x2.plugins.py:23 msgid "Top slice" msgstr "Yuqori qism" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2014-02-08 14:06:54 UTC #: data/plugins/80-pretty-patterns.plugins.py:20 #: data/plugins/80-pretty-patterns.plugins.py:23 #: data/plugins/80-pretty-patterns.plugins.py:27 #: data/plugins/80-pretty-patterns.plugins.py:31 #: data/plugins/80-pretty-patterns.plugins.py:35 #: data/plugins/80-pretty-patterns.plugins.py:40 #: data/plugins/80-pretty-patterns.plugins.py:44 msgid "Stripes" msgstr "Yo‘laklar" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2014-02-08 14:06:54 UTC #: data/plugins/80-pretty-patterns.plugins.py:49 #: data/plugins/80-pretty-patterns.plugins.py:53 msgid "Criss-Cross" msgstr "Criss-Cross" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2014-02-08 14:06:54 UTC #: data/plugins/80-pretty-patterns.plugins.py:57 msgid "Fried Eggs" msgstr "Qovurilgan tuxumlar" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2014-02-08 14:06:54 UTC #: data/plugins/80-pretty-patterns.plugins.py:61 msgid "Big Fried Eggs" msgstr "Katta qovurilgan tuxumlar" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2014-02-08 14:06:54 UTC #: data/plugins/80-pretty-patterns.plugins.py:65 #: data/plugins/80-pretty-patterns.plugins.py:69 msgid "4 Fried Eggs" msgstr "4 ta qovurilgan tuxumlar" #: data/plugins/80-pretty-patterns.plugins.py:73 msgid "2 Fried Eggs" msgstr "" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2014-02-08 14:06:54 UTC #: data/plugins/80-pretty-patterns.plugins.py:77 msgid "Chessboard" msgstr "Shaxmat" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2014-02-08 14:06:54 UTC #: data/plugins/80-pretty-patterns.plugins.py:83 msgid "Cross" msgstr "Plus" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2014-02-08 14:06:54 UTC #: data/plugins/80-pretty-patterns.plugins.py:87 msgid "Zig Zag" msgstr "Zig Zag" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2014-02-08 14:06:54 UTC #. T is the shape formed by the cube labels. T-Time is a pun (Tea Time) and not suitable for literal translation. Don't translate it or use something common or whatever you think makes sense. #: data/plugins/80-pretty-patterns.plugins.py:93 #: data/plugins/80-pretty-patterns.plugins.py:96 #: data/plugins/80-pretty-patterns.plugins.py:100 #: data/plugins/80-pretty-patterns.plugins.py:104 #: data/plugins/80-pretty-patterns.plugins.py:108 #: data/plugins/80-pretty-patterns.plugins.py:112 msgid "T-Time" msgstr "T-Time" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2014-02-08 14:06:54 UTC #. C is the shape formed by the cube labels #: data/plugins/80-pretty-patterns.plugins.py:118 msgid "C" msgstr "C" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2014-02-08 14:09:04 UTC #: data/plugins/80-pretty-patterns.plugins.py:121 msgid "Cube in a Cube" msgstr "Kubikdagi kubik" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2014-02-08 14:09:04 UTC #: data/plugins/80-pretty-patterns.plugins.py:125 msgid "Striped Cube in a Cube" msgstr "Kubikdagi chiziqchali kubik" #: data/plugins/80-pretty-patterns.plugins.py:129 msgid "Six square cuboids" msgstr "" #. Superflip may be not translated, because it has a special meaning in the mathematical theory behind the Rubik's Cube. #: data/plugins/80-pretty-patterns.plugins.py:135 msgid "Superflip" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:138 msgid "Superflip easy" msgstr "" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2014-02-08 14:09:04 UTC #: data/plugins/80-pretty-patterns.plugins.py:142 msgid "Green Mamba" msgstr "Yashil mamba" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2014-02-08 14:09:04 UTC #: data/plugins/80-pretty-patterns.plugins.py:146 msgid "Anaconda" msgstr "Anakonda" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2014-02-08 14:09:04 UTC #: data/plugins/80-pretty-patterns.plugins.py:150 msgid "Duck Feet" msgstr "O‘rdak oyog‘i" #: data/plugins/80-pretty-patterns.plugins.py:154 #: data/plugins/80-pretty-patterns.plugins.py:158 #: data/plugins/80-pretty-patterns.plugins.py:162 #: data/plugins/80-pretty-patterns.plugins.py:166 #: data/plugins/80-pretty-patterns.plugins.py:170 #: data/plugins/80-pretty-patterns.plugins.py:174 #: data/plugins/80-pretty-patterns.plugins.py:178 #: data/plugins/80-pretty-patterns.plugins.py:182 msgid "Plus" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:186 #: data/plugins/80-pretty-patterns.plugins.py:191 #: data/plugins/80-pretty-patterns.plugins.py:196 #: data/plugins/80-pretty-patterns.plugins.py:200 msgid "Minus" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:204 msgid "Volcano" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:208 msgid "Checkerboard (easy)" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:212 msgid "Checkerboard (fast)" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:216 msgid "Mixed Checkerboard" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:220 msgid "Tipi" msgstr "" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2014-02-08 14:09:04 UTC #: data/plugins/90-library.plugins.py:18 data/plugins/90-library.plugins.py:22 #: data/plugins/90-library.plugins.py:26 data/plugins/90-library.plugins.py:30 #: data/plugins/90-library.plugins.py:34 data/plugins/90-library.plugins.py:38 #: data/plugins/90-library.plugins.py:42 data/plugins/90-library.plugins.py:46 #: data/plugins/90-library.plugins.py:50 data/plugins/90-library.plugins.py:54 #: data/plugins/90-library.plugins.py:58 data/plugins/90-library.plugins.py:62 #: data/plugins/90-library.plugins.py:66 data/plugins/90-library.plugins.py:70 #: data/plugins/90-library.plugins.py:74 data/plugins/90-library.plugins.py:78 #: data/plugins/90-library.plugins.py:82 data/plugins/90-library.plugins.py:86 #: data/plugins/90-library.plugins.py:91 data/plugins/90-library.plugins.py:96 #: data/plugins/90-library.plugins.py:101 #: data/plugins/90-library.plugins.py:105 #: data/plugins/90-library.plugins.py:110 #: data/plugins/90-library.plugins.py:115 #: data/plugins/90-library.plugins.py:119 #: data/plugins/90-library.plugins.py:123 #: data/plugins/90-library.plugins.py:127 msgid "Library" msgstr "Kutubxona" #: data/plugins/90-library.plugins.py:19 data/plugins/90-library.plugins.py:23 #: data/plugins/90-library.plugins.py:27 data/plugins/90-library.plugins.py:31 #: data/plugins/90-library.plugins.py:35 msgid "Swap edges" msgstr "" #: data/plugins/90-library.plugins.py:20 msgid "3 edges ⟳, top layer" msgstr "" #: data/plugins/90-library.plugins.py:24 msgid "3 edges ⟲, top layer" msgstr "" #: data/plugins/90-library.plugins.py:28 msgid "3 edges, middle layer" msgstr "" #: data/plugins/90-library.plugins.py:32 msgid "4 edges, front and right" msgstr "" #: data/plugins/90-library.plugins.py:36 msgid "4 edges, front and back" msgstr "" #: data/plugins/90-library.plugins.py:39 msgid "Swap 2 edges and 2 corners, top layer" msgstr "" #: data/plugins/90-library.plugins.py:43 data/plugins/90-library.plugins.py:47 msgid "Flip edges" msgstr "" #: data/plugins/90-library.plugins.py:44 msgid "4 edges" msgstr "" #: data/plugins/90-library.plugins.py:48 msgid "2 edges, top layer" msgstr "" #: data/plugins/90-library.plugins.py:51 data/plugins/90-library.plugins.py:55 #: data/plugins/90-library.plugins.py:59 data/plugins/90-library.plugins.py:63 #: data/plugins/90-library.plugins.py:67 data/plugins/90-library.plugins.py:71 msgid "Swap corners" msgstr "" #: data/plugins/90-library.plugins.py:52 data/plugins/90-library.plugins.py:76 msgid "2 corners, top layer" msgstr "" #: data/plugins/90-library.plugins.py:56 msgid "2 corners diagonal, top layer" msgstr "" #: data/plugins/90-library.plugins.py:60 data/plugins/90-library.plugins.py:80 msgid "3 corners ⟳, top layer" msgstr "" #: data/plugins/90-library.plugins.py:64 msgid "3 corners ⟲, top layer" msgstr "" #: data/plugins/90-library.plugins.py:68 msgid "4 corners, top layer" msgstr "" #: data/plugins/90-library.plugins.py:72 msgid "2 corners, partial sequence, top layer" msgstr "" #: data/plugins/90-library.plugins.py:75 data/plugins/90-library.plugins.py:79 #: data/plugins/90-library.plugins.py:83 data/plugins/90-library.plugins.py:87 msgid "Rotate corners" msgstr "" #: data/plugins/90-library.plugins.py:84 msgid "1 corner ⟳, partial sequence, top layer" msgstr "" #: data/plugins/90-library.plugins.py:88 msgid "1 corner ⟲, partial sequence, top layer" msgstr "" #: data/plugins/90-library.plugins.py:92 data/plugins/90-library.plugins.py:97 #: data/plugins/90-library.plugins.py:102 #: data/plugins/90-library.plugins.py:111 msgid "Rotate center" msgstr "" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2014-02-08 14:11:15 UTC #. 2 rotations of the center face in the upper layer #: data/plugins/90-library.plugins.py:94 msgid "2×Up" msgstr "2×yuqoriga" #. Up clockwise and front clockwise #: data/plugins/90-library.plugins.py:99 msgid "Up ⟳ and front ⟳" msgstr "" #. Up clockwise and front counterclockwise #: data/plugins/90-library.plugins.py:104 msgid "Up ⟳ and front ⟲" msgstr "" #: data/plugins/90-library.plugins.py:106 msgid "Swap center parts, up and front" msgstr "" #. Up clockwise and down counterclockwise #: data/plugins/90-library.plugins.py:113 msgid "Up ⟳ and down ⟲" msgstr "" #: data/plugins/90-library.plugins.py:116 #: data/plugins/90-library.plugins.py:120 #: data/plugins/90-library.plugins.py:124 #: data/plugins/90-library.plugins.py:128 msgid "Misc" msgstr "" #. Yields in a rotated back layer, but the sequence of moves does not touch the back layer #: data/plugins/90-library.plugins.py:118 #: data/plugins/90-library.plugins.py:125 #: data/plugins/90-library.plugins.py:129 msgid "Back without back" msgstr "" #: data/plugins/90-library.plugins.py:121 msgid "2×Back without back" msgstr "" #: data/plugins/95-transformations.plugins.py:18 #: data/plugins/95-transformations.plugins.py:21 #: data/plugins/95-transformations.plugins.py:24 msgid "Move transformations" msgstr "" #: data/plugins/95-transformations.plugins.py:19 msgid "Invert move sequence" msgstr "" #: data/plugins/95-transformations.plugins.py:22 msgid "Normalize cube rotations" msgstr "" #: data/plugins/95-transformations.plugins.py:25 msgid "Normalize move sequence" msgstr "" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2014-02-08 13:17:32 UTC #: buildlib/modeldef.py:110 msgid "Brick" msgstr "G‘isht" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2014-02-08 13:17:32 UTC #: buildlib/modeldef.py:111 #, python-brace-format msgid "{0}×{1}×{2}-Brick" msgstr "{0}×{1}×{2}-g‘isht" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2014-02-08 13:17:32 UTC #: buildlib/modeldef.py:112 msgid "Width:" msgstr "Eni:" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2014-02-08 13:52:21 UTC #: buildlib/modeldef.py:112 buildlib/modeldef.py:151 buildlib/modeldef.py:249 #: buildlib/modeldef.py:300 buildlib/modeldef.py:311 msgid "Height:" msgstr "Bo‘yi:" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2014-02-08 13:52:21 UTC #: buildlib/modeldef.py:112 msgid "Depth:" msgstr "Chuqurligi:" #: buildlib/modeldef.py:120 buildlib/modeldef.py:257 buildlib/modeldef.py:319 #: buildlib/modeldef.py:374 buildlib/modeldef.py:433 msgid "up" msgstr "" #: buildlib/modeldef.py:120 buildlib/modeldef.py:205 buildlib/modeldef.py:257 #: buildlib/modeldef.py:319 buildlib/modeldef.py:373 buildlib/modeldef.py:430 msgid "down" msgstr "" #: buildlib/modeldef.py:120 buildlib/modeldef.py:205 buildlib/modeldef.py:257 msgid "left" msgstr "" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2014-02-08 13:06:42 UTC #: buildlib/modeldef.py:120 buildlib/modeldef.py:205 buildlib/modeldef.py:257 msgid "right" msgstr "" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2014-02-08 13:06:42 UTC #: buildlib/modeldef.py:120 buildlib/modeldef.py:374 msgid "front" msgstr "" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2015-03-28 23:00:59 UTC #: buildlib/modeldef.py:120 buildlib/modeldef.py:205 buildlib/modeldef.py:257 #: buildlib/modeldef.py:320 buildlib/modeldef.py:373 msgid "back" msgstr "" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2014-02-08 13:17:32 UTC #: buildlib/modeldef.py:149 msgid "Tower" msgstr "Minora" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2014-02-08 13:17:32 UTC #: buildlib/modeldef.py:150 #, python-brace-format msgid "{0}×{1}-Tower" msgstr "{0}×{1}-minora" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2014-02-08 13:17:32 UTC #: buildlib/modeldef.py:151 buildlib/modeldef.py:249 buildlib/modeldef.py:300 #: buildlib/modeldef.py:311 msgid "Basis:" msgstr "Asosiy:" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2014-02-08 13:17:32 UTC #: buildlib/modeldef.py:163 msgid "Cube" msgstr "Kubik" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2014-02-08 13:25:10 UTC #: buildlib/modeldef.py:164 #, python-brace-format msgid "{0}×{0}×{0}-Cube" msgstr "{0}×{0}×{0}-kubik" # translated by: Akmal Xushvaqov https://launchpad.net/~uzadmin on 2014-02-08 13:06:42 UTC #: buildlib/modeldef.py:165 buildlib/modeldef.py:197 buildlib/modeldef.py:365 #: buildlib/modeldef.py:422 msgid "Size:" msgstr "Hajmi:" #: buildlib/modeldef.py:177 buildlib/modeldef.py:178 msgid "Void Cube" msgstr "" #: buildlib/modeldef.py:195 msgid "Tetrahedron" msgstr "" #: buildlib/modeldef.py:196 #, python-brace-format msgid "{0}-Tetrahedron" msgstr "" #: buildlib/modeldef.py:247 msgid "Triangular Prism" msgstr "" #: buildlib/modeldef.py:248 #, python-brace-format msgid "{0}×{1} Triangular Prism" msgstr "" #: buildlib/modeldef.py:298 msgid "Triangular Prism (complex)" msgstr "" #: buildlib/modeldef.py:299 #, python-brace-format msgid "{0}×{1} Triangular Prism (complex)" msgstr "" #: buildlib/modeldef.py:309 msgid "Pentagonal Prism" msgstr "" #: buildlib/modeldef.py:310 #, python-brace-format msgid "{0}×{1} Pentagonal Prism" msgstr "" #: buildlib/modeldef.py:320 buildlib/modeldef.py:373 msgid "front-right" msgstr "" #: buildlib/modeldef.py:320 buildlib/modeldef.py:374 msgid "back-right" msgstr "" #: buildlib/modeldef.py:320 buildlib/modeldef.py:374 msgid "back-left" msgstr "" #: buildlib/modeldef.py:320 buildlib/modeldef.py:373 msgid "front-left" msgstr "" #: buildlib/modeldef.py:354 msgid "Pentagonal Prism (stretched)" msgstr "" #: buildlib/modeldef.py:355 #, python-brace-format msgid "{0}×{1} Pentagonal Prism (stretched)" msgstr "" #: buildlib/modeldef.py:363 msgid "Octahedron" msgstr "" #: buildlib/modeldef.py:364 #, python-brace-format msgid "{0}-Octahedron" msgstr "" #: buildlib/modeldef.py:420 msgid "Dodecahedron" msgstr "" #: buildlib/modeldef.py:421 #, python-brace-format msgid "{0}-Dodecahedron" msgstr "" #: buildlib/modeldef.py:430 msgid "down-back-right" msgstr "" #: buildlib/modeldef.py:430 msgid "down-front-right" msgstr "" #: buildlib/modeldef.py:431 msgid "down-front" msgstr "" #: buildlib/modeldef.py:431 msgid "down-front-left" msgstr "" #: buildlib/modeldef.py:431 msgid "down-back-left" msgstr "" #: buildlib/modeldef.py:432 msgid "up-back" msgstr "" #: buildlib/modeldef.py:432 msgid "up-back-right" msgstr "" #: buildlib/modeldef.py:432 msgid "up-front-right" msgstr "" #: buildlib/modeldef.py:433 msgid "up-front-left" msgstr "" #: buildlib/modeldef.py:433 msgid "up-back-left" msgstr "" pybik-3.0/po/el.po0000664000175000017500000014530713173052130014225 0ustar barccbarcc00000000000000# Greek translation for pybik # Copyright (c) 2013-2017 Rosetta Contributors and Canonical Ltd 2013 # This file is distributed under the same license as the pybik package. # FIRST AUTHOR , 2013. # msgid "" msgstr "" "Project-Id-Version: pybik\n" "Report-Msgid-Bugs-To: https://bugs.launchpad.net/pybik/+filebug\n" "POT-Creation-Date: 2017-09-10 21:58+0200\n" "PO-Revision-Date: 2017-09-17 05:55+0000\n" "Last-Translator: B. Clausius \n" "Language-Team: Greek \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Launchpad-Export-Date: 2017-09-18 05:31+0000\n" "X-Generator: Launchpad (build 18449)\n" "Language: el\n" # translated by: mara sdr https://launchpad.net/~paren8esis on 2013-06-09 10:55:36 UTC # reviewed by: George Christofis https://launchpad.net/~geochr on 2013-06-09 12:16:25 UTC #: pybiklib/application.py:294 msgid "Press the Esc key to exit Edit Mode" msgstr "Πατήστε Esc για να φύγετε από τη λειτουργία Επεξεργασίας" # translated by: mara sdr https://launchpad.net/~paren8esis on 2013-06-09 11:59:31 UTC # reviewed by: George Christofis https://launchpad.net/~geochr on 2013-06-09 12:16:25 UTC #. substitution for {move_text} in statusbar text #: pybiklib/application.py:302 #, python-brace-format msgid "{current} / {total} move" msgid_plural "{current} / {total} moves" msgstr[0] "{current} / {total} κίνηση" msgstr[1] "{current} / {total} κινήσεις" # translated by: mara sdr https://launchpad.net/~paren8esis on 2013-06-09 11:59:31 UTC # reviewed by: George Christofis https://launchpad.net/~geochr on 2013-06-09 12:16:25 UTC #. substitution for {solved_text} in statusbar text #: pybiklib/application.py:306 msgid "solved" msgstr "επιλυμένο" # translated by: mara sdr https://launchpad.net/~paren8esis on 2013-06-09 11:59:31 UTC # reviewed by: George Christofis https://launchpad.net/~geochr on 2013-06-09 12:16:25 UTC #: pybiklib/application.py:306 msgid "not solved" msgstr "μη επιλυμένο" # translated by: mara sdr https://launchpad.net/~paren8esis on 2013-06-09 12:57:40 UTC # reviewed by: George Christofis https://launchpad.net/~geochr on 2013-06-09 13:01:07 UTC #. statusbar text #: pybiklib/application.py:309 #, python-brace-format msgid "{move_text}, {solved_text}" msgstr "{move_text}, {solved_text}" # translated by: mara sdr https://launchpad.net/~paren8esis on 2013-06-09 10:55:36 UTC # reviewed by: George Christofis https://launchpad.net/~geochr on 2013-06-09 12:16:25 UTC #: pybiklib/application.py:314 msgid "Congratulations, you have solved the puzzle!" msgstr "Συγχαρητήρια, επιλύσατε το γρίφο!" # translated by: mara sdr https://launchpad.net/~paren8esis on 2013-06-09 10:55:36 UTC # reviewed by: George Christofis https://launchpad.net/~geochr on 2013-06-09 12:16:25 UTC #. Name of the application, probably should not be translated. #: pybiklib/config.py:35 data/ui/qt/main.ui.h:271 #: data/app-meta/pybik.desktop.in:3 msgid "Pybik" msgstr "Pybik" #. short description #: pybiklib/config.py:65 data/app-meta/pybik.desktop.in:4 msgid "Rubik's cube game" msgstr "" #. The next 7 lines belong together and form the long description #: pybiklib/config.py:68 msgid "Pybik is a 3D puzzle game about the cube invented by Ernő Rubik." msgstr "" #: pybiklib/config.py:70 msgid "" "Various 3D puzzles, such as cubes, towers, prisms, tetrahedra, octahedra, " "dodecahedra and many more" msgstr "" #: pybiklib/config.py:71 msgid "Solvers for some puzzles" msgstr "" # translated by: mara sdr https://launchpad.net/~paren8esis on 2013-06-09 11:57:28 UTC # reviewed by: George Christofis https://launchpad.net/~geochr on 2013-06-09 12:53:38 UTC #. Use something that is common in the Rubik scene in your language, sometimes it's just the equivalent of "patterns". #: pybiklib/config.py:72 data/plugins/80-pretty-patterns.plugins.py:19 #: data/plugins/80-pretty-patterns.plugins.py:22 #: data/plugins/80-pretty-patterns.plugins.py:26 #: data/plugins/80-pretty-patterns.plugins.py:30 #: data/plugins/80-pretty-patterns.plugins.py:34 #: data/plugins/80-pretty-patterns.plugins.py:39 #: data/plugins/80-pretty-patterns.plugins.py:43 #: data/plugins/80-pretty-patterns.plugins.py:48 #: data/plugins/80-pretty-patterns.plugins.py:52 #: data/plugins/80-pretty-patterns.plugins.py:56 #: data/plugins/80-pretty-patterns.plugins.py:60 #: data/plugins/80-pretty-patterns.plugins.py:64 #: data/plugins/80-pretty-patterns.plugins.py:68 #: data/plugins/80-pretty-patterns.plugins.py:72 #: data/plugins/80-pretty-patterns.plugins.py:76 #: data/plugins/80-pretty-patterns.plugins.py:82 #: data/plugins/80-pretty-patterns.plugins.py:86 #: data/plugins/80-pretty-patterns.plugins.py:91 #: data/plugins/80-pretty-patterns.plugins.py:95 #: data/plugins/80-pretty-patterns.plugins.py:99 #: data/plugins/80-pretty-patterns.plugins.py:103 #: data/plugins/80-pretty-patterns.plugins.py:107 #: data/plugins/80-pretty-patterns.plugins.py:111 #: data/plugins/80-pretty-patterns.plugins.py:116 #: data/plugins/80-pretty-patterns.plugins.py:120 #: data/plugins/80-pretty-patterns.plugins.py:124 #: data/plugins/80-pretty-patterns.plugins.py:128 #: data/plugins/80-pretty-patterns.plugins.py:133 #: data/plugins/80-pretty-patterns.plugins.py:137 #: data/plugins/80-pretty-patterns.plugins.py:141 #: data/plugins/80-pretty-patterns.plugins.py:145 #: data/plugins/80-pretty-patterns.plugins.py:149 #: data/plugins/80-pretty-patterns.plugins.py:153 #: data/plugins/80-pretty-patterns.plugins.py:157 #: data/plugins/80-pretty-patterns.plugins.py:161 #: data/plugins/80-pretty-patterns.plugins.py:165 #: data/plugins/80-pretty-patterns.plugins.py:169 #: data/plugins/80-pretty-patterns.plugins.py:173 #: data/plugins/80-pretty-patterns.plugins.py:177 #: data/plugins/80-pretty-patterns.plugins.py:181 #: data/plugins/80-pretty-patterns.plugins.py:185 #: data/plugins/80-pretty-patterns.plugins.py:190 #: data/plugins/80-pretty-patterns.plugins.py:195 #: data/plugins/80-pretty-patterns.plugins.py:199 #: data/plugins/80-pretty-patterns.plugins.py:203 #: data/plugins/80-pretty-patterns.plugins.py:207 #: data/plugins/80-pretty-patterns.plugins.py:211 #: data/plugins/80-pretty-patterns.plugins.py:215 #: data/plugins/80-pretty-patterns.plugins.py:219 msgid "Pretty patterns" msgstr "Όμορφα Μοτίβα" #: pybiklib/config.py:73 msgid "Editor for move sequences" msgstr "" #: pybiklib/config.py:74 msgid "Custom colors and images on the surface of the puzzles" msgstr "" # translated by: mara sdr https://launchpad.net/~paren8esis on 2013-06-09 12:57:40 UTC # reviewed by: George Christofis https://launchpad.net/~geochr on 2013-06-09 13:01:07 UTC #: pybiklib/config.py:78 msgid "" "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.\n" "\n" "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." msgstr "" "Το πρόγραμμα αυτό αποτελεί ελεύθερο λογισμικό: μπορείτε να το αναδιανείμετε " "και/ή να το τροποποιήσετε σύμφωνα με τους όρους της άδειας χρήσης GNU " "General Public License, όπως αυτή έχει δημοσιευτεί από το Free Software " "Foundation, είτε την έκδοση 3, ή (βάσει επιλογής σας) οποιαδήποτε " "μεταγενέστερη.\n" "\n" "Αυτό το πρόγραμμα διανέμεται με την ελπίδα ότι θα αποβεί χρήσιμο, αλλά ΧΩΡΙΣ " "ΚΑΜΙΑ ΕΓΓΥΗΣΗ, ούτε καν την εγγύηση που υπονοείται όσον αφορά την " "ΕΜΠΟΡΕΥΣΙΜΟΤΗΤΑ ή την ΚΑΤΑΛΛΗΛΟΤΗΤΑ ΓΙΑ ΣΥΓΚΕΚΡΙΜΕΝΟ ΣΚΟΠΟ. Για περισσότερες " "λεπτομέρειες ανατρέξτε στην άδεια χρήσης GNU General Public License." # translated by: mara sdr https://launchpad.net/~paren8esis on 2013-06-09 12:57:40 UTC # reviewed by: George Christofis https://launchpad.net/~geochr on 2013-06-09 13:01:07 UTC #. Text between "<" and ">" is expanded to a link by the program and should not be modified. #. Text between "" and "<|>" is the translatable text for the link. #: pybiklib/config.py:90 msgid "" "Read the full text of the GNU General Public " "License<|> or see ." msgstr "" "Διαβάστε το πλήρες κείμενο της άδειας GNU General " "Public License<|> ή επισκεφθείτε το ." # translated by: mara sdr https://launchpad.net/~paren8esis on 2013-06-09 11:05:13 UTC # reviewed by: George Christofis https://launchpad.net/~geochr on 2013-06-09 12:16:25 UTC #: pybiklib/config.py:93 msgid "" "You should have received a copy of the GNU General Public License along with " "this program. If not, see ." msgstr "" "Θα πρέπει να έχετε λάβει αντίγραφο της Γενικής Άδειας Δημόσιας Χρήσης GNU " "(GPL) μαζί με το πρόγραμμα. Εάν όχι, επισκεφθείτε το " "." # translated by: George Christofis https://launchpad.net/~geochr on 2013-06-09 12:26:48 UTC #: pybiklib/config.py:98 #, python-brace-format msgid "" "If you find any bugs in Pybik or have a suggestion for an improvement then " "please submit a <{CONTACT_FILEBUG}|>bug report<|>." msgstr "" "Αν βρείτε κάποια σφάλματα (bugs) στο Pybik ή αν έχετε κάποια πρόταση για " "βελτίωση, τότε παρακαλώ υποβάλετε μια <{CONTACT_FILEBUG}|>αναφορά " "σφάλματος<|>." # translated by: mara sdr https://launchpad.net/~paren8esis on 2013-06-09 11:05:13 UTC # reviewed by: George Christofis https://launchpad.net/~geochr on 2013-06-09 12:26:48 UTC #: pybiklib/config.py:103 msgid "" "Translations are managed by the " "Launchpad " "translation group<|>.\n" "\n" "If you want help to translate Pybik to your language you can do it through " "the web interface<|>.\n" "\n" "Read more about \"Translating with " "Launchpad\"<|> and " "\"Starting to " "translate\"<|>." msgstr "" "Οι μεταφράσεις βρίσκονται υπό τη διαχείριση της " "μεταφραστικής ομάδας του Launchpad<|>.\n" "\n" " Αν θέλετε να βοηθήσετε στη μετάφραση του Pybik, μπορείτε να το κάνετε μέσω " "διαδικτυακής διεπαφής<|>.\n" "\n" "Διαβάστε περισσότερα: " "\"Μεταφράζοντας στο Launchpad\"<|> " "και " "\"Ξεκινώντας " "τη μετάφραση\"<|>." #: pybiklib/dialogs.py:44 msgid "Lighting" msgstr "Φωτισμός" #: pybiklib/dialogs.py:44 msgid "Simple" msgstr "" #. labels are the colored stickers on the cube #: pybiklib/dialogs.py:46 msgid "Labels" msgstr "" #: pybiklib/dialogs.py:104 data/ui/qt/main.ui.h:275 msgid "Select Puzzle" msgstr "" # translated by: mara sdr https://launchpad.net/~paren8esis on 2013-06-09 11:57:28 UTC # reviewed by: George Christofis https://launchpad.net/~geochr on 2013-06-09 12:53:38 UTC #. 1 slice, 2 slices, 3 slices, ... #: pybiklib/dialogs.py:134 pybiklib/dialogs.py:154 pybiklib/dialogs.py:180 #: pybiklib/dialogs.py:201 msgid "{} slice" msgid_plural "{} slices" msgstr[0] "" msgstr[1] "" #: pybiklib/dialogs.py:196 pybiklib/dialogs.py:225 msgid "{}×{} slices" msgstr "" #. The next strings form the text in the help dialog: #. Title of the 1st paragraph #: pybiklib/dialogs.py:290 msgid "Using the mouse to rotate the cube" msgstr "" #. Text of the 1st paragraph, followed by bullet list items #: pybiklib/dialogs.py:292 msgid "" "Position the mouse cursor over the puzzle and you will see an arrow that " "gives you a hint in which direction the slice under the mouse cursor will be " "rotated." msgstr "" #: pybiklib/dialogs.py:294 msgid "" "The left mouse button rotates a single slice of the cube in the direction of " "the arrow." msgstr "" #: pybiklib/dialogs.py:295 msgid "" "The right mouse button rotates a single slice of the cube against the " "direction of the arrow." msgstr "" #: pybiklib/dialogs.py:296 msgid "" "To rotate the whole cube instead of a single slice press the Ctrl key " "together with the mouse button." msgstr "" #. Title of the 2nd paragraph #: pybiklib/dialogs.py:298 msgid "Using the keyboard to rotate the cube" msgstr "" #. Text of the 2nd paragraph, followed by bullet list items #: pybiklib/dialogs.py:300 msgid "" "Make sure the keyboard focus is on the cube area (e.g. click on the " "background of the cube). The keys can be configured in the preferences " "dialog, the default is:" msgstr "" #. before the item text is a list of keys #: pybiklib/dialogs.py:303 pybiklib/dialogs.py:318 msgid "Moves the left, right, upper, down, front or back slice clockwise." msgstr "" #: pybiklib/dialogs.py:304 pybiklib/dialogs.py:319 msgid "Moves a slice couterclockwise." msgstr "" #: pybiklib/dialogs.py:305 pybiklib/dialogs.py:320 msgid "Moves the whole cube." msgstr "" #. Title of the 3rd paragraph #: pybiklib/dialogs.py:307 msgid "Other keys and buttons" msgstr "" #. bullet list items of the 3rd paragraph #: pybiklib/dialogs.py:309 msgid "Mouse wheel – Zoom in/out" msgstr "" #: pybiklib/dialogs.py:310 msgid "" "Arrow keys, Left mouse button on the background – Changes the direction of " "looking at the cube." msgstr "" #: pybiklib/dialogs.py:311 msgid "" "Moves keyboard focus to the sequence editor above the cube area where you " "can edit the move sequence in the notation described below. Hit enter when " "done." msgstr "" #. Title of the 4th paragraph #: pybiklib/dialogs.py:315 msgid "Notation for moves" msgstr "" #. Text of the 4th paragraph, followed by bullet list items #: pybiklib/dialogs.py:317 msgid "" "All moves, however they are made, are displayed progressively above the cube " "area:" msgstr "" #: pybiklib/dialogs.py:321 msgid "" "Moves the first, second or third slice from left clockwise. The allowed " "numbers are in the range from 1 to the count of parallel slices. \"l1\" is " "always the same as \"l\" and for the classic 3×3×3-Cube \"l2\" is the same " "as \"r2-\" and \"l3\" is the same as \"r-\"." msgstr "" #: pybiklib/dialogs.py:325 msgid "You can use a space to separate groups of moves." msgstr "" # translated by: mara sdr https://launchpad.net/~paren8esis on 2013-06-09 11:09:55 UTC # reviewed by: George Christofis https://launchpad.net/~geochr on 2013-06-09 12:28:01 UTC #: pybiklib/dialogs.py:379 msgid "Pybik project website" msgstr "Ιστοσελίδα του Pybik project" #: pybiklib/pluginlib.py:301 msgid "This plugin does not work for any model." msgstr "" #: pybiklib/pluginlib.py:303 pybiklib/pluginlib.py:306 msgid "This plugin only works for:" msgstr "" #: pybiklib/pluginlib.py:498 msgid "This puzzle is not solvable." msgstr "" # translated by: mara sdr https://launchpad.net/~paren8esis on 2013-06-09 12:03:57 UTC # reviewed by: George Christofis https://launchpad.net/~geochr on 2013-06-09 12:30:35 UTC #. The following 6 words are for the antialiasing levels: disabled, ugly, low, medium, high, higher #: pybiklib/schema.py:211 msgid "disabled" msgstr "απενεργοποιημένο" # translated by: mara sdr https://launchpad.net/~paren8esis on 2013-06-09 11:11:05 UTC # reviewed by: George Christofis https://launchpad.net/~geochr on 2013-06-09 12:32:19 UTC #: pybiklib/schema.py:211 msgid "ugly" msgstr "άσχημο" # translated by: mara sdr https://launchpad.net/~paren8esis on 2013-06-09 12:03:57 UTC # reviewed by: George Christofis https://launchpad.net/~geochr on 2013-06-09 12:32:19 UTC #: pybiklib/schema.py:211 msgid "low" msgstr "χαμηλό" # translated by: mara sdr https://launchpad.net/~paren8esis on 2013-06-09 12:03:57 UTC # reviewed by: George Christofis https://launchpad.net/~geochr on 2013-06-09 12:32:19 UTC #: pybiklib/schema.py:212 msgid "medium" msgstr "μέτριο" # translated by: mara sdr https://launchpad.net/~paren8esis on 2013-06-09 12:03:57 UTC # reviewed by: George Christofis https://launchpad.net/~geochr on 2013-06-09 12:32:19 UTC #: pybiklib/schema.py:212 msgid "high" msgstr "υψηλό" # translated by: mara sdr https://launchpad.net/~paren8esis on 2013-06-09 12:03:57 UTC # reviewed by: George Christofis https://launchpad.net/~geochr on 2013-06-09 12:32:19 UTC #: pybiklib/schema.py:212 msgid "higher" msgstr "υψηλότερο" #: data/ui/qt/about.ui.h:212 msgid "About Pybik" msgstr "Σχετικά με το Pybik" #: data/ui/qt/about.ui.h:213 msgid "Translators:" msgstr "Μεταφραστές:" #: data/ui/qt/about.ui.h:214 msgid "About" msgstr "Περί" #: data/ui/qt/about.ui.h:215 msgid "Contribute" msgstr "" #: data/ui/qt/about.ui.h:216 msgid "License" msgstr "Άδεια χρήσης" #: data/ui/qt/help.ui.h:53 data/ui/qt/main.ui.h:297 msgid "Help" msgstr "" # translated by: George Christofis https://launchpad.net/~geochr on 2013-06-09 12:48:58 UTC #: data/ui/qt/main.ui.h:272 msgid "&New Challenge" msgstr "" #: data/ui/qt/main.ui.h:273 msgid "Ne&w Solved" msgstr "Επι&λυμένο" #: data/ui/qt/main.ui.h:274 msgid "&Quit" msgstr "Έ&ξοδος" #: data/ui/qt/main.ui.h:276 msgid "&Set as Initial State" msgstr "&Ορισμός ως αρχική κατάσταση" #: data/ui/qt/main.ui.h:277 msgid "&Reset Rotation" msgstr "Επα&ναφορά Περιστροφής" #: data/ui/qt/main.ui.h:278 msgid "&Preferences …" msgstr "Π&ροτιμήσεις …" #: data/ui/qt/main.ui.h:279 msgid "&Status Bar" msgstr "Γραμμή &κατάστασης" #: data/ui/qt/main.ui.h:280 msgid "&Info …" msgstr "Πληρο&φορίες …" #: data/ui/qt/main.ui.h:281 msgid "Rewind" msgstr "Πίσω" #: data/ui/qt/main.ui.h:282 msgid "Previous" msgstr "Προηγούμενο" #: data/ui/qt/main.ui.h:283 msgid "Stop" msgstr "Διακοπή" #: data/ui/qt/main.ui.h:284 msgid "Play" msgstr "Αναπαραγωγή" #: data/ui/qt/main.ui.h:285 msgid "Next" msgstr "Επόμενο" #: data/ui/qt/main.ui.h:286 msgid "Forward" msgstr "Μπροστά" #: data/ui/qt/main.ui.h:287 msgid "Add Mark" msgstr "Προσθήκη σημαδιού" #: data/ui/qt/main.ui.h:289 msgid "Mark the current place in the sequence of moves" msgstr "Σημάδεψε την τρέχουσα θέση στην αλληλουχία κινήσεων" #: data/ui/qt/main.ui.h:291 msgid "Remove Mark" msgstr "Απομάκρυνση σημαδιού" #: data/ui/qt/main.ui.h:293 msgid "Remove the mark at the current place in the sequence of moves" msgstr "Απομάκρυνε το σημάδι από την τρέχουσα θέση στην αλληλουχία κινήσεων" #: data/ui/qt/main.ui.h:295 msgid "&Edit Bar" msgstr "Μπάρα &Επεξεργασίας" #: data/ui/qt/main.ui.h:296 msgid "&Help …" msgstr "" #: data/ui/qt/preferences.ui.h:372 msgid "Preferences" msgstr "Προτιμήσεις" #: data/ui/qt/preferences.ui.h:373 msgid "Animation Speed:" msgstr "Ταχύτητα animation:" #: data/ui/qt/preferences.ui.h:375 msgid "Mirror Distance:" msgstr "Απόσταση καθρέφτη:" #: data/ui/qt/preferences.ui.h:377 msgid "Quality:" msgstr "" #: data/ui/qt/preferences.ui.h:380 msgid "" "Lower antialiasing has better performance, higher antialiasing has better " "quality." msgstr "" #: data/ui/qt/preferences.ui.h:382 msgid "Antialiasing:" msgstr "" # translated by: George Christofis https://launchpad.net/~geochr on 2013-06-09 12:26:48 UTC #: data/ui/qt/preferences.ui.h:384 msgid "The program needs to be restarted for the changes to take effect." msgstr "" "Το πρόγραμμα χρειάζεται επανεκκίνηση για να ενεργοποιηθούν οι αλλαγές." #: data/ui/qt/preferences.ui.h:385 msgid "Graphic" msgstr "Γραφικά" #: data/ui/qt/preferences.ui.h:386 msgid "Point and click, all directions" msgstr "" #: data/ui/qt/preferences.ui.h:387 msgid "Point and click, simplified" msgstr "" #: data/ui/qt/preferences.ui.h:388 msgid "Gestures" msgstr "" #: data/ui/qt/preferences.ui.h:389 msgid "Mouse" msgstr "Ποντίκι" #: data/ui/qt/preferences.ui.h:391 data/ui/qt/preferences.ui.h:393 msgid "Add" msgstr "Προσθήκη" #: data/ui/qt/preferences.ui.h:395 data/ui/qt/preferences.ui.h:397 msgid "Remove" msgstr "Αφαίρεση" #: data/ui/qt/preferences.ui.h:399 data/ui/qt/preferences.ui.h:401 msgid "Reset" msgstr "Επαναφορά" #: data/ui/qt/preferences.ui.h:402 msgid "Keys" msgstr "Πλήκτρα" #: data/ui/qt/preferences.ui.h:403 msgid "Color:" msgstr "Χρώμα:" #: data/ui/qt/preferences.ui.h:405 msgid "Image File:" msgstr "Αρχείο εικόνας:" #: data/ui/qt/preferences.ui.h:407 msgid "Tiled" msgstr "Πλακίδια" #: data/ui/qt/preferences.ui.h:408 msgid "Mosaic" msgstr "Μωσαϊκό" #: data/ui/qt/preferences.ui.h:409 msgid "Background:" msgstr "Φόντο:" #: data/ui/qt/preferences.ui.h:411 msgid "Appearance" msgstr "Εμφάνιση" # translated by: mara sdr https://launchpad.net/~paren8esis on 2013-06-09 12:02:44 UTC # reviewed by: George Christofis https://launchpad.net/~geochr on 2013-06-09 12:28:01 UTC #: pybiklib/ext/qt.py:1578 msgid "Move" msgstr "Κίνηση" # translated by: mara sdr https://launchpad.net/~paren8esis on 2013-06-09 11:06:11 UTC # reviewed by: George Christofis https://launchpad.net/~geochr on 2013-06-09 12:28:01 UTC #: pybiklib/ext/qt.py:1581 msgid "Key" msgstr "Πλήκτρο" # translated by: mara sdr https://launchpad.net/~paren8esis on 2013-06-09 11:06:11 UTC # reviewed by: George Christofis https://launchpad.net/~geochr on 2013-06-09 12:28:01 UTC #: pybiklib/ext/qt.py:1682 msgid "Open Image" msgstr "Άνοιγμα εικόνας" # translated by: mara sdr https://launchpad.net/~paren8esis on 2013-06-09 11:05:13 UTC # reviewed by: George Christofis https://launchpad.net/~geochr on 2013-06-09 12:26:48 UTC #: pybiklib/ext/qt.py:1720 msgid "plain" msgstr "απλό" # translated by: mara sdr https://launchpad.net/~paren8esis on 2013-06-09 12:01:23 UTC # reviewed by: George Christofis https://launchpad.net/~geochr on 2013-06-09 12:26:48 UTC #: pybiklib/ext/qt.py:1723 msgid "select …" msgstr "επιλογή ..." # translated by: mara sdr https://launchpad.net/~paren8esis on 2013-06-09 11:05:13 UTC # reviewed by: George Christofis https://launchpad.net/~geochr on 2013-06-09 12:26:48 UTC #: pybiklib/ext/qtui.py:94 msgid "Press a key …" msgstr "Πατήστε κάποιο πλήκτρο ..." # translated by: mara sdr https://launchpad.net/~paren8esis on 2013-06-09 11:26:34 UTC # reviewed by: George Christofis https://launchpad.net/~geochr on 2013-06-09 12:48:58 UTC #. Add whatever keywords you want in your language, separated by semicolons, last character must be a semicolon. These keywords are used when searching for applications in Unity, GNOME Shell, etc. #: data/app-meta/pybik.desktop.in:10 msgid "rubik;cube;puzzle;magic;" msgstr "" "ρούμπικ;ρουμπικ;κύβος;κυβος;γρίφος;γριφος;kybos;kivos;kyvos;kubos;kuvos;grifo" "s;" # translated by: George Christofis https://launchpad.net/~geochr on 2013-06-09 12:48:58 UTC #: data/plugins/01-challenges.plugins.py:18 #: data/plugins/01-challenges.plugins.py:21 #: data/plugins/01-challenges.plugins.py:24 #: data/plugins/01-challenges.plugins.py:27 #: data/plugins/01-challenges.plugins.py:30 #: data/plugins/01-challenges.plugins.py:33 #: data/plugins/01-challenges.plugins.py:36 #: data/plugins/01-challenges.plugins.py:39 #: data/plugins/01-challenges.plugins.py:42 #: data/plugins/01-challenges.plugins.py:45 #: data/plugins/01-challenges.plugins.py:48 msgid "Challenges" msgstr "Δοκιμασίες" #: data/plugins/01-challenges.plugins.py:19 msgid "Solve random puzzle" msgstr "" #: data/plugins/01-challenges.plugins.py:22 #: data/plugins/01-challenges.plugins.py:25 #: data/plugins/01-challenges.plugins.py:28 #: data/plugins/01-challenges.plugins.py:31 #: data/plugins/01-challenges.plugins.py:34 #: data/plugins/01-challenges.plugins.py:37 #: data/plugins/01-challenges.plugins.py:40 #: data/plugins/01-challenges.plugins.py:43 #: data/plugins/01-challenges.plugins.py:46 #: data/plugins/01-challenges.plugins.py:49 msgid "Solve in {} move" msgid_plural "Solve in {} moves" msgstr[0] "" msgstr[1] "" # translated by: mara sdr https://launchpad.net/~paren8esis on 2013-06-09 11:27:09 UTC # reviewed by: George Christofis https://launchpad.net/~geochr on 2013-06-09 12:52:36 UTC #: data/plugins/10-beginners.plugins.py:31 #: data/plugins/10-beginners.plugins.py:34 #: data/plugins/10-beginners.plugins.py:56 #: data/plugins/10-beginners.plugins.py:73 #: data/plugins/10-beginners.plugins.py:100 #: data/plugins/10-beginners.plugins.py:118 #: data/plugins/10-beginners.plugins.py:140 #: data/plugins/10-beginners.plugins.py:158 #: data/plugins/14-leyan-lo.plugins.py:21 #: data/plugins/14-leyan-lo.plugins.py:24 #: data/plugins/14-leyan-lo.plugins.py:53 #: data/plugins/14-leyan-lo.plugins.py:74 #: data/plugins/14-leyan-lo.plugins.py:90 #: data/plugins/14-leyan-lo.plugins.py:107 #: data/plugins/14-leyan-lo.plugins.py:129 #: data/plugins/14-leyan-lo.plugins.py:170 #: data/plugins/150-spiegel.plugins.py:32 #: data/plugins/150-spiegel.plugins.py:35 #: data/plugins/150-spiegel.plugins.py:64 #: data/plugins/150-spiegel.plugins.py:85 #: data/plugins/150-spiegel.plugins.py:100 #: data/plugins/150-spiegel.plugins.py:113 #: data/plugins/150-spiegel.plugins.py:130 #: data/plugins/150-spiegel.plugins.py:141 #: data/plugins/151-spiegel-improved.plugins.py:20 #: data/plugins/151-spiegel-improved.plugins.py:23 #: data/plugins/151-spiegel-improved.plugins.py:68 #: data/plugins/151-spiegel-improved.plugins.py:107 #: data/plugins/151-spiegel-improved.plugins.py:139 #: data/plugins/151-spiegel-improved.plugins.py:165 #: data/plugins/151-spiegel-improved.plugins.py:183 #: data/plugins/151-spiegel-improved.plugins.py:197 #: data/plugins/20-2x2x2.plugins.py:18 data/plugins/20-2x2x2.plugins.py:21 #: data/plugins/20-2x2x2.plugins.py:37 data/plugins/20-2x2x2.plugins.py:55 msgid "Solvers" msgstr "Λύτες" #: data/plugins/10-beginners.plugins.py:32 #: data/plugins/10-beginners.plugins.py:35 #: data/plugins/10-beginners.plugins.py:57 #: data/plugins/10-beginners.plugins.py:74 #: data/plugins/10-beginners.plugins.py:101 #: data/plugins/10-beginners.plugins.py:119 #: data/plugins/10-beginners.plugins.py:141 #: data/plugins/10-beginners.plugins.py:159 msgid "Beginner's method" msgstr "" # translated by: mara sdr https://launchpad.net/~paren8esis on 2013-06-09 11:58:45 UTC # reviewed by: George Christofis https://launchpad.net/~geochr on 2013-06-09 12:52:36 UTC #: data/plugins/10-beginners.plugins.py:36 #: data/plugins/14-leyan-lo.plugins.py:26 #: data/plugins/150-spiegel.plugins.py:37 #: data/plugins/151-spiegel-improved.plugins.py:25 msgid "Top edges" msgstr "Επάνω Ακμές" # translated by: mara sdr https://launchpad.net/~paren8esis on 2013-06-09 11:58:45 UTC # reviewed by: George Christofis https://launchpad.net/~geochr on 2013-06-09 12:52:36 UTC #: data/plugins/10-beginners.plugins.py:58 #: data/plugins/14-leyan-lo.plugins.py:55 #: data/plugins/150-spiegel.plugins.py:66 #: data/plugins/151-spiegel-improved.plugins.py:70 msgid "Top corners" msgstr "Επάνω Γωνίες" # translated by: mara sdr https://launchpad.net/~paren8esis on 2013-06-09 11:58:45 UTC # reviewed by: George Christofis https://launchpad.net/~geochr on 2013-06-09 12:52:36 UTC #: data/plugins/10-beginners.plugins.py:75 #: data/plugins/14-leyan-lo.plugins.py:76 #: data/plugins/150-spiegel.plugins.py:87 #: data/plugins/151-spiegel-improved.plugins.py:109 msgid "Middle slice" msgstr "Μεσαίο τμήμα" # translated by: mara sdr https://launchpad.net/~paren8esis on 2013-06-09 11:57:28 UTC # reviewed by: George Christofis https://launchpad.net/~geochr on 2013-06-09 12:52:36 UTC #: data/plugins/10-beginners.plugins.py:102 #: data/plugins/14-leyan-lo.plugins.py:92 #: data/plugins/150-spiegel.plugins.py:115 #: data/plugins/151-spiegel-improved.plugins.py:167 msgid "Bottom edge orient" msgstr "Προσανατολισμός Κάτω Ακμής" # translated by: mara sdr https://launchpad.net/~paren8esis on 2013-06-09 11:57:28 UTC # reviewed by: George Christofis https://launchpad.net/~geochr on 2013-06-09 12:52:36 UTC #: data/plugins/10-beginners.plugins.py:120 #: data/plugins/14-leyan-lo.plugins.py:131 #: data/plugins/150-spiegel.plugins.py:143 #: data/plugins/151-spiegel-improved.plugins.py:199 #: data/plugins/20-2x2x2.plugins.py:57 msgid "Bottom corner orient" msgstr "Προσανατολισμός Κάτω Γωνίας" # translated by: mara sdr https://launchpad.net/~paren8esis on 2013-06-09 11:57:28 UTC # reviewed by: George Christofis https://launchpad.net/~geochr on 2013-06-09 12:52:36 UTC #: data/plugins/10-beginners.plugins.py:142 #: data/plugins/14-leyan-lo.plugins.py:109 #: data/plugins/150-spiegel.plugins.py:132 #: data/plugins/151-spiegel-improved.plugins.py:185 #: data/plugins/20-2x2x2.plugins.py:39 msgid "Bottom corner place" msgstr "Τοποθέτηση Κάτω Γωνίας" # translated by: mara sdr https://launchpad.net/~paren8esis on 2013-06-09 11:58:45 UTC # reviewed by: George Christofis https://launchpad.net/~geochr on 2013-06-09 12:52:36 UTC #: data/plugins/10-beginners.plugins.py:160 #: data/plugins/14-leyan-lo.plugins.py:172 #: data/plugins/150-spiegel.plugins.py:102 #: data/plugins/151-spiegel-improved.plugins.py:141 msgid "Bottom edge place" msgstr "Τοποθέτηση Κάτω Ακμής" # translated by: mara sdr https://launchpad.net/~paren8esis on 2015-04-19 11:03:17 UTC #. Leyan Lo is the inventor of the solution #: data/plugins/14-leyan-lo.plugins.py:23 #: data/plugins/14-leyan-lo.plugins.py:25 #: data/plugins/14-leyan-lo.plugins.py:54 #: data/plugins/14-leyan-lo.plugins.py:75 #: data/plugins/14-leyan-lo.plugins.py:91 #: data/plugins/14-leyan-lo.plugins.py:108 #: data/plugins/14-leyan-lo.plugins.py:130 #: data/plugins/14-leyan-lo.plugins.py:171 msgid "Leyan Lo" msgstr "Leyan Lo" # translated by: mara sdr https://launchpad.net/~paren8esis on 2013-06-09 11:27:09 UTC # reviewed by: George Christofis https://launchpad.net/~geochr on 2013-06-09 12:52:36 UTC #. Spiegel is a german magazine #: data/plugins/150-spiegel.plugins.py:34 #: data/plugins/150-spiegel.plugins.py:36 #: data/plugins/150-spiegel.plugins.py:65 #: data/plugins/150-spiegel.plugins.py:86 #: data/plugins/150-spiegel.plugins.py:101 #: data/plugins/150-spiegel.plugins.py:114 #: data/plugins/150-spiegel.plugins.py:131 #: data/plugins/150-spiegel.plugins.py:142 msgid "Spiegel" msgstr "Spiegel" # translated by: mara sdr https://launchpad.net/~paren8esis on 2013-06-09 11:27:59 UTC # reviewed by: George Christofis https://launchpad.net/~geochr on 2013-06-09 12:52:36 UTC #. Spiegel is a german magazine #: data/plugins/151-spiegel-improved.plugins.py:22 #: data/plugins/151-spiegel-improved.plugins.py:24 #: data/plugins/151-spiegel-improved.plugins.py:69 #: data/plugins/151-spiegel-improved.plugins.py:108 #: data/plugins/151-spiegel-improved.plugins.py:140 #: data/plugins/151-spiegel-improved.plugins.py:166 #: data/plugins/151-spiegel-improved.plugins.py:184 #: data/plugins/151-spiegel-improved.plugins.py:198 msgid "Spiegel improved" msgstr "Βελτιωμένο Spiegel" # translated by: mara sdr https://launchpad.net/~paren8esis on 2013-06-09 11:27:59 UTC # reviewed by: George Christofis https://launchpad.net/~geochr on 2013-06-09 12:53:38 UTC #: data/plugins/20-2x2x2.plugins.py:19 data/plugins/20-2x2x2.plugins.py:22 #: data/plugins/20-2x2x2.plugins.py:38 data/plugins/20-2x2x2.plugins.py:56 msgid "2×2×2" msgstr "2×2×2" # translated by: mara sdr https://launchpad.net/~paren8esis on 2013-06-09 11:57:28 UTC # reviewed by: George Christofis https://launchpad.net/~geochr on 2013-06-09 12:53:38 UTC #: data/plugins/20-2x2x2.plugins.py:23 msgid "Top slice" msgstr "Επάνω Πλευρά" # translated by: mara sdr https://launchpad.net/~paren8esis on 2013-06-09 11:57:28 UTC # reviewed by: George Christofis https://launchpad.net/~geochr on 2013-06-09 12:53:38 UTC #: data/plugins/80-pretty-patterns.plugins.py:20 #: data/plugins/80-pretty-patterns.plugins.py:23 #: data/plugins/80-pretty-patterns.plugins.py:27 #: data/plugins/80-pretty-patterns.plugins.py:31 #: data/plugins/80-pretty-patterns.plugins.py:35 #: data/plugins/80-pretty-patterns.plugins.py:40 #: data/plugins/80-pretty-patterns.plugins.py:44 msgid "Stripes" msgstr "Ρίγες" # translated by: mara sdr https://launchpad.net/~paren8esis on 2013-06-09 11:57:28 UTC # reviewed by: George Christofis https://launchpad.net/~geochr on 2013-06-09 12:53:38 UTC #: data/plugins/80-pretty-patterns.plugins.py:49 #: data/plugins/80-pretty-patterns.plugins.py:53 msgid "Criss-Cross" msgstr "Σταυρωτά" # translated by: mara sdr https://launchpad.net/~paren8esis on 2013-06-09 11:51:25 UTC # reviewed by: George Christofis https://launchpad.net/~geochr on 2013-06-09 12:53:38 UTC #: data/plugins/80-pretty-patterns.plugins.py:57 msgid "Fried Eggs" msgstr "Τηγανητά Αυγά" # translated by: mara sdr https://launchpad.net/~paren8esis on 2013-06-09 11:51:25 UTC # reviewed by: George Christofis https://launchpad.net/~geochr on 2013-06-09 12:53:38 UTC #: data/plugins/80-pretty-patterns.plugins.py:61 msgid "Big Fried Eggs" msgstr "Μεγάλα Τηγανητά Αυγά" # translated by: mara sdr https://launchpad.net/~paren8esis on 2013-06-09 11:51:25 UTC # reviewed by: George Christofis https://launchpad.net/~geochr on 2013-06-09 12:53:38 UTC #: data/plugins/80-pretty-patterns.plugins.py:65 #: data/plugins/80-pretty-patterns.plugins.py:69 msgid "4 Fried Eggs" msgstr "4 Τηγανητά Αυγά" #: data/plugins/80-pretty-patterns.plugins.py:73 msgid "2 Fried Eggs" msgstr "" # translated by: mara sdr https://launchpad.net/~paren8esis on 2013-06-09 11:51:25 UTC # reviewed by: George Christofis https://launchpad.net/~geochr on 2013-06-09 12:53:38 UTC #: data/plugins/80-pretty-patterns.plugins.py:77 msgid "Chessboard" msgstr "Σκακιέρα" # translated by: mara sdr https://launchpad.net/~paren8esis on 2013-06-09 11:51:25 UTC # reviewed by: George Christofis https://launchpad.net/~geochr on 2013-06-09 12:55:45 UTC #: data/plugins/80-pretty-patterns.plugins.py:83 msgid "Cross" msgstr "Σταυρός" # translated by: mara sdr https://launchpad.net/~paren8esis on 2013-06-09 11:51:25 UTC # reviewed by: George Christofis https://launchpad.net/~geochr on 2013-06-09 12:55:45 UTC #: data/plugins/80-pretty-patterns.plugins.py:87 msgid "Zig Zag" msgstr "Ζιγκ Ζαγκ" # translated by: mara sdr https://launchpad.net/~paren8esis on 2013-06-09 11:51:25 UTC # reviewed by: George Christofis https://launchpad.net/~geochr on 2013-06-09 12:55:45 UTC #. T is the shape formed by the cube labels. T-Time is a pun (Tea Time) and not suitable for literal translation. Don't translate it or use something common or whatever you think makes sense. #: data/plugins/80-pretty-patterns.plugins.py:93 #: data/plugins/80-pretty-patterns.plugins.py:96 #: data/plugins/80-pretty-patterns.plugins.py:100 #: data/plugins/80-pretty-patterns.plugins.py:104 #: data/plugins/80-pretty-patterns.plugins.py:108 #: data/plugins/80-pretty-patterns.plugins.py:112 msgid "T-Time" msgstr "T-Time" # translated by: mara sdr https://launchpad.net/~paren8esis on 2013-06-09 11:28:28 UTC # reviewed by: George Christofis https://launchpad.net/~geochr on 2013-06-09 12:55:45 UTC #. C is the shape formed by the cube labels #: data/plugins/80-pretty-patterns.plugins.py:118 msgid "C" msgstr "C" # translated by: George Christofis https://launchpad.net/~geochr on 2013-06-09 12:55:45 UTC #: data/plugins/80-pretty-patterns.plugins.py:121 msgid "Cube in a Cube" msgstr "Κύβος μέσα σε Κύβο" # translated by: George Christofis https://launchpad.net/~geochr on 2013-06-09 12:55:45 UTC #: data/plugins/80-pretty-patterns.plugins.py:125 msgid "Striped Cube in a Cube" msgstr "Ριγέ Κύβος μέσα σε Κύβο" #: data/plugins/80-pretty-patterns.plugins.py:129 msgid "Six square cuboids" msgstr "" # translated by: mara sdr https://launchpad.net/~paren8esis on 2013-06-09 11:28:57 UTC # reviewed by: George Christofis https://launchpad.net/~geochr on 2013-06-09 12:55:45 UTC #. Superflip may be not translated, because it has a special meaning in the mathematical theory behind the Rubik's Cube. #: data/plugins/80-pretty-patterns.plugins.py:135 msgid "Superflip" msgstr "Superflip" # translated by: mara sdr https://launchpad.net/~paren8esis on 2013-06-09 11:28:57 UTC # reviewed by: George Christofis https://launchpad.net/~geochr on 2013-06-09 12:55:45 UTC #: data/plugins/80-pretty-patterns.plugins.py:138 msgid "Superflip easy" msgstr "Εύκολο Superflip" # translated by: mara sdr https://launchpad.net/~paren8esis on 2013-06-09 11:48:18 UTC # reviewed by: George Christofis https://launchpad.net/~geochr on 2013-06-09 12:55:45 UTC #: data/plugins/80-pretty-patterns.plugins.py:142 msgid "Green Mamba" msgstr "Green Mamba" # translated by: mara sdr https://launchpad.net/~paren8esis on 2013-06-09 11:48:18 UTC # reviewed by: George Christofis https://launchpad.net/~geochr on 2013-06-09 12:57:22 UTC #: data/plugins/80-pretty-patterns.plugins.py:146 msgid "Anaconda" msgstr "Anaconda" # translated by: mara sdr https://launchpad.net/~paren8esis on 2013-06-09 11:48:18 UTC # reviewed by: George Christofis https://launchpad.net/~geochr on 2013-06-09 12:57:22 UTC #: data/plugins/80-pretty-patterns.plugins.py:150 msgid "Duck Feet" msgstr "Duck Feet" #: data/plugins/80-pretty-patterns.plugins.py:154 #: data/plugins/80-pretty-patterns.plugins.py:158 #: data/plugins/80-pretty-patterns.plugins.py:162 #: data/plugins/80-pretty-patterns.plugins.py:166 #: data/plugins/80-pretty-patterns.plugins.py:170 #: data/plugins/80-pretty-patterns.plugins.py:174 #: data/plugins/80-pretty-patterns.plugins.py:178 #: data/plugins/80-pretty-patterns.plugins.py:182 msgid "Plus" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:186 #: data/plugins/80-pretty-patterns.plugins.py:191 #: data/plugins/80-pretty-patterns.plugins.py:196 #: data/plugins/80-pretty-patterns.plugins.py:200 msgid "Minus" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:204 msgid "Volcano" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:208 msgid "Checkerboard (easy)" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:212 msgid "Checkerboard (fast)" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:216 msgid "Mixed Checkerboard" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:220 msgid "Tipi" msgstr "" # translated by: mara sdr https://launchpad.net/~paren8esis on 2013-06-09 11:41:12 UTC # reviewed by: George Christofis https://launchpad.net/~geochr on 2013-06-09 12:57:22 UTC #: data/plugins/90-library.plugins.py:18 data/plugins/90-library.plugins.py:22 #: data/plugins/90-library.plugins.py:26 data/plugins/90-library.plugins.py:30 #: data/plugins/90-library.plugins.py:34 data/plugins/90-library.plugins.py:38 #: data/plugins/90-library.plugins.py:42 data/plugins/90-library.plugins.py:46 #: data/plugins/90-library.plugins.py:50 data/plugins/90-library.plugins.py:54 #: data/plugins/90-library.plugins.py:58 data/plugins/90-library.plugins.py:62 #: data/plugins/90-library.plugins.py:66 data/plugins/90-library.plugins.py:70 #: data/plugins/90-library.plugins.py:74 data/plugins/90-library.plugins.py:78 #: data/plugins/90-library.plugins.py:82 data/plugins/90-library.plugins.py:86 #: data/plugins/90-library.plugins.py:91 data/plugins/90-library.plugins.py:96 #: data/plugins/90-library.plugins.py:101 #: data/plugins/90-library.plugins.py:105 #: data/plugins/90-library.plugins.py:110 #: data/plugins/90-library.plugins.py:115 #: data/plugins/90-library.plugins.py:119 #: data/plugins/90-library.plugins.py:123 #: data/plugins/90-library.plugins.py:127 msgid "Library" msgstr "Βιβλιοθήκη" #: data/plugins/90-library.plugins.py:19 data/plugins/90-library.plugins.py:23 #: data/plugins/90-library.plugins.py:27 data/plugins/90-library.plugins.py:31 #: data/plugins/90-library.plugins.py:35 msgid "Swap edges" msgstr "" #: data/plugins/90-library.plugins.py:20 msgid "3 edges ⟳, top layer" msgstr "" #: data/plugins/90-library.plugins.py:24 msgid "3 edges ⟲, top layer" msgstr "" #: data/plugins/90-library.plugins.py:28 msgid "3 edges, middle layer" msgstr "" #: data/plugins/90-library.plugins.py:32 msgid "4 edges, front and right" msgstr "" #: data/plugins/90-library.plugins.py:36 msgid "4 edges, front and back" msgstr "" #: data/plugins/90-library.plugins.py:39 msgid "Swap 2 edges and 2 corners, top layer" msgstr "" #: data/plugins/90-library.plugins.py:43 data/plugins/90-library.plugins.py:47 msgid "Flip edges" msgstr "" #: data/plugins/90-library.plugins.py:44 msgid "4 edges" msgstr "" #: data/plugins/90-library.plugins.py:48 msgid "2 edges, top layer" msgstr "" #: data/plugins/90-library.plugins.py:51 data/plugins/90-library.plugins.py:55 #: data/plugins/90-library.plugins.py:59 data/plugins/90-library.plugins.py:63 #: data/plugins/90-library.plugins.py:67 data/plugins/90-library.plugins.py:71 msgid "Swap corners" msgstr "" #: data/plugins/90-library.plugins.py:52 data/plugins/90-library.plugins.py:76 msgid "2 corners, top layer" msgstr "" #: data/plugins/90-library.plugins.py:56 msgid "2 corners diagonal, top layer" msgstr "" #: data/plugins/90-library.plugins.py:60 data/plugins/90-library.plugins.py:80 msgid "3 corners ⟳, top layer" msgstr "" #: data/plugins/90-library.plugins.py:64 msgid "3 corners ⟲, top layer" msgstr "" #: data/plugins/90-library.plugins.py:68 msgid "4 corners, top layer" msgstr "" #: data/plugins/90-library.plugins.py:72 msgid "2 corners, partial sequence, top layer" msgstr "" #: data/plugins/90-library.plugins.py:75 data/plugins/90-library.plugins.py:79 #: data/plugins/90-library.plugins.py:83 data/plugins/90-library.plugins.py:87 msgid "Rotate corners" msgstr "" #: data/plugins/90-library.plugins.py:84 msgid "1 corner ⟳, partial sequence, top layer" msgstr "" #: data/plugins/90-library.plugins.py:88 msgid "1 corner ⟲, partial sequence, top layer" msgstr "" #: data/plugins/90-library.plugins.py:92 data/plugins/90-library.plugins.py:97 #: data/plugins/90-library.plugins.py:102 #: data/plugins/90-library.plugins.py:111 msgid "Rotate center" msgstr "" # translated by: mara sdr https://launchpad.net/~paren8esis on 2013-06-09 11:46:04 UTC # reviewed by: George Christofis https://launchpad.net/~geochr on 2013-06-09 12:58:08 UTC #. 2 rotations of the center face in the upper layer #: data/plugins/90-library.plugins.py:94 msgid "2×Up" msgstr "2×Πάνω" #. Up clockwise and front clockwise #: data/plugins/90-library.plugins.py:99 msgid "Up ⟳ and front ⟳" msgstr "" #. Up clockwise and front counterclockwise #: data/plugins/90-library.plugins.py:104 msgid "Up ⟳ and front ⟲" msgstr "" #: data/plugins/90-library.plugins.py:106 msgid "Swap center parts, up and front" msgstr "" #. Up clockwise and down counterclockwise #: data/plugins/90-library.plugins.py:113 msgid "Up ⟳ and down ⟲" msgstr "" # translated by: mara sdr https://launchpad.net/~paren8esis on 2013-06-09 11:40:49 UTC # reviewed by: George Christofis https://launchpad.net/~geochr on 2013-06-09 12:58:08 UTC #: data/plugins/90-library.plugins.py:116 #: data/plugins/90-library.plugins.py:120 #: data/plugins/90-library.plugins.py:124 #: data/plugins/90-library.plugins.py:128 msgid "Misc" msgstr "Διάφορα" #. Yields in a rotated back layer, but the sequence of moves does not touch the back layer #: data/plugins/90-library.plugins.py:118 #: data/plugins/90-library.plugins.py:125 #: data/plugins/90-library.plugins.py:129 msgid "Back without back" msgstr "" #: data/plugins/90-library.plugins.py:121 msgid "2×Back without back" msgstr "" #: data/plugins/95-transformations.plugins.py:18 #: data/plugins/95-transformations.plugins.py:21 #: data/plugins/95-transformations.plugins.py:24 msgid "Move transformations" msgstr "" #: data/plugins/95-transformations.plugins.py:19 msgid "Invert move sequence" msgstr "" #: data/plugins/95-transformations.plugins.py:22 msgid "Normalize cube rotations" msgstr "" #: data/plugins/95-transformations.plugins.py:25 msgid "Normalize move sequence" msgstr "" # translated by: mara sdr https://launchpad.net/~paren8esis on 2013-06-09 11:09:55 UTC # reviewed by: George Christofis https://launchpad.net/~geochr on 2013-06-09 12:30:35 UTC #: buildlib/modeldef.py:110 msgid "Brick" msgstr "Τούβλο" # translated by: mara sdr https://launchpad.net/~paren8esis on 2013-06-09 11:09:55 UTC # reviewed by: George Christofis https://launchpad.net/~geochr on 2013-06-09 12:30:35 UTC #: buildlib/modeldef.py:111 #, python-brace-format msgid "{0}×{1}×{2}-Brick" msgstr "Τούβλο {0}×{1}×{2}" # translated by: mara sdr https://launchpad.net/~paren8esis on 2013-06-09 11:06:11 UTC # reviewed by: George Christofis https://launchpad.net/~geochr on 2013-06-09 12:28:01 UTC #: buildlib/modeldef.py:112 msgid "Width:" msgstr "Πλάτος:" # translated by: mara sdr https://launchpad.net/~paren8esis on 2013-06-09 11:22:09 UTC # reviewed by: George Christofis https://launchpad.net/~geochr on 2013-06-09 12:44:52 UTC #: buildlib/modeldef.py:112 buildlib/modeldef.py:151 buildlib/modeldef.py:249 #: buildlib/modeldef.py:300 buildlib/modeldef.py:311 msgid "Height:" msgstr "Ύψος:" # translated by: mara sdr https://launchpad.net/~paren8esis on 2013-06-09 11:23:06 UTC # reviewed by: George Christofis https://launchpad.net/~geochr on 2013-06-09 12:44:52 UTC #: buildlib/modeldef.py:112 msgid "Depth:" msgstr "Βάθος:" #: buildlib/modeldef.py:120 buildlib/modeldef.py:257 buildlib/modeldef.py:319 #: buildlib/modeldef.py:374 buildlib/modeldef.py:433 msgid "up" msgstr "" #: buildlib/modeldef.py:120 buildlib/modeldef.py:205 buildlib/modeldef.py:257 #: buildlib/modeldef.py:319 buildlib/modeldef.py:373 buildlib/modeldef.py:430 msgid "down" msgstr "" #: buildlib/modeldef.py:120 buildlib/modeldef.py:205 buildlib/modeldef.py:257 msgid "left" msgstr "" # translated by: mara sdr https://launchpad.net/~paren8esis on 2013-06-09 11:06:11 UTC # reviewed by: George Christofis https://launchpad.net/~geochr on 2013-06-09 12:26:48 UTC #: buildlib/modeldef.py:120 buildlib/modeldef.py:205 buildlib/modeldef.py:257 msgid "right" msgstr "" # translated by: mara sdr https://launchpad.net/~paren8esis on 2013-06-09 12:02:44 UTC # reviewed by: George Christofis https://launchpad.net/~geochr on 2013-06-09 12:28:01 UTC #: buildlib/modeldef.py:120 buildlib/modeldef.py:374 msgid "front" msgstr "" #: buildlib/modeldef.py:120 buildlib/modeldef.py:205 buildlib/modeldef.py:257 #: buildlib/modeldef.py:320 buildlib/modeldef.py:373 msgid "back" msgstr "" # translated by: mara sdr https://launchpad.net/~paren8esis on 2013-06-09 11:09:55 UTC # reviewed by: George Christofis https://launchpad.net/~geochr on 2013-06-09 12:30:35 UTC #: buildlib/modeldef.py:149 msgid "Tower" msgstr "Πύργος" # translated by: mara sdr https://launchpad.net/~paren8esis on 2013-06-09 11:09:55 UTC # reviewed by: George Christofis https://launchpad.net/~geochr on 2013-06-09 12:30:35 UTC #: buildlib/modeldef.py:150 #, python-brace-format msgid "{0}×{1}-Tower" msgstr "Πύργος {0}×{1}" # translated by: mara sdr https://launchpad.net/~paren8esis on 2013-06-09 11:06:11 UTC # reviewed by: George Christofis https://launchpad.net/~geochr on 2013-06-09 12:28:01 UTC #: buildlib/modeldef.py:151 buildlib/modeldef.py:249 buildlib/modeldef.py:300 #: buildlib/modeldef.py:311 msgid "Basis:" msgstr "Βάση:" # translated by: mara sdr https://launchpad.net/~paren8esis on 2013-06-09 11:09:55 UTC # reviewed by: George Christofis https://launchpad.net/~geochr on 2013-06-09 12:30:35 UTC #: buildlib/modeldef.py:163 msgid "Cube" msgstr "Κύβος" # translated by: mara sdr https://launchpad.net/~paren8esis on 2013-06-09 11:09:55 UTC # reviewed by: George Christofis https://launchpad.net/~geochr on 2013-06-09 12:30:35 UTC #: buildlib/modeldef.py:164 #, python-brace-format msgid "{0}×{0}×{0}-Cube" msgstr "Κύβος {0}×{0}×{0}" # translated by: mara sdr https://launchpad.net/~paren8esis on 2013-06-09 11:06:11 UTC # reviewed by: George Christofis https://launchpad.net/~geochr on 2013-06-09 12:28:01 UTC #: buildlib/modeldef.py:165 buildlib/modeldef.py:197 buildlib/modeldef.py:365 #: buildlib/modeldef.py:422 msgid "Size:" msgstr "Μέγεθος:" #: buildlib/modeldef.py:177 buildlib/modeldef.py:178 msgid "Void Cube" msgstr "" #: buildlib/modeldef.py:195 msgid "Tetrahedron" msgstr "" #: buildlib/modeldef.py:196 #, python-brace-format msgid "{0}-Tetrahedron" msgstr "" #: buildlib/modeldef.py:247 msgid "Triangular Prism" msgstr "" #: buildlib/modeldef.py:248 #, python-brace-format msgid "{0}×{1} Triangular Prism" msgstr "" #: buildlib/modeldef.py:298 msgid "Triangular Prism (complex)" msgstr "" #: buildlib/modeldef.py:299 #, python-brace-format msgid "{0}×{1} Triangular Prism (complex)" msgstr "" #: buildlib/modeldef.py:309 msgid "Pentagonal Prism" msgstr "" #: buildlib/modeldef.py:310 #, python-brace-format msgid "{0}×{1} Pentagonal Prism" msgstr "" #: buildlib/modeldef.py:320 buildlib/modeldef.py:373 msgid "front-right" msgstr "" #: buildlib/modeldef.py:320 buildlib/modeldef.py:374 msgid "back-right" msgstr "" #: buildlib/modeldef.py:320 buildlib/modeldef.py:374 msgid "back-left" msgstr "" #: buildlib/modeldef.py:320 buildlib/modeldef.py:373 msgid "front-left" msgstr "" #: buildlib/modeldef.py:354 msgid "Pentagonal Prism (stretched)" msgstr "" #: buildlib/modeldef.py:355 #, python-brace-format msgid "{0}×{1} Pentagonal Prism (stretched)" msgstr "" #: buildlib/modeldef.py:363 msgid "Octahedron" msgstr "" #: buildlib/modeldef.py:364 #, python-brace-format msgid "{0}-Octahedron" msgstr "" #: buildlib/modeldef.py:420 msgid "Dodecahedron" msgstr "" #: buildlib/modeldef.py:421 #, python-brace-format msgid "{0}-Dodecahedron" msgstr "" #: buildlib/modeldef.py:430 msgid "down-back-right" msgstr "" #: buildlib/modeldef.py:430 msgid "down-front-right" msgstr "" #: buildlib/modeldef.py:431 msgid "down-front" msgstr "" #: buildlib/modeldef.py:431 msgid "down-front-left" msgstr "" #: buildlib/modeldef.py:431 msgid "down-back-left" msgstr "" #: buildlib/modeldef.py:432 msgid "up-back" msgstr "" #: buildlib/modeldef.py:432 msgid "up-back-right" msgstr "" #: buildlib/modeldef.py:432 msgid "up-front-right" msgstr "" #: buildlib/modeldef.py:433 msgid "up-front-left" msgstr "" #: buildlib/modeldef.py:433 msgid "up-back-left" msgstr "" pybik-3.0/po/LINGUAS0000644000175000017500000000011213173052131014271 0ustar barccbarcc00000000000000ast bg bs cs de el en_GB es fi fr gl he it kab ms pl pt_BR ru uk uz zh_TW pybik-3.0/po/es.po0000664000175000017500000014055613173052130014235 0ustar barccbarcc00000000000000# Spanish translation for pybik # Copyright (c) 2012-2017 Rosetta Contributors and Canonical Ltd 2012 # This file is distributed under the same license as the pybik package. # FIRST AUTHOR , 2012. # msgid "" msgstr "" "Project-Id-Version: pybik\n" "Report-Msgid-Bugs-To: https://bugs.launchpad.net/pybik/+filebug\n" "POT-Creation-Date: 2017-09-10 21:58+0200\n" "PO-Revision-Date: 2017-10-07 07:31+0000\n" "Last-Translator: Paco Molinero \n" "Language-Team: Spanish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Launchpad-Export-Date: 2017-10-08 05:42+0000\n" "X-Generator: Launchpad (build 18474)\n" "Language: es\n" # translated by: Adolfo Jayme https://launchpad.net/~fitojb on 2012-12-15 03:32:16 UTC #: pybiklib/application.py:294 msgid "Press the Esc key to exit Edit Mode" msgstr "Oprima la tecla Esc para salir del modo de edición" # translated by: Adolfo Jayme https://launchpad.net/~fitojb on 2013-03-24 05:01:20 UTC #. substitution for {move_text} in statusbar text #: pybiklib/application.py:302 #, python-brace-format msgid "{current} / {total} move" msgid_plural "{current} / {total} moves" msgstr[0] "{current} / {total} movimiento" msgstr[1] "{current} / {total} movimientos" # translated by: Adolfo Jayme https://launchpad.net/~fitojb on 2012-12-15 03:32:16 UTC #. substitution for {solved_text} in statusbar text #: pybiklib/application.py:306 msgid "solved" msgstr "resuelto" # translated by: Adolfo Jayme https://launchpad.net/~fitojb on 2012-12-15 03:32:16 UTC #: pybiklib/application.py:306 msgid "not solved" msgstr "sin resolver" # translated by: Dante Díaz https://launchpad.net/~dante on 2012-12-18 17:01:21 UTC # reviewed by: Adolfo Jayme https://launchpad.net/~fitojb on 2012-12-27 04:55:01 UTC #. statusbar text #: pybiklib/application.py:309 #, python-brace-format msgid "{move_text}, {solved_text}" msgstr "{move_text}, {solved_text}" # translated by: Dante Díaz https://launchpad.net/~dante on 2012-12-18 17:01:21 UTC #: pybiklib/application.py:314 msgid "Congratulations, you have solved the puzzle!" msgstr "¡Felicidades, ha resuelto el rompecabezas!" # translated by: Adolfo Jayme https://launchpad.net/~fitojb on 2012-12-15 03:32:16 UTC #. Name of the application, probably should not be translated. #: pybiklib/config.py:35 data/ui/qt/main.ui.h:271 #: data/app-meta/pybik.desktop.in:3 msgid "Pybik" msgstr "Pybik" # translated by: Adolfo Jayme https://launchpad.net/~fitojb on 2015-10-18 10:14:26 UTC #. short description #: pybiklib/config.py:65 data/app-meta/pybik.desktop.in:4 msgid "Rubik's cube game" msgstr "Juego del cubo de Rubik" #. The next 7 lines belong together and form the long description #: pybiklib/config.py:68 msgid "Pybik is a 3D puzzle game about the cube invented by Ernő Rubik." msgstr "" "Pybik es un juego de rompecabezas en 3D sobre el cubo inventado por Ernő " "Rubik." #: pybiklib/config.py:70 msgid "" "Various 3D puzzles, such as cubes, towers, prisms, tetrahedra, octahedra, " "dodecahedra and many more" msgstr "" #: pybiklib/config.py:71 msgid "Solvers for some puzzles" msgstr "Solucionadores de algunos rompecabezas" # translated by: Adolfo Jayme https://launchpad.net/~fitojb on 2014-02-06 02:13:30 UTC # reviewed by: Adolfo Jayme https://launchpad.net/~fitojb on 2014-02-06 02:06:59 UTC #. Use something that is common in the Rubik scene in your language, sometimes it's just the equivalent of "patterns". #: pybiklib/config.py:72 data/plugins/80-pretty-patterns.plugins.py:19 #: data/plugins/80-pretty-patterns.plugins.py:22 #: data/plugins/80-pretty-patterns.plugins.py:26 #: data/plugins/80-pretty-patterns.plugins.py:30 #: data/plugins/80-pretty-patterns.plugins.py:34 #: data/plugins/80-pretty-patterns.plugins.py:39 #: data/plugins/80-pretty-patterns.plugins.py:43 #: data/plugins/80-pretty-patterns.plugins.py:48 #: data/plugins/80-pretty-patterns.plugins.py:52 #: data/plugins/80-pretty-patterns.plugins.py:56 #: data/plugins/80-pretty-patterns.plugins.py:60 #: data/plugins/80-pretty-patterns.plugins.py:64 #: data/plugins/80-pretty-patterns.plugins.py:68 #: data/plugins/80-pretty-patterns.plugins.py:72 #: data/plugins/80-pretty-patterns.plugins.py:76 #: data/plugins/80-pretty-patterns.plugins.py:82 #: data/plugins/80-pretty-patterns.plugins.py:86 #: data/plugins/80-pretty-patterns.plugins.py:91 #: data/plugins/80-pretty-patterns.plugins.py:95 #: data/plugins/80-pretty-patterns.plugins.py:99 #: data/plugins/80-pretty-patterns.plugins.py:103 #: data/plugins/80-pretty-patterns.plugins.py:107 #: data/plugins/80-pretty-patterns.plugins.py:111 #: data/plugins/80-pretty-patterns.plugins.py:116 #: data/plugins/80-pretty-patterns.plugins.py:120 #: data/plugins/80-pretty-patterns.plugins.py:124 #: data/plugins/80-pretty-patterns.plugins.py:128 #: data/plugins/80-pretty-patterns.plugins.py:133 #: data/plugins/80-pretty-patterns.plugins.py:137 #: data/plugins/80-pretty-patterns.plugins.py:141 #: data/plugins/80-pretty-patterns.plugins.py:145 #: data/plugins/80-pretty-patterns.plugins.py:149 #: data/plugins/80-pretty-patterns.plugins.py:153 #: data/plugins/80-pretty-patterns.plugins.py:157 #: data/plugins/80-pretty-patterns.plugins.py:161 #: data/plugins/80-pretty-patterns.plugins.py:165 #: data/plugins/80-pretty-patterns.plugins.py:169 #: data/plugins/80-pretty-patterns.plugins.py:173 #: data/plugins/80-pretty-patterns.plugins.py:177 #: data/plugins/80-pretty-patterns.plugins.py:181 #: data/plugins/80-pretty-patterns.plugins.py:185 #: data/plugins/80-pretty-patterns.plugins.py:190 #: data/plugins/80-pretty-patterns.plugins.py:195 #: data/plugins/80-pretty-patterns.plugins.py:199 #: data/plugins/80-pretty-patterns.plugins.py:203 #: data/plugins/80-pretty-patterns.plugins.py:207 #: data/plugins/80-pretty-patterns.plugins.py:211 #: data/plugins/80-pretty-patterns.plugins.py:215 #: data/plugins/80-pretty-patterns.plugins.py:219 msgid "Pretty patterns" msgstr "Bonitos modelos" #: pybiklib/config.py:73 msgid "Editor for move sequences" msgstr "Editor para secuencias de movimientos" #: pybiklib/config.py:74 msgid "Custom colors and images on the surface of the puzzles" msgstr "" # translated by: Paco Molinero https://launchpad.net/~franciscomol on 2015-04-25 04:56:12 UTC #: pybiklib/config.py:78 msgid "" "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.\n" "\n" "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." msgstr "" "Este programa es software libre: puede redistribuirlo o modificarlo bajo los " "términos de la Licencia Pública General de GNU, como la publica la Free " "Software Foundation, ya sea la versión 3 de la Licencia, o (a su elección) " "cualquier versión posterior.\n" "\n" "Este programa se distribuye con la esperanza de que será útil, pero SIN " "NINGUNA GARANTÍA; sin siquiera la garantía implícita de COMERCIABILIDAD o " "IDONEIDAD PARA UN PROPÓSITO EN PARTICULAR. Consulte la Licencia Pública " "General de GNU para más detalles." # translated by: Adolfo Jayme https://launchpad.net/~fitojb on 2013-01-13 06:46:46 UTC #. Text between "<" and ">" is expanded to a link by the program and should not be modified. #. Text between "" and "<|>" is the translatable text for the link. #: pybiklib/config.py:90 msgid "" "Read the full text of the GNU General Public " "License<|> or see ." msgstr "" "Lea el texto completo de la Licencia Pública " "General de GNU<|> o consulte ." # translated by: Dante Díaz https://launchpad.net/~dante on 2012-12-18 17:01:21 UTC #: pybiklib/config.py:93 msgid "" "You should have received a copy of the GNU General Public License along with " "this program. If not, see ." msgstr "" "Debería haber recibido una copia de la Licencia Pública General GNU junto " "con este programa. De no ser así, visite ." # translated by: Adolfo Jayme https://launchpad.net/~fitojb on 2014-01-28 11:13:17 UTC #: pybiklib/config.py:98 #, python-brace-format msgid "" "If you find any bugs in Pybik or have a suggestion for an improvement then " "please submit a <{CONTACT_FILEBUG}|>bug report<|>." msgstr "" "Si encuentra un error en Pybik o quiere hacer una sugerencia, cree un " "<{CONTACT_FILEBUG}|>informe de error<|> (en inglés)." # translated by: Adolfo Jayme https://launchpad.net/~fitojb on 2013-06-15 11:39:49 UTC #: pybiklib/config.py:103 msgid "" "Translations are managed by the " "Launchpad " "translation group<|>.\n" "\n" "If you want help to translate Pybik to your language you can do it through " "the web interface<|>.\n" "\n" "Read more about \"Translating with " "Launchpad\"<|> and " "\"Starting to " "translate\"<|>." msgstr "" "El grupo " "de traducción de Launchpad<|> gestiona las traducciones.\n" "\n" "Si quiere ayudar a traducir Pybik a su idioma natal puede hacerlo mediante " "la interfaz web<|>.\n" "\n" "Lea más sobre traducir con " "Launchpad<|> y " "cómo " "empezar<|>." # translated by: Adolfo Jayme https://launchpad.net/~fitojb on 2015-03-28 22:58:44 UTC #: pybiklib/dialogs.py:44 msgid "Lighting" msgstr "Iluminación" # translated by: Oscar Fabian Prieto Gonzalez https://launchpad.net/~ofpprieto on 2015-04-15 17:00:40 UTC # reviewed by: Paco Molinero https://launchpad.net/~franciscomol on 2015-04-25 04:56:12 UTC #: pybiklib/dialogs.py:44 msgid "Simple" msgstr "Simple" # translated by: Paco Molinero https://launchpad.net/~franciscomol on 2017-10-07 07:28:11 UTC #. labels are the colored stickers on the cube #: pybiklib/dialogs.py:46 msgid "Labels" msgstr "Etiquetas" #: pybiklib/dialogs.py:104 data/ui/qt/main.ui.h:275 msgid "Select Puzzle" msgstr "" #. 1 slice, 2 slices, 3 slices, ... #: pybiklib/dialogs.py:134 pybiklib/dialogs.py:154 pybiklib/dialogs.py:180 #: pybiklib/dialogs.py:201 msgid "{} slice" msgid_plural "{} slices" msgstr[0] "" msgstr[1] "" #: pybiklib/dialogs.py:196 pybiklib/dialogs.py:225 msgid "{}×{} slices" msgstr "" # translated by: Paco Molinero https://launchpad.net/~franciscomol on 2015-04-25 04:56:12 UTC #. The next strings form the text in the help dialog: #. Title of the 1st paragraph #: pybiklib/dialogs.py:290 msgid "Using the mouse to rotate the cube" msgstr "Usar el ratón para rotar el cubo" #. Text of the 1st paragraph, followed by bullet list items #: pybiklib/dialogs.py:292 msgid "" "Position the mouse cursor over the puzzle and you will see an arrow that " "gives you a hint in which direction the slice under the mouse cursor will be " "rotated." msgstr "" # translated by: José Lou Chang https://launchpad.net/~obake on 2015-04-25 04:57:58 UTC # reviewed by: Paco Molinero https://launchpad.net/~franciscomol on 2015-04-25 05:04:11 UTC #: pybiklib/dialogs.py:294 msgid "" "The left mouse button rotates a single slice of the cube in the direction of " "the arrow." msgstr "" "El botón izquierdo del ratón gira un segmento del cubo en la dirección de la " "flecha." # translated by: José Lou Chang https://launchpad.net/~obake on 2015-04-25 04:57:58 UTC # reviewed by: Paco Molinero https://launchpad.net/~franciscomol on 2015-04-25 05:04:11 UTC #: pybiklib/dialogs.py:295 msgid "" "The right mouse button rotates a single slice of the cube against the " "direction of the arrow." msgstr "" "El botón derecho del ratón hace girar un segmento del cubo en contra de la " "dirección de la flecha." #: pybiklib/dialogs.py:296 msgid "" "To rotate the whole cube instead of a single slice press the Ctrl key " "together with the mouse button." msgstr "" # translated by: Paco Molinero https://launchpad.net/~franciscomol on 2015-04-25 04:56:12 UTC #. Title of the 2nd paragraph #: pybiklib/dialogs.py:298 msgid "Using the keyboard to rotate the cube" msgstr "Usar el teclado para rotar el cubo" # translated by: Oscar Fabian Prieto Gonzalez https://launchpad.net/~ofpprieto on 2015-04-15 17:04:05 UTC # reviewed by: Paco Molinero https://launchpad.net/~franciscomol on 2015-04-25 04:56:12 UTC #. Text of the 2nd paragraph, followed by bullet list items #: pybiklib/dialogs.py:300 msgid "" "Make sure the keyboard focus is on the cube area (e.g. click on the " "background of the cube). The keys can be configured in the preferences " "dialog, the default is:" msgstr "" "Asegúrese de que el teclado se encuentra enfocado en el área del cubo (por " "ejemplo, haga clic en el fondo del cubo). Las teclas se pueden configurar en " "el diálogo de preferencias, el valor predeterminado es:" #. before the item text is a list of keys #: pybiklib/dialogs.py:303 pybiklib/dialogs.py:318 msgid "Moves the left, right, upper, down, front or back slice clockwise." msgstr "" #: pybiklib/dialogs.py:304 pybiklib/dialogs.py:319 msgid "Moves a slice couterclockwise." msgstr "" #: pybiklib/dialogs.py:305 pybiklib/dialogs.py:320 msgid "Moves the whole cube." msgstr "" #. Title of the 3rd paragraph #: pybiklib/dialogs.py:307 msgid "Other keys and buttons" msgstr "" #. bullet list items of the 3rd paragraph #: pybiklib/dialogs.py:309 msgid "Mouse wheel – Zoom in/out" msgstr "" #: pybiklib/dialogs.py:310 msgid "" "Arrow keys, Left mouse button on the background – Changes the direction of " "looking at the cube." msgstr "" #: pybiklib/dialogs.py:311 msgid "" "Moves keyboard focus to the sequence editor above the cube area where you " "can edit the move sequence in the notation described below. Hit enter when " "done." msgstr "" #. Title of the 4th paragraph #: pybiklib/dialogs.py:315 msgid "Notation for moves" msgstr "" #. Text of the 4th paragraph, followed by bullet list items #: pybiklib/dialogs.py:317 msgid "" "All moves, however they are made, are displayed progressively above the cube " "area:" msgstr "" #: pybiklib/dialogs.py:321 msgid "" "Moves the first, second or third slice from left clockwise. The allowed " "numbers are in the range from 1 to the count of parallel slices. \"l1\" is " "always the same as \"l\" and for the classic 3×3×3-Cube \"l2\" is the same " "as \"r2-\" and \"l3\" is the same as \"r-\"." msgstr "" #: pybiklib/dialogs.py:325 msgid "You can use a space to separate groups of moves." msgstr "" # translated by: Dante Díaz https://launchpad.net/~dante on 2012-12-18 17:03:38 UTC #: pybiklib/dialogs.py:379 msgid "Pybik project website" msgstr "Sitio web del proyecto Pybik" #: pybiklib/pluginlib.py:301 msgid "This plugin does not work for any model." msgstr "" #: pybiklib/pluginlib.py:303 pybiklib/pluginlib.py:306 msgid "This plugin only works for:" msgstr "" #: pybiklib/pluginlib.py:498 msgid "This puzzle is not solvable." msgstr "" # translated by: Adolfo Jayme https://launchpad.net/~fitojb on 2013-06-01 22:28:06 UTC #. The following 6 words are for the antialiasing levels: disabled, ugly, low, medium, high, higher #: pybiklib/schema.py:211 msgid "disabled" msgstr "desactivado" # translated by: Adolfo Jayme https://launchpad.net/~fitojb on 2013-06-10 21:09:48 UTC #: pybiklib/schema.py:211 msgid "ugly" msgstr "horrible" # translated by: Adolfo Jayme https://launchpad.net/~fitojb on 2013-06-10 21:09:48 UTC #: pybiklib/schema.py:211 msgid "low" msgstr "baja" # translated by: Adolfo Jayme https://launchpad.net/~fitojb on 2013-06-10 21:09:48 UTC #: pybiklib/schema.py:212 msgid "medium" msgstr "media" # translated by: Adolfo Jayme https://launchpad.net/~fitojb on 2013-06-10 21:09:48 UTC #: pybiklib/schema.py:212 msgid "high" msgstr "alta" # translated by: Paco Molinero https://launchpad.net/~franciscomol on 2017-10-07 07:28:32 UTC #: pybiklib/schema.py:212 msgid "higher" msgstr "mayor" # translated by: Adolfo Jayme https://launchpad.net/~fitojb on 2015-03-28 22:58:44 UTC #: data/ui/qt/about.ui.h:212 msgid "About Pybik" msgstr "Acerca de Pybik" # translated by: Adolfo Jayme https://launchpad.net/~fitojb on 2015-03-28 22:58:44 UTC #: data/ui/qt/about.ui.h:213 msgid "Translators:" msgstr "Traductores:" # translated by: Adolfo Jayme https://launchpad.net/~fitojb on 2015-03-28 22:58:44 UTC #: data/ui/qt/about.ui.h:214 msgid "About" msgstr "Acerca de" # translated by: Paco Molinero https://launchpad.net/~franciscomol on 2017-10-07 07:28:32 UTC #: data/ui/qt/about.ui.h:215 msgid "Contribute" msgstr "Contribuir" # translated by: Adolfo Jayme https://launchpad.net/~fitojb on 2015-03-28 22:58:44 UTC #: data/ui/qt/about.ui.h:216 msgid "License" msgstr "Licencia" # translated by: Paco Molinero https://launchpad.net/~franciscomol on 2017-10-07 07:28:32 UTC #: data/ui/qt/help.ui.h:53 data/ui/qt/main.ui.h:297 msgid "Help" msgstr "Ayuda" # translated by: Adolfo Jayme https://launchpad.net/~fitojb on 2013-03-24 05:02:33 UTC #: data/ui/qt/main.ui.h:272 msgid "&New Challenge" msgstr "" #: data/ui/qt/main.ui.h:273 msgid "Ne&w Solved" msgstr "" # translated by: Adolfo Jayme https://launchpad.net/~fitojb on 2015-03-28 22:58:44 UTC #: data/ui/qt/main.ui.h:274 msgid "&Quit" msgstr "&Salir" #: data/ui/qt/main.ui.h:276 msgid "&Set as Initial State" msgstr "" #: data/ui/qt/main.ui.h:277 msgid "&Reset Rotation" msgstr "" # translated by: Adolfo Jayme https://launchpad.net/~fitojb on 2015-03-28 22:58:44 UTC #: data/ui/qt/main.ui.h:278 msgid "&Preferences …" msgstr "&Preferencias…" # translated by: Adolfo Jayme https://launchpad.net/~fitojb on 2015-03-28 22:58:44 UTC #: data/ui/qt/main.ui.h:279 msgid "&Status Bar" msgstr "Barra de e&stado" # translated by: Adolfo Jayme https://launchpad.net/~fitojb on 2015-03-28 22:58:44 UTC #: data/ui/qt/main.ui.h:280 msgid "&Info …" msgstr "&Información…" # translated by: Adolfo Jayme https://launchpad.net/~fitojb on 2015-03-28 22:58:44 UTC #: data/ui/qt/main.ui.h:281 msgid "Rewind" msgstr "Retroceder" # translated by: Adolfo Jayme https://launchpad.net/~fitojb on 2015-03-28 22:58:44 UTC #: data/ui/qt/main.ui.h:282 msgid "Previous" msgstr "Anterior" # translated by: Adolfo Jayme https://launchpad.net/~fitojb on 2015-03-28 22:58:44 UTC #: data/ui/qt/main.ui.h:283 msgid "Stop" msgstr "Detener" # translated by: Adolfo Jayme https://launchpad.net/~fitojb on 2015-03-28 22:58:44 UTC #: data/ui/qt/main.ui.h:284 msgid "Play" msgstr "Reproducir" # translated by: Adolfo Jayme https://launchpad.net/~fitojb on 2015-03-28 22:58:44 UTC #: data/ui/qt/main.ui.h:285 msgid "Next" msgstr "Siguiente" # translated by: Adolfo Jayme https://launchpad.net/~fitojb on 2015-03-28 22:58:44 UTC #: data/ui/qt/main.ui.h:286 msgid "Forward" msgstr "Avanzar" # translated by: Adolfo Jayme https://launchpad.net/~fitojb on 2015-03-28 22:58:44 UTC #: data/ui/qt/main.ui.h:287 msgid "Add Mark" msgstr "Añadir marca" # translated by: Adolfo Jayme https://launchpad.net/~fitojb on 2015-03-28 22:58:44 UTC #: data/ui/qt/main.ui.h:289 msgid "Mark the current place in the sequence of moves" msgstr "Marcar el lugar actual en la secuencia de movimientos" # translated by: Adolfo Jayme https://launchpad.net/~fitojb on 2015-03-28 22:58:44 UTC #: data/ui/qt/main.ui.h:291 msgid "Remove Mark" msgstr "Quitar marca" # translated by: Adolfo Jayme https://launchpad.net/~fitojb on 2015-03-28 22:58:44 UTC #: data/ui/qt/main.ui.h:293 msgid "Remove the mark at the current place in the sequence of moves" msgstr "Desmarcar el lugar actual en la secuencia de movimientos" # translated by: Adolfo Jayme https://launchpad.net/~fitojb on 2015-03-28 22:58:44 UTC #: data/ui/qt/main.ui.h:295 msgid "&Edit Bar" msgstr "Barra de &edición" #: data/ui/qt/main.ui.h:296 msgid "&Help …" msgstr "" # translated by: Adolfo Jayme https://launchpad.net/~fitojb on 2015-03-28 22:58:44 UTC #: data/ui/qt/preferences.ui.h:372 msgid "Preferences" msgstr "Preferencias" # translated by: Adolfo Jayme https://launchpad.net/~fitojb on 2015-03-28 22:58:44 UTC #: data/ui/qt/preferences.ui.h:373 msgid "Animation Speed:" msgstr "Velocidad de la animación:" # translated by: Adolfo Jayme https://launchpad.net/~fitojb on 2015-03-28 22:58:44 UTC #: data/ui/qt/preferences.ui.h:375 msgid "Mirror Distance:" msgstr "Distancia de espejo:" # translated by: Paco Molinero https://launchpad.net/~franciscomol on 2017-10-07 07:29:46 UTC #: data/ui/qt/preferences.ui.h:377 msgid "Quality:" msgstr "Calidad:" #: data/ui/qt/preferences.ui.h:380 msgid "" "Lower antialiasing has better performance, higher antialiasing has better " "quality." msgstr "" # translated by: Paco Molinero https://launchpad.net/~franciscomol on 2017-10-07 07:29:46 UTC #: data/ui/qt/preferences.ui.h:382 msgid "Antialiasing:" msgstr "Suavizado de bordes:" # translated by: Adolfo Jayme https://launchpad.net/~fitojb on 2013-06-01 22:28:06 UTC #: data/ui/qt/preferences.ui.h:384 msgid "The program needs to be restarted for the changes to take effect." msgstr "Necesita reiniciar el programa para que los cambios surtan efecto." # translated by: Adolfo Jayme https://launchpad.net/~fitojb on 2015-03-28 22:58:44 UTC #: data/ui/qt/preferences.ui.h:385 msgid "Graphic" msgstr "Gráfico" #: data/ui/qt/preferences.ui.h:386 msgid "Point and click, all directions" msgstr "" #: data/ui/qt/preferences.ui.h:387 msgid "Point and click, simplified" msgstr "" # translated by: Paco Molinero https://launchpad.net/~franciscomol on 2017-10-07 07:29:46 UTC #: data/ui/qt/preferences.ui.h:388 msgid "Gestures" msgstr "Gestos" # translated by: Adolfo Jayme https://launchpad.net/~fitojb on 2015-03-28 22:58:44 UTC #: data/ui/qt/preferences.ui.h:389 msgid "Mouse" msgstr "Ratón" # translated by: Adolfo Jayme https://launchpad.net/~fitojb on 2015-03-28 22:58:44 UTC #: data/ui/qt/preferences.ui.h:391 data/ui/qt/preferences.ui.h:393 msgid "Add" msgstr "Añadir" # translated by: Adolfo Jayme https://launchpad.net/~fitojb on 2015-03-28 22:58:44 UTC #: data/ui/qt/preferences.ui.h:395 data/ui/qt/preferences.ui.h:397 msgid "Remove" msgstr "Quitar" # translated by: Adolfo Jayme https://launchpad.net/~fitojb on 2015-03-28 22:58:44 UTC #: data/ui/qt/preferences.ui.h:399 data/ui/qt/preferences.ui.h:401 msgid "Reset" msgstr "Restablecer" # translated by: Adolfo Jayme https://launchpad.net/~fitojb on 2015-03-28 22:58:44 UTC #: data/ui/qt/preferences.ui.h:402 msgid "Keys" msgstr "Teclas" # translated by: Adolfo Jayme https://launchpad.net/~fitojb on 2015-03-28 22:58:44 UTC #: data/ui/qt/preferences.ui.h:403 msgid "Color:" msgstr "Color:" # translated by: Adolfo Jayme https://launchpad.net/~fitojb on 2015-03-28 22:58:44 UTC #: data/ui/qt/preferences.ui.h:405 msgid "Image File:" msgstr "Archivo de imagen:" # translated by: Adolfo Jayme https://launchpad.net/~fitojb on 2015-03-28 22:58:44 UTC #: data/ui/qt/preferences.ui.h:407 msgid "Tiled" msgstr "En mosaico" # translated by: Adolfo Jayme https://launchpad.net/~fitojb on 2015-03-28 22:58:44 UTC #: data/ui/qt/preferences.ui.h:408 msgid "Mosaic" msgstr "Mosaico" # translated by: Adolfo Jayme https://launchpad.net/~fitojb on 2015-03-28 22:58:44 UTC #: data/ui/qt/preferences.ui.h:409 msgid "Background:" msgstr "Fondo:" # translated by: Adolfo Jayme https://launchpad.net/~fitojb on 2015-03-28 22:58:44 UTC #: data/ui/qt/preferences.ui.h:411 msgid "Appearance" msgstr "Apariencia" # translated by: Adolfo Jayme https://launchpad.net/~fitojb on 2012-12-15 04:07:41 UTC #: pybiklib/ext/qt.py:1578 msgid "Move" msgstr "Mover" # translated by: Adolfo Jayme https://launchpad.net/~fitojb on 2012-12-15 04:07:41 UTC #: pybiklib/ext/qt.py:1581 msgid "Key" msgstr "Clave" # translated by: Adolfo Jayme https://launchpad.net/~fitojb on 2012-12-15 04:07:41 UTC #: pybiklib/ext/qt.py:1682 msgid "Open Image" msgstr "Abrir imagen" # translated by: Dante Díaz https://launchpad.net/~dante on 2012-12-18 17:01:21 UTC #: pybiklib/ext/qt.py:1720 msgid "plain" msgstr "plano" # translated by: Adolfo Jayme https://launchpad.net/~fitojb on 2012-12-27 04:55:38 UTC #: pybiklib/ext/qt.py:1723 msgid "select …" msgstr "seleccionar…" # translated by: Adolfo Jayme https://launchpad.net/~fitojb on 2012-12-15 03:33:48 UTC #: pybiklib/ext/qtui.py:94 msgid "Press a key …" msgstr "Oprima una tecla…" # translated by: Adolfo Jayme https://launchpad.net/~fitojb on 2013-03-24 05:02:33 UTC #. Add whatever keywords you want in your language, separated by semicolons, last character must be a semicolon. These keywords are used when searching for applications in Unity, GNOME Shell, etc. #: data/app-meta/pybik.desktop.in:10 msgid "rubik;cube;puzzle;magic;" msgstr "rubik;cubo;rompecabezas;mágico;" # translated by: Adolfo Jayme https://launchpad.net/~fitojb on 2013-03-24 05:02:33 UTC #: data/plugins/01-challenges.plugins.py:18 #: data/plugins/01-challenges.plugins.py:21 #: data/plugins/01-challenges.plugins.py:24 #: data/plugins/01-challenges.plugins.py:27 #: data/plugins/01-challenges.plugins.py:30 #: data/plugins/01-challenges.plugins.py:33 #: data/plugins/01-challenges.plugins.py:36 #: data/plugins/01-challenges.plugins.py:39 #: data/plugins/01-challenges.plugins.py:42 #: data/plugins/01-challenges.plugins.py:45 #: data/plugins/01-challenges.plugins.py:48 msgid "Challenges" msgstr "Desafíos" #: data/plugins/01-challenges.plugins.py:19 msgid "Solve random puzzle" msgstr "" #: data/plugins/01-challenges.plugins.py:22 #: data/plugins/01-challenges.plugins.py:25 #: data/plugins/01-challenges.plugins.py:28 #: data/plugins/01-challenges.plugins.py:31 #: data/plugins/01-challenges.plugins.py:34 #: data/plugins/01-challenges.plugins.py:37 #: data/plugins/01-challenges.plugins.py:40 #: data/plugins/01-challenges.plugins.py:43 #: data/plugins/01-challenges.plugins.py:46 #: data/plugins/01-challenges.plugins.py:49 msgid "Solve in {} move" msgid_plural "Solve in {} moves" msgstr[0] "" msgstr[1] "" # translated by: Dante Díaz https://launchpad.net/~dante on 2012-12-18 17:07:16 UTC #: data/plugins/10-beginners.plugins.py:31 #: data/plugins/10-beginners.plugins.py:34 #: data/plugins/10-beginners.plugins.py:56 #: data/plugins/10-beginners.plugins.py:73 #: data/plugins/10-beginners.plugins.py:100 #: data/plugins/10-beginners.plugins.py:118 #: data/plugins/10-beginners.plugins.py:140 #: data/plugins/10-beginners.plugins.py:158 #: data/plugins/14-leyan-lo.plugins.py:21 #: data/plugins/14-leyan-lo.plugins.py:24 #: data/plugins/14-leyan-lo.plugins.py:53 #: data/plugins/14-leyan-lo.plugins.py:74 #: data/plugins/14-leyan-lo.plugins.py:90 #: data/plugins/14-leyan-lo.plugins.py:107 #: data/plugins/14-leyan-lo.plugins.py:129 #: data/plugins/14-leyan-lo.plugins.py:170 #: data/plugins/150-spiegel.plugins.py:32 #: data/plugins/150-spiegel.plugins.py:35 #: data/plugins/150-spiegel.plugins.py:64 #: data/plugins/150-spiegel.plugins.py:85 #: data/plugins/150-spiegel.plugins.py:100 #: data/plugins/150-spiegel.plugins.py:113 #: data/plugins/150-spiegel.plugins.py:130 #: data/plugins/150-spiegel.plugins.py:141 #: data/plugins/151-spiegel-improved.plugins.py:20 #: data/plugins/151-spiegel-improved.plugins.py:23 #: data/plugins/151-spiegel-improved.plugins.py:68 #: data/plugins/151-spiegel-improved.plugins.py:107 #: data/plugins/151-spiegel-improved.plugins.py:139 #: data/plugins/151-spiegel-improved.plugins.py:165 #: data/plugins/151-spiegel-improved.plugins.py:183 #: data/plugins/151-spiegel-improved.plugins.py:197 #: data/plugins/20-2x2x2.plugins.py:18 data/plugins/20-2x2x2.plugins.py:21 #: data/plugins/20-2x2x2.plugins.py:37 data/plugins/20-2x2x2.plugins.py:55 msgid "Solvers" msgstr "Solucionadores" #: data/plugins/10-beginners.plugins.py:32 #: data/plugins/10-beginners.plugins.py:35 #: data/plugins/10-beginners.plugins.py:57 #: data/plugins/10-beginners.plugins.py:74 #: data/plugins/10-beginners.plugins.py:101 #: data/plugins/10-beginners.plugins.py:119 #: data/plugins/10-beginners.plugins.py:141 #: data/plugins/10-beginners.plugins.py:159 msgid "Beginner's method" msgstr "" # translated by: Adolfo Jayme https://launchpad.net/~fitojb on 2014-02-08 20:17:16 UTC #: data/plugins/10-beginners.plugins.py:36 #: data/plugins/14-leyan-lo.plugins.py:26 #: data/plugins/150-spiegel.plugins.py:37 #: data/plugins/151-spiegel-improved.plugins.py:25 msgid "Top edges" msgstr "Bordes superiores" # translated by: Adolfo Jayme https://launchpad.net/~fitojb on 2014-02-08 20:17:16 UTC #: data/plugins/10-beginners.plugins.py:58 #: data/plugins/14-leyan-lo.plugins.py:55 #: data/plugins/150-spiegel.plugins.py:66 #: data/plugins/151-spiegel-improved.plugins.py:70 msgid "Top corners" msgstr "Esquinas superiores" #: data/plugins/10-beginners.plugins.py:75 #: data/plugins/14-leyan-lo.plugins.py:76 #: data/plugins/150-spiegel.plugins.py:87 #: data/plugins/151-spiegel-improved.plugins.py:109 msgid "Middle slice" msgstr "" #: data/plugins/10-beginners.plugins.py:102 #: data/plugins/14-leyan-lo.plugins.py:92 #: data/plugins/150-spiegel.plugins.py:115 #: data/plugins/151-spiegel-improved.plugins.py:167 msgid "Bottom edge orient" msgstr "" #: data/plugins/10-beginners.plugins.py:120 #: data/plugins/14-leyan-lo.plugins.py:131 #: data/plugins/150-spiegel.plugins.py:143 #: data/plugins/151-spiegel-improved.plugins.py:199 #: data/plugins/20-2x2x2.plugins.py:57 msgid "Bottom corner orient" msgstr "" #: data/plugins/10-beginners.plugins.py:142 #: data/plugins/14-leyan-lo.plugins.py:109 #: data/plugins/150-spiegel.plugins.py:132 #: data/plugins/151-spiegel-improved.plugins.py:185 #: data/plugins/20-2x2x2.plugins.py:39 msgid "Bottom corner place" msgstr "" #: data/plugins/10-beginners.plugins.py:160 #: data/plugins/14-leyan-lo.plugins.py:172 #: data/plugins/150-spiegel.plugins.py:102 #: data/plugins/151-spiegel-improved.plugins.py:141 msgid "Bottom edge place" msgstr "" #. Leyan Lo is the inventor of the solution #: data/plugins/14-leyan-lo.plugins.py:23 #: data/plugins/14-leyan-lo.plugins.py:25 #: data/plugins/14-leyan-lo.plugins.py:54 #: data/plugins/14-leyan-lo.plugins.py:75 #: data/plugins/14-leyan-lo.plugins.py:91 #: data/plugins/14-leyan-lo.plugins.py:108 #: data/plugins/14-leyan-lo.plugins.py:130 #: data/plugins/14-leyan-lo.plugins.py:171 msgid "Leyan Lo" msgstr "" # translated by: Adolfo Jayme https://launchpad.net/~fitojb on 2012-12-15 04:20:05 UTC #. Spiegel is a german magazine #: data/plugins/150-spiegel.plugins.py:34 #: data/plugins/150-spiegel.plugins.py:36 #: data/plugins/150-spiegel.plugins.py:65 #: data/plugins/150-spiegel.plugins.py:86 #: data/plugins/150-spiegel.plugins.py:101 #: data/plugins/150-spiegel.plugins.py:114 #: data/plugins/150-spiegel.plugins.py:131 #: data/plugins/150-spiegel.plugins.py:142 msgid "Spiegel" msgstr "Spiegel" # translated by: Adolfo Jayme https://launchpad.net/~fitojb on 2012-12-15 04:20:27 UTC #. Spiegel is a german magazine #: data/plugins/151-spiegel-improved.plugins.py:22 #: data/plugins/151-spiegel-improved.plugins.py:24 #: data/plugins/151-spiegel-improved.plugins.py:69 #: data/plugins/151-spiegel-improved.plugins.py:108 #: data/plugins/151-spiegel-improved.plugins.py:140 #: data/plugins/151-spiegel-improved.plugins.py:166 #: data/plugins/151-spiegel-improved.plugins.py:184 #: data/plugins/151-spiegel-improved.plugins.py:198 msgid "Spiegel improved" msgstr "Spiegel mejorado" # translated by: Adolfo Jayme https://launchpad.net/~fitojb on 2012-12-15 04:20:27 UTC #: data/plugins/20-2x2x2.plugins.py:19 data/plugins/20-2x2x2.plugins.py:22 #: data/plugins/20-2x2x2.plugins.py:38 data/plugins/20-2x2x2.plugins.py:56 msgid "2×2×2" msgstr "2×2×2" #: data/plugins/20-2x2x2.plugins.py:23 msgid "Top slice" msgstr "" # translated by: Eduardo Alberto Calvo https://launchpad.net/~edu5800 on 2013-01-08 15:24:52 UTC # reviewed by: Adolfo Jayme https://launchpad.net/~fitojb on 2013-02-02 22:30:09 UTC #: data/plugins/80-pretty-patterns.plugins.py:20 #: data/plugins/80-pretty-patterns.plugins.py:23 #: data/plugins/80-pretty-patterns.plugins.py:27 #: data/plugins/80-pretty-patterns.plugins.py:31 #: data/plugins/80-pretty-patterns.plugins.py:35 #: data/plugins/80-pretty-patterns.plugins.py:40 #: data/plugins/80-pretty-patterns.plugins.py:44 msgid "Stripes" msgstr "Rayas" # translated by: Adolfo Jayme https://launchpad.net/~fitojb on 2013-06-15 12:01:51 UTC #: data/plugins/80-pretty-patterns.plugins.py:49 #: data/plugins/80-pretty-patterns.plugins.py:53 msgid "Criss-Cross" msgstr "Entrecruzado" # translated by: Adolfo Jayme https://launchpad.net/~fitojb on 2014-02-01 19:42:02 UTC #: data/plugins/80-pretty-patterns.plugins.py:57 msgid "Fried Eggs" msgstr "Huevos fritos" # translated by: Adolfo Jayme https://launchpad.net/~fitojb on 2014-02-01 19:42:02 UTC #: data/plugins/80-pretty-patterns.plugins.py:61 msgid "Big Fried Eggs" msgstr "Huevos fritos grandes" # translated by: Adolfo Jayme https://launchpad.net/~fitojb on 2014-02-01 19:42:02 UTC #: data/plugins/80-pretty-patterns.plugins.py:65 #: data/plugins/80-pretty-patterns.plugins.py:69 msgid "4 Fried Eggs" msgstr "4 huevos fritos" #: data/plugins/80-pretty-patterns.plugins.py:73 msgid "2 Fried Eggs" msgstr "" # translated by: Adolfo Jayme https://launchpad.net/~fitojb on 2012-12-15 04:20:47 UTC #: data/plugins/80-pretty-patterns.plugins.py:77 msgid "Chessboard" msgstr "Tablero de ajedrez" # translated by: Adolfo Jayme https://launchpad.net/~fitojb on 2013-06-15 12:02:27 UTC #: data/plugins/80-pretty-patterns.plugins.py:83 msgid "Cross" msgstr "Cruzado" # translated by: Adolfo Jayme https://launchpad.net/~fitojb on 2012-12-15 04:20:47 UTC #: data/plugins/80-pretty-patterns.plugins.py:87 msgid "Zig Zag" msgstr "Zig Zag" # translated by: Adolfo Jayme https://launchpad.net/~fitojb on 2013-06-01 22:32:45 UTC #. T is the shape formed by the cube labels. T-Time is a pun (Tea Time) and not suitable for literal translation. Don't translate it or use something common or whatever you think makes sense. #: data/plugins/80-pretty-patterns.plugins.py:93 #: data/plugins/80-pretty-patterns.plugins.py:96 #: data/plugins/80-pretty-patterns.plugins.py:100 #: data/plugins/80-pretty-patterns.plugins.py:104 #: data/plugins/80-pretty-patterns.plugins.py:108 #: data/plugins/80-pretty-patterns.plugins.py:112 msgid "T-Time" msgstr "Hora del T" # translated by: Adolfo Jayme https://launchpad.net/~fitojb on 2012-12-15 04:21:16 UTC #. C is the shape formed by the cube labels #: data/plugins/80-pretty-patterns.plugins.py:118 msgid "C" msgstr "C" # translated by: Adolfo Jayme https://launchpad.net/~fitojb on 2013-03-24 05:04:37 UTC #: data/plugins/80-pretty-patterns.plugins.py:121 msgid "Cube in a Cube" msgstr "Cubo en un cubo" # translated by: Aaron Farias https://launchpad.net/~timido on 2014-02-02 04:50:42 UTC # reviewed by: Paco Molinero https://launchpad.net/~franciscomol on 2015-04-25 04:56:12 UTC #: data/plugins/80-pretty-patterns.plugins.py:125 msgid "Striped Cube in a Cube" msgstr "Cubo de rayas en un cubo" #: data/plugins/80-pretty-patterns.plugins.py:129 msgid "Six square cuboids" msgstr "" # translated by: Adolfo Jayme https://launchpad.net/~fitojb on 2014-02-01 19:42:02 UTC #. Superflip may be not translated, because it has a special meaning in the mathematical theory behind the Rubik's Cube. #: data/plugins/80-pretty-patterns.plugins.py:135 msgid "Superflip" msgstr "Superflip" # translated by: Adolfo Jayme https://launchpad.net/~fitojb on 2014-02-01 19:42:02 UTC #: data/plugins/80-pretty-patterns.plugins.py:138 msgid "Superflip easy" msgstr "Superflip fácil" # translated by: Adolfo Jayme https://launchpad.net/~fitojb on 2012-12-15 04:21:16 UTC #: data/plugins/80-pretty-patterns.plugins.py:142 msgid "Green Mamba" msgstr "Mamba verde" # translated by: Adolfo Jayme https://launchpad.net/~fitojb on 2012-12-15 04:21:16 UTC #: data/plugins/80-pretty-patterns.plugins.py:146 msgid "Anaconda" msgstr "Anaconda" # translated by: Adolfo Jayme https://launchpad.net/~fitojb on 2014-02-08 20:21:28 UTC #: data/plugins/80-pretty-patterns.plugins.py:150 msgid "Duck Feet" msgstr "Pies de pato" #: data/plugins/80-pretty-patterns.plugins.py:154 #: data/plugins/80-pretty-patterns.plugins.py:158 #: data/plugins/80-pretty-patterns.plugins.py:162 #: data/plugins/80-pretty-patterns.plugins.py:166 #: data/plugins/80-pretty-patterns.plugins.py:170 #: data/plugins/80-pretty-patterns.plugins.py:174 #: data/plugins/80-pretty-patterns.plugins.py:178 #: data/plugins/80-pretty-patterns.plugins.py:182 msgid "Plus" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:186 #: data/plugins/80-pretty-patterns.plugins.py:191 #: data/plugins/80-pretty-patterns.plugins.py:196 #: data/plugins/80-pretty-patterns.plugins.py:200 msgid "Minus" msgstr "" # translated by: Paco Molinero https://launchpad.net/~franciscomol on 2017-10-07 07:30:36 UTC #: data/plugins/80-pretty-patterns.plugins.py:204 msgid "Volcano" msgstr "Volcán" #: data/plugins/80-pretty-patterns.plugins.py:208 msgid "Checkerboard (easy)" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:212 msgid "Checkerboard (fast)" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:216 msgid "Mixed Checkerboard" msgstr "" # translated by: Paco Molinero https://launchpad.net/~franciscomol on 2017-10-07 07:30:36 UTC #: data/plugins/80-pretty-patterns.plugins.py:220 msgid "Tipi" msgstr "Tipi" # translated by: Adolfo Jayme https://launchpad.net/~fitojb on 2012-12-15 04:21:34 UTC #: data/plugins/90-library.plugins.py:18 data/plugins/90-library.plugins.py:22 #: data/plugins/90-library.plugins.py:26 data/plugins/90-library.plugins.py:30 #: data/plugins/90-library.plugins.py:34 data/plugins/90-library.plugins.py:38 #: data/plugins/90-library.plugins.py:42 data/plugins/90-library.plugins.py:46 #: data/plugins/90-library.plugins.py:50 data/plugins/90-library.plugins.py:54 #: data/plugins/90-library.plugins.py:58 data/plugins/90-library.plugins.py:62 #: data/plugins/90-library.plugins.py:66 data/plugins/90-library.plugins.py:70 #: data/plugins/90-library.plugins.py:74 data/plugins/90-library.plugins.py:78 #: data/plugins/90-library.plugins.py:82 data/plugins/90-library.plugins.py:86 #: data/plugins/90-library.plugins.py:91 data/plugins/90-library.plugins.py:96 #: data/plugins/90-library.plugins.py:101 #: data/plugins/90-library.plugins.py:105 #: data/plugins/90-library.plugins.py:110 #: data/plugins/90-library.plugins.py:115 #: data/plugins/90-library.plugins.py:119 #: data/plugins/90-library.plugins.py:123 #: data/plugins/90-library.plugins.py:127 msgid "Library" msgstr "Biblioteca" #: data/plugins/90-library.plugins.py:19 data/plugins/90-library.plugins.py:23 #: data/plugins/90-library.plugins.py:27 data/plugins/90-library.plugins.py:31 #: data/plugins/90-library.plugins.py:35 msgid "Swap edges" msgstr "" #: data/plugins/90-library.plugins.py:20 msgid "3 edges ⟳, top layer" msgstr "" #: data/plugins/90-library.plugins.py:24 msgid "3 edges ⟲, top layer" msgstr "" #: data/plugins/90-library.plugins.py:28 msgid "3 edges, middle layer" msgstr "" #: data/plugins/90-library.plugins.py:32 msgid "4 edges, front and right" msgstr "" #: data/plugins/90-library.plugins.py:36 msgid "4 edges, front and back" msgstr "" #: data/plugins/90-library.plugins.py:39 msgid "Swap 2 edges and 2 corners, top layer" msgstr "" #: data/plugins/90-library.plugins.py:43 data/plugins/90-library.plugins.py:47 msgid "Flip edges" msgstr "" #: data/plugins/90-library.plugins.py:44 msgid "4 edges" msgstr "" #: data/plugins/90-library.plugins.py:48 msgid "2 edges, top layer" msgstr "" #: data/plugins/90-library.plugins.py:51 data/plugins/90-library.plugins.py:55 #: data/plugins/90-library.plugins.py:59 data/plugins/90-library.plugins.py:63 #: data/plugins/90-library.plugins.py:67 data/plugins/90-library.plugins.py:71 msgid "Swap corners" msgstr "" #: data/plugins/90-library.plugins.py:52 data/plugins/90-library.plugins.py:76 msgid "2 corners, top layer" msgstr "" #: data/plugins/90-library.plugins.py:56 msgid "2 corners diagonal, top layer" msgstr "" #: data/plugins/90-library.plugins.py:60 data/plugins/90-library.plugins.py:80 msgid "3 corners ⟳, top layer" msgstr "" #: data/plugins/90-library.plugins.py:64 msgid "3 corners ⟲, top layer" msgstr "" #: data/plugins/90-library.plugins.py:68 msgid "4 corners, top layer" msgstr "" #: data/plugins/90-library.plugins.py:72 msgid "2 corners, partial sequence, top layer" msgstr "" #: data/plugins/90-library.plugins.py:75 data/plugins/90-library.plugins.py:79 #: data/plugins/90-library.plugins.py:83 data/plugins/90-library.plugins.py:87 msgid "Rotate corners" msgstr "" #: data/plugins/90-library.plugins.py:84 msgid "1 corner ⟳, partial sequence, top layer" msgstr "" #: data/plugins/90-library.plugins.py:88 msgid "1 corner ⟲, partial sequence, top layer" msgstr "" #: data/plugins/90-library.plugins.py:92 data/plugins/90-library.plugins.py:97 #: data/plugins/90-library.plugins.py:102 #: data/plugins/90-library.plugins.py:111 msgid "Rotate center" msgstr "" #. 2 rotations of the center face in the upper layer #: data/plugins/90-library.plugins.py:94 msgid "2×Up" msgstr "" #. Up clockwise and front clockwise #: data/plugins/90-library.plugins.py:99 msgid "Up ⟳ and front ⟳" msgstr "" #. Up clockwise and front counterclockwise #: data/plugins/90-library.plugins.py:104 msgid "Up ⟳ and front ⟲" msgstr "" #: data/plugins/90-library.plugins.py:106 msgid "Swap center parts, up and front" msgstr "" #. Up clockwise and down counterclockwise #: data/plugins/90-library.plugins.py:113 msgid "Up ⟳ and down ⟲" msgstr "" # translated by: Dante Díaz https://launchpad.net/~dante on 2012-12-18 17:08:33 UTC # reviewed by: Adolfo Jayme https://launchpad.net/~fitojb on 2013-01-07 19:30:00 UTC #: data/plugins/90-library.plugins.py:116 #: data/plugins/90-library.plugins.py:120 #: data/plugins/90-library.plugins.py:124 #: data/plugins/90-library.plugins.py:128 msgid "Misc" msgstr "Varios" #. Yields in a rotated back layer, but the sequence of moves does not touch the back layer #: data/plugins/90-library.plugins.py:118 #: data/plugins/90-library.plugins.py:125 #: data/plugins/90-library.plugins.py:129 msgid "Back without back" msgstr "" #: data/plugins/90-library.plugins.py:121 msgid "2×Back without back" msgstr "" #: data/plugins/95-transformations.plugins.py:18 #: data/plugins/95-transformations.plugins.py:21 #: data/plugins/95-transformations.plugins.py:24 msgid "Move transformations" msgstr "" #: data/plugins/95-transformations.plugins.py:19 msgid "Invert move sequence" msgstr "" #: data/plugins/95-transformations.plugins.py:22 msgid "Normalize cube rotations" msgstr "" #: data/plugins/95-transformations.plugins.py:25 msgid "Normalize move sequence" msgstr "" # translated by: Dante Díaz https://launchpad.net/~dante on 2012-12-18 17:03:38 UTC #: buildlib/modeldef.py:110 msgid "Brick" msgstr "Ladrillo" # translated by: Eduardo Alberto Calvo https://launchpad.net/~edu5800 on 2013-01-08 15:23:31 UTC # reviewed by: Adolfo Jayme https://launchpad.net/~fitojb on 2013-02-02 22:30:09 UTC #: buildlib/modeldef.py:111 #, python-brace-format msgid "{0}×{1}×{2}-Brick" msgstr "{0}×{1}×{2}-Bloque" # translated by: Adolfo Jayme https://launchpad.net/~fitojb on 2012-12-15 04:07:41 UTC #: buildlib/modeldef.py:112 msgid "Width:" msgstr "Anchura:" # translated by: Adolfo Jayme https://launchpad.net/~fitojb on 2012-12-15 04:17:13 UTC #: buildlib/modeldef.py:112 buildlib/modeldef.py:151 buildlib/modeldef.py:249 #: buildlib/modeldef.py:300 buildlib/modeldef.py:311 msgid "Height:" msgstr "Altura:" # translated by: Adolfo Jayme https://launchpad.net/~fitojb on 2012-12-15 04:17:13 UTC #: buildlib/modeldef.py:112 msgid "Depth:" msgstr "Profundidad:" # translated by: Paco Molinero https://launchpad.net/~franciscomol on 2017-10-07 07:31:02 UTC #: buildlib/modeldef.py:120 buildlib/modeldef.py:257 buildlib/modeldef.py:319 #: buildlib/modeldef.py:374 buildlib/modeldef.py:433 msgid "up" msgstr "arriba" # translated by: Paco Molinero https://launchpad.net/~franciscomol on 2017-10-07 07:31:02 UTC #: buildlib/modeldef.py:120 buildlib/modeldef.py:205 buildlib/modeldef.py:257 #: buildlib/modeldef.py:319 buildlib/modeldef.py:373 buildlib/modeldef.py:430 msgid "down" msgstr "abajo" # translated by: Paco Molinero https://launchpad.net/~franciscomol on 2017-10-07 07:31:29 UTC #: buildlib/modeldef.py:120 buildlib/modeldef.py:205 buildlib/modeldef.py:257 msgid "left" msgstr "izquierda" # translated by: Paco Molinero https://launchpad.net/~franciscomol on 2017-10-07 07:31:29 UTC #: buildlib/modeldef.py:120 buildlib/modeldef.py:205 buildlib/modeldef.py:257 msgid "right" msgstr "derecha" # translated by: Paco Molinero https://launchpad.net/~franciscomol on 2017-10-07 07:31:29 UTC #: buildlib/modeldef.py:120 buildlib/modeldef.py:374 msgid "front" msgstr "frente" # translated by: Paco Molinero https://launchpad.net/~franciscomol on 2017-10-07 07:31:29 UTC #: buildlib/modeldef.py:120 buildlib/modeldef.py:205 buildlib/modeldef.py:257 #: buildlib/modeldef.py:320 buildlib/modeldef.py:373 msgid "back" msgstr "atrás" # translated by: Dante Díaz https://launchpad.net/~dante on 2012-12-18 17:03:38 UTC #: buildlib/modeldef.py:149 msgid "Tower" msgstr "Torre" # translated by: Eduardo Alberto Calvo https://launchpad.net/~edu5800 on 2013-01-08 15:23:31 UTC # reviewed by: Adolfo Jayme https://launchpad.net/~fitojb on 2013-02-02 22:30:09 UTC #: buildlib/modeldef.py:150 #, python-brace-format msgid "{0}×{1}-Tower" msgstr "{0}×{1}-Torre" # translated by: Adolfo Jayme https://launchpad.net/~fitojb on 2012-12-15 04:07:41 UTC #: buildlib/modeldef.py:151 buildlib/modeldef.py:249 buildlib/modeldef.py:300 #: buildlib/modeldef.py:311 msgid "Basis:" msgstr "Base:" # translated by: Adolfo Jayme https://launchpad.net/~fitojb on 2012-12-15 04:08:04 UTC #: buildlib/modeldef.py:163 msgid "Cube" msgstr "Cubo" # translated by: Eduardo Alberto Calvo https://launchpad.net/~edu5800 on 2013-01-08 15:23:31 UTC # reviewed by: Adolfo Jayme https://launchpad.net/~fitojb on 2013-02-02 22:30:09 UTC #: buildlib/modeldef.py:164 #, python-brace-format msgid "{0}×{0}×{0}-Cube" msgstr "{0}×{0}×{0}-Cubo" # translated by: Adolfo Jayme https://launchpad.net/~fitojb on 2012-12-15 04:07:41 UTC #: buildlib/modeldef.py:165 buildlib/modeldef.py:197 buildlib/modeldef.py:365 #: buildlib/modeldef.py:422 msgid "Size:" msgstr "Tamaño:" #: buildlib/modeldef.py:177 buildlib/modeldef.py:178 msgid "Void Cube" msgstr "" # translated by: Paco Molinero https://launchpad.net/~franciscomol on 2017-10-07 07:31:29 UTC #: buildlib/modeldef.py:195 msgid "Tetrahedron" msgstr "Tetraedro" #: buildlib/modeldef.py:196 #, python-brace-format msgid "{0}-Tetrahedron" msgstr "" #: buildlib/modeldef.py:247 msgid "Triangular Prism" msgstr "" #: buildlib/modeldef.py:248 #, python-brace-format msgid "{0}×{1} Triangular Prism" msgstr "" #: buildlib/modeldef.py:298 msgid "Triangular Prism (complex)" msgstr "" #: buildlib/modeldef.py:299 #, python-brace-format msgid "{0}×{1} Triangular Prism (complex)" msgstr "" # translated by: Paco Molinero https://launchpad.net/~franciscomol on 2017-10-07 07:31:40 UTC #: buildlib/modeldef.py:309 msgid "Pentagonal Prism" msgstr "Prisma pentagonal" #: buildlib/modeldef.py:310 #, python-brace-format msgid "{0}×{1} Pentagonal Prism" msgstr "" #: buildlib/modeldef.py:320 buildlib/modeldef.py:373 msgid "front-right" msgstr "" #: buildlib/modeldef.py:320 buildlib/modeldef.py:374 msgid "back-right" msgstr "" #: buildlib/modeldef.py:320 buildlib/modeldef.py:374 msgid "back-left" msgstr "" #: buildlib/modeldef.py:320 buildlib/modeldef.py:373 msgid "front-left" msgstr "" #: buildlib/modeldef.py:354 msgid "Pentagonal Prism (stretched)" msgstr "" #: buildlib/modeldef.py:355 #, python-brace-format msgid "{0}×{1} Pentagonal Prism (stretched)" msgstr "" # translated by: Paco Molinero https://launchpad.net/~franciscomol on 2017-10-07 07:31:40 UTC #: buildlib/modeldef.py:363 msgid "Octahedron" msgstr "Octaedro" #: buildlib/modeldef.py:364 #, python-brace-format msgid "{0}-Octahedron" msgstr "" # translated by: Paco Molinero https://launchpad.net/~franciscomol on 2017-10-07 07:31:49 UTC #: buildlib/modeldef.py:420 msgid "Dodecahedron" msgstr "Dodecaedro" #: buildlib/modeldef.py:421 #, python-brace-format msgid "{0}-Dodecahedron" msgstr "" #: buildlib/modeldef.py:430 msgid "down-back-right" msgstr "" #: buildlib/modeldef.py:430 msgid "down-front-right" msgstr "" #: buildlib/modeldef.py:431 msgid "down-front" msgstr "" #: buildlib/modeldef.py:431 msgid "down-front-left" msgstr "" #: buildlib/modeldef.py:431 msgid "down-back-left" msgstr "" #: buildlib/modeldef.py:432 msgid "up-back" msgstr "" #: buildlib/modeldef.py:432 msgid "up-back-right" msgstr "" #: buildlib/modeldef.py:432 msgid "up-front-right" msgstr "" #: buildlib/modeldef.py:433 msgid "up-front-left" msgstr "" #: buildlib/modeldef.py:433 msgid "up-back-left" msgstr "" pybik-3.0/po/ast.po0000664000175000017500000013404013173052130014404 0ustar barccbarcc00000000000000# Asturian translation for pybik # Copyright (c) 2013-2017 Rosetta Contributors and Canonical Ltd 2013 # This file is distributed under the same license as the pybik package. # FIRST AUTHOR , 2013. # msgid "" msgstr "" "Project-Id-Version: pybik\n" "Report-Msgid-Bugs-To: https://bugs.launchpad.net/pybik/+filebug\n" "POT-Creation-Date: 2017-09-10 21:58+0200\n" "PO-Revision-Date: 2017-09-17 05:54+0000\n" "Last-Translator: Xuacu Saturio \n" "Language-Team: Asturian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Launchpad-Export-Date: 2017-09-18 05:31+0000\n" "X-Generator: Launchpad (build 18449)\n" "Language: ast\n" # translated by: Xuacu Saturio https://launchpad.net/~xuacusk8 on 2013-06-01 23:24:41 UTC #: pybiklib/application.py:294 msgid "Press the Esc key to exit Edit Mode" msgstr "Calque la tecla Esc pa salir del mou d'edición" # translated by: Xuacu Saturio https://launchpad.net/~xuacusk8 on 2013-06-01 23:24:41 UTC #. substitution for {move_text} in statusbar text #: pybiklib/application.py:302 #, python-brace-format msgid "{current} / {total} move" msgid_plural "{current} / {total} moves" msgstr[0] "{current} / {total} movimientu" msgstr[1] "{current} / {total} movimientos" # translated by: Xuacu Saturio https://launchpad.net/~xuacusk8 on 2013-06-01 23:24:41 UTC #. substitution for {solved_text} in statusbar text #: pybiklib/application.py:306 msgid "solved" msgstr "resueltu" # translated by: Xuacu Saturio https://launchpad.net/~xuacusk8 on 2013-06-01 23:24:41 UTC #: pybiklib/application.py:306 msgid "not solved" msgstr "ensin resolver" # translated by: Xuacu Saturio https://launchpad.net/~xuacusk8 on 2013-06-01 23:24:41 UTC #. statusbar text #: pybiklib/application.py:309 #, python-brace-format msgid "{move_text}, {solved_text}" msgstr "{move_text}, {solved_text}" # translated by: Xuacu Saturio https://launchpad.net/~xuacusk8 on 2013-06-01 23:24:41 UTC #: pybiklib/application.py:314 msgid "Congratulations, you have solved the puzzle!" msgstr "¡Norabona, resolvió'l rompecabeces!" # translated by: Xuacu Saturio https://launchpad.net/~xuacusk8 on 2013-06-01 23:24:41 UTC #. Name of the application, probably should not be translated. #: pybiklib/config.py:35 data/ui/qt/main.ui.h:271 #: data/app-meta/pybik.desktop.in:3 msgid "Pybik" msgstr "Pybik" #. short description #: pybiklib/config.py:65 data/app-meta/pybik.desktop.in:4 msgid "Rubik's cube game" msgstr "" #. The next 7 lines belong together and form the long description #: pybiklib/config.py:68 msgid "Pybik is a 3D puzzle game about the cube invented by Ernő Rubik." msgstr "" #: pybiklib/config.py:70 msgid "" "Various 3D puzzles, such as cubes, towers, prisms, tetrahedra, octahedra, " "dodecahedra and many more" msgstr "" #: pybiklib/config.py:71 msgid "Solvers for some puzzles" msgstr "" # translated by: Xuacu Saturio https://launchpad.net/~xuacusk8 on 2013-06-15 11:10:34 UTC #. Use something that is common in the Rubik scene in your language, sometimes it's just the equivalent of "patterns". #: pybiklib/config.py:72 data/plugins/80-pretty-patterns.plugins.py:19 #: data/plugins/80-pretty-patterns.plugins.py:22 #: data/plugins/80-pretty-patterns.plugins.py:26 #: data/plugins/80-pretty-patterns.plugins.py:30 #: data/plugins/80-pretty-patterns.plugins.py:34 #: data/plugins/80-pretty-patterns.plugins.py:39 #: data/plugins/80-pretty-patterns.plugins.py:43 #: data/plugins/80-pretty-patterns.plugins.py:48 #: data/plugins/80-pretty-patterns.plugins.py:52 #: data/plugins/80-pretty-patterns.plugins.py:56 #: data/plugins/80-pretty-patterns.plugins.py:60 #: data/plugins/80-pretty-patterns.plugins.py:64 #: data/plugins/80-pretty-patterns.plugins.py:68 #: data/plugins/80-pretty-patterns.plugins.py:72 #: data/plugins/80-pretty-patterns.plugins.py:76 #: data/plugins/80-pretty-patterns.plugins.py:82 #: data/plugins/80-pretty-patterns.plugins.py:86 #: data/plugins/80-pretty-patterns.plugins.py:91 #: data/plugins/80-pretty-patterns.plugins.py:95 #: data/plugins/80-pretty-patterns.plugins.py:99 #: data/plugins/80-pretty-patterns.plugins.py:103 #: data/plugins/80-pretty-patterns.plugins.py:107 #: data/plugins/80-pretty-patterns.plugins.py:111 #: data/plugins/80-pretty-patterns.plugins.py:116 #: data/plugins/80-pretty-patterns.plugins.py:120 #: data/plugins/80-pretty-patterns.plugins.py:124 #: data/plugins/80-pretty-patterns.plugins.py:128 #: data/plugins/80-pretty-patterns.plugins.py:133 #: data/plugins/80-pretty-patterns.plugins.py:137 #: data/plugins/80-pretty-patterns.plugins.py:141 #: data/plugins/80-pretty-patterns.plugins.py:145 #: data/plugins/80-pretty-patterns.plugins.py:149 #: data/plugins/80-pretty-patterns.plugins.py:153 #: data/plugins/80-pretty-patterns.plugins.py:157 #: data/plugins/80-pretty-patterns.plugins.py:161 #: data/plugins/80-pretty-patterns.plugins.py:165 #: data/plugins/80-pretty-patterns.plugins.py:169 #: data/plugins/80-pretty-patterns.plugins.py:173 #: data/plugins/80-pretty-patterns.plugins.py:177 #: data/plugins/80-pretty-patterns.plugins.py:181 #: data/plugins/80-pretty-patterns.plugins.py:185 #: data/plugins/80-pretty-patterns.plugins.py:190 #: data/plugins/80-pretty-patterns.plugins.py:195 #: data/plugins/80-pretty-patterns.plugins.py:199 #: data/plugins/80-pretty-patterns.plugins.py:203 #: data/plugins/80-pretty-patterns.plugins.py:207 #: data/plugins/80-pretty-patterns.plugins.py:211 #: data/plugins/80-pretty-patterns.plugins.py:215 #: data/plugins/80-pretty-patterns.plugins.py:219 msgid "Pretty patterns" msgstr "Patrones guapos" #: pybiklib/config.py:73 msgid "Editor for move sequences" msgstr "" #: pybiklib/config.py:74 msgid "Custom colors and images on the surface of the puzzles" msgstr "" # translated by: Xuacu Saturio https://launchpad.net/~xuacusk8 on 2013-06-15 10:32:54 UTC #: pybiklib/config.py:78 msgid "" "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.\n" "\n" "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." msgstr "" "Esti programa ye software llibre: pue redistribuílu y/o camudalu baxo los " "términos de la Llicencia Pública Xeneral GNU, tal y como la publica la Free " "Software Foundation, o bien la versión 3 de la llicencia, o (como prefiera) " "cualquier versión posterior.\n" "\n" "Esti programa distribúise esperando que seya útil, pero ENSIN NENGUNA " "GARANTÍA, sin siquiera la garantía implícita de COMERCIALIDÁ o ADAUTACIÖN PA " "UN PROPÓSITU PARTICULAR. Vea la Llicencia Pública Xeneral GNU pa más " "detalles." # translated by: Xuacu Saturio https://launchpad.net/~xuacusk8 on 2013-06-09 13:51:42 UTC #. Text between "<" and ">" is expanded to a link by the program and should not be modified. #. Text between "" and "<|>" is the translatable text for the link. #: pybiklib/config.py:90 msgid "" "Read the full text of the GNU General Public " "License<|> or see ." msgstr "" "Llea'l testu completu de la Llicencia Pública " "Xeneral GNU<|> o vea ." # translated by: Xuacu Saturio https://launchpad.net/~xuacusk8 on 2013-06-09 13:51:42 UTC #: pybiklib/config.py:93 msgid "" "You should have received a copy of the GNU General Public License along with " "this program. If not, see ." msgstr "" "Habría de tener recibío una copia de la Llicencia Pública Xeneral GNU xunto " "con esti programa. Sinón visite ." # translated by: Xuacu Saturio https://launchpad.net/~xuacusk8 on 2013-06-09 13:51:42 UTC #: pybiklib/config.py:98 #, python-brace-format msgid "" "If you find any bugs in Pybik or have a suggestion for an improvement then " "please submit a <{CONTACT_FILEBUG}|>bug report<|>." msgstr "" "Se atopa algún fallu en Pybik o tien una suxerencia p'ameyoralu, por favor, " "unvie un <{CONTACT_FILEBUG}|>informe d'error<|>." # translated by: Xuacu Saturio https://launchpad.net/~xuacusk8 on 2013-06-09 13:51:42 UTC #: pybiklib/config.py:103 msgid "" "Translations are managed by the " "Launchpad " "translation group<|>.\n" "\n" "If you want help to translate Pybik to your language you can do it through " "the web interface<|>.\n" "\n" "Read more about \"Translating with " "Launchpad\"<|> and " "\"Starting to " "translate\"<|>." msgstr "" "Les traducciones xestionense pol " "Grupu de " "traducción de Launchpad<|>.\n" "\n" "Si quier ayudar a traducir Pybik al so idioma pue facelo usando la " "interfaz web<|>.\n" "\n" "Llea más tocante a \"Traducir con " "Launchpad\"<|> y " "\"Principiar a " "traducir\"<|>." # translated by: Xuacu Saturio https://launchpad.net/~xuacusk8 on 2015-03-28 22:57:26 UTC #: pybiklib/dialogs.py:44 msgid "Lighting" msgstr "Illuminación" #: pybiklib/dialogs.py:44 msgid "Simple" msgstr "" #. labels are the colored stickers on the cube #: pybiklib/dialogs.py:46 msgid "Labels" msgstr "" #: pybiklib/dialogs.py:104 data/ui/qt/main.ui.h:275 msgid "Select Puzzle" msgstr "" # translated by: Xuacu Saturio https://launchpad.net/~xuacusk8 on 2013-06-15 11:10:34 UTC #. 1 slice, 2 slices, 3 slices, ... #: pybiklib/dialogs.py:134 pybiklib/dialogs.py:154 pybiklib/dialogs.py:180 #: pybiklib/dialogs.py:201 msgid "{} slice" msgid_plural "{} slices" msgstr[0] "" msgstr[1] "" #: pybiklib/dialogs.py:196 pybiklib/dialogs.py:225 msgid "{}×{} slices" msgstr "" #. The next strings form the text in the help dialog: #. Title of the 1st paragraph #: pybiklib/dialogs.py:290 msgid "Using the mouse to rotate the cube" msgstr "" #. Text of the 1st paragraph, followed by bullet list items #: pybiklib/dialogs.py:292 msgid "" "Position the mouse cursor over the puzzle and you will see an arrow that " "gives you a hint in which direction the slice under the mouse cursor will be " "rotated." msgstr "" #: pybiklib/dialogs.py:294 msgid "" "The left mouse button rotates a single slice of the cube in the direction of " "the arrow." msgstr "" #: pybiklib/dialogs.py:295 msgid "" "The right mouse button rotates a single slice of the cube against the " "direction of the arrow." msgstr "" #: pybiklib/dialogs.py:296 msgid "" "To rotate the whole cube instead of a single slice press the Ctrl key " "together with the mouse button." msgstr "" #. Title of the 2nd paragraph #: pybiklib/dialogs.py:298 msgid "Using the keyboard to rotate the cube" msgstr "" #. Text of the 2nd paragraph, followed by bullet list items #: pybiklib/dialogs.py:300 msgid "" "Make sure the keyboard focus is on the cube area (e.g. click on the " "background of the cube). The keys can be configured in the preferences " "dialog, the default is:" msgstr "" #. before the item text is a list of keys #: pybiklib/dialogs.py:303 pybiklib/dialogs.py:318 msgid "Moves the left, right, upper, down, front or back slice clockwise." msgstr "" #: pybiklib/dialogs.py:304 pybiklib/dialogs.py:319 msgid "Moves a slice couterclockwise." msgstr "" #: pybiklib/dialogs.py:305 pybiklib/dialogs.py:320 msgid "Moves the whole cube." msgstr "" #. Title of the 3rd paragraph #: pybiklib/dialogs.py:307 msgid "Other keys and buttons" msgstr "" #. bullet list items of the 3rd paragraph #: pybiklib/dialogs.py:309 msgid "Mouse wheel – Zoom in/out" msgstr "" #: pybiklib/dialogs.py:310 msgid "" "Arrow keys, Left mouse button on the background – Changes the direction of " "looking at the cube." msgstr "" #: pybiklib/dialogs.py:311 msgid "" "Moves keyboard focus to the sequence editor above the cube area where you " "can edit the move sequence in the notation described below. Hit enter when " "done." msgstr "" #. Title of the 4th paragraph #: pybiklib/dialogs.py:315 msgid "Notation for moves" msgstr "" #. Text of the 4th paragraph, followed by bullet list items #: pybiklib/dialogs.py:317 msgid "" "All moves, however they are made, are displayed progressively above the cube " "area:" msgstr "" #: pybiklib/dialogs.py:321 msgid "" "Moves the first, second or third slice from left clockwise. The allowed " "numbers are in the range from 1 to the count of parallel slices. \"l1\" is " "always the same as \"l\" and for the classic 3×3×3-Cube \"l2\" is the same " "as \"r2-\" and \"l3\" is the same as \"r-\"." msgstr "" #: pybiklib/dialogs.py:325 msgid "You can use a space to separate groups of moves." msgstr "" # translated by: ivarela https://launchpad.net/~ivarela on 2013-06-09 13:36:48 UTC #: pybiklib/dialogs.py:379 msgid "Pybik project website" msgstr "Sitiu web del proyeutu Pybik" #: pybiklib/pluginlib.py:301 msgid "This plugin does not work for any model." msgstr "" #: pybiklib/pluginlib.py:303 pybiklib/pluginlib.py:306 msgid "This plugin only works for:" msgstr "" #: pybiklib/pluginlib.py:498 msgid "This puzzle is not solvable." msgstr "" # translated by: ivarela https://launchpad.net/~ivarela on 2013-06-09 13:38:41 UTC #. The following 6 words are for the antialiasing levels: disabled, ugly, low, medium, high, higher #: pybiklib/schema.py:211 msgid "disabled" msgstr "desactiváu" # translated by: Xuacu Saturio https://launchpad.net/~xuacusk8 on 2013-06-15 10:32:54 UTC #: pybiklib/schema.py:211 msgid "ugly" msgstr "feu" # translated by: ivarela https://launchpad.net/~ivarela on 2013-06-09 13:38:41 UTC #: pybiklib/schema.py:211 msgid "low" msgstr "baxo" # translated by: ivarela https://launchpad.net/~ivarela on 2013-06-09 13:38:41 UTC #: pybiklib/schema.py:212 msgid "medium" msgstr "mediu" # translated by: ivarela https://launchpad.net/~ivarela on 2013-06-09 13:38:41 UTC #: pybiklib/schema.py:212 msgid "high" msgstr "Altu/a" # translated by: ivarela https://launchpad.net/~ivarela on 2013-06-09 13:38:41 UTC #: pybiklib/schema.py:212 msgid "higher" msgstr "mayor" # translated by: Xuacu Saturio https://launchpad.net/~xuacusk8 on 2015-03-28 22:57:26 UTC #: data/ui/qt/about.ui.h:212 msgid "About Pybik" msgstr "Tocante a Pybik" # translated by: Xuacu Saturio https://launchpad.net/~xuacusk8 on 2015-03-28 22:57:26 UTC #: data/ui/qt/about.ui.h:213 msgid "Translators:" msgstr "Traductores:" # translated by: Xuacu Saturio https://launchpad.net/~xuacusk8 on 2015-03-28 22:57:26 UTC #: data/ui/qt/about.ui.h:214 msgid "About" msgstr "Tocante a" #: data/ui/qt/about.ui.h:215 msgid "Contribute" msgstr "" # translated by: Xuacu Saturio https://launchpad.net/~xuacusk8 on 2015-03-28 22:57:26 UTC #: data/ui/qt/about.ui.h:216 msgid "License" msgstr "Llicencia" #: data/ui/qt/help.ui.h:53 data/ui/qt/main.ui.h:297 msgid "Help" msgstr "" # translated by: Xuacu Saturio https://launchpad.net/~xuacusk8 on 2013-06-15 11:01:47 UTC #: data/ui/qt/main.ui.h:272 msgid "&New Challenge" msgstr "" # translated by: Xuacu Saturio https://launchpad.net/~xuacusk8 on 2015-03-28 22:57:26 UTC #: data/ui/qt/main.ui.h:273 msgid "Ne&w Solved" msgstr "Nue&vu resueltu" # translated by: Xuacu Saturio https://launchpad.net/~xuacusk8 on 2015-03-28 22:57:26 UTC #: data/ui/qt/main.ui.h:274 msgid "&Quit" msgstr "Co&lar" # translated by: Xuacu Saturio https://launchpad.net/~xuacusk8 on 2015-03-28 22:57:26 UTC #: data/ui/qt/main.ui.h:276 msgid "&Set as Initial State" msgstr "&Definir como estáu inicial" # translated by: Xuacu Saturio https://launchpad.net/~xuacusk8 on 2015-03-28 22:57:26 UTC #: data/ui/qt/main.ui.h:277 msgid "&Reset Rotation" msgstr "&Reestablecer xiru" # translated by: Xuacu Saturio https://launchpad.net/~xuacusk8 on 2015-03-28 22:57:26 UTC #: data/ui/qt/main.ui.h:278 msgid "&Preferences …" msgstr "&Preferencies…" # translated by: Xuacu Saturio https://launchpad.net/~xuacusk8 on 2015-03-28 22:57:26 UTC #: data/ui/qt/main.ui.h:279 msgid "&Status Bar" msgstr "Barra d'&estáu" # translated by: Xuacu Saturio https://launchpad.net/~xuacusk8 on 2015-03-28 22:57:26 UTC #: data/ui/qt/main.ui.h:280 msgid "&Info …" msgstr "&Info…" # translated by: Xuacu Saturio https://launchpad.net/~xuacusk8 on 2015-03-28 22:57:26 UTC #: data/ui/qt/main.ui.h:281 msgid "Rewind" msgstr "Rebobinar" # translated by: Xuacu Saturio https://launchpad.net/~xuacusk8 on 2015-03-28 22:57:26 UTC #: data/ui/qt/main.ui.h:282 msgid "Previous" msgstr "Anterior" # translated by: Xuacu Saturio https://launchpad.net/~xuacusk8 on 2015-03-28 22:57:26 UTC #: data/ui/qt/main.ui.h:283 msgid "Stop" msgstr "Parar" # translated by: Xuacu Saturio https://launchpad.net/~xuacusk8 on 2015-03-28 22:57:26 UTC #: data/ui/qt/main.ui.h:284 msgid "Play" msgstr "Xugar" # translated by: Xuacu Saturio https://launchpad.net/~xuacusk8 on 2015-03-28 22:57:26 UTC #: data/ui/qt/main.ui.h:285 msgid "Next" msgstr "Siguiente" # translated by: Xuacu Saturio https://launchpad.net/~xuacusk8 on 2015-03-28 22:57:26 UTC #: data/ui/qt/main.ui.h:286 msgid "Forward" msgstr "Alantre" # translated by: Xuacu Saturio https://launchpad.net/~xuacusk8 on 2015-03-28 22:57:26 UTC #: data/ui/qt/main.ui.h:287 msgid "Add Mark" msgstr "Amestar marca" # translated by: Xuacu Saturio https://launchpad.net/~xuacusk8 on 2015-03-28 22:57:26 UTC #: data/ui/qt/main.ui.h:289 msgid "Mark the current place in the sequence of moves" msgstr "Marcar el llugar actual na secuencia de movimientos" # translated by: Xuacu Saturio https://launchpad.net/~xuacusk8 on 2015-03-28 22:57:26 UTC #: data/ui/qt/main.ui.h:291 msgid "Remove Mark" msgstr "Desaniciar marca" # translated by: Xuacu Saturio https://launchpad.net/~xuacusk8 on 2015-03-28 22:57:26 UTC #: data/ui/qt/main.ui.h:293 msgid "Remove the mark at the current place in the sequence of moves" msgstr "Desaniciar la marca del llugar actual na secuencia de movimientos" # translated by: Xuacu Saturio https://launchpad.net/~xuacusk8 on 2015-03-28 22:57:26 UTC #: data/ui/qt/main.ui.h:295 msgid "&Edit Bar" msgstr "&Editar barra" #: data/ui/qt/main.ui.h:296 msgid "&Help …" msgstr "" # translated by: Xuacu Saturio https://launchpad.net/~xuacusk8 on 2015-03-28 22:57:26 UTC #: data/ui/qt/preferences.ui.h:372 msgid "Preferences" msgstr "Preferencies" # translated by: Xuacu Saturio https://launchpad.net/~xuacusk8 on 2015-03-28 22:57:26 UTC #: data/ui/qt/preferences.ui.h:373 msgid "Animation Speed:" msgstr "Velocidá de l'animación:" # translated by: Xuacu Saturio https://launchpad.net/~xuacusk8 on 2015-03-28 22:57:26 UTC #: data/ui/qt/preferences.ui.h:375 msgid "Mirror Distance:" msgstr "Distancia d'espeyu:" #: data/ui/qt/preferences.ui.h:377 msgid "Quality:" msgstr "" #: data/ui/qt/preferences.ui.h:380 msgid "" "Lower antialiasing has better performance, higher antialiasing has better " "quality." msgstr "" #: data/ui/qt/preferences.ui.h:382 msgid "Antialiasing:" msgstr "" # translated by: ivarela https://launchpad.net/~ivarela on 2013-06-09 13:33:59 UTC # reviewed by: Xuacu Saturio https://launchpad.net/~xuacusk8 on 2013-06-15 11:11:40 UTC #: data/ui/qt/preferences.ui.h:384 msgid "The program needs to be restarted for the changes to take effect." msgstr "Necesites reaniciar el programa pa que los cambeos surtan efeutu." # translated by: Xuacu Saturio https://launchpad.net/~xuacusk8 on 2015-03-28 22:57:26 UTC #: data/ui/qt/preferences.ui.h:385 msgid "Graphic" msgstr "Gráficu" #: data/ui/qt/preferences.ui.h:386 msgid "Point and click, all directions" msgstr "" #: data/ui/qt/preferences.ui.h:387 msgid "Point and click, simplified" msgstr "" #: data/ui/qt/preferences.ui.h:388 msgid "Gestures" msgstr "" # translated by: Xuacu Saturio https://launchpad.net/~xuacusk8 on 2015-03-28 22:57:26 UTC #: data/ui/qt/preferences.ui.h:389 msgid "Mouse" msgstr "Mur" # translated by: Xuacu Saturio https://launchpad.net/~xuacusk8 on 2015-03-28 22:57:26 UTC #: data/ui/qt/preferences.ui.h:391 data/ui/qt/preferences.ui.h:393 msgid "Add" msgstr "Amestar" # translated by: Xuacu Saturio https://launchpad.net/~xuacusk8 on 2015-03-28 22:57:26 UTC #: data/ui/qt/preferences.ui.h:395 data/ui/qt/preferences.ui.h:397 msgid "Remove" msgstr "Desaniciar" # translated by: Xuacu Saturio https://launchpad.net/~xuacusk8 on 2015-03-28 22:57:26 UTC #: data/ui/qt/preferences.ui.h:399 data/ui/qt/preferences.ui.h:401 msgid "Reset" msgstr "Reaniciar" # translated by: Xuacu Saturio https://launchpad.net/~xuacusk8 on 2015-03-28 22:57:26 UTC #: data/ui/qt/preferences.ui.h:402 msgid "Keys" msgstr "Tecles" # translated by: Xuacu Saturio https://launchpad.net/~xuacusk8 on 2015-03-28 22:57:26 UTC #: data/ui/qt/preferences.ui.h:403 msgid "Color:" msgstr "Color:" # translated by: Xuacu Saturio https://launchpad.net/~xuacusk8 on 2015-03-28 22:57:26 UTC #: data/ui/qt/preferences.ui.h:405 msgid "Image File:" msgstr "Ficheru d'imaxe:" # translated by: Xuacu Saturio https://launchpad.net/~xuacusk8 on 2015-03-28 22:57:26 UTC #: data/ui/qt/preferences.ui.h:407 msgid "Tiled" msgstr "En mosaicu" # translated by: Xuacu Saturio https://launchpad.net/~xuacusk8 on 2015-03-28 22:57:26 UTC #: data/ui/qt/preferences.ui.h:408 msgid "Mosaic" msgstr "Mosaicu" # translated by: Xuacu Saturio https://launchpad.net/~xuacusk8 on 2015-03-28 22:57:26 UTC #: data/ui/qt/preferences.ui.h:409 msgid "Background:" msgstr "Fondu:" # translated by: Xuacu Saturio https://launchpad.net/~xuacusk8 on 2015-03-28 22:57:26 UTC #: data/ui/qt/preferences.ui.h:411 msgid "Appearance" msgstr "Aspeutu" # translated by: ivarela https://launchpad.net/~ivarela on 2013-06-09 13:35:38 UTC #: pybiklib/ext/qt.py:1578 msgid "Move" msgstr "Mover" # translated by: ivarela https://launchpad.net/~ivarela on 2013-06-09 13:35:38 UTC #: pybiklib/ext/qt.py:1581 msgid "Key" msgstr "Clave" # translated by: ivarela https://launchpad.net/~ivarela on 2013-06-09 13:35:38 UTC #: pybiklib/ext/qt.py:1682 msgid "Open Image" msgstr "Abrir imaxe" # translated by: ivarela https://launchpad.net/~ivarela on 2013-06-09 13:33:59 UTC # reviewed by: Xuacu Saturio https://launchpad.net/~xuacusk8 on 2013-06-15 11:11:40 UTC #: pybiklib/ext/qt.py:1720 msgid "plain" msgstr "planu" # translated by: ivarela https://launchpad.net/~ivarela on 2013-06-09 13:33:59 UTC # reviewed by: Xuacu Saturio https://launchpad.net/~xuacusk8 on 2013-06-15 11:11:40 UTC #: pybiklib/ext/qt.py:1723 msgid "select …" msgstr "seleicionar…" # translated by: ivarela https://launchpad.net/~ivarela on 2013-06-09 13:33:59 UTC # reviewed by: Xuacu Saturio https://launchpad.net/~xuacusk8 on 2013-06-15 11:11:40 UTC #: pybiklib/ext/qtui.py:94 msgid "Press a key …" msgstr "Calca una tecla…" # translated by: Xuacu Saturio https://launchpad.net/~xuacusk8 on 2013-06-15 11:01:47 UTC #. Add whatever keywords you want in your language, separated by semicolons, last character must be a semicolon. These keywords are used when searching for applications in Unity, GNOME Shell, etc. #: data/app-meta/pybik.desktop.in:10 msgid "rubik;cube;puzzle;magic;" msgstr "rubik;cubu;rompecabeces;máxicu;" # translated by: Xuacu Saturio https://launchpad.net/~xuacusk8 on 2013-06-15 11:01:47 UTC #: data/plugins/01-challenges.plugins.py:18 #: data/plugins/01-challenges.plugins.py:21 #: data/plugins/01-challenges.plugins.py:24 #: data/plugins/01-challenges.plugins.py:27 #: data/plugins/01-challenges.plugins.py:30 #: data/plugins/01-challenges.plugins.py:33 #: data/plugins/01-challenges.plugins.py:36 #: data/plugins/01-challenges.plugins.py:39 #: data/plugins/01-challenges.plugins.py:42 #: data/plugins/01-challenges.plugins.py:45 #: data/plugins/01-challenges.plugins.py:48 msgid "Challenges" msgstr "Retos" #: data/plugins/01-challenges.plugins.py:19 msgid "Solve random puzzle" msgstr "" #: data/plugins/01-challenges.plugins.py:22 #: data/plugins/01-challenges.plugins.py:25 #: data/plugins/01-challenges.plugins.py:28 #: data/plugins/01-challenges.plugins.py:31 #: data/plugins/01-challenges.plugins.py:34 #: data/plugins/01-challenges.plugins.py:37 #: data/plugins/01-challenges.plugins.py:40 #: data/plugins/01-challenges.plugins.py:43 #: data/plugins/01-challenges.plugins.py:46 #: data/plugins/01-challenges.plugins.py:49 msgid "Solve in {} move" msgid_plural "Solve in {} moves" msgstr[0] "" msgstr[1] "" # translated by: Xuacu Saturio https://launchpad.net/~xuacusk8 on 2013-06-15 11:15:47 UTC #: data/plugins/10-beginners.plugins.py:31 #: data/plugins/10-beginners.plugins.py:34 #: data/plugins/10-beginners.plugins.py:56 #: data/plugins/10-beginners.plugins.py:73 #: data/plugins/10-beginners.plugins.py:100 #: data/plugins/10-beginners.plugins.py:118 #: data/plugins/10-beginners.plugins.py:140 #: data/plugins/10-beginners.plugins.py:158 #: data/plugins/14-leyan-lo.plugins.py:21 #: data/plugins/14-leyan-lo.plugins.py:24 #: data/plugins/14-leyan-lo.plugins.py:53 #: data/plugins/14-leyan-lo.plugins.py:74 #: data/plugins/14-leyan-lo.plugins.py:90 #: data/plugins/14-leyan-lo.plugins.py:107 #: data/plugins/14-leyan-lo.plugins.py:129 #: data/plugins/14-leyan-lo.plugins.py:170 #: data/plugins/150-spiegel.plugins.py:32 #: data/plugins/150-spiegel.plugins.py:35 #: data/plugins/150-spiegel.plugins.py:64 #: data/plugins/150-spiegel.plugins.py:85 #: data/plugins/150-spiegel.plugins.py:100 #: data/plugins/150-spiegel.plugins.py:113 #: data/plugins/150-spiegel.plugins.py:130 #: data/plugins/150-spiegel.plugins.py:141 #: data/plugins/151-spiegel-improved.plugins.py:20 #: data/plugins/151-spiegel-improved.plugins.py:23 #: data/plugins/151-spiegel-improved.plugins.py:68 #: data/plugins/151-spiegel-improved.plugins.py:107 #: data/plugins/151-spiegel-improved.plugins.py:139 #: data/plugins/151-spiegel-improved.plugins.py:165 #: data/plugins/151-spiegel-improved.plugins.py:183 #: data/plugins/151-spiegel-improved.plugins.py:197 #: data/plugins/20-2x2x2.plugins.py:18 data/plugins/20-2x2x2.plugins.py:21 #: data/plugins/20-2x2x2.plugins.py:37 data/plugins/20-2x2x2.plugins.py:55 msgid "Solvers" msgstr "Solucionadores" #: data/plugins/10-beginners.plugins.py:32 #: data/plugins/10-beginners.plugins.py:35 #: data/plugins/10-beginners.plugins.py:57 #: data/plugins/10-beginners.plugins.py:74 #: data/plugins/10-beginners.plugins.py:101 #: data/plugins/10-beginners.plugins.py:119 #: data/plugins/10-beginners.plugins.py:141 #: data/plugins/10-beginners.plugins.py:159 msgid "Beginner's method" msgstr "" # translated by: Xuacu Saturio https://launchpad.net/~xuacusk8 on 2013-06-15 11:07:42 UTC #: data/plugins/10-beginners.plugins.py:36 #: data/plugins/14-leyan-lo.plugins.py:26 #: data/plugins/150-spiegel.plugins.py:37 #: data/plugins/151-spiegel-improved.plugins.py:25 msgid "Top edges" msgstr "Bordes superiores" # translated by: Xuacu Saturio https://launchpad.net/~xuacusk8 on 2013-06-15 11:07:42 UTC #: data/plugins/10-beginners.plugins.py:58 #: data/plugins/14-leyan-lo.plugins.py:55 #: data/plugins/150-spiegel.plugins.py:66 #: data/plugins/151-spiegel-improved.plugins.py:70 msgid "Top corners" msgstr "Esquines superiores" # translated by: Xuacu Saturio https://launchpad.net/~xuacusk8 on 2013-06-15 11:07:42 UTC #: data/plugins/10-beginners.plugins.py:75 #: data/plugins/14-leyan-lo.plugins.py:76 #: data/plugins/150-spiegel.plugins.py:87 #: data/plugins/151-spiegel-improved.plugins.py:109 msgid "Middle slice" msgstr "Banda del mediu" # translated by: Xuacu Saturio https://launchpad.net/~xuacusk8 on 2013-06-15 11:07:42 UTC #: data/plugins/10-beginners.plugins.py:102 #: data/plugins/14-leyan-lo.plugins.py:92 #: data/plugins/150-spiegel.plugins.py:115 #: data/plugins/151-spiegel-improved.plugins.py:167 msgid "Bottom edge orient" msgstr "Orientar el borde inferior" # translated by: Xuacu Saturio https://launchpad.net/~xuacusk8 on 2013-06-15 11:07:42 UTC #: data/plugins/10-beginners.plugins.py:120 #: data/plugins/14-leyan-lo.plugins.py:131 #: data/plugins/150-spiegel.plugins.py:143 #: data/plugins/151-spiegel-improved.plugins.py:199 #: data/plugins/20-2x2x2.plugins.py:57 msgid "Bottom corner orient" msgstr "Orientar esquina inferior" # translated by: Xuacu Saturio https://launchpad.net/~xuacusk8 on 2013-06-15 11:07:42 UTC #: data/plugins/10-beginners.plugins.py:142 #: data/plugins/14-leyan-lo.plugins.py:109 #: data/plugins/150-spiegel.plugins.py:132 #: data/plugins/151-spiegel-improved.plugins.py:185 #: data/plugins/20-2x2x2.plugins.py:39 msgid "Bottom corner place" msgstr "Llugar d'esqina inferior" # translated by: Xuacu Saturio https://launchpad.net/~xuacusk8 on 2013-06-15 11:07:42 UTC #: data/plugins/10-beginners.plugins.py:160 #: data/plugins/14-leyan-lo.plugins.py:172 #: data/plugins/150-spiegel.plugins.py:102 #: data/plugins/151-spiegel-improved.plugins.py:141 msgid "Bottom edge place" msgstr "Llugar del borde inferior" #. Leyan Lo is the inventor of the solution #: data/plugins/14-leyan-lo.plugins.py:23 #: data/plugins/14-leyan-lo.plugins.py:25 #: data/plugins/14-leyan-lo.plugins.py:54 #: data/plugins/14-leyan-lo.plugins.py:75 #: data/plugins/14-leyan-lo.plugins.py:91 #: data/plugins/14-leyan-lo.plugins.py:108 #: data/plugins/14-leyan-lo.plugins.py:130 #: data/plugins/14-leyan-lo.plugins.py:171 msgid "Leyan Lo" msgstr "" # translated by: Xuacu Saturio https://launchpad.net/~xuacusk8 on 2013-06-15 11:15:47 UTC #. Spiegel is a german magazine #: data/plugins/150-spiegel.plugins.py:34 #: data/plugins/150-spiegel.plugins.py:36 #: data/plugins/150-spiegel.plugins.py:65 #: data/plugins/150-spiegel.plugins.py:86 #: data/plugins/150-spiegel.plugins.py:101 #: data/plugins/150-spiegel.plugins.py:114 #: data/plugins/150-spiegel.plugins.py:131 #: data/plugins/150-spiegel.plugins.py:142 msgid "Spiegel" msgstr "Spiegel" # translated by: Xuacu Saturio https://launchpad.net/~xuacusk8 on 2013-06-15 11:07:42 UTC #. Spiegel is a german magazine #: data/plugins/151-spiegel-improved.plugins.py:22 #: data/plugins/151-spiegel-improved.plugins.py:24 #: data/plugins/151-spiegel-improved.plugins.py:69 #: data/plugins/151-spiegel-improved.plugins.py:108 #: data/plugins/151-spiegel-improved.plugins.py:140 #: data/plugins/151-spiegel-improved.plugins.py:166 #: data/plugins/151-spiegel-improved.plugins.py:184 #: data/plugins/151-spiegel-improved.plugins.py:198 msgid "Spiegel improved" msgstr "Spiegel ameyoráu" # translated by: Xuacu Saturio https://launchpad.net/~xuacusk8 on 2013-06-15 11:07:42 UTC #: data/plugins/20-2x2x2.plugins.py:19 data/plugins/20-2x2x2.plugins.py:22 #: data/plugins/20-2x2x2.plugins.py:38 data/plugins/20-2x2x2.plugins.py:56 msgid "2×2×2" msgstr "2×2×2" # translated by: Xuacu Saturio https://launchpad.net/~xuacusk8 on 2013-06-15 11:10:34 UTC #: data/plugins/20-2x2x2.plugins.py:23 msgid "Top slice" msgstr "Banda superior" # translated by: Xuacu Saturio https://launchpad.net/~xuacusk8 on 2013-06-15 11:10:34 UTC #: data/plugins/80-pretty-patterns.plugins.py:20 #: data/plugins/80-pretty-patterns.plugins.py:23 #: data/plugins/80-pretty-patterns.plugins.py:27 #: data/plugins/80-pretty-patterns.plugins.py:31 #: data/plugins/80-pretty-patterns.plugins.py:35 #: data/plugins/80-pretty-patterns.plugins.py:40 #: data/plugins/80-pretty-patterns.plugins.py:44 msgid "Stripes" msgstr "Rayes" # translated by: Xuacu Saturio https://launchpad.net/~xuacusk8 on 2013-06-15 11:10:34 UTC #: data/plugins/80-pretty-patterns.plugins.py:49 #: data/plugins/80-pretty-patterns.plugins.py:53 msgid "Criss-Cross" msgstr "Entrellazáu" # translated by: Xuacu Saturio https://launchpad.net/~xuacusk8 on 2013-06-15 11:10:34 UTC #: data/plugins/80-pretty-patterns.plugins.py:57 msgid "Fried Eggs" msgstr "Güevos fritos" # translated by: Xuacu Saturio https://launchpad.net/~xuacusk8 on 2013-06-15 11:10:34 UTC #: data/plugins/80-pretty-patterns.plugins.py:61 msgid "Big Fried Eggs" msgstr "Güevos fritos grandes" # translated by: Xuacu Saturio https://launchpad.net/~xuacusk8 on 2013-06-15 11:10:34 UTC #: data/plugins/80-pretty-patterns.plugins.py:65 #: data/plugins/80-pretty-patterns.plugins.py:69 msgid "4 Fried Eggs" msgstr "4 güevos fritos" #: data/plugins/80-pretty-patterns.plugins.py:73 msgid "2 Fried Eggs" msgstr "" # translated by: Xuacu Saturio https://launchpad.net/~xuacusk8 on 2013-06-15 11:10:34 UTC #: data/plugins/80-pretty-patterns.plugins.py:77 msgid "Chessboard" msgstr "Tableru d'axedrez" # translated by: Xuacu Saturio https://launchpad.net/~xuacusk8 on 2013-06-15 11:10:34 UTC #: data/plugins/80-pretty-patterns.plugins.py:83 msgid "Cross" msgstr "Cruz" # translated by: Xuacu Saturio https://launchpad.net/~xuacusk8 on 2013-06-15 11:11:21 UTC #: data/plugins/80-pretty-patterns.plugins.py:87 msgid "Zig Zag" msgstr "Ziszás" # translated by: Xuacu Saturio https://launchpad.net/~xuacusk8 on 2013-06-15 11:18:44 UTC #. T is the shape formed by the cube labels. T-Time is a pun (Tea Time) and not suitable for literal translation. Don't translate it or use something common or whatever you think makes sense. #: data/plugins/80-pretty-patterns.plugins.py:93 #: data/plugins/80-pretty-patterns.plugins.py:96 #: data/plugins/80-pretty-patterns.plugins.py:100 #: data/plugins/80-pretty-patterns.plugins.py:104 #: data/plugins/80-pretty-patterns.plugins.py:108 #: data/plugins/80-pretty-patterns.plugins.py:112 msgid "T-Time" msgstr "Tiempu-T" # translated by: Xuacu Saturio https://launchpad.net/~xuacusk8 on 2013-06-15 11:18:44 UTC #. C is the shape formed by the cube labels #: data/plugins/80-pretty-patterns.plugins.py:118 msgid "C" msgstr "C" # translated by: Xuacu Saturio https://launchpad.net/~xuacusk8 on 2013-06-15 11:18:44 UTC #: data/plugins/80-pretty-patterns.plugins.py:121 msgid "Cube in a Cube" msgstr "Cubu nun cubu" # translated by: Xuacu Saturio https://launchpad.net/~xuacusk8 on 2013-06-15 11:18:44 UTC #: data/plugins/80-pretty-patterns.plugins.py:125 msgid "Striped Cube in a Cube" msgstr "Cubu a rayes nun cubu" #: data/plugins/80-pretty-patterns.plugins.py:129 msgid "Six square cuboids" msgstr "" # translated by: Xuacu Saturio https://launchpad.net/~xuacusk8 on 2013-06-15 11:18:44 UTC #. Superflip may be not translated, because it has a special meaning in the mathematical theory behind the Rubik's Cube. #: data/plugins/80-pretty-patterns.plugins.py:135 msgid "Superflip" msgstr "Superflip" # translated by: Xuacu Saturio https://launchpad.net/~xuacusk8 on 2013-06-15 11:18:44 UTC #: data/plugins/80-pretty-patterns.plugins.py:138 msgid "Superflip easy" msgstr "Superflip fácil" # translated by: Xuacu Saturio https://launchpad.net/~xuacusk8 on 2013-06-15 11:18:44 UTC #: data/plugins/80-pretty-patterns.plugins.py:142 msgid "Green Mamba" msgstr "Mamba verde" # translated by: Xuacu Saturio https://launchpad.net/~xuacusk8 on 2013-06-15 11:18:44 UTC #: data/plugins/80-pretty-patterns.plugins.py:146 msgid "Anaconda" msgstr "Anaconda" # translated by: Xuacu Saturio https://launchpad.net/~xuacusk8 on 2013-06-15 11:18:44 UTC #: data/plugins/80-pretty-patterns.plugins.py:150 msgid "Duck Feet" msgstr "Pie de coríu" #: data/plugins/80-pretty-patterns.plugins.py:154 #: data/plugins/80-pretty-patterns.plugins.py:158 #: data/plugins/80-pretty-patterns.plugins.py:162 #: data/plugins/80-pretty-patterns.plugins.py:166 #: data/plugins/80-pretty-patterns.plugins.py:170 #: data/plugins/80-pretty-patterns.plugins.py:174 #: data/plugins/80-pretty-patterns.plugins.py:178 #: data/plugins/80-pretty-patterns.plugins.py:182 msgid "Plus" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:186 #: data/plugins/80-pretty-patterns.plugins.py:191 #: data/plugins/80-pretty-patterns.plugins.py:196 #: data/plugins/80-pretty-patterns.plugins.py:200 msgid "Minus" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:204 msgid "Volcano" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:208 msgid "Checkerboard (easy)" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:212 msgid "Checkerboard (fast)" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:216 msgid "Mixed Checkerboard" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:220 msgid "Tipi" msgstr "" # translated by: Xuacu Saturio https://launchpad.net/~xuacusk8 on 2013-06-15 11:21:38 UTC #: data/plugins/90-library.plugins.py:18 data/plugins/90-library.plugins.py:22 #: data/plugins/90-library.plugins.py:26 data/plugins/90-library.plugins.py:30 #: data/plugins/90-library.plugins.py:34 data/plugins/90-library.plugins.py:38 #: data/plugins/90-library.plugins.py:42 data/plugins/90-library.plugins.py:46 #: data/plugins/90-library.plugins.py:50 data/plugins/90-library.plugins.py:54 #: data/plugins/90-library.plugins.py:58 data/plugins/90-library.plugins.py:62 #: data/plugins/90-library.plugins.py:66 data/plugins/90-library.plugins.py:70 #: data/plugins/90-library.plugins.py:74 data/plugins/90-library.plugins.py:78 #: data/plugins/90-library.plugins.py:82 data/plugins/90-library.plugins.py:86 #: data/plugins/90-library.plugins.py:91 data/plugins/90-library.plugins.py:96 #: data/plugins/90-library.plugins.py:101 #: data/plugins/90-library.plugins.py:105 #: data/plugins/90-library.plugins.py:110 #: data/plugins/90-library.plugins.py:115 #: data/plugins/90-library.plugins.py:119 #: data/plugins/90-library.plugins.py:123 #: data/plugins/90-library.plugins.py:127 msgid "Library" msgstr "Biblioteca" #: data/plugins/90-library.plugins.py:19 data/plugins/90-library.plugins.py:23 #: data/plugins/90-library.plugins.py:27 data/plugins/90-library.plugins.py:31 #: data/plugins/90-library.plugins.py:35 msgid "Swap edges" msgstr "" #: data/plugins/90-library.plugins.py:20 msgid "3 edges ⟳, top layer" msgstr "" #: data/plugins/90-library.plugins.py:24 msgid "3 edges ⟲, top layer" msgstr "" #: data/plugins/90-library.plugins.py:28 msgid "3 edges, middle layer" msgstr "" #: data/plugins/90-library.plugins.py:32 msgid "4 edges, front and right" msgstr "" #: data/plugins/90-library.plugins.py:36 msgid "4 edges, front and back" msgstr "" #: data/plugins/90-library.plugins.py:39 msgid "Swap 2 edges and 2 corners, top layer" msgstr "" #: data/plugins/90-library.plugins.py:43 data/plugins/90-library.plugins.py:47 msgid "Flip edges" msgstr "" #: data/plugins/90-library.plugins.py:44 msgid "4 edges" msgstr "" #: data/plugins/90-library.plugins.py:48 msgid "2 edges, top layer" msgstr "" #: data/plugins/90-library.plugins.py:51 data/plugins/90-library.plugins.py:55 #: data/plugins/90-library.plugins.py:59 data/plugins/90-library.plugins.py:63 #: data/plugins/90-library.plugins.py:67 data/plugins/90-library.plugins.py:71 msgid "Swap corners" msgstr "" #: data/plugins/90-library.plugins.py:52 data/plugins/90-library.plugins.py:76 msgid "2 corners, top layer" msgstr "" #: data/plugins/90-library.plugins.py:56 msgid "2 corners diagonal, top layer" msgstr "" #: data/plugins/90-library.plugins.py:60 data/plugins/90-library.plugins.py:80 msgid "3 corners ⟳, top layer" msgstr "" #: data/plugins/90-library.plugins.py:64 msgid "3 corners ⟲, top layer" msgstr "" #: data/plugins/90-library.plugins.py:68 msgid "4 corners, top layer" msgstr "" #: data/plugins/90-library.plugins.py:72 msgid "2 corners, partial sequence, top layer" msgstr "" #: data/plugins/90-library.plugins.py:75 data/plugins/90-library.plugins.py:79 #: data/plugins/90-library.plugins.py:83 data/plugins/90-library.plugins.py:87 msgid "Rotate corners" msgstr "" #: data/plugins/90-library.plugins.py:84 msgid "1 corner ⟳, partial sequence, top layer" msgstr "" #: data/plugins/90-library.plugins.py:88 msgid "1 corner ⟲, partial sequence, top layer" msgstr "" #: data/plugins/90-library.plugins.py:92 data/plugins/90-library.plugins.py:97 #: data/plugins/90-library.plugins.py:102 #: data/plugins/90-library.plugins.py:111 msgid "Rotate center" msgstr "" # translated by: Xuacu Saturio https://launchpad.net/~xuacusk8 on 2013-06-15 11:23:13 UTC #. 2 rotations of the center face in the upper layer #: data/plugins/90-library.plugins.py:94 msgid "2×Up" msgstr "2×Arriba" #. Up clockwise and front clockwise #: data/plugins/90-library.plugins.py:99 msgid "Up ⟳ and front ⟳" msgstr "" #. Up clockwise and front counterclockwise #: data/plugins/90-library.plugins.py:104 msgid "Up ⟳ and front ⟲" msgstr "" #: data/plugins/90-library.plugins.py:106 msgid "Swap center parts, up and front" msgstr "" #. Up clockwise and down counterclockwise #: data/plugins/90-library.plugins.py:113 msgid "Up ⟳ and down ⟲" msgstr "" # translated by: Xuacu Saturio https://launchpad.net/~xuacusk8 on 2013-06-15 11:23:13 UTC #: data/plugins/90-library.plugins.py:116 #: data/plugins/90-library.plugins.py:120 #: data/plugins/90-library.plugins.py:124 #: data/plugins/90-library.plugins.py:128 msgid "Misc" msgstr "Otros" #. Yields in a rotated back layer, but the sequence of moves does not touch the back layer #: data/plugins/90-library.plugins.py:118 #: data/plugins/90-library.plugins.py:125 #: data/plugins/90-library.plugins.py:129 msgid "Back without back" msgstr "" #: data/plugins/90-library.plugins.py:121 msgid "2×Back without back" msgstr "" #: data/plugins/95-transformations.plugins.py:18 #: data/plugins/95-transformations.plugins.py:21 #: data/plugins/95-transformations.plugins.py:24 msgid "Move transformations" msgstr "" #: data/plugins/95-transformations.plugins.py:19 msgid "Invert move sequence" msgstr "" #: data/plugins/95-transformations.plugins.py:22 msgid "Normalize cube rotations" msgstr "" #: data/plugins/95-transformations.plugins.py:25 msgid "Normalize move sequence" msgstr "" # translated by: ivarela https://launchpad.net/~ivarela on 2013-06-09 13:36:48 UTC #: buildlib/modeldef.py:110 msgid "Brick" msgstr "Lladriyu" # translated by: ivarela https://launchpad.net/~ivarela on 2013-06-09 13:36:48 UTC #: buildlib/modeldef.py:111 #, python-brace-format msgid "{0}×{1}×{2}-Brick" msgstr "{0}×{1}×{2}-Bloque" # translated by: ivarela https://launchpad.net/~ivarela on 2013-06-09 13:36:48 UTC #: buildlib/modeldef.py:112 msgid "Width:" msgstr "Anchor:" # translated by: Xuacu Saturio https://launchpad.net/~xuacusk8 on 2013-06-15 10:53:21 UTC #: buildlib/modeldef.py:112 buildlib/modeldef.py:151 buildlib/modeldef.py:249 #: buildlib/modeldef.py:300 buildlib/modeldef.py:311 msgid "Height:" msgstr "Altor:" # translated by: Xuacu Saturio https://launchpad.net/~xuacusk8 on 2013-06-15 10:53:21 UTC #: buildlib/modeldef.py:112 msgid "Depth:" msgstr "Profundidá:" #: buildlib/modeldef.py:120 buildlib/modeldef.py:257 buildlib/modeldef.py:319 #: buildlib/modeldef.py:374 buildlib/modeldef.py:433 msgid "up" msgstr "" #: buildlib/modeldef.py:120 buildlib/modeldef.py:205 buildlib/modeldef.py:257 #: buildlib/modeldef.py:319 buildlib/modeldef.py:373 buildlib/modeldef.py:430 msgid "down" msgstr "" #: buildlib/modeldef.py:120 buildlib/modeldef.py:205 buildlib/modeldef.py:257 msgid "left" msgstr "" # translated by: ivarela https://launchpad.net/~ivarela on 2013-06-09 13:35:38 UTC #: buildlib/modeldef.py:120 buildlib/modeldef.py:205 buildlib/modeldef.py:257 msgid "right" msgstr "" # translated by: ivarela https://launchpad.net/~ivarela on 2013-06-09 13:35:38 UTC #: buildlib/modeldef.py:120 buildlib/modeldef.py:374 msgid "front" msgstr "" # translated by: Xuacu Saturio https://launchpad.net/~xuacusk8 on 2015-03-28 22:57:26 UTC #: buildlib/modeldef.py:120 buildlib/modeldef.py:205 buildlib/modeldef.py:257 #: buildlib/modeldef.py:320 buildlib/modeldef.py:373 msgid "back" msgstr "" # translated by: ivarela https://launchpad.net/~ivarela on 2013-06-09 13:36:48 UTC #: buildlib/modeldef.py:149 msgid "Tower" msgstr "Torre" # translated by: ivarela https://launchpad.net/~ivarela on 2013-06-09 13:36:48 UTC #: buildlib/modeldef.py:150 #, python-brace-format msgid "{0}×{1}-Tower" msgstr "{0}×{1}-Torre" # translated by: ivarela https://launchpad.net/~ivarela on 2013-06-09 13:36:48 UTC #: buildlib/modeldef.py:151 buildlib/modeldef.py:249 buildlib/modeldef.py:300 #: buildlib/modeldef.py:311 msgid "Basis:" msgstr "Base:" # translated by: ivarela https://launchpad.net/~ivarela on 2013-06-09 13:36:48 UTC #: buildlib/modeldef.py:163 msgid "Cube" msgstr "Cubu" # translated by: ivarela https://launchpad.net/~ivarela on 2013-06-09 13:38:41 UTC #: buildlib/modeldef.py:164 #, python-brace-format msgid "{0}×{0}×{0}-Cube" msgstr "{0}×{0}×{0}-Cubu" # translated by: ivarela https://launchpad.net/~ivarela on 2013-06-09 13:35:38 UTC #: buildlib/modeldef.py:165 buildlib/modeldef.py:197 buildlib/modeldef.py:365 #: buildlib/modeldef.py:422 msgid "Size:" msgstr "Tamañu:" #: buildlib/modeldef.py:177 buildlib/modeldef.py:178 msgid "Void Cube" msgstr "" #: buildlib/modeldef.py:195 msgid "Tetrahedron" msgstr "" #: buildlib/modeldef.py:196 #, python-brace-format msgid "{0}-Tetrahedron" msgstr "" #: buildlib/modeldef.py:247 msgid "Triangular Prism" msgstr "" #: buildlib/modeldef.py:248 #, python-brace-format msgid "{0}×{1} Triangular Prism" msgstr "" #: buildlib/modeldef.py:298 msgid "Triangular Prism (complex)" msgstr "" #: buildlib/modeldef.py:299 #, python-brace-format msgid "{0}×{1} Triangular Prism (complex)" msgstr "" #: buildlib/modeldef.py:309 msgid "Pentagonal Prism" msgstr "" #: buildlib/modeldef.py:310 #, python-brace-format msgid "{0}×{1} Pentagonal Prism" msgstr "" #: buildlib/modeldef.py:320 buildlib/modeldef.py:373 msgid "front-right" msgstr "" #: buildlib/modeldef.py:320 buildlib/modeldef.py:374 msgid "back-right" msgstr "" #: buildlib/modeldef.py:320 buildlib/modeldef.py:374 msgid "back-left" msgstr "" #: buildlib/modeldef.py:320 buildlib/modeldef.py:373 msgid "front-left" msgstr "" #: buildlib/modeldef.py:354 msgid "Pentagonal Prism (stretched)" msgstr "" #: buildlib/modeldef.py:355 #, python-brace-format msgid "{0}×{1} Pentagonal Prism (stretched)" msgstr "" #: buildlib/modeldef.py:363 msgid "Octahedron" msgstr "" #: buildlib/modeldef.py:364 #, python-brace-format msgid "{0}-Octahedron" msgstr "" #: buildlib/modeldef.py:420 msgid "Dodecahedron" msgstr "" #: buildlib/modeldef.py:421 #, python-brace-format msgid "{0}-Dodecahedron" msgstr "" #: buildlib/modeldef.py:430 msgid "down-back-right" msgstr "" #: buildlib/modeldef.py:430 msgid "down-front-right" msgstr "" #: buildlib/modeldef.py:431 msgid "down-front" msgstr "" #: buildlib/modeldef.py:431 msgid "down-front-left" msgstr "" #: buildlib/modeldef.py:431 msgid "down-back-left" msgstr "" #: buildlib/modeldef.py:432 msgid "up-back" msgstr "" #: buildlib/modeldef.py:432 msgid "up-back-right" msgstr "" #: buildlib/modeldef.py:432 msgid "up-front-right" msgstr "" #: buildlib/modeldef.py:433 msgid "up-front-left" msgstr "" #: buildlib/modeldef.py:433 msgid "up-back-left" msgstr "" pybik-3.0/po/kab.po0000644000175000017500000011373613173052130014361 0ustar barccbarcc00000000000000# Kabyle translation for pybik # Copyright (c) 2017 Rosetta Contributors and Canonical Ltd 2017 # This file is distributed under the same license as the pybik package. # FIRST AUTHOR , 2017. # msgid "" msgstr "" "Project-Id-Version: pybik\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2017-09-10 21:58+0200\n" "PO-Revision-Date: 2017-10-13 15:10+0000\n" "Last-Translator: Belkacem Mohammed \n" "Language-Team: Kabyle \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Launchpad-Export-Date: 2017-10-14 05:19+0000\n" "X-Generator: Launchpad (build 18474)\n" # translated by: Belkacem Mohammed https://launchpad.net/~belkacem77 on 2017-10-07 07:25:02 UTC #: pybiklib/application.py:294 msgid "Press the Esc key to exit Edit Mode" msgstr "Senned ɣef Senser akken ad teffɣeḍ seg uskar n Teẓrigt" # translated by: Belkacem Mohammed https://launchpad.net/~belkacem77 on 2017-10-07 07:25:02 UTC #. substitution for {move_text} in statusbar text #: pybiklib/application.py:302 #, python-brace-format msgid "{current} / {total} move" msgid_plural "{current} / {total} moves" msgstr[0] "{current} / {total} n usenkez" msgstr[1] "{current} / {total} n isenkizen" # translated by: Belkacem Mohammed https://launchpad.net/~belkacem77 on 2017-10-07 07:25:02 UTC #. substitution for {solved_text} in statusbar text #: pybiklib/application.py:306 msgid "solved" msgstr "yefra" # translated by: Belkacem Mohammed https://launchpad.net/~belkacem77 on 2017-10-07 07:25:02 UTC #: pybiklib/application.py:306 msgid "not solved" msgstr "ur yefri ara" # translated by: Belkacem Mohammed https://launchpad.net/~belkacem77 on 2017-10-07 07:25:02 UTC #. statusbar text #: pybiklib/application.py:309 #, python-brace-format msgid "{move_text}, {solved_text}" msgstr "{move_text}, {solved_text}" # translated by: Belkacem Mohammed https://launchpad.net/~belkacem77 on 2017-10-07 07:25:02 UTC #: pybiklib/application.py:314 msgid "Congratulations, you have solved the puzzle!" msgstr "Ayuz, tefriḍ apuzzle!" # translated by: Belkacem Mohammed https://launchpad.net/~belkacem77 on 2017-10-07 07:25:02 UTC #. Name of the application, probably should not be translated. #: pybiklib/config.py:35 data/ui/qt/main.ui.h:271 #: data/app-meta/pybik.desktop.in:3 msgid "Pybik" msgstr "Pybik" # translated by: Belkacem Mohammed https://launchpad.net/~belkacem77 on 2017-10-07 07:25:02 UTC #. short description #: pybiklib/config.py:65 data/app-meta/pybik.desktop.in:4 msgid "Rubik's cube game" msgstr "Urar agasas n Rubik" # translated by: Belkacem Mohammed https://launchpad.net/~belkacem77 on 2017-10-07 07:25:02 UTC #. The next 7 lines belong together and form the long description #: pybiklib/config.py:68 msgid "Pybik is a 3D puzzle game about the cube invented by Ernő Rubik." msgstr "Pybik d urar n upuzzle 3D ɣef ugasas i d-yesnulfa Ernő Rubik." #: pybiklib/config.py:70 msgid "" "Various 3D puzzles, such as cubes, towers, prisms, tetrahedra, octahedra, " "dodecahedra and many more" msgstr "" #: pybiklib/config.py:71 msgid "Solvers for some puzzles" msgstr "" #. Use something that is common in the Rubik scene in your language, sometimes it's just the equivalent of "patterns". #: pybiklib/config.py:72 data/plugins/80-pretty-patterns.plugins.py:19 #: data/plugins/80-pretty-patterns.plugins.py:22 #: data/plugins/80-pretty-patterns.plugins.py:26 #: data/plugins/80-pretty-patterns.plugins.py:30 #: data/plugins/80-pretty-patterns.plugins.py:34 #: data/plugins/80-pretty-patterns.plugins.py:39 #: data/plugins/80-pretty-patterns.plugins.py:43 #: data/plugins/80-pretty-patterns.plugins.py:48 #: data/plugins/80-pretty-patterns.plugins.py:52 #: data/plugins/80-pretty-patterns.plugins.py:56 #: data/plugins/80-pretty-patterns.plugins.py:60 #: data/plugins/80-pretty-patterns.plugins.py:64 #: data/plugins/80-pretty-patterns.plugins.py:68 #: data/plugins/80-pretty-patterns.plugins.py:72 #: data/plugins/80-pretty-patterns.plugins.py:76 #: data/plugins/80-pretty-patterns.plugins.py:82 #: data/plugins/80-pretty-patterns.plugins.py:86 #: data/plugins/80-pretty-patterns.plugins.py:91 #: data/plugins/80-pretty-patterns.plugins.py:95 #: data/plugins/80-pretty-patterns.plugins.py:99 #: data/plugins/80-pretty-patterns.plugins.py:103 #: data/plugins/80-pretty-patterns.plugins.py:107 #: data/plugins/80-pretty-patterns.plugins.py:111 #: data/plugins/80-pretty-patterns.plugins.py:116 #: data/plugins/80-pretty-patterns.plugins.py:120 #: data/plugins/80-pretty-patterns.plugins.py:124 #: data/plugins/80-pretty-patterns.plugins.py:128 #: data/plugins/80-pretty-patterns.plugins.py:133 #: data/plugins/80-pretty-patterns.plugins.py:137 #: data/plugins/80-pretty-patterns.plugins.py:141 #: data/plugins/80-pretty-patterns.plugins.py:145 #: data/plugins/80-pretty-patterns.plugins.py:149 #: data/plugins/80-pretty-patterns.plugins.py:153 #: data/plugins/80-pretty-patterns.plugins.py:157 #: data/plugins/80-pretty-patterns.plugins.py:161 #: data/plugins/80-pretty-patterns.plugins.py:165 #: data/plugins/80-pretty-patterns.plugins.py:169 #: data/plugins/80-pretty-patterns.plugins.py:173 #: data/plugins/80-pretty-patterns.plugins.py:177 #: data/plugins/80-pretty-patterns.plugins.py:181 #: data/plugins/80-pretty-patterns.plugins.py:185 #: data/plugins/80-pretty-patterns.plugins.py:190 #: data/plugins/80-pretty-patterns.plugins.py:195 #: data/plugins/80-pretty-patterns.plugins.py:199 #: data/plugins/80-pretty-patterns.plugins.py:203 #: data/plugins/80-pretty-patterns.plugins.py:207 #: data/plugins/80-pretty-patterns.plugins.py:211 #: data/plugins/80-pretty-patterns.plugins.py:215 #: data/plugins/80-pretty-patterns.plugins.py:219 msgid "Pretty patterns" msgstr "" #: pybiklib/config.py:73 msgid "Editor for move sequences" msgstr "" #: pybiklib/config.py:74 msgid "Custom colors and images on the surface of the puzzles" msgstr "" #: pybiklib/config.py:78 msgid "" "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.\n" "\n" "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." msgstr "" #. Text between "<" and ">" is expanded to a link by the program and should not be modified. #. Text between "" and "<|>" is the translatable text for the link. #: pybiklib/config.py:90 msgid "" "Read the full text of the GNU General Public " "License<|> or see ." msgstr "" #: pybiklib/config.py:93 msgid "" "You should have received a copy of the GNU General Public License along with " "this program. If not, see ." msgstr "" #: pybiklib/config.py:98 #, python-brace-format msgid "" "If you find any bugs in Pybik or have a suggestion for an improvement then " "please submit a <{CONTACT_FILEBUG}|>bug report<|>." msgstr "" #: pybiklib/config.py:103 msgid "" "Translations are managed by the " "Launchpad " "translation group<|>.\n" "\n" "If you want help to translate Pybik to your language you can do it through " "the web interface<|>.\n" "\n" "Read more about \"Translating with " "Launchpad\"<|> and " "\"Starting to " "translate\"<|>." msgstr "" # translated by: Belkacem Mohammed https://launchpad.net/~belkacem77 on 2017-10-07 07:37:34 UTC #: pybiklib/dialogs.py:44 msgid "Lighting" msgstr "Asfaw" # translated by: Belkacem Mohammed https://launchpad.net/~belkacem77 on 2017-10-07 07:38:13 UTC #: pybiklib/dialogs.py:44 msgid "Simple" msgstr "Aḥerfi" # translated by: Belkacem Mohammed https://launchpad.net/~belkacem77 on 2017-10-07 07:38:13 UTC #. labels are the colored stickers on the cube #: pybiklib/dialogs.py:46 msgid "Labels" msgstr "Tibzimin" # translated by: Belkacem Mohammed https://launchpad.net/~belkacem77 on 2017-10-07 07:38:13 UTC #: pybiklib/dialogs.py:104 data/ui/qt/main.ui.h:275 msgid "Select Puzzle" msgstr "Fre Apuzzle" #. 1 slice, 2 slices, 3 slices, ... #: pybiklib/dialogs.py:134 pybiklib/dialogs.py:154 pybiklib/dialogs.py:180 #: pybiklib/dialogs.py:201 msgid "{} slice" msgid_plural "{} slices" msgstr[0] "" msgstr[1] "" #: pybiklib/dialogs.py:196 pybiklib/dialogs.py:225 msgid "{}×{} slices" msgstr "" #. The next strings form the text in the help dialog: #. Title of the 1st paragraph #: pybiklib/dialogs.py:290 msgid "Using the mouse to rotate the cube" msgstr "" #. Text of the 1st paragraph, followed by bullet list items #: pybiklib/dialogs.py:292 msgid "" "Position the mouse cursor over the puzzle and you will see an arrow that " "gives you a hint in which direction the slice under the mouse cursor will be " "rotated." msgstr "" #: pybiklib/dialogs.py:294 msgid "" "The left mouse button rotates a single slice of the cube in the direction of " "the arrow." msgstr "" #: pybiklib/dialogs.py:295 msgid "" "The right mouse button rotates a single slice of the cube against the " "direction of the arrow." msgstr "" #: pybiklib/dialogs.py:296 msgid "" "To rotate the whole cube instead of a single slice press the Ctrl key " "together with the mouse button." msgstr "" #. Title of the 2nd paragraph #: pybiklib/dialogs.py:298 msgid "Using the keyboard to rotate the cube" msgstr "" #. Text of the 2nd paragraph, followed by bullet list items #: pybiklib/dialogs.py:300 msgid "" "Make sure the keyboard focus is on the cube area (e.g. click on the " "background of the cube). The keys can be configured in the preferences " "dialog, the default is:" msgstr "" #. before the item text is a list of keys #: pybiklib/dialogs.py:303 pybiklib/dialogs.py:318 msgid "Moves the left, right, upper, down, front or back slice clockwise." msgstr "" #: pybiklib/dialogs.py:304 pybiklib/dialogs.py:319 msgid "Moves a slice couterclockwise." msgstr "" #: pybiklib/dialogs.py:305 pybiklib/dialogs.py:320 msgid "Moves the whole cube." msgstr "" #. Title of the 3rd paragraph #: pybiklib/dialogs.py:307 msgid "Other keys and buttons" msgstr "" #. bullet list items of the 3rd paragraph #: pybiklib/dialogs.py:309 msgid "Mouse wheel – Zoom in/out" msgstr "" #: pybiklib/dialogs.py:310 msgid "" "Arrow keys, Left mouse button on the background – Changes the direction of " "looking at the cube." msgstr "" #: pybiklib/dialogs.py:311 msgid "" "Moves keyboard focus to the sequence editor above the cube area where you " "can edit the move sequence in the notation described below. Hit enter when " "done." msgstr "" #. Title of the 4th paragraph #: pybiklib/dialogs.py:315 msgid "Notation for moves" msgstr "" #. Text of the 4th paragraph, followed by bullet list items #: pybiklib/dialogs.py:317 msgid "" "All moves, however they are made, are displayed progressively above the cube " "area:" msgstr "" #: pybiklib/dialogs.py:321 msgid "" "Moves the first, second or third slice from left clockwise. The allowed " "numbers are in the range from 1 to the count of parallel slices. \"l1\" is " "always the same as \"l\" and for the classic 3×3×3-Cube \"l2\" is the same " "as \"r2-\" and \"l3\" is the same as \"r-\"." msgstr "" #: pybiklib/dialogs.py:325 msgid "You can use a space to separate groups of moves." msgstr "" # translated by: Belkacem Mohammed https://launchpad.net/~belkacem77 on 2017-10-10 21:20:07 UTC #: pybiklib/dialogs.py:379 msgid "Pybik project website" msgstr "Asmel Web n usenfaṛ Pybik" #: pybiklib/pluginlib.py:301 msgid "This plugin does not work for any model." msgstr "" # translated by: Belkacem Mohammed https://launchpad.net/~belkacem77 on 2017-10-10 21:20:07 UTC #: pybiklib/pluginlib.py:303 pybiklib/pluginlib.py:306 msgid "This plugin only works for:" msgstr "Asiɣzef iteddu kan i :" #: pybiklib/pluginlib.py:498 msgid "This puzzle is not solvable." msgstr "" # translated by: Belkacem Mohammed https://launchpad.net/~belkacem77 on 2017-10-13 15:09:49 UTC #. The following 6 words are for the antialiasing levels: disabled, ugly, low, medium, high, higher #: pybiklib/schema.py:211 msgid "disabled" msgstr "yensa" # translated by: Belkacem Mohammed https://launchpad.net/~belkacem77 on 2017-10-10 21:20:07 UTC #: pybiklib/schema.py:211 msgid "ugly" msgstr "yecmet" # translated by: Belkacem Mohammed https://launchpad.net/~belkacem77 on 2017-10-10 21:20:07 UTC #: pybiklib/schema.py:211 msgid "low" msgstr "meẓẓi" # translated by: Belkacem Mohammed https://launchpad.net/~belkacem77 on 2017-10-10 21:20:07 UTC #: pybiklib/schema.py:212 msgid "medium" msgstr "alemmas" # translated by: Belkacem Mohammed https://launchpad.net/~belkacem77 on 2017-10-10 21:20:07 UTC #: pybiklib/schema.py:212 msgid "high" msgstr "ɣezzif" # translated by: Belkacem Mohammed https://launchpad.net/~belkacem77 on 2017-10-10 21:20:07 UTC #: pybiklib/schema.py:212 msgid "higher" msgstr "aɣezzfan" # translated by: Belkacem Mohammed https://launchpad.net/~belkacem77 on 2017-10-10 21:21:31 UTC #: data/ui/qt/about.ui.h:212 msgid "About Pybik" msgstr "Ɣef Pybik" # translated by: Belkacem Mohammed https://launchpad.net/~belkacem77 on 2017-10-10 21:21:31 UTC #: data/ui/qt/about.ui.h:213 msgid "Translators:" msgstr "Imsuqal:" # translated by: Belkacem Mohammed https://launchpad.net/~belkacem77 on 2017-10-10 21:21:31 UTC #: data/ui/qt/about.ui.h:214 msgid "About" msgstr "Ɣef" # translated by: Belkacem Mohammed https://launchpad.net/~belkacem77 on 2017-10-13 15:09:49 UTC #: data/ui/qt/about.ui.h:215 msgid "Contribute" msgstr "Ttekki" # translated by: Belkacem Mohammed https://launchpad.net/~belkacem77 on 2017-10-10 21:21:31 UTC #: data/ui/qt/about.ui.h:216 msgid "License" msgstr "Turagt" # translated by: Belkacem Mohammed https://launchpad.net/~belkacem77 on 2017-10-10 21:21:31 UTC #: data/ui/qt/help.ui.h:53 data/ui/qt/main.ui.h:297 msgid "Help" msgstr "Tallelt" #: data/ui/qt/main.ui.h:272 msgid "&New Challenge" msgstr "" #: data/ui/qt/main.ui.h:273 msgid "Ne&w Solved" msgstr "" # translated by: Belkacem Mohammed https://launchpad.net/~belkacem77 on 2017-10-10 21:21:31 UTC #: data/ui/qt/main.ui.h:274 msgid "&Quit" msgstr "&Ffeɣ" #: data/ui/qt/main.ui.h:276 msgid "&Set as Initial State" msgstr "" #: data/ui/qt/main.ui.h:277 msgid "&Reset Rotation" msgstr "" # translated by: Belkacem Mohammed https://launchpad.net/~belkacem77 on 2017-10-13 15:09:49 UTC #: data/ui/qt/main.ui.h:278 msgid "&Preferences …" msgstr "&Ismenyifen…" # translated by: Belkacem Mohammed https://launchpad.net/~belkacem77 on 2017-10-13 15:09:49 UTC #: data/ui/qt/main.ui.h:279 msgid "&Status Bar" msgstr "Afe&ggag n ifecka" #: data/ui/qt/main.ui.h:280 msgid "&Info …" msgstr "" #: data/ui/qt/main.ui.h:281 msgid "Rewind" msgstr "" #: data/ui/qt/main.ui.h:282 msgid "Previous" msgstr "" # translated by: Belkacem Mohammed https://launchpad.net/~belkacem77 on 2017-10-13 15:10:26 UTC #: data/ui/qt/main.ui.h:283 msgid "Stop" msgstr "Seḥbes" # translated by: Belkacem Mohammed https://launchpad.net/~belkacem77 on 2017-10-13 15:10:26 UTC #: data/ui/qt/main.ui.h:284 msgid "Play" msgstr "Urar" # translated by: Belkacem Mohammed https://launchpad.net/~belkacem77 on 2017-10-13 15:10:26 UTC #: data/ui/qt/main.ui.h:285 msgid "Next" msgstr "Ɣer zdat" # translated by: Belkacem Mohammed https://launchpad.net/~belkacem77 on 2017-10-13 15:10:26 UTC #: data/ui/qt/main.ui.h:286 msgid "Forward" msgstr "Ɣer deffir" # translated by: Belkacem Mohammed https://launchpad.net/~belkacem77 on 2017-10-13 15:10:26 UTC #: data/ui/qt/main.ui.h:287 msgid "Add Mark" msgstr "Rbu tacreḍt" #: data/ui/qt/main.ui.h:289 msgid "Mark the current place in the sequence of moves" msgstr "" #: data/ui/qt/main.ui.h:291 msgid "Remove Mark" msgstr "" #: data/ui/qt/main.ui.h:293 msgid "Remove the mark at the current place in the sequence of moves" msgstr "" #: data/ui/qt/main.ui.h:295 msgid "&Edit Bar" msgstr "" #: data/ui/qt/main.ui.h:296 msgid "&Help …" msgstr "" # translated by: Belkacem Mohammed https://launchpad.net/~belkacem77 on 2017-10-13 15:10:52 UTC #: data/ui/qt/preferences.ui.h:372 msgid "Preferences" msgstr "Ismenyifen" #: data/ui/qt/preferences.ui.h:373 msgid "Animation Speed:" msgstr "" #: data/ui/qt/preferences.ui.h:375 msgid "Mirror Distance:" msgstr "" # translated by: Belkacem Mohammed https://launchpad.net/~belkacem77 on 2017-10-13 15:10:52 UTC #: data/ui/qt/preferences.ui.h:377 msgid "Quality:" msgstr "Taɣara:" #: data/ui/qt/preferences.ui.h:380 msgid "" "Lower antialiasing has better performance, higher antialiasing has better " "quality." msgstr "" #: data/ui/qt/preferences.ui.h:382 msgid "Antialiasing:" msgstr "" #: data/ui/qt/preferences.ui.h:384 msgid "The program needs to be restarted for the changes to take effect." msgstr "" #: data/ui/qt/preferences.ui.h:385 msgid "Graphic" msgstr "" #: data/ui/qt/preferences.ui.h:386 msgid "Point and click, all directions" msgstr "" #: data/ui/qt/preferences.ui.h:387 msgid "Point and click, simplified" msgstr "" #: data/ui/qt/preferences.ui.h:388 msgid "Gestures" msgstr "" #: data/ui/qt/preferences.ui.h:389 msgid "Mouse" msgstr "" #: data/ui/qt/preferences.ui.h:391 data/ui/qt/preferences.ui.h:393 msgid "Add" msgstr "" #: data/ui/qt/preferences.ui.h:395 data/ui/qt/preferences.ui.h:397 msgid "Remove" msgstr "" #: data/ui/qt/preferences.ui.h:399 data/ui/qt/preferences.ui.h:401 msgid "Reset" msgstr "" #: data/ui/qt/preferences.ui.h:402 msgid "Keys" msgstr "" #: data/ui/qt/preferences.ui.h:403 msgid "Color:" msgstr "" #: data/ui/qt/preferences.ui.h:405 msgid "Image File:" msgstr "" #: data/ui/qt/preferences.ui.h:407 msgid "Tiled" msgstr "" #: data/ui/qt/preferences.ui.h:408 msgid "Mosaic" msgstr "" #: data/ui/qt/preferences.ui.h:409 msgid "Background:" msgstr "" #: data/ui/qt/preferences.ui.h:411 msgid "Appearance" msgstr "" #: pybiklib/ext/qt.py:1578 msgid "Move" msgstr "" #: pybiklib/ext/qt.py:1581 msgid "Key" msgstr "" #: pybiklib/ext/qt.py:1682 msgid "Open Image" msgstr "" #: pybiklib/ext/qt.py:1720 msgid "plain" msgstr "" #: pybiklib/ext/qt.py:1723 msgid "select …" msgstr "" #: pybiklib/ext/qtui.py:94 msgid "Press a key …" msgstr "" #. Add whatever keywords you want in your language, separated by semicolons, last character must be a semicolon. These keywords are used when searching for applications in Unity, GNOME Shell, etc. #: data/app-meta/pybik.desktop.in:10 msgid "rubik;cube;puzzle;magic;" msgstr "" #: data/plugins/01-challenges.plugins.py:18 #: data/plugins/01-challenges.plugins.py:21 #: data/plugins/01-challenges.plugins.py:24 #: data/plugins/01-challenges.plugins.py:27 #: data/plugins/01-challenges.plugins.py:30 #: data/plugins/01-challenges.plugins.py:33 #: data/plugins/01-challenges.plugins.py:36 #: data/plugins/01-challenges.plugins.py:39 #: data/plugins/01-challenges.plugins.py:42 #: data/plugins/01-challenges.plugins.py:45 #: data/plugins/01-challenges.plugins.py:48 msgid "Challenges" msgstr "" #: data/plugins/01-challenges.plugins.py:19 msgid "Solve random puzzle" msgstr "" #: data/plugins/01-challenges.plugins.py:22 #: data/plugins/01-challenges.plugins.py:25 #: data/plugins/01-challenges.plugins.py:28 #: data/plugins/01-challenges.plugins.py:31 #: data/plugins/01-challenges.plugins.py:34 #: data/plugins/01-challenges.plugins.py:37 #: data/plugins/01-challenges.plugins.py:40 #: data/plugins/01-challenges.plugins.py:43 #: data/plugins/01-challenges.plugins.py:46 #: data/plugins/01-challenges.plugins.py:49 msgid "Solve in {} move" msgid_plural "Solve in {} moves" msgstr[0] "" msgstr[1] "" #: data/plugins/10-beginners.plugins.py:31 #: data/plugins/10-beginners.plugins.py:34 #: data/plugins/10-beginners.plugins.py:56 #: data/plugins/10-beginners.plugins.py:73 #: data/plugins/10-beginners.plugins.py:100 #: data/plugins/10-beginners.plugins.py:118 #: data/plugins/10-beginners.plugins.py:140 #: data/plugins/10-beginners.plugins.py:158 #: data/plugins/14-leyan-lo.plugins.py:21 #: data/plugins/14-leyan-lo.plugins.py:24 #: data/plugins/14-leyan-lo.plugins.py:53 #: data/plugins/14-leyan-lo.plugins.py:74 #: data/plugins/14-leyan-lo.plugins.py:90 #: data/plugins/14-leyan-lo.plugins.py:107 #: data/plugins/14-leyan-lo.plugins.py:129 #: data/plugins/14-leyan-lo.plugins.py:170 #: data/plugins/150-spiegel.plugins.py:32 #: data/plugins/150-spiegel.plugins.py:35 #: data/plugins/150-spiegel.plugins.py:64 #: data/plugins/150-spiegel.plugins.py:85 #: data/plugins/150-spiegel.plugins.py:100 #: data/plugins/150-spiegel.plugins.py:113 #: data/plugins/150-spiegel.plugins.py:130 #: data/plugins/150-spiegel.plugins.py:141 #: data/plugins/151-spiegel-improved.plugins.py:20 #: data/plugins/151-spiegel-improved.plugins.py:23 #: data/plugins/151-spiegel-improved.plugins.py:68 #: data/plugins/151-spiegel-improved.plugins.py:107 #: data/plugins/151-spiegel-improved.plugins.py:139 #: data/plugins/151-spiegel-improved.plugins.py:165 #: data/plugins/151-spiegel-improved.plugins.py:183 #: data/plugins/151-spiegel-improved.plugins.py:197 #: data/plugins/20-2x2x2.plugins.py:18 data/plugins/20-2x2x2.plugins.py:21 #: data/plugins/20-2x2x2.plugins.py:37 data/plugins/20-2x2x2.plugins.py:55 msgid "Solvers" msgstr "" #: data/plugins/10-beginners.plugins.py:32 #: data/plugins/10-beginners.plugins.py:35 #: data/plugins/10-beginners.plugins.py:57 #: data/plugins/10-beginners.plugins.py:74 #: data/plugins/10-beginners.plugins.py:101 #: data/plugins/10-beginners.plugins.py:119 #: data/plugins/10-beginners.plugins.py:141 #: data/plugins/10-beginners.plugins.py:159 msgid "Beginner's method" msgstr "" #: data/plugins/10-beginners.plugins.py:36 #: data/plugins/14-leyan-lo.plugins.py:26 #: data/plugins/150-spiegel.plugins.py:37 #: data/plugins/151-spiegel-improved.plugins.py:25 msgid "Top edges" msgstr "" #: data/plugins/10-beginners.plugins.py:58 #: data/plugins/14-leyan-lo.plugins.py:55 #: data/plugins/150-spiegel.plugins.py:66 #: data/plugins/151-spiegel-improved.plugins.py:70 msgid "Top corners" msgstr "" #: data/plugins/10-beginners.plugins.py:75 #: data/plugins/14-leyan-lo.plugins.py:76 #: data/plugins/150-spiegel.plugins.py:87 #: data/plugins/151-spiegel-improved.plugins.py:109 msgid "Middle slice" msgstr "" #: data/plugins/10-beginners.plugins.py:102 #: data/plugins/14-leyan-lo.plugins.py:92 #: data/plugins/150-spiegel.plugins.py:115 #: data/plugins/151-spiegel-improved.plugins.py:167 msgid "Bottom edge orient" msgstr "" #: data/plugins/10-beginners.plugins.py:120 #: data/plugins/14-leyan-lo.plugins.py:131 #: data/plugins/150-spiegel.plugins.py:143 #: data/plugins/151-spiegel-improved.plugins.py:199 #: data/plugins/20-2x2x2.plugins.py:57 msgid "Bottom corner orient" msgstr "" #: data/plugins/10-beginners.plugins.py:142 #: data/plugins/14-leyan-lo.plugins.py:109 #: data/plugins/150-spiegel.plugins.py:132 #: data/plugins/151-spiegel-improved.plugins.py:185 #: data/plugins/20-2x2x2.plugins.py:39 msgid "Bottom corner place" msgstr "" #: data/plugins/10-beginners.plugins.py:160 #: data/plugins/14-leyan-lo.plugins.py:172 #: data/plugins/150-spiegel.plugins.py:102 #: data/plugins/151-spiegel-improved.plugins.py:141 msgid "Bottom edge place" msgstr "" #. Leyan Lo is the inventor of the solution #: data/plugins/14-leyan-lo.plugins.py:23 #: data/plugins/14-leyan-lo.plugins.py:25 #: data/plugins/14-leyan-lo.plugins.py:54 #: data/plugins/14-leyan-lo.plugins.py:75 #: data/plugins/14-leyan-lo.plugins.py:91 #: data/plugins/14-leyan-lo.plugins.py:108 #: data/plugins/14-leyan-lo.plugins.py:130 #: data/plugins/14-leyan-lo.plugins.py:171 msgid "Leyan Lo" msgstr "" #. Spiegel is a german magazine #: data/plugins/150-spiegel.plugins.py:34 #: data/plugins/150-spiegel.plugins.py:36 #: data/plugins/150-spiegel.plugins.py:65 #: data/plugins/150-spiegel.plugins.py:86 #: data/plugins/150-spiegel.plugins.py:101 #: data/plugins/150-spiegel.plugins.py:114 #: data/plugins/150-spiegel.plugins.py:131 #: data/plugins/150-spiegel.plugins.py:142 msgid "Spiegel" msgstr "" #. Spiegel is a german magazine #: data/plugins/151-spiegel-improved.plugins.py:22 #: data/plugins/151-spiegel-improved.plugins.py:24 #: data/plugins/151-spiegel-improved.plugins.py:69 #: data/plugins/151-spiegel-improved.plugins.py:108 #: data/plugins/151-spiegel-improved.plugins.py:140 #: data/plugins/151-spiegel-improved.plugins.py:166 #: data/plugins/151-spiegel-improved.plugins.py:184 #: data/plugins/151-spiegel-improved.plugins.py:198 msgid "Spiegel improved" msgstr "" #: data/plugins/20-2x2x2.plugins.py:19 data/plugins/20-2x2x2.plugins.py:22 #: data/plugins/20-2x2x2.plugins.py:38 data/plugins/20-2x2x2.plugins.py:56 msgid "2×2×2" msgstr "" #: data/plugins/20-2x2x2.plugins.py:23 msgid "Top slice" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:20 #: data/plugins/80-pretty-patterns.plugins.py:23 #: data/plugins/80-pretty-patterns.plugins.py:27 #: data/plugins/80-pretty-patterns.plugins.py:31 #: data/plugins/80-pretty-patterns.plugins.py:35 #: data/plugins/80-pretty-patterns.plugins.py:40 #: data/plugins/80-pretty-patterns.plugins.py:44 msgid "Stripes" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:49 #: data/plugins/80-pretty-patterns.plugins.py:53 msgid "Criss-Cross" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:57 msgid "Fried Eggs" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:61 msgid "Big Fried Eggs" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:65 #: data/plugins/80-pretty-patterns.plugins.py:69 msgid "4 Fried Eggs" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:73 msgid "2 Fried Eggs" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:77 msgid "Chessboard" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:83 msgid "Cross" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:87 msgid "Zig Zag" msgstr "" #. T is the shape formed by the cube labels. T-Time is a pun (Tea Time) and not suitable for literal translation. Don't translate it or use something common or whatever you think makes sense. #: data/plugins/80-pretty-patterns.plugins.py:93 #: data/plugins/80-pretty-patterns.plugins.py:96 #: data/plugins/80-pretty-patterns.plugins.py:100 #: data/plugins/80-pretty-patterns.plugins.py:104 #: data/plugins/80-pretty-patterns.plugins.py:108 #: data/plugins/80-pretty-patterns.plugins.py:112 msgid "T-Time" msgstr "" #. C is the shape formed by the cube labels #: data/plugins/80-pretty-patterns.plugins.py:118 msgid "C" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:121 msgid "Cube in a Cube" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:125 msgid "Striped Cube in a Cube" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:129 msgid "Six square cuboids" msgstr "" #. Superflip may be not translated, because it has a special meaning in the mathematical theory behind the Rubik's Cube. #: data/plugins/80-pretty-patterns.plugins.py:135 msgid "Superflip" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:138 msgid "Superflip easy" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:142 msgid "Green Mamba" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:146 msgid "Anaconda" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:150 msgid "Duck Feet" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:154 #: data/plugins/80-pretty-patterns.plugins.py:158 #: data/plugins/80-pretty-patterns.plugins.py:162 #: data/plugins/80-pretty-patterns.plugins.py:166 #: data/plugins/80-pretty-patterns.plugins.py:170 #: data/plugins/80-pretty-patterns.plugins.py:174 #: data/plugins/80-pretty-patterns.plugins.py:178 #: data/plugins/80-pretty-patterns.plugins.py:182 msgid "Plus" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:186 #: data/plugins/80-pretty-patterns.plugins.py:191 #: data/plugins/80-pretty-patterns.plugins.py:196 #: data/plugins/80-pretty-patterns.plugins.py:200 msgid "Minus" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:204 msgid "Volcano" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:208 msgid "Checkerboard (easy)" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:212 msgid "Checkerboard (fast)" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:216 msgid "Mixed Checkerboard" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:220 msgid "Tipi" msgstr "" #: data/plugins/90-library.plugins.py:18 data/plugins/90-library.plugins.py:22 #: data/plugins/90-library.plugins.py:26 data/plugins/90-library.plugins.py:30 #: data/plugins/90-library.plugins.py:34 data/plugins/90-library.plugins.py:38 #: data/plugins/90-library.plugins.py:42 data/plugins/90-library.plugins.py:46 #: data/plugins/90-library.plugins.py:50 data/plugins/90-library.plugins.py:54 #: data/plugins/90-library.plugins.py:58 data/plugins/90-library.plugins.py:62 #: data/plugins/90-library.plugins.py:66 data/plugins/90-library.plugins.py:70 #: data/plugins/90-library.plugins.py:74 data/plugins/90-library.plugins.py:78 #: data/plugins/90-library.plugins.py:82 data/plugins/90-library.plugins.py:86 #: data/plugins/90-library.plugins.py:91 data/plugins/90-library.plugins.py:96 #: data/plugins/90-library.plugins.py:101 #: data/plugins/90-library.plugins.py:105 #: data/plugins/90-library.plugins.py:110 #: data/plugins/90-library.plugins.py:115 #: data/plugins/90-library.plugins.py:119 #: data/plugins/90-library.plugins.py:123 #: data/plugins/90-library.plugins.py:127 msgid "Library" msgstr "" #: data/plugins/90-library.plugins.py:19 data/plugins/90-library.plugins.py:23 #: data/plugins/90-library.plugins.py:27 data/plugins/90-library.plugins.py:31 #: data/plugins/90-library.plugins.py:35 msgid "Swap edges" msgstr "" #: data/plugins/90-library.plugins.py:20 msgid "3 edges ⟳, top layer" msgstr "" #: data/plugins/90-library.plugins.py:24 msgid "3 edges ⟲, top layer" msgstr "" #: data/plugins/90-library.plugins.py:28 msgid "3 edges, middle layer" msgstr "" #: data/plugins/90-library.plugins.py:32 msgid "4 edges, front and right" msgstr "" #: data/plugins/90-library.plugins.py:36 msgid "4 edges, front and back" msgstr "" #: data/plugins/90-library.plugins.py:39 msgid "Swap 2 edges and 2 corners, top layer" msgstr "" #: data/plugins/90-library.plugins.py:43 data/plugins/90-library.plugins.py:47 msgid "Flip edges" msgstr "" #: data/plugins/90-library.plugins.py:44 msgid "4 edges" msgstr "" #: data/plugins/90-library.plugins.py:48 msgid "2 edges, top layer" msgstr "" #: data/plugins/90-library.plugins.py:51 data/plugins/90-library.plugins.py:55 #: data/plugins/90-library.plugins.py:59 data/plugins/90-library.plugins.py:63 #: data/plugins/90-library.plugins.py:67 data/plugins/90-library.plugins.py:71 msgid "Swap corners" msgstr "" #: data/plugins/90-library.plugins.py:52 data/plugins/90-library.plugins.py:76 msgid "2 corners, top layer" msgstr "" #: data/plugins/90-library.plugins.py:56 msgid "2 corners diagonal, top layer" msgstr "" #: data/plugins/90-library.plugins.py:60 data/plugins/90-library.plugins.py:80 msgid "3 corners ⟳, top layer" msgstr "" #: data/plugins/90-library.plugins.py:64 msgid "3 corners ⟲, top layer" msgstr "" #: data/plugins/90-library.plugins.py:68 msgid "4 corners, top layer" msgstr "" #: data/plugins/90-library.plugins.py:72 msgid "2 corners, partial sequence, top layer" msgstr "" #: data/plugins/90-library.plugins.py:75 data/plugins/90-library.plugins.py:79 #: data/plugins/90-library.plugins.py:83 data/plugins/90-library.plugins.py:87 msgid "Rotate corners" msgstr "" #: data/plugins/90-library.plugins.py:84 msgid "1 corner ⟳, partial sequence, top layer" msgstr "" #: data/plugins/90-library.plugins.py:88 msgid "1 corner ⟲, partial sequence, top layer" msgstr "" #: data/plugins/90-library.plugins.py:92 data/plugins/90-library.plugins.py:97 #: data/plugins/90-library.plugins.py:102 #: data/plugins/90-library.plugins.py:111 msgid "Rotate center" msgstr "" #. 2 rotations of the center face in the upper layer #: data/plugins/90-library.plugins.py:94 msgid "2×Up" msgstr "" #. Up clockwise and front clockwise #: data/plugins/90-library.plugins.py:99 msgid "Up ⟳ and front ⟳" msgstr "" #. Up clockwise and front counterclockwise #: data/plugins/90-library.plugins.py:104 msgid "Up ⟳ and front ⟲" msgstr "" #: data/plugins/90-library.plugins.py:106 msgid "Swap center parts, up and front" msgstr "" #. Up clockwise and down counterclockwise #: data/plugins/90-library.plugins.py:113 msgid "Up ⟳ and down ⟲" msgstr "" # translated by: Belkacem Mohammed https://launchpad.net/~belkacem77 on 2017-10-13 15:08:31 UTC #: data/plugins/90-library.plugins.py:116 #: data/plugins/90-library.plugins.py:120 #: data/plugins/90-library.plugins.py:124 #: data/plugins/90-library.plugins.py:128 msgid "Misc" msgstr "Wayeḍ" #. Yields in a rotated back layer, but the sequence of moves does not touch the back layer #: data/plugins/90-library.plugins.py:118 #: data/plugins/90-library.plugins.py:125 #: data/plugins/90-library.plugins.py:129 msgid "Back without back" msgstr "" #: data/plugins/90-library.plugins.py:121 msgid "2×Back without back" msgstr "" #: data/plugins/95-transformations.plugins.py:18 #: data/plugins/95-transformations.plugins.py:21 #: data/plugins/95-transformations.plugins.py:24 msgid "Move transformations" msgstr "" #: data/plugins/95-transformations.plugins.py:19 msgid "Invert move sequence" msgstr "" #: data/plugins/95-transformations.plugins.py:22 msgid "Normalize cube rotations" msgstr "" #: data/plugins/95-transformations.plugins.py:25 msgid "Normalize move sequence" msgstr "" #: buildlib/modeldef.py:110 msgid "Brick" msgstr "" #: buildlib/modeldef.py:111 #, python-brace-format msgid "{0}×{1}×{2}-Brick" msgstr "" # translated by: Belkacem Mohammed https://launchpad.net/~belkacem77 on 2017-10-13 15:06:11 UTC #: buildlib/modeldef.py:112 msgid "Width:" msgstr "Tehri :" # translated by: Belkacem Mohammed https://launchpad.net/~belkacem77 on 2017-10-13 15:06:11 UTC #: buildlib/modeldef.py:112 buildlib/modeldef.py:151 buildlib/modeldef.py:249 #: buildlib/modeldef.py:300 buildlib/modeldef.py:311 msgid "Height:" msgstr "Teɣzi :" # translated by: Belkacem Mohammed https://launchpad.net/~belkacem77 on 2017-10-13 15:06:11 UTC #: buildlib/modeldef.py:112 msgid "Depth:" msgstr "Talqayt:" # translated by: Belkacem Mohammed https://launchpad.net/~belkacem77 on 2017-10-13 15:06:11 UTC #: buildlib/modeldef.py:120 buildlib/modeldef.py:257 buildlib/modeldef.py:319 #: buildlib/modeldef.py:374 buildlib/modeldef.py:433 msgid "up" msgstr "d asawen" # translated by: Belkacem Mohammed https://launchpad.net/~belkacem77 on 2017-10-13 15:06:11 UTC #: buildlib/modeldef.py:120 buildlib/modeldef.py:205 buildlib/modeldef.py:257 #: buildlib/modeldef.py:319 buildlib/modeldef.py:373 buildlib/modeldef.py:430 msgid "down" msgstr "d akesser" # translated by: Belkacem Mohammed https://launchpad.net/~belkacem77 on 2017-10-13 15:06:11 UTC #: buildlib/modeldef.py:120 buildlib/modeldef.py:205 buildlib/modeldef.py:257 msgid "left" msgstr "azelmaḍ" # translated by: Belkacem Mohammed https://launchpad.net/~belkacem77 on 2017-10-13 15:06:11 UTC #: buildlib/modeldef.py:120 buildlib/modeldef.py:205 buildlib/modeldef.py:257 msgid "right" msgstr "ayeffus" # translated by: Belkacem Mohammed https://launchpad.net/~belkacem77 on 2017-10-13 15:06:11 UTC #: buildlib/modeldef.py:120 buildlib/modeldef.py:374 msgid "front" msgstr "zdat" # translated by: Belkacem Mohammed https://launchpad.net/~belkacem77 on 2017-10-13 15:06:11 UTC #: buildlib/modeldef.py:120 buildlib/modeldef.py:205 buildlib/modeldef.py:257 #: buildlib/modeldef.py:320 buildlib/modeldef.py:373 msgid "back" msgstr "deffir" #: buildlib/modeldef.py:149 msgid "Tower" msgstr "" #: buildlib/modeldef.py:150 #, python-brace-format msgid "{0}×{1}-Tower" msgstr "" #: buildlib/modeldef.py:151 buildlib/modeldef.py:249 buildlib/modeldef.py:300 #: buildlib/modeldef.py:311 msgid "Basis:" msgstr "" #: buildlib/modeldef.py:163 msgid "Cube" msgstr "" #: buildlib/modeldef.py:164 #, python-brace-format msgid "{0}×{0}×{0}-Cube" msgstr "" # translated by: Belkacem Mohammed https://launchpad.net/~belkacem77 on 2017-10-13 15:06:46 UTC #: buildlib/modeldef.py:165 buildlib/modeldef.py:197 buildlib/modeldef.py:365 #: buildlib/modeldef.py:422 msgid "Size:" msgstr "Teɣzi:" #: buildlib/modeldef.py:177 buildlib/modeldef.py:178 msgid "Void Cube" msgstr "" #: buildlib/modeldef.py:195 msgid "Tetrahedron" msgstr "" #: buildlib/modeldef.py:196 #, python-brace-format msgid "{0}-Tetrahedron" msgstr "" #: buildlib/modeldef.py:247 msgid "Triangular Prism" msgstr "" #: buildlib/modeldef.py:248 #, python-brace-format msgid "{0}×{1} Triangular Prism" msgstr "" #: buildlib/modeldef.py:298 msgid "Triangular Prism (complex)" msgstr "" #: buildlib/modeldef.py:299 #, python-brace-format msgid "{0}×{1} Triangular Prism (complex)" msgstr "" #: buildlib/modeldef.py:309 msgid "Pentagonal Prism" msgstr "" #: buildlib/modeldef.py:310 #, python-brace-format msgid "{0}×{1} Pentagonal Prism" msgstr "" #: buildlib/modeldef.py:320 buildlib/modeldef.py:373 msgid "front-right" msgstr "" #: buildlib/modeldef.py:320 buildlib/modeldef.py:374 msgid "back-right" msgstr "" #: buildlib/modeldef.py:320 buildlib/modeldef.py:374 msgid "back-left" msgstr "" #: buildlib/modeldef.py:320 buildlib/modeldef.py:373 msgid "front-left" msgstr "" #: buildlib/modeldef.py:354 msgid "Pentagonal Prism (stretched)" msgstr "" #: buildlib/modeldef.py:355 #, python-brace-format msgid "{0}×{1} Pentagonal Prism (stretched)" msgstr "" #: buildlib/modeldef.py:363 msgid "Octahedron" msgstr "" #: buildlib/modeldef.py:364 #, python-brace-format msgid "{0}-Octahedron" msgstr "" #: buildlib/modeldef.py:420 msgid "Dodecahedron" msgstr "" #: buildlib/modeldef.py:421 #, python-brace-format msgid "{0}-Dodecahedron" msgstr "" #: buildlib/modeldef.py:430 msgid "down-back-right" msgstr "" #: buildlib/modeldef.py:430 msgid "down-front-right" msgstr "" #: buildlib/modeldef.py:431 msgid "down-front" msgstr "" #: buildlib/modeldef.py:431 msgid "down-front-left" msgstr "" #: buildlib/modeldef.py:431 msgid "down-back-left" msgstr "" #: buildlib/modeldef.py:432 msgid "up-back" msgstr "" #: buildlib/modeldef.py:432 msgid "up-back-right" msgstr "" #: buildlib/modeldef.py:432 msgid "up-front-right" msgstr "" #: buildlib/modeldef.py:433 msgid "up-front-left" msgstr "" #: buildlib/modeldef.py:433 msgid "up-back-left" msgstr "" pybik-3.0/po/ru.po0000664000175000017500000014305613173052130014252 0ustar barccbarcc00000000000000# Russian translation for pybik # Copyright (c) 2011-2017 Rosetta Contributors and Canonical Ltd 2011 # This file is distributed under the same license as the pybik package. # FIRST AUTHOR , 2011. # msgid "" msgstr "" "Project-Id-Version: pybik\n" "Report-Msgid-Bugs-To: https://bugs.launchpad.net/pybik/+filebug\n" "POT-Creation-Date: 2017-09-10 21:58+0200\n" "PO-Revision-Date: 2017-09-17 05:55+0000\n" "Last-Translator: B. Clausius \n" "Language-Team: Russian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" "X-Launchpad-Export-Date: 2017-09-18 05:31+0000\n" "X-Generator: Launchpad (build 18449)\n" "Language: ru\n" # translated by: scientistnik https://launchpad.net/~nozdrin-plotnitsky on 2013-01-08 20:07:38 UTC # reviewed by: Oleg Koptev https://launchpad.net/~koptev-oleg on 2013-06-15 09:17:43 UTC #: pybiklib/application.py:294 msgid "Press the Esc key to exit Edit Mode" msgstr "Нажмите на кнопку Esc для выхода из режима редактирования" # translated by: Oleg Koptev https://launchpad.net/~koptev-oleg on 2013-06-15 09:17:43 UTC #. substitution for {move_text} in statusbar text #: pybiklib/application.py:302 #, python-brace-format msgid "{current} / {total} move" msgid_plural "{current} / {total} moves" msgstr[0] "{current} / {total} ход" msgstr[1] "{current} / {total} хода" msgstr[2] "{current} / {total} ходов" # translated by: scientistnik https://launchpad.net/~nozdrin-plotnitsky on 2013-01-08 20:07:38 UTC # reviewed by: Oleg Koptev https://launchpad.net/~koptev-oleg on 2013-06-15 09:17:43 UTC #. substitution for {solved_text} in statusbar text #: pybiklib/application.py:306 msgid "solved" msgstr "решено" # translated by: scientistnik https://launchpad.net/~nozdrin-plotnitsky on 2013-01-08 20:07:38 UTC # reviewed by: Oleg Koptev https://launchpad.net/~koptev-oleg on 2013-06-15 09:17:43 UTC #: pybiklib/application.py:306 msgid "not solved" msgstr "не решено" # translated by: scientistnik https://launchpad.net/~nozdrin-plotnitsky on 2013-01-08 20:07:38 UTC # reviewed by: Oleg Koptev https://launchpad.net/~koptev-oleg on 2013-06-15 09:17:43 UTC #. statusbar text #: pybiklib/application.py:309 #, python-brace-format msgid "{move_text}, {solved_text}" msgstr "{move_text}, {solved_text}" # translated by: Oleg Koptev https://launchpad.net/~koptev-oleg on 2013-06-15 09:17:43 UTC #: pybiklib/application.py:314 msgid "Congratulations, you have solved the puzzle!" msgstr "Поздравляю, вы решили головоломку!" # translated by: Oleg Koptev https://launchpad.net/~koptev-oleg on 2013-06-15 09:17:43 UTC #. Name of the application, probably should not be translated. #: pybiklib/config.py:35 data/ui/qt/main.ui.h:271 #: data/app-meta/pybik.desktop.in:3 msgid "Pybik" msgstr "Pybik" # translated by: ☠Jay ZDLin☠ https://launchpad.net/~black-buddha666 on 2015-04-09 05:29:38 UTC #. short description #: pybiklib/config.py:65 data/app-meta/pybik.desktop.in:4 msgid "Rubik's cube game" msgstr "Кубик Рубика" #. The next 7 lines belong together and form the long description #: pybiklib/config.py:68 msgid "Pybik is a 3D puzzle game about the cube invented by Ernő Rubik." msgstr "Pybik — 3D-головоломка на основе куба, изобретённого Эрнё Рубиком." #: pybiklib/config.py:70 msgid "" "Various 3D puzzles, such as cubes, towers, prisms, tetrahedra, octahedra, " "dodecahedra and many more" msgstr "" #: pybiklib/config.py:71 msgid "Solvers for some puzzles" msgstr "Решения для некоторых головоломок" # translated by: Aleksey Kabanov https://launchpad.net/~ak099 on 2013-12-19 09:53:32 UTC #. Use something that is common in the Rubik scene in your language, sometimes it's just the equivalent of "patterns". #: pybiklib/config.py:72 data/plugins/80-pretty-patterns.plugins.py:19 #: data/plugins/80-pretty-patterns.plugins.py:22 #: data/plugins/80-pretty-patterns.plugins.py:26 #: data/plugins/80-pretty-patterns.plugins.py:30 #: data/plugins/80-pretty-patterns.plugins.py:34 #: data/plugins/80-pretty-patterns.plugins.py:39 #: data/plugins/80-pretty-patterns.plugins.py:43 #: data/plugins/80-pretty-patterns.plugins.py:48 #: data/plugins/80-pretty-patterns.plugins.py:52 #: data/plugins/80-pretty-patterns.plugins.py:56 #: data/plugins/80-pretty-patterns.plugins.py:60 #: data/plugins/80-pretty-patterns.plugins.py:64 #: data/plugins/80-pretty-patterns.plugins.py:68 #: data/plugins/80-pretty-patterns.plugins.py:72 #: data/plugins/80-pretty-patterns.plugins.py:76 #: data/plugins/80-pretty-patterns.plugins.py:82 #: data/plugins/80-pretty-patterns.plugins.py:86 #: data/plugins/80-pretty-patterns.plugins.py:91 #: data/plugins/80-pretty-patterns.plugins.py:95 #: data/plugins/80-pretty-patterns.plugins.py:99 #: data/plugins/80-pretty-patterns.plugins.py:103 #: data/plugins/80-pretty-patterns.plugins.py:107 #: data/plugins/80-pretty-patterns.plugins.py:111 #: data/plugins/80-pretty-patterns.plugins.py:116 #: data/plugins/80-pretty-patterns.plugins.py:120 #: data/plugins/80-pretty-patterns.plugins.py:124 #: data/plugins/80-pretty-patterns.plugins.py:128 #: data/plugins/80-pretty-patterns.plugins.py:133 #: data/plugins/80-pretty-patterns.plugins.py:137 #: data/plugins/80-pretty-patterns.plugins.py:141 #: data/plugins/80-pretty-patterns.plugins.py:145 #: data/plugins/80-pretty-patterns.plugins.py:149 #: data/plugins/80-pretty-patterns.plugins.py:153 #: data/plugins/80-pretty-patterns.plugins.py:157 #: data/plugins/80-pretty-patterns.plugins.py:161 #: data/plugins/80-pretty-patterns.plugins.py:165 #: data/plugins/80-pretty-patterns.plugins.py:169 #: data/plugins/80-pretty-patterns.plugins.py:173 #: data/plugins/80-pretty-patterns.plugins.py:177 #: data/plugins/80-pretty-patterns.plugins.py:181 #: data/plugins/80-pretty-patterns.plugins.py:185 #: data/plugins/80-pretty-patterns.plugins.py:190 #: data/plugins/80-pretty-patterns.plugins.py:195 #: data/plugins/80-pretty-patterns.plugins.py:199 #: data/plugins/80-pretty-patterns.plugins.py:203 #: data/plugins/80-pretty-patterns.plugins.py:207 #: data/plugins/80-pretty-patterns.plugins.py:211 #: data/plugins/80-pretty-patterns.plugins.py:215 #: data/plugins/80-pretty-patterns.plugins.py:219 msgid "Pretty patterns" msgstr "Красивые узоры" #: pybiklib/config.py:73 msgid "Editor for move sequences" msgstr "Редактор последовательности ходов" #: pybiklib/config.py:74 msgid "Custom colors and images on the surface of the puzzles" msgstr "" # translated by: Aleksey Kabanov https://launchpad.net/~ak099 on 2013-12-19 08:57:50 UTC #: pybiklib/config.py:78 msgid "" "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.\n" "\n" "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." msgstr "" "Это свободное программное обеспечение: его можно распространять и/или " "изменять на условиях GNU General Public License, опубликованной Free " "Software Foundation; либо версии 3 этой лицензии, либо (на ваш выбор) любой " "более поздней версии.\n" "\n" "Программа распространяется в надежде, что она будет полезной, но БЕЗ КАКОЙ " "ЛИБО ГАРАНТИИ, даже без обязательной гарантии КОМЕРЧЕСКОЙ ЦЕННОСТИ ИЛИ " "ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЁННОЙ ЦЕЛИ. Подробности смотрите в тексте GNU General " "Public License." # translated by: Oleg Koptev https://launchpad.net/~koptev-oleg on 2013-06-15 09:25:43 UTC #. Text between "<" and ">" is expanded to a link by the program and should not be modified. #. Text between "" and "<|>" is the translatable text for the link. #: pybiklib/config.py:90 msgid "" "Read the full text of the GNU General Public " "License<|> or see ." msgstr "" "Прочтите полный текст универсальной общественной " "лицензии GNU <|>, либо перейдите на сайт ." # translated by: Oleg Koptev https://launchpad.net/~koptev-oleg on 2013-06-15 09:25:43 UTC #: pybiklib/config.py:93 msgid "" "You should have received a copy of the GNU General Public License along with " "this program. If not, see ." msgstr "" "Вместе с этой программой вы должны были получить копию GNU General Public " "License. Если нет, обратитесь к ." # translated by: Aleksey Kabanov https://launchpad.net/~ak099 on 2013-12-19 08:57:50 UTC #: pybiklib/config.py:98 #, python-brace-format msgid "" "If you find any bugs in Pybik or have a suggestion for an improvement then " "please submit a <{CONTACT_FILEBUG}|>bug report<|>." msgstr "" "Если вы обнаружили ошибку в Pybik или у вас есть предложение по улучшению " "программы, отправьте, пожалуйста <{CONTACT_FILEBUG}|>отчёт об ошибке<|>." # translated by: Oleg Koptev https://launchpad.net/~koptev-oleg on 2013-06-15 09:25:43 UTC #: pybiklib/config.py:103 msgid "" "Translations are managed by the " "Launchpad " "translation group<|>.\n" "\n" "If you want help to translate Pybik to your language you can do it through " "the web interface<|>.\n" "\n" "Read more about \"Translating with " "Launchpad\"<|> and " "\"Starting to " "translate\"<|>." msgstr "" "Перевод программы ведётся " "группой " "переводчиков Launchpad<|>.\n" "\n" "Если вы хотите помочь перевести Pybik на другие языки, вы можете сделать это " "через веб-интерфейс<|>.\n" "\n" "Узнайте больше в разделах помощи " "«Translating with Launchpad»<|> и " "«Starting to " "translate»<|>." #: pybiklib/dialogs.py:44 msgid "Lighting" msgstr "Освещение" # translated by: ☠Jay ZDLin☠ https://launchpad.net/~black-buddha666 on 2015-04-09 05:29:38 UTC #: pybiklib/dialogs.py:44 msgid "Simple" msgstr "Простой" #. labels are the colored stickers on the cube #: pybiklib/dialogs.py:46 msgid "Labels" msgstr "" # translated by: ☠Jay ZDLin☠ https://launchpad.net/~black-buddha666 on 2015-04-09 08:28:32 UTC #: pybiklib/dialogs.py:104 data/ui/qt/main.ui.h:275 msgid "Select Puzzle" msgstr "Выбор головоломки" # translated by: Aleksey Kabanov https://launchpad.net/~ak099 on 2013-12-19 09:53:32 UTC #. 1 slice, 2 slices, 3 slices, ... #: pybiklib/dialogs.py:134 pybiklib/dialogs.py:154 pybiklib/dialogs.py:180 #: pybiklib/dialogs.py:201 msgid "{} slice" msgid_plural "{} slices" msgstr[0] "" msgstr[1] "" #: pybiklib/dialogs.py:196 pybiklib/dialogs.py:225 msgid "{}×{} slices" msgstr "" # translated by: ☠Jay ZDLin☠ https://launchpad.net/~black-buddha666 on 2015-04-09 08:18:56 UTC #. The next strings form the text in the help dialog: #. Title of the 1st paragraph #: pybiklib/dialogs.py:290 msgid "Using the mouse to rotate the cube" msgstr "Использование мыши для поворота куба" # translated by: ☠Jay ZDLin☠ https://launchpad.net/~black-buddha666 on 2015-04-09 08:18:56 UTC #. Text of the 1st paragraph, followed by bullet list items #: pybiklib/dialogs.py:292 msgid "" "Position the mouse cursor over the puzzle and you will see an arrow that " "gives you a hint in which direction the slice under the mouse cursor will be " "rotated." msgstr "" "Наведите курсор на головоломку; появится стрелка, указывающая направление, в " "котором будет повёрнут выбранный сегмент." # translated by: ☠Jay ZDLin☠ https://launchpad.net/~black-buddha666 on 2015-04-09 08:18:56 UTC #: pybiklib/dialogs.py:294 msgid "" "The left mouse button rotates a single slice of the cube in the direction of " "the arrow." msgstr "" "Левая кнопка мыши поворачивает сегмент куба в направлении, указываемом " "стрелкой." # translated by: ☠Jay ZDLin☠ https://launchpad.net/~black-buddha666 on 2015-04-09 08:18:56 UTC #: pybiklib/dialogs.py:295 msgid "" "The right mouse button rotates a single slice of the cube against the " "direction of the arrow." msgstr "" "Правая кнопка мыши поворачивает сегмент куба в направлении, противоположном " "указываемому стрелкой." # translated by: ☠Jay ZDLin☠ https://launchpad.net/~black-buddha666 on 2015-04-09 08:18:56 UTC #: pybiklib/dialogs.py:296 msgid "" "To rotate the whole cube instead of a single slice press the Ctrl key " "together with the mouse button." msgstr "" "Чтобы повернуть куб целиком, а не отдельный сегмент, нажмите кнопку мыши, " "удерживая клавишу Ctrl." # translated by: ☠Jay ZDLin☠ https://launchpad.net/~black-buddha666 on 2015-04-09 08:18:56 UTC #. Title of the 2nd paragraph #: pybiklib/dialogs.py:298 msgid "Using the keyboard to rotate the cube" msgstr "Использование клавиатуры для поворота куба" # translated by: ☠Jay ZDLin☠ https://launchpad.net/~black-buddha666 on 2015-04-09 08:18:56 UTC #. Text of the 2nd paragraph, followed by bullet list items #: pybiklib/dialogs.py:300 msgid "" "Make sure the keyboard focus is on the cube area (e.g. click on the " "background of the cube). The keys can be configured in the preferences " "dialog, the default is:" msgstr "" "Убедитесь, что куб находится в фокусе клавиатуры (для подтверждения нажмите " "на задний план куба). Комбинации клавиш можно задать в настройках; по " "умолчанию назначены следующие значения:" # translated by: ☠Jay ZDLin☠ https://launchpad.net/~black-buddha666 on 2015-04-09 08:18:56 UTC #. before the item text is a list of keys #: pybiklib/dialogs.py:303 pybiklib/dialogs.py:318 msgid "Moves the left, right, upper, down, front or back slice clockwise." msgstr "" "Перемещение влево, вправо, вниз, вверх, вперёд или назад по часовой стрелке." # translated by: ☠Jay ZDLin☠ https://launchpad.net/~black-buddha666 on 2015-04-09 08:18:56 UTC #: pybiklib/dialogs.py:304 pybiklib/dialogs.py:319 msgid "Moves a slice couterclockwise." msgstr "Перемещение сегмента против часовой стрелки." # translated by: ☠Jay ZDLin☠ https://launchpad.net/~black-buddha666 on 2015-04-09 08:18:56 UTC #: pybiklib/dialogs.py:305 pybiklib/dialogs.py:320 msgid "Moves the whole cube." msgstr "Поворот всего куба." # translated by: ☠Jay ZDLin☠ https://launchpad.net/~black-buddha666 on 2015-04-09 08:25:58 UTC #. Title of the 3rd paragraph #: pybiklib/dialogs.py:307 msgid "Other keys and buttons" msgstr "Другие сочетания клавиш" # translated by: ☠Jay ZDLin☠ https://launchpad.net/~black-buddha666 on 2015-04-09 08:25:58 UTC #. bullet list items of the 3rd paragraph #: pybiklib/dialogs.py:309 msgid "Mouse wheel – Zoom in/out" msgstr "Колёсико мыши — Приближение/Удаление" # translated by: ☠Jay ZDLin☠ https://launchpad.net/~black-buddha666 on 2015-04-09 08:25:58 UTC #: pybiklib/dialogs.py:310 msgid "" "Arrow keys, Left mouse button on the background – Changes the direction of " "looking at the cube." msgstr "" "Клавиши-стрелки, Нажатие левой кнопки мыши на заднем плане — Изменение " "ракурса отображения куба." #: pybiklib/dialogs.py:311 msgid "" "Moves keyboard focus to the sequence editor above the cube area where you " "can edit the move sequence in the notation described below. Hit enter when " "done." msgstr "" #. Title of the 4th paragraph #: pybiklib/dialogs.py:315 msgid "Notation for moves" msgstr "" #. Text of the 4th paragraph, followed by bullet list items #: pybiklib/dialogs.py:317 msgid "" "All moves, however they are made, are displayed progressively above the cube " "area:" msgstr "" #: pybiklib/dialogs.py:321 msgid "" "Moves the first, second or third slice from left clockwise. The allowed " "numbers are in the range from 1 to the count of parallel slices. \"l1\" is " "always the same as \"l\" and for the classic 3×3×3-Cube \"l2\" is the same " "as \"r2-\" and \"l3\" is the same as \"r-\"." msgstr "" #: pybiklib/dialogs.py:325 msgid "You can use a space to separate groups of moves." msgstr "" # translated by: Aleksey Kabanov https://launchpad.net/~ak099 on 2013-12-19 09:03:01 UTC #: pybiklib/dialogs.py:379 msgid "Pybik project website" msgstr "Сайт проекта Pybik" # translated by: ☠Jay ZDLin☠ https://launchpad.net/~black-buddha666 on 2015-04-13 05:32:01 UTC #: pybiklib/pluginlib.py:301 msgid "This plugin does not work for any model." msgstr "Данный плагин не поддерживается ни для одной модели." # translated by: ☠Jay ZDLin☠ https://launchpad.net/~black-buddha666 on 2015-04-13 05:32:01 UTC #: pybiklib/pluginlib.py:303 pybiklib/pluginlib.py:306 msgid "This plugin only works for:" msgstr "Данный плагин работает только для:" # translated by: ☠Jay ZDLin☠ https://launchpad.net/~black-buddha666 on 2015-04-13 05:32:01 UTC #: pybiklib/pluginlib.py:498 msgid "This puzzle is not solvable." msgstr "Данную головоломку невозможно решить." # translated by: Aleksey Kabanov https://launchpad.net/~ak099 on 2013-12-19 09:06:05 UTC #. The following 6 words are for the antialiasing levels: disabled, ugly, low, medium, high, higher #: pybiklib/schema.py:211 msgid "disabled" msgstr "отключено" # translated by: Aleksey Kabanov https://launchpad.net/~ak099 on 2013-12-19 09:06:05 UTC #: pybiklib/schema.py:211 msgid "ugly" msgstr "ужасное" # translated by: Aleksey Kabanov https://launchpad.net/~ak099 on 2013-12-19 09:09:13 UTC #: pybiklib/schema.py:211 msgid "low" msgstr "низкое" # translated by: Aleksey Kabanov https://launchpad.net/~ak099 on 2013-12-19 09:09:13 UTC #: pybiklib/schema.py:212 msgid "medium" msgstr "среднее" # translated by: Aleksey Kabanov https://launchpad.net/~ak099 on 2013-12-19 09:09:13 UTC #: pybiklib/schema.py:212 msgid "high" msgstr "высокое" # translated by: Aleksey Kabanov https://launchpad.net/~ak099 on 2013-12-19 09:09:13 UTC #: pybiklib/schema.py:212 msgid "higher" msgstr "максимальное" #: data/ui/qt/about.ui.h:212 msgid "About Pybik" msgstr "Об игре Pybik" #: data/ui/qt/about.ui.h:213 msgid "Translators:" msgstr "Переводчики:" #: data/ui/qt/about.ui.h:214 msgid "About" msgstr "О программе" #: data/ui/qt/about.ui.h:215 msgid "Contribute" msgstr "" #: data/ui/qt/about.ui.h:216 msgid "License" msgstr "Лицензия" # translated by: ☠Jay ZDLin☠ https://launchpad.net/~black-buddha666 on 2015-04-09 08:28:32 UTC #: data/ui/qt/help.ui.h:53 data/ui/qt/main.ui.h:297 msgid "Help" msgstr "Справка" # translated by: Aleksey Kabanov https://launchpad.net/~ak099 on 2013-12-19 09:44:10 UTC #: data/ui/qt/main.ui.h:272 msgid "&New Challenge" msgstr "" #: data/ui/qt/main.ui.h:273 msgid "Ne&w Solved" msgstr "Н&овая собранная" #: data/ui/qt/main.ui.h:274 msgid "&Quit" msgstr "В&ыйти" #: data/ui/qt/main.ui.h:276 msgid "&Set as Initial State" msgstr "" #: data/ui/qt/main.ui.h:277 msgid "&Reset Rotation" msgstr "&Обнулить поворот" #: data/ui/qt/main.ui.h:278 msgid "&Preferences …" msgstr "&Настройки…" #: data/ui/qt/main.ui.h:279 msgid "&Status Bar" msgstr "&Строка состояния" #: data/ui/qt/main.ui.h:280 msgid "&Info …" msgstr "&Информация …" #: data/ui/qt/main.ui.h:281 msgid "Rewind" msgstr "Назад" #: data/ui/qt/main.ui.h:282 msgid "Previous" msgstr "Предыдущее" #: data/ui/qt/main.ui.h:283 msgid "Stop" msgstr "Стоп" #: data/ui/qt/main.ui.h:284 msgid "Play" msgstr "Воспроизвести" #: data/ui/qt/main.ui.h:285 msgid "Next" msgstr "Следующее" #: data/ui/qt/main.ui.h:286 msgid "Forward" msgstr "Вперёд" #: data/ui/qt/main.ui.h:287 msgid "Add Mark" msgstr "Добавить метку" #: data/ui/qt/main.ui.h:289 msgid "Mark the current place in the sequence of moves" msgstr "Пометить текущую позицию в последовательности вращений" #: data/ui/qt/main.ui.h:291 msgid "Remove Mark" msgstr "Удалить метку" #: data/ui/qt/main.ui.h:293 msgid "Remove the mark at the current place in the sequence of moves" msgstr "Убрать метку из текущей позиции в последовательности вращений" #: data/ui/qt/main.ui.h:295 msgid "&Edit Bar" msgstr "П&анель редактирования" # translated by: ☠Jay ZDLin☠ https://launchpad.net/~black-buddha666 on 2015-04-09 08:28:32 UTC #: data/ui/qt/main.ui.h:296 msgid "&Help …" msgstr "&Справка …" #: data/ui/qt/preferences.ui.h:372 msgid "Preferences" msgstr "Настройки" #: data/ui/qt/preferences.ui.h:373 msgid "Animation Speed:" msgstr "Скорость анимации:" #: data/ui/qt/preferences.ui.h:375 msgid "Mirror Distance:" msgstr "Расстояние зеркала:" #: data/ui/qt/preferences.ui.h:377 msgid "Quality:" msgstr "" #: data/ui/qt/preferences.ui.h:380 msgid "" "Lower antialiasing has better performance, higher antialiasing has better " "quality." msgstr "" #: data/ui/qt/preferences.ui.h:382 msgid "Antialiasing:" msgstr "" # translated by: Oleg Koptev https://launchpad.net/~koptev-oleg on 2013-06-15 09:25:43 UTC #: data/ui/qt/preferences.ui.h:384 msgid "The program needs to be restarted for the changes to take effect." msgstr "Для вступления изменений в силу, программу следует перезапустить." #: data/ui/qt/preferences.ui.h:385 msgid "Graphic" msgstr "Графика" #: data/ui/qt/preferences.ui.h:386 msgid "Point and click, all directions" msgstr "" #: data/ui/qt/preferences.ui.h:387 msgid "Point and click, simplified" msgstr "" #: data/ui/qt/preferences.ui.h:388 msgid "Gestures" msgstr "" #: data/ui/qt/preferences.ui.h:389 msgid "Mouse" msgstr "Мышь" #: data/ui/qt/preferences.ui.h:391 data/ui/qt/preferences.ui.h:393 msgid "Add" msgstr "Добавить" #: data/ui/qt/preferences.ui.h:395 data/ui/qt/preferences.ui.h:397 msgid "Remove" msgstr "Удалить" #: data/ui/qt/preferences.ui.h:399 data/ui/qt/preferences.ui.h:401 msgid "Reset" msgstr "Сбросить" #: data/ui/qt/preferences.ui.h:402 msgid "Keys" msgstr "Клавиши" #: data/ui/qt/preferences.ui.h:403 msgid "Color:" msgstr "Цвет:" #: data/ui/qt/preferences.ui.h:405 msgid "Image File:" msgstr "Изображение:" #: data/ui/qt/preferences.ui.h:407 msgid "Tiled" msgstr "Черепица" #: data/ui/qt/preferences.ui.h:408 msgid "Mosaic" msgstr "Мозаика" #: data/ui/qt/preferences.ui.h:409 msgid "Background:" msgstr "Фон:" #: data/ui/qt/preferences.ui.h:411 msgid "Appearance" msgstr "Внешний вид" # translated by: Aleksey Kabanov https://launchpad.net/~ak099 on 2013-12-19 09:03:01 UTC #: pybiklib/ext/qt.py:1578 msgid "Move" msgstr "Перемещение" # translated by: Aleksey Kabanov https://launchpad.net/~ak099 on 2013-12-19 09:03:01 UTC #: pybiklib/ext/qt.py:1581 msgid "Key" msgstr "Клавиша" # translated by: Aleksey Kabanov https://launchpad.net/~ak099 on 2013-12-19 09:03:01 UTC #: pybiklib/ext/qt.py:1682 msgid "Open Image" msgstr "Открыть изображение" # translated by: Aleksey Kabanov https://launchpad.net/~ak099 on 2013-12-19 08:57:50 UTC #: pybiklib/ext/qt.py:1720 msgid "plain" msgstr "нет" # translated by: Aleksey Kabanov https://launchpad.net/~ak099 on 2013-12-19 08:57:50 UTC #: pybiklib/ext/qt.py:1723 msgid "select …" msgstr "выбрать …" # translated by: Oleg Koptev https://launchpad.net/~koptev-oleg on 2013-06-15 09:25:43 UTC #: pybiklib/ext/qtui.py:94 msgid "Press a key …" msgstr "Нажмите клавишу..." # translated by: Aleksey Kabanov https://launchpad.net/~ak099 on 2013-12-19 09:44:10 UTC #. Add whatever keywords you want in your language, separated by semicolons, last character must be a semicolon. These keywords are used when searching for applications in Unity, GNOME Shell, etc. #: data/app-meta/pybik.desktop.in:10 msgid "rubik;cube;puzzle;magic;" msgstr "Рубик;кубик;головоломка;магия;" # translated by: Aleksey Kabanov https://launchpad.net/~ak099 on 2013-12-19 09:44:10 UTC #: data/plugins/01-challenges.plugins.py:18 #: data/plugins/01-challenges.plugins.py:21 #: data/plugins/01-challenges.plugins.py:24 #: data/plugins/01-challenges.plugins.py:27 #: data/plugins/01-challenges.plugins.py:30 #: data/plugins/01-challenges.plugins.py:33 #: data/plugins/01-challenges.plugins.py:36 #: data/plugins/01-challenges.plugins.py:39 #: data/plugins/01-challenges.plugins.py:42 #: data/plugins/01-challenges.plugins.py:45 #: data/plugins/01-challenges.plugins.py:48 msgid "Challenges" msgstr "Задачи" #: data/plugins/01-challenges.plugins.py:19 msgid "Solve random puzzle" msgstr "" # translated by: ☠Jay ZDLin☠ https://launchpad.net/~black-buddha666 on 2015-04-13 05:33:34 UTC #: data/plugins/01-challenges.plugins.py:22 #: data/plugins/01-challenges.plugins.py:25 #: data/plugins/01-challenges.plugins.py:28 #: data/plugins/01-challenges.plugins.py:31 #: data/plugins/01-challenges.plugins.py:34 #: data/plugins/01-challenges.plugins.py:37 #: data/plugins/01-challenges.plugins.py:40 #: data/plugins/01-challenges.plugins.py:43 #: data/plugins/01-challenges.plugins.py:46 #: data/plugins/01-challenges.plugins.py:49 msgid "Solve in {} move" msgid_plural "Solve in {} moves" msgstr[0] "Решение в {} ход" msgstr[1] "Решение в {} хода" msgstr[2] "Решение в {} ходов" # translated by: Aleksey Kabanov https://launchpad.net/~ak099 on 2013-12-19 09:50:19 UTC #: data/plugins/10-beginners.plugins.py:31 #: data/plugins/10-beginners.plugins.py:34 #: data/plugins/10-beginners.plugins.py:56 #: data/plugins/10-beginners.plugins.py:73 #: data/plugins/10-beginners.plugins.py:100 #: data/plugins/10-beginners.plugins.py:118 #: data/plugins/10-beginners.plugins.py:140 #: data/plugins/10-beginners.plugins.py:158 #: data/plugins/14-leyan-lo.plugins.py:21 #: data/plugins/14-leyan-lo.plugins.py:24 #: data/plugins/14-leyan-lo.plugins.py:53 #: data/plugins/14-leyan-lo.plugins.py:74 #: data/plugins/14-leyan-lo.plugins.py:90 #: data/plugins/14-leyan-lo.plugins.py:107 #: data/plugins/14-leyan-lo.plugins.py:129 #: data/plugins/14-leyan-lo.plugins.py:170 #: data/plugins/150-spiegel.plugins.py:32 #: data/plugins/150-spiegel.plugins.py:35 #: data/plugins/150-spiegel.plugins.py:64 #: data/plugins/150-spiegel.plugins.py:85 #: data/plugins/150-spiegel.plugins.py:100 #: data/plugins/150-spiegel.plugins.py:113 #: data/plugins/150-spiegel.plugins.py:130 #: data/plugins/150-spiegel.plugins.py:141 #: data/plugins/151-spiegel-improved.plugins.py:20 #: data/plugins/151-spiegel-improved.plugins.py:23 #: data/plugins/151-spiegel-improved.plugins.py:68 #: data/plugins/151-spiegel-improved.plugins.py:107 #: data/plugins/151-spiegel-improved.plugins.py:139 #: data/plugins/151-spiegel-improved.plugins.py:165 #: data/plugins/151-spiegel-improved.plugins.py:183 #: data/plugins/151-spiegel-improved.plugins.py:197 #: data/plugins/20-2x2x2.plugins.py:18 data/plugins/20-2x2x2.plugins.py:21 #: data/plugins/20-2x2x2.plugins.py:37 data/plugins/20-2x2x2.plugins.py:55 msgid "Solvers" msgstr "Решатели" #: data/plugins/10-beginners.plugins.py:32 #: data/plugins/10-beginners.plugins.py:35 #: data/plugins/10-beginners.plugins.py:57 #: data/plugins/10-beginners.plugins.py:74 #: data/plugins/10-beginners.plugins.py:101 #: data/plugins/10-beginners.plugins.py:119 #: data/plugins/10-beginners.plugins.py:141 #: data/plugins/10-beginners.plugins.py:159 msgid "Beginner's method" msgstr "" # translated by: Oleg Koptev https://launchpad.net/~koptev-oleg on 2014-02-11 04:33:33 UTC #: data/plugins/10-beginners.plugins.py:36 #: data/plugins/14-leyan-lo.plugins.py:26 #: data/plugins/150-spiegel.plugins.py:37 #: data/plugins/151-spiegel-improved.plugins.py:25 msgid "Top edges" msgstr "Верхние кромки" # translated by: Oleg Koptev https://launchpad.net/~koptev-oleg on 2014-02-11 04:33:33 UTC #: data/plugins/10-beginners.plugins.py:58 #: data/plugins/14-leyan-lo.plugins.py:55 #: data/plugins/150-spiegel.plugins.py:66 #: data/plugins/151-spiegel-improved.plugins.py:70 msgid "Top corners" msgstr "Верхние углы" # translated by: Aleksey Kabanov https://launchpad.net/~ak099 on 2013-12-19 09:50:19 UTC #: data/plugins/10-beginners.plugins.py:75 #: data/plugins/14-leyan-lo.plugins.py:76 #: data/plugins/150-spiegel.plugins.py:87 #: data/plugins/151-spiegel-improved.plugins.py:109 msgid "Middle slice" msgstr "Средний слой" # translated by: Oleg Koptev https://launchpad.net/~koptev-oleg on 2014-02-11 04:33:33 UTC #: data/plugins/10-beginners.plugins.py:102 #: data/plugins/14-leyan-lo.plugins.py:92 #: data/plugins/150-spiegel.plugins.py:115 #: data/plugins/151-spiegel-improved.plugins.py:167 msgid "Bottom edge orient" msgstr "Ориентация нижней кромки" # translated by: Oleg Koptev https://launchpad.net/~koptev-oleg on 2014-02-11 04:35:05 UTC #: data/plugins/10-beginners.plugins.py:120 #: data/plugins/14-leyan-lo.plugins.py:131 #: data/plugins/150-spiegel.plugins.py:143 #: data/plugins/151-spiegel-improved.plugins.py:199 #: data/plugins/20-2x2x2.plugins.py:57 msgid "Bottom corner orient" msgstr "Ориентация нижнего угла" # translated by: Oleg Koptev https://launchpad.net/~koptev-oleg on 2014-02-11 04:33:33 UTC #: data/plugins/10-beginners.plugins.py:142 #: data/plugins/14-leyan-lo.plugins.py:109 #: data/plugins/150-spiegel.plugins.py:132 #: data/plugins/151-spiegel-improved.plugins.py:185 #: data/plugins/20-2x2x2.plugins.py:39 msgid "Bottom corner place" msgstr "Положение нижнего угла" # translated by: Oleg Koptev https://launchpad.net/~koptev-oleg on 2014-02-11 04:33:33 UTC #: data/plugins/10-beginners.plugins.py:160 #: data/plugins/14-leyan-lo.plugins.py:172 #: data/plugins/150-spiegel.plugins.py:102 #: data/plugins/151-spiegel-improved.plugins.py:141 msgid "Bottom edge place" msgstr "Положение нижней кромки" # translated by: ☠Jay ZDLin☠ https://launchpad.net/~black-buddha666 on 2015-04-09 08:31:53 UTC #. Leyan Lo is the inventor of the solution #: data/plugins/14-leyan-lo.plugins.py:23 #: data/plugins/14-leyan-lo.plugins.py:25 #: data/plugins/14-leyan-lo.plugins.py:54 #: data/plugins/14-leyan-lo.plugins.py:75 #: data/plugins/14-leyan-lo.plugins.py:91 #: data/plugins/14-leyan-lo.plugins.py:108 #: data/plugins/14-leyan-lo.plugins.py:130 #: data/plugins/14-leyan-lo.plugins.py:171 msgid "Leyan Lo" msgstr "Леян Ло" # translated by: Oleg Koptev https://launchpad.net/~koptev-oleg on 2014-02-11 04:37:46 UTC #. Spiegel is a german magazine #: data/plugins/150-spiegel.plugins.py:34 #: data/plugins/150-spiegel.plugins.py:36 #: data/plugins/150-spiegel.plugins.py:65 #: data/plugins/150-spiegel.plugins.py:86 #: data/plugins/150-spiegel.plugins.py:101 #: data/plugins/150-spiegel.plugins.py:114 #: data/plugins/150-spiegel.plugins.py:131 #: data/plugins/150-spiegel.plugins.py:142 msgid "Spiegel" msgstr "Spiegel" # translated by: Oleg Koptev https://launchpad.net/~koptev-oleg on 2014-02-11 04:35:05 UTC #. Spiegel is a german magazine #: data/plugins/151-spiegel-improved.plugins.py:22 #: data/plugins/151-spiegel-improved.plugins.py:24 #: data/plugins/151-spiegel-improved.plugins.py:69 #: data/plugins/151-spiegel-improved.plugins.py:108 #: data/plugins/151-spiegel-improved.plugins.py:140 #: data/plugins/151-spiegel-improved.plugins.py:166 #: data/plugins/151-spiegel-improved.plugins.py:184 #: data/plugins/151-spiegel-improved.plugins.py:198 msgid "Spiegel improved" msgstr "Улушенный Spiegel" # translated by: Aleksey Kabanov https://launchpad.net/~ak099 on 2013-12-19 09:53:32 UTC #: data/plugins/20-2x2x2.plugins.py:19 data/plugins/20-2x2x2.plugins.py:22 #: data/plugins/20-2x2x2.plugins.py:38 data/plugins/20-2x2x2.plugins.py:56 msgid "2×2×2" msgstr "2×2×2" # translated by: Aleksey Kabanov https://launchpad.net/~ak099 on 2013-12-19 09:53:32 UTC #: data/plugins/20-2x2x2.plugins.py:23 msgid "Top slice" msgstr "Верхний слой" # translated by: Aleksey Kabanov https://launchpad.net/~ak099 on 2013-12-19 09:53:32 UTC #: data/plugins/80-pretty-patterns.plugins.py:20 #: data/plugins/80-pretty-patterns.plugins.py:23 #: data/plugins/80-pretty-patterns.plugins.py:27 #: data/plugins/80-pretty-patterns.plugins.py:31 #: data/plugins/80-pretty-patterns.plugins.py:35 #: data/plugins/80-pretty-patterns.plugins.py:40 #: data/plugins/80-pretty-patterns.plugins.py:44 msgid "Stripes" msgstr "Полоски" # translated by: Oleg Koptev https://launchpad.net/~koptev-oleg on 2014-02-11 04:37:46 UTC #: data/plugins/80-pretty-patterns.plugins.py:49 #: data/plugins/80-pretty-patterns.plugins.py:53 msgid "Criss-Cross" msgstr "Перекресток" # translated by: Oleg Koptev https://launchpad.net/~koptev-oleg on 2014-02-11 04:37:46 UTC #: data/plugins/80-pretty-patterns.plugins.py:57 msgid "Fried Eggs" msgstr "Яичница" # translated by: Oleg Koptev https://launchpad.net/~koptev-oleg on 2014-02-11 04:37:46 UTC #: data/plugins/80-pretty-patterns.plugins.py:61 msgid "Big Fried Eggs" msgstr "Большая яичница" # translated by: Oleg Koptev https://launchpad.net/~koptev-oleg on 2014-02-11 04:37:46 UTC #: data/plugins/80-pretty-patterns.plugins.py:65 #: data/plugins/80-pretty-patterns.plugins.py:69 msgid "4 Fried Eggs" msgstr "4 жареных яйца" #: data/plugins/80-pretty-patterns.plugins.py:73 msgid "2 Fried Eggs" msgstr "" # translated by: Aleksey Kabanov https://launchpad.net/~ak099 on 2013-12-19 09:55:50 UTC #: data/plugins/80-pretty-patterns.plugins.py:77 msgid "Chessboard" msgstr "Шахматная доска" # translated by: Aleksey Kabanov https://launchpad.net/~ak099 on 2013-12-19 09:55:50 UTC #: data/plugins/80-pretty-patterns.plugins.py:83 msgid "Cross" msgstr "Крест" # translated by: Aleksey Kabanov https://launchpad.net/~ak099 on 2013-12-19 09:55:50 UTC #: data/plugins/80-pretty-patterns.plugins.py:87 msgid "Zig Zag" msgstr "Зигзаг" # translated by: Oleg Koptev https://launchpad.net/~koptev-oleg on 2014-02-11 04:37:46 UTC #. T is the shape formed by the cube labels. T-Time is a pun (Tea Time) and not suitable for literal translation. Don't translate it or use something common or whatever you think makes sense. #: data/plugins/80-pretty-patterns.plugins.py:93 #: data/plugins/80-pretty-patterns.plugins.py:96 #: data/plugins/80-pretty-patterns.plugins.py:100 #: data/plugins/80-pretty-patterns.plugins.py:104 #: data/plugins/80-pretty-patterns.plugins.py:108 #: data/plugins/80-pretty-patterns.plugins.py:112 msgid "T-Time" msgstr "T-форма" # translated by: Aleksey Kabanov https://launchpad.net/~ak099 on 2013-12-19 09:55:50 UTC #. C is the shape formed by the cube labels #: data/plugins/80-pretty-patterns.plugins.py:118 msgid "C" msgstr "C" # translated by: Aleksey Kabanov https://launchpad.net/~ak099 on 2013-12-19 09:55:50 UTC #: data/plugins/80-pretty-patterns.plugins.py:121 msgid "Cube in a Cube" msgstr "Куб в кубе" #: data/plugins/80-pretty-patterns.plugins.py:125 msgid "Striped Cube in a Cube" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:129 msgid "Six square cuboids" msgstr "" # translated by: Oleg Koptev https://launchpad.net/~koptev-oleg on 2014-02-11 04:35:05 UTC #. Superflip may be not translated, because it has a special meaning in the mathematical theory behind the Rubik's Cube. #: data/plugins/80-pretty-patterns.plugins.py:135 msgid "Superflip" msgstr "Superflip" #: data/plugins/80-pretty-patterns.plugins.py:138 msgid "Superflip easy" msgstr "" # translated by: Oleg Koptev https://launchpad.net/~koptev-oleg on 2014-02-11 04:35:53 UTC #: data/plugins/80-pretty-patterns.plugins.py:142 msgid "Green Mamba" msgstr "Зеленая мамба" # translated by: Aleksey Kabanov https://launchpad.net/~ak099 on 2013-12-19 09:59:48 UTC #: data/plugins/80-pretty-patterns.plugins.py:146 msgid "Anaconda" msgstr "Анаконда" # translated by: Aleksey Kabanov https://launchpad.net/~ak099 on 2013-12-19 09:59:48 UTC #: data/plugins/80-pretty-patterns.plugins.py:150 msgid "Duck Feet" msgstr "Утиная лапа" # translated by: ☠Jay ZDLin☠ https://launchpad.net/~black-buddha666 on 2015-04-09 08:31:53 UTC #: data/plugins/80-pretty-patterns.plugins.py:154 #: data/plugins/80-pretty-patterns.plugins.py:158 #: data/plugins/80-pretty-patterns.plugins.py:162 #: data/plugins/80-pretty-patterns.plugins.py:166 #: data/plugins/80-pretty-patterns.plugins.py:170 #: data/plugins/80-pretty-patterns.plugins.py:174 #: data/plugins/80-pretty-patterns.plugins.py:178 #: data/plugins/80-pretty-patterns.plugins.py:182 msgid "Plus" msgstr "Плюс" # translated by: ☠Jay ZDLin☠ https://launchpad.net/~black-buddha666 on 2015-04-09 08:31:53 UTC #: data/plugins/80-pretty-patterns.plugins.py:186 #: data/plugins/80-pretty-patterns.plugins.py:191 #: data/plugins/80-pretty-patterns.plugins.py:196 #: data/plugins/80-pretty-patterns.plugins.py:200 msgid "Minus" msgstr "Минус" # translated by: ☠Jay ZDLin☠ https://launchpad.net/~black-buddha666 on 2015-04-09 08:31:53 UTC #: data/plugins/80-pretty-patterns.plugins.py:204 msgid "Volcano" msgstr "Вулкан" # translated by: ☠Jay ZDLin☠ https://launchpad.net/~black-buddha666 on 2015-04-09 08:31:53 UTC #: data/plugins/80-pretty-patterns.plugins.py:208 msgid "Checkerboard (easy)" msgstr "Шахматная доска (простая)" #: data/plugins/80-pretty-patterns.plugins.py:212 msgid "Checkerboard (fast)" msgstr "" # translated by: ☠Jay ZDLin☠ https://launchpad.net/~black-buddha666 on 2015-04-09 08:36:10 UTC #: data/plugins/80-pretty-patterns.plugins.py:216 msgid "Mixed Checkerboard" msgstr "Смешанная шахматная доска" #: data/plugins/80-pretty-patterns.plugins.py:220 msgid "Tipi" msgstr "" # translated by: Aleksey Kabanov https://launchpad.net/~ak099 on 2013-12-19 09:59:48 UTC #: data/plugins/90-library.plugins.py:18 data/plugins/90-library.plugins.py:22 #: data/plugins/90-library.plugins.py:26 data/plugins/90-library.plugins.py:30 #: data/plugins/90-library.plugins.py:34 data/plugins/90-library.plugins.py:38 #: data/plugins/90-library.plugins.py:42 data/plugins/90-library.plugins.py:46 #: data/plugins/90-library.plugins.py:50 data/plugins/90-library.plugins.py:54 #: data/plugins/90-library.plugins.py:58 data/plugins/90-library.plugins.py:62 #: data/plugins/90-library.plugins.py:66 data/plugins/90-library.plugins.py:70 #: data/plugins/90-library.plugins.py:74 data/plugins/90-library.plugins.py:78 #: data/plugins/90-library.plugins.py:82 data/plugins/90-library.plugins.py:86 #: data/plugins/90-library.plugins.py:91 data/plugins/90-library.plugins.py:96 #: data/plugins/90-library.plugins.py:101 #: data/plugins/90-library.plugins.py:105 #: data/plugins/90-library.plugins.py:110 #: data/plugins/90-library.plugins.py:115 #: data/plugins/90-library.plugins.py:119 #: data/plugins/90-library.plugins.py:123 #: data/plugins/90-library.plugins.py:127 msgid "Library" msgstr "Библиотека" #: data/plugins/90-library.plugins.py:19 data/plugins/90-library.plugins.py:23 #: data/plugins/90-library.plugins.py:27 data/plugins/90-library.plugins.py:31 #: data/plugins/90-library.plugins.py:35 msgid "Swap edges" msgstr "" #: data/plugins/90-library.plugins.py:20 msgid "3 edges ⟳, top layer" msgstr "" #: data/plugins/90-library.plugins.py:24 msgid "3 edges ⟲, top layer" msgstr "" #: data/plugins/90-library.plugins.py:28 msgid "3 edges, middle layer" msgstr "" #: data/plugins/90-library.plugins.py:32 msgid "4 edges, front and right" msgstr "" #: data/plugins/90-library.plugins.py:36 msgid "4 edges, front and back" msgstr "" #: data/plugins/90-library.plugins.py:39 msgid "Swap 2 edges and 2 corners, top layer" msgstr "" #: data/plugins/90-library.plugins.py:43 data/plugins/90-library.plugins.py:47 msgid "Flip edges" msgstr "" #: data/plugins/90-library.plugins.py:44 msgid "4 edges" msgstr "" #: data/plugins/90-library.plugins.py:48 msgid "2 edges, top layer" msgstr "" #: data/plugins/90-library.plugins.py:51 data/plugins/90-library.plugins.py:55 #: data/plugins/90-library.plugins.py:59 data/plugins/90-library.plugins.py:63 #: data/plugins/90-library.plugins.py:67 data/plugins/90-library.plugins.py:71 msgid "Swap corners" msgstr "" #: data/plugins/90-library.plugins.py:52 data/plugins/90-library.plugins.py:76 msgid "2 corners, top layer" msgstr "" #: data/plugins/90-library.plugins.py:56 msgid "2 corners diagonal, top layer" msgstr "" #: data/plugins/90-library.plugins.py:60 data/plugins/90-library.plugins.py:80 msgid "3 corners ⟳, top layer" msgstr "" #: data/plugins/90-library.plugins.py:64 msgid "3 corners ⟲, top layer" msgstr "" #: data/plugins/90-library.plugins.py:68 msgid "4 corners, top layer" msgstr "" #: data/plugins/90-library.plugins.py:72 msgid "2 corners, partial sequence, top layer" msgstr "" #: data/plugins/90-library.plugins.py:75 data/plugins/90-library.plugins.py:79 #: data/plugins/90-library.plugins.py:83 data/plugins/90-library.plugins.py:87 msgid "Rotate corners" msgstr "" #: data/plugins/90-library.plugins.py:84 msgid "1 corner ⟳, partial sequence, top layer" msgstr "" #: data/plugins/90-library.plugins.py:88 msgid "1 corner ⟲, partial sequence, top layer" msgstr "" #: data/plugins/90-library.plugins.py:92 data/plugins/90-library.plugins.py:97 #: data/plugins/90-library.plugins.py:102 #: data/plugins/90-library.plugins.py:111 msgid "Rotate center" msgstr "" #. 2 rotations of the center face in the upper layer #: data/plugins/90-library.plugins.py:94 msgid "2×Up" msgstr "" #. Up clockwise and front clockwise #: data/plugins/90-library.plugins.py:99 msgid "Up ⟳ and front ⟳" msgstr "" #. Up clockwise and front counterclockwise #: data/plugins/90-library.plugins.py:104 msgid "Up ⟳ and front ⟲" msgstr "" #: data/plugins/90-library.plugins.py:106 msgid "Swap center parts, up and front" msgstr "" #. Up clockwise and down counterclockwise #: data/plugins/90-library.plugins.py:113 msgid "Up ⟳ and down ⟲" msgstr "" # translated by: Aleksey Kabanov https://launchpad.net/~ak099 on 2013-12-19 10:01:53 UTC #: data/plugins/90-library.plugins.py:116 #: data/plugins/90-library.plugins.py:120 #: data/plugins/90-library.plugins.py:124 #: data/plugins/90-library.plugins.py:128 msgid "Misc" msgstr "Разное" #. Yields in a rotated back layer, but the sequence of moves does not touch the back layer #: data/plugins/90-library.plugins.py:118 #: data/plugins/90-library.plugins.py:125 #: data/plugins/90-library.plugins.py:129 msgid "Back without back" msgstr "" #: data/plugins/90-library.plugins.py:121 msgid "2×Back without back" msgstr "" #: data/plugins/95-transformations.plugins.py:18 #: data/plugins/95-transformations.plugins.py:21 #: data/plugins/95-transformations.plugins.py:24 msgid "Move transformations" msgstr "" #: data/plugins/95-transformations.plugins.py:19 msgid "Invert move sequence" msgstr "" #: data/plugins/95-transformations.plugins.py:22 msgid "Normalize cube rotations" msgstr "" #: data/plugins/95-transformations.plugins.py:25 msgid "Normalize move sequence" msgstr "" # translated by: Aleksey Kabanov https://launchpad.net/~ak099 on 2013-12-19 09:06:05 UTC #: buildlib/modeldef.py:110 msgid "Brick" msgstr "Блок" # translated by: Aleksey Kabanov https://launchpad.net/~ak099 on 2013-12-19 09:06:05 UTC #: buildlib/modeldef.py:111 #, python-brace-format msgid "{0}×{1}×{2}-Brick" msgstr "{0}×{1}×{2}-Блок" # translated by: Aleksey Kabanov https://launchpad.net/~ak099 on 2013-12-19 09:03:01 UTC #: buildlib/modeldef.py:112 msgid "Width:" msgstr "Ширина:" # translated by: Aleksey Kabanov https://launchpad.net/~ak099 on 2013-12-19 09:37:26 UTC #: buildlib/modeldef.py:112 buildlib/modeldef.py:151 buildlib/modeldef.py:249 #: buildlib/modeldef.py:300 buildlib/modeldef.py:311 msgid "Height:" msgstr "Высота:" # translated by: Aleksey Kabanov https://launchpad.net/~ak099 on 2013-12-19 09:37:26 UTC #: buildlib/modeldef.py:112 msgid "Depth:" msgstr "Глубина:" #: buildlib/modeldef.py:120 buildlib/modeldef.py:257 buildlib/modeldef.py:319 #: buildlib/modeldef.py:374 buildlib/modeldef.py:433 msgid "up" msgstr "" #: buildlib/modeldef.py:120 buildlib/modeldef.py:205 buildlib/modeldef.py:257 #: buildlib/modeldef.py:319 buildlib/modeldef.py:373 buildlib/modeldef.py:430 msgid "down" msgstr "" #: buildlib/modeldef.py:120 buildlib/modeldef.py:205 buildlib/modeldef.py:257 msgid "left" msgstr "" # translated by: Aleksey Kabanov https://launchpad.net/~ak099 on 2013-12-19 08:57:50 UTC #: buildlib/modeldef.py:120 buildlib/modeldef.py:205 buildlib/modeldef.py:257 msgid "right" msgstr "" # translated by: Aleksey Kabanov https://launchpad.net/~ak099 on 2013-12-19 08:57:50 UTC #: buildlib/modeldef.py:120 buildlib/modeldef.py:374 msgid "front" msgstr "" #: buildlib/modeldef.py:120 buildlib/modeldef.py:205 buildlib/modeldef.py:257 #: buildlib/modeldef.py:320 buildlib/modeldef.py:373 msgid "back" msgstr "" # translated by: Aleksey Kabanov https://launchpad.net/~ak099 on 2013-12-19 09:06:05 UTC #: buildlib/modeldef.py:149 msgid "Tower" msgstr "Башня" # translated by: Aleksey Kabanov https://launchpad.net/~ak099 on 2013-12-19 09:06:05 UTC #: buildlib/modeldef.py:150 #, python-brace-format msgid "{0}×{1}-Tower" msgstr "{0}×{1}-Башня" # translated by: Aleksey Kabanov https://launchpad.net/~ak099 on 2013-12-19 09:03:01 UTC #: buildlib/modeldef.py:151 buildlib/modeldef.py:249 buildlib/modeldef.py:300 #: buildlib/modeldef.py:311 msgid "Basis:" msgstr "Основание:" # translated by: Aleksey Kabanov https://launchpad.net/~ak099 on 2013-12-19 09:06:05 UTC #: buildlib/modeldef.py:163 msgid "Cube" msgstr "Куб" # translated by: Aleksey Kabanov https://launchpad.net/~ak099 on 2013-12-19 09:06:05 UTC #: buildlib/modeldef.py:164 #, python-brace-format msgid "{0}×{0}×{0}-Cube" msgstr "{0}×{0}×{0}-Куб" # translated by: Aleksey Kabanov https://launchpad.net/~ak099 on 2013-12-19 09:03:01 UTC #: buildlib/modeldef.py:165 buildlib/modeldef.py:197 buildlib/modeldef.py:365 #: buildlib/modeldef.py:422 msgid "Size:" msgstr "Размер:" #: buildlib/modeldef.py:177 buildlib/modeldef.py:178 msgid "Void Cube" msgstr "" #: buildlib/modeldef.py:195 msgid "Tetrahedron" msgstr "" #: buildlib/modeldef.py:196 #, python-brace-format msgid "{0}-Tetrahedron" msgstr "" #: buildlib/modeldef.py:247 msgid "Triangular Prism" msgstr "" #: buildlib/modeldef.py:248 #, python-brace-format msgid "{0}×{1} Triangular Prism" msgstr "" #: buildlib/modeldef.py:298 msgid "Triangular Prism (complex)" msgstr "" #: buildlib/modeldef.py:299 #, python-brace-format msgid "{0}×{1} Triangular Prism (complex)" msgstr "" #: buildlib/modeldef.py:309 msgid "Pentagonal Prism" msgstr "" #: buildlib/modeldef.py:310 #, python-brace-format msgid "{0}×{1} Pentagonal Prism" msgstr "" #: buildlib/modeldef.py:320 buildlib/modeldef.py:373 msgid "front-right" msgstr "" #: buildlib/modeldef.py:320 buildlib/modeldef.py:374 msgid "back-right" msgstr "" #: buildlib/modeldef.py:320 buildlib/modeldef.py:374 msgid "back-left" msgstr "" #: buildlib/modeldef.py:320 buildlib/modeldef.py:373 msgid "front-left" msgstr "" #: buildlib/modeldef.py:354 msgid "Pentagonal Prism (stretched)" msgstr "" #: buildlib/modeldef.py:355 #, python-brace-format msgid "{0}×{1} Pentagonal Prism (stretched)" msgstr "" #: buildlib/modeldef.py:363 msgid "Octahedron" msgstr "" #: buildlib/modeldef.py:364 #, python-brace-format msgid "{0}-Octahedron" msgstr "" #: buildlib/modeldef.py:420 msgid "Dodecahedron" msgstr "" #: buildlib/modeldef.py:421 #, python-brace-format msgid "{0}-Dodecahedron" msgstr "" #: buildlib/modeldef.py:430 msgid "down-back-right" msgstr "" #: buildlib/modeldef.py:430 msgid "down-front-right" msgstr "" #: buildlib/modeldef.py:431 msgid "down-front" msgstr "" #: buildlib/modeldef.py:431 msgid "down-front-left" msgstr "" #: buildlib/modeldef.py:431 msgid "down-back-left" msgstr "" #: buildlib/modeldef.py:432 msgid "up-back" msgstr "" #: buildlib/modeldef.py:432 msgid "up-back-right" msgstr "" #: buildlib/modeldef.py:432 msgid "up-front-right" msgstr "" #: buildlib/modeldef.py:433 msgid "up-front-left" msgstr "" #: buildlib/modeldef.py:433 msgid "up-back-left" msgstr "" pybik-3.0/po/bg.po0000644000175000017500000013045313173052130014207 0ustar barccbarcc00000000000000# Bulgarian translation for pybik # Copyright (c) 2014-2017 Rosetta Contributors and Canonical Ltd 2014 # This file is distributed under the same license as the pybik package. # FIRST AUTHOR , 2014. # msgid "" msgstr "" "Project-Id-Version: pybik\n" "Report-Msgid-Bugs-To: https://bugs.launchpad.net/pybik/+filebug\n" "POT-Creation-Date: 2017-09-10 21:58+0200\n" "PO-Revision-Date: 2017-09-17 05:54+0000\n" "Last-Translator: B. Clausius \n" "Language-Team: Bulgarian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Launchpad-Export-Date: 2017-09-18 05:31+0000\n" "X-Generator: Launchpad (build 18449)\n" "Language: bg\n" # translated by: Atanas Kovachki https://launchpad.net/~zdar on 2014-02-06 09:39:35 UTC #: pybiklib/application.py:294 msgid "Press the Esc key to exit Edit Mode" msgstr "Натиснете клавиша Esc, за да излезете от режима за редактиране" # translated by: Atanas Kovachki https://launchpad.net/~zdar on 2014-02-06 09:23:35 UTC #. substitution for {move_text} in statusbar text #: pybiklib/application.py:302 #, python-brace-format msgid "{current} / {total} move" msgid_plural "{current} / {total} moves" msgstr[0] "{current} / {total} ход" msgstr[1] "{current} / {total} хода" # translated by: Atanas Kovachki https://launchpad.net/~zdar on 2014-02-06 09:23:35 UTC #. substitution for {solved_text} in statusbar text #: pybiklib/application.py:306 msgid "solved" msgstr "решено" # translated by: Atanas Kovachki https://launchpad.net/~zdar on 2014-02-06 09:23:35 UTC #: pybiklib/application.py:306 msgid "not solved" msgstr "не e решено" # translated by: Atanas Kovachki https://launchpad.net/~zdar on 2014-02-06 09:23:35 UTC #. statusbar text #: pybiklib/application.py:309 #, python-brace-format msgid "{move_text}, {solved_text}" msgstr "{move_text}, {solved_text}" # translated by: Atanas Kovachki https://launchpad.net/~zdar on 2014-02-06 09:23:35 UTC #: pybiklib/application.py:314 msgid "Congratulations, you have solved the puzzle!" msgstr "Поздравления, вие решихте пъзела!" # translated by: Atanas Kovachki https://launchpad.net/~zdar on 2014-02-06 09:23:35 UTC #. Name of the application, probably should not be translated. #: pybiklib/config.py:35 data/ui/qt/main.ui.h:271 #: data/app-meta/pybik.desktop.in:3 msgid "Pybik" msgstr "Рубик" #. short description #: pybiklib/config.py:65 data/app-meta/pybik.desktop.in:4 msgid "Rubik's cube game" msgstr "" #. The next 7 lines belong together and form the long description #: pybiklib/config.py:68 msgid "Pybik is a 3D puzzle game about the cube invented by Ernő Rubik." msgstr "" #: pybiklib/config.py:70 msgid "" "Various 3D puzzles, such as cubes, towers, prisms, tetrahedra, octahedra, " "dodecahedra and many more" msgstr "" #: pybiklib/config.py:71 msgid "Solvers for some puzzles" msgstr "" # translated by: Atanas Kovachki https://launchpad.net/~zdar on 2014-02-06 13:55:51 UTC #. Use something that is common in the Rubik scene in your language, sometimes it's just the equivalent of "patterns". #: pybiklib/config.py:72 data/plugins/80-pretty-patterns.plugins.py:19 #: data/plugins/80-pretty-patterns.plugins.py:22 #: data/plugins/80-pretty-patterns.plugins.py:26 #: data/plugins/80-pretty-patterns.plugins.py:30 #: data/plugins/80-pretty-patterns.plugins.py:34 #: data/plugins/80-pretty-patterns.plugins.py:39 #: data/plugins/80-pretty-patterns.plugins.py:43 #: data/plugins/80-pretty-patterns.plugins.py:48 #: data/plugins/80-pretty-patterns.plugins.py:52 #: data/plugins/80-pretty-patterns.plugins.py:56 #: data/plugins/80-pretty-patterns.plugins.py:60 #: data/plugins/80-pretty-patterns.plugins.py:64 #: data/plugins/80-pretty-patterns.plugins.py:68 #: data/plugins/80-pretty-patterns.plugins.py:72 #: data/plugins/80-pretty-patterns.plugins.py:76 #: data/plugins/80-pretty-patterns.plugins.py:82 #: data/plugins/80-pretty-patterns.plugins.py:86 #: data/plugins/80-pretty-patterns.plugins.py:91 #: data/plugins/80-pretty-patterns.plugins.py:95 #: data/plugins/80-pretty-patterns.plugins.py:99 #: data/plugins/80-pretty-patterns.plugins.py:103 #: data/plugins/80-pretty-patterns.plugins.py:107 #: data/plugins/80-pretty-patterns.plugins.py:111 #: data/plugins/80-pretty-patterns.plugins.py:116 #: data/plugins/80-pretty-patterns.plugins.py:120 #: data/plugins/80-pretty-patterns.plugins.py:124 #: data/plugins/80-pretty-patterns.plugins.py:128 #: data/plugins/80-pretty-patterns.plugins.py:133 #: data/plugins/80-pretty-patterns.plugins.py:137 #: data/plugins/80-pretty-patterns.plugins.py:141 #: data/plugins/80-pretty-patterns.plugins.py:145 #: data/plugins/80-pretty-patterns.plugins.py:149 #: data/plugins/80-pretty-patterns.plugins.py:153 #: data/plugins/80-pretty-patterns.plugins.py:157 #: data/plugins/80-pretty-patterns.plugins.py:161 #: data/plugins/80-pretty-patterns.plugins.py:165 #: data/plugins/80-pretty-patterns.plugins.py:169 #: data/plugins/80-pretty-patterns.plugins.py:173 #: data/plugins/80-pretty-patterns.plugins.py:177 #: data/plugins/80-pretty-patterns.plugins.py:181 #: data/plugins/80-pretty-patterns.plugins.py:185 #: data/plugins/80-pretty-patterns.plugins.py:190 #: data/plugins/80-pretty-patterns.plugins.py:195 #: data/plugins/80-pretty-patterns.plugins.py:199 #: data/plugins/80-pretty-patterns.plugins.py:203 #: data/plugins/80-pretty-patterns.plugins.py:207 #: data/plugins/80-pretty-patterns.plugins.py:211 #: data/plugins/80-pretty-patterns.plugins.py:215 #: data/plugins/80-pretty-patterns.plugins.py:219 msgid "Pretty patterns" msgstr "Красиви модели" #: pybiklib/config.py:73 msgid "Editor for move sequences" msgstr "" #: pybiklib/config.py:74 msgid "Custom colors and images on the surface of the puzzles" msgstr "" # translated by: Atanas Kovachki https://launchpad.net/~zdar on 2014-02-06 09:23:35 UTC #: pybiklib/config.py:78 msgid "" "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.\n" "\n" "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." msgstr "" "Това е свободна програма; можете да я разпространявате и/или променяте при " "условията на Общото Право за Обществено Ползване ГНУ публикувано от " "Фондацията за свободни програми; или версия 3 или (по Ваш избор) коя да е по " "късна версия.\n" "\n" "Тази програма се разпространява с надеждата , че ще бъде полезна но БЕЗ " "КАКВАТО И ДА Е ГАРАНЦИЯ ЗА ТОВА, дори без косвена гаранция за ПРИГОДНОСТ ЗА " "ОПРЕДЕЛЕНА ЦЕЛ. Виж условията на Общото Право за Обществено Ползване ГНУ за " "повече подробности." # translated by: Atanas Kovachki https://launchpad.net/~zdar on 2014-02-06 09:56:51 UTC #. Text between "<" and ">" is expanded to a link by the program and should not be modified. #. Text between "" and "<|>" is the translatable text for the link. #: pybiklib/config.py:90 msgid "" "Read the full text of the GNU General Public " "License<|> or see ." msgstr "" "Прочетете пълния текст на Общото Право на " "Обществено Ползване ГНУ<|>, или посетете уеб сайта " "." # translated by: Atanas Kovachki https://launchpad.net/~zdar on 2014-02-06 09:56:51 UTC #: pybiklib/config.py:93 msgid "" "You should have received a copy of the GNU General Public License along with " "this program. If not, see ." msgstr "" "Би трябвало да сте получили препис от Общото Право за Обществено Ползване " "ГНУ заедно с тази програма. Ако не сте обърнете се към " "." # translated by: Atanas Kovachki https://launchpad.net/~zdar on 2014-02-06 09:56:51 UTC #: pybiklib/config.py:98 #, python-brace-format msgid "" "If you find any bugs in Pybik or have a suggestion for an improvement then " "please submit a <{CONTACT_FILEBUG}|>bug report<|>." msgstr "" "Ако намерите грешка в Рубик или имате предложение за подобряване на " "програмата, моля изпратете <{CONTACT_FILEBUG}|>доклад за грешка<|>." # translated by: Atanas Kovachki https://launchpad.net/~zdar on 2014-02-06 09:56:51 UTC #: pybiklib/config.py:103 msgid "" "Translations are managed by the " "Launchpad " "translation group<|>.\n" "\n" "If you want help to translate Pybik to your language you can do it through " "the web interface<|>.\n" "\n" "Read more about \"Translating with " "Launchpad\"<|> and " "\"Starting to " "translate\"<|>." msgstr "" "Превода на програмата се провежда от " "групата " "за превод в Launchpad<|>.\n" "\n" "Ако искате да помогнете при превеждането на Рубик на други езици, можете да " "го направите чрез уеб " "интерфейса<|>.\n" "\n" "Узнайте повече в разделите за помощ " "«Translating with Launchpad»<|> и " "«Starting to " "translate»<|>." #: pybiklib/dialogs.py:44 msgid "Lighting" msgstr "Осветление" #: pybiklib/dialogs.py:44 msgid "Simple" msgstr "" #. labels are the colored stickers on the cube #: pybiklib/dialogs.py:46 msgid "Labels" msgstr "" #: pybiklib/dialogs.py:104 data/ui/qt/main.ui.h:275 msgid "Select Puzzle" msgstr "" # translated by: Atanas Kovachki https://launchpad.net/~zdar on 2014-02-06 13:55:51 UTC #. 1 slice, 2 slices, 3 slices, ... #: pybiklib/dialogs.py:134 pybiklib/dialogs.py:154 pybiklib/dialogs.py:180 #: pybiklib/dialogs.py:201 msgid "{} slice" msgid_plural "{} slices" msgstr[0] "" msgstr[1] "" #: pybiklib/dialogs.py:196 pybiklib/dialogs.py:225 msgid "{}×{} slices" msgstr "" #. The next strings form the text in the help dialog: #. Title of the 1st paragraph #: pybiklib/dialogs.py:290 msgid "Using the mouse to rotate the cube" msgstr "" #. Text of the 1st paragraph, followed by bullet list items #: pybiklib/dialogs.py:292 msgid "" "Position the mouse cursor over the puzzle and you will see an arrow that " "gives you a hint in which direction the slice under the mouse cursor will be " "rotated." msgstr "" #: pybiklib/dialogs.py:294 msgid "" "The left mouse button rotates a single slice of the cube in the direction of " "the arrow." msgstr "" #: pybiklib/dialogs.py:295 msgid "" "The right mouse button rotates a single slice of the cube against the " "direction of the arrow." msgstr "" #: pybiklib/dialogs.py:296 msgid "" "To rotate the whole cube instead of a single slice press the Ctrl key " "together with the mouse button." msgstr "" #. Title of the 2nd paragraph #: pybiklib/dialogs.py:298 msgid "Using the keyboard to rotate the cube" msgstr "" #. Text of the 2nd paragraph, followed by bullet list items #: pybiklib/dialogs.py:300 msgid "" "Make sure the keyboard focus is on the cube area (e.g. click on the " "background of the cube). The keys can be configured in the preferences " "dialog, the default is:" msgstr "" #. before the item text is a list of keys #: pybiklib/dialogs.py:303 pybiklib/dialogs.py:318 msgid "Moves the left, right, upper, down, front or back slice clockwise." msgstr "" #: pybiklib/dialogs.py:304 pybiklib/dialogs.py:319 msgid "Moves a slice couterclockwise." msgstr "" #: pybiklib/dialogs.py:305 pybiklib/dialogs.py:320 msgid "Moves the whole cube." msgstr "" #. Title of the 3rd paragraph #: pybiklib/dialogs.py:307 msgid "Other keys and buttons" msgstr "" #. bullet list items of the 3rd paragraph #: pybiklib/dialogs.py:309 msgid "Mouse wheel – Zoom in/out" msgstr "" #: pybiklib/dialogs.py:310 msgid "" "Arrow keys, Left mouse button on the background – Changes the direction of " "looking at the cube." msgstr "" #: pybiklib/dialogs.py:311 msgid "" "Moves keyboard focus to the sequence editor above the cube area where you " "can edit the move sequence in the notation described below. Hit enter when " "done." msgstr "" #. Title of the 4th paragraph #: pybiklib/dialogs.py:315 msgid "Notation for moves" msgstr "" #. Text of the 4th paragraph, followed by bullet list items #: pybiklib/dialogs.py:317 msgid "" "All moves, however they are made, are displayed progressively above the cube " "area:" msgstr "" #: pybiklib/dialogs.py:321 msgid "" "Moves the first, second or third slice from left clockwise. The allowed " "numbers are in the range from 1 to the count of parallel slices. \"l1\" is " "always the same as \"l\" and for the classic 3×3×3-Cube \"l2\" is the same " "as \"r2-\" and \"l3\" is the same as \"r-\"." msgstr "" #: pybiklib/dialogs.py:325 msgid "You can use a space to separate groups of moves." msgstr "" # translated by: Atanas Kovachki https://launchpad.net/~zdar on 2014-02-06 10:08:33 UTC #: pybiklib/dialogs.py:379 msgid "Pybik project website" msgstr "Уеб сайт на проекта Рубик" #: pybiklib/pluginlib.py:301 msgid "This plugin does not work for any model." msgstr "" #: pybiklib/pluginlib.py:303 pybiklib/pluginlib.py:306 msgid "This plugin only works for:" msgstr "" #: pybiklib/pluginlib.py:498 msgid "This puzzle is not solvable." msgstr "" # translated by: Atanas Kovachki https://launchpad.net/~zdar on 2014-02-06 10:17:26 UTC #. The following 6 words are for the antialiasing levels: disabled, ugly, low, medium, high, higher #: pybiklib/schema.py:211 msgid "disabled" msgstr "деактивирано" # translated by: Atanas Kovachki https://launchpad.net/~zdar on 2014-02-06 10:17:26 UTC #: pybiklib/schema.py:211 msgid "ugly" msgstr "ужасно" # translated by: Atanas Kovachki https://launchpad.net/~zdar on 2014-02-06 10:17:26 UTC #: pybiklib/schema.py:211 msgid "low" msgstr "ниско" # translated by: Atanas Kovachki https://launchpad.net/~zdar on 2014-02-06 10:17:26 UTC #: pybiklib/schema.py:212 msgid "medium" msgstr "средно" # translated by: Atanas Kovachki https://launchpad.net/~zdar on 2014-02-06 10:17:26 UTC #: pybiklib/schema.py:212 msgid "high" msgstr "високо" # translated by: Atanas Kovachki https://launchpad.net/~zdar on 2014-02-06 10:17:26 UTC #: pybiklib/schema.py:212 msgid "higher" msgstr "максимално" #: data/ui/qt/about.ui.h:212 msgid "About Pybik" msgstr "Относно Рубик" #: data/ui/qt/about.ui.h:213 msgid "Translators:" msgstr "Преводачи:" #: data/ui/qt/about.ui.h:214 msgid "About" msgstr "Относно" #: data/ui/qt/about.ui.h:215 msgid "Contribute" msgstr "" #: data/ui/qt/about.ui.h:216 msgid "License" msgstr "Лиценз" #: data/ui/qt/help.ui.h:53 data/ui/qt/main.ui.h:297 msgid "Help" msgstr "" # translated by: Atanas Kovachki https://launchpad.net/~zdar on 2014-02-06 13:43:03 UTC #: data/ui/qt/main.ui.h:272 msgid "&New Challenge" msgstr "" #: data/ui/qt/main.ui.h:273 msgid "Ne&w Solved" msgstr "Н&ова решена" #: data/ui/qt/main.ui.h:274 msgid "&Quit" msgstr "&Изход" #: data/ui/qt/main.ui.h:276 msgid "&Set as Initial State" msgstr "&Задай за начално състояние" #: data/ui/qt/main.ui.h:277 msgid "&Reset Rotation" msgstr "&Възстанови ротациите" #: data/ui/qt/main.ui.h:278 msgid "&Preferences …" msgstr "&Настройки…" #: data/ui/qt/main.ui.h:279 msgid "&Status Bar" msgstr "&Лента за състоянието" #: data/ui/qt/main.ui.h:280 msgid "&Info …" msgstr "&Информация …" #: data/ui/qt/main.ui.h:281 msgid "Rewind" msgstr "Превърти назад" #: data/ui/qt/main.ui.h:282 msgid "Previous" msgstr "Предишен" #: data/ui/qt/main.ui.h:283 msgid "Stop" msgstr "Спри" #: data/ui/qt/main.ui.h:284 msgid "Play" msgstr "Старт" #: data/ui/qt/main.ui.h:285 msgid "Next" msgstr "Следващ" #: data/ui/qt/main.ui.h:286 msgid "Forward" msgstr "Превърти напред" #: data/ui/qt/main.ui.h:287 msgid "Add Mark" msgstr "Добави отметката" #: data/ui/qt/main.ui.h:289 msgid "Mark the current place in the sequence of moves" msgstr "Маркирай сегашното място в последователността на ходовете" #: data/ui/qt/main.ui.h:291 msgid "Remove Mark" msgstr "Изтрий отметката" #: data/ui/qt/main.ui.h:293 msgid "Remove the mark at the current place in the sequence of moves" msgstr "Изтрий отметката от сегашното място в последователността на ходовете" #: data/ui/qt/main.ui.h:295 msgid "&Edit Bar" msgstr "&Редакционен панел" #: data/ui/qt/main.ui.h:296 msgid "&Help …" msgstr "" #: data/ui/qt/preferences.ui.h:372 msgid "Preferences" msgstr "Предпочитания" #: data/ui/qt/preferences.ui.h:373 msgid "Animation Speed:" msgstr "Скорост на анимацията:" #: data/ui/qt/preferences.ui.h:375 msgid "Mirror Distance:" msgstr "Разстояние на огледалото:" #: data/ui/qt/preferences.ui.h:377 msgid "Quality:" msgstr "" #: data/ui/qt/preferences.ui.h:380 msgid "" "Lower antialiasing has better performance, higher antialiasing has better " "quality." msgstr "" #: data/ui/qt/preferences.ui.h:382 msgid "Antialiasing:" msgstr "" # translated by: Atanas Kovachki https://launchpad.net/~zdar on 2014-02-06 09:56:51 UTC #: data/ui/qt/preferences.ui.h:384 msgid "The program needs to be restarted for the changes to take effect." msgstr "" "Програмата трябва да бъде рестартирана, за да влязат промените в сила." #: data/ui/qt/preferences.ui.h:385 msgid "Graphic" msgstr "Графика" #: data/ui/qt/preferences.ui.h:386 msgid "Point and click, all directions" msgstr "" #: data/ui/qt/preferences.ui.h:387 msgid "Point and click, simplified" msgstr "" #: data/ui/qt/preferences.ui.h:388 msgid "Gestures" msgstr "" #: data/ui/qt/preferences.ui.h:389 msgid "Mouse" msgstr "Мишка" #: data/ui/qt/preferences.ui.h:391 data/ui/qt/preferences.ui.h:393 msgid "Add" msgstr "Добави" #: data/ui/qt/preferences.ui.h:395 data/ui/qt/preferences.ui.h:397 msgid "Remove" msgstr "Премахни" #: data/ui/qt/preferences.ui.h:399 data/ui/qt/preferences.ui.h:401 msgid "Reset" msgstr "Възстанови" #: data/ui/qt/preferences.ui.h:402 msgid "Keys" msgstr "Клавиши" #: data/ui/qt/preferences.ui.h:403 msgid "Color:" msgstr "Цвят:" #: data/ui/qt/preferences.ui.h:405 msgid "Image File:" msgstr "Изображение:" #: data/ui/qt/preferences.ui.h:407 msgid "Tiled" msgstr "Теракот" #: data/ui/qt/preferences.ui.h:408 msgid "Mosaic" msgstr "Мозайка" #: data/ui/qt/preferences.ui.h:409 msgid "Background:" msgstr "Фон:" #: data/ui/qt/preferences.ui.h:411 msgid "Appearance" msgstr "Външен вид" # translated by: Atanas Kovachki https://launchpad.net/~zdar on 2014-02-06 13:18:56 UTC #: pybiklib/ext/qt.py:1578 msgid "Move" msgstr "Придвижване" # translated by: Atanas Kovachki https://launchpad.net/~zdar on 2014-02-06 10:06:08 UTC #: pybiklib/ext/qt.py:1581 msgid "Key" msgstr "Клавиш" # translated by: Atanas Kovachki https://launchpad.net/~zdar on 2014-02-06 10:06:08 UTC #: pybiklib/ext/qt.py:1682 msgid "Open Image" msgstr "Отвори изображение" # translated by: Atanas Kovachki https://launchpad.net/~zdar on 2014-02-07 09:44:10 UTC #: pybiklib/ext/qt.py:1720 msgid "plain" msgstr "обикновено" # translated by: Atanas Kovachki https://launchpad.net/~zdar on 2014-02-06 09:56:51 UTC #: pybiklib/ext/qt.py:1723 msgid "select …" msgstr "избери ..." # translated by: Atanas Kovachki https://launchpad.net/~zdar on 2014-02-06 09:56:51 UTC #: pybiklib/ext/qtui.py:94 msgid "Press a key …" msgstr "Натиснете клавиша..." # translated by: Atanas Kovachki https://launchpad.net/~zdar on 2014-02-06 13:43:03 UTC #. Add whatever keywords you want in your language, separated by semicolons, last character must be a semicolon. These keywords are used when searching for applications in Unity, GNOME Shell, etc. #: data/app-meta/pybik.desktop.in:10 msgid "rubik;cube;puzzle;magic;" msgstr "Рубик;куб;пъзел;магия;" # translated by: Atanas Kovachki https://launchpad.net/~zdar on 2014-02-06 13:43:03 UTC #: data/plugins/01-challenges.plugins.py:18 #: data/plugins/01-challenges.plugins.py:21 #: data/plugins/01-challenges.plugins.py:24 #: data/plugins/01-challenges.plugins.py:27 #: data/plugins/01-challenges.plugins.py:30 #: data/plugins/01-challenges.plugins.py:33 #: data/plugins/01-challenges.plugins.py:36 #: data/plugins/01-challenges.plugins.py:39 #: data/plugins/01-challenges.plugins.py:42 #: data/plugins/01-challenges.plugins.py:45 #: data/plugins/01-challenges.plugins.py:48 msgid "Challenges" msgstr "Предизвикателства" #: data/plugins/01-challenges.plugins.py:19 msgid "Solve random puzzle" msgstr "" #: data/plugins/01-challenges.plugins.py:22 #: data/plugins/01-challenges.plugins.py:25 #: data/plugins/01-challenges.plugins.py:28 #: data/plugins/01-challenges.plugins.py:31 #: data/plugins/01-challenges.plugins.py:34 #: data/plugins/01-challenges.plugins.py:37 #: data/plugins/01-challenges.plugins.py:40 #: data/plugins/01-challenges.plugins.py:43 #: data/plugins/01-challenges.plugins.py:46 #: data/plugins/01-challenges.plugins.py:49 msgid "Solve in {} move" msgid_plural "Solve in {} moves" msgstr[0] "" msgstr[1] "" # translated by: Atanas Kovachki https://launchpad.net/~zdar on 2014-02-06 13:50:09 UTC #: data/plugins/10-beginners.plugins.py:31 #: data/plugins/10-beginners.plugins.py:34 #: data/plugins/10-beginners.plugins.py:56 #: data/plugins/10-beginners.plugins.py:73 #: data/plugins/10-beginners.plugins.py:100 #: data/plugins/10-beginners.plugins.py:118 #: data/plugins/10-beginners.plugins.py:140 #: data/plugins/10-beginners.plugins.py:158 #: data/plugins/14-leyan-lo.plugins.py:21 #: data/plugins/14-leyan-lo.plugins.py:24 #: data/plugins/14-leyan-lo.plugins.py:53 #: data/plugins/14-leyan-lo.plugins.py:74 #: data/plugins/14-leyan-lo.plugins.py:90 #: data/plugins/14-leyan-lo.plugins.py:107 #: data/plugins/14-leyan-lo.plugins.py:129 #: data/plugins/14-leyan-lo.plugins.py:170 #: data/plugins/150-spiegel.plugins.py:32 #: data/plugins/150-spiegel.plugins.py:35 #: data/plugins/150-spiegel.plugins.py:64 #: data/plugins/150-spiegel.plugins.py:85 #: data/plugins/150-spiegel.plugins.py:100 #: data/plugins/150-spiegel.plugins.py:113 #: data/plugins/150-spiegel.plugins.py:130 #: data/plugins/150-spiegel.plugins.py:141 #: data/plugins/151-spiegel-improved.plugins.py:20 #: data/plugins/151-spiegel-improved.plugins.py:23 #: data/plugins/151-spiegel-improved.plugins.py:68 #: data/plugins/151-spiegel-improved.plugins.py:107 #: data/plugins/151-spiegel-improved.plugins.py:139 #: data/plugins/151-spiegel-improved.plugins.py:165 #: data/plugins/151-spiegel-improved.plugins.py:183 #: data/plugins/151-spiegel-improved.plugins.py:197 #: data/plugins/20-2x2x2.plugins.py:18 data/plugins/20-2x2x2.plugins.py:21 #: data/plugins/20-2x2x2.plugins.py:37 data/plugins/20-2x2x2.plugins.py:55 msgid "Solvers" msgstr "Решители" #: data/plugins/10-beginners.plugins.py:32 #: data/plugins/10-beginners.plugins.py:35 #: data/plugins/10-beginners.plugins.py:57 #: data/plugins/10-beginners.plugins.py:74 #: data/plugins/10-beginners.plugins.py:101 #: data/plugins/10-beginners.plugins.py:119 #: data/plugins/10-beginners.plugins.py:141 #: data/plugins/10-beginners.plugins.py:159 msgid "Beginner's method" msgstr "" # translated by: Atanas Kovachki https://launchpad.net/~zdar on 2014-02-06 13:50:09 UTC #: data/plugins/10-beginners.plugins.py:36 #: data/plugins/14-leyan-lo.plugins.py:26 #: data/plugins/150-spiegel.plugins.py:37 #: data/plugins/151-spiegel-improved.plugins.py:25 msgid "Top edges" msgstr "Топ ръбове" # translated by: Atanas Kovachki https://launchpad.net/~zdar on 2014-02-06 13:50:09 UTC #: data/plugins/10-beginners.plugins.py:58 #: data/plugins/14-leyan-lo.plugins.py:55 #: data/plugins/150-spiegel.plugins.py:66 #: data/plugins/151-spiegel-improved.plugins.py:70 msgid "Top corners" msgstr "Топ ъгли" # translated by: Atanas Kovachki https://launchpad.net/~zdar on 2014-02-06 13:50:09 UTC #: data/plugins/10-beginners.plugins.py:75 #: data/plugins/14-leyan-lo.plugins.py:76 #: data/plugins/150-spiegel.plugins.py:87 #: data/plugins/151-spiegel-improved.plugins.py:109 msgid "Middle slice" msgstr "Среден слой" # translated by: Atanas Kovachki https://launchpad.net/~zdar on 2014-02-06 13:55:51 UTC #: data/plugins/10-beginners.plugins.py:102 #: data/plugins/14-leyan-lo.plugins.py:92 #: data/plugins/150-spiegel.plugins.py:115 #: data/plugins/151-spiegel-improved.plugins.py:167 msgid "Bottom edge orient" msgstr "Долен ръбов ориентир" # translated by: Atanas Kovachki https://launchpad.net/~zdar on 2014-02-06 13:55:51 UTC #: data/plugins/10-beginners.plugins.py:120 #: data/plugins/14-leyan-lo.plugins.py:131 #: data/plugins/150-spiegel.plugins.py:143 #: data/plugins/151-spiegel-improved.plugins.py:199 #: data/plugins/20-2x2x2.plugins.py:57 msgid "Bottom corner orient" msgstr "Долен ъглов ориентир" # translated by: Atanas Kovachki https://launchpad.net/~zdar on 2014-02-06 13:55:51 UTC #: data/plugins/10-beginners.plugins.py:142 #: data/plugins/14-leyan-lo.plugins.py:109 #: data/plugins/150-spiegel.plugins.py:132 #: data/plugins/151-spiegel-improved.plugins.py:185 #: data/plugins/20-2x2x2.plugins.py:39 msgid "Bottom corner place" msgstr "Долно ъглово място" # translated by: Atanas Kovachki https://launchpad.net/~zdar on 2014-02-06 13:50:09 UTC #: data/plugins/10-beginners.plugins.py:160 #: data/plugins/14-leyan-lo.plugins.py:172 #: data/plugins/150-spiegel.plugins.py:102 #: data/plugins/151-spiegel-improved.plugins.py:141 msgid "Bottom edge place" msgstr "Долно място на ръба" #. Leyan Lo is the inventor of the solution #: data/plugins/14-leyan-lo.plugins.py:23 #: data/plugins/14-leyan-lo.plugins.py:25 #: data/plugins/14-leyan-lo.plugins.py:54 #: data/plugins/14-leyan-lo.plugins.py:75 #: data/plugins/14-leyan-lo.plugins.py:91 #: data/plugins/14-leyan-lo.plugins.py:108 #: data/plugins/14-leyan-lo.plugins.py:130 #: data/plugins/14-leyan-lo.plugins.py:171 msgid "Leyan Lo" msgstr "" # translated by: Atanas Kovachki https://launchpad.net/~zdar on 2014-02-06 13:50:09 UTC #. Spiegel is a german magazine #: data/plugins/150-spiegel.plugins.py:34 #: data/plugins/150-spiegel.plugins.py:36 #: data/plugins/150-spiegel.plugins.py:65 #: data/plugins/150-spiegel.plugins.py:86 #: data/plugins/150-spiegel.plugins.py:101 #: data/plugins/150-spiegel.plugins.py:114 #: data/plugins/150-spiegel.plugins.py:131 #: data/plugins/150-spiegel.plugins.py:142 msgid "Spiegel" msgstr "Шпигел" # translated by: Atanas Kovachki https://launchpad.net/~zdar on 2014-02-07 09:44:10 UTC #. Spiegel is a german magazine #: data/plugins/151-spiegel-improved.plugins.py:22 #: data/plugins/151-spiegel-improved.plugins.py:24 #: data/plugins/151-spiegel-improved.plugins.py:69 #: data/plugins/151-spiegel-improved.plugins.py:108 #: data/plugins/151-spiegel-improved.plugins.py:140 #: data/plugins/151-spiegel-improved.plugins.py:166 #: data/plugins/151-spiegel-improved.plugins.py:184 #: data/plugins/151-spiegel-improved.plugins.py:198 msgid "Spiegel improved" msgstr "Подобрен шпигел" # translated by: Atanas Kovachki https://launchpad.net/~zdar on 2014-02-06 13:55:51 UTC #: data/plugins/20-2x2x2.plugins.py:19 data/plugins/20-2x2x2.plugins.py:22 #: data/plugins/20-2x2x2.plugins.py:38 data/plugins/20-2x2x2.plugins.py:56 msgid "2×2×2" msgstr "2×2×2" # translated by: Atanas Kovachki https://launchpad.net/~zdar on 2014-02-06 13:55:51 UTC #: data/plugins/20-2x2x2.plugins.py:23 msgid "Top slice" msgstr "Горен слой" # translated by: Atanas Kovachki https://launchpad.net/~zdar on 2014-02-06 13:55:51 UTC #: data/plugins/80-pretty-patterns.plugins.py:20 #: data/plugins/80-pretty-patterns.plugins.py:23 #: data/plugins/80-pretty-patterns.plugins.py:27 #: data/plugins/80-pretty-patterns.plugins.py:31 #: data/plugins/80-pretty-patterns.plugins.py:35 #: data/plugins/80-pretty-patterns.plugins.py:40 #: data/plugins/80-pretty-patterns.plugins.py:44 msgid "Stripes" msgstr "Ивици" # translated by: Atanas Kovachki https://launchpad.net/~zdar on 2014-02-06 13:55:51 UTC #: data/plugins/80-pretty-patterns.plugins.py:49 #: data/plugins/80-pretty-patterns.plugins.py:53 msgid "Criss-Cross" msgstr "Наопаки" # translated by: Atanas Kovachki https://launchpad.net/~zdar on 2014-02-06 14:00:20 UTC #: data/plugins/80-pretty-patterns.plugins.py:57 msgid "Fried Eggs" msgstr "Пържени яйца" # translated by: Atanas Kovachki https://launchpad.net/~zdar on 2014-02-06 14:00:20 UTC #: data/plugins/80-pretty-patterns.plugins.py:61 msgid "Big Fried Eggs" msgstr "Големи пържени яйца" # translated by: Atanas Kovachki https://launchpad.net/~zdar on 2014-02-06 14:00:20 UTC #: data/plugins/80-pretty-patterns.plugins.py:65 #: data/plugins/80-pretty-patterns.plugins.py:69 msgid "4 Fried Eggs" msgstr "4 пържени яйца" #: data/plugins/80-pretty-patterns.plugins.py:73 msgid "2 Fried Eggs" msgstr "" # translated by: Atanas Kovachki https://launchpad.net/~zdar on 2014-02-07 09:44:10 UTC #: data/plugins/80-pretty-patterns.plugins.py:77 msgid "Chessboard" msgstr "Шахматно" # translated by: Atanas Kovachki https://launchpad.net/~zdar on 2014-02-06 14:00:20 UTC #: data/plugins/80-pretty-patterns.plugins.py:83 msgid "Cross" msgstr "Пресечно" # translated by: Atanas Kovachki https://launchpad.net/~zdar on 2014-02-06 14:00:20 UTC #: data/plugins/80-pretty-patterns.plugins.py:87 msgid "Zig Zag" msgstr "Зиг заг" # translated by: Atanas Kovachki https://launchpad.net/~zdar on 2014-02-06 14:00:20 UTC #. T is the shape formed by the cube labels. T-Time is a pun (Tea Time) and not suitable for literal translation. Don't translate it or use something common or whatever you think makes sense. #: data/plugins/80-pretty-patterns.plugins.py:93 #: data/plugins/80-pretty-patterns.plugins.py:96 #: data/plugins/80-pretty-patterns.plugins.py:100 #: data/plugins/80-pretty-patterns.plugins.py:104 #: data/plugins/80-pretty-patterns.plugins.py:108 #: data/plugins/80-pretty-patterns.plugins.py:112 msgid "T-Time" msgstr "Т-време" # translated by: Atanas Kovachki https://launchpad.net/~zdar on 2014-02-06 14:00:20 UTC #. C is the shape formed by the cube labels #: data/plugins/80-pretty-patterns.plugins.py:118 msgid "C" msgstr "С" # translated by: Atanas Kovachki https://launchpad.net/~zdar on 2014-02-06 14:00:20 UTC #: data/plugins/80-pretty-patterns.plugins.py:121 msgid "Cube in a Cube" msgstr "Куб в куба" # translated by: Atanas Kovachki https://launchpad.net/~zdar on 2014-02-06 14:00:20 UTC #: data/plugins/80-pretty-patterns.plugins.py:125 msgid "Striped Cube in a Cube" msgstr "Раиран куб в куба" #: data/plugins/80-pretty-patterns.plugins.py:129 msgid "Six square cuboids" msgstr "" # translated by: Atanas Kovachki https://launchpad.net/~zdar on 2014-02-06 14:03:28 UTC #. Superflip may be not translated, because it has a special meaning in the mathematical theory behind the Rubik's Cube. #: data/plugins/80-pretty-patterns.plugins.py:135 msgid "Superflip" msgstr "Супер флип" # translated by: Atanas Kovachki https://launchpad.net/~zdar on 2014-02-06 14:03:28 UTC #: data/plugins/80-pretty-patterns.plugins.py:138 msgid "Superflip easy" msgstr "Лесен супер флип" # translated by: Atanas Kovachki https://launchpad.net/~zdar on 2014-02-06 14:03:28 UTC #: data/plugins/80-pretty-patterns.plugins.py:142 msgid "Green Mamba" msgstr "Зелена мамба" # translated by: Atanas Kovachki https://launchpad.net/~zdar on 2014-02-06 14:03:28 UTC #: data/plugins/80-pretty-patterns.plugins.py:146 msgid "Anaconda" msgstr "Анаконда" # translated by: Atanas Kovachki https://launchpad.net/~zdar on 2014-02-06 14:03:28 UTC #: data/plugins/80-pretty-patterns.plugins.py:150 msgid "Duck Feet" msgstr "Патешки крачета" #: data/plugins/80-pretty-patterns.plugins.py:154 #: data/plugins/80-pretty-patterns.plugins.py:158 #: data/plugins/80-pretty-patterns.plugins.py:162 #: data/plugins/80-pretty-patterns.plugins.py:166 #: data/plugins/80-pretty-patterns.plugins.py:170 #: data/plugins/80-pretty-patterns.plugins.py:174 #: data/plugins/80-pretty-patterns.plugins.py:178 #: data/plugins/80-pretty-patterns.plugins.py:182 msgid "Plus" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:186 #: data/plugins/80-pretty-patterns.plugins.py:191 #: data/plugins/80-pretty-patterns.plugins.py:196 #: data/plugins/80-pretty-patterns.plugins.py:200 msgid "Minus" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:204 msgid "Volcano" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:208 msgid "Checkerboard (easy)" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:212 msgid "Checkerboard (fast)" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:216 msgid "Mixed Checkerboard" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:220 msgid "Tipi" msgstr "" # translated by: Atanas Kovachki https://launchpad.net/~zdar on 2014-02-06 14:03:28 UTC #: data/plugins/90-library.plugins.py:18 data/plugins/90-library.plugins.py:22 #: data/plugins/90-library.plugins.py:26 data/plugins/90-library.plugins.py:30 #: data/plugins/90-library.plugins.py:34 data/plugins/90-library.plugins.py:38 #: data/plugins/90-library.plugins.py:42 data/plugins/90-library.plugins.py:46 #: data/plugins/90-library.plugins.py:50 data/plugins/90-library.plugins.py:54 #: data/plugins/90-library.plugins.py:58 data/plugins/90-library.plugins.py:62 #: data/plugins/90-library.plugins.py:66 data/plugins/90-library.plugins.py:70 #: data/plugins/90-library.plugins.py:74 data/plugins/90-library.plugins.py:78 #: data/plugins/90-library.plugins.py:82 data/plugins/90-library.plugins.py:86 #: data/plugins/90-library.plugins.py:91 data/plugins/90-library.plugins.py:96 #: data/plugins/90-library.plugins.py:101 #: data/plugins/90-library.plugins.py:105 #: data/plugins/90-library.plugins.py:110 #: data/plugins/90-library.plugins.py:115 #: data/plugins/90-library.plugins.py:119 #: data/plugins/90-library.plugins.py:123 #: data/plugins/90-library.plugins.py:127 msgid "Library" msgstr "Библиотека" #: data/plugins/90-library.plugins.py:19 data/plugins/90-library.plugins.py:23 #: data/plugins/90-library.plugins.py:27 data/plugins/90-library.plugins.py:31 #: data/plugins/90-library.plugins.py:35 msgid "Swap edges" msgstr "" #: data/plugins/90-library.plugins.py:20 msgid "3 edges ⟳, top layer" msgstr "" #: data/plugins/90-library.plugins.py:24 msgid "3 edges ⟲, top layer" msgstr "" #: data/plugins/90-library.plugins.py:28 msgid "3 edges, middle layer" msgstr "" #: data/plugins/90-library.plugins.py:32 msgid "4 edges, front and right" msgstr "" #: data/plugins/90-library.plugins.py:36 msgid "4 edges, front and back" msgstr "" #: data/plugins/90-library.plugins.py:39 msgid "Swap 2 edges and 2 corners, top layer" msgstr "" #: data/plugins/90-library.plugins.py:43 data/plugins/90-library.plugins.py:47 msgid "Flip edges" msgstr "" #: data/plugins/90-library.plugins.py:44 msgid "4 edges" msgstr "" #: data/plugins/90-library.plugins.py:48 msgid "2 edges, top layer" msgstr "" #: data/plugins/90-library.plugins.py:51 data/plugins/90-library.plugins.py:55 #: data/plugins/90-library.plugins.py:59 data/plugins/90-library.plugins.py:63 #: data/plugins/90-library.plugins.py:67 data/plugins/90-library.plugins.py:71 msgid "Swap corners" msgstr "" #: data/plugins/90-library.plugins.py:52 data/plugins/90-library.plugins.py:76 msgid "2 corners, top layer" msgstr "" #: data/plugins/90-library.plugins.py:56 msgid "2 corners diagonal, top layer" msgstr "" #: data/plugins/90-library.plugins.py:60 data/plugins/90-library.plugins.py:80 msgid "3 corners ⟳, top layer" msgstr "" #: data/plugins/90-library.plugins.py:64 msgid "3 corners ⟲, top layer" msgstr "" #: data/plugins/90-library.plugins.py:68 msgid "4 corners, top layer" msgstr "" #: data/plugins/90-library.plugins.py:72 msgid "2 corners, partial sequence, top layer" msgstr "" #: data/plugins/90-library.plugins.py:75 data/plugins/90-library.plugins.py:79 #: data/plugins/90-library.plugins.py:83 data/plugins/90-library.plugins.py:87 msgid "Rotate corners" msgstr "" #: data/plugins/90-library.plugins.py:84 msgid "1 corner ⟳, partial sequence, top layer" msgstr "" #: data/plugins/90-library.plugins.py:88 msgid "1 corner ⟲, partial sequence, top layer" msgstr "" #: data/plugins/90-library.plugins.py:92 data/plugins/90-library.plugins.py:97 #: data/plugins/90-library.plugins.py:102 #: data/plugins/90-library.plugins.py:111 msgid "Rotate center" msgstr "" # translated by: Atanas Kovachki https://launchpad.net/~zdar on 2014-02-06 14:08:26 UTC #. 2 rotations of the center face in the upper layer #: data/plugins/90-library.plugins.py:94 msgid "2×Up" msgstr "2×нагоре" #. Up clockwise and front clockwise #: data/plugins/90-library.plugins.py:99 msgid "Up ⟳ and front ⟳" msgstr "" #. Up clockwise and front counterclockwise #: data/plugins/90-library.plugins.py:104 msgid "Up ⟳ and front ⟲" msgstr "" #: data/plugins/90-library.plugins.py:106 msgid "Swap center parts, up and front" msgstr "" #. Up clockwise and down counterclockwise #: data/plugins/90-library.plugins.py:113 msgid "Up ⟳ and down ⟲" msgstr "" # translated by: Atanas Kovachki https://launchpad.net/~zdar on 2014-02-06 14:08:26 UTC #: data/plugins/90-library.plugins.py:116 #: data/plugins/90-library.plugins.py:120 #: data/plugins/90-library.plugins.py:124 #: data/plugins/90-library.plugins.py:128 msgid "Misc" msgstr "Разно" #. Yields in a rotated back layer, but the sequence of moves does not touch the back layer #: data/plugins/90-library.plugins.py:118 #: data/plugins/90-library.plugins.py:125 #: data/plugins/90-library.plugins.py:129 msgid "Back without back" msgstr "" #: data/plugins/90-library.plugins.py:121 msgid "2×Back without back" msgstr "" #: data/plugins/95-transformations.plugins.py:18 #: data/plugins/95-transformations.plugins.py:21 #: data/plugins/95-transformations.plugins.py:24 msgid "Move transformations" msgstr "" #: data/plugins/95-transformations.plugins.py:19 msgid "Invert move sequence" msgstr "" #: data/plugins/95-transformations.plugins.py:22 msgid "Normalize cube rotations" msgstr "" #: data/plugins/95-transformations.plugins.py:25 msgid "Normalize move sequence" msgstr "" # translated by: Atanas Kovachki https://launchpad.net/~zdar on 2014-02-06 10:08:33 UTC #: buildlib/modeldef.py:110 msgid "Brick" msgstr "Блок" # translated by: Atanas Kovachki https://launchpad.net/~zdar on 2014-02-06 10:08:33 UTC #: buildlib/modeldef.py:111 #, python-brace-format msgid "{0}×{1}×{2}-Brick" msgstr "{0}×{1}×{2}-Блок" # translated by: Atanas Kovachki https://launchpad.net/~zdar on 2014-02-06 10:06:08 UTC #: buildlib/modeldef.py:112 msgid "Width:" msgstr "Ширина:" # translated by: Atanas Kovachki https://launchpad.net/~zdar on 2014-02-06 10:54:24 UTC #: buildlib/modeldef.py:112 buildlib/modeldef.py:151 buildlib/modeldef.py:249 #: buildlib/modeldef.py:300 buildlib/modeldef.py:311 msgid "Height:" msgstr "Височина:" # translated by: Atanas Kovachki https://launchpad.net/~zdar on 2014-02-06 11:02:23 UTC #: buildlib/modeldef.py:112 msgid "Depth:" msgstr "Дълбочина:" #: buildlib/modeldef.py:120 buildlib/modeldef.py:257 buildlib/modeldef.py:319 #: buildlib/modeldef.py:374 buildlib/modeldef.py:433 msgid "up" msgstr "" #: buildlib/modeldef.py:120 buildlib/modeldef.py:205 buildlib/modeldef.py:257 #: buildlib/modeldef.py:319 buildlib/modeldef.py:373 buildlib/modeldef.py:430 msgid "down" msgstr "" #: buildlib/modeldef.py:120 buildlib/modeldef.py:205 buildlib/modeldef.py:257 msgid "left" msgstr "" # translated by: Atanas Kovachki https://launchpad.net/~zdar on 2014-02-06 10:06:08 UTC #: buildlib/modeldef.py:120 buildlib/modeldef.py:205 buildlib/modeldef.py:257 msgid "right" msgstr "" # translated by: Atanas Kovachki https://launchpad.net/~zdar on 2014-02-06 13:18:56 UTC #: buildlib/modeldef.py:120 buildlib/modeldef.py:374 msgid "front" msgstr "" #: buildlib/modeldef.py:120 buildlib/modeldef.py:205 buildlib/modeldef.py:257 #: buildlib/modeldef.py:320 buildlib/modeldef.py:373 msgid "back" msgstr "" # translated by: Atanas Kovachki https://launchpad.net/~zdar on 2014-02-06 10:08:33 UTC #: buildlib/modeldef.py:149 msgid "Tower" msgstr "Кула" # translated by: Atanas Kovachki https://launchpad.net/~zdar on 2014-02-06 10:08:33 UTC #: buildlib/modeldef.py:150 #, python-brace-format msgid "{0}×{1}-Tower" msgstr "{0}×{1}-Кула" # translated by: Atanas Kovachki https://launchpad.net/~zdar on 2014-02-06 10:06:08 UTC #: buildlib/modeldef.py:151 buildlib/modeldef.py:249 buildlib/modeldef.py:300 #: buildlib/modeldef.py:311 msgid "Basis:" msgstr "Основа:" # translated by: Atanas Kovachki https://launchpad.net/~zdar on 2014-02-06 10:08:33 UTC #: buildlib/modeldef.py:163 msgid "Cube" msgstr "Куб" # translated by: Atanas Kovachki https://launchpad.net/~zdar on 2014-02-06 10:08:33 UTC #: buildlib/modeldef.py:164 #, python-brace-format msgid "{0}×{0}×{0}-Cube" msgstr "{0}×{0}×{0}-Куб" # translated by: Atanas Kovachki https://launchpad.net/~zdar on 2014-02-06 10:06:08 UTC #: buildlib/modeldef.py:165 buildlib/modeldef.py:197 buildlib/modeldef.py:365 #: buildlib/modeldef.py:422 msgid "Size:" msgstr "Размер:" #: buildlib/modeldef.py:177 buildlib/modeldef.py:178 msgid "Void Cube" msgstr "" #: buildlib/modeldef.py:195 msgid "Tetrahedron" msgstr "" #: buildlib/modeldef.py:196 #, python-brace-format msgid "{0}-Tetrahedron" msgstr "" #: buildlib/modeldef.py:247 msgid "Triangular Prism" msgstr "" #: buildlib/modeldef.py:248 #, python-brace-format msgid "{0}×{1} Triangular Prism" msgstr "" #: buildlib/modeldef.py:298 msgid "Triangular Prism (complex)" msgstr "" #: buildlib/modeldef.py:299 #, python-brace-format msgid "{0}×{1} Triangular Prism (complex)" msgstr "" #: buildlib/modeldef.py:309 msgid "Pentagonal Prism" msgstr "" #: buildlib/modeldef.py:310 #, python-brace-format msgid "{0}×{1} Pentagonal Prism" msgstr "" #: buildlib/modeldef.py:320 buildlib/modeldef.py:373 msgid "front-right" msgstr "" #: buildlib/modeldef.py:320 buildlib/modeldef.py:374 msgid "back-right" msgstr "" #: buildlib/modeldef.py:320 buildlib/modeldef.py:374 msgid "back-left" msgstr "" #: buildlib/modeldef.py:320 buildlib/modeldef.py:373 msgid "front-left" msgstr "" #: buildlib/modeldef.py:354 msgid "Pentagonal Prism (stretched)" msgstr "" #: buildlib/modeldef.py:355 #, python-brace-format msgid "{0}×{1} Pentagonal Prism (stretched)" msgstr "" #: buildlib/modeldef.py:363 msgid "Octahedron" msgstr "" #: buildlib/modeldef.py:364 #, python-brace-format msgid "{0}-Octahedron" msgstr "" #: buildlib/modeldef.py:420 msgid "Dodecahedron" msgstr "" #: buildlib/modeldef.py:421 #, python-brace-format msgid "{0}-Dodecahedron" msgstr "" #: buildlib/modeldef.py:430 msgid "down-back-right" msgstr "" #: buildlib/modeldef.py:430 msgid "down-front-right" msgstr "" #: buildlib/modeldef.py:431 msgid "down-front" msgstr "" #: buildlib/modeldef.py:431 msgid "down-front-left" msgstr "" #: buildlib/modeldef.py:431 msgid "down-back-left" msgstr "" #: buildlib/modeldef.py:432 msgid "up-back" msgstr "" #: buildlib/modeldef.py:432 msgid "up-back-right" msgstr "" #: buildlib/modeldef.py:432 msgid "up-front-right" msgstr "" #: buildlib/modeldef.py:433 msgid "up-front-left" msgstr "" #: buildlib/modeldef.py:433 msgid "up-back-left" msgstr "" pybik-3.0/po/cs.po0000644000175000017500000013536113173052130014227 0ustar barccbarcc00000000000000# Czech translation for pybik # Copyright (c) 2014-2017 Rosetta Contributors and Canonical Ltd 2014 # This file is distributed under the same license as the pybik package. # FIRST AUTHOR , 2014. # msgid "" msgstr "" "Project-Id-Version: pybik\n" "Report-Msgid-Bugs-To: https://bugs.launchpad.net/pybik/+filebug\n" "POT-Creation-Date: 2017-09-10 21:58+0200\n" "PO-Revision-Date: 2017-09-17 05:54+0000\n" "Last-Translator: Tadeáš Pařík \n" "Language-Team: Czech \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" "X-Launchpad-Export-Date: 2017-09-18 05:31+0000\n" "X-Generator: Launchpad (build 18449)\n" "Language: cs\n" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2014-01-27 22:01:53 UTC #: pybiklib/application.py:294 msgid "Press the Esc key to exit Edit Mode" msgstr "Stiskněte klávesu Esc pro opuštění editačního módu" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2014-02-06 12:35:44 UTC #. substitution for {move_text} in statusbar text #: pybiklib/application.py:302 #, python-brace-format msgid "{current} / {total} move" msgid_plural "{current} / {total} moves" msgstr[0] "{current} / {total} pohyb" msgstr[1] "{current} / {total} pohyby" msgstr[2] "{current} / {total} pohybů" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2014-01-27 22:01:53 UTC #. substitution for {solved_text} in statusbar text #: pybiklib/application.py:306 msgid "solved" msgstr "vyřešeno" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2014-01-27 22:01:53 UTC #: pybiklib/application.py:306 msgid "not solved" msgstr "nevyřešeno" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2014-02-08 07:29:00 UTC #. statusbar text #: pybiklib/application.py:309 #, python-brace-format msgid "{move_text}, {solved_text}" msgstr "{move_text}, {solved_text}" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2014-01-27 22:01:53 UTC #: pybiklib/application.py:314 msgid "Congratulations, you have solved the puzzle!" msgstr "Gratulujeme, vyřešili jste hlavolam!" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2014-01-27 22:01:53 UTC #. Name of the application, probably should not be translated. #: pybiklib/config.py:35 data/ui/qt/main.ui.h:271 #: data/app-meta/pybik.desktop.in:3 msgid "Pybik" msgstr "Pybik" #. short description #: pybiklib/config.py:65 data/app-meta/pybik.desktop.in:4 msgid "Rubik's cube game" msgstr "" #. The next 7 lines belong together and form the long description #: pybiklib/config.py:68 msgid "Pybik is a 3D puzzle game about the cube invented by Ernő Rubik." msgstr "" #: pybiklib/config.py:70 msgid "" "Various 3D puzzles, such as cubes, towers, prisms, tetrahedra, octahedra, " "dodecahedra and many more" msgstr "" #: pybiklib/config.py:71 msgid "Solvers for some puzzles" msgstr "" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2014-02-08 07:21:31 UTC #. Use something that is common in the Rubik scene in your language, sometimes it's just the equivalent of "patterns". #: pybiklib/config.py:72 data/plugins/80-pretty-patterns.plugins.py:19 #: data/plugins/80-pretty-patterns.plugins.py:22 #: data/plugins/80-pretty-patterns.plugins.py:26 #: data/plugins/80-pretty-patterns.plugins.py:30 #: data/plugins/80-pretty-patterns.plugins.py:34 #: data/plugins/80-pretty-patterns.plugins.py:39 #: data/plugins/80-pretty-patterns.plugins.py:43 #: data/plugins/80-pretty-patterns.plugins.py:48 #: data/plugins/80-pretty-patterns.plugins.py:52 #: data/plugins/80-pretty-patterns.plugins.py:56 #: data/plugins/80-pretty-patterns.plugins.py:60 #: data/plugins/80-pretty-patterns.plugins.py:64 #: data/plugins/80-pretty-patterns.plugins.py:68 #: data/plugins/80-pretty-patterns.plugins.py:72 #: data/plugins/80-pretty-patterns.plugins.py:76 #: data/plugins/80-pretty-patterns.plugins.py:82 #: data/plugins/80-pretty-patterns.plugins.py:86 #: data/plugins/80-pretty-patterns.plugins.py:91 #: data/plugins/80-pretty-patterns.plugins.py:95 #: data/plugins/80-pretty-patterns.plugins.py:99 #: data/plugins/80-pretty-patterns.plugins.py:103 #: data/plugins/80-pretty-patterns.plugins.py:107 #: data/plugins/80-pretty-patterns.plugins.py:111 #: data/plugins/80-pretty-patterns.plugins.py:116 #: data/plugins/80-pretty-patterns.plugins.py:120 #: data/plugins/80-pretty-patterns.plugins.py:124 #: data/plugins/80-pretty-patterns.plugins.py:128 #: data/plugins/80-pretty-patterns.plugins.py:133 #: data/plugins/80-pretty-patterns.plugins.py:137 #: data/plugins/80-pretty-patterns.plugins.py:141 #: data/plugins/80-pretty-patterns.plugins.py:145 #: data/plugins/80-pretty-patterns.plugins.py:149 #: data/plugins/80-pretty-patterns.plugins.py:153 #: data/plugins/80-pretty-patterns.plugins.py:157 #: data/plugins/80-pretty-patterns.plugins.py:161 #: data/plugins/80-pretty-patterns.plugins.py:165 #: data/plugins/80-pretty-patterns.plugins.py:169 #: data/plugins/80-pretty-patterns.plugins.py:173 #: data/plugins/80-pretty-patterns.plugins.py:177 #: data/plugins/80-pretty-patterns.plugins.py:181 #: data/plugins/80-pretty-patterns.plugins.py:185 #: data/plugins/80-pretty-patterns.plugins.py:190 #: data/plugins/80-pretty-patterns.plugins.py:195 #: data/plugins/80-pretty-patterns.plugins.py:199 #: data/plugins/80-pretty-patterns.plugins.py:203 #: data/plugins/80-pretty-patterns.plugins.py:207 #: data/plugins/80-pretty-patterns.plugins.py:211 #: data/plugins/80-pretty-patterns.plugins.py:215 #: data/plugins/80-pretty-patterns.plugins.py:219 msgid "Pretty patterns" msgstr "Hezké vzory" #: pybiklib/config.py:73 msgid "Editor for move sequences" msgstr "" #: pybiklib/config.py:74 msgid "Custom colors and images on the surface of the puzzles" msgstr "" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2014-02-08 06:58:58 UTC #: pybiklib/config.py:78 msgid "" "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.\n" "\n" "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." msgstr "" "Tento program je svobodným softwarem: můžete ho dále šířit a/nebo " "modifikovat za podmínek licence GNU General Public, která je uveřejněna " "Nadací Svobodného Softwaru, ve verzi 3 nebo (podle vašeho uvážení) jakékoli " "pozdější verze.\n" "\n" "Tento program je uveřejněn, jak doufáme, že bude užitečný, avšak BEZ " "JAKÉKOLI ZÁRUKY; bez záruky PRODEJNOSTI nebo VHODNOSTI PRO DANÝ ÚČEL. " "Podívejte se do licence General Public pro více informací." # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2014-02-06 12:11:01 UTC #. Text between "<" and ">" is expanded to a link by the program and should not be modified. #. Text between "" and "<|>" is the translatable text for the link. #: pybiklib/config.py:90 msgid "" "Read the full text of the GNU General Public " "License<|> or see ." msgstr "" "Přečtěte si plné znění licence GNU General " "Public<|> nebo se podívejte na ." # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2014-01-27 22:03:31 UTC #: pybiklib/config.py:93 msgid "" "You should have received a copy of the GNU General Public License along with " "this program. If not, see ." msgstr "" "Spolu s tímto programem byste měli obdržet kopii licence GNU General Public " "License. Pokud se tak nestalo, podívejte se na " "." # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2014-02-06 12:35:44 UTC #: pybiklib/config.py:98 #, python-brace-format msgid "" "If you find any bugs in Pybik or have a suggestion for an improvement then " "please submit a <{CONTACT_FILEBUG}|>bug report<|>." msgstr "" "Jestliže najdete v programu Pybik nějakou chybu nebo máte nějaký nápad na " "zlepšení, odešlete, prosím, <{CONTACT_FILEBUG}|>chybové hlášení<|>." # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2014-02-06 12:35:44 UTC #: pybiklib/config.py:103 msgid "" "Translations are managed by the " "Launchpad " "translation group<|>.\n" "\n" "If you want help to translate Pybik to your language you can do it through " "the web interface<|>.\n" "\n" "Read more about \"Translating with " "Launchpad\"<|> and " "\"Starting to " "translate\"<|>." msgstr "" "Překlady jsou spravovány " "skupinou " "překladatelů v Launchpadu<|>.\n" "\n" "Jestliže si přejete pomoci s překlady programu Pybik, můžete tak učinit " "skrze webové rozhraní<|>.\n" "\n" "Přečtěte si více o \"Překladech v " "Launchpadu\"<|> a " "\"Začínáme " "překládat\"<|>." # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2015-03-28 22:58:14 UTC #: pybiklib/dialogs.py:44 msgid "Lighting" msgstr "Nasvícení" #: pybiklib/dialogs.py:44 msgid "Simple" msgstr "" #. labels are the colored stickers on the cube #: pybiklib/dialogs.py:46 msgid "Labels" msgstr "" #: pybiklib/dialogs.py:104 data/ui/qt/main.ui.h:275 msgid "Select Puzzle" msgstr "" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2014-02-08 07:21:31 UTC #. 1 slice, 2 slices, 3 slices, ... #: pybiklib/dialogs.py:134 pybiklib/dialogs.py:154 pybiklib/dialogs.py:180 #: pybiklib/dialogs.py:201 msgid "{} slice" msgid_plural "{} slices" msgstr[0] "" msgstr[1] "" #: pybiklib/dialogs.py:196 pybiklib/dialogs.py:225 msgid "{}×{} slices" msgstr "" #. The next strings form the text in the help dialog: #. Title of the 1st paragraph #: pybiklib/dialogs.py:290 msgid "Using the mouse to rotate the cube" msgstr "" #. Text of the 1st paragraph, followed by bullet list items #: pybiklib/dialogs.py:292 msgid "" "Position the mouse cursor over the puzzle and you will see an arrow that " "gives you a hint in which direction the slice under the mouse cursor will be " "rotated." msgstr "" #: pybiklib/dialogs.py:294 msgid "" "The left mouse button rotates a single slice of the cube in the direction of " "the arrow." msgstr "" #: pybiklib/dialogs.py:295 msgid "" "The right mouse button rotates a single slice of the cube against the " "direction of the arrow." msgstr "" #: pybiklib/dialogs.py:296 msgid "" "To rotate the whole cube instead of a single slice press the Ctrl key " "together with the mouse button." msgstr "" #. Title of the 2nd paragraph #: pybiklib/dialogs.py:298 msgid "Using the keyboard to rotate the cube" msgstr "" #. Text of the 2nd paragraph, followed by bullet list items #: pybiklib/dialogs.py:300 msgid "" "Make sure the keyboard focus is on the cube area (e.g. click on the " "background of the cube). The keys can be configured in the preferences " "dialog, the default is:" msgstr "" #. before the item text is a list of keys #: pybiklib/dialogs.py:303 pybiklib/dialogs.py:318 msgid "Moves the left, right, upper, down, front or back slice clockwise." msgstr "" #: pybiklib/dialogs.py:304 pybiklib/dialogs.py:319 msgid "Moves a slice couterclockwise." msgstr "" #: pybiklib/dialogs.py:305 pybiklib/dialogs.py:320 msgid "Moves the whole cube." msgstr "" #. Title of the 3rd paragraph #: pybiklib/dialogs.py:307 msgid "Other keys and buttons" msgstr "" #. bullet list items of the 3rd paragraph #: pybiklib/dialogs.py:309 msgid "Mouse wheel – Zoom in/out" msgstr "" #: pybiklib/dialogs.py:310 msgid "" "Arrow keys, Left mouse button on the background – Changes the direction of " "looking at the cube." msgstr "" #: pybiklib/dialogs.py:311 msgid "" "Moves keyboard focus to the sequence editor above the cube area where you " "can edit the move sequence in the notation described below. Hit enter when " "done." msgstr "" #. Title of the 4th paragraph #: pybiklib/dialogs.py:315 msgid "Notation for moves" msgstr "" #. Text of the 4th paragraph, followed by bullet list items #: pybiklib/dialogs.py:317 msgid "" "All moves, however they are made, are displayed progressively above the cube " "area:" msgstr "" #: pybiklib/dialogs.py:321 msgid "" "Moves the first, second or third slice from left clockwise. The allowed " "numbers are in the range from 1 to the count of parallel slices. \"l1\" is " "always the same as \"l\" and for the classic 3×3×3-Cube \"l2\" is the same " "as \"r2-\" and \"l3\" is the same as \"r-\"." msgstr "" #: pybiklib/dialogs.py:325 msgid "You can use a space to separate groups of moves." msgstr "" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2014-01-27 22:06:40 UTC #: pybiklib/dialogs.py:379 msgid "Pybik project website" msgstr "Webové stránky projektu Pybik" #: pybiklib/pluginlib.py:301 msgid "This plugin does not work for any model." msgstr "" #: pybiklib/pluginlib.py:303 pybiklib/pluginlib.py:306 msgid "This plugin only works for:" msgstr "" #: pybiklib/pluginlib.py:498 msgid "This puzzle is not solvable." msgstr "" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2014-01-27 22:08:13 UTC #. The following 6 words are for the antialiasing levels: disabled, ugly, low, medium, high, higher #: pybiklib/schema.py:211 msgid "disabled" msgstr "zakázáno" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2014-02-06 12:17:05 UTC #: pybiklib/schema.py:211 msgid "ugly" msgstr "ošklivé" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2014-02-06 12:17:05 UTC #: pybiklib/schema.py:211 msgid "low" msgstr "nízké" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2014-02-06 12:17:05 UTC #: pybiklib/schema.py:212 msgid "medium" msgstr "střední" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2014-02-06 12:17:05 UTC #: pybiklib/schema.py:212 msgid "high" msgstr "vysoké" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2014-02-06 12:17:05 UTC #: pybiklib/schema.py:212 msgid "higher" msgstr "nejvyšší" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2015-03-28 22:58:14 UTC #: data/ui/qt/about.ui.h:212 msgid "About Pybik" msgstr "O programu Pybik" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2015-03-28 22:58:14 UTC #: data/ui/qt/about.ui.h:213 msgid "Translators:" msgstr "Překladatelé:" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2015-03-28 22:58:14 UTC #: data/ui/qt/about.ui.h:214 msgid "About" msgstr "O programu" #: data/ui/qt/about.ui.h:215 msgid "Contribute" msgstr "" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2015-03-28 22:58:14 UTC #: data/ui/qt/about.ui.h:216 msgid "License" msgstr "Licence" #: data/ui/qt/help.ui.h:53 data/ui/qt/main.ui.h:297 msgid "Help" msgstr "" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2014-02-08 07:14:48 UTC #: data/ui/qt/main.ui.h:272 msgid "&New Challenge" msgstr "" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2015-03-28 22:58:14 UTC #: data/ui/qt/main.ui.h:273 msgid "Ne&w Solved" msgstr "No&vá vyřešená" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2015-03-28 22:58:14 UTC #: data/ui/qt/main.ui.h:274 msgid "&Quit" msgstr "U&končit" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2015-03-28 22:58:14 UTC #: data/ui/qt/main.ui.h:276 msgid "&Set as Initial State" msgstr "Nas&tavit jako výchozí stav" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2015-03-28 22:58:14 UTC #: data/ui/qt/main.ui.h:277 msgid "&Reset Rotation" msgstr "&Výchozí otočení" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2015-03-28 22:58:14 UTC #: data/ui/qt/main.ui.h:278 msgid "&Preferences …" msgstr "&Nastavení" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2015-03-28 22:58:14 UTC #: data/ui/qt/main.ui.h:279 msgid "&Status Bar" msgstr "&Stavový řádek" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2015-03-28 22:58:14 UTC #: data/ui/qt/main.ui.h:280 msgid "&Info …" msgstr "&Informace ..." # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2015-03-28 22:58:14 UTC #: data/ui/qt/main.ui.h:281 msgid "Rewind" msgstr "Posunout zpět" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2015-03-28 22:58:14 UTC #: data/ui/qt/main.ui.h:282 msgid "Previous" msgstr "Předchozí" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2015-03-28 22:58:14 UTC #: data/ui/qt/main.ui.h:283 msgid "Stop" msgstr "Zastavit" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2015-03-28 22:58:14 UTC #: data/ui/qt/main.ui.h:284 msgid "Play" msgstr "Přehrát" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2015-03-28 22:58:14 UTC #: data/ui/qt/main.ui.h:285 msgid "Next" msgstr "Další" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2015-03-28 22:58:14 UTC #: data/ui/qt/main.ui.h:286 msgid "Forward" msgstr "Vpřed" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2015-03-28 22:58:14 UTC #: data/ui/qt/main.ui.h:287 msgid "Add Mark" msgstr "Přidat značku" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2015-03-28 22:58:14 UTC #: data/ui/qt/main.ui.h:289 msgid "Mark the current place in the sequence of moves" msgstr "Označit stávající místo v posloupnosti jednotlivých kroků" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2015-03-28 22:58:14 UTC #: data/ui/qt/main.ui.h:291 msgid "Remove Mark" msgstr "Odstranit značku" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2015-03-28 22:58:14 UTC #: data/ui/qt/main.ui.h:293 msgid "Remove the mark at the current place in the sequence of moves" msgstr "" "Odstranit značku pro stávající místo v posloupnosti jednotlivých kroků" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2015-03-28 22:58:14 UTC #: data/ui/qt/main.ui.h:295 msgid "&Edit Bar" msgstr "&Upravit nabídku" #: data/ui/qt/main.ui.h:296 msgid "&Help …" msgstr "" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2015-03-28 22:58:14 UTC #: data/ui/qt/preferences.ui.h:372 msgid "Preferences" msgstr "Předvolby" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2015-03-28 22:58:14 UTC #: data/ui/qt/preferences.ui.h:373 msgid "Animation Speed:" msgstr "Rychlost animace:" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2015-03-28 22:58:14 UTC #: data/ui/qt/preferences.ui.h:375 msgid "Mirror Distance:" msgstr "Vzdálenost zrcadla:" #: data/ui/qt/preferences.ui.h:377 msgid "Quality:" msgstr "" #: data/ui/qt/preferences.ui.h:380 msgid "" "Lower antialiasing has better performance, higher antialiasing has better " "quality." msgstr "" #: data/ui/qt/preferences.ui.h:382 msgid "Antialiasing:" msgstr "" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2014-01-27 22:03:31 UTC #: data/ui/qt/preferences.ui.h:384 msgid "The program needs to be restarted for the changes to take effect." msgstr "Program musí být pro uplatnění změn restartován." # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2015-03-28 22:58:14 UTC #: data/ui/qt/preferences.ui.h:385 msgid "Graphic" msgstr "Grafika" #: data/ui/qt/preferences.ui.h:386 msgid "Point and click, all directions" msgstr "" #: data/ui/qt/preferences.ui.h:387 msgid "Point and click, simplified" msgstr "" #: data/ui/qt/preferences.ui.h:388 msgid "Gestures" msgstr "" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2015-03-28 22:58:14 UTC #: data/ui/qt/preferences.ui.h:389 msgid "Mouse" msgstr "Myš" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2015-03-28 22:58:14 UTC #: data/ui/qt/preferences.ui.h:391 data/ui/qt/preferences.ui.h:393 msgid "Add" msgstr "Přidat" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2015-03-28 22:58:14 UTC #: data/ui/qt/preferences.ui.h:395 data/ui/qt/preferences.ui.h:397 msgid "Remove" msgstr "Odebrat" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2015-03-28 22:58:14 UTC #: data/ui/qt/preferences.ui.h:399 data/ui/qt/preferences.ui.h:401 msgid "Reset" msgstr "Obnovit" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2015-03-28 22:58:14 UTC #: data/ui/qt/preferences.ui.h:402 msgid "Keys" msgstr "Klávesy" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2015-03-28 22:58:14 UTC #: data/ui/qt/preferences.ui.h:403 msgid "Color:" msgstr "Barva:" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2015-03-28 22:58:14 UTC #: data/ui/qt/preferences.ui.h:405 msgid "Image File:" msgstr "Soubor obrázku:" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2015-03-28 22:58:14 UTC #: data/ui/qt/preferences.ui.h:407 msgid "Tiled" msgstr "Dlaždice" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2015-03-28 22:58:14 UTC #: data/ui/qt/preferences.ui.h:408 msgid "Mosaic" msgstr "Mozaika" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2015-03-28 22:58:14 UTC #: data/ui/qt/preferences.ui.h:409 msgid "Background:" msgstr "Pozadí:" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2015-03-28 22:58:14 UTC #: data/ui/qt/preferences.ui.h:411 msgid "Appearance" msgstr "Vzhled" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2014-02-06 12:14:58 UTC #: pybiklib/ext/qt.py:1578 msgid "Move" msgstr "Pohyb" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2014-02-08 07:27:41 UTC #: pybiklib/ext/qt.py:1581 msgid "Key" msgstr "Klávesa" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2014-02-06 12:14:58 UTC #: pybiklib/ext/qt.py:1682 msgid "Open Image" msgstr "Otevřít obrázek" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2014-02-06 12:35:44 UTC #: pybiklib/ext/qt.py:1720 msgid "plain" msgstr "prostý" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2014-01-27 22:03:31 UTC #: pybiklib/ext/qt.py:1723 msgid "select …" msgstr "vybrat ..." # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2014-01-27 22:03:31 UTC #: pybiklib/ext/qtui.py:94 msgid "Press a key …" msgstr "Stiskněte jakoukoli klávesu ..." # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2014-01-27 22:18:29 UTC #. Add whatever keywords you want in your language, separated by semicolons, last character must be a semicolon. These keywords are used when searching for applications in Unity, GNOME Shell, etc. #: data/app-meta/pybik.desktop.in:10 msgid "rubik;cube;puzzle;magic;" msgstr "rubik;kostka;hlavolam;kouzelný;" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2014-02-08 07:14:48 UTC #: data/plugins/01-challenges.plugins.py:18 #: data/plugins/01-challenges.plugins.py:21 #: data/plugins/01-challenges.plugins.py:24 #: data/plugins/01-challenges.plugins.py:27 #: data/plugins/01-challenges.plugins.py:30 #: data/plugins/01-challenges.plugins.py:33 #: data/plugins/01-challenges.plugins.py:36 #: data/plugins/01-challenges.plugins.py:39 #: data/plugins/01-challenges.plugins.py:42 #: data/plugins/01-challenges.plugins.py:45 #: data/plugins/01-challenges.plugins.py:48 msgid "Challenges" msgstr "Výzvy" #: data/plugins/01-challenges.plugins.py:19 msgid "Solve random puzzle" msgstr "" #: data/plugins/01-challenges.plugins.py:22 #: data/plugins/01-challenges.plugins.py:25 #: data/plugins/01-challenges.plugins.py:28 #: data/plugins/01-challenges.plugins.py:31 #: data/plugins/01-challenges.plugins.py:34 #: data/plugins/01-challenges.plugins.py:37 #: data/plugins/01-challenges.plugins.py:40 #: data/plugins/01-challenges.plugins.py:43 #: data/plugins/01-challenges.plugins.py:46 #: data/plugins/01-challenges.plugins.py:49 msgid "Solve in {} move" msgid_plural "Solve in {} moves" msgstr[0] "" msgstr[1] "" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2014-01-27 22:20:06 UTC #: data/plugins/10-beginners.plugins.py:31 #: data/plugins/10-beginners.plugins.py:34 #: data/plugins/10-beginners.plugins.py:56 #: data/plugins/10-beginners.plugins.py:73 #: data/plugins/10-beginners.plugins.py:100 #: data/plugins/10-beginners.plugins.py:118 #: data/plugins/10-beginners.plugins.py:140 #: data/plugins/10-beginners.plugins.py:158 #: data/plugins/14-leyan-lo.plugins.py:21 #: data/plugins/14-leyan-lo.plugins.py:24 #: data/plugins/14-leyan-lo.plugins.py:53 #: data/plugins/14-leyan-lo.plugins.py:74 #: data/plugins/14-leyan-lo.plugins.py:90 #: data/plugins/14-leyan-lo.plugins.py:107 #: data/plugins/14-leyan-lo.plugins.py:129 #: data/plugins/14-leyan-lo.plugins.py:170 #: data/plugins/150-spiegel.plugins.py:32 #: data/plugins/150-spiegel.plugins.py:35 #: data/plugins/150-spiegel.plugins.py:64 #: data/plugins/150-spiegel.plugins.py:85 #: data/plugins/150-spiegel.plugins.py:100 #: data/plugins/150-spiegel.plugins.py:113 #: data/plugins/150-spiegel.plugins.py:130 #: data/plugins/150-spiegel.plugins.py:141 #: data/plugins/151-spiegel-improved.plugins.py:20 #: data/plugins/151-spiegel-improved.plugins.py:23 #: data/plugins/151-spiegel-improved.plugins.py:68 #: data/plugins/151-spiegel-improved.plugins.py:107 #: data/plugins/151-spiegel-improved.plugins.py:139 #: data/plugins/151-spiegel-improved.plugins.py:165 #: data/plugins/151-spiegel-improved.plugins.py:183 #: data/plugins/151-spiegel-improved.plugins.py:197 #: data/plugins/20-2x2x2.plugins.py:18 data/plugins/20-2x2x2.plugins.py:21 #: data/plugins/20-2x2x2.plugins.py:37 data/plugins/20-2x2x2.plugins.py:55 msgid "Solvers" msgstr "Ti, co vyřešili" #: data/plugins/10-beginners.plugins.py:32 #: data/plugins/10-beginners.plugins.py:35 #: data/plugins/10-beginners.plugins.py:57 #: data/plugins/10-beginners.plugins.py:74 #: data/plugins/10-beginners.plugins.py:101 #: data/plugins/10-beginners.plugins.py:119 #: data/plugins/10-beginners.plugins.py:141 #: data/plugins/10-beginners.plugins.py:159 msgid "Beginner's method" msgstr "" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2014-02-08 07:21:31 UTC #: data/plugins/10-beginners.plugins.py:36 #: data/plugins/14-leyan-lo.plugins.py:26 #: data/plugins/150-spiegel.plugins.py:37 #: data/plugins/151-spiegel-improved.plugins.py:25 msgid "Top edges" msgstr "Horní hrany" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2014-02-08 07:21:31 UTC #: data/plugins/10-beginners.plugins.py:58 #: data/plugins/14-leyan-lo.plugins.py:55 #: data/plugins/150-spiegel.plugins.py:66 #: data/plugins/151-spiegel-improved.plugins.py:70 msgid "Top corners" msgstr "Horní rohy" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2014-02-08 07:21:31 UTC #: data/plugins/10-beginners.plugins.py:75 #: data/plugins/14-leyan-lo.plugins.py:76 #: data/plugins/150-spiegel.plugins.py:87 #: data/plugins/151-spiegel-improved.plugins.py:109 msgid "Middle slice" msgstr "Střední řez" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2014-02-08 07:21:31 UTC #: data/plugins/10-beginners.plugins.py:102 #: data/plugins/14-leyan-lo.plugins.py:92 #: data/plugins/150-spiegel.plugins.py:115 #: data/plugins/151-spiegel-improved.plugins.py:167 msgid "Bottom edge orient" msgstr "Orientace spodní hrany" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2014-02-08 07:21:31 UTC #: data/plugins/10-beginners.plugins.py:120 #: data/plugins/14-leyan-lo.plugins.py:131 #: data/plugins/150-spiegel.plugins.py:143 #: data/plugins/151-spiegel-improved.plugins.py:199 #: data/plugins/20-2x2x2.plugins.py:57 msgid "Bottom corner orient" msgstr "Orientace spodního rohu" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2014-02-08 07:21:31 UTC #: data/plugins/10-beginners.plugins.py:142 #: data/plugins/14-leyan-lo.plugins.py:109 #: data/plugins/150-spiegel.plugins.py:132 #: data/plugins/151-spiegel-improved.plugins.py:185 #: data/plugins/20-2x2x2.plugins.py:39 msgid "Bottom corner place" msgstr "Umístění spodního rohu" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2014-02-08 07:21:31 UTC #: data/plugins/10-beginners.plugins.py:160 #: data/plugins/14-leyan-lo.plugins.py:172 #: data/plugins/150-spiegel.plugins.py:102 #: data/plugins/151-spiegel-improved.plugins.py:141 msgid "Bottom edge place" msgstr "Umístění spodní hrany" #. Leyan Lo is the inventor of the solution #: data/plugins/14-leyan-lo.plugins.py:23 #: data/plugins/14-leyan-lo.plugins.py:25 #: data/plugins/14-leyan-lo.plugins.py:54 #: data/plugins/14-leyan-lo.plugins.py:75 #: data/plugins/14-leyan-lo.plugins.py:91 #: data/plugins/14-leyan-lo.plugins.py:108 #: data/plugins/14-leyan-lo.plugins.py:130 #: data/plugins/14-leyan-lo.plugins.py:171 msgid "Leyan Lo" msgstr "" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2014-02-06 12:24:24 UTC #. Spiegel is a german magazine #: data/plugins/150-spiegel.plugins.py:34 #: data/plugins/150-spiegel.plugins.py:36 #: data/plugins/150-spiegel.plugins.py:65 #: data/plugins/150-spiegel.plugins.py:86 #: data/plugins/150-spiegel.plugins.py:101 #: data/plugins/150-spiegel.plugins.py:114 #: data/plugins/150-spiegel.plugins.py:131 #: data/plugins/150-spiegel.plugins.py:142 msgid "Spiegel" msgstr "Spiegel" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2014-02-06 12:25:04 UTC #. Spiegel is a german magazine #: data/plugins/151-spiegel-improved.plugins.py:22 #: data/plugins/151-spiegel-improved.plugins.py:24 #: data/plugins/151-spiegel-improved.plugins.py:69 #: data/plugins/151-spiegel-improved.plugins.py:108 #: data/plugins/151-spiegel-improved.plugins.py:140 #: data/plugins/151-spiegel-improved.plugins.py:166 #: data/plugins/151-spiegel-improved.plugins.py:184 #: data/plugins/151-spiegel-improved.plugins.py:198 msgid "Spiegel improved" msgstr "Vylepšený Spiegel" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2014-01-27 22:20:25 UTC #: data/plugins/20-2x2x2.plugins.py:19 data/plugins/20-2x2x2.plugins.py:22 #: data/plugins/20-2x2x2.plugins.py:38 data/plugins/20-2x2x2.plugins.py:56 msgid "2×2×2" msgstr "2×2×2" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2014-02-08 07:21:31 UTC #: data/plugins/20-2x2x2.plugins.py:23 msgid "Top slice" msgstr "Horní řez" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2014-02-06 12:25:04 UTC #: data/plugins/80-pretty-patterns.plugins.py:20 #: data/plugins/80-pretty-patterns.plugins.py:23 #: data/plugins/80-pretty-patterns.plugins.py:27 #: data/plugins/80-pretty-patterns.plugins.py:31 #: data/plugins/80-pretty-patterns.plugins.py:35 #: data/plugins/80-pretty-patterns.plugins.py:40 #: data/plugins/80-pretty-patterns.plugins.py:44 msgid "Stripes" msgstr "Pruhy" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2014-02-06 12:25:04 UTC #: data/plugins/80-pretty-patterns.plugins.py:49 #: data/plugins/80-pretty-patterns.plugins.py:53 msgid "Criss-Cross" msgstr "Křižování" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2014-02-08 07:26:15 UTC #: data/plugins/80-pretty-patterns.plugins.py:57 msgid "Fried Eggs" msgstr "Smažená vajíčka" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2014-02-08 07:26:15 UTC #: data/plugins/80-pretty-patterns.plugins.py:61 msgid "Big Fried Eggs" msgstr "Velká smažená vajíčka" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2014-02-08 07:26:15 UTC #: data/plugins/80-pretty-patterns.plugins.py:65 #: data/plugins/80-pretty-patterns.plugins.py:69 msgid "4 Fried Eggs" msgstr "4 smažená vajíčka" #: data/plugins/80-pretty-patterns.plugins.py:73 msgid "2 Fried Eggs" msgstr "" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2014-01-27 22:21:10 UTC #: data/plugins/80-pretty-patterns.plugins.py:77 msgid "Chessboard" msgstr "Šachovnice" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2014-02-06 12:26:18 UTC #: data/plugins/80-pretty-patterns.plugins.py:83 msgid "Cross" msgstr "Kříž" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2014-01-27 22:21:10 UTC #: data/plugins/80-pretty-patterns.plugins.py:87 msgid "Zig Zag" msgstr "Cikcak" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2014-02-08 07:22:42 UTC #. T is the shape formed by the cube labels. T-Time is a pun (Tea Time) and not suitable for literal translation. Don't translate it or use something common or whatever you think makes sense. #: data/plugins/80-pretty-patterns.plugins.py:93 #: data/plugins/80-pretty-patterns.plugins.py:96 #: data/plugins/80-pretty-patterns.plugins.py:100 #: data/plugins/80-pretty-patterns.plugins.py:104 #: data/plugins/80-pretty-patterns.plugins.py:108 #: data/plugins/80-pretty-patterns.plugins.py:112 msgid "T-Time" msgstr "T-Time" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2014-02-08 07:22:42 UTC #. C is the shape formed by the cube labels #: data/plugins/80-pretty-patterns.plugins.py:118 msgid "C" msgstr "C" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2014-01-27 22:21:10 UTC #: data/plugins/80-pretty-patterns.plugins.py:121 msgid "Cube in a Cube" msgstr "Kostka v kostce" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2014-02-08 07:26:15 UTC #: data/plugins/80-pretty-patterns.plugins.py:125 msgid "Striped Cube in a Cube" msgstr "Pruhovaná kostka v kostce" #: data/plugins/80-pretty-patterns.plugins.py:129 msgid "Six square cuboids" msgstr "" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2014-02-08 07:22:42 UTC #. Superflip may be not translated, because it has a special meaning in the mathematical theory behind the Rubik's Cube. #: data/plugins/80-pretty-patterns.plugins.py:135 msgid "Superflip" msgstr "Superflip" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2014-02-08 07:22:42 UTC #: data/plugins/80-pretty-patterns.plugins.py:138 msgid "Superflip easy" msgstr "Jednoduchý superflip" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2014-02-06 12:27:37 UTC #: data/plugins/80-pretty-patterns.plugins.py:142 msgid "Green Mamba" msgstr "Zelená mamba" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2014-02-06 12:27:37 UTC #: data/plugins/80-pretty-patterns.plugins.py:146 msgid "Anaconda" msgstr "Anakonda" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2014-02-08 07:26:15 UTC #: data/plugins/80-pretty-patterns.plugins.py:150 msgid "Duck Feet" msgstr "Kachní nohy" #: data/plugins/80-pretty-patterns.plugins.py:154 #: data/plugins/80-pretty-patterns.plugins.py:158 #: data/plugins/80-pretty-patterns.plugins.py:162 #: data/plugins/80-pretty-patterns.plugins.py:166 #: data/plugins/80-pretty-patterns.plugins.py:170 #: data/plugins/80-pretty-patterns.plugins.py:174 #: data/plugins/80-pretty-patterns.plugins.py:178 #: data/plugins/80-pretty-patterns.plugins.py:182 msgid "Plus" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:186 #: data/plugins/80-pretty-patterns.plugins.py:191 #: data/plugins/80-pretty-patterns.plugins.py:196 #: data/plugins/80-pretty-patterns.plugins.py:200 msgid "Minus" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:204 msgid "Volcano" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:208 msgid "Checkerboard (easy)" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:212 msgid "Checkerboard (fast)" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:216 msgid "Mixed Checkerboard" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:220 msgid "Tipi" msgstr "" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2014-02-06 12:27:37 UTC #: data/plugins/90-library.plugins.py:18 data/plugins/90-library.plugins.py:22 #: data/plugins/90-library.plugins.py:26 data/plugins/90-library.plugins.py:30 #: data/plugins/90-library.plugins.py:34 data/plugins/90-library.plugins.py:38 #: data/plugins/90-library.plugins.py:42 data/plugins/90-library.plugins.py:46 #: data/plugins/90-library.plugins.py:50 data/plugins/90-library.plugins.py:54 #: data/plugins/90-library.plugins.py:58 data/plugins/90-library.plugins.py:62 #: data/plugins/90-library.plugins.py:66 data/plugins/90-library.plugins.py:70 #: data/plugins/90-library.plugins.py:74 data/plugins/90-library.plugins.py:78 #: data/plugins/90-library.plugins.py:82 data/plugins/90-library.plugins.py:86 #: data/plugins/90-library.plugins.py:91 data/plugins/90-library.plugins.py:96 #: data/plugins/90-library.plugins.py:101 #: data/plugins/90-library.plugins.py:105 #: data/plugins/90-library.plugins.py:110 #: data/plugins/90-library.plugins.py:115 #: data/plugins/90-library.plugins.py:119 #: data/plugins/90-library.plugins.py:123 #: data/plugins/90-library.plugins.py:127 msgid "Library" msgstr "Knihovna" #: data/plugins/90-library.plugins.py:19 data/plugins/90-library.plugins.py:23 #: data/plugins/90-library.plugins.py:27 data/plugins/90-library.plugins.py:31 #: data/plugins/90-library.plugins.py:35 msgid "Swap edges" msgstr "" #: data/plugins/90-library.plugins.py:20 msgid "3 edges ⟳, top layer" msgstr "" #: data/plugins/90-library.plugins.py:24 msgid "3 edges ⟲, top layer" msgstr "" #: data/plugins/90-library.plugins.py:28 msgid "3 edges, middle layer" msgstr "" #: data/plugins/90-library.plugins.py:32 msgid "4 edges, front and right" msgstr "" #: data/plugins/90-library.plugins.py:36 msgid "4 edges, front and back" msgstr "" #: data/plugins/90-library.plugins.py:39 msgid "Swap 2 edges and 2 corners, top layer" msgstr "" #: data/plugins/90-library.plugins.py:43 data/plugins/90-library.plugins.py:47 msgid "Flip edges" msgstr "" #: data/plugins/90-library.plugins.py:44 msgid "4 edges" msgstr "" #: data/plugins/90-library.plugins.py:48 msgid "2 edges, top layer" msgstr "" #: data/plugins/90-library.plugins.py:51 data/plugins/90-library.plugins.py:55 #: data/plugins/90-library.plugins.py:59 data/plugins/90-library.plugins.py:63 #: data/plugins/90-library.plugins.py:67 data/plugins/90-library.plugins.py:71 msgid "Swap corners" msgstr "" #: data/plugins/90-library.plugins.py:52 data/plugins/90-library.plugins.py:76 msgid "2 corners, top layer" msgstr "" #: data/plugins/90-library.plugins.py:56 msgid "2 corners diagonal, top layer" msgstr "" #: data/plugins/90-library.plugins.py:60 data/plugins/90-library.plugins.py:80 msgid "3 corners ⟳, top layer" msgstr "" #: data/plugins/90-library.plugins.py:64 msgid "3 corners ⟲, top layer" msgstr "" #: data/plugins/90-library.plugins.py:68 msgid "4 corners, top layer" msgstr "" #: data/plugins/90-library.plugins.py:72 msgid "2 corners, partial sequence, top layer" msgstr "" #: data/plugins/90-library.plugins.py:75 data/plugins/90-library.plugins.py:79 #: data/plugins/90-library.plugins.py:83 data/plugins/90-library.plugins.py:87 msgid "Rotate corners" msgstr "" #: data/plugins/90-library.plugins.py:84 msgid "1 corner ⟳, partial sequence, top layer" msgstr "" #: data/plugins/90-library.plugins.py:88 msgid "1 corner ⟲, partial sequence, top layer" msgstr "" #: data/plugins/90-library.plugins.py:92 data/plugins/90-library.plugins.py:97 #: data/plugins/90-library.plugins.py:102 #: data/plugins/90-library.plugins.py:111 msgid "Rotate center" msgstr "" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2014-02-06 12:28:27 UTC #. 2 rotations of the center face in the upper layer #: data/plugins/90-library.plugins.py:94 msgid "2×Up" msgstr "2x nahoru" #. Up clockwise and front clockwise #: data/plugins/90-library.plugins.py:99 msgid "Up ⟳ and front ⟳" msgstr "" #. Up clockwise and front counterclockwise #: data/plugins/90-library.plugins.py:104 msgid "Up ⟳ and front ⟲" msgstr "" #: data/plugins/90-library.plugins.py:106 msgid "Swap center parts, up and front" msgstr "" #. Up clockwise and down counterclockwise #: data/plugins/90-library.plugins.py:113 msgid "Up ⟳ and down ⟲" msgstr "" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2014-02-08 07:23:57 UTC #: data/plugins/90-library.plugins.py:116 #: data/plugins/90-library.plugins.py:120 #: data/plugins/90-library.plugins.py:124 #: data/plugins/90-library.plugins.py:128 msgid "Misc" msgstr "Různé" #. Yields in a rotated back layer, but the sequence of moves does not touch the back layer #: data/plugins/90-library.plugins.py:118 #: data/plugins/90-library.plugins.py:125 #: data/plugins/90-library.plugins.py:129 msgid "Back without back" msgstr "" #: data/plugins/90-library.plugins.py:121 msgid "2×Back without back" msgstr "" #: data/plugins/95-transformations.plugins.py:18 #: data/plugins/95-transformations.plugins.py:21 #: data/plugins/95-transformations.plugins.py:24 msgid "Move transformations" msgstr "" #: data/plugins/95-transformations.plugins.py:19 msgid "Invert move sequence" msgstr "" #: data/plugins/95-transformations.plugins.py:22 msgid "Normalize cube rotations" msgstr "" #: data/plugins/95-transformations.plugins.py:25 msgid "Normalize move sequence" msgstr "" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2014-02-06 12:14:58 UTC #: buildlib/modeldef.py:110 msgid "Brick" msgstr "Kostka" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2014-02-08 07:17:49 UTC #: buildlib/modeldef.py:111 #, python-brace-format msgid "{0}×{1}×{2}-Brick" msgstr "{0}×{1}×{2}-Cihla" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2014-01-27 22:04:56 UTC #: buildlib/modeldef.py:112 msgid "Width:" msgstr "Šířka:" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2014-01-27 22:12:58 UTC #: buildlib/modeldef.py:112 buildlib/modeldef.py:151 buildlib/modeldef.py:249 #: buildlib/modeldef.py:300 buildlib/modeldef.py:311 msgid "Height:" msgstr "Výška:" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2014-01-27 22:14:57 UTC #: buildlib/modeldef.py:112 msgid "Depth:" msgstr "Hloubka:" #: buildlib/modeldef.py:120 buildlib/modeldef.py:257 buildlib/modeldef.py:319 #: buildlib/modeldef.py:374 buildlib/modeldef.py:433 msgid "up" msgstr "" #: buildlib/modeldef.py:120 buildlib/modeldef.py:205 buildlib/modeldef.py:257 #: buildlib/modeldef.py:319 buildlib/modeldef.py:373 buildlib/modeldef.py:430 msgid "down" msgstr "" #: buildlib/modeldef.py:120 buildlib/modeldef.py:205 buildlib/modeldef.py:257 msgid "left" msgstr "" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2014-02-06 12:14:58 UTC #: buildlib/modeldef.py:120 buildlib/modeldef.py:205 buildlib/modeldef.py:257 msgid "right" msgstr "" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2014-02-06 12:14:58 UTC #: buildlib/modeldef.py:120 buildlib/modeldef.py:374 msgid "front" msgstr "" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2015-03-28 22:58:14 UTC #: buildlib/modeldef.py:120 buildlib/modeldef.py:205 buildlib/modeldef.py:257 #: buildlib/modeldef.py:320 buildlib/modeldef.py:373 msgid "back" msgstr "" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2014-01-27 22:06:40 UTC #: buildlib/modeldef.py:149 msgid "Tower" msgstr "Věž" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2014-02-08 07:17:49 UTC #: buildlib/modeldef.py:150 #, python-brace-format msgid "{0}×{1}-Tower" msgstr "{0}×{1}-Věž" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2014-02-08 06:58:58 UTC #: buildlib/modeldef.py:151 buildlib/modeldef.py:249 buildlib/modeldef.py:300 #: buildlib/modeldef.py:311 msgid "Basis:" msgstr "Základ:" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2014-01-27 22:06:40 UTC #: buildlib/modeldef.py:163 msgid "Cube" msgstr "Kostka" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2014-02-08 07:17:49 UTC #: buildlib/modeldef.py:164 #, python-brace-format msgid "{0}×{0}×{0}-Cube" msgstr "{0}×{0}×{0}-Kostka" # translated by: Tadeáš Pařík https://launchpad.net/~pariktadeas on 2014-01-27 22:04:56 UTC #: buildlib/modeldef.py:165 buildlib/modeldef.py:197 buildlib/modeldef.py:365 #: buildlib/modeldef.py:422 msgid "Size:" msgstr "Velikost:" #: buildlib/modeldef.py:177 buildlib/modeldef.py:178 msgid "Void Cube" msgstr "" #: buildlib/modeldef.py:195 msgid "Tetrahedron" msgstr "" #: buildlib/modeldef.py:196 #, python-brace-format msgid "{0}-Tetrahedron" msgstr "" #: buildlib/modeldef.py:247 msgid "Triangular Prism" msgstr "" #: buildlib/modeldef.py:248 #, python-brace-format msgid "{0}×{1} Triangular Prism" msgstr "" #: buildlib/modeldef.py:298 msgid "Triangular Prism (complex)" msgstr "" #: buildlib/modeldef.py:299 #, python-brace-format msgid "{0}×{1} Triangular Prism (complex)" msgstr "" #: buildlib/modeldef.py:309 msgid "Pentagonal Prism" msgstr "" #: buildlib/modeldef.py:310 #, python-brace-format msgid "{0}×{1} Pentagonal Prism" msgstr "" #: buildlib/modeldef.py:320 buildlib/modeldef.py:373 msgid "front-right" msgstr "" #: buildlib/modeldef.py:320 buildlib/modeldef.py:374 msgid "back-right" msgstr "" #: buildlib/modeldef.py:320 buildlib/modeldef.py:374 msgid "back-left" msgstr "" #: buildlib/modeldef.py:320 buildlib/modeldef.py:373 msgid "front-left" msgstr "" #: buildlib/modeldef.py:354 msgid "Pentagonal Prism (stretched)" msgstr "" #: buildlib/modeldef.py:355 #, python-brace-format msgid "{0}×{1} Pentagonal Prism (stretched)" msgstr "" #: buildlib/modeldef.py:363 msgid "Octahedron" msgstr "" #: buildlib/modeldef.py:364 #, python-brace-format msgid "{0}-Octahedron" msgstr "" #: buildlib/modeldef.py:420 msgid "Dodecahedron" msgstr "" #: buildlib/modeldef.py:421 #, python-brace-format msgid "{0}-Dodecahedron" msgstr "" #: buildlib/modeldef.py:430 msgid "down-back-right" msgstr "" #: buildlib/modeldef.py:430 msgid "down-front-right" msgstr "" #: buildlib/modeldef.py:431 msgid "down-front" msgstr "" #: buildlib/modeldef.py:431 msgid "down-front-left" msgstr "" #: buildlib/modeldef.py:431 msgid "down-back-left" msgstr "" #: buildlib/modeldef.py:432 msgid "up-back" msgstr "" #: buildlib/modeldef.py:432 msgid "up-back-right" msgstr "" #: buildlib/modeldef.py:432 msgid "up-front-right" msgstr "" #: buildlib/modeldef.py:433 msgid "up-front-left" msgstr "" #: buildlib/modeldef.py:433 msgid "up-back-left" msgstr "" pybik-3.0/po/zh_TW.po0000664000175000017500000011172313173052130014653 0ustar barccbarcc00000000000000# Chinese (Traditional) translation for pybik # Copyright (c) 2013-2017 Rosetta Contributors and Canonical Ltd 2013 # This file is distributed under the same license as the pybik package. # FIRST AUTHOR , 2013. # msgid "" msgstr "" "Project-Id-Version: pybik\n" "Report-Msgid-Bugs-To: https://bugs.launchpad.net/pybik/+filebug\n" "POT-Creation-Date: 2017-09-10 21:58+0200\n" "PO-Revision-Date: 2017-09-17 05:54+0000\n" "Last-Translator: B. Clausius \n" "Language-Team: Chinese (Traditional) \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Launchpad-Export-Date: 2017-09-18 05:31+0000\n" "X-Generator: Launchpad (build 18449)\n" "Language: \n" # translated by: Po-Chun Huang https://launchpad.net/~aphroteus on 2013-06-15 13:12:10 UTC #: pybiklib/application.py:294 msgid "Press the Esc key to exit Edit Mode" msgstr "按下 Esc 鍵離開編輯模式" # translated by: Po-Chun Huang https://launchpad.net/~aphroteus on 2013-06-15 13:12:10 UTC #. substitution for {move_text} in statusbar text #: pybiklib/application.py:302 #, python-brace-format msgid "{current} / {total} move" msgid_plural "{current} / {total} moves" msgstr[0] "{current} / {total} 移動" # translated by: Po-Chun Huang https://launchpad.net/~aphroteus on 2013-06-15 13:12:10 UTC #. substitution for {solved_text} in statusbar text #: pybiklib/application.py:306 msgid "solved" msgstr "已解決" # translated by: Po-Chun Huang https://launchpad.net/~aphroteus on 2013-06-15 13:12:10 UTC #: pybiklib/application.py:306 msgid "not solved" msgstr "未解決" # translated by: Po-Chun Huang https://launchpad.net/~aphroteus on 2013-06-15 13:12:10 UTC #. statusbar text #: pybiklib/application.py:309 #, python-brace-format msgid "{move_text}, {solved_text}" msgstr "{move_text}, {solved_text}" # translated by: Po-Chun Huang https://launchpad.net/~aphroteus on 2013-06-15 13:26:00 UTC #: pybiklib/application.py:314 msgid "Congratulations, you have solved the puzzle!" msgstr "恭喜,您已解決難題!" # translated by: Po-Chun Huang https://launchpad.net/~aphroteus on 2013-06-15 13:12:10 UTC #. Name of the application, probably should not be translated. #: pybiklib/config.py:35 data/ui/qt/main.ui.h:271 #: data/app-meta/pybik.desktop.in:3 msgid "Pybik" msgstr "Pybik" #. short description #: pybiklib/config.py:65 data/app-meta/pybik.desktop.in:4 msgid "Rubik's cube game" msgstr "" #. The next 7 lines belong together and form the long description #: pybiklib/config.py:68 msgid "Pybik is a 3D puzzle game about the cube invented by Ernő Rubik." msgstr "" #: pybiklib/config.py:70 msgid "" "Various 3D puzzles, such as cubes, towers, prisms, tetrahedra, octahedra, " "dodecahedra and many more" msgstr "" #: pybiklib/config.py:71 msgid "Solvers for some puzzles" msgstr "" #. Use something that is common in the Rubik scene in your language, sometimes it's just the equivalent of "patterns". #: pybiklib/config.py:72 data/plugins/80-pretty-patterns.plugins.py:19 #: data/plugins/80-pretty-patterns.plugins.py:22 #: data/plugins/80-pretty-patterns.plugins.py:26 #: data/plugins/80-pretty-patterns.plugins.py:30 #: data/plugins/80-pretty-patterns.plugins.py:34 #: data/plugins/80-pretty-patterns.plugins.py:39 #: data/plugins/80-pretty-patterns.plugins.py:43 #: data/plugins/80-pretty-patterns.plugins.py:48 #: data/plugins/80-pretty-patterns.plugins.py:52 #: data/plugins/80-pretty-patterns.plugins.py:56 #: data/plugins/80-pretty-patterns.plugins.py:60 #: data/plugins/80-pretty-patterns.plugins.py:64 #: data/plugins/80-pretty-patterns.plugins.py:68 #: data/plugins/80-pretty-patterns.plugins.py:72 #: data/plugins/80-pretty-patterns.plugins.py:76 #: data/plugins/80-pretty-patterns.plugins.py:82 #: data/plugins/80-pretty-patterns.plugins.py:86 #: data/plugins/80-pretty-patterns.plugins.py:91 #: data/plugins/80-pretty-patterns.plugins.py:95 #: data/plugins/80-pretty-patterns.plugins.py:99 #: data/plugins/80-pretty-patterns.plugins.py:103 #: data/plugins/80-pretty-patterns.plugins.py:107 #: data/plugins/80-pretty-patterns.plugins.py:111 #: data/plugins/80-pretty-patterns.plugins.py:116 #: data/plugins/80-pretty-patterns.plugins.py:120 #: data/plugins/80-pretty-patterns.plugins.py:124 #: data/plugins/80-pretty-patterns.plugins.py:128 #: data/plugins/80-pretty-patterns.plugins.py:133 #: data/plugins/80-pretty-patterns.plugins.py:137 #: data/plugins/80-pretty-patterns.plugins.py:141 #: data/plugins/80-pretty-patterns.plugins.py:145 #: data/plugins/80-pretty-patterns.plugins.py:149 #: data/plugins/80-pretty-patterns.plugins.py:153 #: data/plugins/80-pretty-patterns.plugins.py:157 #: data/plugins/80-pretty-patterns.plugins.py:161 #: data/plugins/80-pretty-patterns.plugins.py:165 #: data/plugins/80-pretty-patterns.plugins.py:169 #: data/plugins/80-pretty-patterns.plugins.py:173 #: data/plugins/80-pretty-patterns.plugins.py:177 #: data/plugins/80-pretty-patterns.plugins.py:181 #: data/plugins/80-pretty-patterns.plugins.py:185 #: data/plugins/80-pretty-patterns.plugins.py:190 #: data/plugins/80-pretty-patterns.plugins.py:195 #: data/plugins/80-pretty-patterns.plugins.py:199 #: data/plugins/80-pretty-patterns.plugins.py:203 #: data/plugins/80-pretty-patterns.plugins.py:207 #: data/plugins/80-pretty-patterns.plugins.py:211 #: data/plugins/80-pretty-patterns.plugins.py:215 #: data/plugins/80-pretty-patterns.plugins.py:219 msgid "Pretty patterns" msgstr "" #: pybiklib/config.py:73 msgid "Editor for move sequences" msgstr "" #: pybiklib/config.py:74 msgid "Custom colors and images on the surface of the puzzles" msgstr "" #: pybiklib/config.py:78 msgid "" "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.\n" "\n" "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." msgstr "" #. Text between "<" and ">" is expanded to a link by the program and should not be modified. #. Text between "" and "<|>" is the translatable text for the link. #: pybiklib/config.py:90 msgid "" "Read the full text of the GNU General Public " "License<|> or see ." msgstr "" # translated by: Po-Chun Huang https://launchpad.net/~aphroteus on 2013-06-15 13:16:56 UTC #: pybiklib/config.py:93 msgid "" "You should have received a copy of the GNU General Public License along with " "this program. If not, see ." msgstr "" "您應能在本程式中取得一份 GNU 通用公共許可證的副本。如果沒有, 請參照 ." #: pybiklib/config.py:98 #, python-brace-format msgid "" "If you find any bugs in Pybik or have a suggestion for an improvement then " "please submit a <{CONTACT_FILEBUG}|>bug report<|>." msgstr "" #: pybiklib/config.py:103 msgid "" "Translations are managed by the " "Launchpad " "translation group<|>.\n" "\n" "If you want help to translate Pybik to your language you can do it through " "the web interface<|>.\n" "\n" "Read more about \"Translating with " "Launchpad\"<|> and " "\"Starting to " "translate\"<|>." msgstr "" #: pybiklib/dialogs.py:44 msgid "Lighting" msgstr "" #: pybiklib/dialogs.py:44 msgid "Simple" msgstr "" #. labels are the colored stickers on the cube #: pybiklib/dialogs.py:46 msgid "Labels" msgstr "" #: pybiklib/dialogs.py:104 data/ui/qt/main.ui.h:275 msgid "Select Puzzle" msgstr "" #. 1 slice, 2 slices, 3 slices, ... #: pybiklib/dialogs.py:134 pybiklib/dialogs.py:154 pybiklib/dialogs.py:180 #: pybiklib/dialogs.py:201 msgid "{} slice" msgid_plural "{} slices" msgstr[0] "" msgstr[1] "" #: pybiklib/dialogs.py:196 pybiklib/dialogs.py:225 msgid "{}×{} slices" msgstr "" #. The next strings form the text in the help dialog: #. Title of the 1st paragraph #: pybiklib/dialogs.py:290 msgid "Using the mouse to rotate the cube" msgstr "" #. Text of the 1st paragraph, followed by bullet list items #: pybiklib/dialogs.py:292 msgid "" "Position the mouse cursor over the puzzle and you will see an arrow that " "gives you a hint in which direction the slice under the mouse cursor will be " "rotated." msgstr "" #: pybiklib/dialogs.py:294 msgid "" "The left mouse button rotates a single slice of the cube in the direction of " "the arrow." msgstr "" #: pybiklib/dialogs.py:295 msgid "" "The right mouse button rotates a single slice of the cube against the " "direction of the arrow." msgstr "" #: pybiklib/dialogs.py:296 msgid "" "To rotate the whole cube instead of a single slice press the Ctrl key " "together with the mouse button." msgstr "" #. Title of the 2nd paragraph #: pybiklib/dialogs.py:298 msgid "Using the keyboard to rotate the cube" msgstr "" #. Text of the 2nd paragraph, followed by bullet list items #: pybiklib/dialogs.py:300 msgid "" "Make sure the keyboard focus is on the cube area (e.g. click on the " "background of the cube). The keys can be configured in the preferences " "dialog, the default is:" msgstr "" #. before the item text is a list of keys #: pybiklib/dialogs.py:303 pybiklib/dialogs.py:318 msgid "Moves the left, right, upper, down, front or back slice clockwise." msgstr "" #: pybiklib/dialogs.py:304 pybiklib/dialogs.py:319 msgid "Moves a slice couterclockwise." msgstr "" #: pybiklib/dialogs.py:305 pybiklib/dialogs.py:320 msgid "Moves the whole cube." msgstr "" #. Title of the 3rd paragraph #: pybiklib/dialogs.py:307 msgid "Other keys and buttons" msgstr "" #. bullet list items of the 3rd paragraph #: pybiklib/dialogs.py:309 msgid "Mouse wheel – Zoom in/out" msgstr "" #: pybiklib/dialogs.py:310 msgid "" "Arrow keys, Left mouse button on the background – Changes the direction of " "looking at the cube." msgstr "" #: pybiklib/dialogs.py:311 msgid "" "Moves keyboard focus to the sequence editor above the cube area where you " "can edit the move sequence in the notation described below. Hit enter when " "done." msgstr "" #. Title of the 4th paragraph #: pybiklib/dialogs.py:315 msgid "Notation for moves" msgstr "" #. Text of the 4th paragraph, followed by bullet list items #: pybiklib/dialogs.py:317 msgid "" "All moves, however they are made, are displayed progressively above the cube " "area:" msgstr "" #: pybiklib/dialogs.py:321 msgid "" "Moves the first, second or third slice from left clockwise. The allowed " "numbers are in the range from 1 to the count of parallel slices. \"l1\" is " "always the same as \"l\" and for the classic 3×3×3-Cube \"l2\" is the same " "as \"r2-\" and \"l3\" is the same as \"r-\"." msgstr "" #: pybiklib/dialogs.py:325 msgid "You can use a space to separate groups of moves." msgstr "" # translated by: Po-Chun Huang https://launchpad.net/~aphroteus on 2013-06-15 13:26:00 UTC #: pybiklib/dialogs.py:379 msgid "Pybik project website" msgstr "Pybik 專案網站" #: pybiklib/pluginlib.py:301 msgid "This plugin does not work for any model." msgstr "" #: pybiklib/pluginlib.py:303 pybiklib/pluginlib.py:306 msgid "This plugin only works for:" msgstr "" #: pybiklib/pluginlib.py:498 msgid "This puzzle is not solvable." msgstr "" # translated by: Po-Chun Huang https://launchpad.net/~aphroteus on 2013-06-15 13:28:07 UTC #. The following 6 words are for the antialiasing levels: disabled, ugly, low, medium, high, higher #: pybiklib/schema.py:211 msgid "disabled" msgstr "停用" # translated by: Po-Chun Huang https://launchpad.net/~aphroteus on 2013-06-15 13:29:55 UTC #: pybiklib/schema.py:211 msgid "ugly" msgstr "劣" # translated by: Po-Chun Huang https://launchpad.net/~aphroteus on 2013-06-15 13:29:55 UTC #: pybiklib/schema.py:211 msgid "low" msgstr "低" # translated by: Po-Chun Huang https://launchpad.net/~aphroteus on 2013-06-15 13:29:55 UTC #: pybiklib/schema.py:212 msgid "medium" msgstr "中" # translated by: Po-Chun Huang https://launchpad.net/~aphroteus on 2013-06-15 13:29:55 UTC #: pybiklib/schema.py:212 msgid "high" msgstr "高" # translated by: Po-Chun Huang https://launchpad.net/~aphroteus on 2013-06-15 13:29:55 UTC #: pybiklib/schema.py:212 msgid "higher" msgstr "更高" #: data/ui/qt/about.ui.h:212 msgid "About Pybik" msgstr "關於 Pybik" #: data/ui/qt/about.ui.h:213 msgid "Translators:" msgstr "翻譯人員:" #: data/ui/qt/about.ui.h:214 msgid "About" msgstr "關於" #: data/ui/qt/about.ui.h:215 msgid "Contribute" msgstr "" #: data/ui/qt/about.ui.h:216 msgid "License" msgstr "許可證" #: data/ui/qt/help.ui.h:53 data/ui/qt/main.ui.h:297 msgid "Help" msgstr "" # translated by: Po-Chun Huang https://launchpad.net/~aphroteus on 2013-06-15 13:49:01 UTC #: data/ui/qt/main.ui.h:272 msgid "&New Challenge" msgstr "" #: data/ui/qt/main.ui.h:273 msgid "Ne&w Solved" msgstr "" #: data/ui/qt/main.ui.h:274 msgid "&Quit" msgstr "離開 (&Q)" #: data/ui/qt/main.ui.h:276 msgid "&Set as Initial State" msgstr "" #: data/ui/qt/main.ui.h:277 msgid "&Reset Rotation" msgstr "" #: data/ui/qt/main.ui.h:278 msgid "&Preferences …" msgstr "偏好設定 ... (&P)" #: data/ui/qt/main.ui.h:279 msgid "&Status Bar" msgstr "狀態列 (&S)" #: data/ui/qt/main.ui.h:280 msgid "&Info …" msgstr "資訊 ... (&I)" #: data/ui/qt/main.ui.h:281 msgid "Rewind" msgstr "" #: data/ui/qt/main.ui.h:282 msgid "Previous" msgstr "上一個" #: data/ui/qt/main.ui.h:283 msgid "Stop" msgstr "停止" #: data/ui/qt/main.ui.h:284 msgid "Play" msgstr "玩" #: data/ui/qt/main.ui.h:285 msgid "Next" msgstr "下一個" #: data/ui/qt/main.ui.h:286 msgid "Forward" msgstr "" #: data/ui/qt/main.ui.h:287 msgid "Add Mark" msgstr "" #: data/ui/qt/main.ui.h:289 msgid "Mark the current place in the sequence of moves" msgstr "" #: data/ui/qt/main.ui.h:291 msgid "Remove Mark" msgstr "" #: data/ui/qt/main.ui.h:293 msgid "Remove the mark at the current place in the sequence of moves" msgstr "" #: data/ui/qt/main.ui.h:295 msgid "&Edit Bar" msgstr "編輯列 (&E)" #: data/ui/qt/main.ui.h:296 msgid "&Help …" msgstr "" #: data/ui/qt/preferences.ui.h:372 msgid "Preferences" msgstr "偏好設定" #: data/ui/qt/preferences.ui.h:373 msgid "Animation Speed:" msgstr "動畫速度:" #: data/ui/qt/preferences.ui.h:375 msgid "Mirror Distance:" msgstr "" #: data/ui/qt/preferences.ui.h:377 msgid "Quality:" msgstr "" #: data/ui/qt/preferences.ui.h:380 msgid "" "Lower antialiasing has better performance, higher antialiasing has better " "quality." msgstr "" #: data/ui/qt/preferences.ui.h:382 msgid "Antialiasing:" msgstr "" # translated by: Po-Chun Huang https://launchpad.net/~aphroteus on 2013-06-15 13:26:00 UTC #: data/ui/qt/preferences.ui.h:384 msgid "The program needs to be restarted for the changes to take effect." msgstr "程式需要重新啟動使變更生效。" #: data/ui/qt/preferences.ui.h:385 msgid "Graphic" msgstr "圖形" #: data/ui/qt/preferences.ui.h:386 msgid "Point and click, all directions" msgstr "" #: data/ui/qt/preferences.ui.h:387 msgid "Point and click, simplified" msgstr "" #: data/ui/qt/preferences.ui.h:388 msgid "Gestures" msgstr "" #: data/ui/qt/preferences.ui.h:389 msgid "Mouse" msgstr "滑鼠" #: data/ui/qt/preferences.ui.h:391 data/ui/qt/preferences.ui.h:393 msgid "Add" msgstr "新增" #: data/ui/qt/preferences.ui.h:395 data/ui/qt/preferences.ui.h:397 msgid "Remove" msgstr "移除" #: data/ui/qt/preferences.ui.h:399 data/ui/qt/preferences.ui.h:401 msgid "Reset" msgstr "重設" #: data/ui/qt/preferences.ui.h:402 msgid "Keys" msgstr "" #: data/ui/qt/preferences.ui.h:403 msgid "Color:" msgstr "色彩:" #: data/ui/qt/preferences.ui.h:405 msgid "Image File:" msgstr "影像檔案:" #: data/ui/qt/preferences.ui.h:407 msgid "Tiled" msgstr "" #: data/ui/qt/preferences.ui.h:408 msgid "Mosaic" msgstr "" #: data/ui/qt/preferences.ui.h:409 msgid "Background:" msgstr "背景:" #: data/ui/qt/preferences.ui.h:411 msgid "Appearance" msgstr "外觀" # translated by: Po-Chun Huang https://launchpad.net/~aphroteus on 2013-06-15 13:20:27 UTC #: pybiklib/ext/qt.py:1578 msgid "Move" msgstr "移動" #: pybiklib/ext/qt.py:1581 msgid "Key" msgstr "" # translated by: Po-Chun Huang https://launchpad.net/~aphroteus on 2013-06-15 13:18:45 UTC #: pybiklib/ext/qt.py:1682 msgid "Open Image" msgstr "開啟影像" # translated by: Po-Chun Huang https://launchpad.net/~aphroteus on 2013-06-15 13:16:56 UTC #: pybiklib/ext/qt.py:1720 msgid "plain" msgstr "素面" # translated by: Po-Chun Huang https://launchpad.net/~aphroteus on 2013-06-15 13:16:56 UTC #: pybiklib/ext/qt.py:1723 msgid "select …" msgstr "選擇 ..." # translated by: Po-Chun Huang https://launchpad.net/~aphroteus on 2013-06-15 13:16:56 UTC #: pybiklib/ext/qtui.py:94 msgid "Press a key …" msgstr "按一個鍵 ..." # translated by: Po-Chun Huang https://launchpad.net/~aphroteus on 2013-06-15 13:39:18 UTC #. Add whatever keywords you want in your language, separated by semicolons, last character must be a semicolon. These keywords are used when searching for applications in Unity, GNOME Shell, etc. #: data/app-meta/pybik.desktop.in:10 msgid "rubik;cube;puzzle;magic;" msgstr "rubik;cube;puzzle;magic;魔術;方塊;立方體;拼圖;" # translated by: Po-Chun Huang https://launchpad.net/~aphroteus on 2013-06-15 13:49:01 UTC #: data/plugins/01-challenges.plugins.py:18 #: data/plugins/01-challenges.plugins.py:21 #: data/plugins/01-challenges.plugins.py:24 #: data/plugins/01-challenges.plugins.py:27 #: data/plugins/01-challenges.plugins.py:30 #: data/plugins/01-challenges.plugins.py:33 #: data/plugins/01-challenges.plugins.py:36 #: data/plugins/01-challenges.plugins.py:39 #: data/plugins/01-challenges.plugins.py:42 #: data/plugins/01-challenges.plugins.py:45 #: data/plugins/01-challenges.plugins.py:48 msgid "Challenges" msgstr "挑戰" #: data/plugins/01-challenges.plugins.py:19 msgid "Solve random puzzle" msgstr "" #: data/plugins/01-challenges.plugins.py:22 #: data/plugins/01-challenges.plugins.py:25 #: data/plugins/01-challenges.plugins.py:28 #: data/plugins/01-challenges.plugins.py:31 #: data/plugins/01-challenges.plugins.py:34 #: data/plugins/01-challenges.plugins.py:37 #: data/plugins/01-challenges.plugins.py:40 #: data/plugins/01-challenges.plugins.py:43 #: data/plugins/01-challenges.plugins.py:46 #: data/plugins/01-challenges.plugins.py:49 msgid "Solve in {} move" msgid_plural "Solve in {} moves" msgstr[0] "" msgstr[1] "" #: data/plugins/10-beginners.plugins.py:31 #: data/plugins/10-beginners.plugins.py:34 #: data/plugins/10-beginners.plugins.py:56 #: data/plugins/10-beginners.plugins.py:73 #: data/plugins/10-beginners.plugins.py:100 #: data/plugins/10-beginners.plugins.py:118 #: data/plugins/10-beginners.plugins.py:140 #: data/plugins/10-beginners.plugins.py:158 #: data/plugins/14-leyan-lo.plugins.py:21 #: data/plugins/14-leyan-lo.plugins.py:24 #: data/plugins/14-leyan-lo.plugins.py:53 #: data/plugins/14-leyan-lo.plugins.py:74 #: data/plugins/14-leyan-lo.plugins.py:90 #: data/plugins/14-leyan-lo.plugins.py:107 #: data/plugins/14-leyan-lo.plugins.py:129 #: data/plugins/14-leyan-lo.plugins.py:170 #: data/plugins/150-spiegel.plugins.py:32 #: data/plugins/150-spiegel.plugins.py:35 #: data/plugins/150-spiegel.plugins.py:64 #: data/plugins/150-spiegel.plugins.py:85 #: data/plugins/150-spiegel.plugins.py:100 #: data/plugins/150-spiegel.plugins.py:113 #: data/plugins/150-spiegel.plugins.py:130 #: data/plugins/150-spiegel.plugins.py:141 #: data/plugins/151-spiegel-improved.plugins.py:20 #: data/plugins/151-spiegel-improved.plugins.py:23 #: data/plugins/151-spiegel-improved.plugins.py:68 #: data/plugins/151-spiegel-improved.plugins.py:107 #: data/plugins/151-spiegel-improved.plugins.py:139 #: data/plugins/151-spiegel-improved.plugins.py:165 #: data/plugins/151-spiegel-improved.plugins.py:183 #: data/plugins/151-spiegel-improved.plugins.py:197 #: data/plugins/20-2x2x2.plugins.py:18 data/plugins/20-2x2x2.plugins.py:21 #: data/plugins/20-2x2x2.plugins.py:37 data/plugins/20-2x2x2.plugins.py:55 msgid "Solvers" msgstr "" #: data/plugins/10-beginners.plugins.py:32 #: data/plugins/10-beginners.plugins.py:35 #: data/plugins/10-beginners.plugins.py:57 #: data/plugins/10-beginners.plugins.py:74 #: data/plugins/10-beginners.plugins.py:101 #: data/plugins/10-beginners.plugins.py:119 #: data/plugins/10-beginners.plugins.py:141 #: data/plugins/10-beginners.plugins.py:159 msgid "Beginner's method" msgstr "" #: data/plugins/10-beginners.plugins.py:36 #: data/plugins/14-leyan-lo.plugins.py:26 #: data/plugins/150-spiegel.plugins.py:37 #: data/plugins/151-spiegel-improved.plugins.py:25 msgid "Top edges" msgstr "" #: data/plugins/10-beginners.plugins.py:58 #: data/plugins/14-leyan-lo.plugins.py:55 #: data/plugins/150-spiegel.plugins.py:66 #: data/plugins/151-spiegel-improved.plugins.py:70 msgid "Top corners" msgstr "" #: data/plugins/10-beginners.plugins.py:75 #: data/plugins/14-leyan-lo.plugins.py:76 #: data/plugins/150-spiegel.plugins.py:87 #: data/plugins/151-spiegel-improved.plugins.py:109 msgid "Middle slice" msgstr "" #: data/plugins/10-beginners.plugins.py:102 #: data/plugins/14-leyan-lo.plugins.py:92 #: data/plugins/150-spiegel.plugins.py:115 #: data/plugins/151-spiegel-improved.plugins.py:167 msgid "Bottom edge orient" msgstr "" #: data/plugins/10-beginners.plugins.py:120 #: data/plugins/14-leyan-lo.plugins.py:131 #: data/plugins/150-spiegel.plugins.py:143 #: data/plugins/151-spiegel-improved.plugins.py:199 #: data/plugins/20-2x2x2.plugins.py:57 msgid "Bottom corner orient" msgstr "" #: data/plugins/10-beginners.plugins.py:142 #: data/plugins/14-leyan-lo.plugins.py:109 #: data/plugins/150-spiegel.plugins.py:132 #: data/plugins/151-spiegel-improved.plugins.py:185 #: data/plugins/20-2x2x2.plugins.py:39 msgid "Bottom corner place" msgstr "" #: data/plugins/10-beginners.plugins.py:160 #: data/plugins/14-leyan-lo.plugins.py:172 #: data/plugins/150-spiegel.plugins.py:102 #: data/plugins/151-spiegel-improved.plugins.py:141 msgid "Bottom edge place" msgstr "" #. Leyan Lo is the inventor of the solution #: data/plugins/14-leyan-lo.plugins.py:23 #: data/plugins/14-leyan-lo.plugins.py:25 #: data/plugins/14-leyan-lo.plugins.py:54 #: data/plugins/14-leyan-lo.plugins.py:75 #: data/plugins/14-leyan-lo.plugins.py:91 #: data/plugins/14-leyan-lo.plugins.py:108 #: data/plugins/14-leyan-lo.plugins.py:130 #: data/plugins/14-leyan-lo.plugins.py:171 msgid "Leyan Lo" msgstr "" # translated by: Po-Chun Huang https://launchpad.net/~aphroteus on 2013-06-15 13:51:44 UTC #. Spiegel is a german magazine #: data/plugins/150-spiegel.plugins.py:34 #: data/plugins/150-spiegel.plugins.py:36 #: data/plugins/150-spiegel.plugins.py:65 #: data/plugins/150-spiegel.plugins.py:86 #: data/plugins/150-spiegel.plugins.py:101 #: data/plugins/150-spiegel.plugins.py:114 #: data/plugins/150-spiegel.plugins.py:131 #: data/plugins/150-spiegel.plugins.py:142 msgid "Spiegel" msgstr "Spiegel" #. Spiegel is a german magazine #: data/plugins/151-spiegel-improved.plugins.py:22 #: data/plugins/151-spiegel-improved.plugins.py:24 #: data/plugins/151-spiegel-improved.plugins.py:69 #: data/plugins/151-spiegel-improved.plugins.py:108 #: data/plugins/151-spiegel-improved.plugins.py:140 #: data/plugins/151-spiegel-improved.plugins.py:166 #: data/plugins/151-spiegel-improved.plugins.py:184 #: data/plugins/151-spiegel-improved.plugins.py:198 msgid "Spiegel improved" msgstr "" # translated by: Po-Chun Huang https://launchpad.net/~aphroteus on 2013-06-15 13:52:39 UTC #: data/plugins/20-2x2x2.plugins.py:19 data/plugins/20-2x2x2.plugins.py:22 #: data/plugins/20-2x2x2.plugins.py:38 data/plugins/20-2x2x2.plugins.py:56 msgid "2×2×2" msgstr "2×2×2" #: data/plugins/20-2x2x2.plugins.py:23 msgid "Top slice" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:20 #: data/plugins/80-pretty-patterns.plugins.py:23 #: data/plugins/80-pretty-patterns.plugins.py:27 #: data/plugins/80-pretty-patterns.plugins.py:31 #: data/plugins/80-pretty-patterns.plugins.py:35 #: data/plugins/80-pretty-patterns.plugins.py:40 #: data/plugins/80-pretty-patterns.plugins.py:44 msgid "Stripes" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:49 #: data/plugins/80-pretty-patterns.plugins.py:53 msgid "Criss-Cross" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:57 msgid "Fried Eggs" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:61 msgid "Big Fried Eggs" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:65 #: data/plugins/80-pretty-patterns.plugins.py:69 msgid "4 Fried Eggs" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:73 msgid "2 Fried Eggs" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:77 msgid "Chessboard" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:83 msgid "Cross" msgstr "" # translated by: Po-Chun Huang https://launchpad.net/~aphroteus on 2013-06-15 13:53:50 UTC #: data/plugins/80-pretty-patterns.plugins.py:87 msgid "Zig Zag" msgstr "之字形" #. T is the shape formed by the cube labels. T-Time is a pun (Tea Time) and not suitable for literal translation. Don't translate it or use something common or whatever you think makes sense. #: data/plugins/80-pretty-patterns.plugins.py:93 #: data/plugins/80-pretty-patterns.plugins.py:96 #: data/plugins/80-pretty-patterns.plugins.py:100 #: data/plugins/80-pretty-patterns.plugins.py:104 #: data/plugins/80-pretty-patterns.plugins.py:108 #: data/plugins/80-pretty-patterns.plugins.py:112 msgid "T-Time" msgstr "" #. C is the shape formed by the cube labels #: data/plugins/80-pretty-patterns.plugins.py:118 msgid "C" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:121 msgid "Cube in a Cube" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:125 msgid "Striped Cube in a Cube" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:129 msgid "Six square cuboids" msgstr "" #. Superflip may be not translated, because it has a special meaning in the mathematical theory behind the Rubik's Cube. #: data/plugins/80-pretty-patterns.plugins.py:135 msgid "Superflip" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:138 msgid "Superflip easy" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:142 msgid "Green Mamba" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:146 msgid "Anaconda" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:150 msgid "Duck Feet" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:154 #: data/plugins/80-pretty-patterns.plugins.py:158 #: data/plugins/80-pretty-patterns.plugins.py:162 #: data/plugins/80-pretty-patterns.plugins.py:166 #: data/plugins/80-pretty-patterns.plugins.py:170 #: data/plugins/80-pretty-patterns.plugins.py:174 #: data/plugins/80-pretty-patterns.plugins.py:178 #: data/plugins/80-pretty-patterns.plugins.py:182 msgid "Plus" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:186 #: data/plugins/80-pretty-patterns.plugins.py:191 #: data/plugins/80-pretty-patterns.plugins.py:196 #: data/plugins/80-pretty-patterns.plugins.py:200 msgid "Minus" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:204 msgid "Volcano" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:208 msgid "Checkerboard (easy)" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:212 msgid "Checkerboard (fast)" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:216 msgid "Mixed Checkerboard" msgstr "" #: data/plugins/80-pretty-patterns.plugins.py:220 msgid "Tipi" msgstr "" #: data/plugins/90-library.plugins.py:18 data/plugins/90-library.plugins.py:22 #: data/plugins/90-library.plugins.py:26 data/plugins/90-library.plugins.py:30 #: data/plugins/90-library.plugins.py:34 data/plugins/90-library.plugins.py:38 #: data/plugins/90-library.plugins.py:42 data/plugins/90-library.plugins.py:46 #: data/plugins/90-library.plugins.py:50 data/plugins/90-library.plugins.py:54 #: data/plugins/90-library.plugins.py:58 data/plugins/90-library.plugins.py:62 #: data/plugins/90-library.plugins.py:66 data/plugins/90-library.plugins.py:70 #: data/plugins/90-library.plugins.py:74 data/plugins/90-library.plugins.py:78 #: data/plugins/90-library.plugins.py:82 data/plugins/90-library.plugins.py:86 #: data/plugins/90-library.plugins.py:91 data/plugins/90-library.plugins.py:96 #: data/plugins/90-library.plugins.py:101 #: data/plugins/90-library.plugins.py:105 #: data/plugins/90-library.plugins.py:110 #: data/plugins/90-library.plugins.py:115 #: data/plugins/90-library.plugins.py:119 #: data/plugins/90-library.plugins.py:123 #: data/plugins/90-library.plugins.py:127 msgid "Library" msgstr "" #: data/plugins/90-library.plugins.py:19 data/plugins/90-library.plugins.py:23 #: data/plugins/90-library.plugins.py:27 data/plugins/90-library.plugins.py:31 #: data/plugins/90-library.plugins.py:35 msgid "Swap edges" msgstr "" #: data/plugins/90-library.plugins.py:20 msgid "3 edges ⟳, top layer" msgstr "" #: data/plugins/90-library.plugins.py:24 msgid "3 edges ⟲, top layer" msgstr "" #: data/plugins/90-library.plugins.py:28 msgid "3 edges, middle layer" msgstr "" #: data/plugins/90-library.plugins.py:32 msgid "4 edges, front and right" msgstr "" #: data/plugins/90-library.plugins.py:36 msgid "4 edges, front and back" msgstr "" #: data/plugins/90-library.plugins.py:39 msgid "Swap 2 edges and 2 corners, top layer" msgstr "" #: data/plugins/90-library.plugins.py:43 data/plugins/90-library.plugins.py:47 msgid "Flip edges" msgstr "" #: data/plugins/90-library.plugins.py:44 msgid "4 edges" msgstr "" #: data/plugins/90-library.plugins.py:48 msgid "2 edges, top layer" msgstr "" #: data/plugins/90-library.plugins.py:51 data/plugins/90-library.plugins.py:55 #: data/plugins/90-library.plugins.py:59 data/plugins/90-library.plugins.py:63 #: data/plugins/90-library.plugins.py:67 data/plugins/90-library.plugins.py:71 msgid "Swap corners" msgstr "" #: data/plugins/90-library.plugins.py:52 data/plugins/90-library.plugins.py:76 msgid "2 corners, top layer" msgstr "" #: data/plugins/90-library.plugins.py:56 msgid "2 corners diagonal, top layer" msgstr "" #: data/plugins/90-library.plugins.py:60 data/plugins/90-library.plugins.py:80 msgid "3 corners ⟳, top layer" msgstr "" #: data/plugins/90-library.plugins.py:64 msgid "3 corners ⟲, top layer" msgstr "" #: data/plugins/90-library.plugins.py:68 msgid "4 corners, top layer" msgstr "" #: data/plugins/90-library.plugins.py:72 msgid "2 corners, partial sequence, top layer" msgstr "" #: data/plugins/90-library.plugins.py:75 data/plugins/90-library.plugins.py:79 #: data/plugins/90-library.plugins.py:83 data/plugins/90-library.plugins.py:87 msgid "Rotate corners" msgstr "" #: data/plugins/90-library.plugins.py:84 msgid "1 corner ⟳, partial sequence, top layer" msgstr "" #: data/plugins/90-library.plugins.py:88 msgid "1 corner ⟲, partial sequence, top layer" msgstr "" #: data/plugins/90-library.plugins.py:92 data/plugins/90-library.plugins.py:97 #: data/plugins/90-library.plugins.py:102 #: data/plugins/90-library.plugins.py:111 msgid "Rotate center" msgstr "" #. 2 rotations of the center face in the upper layer #: data/plugins/90-library.plugins.py:94 msgid "2×Up" msgstr "" #. Up clockwise and front clockwise #: data/plugins/90-library.plugins.py:99 msgid "Up ⟳ and front ⟳" msgstr "" #. Up clockwise and front counterclockwise #: data/plugins/90-library.plugins.py:104 msgid "Up ⟳ and front ⟲" msgstr "" #: data/plugins/90-library.plugins.py:106 msgid "Swap center parts, up and front" msgstr "" #. Up clockwise and down counterclockwise #: data/plugins/90-library.plugins.py:113 msgid "Up ⟳ and down ⟲" msgstr "" #: data/plugins/90-library.plugins.py:116 #: data/plugins/90-library.plugins.py:120 #: data/plugins/90-library.plugins.py:124 #: data/plugins/90-library.plugins.py:128 msgid "Misc" msgstr "" #. Yields in a rotated back layer, but the sequence of moves does not touch the back layer #: data/plugins/90-library.plugins.py:118 #: data/plugins/90-library.plugins.py:125 #: data/plugins/90-library.plugins.py:129 msgid "Back without back" msgstr "" #: data/plugins/90-library.plugins.py:121 msgid "2×Back without back" msgstr "" #: data/plugins/95-transformations.plugins.py:18 #: data/plugins/95-transformations.plugins.py:21 #: data/plugins/95-transformations.plugins.py:24 msgid "Move transformations" msgstr "" #: data/plugins/95-transformations.plugins.py:19 msgid "Invert move sequence" msgstr "" #: data/plugins/95-transformations.plugins.py:22 msgid "Normalize cube rotations" msgstr "" #: data/plugins/95-transformations.plugins.py:25 msgid "Normalize move sequence" msgstr "" # translated by: Po-Chun Huang https://launchpad.net/~aphroteus on 2013-06-15 13:28:07 UTC #: buildlib/modeldef.py:110 msgid "Brick" msgstr "磚塊" #: buildlib/modeldef.py:111 #, python-brace-format msgid "{0}×{1}×{2}-Brick" msgstr "" # translated by: Po-Chun Huang https://launchpad.net/~aphroteus on 2013-06-15 13:18:45 UTC #: buildlib/modeldef.py:112 msgid "Width:" msgstr "寬度:" # translated by: Po-Chun Huang https://launchpad.net/~aphroteus on 2013-06-15 13:35:24 UTC #: buildlib/modeldef.py:112 buildlib/modeldef.py:151 buildlib/modeldef.py:249 #: buildlib/modeldef.py:300 buildlib/modeldef.py:311 msgid "Height:" msgstr "高度:" # translated by: Po-Chun Huang https://launchpad.net/~aphroteus on 2013-06-15 13:35:24 UTC #: buildlib/modeldef.py:112 msgid "Depth:" msgstr "深度:" #: buildlib/modeldef.py:120 buildlib/modeldef.py:257 buildlib/modeldef.py:319 #: buildlib/modeldef.py:374 buildlib/modeldef.py:433 msgid "up" msgstr "" #: buildlib/modeldef.py:120 buildlib/modeldef.py:205 buildlib/modeldef.py:257 #: buildlib/modeldef.py:319 buildlib/modeldef.py:373 buildlib/modeldef.py:430 msgid "down" msgstr "" #: buildlib/modeldef.py:120 buildlib/modeldef.py:205 buildlib/modeldef.py:257 msgid "left" msgstr "" # translated by: Po-Chun Huang https://launchpad.net/~aphroteus on 2013-06-15 13:20:27 UTC #: buildlib/modeldef.py:120 buildlib/modeldef.py:205 buildlib/modeldef.py:257 msgid "right" msgstr "" # translated by: Po-Chun Huang https://launchpad.net/~aphroteus on 2013-06-15 13:18:45 UTC #: buildlib/modeldef.py:120 buildlib/modeldef.py:374 msgid "front" msgstr "" #: buildlib/modeldef.py:120 buildlib/modeldef.py:205 buildlib/modeldef.py:257 #: buildlib/modeldef.py:320 buildlib/modeldef.py:373 msgid "back" msgstr "" # translated by: Po-Chun Huang https://launchpad.net/~aphroteus on 2013-06-15 13:28:07 UTC #: buildlib/modeldef.py:149 msgid "Tower" msgstr "塔" #: buildlib/modeldef.py:150 #, python-brace-format msgid "{0}×{1}-Tower" msgstr "" # translated by: Po-Chun Huang https://launchpad.net/~aphroteus on 2013-06-15 13:18:45 UTC #: buildlib/modeldef.py:151 buildlib/modeldef.py:249 buildlib/modeldef.py:300 #: buildlib/modeldef.py:311 msgid "Basis:" msgstr "基礎:" # translated by: Po-Chun Huang https://launchpad.net/~aphroteus on 2013-06-15 13:28:07 UTC #: buildlib/modeldef.py:163 msgid "Cube" msgstr "立方體" #: buildlib/modeldef.py:164 #, python-brace-format msgid "{0}×{0}×{0}-Cube" msgstr "" # translated by: Po-Chun Huang https://launchpad.net/~aphroteus on 2013-06-15 13:18:45 UTC #: buildlib/modeldef.py:165 buildlib/modeldef.py:197 buildlib/modeldef.py:365 #: buildlib/modeldef.py:422 msgid "Size:" msgstr "大小:" #: buildlib/modeldef.py:177 buildlib/modeldef.py:178 msgid "Void Cube" msgstr "" #: buildlib/modeldef.py:195 msgid "Tetrahedron" msgstr "" #: buildlib/modeldef.py:196 #, python-brace-format msgid "{0}-Tetrahedron" msgstr "" #: buildlib/modeldef.py:247 msgid "Triangular Prism" msgstr "" #: buildlib/modeldef.py:248 #, python-brace-format msgid "{0}×{1} Triangular Prism" msgstr "" #: buildlib/modeldef.py:298 msgid "Triangular Prism (complex)" msgstr "" #: buildlib/modeldef.py:299 #, python-brace-format msgid "{0}×{1} Triangular Prism (complex)" msgstr "" #: buildlib/modeldef.py:309 msgid "Pentagonal Prism" msgstr "" #: buildlib/modeldef.py:310 #, python-brace-format msgid "{0}×{1} Pentagonal Prism" msgstr "" #: buildlib/modeldef.py:320 buildlib/modeldef.py:373 msgid "front-right" msgstr "" #: buildlib/modeldef.py:320 buildlib/modeldef.py:374 msgid "back-right" msgstr "" #: buildlib/modeldef.py:320 buildlib/modeldef.py:374 msgid "back-left" msgstr "" #: buildlib/modeldef.py:320 buildlib/modeldef.py:373 msgid "front-left" msgstr "" #: buildlib/modeldef.py:354 msgid "Pentagonal Prism (stretched)" msgstr "" #: buildlib/modeldef.py:355 #, python-brace-format msgid "{0}×{1} Pentagonal Prism (stretched)" msgstr "" #: buildlib/modeldef.py:363 msgid "Octahedron" msgstr "" #: buildlib/modeldef.py:364 #, python-brace-format msgid "{0}-Octahedron" msgstr "" #: buildlib/modeldef.py:420 msgid "Dodecahedron" msgstr "" #: buildlib/modeldef.py:421 #, python-brace-format msgid "{0}-Dodecahedron" msgstr "" #: buildlib/modeldef.py:430 msgid "down-back-right" msgstr "" #: buildlib/modeldef.py:430 msgid "down-front-right" msgstr "" #: buildlib/modeldef.py:431 msgid "down-front" msgstr "" #: buildlib/modeldef.py:431 msgid "down-front-left" msgstr "" #: buildlib/modeldef.py:431 msgid "down-back-left" msgstr "" #: buildlib/modeldef.py:432 msgid "up-back" msgstr "" #: buildlib/modeldef.py:432 msgid "up-back-right" msgstr "" #: buildlib/modeldef.py:432 msgid "up-front-right" msgstr "" #: buildlib/modeldef.py:433 msgid "up-front-left" msgstr "" #: buildlib/modeldef.py:433 msgid "up-back-left" msgstr "" pybik-3.0/po/it.po0000664000175000017500000017541613173052130014245 0ustar barccbarcc00000000000000# Italian translation for pybik # Copyright (c) 2013-2017 Rosetta Contributors and Canonical Ltd 2013 # This file is distributed under the same license as the pybik package. # FIRST AUTHOR , 2013. # msgid "" msgstr "" "Project-Id-Version: pybik\n" "Report-Msgid-Bugs-To: https://bugs.launchpad.net/pybik/+filebug\n" "POT-Creation-Date: 2017-09-10 21:58+0200\n" "PO-Revision-Date: 2017-09-17 05:55+0000\n" "Last-Translator: Claudio Arseni \n" "Language-Team: Italian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Launchpad-Export-Date: 2017-09-18 05:31+0000\n" "X-Generator: Launchpad (build 18449)\n" "Language: it\n" # translated by: Gianfranco Frisani https://launchpad.net/~gfrisani on 2014-02-01 11:28:38 UTC #: pybiklib/application.py:294 msgid "Press the Esc key to exit Edit Mode" msgstr "Premi il tasto Esc per uscire dalla modalità Modifica" # translated by: acc01291 https://launchpad.net/~acc01291 on 2013-06-09 10:43:48 UTC # reviewed by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2013-06-15 15:10:09 UTC #. substitution for {move_text} in statusbar text #: pybiklib/application.py:302 #, python-brace-format msgid "{current} / {total} move" msgid_plural "{current} / {total} moves" msgstr[0] "{current} / {total} mossa" msgstr[1] "{current} / {total} mosse" # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2013-06-08 07:21:14 UTC #. substitution for {solved_text} in statusbar text #: pybiklib/application.py:306 msgid "solved" msgstr "risolto" # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2013-06-08 07:21:14 UTC #: pybiklib/application.py:306 msgid "not solved" msgstr "non risolto" # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2017-09-10 10:43:42 UTC # reviewed by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2013-06-08 07:21:14 UTC #. statusbar text #: pybiklib/application.py:309 #, python-brace-format msgid "{move_text}, {solved_text}" msgstr "{move_text}, {solved_text}" # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2013-06-15 15:10:09 UTC #: pybiklib/application.py:314 msgid "Congratulations, you have solved the puzzle!" msgstr "Congratulazioni, hai risolto il rompicapo!" # translated by: acc01291 https://launchpad.net/~acc01291 on 2013-06-02 17:46:03 UTC # reviewed by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2013-06-08 07:21:14 UTC #. Name of the application, probably should not be translated. #: pybiklib/config.py:35 data/ui/qt/main.ui.h:271 #: data/app-meta/pybik.desktop.in:3 msgid "Pybik" msgstr "Pybik" # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-04-25 08:45:50 UTC #. short description #: pybiklib/config.py:65 data/app-meta/pybik.desktop.in:4 msgid "Rubik's cube game" msgstr "Gioco del cubo di Rubik" # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-07-21 01:59:26 UTC #. The next 7 lines belong together and form the long description #: pybiklib/config.py:68 msgid "Pybik is a 3D puzzle game about the cube invented by Ernő Rubik." msgstr "Pybik è un rompicapo in 3D basato sul cubo inventato da Ernő Rubik." #: pybiklib/config.py:70 msgid "" "Various 3D puzzles, such as cubes, towers, prisms, tetrahedra, octahedra, " "dodecahedra and many more" msgstr "" # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-07-21 01:59:26 UTC #: pybiklib/config.py:71 msgid "Solvers for some puzzles" msgstr "Risolutori per alcuni rompicapo" # translated by: acc01291 https://launchpad.net/~acc01291 on 2013-06-02 18:58:07 UTC # reviewed by: Gianfranco Frisani https://launchpad.net/~gfrisani on 2014-02-01 18:24:12 UTC #. Use something that is common in the Rubik scene in your language, sometimes it's just the equivalent of "patterns". #: pybiklib/config.py:72 data/plugins/80-pretty-patterns.plugins.py:19 #: data/plugins/80-pretty-patterns.plugins.py:22 #: data/plugins/80-pretty-patterns.plugins.py:26 #: data/plugins/80-pretty-patterns.plugins.py:30 #: data/plugins/80-pretty-patterns.plugins.py:34 #: data/plugins/80-pretty-patterns.plugins.py:39 #: data/plugins/80-pretty-patterns.plugins.py:43 #: data/plugins/80-pretty-patterns.plugins.py:48 #: data/plugins/80-pretty-patterns.plugins.py:52 #: data/plugins/80-pretty-patterns.plugins.py:56 #: data/plugins/80-pretty-patterns.plugins.py:60 #: data/plugins/80-pretty-patterns.plugins.py:64 #: data/plugins/80-pretty-patterns.plugins.py:68 #: data/plugins/80-pretty-patterns.plugins.py:72 #: data/plugins/80-pretty-patterns.plugins.py:76 #: data/plugins/80-pretty-patterns.plugins.py:82 #: data/plugins/80-pretty-patterns.plugins.py:86 #: data/plugins/80-pretty-patterns.plugins.py:91 #: data/plugins/80-pretty-patterns.plugins.py:95 #: data/plugins/80-pretty-patterns.plugins.py:99 #: data/plugins/80-pretty-patterns.plugins.py:103 #: data/plugins/80-pretty-patterns.plugins.py:107 #: data/plugins/80-pretty-patterns.plugins.py:111 #: data/plugins/80-pretty-patterns.plugins.py:116 #: data/plugins/80-pretty-patterns.plugins.py:120 #: data/plugins/80-pretty-patterns.plugins.py:124 #: data/plugins/80-pretty-patterns.plugins.py:128 #: data/plugins/80-pretty-patterns.plugins.py:133 #: data/plugins/80-pretty-patterns.plugins.py:137 #: data/plugins/80-pretty-patterns.plugins.py:141 #: data/plugins/80-pretty-patterns.plugins.py:145 #: data/plugins/80-pretty-patterns.plugins.py:149 #: data/plugins/80-pretty-patterns.plugins.py:153 #: data/plugins/80-pretty-patterns.plugins.py:157 #: data/plugins/80-pretty-patterns.plugins.py:161 #: data/plugins/80-pretty-patterns.plugins.py:165 #: data/plugins/80-pretty-patterns.plugins.py:169 #: data/plugins/80-pretty-patterns.plugins.py:173 #: data/plugins/80-pretty-patterns.plugins.py:177 #: data/plugins/80-pretty-patterns.plugins.py:181 #: data/plugins/80-pretty-patterns.plugins.py:185 #: data/plugins/80-pretty-patterns.plugins.py:190 #: data/plugins/80-pretty-patterns.plugins.py:195 #: data/plugins/80-pretty-patterns.plugins.py:199 #: data/plugins/80-pretty-patterns.plugins.py:203 #: data/plugins/80-pretty-patterns.plugins.py:207 #: data/plugins/80-pretty-patterns.plugins.py:211 #: data/plugins/80-pretty-patterns.plugins.py:215 #: data/plugins/80-pretty-patterns.plugins.py:219 msgid "Pretty patterns" msgstr "Modelli graziosi" # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-07-21 01:59:26 UTC #: pybiklib/config.py:73 msgid "Editor for move sequences" msgstr "Editor sequenze di mosse" # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-07-21 01:59:26 UTC #: pybiklib/config.py:74 msgid "Custom colors and images on the surface of the puzzles" msgstr "" # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2013-06-27 07:43:08 UTC #: pybiklib/config.py:78 msgid "" "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.\n" "\n" "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." msgstr "" "Questo programma è un software libero; è possibile ridistribuirlo e/o " "modificarlo secondo i termini della licenza GNU General Public License, come " "pubblicata dalla Free Software Foundation; versione 3 della licenza, o (a " "scelta) una versione più recente.\n" "\n" "Questo programma è distribuito nella speranza che possa risultare utile, ma " "SENZA ALCUNA GARANZIA; nemmeno la garanzia implicita di COMMERCIABILITÀ o " "APPLICABILITÀ PER UNO SCOPO PARTICOLARE. Per maggiori dettagli consultare la " "GNU General Public License." # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2013-06-27 07:43:08 UTC #. Text between "<" and ">" is expanded to a link by the program and should not be modified. #. Text between "" and "<|>" is the translatable text for the link. #: pybiklib/config.py:90 msgid "" "Read the full text of the GNU General Public " "License<|> or see ." msgstr "" "Leggere il testo integrale della GNU General Public " "License<|> o consultare consultare ." # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-04-25 08:46:41 UTC #: pybiklib/config.py:93 msgid "" "You should have received a copy of the GNU General Public License along with " "this program. If not, see ." msgstr "" "Una copia della licenza GNU General Public License dovrebbe essere stata " "fornita con questo programma. In caso contrario consultare " "." # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2017-09-10 10:43:42 UTC #: pybiklib/config.py:98 #, python-brace-format msgid "" "If you find any bugs in Pybik or have a suggestion for an improvement then " "please submit a <{CONTACT_FILEBUG}|>bug report<|>." msgstr "" "Se si trova un bug in Pybik o si ha un suggerimento per un miglioramento, è " "possibile inviare un <{CONTACT_FILEBUG}|>bug report<|>." # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2013-06-27 07:49:49 UTC #: pybiklib/config.py:103 msgid "" "Translations are managed by the " "Launchpad " "translation group<|>.\n" "\n" "If you want help to translate Pybik to your language you can do it through " "the web interface<|>.\n" "\n" "Read more about \"Translating with " "Launchpad\"<|> and " "\"Starting to " "translate\"<|>." msgstr "" "Le traduzioni sono gestite dal " "gruppo di " "traduzione su Launchpad<|>.\n" "\n" "Per contribuire alla traduzione di Pybik nella propria lingua utilizzare " "l'interfaccia web<|>.\n" "\n" "Per maggiori dettagli consultare " "\"Translating with Launchpad\"<|> " "e \"Starting " "to translate\"<|>." # translated by: Gianfranco Frisani https://launchpad.net/~gfrisani on 2015-03-28 22:59:32 UTC #: pybiklib/dialogs.py:44 msgid "Lighting" msgstr "Luminosità" # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-04-25 08:46:41 UTC #: pybiklib/dialogs.py:44 msgid "Simple" msgstr "Semplice" #. labels are the colored stickers on the cube #: pybiklib/dialogs.py:46 msgid "Labels" msgstr "" # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-04-25 10:12:45 UTC #: pybiklib/dialogs.py:104 data/ui/qt/main.ui.h:275 msgid "Select Puzzle" msgstr "Seleziona un rompicapo" # translated by: acc01291 https://launchpad.net/~acc01291 on 2013-06-02 18:58:07 UTC # reviewed by: Gianfranco Frisani https://launchpad.net/~gfrisani on 2014-02-01 18:24:12 UTC #. 1 slice, 2 slices, 3 slices, ... #: pybiklib/dialogs.py:134 pybiklib/dialogs.py:154 pybiklib/dialogs.py:180 #: pybiklib/dialogs.py:201 msgid "{} slice" msgid_plural "{} slices" msgstr[0] "" msgstr[1] "" #: pybiklib/dialogs.py:196 pybiklib/dialogs.py:225 msgid "{}×{} slices" msgstr "" # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-04-25 08:52:53 UTC #. The next strings form the text in the help dialog: #. Title of the 1st paragraph #: pybiklib/dialogs.py:290 msgid "Using the mouse to rotate the cube" msgstr "Usare il mouse per ruotare il cubo" # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-04-25 08:52:53 UTC #. Text of the 1st paragraph, followed by bullet list items #: pybiklib/dialogs.py:292 msgid "" "Position the mouse cursor over the puzzle and you will see an arrow that " "gives you a hint in which direction the slice under the mouse cursor will be " "rotated." msgstr "" "Posizionare il puntatore del mouse sul cubo. Apparirà una freccia che " "mostrerà un suggerimento sulla direzione in cui la striscia sotto il " "puntatore verrà ruotata." # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-04-25 08:52:53 UTC #: pybiklib/dialogs.py:294 msgid "" "The left mouse button rotates a single slice of the cube in the direction of " "the arrow." msgstr "" "Il pulsante sinistro del mouse ruota una singola striscia del cubo nella " "direzione della freccia." # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-04-25 08:52:53 UTC #: pybiklib/dialogs.py:295 msgid "" "The right mouse button rotates a single slice of the cube against the " "direction of the arrow." msgstr "" "Il pulsante destro del mouse ruota una singola striscia del cubo nella " "direzione opposta a quella della freccia." # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-04-25 09:02:09 UTC #: pybiklib/dialogs.py:296 msgid "" "To rotate the whole cube instead of a single slice press the Ctrl key " "together with the mouse button." msgstr "" "Per ruotare l'intero cubo anziché una singola striscia premere il tasto Ctrl " "insieme al pulsante del mouse." # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-04-25 08:52:53 UTC #. Title of the 2nd paragraph #: pybiklib/dialogs.py:298 msgid "Using the keyboard to rotate the cube" msgstr "Usare la tastiera per ruotare il cubo" # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-04-25 09:14:50 UTC #. Text of the 2nd paragraph, followed by bullet list items #: pybiklib/dialogs.py:300 msgid "" "Make sure the keyboard focus is on the cube area (e.g. click on the " "background of the cube). The keys can be configured in the preferences " "dialog, the default is:" msgstr "" "Assicurarsi che il focus della tastiera sia nell'area del cubo (per esempio " "facendo clic sullo sfondo del cubo). I tasti possono essere configurati nel " "dialogo delle preferenze. La configurazione predefinita è:" # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-04-25 12:06:02 UTC #. before the item text is a list of keys #: pybiklib/dialogs.py:303 pybiklib/dialogs.py:318 msgid "Moves the left, right, upper, down, front or back slice clockwise." msgstr "" "Muove le strisce sinistra, destra, superiore, inferiore, anteriore o " "posteriore in senso orario." # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-04-25 09:14:50 UTC #: pybiklib/dialogs.py:304 pybiklib/dialogs.py:319 msgid "Moves a slice couterclockwise." msgstr "Muovi una striscia in senso orario." # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-04-25 09:02:09 UTC #: pybiklib/dialogs.py:305 pybiklib/dialogs.py:320 msgid "Moves the whole cube." msgstr "Sposta l'intero cubo." # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-04-25 08:55:35 UTC #. Title of the 3rd paragraph #: pybiklib/dialogs.py:307 msgid "Other keys and buttons" msgstr "Altri tasti e pulsanti" # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-04-25 08:55:35 UTC #. bullet list items of the 3rd paragraph #: pybiklib/dialogs.py:309 msgid "Mouse wheel – Zoom in/out" msgstr "Rotella del mouse - aumenta/diminuisce lo zoom" # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-04-25 08:55:35 UTC #: pybiklib/dialogs.py:310 msgid "" "Arrow keys, Left mouse button on the background – Changes the direction of " "looking at the cube." msgstr "" "Tasti freccia, pulsante sinistro del mouse in secondo piano - cambiano la " "vista del cubo" # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-04-25 10:17:02 UTC #: pybiklib/dialogs.py:311 msgid "" "Moves keyboard focus to the sequence editor above the cube area where you " "can edit the move sequence in the notation described below. Hit enter when " "done." msgstr "" "Sposta il focus della tastiera all'editor delle sequenze sopra l'area del " "cubo dove è possibile modificare le sequenze di mosse nella notazione " "descritta sotto. Premere Invio quando terminato." # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-04-25 10:09:20 UTC #. Title of the 4th paragraph #: pybiklib/dialogs.py:315 msgid "Notation for moves" msgstr "Notazione per le mosse" # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-04-25 09:02:09 UTC #. Text of the 4th paragraph, followed by bullet list items #: pybiklib/dialogs.py:317 msgid "" "All moves, however they are made, are displayed progressively above the cube " "area:" msgstr "" "Tutte le mosse, quando vengono eseguite, vengono mostrate progressivamente " "sopra l'area del cubo:" # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-04-25 10:25:10 UTC #: pybiklib/dialogs.py:321 msgid "" "Moves the first, second or third slice from left clockwise. The allowed " "numbers are in the range from 1 to the count of parallel slices. \"l1\" is " "always the same as \"l\" and for the classic 3×3×3-Cube \"l2\" is the same " "as \"r2-\" and \"l3\" is the same as \"r-\"." msgstr "" "Muovi la prima, la seconda e la terza striscia da sinistra in senso orario. " "I numeri consentiti sono nell'intervallo da 1 al conteggio delle strisce " "parallele. \"l1\" è sempre uguale a \"l\" e per il classico cubo 3×3×3 " "\"l2\" è uguale a \"r2-\" e \"l3\" è uguale a \"r-\"." # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-04-25 09:05:10 UTC #: pybiklib/dialogs.py:325 msgid "You can use a space to separate groups of moves." msgstr "È possibile usare uno spazio per separare gruppi di mosse." # translated by: acc01291 https://launchpad.net/~acc01291 on 2013-06-02 18:08:31 UTC # reviewed by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2013-06-09 10:02:59 UTC #: pybiklib/dialogs.py:379 msgid "Pybik project website" msgstr "Sito del progetto Pybik" # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-04-25 08:55:35 UTC #: pybiklib/pluginlib.py:301 msgid "This plugin does not work for any model." msgstr "Questo plugin non funziona per alcun modello." # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-04-25 08:57:15 UTC #: pybiklib/pluginlib.py:303 pybiklib/pluginlib.py:306 msgid "This plugin only works for:" msgstr "Questo plugin funziona solo con:" # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-04-25 10:12:45 UTC #: pybiklib/pluginlib.py:498 msgid "This puzzle is not solvable." msgstr "Questa rompicapo è irrisolvibile." # translated by: Gianfranco Frisani https://launchpad.net/~gfrisani on 2014-02-01 18:10:13 UTC #. The following 6 words are for the antialiasing levels: disabled, ugly, low, medium, high, higher #: pybiklib/schema.py:211 msgid "disabled" msgstr "Disabilitato" # translated by: Gianfranco Frisani https://launchpad.net/~gfrisani on 2014-02-01 18:10:13 UTC #: pybiklib/schema.py:211 msgid "ugly" msgstr "Brutto" # translated by: acc01291 https://launchpad.net/~acc01291 on 2013-06-02 18:11:54 UTC # reviewed by: Gianfranco Frisani https://launchpad.net/~gfrisani on 2014-02-01 18:10:13 UTC #: pybiklib/schema.py:211 msgid "low" msgstr "Basso" # translated by: acc01291 https://launchpad.net/~acc01291 on 2013-06-02 18:11:54 UTC # reviewed by: Gianfranco Frisani https://launchpad.net/~gfrisani on 2014-02-01 18:10:13 UTC #: pybiklib/schema.py:212 msgid "medium" msgstr "Medio" # translated by: acc01291 https://launchpad.net/~acc01291 on 2013-06-02 18:11:54 UTC # reviewed by: Gianfranco Frisani https://launchpad.net/~gfrisani on 2014-02-01 18:10:13 UTC #: pybiklib/schema.py:212 msgid "high" msgstr "Alto" # translated by: Gianfranco Frisani https://launchpad.net/~gfrisani on 2014-02-02 08:56:15 UTC #: pybiklib/schema.py:212 msgid "higher" msgstr "Massima" # translated by: Gianfranco Frisani https://launchpad.net/~gfrisani on 2015-03-28 22:59:32 UTC #: data/ui/qt/about.ui.h:212 msgid "About Pybik" msgstr "Informazioni su Pybik" # translated by: Gianfranco Frisani https://launchpad.net/~gfrisani on 2015-03-28 22:59:32 UTC #: data/ui/qt/about.ui.h:213 msgid "Translators:" msgstr "Traduttori:" # translated by: Gianfranco Frisani https://launchpad.net/~gfrisani on 2015-03-28 22:59:32 UTC #: data/ui/qt/about.ui.h:214 msgid "About" msgstr "Informazioni" #: data/ui/qt/about.ui.h:215 msgid "Contribute" msgstr "" # translated by: Gianfranco Frisani https://launchpad.net/~gfrisani on 2015-03-28 22:59:32 UTC #: data/ui/qt/about.ui.h:216 msgid "License" msgstr "Licenza" # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-04-25 08:57:15 UTC #: data/ui/qt/help.ui.h:53 data/ui/qt/main.ui.h:297 msgid "Help" msgstr "Aiuto" # translated by: acc01291 https://launchpad.net/~acc01291 on 2013-06-02 18:44:55 UTC # reviewed by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2013-06-15 16:00:49 UTC #: data/ui/qt/main.ui.h:272 msgid "&New Challenge" msgstr "" # translated by: Gianfranco Frisani https://launchpad.net/~gfrisani on 2015-03-28 22:59:32 UTC #: data/ui/qt/main.ui.h:273 msgid "Ne&w Solved" msgstr "N&uovo risolto" # translated by: Gianfranco Frisani https://launchpad.net/~gfrisani on 2015-03-28 22:59:32 UTC #: data/ui/qt/main.ui.h:274 msgid "&Quit" msgstr "&Esci" # translated by: Gianfranco Frisani https://launchpad.net/~gfrisani on 2015-03-28 22:59:32 UTC #: data/ui/qt/main.ui.h:276 msgid "&Set as Initial State" msgstr "&Imposta come stato iniziale" # translated by: Gianfranco Frisani https://launchpad.net/~gfrisani on 2015-03-28 22:59:32 UTC #: data/ui/qt/main.ui.h:277 msgid "&Reset Rotation" msgstr "&Reimposta la rotazione" # translated by: Gianfranco Frisani https://launchpad.net/~gfrisani on 2015-03-28 22:59:32 UTC #: data/ui/qt/main.ui.h:278 msgid "&Preferences …" msgstr "&Preferenze..." # translated by: Gianfranco Frisani https://launchpad.net/~gfrisani on 2015-03-28 22:59:32 UTC #: data/ui/qt/main.ui.h:279 msgid "&Status Bar" msgstr "Barra di &stato" # translated by: Gianfranco Frisani https://launchpad.net/~gfrisani on 2015-03-28 22:59:32 UTC #: data/ui/qt/main.ui.h:280 msgid "&Info …" msgstr "I&nformazioni" # translated by: Gianfranco Frisani https://launchpad.net/~gfrisani on 2015-03-28 22:59:32 UTC #: data/ui/qt/main.ui.h:281 msgid "Rewind" msgstr "Indietro" # translated by: Gianfranco Frisani https://launchpad.net/~gfrisani on 2015-03-28 22:59:32 UTC #: data/ui/qt/main.ui.h:282 msgid "Previous" msgstr "Precedente" # translated by: Gianfranco Frisani https://launchpad.net/~gfrisani on 2015-03-28 22:59:32 UTC #: data/ui/qt/main.ui.h:283 msgid "Stop" msgstr "Interrompi" # translated by: Gianfranco Frisani https://launchpad.net/~gfrisani on 2015-03-28 22:59:32 UTC #: data/ui/qt/main.ui.h:284 msgid "Play" msgstr "Riproduci" # translated by: Gianfranco Frisani https://launchpad.net/~gfrisani on 2015-03-28 22:59:32 UTC #: data/ui/qt/main.ui.h:285 msgid "Next" msgstr "Successiva" # translated by: Gianfranco Frisani https://launchpad.net/~gfrisani on 2015-03-28 22:59:32 UTC #: data/ui/qt/main.ui.h:286 msgid "Forward" msgstr "Avanti" # translated by: Gianfranco Frisani https://launchpad.net/~gfrisani on 2015-03-28 22:59:32 UTC #: data/ui/qt/main.ui.h:287 msgid "Add Mark" msgstr "Aggiungi marcatore" # translated by: Gianfranco Frisani https://launchpad.net/~gfrisani on 2015-03-28 22:59:32 UTC #: data/ui/qt/main.ui.h:289 msgid "Mark the current place in the sequence of moves" msgstr "Segna la posizione corrente nella sequenza di mosse" # translated by: Gianfranco Frisani https://launchpad.net/~gfrisani on 2015-03-28 22:59:32 UTC #: data/ui/qt/main.ui.h:291 msgid "Remove Mark" msgstr "Rimuovi marcatore" # translated by: Gianfranco Frisani https://launchpad.net/~gfrisani on 2015-03-28 22:59:32 UTC #: data/ui/qt/main.ui.h:293 msgid "Remove the mark at the current place in the sequence of moves" msgstr "" "Rimuovi il marcatore nella posizione corrente nella sequenza di mosse" # translated by: Gianfranco Frisani https://launchpad.net/~gfrisani on 2015-03-28 22:59:32 UTC #: data/ui/qt/main.ui.h:295 msgid "&Edit Bar" msgstr "&Barra delle modifiche" # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-04-25 08:57:15 UTC #: data/ui/qt/main.ui.h:296 msgid "&Help …" msgstr "A&iuto ..." # translated by: Gianfranco Frisani https://launchpad.net/~gfrisani on 2015-03-28 22:59:32 UTC #: data/ui/qt/preferences.ui.h:372 msgid "Preferences" msgstr "Preferenze" # translated by: Gianfranco Frisani https://launchpad.net/~gfrisani on 2015-03-28 22:59:32 UTC #: data/ui/qt/preferences.ui.h:373 msgid "Animation Speed:" msgstr "Velocità animazione:" # translated by: Gianfranco Frisani https://launchpad.net/~gfrisani on 2015-03-28 22:59:32 UTC #: data/ui/qt/preferences.ui.h:375 msgid "Mirror Distance:" msgstr "Distanza specchi:" # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-04-25 08:57:15 UTC #: data/ui/qt/preferences.ui.h:377 msgid "Quality:" msgstr "Qualità:" # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-04-25 09:05:10 UTC #: data/ui/qt/preferences.ui.h:380 msgid "" "Lower antialiasing has better performance, higher antialiasing has better " "quality." msgstr "" "Un antialiasing più basso offre prestazioni migliori, mentre uno maggiore " "offre una migliore qualità." # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-04-25 08:57:15 UTC #: data/ui/qt/preferences.ui.h:382 msgid "Antialiasing:" msgstr "Antialiasing:" # translated by: acc01291 https://launchpad.net/~acc01291 on 2013-06-02 18:02:23 UTC # reviewed by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2013-06-15 15:16:57 UTC #: data/ui/qt/preferences.ui.h:384 msgid "The program needs to be restarted for the changes to take effect." msgstr "" "Il programma deve essere riavviato affinché le modifiche abbiano effetto." # translated by: Gianfranco Frisani https://launchpad.net/~gfrisani on 2015-03-28 22:59:32 UTC #: data/ui/qt/preferences.ui.h:385 msgid "Graphic" msgstr "Grafica" #: data/ui/qt/preferences.ui.h:386 msgid "Point and click, all directions" msgstr "" #: data/ui/qt/preferences.ui.h:387 msgid "Point and click, simplified" msgstr "" #: data/ui/qt/preferences.ui.h:388 msgid "Gestures" msgstr "" # translated by: Gianfranco Frisani https://launchpad.net/~gfrisani on 2015-03-28 22:59:32 UTC #: data/ui/qt/preferences.ui.h:389 msgid "Mouse" msgstr "Mouse" # translated by: Gianfranco Frisani https://launchpad.net/~gfrisani on 2015-03-28 22:59:32 UTC #: data/ui/qt/preferences.ui.h:391 data/ui/qt/preferences.ui.h:393 msgid "Add" msgstr "Aggiugi" # translated by: Gianfranco Frisani https://launchpad.net/~gfrisani on 2015-03-28 22:59:32 UTC #: data/ui/qt/preferences.ui.h:395 data/ui/qt/preferences.ui.h:397 msgid "Remove" msgstr "Rimuovi" # translated by: Gianfranco Frisani https://launchpad.net/~gfrisani on 2015-03-28 22:59:32 UTC #: data/ui/qt/preferences.ui.h:399 data/ui/qt/preferences.ui.h:401 msgid "Reset" msgstr "Reimposta" # translated by: Gianfranco Frisani https://launchpad.net/~gfrisani on 2015-03-28 22:59:32 UTC #: data/ui/qt/preferences.ui.h:402 msgid "Keys" msgstr "Tasti" # translated by: Gianfranco Frisani https://launchpad.net/~gfrisani on 2015-03-28 22:59:32 UTC #: data/ui/qt/preferences.ui.h:403 msgid "Color:" msgstr "Colore:" # translated by: Gianfranco Frisani https://launchpad.net/~gfrisani on 2015-03-28 22:59:32 UTC #: data/ui/qt/preferences.ui.h:405 msgid "Image File:" msgstr "File immagine:" # translated by: Gianfranco Frisani https://launchpad.net/~gfrisani on 2015-03-28 22:59:32 UTC #: data/ui/qt/preferences.ui.h:407 msgid "Tiled" msgstr "Piastrellato" # translated by: Gianfranco Frisani https://launchpad.net/~gfrisani on 2015-03-28 22:59:32 UTC #: data/ui/qt/preferences.ui.h:408 msgid "Mosaic" msgstr "Mosaico" # translated by: Gianfranco Frisani https://launchpad.net/~gfrisani on 2015-03-28 22:59:32 UTC #: data/ui/qt/preferences.ui.h:409 msgid "Background:" msgstr "Sfondo:" # translated by: Gianfranco Frisani https://launchpad.net/~gfrisani on 2015-03-28 22:59:32 UTC #: data/ui/qt/preferences.ui.h:411 msgid "Appearance" msgstr "Aspetto" # translated by: Gianfranco Frisani https://launchpad.net/~gfrisani on 2014-02-01 11:54:09 UTC #: pybiklib/ext/qt.py:1578 msgid "Move" msgstr "Muovi" # translated by: acc01291 https://launchpad.net/~acc01291 on 2013-06-02 18:04:28 UTC # reviewed by: Gianfranco Frisani https://launchpad.net/~gfrisani on 2014-02-01 12:00:52 UTC #: pybiklib/ext/qt.py:1581 msgid "Key" msgstr "Tasto" # translated by: Gianfranco Frisani https://launchpad.net/~gfrisani on 2014-02-01 12:00:52 UTC #: pybiklib/ext/qt.py:1682 msgid "Open Image" msgstr "Apri immagine" # translated by: Gianfranco Frisani https://launchpad.net/~gfrisani on 2014-02-01 11:54:09 UTC #: pybiklib/ext/qt.py:1720 msgid "plain" msgstr "Semplice" # translated by: Gianfranco Frisani https://launchpad.net/~gfrisani on 2014-02-01 11:54:09 UTC #: pybiklib/ext/qt.py:1723 msgid "select …" msgstr "Seleziona ..." # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2013-06-15 15:11:11 UTC #: pybiklib/ext/qtui.py:94 msgid "Press a key …" msgstr "Premi un tasto..." # translated by: Gianfranco Frisani https://launchpad.net/~gfrisani on 2014-02-01 18:21:36 UTC #. Add whatever keywords you want in your language, separated by semicolons, last character must be a semicolon. These keywords are used when searching for applications in Unity, GNOME Shell, etc. #: data/app-meta/pybik.desktop.in:10 msgid "rubik;cube;puzzle;magic;" msgstr "rubik;cubo;rompicapo;magico;" # translated by: acc01291 https://launchpad.net/~acc01291 on 2013-06-02 18:44:55 UTC # reviewed by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2013-06-15 16:00:49 UTC #: data/plugins/01-challenges.plugins.py:18 #: data/plugins/01-challenges.plugins.py:21 #: data/plugins/01-challenges.plugins.py:24 #: data/plugins/01-challenges.plugins.py:27 #: data/plugins/01-challenges.plugins.py:30 #: data/plugins/01-challenges.plugins.py:33 #: data/plugins/01-challenges.plugins.py:36 #: data/plugins/01-challenges.plugins.py:39 #: data/plugins/01-challenges.plugins.py:42 #: data/plugins/01-challenges.plugins.py:45 #: data/plugins/01-challenges.plugins.py:48 msgid "Challenges" msgstr "Sfide" # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-07-31 14:25:01 UTC #: data/plugins/01-challenges.plugins.py:19 msgid "Solve random puzzle" msgstr "Risolvi rompicapo casuale" # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-04-25 08:57:15 UTC #: data/plugins/01-challenges.plugins.py:22 #: data/plugins/01-challenges.plugins.py:25 #: data/plugins/01-challenges.plugins.py:28 #: data/plugins/01-challenges.plugins.py:31 #: data/plugins/01-challenges.plugins.py:34 #: data/plugins/01-challenges.plugins.py:37 #: data/plugins/01-challenges.plugins.py:40 #: data/plugins/01-challenges.plugins.py:43 #: data/plugins/01-challenges.plugins.py:46 #: data/plugins/01-challenges.plugins.py:49 msgid "Solve in {} move" msgid_plural "Solve in {} moves" msgstr[0] "Risolvi in {} mossa" msgstr[1] "Risolvi in {} mosse" # translated by: acc01291 https://launchpad.net/~acc01291 on 2013-06-02 18:49:28 UTC # reviewed by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2013-06-15 15:58:22 UTC #: data/plugins/10-beginners.plugins.py:31 #: data/plugins/10-beginners.plugins.py:34 #: data/plugins/10-beginners.plugins.py:56 #: data/plugins/10-beginners.plugins.py:73 #: data/plugins/10-beginners.plugins.py:100 #: data/plugins/10-beginners.plugins.py:118 #: data/plugins/10-beginners.plugins.py:140 #: data/plugins/10-beginners.plugins.py:158 #: data/plugins/14-leyan-lo.plugins.py:21 #: data/plugins/14-leyan-lo.plugins.py:24 #: data/plugins/14-leyan-lo.plugins.py:53 #: data/plugins/14-leyan-lo.plugins.py:74 #: data/plugins/14-leyan-lo.plugins.py:90 #: data/plugins/14-leyan-lo.plugins.py:107 #: data/plugins/14-leyan-lo.plugins.py:129 #: data/plugins/14-leyan-lo.plugins.py:170 #: data/plugins/150-spiegel.plugins.py:32 #: data/plugins/150-spiegel.plugins.py:35 #: data/plugins/150-spiegel.plugins.py:64 #: data/plugins/150-spiegel.plugins.py:85 #: data/plugins/150-spiegel.plugins.py:100 #: data/plugins/150-spiegel.plugins.py:113 #: data/plugins/150-spiegel.plugins.py:130 #: data/plugins/150-spiegel.plugins.py:141 #: data/plugins/151-spiegel-improved.plugins.py:20 #: data/plugins/151-spiegel-improved.plugins.py:23 #: data/plugins/151-spiegel-improved.plugins.py:68 #: data/plugins/151-spiegel-improved.plugins.py:107 #: data/plugins/151-spiegel-improved.plugins.py:139 #: data/plugins/151-spiegel-improved.plugins.py:165 #: data/plugins/151-spiegel-improved.plugins.py:183 #: data/plugins/151-spiegel-improved.plugins.py:197 #: data/plugins/20-2x2x2.plugins.py:18 data/plugins/20-2x2x2.plugins.py:21 #: data/plugins/20-2x2x2.plugins.py:37 data/plugins/20-2x2x2.plugins.py:55 msgid "Solvers" msgstr "Risolutori" # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-04-25 08:57:47 UTC #: data/plugins/10-beginners.plugins.py:32 #: data/plugins/10-beginners.plugins.py:35 #: data/plugins/10-beginners.plugins.py:57 #: data/plugins/10-beginners.plugins.py:74 #: data/plugins/10-beginners.plugins.py:101 #: data/plugins/10-beginners.plugins.py:119 #: data/plugins/10-beginners.plugins.py:141 #: data/plugins/10-beginners.plugins.py:159 msgid "Beginner's method" msgstr "Metodo per principianti" # translated by: acc01291 https://launchpad.net/~acc01291 on 2013-06-02 18:49:28 UTC # reviewed by: Gianfranco Frisani https://launchpad.net/~gfrisani on 2014-02-01 18:21:36 UTC #: data/plugins/10-beginners.plugins.py:36 #: data/plugins/14-leyan-lo.plugins.py:26 #: data/plugins/150-spiegel.plugins.py:37 #: data/plugins/151-spiegel-improved.plugins.py:25 msgid "Top edges" msgstr "Bordi superiori" # translated by: acc01291 https://launchpad.net/~acc01291 on 2013-06-02 18:49:28 UTC # reviewed by: Gianfranco Frisani https://launchpad.net/~gfrisani on 2014-02-01 18:21:36 UTC #: data/plugins/10-beginners.plugins.py:58 #: data/plugins/14-leyan-lo.plugins.py:55 #: data/plugins/150-spiegel.plugins.py:66 #: data/plugins/151-spiegel-improved.plugins.py:70 msgid "Top corners" msgstr "Angoli superiori" # translated by: acc01291 https://launchpad.net/~acc01291 on 2013-06-02 18:49:28 UTC # reviewed by: Gianfranco Frisani https://launchpad.net/~gfrisani on 2014-02-01 18:21:36 UTC #: data/plugins/10-beginners.plugins.py:75 #: data/plugins/14-leyan-lo.plugins.py:76 #: data/plugins/150-spiegel.plugins.py:87 #: data/plugins/151-spiegel-improved.plugins.py:109 msgid "Middle slice" msgstr "Strato intermedio" # translated by: acc01291 https://launchpad.net/~acc01291 on 2013-06-02 18:58:07 UTC # reviewed by: Gianfranco Frisani https://launchpad.net/~gfrisani on 2014-02-01 18:24:12 UTC #: data/plugins/10-beginners.plugins.py:102 #: data/plugins/14-leyan-lo.plugins.py:92 #: data/plugins/150-spiegel.plugins.py:115 #: data/plugins/151-spiegel-improved.plugins.py:167 msgid "Bottom edge orient" msgstr "Orientamento bordi inferiori" # translated by: acc01291 https://launchpad.net/~acc01291 on 2013-06-02 18:58:07 UTC # reviewed by: Gianfranco Frisani https://launchpad.net/~gfrisani on 2014-02-01 18:24:12 UTC #: data/plugins/10-beginners.plugins.py:120 #: data/plugins/14-leyan-lo.plugins.py:131 #: data/plugins/150-spiegel.plugins.py:143 #: data/plugins/151-spiegel-improved.plugins.py:199 #: data/plugins/20-2x2x2.plugins.py:57 msgid "Bottom corner orient" msgstr "Orientameto angoli inferiori" # translated by: Gianfranco Frisani https://launchpad.net/~gfrisani on 2014-02-01 18:24:12 UTC #: data/plugins/10-beginners.plugins.py:142 #: data/plugins/14-leyan-lo.plugins.py:109 #: data/plugins/150-spiegel.plugins.py:132 #: data/plugins/151-spiegel-improved.plugins.py:185 #: data/plugins/20-2x2x2.plugins.py:39 msgid "Bottom corner place" msgstr "Angoli inferiori" # translated by: Gianfranco Frisani https://launchpad.net/~gfrisani on 2014-02-01 18:21:36 UTC #: data/plugins/10-beginners.plugins.py:160 #: data/plugins/14-leyan-lo.plugins.py:172 #: data/plugins/150-spiegel.plugins.py:102 #: data/plugins/151-spiegel-improved.plugins.py:141 msgid "Bottom edge place" msgstr "Bordi inferiori" # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-04-25 08:57:47 UTC #. Leyan Lo is the inventor of the solution #: data/plugins/14-leyan-lo.plugins.py:23 #: data/plugins/14-leyan-lo.plugins.py:25 #: data/plugins/14-leyan-lo.plugins.py:54 #: data/plugins/14-leyan-lo.plugins.py:75 #: data/plugins/14-leyan-lo.plugins.py:91 #: data/plugins/14-leyan-lo.plugins.py:108 #: data/plugins/14-leyan-lo.plugins.py:130 #: data/plugins/14-leyan-lo.plugins.py:171 msgid "Leyan Lo" msgstr "Leyan Lo" # translated by: acc01291 https://launchpad.net/~acc01291 on 2013-06-02 18:49:28 UTC # reviewed by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2013-06-15 15:58:22 UTC #. Spiegel is a german magazine #: data/plugins/150-spiegel.plugins.py:34 #: data/plugins/150-spiegel.plugins.py:36 #: data/plugins/150-spiegel.plugins.py:65 #: data/plugins/150-spiegel.plugins.py:86 #: data/plugins/150-spiegel.plugins.py:101 #: data/plugins/150-spiegel.plugins.py:114 #: data/plugins/150-spiegel.plugins.py:131 #: data/plugins/150-spiegel.plugins.py:142 msgid "Spiegel" msgstr "Spiegel" # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2013-06-15 15:58:22 UTC #. Spiegel is a german magazine #: data/plugins/151-spiegel-improved.plugins.py:22 #: data/plugins/151-spiegel-improved.plugins.py:24 #: data/plugins/151-spiegel-improved.plugins.py:69 #: data/plugins/151-spiegel-improved.plugins.py:108 #: data/plugins/151-spiegel-improved.plugins.py:140 #: data/plugins/151-spiegel-improved.plugins.py:166 #: data/plugins/151-spiegel-improved.plugins.py:184 #: data/plugins/151-spiegel-improved.plugins.py:198 msgid "Spiegel improved" msgstr "Spiegel migliorato" # translated by: acc01291 https://launchpad.net/~acc01291 on 2013-06-02 18:58:07 UTC # reviewed by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2013-06-15 15:59:36 UTC #: data/plugins/20-2x2x2.plugins.py:19 data/plugins/20-2x2x2.plugins.py:22 #: data/plugins/20-2x2x2.plugins.py:38 data/plugins/20-2x2x2.plugins.py:56 msgid "2×2×2" msgstr "2×2×2" # translated by: acc01291 https://launchpad.net/~acc01291 on 2013-06-02 18:58:07 UTC # reviewed by: Gianfranco Frisani https://launchpad.net/~gfrisani on 2014-02-01 18:24:12 UTC #: data/plugins/20-2x2x2.plugins.py:23 msgid "Top slice" msgstr "Strato superiore" # translated by: Gianfranco Frisani https://launchpad.net/~gfrisani on 2014-02-01 18:24:12 UTC #: data/plugins/80-pretty-patterns.plugins.py:20 #: data/plugins/80-pretty-patterns.plugins.py:23 #: data/plugins/80-pretty-patterns.plugins.py:27 #: data/plugins/80-pretty-patterns.plugins.py:31 #: data/plugins/80-pretty-patterns.plugins.py:35 #: data/plugins/80-pretty-patterns.plugins.py:40 #: data/plugins/80-pretty-patterns.plugins.py:44 msgid "Stripes" msgstr "Strisce" # translated by: Gianfranco Frisani https://launchpad.net/~gfrisani on 2014-02-01 18:24:12 UTC #: data/plugins/80-pretty-patterns.plugins.py:49 #: data/plugins/80-pretty-patterns.plugins.py:53 msgid "Criss-Cross" msgstr "Incrociato" # translated by: acc01291 https://launchpad.net/~acc01291 on 2013-06-02 19:01:25 UTC # reviewed by: Gianfranco Frisani https://launchpad.net/~gfrisani on 2014-02-01 18:24:12 UTC #: data/plugins/80-pretty-patterns.plugins.py:57 msgid "Fried Eggs" msgstr "Uova Fritte" # translated by: Gianfranco Frisani https://launchpad.net/~gfrisani on 2014-02-01 18:28:48 UTC #: data/plugins/80-pretty-patterns.plugins.py:61 msgid "Big Fried Eggs" msgstr "Grandi uova fritte" # translated by: Gianfranco Frisani https://launchpad.net/~gfrisani on 2014-02-01 18:28:48 UTC #: data/plugins/80-pretty-patterns.plugins.py:65 #: data/plugins/80-pretty-patterns.plugins.py:69 msgid "4 Fried Eggs" msgstr "4 uova fritte" # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-04-25 10:51:51 UTC #: data/plugins/80-pretty-patterns.plugins.py:73 msgid "2 Fried Eggs" msgstr "2 uova fritte" # translated by: acc01291 https://launchpad.net/~acc01291 on 2013-06-02 19:01:25 UTC # reviewed by: Gianfranco Frisani https://launchpad.net/~gfrisani on 2014-02-01 18:28:48 UTC #: data/plugins/80-pretty-patterns.plugins.py:77 msgid "Chessboard" msgstr "Scacchiera" # translated by: acc01291 https://launchpad.net/~acc01291 on 2013-06-02 19:01:25 UTC # reviewed by: Gianfranco Frisani https://launchpad.net/~gfrisani on 2014-02-01 18:28:48 UTC #: data/plugins/80-pretty-patterns.plugins.py:83 msgid "Cross" msgstr "Croce" # translated by: acc01291 https://launchpad.net/~acc01291 on 2013-06-02 19:01:25 UTC # reviewed by: Gianfranco Frisani https://launchpad.net/~gfrisani on 2014-02-01 18:28:48 UTC #: data/plugins/80-pretty-patterns.plugins.py:87 msgid "Zig Zag" msgstr "Zig Zag" # translated by: acc01291 https://launchpad.net/~acc01291 on 2013-06-02 19:01:25 UTC # reviewed by: Gianfranco Frisani https://launchpad.net/~gfrisani on 2014-02-01 18:28:48 UTC #. T is the shape formed by the cube labels. T-Time is a pun (Tea Time) and not suitable for literal translation. Don't translate it or use something common or whatever you think makes sense. #: data/plugins/80-pretty-patterns.plugins.py:93 #: data/plugins/80-pretty-patterns.plugins.py:96 #: data/plugins/80-pretty-patterns.plugins.py:100 #: data/plugins/80-pretty-patterns.plugins.py:104 #: data/plugins/80-pretty-patterns.plugins.py:108 #: data/plugins/80-pretty-patterns.plugins.py:112 msgid "T-Time" msgstr "T" # translated by: acc01291 https://launchpad.net/~acc01291 on 2013-06-02 19:01:25 UTC # reviewed by: Gianfranco Frisani https://launchpad.net/~gfrisani on 2014-02-01 18:28:48 UTC #. C is the shape formed by the cube labels #: data/plugins/80-pretty-patterns.plugins.py:118 msgid "C" msgstr "C" # translated by: acc01291 https://launchpad.net/~acc01291 on 2013-06-02 19:01:25 UTC # reviewed by: Gianfranco Frisani https://launchpad.net/~gfrisani on 2014-02-01 18:28:48 UTC #: data/plugins/80-pretty-patterns.plugins.py:121 msgid "Cube in a Cube" msgstr "Cubo in Cubo" # translated by: acc01291 https://launchpad.net/~acc01291 on 2013-06-02 19:01:25 UTC # reviewed by: Gianfranco Frisani https://launchpad.net/~gfrisani on 2014-02-01 18:28:48 UTC #: data/plugins/80-pretty-patterns.plugins.py:125 msgid "Striped Cube in a Cube" msgstr "Cubo a righe in un Cubo" # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-04-25 10:51:51 UTC #: data/plugins/80-pretty-patterns.plugins.py:129 msgid "Six square cuboids" msgstr "Cuboide a sei facce" # translated by: Gianfranco Frisani https://launchpad.net/~gfrisani on 2014-02-01 18:30:55 UTC #. Superflip may be not translated, because it has a special meaning in the mathematical theory behind the Rubik's Cube. #: data/plugins/80-pretty-patterns.plugins.py:135 msgid "Superflip" msgstr "Salto mortale" # translated by: Gianfranco Frisani https://launchpad.net/~gfrisani on 2014-02-01 18:30:55 UTC #: data/plugins/80-pretty-patterns.plugins.py:138 msgid "Superflip easy" msgstr "Salto mortale facile" # translated by: Gianfranco Frisani https://launchpad.net/~gfrisani on 2014-02-01 18:30:55 UTC #: data/plugins/80-pretty-patterns.plugins.py:142 msgid "Green Mamba" msgstr "Mamba verde" # translated by: acc01291 https://launchpad.net/~acc01291 on 2013-06-02 19:08:51 UTC # reviewed by: Gianfranco Frisani https://launchpad.net/~gfrisani on 2014-02-01 18:30:55 UTC #: data/plugins/80-pretty-patterns.plugins.py:146 msgid "Anaconda" msgstr "Anaconda" # translated by: Gianfranco Frisani https://launchpad.net/~gfrisani on 2014-02-01 18:30:55 UTC #: data/plugins/80-pretty-patterns.plugins.py:150 msgid "Duck Feet" msgstr "Piede d'anatra" # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-04-25 09:05:10 UTC #: data/plugins/80-pretty-patterns.plugins.py:154 #: data/plugins/80-pretty-patterns.plugins.py:158 #: data/plugins/80-pretty-patterns.plugins.py:162 #: data/plugins/80-pretty-patterns.plugins.py:166 #: data/plugins/80-pretty-patterns.plugins.py:170 #: data/plugins/80-pretty-patterns.plugins.py:174 #: data/plugins/80-pretty-patterns.plugins.py:178 #: data/plugins/80-pretty-patterns.plugins.py:182 msgid "Plus" msgstr "Più" # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-04-25 09:05:10 UTC #: data/plugins/80-pretty-patterns.plugins.py:186 #: data/plugins/80-pretty-patterns.plugins.py:191 #: data/plugins/80-pretty-patterns.plugins.py:196 #: data/plugins/80-pretty-patterns.plugins.py:200 msgid "Minus" msgstr "Meno" # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-04-25 09:05:10 UTC #: data/plugins/80-pretty-patterns.plugins.py:204 msgid "Volcano" msgstr "Vulcano" # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-04-25 09:05:10 UTC #: data/plugins/80-pretty-patterns.plugins.py:208 msgid "Checkerboard (easy)" msgstr "Scacchiera (semplice)" # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-04-25 09:05:10 UTC #: data/plugins/80-pretty-patterns.plugins.py:212 msgid "Checkerboard (fast)" msgstr "Scacchiera (veloce)" # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-04-25 09:09:27 UTC #: data/plugins/80-pretty-patterns.plugins.py:216 msgid "Mixed Checkerboard" msgstr "Scacchiera mista" # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-04-25 09:09:27 UTC #: data/plugins/80-pretty-patterns.plugins.py:220 msgid "Tipi" msgstr "Tipi" # translated by: Gianfranco Frisani https://launchpad.net/~gfrisani on 2014-02-01 18:30:55 UTC #: data/plugins/90-library.plugins.py:18 data/plugins/90-library.plugins.py:22 #: data/plugins/90-library.plugins.py:26 data/plugins/90-library.plugins.py:30 #: data/plugins/90-library.plugins.py:34 data/plugins/90-library.plugins.py:38 #: data/plugins/90-library.plugins.py:42 data/plugins/90-library.plugins.py:46 #: data/plugins/90-library.plugins.py:50 data/plugins/90-library.plugins.py:54 #: data/plugins/90-library.plugins.py:58 data/plugins/90-library.plugins.py:62 #: data/plugins/90-library.plugins.py:66 data/plugins/90-library.plugins.py:70 #: data/plugins/90-library.plugins.py:74 data/plugins/90-library.plugins.py:78 #: data/plugins/90-library.plugins.py:82 data/plugins/90-library.plugins.py:86 #: data/plugins/90-library.plugins.py:91 data/plugins/90-library.plugins.py:96 #: data/plugins/90-library.plugins.py:101 #: data/plugins/90-library.plugins.py:105 #: data/plugins/90-library.plugins.py:110 #: data/plugins/90-library.plugins.py:115 #: data/plugins/90-library.plugins.py:119 #: data/plugins/90-library.plugins.py:123 #: data/plugins/90-library.plugins.py:127 msgid "Library" msgstr "Libreria" # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-04-25 09:09:27 UTC #: data/plugins/90-library.plugins.py:19 data/plugins/90-library.plugins.py:23 #: data/plugins/90-library.plugins.py:27 data/plugins/90-library.plugins.py:31 #: data/plugins/90-library.plugins.py:35 msgid "Swap edges" msgstr "Scambia bordi" # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-04-25 09:09:27 UTC #: data/plugins/90-library.plugins.py:20 msgid "3 edges ⟳, top layer" msgstr "3 bordi ⟳, strato superiore" # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-04-25 09:09:27 UTC #: data/plugins/90-library.plugins.py:24 msgid "3 edges ⟲, top layer" msgstr "3 bordi ⟲, strato superiore" # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-04-25 09:09:27 UTC #: data/plugins/90-library.plugins.py:28 msgid "3 edges, middle layer" msgstr "3 bordi, strato intermedio" # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-04-25 09:09:27 UTC #: data/plugins/90-library.plugins.py:32 msgid "4 edges, front and right" msgstr "4 bordi, davanti e a destra" # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-04-25 09:09:27 UTC #: data/plugins/90-library.plugins.py:36 msgid "4 edges, front and back" msgstr "4 bordi, davanti e dietro" # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-04-25 09:09:27 UTC #: data/plugins/90-library.plugins.py:39 msgid "Swap 2 edges and 2 corners, top layer" msgstr "Scambia 2 bordi e 2 angoli, strato superiore" # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-04-25 10:51:51 UTC #: data/plugins/90-library.plugins.py:43 data/plugins/90-library.plugins.py:47 msgid "Flip edges" msgstr "Capovolgi bordi" # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-04-25 09:11:01 UTC #: data/plugins/90-library.plugins.py:44 msgid "4 edges" msgstr "4 bordi" # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-04-25 09:11:01 UTC #: data/plugins/90-library.plugins.py:48 msgid "2 edges, top layer" msgstr "2 bordi, strato superiore" # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-04-25 09:11:01 UTC #: data/plugins/90-library.plugins.py:51 data/plugins/90-library.plugins.py:55 #: data/plugins/90-library.plugins.py:59 data/plugins/90-library.plugins.py:63 #: data/plugins/90-library.plugins.py:67 data/plugins/90-library.plugins.py:71 msgid "Swap corners" msgstr "Scambia angoli" # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-04-25 09:11:01 UTC #: data/plugins/90-library.plugins.py:52 data/plugins/90-library.plugins.py:76 msgid "2 corners, top layer" msgstr "2 angoli, strato superiore" # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-04-25 09:11:01 UTC #: data/plugins/90-library.plugins.py:56 msgid "2 corners diagonal, top layer" msgstr "2 angoli diagonali, strato superiore" # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-04-25 09:11:01 UTC #: data/plugins/90-library.plugins.py:60 data/plugins/90-library.plugins.py:80 msgid "3 corners ⟳, top layer" msgstr "3 angoli ⟳, starto superiore" # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-04-25 09:11:01 UTC #: data/plugins/90-library.plugins.py:64 msgid "3 corners ⟲, top layer" msgstr "3 angoli ⟲, starto superiore" # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-04-25 09:11:01 UTC #: data/plugins/90-library.plugins.py:68 msgid "4 corners, top layer" msgstr "4 angoli, starto superiore" # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-04-25 09:11:01 UTC #: data/plugins/90-library.plugins.py:72 msgid "2 corners, partial sequence, top layer" msgstr "2 angoli, sequenza parziale, starto superiore" # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-04-25 09:11:01 UTC #: data/plugins/90-library.plugins.py:75 data/plugins/90-library.plugins.py:79 #: data/plugins/90-library.plugins.py:83 data/plugins/90-library.plugins.py:87 msgid "Rotate corners" msgstr "Ruota angoli" # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-04-25 09:12:54 UTC #: data/plugins/90-library.plugins.py:84 msgid "1 corner ⟳, partial sequence, top layer" msgstr "1 angolo ⟳, sequenza parziale, stato superiore" # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-04-25 09:12:54 UTC #: data/plugins/90-library.plugins.py:88 msgid "1 corner ⟲, partial sequence, top layer" msgstr "1 angolo ⟲, sequenza parziale, stato superiore" # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-04-25 09:12:54 UTC #: data/plugins/90-library.plugins.py:92 data/plugins/90-library.plugins.py:97 #: data/plugins/90-library.plugins.py:102 #: data/plugins/90-library.plugins.py:111 msgid "Rotate center" msgstr "Ruota centro" # translated by: acc01291 https://launchpad.net/~acc01291 on 2013-06-02 19:11:04 UTC # reviewed by: Gianfranco Frisani https://launchpad.net/~gfrisani on 2014-02-01 18:33:50 UTC #. 2 rotations of the center face in the upper layer #: data/plugins/90-library.plugins.py:94 msgid "2×Up" msgstr "2×Su" # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-04-25 09:12:54 UTC #. Up clockwise and front clockwise #: data/plugins/90-library.plugins.py:99 msgid "Up ⟳ and front ⟳" msgstr "Su ⟳ a davanti ⟳" # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-04-25 09:12:54 UTC #. Up clockwise and front counterclockwise #: data/plugins/90-library.plugins.py:104 msgid "Up ⟳ and front ⟲" msgstr "Su ⟳ e davanti ⟲" # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-04-25 09:12:54 UTC #: data/plugins/90-library.plugins.py:106 msgid "Swap center parts, up and front" msgstr "Scambia parti centrali, su e davanti" # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-04-25 09:12:54 UTC #. Up clockwise and down counterclockwise #: data/plugins/90-library.plugins.py:113 msgid "Up ⟳ and down ⟲" msgstr "Su ⟳ e giù ⟲" # translated by: Gianfranco Frisani https://launchpad.net/~gfrisani on 2014-02-01 18:33:50 UTC #: data/plugins/90-library.plugins.py:116 #: data/plugins/90-library.plugins.py:120 #: data/plugins/90-library.plugins.py:124 #: data/plugins/90-library.plugins.py:128 msgid "Misc" msgstr "Varie" # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-04-26 08:01:13 UTC #. Yields in a rotated back layer, but the sequence of moves does not touch the back layer #: data/plugins/90-library.plugins.py:118 #: data/plugins/90-library.plugins.py:125 #: data/plugins/90-library.plugins.py:129 msgid "Back without back" msgstr "Indietro ma non il posteriore" # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-04-26 08:01:13 UTC #: data/plugins/90-library.plugins.py:121 msgid "2×Back without back" msgstr "2 x indietro ma non il posteriore" # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-04-25 10:55:05 UTC #: data/plugins/95-transformations.plugins.py:18 #: data/plugins/95-transformations.plugins.py:21 #: data/plugins/95-transformations.plugins.py:24 msgid "Move transformations" msgstr "Cambiamenti delle mosse" # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-04-25 10:06:39 UTC #: data/plugins/95-transformations.plugins.py:19 msgid "Invert move sequence" msgstr "Inverti la sequenza delle mosse" # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-04-25 10:06:39 UTC #: data/plugins/95-transformations.plugins.py:22 msgid "Normalize cube rotations" msgstr "Normalizza le rotazioni del cubo" # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-04-25 10:06:39 UTC #: data/plugins/95-transformations.plugins.py:25 msgid "Normalize move sequence" msgstr "Normalizza la sequenza delle mosse" # translated by: acc01291 https://launchpad.net/~acc01291 on 2013-06-02 18:08:31 UTC # reviewed by: Gianfranco Frisani https://launchpad.net/~gfrisani on 2014-02-01 12:00:52 UTC #: buildlib/modeldef.py:110 msgid "Brick" msgstr "Mattone" # translated by: acc01291 https://launchpad.net/~acc01291 on 2013-06-02 18:08:31 UTC # reviewed by: Gianfranco Frisani https://launchpad.net/~gfrisani on 2014-02-01 12:00:52 UTC #: buildlib/modeldef.py:111 #, python-brace-format msgid "{0}×{1}×{2}-Brick" msgstr "{0}×{1}×{2}-Mattone" # translated by: acc01291 https://launchpad.net/~acc01291 on 2013-06-02 18:04:28 UTC # reviewed by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2013-06-09 10:00:41 UTC #: buildlib/modeldef.py:112 msgid "Width:" msgstr "Larghezza:" # translated by: acc01291 https://launchpad.net/~acc01291 on 2013-06-02 18:29:09 UTC # reviewed by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2013-06-15 16:03:49 UTC #: buildlib/modeldef.py:112 buildlib/modeldef.py:151 buildlib/modeldef.py:249 #: buildlib/modeldef.py:300 buildlib/modeldef.py:311 msgid "Height:" msgstr "Altezza:" # translated by: acc01291 https://launchpad.net/~acc01291 on 2013-06-02 18:38:48 UTC # reviewed by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2013-06-15 16:03:49 UTC #: buildlib/modeldef.py:112 msgid "Depth:" msgstr "Profondità:" #: buildlib/modeldef.py:120 buildlib/modeldef.py:257 buildlib/modeldef.py:319 #: buildlib/modeldef.py:374 buildlib/modeldef.py:433 msgid "up" msgstr "" #: buildlib/modeldef.py:120 buildlib/modeldef.py:205 buildlib/modeldef.py:257 #: buildlib/modeldef.py:319 buildlib/modeldef.py:373 buildlib/modeldef.py:430 msgid "down" msgstr "" #: buildlib/modeldef.py:120 buildlib/modeldef.py:205 buildlib/modeldef.py:257 msgid "left" msgstr "" # translated by: acc01291 https://launchpad.net/~acc01291 on 2013-06-02 18:04:28 UTC # reviewed by: Gianfranco Frisani https://launchpad.net/~gfrisani on 2014-02-01 11:54:09 UTC #: buildlib/modeldef.py:120 buildlib/modeldef.py:205 buildlib/modeldef.py:257 msgid "right" msgstr "" # translated by: acc01291 https://launchpad.net/~acc01291 on 2013-06-02 18:04:28 UTC # reviewed by: Gianfranco Frisani https://launchpad.net/~gfrisani on 2014-02-01 11:54:09 UTC #: buildlib/modeldef.py:120 buildlib/modeldef.py:374 msgid "front" msgstr "" # translated by: Gianfranco Frisani https://launchpad.net/~gfrisani on 2015-03-28 22:59:32 UTC #: buildlib/modeldef.py:120 buildlib/modeldef.py:205 buildlib/modeldef.py:257 #: buildlib/modeldef.py:320 buildlib/modeldef.py:373 msgid "back" msgstr "" # translated by: acc01291 https://launchpad.net/~acc01291 on 2013-06-02 18:08:31 UTC # reviewed by: Gianfranco Frisani https://launchpad.net/~gfrisani on 2014-02-01 12:00:52 UTC #: buildlib/modeldef.py:149 msgid "Tower" msgstr "Torre" # translated by: acc01291 https://launchpad.net/~acc01291 on 2013-06-02 18:08:31 UTC # reviewed by: Gianfranco Frisani https://launchpad.net/~gfrisani on 2014-02-01 12:00:52 UTC #: buildlib/modeldef.py:150 #, python-brace-format msgid "{0}×{1}-Tower" msgstr "{0}×{1}-Torre" # translated by: acc01291 https://launchpad.net/~acc01291 on 2013-06-02 18:04:28 UTC # reviewed by: Gianfranco Frisani https://launchpad.net/~gfrisani on 2014-02-01 12:00:52 UTC #: buildlib/modeldef.py:151 buildlib/modeldef.py:249 buildlib/modeldef.py:300 #: buildlib/modeldef.py:311 msgid "Basis:" msgstr "Base:" # translated by: acc01291 https://launchpad.net/~acc01291 on 2013-06-02 18:08:31 UTC # reviewed by: Gianfranco Frisani https://launchpad.net/~gfrisani on 2014-02-01 12:00:52 UTC #: buildlib/modeldef.py:163 msgid "Cube" msgstr "Cubo" # translated by: acc01291 https://launchpad.net/~acc01291 on 2013-06-02 18:08:31 UTC # reviewed by: Gianfranco Frisani https://launchpad.net/~gfrisani on 2014-02-01 12:00:52 UTC #: buildlib/modeldef.py:164 #, python-brace-format msgid "{0}×{0}×{0}-Cube" msgstr "{0}×{0}×{0}-Cubo" # translated by: acc01291 https://launchpad.net/~acc01291 on 2013-06-02 18:04:28 UTC # reviewed by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2013-06-09 10:00:41 UTC #: buildlib/modeldef.py:165 buildlib/modeldef.py:197 buildlib/modeldef.py:365 #: buildlib/modeldef.py:422 msgid "Size:" msgstr "Dimensione:" # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-07-31 14:06:40 UTC #: buildlib/modeldef.py:177 buildlib/modeldef.py:178 msgid "Void Cube" msgstr "Cubo vuoto" # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-04-25 08:59:05 UTC #: buildlib/modeldef.py:195 msgid "Tetrahedron" msgstr "Tetraedro" # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-04-25 08:59:05 UTC #: buildlib/modeldef.py:196 #, python-brace-format msgid "{0}-Tetrahedron" msgstr "{0}-Tetraedro" # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-07-31 14:06:40 UTC #: buildlib/modeldef.py:247 msgid "Triangular Prism" msgstr "Prisma triangolare" # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-07-31 14:12:04 UTC #: buildlib/modeldef.py:248 #, python-brace-format msgid "{0}×{1} Triangular Prism" msgstr "Prisma triangolare {0}×{1}" # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-07-31 14:06:40 UTC #: buildlib/modeldef.py:298 msgid "Triangular Prism (complex)" msgstr "Prisma triangolare (complesso)" # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-07-31 14:12:04 UTC #: buildlib/modeldef.py:299 #, python-brace-format msgid "{0}×{1} Triangular Prism (complex)" msgstr "Prisma triangolare (complesso) {0}×{1}" # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-07-31 14:06:40 UTC #: buildlib/modeldef.py:309 msgid "Pentagonal Prism" msgstr "Prisma pentagonale" # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-07-31 14:12:04 UTC #: buildlib/modeldef.py:310 #, python-brace-format msgid "{0}×{1} Pentagonal Prism" msgstr "Prisma pentagonale {0}×{1}" # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-07-31 14:25:01 UTC #: buildlib/modeldef.py:320 buildlib/modeldef.py:373 msgid "front-right" msgstr "" #: buildlib/modeldef.py:320 buildlib/modeldef.py:374 msgid "back-right" msgstr "" #: buildlib/modeldef.py:320 buildlib/modeldef.py:374 msgid "back-left" msgstr "" # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-07-31 14:25:01 UTC #: buildlib/modeldef.py:320 buildlib/modeldef.py:373 msgid "front-left" msgstr "" # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-07-31 14:34:54 UTC #: buildlib/modeldef.py:354 msgid "Pentagonal Prism (stretched)" msgstr "Prisma pentagonale (steso)" # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-07-31 14:34:54 UTC #: buildlib/modeldef.py:355 #, python-brace-format msgid "{0}×{1} Pentagonal Prism (stretched)" msgstr "Prisma pentagonale (steso) {0}×{1}" # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-04-25 08:59:05 UTC #: buildlib/modeldef.py:363 msgid "Octahedron" msgstr "" # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-04-25 08:59:05 UTC #: buildlib/modeldef.py:364 #, python-brace-format msgid "{0}-Octahedron" msgstr "" # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-04-25 08:59:05 UTC #: buildlib/modeldef.py:420 msgid "Dodecahedron" msgstr "" # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-04-25 08:59:05 UTC #: buildlib/modeldef.py:421 #, python-brace-format msgid "{0}-Dodecahedron" msgstr "" #: buildlib/modeldef.py:430 msgid "down-back-right" msgstr "" #: buildlib/modeldef.py:430 msgid "down-front-right" msgstr "" #: buildlib/modeldef.py:431 msgid "down-front" msgstr "" #: buildlib/modeldef.py:431 msgid "down-front-left" msgstr "" #: buildlib/modeldef.py:431 msgid "down-back-left" msgstr "" #: buildlib/modeldef.py:432 msgid "up-back" msgstr "" #: buildlib/modeldef.py:432 msgid "up-back-right" msgstr "" # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-07-31 14:25:01 UTC #: buildlib/modeldef.py:432 msgid "up-front-right" msgstr "" # translated by: Claudio Arseni https://launchpad.net/~claudio.arseni on 2015-07-31 14:25:01 UTC #: buildlib/modeldef.py:433 msgid "up-front-left" msgstr "" #: buildlib/modeldef.py:433 msgid "up-back-left" msgstr "" pybik-3.0/po/ms.po0000664000175000017500000015510013173052130014234 0ustar barccbarcc00000000000000# Malay translation for pybik # Copyright (c) 2012-2017 Rosetta Contributors and Canonical Ltd 2012 # This file is distributed under the same license as the pybik package. # FIRST AUTHOR , 2012. # msgid "" msgstr "" "Project-Id-Version: pybik\n" "Report-Msgid-Bugs-To: https://bugs.launchpad.net/pybik/+filebug\n" "POT-Creation-Date: 2017-09-10 21:58+0200\n" "PO-Revision-Date: 2017-10-09 13:13+0000\n" "Last-Translator: abuyop \n" "Language-Team: Malay \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Launchpad-Export-Date: 2017-10-10 05:24+0000\n" "X-Generator: Launchpad (build 18474)\n" "Language: ms\n" # translated by: abuyop https://launchpad.net/~abuyop on 2012-12-23 02:52:20 UTC #: pybiklib/application.py:294 msgid "Press the Esc key to exit Edit Mode" msgstr "Tekan kekunci Esc untuk keluar dari Mod Sunting" # translated by: abuyop https://launchpad.net/~abuyop on 2012-12-23 02:52:20 UTC #. substitution for {move_text} in statusbar text #: pybiklib/application.py:302 #, python-brace-format msgid "{current} / {total} move" msgid_plural "{current} / {total} moves" msgstr[0] "{current} / {total} gerakan" msgstr[1] "{current} / {total} gerakan" # translated by: abuyop https://launchpad.net/~abuyop on 2012-12-23 02:52:20 UTC #. substitution for {solved_text} in statusbar text #: pybiklib/application.py:306 msgid "solved" msgstr "diselesaikan" # translated by: abuyop https://launchpad.net/~abuyop on 2012-12-23 02:52:20 UTC #: pybiklib/application.py:306 msgid "not solved" msgstr "tidak selesai" # translated by: abuyop https://launchpad.net/~abuyop on 2012-12-23 02:52:20 UTC #. statusbar text #: pybiklib/application.py:309 #, python-brace-format msgid "{move_text}, {solved_text}" msgstr "{move_text}, {solved_text}" # translated by: abuyop https://launchpad.net/~abuyop on 2012-12-23 02:52:20 UTC #: pybiklib/application.py:314 msgid "Congratulations, you have solved the puzzle!" msgstr "Tahniah, anda telah berjaya menyelesaikannya!" # translated by: abuyop https://launchpad.net/~abuyop on 2012-12-23 02:52:20 UTC #. Name of the application, probably should not be translated. #: pybiklib/config.py:35 data/ui/qt/main.ui.h:271 #: data/app-meta/pybik.desktop.in:3 msgid "Pybik" msgstr "Pybik" # translated by: abuyop https://launchpad.net/~abuyop on 2015-04-21 05:15:24 UTC #. short description #: pybiklib/config.py:65 data/app-meta/pybik.desktop.in:4 msgid "Rubik's cube game" msgstr "Permainan kiub Rubik" # translated by: abuyop https://launchpad.net/~abuyop on 2015-07-24 06:03:39 UTC #. The next 7 lines belong together and form the long description #: pybiklib/config.py:68 msgid "Pybik is a 3D puzzle game about the cube invented by Ernő Rubik." msgstr "" "Pybik merupakan permainan teka-teki 3D mengenai kiub yang direka oleh Erno " "Rubik." # translated by: abuyop https://launchpad.net/~abuyop on 2017-10-09 13:13:23 UTC #: pybiklib/config.py:70 msgid "" "Various 3D puzzles, such as cubes, towers, prisms, tetrahedra, octahedra, " "dodecahedra and many more" msgstr "" "Pelbagai teka-teki 3D, seperti kiub, menara, prisma, tetrahedra, oktahedra, " "dodekahedra dan banyak lagi" # translated by: abuyop https://launchpad.net/~abuyop on 2015-07-24 06:03:39 UTC #: pybiklib/config.py:71 msgid "Solvers for some puzzles" msgstr "Penyelesaian untuk beberapa teka-teki" # translated by: abuyop https://launchpad.net/~abuyop on 2013-06-09 11:33:12 UTC #. Use something that is common in the Rubik scene in your language, sometimes it's just the equivalent of "patterns". #: pybiklib/config.py:72 data/plugins/80-pretty-patterns.plugins.py:19 #: data/plugins/80-pretty-patterns.plugins.py:22 #: data/plugins/80-pretty-patterns.plugins.py:26 #: data/plugins/80-pretty-patterns.plugins.py:30 #: data/plugins/80-pretty-patterns.plugins.py:34 #: data/plugins/80-pretty-patterns.plugins.py:39 #: data/plugins/80-pretty-patterns.plugins.py:43 #: data/plugins/80-pretty-patterns.plugins.py:48 #: data/plugins/80-pretty-patterns.plugins.py:52 #: data/plugins/80-pretty-patterns.plugins.py:56 #: data/plugins/80-pretty-patterns.plugins.py:60 #: data/plugins/80-pretty-patterns.plugins.py:64 #: data/plugins/80-pretty-patterns.plugins.py:68 #: data/plugins/80-pretty-patterns.plugins.py:72 #: data/plugins/80-pretty-patterns.plugins.py:76 #: data/plugins/80-pretty-patterns.plugins.py:82 #: data/plugins/80-pretty-patterns.plugins.py:86 #: data/plugins/80-pretty-patterns.plugins.py:91 #: data/plugins/80-pretty-patterns.plugins.py:95 #: data/plugins/80-pretty-patterns.plugins.py:99 #: data/plugins/80-pretty-patterns.plugins.py:103 #: data/plugins/80-pretty-patterns.plugins.py:107 #: data/plugins/80-pretty-patterns.plugins.py:111 #: data/plugins/80-pretty-patterns.plugins.py:116 #: data/plugins/80-pretty-patterns.plugins.py:120 #: data/plugins/80-pretty-patterns.plugins.py:124 #: data/plugins/80-pretty-patterns.plugins.py:128 #: data/plugins/80-pretty-patterns.plugins.py:133 #: data/plugins/80-pretty-patterns.plugins.py:137 #: data/plugins/80-pretty-patterns.plugins.py:141 #: data/plugins/80-pretty-patterns.plugins.py:145 #: data/plugins/80-pretty-patterns.plugins.py:149 #: data/plugins/80-pretty-patterns.plugins.py:153 #: data/plugins/80-pretty-patterns.plugins.py:157 #: data/plugins/80-pretty-patterns.plugins.py:161 #: data/plugins/80-pretty-patterns.plugins.py:165 #: data/plugins/80-pretty-patterns.plugins.py:169 #: data/plugins/80-pretty-patterns.plugins.py:173 #: data/plugins/80-pretty-patterns.plugins.py:177 #: data/plugins/80-pretty-patterns.plugins.py:181 #: data/plugins/80-pretty-patterns.plugins.py:185 #: data/plugins/80-pretty-patterns.plugins.py:190 #: data/plugins/80-pretty-patterns.plugins.py:195 #: data/plugins/80-pretty-patterns.plugins.py:199 #: data/plugins/80-pretty-patterns.plugins.py:203 #: data/plugins/80-pretty-patterns.plugins.py:207 #: data/plugins/80-pretty-patterns.plugins.py:211 #: data/plugins/80-pretty-patterns.plugins.py:215 #: data/plugins/80-pretty-patterns.plugins.py:219 msgid "Pretty patterns" msgstr "Corak cantik" # translated by: abuyop https://launchpad.net/~abuyop on 2015-07-24 06:03:39 UTC #: pybiklib/config.py:73 msgid "Editor for move sequences" msgstr "Penyunting untuk jujukan gerakan" # translated by: abuyop https://launchpad.net/~abuyop on 2015-07-24 06:03:39 UTC #: pybiklib/config.py:74 msgid "Custom colors and images on the surface of the puzzles" msgstr "Suai warna dan imej pada permukaan teka-teki" #: pybiklib/config.py:78 msgid "" "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.\n" "\n" "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." msgstr "" "Program ini adalah perisian bebas; anda boleh mengedarkannya dan/atau " "mengubahsuainya dibawah terma Pelesenan Awam Am GNU yang diterbitkan oleh " "Free Software Foundation, versi 3, atau (mengikut pilihan anda) mana-mana " "versi terkemudian.\n" "\n" "Perisian ini diedarkan dengan harapan ianya akan berguna, TANPA SEBARANG " "JAMINAN; termasuk juga KESESUAIAN UNTUK DIPASARKAN, JAMINAN KUALITI, atau " "JAMINAN ATAS APA JUA SEBAB. Sila lihat GNU General Public License untuk " "maklumat lanjut." # translated by: abuyop https://launchpad.net/~abuyop on 2013-06-15 12:17:48 UTC #. Text between "<" and ">" is expanded to a link by the program and should not be modified. #. Text between "" and "<|>" is the translatable text for the link. #: pybiklib/config.py:90 msgid "" "Read the full text of the GNU General Public " "License<|> or see ." msgstr "" "Baca teks penuh GNU General Public License<|> atau " "rujuk ." # translated by: abuyop https://launchpad.net/~abuyop on 2012-12-23 03:06:21 UTC #: pybiklib/config.py:93 msgid "" "You should have received a copy of the GNU General Public License along with " "this program. If not, see ." msgstr "" "Anda seharusnya menerima salinan GNU General Public License bersama program " "ini. Jika tidak, sila layari ." # translated by: abuyop https://launchpad.net/~abuyop on 2013-06-15 12:17:48 UTC #: pybiklib/config.py:98 #, python-brace-format msgid "" "If you find any bugs in Pybik or have a suggestion for an improvement then " "please submit a <{CONTACT_FILEBUG}|>bug report<|>." msgstr "" "Jika anda temui sebarang pepijat di dalam Pybik atau mempunyai cadangan " "untuk penambahbaikan, sila serahkan <{CONTACT_FILEBUG}|>laporan pepijat<|>." # translated by: abuyop https://launchpad.net/~abuyop on 2013-06-15 12:19:26 UTC #: pybiklib/config.py:103 msgid "" "Translations are managed by the " "Launchpad " "translation group<|>.\n" "\n" "If you want help to translate Pybik to your language you can do it through " "the web interface<|>.\n" "\n" "Read more about \"Translating with " "Launchpad\"<|> and " "\"Starting to " "translate\"<|>." msgstr "" "Terjemahan diurus oleh Launchpad translation group<|>.\n" "\n" "Jika anda mahu bantu menterjemah Pybik ke bahasa ibunda anda, anda boleh " "lakukan melalui antaramuka " "sesawang<|>.\n" "\n" "Ketahui lebih lanjut mengenai " "\"Menterjemah menggunakan " "Launchpad\"<|> dan " "\"Memulakan " "terjemahan\"<|>." #: pybiklib/dialogs.py:44 msgid "Lighting" msgstr "Pencahayaan" # translated by: abuyop https://launchpad.net/~abuyop on 2015-04-21 05:15:24 UTC #: pybiklib/dialogs.py:44 msgid "Simple" msgstr "Ringkas" # translated by: abuyop https://launchpad.net/~abuyop on 2017-10-09 12:26:27 UTC #. labels are the colored stickers on the cube #: pybiklib/dialogs.py:46 msgid "Labels" msgstr "Label" # translated by: abuyop https://launchpad.net/~abuyop on 2015-04-21 06:06:44 UTC #: pybiklib/dialogs.py:104 data/ui/qt/main.ui.h:275 msgid "Select Puzzle" msgstr "Pilih Teka-Teki" # translated by: abuyop https://launchpad.net/~abuyop on 2013-06-09 11:33:12 UTC #. 1 slice, 2 slices, 3 slices, ... #: pybiklib/dialogs.py:134 pybiklib/dialogs.py:154 pybiklib/dialogs.py:180 #: pybiklib/dialogs.py:201 msgid "{} slice" msgid_plural "{} slices" msgstr[0] "{} keping" msgstr[1] "{} keping" # translated by: abuyop https://launchpad.net/~abuyop on 2017-10-09 13:12:03 UTC #: pybiklib/dialogs.py:196 pybiklib/dialogs.py:225 msgid "{}×{} slices" msgstr "{}×{} keping" # translated by: abuyop https://launchpad.net/~abuyop on 2015-07-24 06:03:39 UTC #. The next strings form the text in the help dialog: #. Title of the 1st paragraph #: pybiklib/dialogs.py:290 msgid "Using the mouse to rotate the cube" msgstr "Boleh guna tetikus untuk memutarkan kiub" # translated by: abuyop https://launchpad.net/~abuyop on 2015-07-24 06:23:51 UTC #. Text of the 1st paragraph, followed by bullet list items #: pybiklib/dialogs.py:292 msgid "" "Position the mouse cursor over the puzzle and you will see an arrow that " "gives you a hint in which direction the slice under the mouse cursor will be " "rotated." msgstr "" "Letak kursor tetikus diatas teka-teki dan anda dapat melihat anak panah yang " "memberitahu pembayang yang mana arah lapisan di bawah kursor tetikus akan " "diputarkan." # translated by: abuyop https://launchpad.net/~abuyop on 2015-07-24 06:21:30 UTC #: pybiklib/dialogs.py:294 msgid "" "The left mouse button rotates a single slice of the cube in the direction of " "the arrow." msgstr "Butang tetikus kiri putar satu lapisan kiub dalam arah anak panah." # translated by: abuyop https://launchpad.net/~abuyop on 2015-07-24 06:21:30 UTC #: pybiklib/dialogs.py:295 msgid "" "The right mouse button rotates a single slice of the cube against the " "direction of the arrow." msgstr "" "Butang tetikus kanan putar satu lapisan kiub melawan arah anak panah." # translated by: abuyop https://launchpad.net/~abuyop on 2015-07-24 06:21:30 UTC #: pybiklib/dialogs.py:296 msgid "" "To rotate the whole cube instead of a single slice press the Ctrl key " "together with the mouse button." msgstr "" "Putar keseluruhan kiub selain dari satu lapisan dengan menekan kekunci Ctrl " "bersama-sama dengan butang tetikus." # translated by: abuyop https://launchpad.net/~abuyop on 2015-04-21 05:15:24 UTC #. Title of the 2nd paragraph #: pybiklib/dialogs.py:298 msgid "Using the keyboard to rotate the cube" msgstr "Gunakan papan kekunci untuk putar kiub" # translated by: abuyop https://launchpad.net/~abuyop on 2015-04-21 05:15:24 UTC #. Text of the 2nd paragraph, followed by bullet list items #: pybiklib/dialogs.py:300 msgid "" "Make sure the keyboard focus is on the cube area (e.g. click on the " "background of the cube). The keys can be configured in the preferences " "dialog, the default is:" msgstr "" "Pastikan fokus papan kekunci di kawasan kiub (iaitu klik pada latar belakang " "kiub). Kekunci boleh dikonfigur dalam dialog keutamaan, lalai ialah:" # translated by: abuyop https://launchpad.net/~abuyop on 2015-07-24 06:21:30 UTC #. before the item text is a list of keys #: pybiklib/dialogs.py:303 pybiklib/dialogs.py:318 msgid "Moves the left, right, upper, down, front or back slice clockwise." msgstr "" "Gerak lapisan kiri, kanan, atas, bawah, hadapan atau belakang mengikut arah " "jam." # translated by: abuyop https://launchpad.net/~abuyop on 2015-07-24 06:21:30 UTC #: pybiklib/dialogs.py:304 pybiklib/dialogs.py:319 msgid "Moves a slice couterclockwise." msgstr "Gerak lapisan melawan jam." # translated by: abuyop https://launchpad.net/~abuyop on 2015-07-24 06:21:30 UTC #: pybiklib/dialogs.py:305 pybiklib/dialogs.py:320 msgid "Moves the whole cube." msgstr "Gerak keseluruhan kiub." # translated by: abuyop https://launchpad.net/~abuyop on 2015-04-21 06:05:11 UTC #. Title of the 3rd paragraph #: pybiklib/dialogs.py:307 msgid "Other keys and buttons" msgstr "Lain-lain kekunci dan butang" # translated by: abuyop https://launchpad.net/~abuyop on 2015-07-24 06:21:30 UTC #. bullet list items of the 3rd paragraph #: pybiklib/dialogs.py:309 msgid "Mouse wheel – Zoom in/out" msgstr "Rod tetikus - Zum masuk/keluar" # translated by: abuyop https://launchpad.net/~abuyop on 2015-07-24 06:22:05 UTC #: pybiklib/dialogs.py:310 msgid "" "Arrow keys, Left mouse button on the background – Changes the direction of " "looking at the cube." msgstr "" "Kekunci anak panah, butang tetikus kiri pada latar belakang - Ubah arah " "melihat kiub." # translated by: abuyop https://launchpad.net/~abuyop on 2015-07-24 06:22:59 UTC #: pybiklib/dialogs.py:311 msgid "" "Moves keyboard focus to the sequence editor above the cube area where you " "can edit the move sequence in the notation described below. Hit enter when " "done." msgstr "" "Gerak fokus papan kekunci ke penyunting jujukan diatas kawasan kiub yang " "mana anda boleh sunting jujukan gerakan dalam catatan yang dijelaskan di " "bawah. Tekan enter bila selesai." # translated by: abuyop https://launchpad.net/~abuyop on 2015-07-24 06:19:07 UTC #. Title of the 4th paragraph #: pybiklib/dialogs.py:315 msgid "Notation for moves" msgstr "Catatan gerakan" # translated by: abuyop https://launchpad.net/~abuyop on 2015-07-24 06:19:07 UTC #. Text of the 4th paragraph, followed by bullet list items #: pybiklib/dialogs.py:317 msgid "" "All moves, however they are made, are displayed progressively above the cube " "area:" msgstr "" "Semua gerakan, walaupun dibuat, dipapar secara prograsif atas kawasan kiub:" # translated by: abuyop https://launchpad.net/~abuyop on 2015-07-24 06:25:35 UTC #: pybiklib/dialogs.py:321 msgid "" "Moves the first, second or third slice from left clockwise. The allowed " "numbers are in the range from 1 to the count of parallel slices. \"l1\" is " "always the same as \"l\" and for the classic 3×3×3-Cube \"l2\" is the same " "as \"r2-\" and \"l3\" is the same as \"r-\"." msgstr "" "Gerak lapisan pertama, kedua atau ketiga dari arah kiri melawan jam. " "Bilangan yang dibenarkan dalam julat 1 untuk mengira lapisan yang selari. " "\"l1\" sentiasa sama seperti \"l\" dan untuk Kiub klasik 3×3×3 \"l2\" adalah " "sama dengan \"r2-\" dan \"l3\" sama dengan \"r-\"." # translated by: abuyop https://launchpad.net/~abuyop on 2015-07-24 06:19:07 UTC #: pybiklib/dialogs.py:325 msgid "You can use a space to separate groups of moves." msgstr "Anda boleh guna ruang untuk memisahkan kumpulan gerakan." # translated by: abuyop https://launchpad.net/~abuyop on 2012-12-23 03:23:21 UTC #: pybiklib/dialogs.py:379 msgid "Pybik project website" msgstr "Laman sesawang projek Pybik" # translated by: abuyop https://launchpad.net/~abuyop on 2015-04-21 06:06:44 UTC #: pybiklib/pluginlib.py:301 msgid "This plugin does not work for any model." msgstr "Pemalam ini tidak berfungdi pada mana mana model." # translated by: abuyop https://launchpad.net/~abuyop on 2015-07-24 06:19:07 UTC #: pybiklib/pluginlib.py:303 pybiklib/pluginlib.py:306 msgid "This plugin only works for:" msgstr "Pemalam ini hanya berfungsi untuk:" # translated by: abuyop https://launchpad.net/~abuyop on 2015-07-24 06:19:07 UTC #: pybiklib/pluginlib.py:498 msgid "This puzzle is not solvable." msgstr "Teka-teki ini tidak boleh diselesaikan." # translated by: abuyop https://launchpad.net/~abuyop on 2013-06-02 04:20:06 UTC #. The following 6 words are for the antialiasing levels: disabled, ugly, low, medium, high, higher #: pybiklib/schema.py:211 msgid "disabled" msgstr "dilumpuhkan" # translated by: abuyop https://launchpad.net/~abuyop on 2013-06-09 10:49:59 UTC #: pybiklib/schema.py:211 msgid "ugly" msgstr "buruk" # translated by: abuyop https://launchpad.net/~abuyop on 2013-06-09 10:49:59 UTC #: pybiklib/schema.py:211 msgid "low" msgstr "rendah" # translated by: abuyop https://launchpad.net/~abuyop on 2013-06-09 10:49:59 UTC #: pybiklib/schema.py:212 msgid "medium" msgstr "sederhana" # translated by: abuyop https://launchpad.net/~abuyop on 2013-06-09 10:49:59 UTC #: pybiklib/schema.py:212 msgid "high" msgstr "tinggi" # translated by: abuyop https://launchpad.net/~abuyop on 2013-06-09 10:51:18 UTC #: pybiklib/schema.py:212 msgid "higher" msgstr "lebih tinggi" #: data/ui/qt/about.ui.h:212 msgid "About Pybik" msgstr "Perihal Pybik" #: data/ui/qt/about.ui.h:213 msgid "Translators:" msgstr "Penterjemah:" #: data/ui/qt/about.ui.h:214 msgid "About" msgstr "Perihal" # translated by: abuyop https://launchpad.net/~abuyop on 2017-10-09 13:11:27 UTC #: data/ui/qt/about.ui.h:215 msgid "Contribute" msgstr "Sumbangan" #: data/ui/qt/about.ui.h:216 msgid "License" msgstr "Lesen" # translated by: abuyop https://launchpad.net/~abuyop on 2015-04-21 06:06:44 UTC #: data/ui/qt/help.ui.h:53 data/ui/qt/main.ui.h:297 msgid "Help" msgstr "Bantuan" # translated by: abuyop https://launchpad.net/~abuyop on 2013-06-09 10:54:48 UTC #: data/ui/qt/main.ui.h:272 msgid "&New Challenge" msgstr "&Cabaran Baharu" #: data/ui/qt/main.ui.h:273 msgid "Ne&w Solved" msgstr "Diselesai Ba&ru" #: data/ui/qt/main.ui.h:274 msgid "&Quit" msgstr "&Keluar" #: data/ui/qt/main.ui.h:276 msgid "&Set as Initial State" msgstr "&Tetap sebagai Keadaan Awal" #: data/ui/qt/main.ui.h:277 msgid "&Reset Rotation" msgstr "&Tetap Semula Putaran" #: data/ui/qt/main.ui.h:278 msgid "&Preferences …" msgstr "K&eutamaan ..." #: data/ui/qt/main.ui.h:279 msgid "&Status Bar" msgstr "Palang &Status" #: data/ui/qt/main.ui.h:280 msgid "&Info …" msgstr "&Maklumat ..." #: data/ui/qt/main.ui.h:281 msgid "Rewind" msgstr "Ulang Semula" #: data/ui/qt/main.ui.h:282 msgid "Previous" msgstr "Terdahulu" #: data/ui/qt/main.ui.h:283 msgid "Stop" msgstr "Henti" #: data/ui/qt/main.ui.h:284 msgid "Play" msgstr "Main" #: data/ui/qt/main.ui.h:285 msgid "Next" msgstr "Berikutnya" #: data/ui/qt/main.ui.h:286 msgid "Forward" msgstr "Maju" #: data/ui/qt/main.ui.h:287 msgid "Add Mark" msgstr "Tambah Tanda" #: data/ui/qt/main.ui.h:289 msgid "Mark the current place in the sequence of moves" msgstr "Tanda tempat semasa dalam jujukan gerakan" #: data/ui/qt/main.ui.h:291 msgid "Remove Mark" msgstr "Buang Tanda" #: data/ui/qt/main.ui.h:293 msgid "Remove the mark at the current place in the sequence of moves" msgstr "Buang tanda pada tempat semasa dalam jujukan gerakan" #: data/ui/qt/main.ui.h:295 msgid "&Edit Bar" msgstr "S&unting Palang" # translated by: abuyop https://launchpad.net/~abuyop on 2015-04-21 06:06:44 UTC #: data/ui/qt/main.ui.h:296 msgid "&Help …" msgstr "&Bantuan ..." #: data/ui/qt/preferences.ui.h:372 msgid "Preferences" msgstr "Keutamaan" #: data/ui/qt/preferences.ui.h:373 msgid "Animation Speed:" msgstr "Kelajuan Animasi:" #: data/ui/qt/preferences.ui.h:375 msgid "Mirror Distance:" msgstr "Jarak Cermin:" # translated by: abuyop https://launchpad.net/~abuyop on 2015-04-21 06:06:44 UTC #: data/ui/qt/preferences.ui.h:377 msgid "Quality:" msgstr "Kualiti:" # translated by: abuyop https://launchpad.net/~abuyop on 2015-07-24 06:19:07 UTC #: data/ui/qt/preferences.ui.h:380 msgid "" "Lower antialiasing has better performance, higher antialiasing has better " "quality." msgstr "" "Antialias lebih rendah mempunyai prestasi lebih baik, antialias lebih tinggi " "mempunyai kualiti lebih baik." # translated by: abuyop https://launchpad.net/~abuyop on 2015-04-21 06:07:29 UTC #: data/ui/qt/preferences.ui.h:382 msgid "Antialiasing:" msgstr "Anti alias:" # translated by: abuyop https://launchpad.net/~abuyop on 2013-06-09 10:49:59 UTC #: data/ui/qt/preferences.ui.h:384 msgid "The program needs to be restarted for the changes to take effect." msgstr "Program perlu dimulakan semula supaya perubahan berkesan." #: data/ui/qt/preferences.ui.h:385 msgid "Graphic" msgstr "Grafik" # translated by: abuyop https://launchpad.net/~abuyop on 2017-10-09 12:26:27 UTC #: data/ui/qt/preferences.ui.h:386 msgid "Point and click, all directions" msgstr "Hala dan klik, semua arah" # translated by: abuyop https://launchpad.net/~abuyop on 2017-10-09 12:26:27 UTC #: data/ui/qt/preferences.ui.h:387 msgid "Point and click, simplified" msgstr "Hala dan klik, ringkas" # translated by: abuyop https://launchpad.net/~abuyop on 2017-10-09 12:26:27 UTC #: data/ui/qt/preferences.ui.h:388 msgid "Gestures" msgstr "Gerak Isyarat" #: data/ui/qt/preferences.ui.h:389 msgid "Mouse" msgstr "Tetikus" #: data/ui/qt/preferences.ui.h:391 data/ui/qt/preferences.ui.h:393 msgid "Add" msgstr "Tambah" #: data/ui/qt/preferences.ui.h:395 data/ui/qt/preferences.ui.h:397 msgid "Remove" msgstr "Buang" #: data/ui/qt/preferences.ui.h:399 data/ui/qt/preferences.ui.h:401 msgid "Reset" msgstr "Tetap Semula" #: data/ui/qt/preferences.ui.h:402 msgid "Keys" msgstr "Kunci" #: data/ui/qt/preferences.ui.h:403 msgid "Color:" msgstr "Warna:" #: data/ui/qt/preferences.ui.h:405 msgid "Image File:" msgstr "Fail Imej:" #: data/ui/qt/preferences.ui.h:407 msgid "Tiled" msgstr "Berjubin" #: data/ui/qt/preferences.ui.h:408 msgid "Mosaic" msgstr "Mozek" #: data/ui/qt/preferences.ui.h:409 msgid "Background:" msgstr "Latar Belakang:" #: data/ui/qt/preferences.ui.h:411 msgid "Appearance" msgstr "Penampilan" # translated by: abuyop https://launchpad.net/~abuyop on 2012-12-23 03:12:38 UTC #: pybiklib/ext/qt.py:1578 msgid "Move" msgstr "Gerak" # translated by: abuyop https://launchpad.net/~abuyop on 2012-12-23 03:12:38 UTC #: pybiklib/ext/qt.py:1581 msgid "Key" msgstr "Kekunci" # translated by: abuyop https://launchpad.net/~abuyop on 2012-12-23 03:12:38 UTC #: pybiklib/ext/qt.py:1682 msgid "Open Image" msgstr "Buka Imej" # translated by: abuyop https://launchpad.net/~abuyop on 2012-12-23 03:06:21 UTC #: pybiklib/ext/qt.py:1720 msgid "plain" msgstr "biasa" # translated by: abuyop https://launchpad.net/~abuyop on 2012-12-23 03:06:21 UTC #: pybiklib/ext/qt.py:1723 msgid "select …" msgstr "pilih ..." # translated by: abuyop https://launchpad.net/~abuyop on 2012-12-23 03:06:21 UTC #: pybiklib/ext/qtui.py:94 msgid "Press a key …" msgstr "Tekan mana-mana kekunci ..." # translated by: abuyop https://launchpad.net/~abuyop on 2013-06-09 10:54:48 UTC #. Add whatever keywords you want in your language, separated by semicolons, last character must be a semicolon. These keywords are used when searching for applications in Unity, GNOME Shell, etc. #: data/app-meta/pybik.desktop.in:10 msgid "rubik;cube;puzzle;magic;" msgstr "rubik;kuib;teka-teki;magik;" # translated by: abuyop https://launchpad.net/~abuyop on 2013-06-09 10:54:48 UTC #: data/plugins/01-challenges.plugins.py:18 #: data/plugins/01-challenges.plugins.py:21 #: data/plugins/01-challenges.plugins.py:24 #: data/plugins/01-challenges.plugins.py:27 #: data/plugins/01-challenges.plugins.py:30 #: data/plugins/01-challenges.plugins.py:33 #: data/plugins/01-challenges.plugins.py:36 #: data/plugins/01-challenges.plugins.py:39 #: data/plugins/01-challenges.plugins.py:42 #: data/plugins/01-challenges.plugins.py:45 #: data/plugins/01-challenges.plugins.py:48 msgid "Challenges" msgstr "Cabaran" # translated by: abuyop https://launchpad.net/~abuyop on 2015-07-24 06:09:46 UTC #: data/plugins/01-challenges.plugins.py:19 msgid "Solve random puzzle" msgstr "Selesaikan teka-teki rawak" # translated by: abuyop https://launchpad.net/~abuyop on 2015-07-24 06:19:07 UTC #: data/plugins/01-challenges.plugins.py:22 #: data/plugins/01-challenges.plugins.py:25 #: data/plugins/01-challenges.plugins.py:28 #: data/plugins/01-challenges.plugins.py:31 #: data/plugins/01-challenges.plugins.py:34 #: data/plugins/01-challenges.plugins.py:37 #: data/plugins/01-challenges.plugins.py:40 #: data/plugins/01-challenges.plugins.py:43 #: data/plugins/01-challenges.plugins.py:46 #: data/plugins/01-challenges.plugins.py:49 msgid "Solve in {} move" msgid_plural "Solve in {} moves" msgstr[0] "Selesai dalam {} gerakan" msgstr[1] "Selesai dalam {} gerakan" # translated by: abuyop https://launchpad.net/~abuyop on 2013-06-09 10:56:03 UTC #: data/plugins/10-beginners.plugins.py:31 #: data/plugins/10-beginners.plugins.py:34 #: data/plugins/10-beginners.plugins.py:56 #: data/plugins/10-beginners.plugins.py:73 #: data/plugins/10-beginners.plugins.py:100 #: data/plugins/10-beginners.plugins.py:118 #: data/plugins/10-beginners.plugins.py:140 #: data/plugins/10-beginners.plugins.py:158 #: data/plugins/14-leyan-lo.plugins.py:21 #: data/plugins/14-leyan-lo.plugins.py:24 #: data/plugins/14-leyan-lo.plugins.py:53 #: data/plugins/14-leyan-lo.plugins.py:74 #: data/plugins/14-leyan-lo.plugins.py:90 #: data/plugins/14-leyan-lo.plugins.py:107 #: data/plugins/14-leyan-lo.plugins.py:129 #: data/plugins/14-leyan-lo.plugins.py:170 #: data/plugins/150-spiegel.plugins.py:32 #: data/plugins/150-spiegel.plugins.py:35 #: data/plugins/150-spiegel.plugins.py:64 #: data/plugins/150-spiegel.plugins.py:85 #: data/plugins/150-spiegel.plugins.py:100 #: data/plugins/150-spiegel.plugins.py:113 #: data/plugins/150-spiegel.plugins.py:130 #: data/plugins/150-spiegel.plugins.py:141 #: data/plugins/151-spiegel-improved.plugins.py:20 #: data/plugins/151-spiegel-improved.plugins.py:23 #: data/plugins/151-spiegel-improved.plugins.py:68 #: data/plugins/151-spiegel-improved.plugins.py:107 #: data/plugins/151-spiegel-improved.plugins.py:139 #: data/plugins/151-spiegel-improved.plugins.py:165 #: data/plugins/151-spiegel-improved.plugins.py:183 #: data/plugins/151-spiegel-improved.plugins.py:197 #: data/plugins/20-2x2x2.plugins.py:18 data/plugins/20-2x2x2.plugins.py:21 #: data/plugins/20-2x2x2.plugins.py:37 data/plugins/20-2x2x2.plugins.py:55 msgid "Solvers" msgstr "Penyelesai" # translated by: abuyop https://launchpad.net/~abuyop on 2015-07-24 06:19:07 UTC #: data/plugins/10-beginners.plugins.py:32 #: data/plugins/10-beginners.plugins.py:35 #: data/plugins/10-beginners.plugins.py:57 #: data/plugins/10-beginners.plugins.py:74 #: data/plugins/10-beginners.plugins.py:101 #: data/plugins/10-beginners.plugins.py:119 #: data/plugins/10-beginners.plugins.py:141 #: data/plugins/10-beginners.plugins.py:159 msgid "Beginner's method" msgstr "Kaedah pemula" # translated by: abuyop https://launchpad.net/~abuyop on 2013-06-09 11:31:29 UTC #: data/plugins/10-beginners.plugins.py:36 #: data/plugins/14-leyan-lo.plugins.py:26 #: data/plugins/150-spiegel.plugins.py:37 #: data/plugins/151-spiegel-improved.plugins.py:25 msgid "Top edges" msgstr "Pingir teratas" # translated by: abuyop https://launchpad.net/~abuyop on 2013-06-09 11:31:29 UTC #: data/plugins/10-beginners.plugins.py:58 #: data/plugins/14-leyan-lo.plugins.py:55 #: data/plugins/150-spiegel.plugins.py:66 #: data/plugins/151-spiegel-improved.plugins.py:70 msgid "Top corners" msgstr "Bucu teratas" # translated by: abuyop https://launchpad.net/~abuyop on 2013-06-09 11:31:29 UTC #: data/plugins/10-beginners.plugins.py:75 #: data/plugins/14-leyan-lo.plugins.py:76 #: data/plugins/150-spiegel.plugins.py:87 #: data/plugins/151-spiegel-improved.plugins.py:109 msgid "Middle slice" msgstr "Hirisan tengah" # translated by: abuyop https://launchpad.net/~abuyop on 2013-06-09 11:31:29 UTC #: data/plugins/10-beginners.plugins.py:102 #: data/plugins/14-leyan-lo.plugins.py:92 #: data/plugins/150-spiegel.plugins.py:115 #: data/plugins/151-spiegel-improved.plugins.py:167 msgid "Bottom edge orient" msgstr "orientasi pinggir bawah" # translated by: abuyop https://launchpad.net/~abuyop on 2013-06-09 11:31:29 UTC #: data/plugins/10-beginners.plugins.py:120 #: data/plugins/14-leyan-lo.plugins.py:131 #: data/plugins/150-spiegel.plugins.py:143 #: data/plugins/151-spiegel-improved.plugins.py:199 #: data/plugins/20-2x2x2.plugins.py:57 msgid "Bottom corner orient" msgstr "Orientasi bucu bawah" # translated by: abuyop https://launchpad.net/~abuyop on 2013-06-09 11:31:29 UTC #: data/plugins/10-beginners.plugins.py:142 #: data/plugins/14-leyan-lo.plugins.py:109 #: data/plugins/150-spiegel.plugins.py:132 #: data/plugins/151-spiegel-improved.plugins.py:185 #: data/plugins/20-2x2x2.plugins.py:39 msgid "Bottom corner place" msgstr "Tempat dibucu bawah" # translated by: abuyop https://launchpad.net/~abuyop on 2013-06-09 11:31:29 UTC #: data/plugins/10-beginners.plugins.py:160 #: data/plugins/14-leyan-lo.plugins.py:172 #: data/plugins/150-spiegel.plugins.py:102 #: data/plugins/151-spiegel-improved.plugins.py:141 msgid "Bottom edge place" msgstr "Tempat dipinggir bawah" # translated by: abuyop https://launchpad.net/~abuyop on 2015-04-21 06:07:29 UTC #. Leyan Lo is the inventor of the solution #: data/plugins/14-leyan-lo.plugins.py:23 #: data/plugins/14-leyan-lo.plugins.py:25 #: data/plugins/14-leyan-lo.plugins.py:54 #: data/plugins/14-leyan-lo.plugins.py:75 #: data/plugins/14-leyan-lo.plugins.py:91 #: data/plugins/14-leyan-lo.plugins.py:108 #: data/plugins/14-leyan-lo.plugins.py:130 #: data/plugins/14-leyan-lo.plugins.py:171 msgid "Leyan Lo" msgstr "Leyan Lo" # translated by: abuyop https://launchpad.net/~abuyop on 2013-06-09 11:31:29 UTC #. Spiegel is a german magazine #: data/plugins/150-spiegel.plugins.py:34 #: data/plugins/150-spiegel.plugins.py:36 #: data/plugins/150-spiegel.plugins.py:65 #: data/plugins/150-spiegel.plugins.py:86 #: data/plugins/150-spiegel.plugins.py:101 #: data/plugins/150-spiegel.plugins.py:114 #: data/plugins/150-spiegel.plugins.py:131 #: data/plugins/150-spiegel.plugins.py:142 msgid "Spiegel" msgstr "Spiegel" # translated by: abuyop https://launchpad.net/~abuyop on 2013-06-09 11:31:29 UTC #. Spiegel is a german magazine #: data/plugins/151-spiegel-improved.plugins.py:22 #: data/plugins/151-spiegel-improved.plugins.py:24 #: data/plugins/151-spiegel-improved.plugins.py:69 #: data/plugins/151-spiegel-improved.plugins.py:108 #: data/plugins/151-spiegel-improved.plugins.py:140 #: data/plugins/151-spiegel-improved.plugins.py:166 #: data/plugins/151-spiegel-improved.plugins.py:184 #: data/plugins/151-spiegel-improved.plugins.py:198 msgid "Spiegel improved" msgstr "Spiegel dipertingkat" # translated by: abuyop https://launchpad.net/~abuyop on 2013-06-09 11:33:12 UTC #: data/plugins/20-2x2x2.plugins.py:19 data/plugins/20-2x2x2.plugins.py:22 #: data/plugins/20-2x2x2.plugins.py:38 data/plugins/20-2x2x2.plugins.py:56 msgid "2×2×2" msgstr "2×2×2" # translated by: abuyop https://launchpad.net/~abuyop on 2013-06-09 11:33:12 UTC #: data/plugins/20-2x2x2.plugins.py:23 msgid "Top slice" msgstr "Hirisan teratas" # translated by: abuyop https://launchpad.net/~abuyop on 2013-06-09 11:33:12 UTC #: data/plugins/80-pretty-patterns.plugins.py:20 #: data/plugins/80-pretty-patterns.plugins.py:23 #: data/plugins/80-pretty-patterns.plugins.py:27 #: data/plugins/80-pretty-patterns.plugins.py:31 #: data/plugins/80-pretty-patterns.plugins.py:35 #: data/plugins/80-pretty-patterns.plugins.py:40 #: data/plugins/80-pretty-patterns.plugins.py:44 msgid "Stripes" msgstr "Jalur" # translated by: abuyop https://launchpad.net/~abuyop on 2013-06-09 11:33:12 UTC #: data/plugins/80-pretty-patterns.plugins.py:49 #: data/plugins/80-pretty-patterns.plugins.py:53 msgid "Criss-Cross" msgstr "Silang" # translated by: abuyop https://launchpad.net/~abuyop on 2013-06-09 11:33:12 UTC #: data/plugins/80-pretty-patterns.plugins.py:57 msgid "Fried Eggs" msgstr "Telur Goreng" # translated by: abuyop https://launchpad.net/~abuyop on 2013-06-09 11:33:12 UTC #: data/plugins/80-pretty-patterns.plugins.py:61 msgid "Big Fried Eggs" msgstr "Telur Goreng Besar" # translated by: abuyop https://launchpad.net/~abuyop on 2013-06-09 11:33:12 UTC #: data/plugins/80-pretty-patterns.plugins.py:65 #: data/plugins/80-pretty-patterns.plugins.py:69 msgid "4 Fried Eggs" msgstr "4 Telur Goreng" # translated by: abuyop https://launchpad.net/~abuyop on 2015-04-21 06:07:29 UTC #: data/plugins/80-pretty-patterns.plugins.py:73 msgid "2 Fried Eggs" msgstr "2 Telur Goreng" # translated by: abuyop https://launchpad.net/~abuyop on 2013-06-09 11:33:12 UTC #: data/plugins/80-pretty-patterns.plugins.py:77 msgid "Chessboard" msgstr "Papan Catur" # translated by: abuyop https://launchpad.net/~abuyop on 2013-06-09 11:53:02 UTC #: data/plugins/80-pretty-patterns.plugins.py:83 msgid "Cross" msgstr "Silang" # translated by: abuyop https://launchpad.net/~abuyop on 2013-06-09 11:53:02 UTC #: data/plugins/80-pretty-patterns.plugins.py:87 msgid "Zig Zag" msgstr "Zig Zag" # translated by: abuyop https://launchpad.net/~abuyop on 2013-06-09 11:53:02 UTC #. T is the shape formed by the cube labels. T-Time is a pun (Tea Time) and not suitable for literal translation. Don't translate it or use something common or whatever you think makes sense. #: data/plugins/80-pretty-patterns.plugins.py:93 #: data/plugins/80-pretty-patterns.plugins.py:96 #: data/plugins/80-pretty-patterns.plugins.py:100 #: data/plugins/80-pretty-patterns.plugins.py:104 #: data/plugins/80-pretty-patterns.plugins.py:108 #: data/plugins/80-pretty-patterns.plugins.py:112 msgid "T-Time" msgstr "Masa-T" # translated by: abuyop https://launchpad.net/~abuyop on 2013-06-09 11:53:02 UTC #. C is the shape formed by the cube labels #: data/plugins/80-pretty-patterns.plugins.py:118 msgid "C" msgstr "C" # translated by: abuyop https://launchpad.net/~abuyop on 2013-06-09 11:53:02 UTC #: data/plugins/80-pretty-patterns.plugins.py:121 msgid "Cube in a Cube" msgstr "Kiub dalam Kiub" # translated by: abuyop https://launchpad.net/~abuyop on 2013-06-09 11:53:02 UTC #: data/plugins/80-pretty-patterns.plugins.py:125 msgid "Striped Cube in a Cube" msgstr "Kiub Berjalur dalam Kiub" # translated by: abuyop https://launchpad.net/~abuyop on 2015-07-24 06:19:07 UTC #: data/plugins/80-pretty-patterns.plugins.py:129 msgid "Six square cuboids" msgstr "Kuboid enam petak" # translated by: abuyop https://launchpad.net/~abuyop on 2013-06-09 11:53:02 UTC #. Superflip may be not translated, because it has a special meaning in the mathematical theory behind the Rubik's Cube. #: data/plugins/80-pretty-patterns.plugins.py:135 msgid "Superflip" msgstr "Kalih Super" # translated by: abuyop https://launchpad.net/~abuyop on 2013-06-09 11:53:02 UTC #: data/plugins/80-pretty-patterns.plugins.py:138 msgid "Superflip easy" msgstr "Kalih super mudah" # translated by: abuyop https://launchpad.net/~abuyop on 2013-06-09 11:53:02 UTC #: data/plugins/80-pretty-patterns.plugins.py:142 msgid "Green Mamba" msgstr "Mamba Hijau" # translated by: abuyop https://launchpad.net/~abuyop on 2013-06-09 11:54:42 UTC #: data/plugins/80-pretty-patterns.plugins.py:146 msgid "Anaconda" msgstr "Anaconda" # translated by: abuyop https://launchpad.net/~abuyop on 2013-06-09 11:54:42 UTC #: data/plugins/80-pretty-patterns.plugins.py:150 msgid "Duck Feet" msgstr "Kaki Itik" # translated by: abuyop https://launchpad.net/~abuyop on 2015-04-21 06:07:29 UTC #: data/plugins/80-pretty-patterns.plugins.py:154 #: data/plugins/80-pretty-patterns.plugins.py:158 #: data/plugins/80-pretty-patterns.plugins.py:162 #: data/plugins/80-pretty-patterns.plugins.py:166 #: data/plugins/80-pretty-patterns.plugins.py:170 #: data/plugins/80-pretty-patterns.plugins.py:174 #: data/plugins/80-pretty-patterns.plugins.py:178 #: data/plugins/80-pretty-patterns.plugins.py:182 msgid "Plus" msgstr "Tambah" # translated by: abuyop https://launchpad.net/~abuyop on 2015-04-21 06:07:29 UTC #: data/plugins/80-pretty-patterns.plugins.py:186 #: data/plugins/80-pretty-patterns.plugins.py:191 #: data/plugins/80-pretty-patterns.plugins.py:196 #: data/plugins/80-pretty-patterns.plugins.py:200 msgid "Minus" msgstr "Tolak" # translated by: abuyop https://launchpad.net/~abuyop on 2015-04-21 06:07:29 UTC #: data/plugins/80-pretty-patterns.plugins.py:204 msgid "Volcano" msgstr "Gunung Berapi" # translated by: abuyop https://launchpad.net/~abuyop on 2015-07-24 06:16:47 UTC #: data/plugins/80-pretty-patterns.plugins.py:208 msgid "Checkerboard (easy)" msgstr "Papan dam (mudah)" # translated by: abuyop https://launchpad.net/~abuyop on 2015-07-24 06:11:46 UTC #: data/plugins/80-pretty-patterns.plugins.py:212 msgid "Checkerboard (fast)" msgstr "Papan Dam (pantas)" # translated by: abuyop https://launchpad.net/~abuyop on 2015-07-24 06:11:46 UTC #: data/plugins/80-pretty-patterns.plugins.py:216 msgid "Mixed Checkerboard" msgstr "Papan Dam Bercampur" # translated by: abuyop https://launchpad.net/~abuyop on 2015-04-21 06:07:42 UTC #: data/plugins/80-pretty-patterns.plugins.py:220 msgid "Tipi" msgstr "Tipi" # translated by: abuyop https://launchpad.net/~abuyop on 2013-06-09 11:54:42 UTC #: data/plugins/90-library.plugins.py:18 data/plugins/90-library.plugins.py:22 #: data/plugins/90-library.plugins.py:26 data/plugins/90-library.plugins.py:30 #: data/plugins/90-library.plugins.py:34 data/plugins/90-library.plugins.py:38 #: data/plugins/90-library.plugins.py:42 data/plugins/90-library.plugins.py:46 #: data/plugins/90-library.plugins.py:50 data/plugins/90-library.plugins.py:54 #: data/plugins/90-library.plugins.py:58 data/plugins/90-library.plugins.py:62 #: data/plugins/90-library.plugins.py:66 data/plugins/90-library.plugins.py:70 #: data/plugins/90-library.plugins.py:74 data/plugins/90-library.plugins.py:78 #: data/plugins/90-library.plugins.py:82 data/plugins/90-library.plugins.py:86 #: data/plugins/90-library.plugins.py:91 data/plugins/90-library.plugins.py:96 #: data/plugins/90-library.plugins.py:101 #: data/plugins/90-library.plugins.py:105 #: data/plugins/90-library.plugins.py:110 #: data/plugins/90-library.plugins.py:115 #: data/plugins/90-library.plugins.py:119 #: data/plugins/90-library.plugins.py:123 #: data/plugins/90-library.plugins.py:127 msgid "Library" msgstr "Pustaka" # translated by: abuyop https://launchpad.net/~abuyop on 2015-07-24 06:11:46 UTC #: data/plugins/90-library.plugins.py:19 data/plugins/90-library.plugins.py:23 #: data/plugins/90-library.plugins.py:27 data/plugins/90-library.plugins.py:31 #: data/plugins/90-library.plugins.py:35 msgid "Swap edges" msgstr "Silih pinggir" # translated by: abuyop https://launchpad.net/~abuyop on 2015-07-24 06:11:46 UTC #: data/plugins/90-library.plugins.py:20 msgid "3 edges ⟳, top layer" msgstr "3 pinggir⟳, lapisan teratas" # translated by: abuyop https://launchpad.net/~abuyop on 2015-07-24 06:11:46 UTC #: data/plugins/90-library.plugins.py:24 msgid "3 edges ⟲, top layer" msgstr "3 pinggir⟲, lapisan teratas" # translated by: abuyop https://launchpad.net/~abuyop on 2015-07-24 06:11:46 UTC #: data/plugins/90-library.plugins.py:28 msgid "3 edges, middle layer" msgstr "3 pinggir, lapisan tengah" # translated by: abuyop https://launchpad.net/~abuyop on 2015-07-24 06:11:46 UTC #: data/plugins/90-library.plugins.py:32 msgid "4 edges, front and right" msgstr "4 pinggir, hadapan dan kanan" # translated by: abuyop https://launchpad.net/~abuyop on 2015-07-24 06:11:46 UTC #: data/plugins/90-library.plugins.py:36 msgid "4 edges, front and back" msgstr "4 pinggir, hadapan dan belakang" # translated by: abuyop https://launchpad.net/~abuyop on 2015-07-24 06:11:46 UTC #: data/plugins/90-library.plugins.py:39 msgid "Swap 2 edges and 2 corners, top layer" msgstr "Silih 2 pinggir dan 2 bucu, lapisan teratas" # translated by: abuyop https://launchpad.net/~abuyop on 2015-07-24 06:11:46 UTC #: data/plugins/90-library.plugins.py:43 data/plugins/90-library.plugins.py:47 msgid "Flip edges" msgstr "Kalih pinggir" # translated by: abuyop https://launchpad.net/~abuyop on 2015-07-24 06:13:22 UTC #: data/plugins/90-library.plugins.py:44 msgid "4 edges" msgstr "4 pinggir" # translated by: abuyop https://launchpad.net/~abuyop on 2015-07-24 06:13:22 UTC #: data/plugins/90-library.plugins.py:48 msgid "2 edges, top layer" msgstr "2 pinggir, lapisan teratas" # translated by: abuyop https://launchpad.net/~abuyop on 2015-07-24 06:13:22 UTC #: data/plugins/90-library.plugins.py:51 data/plugins/90-library.plugins.py:55 #: data/plugins/90-library.plugins.py:59 data/plugins/90-library.plugins.py:63 #: data/plugins/90-library.plugins.py:67 data/plugins/90-library.plugins.py:71 msgid "Swap corners" msgstr "Silih bucu" # translated by: abuyop https://launchpad.net/~abuyop on 2015-07-24 06:13:22 UTC #: data/plugins/90-library.plugins.py:52 data/plugins/90-library.plugins.py:76 msgid "2 corners, top layer" msgstr "2 bucu, lapisan teratas" # translated by: abuyop https://launchpad.net/~abuyop on 2015-07-24 06:13:22 UTC #: data/plugins/90-library.plugins.py:56 msgid "2 corners diagonal, top layer" msgstr "2 bucu berpepenjuru, lapisan teratas" # translated by: abuyop https://launchpad.net/~abuyop on 2015-07-24 06:13:22 UTC #: data/plugins/90-library.plugins.py:60 data/plugins/90-library.plugins.py:80 msgid "3 corners ⟳, top layer" msgstr "3 bucu⟳, lapisan teratas" # translated by: abuyop https://launchpad.net/~abuyop on 2015-07-24 06:13:22 UTC #: data/plugins/90-library.plugins.py:64 msgid "3 corners ⟲, top layer" msgstr "3 bucu⟲, lapisan teratas" # translated by: abuyop https://launchpad.net/~abuyop on 2015-07-24 06:13:22 UTC #: data/plugins/90-library.plugins.py:68 msgid "4 corners, top layer" msgstr "4 bucu, lapisan teratas" # translated by: abuyop https://launchpad.net/~abuyop on 2015-07-24 06:13:22 UTC #: data/plugins/90-library.plugins.py:72 msgid "2 corners, partial sequence, top layer" msgstr "2 bucu, jujukan separa, lapisan teratas" # translated by: abuyop https://launchpad.net/~abuyop on 2015-04-21 06:08:18 UTC #: data/plugins/90-library.plugins.py:75 data/plugins/90-library.plugins.py:79 #: data/plugins/90-library.plugins.py:83 data/plugins/90-library.plugins.py:87 msgid "Rotate corners" msgstr "Putar bucu" # translated by: abuyop https://launchpad.net/~abuyop on 2015-07-24 06:13:22 UTC #: data/plugins/90-library.plugins.py:84 msgid "1 corner ⟳, partial sequence, top layer" msgstr "1 bucu⟳, jujjukan separa, lapisan teratas" # translated by: abuyop https://launchpad.net/~abuyop on 2015-07-24 06:15:12 UTC #: data/plugins/90-library.plugins.py:88 msgid "1 corner ⟲, partial sequence, top layer" msgstr "1 bucu⟲, jujukan separa, lapisan teratas" # translated by: abuyop https://launchpad.net/~abuyop on 2015-04-21 06:11:33 UTC #: data/plugins/90-library.plugins.py:92 data/plugins/90-library.plugins.py:97 #: data/plugins/90-library.plugins.py:102 #: data/plugins/90-library.plugins.py:111 msgid "Rotate center" msgstr "Putar tengah" # translated by: abuyop https://launchpad.net/~abuyop on 2013-06-09 11:56:21 UTC #. 2 rotations of the center face in the upper layer #: data/plugins/90-library.plugins.py:94 msgid "2×Up" msgstr "2xNaik" # translated by: abuyop https://launchpad.net/~abuyop on 2015-07-24 06:15:12 UTC #. Up clockwise and front clockwise #: data/plugins/90-library.plugins.py:99 msgid "Up ⟳ and front ⟳" msgstr "Atas ⟳ dan hadapan" # translated by: abuyop https://launchpad.net/~abuyop on 2015-07-24 06:15:12 UTC #. Up clockwise and front counterclockwise #: data/plugins/90-library.plugins.py:104 msgid "Up ⟳ and front ⟲" msgstr "Atas ⟳ dan hadapan" # translated by: abuyop https://launchpad.net/~abuyop on 2015-07-24 06:15:12 UTC #: data/plugins/90-library.plugins.py:106 msgid "Swap center parts, up and front" msgstr "Silih bahagian tengah, atas dan hadapan" # translated by: abuyop https://launchpad.net/~abuyop on 2015-07-24 06:15:12 UTC #. Up clockwise and down counterclockwise #: data/plugins/90-library.plugins.py:113 msgid "Up ⟳ and down ⟲" msgstr "Atas ⟳ dan bawah" # translated by: abuyop https://launchpad.net/~abuyop on 2013-06-09 12:00:43 UTC #: data/plugins/90-library.plugins.py:116 #: data/plugins/90-library.plugins.py:120 #: data/plugins/90-library.plugins.py:124 #: data/plugins/90-library.plugins.py:128 msgid "Misc" msgstr "Pelbagai" # translated by: abuyop https://launchpad.net/~abuyop on 2015-07-24 06:15:12 UTC #. Yields in a rotated back layer, but the sequence of moves does not touch the back layer #: data/plugins/90-library.plugins.py:118 #: data/plugins/90-library.plugins.py:125 #: data/plugins/90-library.plugins.py:129 msgid "Back without back" msgstr "Undur tanpa belakang" # translated by: abuyop https://launchpad.net/~abuyop on 2015-07-24 06:15:12 UTC #: data/plugins/90-library.plugins.py:121 msgid "2×Back without back" msgstr "2×Undur tanpa belakang" # translated by: abuyop https://launchpad.net/~abuyop on 2015-07-24 06:15:12 UTC #: data/plugins/95-transformations.plugins.py:18 #: data/plugins/95-transformations.plugins.py:21 #: data/plugins/95-transformations.plugins.py:24 msgid "Move transformations" msgstr "Gerak transformasi" # translated by: abuyop https://launchpad.net/~abuyop on 2015-04-21 06:11:01 UTC #: data/plugins/95-transformations.plugins.py:19 msgid "Invert move sequence" msgstr "Songsangkan jujukan gerakan" # translated by: abuyop https://launchpad.net/~abuyop on 2015-04-21 06:11:01 UTC #: data/plugins/95-transformations.plugins.py:22 msgid "Normalize cube rotations" msgstr "Normalkan putaran kiub" # translated by: abuyop https://launchpad.net/~abuyop on 2015-04-21 06:11:01 UTC #: data/plugins/95-transformations.plugins.py:25 msgid "Normalize move sequence" msgstr "Normalkan jujukan gerakan" # translated by: abuyop https://launchpad.net/~abuyop on 2012-12-23 03:23:21 UTC #: buildlib/modeldef.py:110 msgid "Brick" msgstr "Bata" # translated by: abuyop https://launchpad.net/~abuyop on 2012-12-23 03:23:21 UTC #: buildlib/modeldef.py:111 #, python-brace-format msgid "{0}×{1}×{2}-Brick" msgstr "Bata-{0}×{1}×{2}" # translated by: abuyop https://launchpad.net/~abuyop on 2012-12-23 03:12:38 UTC #: buildlib/modeldef.py:112 msgid "Width:" msgstr "Lebar:" # translated by: abuyop https://launchpad.net/~abuyop on 2013-06-09 10:52:42 UTC #: buildlib/modeldef.py:112 buildlib/modeldef.py:151 buildlib/modeldef.py:249 #: buildlib/modeldef.py:300 buildlib/modeldef.py:311 msgid "Height:" msgstr "Tinggi:" # translated by: abuyop https://launchpad.net/~abuyop on 2013-06-09 10:52:42 UTC #: buildlib/modeldef.py:112 msgid "Depth:" msgstr "Kedalaman:" # translated by: abuyop https://launchpad.net/~abuyop on 2017-10-09 12:33:48 UTC #: buildlib/modeldef.py:120 buildlib/modeldef.py:257 buildlib/modeldef.py:319 #: buildlib/modeldef.py:374 buildlib/modeldef.py:433 msgid "up" msgstr "atas" # translated by: abuyop https://launchpad.net/~abuyop on 2017-10-09 12:33:48 UTC #: buildlib/modeldef.py:120 buildlib/modeldef.py:205 buildlib/modeldef.py:257 #: buildlib/modeldef.py:319 buildlib/modeldef.py:373 buildlib/modeldef.py:430 msgid "down" msgstr "bawah" # translated by: abuyop https://launchpad.net/~abuyop on 2017-10-09 12:33:48 UTC #: buildlib/modeldef.py:120 buildlib/modeldef.py:205 buildlib/modeldef.py:257 msgid "left" msgstr "kiri" # translated by: abuyop https://launchpad.net/~abuyop on 2012-12-23 03:12:38 UTC #: buildlib/modeldef.py:120 buildlib/modeldef.py:205 buildlib/modeldef.py:257 msgid "right" msgstr "kanan" # translated by: abuyop https://launchpad.net/~abuyop on 2012-12-23 03:12:38 UTC #: buildlib/modeldef.py:120 buildlib/modeldef.py:374 msgid "front" msgstr "hadapan" # translated by: abuyop https://launchpad.net/~abuyop on 2017-10-09 12:33:48 UTC #: buildlib/modeldef.py:120 buildlib/modeldef.py:205 buildlib/modeldef.py:257 #: buildlib/modeldef.py:320 buildlib/modeldef.py:373 msgid "back" msgstr "undur" # translated by: abuyop https://launchpad.net/~abuyop on 2012-12-23 03:23:21 UTC #: buildlib/modeldef.py:149 msgid "Tower" msgstr "Menara" # translated by: abuyop https://launchpad.net/~abuyop on 2012-12-23 03:23:21 UTC #: buildlib/modeldef.py:150 #, python-brace-format msgid "{0}×{1}-Tower" msgstr "Menara-{0}×{1}" # translated by: abuyop https://launchpad.net/~abuyop on 2012-12-23 03:12:38 UTC #: buildlib/modeldef.py:151 buildlib/modeldef.py:249 buildlib/modeldef.py:300 #: buildlib/modeldef.py:311 msgid "Basis:" msgstr "Asas:" # translated by: abuyop https://launchpad.net/~abuyop on 2012-12-23 03:23:21 UTC #: buildlib/modeldef.py:163 msgid "Cube" msgstr "Kiub" # translated by: abuyop https://launchpad.net/~abuyop on 2012-12-23 03:23:21 UTC #: buildlib/modeldef.py:164 #, python-brace-format msgid "{0}×{0}×{0}-Cube" msgstr "Kiub-{0}×{0}×{0}" # translated by: abuyop https://launchpad.net/~abuyop on 2012-12-23 03:12:38 UTC #: buildlib/modeldef.py:165 buildlib/modeldef.py:197 buildlib/modeldef.py:365 #: buildlib/modeldef.py:422 msgid "Size:" msgstr "Saiz:" # translated by: abuyop https://launchpad.net/~abuyop on 2015-07-24 06:15:12 UTC #: buildlib/modeldef.py:177 buildlib/modeldef.py:178 msgid "Void Cube" msgstr "Kiub Void" # translated by: abuyop https://launchpad.net/~abuyop on 2015-04-21 06:09:53 UTC #: buildlib/modeldef.py:195 msgid "Tetrahedron" msgstr "Tetrahedron" # translated by: abuyop https://launchpad.net/~abuyop on 2015-04-21 06:09:53 UTC #: buildlib/modeldef.py:196 #, python-brace-format msgid "{0}-Tetrahedron" msgstr "{0}-Tetrahedron" # translated by: abuyop https://launchpad.net/~abuyop on 2015-07-24 06:15:12 UTC #: buildlib/modeldef.py:247 msgid "Triangular Prism" msgstr "Prisma Segitiga" # translated by: abuyop https://launchpad.net/~abuyop on 2015-07-24 06:16:47 UTC #: buildlib/modeldef.py:248 #, python-brace-format msgid "{0}×{1} Triangular Prism" msgstr "{0}×{1} Prisma Segitiga" # translated by: abuyop https://launchpad.net/~abuyop on 2015-07-24 06:16:47 UTC #: buildlib/modeldef.py:298 msgid "Triangular Prism (complex)" msgstr "Prosma Segitiga (kompleks)" # translated by: abuyop https://launchpad.net/~abuyop on 2015-07-24 06:16:47 UTC #: buildlib/modeldef.py:299 #, python-brace-format msgid "{0}×{1} Triangular Prism (complex)" msgstr "{0}×{1} Prisma Segitiga (kompleks)" # translated by: abuyop https://launchpad.net/~abuyop on 2015-07-24 06:16:47 UTC #: buildlib/modeldef.py:309 msgid "Pentagonal Prism" msgstr "Prisma Pentagon" # translated by: abuyop https://launchpad.net/~abuyop on 2015-07-24 06:16:47 UTC #: buildlib/modeldef.py:310 #, python-brace-format msgid "{0}×{1} Pentagonal Prism" msgstr "{0}×{1} Prisma Pentagon" # translated by: abuyop https://launchpad.net/~abuyop on 2015-07-24 06:16:47 UTC #: buildlib/modeldef.py:320 buildlib/modeldef.py:373 msgid "front-right" msgstr "kanan-hadapan" # translated by: abuyop https://launchpad.net/~abuyop on 2017-10-09 12:33:48 UTC #: buildlib/modeldef.py:320 buildlib/modeldef.py:374 msgid "back-right" msgstr "kanan-belakang" # translated by: abuyop https://launchpad.net/~abuyop on 2017-10-09 12:33:48 UTC #: buildlib/modeldef.py:320 buildlib/modeldef.py:374 msgid "back-left" msgstr "kiri-belakang" # translated by: abuyop https://launchpad.net/~abuyop on 2015-07-24 06:16:47 UTC #: buildlib/modeldef.py:320 buildlib/modeldef.py:373 msgid "front-left" msgstr "kiri-hadapan" # translated by: abuyop https://launchpad.net/~abuyop on 2015-07-24 06:16:47 UTC #: buildlib/modeldef.py:354 msgid "Pentagonal Prism (stretched)" msgstr "Prisma Pentagon (diregang)" # translated by: abuyop https://launchpad.net/~abuyop on 2015-07-24 06:16:47 UTC #: buildlib/modeldef.py:355 #, python-brace-format msgid "{0}×{1} Pentagonal Prism (stretched)" msgstr "{0}×{1} Prisma Pentagon (diregang)" # translated by: abuyop https://launchpad.net/~abuyop on 2015-04-21 06:09:53 UTC #: buildlib/modeldef.py:363 msgid "Octahedron" msgstr "Oktahedron" # translated by: abuyop https://launchpad.net/~abuyop on 2015-04-21 06:09:53 UTC #: buildlib/modeldef.py:364 #, python-brace-format msgid "{0}-Octahedron" msgstr "{0}-Oktahedron" # translated by: abuyop https://launchpad.net/~abuyop on 2015-04-21 06:09:53 UTC #: buildlib/modeldef.py:420 msgid "Dodecahedron" msgstr "Dodekahedron" # translated by: abuyop https://launchpad.net/~abuyop on 2015-04-21 06:09:53 UTC #: buildlib/modeldef.py:421 #, python-brace-format msgid "{0}-Dodecahedron" msgstr "{0}-Dodekahedron" # translated by: abuyop https://launchpad.net/~abuyop on 2017-10-09 13:12:44 UTC #: buildlib/modeldef.py:430 msgid "down-back-right" msgstr "bawah-belakang-kanan" # translated by: abuyop https://launchpad.net/~abuyop on 2017-10-09 13:12:44 UTC #: buildlib/modeldef.py:430 msgid "down-front-right" msgstr "bawah-hadapan-kanan" # translated by: abuyop https://launchpad.net/~abuyop on 2017-10-09 13:12:44 UTC #: buildlib/modeldef.py:431 msgid "down-front" msgstr "bawah-hadapan" # translated by: abuyop https://launchpad.net/~abuyop on 2017-10-09 13:12:44 UTC #: buildlib/modeldef.py:431 msgid "down-front-left" msgstr "bawah-hadapan-kiri" # translated by: abuyop https://launchpad.net/~abuyop on 2017-10-09 13:12:44 UTC #: buildlib/modeldef.py:431 msgid "down-back-left" msgstr "bawah-belakang-kiri" # translated by: abuyop https://launchpad.net/~abuyop on 2017-10-09 12:38:22 UTC #: buildlib/modeldef.py:432 msgid "up-back" msgstr "atas-belakang" # translated by: abuyop https://launchpad.net/~abuyop on 2017-10-09 12:38:22 UTC #: buildlib/modeldef.py:432 msgid "up-back-right" msgstr "atas-belakang-kanan" # translated by: abuyop https://launchpad.net/~abuyop on 2015-07-24 06:16:47 UTC #: buildlib/modeldef.py:432 msgid "up-front-right" msgstr "atas-hadapan-kanan" # translated by: abuyop https://launchpad.net/~abuyop on 2015-07-24 06:16:47 UTC #: buildlib/modeldef.py:433 msgid "up-front-left" msgstr "atas-hadapan-kiri" # translated by: abuyop https://launchpad.net/~abuyop on 2017-10-09 12:38:22 UTC #: buildlib/modeldef.py:433 msgid "up-back-left" msgstr "atas-belakang-kiri" pybik-3.0/csrc/0000755000175000017500000000000013173167603013601 5ustar barccbarcc00000000000000pybik-3.0/csrc/_qt_qtwes2.cpp0000644000175000017500000463727713173167602016426 0ustar barccbarcc00000000000000/* Generated by Cython 0.25.2 */ #define PY_SSIZE_T_CLEAN #include "Python.h" #ifndef Py_PYTHON_H #error Python headers needed to compile C extensions, please install development version of Python. #elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03020000) #error Cython requires Python 2.6+ or Python 3.2+. #else #define CYTHON_ABI "0_25_2" #include #ifndef offsetof #define offsetof(type, member) ( (size_t) & ((type*)0) -> member ) #endif #if !defined(WIN32) && !defined(MS_WINDOWS) #ifndef __stdcall #define __stdcall #endif #ifndef __cdecl #define __cdecl #endif #ifndef __fastcall #define __fastcall #endif #endif #ifndef DL_IMPORT #define DL_IMPORT(t) t #endif #ifndef DL_EXPORT #define DL_EXPORT(t) t #endif #ifndef HAVE_LONG_LONG #if PY_VERSION_HEX >= 0x03030000 || (PY_MAJOR_VERSION == 2 && PY_VERSION_HEX >= 0x02070000) #define HAVE_LONG_LONG #endif #endif #ifndef PY_LONG_LONG #define PY_LONG_LONG LONG_LONG #endif #ifndef Py_HUGE_VAL #define Py_HUGE_VAL HUGE_VAL #endif #ifdef PYPY_VERSION #define CYTHON_COMPILING_IN_PYPY 1 #define CYTHON_COMPILING_IN_PYSTON 0 #define CYTHON_COMPILING_IN_CPYTHON 0 #undef CYTHON_USE_TYPE_SLOTS #define CYTHON_USE_TYPE_SLOTS 0 #undef CYTHON_USE_ASYNC_SLOTS #define CYTHON_USE_ASYNC_SLOTS 0 #undef CYTHON_USE_PYLIST_INTERNALS #define CYTHON_USE_PYLIST_INTERNALS 0 #undef CYTHON_USE_UNICODE_INTERNALS #define CYTHON_USE_UNICODE_INTERNALS 0 #undef CYTHON_USE_UNICODE_WRITER #define CYTHON_USE_UNICODE_WRITER 0 #undef CYTHON_USE_PYLONG_INTERNALS #define CYTHON_USE_PYLONG_INTERNALS 0 #undef CYTHON_AVOID_BORROWED_REFS #define CYTHON_AVOID_BORROWED_REFS 1 #undef CYTHON_ASSUME_SAFE_MACROS #define CYTHON_ASSUME_SAFE_MACROS 0 #undef CYTHON_UNPACK_METHODS #define CYTHON_UNPACK_METHODS 0 #undef CYTHON_FAST_THREAD_STATE #define CYTHON_FAST_THREAD_STATE 0 #undef CYTHON_FAST_PYCALL #define CYTHON_FAST_PYCALL 0 #elif defined(PYSTON_VERSION) #define CYTHON_COMPILING_IN_PYPY 0 #define CYTHON_COMPILING_IN_PYSTON 1 #define CYTHON_COMPILING_IN_CPYTHON 0 #ifndef CYTHON_USE_TYPE_SLOTS #define CYTHON_USE_TYPE_SLOTS 1 #endif #undef CYTHON_USE_ASYNC_SLOTS #define CYTHON_USE_ASYNC_SLOTS 0 #undef CYTHON_USE_PYLIST_INTERNALS #define CYTHON_USE_PYLIST_INTERNALS 0 #ifndef CYTHON_USE_UNICODE_INTERNALS #define CYTHON_USE_UNICODE_INTERNALS 1 #endif #undef CYTHON_USE_UNICODE_WRITER #define CYTHON_USE_UNICODE_WRITER 0 #undef CYTHON_USE_PYLONG_INTERNALS #define CYTHON_USE_PYLONG_INTERNALS 0 #ifndef CYTHON_AVOID_BORROWED_REFS #define CYTHON_AVOID_BORROWED_REFS 0 #endif #ifndef CYTHON_ASSUME_SAFE_MACROS #define CYTHON_ASSUME_SAFE_MACROS 1 #endif #ifndef CYTHON_UNPACK_METHODS #define CYTHON_UNPACK_METHODS 1 #endif #undef CYTHON_FAST_THREAD_STATE #define CYTHON_FAST_THREAD_STATE 0 #undef CYTHON_FAST_PYCALL #define CYTHON_FAST_PYCALL 0 #else #define CYTHON_COMPILING_IN_PYPY 0 #define CYTHON_COMPILING_IN_PYSTON 0 #define CYTHON_COMPILING_IN_CPYTHON 1 #ifndef CYTHON_USE_TYPE_SLOTS #define CYTHON_USE_TYPE_SLOTS 1 #endif #if PY_MAJOR_VERSION < 3 #undef CYTHON_USE_ASYNC_SLOTS #define CYTHON_USE_ASYNC_SLOTS 0 #elif !defined(CYTHON_USE_ASYNC_SLOTS) #define CYTHON_USE_ASYNC_SLOTS 1 #endif #if PY_VERSION_HEX < 0x02070000 #undef CYTHON_USE_PYLONG_INTERNALS #define CYTHON_USE_PYLONG_INTERNALS 0 #elif !defined(CYTHON_USE_PYLONG_INTERNALS) #define CYTHON_USE_PYLONG_INTERNALS 1 #endif #ifndef CYTHON_USE_PYLIST_INTERNALS #define CYTHON_USE_PYLIST_INTERNALS 1 #endif #ifndef CYTHON_USE_UNICODE_INTERNALS #define CYTHON_USE_UNICODE_INTERNALS 1 #endif #if PY_VERSION_HEX < 0x030300F0 #undef CYTHON_USE_UNICODE_WRITER #define CYTHON_USE_UNICODE_WRITER 0 #elif !defined(CYTHON_USE_UNICODE_WRITER) #define CYTHON_USE_UNICODE_WRITER 1 #endif #ifndef CYTHON_AVOID_BORROWED_REFS #define CYTHON_AVOID_BORROWED_REFS 0 #endif #ifndef CYTHON_ASSUME_SAFE_MACROS #define CYTHON_ASSUME_SAFE_MACROS 1 #endif #ifndef CYTHON_UNPACK_METHODS #define CYTHON_UNPACK_METHODS 1 #endif #ifndef CYTHON_FAST_THREAD_STATE #define CYTHON_FAST_THREAD_STATE 1 #endif #ifndef CYTHON_FAST_PYCALL #define CYTHON_FAST_PYCALL 1 #endif #endif #if !defined(CYTHON_FAST_PYCCALL) #define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1) #endif #if CYTHON_USE_PYLONG_INTERNALS #include "longintrepr.h" #undef SHIFT #undef BASE #undef MASK #endif #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x02070600 && !defined(Py_OptimizeFlag) #define Py_OptimizeFlag 0 #endif #define __PYX_BUILD_PY_SSIZE_T "n" #define CYTHON_FORMAT_SSIZE_T "z" #if PY_MAJOR_VERSION < 3 #define __Pyx_BUILTIN_MODULE_NAME "__builtin__" #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ PyCode_New(a+k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) #define __Pyx_DefaultClassType PyClass_Type #else #define __Pyx_BUILTIN_MODULE_NAME "builtins" #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) #define __Pyx_DefaultClassType PyType_Type #endif #ifndef Py_TPFLAGS_CHECKTYPES #define Py_TPFLAGS_CHECKTYPES 0 #endif #ifndef Py_TPFLAGS_HAVE_INDEX #define Py_TPFLAGS_HAVE_INDEX 0 #endif #ifndef Py_TPFLAGS_HAVE_NEWBUFFER #define Py_TPFLAGS_HAVE_NEWBUFFER 0 #endif #ifndef Py_TPFLAGS_HAVE_FINALIZE #define Py_TPFLAGS_HAVE_FINALIZE 0 #endif #ifndef METH_FASTCALL #define METH_FASTCALL 0x80 typedef PyObject *(*__Pyx_PyCFunctionFast) (PyObject *self, PyObject **args, Py_ssize_t nargs, PyObject *kwnames); #else #define __Pyx_PyCFunctionFast _PyCFunctionFast #endif #if CYTHON_FAST_PYCCALL #define __Pyx_PyFastCFunction_Check(func)\ ((PyCFunction_Check(func) && (METH_FASTCALL == (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST))))) #else #define __Pyx_PyFastCFunction_Check(func) 0 #endif #if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND) #define CYTHON_PEP393_ENABLED 1 #define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ?\ 0 : _PyUnicode_Ready((PyObject *)(op))) #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_LENGTH(u) #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i) #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) PyUnicode_MAX_CHAR_VALUE(u) #define __Pyx_PyUnicode_KIND(u) PyUnicode_KIND(u) #define __Pyx_PyUnicode_DATA(u) PyUnicode_DATA(u) #define __Pyx_PyUnicode_READ(k, d, i) PyUnicode_READ(k, d, i) #define __Pyx_PyUnicode_WRITE(k, d, i, ch) PyUnicode_WRITE(k, d, i, ch) #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u))) #else #define CYTHON_PEP393_ENABLED 0 #define PyUnicode_1BYTE_KIND 1 #define PyUnicode_2BYTE_KIND 2 #define PyUnicode_4BYTE_KIND 4 #define __Pyx_PyUnicode_READY(op) (0) #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_SIZE(u) #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i])) #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) ((sizeof(Py_UNICODE) == 2) ? 65535 : 1114111) #define __Pyx_PyUnicode_KIND(u) (sizeof(Py_UNICODE)) #define __Pyx_PyUnicode_DATA(u) ((void*)PyUnicode_AS_UNICODE(u)) #define __Pyx_PyUnicode_READ(k, d, i) ((void)(k), (Py_UCS4)(((Py_UNICODE*)d)[i])) #define __Pyx_PyUnicode_WRITE(k, d, i, ch) (((void)(k)), ((Py_UNICODE*)d)[i] = ch) #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_SIZE(u)) #endif #if CYTHON_COMPILING_IN_PYPY #define __Pyx_PyUnicode_Concat(a, b) PyNumber_Add(a, b) #define __Pyx_PyUnicode_ConcatSafe(a, b) PyNumber_Add(a, b) #else #define __Pyx_PyUnicode_Concat(a, b) PyUnicode_Concat(a, b) #define __Pyx_PyUnicode_ConcatSafe(a, b) ((unlikely((a) == Py_None) || unlikely((b) == Py_None)) ?\ PyNumber_Add(a, b) : __Pyx_PyUnicode_Concat(a, b)) #endif #if CYTHON_COMPILING_IN_PYPY && !defined(PyUnicode_Contains) #define PyUnicode_Contains(u, s) PySequence_Contains(u, s) #endif #if CYTHON_COMPILING_IN_PYPY && !defined(PyByteArray_Check) #define PyByteArray_Check(obj) PyObject_TypeCheck(obj, &PyByteArray_Type) #endif #if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Format) #define PyObject_Format(obj, fmt) PyObject_CallMethod(obj, "__format__", "O", fmt) #endif #if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc) #define PyObject_Malloc(s) PyMem_Malloc(s) #define PyObject_Free(p) PyMem_Free(p) #define PyObject_Realloc(p) PyMem_Realloc(p) #endif #if CYTHON_COMPILING_IN_PYSTON #define __Pyx_PyCode_HasFreeVars(co) PyCode_HasFreeVars(co) #define __Pyx_PyFrame_SetLineNumber(frame, lineno) PyFrame_SetLineNumber(frame, lineno) #else #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0) #define __Pyx_PyFrame_SetLineNumber(frame, lineno) (frame)->f_lineno = (lineno) #endif #define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b)) #define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b)) #if PY_MAJOR_VERSION >= 3 #define __Pyx_PyString_Format(a, b) PyUnicode_Format(a, b) #else #define __Pyx_PyString_Format(a, b) PyString_Format(a, b) #endif #if PY_MAJOR_VERSION < 3 && !defined(PyObject_ASCII) #define PyObject_ASCII(o) PyObject_Repr(o) #endif #if PY_MAJOR_VERSION >= 3 #define PyBaseString_Type PyUnicode_Type #define PyStringObject PyUnicodeObject #define PyString_Type PyUnicode_Type #define PyString_Check PyUnicode_Check #define PyString_CheckExact PyUnicode_CheckExact #endif #if PY_MAJOR_VERSION >= 3 #define __Pyx_PyBaseString_Check(obj) PyUnicode_Check(obj) #define __Pyx_PyBaseString_CheckExact(obj) PyUnicode_CheckExact(obj) #else #define __Pyx_PyBaseString_Check(obj) (PyString_Check(obj) || PyUnicode_Check(obj)) #define __Pyx_PyBaseString_CheckExact(obj) (PyString_CheckExact(obj) || PyUnicode_CheckExact(obj)) #endif #ifndef PySet_CheckExact #define PySet_CheckExact(obj) (Py_TYPE(obj) == &PySet_Type) #endif #define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type) #define __Pyx_PyException_Check(obj) __Pyx_TypeCheck(obj, PyExc_Exception) #if PY_MAJOR_VERSION >= 3 #define PyIntObject PyLongObject #define PyInt_Type PyLong_Type #define PyInt_Check(op) PyLong_Check(op) #define PyInt_CheckExact(op) PyLong_CheckExact(op) #define PyInt_FromString PyLong_FromString #define PyInt_FromUnicode PyLong_FromUnicode #define PyInt_FromLong PyLong_FromLong #define PyInt_FromSize_t PyLong_FromSize_t #define PyInt_FromSsize_t PyLong_FromSsize_t #define PyInt_AsLong PyLong_AsLong #define PyInt_AS_LONG PyLong_AS_LONG #define PyInt_AsSsize_t PyLong_AsSsize_t #define PyInt_AsUnsignedLongMask PyLong_AsUnsignedLongMask #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask #define PyNumber_Int PyNumber_Long #endif #if PY_MAJOR_VERSION >= 3 #define PyBoolObject PyLongObject #endif #if PY_MAJOR_VERSION >= 3 && CYTHON_COMPILING_IN_PYPY #ifndef PyUnicode_InternFromString #define PyUnicode_InternFromString(s) PyUnicode_FromString(s) #endif #endif #if PY_VERSION_HEX < 0x030200A4 typedef long Py_hash_t; #define __Pyx_PyInt_FromHash_t PyInt_FromLong #define __Pyx_PyInt_AsHash_t PyInt_AsLong #else #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t #define __Pyx_PyInt_AsHash_t PyInt_AsSsize_t #endif #if PY_MAJOR_VERSION >= 3 #define __Pyx_PyMethod_New(func, self, klass) ((self) ? PyMethod_New(func, self) : PyInstanceMethod_New(func)) #else #define __Pyx_PyMethod_New(func, self, klass) PyMethod_New(func, self, klass) #endif #if CYTHON_USE_ASYNC_SLOTS #if PY_VERSION_HEX >= 0x030500B1 #define __Pyx_PyAsyncMethodsStruct PyAsyncMethods #define __Pyx_PyType_AsAsync(obj) (Py_TYPE(obj)->tp_as_async) #else typedef struct { unaryfunc am_await; unaryfunc am_aiter; unaryfunc am_anext; } __Pyx_PyAsyncMethodsStruct; #define __Pyx_PyType_AsAsync(obj) ((__Pyx_PyAsyncMethodsStruct*) (Py_TYPE(obj)->tp_reserved)) #endif #else #define __Pyx_PyType_AsAsync(obj) NULL #endif #ifndef CYTHON_RESTRICT #if defined(__GNUC__) #define CYTHON_RESTRICT __restrict__ #elif defined(_MSC_VER) && _MSC_VER >= 1400 #define CYTHON_RESTRICT __restrict #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L #define CYTHON_RESTRICT restrict #else #define CYTHON_RESTRICT #endif #endif #ifndef CYTHON_UNUSED # if defined(__GNUC__) # if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) # define CYTHON_UNUSED __attribute__ ((__unused__)) # else # define CYTHON_UNUSED # endif # elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER)) # define CYTHON_UNUSED __attribute__ ((__unused__)) # else # define CYTHON_UNUSED # endif #endif #ifndef CYTHON_MAYBE_UNUSED_VAR # if defined(__cplusplus) template void CYTHON_MAYBE_UNUSED_VAR( const T& ) { } # else # define CYTHON_MAYBE_UNUSED_VAR(x) (void)(x) # endif #endif #ifndef CYTHON_NCP_UNUSED # if CYTHON_COMPILING_IN_CPYTHON # define CYTHON_NCP_UNUSED # else # define CYTHON_NCP_UNUSED CYTHON_UNUSED # endif #endif #define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None) #ifndef __cplusplus #error "Cython files generated with the C++ option must be compiled with a C++ compiler." #endif #ifndef CYTHON_INLINE #if defined(__clang__) #define CYTHON_INLINE __inline__ __attribute__ ((__unused__)) #else #define CYTHON_INLINE inline #endif #endif template void __Pyx_call_destructor(T& x) { x.~T(); } template class __Pyx_FakeReference { public: __Pyx_FakeReference() : ptr(NULL) { } __Pyx_FakeReference(const T& ref) : ptr(const_cast(&ref)) { } T *operator->() { return ptr; } T *operator&() { return ptr; } operator T&() { return *ptr; } template bool operator ==(U other) { return *ptr == other; } template bool operator !=(U other) { return *ptr != other; } private: T *ptr; }; #if defined(WIN32) || defined(MS_WINDOWS) #define _USE_MATH_DEFINES #endif #include #ifdef NAN #define __PYX_NAN() ((float) NAN) #else static CYTHON_INLINE float __PYX_NAN() { float value; memset(&value, 0xFF, sizeof(value)); return value; } #endif #if defined(__CYGWIN__) && defined(_LDBL_EQ_DBL) #define __Pyx_truncl trunc #else #define __Pyx_truncl truncl #endif #define __PYX_ERR(f_index, lineno, Ln_error) \ { \ __pyx_filename = __pyx_f[f_index]; __pyx_lineno = lineno; __pyx_clineno = __LINE__; goto Ln_error; \ } #if PY_MAJOR_VERSION >= 3 #define __Pyx_PyNumber_Divide(x,y) PyNumber_TrueDivide(x,y) #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceTrueDivide(x,y) #else #define __Pyx_PyNumber_Divide(x,y) PyNumber_TrueDivide(x,y) #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceTrueDivide(x,y) #endif #ifndef __PYX_EXTERN_C #ifdef __cplusplus #define __PYX_EXTERN_C extern "C" #else #define __PYX_EXTERN_C extern #endif #endif #define __PYX_HAVE___qt_qtwes2 #define __PYX_HAVE_API___qt_qtwes2 #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "_qt_qtwes2_moc.h" #include #include "GLES2/gl2.h" #include #include #ifdef _OPENMP #include #endif /* _OPENMP */ #ifdef PYREX_WITHOUT_ASSERTIONS #define CYTHON_WITHOUT_ASSERTIONS #endif typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* encoding; const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry; #define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0 #define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT 0 #define __PYX_DEFAULT_STRING_ENCODING "" #define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString #define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize #define __Pyx_uchar_cast(c) ((unsigned char)c) #define __Pyx_long_cast(x) ((long)x) #define __Pyx_fits_Py_ssize_t(v, type, is_signed) (\ (sizeof(type) < sizeof(Py_ssize_t)) ||\ (sizeof(type) > sizeof(Py_ssize_t) &&\ likely(v < (type)PY_SSIZE_T_MAX ||\ v == (type)PY_SSIZE_T_MAX) &&\ (!is_signed || likely(v > (type)PY_SSIZE_T_MIN ||\ v == (type)PY_SSIZE_T_MIN))) ||\ (sizeof(type) == sizeof(Py_ssize_t) &&\ (is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\ v == (type)PY_SSIZE_T_MAX))) ) #if defined (__cplusplus) && __cplusplus >= 201103L #include #define __Pyx_sst_abs(value) std::abs(value) #elif SIZEOF_INT >= SIZEOF_SIZE_T #define __Pyx_sst_abs(value) abs(value) #elif SIZEOF_LONG >= SIZEOF_SIZE_T #define __Pyx_sst_abs(value) labs(value) #elif defined (_MSC_VER) && defined (_M_X64) #define __Pyx_sst_abs(value) _abs64(value) #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L #define __Pyx_sst_abs(value) llabs(value) #elif defined (__GNUC__) #define __Pyx_sst_abs(value) __builtin_llabs(value) #else #define __Pyx_sst_abs(value) ((value<0) ? -value : value) #endif static CYTHON_INLINE char* __Pyx_PyObject_AsString(PyObject*); static CYTHON_INLINE char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length); #define __Pyx_PyByteArray_FromString(s) PyByteArray_FromStringAndSize((const char*)s, strlen((const char*)s)) #define __Pyx_PyByteArray_FromStringAndSize(s, l) PyByteArray_FromStringAndSize((const char*)s, l) #define __Pyx_PyBytes_FromString PyBytes_FromString #define __Pyx_PyBytes_FromStringAndSize PyBytes_FromStringAndSize static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char*); #if PY_MAJOR_VERSION < 3 #define __Pyx_PyStr_FromString __Pyx_PyBytes_FromString #define __Pyx_PyStr_FromStringAndSize __Pyx_PyBytes_FromStringAndSize #else #define __Pyx_PyStr_FromString __Pyx_PyUnicode_FromString #define __Pyx_PyStr_FromStringAndSize __Pyx_PyUnicode_FromStringAndSize #endif #define __Pyx_PyObject_AsSString(s) ((signed char*) __Pyx_PyObject_AsString(s)) #define __Pyx_PyObject_AsUString(s) ((unsigned char*) __Pyx_PyObject_AsString(s)) #define __Pyx_PyObject_FromCString(s) __Pyx_PyObject_FromString((const char*)s) #define __Pyx_PyBytes_FromCString(s) __Pyx_PyBytes_FromString((const char*)s) #define __Pyx_PyByteArray_FromCString(s) __Pyx_PyByteArray_FromString((const char*)s) #define __Pyx_PyStr_FromCString(s) __Pyx_PyStr_FromString((const char*)s) #define __Pyx_PyUnicode_FromCString(s) __Pyx_PyUnicode_FromString((const char*)s) #if PY_MAJOR_VERSION < 3 static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u) { const Py_UNICODE *u_end = u; while (*u_end++) ; return (size_t)(u_end - u - 1); } #else #define __Pyx_Py_UNICODE_strlen Py_UNICODE_strlen #endif #define __Pyx_PyUnicode_FromUnicode(u) PyUnicode_FromUnicode(u, __Pyx_Py_UNICODE_strlen(u)) #define __Pyx_PyUnicode_FromUnicodeAndLength PyUnicode_FromUnicode #define __Pyx_PyUnicode_AsUnicode PyUnicode_AsUnicode #define __Pyx_NewRef(obj) (Py_INCREF(obj), obj) #define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None) #define __Pyx_PyBool_FromLong(b) ((b) ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False)) static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*); static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x); static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*); static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t); #if CYTHON_ASSUME_SAFE_MACROS #define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x)) #else #define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x) #endif #define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x)) #if PY_MAJOR_VERSION >= 3 #define __Pyx_PyNumber_Int(x) (PyLong_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Long(x)) #else #define __Pyx_PyNumber_Int(x) (PyInt_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Int(x)) #endif #define __Pyx_PyNumber_Float(x) (PyFloat_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Float(x)) #if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII static int __Pyx_sys_getdefaultencoding_not_ascii; static int __Pyx_init_sys_getdefaultencoding_params(void) { PyObject* sys; PyObject* default_encoding = NULL; PyObject* ascii_chars_u = NULL; PyObject* ascii_chars_b = NULL; const char* default_encoding_c; sys = PyImport_ImportModule("sys"); if (!sys) goto bad; default_encoding = PyObject_CallMethod(sys, (char*) "getdefaultencoding", NULL); Py_DECREF(sys); if (!default_encoding) goto bad; default_encoding_c = PyBytes_AsString(default_encoding); if (!default_encoding_c) goto bad; if (strcmp(default_encoding_c, "ascii") == 0) { __Pyx_sys_getdefaultencoding_not_ascii = 0; } else { char ascii_chars[128]; int c; for (c = 0; c < 128; c++) { ascii_chars[c] = c; } __Pyx_sys_getdefaultencoding_not_ascii = 1; ascii_chars_u = PyUnicode_DecodeASCII(ascii_chars, 128, NULL); if (!ascii_chars_u) goto bad; ascii_chars_b = PyUnicode_AsEncodedString(ascii_chars_u, default_encoding_c, NULL); if (!ascii_chars_b || !PyBytes_Check(ascii_chars_b) || memcmp(ascii_chars, PyBytes_AS_STRING(ascii_chars_b), 128) != 0) { PyErr_Format( PyExc_ValueError, "This module compiled with c_string_encoding=ascii, but default encoding '%.200s' is not a superset of ascii.", default_encoding_c); goto bad; } Py_DECREF(ascii_chars_u); Py_DECREF(ascii_chars_b); } Py_DECREF(default_encoding); return 0; bad: Py_XDECREF(default_encoding); Py_XDECREF(ascii_chars_u); Py_XDECREF(ascii_chars_b); return -1; } #endif #if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT && PY_MAJOR_VERSION >= 3 #define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeUTF8(c_str, size, NULL) #else #define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_Decode(c_str, size, __PYX_DEFAULT_STRING_ENCODING, NULL) #if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT static char* __PYX_DEFAULT_STRING_ENCODING; static int __Pyx_init_sys_getdefaultencoding_params(void) { PyObject* sys; PyObject* default_encoding = NULL; char* default_encoding_c; sys = PyImport_ImportModule("sys"); if (!sys) goto bad; default_encoding = PyObject_CallMethod(sys, (char*) (const char*) "getdefaultencoding", NULL); Py_DECREF(sys); if (!default_encoding) goto bad; default_encoding_c = PyBytes_AsString(default_encoding); if (!default_encoding_c) goto bad; __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c)); if (!__PYX_DEFAULT_STRING_ENCODING) goto bad; strcpy(__PYX_DEFAULT_STRING_ENCODING, default_encoding_c); Py_DECREF(default_encoding); return 0; bad: Py_XDECREF(default_encoding); return -1; } #endif #endif /* Test for GCC > 2.95 */ #if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))) #define likely(x) __builtin_expect(!!(x), 1) #define unlikely(x) __builtin_expect(!!(x), 0) #else /* !__GNUC__ or GCC < 2.95 */ #define likely(x) (x) #define unlikely(x) (x) #endif /* __GNUC__ */ static PyObject *__pyx_m; static PyObject *__pyx_d; static PyObject *__pyx_b; static PyObject *__pyx_empty_tuple; static PyObject *__pyx_empty_bytes; static PyObject *__pyx_empty_unicode; static int __pyx_lineno; static int __pyx_clineno = 0; static const char * __pyx_cfilenm= __FILE__; static const char *__pyx_filename; static const char *__pyx_f[] = { "build/temp.linux-x86_64-3.5/pybiklib/ext/_qt_qtwes2.pyx", }; /*--- Type declarations ---*/ struct __pyx_obj_10_qt_qtwes2___pyx_scope_struct__keyval_from_name; struct __pyx_obj_10_qt_qtwes2___pyx_scope_struct_1_genexpr; /* "qt.pxd":23 * * * ctypedef void CallbackVoid() nogil # <<<<<<<<<<<<<< * ctypedef void CallbackInt(int) nogil * ctypedef void CallbackString(const QString &) nogil */ typedef void __pyx_t_2qt_CallbackVoid(void); /* "qt.pxd":24 * * ctypedef void CallbackVoid() nogil * ctypedef void CallbackInt(int) nogil # <<<<<<<<<<<<<< * ctypedef void CallbackString(const QString &) nogil * ctypedef void CallbackDebugMessage(const QOpenGLDebugMessage &) nogil */ typedef void __pyx_t_2qt_CallbackInt(int); /* "qt.pxd":25 * ctypedef void CallbackVoid() nogil * ctypedef void CallbackInt(int) nogil * ctypedef void CallbackString(const QString &) nogil # <<<<<<<<<<<<<< * ctypedef void CallbackDebugMessage(const QOpenGLDebugMessage &) nogil * */ typedef void __pyx_t_2qt_CallbackString(QString const &); /* "qt.pxd":26 * ctypedef void CallbackInt(int) nogil * ctypedef void CallbackString(const QString &) nogil * ctypedef void CallbackDebugMessage(const QOpenGLDebugMessage &) nogil # <<<<<<<<<<<<<< * * */ typedef void __pyx_t_2qt_CallbackDebugMessage(QOpenGLDebugMessage const &); struct __pyx_t_10_qt_qtwes2_RenderData; struct __pyx_t_10_qt_qtwes2_UIData; /* "_qt_qtwes2.pyx":86 * #puts = print * * cdef enum: # #px/ # <<<<<<<<<<<<<< * #if True: * DEBUG_MSG = 0x0002 */ enum { __pyx_e_10_qt_qtwes2_DEBUG_MSG = 0x0002, __pyx_e_10_qt_qtwes2_DEBUG_MSGGL = 0x0004, __pyx_e_10_qt_qtwes2_DEBUG_MSGEXT = 0x0020, __pyx_e_10_qt_qtwes2_DEBUG_DRAW = 0x0040, __pyx_e_10_qt_qtwes2_DEBUG_FPS = 0x0080, __pyx_e_10_qt_qtwes2_DEBUG_VFPS = 0x0100, __pyx_e_10_qt_qtwes2_DEBUG_QML = 0x0200, __pyx_e_10_qt_qtwes2_DEBUG_GLDEBUG = 0x0400, __pyx_e_10_qt_qtwes2_DEBUG_PHONE = 0x0800, __pyx_e_10_qt_qtwes2_DEBUG_SIM = 0x1000, __pyx_e_10_qt_qtwes2_DEBUG_NOCONTROLS = 0x2000 }; /* "_qt_qtwes2.pyx":122 * # #px+cdef enum: * # #px/SAFE_MODIFIER_MASK = Qt.ShiftModifier | Qt.ControlModifier | Qt.KeypadModifier * cdef enum: #px+ # <<<<<<<<<<<<<< * SHIFTMODIFIER = Qt.ShiftModifier #px+ * CONTROLMODIFIER = Qt.ControlModifier #px+ */ enum { /* "_qt_qtwes2.pyx":125 * SHIFTMODIFIER = Qt.ShiftModifier #px+ * CONTROLMODIFIER = Qt.ControlModifier #px+ * KEYPADMODIFIER = Qt.KeypadModifier #px+ # <<<<<<<<<<<<<< * cdef enum: #px+ * SAFE_MODIFIER_MASK = SHIFTMODIFIER | CONTROLMODIFIER | KEYPADMODIFIER #px/ */ __pyx_e_10_qt_qtwes2_SHIFTMODIFIER = Qt::ShiftModifier, __pyx_e_10_qt_qtwes2_CONTROLMODIFIER = Qt::ControlModifier, __pyx_e_10_qt_qtwes2_KEYPADMODIFIER = Qt::KeypadModifier }; /* "_qt_qtwes2.pyx":126 * CONTROLMODIFIER = Qt.ControlModifier #px+ * KEYPADMODIFIER = Qt.KeypadModifier #px+ * cdef enum: #px+ # <<<<<<<<<<<<<< * SAFE_MODIFIER_MASK = SHIFTMODIFIER | CONTROLMODIFIER | KEYPADMODIFIER #px/ * #SAFE_MODIFIER_MASK = int(Qt.ShiftModifier | Qt.ControlModifier | Qt.KeypadModifier) */ enum { /* "_qt_qtwes2.pyx":127 * KEYPADMODIFIER = Qt.KeypadModifier #px+ * cdef enum: #px+ * SAFE_MODIFIER_MASK = SHIFTMODIFIER | CONTROLMODIFIER | KEYPADMODIFIER #px/ # <<<<<<<<<<<<<< * #SAFE_MODIFIER_MASK = int(Qt.ShiftModifier | Qt.ControlModifier | Qt.KeypadModifier) * ##pxm>IF 'qtw' == 'qtq' */ __pyx_e_10_qt_qtwes2_SAFE_MODIFIER_MASK = ((__pyx_e_10_qt_qtwes2_SHIFTMODIFIER | __pyx_e_10_qt_qtwes2_CONTROLMODIFIER) | __pyx_e_10_qt_qtwes2_KEYPADMODIFIER) }; /* "_qt_qtwes2.pyx":148 * #### Data #### * * ctypedef QObject *pQObject #px+ # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtq' * #~ ctypedef QQuickItem *pQQuickItem */ typedef QObject *__pyx_t_10_qt_qtwes2_pQObject; /* "_qt_qtwes2.pyx":153 * #~ ##pxm>IF_END * * cdef struct RenderData: #px/ # <<<<<<<<<<<<<< * #class renderdata: pass * QOpenGLTexture* texture #px+ */ struct __pyx_t_10_qt_qtwes2_RenderData { QOpenGLTexture *texture; int atlas_width; int atlas_height; QOpenGLFramebufferObject *pickbuffer; QOpenGLFramebufferObject *offscreenbuffer; QElapsedTimer *fps_monotonic_time; int fps_count; bool initialized; Renderer *renderer; bool atlas_changed; bool pickxy_changed; QOpenGLDebugLogger *gldebuglogger; }; /* "_qt_qtwes2.pyx":172 * DEF maxproxy = 21 #px+ * * cdef struct UIData: #px/ # <<<<<<<<<<<<<< * #class uidata: * cbool atlas_changed #px+ */ struct __pyx_t_10_qt_qtwes2_UIData { bool atlas_changed; int atlas_width; int atlas_height; bool pick_requested; float grid_unit_px; int width; int height; int gl_y; QFileSystemWatcher *filesystemwatcher; QTimer *settings_timer; QSurfaceFormat default_format; QCursor *cursors[18]; QImage offscreen_image; MainView *mainwindow; int modelselect_currentpage; float speed; float animation_angle; float angle_max; QTimer *animate_timer; QStandardItemModel *treestore; MoveEdit *move_edit; QLabel *statuslabel; DrawingArea *drawingarea; PreferencesDialog *preferences; HelpDialog *help; }; /* "_qt_qtwes2.pyx":1988 * ##pxm>IF_END * * def keyval_from_name(keystr): # <<<<<<<<<<<<<< * keystr = '+'.join(('Num' if k == 'KP' else k) for k in keystr.split('+')) * cdef QKeySequence keyseq = fromString(str2q(keystr), PortableText) #px/ */ struct __pyx_obj_10_qt_qtwes2___pyx_scope_struct__keyval_from_name { PyObject_HEAD PyObject *__pyx_v_keystr; }; /* "_qt_qtwes2.pyx":1989 * * def keyval_from_name(keystr): * keystr = '+'.join(('Num' if k == 'KP' else k) for k in keystr.split('+')) # <<<<<<<<<<<<<< * cdef QKeySequence keyseq = fromString(str2q(keystr), PortableText) #px/ * #keyseq = fromString(keystr, PortableText) */ struct __pyx_obj_10_qt_qtwes2___pyx_scope_struct_1_genexpr { PyObject_HEAD struct __pyx_obj_10_qt_qtwes2___pyx_scope_struct__keyval_from_name *__pyx_outer_scope; PyObject *__pyx_v_k; }; /* --- Runtime support code (head) --- */ /* Refnanny.proto */ #ifndef CYTHON_REFNANNY #define CYTHON_REFNANNY 0 #endif #if CYTHON_REFNANNY typedef struct { void (*INCREF)(void*, PyObject*, int); void (*DECREF)(void*, PyObject*, int); void (*GOTREF)(void*, PyObject*, int); void (*GIVEREF)(void*, PyObject*, int); void* (*SetupContext)(const char*, int, const char*); void (*FinishContext)(void**); } __Pyx_RefNannyAPIStruct; static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL; static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname); #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL; #ifdef WITH_THREAD #define __Pyx_RefNannySetupContext(name, acquire_gil)\ if (acquire_gil) {\ PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\ __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\ PyGILState_Release(__pyx_gilstate_save);\ } else {\ __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\ } #else #define __Pyx_RefNannySetupContext(name, acquire_gil)\ __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__) #endif #define __Pyx_RefNannyFinishContext()\ __Pyx_RefNanny->FinishContext(&__pyx_refnanny) #define __Pyx_INCREF(r) __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__) #define __Pyx_DECREF(r) __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__) #define __Pyx_GOTREF(r) __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), __LINE__) #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), __LINE__) #define __Pyx_XINCREF(r) do { if((r) != NULL) {__Pyx_INCREF(r); }} while(0) #define __Pyx_XDECREF(r) do { if((r) != NULL) {__Pyx_DECREF(r); }} while(0) #define __Pyx_XGOTREF(r) do { if((r) != NULL) {__Pyx_GOTREF(r); }} while(0) #define __Pyx_XGIVEREF(r) do { if((r) != NULL) {__Pyx_GIVEREF(r);}} while(0) #else #define __Pyx_RefNannyDeclarations #define __Pyx_RefNannySetupContext(name, acquire_gil) #define __Pyx_RefNannyFinishContext() #define __Pyx_INCREF(r) Py_INCREF(r) #define __Pyx_DECREF(r) Py_DECREF(r) #define __Pyx_GOTREF(r) #define __Pyx_GIVEREF(r) #define __Pyx_XINCREF(r) Py_XINCREF(r) #define __Pyx_XDECREF(r) Py_XDECREF(r) #define __Pyx_XGOTREF(r) #define __Pyx_XGIVEREF(r) #endif #define __Pyx_XDECREF_SET(r, v) do {\ PyObject *tmp = (PyObject *) r;\ r = v; __Pyx_XDECREF(tmp);\ } while (0) #define __Pyx_DECREF_SET(r, v) do {\ PyObject *tmp = (PyObject *) r;\ r = v; __Pyx_DECREF(tmp);\ } while (0) #define __Pyx_CLEAR(r) do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0) #define __Pyx_XCLEAR(r) do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0) /* PyObjectGetAttrStr.proto */ #if CYTHON_USE_TYPE_SLOTS static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) { PyTypeObject* tp = Py_TYPE(obj); if (likely(tp->tp_getattro)) return tp->tp_getattro(obj, attr_name); #if PY_MAJOR_VERSION < 3 if (likely(tp->tp_getattr)) return tp->tp_getattr(obj, PyString_AS_STRING(attr_name)); #endif return PyObject_GetAttr(obj, attr_name); } #else #define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n) #endif /* GetBuiltinName.proto */ static PyObject *__Pyx_GetBuiltinName(PyObject *name); /* GetModuleGlobalName.proto */ static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name); /* PyObjectCall.proto */ #if CYTHON_COMPILING_IN_CPYTHON static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw); #else #define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw) #endif /* PyThreadStateGet.proto */ #if CYTHON_FAST_THREAD_STATE #define __Pyx_PyThreadState_declare PyThreadState *__pyx_tstate; #define __Pyx_PyThreadState_assign __pyx_tstate = PyThreadState_GET(); #else #define __Pyx_PyThreadState_declare #define __Pyx_PyThreadState_assign #endif /* PyErrFetchRestore.proto */ #if CYTHON_FAST_THREAD_STATE #define __Pyx_ErrRestoreWithState(type, value, tb) __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb) #define __Pyx_ErrFetchWithState(type, value, tb) __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb) #define __Pyx_ErrRestore(type, value, tb) __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb) #define __Pyx_ErrFetch(type, value, tb) __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb) static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); #else #define __Pyx_ErrRestoreWithState(type, value, tb) PyErr_Restore(type, value, tb) #define __Pyx_ErrFetchWithState(type, value, tb) PyErr_Fetch(type, value, tb) #define __Pyx_ErrRestore(type, value, tb) PyErr_Restore(type, value, tb) #define __Pyx_ErrFetch(type, value, tb) PyErr_Fetch(type, value, tb) #endif /* WriteUnraisableException.proto */ static void __Pyx_WriteUnraisable(const char *name, int clineno, int lineno, const char *filename, int full_traceback, int nogil); /* IncludeStringH.proto */ #include /* decode_c_string.proto */ static CYTHON_INLINE PyObject* __Pyx_decode_c_string( const char* cstring, Py_ssize_t start, Py_ssize_t stop, const char* encoding, const char* errors, PyObject* (*decode_func)(const char *s, Py_ssize_t size, const char *errors)); /* GetItemInt.proto */ #define __Pyx_GetItemInt(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ __Pyx_GetItemInt_Fast(o, (Py_ssize_t)i, is_list, wraparound, boundscheck) :\ (is_list ? (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL) :\ __Pyx_GetItemInt_Generic(o, to_py_func(i)))) #define __Pyx_GetItemInt_List(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ __Pyx_GetItemInt_List_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\ (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL)) static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, int wraparound, int boundscheck); #define __Pyx_GetItemInt_Tuple(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ __Pyx_GetItemInt_Tuple_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\ (PyErr_SetString(PyExc_IndexError, "tuple index out of range"), (PyObject*)NULL)) static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, int wraparound, int boundscheck); static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j); static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, int is_list, int wraparound, int boundscheck); /* ListCompAppend.proto */ #if CYTHON_USE_PYLIST_INTERNALS && CYTHON_ASSUME_SAFE_MACROS static CYTHON_INLINE int __Pyx_ListComp_Append(PyObject* list, PyObject* x) { PyListObject* L = (PyListObject*) list; Py_ssize_t len = Py_SIZE(list); if (likely(L->allocated > len)) { Py_INCREF(x); PyList_SET_ITEM(list, len, x); Py_SIZE(list) = len+1; return 0; } return PyList_Append(list, x); } #else #define __Pyx_ListComp_Append(L,x) PyList_Append(L,x) #endif /* RaiseTooManyValuesToUnpack.proto */ static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected); /* RaiseNeedMoreValuesToUnpack.proto */ static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index); /* IterFinish.proto */ static CYTHON_INLINE int __Pyx_IterFinish(void); /* UnpackItemEndCheck.proto */ static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected); /* BytesEquals.proto */ static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals); /* PyIntBinop.proto */ #if !CYTHON_COMPILING_IN_PYPY static PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, long intval, int inplace); #else #define __Pyx_PyInt_EqObjC(op1, op2, intval, inplace)\ PyObject_RichCompare(op1, op2, Py_EQ) #endif /* PyCFunctionFastCall.proto */ #if CYTHON_FAST_PYCCALL static CYTHON_INLINE PyObject *__Pyx_PyCFunction_FastCall(PyObject *func, PyObject **args, Py_ssize_t nargs); #else #define __Pyx_PyCFunction_FastCall(func, args, nargs) (assert(0), NULL) #endif /* PyFunctionFastCall.proto */ #if CYTHON_FAST_PYCALL #define __Pyx_PyFunction_FastCall(func, args, nargs)\ __Pyx_PyFunction_FastCallDict((func), (args), (nargs), NULL) #if 1 || PY_VERSION_HEX < 0x030600B1 static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, int nargs, PyObject *kwargs); #else #define __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs) _PyFunction_FastCallDict(func, args, nargs, kwargs) #endif #endif /* PyObjectCallMethO.proto */ #if CYTHON_COMPILING_IN_CPYTHON static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg); #endif /* PyObjectCallOneArg.proto */ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg); /* None.proto */ static CYTHON_INLINE qint64 __Pyx_div_qint64(qint64, qint64); /* ForceInitThreads.proto */ #ifndef __PYX_FORCE_INIT_THREADS #define __PYX_FORCE_INIT_THREADS 0 #endif /* UnaryNegOverflows.proto */ #define UNARY_NEG_WOULD_OVERFLOW(x)\ (((x) < 0) & ((unsigned long)(x) == 0-(unsigned long)(x))) /* RaiseArgTupleInvalid.proto */ static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact, Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found); /* RaiseDoubleKeywords.proto */ static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name); /* ParseKeywords.proto */ static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[],\ PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args,\ const char* function_name); /* PyIntBinop.proto */ #if !CYTHON_COMPILING_IN_PYPY static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, long intval, int inplace); #else #define __Pyx_PyInt_AddObjC(op1, op2, intval, inplace)\ (inplace ? PyNumber_InPlaceAdd(op1, op2) : PyNumber_Add(op1, op2)) #endif /* PyObjectCallNoArg.proto */ #if CYTHON_COMPILING_IN_CPYTHON static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func); #else #define __Pyx_PyObject_CallNoArg(func) __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL) #endif /* GetException.proto */ #if CYTHON_FAST_THREAD_STATE #define __Pyx_GetException(type, value, tb) __Pyx__GetException(__pyx_tstate, type, value, tb) static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); #else static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb); #endif /* SwapException.proto */ #if CYTHON_FAST_THREAD_STATE #define __Pyx_ExceptionSwap(type, value, tb) __Pyx__ExceptionSwap(__pyx_tstate, type, value, tb) static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); #else static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb); #endif /* SaveResetException.proto */ #if CYTHON_FAST_THREAD_STATE #define __Pyx_ExceptionSave(type, value, tb) __Pyx__ExceptionSave(__pyx_tstate, type, value, tb) static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); #define __Pyx_ExceptionReset(type, value, tb) __Pyx__ExceptionReset(__pyx_tstate, type, value, tb) static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); #else #define __Pyx_ExceptionSave(type, value, tb) PyErr_GetExcInfo(type, value, tb) #define __Pyx_ExceptionReset(type, value, tb) PyErr_SetExcInfo(type, value, tb) #endif /* PyObjectSetAttrStr.proto */ #if CYTHON_USE_TYPE_SLOTS #define __Pyx_PyObject_DelAttrStr(o,n) __Pyx_PyObject_SetAttrStr(o,n,NULL) static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr_name, PyObject* value) { PyTypeObject* tp = Py_TYPE(obj); if (likely(tp->tp_setattro)) return tp->tp_setattro(obj, attr_name, value); #if PY_MAJOR_VERSION < 3 if (likely(tp->tp_setattr)) return tp->tp_setattr(obj, PyString_AS_STRING(attr_name), value); #endif return PyObject_SetAttr(obj, attr_name, value); } #else #define __Pyx_PyObject_DelAttrStr(o,n) PyObject_DelAttr(o,n) #define __Pyx_PyObject_SetAttrStr(o,n,v) PyObject_SetAttr(o,n,v) #endif /* ListAppend.proto */ #if CYTHON_USE_PYLIST_INTERNALS && CYTHON_ASSUME_SAFE_MACROS static CYTHON_INLINE int __Pyx_PyList_Append(PyObject* list, PyObject* x) { PyListObject* L = (PyListObject*) list; Py_ssize_t len = Py_SIZE(list); if (likely(L->allocated > len) & likely(len > (L->allocated >> 1))) { Py_INCREF(x); PyList_SET_ITEM(list, len, x); Py_SIZE(list) = len+1; return 0; } return PyList_Append(list, x); } #else #define __Pyx_PyList_Append(L,x) PyList_Append(L,x) #endif /* UnicodeEquals.proto */ static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals); /* None.proto */ static CYTHON_INLINE long __Pyx_div_long(long, long); /* Import.proto */ static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level); /* ImportFrom.proto */ static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name); /* None.proto */ static CYTHON_INLINE void __Pyx_RaiseClosureNameError(const char *varname); /* PyObjectCallMethod1.proto */ static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg); /* pop_index.proto */ static PyObject* __Pyx__PyObject_PopNewIndex(PyObject* L, PyObject* py_ix); static PyObject* __Pyx__PyObject_PopIndex(PyObject* L, PyObject* py_ix); #if CYTHON_USE_PYLIST_INTERNALS && CYTHON_ASSUME_SAFE_MACROS static PyObject* __Pyx__PyList_PopIndex(PyObject* L, PyObject* py_ix, Py_ssize_t ix); #define __Pyx_PyObject_PopIndex(L, py_ix, ix, is_signed, type, to_py_func) (\ (likely(PyList_CheckExact(L) && __Pyx_fits_Py_ssize_t(ix, type, is_signed))) ?\ __Pyx__PyList_PopIndex(L, py_ix, ix) : (\ (unlikely(py_ix == Py_None)) ? __Pyx__PyObject_PopNewIndex(L, to_py_func(ix)) :\ __Pyx__PyObject_PopIndex(L, py_ix))) #define __Pyx_PyList_PopIndex(L, py_ix, ix, is_signed, type, to_py_func) (\ __Pyx_fits_Py_ssize_t(ix, type, is_signed) ?\ __Pyx__PyList_PopIndex(L, py_ix, ix) : (\ (unlikely(py_ix == Py_None)) ? __Pyx__PyObject_PopNewIndex(L, to_py_func(ix)) :\ __Pyx__PyObject_PopIndex(L, py_ix))) #else #define __Pyx_PyList_PopIndex(L, py_ix, ix, is_signed, type, to_py_func)\ __Pyx_PyObject_PopIndex(L, py_ix, ix, is_signed, type, to_py_func) #define __Pyx_PyObject_PopIndex(L, py_ix, ix, is_signed, type, to_py_func) (\ (unlikely(py_ix == Py_None)) ? __Pyx__PyObject_PopNewIndex(L, to_py_func(ix)) :\ __Pyx__PyObject_PopIndex(L, py_ix)) #endif /* append.proto */ static CYTHON_INLINE int __Pyx_PyObject_Append(PyObject* L, PyObject* x); /* PyIntBinop.proto */ #if !CYTHON_COMPILING_IN_PYPY static PyObject* __Pyx_PyInt_SubtractCObj(PyObject *op1, PyObject *op2, long intval, int inplace); #else #define __Pyx_PyInt_SubtractCObj(op1, op2, intval, inplace)\ (inplace ? PyNumber_InPlaceSubtract(op1, op2) : PyNumber_Subtract(op1, op2)) #endif /* PyIntBinop.proto */ #if !CYTHON_COMPILING_IN_PYPY static PyObject* __Pyx_PyInt_SubtractObjC(PyObject *op1, PyObject *op2, long intval, int inplace); #else #define __Pyx_PyInt_SubtractObjC(op1, op2, intval, inplace)\ (inplace ? PyNumber_InPlaceSubtract(op1, op2) : PyNumber_Subtract(op1, op2)) #endif /* pyobject_as_double.proto */ static double __Pyx__PyObject_AsDouble(PyObject* obj); #if CYTHON_COMPILING_IN_PYPY #define __Pyx_PyObject_AsDouble(obj)\ (likely(PyFloat_CheckExact(obj)) ? PyFloat_AS_DOUBLE(obj) :\ likely(PyInt_CheckExact(obj)) ?\ PyFloat_AsDouble(obj) : __Pyx__PyObject_AsDouble(obj)) #else #define __Pyx_PyObject_AsDouble(obj)\ ((likely(PyFloat_CheckExact(obj))) ?\ PyFloat_AS_DOUBLE(obj) : __Pyx__PyObject_AsDouble(obj)) #endif /* PyErrExceptionMatches.proto */ #if CYTHON_FAST_THREAD_STATE #define __Pyx_PyErr_ExceptionMatches(err) __Pyx_PyErr_ExceptionMatchesInState(__pyx_tstate, err) static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err); #else #define __Pyx_PyErr_ExceptionMatches(err) PyErr_ExceptionMatches(err) #endif /* CalculateMetaclass.proto */ static PyObject *__Pyx_CalculateMetaclass(PyTypeObject *metaclass, PyObject *bases); /* Py3ClassCreate.proto */ static PyObject *__Pyx_Py3MetaclassPrepare(PyObject *metaclass, PyObject *bases, PyObject *name, PyObject *qualname, PyObject *mkw, PyObject *modname, PyObject *doc); static PyObject *__Pyx_Py3ClassCreate(PyObject *metaclass, PyObject *name, PyObject *bases, PyObject *dict, PyObject *mkw, int calculate_metaclass, int allow_py2_metaclass); /* CodeObjectCache.proto */ typedef struct { PyCodeObject* code_object; int code_line; } __Pyx_CodeObjectCacheEntry; struct __Pyx_CodeObjectCache { int count; int max_count; __Pyx_CodeObjectCacheEntry* entries; }; static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL}; static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line); static PyCodeObject *__pyx_find_code_object(int code_line); static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object); /* AddTraceback.proto */ static void __Pyx_AddTraceback(const char *funcname, int c_line, int py_line, const char *filename); /* CIntToPy.proto */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__Qt_3a__3a_Key(enum Qt::Key value); /* CIntToPy.proto */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__Qt_3a__3a_KeyboardModifier(enum Qt::KeyboardModifier value); /* CIntToPy.proto */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__Qt_3a__3a_MouseButton(enum Qt::MouseButton value); /* CIntToPy.proto */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value); /* None.proto */ static CYTHON_INLINE long __Pyx_pow_long(long, long); /* CIntToPy.proto */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value); /* CIntToPy.proto */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_Qt_3a__3a_KeyboardModifiers(Qt::KeyboardModifiers value); /* CppExceptionConversion.proto */ #ifndef __Pyx_CppExn2PyErr #include #include #include #include static void __Pyx_CppExn2PyErr() { try { if (PyErr_Occurred()) ; // let the latest Python exn pass through and ignore the current one else throw; } catch (const std::bad_alloc& exn) { PyErr_SetString(PyExc_MemoryError, exn.what()); } catch (const std::bad_cast& exn) { PyErr_SetString(PyExc_TypeError, exn.what()); } catch (const std::bad_typeid& exn) { PyErr_SetString(PyExc_TypeError, exn.what()); } catch (const std::domain_error& exn) { PyErr_SetString(PyExc_ValueError, exn.what()); } catch (const std::invalid_argument& exn) { PyErr_SetString(PyExc_ValueError, exn.what()); } catch (const std::ios_base::failure& exn) { PyErr_SetString(PyExc_IOError, exn.what()); } catch (const std::out_of_range& exn) { PyErr_SetString(PyExc_IndexError, exn.what()); } catch (const std::overflow_error& exn) { PyErr_SetString(PyExc_OverflowError, exn.what()); } catch (const std::range_error& exn) { PyErr_SetString(PyExc_ArithmeticError, exn.what()); } catch (const std::underflow_error& exn) { PyErr_SetString(PyExc_ArithmeticError, exn.what()); } catch (const std::exception& exn) { PyErr_SetString(PyExc_RuntimeError, exn.what()); } catch (...) { PyErr_SetString(PyExc_RuntimeError, "Unknown exception"); } } #endif /* CIntFromPy.proto */ static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *); /* CIntFromPy.proto */ static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *); /* FetchCommonType.proto */ static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type); /* RaiseException.proto */ static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause); /* CoroutineBase.proto */ typedef PyObject *(*__pyx_coroutine_body_t)(PyObject *, PyObject *); typedef struct { PyObject_HEAD __pyx_coroutine_body_t body; PyObject *closure; PyObject *exc_type; PyObject *exc_value; PyObject *exc_traceback; PyObject *gi_weakreflist; PyObject *classobj; PyObject *yieldfrom; PyObject *gi_name; PyObject *gi_qualname; PyObject *gi_modulename; int resume_label; char is_running; } __pyx_CoroutineObject; static __pyx_CoroutineObject *__Pyx__Coroutine_New( PyTypeObject *type, __pyx_coroutine_body_t body, PyObject *closure, PyObject *name, PyObject *qualname, PyObject *module_name); static int __Pyx_Coroutine_clear(PyObject *self); #if 1 || PY_VERSION_HEX < 0x030300B0 static int __Pyx_PyGen_FetchStopIterationValue(PyObject **pvalue); #else #define __Pyx_PyGen_FetchStopIterationValue(pvalue) PyGen_FetchStopIterationValue(pvalue) #endif /* PatchModuleWithCoroutine.proto */ static PyObject* __Pyx_Coroutine_patch_module(PyObject* module, const char* py_code); /* PatchGeneratorABC.proto */ static int __Pyx_patch_abc(void); /* Generator.proto */ #define __Pyx_Generator_USED static PyTypeObject *__pyx_GeneratorType = 0; #define __Pyx_Generator_CheckExact(obj) (Py_TYPE(obj) == __pyx_GeneratorType) #define __Pyx_Generator_New(body, closure, name, qualname, module_name)\ __Pyx__Coroutine_New(__pyx_GeneratorType, body, closure, name, qualname, module_name) static PyObject *__Pyx_Generator_Next(PyObject *self); static int __pyx_Generator_init(void); /* CheckBinaryVersion.proto */ static int __Pyx_check_binary_version(void); /* PyIdentifierFromString.proto */ #if !defined(__Pyx_PyIdentifier_FromString) #if PY_MAJOR_VERSION < 3 #define __Pyx_PyIdentifier_FromString(s) PyString_FromString(s) #else #define __Pyx_PyIdentifier_FromString(s) PyUnicode_FromString(s) #endif #endif /* ModuleImport.proto */ static PyObject *__Pyx_ImportModule(const char *name); /* FunctionImport.proto */ static int __Pyx_ImportFunction(PyObject *module, const char *funcname, void (**f)(void), const char *sig); /* InitStrings.proto */ static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); /* Module declarations from 'libc.stdint' */ /* Module declarations from 'libcpp' */ /* Module declarations from 'qt' */ /* Module declarations from 'libc.stddef' */ /* Module declarations from 'gl_es2' */ /* Module declarations from '_glarea_es2' */ static void (*__pyx_f_11_glarea_es2_render_resize)(int, int, int); /*proto*/ static void (*__pyx_f_11_glarea_es2_set_animation_next)(float); /*proto*/ static void (*__pyx_f_11_glarea_es2_sync_set_fixedshaders)(void); /*proto*/ static void (*__pyx_f_11_glarea_es2_sync_set_pick_position)(void); /*proto*/ static void (*__pyx_f_11_glarea_es2_sync_set_atlas_data)(void); /*proto*/ static void (*__pyx_f_11_glarea_es2_sync)(void); /*proto*/ static void (*__pyx_f_11_glarea_es2_gl_init)(void); /*proto*/ static void (*__pyx_f_11_glarea_es2_gl_exit)(void); /*proto*/ static void (*__pyx_f_11_glarea_es2_gl_set_atlas_texture)(int, int); /*proto*/ static void (*__pyx_f_11_glarea_es2_gl_render)(void); /*proto*/ static void (*__pyx_f_11_glarea_es2_gl_render_select_debug)(void); /*proto*/ static int (*__pyx_f_11_glarea_es2_gl_pick_polygons)(void); /*proto*/ /* Module declarations from '_qtui_' */ static void (*__pyx_f_6_qtui__init_module)(void); /*proto*/ static void (*__pyx_f_6_qtui__init_gettext)(PyObject *); /*proto*/ static void (*__pyx_f_6_qtui__setupUi_main)(QMainWindow *, QIcon const &, QIcon const &, QIcon const &, QKeySequence const &, QKeySequence const &, bool, bool); /*proto*/ static void (*__pyx_f_6_qtui__setupUi_pref)(QDialog *, int, int, int, int, int, QStandardItemModel *); /*proto*/ static void (*__pyx_f_6_qtui__setupUi_help)(QDialog *, QString const &); /*proto*/ static void (*__pyx_f_6_qtui__setupUi_about)(QDialog *); /*proto*/ static void (*__pyx_f_6_qtui__set_shortcuts)(QKeySequence const &, QKeySequence const &, QKeySequence const &, QKeySequence const &); /*proto*/ static void (*__pyx_f_6_qtui__add_widgets)(QMainWindow *, QLineEdit *, QOpenGLWidget *); /*proto*/ static void (*__pyx_f_6_qtui__set_frame_editbar_visible)(bool); /*proto*/ static void (*__pyx_f_6_qtui__set_statusbar_visible)(bool); /*proto*/ static void (*__pyx_f_6_qtui__hide_controls)(void); /*proto*/ static void (*__pyx_f_6_qtui__get_splitter_sizes)(int &, int &); /*proto*/ static void (*__pyx_f_6_qtui__set_splitter_sizes)(int, int); /*proto*/ static void (*__pyx_f_6_qtui__splitter_update_minimumsize)(void); /*proto*/ static void (*__pyx_f_6_qtui__set_debug_text)(QString const &); /*proto*/ static void (*__pyx_f_6_qtui__set_toolbar_state)(int, int, int, int, int); /*proto*/ static void (*__pyx_f_6_qtui__clear_sidepane)(void); /*proto*/ static QPushButton *(*__pyx_f_6_qtui__create_sidepane_button)(QString const &); /*proto*/ static QTreeView *(*__pyx_f_6_qtui__create_sidepane_treeview)(QStandardItemModel *, int); /*proto*/ static void (*__pyx_f_6_qtui__set_active_plugin_group)(int); /*proto*/ static void (*__pyx_f_6_qtui__set_active_plugin_group_by_obj)(QObject *); /*proto*/ static int (*__pyx_f_6_qtui__get_plugin_group_count)(void); /*proto*/ static QModelIndex (*__pyx_f_6_qtui__root_index)(int); /*proto*/ static void (*__pyx_f_6_qtui__hide_row)(int, bool); /*proto*/ static void (*__pyx_f_6_qtui__set_row_hidden)(int, int, QModelIndex const &, bool); /*proto*/ static int (*__pyx_f_6_qtui__splitter_pos)(void); /*proto*/ static void (*__pyx_f_6_qtui__preferences_block_signals)(bool); /*proto*/ static void (*__pyx_f_6_qtui__combobox_add_shaderitem)(QString const &, QString const &); /*proto*/ static void (*__pyx_f_6_qtui__combobox_add_samplesitem)(QString const &, QString const &); /*proto*/ static void (*__pyx_f_6_qtui__add_movekey_row)(void); /*proto*/ static void (*__pyx_f_6_qtui__remove_movekey_row)(void); /*proto*/ static void (*__pyx_f_6_qtui__add_liststore_faces_row)(QString const &, QString const &); /*proto*/ static void (*__pyx_f_6_qtui__finalize_liststore_faces)(QWidget *); /*proto*/ static QString (*__pyx_f_6_qtui__get_liststore_faces_facekey)(QModelIndex const &); /*proto*/ static void (*__pyx_f_6_qtui__set_button_color)(QString const &); /*proto*/ static QString (*__pyx_f_6_qtui__color_dialog)(QWidget *, QString const &); /*proto*/ static void (*__pyx_f_6_qtui__set_imagemode)(int); /*proto*/ static void (*__pyx_f_6_qtui__add_combobox_image_item)(QIcon const &, QString const &, QString const &); /*proto*/ static void (*__pyx_f_6_qtui__set_combobox_image)(int, QIcon const &, int); /*proto*/ static void (*__pyx_f_6_qtui__set_button_background_color)(QString const &); /*proto*/ static void (*__pyx_f_6_qtui__fill_page)(QVariant, QString const &); /*proto*/ static void (*__pyx_f_6_qtui__set_page)(int); /*proto*/ static void (*__pyx_f_6_qtui__fill_header)(QString const &, QString const &, QString const &, QString const &); /*proto*/ static void (*__pyx_f_6_qtui__fill_about_tab)(QString const &, QString const &, QString const &); /*proto*/ static void (*__pyx_f_6_qtui__fill_contribute_tab)(QString const &); /*proto*/ static void (*__pyx_f_6_qtui__fill_license_tab)(QString const &, bool, QString const &); /*proto*/ static void (*__pyx_f_6_qtui__tab_widget_currentChanged)(int); /*proto*/ static void (*__pyx_f_6_qtui__update_animation)(bool); /*proto*/ static void (*__pyx_f_6_qtui__event_filter_stop_animation)(QEvent *); /*proto*/ static void (*__pyx_f_6_qtui__show_full_license)(bool, QUrl const &); /*proto*/ /* Module declarations from 'libc.string' */ /* Module declarations from 'libc.stdio' */ /* Module declarations from '_qt_qtwes2' */ static PyTypeObject *__pyx_ptype_10_qt_qtwes2___pyx_scope_struct__keyval_from_name = 0; static PyTypeObject *__pyx_ptype_10_qt_qtwes2___pyx_scope_struct_1_genexpr = 0; static long __pyx_v_10_qt_qtwes2_debug; static struct __pyx_t_10_qt_qtwes2_RenderData __pyx_v_10_qt_qtwes2_renderdata; static struct __pyx_t_10_qt_qtwes2_UIData __pyx_v_10_qt_qtwes2_uidata; static void __pyx_f_10_qt_qtwes2_init_module(void); /*proto*/ static PyObject *__pyx_f_10_qt_qtwes2_q2str(QString const &); /*proto*/ static QString __pyx_f_10_qt_qtwes2_str2q(PyObject *); /*proto*/ static QList __pyx_f_10_qt_qtwes2__list2q(PyObject *); /*proto*/ static QVariant __pyx_f_10_qt_qtwes2_tovariant(PyObject *); /*proto*/ static PyObject *__pyx_f_10_qt_qtwes2__q2list(QList const &); /*proto*/ static PyObject *__pyx_f_10_qt_qtwes2__qs2list(QStringList const &); /*proto*/ static PyObject *__pyx_f_10_qt_qtwes2__q2dict(QMap const &); /*proto*/ static PyObject *__pyx_f_10_qt_qtwes2_fromvariant(QVariant const &); /*proto*/ static void __pyx_f_10_qt_qtwes2_render_update_atlas(void); /*proto*/ static void __pyx_f_10_qt_qtwes2_render_fps(void); /*proto*/ static void __pyx_f_10_qt_qtwes2_render_pick(void); /*proto*/ static void __pyx_f_10_qt_qtwes2_render_init(void); /*proto*/ static void __pyx_f_10_qt_qtwes2_render_destroy_texture(void); /*proto*/ static void __pyx_f_10_qt_qtwes2_render_destroy(void); /*proto*/ static void __pyx_f_10_qt_qtwes2_render_init_gldebuglogger(void); /*proto*/ static void __pyx_f_10_qt_qtwes2__pfmt(char *, int, int, int); /*proto*/ static void __pyx_f_10_qt_qtwes2__pfmt2(char *, int, int, int, int, int, int); /*proto*/ static void __pyx_f_10_qt_qtwes2_print_surface_info(void); /*proto*/ static PyObject *__pyx_f_10_qt_qtwes2_set_atlas_size(int, int, int __pyx_skip_dispatch); /*proto*/ static void __pyx_f_10_qt_qtwes2_set_default_surface_format(void); /*proto*/ static void __pyx_f_10_qt_qtwes2_dump_info(char const *, QObject const *); /*proto*/ static void __pyx_f_10_qt_qtwes2_show_message_cb(void); /*proto*/ static void __pyx_f_10_qt_qtwes2__fill_treestore(QStandardItem *, PyObject *); /*proto*/ static bool __pyx_f_10_qt_qtwes2__hide_row(int, QModelIndex const &); /*proto*/ static QVariant __pyx_f_10_qt_qtwes2_create_stdmodel(PyObject *); /*proto*/ static void __pyx_f_10_qt_qtwes2_help_dialog(void); /*proto*/ static void __pyx_f_10_qt_qtwes2_help_dialog_show(void); /*proto*/ static void __pyx_f_10_qt_qtwes2_about_dialog(void); /*proto*/ static QIcon __pyx_f_10_qt_qtwes2_get_icon(PyObject *); /*proto*/ static void __pyx_f_10_qt_qtwes2__on_filesystemwatcher_changed_1(QString const &); /*proto*/ static void __pyx_f_10_qt_qtwes2__on_filesystemwatcher_changed_2(void); /*proto*/ static void __pyx_f_10_qt_qtwes2__on_singleShot(void); /*proto*/ static void __pyx_f_10_qt_qtwes2__on_settings_timer_timeout(void); /*proto*/ static void __pyx_f_10_qt_qtwes2_settings_timer_create(void); /*proto*/ static PyObject *__pyx_f_10_qt_qtwes2_settings_timer_start(int __pyx_skip_dispatch); /*proto*/ static void __pyx_f_10_qt_qtwes2_settings_timer_destroy(void); /*proto*/ static void __pyx_f_10_qt_qtwes2_animation_init(void); /*proto*/ static void __pyx_f_10_qt_qtwes2__on_animate_timer_timeout(void); /*proto*/ static PyObject *__pyx_f_10_qt_qtwes2_animate_timer_start(PyObject *, PyObject *, int __pyx_skip_dispatch); /*proto*/ static void __pyx_f_10_qt_qtwes2_animate_timer_destroy(void); /*proto*/ static void __pyx_f_10_qt_qtwes2_load_cursors(PyObject *); /*proto*/ static void __pyx_f_10_qt_qtwes2_destroy_cursors(void); /*proto*/ static void __pyx_f_10_qt_qtwes2_destroy_resources(void); /*proto*/ static void __pyx_f_10_qt_qtwes2__on_init_finalize(void); /*proto*/ #define __Pyx_MODULE_NAME "_qt_qtwes2" int __pyx_module_is_main__qt_qtwes2 = 0; /* Implementation of '_qt_qtwes2' */ static PyObject *__pyx_builtin_print; static PyObject *__pyx_builtin_range; static PyObject *__pyx_builtin_zip; static PyObject *__pyx_builtin_RuntimeWarning; static PyObject *__pyx_builtin_enumerate; static PyObject *__pyx_builtin_KeyError; static PyObject *__pyx_builtin_ValueError; static const char __pyx_k_i[] = "i"; static const char __pyx_k_KP[] = "KP"; static const char __pyx_k__4[] = "_"; static const char __pyx_k__6[] = ""; static const char __pyx_k__7[] = " "; static const char __pyx_k_os[] = "os"; static const char __pyx_k_qt[] = "qt"; static const char __pyx_k_s1[] = "s1"; static const char __pyx_k_s2[] = "s2"; static const char __pyx_k_Key[] = "Key"; static const char __pyx_k_Num[] = "Num"; static const char __pyx_k__13[] = "/"; static const char __pyx_k__22[] = "+"; static const char __pyx_k_app[] = "app"; static const char __pyx_k_ccw[] = "ccw"; static const char __pyx_k_doc[] = "__doc__"; static const char __pyx_k_get[] = "get"; static const char __pyx_k_int[] = "int"; static const char __pyx_k_pop[] = "pop"; static const char __pyx_k_pos[] = "pos"; static const char __pyx_k_sys[] = "sys"; static const char __pyx_k_zip[] = "zip"; static const char __pyx_k_Move[] = "Move"; static const char __pyx_k_args[] = "args"; static const char __pyx_k_bool[] = "bool"; static const char __pyx_k_code[] = "code"; static const char __pyx_k_data[] = "data"; static const char __pyx_k_font[] = "font"; static const char __pyx_k_func[] = "func"; static const char __pyx_k_icon[] = "icon"; static const char __pyx_k_item[] = "item"; static const char __pyx_k_join[] = "join"; static const char __pyx_k_main[] = "__main__"; static const char __pyx_k_msec[] = "msec"; static const char __pyx_k_name[] = "__name__"; static const char __pyx_k_nick[] = "nick"; static const char __pyx_k_path[] = "path"; static const char __pyx_k_send[] = "send"; static const char __pyx_k_test[] = "__test__"; static const char __pyx_k_text[] = "text"; static const char __pyx_k_void[] = "void*"; static const char __pyx_k_warn[] = "warn"; static const char __pyx_k_Theme[] = "Theme"; static const char __pyx_k_close[] = "close"; static const char __pyx_k_color[] = "color"; static const char __pyx_k_image[] = "image"; static const char __pyx_k_index[] = "index"; static const char __pyx_k_plain[] = "plain"; static const char __pyx_k_print[] = "print"; static const char __pyx_k_pyapp[] = "pyapp"; static const char __pyx_k_qpath[] = "qpath"; static const char __pyx_k_range[] = "range"; static const char __pyx_k_split[] = "split"; static const char __pyx_k_state[] = "state"; static const char __pyx_k_theme[] = "theme"; static const char __pyx_k_throw[] = "throw"; static const char __pyx_k_tiled[] = "tiled"; static const char __pyx_k_title[] = "title"; static const char __pyx_k_utf_8[] = "utf-8"; static const char __pyx_k_width[] = "width"; static const char __pyx_k_Key_Up[] = "Key_Up"; static const char __pyx_k_PyData[] = "PyData"; static const char __pyx_k_QtKeys[] = "QtKeys"; static const char __pyx_k_UI_DIR[] = "UI_DIR"; static const char __pyx_k_Ubuntu[] = "Ubuntu"; static const char __pyx_k_append[] = "append"; static const char __pyx_k_button[] = "button"; static const char __pyx_k_config[] = "config_"; static const char __pyx_k_double[] = "double"; static const char __pyx_k_encode[] = "encode"; static const char __pyx_k_format[] = "format"; static const char __pyx_k_height[] = "height"; static const char __pyx_k_images[] = "images"; static const char __pyx_k_import[] = "__import__"; static const char __pyx_k_isfile[] = "isfile"; static const char __pyx_k_keyseq[] = "keyseq"; static const char __pyx_k_keystr[] = "keystr"; static const char __pyx_k_module[] = "module"; static const char __pyx_k_mosaic[] = "mosaic"; static const char __pyx_k_name_2[] = "name"; static const char __pyx_k_pydata[] = "pydata"; static const char __pyx_k_select[] = "select \342\200\246"; static const char __pyx_k_simple[] = "simple"; static const char __pyx_k_transl[] = "transl"; static const char __pyx_k_void_2[] = "({})"; static const char __pyx_k_APPNAME[] = "APPNAME"; static const char __pyx_k_QObject[] = "QObject({})"; static const char __pyx_k_QString[] = "QString"; static const char __pyx_k_VERSION[] = "VERSION"; static const char __pyx_k_cursors[] = "cursors"; static const char __pyx_k_dirname[] = "dirname"; static const char __pyx_k_environ[] = "environ"; static const char __pyx_k_facekey[] = "facekey"; static const char __pyx_k_genexpr[] = "genexpr"; static const char __pyx_k_gesture[] = "gesture"; static const char __pyx_k_gettext[] = "gettext"; static const char __pyx_k_load_ui[] = "load_ui"; static const char __pyx_k_maxsize[] = "maxsize"; static const char __pyx_k_message[] = "message"; static const char __pyx_k_package[] = "__package__"; static const char __pyx_k_prepare[] = "__prepare__"; static const char __pyx_k_subtree[] = "subtree"; static const char __pyx_k_KeyError[] = "KeyError"; static const char __pyx_k_Key_Down[] = "Key_Down"; static const char __pyx_k_Key_Left[] = "Key_Left"; static const char __pyx_k_callback[] = "callback"; static const char __pyx_k_compiled[] = " compiled:"; static const char __pyx_k_config_2[] = "config"; static const char __pyx_k_facename[] = "facename"; static const char __pyx_k_filename[] = "filename"; static const char __pyx_k_module_2[] = "__module__"; static const char __pyx_k_pybiklib[] = "pybiklib"; static const char __pyx_k_quadrant[] = "quadrant"; static const char __pyx_k_qualname[] = "__qualname__"; static const char __pyx_k_settings[] = "settings"; static const char __pyx_k_textures[] = "textures"; static const char __pyx_k_treeview[] = "treeview"; static const char __pyx_k_warnings[] = "warnings"; static const char __pyx_k_COPYRIGHT[] = "COPYRIGHT"; static const char __pyx_k_DEBUG_FPS[] = "DEBUG_FPS"; static const char __pyx_k_DEBUG_MSG[] = "DEBUG_MSG"; static const char __pyx_k_DEBUG_QML[] = "DEBUG_QML"; static const char __pyx_k_DEBUG_SIM[] = "DEBUG_SIM"; static const char __pyx_k_Key_Right[] = "Key_Right"; static const char __pyx_k_OFFSCREEN[] = " OFFSCREEN:"; static const char __pyx_k_angle_max[] = "angle_max"; static const char __pyx_k_enumerate[] = "enumerate"; static const char __pyx_k_facenames[] = "facenames"; static const char __pyx_k_help_text[] = "help_text"; static const char __pyx_k_imagefile[] = "imagefile"; static const char __pyx_k_imagemode[] = "imagemode"; static const char __pyx_k_locations[] = "locations"; static const char __pyx_k_metaclass[] = "__metaclass__"; static const char __pyx_k_mode_nick[] = "mode_nick"; static const char __pyx_k_qt_qtwes2[] = "_qt_qtwes2"; static const char __pyx_k_set_title[] = "set_title"; static const char __pyx_k_DEBUG_DRAW[] = "DEBUG_DRAW"; static const char __pyx_k_DEBUG_VFPS[] = "DEBUG_VFPS"; static const char __pyx_k_Key_Escape[] = "Key_Escape"; static const char __pyx_k_Key_Period[] = "Key_Period"; static const char __pyx_k_LeftButton[] = "LeftButton"; static const char __pyx_k_Open_Image[] = "Open Image"; static const char __pyx_k_ValueError[] = "ValueError"; static const char __pyx_k_compiled_2[] = "__compiled"; static const char __pyx_k_drag_enter[] = "drag enter:"; static const char __pyx_k_draw_speed[] = "draw.speed"; static const char __pyx_k_imageindex[] = "imageindex"; static const char __pyx_k_index_icon[] = "index_icon"; static const char __pyx_k_mouse__png[] = "mouse_{}.png"; static const char __pyx_k_on_closing[] = "on_closing"; static const char __pyx_k_set_cursor[] = "set_cursor"; static const char __pyx_k_sizepolicy[] = "sizepolicy"; static const char __pyx_k_startswith[] = "startswith"; static const char __pyx_k_stockicons[] = "stockicons"; static const char __pyx_k_DEBUG_MSGGL[] = "DEBUG_MSGGL"; static const char __pyx_k_DEBUG_PHONE[] = "DEBUG_PHONE"; static const char __pyx_k_GL_type_es2[] = " GL-type: es2"; static const char __pyx_k_RightButton[] = "RightButton"; static const char __pyx_k_divider_pos[] = "divider_pos"; static const char __pyx_k_draw_accels[] = "draw.accels"; static const char __pyx_k_draw_shader[] = "draw.shader"; static const char __pyx_k_get_samples[] = "get_samples"; static const char __pyx_k_init_module[] = "init module:"; static const char __pyx_k_modelselect[] = "modelselect"; static const char __pyx_k_parse_color[] = "parse_color"; static const char __pyx_k_plugin_data[] = "plugin_data"; static const char __pyx_k_theme_faces[] = "theme.faces"; static const char __pyx_k_window_size[] = "window.size"; static const char __pyx_k_APPICON_FILE[] = "APPICON_FILE"; static const char __pyx_k_DEBUG_MSGEXT[] = "DEBUG_MSGEXT"; static const char __pyx_k_GRID_UNIT_PX[] = "GRID_UNIT_PX"; static const char __pyx_k_divider_pos2[] = "divider_pos2"; static const char __pyx_k_draw_samples[] = "draw.samples"; static const char __pyx_k_from_package[] = " from package:"; static const char __pyx_k_scaled_width[] = "scaled_width"; static const char __pyx_k_shader_names[] = "shader_names"; static const char __pyx_k_show_message[] = "show_message"; static const char __pyx_k_text_to_html[] = "text_to_html"; static const char __pyx_k_unset_cursor[] = "unset_cursor"; static const char __pyx_k_DEBUG_GLDEBUG[] = "DEBUG_GLDEBUG"; static const char __pyx_k_ShiftModifier[] = "ShiftModifier"; static const char __pyx_k_about_website[] = "about_website"; static const char __pyx_k_create_window[] = "create_window"; static const char __pyx_k_currentfolder[] = "currentfolder"; static const char __pyx_k_fill_sidepane[] = "fill_sidepane"; static const char __pyx_k_fontpixelsize[] = "fontpixelsize"; static const char __pyx_k_get_imagefile[] = "get_imagefile"; static const char __pyx_k_on_model_back[] = "on_model_back"; static const char __pyx_k_on_mouse_zoom[] = "on_mouse_zoom"; static const char __pyx_k_parse_color_f[] = "parse_color_f"; static const char __pyx_k_scaled_height[] = "scaled_height"; static const char __pyx_k_theme_bgcolor[] = "theme.bgcolor"; static const char __pyx_k_warn_explicit[] = "warn_explicit"; static const char __pyx_k_RuntimeWarning[] = "RuntimeWarning"; static const char __pyx_k_Skip_mime_type[] = "Skip mime type:"; static const char __pyx_k_destroy_window[] = "destroy_window"; static const char __pyx_k_initial_resize[] = "initial_resize"; static const char __pyx_k_new_random_png[] = "new-random.png"; static const char __pyx_k_new_solved_png[] = "new-solved.png"; static const char __pyx_k_on_dialog_text[] = "on_dialog_text"; static const char __pyx_k_on_key_pressed[] = "on_key_pressed"; static const char __pyx_k_on_mouse_moved[] = "on_mouse_moved"; static const char __pyx_k_pick_requested[] = "pick_requested"; static const char __pyx_k_sample_buffers[] = "sample_buffers"; static const char __pyx_k_selection_nick[] = "selection_nick"; static const char __pyx_k_set_debug_text[] = "set_debug_text"; static const char __pyx_k_set_edit_moves[] = "set_edit_moves"; static const char __pyx_k_window_divider[] = "window.divider"; static const char __pyx_k_window_editbar[] = "window.editbar"; static const char __pyx_k_ControlModifier[] = "ControlModifier"; static const char __pyx_k_app_post_create[] = "app_post_create"; static const char __pyx_k_combobox_shader[] = "combobox_shader"; static const char __pyx_k_gl_delete_atlas[] = "gl_delete_atlas"; static const char __pyx_k_image_from_file[] = "image_from_file"; static const char __pyx_k_imageindex_icon[] = "imageindex_icon"; static const char __pyx_k_save_screenshot[] = "save_screenshot"; static const char __pyx_k_set_debug_flags[] = "set_debug_flags"; static const char __pyx_k_set_status_text[] = "set_status_text"; static const char __pyx_k_update_sidepane[] = "update_sidepane"; static const char __pyx_k_DEBUG_NOCONTROLS[] = "DEBUG_NOCONTROLS"; static const char __pyx_k_about_contribute[] = "about_contribute"; static const char __pyx_k_action_edit_cube[] = "action.edit_cube"; static const char __pyx_k_close_mainwindow[] = "close_mainwindow"; static const char __pyx_k_combobox_samples[] = "combobox_samples"; static const char __pyx_k_draw_speed_range[] = "draw.speed_range"; static const char __pyx_k_keyval_from_name[] = "keyval_from_name"; static const char __pyx_k_on_edit_finished[] = "on_edit_finished"; static const char __pyx_k_on_init_finalize[] = "on_init_finalize"; static const char __pyx_k_on_mouse_pressed[] = "on_mouse_pressed"; static const char __pyx_k_select_model_png[] = "select-model.png"; static const char __pyx_k_show_preferences[] = "show_preferences"; static const char __pyx_k_singleshot_queue[] = "singleshot_queue"; static const char __pyx_k_slider_animspeed[] = "slider_animspeed"; static const char __pyx_k_timer_singleShot[] = "timer_singleShot"; static const char __pyx_k_window_statusbar[] = "window.statusbar"; static const char __pyx_k_SHORT_DESCRIPTION[] = "SHORT_DESCRIPTION"; static const char __pyx_k_about_translators[] = "about_translators"; static const char __pyx_k_action_edit_moves[] = "action.edit_moves"; static const char __pyx_k_draw_mirror_faces[] = "draw.mirror_faces"; static const char __pyx_k_draw_shader_range[] = "draw.shader_range"; static const char __pyx_k_on_mouse_drop_url[] = "on_mouse_drop_url"; static const char __pyx_k_on_mouse_released[] = "on_mouse_released"; static const char __pyx_k_on_picking_result[] = "on_picking_result"; static const char __pyx_k_pybiklib_settings[] = "pybiklib.settings"; static const char __pyx_k_set_toolbar_state[] = "set_toolbar_state"; static const char __pyx_k_show_message_text[] = "show_message_text"; static const char __pyx_k_about_license_full[] = "about_license_full"; static const char __pyx_k_action_preferences[] = "action.preferences"; static const char __pyx_k_action_selectmodel[] = "action.selectmodel"; static const char __pyx_k_animate_timer_step[] = "animate_timer_step"; static const char __pyx_k_animate_timer_stop[] = "animate_timer_stop"; static const char __pyx_k_draw_samples_range[] = "draw.samples_range"; static const char __pyx_k_draw_speed_default[] = "draw.speed_default"; static const char __pyx_k_on_load_other_game[] = "on_load_other_game"; static const char __pyx_k_on_plugin_test_idx[] = "on_plugin_test_idx"; static const char __pyx_k_preferences_dialog[] = "preferences_dialog"; static const char __pyx_k_set_pick_requested[] = "set_pick_requested"; static const char __pyx_k_singleshot_handler[] = "singleshot_handler"; static const char __pyx_k_unknown_typename_s[] = "unknown typename %s"; static const char __pyx_k_update_drawingarea[] = "update_drawingarea"; static const char __pyx_k_about_license_short[] = "about_license_short"; static const char __pyx_k_draw_selection_nick[] = "draw.selection_nick"; static const char __pyx_k_draw_shader_default[] = "draw.shader_default"; static const char __pyx_k_get_pictures_folder[] = "get_pictures_folder"; static const char __pyx_k_on_animation_ending[] = "on_animation_ending"; static const char __pyx_k_on_mouse_drop_color[] = "on_mouse_drop_color"; static const char __pyx_k_on_plugin_activated[] = "on_plugin_activated"; static const char __pyx_k_set_animation_speed[] = "set_animation_speed"; static const char __pyx_k_value_has_wrong_typ[] = "value has wrong typ "; static const char __pyx_k_action_initial_state[] = "action.initial_state"; static const char __pyx_k_button_mousemode_ext[] = "button_mousemode_ext"; static const char __pyx_k_draw_mirror_distance[] = "draw.mirror_distance"; static const char __pyx_k_draw_samples_default[] = "draw.samples_default"; static const char __pyx_k_load_image_from_file[] = "load_image_from_file"; static const char __pyx_k_spinbox_mirror_faces[] = "spinbox_mirror_faces"; static const char __pyx_k_action_reset_rotation[] = "action.reset_rotation"; static const char __pyx_k_button_mousemode_quad[] = "button_mousemode_quad"; static const char __pyx_k_checkbox_mirror_faces[] = "checkbox_mirror_faces"; static const char __pyx_k_label_needs_restarted[] = "label_needs_restarted"; static const char __pyx_k_about_license_notfound[] = "about_license_notfound"; static const char __pyx_k_filesystemwatcher_path[] = "filesystemwatcher_path"; static const char __pyx_k_on_edit_moves_nextword[] = "on_edit_moves_nextword"; static const char __pyx_k_on_edit_moves_prevword[] = "on_edit_moves_prevword"; static const char __pyx_k_on_edit_moves_swapnext[] = "on_edit_moves_swapnext"; static const char __pyx_k_on_edit_moves_swapprev[] = "on_edit_moves_swapprev"; static const char __pyx_k_on_model_get_modeldata[] = "on_model_get_modeldata"; static const char __pyx_k_text_FULL_LICENSE_TEXT[] = "text:FULL_LICENSE_TEXT"; static const char __pyx_k_button_mousemode_gesture[] = "button_mousemode_gesture"; static const char __pyx_k_create_filesystemwatcher[] = "create_filesystemwatcher"; static const char __pyx_k_get_filedialog_imagefile[] = "get_filedialog_imagefile"; static const char __pyx_k_on_action_next_triggered[] = "on_action_next_triggered"; static const char __pyx_k_on_action_play_triggered[] = "on_action_play_triggered"; static const char __pyx_k_on_action_stop_triggered[] = "on_action_stop_triggered"; static const char __pyx_k_on_convert_to_mtype_size[] = "on_convert_to_mtype_size"; static const char __pyx_k_draw_mirror_faces_default[] = "draw.mirror_faces_default"; static const char __pyx_k_on_settings_timer_timeout[] = "on_settings_timer_timeout"; static const char __pyx_k_draw_mirror_distance_range[] = "draw.mirror_distance_range"; static const char __pyx_k_filesystemwatcher_handlers[] = "filesystemwatcher_handlers"; static const char __pyx_k_on_action_rewind_triggered[] = "on_action_rewind_triggered"; static const char __pyx_k_set_combobox_current_image[] = "set_combobox_current_image"; static const char __pyx_k_on_action_forward_triggered[] = "on_action_forward_triggered"; static const char __pyx_k_draw_mirror_distance_default[] = "draw.mirror_distance_default"; static const char __pyx_k_on_action_mark_set_triggered[] = "on_action_mark_set_triggered"; static const char __pyx_k_on_action_previous_triggered[] = "on_action_previous_triggered"; static const char __pyx_k_on_action_challenge_triggered[] = "on_action_challenge_triggered"; static const char __pyx_k_on_action_edit_cube_triggered[] = "on_action_edit_cube_triggered"; static const char __pyx_k_on_dialog_change_current_face[] = "on_dialog_change_current_face"; static const char __pyx_k_on_dialog_reset_current_image[] = "on_dialog_reset_current_image"; static const char __pyx_k_on_action_new_solved_triggered[] = "on_action_new_solved_triggered"; static const char __pyx_k_on_dialog_change_current_image[] = "on_dialog_change_current_image"; static const char __pyx_k_tmp[] = "/tmp/build/temp.linux-x86_64-3.5/pybiklib/ext/_qt_qtwes2.pyx"; static const char __pyx_k_keyval_from_name_locals_genexpr[] = "keyval_from_name..genexpr"; static const char __pyx_k_on_action_mark_remove_triggered[] = "on_action_mark_remove_triggered"; static const char __pyx_k_on_action_preferences_triggered[] = "on_action_preferences_triggered"; static const char __pyx_k_on_action_selectmodel_triggered[] = "on_action_selectmodel_triggered"; static const char __pyx_k_on_action_initial_state_triggere[] = "on_action_initial_state_triggered"; static const char __pyx_k_on_action_reset_rotation_trigger[] = "on_action_reset_rotation_triggered"; static const char __pyx_k_set_preferences_current_face_the[] = "set_preferences_current_face_theme"; static PyObject *__pyx_n_s_APPICON_FILE; static PyObject *__pyx_n_s_APPNAME; static PyObject *__pyx_n_s_COPYRIGHT; static PyObject *__pyx_n_s_ControlModifier; static PyObject *__pyx_n_s_DEBUG_DRAW; static PyObject *__pyx_n_s_DEBUG_FPS; static PyObject *__pyx_n_s_DEBUG_GLDEBUG; static PyObject *__pyx_n_s_DEBUG_MSG; static PyObject *__pyx_n_s_DEBUG_MSGEXT; static PyObject *__pyx_n_s_DEBUG_MSGGL; static PyObject *__pyx_n_s_DEBUG_NOCONTROLS; static PyObject *__pyx_n_s_DEBUG_PHONE; static PyObject *__pyx_n_s_DEBUG_QML; static PyObject *__pyx_n_s_DEBUG_SIM; static PyObject *__pyx_n_s_DEBUG_VFPS; static PyObject *__pyx_kp_u_GL_type_es2; static PyObject *__pyx_n_u_GRID_UNIT_PX; static PyObject *__pyx_n_u_KP; static PyObject *__pyx_n_u_Key; static PyObject *__pyx_n_s_KeyError; static PyObject *__pyx_n_s_Key_Down; static PyObject *__pyx_n_s_Key_Escape; static PyObject *__pyx_n_s_Key_Left; static PyObject *__pyx_n_s_Key_Period; static PyObject *__pyx_n_s_Key_Right; static PyObject *__pyx_n_s_Key_Up; static PyObject *__pyx_n_s_LeftButton; static PyObject *__pyx_n_u_Move; static PyObject *__pyx_n_u_Num; static PyObject *__pyx_kp_u_OFFSCREEN; static PyObject *__pyx_kp_u_Open_Image; static PyObject *__pyx_n_s_PyData; static PyObject *__pyx_kp_u_QObject; static PyObject *__pyx_n_b_QString; static PyObject *__pyx_n_s_QtKeys; static PyObject *__pyx_n_s_RightButton; static PyObject *__pyx_n_s_RuntimeWarning; static PyObject *__pyx_n_s_SHORT_DESCRIPTION; static PyObject *__pyx_n_s_ShiftModifier; static PyObject *__pyx_kp_u_Skip_mime_type; static PyObject *__pyx_n_s_Theme; static PyObject *__pyx_n_s_UI_DIR; static PyObject *__pyx_n_u_Ubuntu; static PyObject *__pyx_n_s_VERSION; static PyObject *__pyx_n_s_ValueError; static PyObject *__pyx_kp_u__13; static PyObject *__pyx_kp_u__22; static PyObject *__pyx_n_s__4; static PyObject *__pyx_kp_u__6; static PyObject *__pyx_kp_u__7; static PyObject *__pyx_n_u_about_contribute; static PyObject *__pyx_n_u_about_license_full; static PyObject *__pyx_n_u_about_license_notfound; static PyObject *__pyx_n_u_about_license_short; static PyObject *__pyx_n_u_about_translators; static PyObject *__pyx_n_u_about_website; static PyObject *__pyx_kp_u_action_edit_cube; static PyObject *__pyx_kp_u_action_edit_moves; static PyObject *__pyx_kp_u_action_initial_state; static PyObject *__pyx_kp_u_action_preferences; static PyObject *__pyx_kp_u_action_reset_rotation; static PyObject *__pyx_kp_u_action_selectmodel; static PyObject *__pyx_n_s_angle_max; static PyObject *__pyx_n_s_animate_timer_step; static PyObject *__pyx_n_s_animate_timer_stop; static PyObject *__pyx_n_s_app; static PyObject *__pyx_n_s_app_post_create; static PyObject *__pyx_n_s_append; static PyObject *__pyx_n_s_args; static PyObject *__pyx_n_b_bool; static PyObject *__pyx_n_s_button; static PyObject *__pyx_n_u_button_mousemode_ext; static PyObject *__pyx_n_u_button_mousemode_gesture; static PyObject *__pyx_n_u_button_mousemode_quad; static PyObject *__pyx_n_s_callback; static PyObject *__pyx_n_u_ccw; static PyObject *__pyx_n_u_checkbox_mirror_faces; static PyObject *__pyx_n_s_close; static PyObject *__pyx_n_s_close_mainwindow; static PyObject *__pyx_n_s_code; static PyObject *__pyx_n_s_color; static PyObject *__pyx_n_u_color; static PyObject *__pyx_n_u_combobox_samples; static PyObject *__pyx_n_u_combobox_shader; static PyObject *__pyx_kp_u_compiled; static PyObject *__pyx_n_s_compiled_2; static PyObject *__pyx_n_s_config; static PyObject *__pyx_n_s_config_2; static PyObject *__pyx_n_s_create_filesystemwatcher; static PyObject *__pyx_n_s_create_window; static PyObject *__pyx_n_s_currentfolder; static PyObject *__pyx_n_u_cursors; static PyObject *__pyx_n_s_data; static PyObject *__pyx_n_s_destroy_window; static PyObject *__pyx_n_s_dirname; static PyObject *__pyx_n_s_divider_pos; static PyObject *__pyx_n_s_divider_pos2; static PyObject *__pyx_n_s_doc; static PyObject *__pyx_n_b_double; static PyObject *__pyx_kp_u_drag_enter; static PyObject *__pyx_kp_u_draw_accels; static PyObject *__pyx_kp_u_draw_mirror_distance; static PyObject *__pyx_kp_u_draw_mirror_distance_default; static PyObject *__pyx_kp_u_draw_mirror_distance_range; static PyObject *__pyx_kp_u_draw_mirror_faces; static PyObject *__pyx_kp_u_draw_mirror_faces_default; static PyObject *__pyx_kp_u_draw_samples; static PyObject *__pyx_kp_u_draw_samples_default; static PyObject *__pyx_kp_u_draw_samples_range; static PyObject *__pyx_kp_u_draw_selection_nick; static PyObject *__pyx_kp_u_draw_shader; static PyObject *__pyx_kp_u_draw_shader_default; static PyObject *__pyx_kp_u_draw_shader_range; static PyObject *__pyx_kp_u_draw_speed; static PyObject *__pyx_kp_u_draw_speed_default; static PyObject *__pyx_kp_u_draw_speed_range; static PyObject *__pyx_n_s_encode; static PyObject *__pyx_n_s_enumerate; static PyObject *__pyx_n_s_environ; static PyObject *__pyx_n_s_facekey; static PyObject *__pyx_n_s_facename; static PyObject *__pyx_n_s_facenames; static PyObject *__pyx_n_s_filename; static PyObject *__pyx_n_s_filesystemwatcher_handlers; static PyObject *__pyx_n_s_filesystemwatcher_path; static PyObject *__pyx_n_s_fill_sidepane; static PyObject *__pyx_n_s_font; static PyObject *__pyx_n_s_fontpixelsize; static PyObject *__pyx_n_s_format; static PyObject *__pyx_kp_u_from_package; static PyObject *__pyx_n_s_func; static PyObject *__pyx_n_s_genexpr; static PyObject *__pyx_n_u_gesture; static PyObject *__pyx_n_s_get; static PyObject *__pyx_n_s_get_filedialog_imagefile; static PyObject *__pyx_n_s_get_imagefile; static PyObject *__pyx_n_s_get_pictures_folder; static PyObject *__pyx_n_s_get_samples; static PyObject *__pyx_n_s_gettext; static PyObject *__pyx_n_s_gl_delete_atlas; static PyObject *__pyx_n_s_height; static PyObject *__pyx_n_u_help_text; static PyObject *__pyx_kp_s_tmp; static PyObject *__pyx_n_s_i; static PyObject *__pyx_n_s_icon; static PyObject *__pyx_n_s_image; static PyObject *__pyx_n_u_image; static PyObject *__pyx_n_s_image_from_file; static PyObject *__pyx_n_s_imagefile; static PyObject *__pyx_n_s_imageindex; static PyObject *__pyx_n_s_imageindex_icon; static PyObject *__pyx_n_s_imagemode; static PyObject *__pyx_n_u_images; static PyObject *__pyx_n_s_import; static PyObject *__pyx_n_s_index; static PyObject *__pyx_n_s_index_icon; static PyObject *__pyx_kp_u_init_module; static PyObject *__pyx_n_s_initial_resize; static PyObject *__pyx_n_b_int; static PyObject *__pyx_n_s_isfile; static PyObject *__pyx_n_s_item; static PyObject *__pyx_n_s_join; static PyObject *__pyx_n_s_keyseq; static PyObject *__pyx_n_s_keystr; static PyObject *__pyx_n_s_keyval_from_name; static PyObject *__pyx_n_s_keyval_from_name_locals_genexpr; static PyObject *__pyx_n_u_label_needs_restarted; static PyObject *__pyx_n_s_load_image_from_file; static PyObject *__pyx_n_s_load_ui; static PyObject *__pyx_n_s_locations; static PyObject *__pyx_n_s_main; static PyObject *__pyx_n_s_maxsize; static PyObject *__pyx_n_s_message; static PyObject *__pyx_n_s_metaclass; static PyObject *__pyx_n_u_mode_nick; static PyObject *__pyx_n_s_modelselect; static PyObject *__pyx_n_s_module; static PyObject *__pyx_n_s_module_2; static PyObject *__pyx_n_u_mosaic; static PyObject *__pyx_kp_u_mouse__png; static PyObject *__pyx_n_s_msec; static PyObject *__pyx_n_s_name; static PyObject *__pyx_n_s_name_2; static PyObject *__pyx_kp_u_new_random_png; static PyObject *__pyx_kp_u_new_solved_png; static PyObject *__pyx_n_s_nick; static PyObject *__pyx_n_s_on_action_challenge_triggered; static PyObject *__pyx_n_s_on_action_edit_cube_triggered; static PyObject *__pyx_n_s_on_action_forward_triggered; static PyObject *__pyx_n_s_on_action_initial_state_triggere; static PyObject *__pyx_n_s_on_action_mark_remove_triggered; static PyObject *__pyx_n_s_on_action_mark_set_triggered; static PyObject *__pyx_n_s_on_action_new_solved_triggered; static PyObject *__pyx_n_s_on_action_next_triggered; static PyObject *__pyx_n_s_on_action_play_triggered; static PyObject *__pyx_n_s_on_action_preferences_triggered; static PyObject *__pyx_n_s_on_action_previous_triggered; static PyObject *__pyx_n_s_on_action_reset_rotation_trigger; static PyObject *__pyx_n_s_on_action_rewind_triggered; static PyObject *__pyx_n_s_on_action_selectmodel_triggered; static PyObject *__pyx_n_s_on_action_stop_triggered; static PyObject *__pyx_n_s_on_animation_ending; static PyObject *__pyx_n_s_on_closing; static PyObject *__pyx_n_s_on_convert_to_mtype_size; static PyObject *__pyx_n_s_on_dialog_change_current_face; static PyObject *__pyx_n_s_on_dialog_change_current_image; static PyObject *__pyx_n_s_on_dialog_reset_current_image; static PyObject *__pyx_n_s_on_dialog_text; static PyObject *__pyx_n_s_on_edit_finished; static PyObject *__pyx_n_s_on_edit_moves_nextword; static PyObject *__pyx_n_s_on_edit_moves_prevword; static PyObject *__pyx_n_s_on_edit_moves_swapnext; static PyObject *__pyx_n_s_on_edit_moves_swapprev; static PyObject *__pyx_n_s_on_init_finalize; static PyObject *__pyx_n_s_on_key_pressed; static PyObject *__pyx_n_s_on_load_other_game; static PyObject *__pyx_n_s_on_model_back; static PyObject *__pyx_n_s_on_model_get_modeldata; static PyObject *__pyx_n_s_on_mouse_drop_color; static PyObject *__pyx_n_s_on_mouse_drop_url; static PyObject *__pyx_n_s_on_mouse_moved; static PyObject *__pyx_n_s_on_mouse_pressed; static PyObject *__pyx_n_s_on_mouse_released; static PyObject *__pyx_n_s_on_mouse_zoom; static PyObject *__pyx_n_s_on_picking_result; static PyObject *__pyx_n_s_on_plugin_activated; static PyObject *__pyx_n_s_on_plugin_test_idx; static PyObject *__pyx_n_s_on_settings_timer_timeout; static PyObject *__pyx_n_s_os; static PyObject *__pyx_n_s_package; static PyObject *__pyx_n_s_parse_color; static PyObject *__pyx_n_s_parse_color_f; static PyObject *__pyx_n_s_path; static PyObject *__pyx_n_s_pick_requested; static PyObject *__pyx_n_u_plain; static PyObject *__pyx_n_s_plugin_data; static PyObject *__pyx_n_s_pop; static PyObject *__pyx_n_s_pos; static PyObject *__pyx_n_s_preferences_dialog; static PyObject *__pyx_n_s_prepare; static PyObject *__pyx_n_s_print; static PyObject *__pyx_n_s_pyapp; static PyObject *__pyx_n_s_pybiklib; static PyObject *__pyx_n_s_pybiklib_settings; static PyObject *__pyx_n_s_pydata; static PyObject *__pyx_n_s_qpath; static PyObject *__pyx_n_u_qt; static PyObject *__pyx_n_s_qt_qtwes2; static PyObject *__pyx_n_u_quadrant; static PyObject *__pyx_n_s_qualname; static PyObject *__pyx_n_s_range; static PyObject *__pyx_n_s_s1; static PyObject *__pyx_n_s_s2; static PyObject *__pyx_n_s_sample_buffers; static PyObject *__pyx_n_s_save_screenshot; static PyObject *__pyx_n_s_scaled_height; static PyObject *__pyx_n_s_scaled_width; static PyObject *__pyx_kp_u_select; static PyObject *__pyx_kp_u_select_model_png; static PyObject *__pyx_n_s_selection_nick; static PyObject *__pyx_n_s_send; static PyObject *__pyx_n_s_set_animation_speed; static PyObject *__pyx_n_s_set_combobox_current_image; static PyObject *__pyx_n_s_set_cursor; static PyObject *__pyx_n_s_set_debug_flags; static PyObject *__pyx_n_s_set_debug_text; static PyObject *__pyx_n_s_set_edit_moves; static PyObject *__pyx_n_s_set_pick_requested; static PyObject *__pyx_n_s_set_preferences_current_face_the; static PyObject *__pyx_n_s_set_status_text; static PyObject *__pyx_n_s_set_title; static PyObject *__pyx_n_s_set_toolbar_state; static PyObject *__pyx_n_s_settings; static PyObject *__pyx_n_s_shader_names; static PyObject *__pyx_n_s_show_message; static PyObject *__pyx_n_s_show_message_text; static PyObject *__pyx_n_s_show_preferences; static PyObject *__pyx_n_u_simple; static PyObject *__pyx_n_s_singleshot_handler; static PyObject *__pyx_n_s_singleshot_queue; static PyObject *__pyx_n_s_sizepolicy; static PyObject *__pyx_n_u_slider_animspeed; static PyObject *__pyx_n_u_spinbox_mirror_faces; static PyObject *__pyx_n_s_split; static PyObject *__pyx_n_s_startswith; static PyObject *__pyx_n_s_state; static PyObject *__pyx_n_s_stockicons; static PyObject *__pyx_n_s_subtree; static PyObject *__pyx_n_s_sys; static PyObject *__pyx_n_s_test; static PyObject *__pyx_n_s_text; static PyObject *__pyx_kp_u_text_FULL_LICENSE_TEXT; static PyObject *__pyx_n_s_text_to_html; static PyObject *__pyx_n_s_textures; static PyObject *__pyx_n_s_theme; static PyObject *__pyx_kp_u_theme_bgcolor; static PyObject *__pyx_kp_u_theme_faces; static PyObject *__pyx_n_s_throw; static PyObject *__pyx_n_u_tiled; static PyObject *__pyx_n_s_timer_singleShot; static PyObject *__pyx_n_s_title; static PyObject *__pyx_n_s_transl; static PyObject *__pyx_n_s_treeview; static PyObject *__pyx_kp_u_unknown_typename_s; static PyObject *__pyx_n_s_unset_cursor; static PyObject *__pyx_n_s_update_drawingarea; static PyObject *__pyx_n_s_update_sidepane; static PyObject *__pyx_kp_u_utf_8; static PyObject *__pyx_kp_u_value_has_wrong_typ; static PyObject *__pyx_kp_b_void; static PyObject *__pyx_kp_u_void_2; static PyObject *__pyx_n_s_warn; static PyObject *__pyx_n_s_warn_explicit; static PyObject *__pyx_n_s_warnings; static PyObject *__pyx_n_s_width; static PyObject *__pyx_kp_u_window_divider; static PyObject *__pyx_kp_u_window_editbar; static PyObject *__pyx_kp_u_window_size; static PyObject *__pyx_kp_u_window_statusbar; static PyObject *__pyx_n_s_zip; static PyObject *__pyx_pf_10_qt_qtwes2_set_debug_flags(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_module); /* proto */ static PyObject *__pyx_pf_10_qt_qtwes2_2gl_delete_atlas(CYTHON_UNUSED PyObject *__pyx_self); /* proto */ static PyObject *__pyx_pf_10_qt_qtwes2_4set_pick_requested(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_pick_requested); /* proto */ static PyObject *__pyx_pf_10_qt_qtwes2_6set_atlas_size(CYTHON_UNUSED PyObject *__pyx_self, int __pyx_v_width, int __pyx_v_height); /* proto */ static PyObject *__pyx_pf_10_qt_qtwes2_8set_debug_text(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_text); /* proto */ static PyObject *__pyx_pf_10_qt_qtwes2_10set_edit_moves(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_code, PyObject *__pyx_v_pos); /* proto */ static PyObject *__pyx_pf_10_qt_qtwes2_12set_status_text(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_text); /* proto */ static PyObject *__pyx_pf_10_qt_qtwes2_14show_message(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_message); /* proto */ static PyObject *__pyx_pf_10_qt_qtwes2_16fill_sidepane(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_plugin_data); /* proto */ static PyObject *__pyx_pf_10_qt_qtwes2_18update_sidepane(CYTHON_UNUSED PyObject *__pyx_self); /* proto */ static PyObject *__pyx_pf_10_qt_qtwes2_20set_toolbar_state(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_state); /* proto */ static PyObject *__pyx_pf_10_qt_qtwes2_22set_combobox_current_image(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_index_icon, PyObject *__pyx_v_imagefile, PyObject *__pyx_v_index); /* proto */ static PyObject *__pyx_pf_10_qt_qtwes2_24set_preferences_current_face_theme(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_color, PyObject *__pyx_v_imageindex_icon, PyObject *__pyx_v_imagefile, PyObject *__pyx_v_imageindex, PyObject *__pyx_v_imagemode); /* proto */ static PyObject *__pyx_pf_10_qt_qtwes2_26get_filedialog_imagefile(CYTHON_UNUSED PyObject *__pyx_self); /* proto */ static PyObject *__pyx_pf_10_qt_qtwes2_28preferences_dialog(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_shader_names, CYTHON_UNUSED PyObject *__pyx_v_sample_buffers, PyObject *__pyx_v_facenames, PyObject *__pyx_v_stockicons); /* proto */ static PyObject *__pyx_pf_10_qt_qtwes2_30show_preferences(CYTHON_UNUSED PyObject *__pyx_self); /* proto */ static PyObject *__pyx_pf_10_qt_qtwes2_32initial_resize(CYTHON_UNUSED PyObject *__pyx_self); /* proto */ static PyObject *__pyx_pf_10_qt_qtwes2_34set_title(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_title); /* proto */ static PyObject *__pyx_pf_10_qt_qtwes2_36load_ui(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_path); /* proto */ static PyObject *__pyx_pf_10_qt_qtwes2_38close_mainwindow(CYTHON_UNUSED PyObject *__pyx_self); /* proto */ static PyObject *__pyx_pf_10_qt_qtwes2_40get_samples(CYTHON_UNUSED PyObject *__pyx_self); /* proto */ static PyObject *__pyx_pf_10_qt_qtwes2_42update_drawingarea(CYTHON_UNUSED PyObject *__pyx_self); /* proto */ static PyObject *__pyx_pf_10_qt_qtwes2_44set_cursor(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_index); /* proto */ static PyObject *__pyx_pf_10_qt_qtwes2_46unset_cursor(CYTHON_UNUSED PyObject *__pyx_self); /* proto */ static PyObject *__pyx_pf_10_qt_qtwes2_48save_screenshot(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_filename); /* proto */ static PyObject *__pyx_pf_10_qt_qtwes2_50parse_color(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_name); /* proto */ static PyObject *__pyx_pf_10_qt_qtwes2_52parse_color_f(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_name); /* proto */ static PyObject *__pyx_pf_10_qt_qtwes2_54load_image_from_file(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_filename, PyObject *__pyx_v_maxsize); /* proto */ static PyObject *__pyx_pf_10_qt_qtwes2_16keyval_from_name_genexpr(PyObject *__pyx_self); /* proto */ static PyObject *__pyx_pf_10_qt_qtwes2_56keyval_from_name(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_keystr); /* proto */ static PyObject *__pyx_pf_10_qt_qtwes2_58get_pictures_folder(CYTHON_UNUSED PyObject *__pyx_self); /* proto */ static PyObject *__pyx_pf_10_qt_qtwes2_60get_imagefile(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_facekey); /* proto */ static PyObject *__pyx_pf_10_qt_qtwes2_62text_to_html(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_text); /* proto */ static PyObject *__pyx_pf_10_qt_qtwes2_64create_filesystemwatcher(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_path, PyObject *__pyx_v_callback); /* proto */ static PyObject *__pyx_pf_10_qt_qtwes2_66timer_singleShot(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_msec, PyObject *__pyx_v_func); /* proto */ static PyObject *__pyx_pf_10_qt_qtwes2_68settings_timer_start(CYTHON_UNUSED PyObject *__pyx_self); /* proto */ static PyObject *__pyx_pf_10_qt_qtwes2_70set_animation_speed(CYTHON_UNUSED PyObject *__pyx_self); /* proto */ static PyObject *__pyx_pf_10_qt_qtwes2_72animate_timer_start(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_msec, PyObject *__pyx_v_angle_max); /* proto */ static PyObject *__pyx_pf_10_qt_qtwes2_74animate_timer_step(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_angle_max); /* proto */ static PyObject *__pyx_pf_10_qt_qtwes2_76animate_timer_stop(CYTHON_UNUSED PyObject *__pyx_self); /* proto */ static PyObject *__pyx_pf_10_qt_qtwes2_78create_window(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_pyapp); /* proto */ static PyObject *__pyx_pf_10_qt_qtwes2_80destroy_window(CYTHON_UNUSED PyObject *__pyx_self); /* proto */ static PyObject *__pyx_pf_10_qt_qtwes2_82app_post_create(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_gettext); /* proto */ static PyObject *__pyx_tp_new_10_qt_qtwes2___pyx_scope_struct__keyval_from_name(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ static PyObject *__pyx_tp_new_10_qt_qtwes2___pyx_scope_struct_1_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ static PyObject *__pyx_float_14_0; static PyObject *__pyx_int_0; static PyObject *__pyx_int_1; static PyObject *__pyx_int_4; static PyObject *__pyx_int_8; static PyObject *__pyx_int_15; static PyObject *__pyx_int_16; static PyObject *__pyx_int_18; static PyObject *__pyx_tuple_; static PyObject *__pyx_tuple__2; static PyObject *__pyx_tuple__3; static PyObject *__pyx_tuple__5; static PyObject *__pyx_tuple__8; static PyObject *__pyx_tuple__9; static PyObject *__pyx_tuple__10; static PyObject *__pyx_tuple__11; static PyObject *__pyx_tuple__12; static PyObject *__pyx_tuple__14; static PyObject *__pyx_tuple__15; static PyObject *__pyx_tuple__16; static PyObject *__pyx_tuple__17; static PyObject *__pyx_tuple__18; static PyObject *__pyx_tuple__19; static PyObject *__pyx_tuple__20; static PyObject *__pyx_tuple__21; static PyObject *__pyx_tuple__23; static PyObject *__pyx_tuple__24; static PyObject *__pyx_tuple__25; static PyObject *__pyx_tuple__26; static PyObject *__pyx_tuple__27; static PyObject *__pyx_tuple__28; static PyObject *__pyx_tuple__29; static PyObject *__pyx_tuple__30; static PyObject *__pyx_tuple__31; static PyObject *__pyx_tuple__34; static PyObject *__pyx_tuple__36; static PyObject *__pyx_tuple__38; static PyObject *__pyx_tuple__40; static PyObject *__pyx_tuple__42; static PyObject *__pyx_tuple__44; static PyObject *__pyx_tuple__46; static PyObject *__pyx_tuple__48; static PyObject *__pyx_tuple__50; static PyObject *__pyx_tuple__52; static PyObject *__pyx_tuple__54; static PyObject *__pyx_tuple__56; static PyObject *__pyx_tuple__59; static PyObject *__pyx_tuple__61; static PyObject *__pyx_tuple__63; static PyObject *__pyx_tuple__68; static PyObject *__pyx_tuple__71; static PyObject *__pyx_tuple__73; static PyObject *__pyx_tuple__75; static PyObject *__pyx_tuple__77; static PyObject *__pyx_tuple__79; static PyObject *__pyx_tuple__81; static PyObject *__pyx_tuple__83; static PyObject *__pyx_tuple__85; static PyObject *__pyx_tuple__87; static PyObject *__pyx_tuple__89; static PyObject *__pyx_tuple__92; static PyObject *__pyx_tuple__95; static PyObject *__pyx_tuple__98; static PyObject *__pyx_codeobj__32; static PyObject *__pyx_codeobj__33; static PyObject *__pyx_codeobj__35; static PyObject *__pyx_codeobj__37; static PyObject *__pyx_codeobj__39; static PyObject *__pyx_codeobj__41; static PyObject *__pyx_codeobj__43; static PyObject *__pyx_codeobj__45; static PyObject *__pyx_codeobj__47; static PyObject *__pyx_codeobj__49; static PyObject *__pyx_codeobj__51; static PyObject *__pyx_codeobj__53; static PyObject *__pyx_codeobj__55; static PyObject *__pyx_codeobj__57; static PyObject *__pyx_codeobj__58; static PyObject *__pyx_codeobj__60; static PyObject *__pyx_codeobj__62; static PyObject *__pyx_codeobj__64; static PyObject *__pyx_codeobj__65; static PyObject *__pyx_codeobj__66; static PyObject *__pyx_codeobj__67; static PyObject *__pyx_codeobj__69; static PyObject *__pyx_codeobj__70; static PyObject *__pyx_codeobj__72; static PyObject *__pyx_codeobj__74; static PyObject *__pyx_codeobj__76; static PyObject *__pyx_codeobj__78; static PyObject *__pyx_codeobj__80; static PyObject *__pyx_codeobj__82; static PyObject *__pyx_codeobj__84; static PyObject *__pyx_codeobj__86; static PyObject *__pyx_codeobj__88; static PyObject *__pyx_codeobj__90; static PyObject *__pyx_codeobj__91; static PyObject *__pyx_codeobj__93; static PyObject *__pyx_codeobj__94; static PyObject *__pyx_codeobj__96; static PyObject *__pyx_codeobj__97; static PyObject *__pyx_codeobj__99; /* "_qt_qtwes2.pyx":102 * debug = 0 * * def set_debug_flags(module): # <<<<<<<<<<<<<< * global debug * if module.DEBUG_MSG: debug |= DEBUG_MSG */ /* Python wrapper */ static PyObject *__pyx_pw_10_qt_qtwes2_1set_debug_flags(PyObject *__pyx_self, PyObject *__pyx_v_module); /*proto*/ static PyMethodDef __pyx_mdef_10_qt_qtwes2_1set_debug_flags = {"set_debug_flags", (PyCFunction)__pyx_pw_10_qt_qtwes2_1set_debug_flags, METH_O, 0}; static PyObject *__pyx_pw_10_qt_qtwes2_1set_debug_flags(PyObject *__pyx_self, PyObject *__pyx_v_module) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("set_debug_flags (wrapper)", 0); __pyx_r = __pyx_pf_10_qt_qtwes2_set_debug_flags(__pyx_self, ((PyObject *)__pyx_v_module)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_10_qt_qtwes2_set_debug_flags(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_module) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_t_2; __Pyx_RefNannySetupContext("set_debug_flags", 0); /* "_qt_qtwes2.pyx":104 * def set_debug_flags(module): * global debug * if module.DEBUG_MSG: debug |= DEBUG_MSG # <<<<<<<<<<<<<< * if module.DEBUG_MSGGL: debug |= DEBUG_MSGGL * if module.DEBUG_MSGEXT: debug |= DEBUG_MSGEXT */ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_module, __pyx_n_s_DEBUG_MSG); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 104, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 104, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_2) { __pyx_v_10_qt_qtwes2_debug = (__pyx_v_10_qt_qtwes2_debug | __pyx_e_10_qt_qtwes2_DEBUG_MSG); } /* "_qt_qtwes2.pyx":105 * global debug * if module.DEBUG_MSG: debug |= DEBUG_MSG * if module.DEBUG_MSGGL: debug |= DEBUG_MSGGL # <<<<<<<<<<<<<< * if module.DEBUG_MSGEXT: debug |= DEBUG_MSGEXT * if module.DEBUG_DRAW: debug |= DEBUG_DRAW */ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_module, __pyx_n_s_DEBUG_MSGGL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 105, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 105, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_2) { __pyx_v_10_qt_qtwes2_debug = (__pyx_v_10_qt_qtwes2_debug | __pyx_e_10_qt_qtwes2_DEBUG_MSGGL); } /* "_qt_qtwes2.pyx":106 * if module.DEBUG_MSG: debug |= DEBUG_MSG * if module.DEBUG_MSGGL: debug |= DEBUG_MSGGL * if module.DEBUG_MSGEXT: debug |= DEBUG_MSGEXT # <<<<<<<<<<<<<< * if module.DEBUG_DRAW: debug |= DEBUG_DRAW * if module.DEBUG_FPS: debug |= DEBUG_FPS */ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_module, __pyx_n_s_DEBUG_MSGEXT); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 106, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 106, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_2) { __pyx_v_10_qt_qtwes2_debug = (__pyx_v_10_qt_qtwes2_debug | __pyx_e_10_qt_qtwes2_DEBUG_MSGEXT); } /* "_qt_qtwes2.pyx":107 * if module.DEBUG_MSGGL: debug |= DEBUG_MSGGL * if module.DEBUG_MSGEXT: debug |= DEBUG_MSGEXT * if module.DEBUG_DRAW: debug |= DEBUG_DRAW # <<<<<<<<<<<<<< * if module.DEBUG_FPS: debug |= DEBUG_FPS * if module.DEBUG_VFPS: debug |= DEBUG_VFPS */ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_module, __pyx_n_s_DEBUG_DRAW); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 107, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 107, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_2) { __pyx_v_10_qt_qtwes2_debug = (__pyx_v_10_qt_qtwes2_debug | __pyx_e_10_qt_qtwes2_DEBUG_DRAW); } /* "_qt_qtwes2.pyx":108 * if module.DEBUG_MSGEXT: debug |= DEBUG_MSGEXT * if module.DEBUG_DRAW: debug |= DEBUG_DRAW * if module.DEBUG_FPS: debug |= DEBUG_FPS # <<<<<<<<<<<<<< * if module.DEBUG_VFPS: debug |= DEBUG_VFPS * if module.DEBUG_QML: debug |= DEBUG_QML */ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_module, __pyx_n_s_DEBUG_FPS); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 108, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 108, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_2) { __pyx_v_10_qt_qtwes2_debug = (__pyx_v_10_qt_qtwes2_debug | __pyx_e_10_qt_qtwes2_DEBUG_FPS); } /* "_qt_qtwes2.pyx":109 * if module.DEBUG_DRAW: debug |= DEBUG_DRAW * if module.DEBUG_FPS: debug |= DEBUG_FPS * if module.DEBUG_VFPS: debug |= DEBUG_VFPS # <<<<<<<<<<<<<< * if module.DEBUG_QML: debug |= DEBUG_QML * if module.DEBUG_GLDEBUG: debug |= DEBUG_GLDEBUG */ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_module, __pyx_n_s_DEBUG_VFPS); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 109, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 109, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_2) { __pyx_v_10_qt_qtwes2_debug = (__pyx_v_10_qt_qtwes2_debug | __pyx_e_10_qt_qtwes2_DEBUG_VFPS); } /* "_qt_qtwes2.pyx":110 * if module.DEBUG_FPS: debug |= DEBUG_FPS * if module.DEBUG_VFPS: debug |= DEBUG_VFPS * if module.DEBUG_QML: debug |= DEBUG_QML # <<<<<<<<<<<<<< * if module.DEBUG_GLDEBUG: debug |= DEBUG_GLDEBUG * if module.DEBUG_PHONE: debug |= DEBUG_PHONE */ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_module, __pyx_n_s_DEBUG_QML); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 110, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 110, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_2) { __pyx_v_10_qt_qtwes2_debug = (__pyx_v_10_qt_qtwes2_debug | __pyx_e_10_qt_qtwes2_DEBUG_QML); } /* "_qt_qtwes2.pyx":111 * if module.DEBUG_VFPS: debug |= DEBUG_VFPS * if module.DEBUG_QML: debug |= DEBUG_QML * if module.DEBUG_GLDEBUG: debug |= DEBUG_GLDEBUG # <<<<<<<<<<<<<< * if module.DEBUG_PHONE: debug |= DEBUG_PHONE * if module.DEBUG_SIM: debug |= DEBUG_SIM */ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_module, __pyx_n_s_DEBUG_GLDEBUG); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 111, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 111, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_2) { __pyx_v_10_qt_qtwes2_debug = (__pyx_v_10_qt_qtwes2_debug | __pyx_e_10_qt_qtwes2_DEBUG_GLDEBUG); } /* "_qt_qtwes2.pyx":112 * if module.DEBUG_QML: debug |= DEBUG_QML * if module.DEBUG_GLDEBUG: debug |= DEBUG_GLDEBUG * if module.DEBUG_PHONE: debug |= DEBUG_PHONE # <<<<<<<<<<<<<< * if module.DEBUG_SIM: debug |= DEBUG_SIM * if module.DEBUG_NOCONTROLS: debug |= DEBUG_NOCONTROLS */ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_module, __pyx_n_s_DEBUG_PHONE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 112, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 112, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_2) { __pyx_v_10_qt_qtwes2_debug = (__pyx_v_10_qt_qtwes2_debug | __pyx_e_10_qt_qtwes2_DEBUG_PHONE); } /* "_qt_qtwes2.pyx":113 * if module.DEBUG_GLDEBUG: debug |= DEBUG_GLDEBUG * if module.DEBUG_PHONE: debug |= DEBUG_PHONE * if module.DEBUG_SIM: debug |= DEBUG_SIM # <<<<<<<<<<<<<< * if module.DEBUG_NOCONTROLS: debug |= DEBUG_NOCONTROLS * */ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_module, __pyx_n_s_DEBUG_SIM); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 113, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 113, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_2) { __pyx_v_10_qt_qtwes2_debug = (__pyx_v_10_qt_qtwes2_debug | __pyx_e_10_qt_qtwes2_DEBUG_SIM); } /* "_qt_qtwes2.pyx":114 * if module.DEBUG_PHONE: debug |= DEBUG_PHONE * if module.DEBUG_SIM: debug |= DEBUG_SIM * if module.DEBUG_NOCONTROLS: debug |= DEBUG_NOCONTROLS # <<<<<<<<<<<<<< * * */ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_module, __pyx_n_s_DEBUG_NOCONTROLS); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 114, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 114, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_2) { __pyx_v_10_qt_qtwes2_debug = (__pyx_v_10_qt_qtwes2_debug | __pyx_e_10_qt_qtwes2_DEBUG_NOCONTROLS); } /* "_qt_qtwes2.pyx":102 * debug = 0 * * def set_debug_flags(module): # <<<<<<<<<<<<<< * global debug * if module.DEBUG_MSG: debug |= DEBUG_MSG */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("_qt_qtwes2.set_debug_flags", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwes2.pyx":222 * * ##pxm-FUNC P * cdef void init_module(): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * qtui.init_module() */ static void __pyx_f_10_qt_qtwes2_init_module(void) { __Pyx_RefNannyDeclarations int __pyx_t_1; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; __Pyx_RefNannySetupContext("init_module", 0); /* "_qt_qtwes2.pyx":224 * cdef void init_module(): * ##pxm>IF 'qtw' == 'qtw' * qtui.init_module() # <<<<<<<<<<<<<< * ##pxm>IF_END * if debug & DEBUG_MSGEXT: */ __pyx_f_6_qtui__init_module(); /* "_qt_qtwes2.pyx":226 * qtui.init_module() * ##pxm>IF_END * if debug & DEBUG_MSGEXT: # <<<<<<<<<<<<<< * print('init module:', __name__) * print(' from package:', __package__) */ __pyx_t_1 = ((__pyx_v_10_qt_qtwes2_debug & __pyx_e_10_qt_qtwes2_DEBUG_MSGEXT) != 0); if (__pyx_t_1) { /* "_qt_qtwes2.pyx":227 * ##pxm>IF_END * if debug & DEBUG_MSGEXT: * print('init module:', __name__) # <<<<<<<<<<<<<< * print(' from package:', __package__) * print(' compiled:', __compiled) */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 227, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 227, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_kp_u_init_module); __Pyx_GIVEREF(__pyx_kp_u_init_module); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_kp_u_init_module); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 227, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwes2.pyx":228 * if debug & DEBUG_MSGEXT: * print('init module:', __name__) * print(' from package:', __package__) # <<<<<<<<<<<<<< * print(' compiled:', __compiled) * print(' GL-type: es2') #px+ */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_package); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 228, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 228, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_kp_u_from_package); __Pyx_GIVEREF(__pyx_kp_u_from_package); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_kp_u_from_package); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 228, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwes2.pyx":229 * print('init module:', __name__) * print(' from package:', __package__) * print(' compiled:', __compiled) # <<<<<<<<<<<<<< * print(' GL-type: es2') #px+ * print(' OFFSCREEN:', OFFSCREEN) */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_compiled_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 229, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 229, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_kp_u_compiled); __Pyx_GIVEREF(__pyx_kp_u_compiled); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_kp_u_compiled); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 229, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwes2.pyx":230 * print(' from package:', __package__) * print(' compiled:', __compiled) * print(' GL-type: es2') #px+ # <<<<<<<<<<<<<< * print(' OFFSCREEN:', OFFSCREEN) * */ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_tuple_, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 230, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwes2.pyx":231 * print(' compiled:', __compiled) * print(' GL-type: es2') #px+ * print(' OFFSCREEN:', OFFSCREEN) # <<<<<<<<<<<<<< * * renderdata.renderer = NULL */ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_tuple__2, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 231, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwes2.pyx":226 * qtui.init_module() * ##pxm>IF_END * if debug & DEBUG_MSGEXT: # <<<<<<<<<<<<<< * print('init module:', __name__) * print(' from package:', __package__) */ } /* "_qt_qtwes2.pyx":233 * print(' OFFSCREEN:', OFFSCREEN) * * renderdata.renderer = NULL # <<<<<<<<<<<<<< * uidata.atlas_changed = False * uidata.pick_requested = False */ __pyx_v_10_qt_qtwes2_renderdata.renderer = NULL; /* "_qt_qtwes2.pyx":234 * * renderdata.renderer = NULL * uidata.atlas_changed = False # <<<<<<<<<<<<<< * uidata.pick_requested = False * uidata.filesystemwatcher = NULL */ __pyx_v_10_qt_qtwes2_uidata.atlas_changed = 0; /* "_qt_qtwes2.pyx":235 * renderdata.renderer = NULL * uidata.atlas_changed = False * uidata.pick_requested = False # <<<<<<<<<<<<<< * uidata.filesystemwatcher = NULL * uidata.width = 0 */ __pyx_v_10_qt_qtwes2_uidata.pick_requested = 0; /* "_qt_qtwes2.pyx":236 * uidata.atlas_changed = False * uidata.pick_requested = False * uidata.filesystemwatcher = NULL # <<<<<<<<<<<<<< * uidata.width = 0 * uidata.height = 0 */ __pyx_v_10_qt_qtwes2_uidata.filesystemwatcher = NULL; /* "_qt_qtwes2.pyx":237 * uidata.pick_requested = False * uidata.filesystemwatcher = NULL * uidata.width = 0 # <<<<<<<<<<<<<< * uidata.height = 0 * uidata.gl_y = 0 */ __pyx_v_10_qt_qtwes2_uidata.width = 0; /* "_qt_qtwes2.pyx":238 * uidata.filesystemwatcher = NULL * uidata.width = 0 * uidata.height = 0 # <<<<<<<<<<<<<< * uidata.gl_y = 0 * ##pxm>IF 'qtw' == 'qtw' */ __pyx_v_10_qt_qtwes2_uidata.height = 0; /* "_qt_qtwes2.pyx":239 * uidata.width = 0 * uidata.height = 0 * uidata.gl_y = 0 # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * uidata.help = NULL */ __pyx_v_10_qt_qtwes2_uidata.gl_y = 0; /* "_qt_qtwes2.pyx":241 * uidata.gl_y = 0 * ##pxm>IF 'qtw' == 'qtw' * uidata.help = NULL # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtq' * #~ uidata.model_pagevisible = False */ __pyx_v_10_qt_qtwes2_uidata.help = NULL; /* "_qt_qtwes2.pyx":222 * * ##pxm-FUNC P * cdef void init_module(): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * qtui.init_module() */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_WriteUnraisable("_qt_qtwes2.init_module", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); } /* "_qt_qtwes2.pyx":251 * * ##pxm-FUNC P * cdef q2str(const QString &qstr): # <<<<<<<<<<<<<< * cdef QByteArray data = qstr.toUtf8() #px+ * return data.data()[:data.size()].decode('utf-8') #px+ */ static PyObject *__pyx_f_10_qt_qtwes2_q2str(QString const &__pyx_v_qstr) { QByteArray __pyx_v_data; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("q2str", 0); /* "_qt_qtwes2.pyx":252 * ##pxm-FUNC P * cdef q2str(const QString &qstr): * cdef QByteArray data = qstr.toUtf8() #px+ # <<<<<<<<<<<<<< * return data.data()[:data.size()].decode('utf-8') #px+ * ##pxm-FUNC P */ __pyx_v_data = __pyx_v_qstr.toUtf8(); /* "_qt_qtwes2.pyx":253 * cdef q2str(const QString &qstr): * cdef QByteArray data = qstr.toUtf8() #px+ * return data.data()[:data.size()].decode('utf-8') #px+ # <<<<<<<<<<<<<< * ##pxm-FUNC P * cdef QString str2q(pstr): */ __Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_decode_c_string(__pyx_v_data.data(), 0, __pyx_v_data.size(), NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 253, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; /* "_qt_qtwes2.pyx":251 * * ##pxm-FUNC P * cdef q2str(const QString &qstr): # <<<<<<<<<<<<<< * cdef QByteArray data = qstr.toUtf8() #px+ * return data.data()[:data.size()].decode('utf-8') #px+ */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("_qt_qtwes2.q2str", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwes2.pyx":255 * return data.data()[:data.size()].decode('utf-8') #px+ * ##pxm-FUNC P * cdef QString str2q(pstr): # <<<<<<<<<<<<<< * data = pstr.encode('utf-8') #px+ * return fromUtf8(data, len(data)) #px+ */ static QString __pyx_f_10_qt_qtwes2_str2q(PyObject *__pyx_v_pstr) { PyObject *__pyx_v_data = NULL; QString __pyx_r; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; char *__pyx_t_3; Py_ssize_t __pyx_t_4; __Pyx_RefNannySetupContext("str2q", 0); /* "_qt_qtwes2.pyx":256 * ##pxm-FUNC P * cdef QString str2q(pstr): * data = pstr.encode('utf-8') #px+ # <<<<<<<<<<<<<< * return fromUtf8(data, len(data)) #px+ * */ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_pstr, __pyx_n_s_encode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 256, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 256, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_data = __pyx_t_2; __pyx_t_2 = 0; /* "_qt_qtwes2.pyx":257 * cdef QString str2q(pstr): * data = pstr.encode('utf-8') #px+ * return fromUtf8(data, len(data)) #px+ # <<<<<<<<<<<<<< * * cdef QVariantList _list2q(value): #px+ */ __pyx_t_3 = __Pyx_PyObject_AsString(__pyx_v_data); if (unlikely((!__pyx_t_3) && PyErr_Occurred())) __PYX_ERR(0, 257, __pyx_L1_error) __pyx_t_4 = PyObject_Length(__pyx_v_data); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(0, 257, __pyx_L1_error) __pyx_r = QString::fromUtf8(((char *)__pyx_t_3), __pyx_t_4); goto __pyx_L0; /* "_qt_qtwes2.pyx":255 * return data.data()[:data.size()].decode('utf-8') #px+ * ##pxm-FUNC P * cdef QString str2q(pstr): # <<<<<<<<<<<<<< * data = pstr.encode('utf-8') #px+ * return fromUtf8(data, len(data)) #px+ */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_WriteUnraisable("_qt_qtwes2.str2q", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_XDECREF(__pyx_v_data); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwes2.pyx":259 * return fromUtf8(data, len(data)) #px+ * * cdef QVariantList _list2q(value): #px+ # <<<<<<<<<<<<<< * cdef QVariantList qlist #px+ * cdef QVariant qvalue #px+ */ static QList __pyx_f_10_qt_qtwes2__list2q(PyObject *__pyx_v_value) { QList __pyx_v_qlist; QVariant __pyx_v_qvalue; int __pyx_v_i; QList __pyx_r; __Pyx_RefNannyDeclarations Py_ssize_t __pyx_t_1; int __pyx_t_2; PyObject *__pyx_t_3 = NULL; __Pyx_RefNannySetupContext("_list2q", 0); /* "_qt_qtwes2.pyx":263 * cdef QVariant qvalue #px+ * cdef int i #px+ * qlist.reserve(len(value)) #px+ # <<<<<<<<<<<<<< * for i in range(len(value)): #px+ * qvalue = tovariant(value[i]) #px+ */ __pyx_t_1 = PyObject_Length(__pyx_v_value); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(0, 263, __pyx_L1_error) __pyx_v_qlist.reserve(__pyx_t_1); /* "_qt_qtwes2.pyx":264 * cdef int i #px+ * qlist.reserve(len(value)) #px+ * for i in range(len(value)): #px+ # <<<<<<<<<<<<<< * qvalue = tovariant(value[i]) #px+ * qlist.append(qvalue) #px+ */ __pyx_t_1 = PyObject_Length(__pyx_v_value); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(0, 264, __pyx_L1_error) for (__pyx_t_2 = 0; __pyx_t_2 < __pyx_t_1; __pyx_t_2+=1) { __pyx_v_i = __pyx_t_2; /* "_qt_qtwes2.pyx":265 * qlist.reserve(len(value)) #px+ * for i in range(len(value)): #px+ * qvalue = tovariant(value[i]) #px+ # <<<<<<<<<<<<<< * qlist.append(qvalue) #px+ * return qlist #px+ */ __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_value, __pyx_v_i, int, 1, __Pyx_PyInt_From_int, 0, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 265, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_v_qvalue = __pyx_f_10_qt_qtwes2_tovariant(__pyx_t_3); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "_qt_qtwes2.pyx":266 * for i in range(len(value)): #px+ * qvalue = tovariant(value[i]) #px+ * qlist.append(qvalue) #px+ # <<<<<<<<<<<<<< * return qlist #px+ * */ __pyx_v_qlist.append(__pyx_v_qvalue); } /* "_qt_qtwes2.pyx":267 * qvalue = tovariant(value[i]) #px+ * qlist.append(qvalue) #px+ * return qlist #px+ # <<<<<<<<<<<<<< * * ##pxm-FUNC P */ __pyx_r = __pyx_v_qlist; goto __pyx_L0; /* "_qt_qtwes2.pyx":259 * return fromUtf8(data, len(data)) #px+ * * cdef QVariantList _list2q(value): #px+ # <<<<<<<<<<<<<< * cdef QVariantList qlist #px+ * cdef QVariant qvalue #px+ */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_3); __Pyx_WriteUnraisable("_qt_qtwes2._list2q", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwes2.pyx":270 * * ##pxm-FUNC P * cdef QVariant tovariant(value): # <<<<<<<<<<<<<< * cdef QVariant qvalue #px/ * #qvalue = list(value) if type(value) == tuple else value */ static QVariant __pyx_f_10_qt_qtwes2_tovariant(PyObject *__pyx_v_value) { QVariant __pyx_v_qvalue; QVariant __pyx_r; __Pyx_RefNannyDeclarations int __pyx_t_1; int __pyx_t_2; bool __pyx_t_3; int __pyx_t_4; double __pyx_t_5; int __pyx_t_6; PyObject *__pyx_t_7 = NULL; PyObject *__pyx_t_8 = NULL; __Pyx_RefNannySetupContext("tovariant", 0); /* "_qt_qtwes2.pyx":273 * cdef QVariant qvalue #px/ * #qvalue = list(value) if type(value) == tuple else value * if type(value) is bool: #px+ # <<<<<<<<<<<<<< * qvalue.setValue[cbool](value) #px+ * elif type(value) is int: #px+ */ __pyx_t_1 = (((PyObject *)Py_TYPE(__pyx_v_value)) == ((PyObject*)&PyBool_Type)); __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { /* "_qt_qtwes2.pyx":274 * #qvalue = list(value) if type(value) == tuple else value * if type(value) is bool: #px+ * qvalue.setValue[cbool](value) #px+ # <<<<<<<<<<<<<< * elif type(value) is int: #px+ * qvalue.setValue[int](value) #px+ */ __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_value); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(0, 274, __pyx_L1_error) __pyx_v_qvalue.setValue(__pyx_t_3); /* "_qt_qtwes2.pyx":273 * cdef QVariant qvalue #px/ * #qvalue = list(value) if type(value) == tuple else value * if type(value) is bool: #px+ # <<<<<<<<<<<<<< * qvalue.setValue[cbool](value) #px+ * elif type(value) is int: #px+ */ goto __pyx_L3; } /* "_qt_qtwes2.pyx":275 * if type(value) is bool: #px+ * qvalue.setValue[cbool](value) #px+ * elif type(value) is int: #px+ # <<<<<<<<<<<<<< * qvalue.setValue[int](value) #px+ * elif type(value) is float: #px+ */ __pyx_t_2 = (((PyObject *)Py_TYPE(__pyx_v_value)) == ((PyObject *)(&PyInt_Type))); __pyx_t_1 = (__pyx_t_2 != 0); if (__pyx_t_1) { /* "_qt_qtwes2.pyx":276 * qvalue.setValue[cbool](value) #px+ * elif type(value) is int: #px+ * qvalue.setValue[int](value) #px+ # <<<<<<<<<<<<<< * elif type(value) is float: #px+ * qvalue.setValue[double](value) #px+ */ __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 276, __pyx_L1_error) __pyx_v_qvalue.setValue(__pyx_t_4); /* "_qt_qtwes2.pyx":275 * if type(value) is bool: #px+ * qvalue.setValue[cbool](value) #px+ * elif type(value) is int: #px+ # <<<<<<<<<<<<<< * qvalue.setValue[int](value) #px+ * elif type(value) is float: #px+ */ goto __pyx_L3; } /* "_qt_qtwes2.pyx":277 * elif type(value) is int: #px+ * qvalue.setValue[int](value) #px+ * elif type(value) is float: #px+ # <<<<<<<<<<<<<< * qvalue.setValue[double](value) #px+ * elif type(value) is str: #px+ */ __pyx_t_1 = (((PyObject *)Py_TYPE(__pyx_v_value)) == ((PyObject *)(&PyFloat_Type))); __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { /* "_qt_qtwes2.pyx":278 * qvalue.setValue[int](value) #px+ * elif type(value) is float: #px+ * qvalue.setValue[double](value) #px+ # <<<<<<<<<<<<<< * elif type(value) is str: #px+ * qvalue.setValue[QString](str2q(value)) #px+ */ __pyx_t_5 = __pyx_PyFloat_AsDouble(__pyx_v_value); if (unlikely((__pyx_t_5 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 278, __pyx_L1_error) __pyx_v_qvalue.setValue(__pyx_t_5); /* "_qt_qtwes2.pyx":277 * elif type(value) is int: #px+ * qvalue.setValue[int](value) #px+ * elif type(value) is float: #px+ # <<<<<<<<<<<<<< * qvalue.setValue[double](value) #px+ * elif type(value) is str: #px+ */ goto __pyx_L3; } /* "_qt_qtwes2.pyx":279 * elif type(value) is float: #px+ * qvalue.setValue[double](value) #px+ * elif type(value) is str: #px+ # <<<<<<<<<<<<<< * qvalue.setValue[QString](str2q(value)) #px+ * elif type(value) is list or type(value) is tuple: #px+ */ __pyx_t_2 = (((PyObject *)Py_TYPE(__pyx_v_value)) == ((PyObject *)(&PyUnicode_Type))); __pyx_t_1 = (__pyx_t_2 != 0); if (__pyx_t_1) { /* "_qt_qtwes2.pyx":280 * qvalue.setValue[double](value) #px+ * elif type(value) is str: #px+ * qvalue.setValue[QString](str2q(value)) #px+ # <<<<<<<<<<<<<< * elif type(value) is list or type(value) is tuple: #px+ * qvalue.setValue[QVariantList](_list2q(value)) #px+ */ __pyx_v_qvalue.setValue(__pyx_f_10_qt_qtwes2_str2q(__pyx_v_value)); /* "_qt_qtwes2.pyx":279 * elif type(value) is float: #px+ * qvalue.setValue[double](value) #px+ * elif type(value) is str: #px+ # <<<<<<<<<<<<<< * qvalue.setValue[QString](str2q(value)) #px+ * elif type(value) is list or type(value) is tuple: #px+ */ goto __pyx_L3; } /* "_qt_qtwes2.pyx":281 * elif type(value) is str: #px+ * qvalue.setValue[QString](str2q(value)) #px+ * elif type(value) is list or type(value) is tuple: #px+ # <<<<<<<<<<<<<< * qvalue.setValue[QVariantList](_list2q(value)) #px+ * else: #px+ */ __pyx_t_2 = (((PyObject *)Py_TYPE(__pyx_v_value)) == ((PyObject *)(&PyList_Type))); __pyx_t_6 = (__pyx_t_2 != 0); if (!__pyx_t_6) { } else { __pyx_t_1 = __pyx_t_6; goto __pyx_L4_bool_binop_done; } __pyx_t_6 = (((PyObject *)Py_TYPE(__pyx_v_value)) == ((PyObject *)(&PyTuple_Type))); __pyx_t_2 = (__pyx_t_6 != 0); __pyx_t_1 = __pyx_t_2; __pyx_L4_bool_binop_done:; if (__pyx_t_1) { /* "_qt_qtwes2.pyx":282 * qvalue.setValue[QString](str2q(value)) #px+ * elif type(value) is list or type(value) is tuple: #px+ * qvalue.setValue[QVariantList](_list2q(value)) #px+ # <<<<<<<<<<<<<< * else: #px+ * print('value has wrong typ ' + repr(type(value))) #px+ */ __pyx_v_qvalue.setValue >(__pyx_f_10_qt_qtwes2__list2q(__pyx_v_value)); /* "_qt_qtwes2.pyx":281 * elif type(value) is str: #px+ * qvalue.setValue[QString](str2q(value)) #px+ * elif type(value) is list or type(value) is tuple: #px+ # <<<<<<<<<<<<<< * qvalue.setValue[QVariantList](_list2q(value)) #px+ * else: #px+ */ goto __pyx_L3; } /* "_qt_qtwes2.pyx":284 * qvalue.setValue[QVariantList](_list2q(value)) #px+ * else: #px+ * print('value has wrong typ ' + repr(type(value))) #px+ # <<<<<<<<<<<<<< * return qvalue * */ /*else*/ { __pyx_t_7 = PyObject_Repr(((PyObject *)Py_TYPE(__pyx_v_value))); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 284, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_8 = __Pyx_PyUnicode_ConcatSafe(__pyx_kp_u_value_has_wrong_typ, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 284, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 284, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_7, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 284, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } __pyx_L3:; /* "_qt_qtwes2.pyx":285 * else: #px+ * print('value has wrong typ ' + repr(type(value))) #px+ * return qvalue # <<<<<<<<<<<<<< * * cdef _q2list(const QVariantList &ql): #px+ */ __pyx_r = __pyx_v_qvalue; goto __pyx_L0; /* "_qt_qtwes2.pyx":270 * * ##pxm-FUNC P * cdef QVariant tovariant(value): # <<<<<<<<<<<<<< * cdef QVariant qvalue #px/ * #qvalue = list(value) if type(value) == tuple else value */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_8); __Pyx_WriteUnraisable("_qt_qtwes2.tovariant", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwes2.pyx":287 * return qvalue * * cdef _q2list(const QVariantList &ql): #px+ # <<<<<<<<<<<<<< * return [fromvariant(ql.at(i)) for i in range(ql.size())] #px+ * cdef _qs2list(const QStringList &ql): #px+ */ static PyObject *__pyx_f_10_qt_qtwes2__q2list(QList const &__pyx_v_ql) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_t_2; int __pyx_t_3; PyObject *__pyx_t_4 = NULL; __Pyx_RefNannySetupContext("_q2list", 0); /* "_qt_qtwes2.pyx":288 * * cdef _q2list(const QVariantList &ql): #px+ * return [fromvariant(ql.at(i)) for i in range(ql.size())] #px+ # <<<<<<<<<<<<<< * cdef _qs2list(const QStringList &ql): #px+ * return [q2str(ql[i]) for i in range(ql.size())] #px+ */ __Pyx_XDECREF(__pyx_r); { /* enter inner scope */ int __pyx_7genexpr__pyx_v_i; __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 288, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __pyx_v_ql.size(); for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) { __pyx_7genexpr__pyx_v_i = __pyx_t_3; __pyx_t_4 = __pyx_f_10_qt_qtwes2_fromvariant(__pyx_v_ql.at(__pyx_7genexpr__pyx_v_i)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 288, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_4))) __PYX_ERR(0, 288, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } } /* exit inner scope */ __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; /* "_qt_qtwes2.pyx":287 * return qvalue * * cdef _q2list(const QVariantList &ql): #px+ # <<<<<<<<<<<<<< * return [fromvariant(ql.at(i)) for i in range(ql.size())] #px+ * cdef _qs2list(const QStringList &ql): #px+ */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("_qt_qtwes2._q2list", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwes2.pyx":289 * cdef _q2list(const QVariantList &ql): #px+ * return [fromvariant(ql.at(i)) for i in range(ql.size())] #px+ * cdef _qs2list(const QStringList &ql): #px+ # <<<<<<<<<<<<<< * return [q2str(ql[i]) for i in range(ql.size())] #px+ * cdef _q2dict(const QVariantMap &qm): #px+ */ static PyObject *__pyx_f_10_qt_qtwes2__qs2list(QStringList const &__pyx_v_ql) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_t_2; int __pyx_t_3; PyObject *__pyx_t_4 = NULL; __Pyx_RefNannySetupContext("_qs2list", 0); /* "_qt_qtwes2.pyx":290 * return [fromvariant(ql.at(i)) for i in range(ql.size())] #px+ * cdef _qs2list(const QStringList &ql): #px+ * return [q2str(ql[i]) for i in range(ql.size())] #px+ # <<<<<<<<<<<<<< * cdef _q2dict(const QVariantMap &qm): #px+ * cdef QStringList qkeys = qm.keys() #px+ */ __Pyx_XDECREF(__pyx_r); { /* enter inner scope */ int __pyx_8genexpr1__pyx_v_i; __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 290, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __pyx_v_ql.size(); for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) { __pyx_8genexpr1__pyx_v_i = __pyx_t_3; __pyx_t_4 = __pyx_f_10_qt_qtwes2_q2str((__pyx_v_ql[__pyx_8genexpr1__pyx_v_i])); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 290, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_4))) __PYX_ERR(0, 290, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } } /* exit inner scope */ __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; /* "_qt_qtwes2.pyx":289 * cdef _q2list(const QVariantList &ql): #px+ * return [fromvariant(ql.at(i)) for i in range(ql.size())] #px+ * cdef _qs2list(const QStringList &ql): #px+ # <<<<<<<<<<<<<< * return [q2str(ql[i]) for i in range(ql.size())] #px+ * cdef _q2dict(const QVariantMap &qm): #px+ */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("_qt_qtwes2._qs2list", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwes2.pyx":291 * cdef _qs2list(const QStringList &ql): #px+ * return [q2str(ql[i]) for i in range(ql.size())] #px+ * cdef _q2dict(const QVariantMap &qm): #px+ # <<<<<<<<<<<<<< * cdef QStringList qkeys = qm.keys() #px+ * cdef QVariantList qvals = qm.values() #px+ */ static PyObject *__pyx_f_10_qt_qtwes2__q2dict(QMap const &__pyx_v_qm) { QStringList __pyx_v_qkeys; QList __pyx_v_qvals; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; Py_ssize_t __pyx_t_5; PyObject *(*__pyx_t_6)(PyObject *); PyObject *__pyx_t_7 = NULL; PyObject *__pyx_t_8 = NULL; PyObject *(*__pyx_t_9)(PyObject *); __Pyx_RefNannySetupContext("_q2dict", 0); /* "_qt_qtwes2.pyx":292 * return [q2str(ql[i]) for i in range(ql.size())] #px+ * cdef _q2dict(const QVariantMap &qm): #px+ * cdef QStringList qkeys = qm.keys() #px+ # <<<<<<<<<<<<<< * cdef QVariantList qvals = qm.values() #px+ * return {k:v for k,v in zip(_qs2list(qkeys), _q2list(qvals))} #px+ */ __pyx_v_qkeys = __pyx_v_qm.keys(); /* "_qt_qtwes2.pyx":293 * cdef _q2dict(const QVariantMap &qm): #px+ * cdef QStringList qkeys = qm.keys() #px+ * cdef QVariantList qvals = qm.values() #px+ # <<<<<<<<<<<<<< * return {k:v for k,v in zip(_qs2list(qkeys), _q2list(qvals))} #px+ * */ __pyx_v_qvals = __pyx_v_qm.values(); /* "_qt_qtwes2.pyx":294 * cdef QStringList qkeys = qm.keys() #px+ * cdef QVariantList qvals = qm.values() #px+ * return {k:v for k,v in zip(_qs2list(qkeys), _q2list(qvals))} #px+ # <<<<<<<<<<<<<< * * ##pxm-FUNC P */ __Pyx_XDECREF(__pyx_r); { /* enter inner scope */ PyObject *__pyx_8genexpr2__pyx_v_k = NULL; PyObject *__pyx_8genexpr2__pyx_v_v = NULL; __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 294, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __pyx_f_10_qt_qtwes2__qs2list(__pyx_v_qkeys); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 294, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __pyx_f_10_qt_qtwes2__q2list(__pyx_v_qvals); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 294, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 294, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_3); __pyx_t_2 = 0; __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_zip, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 294, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) { __pyx_t_4 = __pyx_t_3; __Pyx_INCREF(__pyx_t_4); __pyx_t_5 = 0; __pyx_t_6 = NULL; } else { __pyx_t_5 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 294, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_6 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 294, __pyx_L5_error) } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; for (;;) { if (likely(!__pyx_t_6)) { if (likely(PyList_CheckExact(__pyx_t_4))) { if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_4)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_3 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_3); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 294, __pyx_L5_error) #else __pyx_t_3 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 294, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_3); #endif } else { if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_4)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_3); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 294, __pyx_L5_error) #else __pyx_t_3 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 294, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_3); #endif } } else { __pyx_t_3 = __pyx_t_6(__pyx_t_4); if (unlikely(!__pyx_t_3)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 294, __pyx_L5_error) } break; } __Pyx_GOTREF(__pyx_t_3); } if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) { PyObject* sequence = __pyx_t_3; #if !CYTHON_COMPILING_IN_PYPY Py_ssize_t size = Py_SIZE(sequence); #else Py_ssize_t size = PySequence_Size(sequence); #endif if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 294, __pyx_L5_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_7 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_2 = PyList_GET_ITEM(sequence, 0); __pyx_t_7 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx_t_7); #else __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 294, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 294, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_7); #endif __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { Py_ssize_t index = -1; __pyx_t_8 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 294, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_9 = Py_TYPE(__pyx_t_8)->tp_iternext; index = 0; __pyx_t_2 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_2)) goto __pyx_L8_unpacking_failed; __Pyx_GOTREF(__pyx_t_2); index = 1; __pyx_t_7 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_7)) goto __pyx_L8_unpacking_failed; __Pyx_GOTREF(__pyx_t_7); if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_8), 2) < 0) __PYX_ERR(0, 294, __pyx_L5_error) __pyx_t_9 = NULL; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; goto __pyx_L9_unpacking_done; __pyx_L8_unpacking_failed:; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_9 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 294, __pyx_L5_error) __pyx_L9_unpacking_done:; } __Pyx_XDECREF_SET(__pyx_8genexpr2__pyx_v_k, __pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF_SET(__pyx_8genexpr2__pyx_v_v, __pyx_t_7); __pyx_t_7 = 0; if (unlikely(PyDict_SetItem(__pyx_t_1, (PyObject*)__pyx_8genexpr2__pyx_v_k, (PyObject*)__pyx_8genexpr2__pyx_v_v))) __PYX_ERR(0, 294, __pyx_L5_error) } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_XDECREF(__pyx_8genexpr2__pyx_v_k); __Pyx_XDECREF(__pyx_8genexpr2__pyx_v_v); goto __pyx_L10_exit_scope; __pyx_L5_error:; __Pyx_XDECREF(__pyx_8genexpr2__pyx_v_k); __Pyx_XDECREF(__pyx_8genexpr2__pyx_v_v); goto __pyx_L1_error; __pyx_L10_exit_scope:; } /* exit inner scope */ __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; /* "_qt_qtwes2.pyx":291 * cdef _qs2list(const QStringList &ql): #px+ * return [q2str(ql[i]) for i in range(ql.size())] #px+ * cdef _q2dict(const QVariantMap &qm): #px+ # <<<<<<<<<<<<<< * cdef QStringList qkeys = qm.keys() #px+ * cdef QVariantList qvals = qm.values() #px+ */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_8); __Pyx_AddTraceback("_qt_qtwes2._q2dict", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwes2.pyx":297 * * ##pxm-FUNC P * cdef fromvariant(const QVariant &qvalue): # <<<<<<<<<<<<<< * cdef const char* typename = qvalue.typeName() #px+ * if typename == NULL: #px+ */ static PyObject *__pyx_f_10_qt_qtwes2_fromvariant(QVariant const &__pyx_v_qvalue) { char const *__pyx_v_typename; PyObject *__pyx_v_res = NULL; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; __Pyx_RefNannySetupContext("fromvariant", 0); /* "_qt_qtwes2.pyx":298 * ##pxm-FUNC P * cdef fromvariant(const QVariant &qvalue): * cdef const char* typename = qvalue.typeName() #px+ # <<<<<<<<<<<<<< * if typename == NULL: #px+ * return None #px+ */ __pyx_v_typename = __pyx_v_qvalue.typeName(); /* "_qt_qtwes2.pyx":299 * cdef fromvariant(const QVariant &qvalue): * cdef const char* typename = qvalue.typeName() #px+ * if typename == NULL: #px+ # <<<<<<<<<<<<<< * return None #px+ * if typename == b'bool': #px+ */ __pyx_t_1 = ((__pyx_v_typename == NULL) != 0); if (__pyx_t_1) { /* "_qt_qtwes2.pyx":300 * cdef const char* typename = qvalue.typeName() #px+ * if typename == NULL: #px+ * return None #px+ # <<<<<<<<<<<<<< * if typename == b'bool': #px+ * return qvalue.value[cbool]() #px+ */ __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(Py_None); __pyx_r = Py_None; goto __pyx_L0; /* "_qt_qtwes2.pyx":299 * cdef fromvariant(const QVariant &qvalue): * cdef const char* typename = qvalue.typeName() #px+ * if typename == NULL: #px+ # <<<<<<<<<<<<<< * return None #px+ * if typename == b'bool': #px+ */ } /* "_qt_qtwes2.pyx":301 * if typename == NULL: #px+ * return None #px+ * if typename == b'bool': #px+ # <<<<<<<<<<<<<< * return qvalue.value[cbool]() #px+ * elif typename == b'int': #px+ */ __pyx_t_2 = __Pyx_PyBytes_FromString(__pyx_v_typename); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 301, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = (__Pyx_PyBytes_Equals(__pyx_t_2, __pyx_n_b_bool, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 301, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (__pyx_t_1) { /* "_qt_qtwes2.pyx":302 * return None #px+ * if typename == b'bool': #px+ * return qvalue.value[cbool]() #px+ # <<<<<<<<<<<<<< * elif typename == b'int': #px+ * return qvalue.value[int]() #px+ */ __Pyx_XDECREF(__pyx_r); __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_v_qvalue.value()); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 302, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; /* "_qt_qtwes2.pyx":301 * if typename == NULL: #px+ * return None #px+ * if typename == b'bool': #px+ # <<<<<<<<<<<<<< * return qvalue.value[cbool]() #px+ * elif typename == b'int': #px+ */ } /* "_qt_qtwes2.pyx":303 * if typename == b'bool': #px+ * return qvalue.value[cbool]() #px+ * elif typename == b'int': #px+ # <<<<<<<<<<<<<< * return qvalue.value[int]() #px+ * elif typename == b'double': #px+ */ __pyx_t_2 = __Pyx_PyBytes_FromString(__pyx_v_typename); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 303, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = (__Pyx_PyBytes_Equals(__pyx_t_2, __pyx_n_b_int, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 303, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (__pyx_t_1) { /* "_qt_qtwes2.pyx":304 * return qvalue.value[cbool]() #px+ * elif typename == b'int': #px+ * return qvalue.value[int]() #px+ # <<<<<<<<<<<<<< * elif typename == b'double': #px+ * return qvalue.value[double]() #px+ */ __Pyx_XDECREF(__pyx_r); __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_qvalue.value()); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 304, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; /* "_qt_qtwes2.pyx":303 * if typename == b'bool': #px+ * return qvalue.value[cbool]() #px+ * elif typename == b'int': #px+ # <<<<<<<<<<<<<< * return qvalue.value[int]() #px+ * elif typename == b'double': #px+ */ } /* "_qt_qtwes2.pyx":305 * elif typename == b'int': #px+ * return qvalue.value[int]() #px+ * elif typename == b'double': #px+ # <<<<<<<<<<<<<< * return qvalue.value[double]() #px+ * elif typename == b'QString': #px+ */ __pyx_t_2 = __Pyx_PyBytes_FromString(__pyx_v_typename); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 305, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = (__Pyx_PyBytes_Equals(__pyx_t_2, __pyx_n_b_double, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 305, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (__pyx_t_1) { /* "_qt_qtwes2.pyx":306 * return qvalue.value[int]() #px+ * elif typename == b'double': #px+ * return qvalue.value[double]() #px+ # <<<<<<<<<<<<<< * elif typename == b'QString': #px+ * return q2str(qvalue.value[QString]()) #px+ */ __Pyx_XDECREF(__pyx_r); __pyx_t_2 = PyFloat_FromDouble(__pyx_v_qvalue.value()); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 306, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; /* "_qt_qtwes2.pyx":305 * elif typename == b'int': #px+ * return qvalue.value[int]() #px+ * elif typename == b'double': #px+ # <<<<<<<<<<<<<< * return qvalue.value[double]() #px+ * elif typename == b'QString': #px+ */ } /* "_qt_qtwes2.pyx":307 * elif typename == b'double': #px+ * return qvalue.value[double]() #px+ * elif typename == b'QString': #px+ # <<<<<<<<<<<<<< * return q2str(qvalue.value[QString]()) #px+ * elif typename == b'void*': #px+ */ __pyx_t_2 = __Pyx_PyBytes_FromString(__pyx_v_typename); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 307, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = (__Pyx_PyBytes_Equals(__pyx_t_2, __pyx_n_b_QString, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 307, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (__pyx_t_1) { /* "_qt_qtwes2.pyx":308 * return qvalue.value[double]() #px+ * elif typename == b'QString': #px+ * return q2str(qvalue.value[QString]()) #px+ # <<<<<<<<<<<<<< * elif typename == b'void*': #px+ * res = qvalue.value[int]() #px+ */ __Pyx_XDECREF(__pyx_r); __pyx_t_2 = __pyx_f_10_qt_qtwes2_q2str(__pyx_v_qvalue.value()); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 308, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; /* "_qt_qtwes2.pyx":307 * elif typename == b'double': #px+ * return qvalue.value[double]() #px+ * elif typename == b'QString': #px+ # <<<<<<<<<<<<<< * return q2str(qvalue.value[QString]()) #px+ * elif typename == b'void*': #px+ */ } /* "_qt_qtwes2.pyx":309 * elif typename == b'QString': #px+ * return q2str(qvalue.value[QString]()) #px+ * elif typename == b'void*': #px+ # <<<<<<<<<<<<<< * res = qvalue.value[int]() #px+ * return None if res == 0 else '({})'.format(res) #px+ */ __pyx_t_2 = __Pyx_PyBytes_FromString(__pyx_v_typename); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 309, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = (__Pyx_PyBytes_Equals(__pyx_t_2, __pyx_kp_b_void, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 309, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (__pyx_t_1) { /* "_qt_qtwes2.pyx":310 * return q2str(qvalue.value[QString]()) #px+ * elif typename == b'void*': #px+ * res = qvalue.value[int]() #px+ # <<<<<<<<<<<<<< * return None if res == 0 else '({})'.format(res) #px+ * elif qvalue.canConvert[QVariantMap](): #px+ */ __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_qvalue.value()); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 310, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_v_res = __pyx_t_2; __pyx_t_2 = 0; /* "_qt_qtwes2.pyx":311 * elif typename == b'void*': #px+ * res = qvalue.value[int]() #px+ * return None if res == 0 else '({})'.format(res) #px+ # <<<<<<<<<<<<<< * elif qvalue.canConvert[QVariantMap](): #px+ * return _q2dict(qvalue.value[QVariantMap]()) #px+ */ __Pyx_XDECREF(__pyx_r); __pyx_t_3 = __Pyx_PyInt_EqObjC(__pyx_v_res, __pyx_int_0, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 311, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 311, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (__pyx_t_1) { __Pyx_INCREF(Py_None); __pyx_t_2 = Py_None; } else { __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_void_2, __pyx_n_s_format); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 311, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); } } if (!__pyx_t_5) { __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_res); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 311, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_v_res}; __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 311, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_3); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_v_res}; __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 311, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_3); } else #endif { __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 311, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL; __Pyx_INCREF(__pyx_v_res); __Pyx_GIVEREF(__pyx_v_res); PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_v_res); __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 311, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_2 = __pyx_t_3; __pyx_t_3 = 0; } __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; /* "_qt_qtwes2.pyx":309 * elif typename == b'QString': #px+ * return q2str(qvalue.value[QString]()) #px+ * elif typename == b'void*': #px+ # <<<<<<<<<<<<<< * res = qvalue.value[int]() #px+ * return None if res == 0 else '({})'.format(res) #px+ */ } /* "_qt_qtwes2.pyx":312 * res = qvalue.value[int]() #px+ * return None if res == 0 else '({})'.format(res) #px+ * elif qvalue.canConvert[QVariantMap](): #px+ # <<<<<<<<<<<<<< * return _q2dict(qvalue.value[QVariantMap]()) #px+ * elif qvalue.canConvert[QVariantList](): #px+ */ __pyx_t_1 = (__pyx_v_qvalue.canConvert >() != 0); if (__pyx_t_1) { /* "_qt_qtwes2.pyx":313 * return None if res == 0 else '({})'.format(res) #px+ * elif qvalue.canConvert[QVariantMap](): #px+ * return _q2dict(qvalue.value[QVariantMap]()) #px+ # <<<<<<<<<<<<<< * elif qvalue.canConvert[QVariantList](): #px+ * return _q2list(qvalue.value[QVariantList]()) #px+ */ __Pyx_XDECREF(__pyx_r); __pyx_t_2 = __pyx_f_10_qt_qtwes2__q2dict(__pyx_v_qvalue.value >()); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 313, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; /* "_qt_qtwes2.pyx":312 * res = qvalue.value[int]() #px+ * return None if res == 0 else '({})'.format(res) #px+ * elif qvalue.canConvert[QVariantMap](): #px+ # <<<<<<<<<<<<<< * return _q2dict(qvalue.value[QVariantMap]()) #px+ * elif qvalue.canConvert[QVariantList](): #px+ */ } /* "_qt_qtwes2.pyx":314 * elif qvalue.canConvert[QVariantMap](): #px+ * return _q2dict(qvalue.value[QVariantMap]()) #px+ * elif qvalue.canConvert[QVariantList](): #px+ # <<<<<<<<<<<<<< * return _q2list(qvalue.value[QVariantList]()) #px+ * elif qvalue.canConvert[pQObject](): #px+ */ __pyx_t_1 = (__pyx_v_qvalue.canConvert >() != 0); if (__pyx_t_1) { /* "_qt_qtwes2.pyx":315 * return _q2dict(qvalue.value[QVariantMap]()) #px+ * elif qvalue.canConvert[QVariantList](): #px+ * return _q2list(qvalue.value[QVariantList]()) #px+ # <<<<<<<<<<<<<< * elif qvalue.canConvert[pQObject](): #px+ * return 'QObject({})'.format(q2str(qvalue.value[pQObject]().objectName())) #px+ */ __Pyx_XDECREF(__pyx_r); __pyx_t_2 = __pyx_f_10_qt_qtwes2__q2list(__pyx_v_qvalue.value >()); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 315, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; /* "_qt_qtwes2.pyx":314 * elif qvalue.canConvert[QVariantMap](): #px+ * return _q2dict(qvalue.value[QVariantMap]()) #px+ * elif qvalue.canConvert[QVariantList](): #px+ # <<<<<<<<<<<<<< * return _q2list(qvalue.value[QVariantList]()) #px+ * elif qvalue.canConvert[pQObject](): #px+ */ } /* "_qt_qtwes2.pyx":316 * elif qvalue.canConvert[QVariantList](): #px+ * return _q2list(qvalue.value[QVariantList]()) #px+ * elif qvalue.canConvert[pQObject](): #px+ # <<<<<<<<<<<<<< * return 'QObject({})'.format(q2str(qvalue.value[pQObject]().objectName())) #px+ * else: #px+ */ __pyx_t_1 = (__pyx_v_qvalue.canConvert<__pyx_t_10_qt_qtwes2_pQObject>() != 0); if (__pyx_t_1) { /* "_qt_qtwes2.pyx":317 * return _q2list(qvalue.value[QVariantList]()) #px+ * elif qvalue.canConvert[pQObject](): #px+ * return 'QObject({})'.format(q2str(qvalue.value[pQObject]().objectName())) #px+ # <<<<<<<<<<<<<< * else: #px+ * warn(RuntimeWarning('unknown typename %s' % typename[:])) #px+ */ __Pyx_XDECREF(__pyx_r); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_QObject, __pyx_n_s_format); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 317, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __pyx_f_10_qt_qtwes2_q2str(__pyx_v_qvalue.value<__pyx_t_10_qt_qtwes2_pQObject>()->objectName()); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 317, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_6 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } if (!__pyx_t_6) { __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 317, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_2); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_4}; __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 317, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_4}; __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 317, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 317, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6); __pyx_t_6 = NULL; __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_4); __pyx_t_4 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 317, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; /* "_qt_qtwes2.pyx":316 * elif qvalue.canConvert[QVariantList](): #px+ * return _q2list(qvalue.value[QVariantList]()) #px+ * elif qvalue.canConvert[pQObject](): #px+ # <<<<<<<<<<<<<< * return 'QObject({})'.format(q2str(qvalue.value[pQObject]().objectName())) #px+ * else: #px+ */ } /* "_qt_qtwes2.pyx":319 * return 'QObject({})'.format(q2str(qvalue.value[pQObject]().objectName())) #px+ * else: #px+ * warn(RuntimeWarning('unknown typename %s' % typename[:])) #px+ # <<<<<<<<<<<<<< * return None #px+ * */ /*else*/ { __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_warn); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 319, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = __Pyx_PyBytes_FromString(__pyx_v_typename + 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 319, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_4 = PyUnicode_Format(__pyx_kp_u_unknown_typename_s, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 319, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 319, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeWarning, __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 319, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } if (!__pyx_t_5) { __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 319, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_2); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_4}; __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 319, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_4}; __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 319, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 319, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL; __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_4); __pyx_t_4 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 319, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwes2.pyx":320 * else: #px+ * warn(RuntimeWarning('unknown typename %s' % typename[:])) #px+ * return None #px+ # <<<<<<<<<<<<<< * * */ __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(Py_None); __pyx_r = Py_None; goto __pyx_L0; } /* "_qt_qtwes2.pyx":297 * * ##pxm-FUNC P * cdef fromvariant(const QVariant &qvalue): # <<<<<<<<<<<<<< * cdef const char* typename = qvalue.typeName() #px+ * if typename == NULL: #px+ */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_AddTraceback("_qt_qtwes2.fromvariant", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XDECREF(__pyx_v_res); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwes2.pyx":339 * ##pxh> * ##pxm-FUNC PH nogil * void on_beforeRendering() nogil: # <<<<<<<<<<<<<< * if not renderdata.initialized: * glarea.gl_init() */ void Renderer::on_beforeRendering(void) { int __pyx_t_1; /* "_qt_qtwes2.pyx":340 * ##pxm-FUNC PH nogil * void on_beforeRendering() nogil: * if not renderdata.initialized: # <<<<<<<<<<<<<< * glarea.gl_init() * IF OFFSCREEN: #px+ */ __pyx_t_1 = ((!(__pyx_v_10_qt_qtwes2_renderdata.initialized != 0)) != 0); if (__pyx_t_1) { /* "_qt_qtwes2.pyx":341 * void on_beforeRendering() nogil: * if not renderdata.initialized: * glarea.gl_init() # <<<<<<<<<<<<<< * IF OFFSCREEN: #px+ * render_offscreen_init() #px+ */ __pyx_f_11_glarea_es2_gl_init(); /* "_qt_qtwes2.pyx":344 * IF OFFSCREEN: #px+ * render_offscreen_init() #px+ * renderdata.initialized = True # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * IF OFFSCREEN: #px+ */ __pyx_v_10_qt_qtwes2_renderdata.initialized = 1; /* "_qt_qtwes2.pyx":340 * ##pxm-FUNC PH nogil * void on_beforeRendering() nogil: * if not renderdata.initialized: # <<<<<<<<<<<<<< * glarea.gl_init() * IF OFFSCREEN: #px+ */ } /* "_qt_qtwes2.pyx":349 * renderdata.offscreenbuffer.bind() #px+ * ##pxm>IF_END * if renderdata.atlas_changed: # <<<<<<<<<<<<<< * render_update_atlas() * renderdata.atlas_changed = False */ __pyx_t_1 = (__pyx_v_10_qt_qtwes2_renderdata.atlas_changed != 0); if (__pyx_t_1) { /* "_qt_qtwes2.pyx":350 * ##pxm>IF_END * if renderdata.atlas_changed: * render_update_atlas() # <<<<<<<<<<<<<< * renderdata.atlas_changed = False * else: */ __pyx_f_10_qt_qtwes2_render_update_atlas(); /* "_qt_qtwes2.pyx":351 * if renderdata.atlas_changed: * render_update_atlas() * renderdata.atlas_changed = False # <<<<<<<<<<<<<< * else: * renderdata.texture.bind() */ __pyx_v_10_qt_qtwes2_renderdata.atlas_changed = 0; /* "_qt_qtwes2.pyx":349 * renderdata.offscreenbuffer.bind() #px+ * ##pxm>IF_END * if renderdata.atlas_changed: # <<<<<<<<<<<<<< * render_update_atlas() * renderdata.atlas_changed = False */ goto __pyx_L4; } /* "_qt_qtwes2.pyx":353 * renderdata.atlas_changed = False * else: * renderdata.texture.bind() # <<<<<<<<<<<<<< * glarea.gl_render() * renderdata.texture.release() */ /*else*/ { __pyx_v_10_qt_qtwes2_renderdata.texture->bind(); } __pyx_L4:; /* "_qt_qtwes2.pyx":354 * else: * renderdata.texture.bind() * glarea.gl_render() # <<<<<<<<<<<<<< * renderdata.texture.release() * if debug & DEBUG_DRAW: */ __pyx_f_11_glarea_es2_gl_render(); /* "_qt_qtwes2.pyx":355 * renderdata.texture.bind() * glarea.gl_render() * renderdata.texture.release() # <<<<<<<<<<<<<< * if debug & DEBUG_DRAW: * glarea.gl_render_select_debug() */ __pyx_v_10_qt_qtwes2_renderdata.texture->release(); /* "_qt_qtwes2.pyx":356 * glarea.gl_render() * renderdata.texture.release() * if debug & DEBUG_DRAW: # <<<<<<<<<<<<<< * glarea.gl_render_select_debug() * if debug & DEBUG_FPS: */ __pyx_t_1 = ((__pyx_v_10_qt_qtwes2_debug & __pyx_e_10_qt_qtwes2_DEBUG_DRAW) != 0); if (__pyx_t_1) { /* "_qt_qtwes2.pyx":357 * renderdata.texture.release() * if debug & DEBUG_DRAW: * glarea.gl_render_select_debug() # <<<<<<<<<<<<<< * if debug & DEBUG_FPS: * render_fps() */ __pyx_f_11_glarea_es2_gl_render_select_debug(); /* "_qt_qtwes2.pyx":356 * glarea.gl_render() * renderdata.texture.release() * if debug & DEBUG_DRAW: # <<<<<<<<<<<<<< * glarea.gl_render_select_debug() * if debug & DEBUG_FPS: */ } /* "_qt_qtwes2.pyx":358 * if debug & DEBUG_DRAW: * glarea.gl_render_select_debug() * if debug & DEBUG_FPS: # <<<<<<<<<<<<<< * render_fps() * if renderdata.pickxy_changed: */ __pyx_t_1 = ((__pyx_v_10_qt_qtwes2_debug & __pyx_e_10_qt_qtwes2_DEBUG_FPS) != 0); if (__pyx_t_1) { /* "_qt_qtwes2.pyx":359 * glarea.gl_render_select_debug() * if debug & DEBUG_FPS: * render_fps() # <<<<<<<<<<<<<< * if renderdata.pickxy_changed: * render_pick() */ __pyx_f_10_qt_qtwes2_render_fps(); /* "_qt_qtwes2.pyx":358 * if debug & DEBUG_DRAW: * glarea.gl_render_select_debug() * if debug & DEBUG_FPS: # <<<<<<<<<<<<<< * render_fps() * if renderdata.pickxy_changed: */ } /* "_qt_qtwes2.pyx":360 * if debug & DEBUG_FPS: * render_fps() * if renderdata.pickxy_changed: # <<<<<<<<<<<<<< * render_pick() * renderdata.pickxy_changed = False */ __pyx_t_1 = (__pyx_v_10_qt_qtwes2_renderdata.pickxy_changed != 0); if (__pyx_t_1) { /* "_qt_qtwes2.pyx":361 * render_fps() * if renderdata.pickxy_changed: * render_pick() # <<<<<<<<<<<<<< * renderdata.pickxy_changed = False * IF OFFSCREEN: #px+ */ __pyx_f_10_qt_qtwes2_render_pick(); /* "_qt_qtwes2.pyx":362 * if renderdata.pickxy_changed: * render_pick() * renderdata.pickxy_changed = False # <<<<<<<<<<<<<< * IF OFFSCREEN: #px+ * this.offscreen_image(renderdata.offscreenbuffer.toImage()) #px+ */ __pyx_v_10_qt_qtwes2_renderdata.pickxy_changed = 0; /* "_qt_qtwes2.pyx":360 * if debug & DEBUG_FPS: * render_fps() * if renderdata.pickxy_changed: # <<<<<<<<<<<<<< * render_pick() * renderdata.pickxy_changed = False */ } /* "_qt_qtwes2.pyx":339 * ##pxh> * ##pxm-FUNC PH nogil * void on_beforeRendering() nogil: # <<<<<<<<<<<<<< * if not renderdata.initialized: * glarea.gl_init() */ /* function exit code */ } /* "_qt_qtwes2.pyx":366 * this.offscreen_image(renderdata.offscreenbuffer.toImage()) #px+ * ##pxm-FUNC PHD nogil * void on_messageLogged(const QOpenGLDebugMessage &msg) nogil: # <<<<<<<<<<<<<< * printf('GL%05x: %s\n', msg.id(), msg.message().toUtf8().data()) #px/ * #printf('GL%05x: %s\n', msg.id(), msg.message()) */ void Renderer::on_messageLogged(QOpenGLDebugMessage const &__pyx_v_msg) { /* "_qt_qtwes2.pyx":367 * ##pxm-FUNC PHD nogil * void on_messageLogged(const QOpenGLDebugMessage &msg) nogil: * printf('GL%05x: %s\n', msg.id(), msg.message().toUtf8().data()) #px/ # <<<<<<<<<<<<<< * #printf('GL%05x: %s\n', msg.id(), msg.message()) * ##pxh> */ printf(((char const *)"GL%05x: %s\n"), __pyx_v_msg.id(), __pyx_v_msg.message().toUtf8().data()); /* "_qt_qtwes2.pyx":366 * this.offscreen_image(renderdata.offscreenbuffer.toImage()) #px+ * ##pxm-FUNC PHD nogil * void on_messageLogged(const QOpenGLDebugMessage &msg) nogil: # <<<<<<<<<<<<<< * printf('GL%05x: %s\n', msg.id(), msg.message().toUtf8().data()) #px/ * #printf('GL%05x: %s\n', msg.id(), msg.message()) */ /* function exit code */ } /* "_qt_qtwes2.pyx":384 * * ##pxm-FUNC P nogil * cdef void render_update_atlas() nogil: # <<<<<<<<<<<<<< * render_destroy_texture() * renderdata.texture = new QOpenGLTexture(Target2D) #px/ */ static void __pyx_f_10_qt_qtwes2_render_update_atlas(void) { /* "_qt_qtwes2.pyx":385 * ##pxm-FUNC P nogil * cdef void render_update_atlas() nogil: * render_destroy_texture() # <<<<<<<<<<<<<< * renderdata.texture = new QOpenGLTexture(Target2D) #px/ * #renderdata.texture = QOpenGLTexture(Target2D) */ __pyx_f_10_qt_qtwes2_render_destroy_texture(); /* "_qt_qtwes2.pyx":386 * cdef void render_update_atlas() nogil: * render_destroy_texture() * renderdata.texture = new QOpenGLTexture(Target2D) #px/ # <<<<<<<<<<<<<< * #renderdata.texture = QOpenGLTexture(Target2D) * renderdata.texture.setFormat(RGBA32F) */ __pyx_v_10_qt_qtwes2_renderdata.texture = new QOpenGLTexture(QOpenGLTexture::Target2D); /* "_qt_qtwes2.pyx":388 * renderdata.texture = new QOpenGLTexture(Target2D) #px/ * #renderdata.texture = QOpenGLTexture(Target2D) * renderdata.texture.setFormat(RGBA32F) # <<<<<<<<<<<<<< * renderdata.texture.setSize(renderdata.atlas_width, renderdata.atlas_height, 1) * renderdata.texture.setMinMagFilters(Linear, Linear) */ __pyx_v_10_qt_qtwes2_renderdata.texture->setFormat(QOpenGLTexture::RGBA32F); /* "_qt_qtwes2.pyx":389 * #renderdata.texture = QOpenGLTexture(Target2D) * renderdata.texture.setFormat(RGBA32F) * renderdata.texture.setSize(renderdata.atlas_width, renderdata.atlas_height, 1) # <<<<<<<<<<<<<< * renderdata.texture.setMinMagFilters(Linear, Linear) * renderdata.texture.allocateStorage() */ __pyx_v_10_qt_qtwes2_renderdata.texture->setSize(__pyx_v_10_qt_qtwes2_renderdata.atlas_width, __pyx_v_10_qt_qtwes2_renderdata.atlas_height, 1); /* "_qt_qtwes2.pyx":390 * renderdata.texture.setFormat(RGBA32F) * renderdata.texture.setSize(renderdata.atlas_width, renderdata.atlas_height, 1) * renderdata.texture.setMinMagFilters(Linear, Linear) # <<<<<<<<<<<<<< * renderdata.texture.allocateStorage() * renderdata.texture.bind() */ __pyx_v_10_qt_qtwes2_renderdata.texture->setMinMagFilters(QOpenGLTexture::Linear, QOpenGLTexture::Linear); /* "_qt_qtwes2.pyx":391 * renderdata.texture.setSize(renderdata.atlas_width, renderdata.atlas_height, 1) * renderdata.texture.setMinMagFilters(Linear, Linear) * renderdata.texture.allocateStorage() # <<<<<<<<<<<<<< * renderdata.texture.bind() * glarea.gl_set_atlas_texture(renderdata.atlas_width, renderdata.atlas_height) */ __pyx_v_10_qt_qtwes2_renderdata.texture->allocateStorage(); /* "_qt_qtwes2.pyx":392 * renderdata.texture.setMinMagFilters(Linear, Linear) * renderdata.texture.allocateStorage() * renderdata.texture.bind() # <<<<<<<<<<<<<< * glarea.gl_set_atlas_texture(renderdata.atlas_width, renderdata.atlas_height) * */ __pyx_v_10_qt_qtwes2_renderdata.texture->bind(); /* "_qt_qtwes2.pyx":393 * renderdata.texture.allocateStorage() * renderdata.texture.bind() * glarea.gl_set_atlas_texture(renderdata.atlas_width, renderdata.atlas_height) # <<<<<<<<<<<<<< * * ##pxm>IF 'qtw' == 'qtw' */ __pyx_f_11_glarea_es2_gl_set_atlas_texture(__pyx_v_10_qt_qtwes2_renderdata.atlas_width, __pyx_v_10_qt_qtwes2_renderdata.atlas_height); /* "_qt_qtwes2.pyx":384 * * ##pxm-FUNC P nogil * cdef void render_update_atlas() nogil: # <<<<<<<<<<<<<< * render_destroy_texture() * renderdata.texture = new QOpenGLTexture(Target2D) #px/ */ /* function exit code */ } /* "_qt_qtwes2.pyx":396 * * ##pxm>IF 'qtw' == 'qtw' * def gl_delete_atlas(): # <<<<<<<<<<<<<< * if renderdata.texture is not NULL: * renderdata.texture.destroy() */ /* Python wrapper */ static PyObject *__pyx_pw_10_qt_qtwes2_3gl_delete_atlas(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/ static PyMethodDef __pyx_mdef_10_qt_qtwes2_3gl_delete_atlas = {"gl_delete_atlas", (PyCFunction)__pyx_pw_10_qt_qtwes2_3gl_delete_atlas, METH_NOARGS, 0}; static PyObject *__pyx_pw_10_qt_qtwes2_3gl_delete_atlas(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("gl_delete_atlas (wrapper)", 0); __pyx_r = __pyx_pf_10_qt_qtwes2_2gl_delete_atlas(__pyx_self); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_10_qt_qtwes2_2gl_delete_atlas(CYTHON_UNUSED PyObject *__pyx_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; __Pyx_RefNannySetupContext("gl_delete_atlas", 0); /* "_qt_qtwes2.pyx":397 * ##pxm>IF 'qtw' == 'qtw' * def gl_delete_atlas(): * if renderdata.texture is not NULL: # <<<<<<<<<<<<<< * renderdata.texture.destroy() * renderdata.texture = NULL */ __pyx_t_1 = ((__pyx_v_10_qt_qtwes2_renderdata.texture != NULL) != 0); if (__pyx_t_1) { /* "_qt_qtwes2.pyx":398 * def gl_delete_atlas(): * if renderdata.texture is not NULL: * renderdata.texture.destroy() # <<<<<<<<<<<<<< * renderdata.texture = NULL * ##pxm>IF_END */ __pyx_v_10_qt_qtwes2_renderdata.texture->destroy(); /* "_qt_qtwes2.pyx":399 * if renderdata.texture is not NULL: * renderdata.texture.destroy() * renderdata.texture = NULL # <<<<<<<<<<<<<< * ##pxm>IF_END * */ __pyx_v_10_qt_qtwes2_renderdata.texture = NULL; /* "_qt_qtwes2.pyx":397 * ##pxm>IF 'qtw' == 'qtw' * def gl_delete_atlas(): * if renderdata.texture is not NULL: # <<<<<<<<<<<<<< * renderdata.texture.destroy() * renderdata.texture = NULL */ } /* "_qt_qtwes2.pyx":396 * * ##pxm>IF 'qtw' == 'qtw' * def gl_delete_atlas(): # <<<<<<<<<<<<<< * if renderdata.texture is not NULL: * renderdata.texture.destroy() */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwes2.pyx":403 * * ##pxm-FUNC P nogil * cdef void render_fps() nogil: # <<<<<<<<<<<<<< * cdef int fps #px+ * renderdata.fps_count += 1 */ static void __pyx_f_10_qt_qtwes2_render_fps(void) { int __pyx_v_fps; int __pyx_t_1; long __pyx_t_2; qint64 __pyx_t_3; /* "_qt_qtwes2.pyx":405 * cdef void render_fps() nogil: * cdef int fps #px+ * renderdata.fps_count += 1 # <<<<<<<<<<<<<< * if not renderdata.fps_monotonic_time.hasExpired(1000): * return */ __pyx_v_10_qt_qtwes2_renderdata.fps_count = (__pyx_v_10_qt_qtwes2_renderdata.fps_count + 1); /* "_qt_qtwes2.pyx":406 * cdef int fps #px+ * renderdata.fps_count += 1 * if not renderdata.fps_monotonic_time.hasExpired(1000): # <<<<<<<<<<<<<< * return * fps = 1000 * renderdata.fps_count // renderdata.fps_monotonic_time.restart() */ __pyx_t_1 = ((!(__pyx_v_10_qt_qtwes2_renderdata.fps_monotonic_time->hasExpired(0x3E8) != 0)) != 0); if (__pyx_t_1) { /* "_qt_qtwes2.pyx":407 * renderdata.fps_count += 1 * if not renderdata.fps_monotonic_time.hasExpired(1000): * return # <<<<<<<<<<<<<< * fps = 1000 * renderdata.fps_count // renderdata.fps_monotonic_time.restart() * renderdata.fps_count = 0 */ goto __pyx_L0; /* "_qt_qtwes2.pyx":406 * cdef int fps #px+ * renderdata.fps_count += 1 * if not renderdata.fps_monotonic_time.hasExpired(1000): # <<<<<<<<<<<<<< * return * fps = 1000 * renderdata.fps_count // renderdata.fps_monotonic_time.restart() */ } /* "_qt_qtwes2.pyx":408 * if not renderdata.fps_monotonic_time.hasExpired(1000): * return * fps = 1000 * renderdata.fps_count // renderdata.fps_monotonic_time.restart() # <<<<<<<<<<<<<< * renderdata.fps_count = 0 * renderdata.renderer.debug_fps(fps) #px/ */ __pyx_t_2 = (0x3E8 * __pyx_v_10_qt_qtwes2_renderdata.fps_count); __pyx_t_3 = __pyx_v_10_qt_qtwes2_renderdata.fps_monotonic_time->restart(); if (unlikely(__pyx_t_3 == 0)) { #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero"); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif __PYX_ERR(0, 408, __pyx_L1_error) } else if (sizeof(qint64) == sizeof(long) && (!(((qint64)-1) > 0)) && unlikely(__pyx_t_3 == (qint64)-1) && unlikely(UNARY_NEG_WOULD_OVERFLOW(__pyx_t_2))) { #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif PyErr_SetString(PyExc_OverflowError, "value too large to perform division"); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif __PYX_ERR(0, 408, __pyx_L1_error) } __pyx_v_fps = __Pyx_div_qint64(__pyx_t_2, __pyx_t_3); /* "_qt_qtwes2.pyx":409 * return * fps = 1000 * renderdata.fps_count // renderdata.fps_monotonic_time.restart() * renderdata.fps_count = 0 # <<<<<<<<<<<<<< * renderdata.renderer.debug_fps(fps) #px/ * #renderdata.renderer.debug_fps.emit(fps) */ __pyx_v_10_qt_qtwes2_renderdata.fps_count = 0; /* "_qt_qtwes2.pyx":410 * fps = 1000 * renderdata.fps_count // renderdata.fps_monotonic_time.restart() * renderdata.fps_count = 0 * renderdata.renderer.debug_fps(fps) #px/ # <<<<<<<<<<<<<< * #renderdata.renderer.debug_fps.emit(fps) * */ __pyx_v_10_qt_qtwes2_renderdata.renderer->debug_fps(__pyx_v_fps); /* "_qt_qtwes2.pyx":403 * * ##pxm-FUNC P nogil * cdef void render_fps() nogil: # <<<<<<<<<<<<<< * cdef int fps #px+ * renderdata.fps_count += 1 */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_WriteUnraisable("_qt_qtwes2.render_fps", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 1); __pyx_L0:; } /* "_qt_qtwes2.pyx":414 * * ##pxm-FUNC P nogil * cdef void render_pick() nogil: # <<<<<<<<<<<<<< * if renderdata.pickbuffer is NULL: * renderdata.pickbuffer = new QOpenGLFramebufferObject(1, 1, GL_TEXTURE_2D) #px/ */ static void __pyx_f_10_qt_qtwes2_render_pick(void) { int __pyx_v_index; int __pyx_t_1; /* "_qt_qtwes2.pyx":415 * ##pxm-FUNC P nogil * cdef void render_pick() nogil: * if renderdata.pickbuffer is NULL: # <<<<<<<<<<<<<< * renderdata.pickbuffer = new QOpenGLFramebufferObject(1, 1, GL_TEXTURE_2D) #px/ * #renderdata.pickbuffer = QOpenGLFramebufferObject(1, 1, GL_TEXTURE_2D) */ __pyx_t_1 = ((__pyx_v_10_qt_qtwes2_renderdata.pickbuffer == NULL) != 0); if (__pyx_t_1) { /* "_qt_qtwes2.pyx":416 * cdef void render_pick() nogil: * if renderdata.pickbuffer is NULL: * renderdata.pickbuffer = new QOpenGLFramebufferObject(1, 1, GL_TEXTURE_2D) #px/ # <<<<<<<<<<<<<< * #renderdata.pickbuffer = QOpenGLFramebufferObject(1, 1, GL_TEXTURE_2D) * renderdata.pickbuffer.setAttachment(Depth) */ __pyx_v_10_qt_qtwes2_renderdata.pickbuffer = new QOpenGLFramebufferObject(1, 1, GL_TEXTURE_2D); /* "_qt_qtwes2.pyx":418 * renderdata.pickbuffer = new QOpenGLFramebufferObject(1, 1, GL_TEXTURE_2D) #px/ * #renderdata.pickbuffer = QOpenGLFramebufferObject(1, 1, GL_TEXTURE_2D) * renderdata.pickbuffer.setAttachment(Depth) # <<<<<<<<<<<<<< * renderdata.pickbuffer.bind() * index = glarea.gl_pick_polygons() */ __pyx_v_10_qt_qtwes2_renderdata.pickbuffer->setAttachment(QOpenGLFramebufferObject::Depth); /* "_qt_qtwes2.pyx":415 * ##pxm-FUNC P nogil * cdef void render_pick() nogil: * if renderdata.pickbuffer is NULL: # <<<<<<<<<<<<<< * renderdata.pickbuffer = new QOpenGLFramebufferObject(1, 1, GL_TEXTURE_2D) #px/ * #renderdata.pickbuffer = QOpenGLFramebufferObject(1, 1, GL_TEXTURE_2D) */ } /* "_qt_qtwes2.pyx":419 * #renderdata.pickbuffer = QOpenGLFramebufferObject(1, 1, GL_TEXTURE_2D) * renderdata.pickbuffer.setAttachment(Depth) * renderdata.pickbuffer.bind() # <<<<<<<<<<<<<< * index = glarea.gl_pick_polygons() * renderdata.pickbuffer.release() */ __pyx_v_10_qt_qtwes2_renderdata.pickbuffer->bind(); /* "_qt_qtwes2.pyx":420 * renderdata.pickbuffer.setAttachment(Depth) * renderdata.pickbuffer.bind() * index = glarea.gl_pick_polygons() # <<<<<<<<<<<<<< * renderdata.pickbuffer.release() * renderdata.renderer.picking_result(index) #px/ */ __pyx_v_index = __pyx_f_11_glarea_es2_gl_pick_polygons(); /* "_qt_qtwes2.pyx":421 * renderdata.pickbuffer.bind() * index = glarea.gl_pick_polygons() * renderdata.pickbuffer.release() # <<<<<<<<<<<<<< * renderdata.renderer.picking_result(index) #px/ * #renderdata.renderer.picking_result.emit(index) */ __pyx_v_10_qt_qtwes2_renderdata.pickbuffer->release(); /* "_qt_qtwes2.pyx":422 * index = glarea.gl_pick_polygons() * renderdata.pickbuffer.release() * renderdata.renderer.picking_result(index) #px/ # <<<<<<<<<<<<<< * #renderdata.renderer.picking_result.emit(index) * */ __pyx_v_10_qt_qtwes2_renderdata.renderer->picking_result(__pyx_v_index); /* "_qt_qtwes2.pyx":414 * * ##pxm-FUNC P nogil * cdef void render_pick() nogil: # <<<<<<<<<<<<<< * if renderdata.pickbuffer is NULL: * renderdata.pickbuffer = new QOpenGLFramebufferObject(1, 1, GL_TEXTURE_2D) #px/ */ /* function exit code */ } /* "_qt_qtwes2.pyx":442 * * ##pxm-FUNC P nogil * cdef void render_init() nogil: # <<<<<<<<<<<<<< * renderdata.texture = NULL * renderdata.pickbuffer = NULL */ static void __pyx_f_10_qt_qtwes2_render_init(void) { int __pyx_t_1; /* "_qt_qtwes2.pyx":443 * ##pxm-FUNC P nogil * cdef void render_init() nogil: * renderdata.texture = NULL # <<<<<<<<<<<<<< * renderdata.pickbuffer = NULL * renderdata.fps_monotonic_time = NULL */ __pyx_v_10_qt_qtwes2_renderdata.texture = NULL; /* "_qt_qtwes2.pyx":444 * cdef void render_init() nogil: * renderdata.texture = NULL * renderdata.pickbuffer = NULL # <<<<<<<<<<<<<< * renderdata.fps_monotonic_time = NULL * renderdata.fps_count = 0 */ __pyx_v_10_qt_qtwes2_renderdata.pickbuffer = NULL; /* "_qt_qtwes2.pyx":445 * renderdata.texture = NULL * renderdata.pickbuffer = NULL * renderdata.fps_monotonic_time = NULL # <<<<<<<<<<<<<< * renderdata.fps_count = 0 * renderdata.atlas_width = 0 */ __pyx_v_10_qt_qtwes2_renderdata.fps_monotonic_time = NULL; /* "_qt_qtwes2.pyx":446 * renderdata.pickbuffer = NULL * renderdata.fps_monotonic_time = NULL * renderdata.fps_count = 0 # <<<<<<<<<<<<<< * renderdata.atlas_width = 0 * renderdata.atlas_height = 0 */ __pyx_v_10_qt_qtwes2_renderdata.fps_count = 0; /* "_qt_qtwes2.pyx":447 * renderdata.fps_monotonic_time = NULL * renderdata.fps_count = 0 * renderdata.atlas_width = 0 # <<<<<<<<<<<<<< * renderdata.atlas_height = 0 * */ __pyx_v_10_qt_qtwes2_renderdata.atlas_width = 0; /* "_qt_qtwes2.pyx":448 * renderdata.fps_count = 0 * renderdata.atlas_width = 0 * renderdata.atlas_height = 0 # <<<<<<<<<<<<<< * * renderdata.initialized = False */ __pyx_v_10_qt_qtwes2_renderdata.atlas_height = 0; /* "_qt_qtwes2.pyx":450 * renderdata.atlas_height = 0 * * renderdata.initialized = False # <<<<<<<<<<<<<< * renderdata.atlas_changed = False * renderdata.pickxy_changed = False */ __pyx_v_10_qt_qtwes2_renderdata.initialized = 0; /* "_qt_qtwes2.pyx":451 * * renderdata.initialized = False * renderdata.atlas_changed = False # <<<<<<<<<<<<<< * renderdata.pickxy_changed = False * renderdata.renderer = new Renderer() #px/ */ __pyx_v_10_qt_qtwes2_renderdata.atlas_changed = 0; /* "_qt_qtwes2.pyx":452 * renderdata.initialized = False * renderdata.atlas_changed = False * renderdata.pickxy_changed = False # <<<<<<<<<<<<<< * renderdata.renderer = new Renderer() #px/ * #renderdata.renderer = Renderer() */ __pyx_v_10_qt_qtwes2_renderdata.pickxy_changed = 0; /* "_qt_qtwes2.pyx":453 * renderdata.atlas_changed = False * renderdata.pickxy_changed = False * renderdata.renderer = new Renderer() #px/ # <<<<<<<<<<<<<< * #renderdata.renderer = Renderer() * renderdata.gldebuglogger = NULL */ __pyx_v_10_qt_qtwes2_renderdata.renderer = new Renderer(); /* "_qt_qtwes2.pyx":455 * renderdata.renderer = new Renderer() #px/ * #renderdata.renderer = Renderer() * renderdata.gldebuglogger = NULL # <<<<<<<<<<<<<< * * glarea.sync_set_fixedshaders() */ __pyx_v_10_qt_qtwes2_renderdata.gldebuglogger = NULL; /* "_qt_qtwes2.pyx":457 * renderdata.gldebuglogger = NULL * * glarea.sync_set_fixedshaders() # <<<<<<<<<<<<<< * if debug & DEBUG_GLDEBUG: * render_init_gldebuglogger() */ __pyx_f_11_glarea_es2_sync_set_fixedshaders(); /* "_qt_qtwes2.pyx":458 * * glarea.sync_set_fixedshaders() * if debug & DEBUG_GLDEBUG: # <<<<<<<<<<<<<< * render_init_gldebuglogger() * if debug & DEBUG_FPS: */ __pyx_t_1 = ((__pyx_v_10_qt_qtwes2_debug & __pyx_e_10_qt_qtwes2_DEBUG_GLDEBUG) != 0); if (__pyx_t_1) { /* "_qt_qtwes2.pyx":459 * glarea.sync_set_fixedshaders() * if debug & DEBUG_GLDEBUG: * render_init_gldebuglogger() # <<<<<<<<<<<<<< * if debug & DEBUG_FPS: * renderdata.fps_monotonic_time = new QElapsedTimer() #px/ */ __pyx_f_10_qt_qtwes2_render_init_gldebuglogger(); /* "_qt_qtwes2.pyx":458 * * glarea.sync_set_fixedshaders() * if debug & DEBUG_GLDEBUG: # <<<<<<<<<<<<<< * render_init_gldebuglogger() * if debug & DEBUG_FPS: */ } /* "_qt_qtwes2.pyx":460 * if debug & DEBUG_GLDEBUG: * render_init_gldebuglogger() * if debug & DEBUG_FPS: # <<<<<<<<<<<<<< * renderdata.fps_monotonic_time = new QElapsedTimer() #px/ * #renderdata.fps_monotonic_time = QElapsedTimer() */ __pyx_t_1 = ((__pyx_v_10_qt_qtwes2_debug & __pyx_e_10_qt_qtwes2_DEBUG_FPS) != 0); if (__pyx_t_1) { /* "_qt_qtwes2.pyx":461 * render_init_gldebuglogger() * if debug & DEBUG_FPS: * renderdata.fps_monotonic_time = new QElapsedTimer() #px/ # <<<<<<<<<<<<<< * #renderdata.fps_monotonic_time = QElapsedTimer() * renderdata.fps_count = 0 */ __pyx_v_10_qt_qtwes2_renderdata.fps_monotonic_time = new QElapsedTimer(); /* "_qt_qtwes2.pyx":463 * renderdata.fps_monotonic_time = new QElapsedTimer() #px/ * #renderdata.fps_monotonic_time = QElapsedTimer() * renderdata.fps_count = 0 # <<<<<<<<<<<<<< * renderdata.fps_monotonic_time.start() * if debug & DEBUG_QML: */ __pyx_v_10_qt_qtwes2_renderdata.fps_count = 0; /* "_qt_qtwes2.pyx":464 * #renderdata.fps_monotonic_time = QElapsedTimer() * renderdata.fps_count = 0 * renderdata.fps_monotonic_time.start() # <<<<<<<<<<<<<< * if debug & DEBUG_QML: * dump_info('Renderer', renderdata.renderer) #px/ */ __pyx_v_10_qt_qtwes2_renderdata.fps_monotonic_time->start(); /* "_qt_qtwes2.pyx":460 * if debug & DEBUG_GLDEBUG: * render_init_gldebuglogger() * if debug & DEBUG_FPS: # <<<<<<<<<<<<<< * renderdata.fps_monotonic_time = new QElapsedTimer() #px/ * #renderdata.fps_monotonic_time = QElapsedTimer() */ } /* "_qt_qtwes2.pyx":465 * renderdata.fps_count = 0 * renderdata.fps_monotonic_time.start() * if debug & DEBUG_QML: # <<<<<<<<<<<<<< * dump_info('Renderer', renderdata.renderer) #px/ * #dump_info('Renderer', renderdata.renderer) */ __pyx_t_1 = ((__pyx_v_10_qt_qtwes2_debug & __pyx_e_10_qt_qtwes2_DEBUG_QML) != 0); if (__pyx_t_1) { /* "_qt_qtwes2.pyx":466 * renderdata.fps_monotonic_time.start() * if debug & DEBUG_QML: * dump_info('Renderer', renderdata.renderer) #px/ # <<<<<<<<<<<<<< * #dump_info('Renderer', renderdata.renderer) * if debug & DEBUG_MSGGL: */ __pyx_f_10_qt_qtwes2_dump_info(((char const *)"Renderer"), ((QObject *)__pyx_v_10_qt_qtwes2_renderdata.renderer)); /* "_qt_qtwes2.pyx":465 * renderdata.fps_count = 0 * renderdata.fps_monotonic_time.start() * if debug & DEBUG_QML: # <<<<<<<<<<<<<< * dump_info('Renderer', renderdata.renderer) #px/ * #dump_info('Renderer', renderdata.renderer) */ } /* "_qt_qtwes2.pyx":468 * dump_info('Renderer', renderdata.renderer) #px/ * #dump_info('Renderer', renderdata.renderer) * if debug & DEBUG_MSGGL: # <<<<<<<<<<<<<< * print_surface_info() * */ __pyx_t_1 = ((__pyx_v_10_qt_qtwes2_debug & __pyx_e_10_qt_qtwes2_DEBUG_MSGGL) != 0); if (__pyx_t_1) { /* "_qt_qtwes2.pyx":469 * #dump_info('Renderer', renderdata.renderer) * if debug & DEBUG_MSGGL: * print_surface_info() # <<<<<<<<<<<<<< * * ##pxm-FUNC P nogil */ __pyx_f_10_qt_qtwes2_print_surface_info(); /* "_qt_qtwes2.pyx":468 * dump_info('Renderer', renderdata.renderer) #px/ * #dump_info('Renderer', renderdata.renderer) * if debug & DEBUG_MSGGL: # <<<<<<<<<<<<<< * print_surface_info() * */ } /* "_qt_qtwes2.pyx":442 * * ##pxm-FUNC P nogil * cdef void render_init() nogil: # <<<<<<<<<<<<<< * renderdata.texture = NULL * renderdata.pickbuffer = NULL */ /* function exit code */ } /* "_qt_qtwes2.pyx":472 * * ##pxm-FUNC P nogil * cdef void render_destroy_texture() nogil: # <<<<<<<<<<<<<< * if renderdata.texture is not NULL: * renderdata.texture.destroy() */ static void __pyx_f_10_qt_qtwes2_render_destroy_texture(void) { int __pyx_t_1; /* "_qt_qtwes2.pyx":473 * ##pxm-FUNC P nogil * cdef void render_destroy_texture() nogil: * if renderdata.texture is not NULL: # <<<<<<<<<<<<<< * renderdata.texture.destroy() * del renderdata.texture */ __pyx_t_1 = ((__pyx_v_10_qt_qtwes2_renderdata.texture != NULL) != 0); if (__pyx_t_1) { /* "_qt_qtwes2.pyx":474 * cdef void render_destroy_texture() nogil: * if renderdata.texture is not NULL: * renderdata.texture.destroy() # <<<<<<<<<<<<<< * del renderdata.texture * renderdata.texture = NULL */ __pyx_v_10_qt_qtwes2_renderdata.texture->destroy(); /* "_qt_qtwes2.pyx":475 * if renderdata.texture is not NULL: * renderdata.texture.destroy() * del renderdata.texture # <<<<<<<<<<<<<< * renderdata.texture = NULL * */ delete __pyx_v_10_qt_qtwes2_renderdata.texture; /* "_qt_qtwes2.pyx":476 * renderdata.texture.destroy() * del renderdata.texture * renderdata.texture = NULL # <<<<<<<<<<<<<< * * ##pxm-FUNC P nogil */ __pyx_v_10_qt_qtwes2_renderdata.texture = NULL; /* "_qt_qtwes2.pyx":473 * ##pxm-FUNC P nogil * cdef void render_destroy_texture() nogil: * if renderdata.texture is not NULL: # <<<<<<<<<<<<<< * renderdata.texture.destroy() * del renderdata.texture */ } /* "_qt_qtwes2.pyx":472 * * ##pxm-FUNC P nogil * cdef void render_destroy_texture() nogil: # <<<<<<<<<<<<<< * if renderdata.texture is not NULL: * renderdata.texture.destroy() */ /* function exit code */ } /* "_qt_qtwes2.pyx":479 * * ##pxm-FUNC P nogil * cdef void render_destroy() nogil: # <<<<<<<<<<<<<< * render_destroy_texture() * if renderdata.pickbuffer is not NULL: */ static void __pyx_f_10_qt_qtwes2_render_destroy(void) { int __pyx_t_1; /* "_qt_qtwes2.pyx":480 * ##pxm-FUNC P nogil * cdef void render_destroy() nogil: * render_destroy_texture() # <<<<<<<<<<<<<< * if renderdata.pickbuffer is not NULL: * del renderdata.pickbuffer */ __pyx_f_10_qt_qtwes2_render_destroy_texture(); /* "_qt_qtwes2.pyx":481 * cdef void render_destroy() nogil: * render_destroy_texture() * if renderdata.pickbuffer is not NULL: # <<<<<<<<<<<<<< * del renderdata.pickbuffer * renderdata.pickbuffer = NULL */ __pyx_t_1 = ((__pyx_v_10_qt_qtwes2_renderdata.pickbuffer != NULL) != 0); if (__pyx_t_1) { /* "_qt_qtwes2.pyx":482 * render_destroy_texture() * if renderdata.pickbuffer is not NULL: * del renderdata.pickbuffer # <<<<<<<<<<<<<< * renderdata.pickbuffer = NULL * if renderdata.fps_monotonic_time is not NULL: */ delete __pyx_v_10_qt_qtwes2_renderdata.pickbuffer; /* "_qt_qtwes2.pyx":483 * if renderdata.pickbuffer is not NULL: * del renderdata.pickbuffer * renderdata.pickbuffer = NULL # <<<<<<<<<<<<<< * if renderdata.fps_monotonic_time is not NULL: * del renderdata.fps_monotonic_time */ __pyx_v_10_qt_qtwes2_renderdata.pickbuffer = NULL; /* "_qt_qtwes2.pyx":481 * cdef void render_destroy() nogil: * render_destroy_texture() * if renderdata.pickbuffer is not NULL: # <<<<<<<<<<<<<< * del renderdata.pickbuffer * renderdata.pickbuffer = NULL */ } /* "_qt_qtwes2.pyx":484 * del renderdata.pickbuffer * renderdata.pickbuffer = NULL * if renderdata.fps_monotonic_time is not NULL: # <<<<<<<<<<<<<< * del renderdata.fps_monotonic_time * renderdata.fps_monotonic_time = NULL */ __pyx_t_1 = ((__pyx_v_10_qt_qtwes2_renderdata.fps_monotonic_time != NULL) != 0); if (__pyx_t_1) { /* "_qt_qtwes2.pyx":485 * renderdata.pickbuffer = NULL * if renderdata.fps_monotonic_time is not NULL: * del renderdata.fps_monotonic_time # <<<<<<<<<<<<<< * renderdata.fps_monotonic_time = NULL * if renderdata.gldebuglogger is not NULL: */ delete __pyx_v_10_qt_qtwes2_renderdata.fps_monotonic_time; /* "_qt_qtwes2.pyx":486 * if renderdata.fps_monotonic_time is not NULL: * del renderdata.fps_monotonic_time * renderdata.fps_monotonic_time = NULL # <<<<<<<<<<<<<< * if renderdata.gldebuglogger is not NULL: * del renderdata.gldebuglogger */ __pyx_v_10_qt_qtwes2_renderdata.fps_monotonic_time = NULL; /* "_qt_qtwes2.pyx":484 * del renderdata.pickbuffer * renderdata.pickbuffer = NULL * if renderdata.fps_monotonic_time is not NULL: # <<<<<<<<<<<<<< * del renderdata.fps_monotonic_time * renderdata.fps_monotonic_time = NULL */ } /* "_qt_qtwes2.pyx":487 * del renderdata.fps_monotonic_time * renderdata.fps_monotonic_time = NULL * if renderdata.gldebuglogger is not NULL: # <<<<<<<<<<<<<< * del renderdata.gldebuglogger * renderdata.gldebuglogger = NULL */ __pyx_t_1 = ((__pyx_v_10_qt_qtwes2_renderdata.gldebuglogger != NULL) != 0); if (__pyx_t_1) { /* "_qt_qtwes2.pyx":488 * renderdata.fps_monotonic_time = NULL * if renderdata.gldebuglogger is not NULL: * del renderdata.gldebuglogger # <<<<<<<<<<<<<< * renderdata.gldebuglogger = NULL * */ delete __pyx_v_10_qt_qtwes2_renderdata.gldebuglogger; /* "_qt_qtwes2.pyx":489 * if renderdata.gldebuglogger is not NULL: * del renderdata.gldebuglogger * renderdata.gldebuglogger = NULL # <<<<<<<<<<<<<< * * ##pxm-FUNC P nogil */ __pyx_v_10_qt_qtwes2_renderdata.gldebuglogger = NULL; /* "_qt_qtwes2.pyx":487 * del renderdata.fps_monotonic_time * renderdata.fps_monotonic_time = NULL * if renderdata.gldebuglogger is not NULL: # <<<<<<<<<<<<<< * del renderdata.gldebuglogger * renderdata.gldebuglogger = NULL */ } /* "_qt_qtwes2.pyx":479 * * ##pxm-FUNC P nogil * cdef void render_destroy() nogil: # <<<<<<<<<<<<<< * render_destroy_texture() * if renderdata.pickbuffer is not NULL: */ /* function exit code */ } /* "_qt_qtwes2.pyx":492 * * ##pxm-FUNC P nogil * cdef void render_init_gldebuglogger() nogil: # <<<<<<<<<<<<<< * cdef OpenGLDebugMessageList messages #px+ * cdef QOpenGLDebugMessage message #px+ */ static void __pyx_f_10_qt_qtwes2_render_init_gldebuglogger(void) { QList __pyx_v_messages; QOpenGLDebugMessage __pyx_v_message; int __pyx_v_i; int __pyx_t_1; int __pyx_t_2; int __pyx_t_3; /* "_qt_qtwes2.pyx":496 * cdef QOpenGLDebugMessage message #px+ * cdef int i #px+ * renderdata.gldebuglogger = new QOpenGLDebugLogger(renderdata.renderer) #px/ # <<<<<<<<<<<<<< * #renderdata.gldebuglogger = QOpenGLDebugLogger(renderdata.renderer) * if not renderdata.gldebuglogger.initialize(): */ __pyx_v_10_qt_qtwes2_renderdata.gldebuglogger = new QOpenGLDebugLogger(((QObject *)__pyx_v_10_qt_qtwes2_renderdata.renderer)); /* "_qt_qtwes2.pyx":498 * renderdata.gldebuglogger = new QOpenGLDebugLogger(renderdata.renderer) #px/ * #renderdata.gldebuglogger = QOpenGLDebugLogger(renderdata.renderer) * if not renderdata.gldebuglogger.initialize(): # <<<<<<<<<<<<<< * puts('QOpenGLDebugLogger not successfully initialized') * return */ __pyx_t_1 = ((!(__pyx_v_10_qt_qtwes2_renderdata.gldebuglogger->initialize() != 0)) != 0); if (__pyx_t_1) { /* "_qt_qtwes2.pyx":499 * #renderdata.gldebuglogger = QOpenGLDebugLogger(renderdata.renderer) * if not renderdata.gldebuglogger.initialize(): * puts('QOpenGLDebugLogger not successfully initialized') # <<<<<<<<<<<<<< * return * renderdata.gldebuglogger.enableMessages() */ puts(((char const *)"QOpenGLDebugLogger not successfully initialized")); /* "_qt_qtwes2.pyx":500 * if not renderdata.gldebuglogger.initialize(): * puts('QOpenGLDebugLogger not successfully initialized') * return # <<<<<<<<<<<<<< * renderdata.gldebuglogger.enableMessages() * renderdata.renderer.connect_gldebuglogger(renderdata.gldebuglogger) */ goto __pyx_L0; /* "_qt_qtwes2.pyx":498 * renderdata.gldebuglogger = new QOpenGLDebugLogger(renderdata.renderer) #px/ * #renderdata.gldebuglogger = QOpenGLDebugLogger(renderdata.renderer) * if not renderdata.gldebuglogger.initialize(): # <<<<<<<<<<<<<< * puts('QOpenGLDebugLogger not successfully initialized') * return */ } /* "_qt_qtwes2.pyx":501 * puts('QOpenGLDebugLogger not successfully initialized') * return * renderdata.gldebuglogger.enableMessages() # <<<<<<<<<<<<<< * renderdata.renderer.connect_gldebuglogger(renderdata.gldebuglogger) * renderdata.gldebuglogger.startLogging(SynchronousLogging) */ __pyx_v_10_qt_qtwes2_renderdata.gldebuglogger->enableMessages(); /* "_qt_qtwes2.pyx":502 * return * renderdata.gldebuglogger.enableMessages() * renderdata.renderer.connect_gldebuglogger(renderdata.gldebuglogger) # <<<<<<<<<<<<<< * renderdata.gldebuglogger.startLogging(SynchronousLogging) * messages = renderdata.gldebuglogger.loggedMessages() */ __pyx_v_10_qt_qtwes2_renderdata.renderer->connect_gldebuglogger(__pyx_v_10_qt_qtwes2_renderdata.gldebuglogger); /* "_qt_qtwes2.pyx":503 * renderdata.gldebuglogger.enableMessages() * renderdata.renderer.connect_gldebuglogger(renderdata.gldebuglogger) * renderdata.gldebuglogger.startLogging(SynchronousLogging) # <<<<<<<<<<<<<< * messages = renderdata.gldebuglogger.loggedMessages() * printf('QOpenGLDebugLogger successfully initialized and started (%d initial messages)\n', messages.size()) #px/ */ __pyx_v_10_qt_qtwes2_renderdata.gldebuglogger->startLogging(QOpenGLDebugLogger::SynchronousLogging); /* "_qt_qtwes2.pyx":504 * renderdata.renderer.connect_gldebuglogger(renderdata.gldebuglogger) * renderdata.gldebuglogger.startLogging(SynchronousLogging) * messages = renderdata.gldebuglogger.loggedMessages() # <<<<<<<<<<<<<< * printf('QOpenGLDebugLogger successfully initialized and started (%d initial messages)\n', messages.size()) #px/ * #printf('QOpenGLDebugLogger successfully initialized and started (%d initial messages)\n', len(messages)) */ __pyx_v_messages = __pyx_v_10_qt_qtwes2_renderdata.gldebuglogger->loggedMessages(); /* "_qt_qtwes2.pyx":505 * renderdata.gldebuglogger.startLogging(SynchronousLogging) * messages = renderdata.gldebuglogger.loggedMessages() * printf('QOpenGLDebugLogger successfully initialized and started (%d initial messages)\n', messages.size()) #px/ # <<<<<<<<<<<<<< * #printf('QOpenGLDebugLogger successfully initialized and started (%d initial messages)\n', len(messages)) * for i in range(messages.size()): #px/ */ printf(((char const *)"QOpenGLDebugLogger successfully initialized and started (%d initial messages)\n"), __pyx_v_messages.size()); /* "_qt_qtwes2.pyx":507 * printf('QOpenGLDebugLogger successfully initialized and started (%d initial messages)\n', messages.size()) #px/ * #printf('QOpenGLDebugLogger successfully initialized and started (%d initial messages)\n', len(messages)) * for i in range(messages.size()): #px/ # <<<<<<<<<<<<<< * #for message in messages: * message = messages.at(i) #px+ */ __pyx_t_2 = __pyx_v_messages.size(); for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) { __pyx_v_i = __pyx_t_3; /* "_qt_qtwes2.pyx":509 * for i in range(messages.size()): #px/ * #for message in messages: * message = messages.at(i) #px+ # <<<<<<<<<<<<<< * renderdata.renderer.on_messageLogged(message) * */ __pyx_v_message = __pyx_v_messages.at(__pyx_v_i); /* "_qt_qtwes2.pyx":510 * #for message in messages: * message = messages.at(i) #px+ * renderdata.renderer.on_messageLogged(message) # <<<<<<<<<<<<<< * * ##pxm-FUNC P nogil */ __pyx_v_10_qt_qtwes2_renderdata.renderer->on_messageLogged(__pyx_v_message); } /* "_qt_qtwes2.pyx":492 * * ##pxm-FUNC P nogil * cdef void render_init_gldebuglogger() nogil: # <<<<<<<<<<<<<< * cdef OpenGLDebugMessageList messages #px+ * cdef QOpenGLDebugMessage message #px+ */ /* function exit code */ __pyx_L0:; } /* "_qt_qtwes2.pyx":513 * * ##pxm-FUNC P nogil * cdef void _pfmt(char *name, int f, int rf, int df) nogil: # <<<<<<<<<<<<<< * printf(' %s: %d', name, f) * if f != rf: printf(' (%d)', rf) */ static void __pyx_f_10_qt_qtwes2__pfmt(char *__pyx_v_name, int __pyx_v_f, int __pyx_v_rf, int __pyx_v_df) { int __pyx_t_1; /* "_qt_qtwes2.pyx":514 * ##pxm-FUNC P nogil * cdef void _pfmt(char *name, int f, int rf, int df) nogil: * printf(' %s: %d', name, f) # <<<<<<<<<<<<<< * if f != rf: printf(' (%d)', rf) * if rf != df: printf(' [%d]', df) */ printf(((char const *)" %s: %d"), __pyx_v_name, __pyx_v_f); /* "_qt_qtwes2.pyx":515 * cdef void _pfmt(char *name, int f, int rf, int df) nogil: * printf(' %s: %d', name, f) * if f != rf: printf(' (%d)', rf) # <<<<<<<<<<<<<< * if rf != df: printf(' [%d]', df) * puts('') */ __pyx_t_1 = ((__pyx_v_f != __pyx_v_rf) != 0); if (__pyx_t_1) { printf(((char const *)" (%d)"), __pyx_v_rf); } /* "_qt_qtwes2.pyx":516 * printf(' %s: %d', name, f) * if f != rf: printf(' (%d)', rf) * if rf != df: printf(' [%d]', df) # <<<<<<<<<<<<<< * puts('') * ##pxm-FUNC P nogil */ __pyx_t_1 = ((__pyx_v_rf != __pyx_v_df) != 0); if (__pyx_t_1) { printf(((char const *)" [%d]"), __pyx_v_df); } /* "_qt_qtwes2.pyx":517 * if f != rf: printf(' (%d)', rf) * if rf != df: printf(' [%d]', df) * puts('') # <<<<<<<<<<<<<< * ##pxm-FUNC P nogil * cdef void _pfmt2(char *name, int f1, int f2, int rf1, int rf2, int df1, int df2) nogil: */ puts(((char const *)"")); /* "_qt_qtwes2.pyx":513 * * ##pxm-FUNC P nogil * cdef void _pfmt(char *name, int f, int rf, int df) nogil: # <<<<<<<<<<<<<< * printf(' %s: %d', name, f) * if f != rf: printf(' (%d)', rf) */ /* function exit code */ } /* "_qt_qtwes2.pyx":519 * puts('') * ##pxm-FUNC P nogil * cdef void _pfmt2(char *name, int f1, int f2, int rf1, int rf2, int df1, int df2) nogil: # <<<<<<<<<<<<<< * printf(' %s: %d.%d', name, f1, f2) * if f1 != rf1 or f2 != rf2: printf(' (%d.%d)', rf1, rf2) */ static void __pyx_f_10_qt_qtwes2__pfmt2(char *__pyx_v_name, int __pyx_v_f1, int __pyx_v_f2, int __pyx_v_rf1, int __pyx_v_rf2, int __pyx_v_df1, int __pyx_v_df2) { int __pyx_t_1; int __pyx_t_2; /* "_qt_qtwes2.pyx":520 * ##pxm-FUNC P nogil * cdef void _pfmt2(char *name, int f1, int f2, int rf1, int rf2, int df1, int df2) nogil: * printf(' %s: %d.%d', name, f1, f2) # <<<<<<<<<<<<<< * if f1 != rf1 or f2 != rf2: printf(' (%d.%d)', rf1, rf2) * if rf1 != df1 or rf2 != df2: printf(' [%d.%d]', df1, df2) */ printf(((char const *)" %s: %d.%d"), __pyx_v_name, __pyx_v_f1, __pyx_v_f2); /* "_qt_qtwes2.pyx":521 * cdef void _pfmt2(char *name, int f1, int f2, int rf1, int rf2, int df1, int df2) nogil: * printf(' %s: %d.%d', name, f1, f2) * if f1 != rf1 or f2 != rf2: printf(' (%d.%d)', rf1, rf2) # <<<<<<<<<<<<<< * if rf1 != df1 or rf2 != df2: printf(' [%d.%d]', df1, df2) * puts('') */ __pyx_t_2 = ((__pyx_v_f1 != __pyx_v_rf1) != 0); if (!__pyx_t_2) { } else { __pyx_t_1 = __pyx_t_2; goto __pyx_L4_bool_binop_done; } __pyx_t_2 = ((__pyx_v_f2 != __pyx_v_rf2) != 0); __pyx_t_1 = __pyx_t_2; __pyx_L4_bool_binop_done:; if (__pyx_t_1) { printf(((char const *)" (%d.%d)"), __pyx_v_rf1, __pyx_v_rf2); } /* "_qt_qtwes2.pyx":522 * printf(' %s: %d.%d', name, f1, f2) * if f1 != rf1 or f2 != rf2: printf(' (%d.%d)', rf1, rf2) * if rf1 != df1 or rf2 != df2: printf(' [%d.%d]', df1, df2) # <<<<<<<<<<<<<< * puts('') * */ __pyx_t_2 = ((__pyx_v_rf1 != __pyx_v_df1) != 0); if (!__pyx_t_2) { } else { __pyx_t_1 = __pyx_t_2; goto __pyx_L7_bool_binop_done; } __pyx_t_2 = ((__pyx_v_rf2 != __pyx_v_df2) != 0); __pyx_t_1 = __pyx_t_2; __pyx_L7_bool_binop_done:; if (__pyx_t_1) { printf(((char const *)" [%d.%d]"), __pyx_v_df1, __pyx_v_df2); } /* "_qt_qtwes2.pyx":523 * if f1 != rf1 or f2 != rf2: printf(' (%d.%d)', rf1, rf2) * if rf1 != df1 or rf2 != df2: printf(' [%d.%d]', df1, df2) * puts('') # <<<<<<<<<<<<<< * * ##pxm-FUNC P nogil */ puts(((char const *)"")); /* "_qt_qtwes2.pyx":519 * puts('') * ##pxm-FUNC P nogil * cdef void _pfmt2(char *name, int f1, int f2, int rf1, int rf2, int df1, int df2) nogil: # <<<<<<<<<<<<<< * printf(' %s: %d.%d', name, f1, f2) * if f1 != rf1 or f2 != rf2: printf(' (%d.%d)', rf1, rf2) */ /* function exit code */ } /* "_qt_qtwes2.pyx":526 * * ##pxm-FUNC P nogil * cdef void print_surface_info() nogil: # <<<<<<<<<<<<<< * cdef QOpenGLContext *glcontext #px+ * glcontext = currentContext() */ static void __pyx_f_10_qt_qtwes2_print_surface_info(void) { QOpenGLContext *__pyx_v_glcontext; QSurfaceFormat __pyx_v_glformat; QSurfaceFormat __pyx_v_glrformat; QSurfaceFormat __pyx_v_gldformat; int __pyx_v_i; QOpenGLFunctions *__pyx_v_glFuncs; int __pyx_v_features; QSurfaceFormat __pyx_t_1; int __pyx_t_2; /* "_qt_qtwes2.pyx":528 * cdef void print_surface_info() nogil: * cdef QOpenGLContext *glcontext #px+ * glcontext = currentContext() # <<<<<<<<<<<<<< * glformat = glcontext.format() * glrformat = defaultFormat() # requested format */ __pyx_v_glcontext = QOpenGLContext::currentContext(); /* "_qt_qtwes2.pyx":529 * cdef QOpenGLContext *glcontext #px+ * glcontext = currentContext() * glformat = glcontext.format() # <<<<<<<<<<<<<< * glrformat = defaultFormat() # requested format * gldformat = uidata.default_format */ __pyx_v_glformat = __pyx_v_glcontext->format(); /* "_qt_qtwes2.pyx":530 * glcontext = currentContext() * glformat = glcontext.format() * glrformat = defaultFormat() # requested format # <<<<<<<<<<<<<< * gldformat = uidata.default_format * puts('Surface format (requested (), default []):') */ __pyx_v_glrformat = QSurfaceFormat::defaultFormat(); /* "_qt_qtwes2.pyx":531 * glformat = glcontext.format() * glrformat = defaultFormat() # requested format * gldformat = uidata.default_format # <<<<<<<<<<<<<< * puts('Surface format (requested (), default []):') * _pfmt('red', glformat.redBufferSize(), glrformat.redBufferSize(), gldformat.redBufferSize()) */ __pyx_t_1 = __pyx_v_10_qt_qtwes2_uidata.default_format; __pyx_v_gldformat = __pyx_t_1; /* "_qt_qtwes2.pyx":532 * glrformat = defaultFormat() # requested format * gldformat = uidata.default_format * puts('Surface format (requested (), default []):') # <<<<<<<<<<<<<< * _pfmt('red', glformat.redBufferSize(), glrformat.redBufferSize(), gldformat.redBufferSize()) * _pfmt('green', glformat.greenBufferSize(), glrformat.greenBufferSize(), gldformat.greenBufferSize()) */ puts(((char const *)"Surface format (requested (), default []):")); /* "_qt_qtwes2.pyx":533 * gldformat = uidata.default_format * puts('Surface format (requested (), default []):') * _pfmt('red', glformat.redBufferSize(), glrformat.redBufferSize(), gldformat.redBufferSize()) # <<<<<<<<<<<<<< * _pfmt('green', glformat.greenBufferSize(), glrformat.greenBufferSize(), gldformat.greenBufferSize()) * _pfmt('blue', glformat.blueBufferSize(), glrformat.blueBufferSize(), gldformat.blueBufferSize()) */ __pyx_f_10_qt_qtwes2__pfmt(((char *)"red"), __pyx_v_glformat.redBufferSize(), __pyx_v_glrformat.redBufferSize(), __pyx_v_gldformat.redBufferSize()); /* "_qt_qtwes2.pyx":534 * puts('Surface format (requested (), default []):') * _pfmt('red', glformat.redBufferSize(), glrformat.redBufferSize(), gldformat.redBufferSize()) * _pfmt('green', glformat.greenBufferSize(), glrformat.greenBufferSize(), gldformat.greenBufferSize()) # <<<<<<<<<<<<<< * _pfmt('blue', glformat.blueBufferSize(), glrformat.blueBufferSize(), gldformat.blueBufferSize()) * _pfmt('alpha', glformat.alphaBufferSize(), glrformat.alphaBufferSize(), gldformat.alphaBufferSize()) */ __pyx_f_10_qt_qtwes2__pfmt(((char *)"green"), __pyx_v_glformat.greenBufferSize(), __pyx_v_glrformat.greenBufferSize(), __pyx_v_gldformat.greenBufferSize()); /* "_qt_qtwes2.pyx":535 * _pfmt('red', glformat.redBufferSize(), glrformat.redBufferSize(), gldformat.redBufferSize()) * _pfmt('green', glformat.greenBufferSize(), glrformat.greenBufferSize(), gldformat.greenBufferSize()) * _pfmt('blue', glformat.blueBufferSize(), glrformat.blueBufferSize(), gldformat.blueBufferSize()) # <<<<<<<<<<<<<< * _pfmt('alpha', glformat.alphaBufferSize(), glrformat.alphaBufferSize(), gldformat.alphaBufferSize()) * _pfmt('depth', glformat.depthBufferSize(), glrformat.depthBufferSize(), gldformat.depthBufferSize()) */ __pyx_f_10_qt_qtwes2__pfmt(((char *)"blue"), __pyx_v_glformat.blueBufferSize(), __pyx_v_glrformat.blueBufferSize(), __pyx_v_gldformat.blueBufferSize()); /* "_qt_qtwes2.pyx":536 * _pfmt('green', glformat.greenBufferSize(), glrformat.greenBufferSize(), gldformat.greenBufferSize()) * _pfmt('blue', glformat.blueBufferSize(), glrformat.blueBufferSize(), gldformat.blueBufferSize()) * _pfmt('alpha', glformat.alphaBufferSize(), glrformat.alphaBufferSize(), gldformat.alphaBufferSize()) # <<<<<<<<<<<<<< * _pfmt('depth', glformat.depthBufferSize(), glrformat.depthBufferSize(), gldformat.depthBufferSize()) * _pfmt('options', glformat.options(), glrformat.options(), gldformat.options()) */ __pyx_f_10_qt_qtwes2__pfmt(((char *)"alpha"), __pyx_v_glformat.alphaBufferSize(), __pyx_v_glrformat.alphaBufferSize(), __pyx_v_gldformat.alphaBufferSize()); /* "_qt_qtwes2.pyx":537 * _pfmt('blue', glformat.blueBufferSize(), glrformat.blueBufferSize(), gldformat.blueBufferSize()) * _pfmt('alpha', glformat.alphaBufferSize(), glrformat.alphaBufferSize(), gldformat.alphaBufferSize()) * _pfmt('depth', glformat.depthBufferSize(), glrformat.depthBufferSize(), gldformat.depthBufferSize()) # <<<<<<<<<<<<<< * _pfmt('options', glformat.options(), glrformat.options(), gldformat.options()) * _pfmt('profile', glformat.profile(), glrformat.profile(), gldformat.profile()) */ __pyx_f_10_qt_qtwes2__pfmt(((char *)"depth"), __pyx_v_glformat.depthBufferSize(), __pyx_v_glrformat.depthBufferSize(), __pyx_v_gldformat.depthBufferSize()); /* "_qt_qtwes2.pyx":538 * _pfmt('alpha', glformat.alphaBufferSize(), glrformat.alphaBufferSize(), gldformat.alphaBufferSize()) * _pfmt('depth', glformat.depthBufferSize(), glrformat.depthBufferSize(), gldformat.depthBufferSize()) * _pfmt('options', glformat.options(), glrformat.options(), gldformat.options()) # <<<<<<<<<<<<<< * _pfmt('profile', glformat.profile(), glrformat.profile(), gldformat.profile()) * _pfmt('renderableType', glformat.renderableType(), glrformat.renderableType(), gldformat.renderableType()) */ __pyx_f_10_qt_qtwes2__pfmt(((char *)"options"), __pyx_v_glformat.options(), __pyx_v_glrformat.options(), __pyx_v_gldformat.options()); /* "_qt_qtwes2.pyx":539 * _pfmt('depth', glformat.depthBufferSize(), glrformat.depthBufferSize(), gldformat.depthBufferSize()) * _pfmt('options', glformat.options(), glrformat.options(), gldformat.options()) * _pfmt('profile', glformat.profile(), glrformat.profile(), gldformat.profile()) # <<<<<<<<<<<<<< * _pfmt('renderableType', glformat.renderableType(), glrformat.renderableType(), gldformat.renderableType()) * _pfmt('samples', glformat.samples(), glrformat.samples(), gldformat.samples()) */ __pyx_f_10_qt_qtwes2__pfmt(((char *)"profile"), __pyx_v_glformat.profile(), __pyx_v_glrformat.profile(), __pyx_v_gldformat.profile()); /* "_qt_qtwes2.pyx":540 * _pfmt('options', glformat.options(), glrformat.options(), gldformat.options()) * _pfmt('profile', glformat.profile(), glrformat.profile(), gldformat.profile()) * _pfmt('renderableType', glformat.renderableType(), glrformat.renderableType(), gldformat.renderableType()) # <<<<<<<<<<<<<< * _pfmt('samples', glformat.samples(), glrformat.samples(), gldformat.samples()) * _pfmt('stencil', glformat.stencilBufferSize(), glrformat.stencilBufferSize(), gldformat.stencilBufferSize()) */ __pyx_f_10_qt_qtwes2__pfmt(((char *)"renderableType"), __pyx_v_glformat.renderableType(), __pyx_v_glrformat.renderableType(), __pyx_v_gldformat.renderableType()); /* "_qt_qtwes2.pyx":541 * _pfmt('profile', glformat.profile(), glrformat.profile(), gldformat.profile()) * _pfmt('renderableType', glformat.renderableType(), glrformat.renderableType(), gldformat.renderableType()) * _pfmt('samples', glformat.samples(), glrformat.samples(), gldformat.samples()) # <<<<<<<<<<<<<< * _pfmt('stencil', glformat.stencilBufferSize(), glrformat.stencilBufferSize(), gldformat.stencilBufferSize()) * _pfmt('stereo', glformat.stereo(), glrformat.stereo(), gldformat.stereo()) */ __pyx_f_10_qt_qtwes2__pfmt(((char *)"samples"), __pyx_v_glformat.samples(), __pyx_v_glrformat.samples(), __pyx_v_gldformat.samples()); /* "_qt_qtwes2.pyx":542 * _pfmt('renderableType', glformat.renderableType(), glrformat.renderableType(), gldformat.renderableType()) * _pfmt('samples', glformat.samples(), glrformat.samples(), gldformat.samples()) * _pfmt('stencil', glformat.stencilBufferSize(), glrformat.stencilBufferSize(), gldformat.stencilBufferSize()) # <<<<<<<<<<<<<< * _pfmt('stereo', glformat.stereo(), glrformat.stereo(), gldformat.stereo()) * _pfmt('swapBehavior', glformat.swapBehavior(), glrformat.swapBehavior(), gldformat.swapBehavior()) */ __pyx_f_10_qt_qtwes2__pfmt(((char *)"stencil"), __pyx_v_glformat.stencilBufferSize(), __pyx_v_glrformat.stencilBufferSize(), __pyx_v_gldformat.stencilBufferSize()); /* "_qt_qtwes2.pyx":543 * _pfmt('samples', glformat.samples(), glrformat.samples(), gldformat.samples()) * _pfmt('stencil', glformat.stencilBufferSize(), glrformat.stencilBufferSize(), gldformat.stencilBufferSize()) * _pfmt('stereo', glformat.stereo(), glrformat.stereo(), gldformat.stereo()) # <<<<<<<<<<<<<< * _pfmt('swapBehavior', glformat.swapBehavior(), glrformat.swapBehavior(), gldformat.swapBehavior()) * _pfmt('swapInterval', glformat.swapInterval(), glrformat.swapInterval(), gldformat.swapInterval()) */ __pyx_f_10_qt_qtwes2__pfmt(((char *)"stereo"), __pyx_v_glformat.stereo(), __pyx_v_glrformat.stereo(), __pyx_v_gldformat.stereo()); /* "_qt_qtwes2.pyx":544 * _pfmt('stencil', glformat.stencilBufferSize(), glrformat.stencilBufferSize(), gldformat.stencilBufferSize()) * _pfmt('stereo', glformat.stereo(), glrformat.stereo(), gldformat.stereo()) * _pfmt('swapBehavior', glformat.swapBehavior(), glrformat.swapBehavior(), gldformat.swapBehavior()) # <<<<<<<<<<<<<< * _pfmt('swapInterval', glformat.swapInterval(), glrformat.swapInterval(), gldformat.swapInterval()) * _pfmt2('version', glformat.majorVersion(), glformat.minorVersion(), */ __pyx_f_10_qt_qtwes2__pfmt(((char *)"swapBehavior"), __pyx_v_glformat.swapBehavior(), __pyx_v_glrformat.swapBehavior(), __pyx_v_gldformat.swapBehavior()); /* "_qt_qtwes2.pyx":545 * _pfmt('stereo', glformat.stereo(), glrformat.stereo(), gldformat.stereo()) * _pfmt('swapBehavior', glformat.swapBehavior(), glrformat.swapBehavior(), gldformat.swapBehavior()) * _pfmt('swapInterval', glformat.swapInterval(), glrformat.swapInterval(), gldformat.swapInterval()) # <<<<<<<<<<<<<< * _pfmt2('version', glformat.majorVersion(), glformat.minorVersion(), * glrformat.majorVersion(), glrformat.minorVersion(), */ __pyx_f_10_qt_qtwes2__pfmt(((char *)"swapInterval"), __pyx_v_glformat.swapInterval(), __pyx_v_glrformat.swapInterval(), __pyx_v_gldformat.swapInterval()); /* "_qt_qtwes2.pyx":546 * _pfmt('swapBehavior', glformat.swapBehavior(), glrformat.swapBehavior(), gldformat.swapBehavior()) * _pfmt('swapInterval', glformat.swapInterval(), glrformat.swapInterval(), gldformat.swapInterval()) * _pfmt2('version', glformat.majorVersion(), glformat.minorVersion(), # <<<<<<<<<<<<<< * glrformat.majorVersion(), glrformat.minorVersion(), * gldformat.majorVersion(), gldformat.minorVersion()) */ __pyx_f_10_qt_qtwes2__pfmt2(((char *)"version"), __pyx_v_glformat.majorVersion(), __pyx_v_glformat.minorVersion(), __pyx_v_glrformat.majorVersion(), __pyx_v_glrformat.minorVersion(), __pyx_v_gldformat.majorVersion(), __pyx_v_gldformat.minorVersion()); /* "_qt_qtwes2.pyx":549 * glrformat.majorVersion(), glrformat.minorVersion(), * gldformat.majorVersion(), gldformat.minorVersion()) * puts('OpenGL context:') # <<<<<<<<<<<<<< * cdef int i #px+ * i = openGLModuleType() */ puts(((char const *)"OpenGL context:")); /* "_qt_qtwes2.pyx":551 * puts('OpenGL context:') * cdef int i #px+ * i = openGLModuleType() # <<<<<<<<<<<<<< * if i == LibGL: * puts(' module type: libGL') */ __pyx_v_i = QOpenGLContext::openGLModuleType(); /* "_qt_qtwes2.pyx":552 * cdef int i #px+ * i = openGLModuleType() * if i == LibGL: # <<<<<<<<<<<<<< * puts(' module type: libGL') * elif i == LibGLES: */ switch (__pyx_v_i) { case QOpenGLContext::LibGL: /* "_qt_qtwes2.pyx":553 * i = openGLModuleType() * if i == LibGL: * puts(' module type: libGL') # <<<<<<<<<<<<<< * elif i == LibGLES: * puts(' module type: LibGLES') */ puts(((char const *)" module type: libGL")); /* "_qt_qtwes2.pyx":552 * cdef int i #px+ * i = openGLModuleType() * if i == LibGL: # <<<<<<<<<<<<<< * puts(' module type: libGL') * elif i == LibGLES: */ break; /* "_qt_qtwes2.pyx":554 * if i == LibGL: * puts(' module type: libGL') * elif i == LibGLES: # <<<<<<<<<<<<<< * puts(' module type: LibGLES') * else: */ case QOpenGLContext::LibGLES: /* "_qt_qtwes2.pyx":555 * puts(' module type: libGL') * elif i == LibGLES: * puts(' module type: LibGLES') # <<<<<<<<<<<<<< * else: * printf(' unknown module type: %d\n', i) */ puts(((char const *)" module type: LibGLES")); /* "_qt_qtwes2.pyx":554 * if i == LibGL: * puts(' module type: libGL') * elif i == LibGLES: # <<<<<<<<<<<<<< * puts(' module type: LibGLES') * else: */ break; default: /* "_qt_qtwes2.pyx":557 * puts(' module type: LibGLES') * else: * printf(' unknown module type: %d\n', i) # <<<<<<<<<<<<<< * i = glcontext.isOpenGLES() * if glcontext.isOpenGLES(): */ printf(((char const *)" unknown module type: %d\n"), __pyx_v_i); break; } /* "_qt_qtwes2.pyx":558 * else: * printf(' unknown module type: %d\n', i) * i = glcontext.isOpenGLES() # <<<<<<<<<<<<<< * if glcontext.isOpenGLES(): * puts(' isOpenGLES: True') */ __pyx_v_i = __pyx_v_glcontext->isOpenGLES(); /* "_qt_qtwes2.pyx":559 * printf(' unknown module type: %d\n', i) * i = glcontext.isOpenGLES() * if glcontext.isOpenGLES(): # <<<<<<<<<<<<<< * puts(' isOpenGLES: True') * else: */ __pyx_t_2 = (__pyx_v_glcontext->isOpenGLES() != 0); if (__pyx_t_2) { /* "_qt_qtwes2.pyx":560 * i = glcontext.isOpenGLES() * if glcontext.isOpenGLES(): * puts(' isOpenGLES: True') # <<<<<<<<<<<<<< * else: * puts(' isOpenGLES: False') */ puts(((char const *)" isOpenGLES: True")); /* "_qt_qtwes2.pyx":559 * printf(' unknown module type: %d\n', i) * i = glcontext.isOpenGLES() * if glcontext.isOpenGLES(): # <<<<<<<<<<<<<< * puts(' isOpenGLES: True') * else: */ goto __pyx_L3; } /* "_qt_qtwes2.pyx":562 * puts(' isOpenGLES: True') * else: * puts(' isOpenGLES: False') # <<<<<<<<<<<<<< * if glcontext.hasExtension(QByteArray(b"GL_KHR_debug")): * puts(' hasExtension GL_KHR_debug: True') */ /*else*/ { puts(((char const *)" isOpenGLES: False")); } __pyx_L3:; /* "_qt_qtwes2.pyx":563 * else: * puts(' isOpenGLES: False') * if glcontext.hasExtension(QByteArray(b"GL_KHR_debug")): # <<<<<<<<<<<<<< * puts(' hasExtension GL_KHR_debug: True') * else: */ __pyx_t_2 = (__pyx_v_glcontext->hasExtension(QByteArray(((char const *)"GL_KHR_debug"))) != 0); if (__pyx_t_2) { /* "_qt_qtwes2.pyx":564 * puts(' isOpenGLES: False') * if glcontext.hasExtension(QByteArray(b"GL_KHR_debug")): * puts(' hasExtension GL_KHR_debug: True') # <<<<<<<<<<<<<< * else: * puts(' hasExtension GL_KHR_debug: False') */ puts(((char const *)" hasExtension GL_KHR_debug: True")); /* "_qt_qtwes2.pyx":563 * else: * puts(' isOpenGLES: False') * if glcontext.hasExtension(QByteArray(b"GL_KHR_debug")): # <<<<<<<<<<<<<< * puts(' hasExtension GL_KHR_debug: True') * else: */ goto __pyx_L4; } /* "_qt_qtwes2.pyx":566 * puts(' hasExtension GL_KHR_debug: True') * else: * puts(' hasExtension GL_KHR_debug: False') # <<<<<<<<<<<<<< * #XXX: not available in PyQt * #puts('OpenGL functions:') */ /*else*/ { puts(((char const *)" hasExtension GL_KHR_debug: False")); } __pyx_L4:; /* "_qt_qtwes2.pyx":569 * #XXX: not available in PyQt * #puts('OpenGL functions:') * cdef QOpenGLFunctions *glFuncs = glcontext.functions() #px+ # <<<<<<<<<<<<<< * # needed for clang * cdef int features = glFuncs.openGLFeatures() #px+ */ __pyx_v_glFuncs = __pyx_v_glcontext->functions(); /* "_qt_qtwes2.pyx":571 * cdef QOpenGLFunctions *glFuncs = glcontext.functions() #px+ * # needed for clang * cdef int features = glFuncs.openGLFeatures() #px+ # <<<<<<<<<<<<<< * printf(' features: 0x%0x\n', features) #px+ * */ __pyx_v_features = __pyx_v_glFuncs->openGLFeatures(); /* "_qt_qtwes2.pyx":572 * # needed for clang * cdef int features = glFuncs.openGLFeatures() #px+ * printf(' features: 0x%0x\n', features) #px+ # <<<<<<<<<<<<<< * * */ printf(((char const *)" features: 0x%0x\n"), __pyx_v_features); /* "_qt_qtwes2.pyx":526 * * ##pxm-FUNC P nogil * cdef void print_surface_info() nogil: # <<<<<<<<<<<<<< * cdef QOpenGLContext *glcontext #px+ * glcontext = currentContext() */ /* function exit code */ } /* "_qt_qtwes2.pyx":577 * #### ui: communicate with render-thread #### * * def set_pick_requested(pick_requested): # <<<<<<<<<<<<<< * uidata.pick_requested = pick_requested * */ /* Python wrapper */ static PyObject *__pyx_pw_10_qt_qtwes2_5set_pick_requested(PyObject *__pyx_self, PyObject *__pyx_v_pick_requested); /*proto*/ static PyMethodDef __pyx_mdef_10_qt_qtwes2_5set_pick_requested = {"set_pick_requested", (PyCFunction)__pyx_pw_10_qt_qtwes2_5set_pick_requested, METH_O, 0}; static PyObject *__pyx_pw_10_qt_qtwes2_5set_pick_requested(PyObject *__pyx_self, PyObject *__pyx_v_pick_requested) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("set_pick_requested (wrapper)", 0); __pyx_r = __pyx_pf_10_qt_qtwes2_4set_pick_requested(__pyx_self, ((PyObject *)__pyx_v_pick_requested)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_10_qt_qtwes2_4set_pick_requested(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_pick_requested) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations bool __pyx_t_1; __Pyx_RefNannySetupContext("set_pick_requested", 0); /* "_qt_qtwes2.pyx":578 * * def set_pick_requested(pick_requested): * uidata.pick_requested = pick_requested # <<<<<<<<<<<<<< * * ##pxm-FUNC P */ __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_pick_requested); if (unlikely((__pyx_t_1 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(0, 578, __pyx_L1_error) __pyx_v_10_qt_qtwes2_uidata.pick_requested = __pyx_t_1; /* "_qt_qtwes2.pyx":577 * #### ui: communicate with render-thread #### * * def set_pick_requested(pick_requested): # <<<<<<<<<<<<<< * uidata.pick_requested = pick_requested * */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("_qt_qtwes2.set_pick_requested", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwes2.pyx":581 * * ##pxm-FUNC P * cpdef set_atlas_size(int width, int height): # <<<<<<<<<<<<<< * uidata.atlas_changed = True * uidata.atlas_width = width */ static PyObject *__pyx_pw_10_qt_qtwes2_7set_atlas_size(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static PyObject *__pyx_f_10_qt_qtwes2_set_atlas_size(int __pyx_v_width, int __pyx_v_height, CYTHON_UNUSED int __pyx_skip_dispatch) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("set_atlas_size", 0); /* "_qt_qtwes2.pyx":582 * ##pxm-FUNC P * cpdef set_atlas_size(int width, int height): * uidata.atlas_changed = True # <<<<<<<<<<<<<< * uidata.atlas_width = width * uidata.atlas_height = height */ __pyx_v_10_qt_qtwes2_uidata.atlas_changed = 1; /* "_qt_qtwes2.pyx":583 * cpdef set_atlas_size(int width, int height): * uidata.atlas_changed = True * uidata.atlas_width = width # <<<<<<<<<<<<<< * uidata.atlas_height = height * */ __pyx_v_10_qt_qtwes2_uidata.atlas_width = __pyx_v_width; /* "_qt_qtwes2.pyx":584 * uidata.atlas_changed = True * uidata.atlas_width = width * uidata.atlas_height = height # <<<<<<<<<<<<<< * * ##pxm-FUNC P */ __pyx_v_10_qt_qtwes2_uidata.atlas_height = __pyx_v_height; /* "_qt_qtwes2.pyx":581 * * ##pxm-FUNC P * cpdef set_atlas_size(int width, int height): # <<<<<<<<<<<<<< * uidata.atlas_changed = True * uidata.atlas_width = width */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* Python wrapper */ static PyObject *__pyx_pw_10_qt_qtwes2_7set_atlas_size(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static PyObject *__pyx_pw_10_qt_qtwes2_7set_atlas_size(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { int __pyx_v_width; int __pyx_v_height; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("set_atlas_size (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_width,&__pyx_n_s_height,0}; PyObject* values[2] = {0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_width)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_height)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("set_atlas_size", 1, 2, 2, 1); __PYX_ERR(0, 581, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_atlas_size") < 0)) __PYX_ERR(0, 581, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); } __pyx_v_width = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_width == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 581, __pyx_L3_error) __pyx_v_height = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_height == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 581, __pyx_L3_error) } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("set_atlas_size", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 581, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("_qt_qtwes2.set_atlas_size", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_10_qt_qtwes2_6set_atlas_size(__pyx_self, __pyx_v_width, __pyx_v_height); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_10_qt_qtwes2_6set_atlas_size(CYTHON_UNUSED PyObject *__pyx_self, int __pyx_v_width, int __pyx_v_height) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("set_atlas_size", 0); __Pyx_XDECREF(__pyx_r); __pyx_t_1 = __pyx_f_10_qt_qtwes2_set_atlas_size(__pyx_v_width, __pyx_v_height, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 581, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("_qt_qtwes2.set_atlas_size", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwes2.pyx":587 * * ##pxm-FUNC P * cdef void set_default_surface_format(): # <<<<<<<<<<<<<< * cdef QSurfaceFormat glformat #px/ * #glformat = QSurfaceFormat() */ static void __pyx_f_10_qt_qtwes2_set_default_surface_format(void) { QSurfaceFormat __pyx_v_glformat; int __pyx_v_samples; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; int __pyx_t_3; int __pyx_t_4; __Pyx_RefNannySetupContext("set_default_surface_format", 0); /* "_qt_qtwes2.pyx":591 * #glformat = QSurfaceFormat() * cdef int samples #px+ * samples = settings['draw.samples'] # <<<<<<<<<<<<<< * if samples > 0: * glformat.setSamples(2**samples) */ __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 591, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyObject_GetItem(__pyx_t_1, __pyx_kp_u_draw_samples); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 591, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 591, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_samples = __pyx_t_3; /* "_qt_qtwes2.pyx":592 * cdef int samples #px+ * samples = settings['draw.samples'] * if samples > 0: # <<<<<<<<<<<<<< * glformat.setSamples(2**samples) * if debug & DEBUG_VFPS: */ __pyx_t_4 = ((__pyx_v_samples > 0) != 0); if (__pyx_t_4) { /* "_qt_qtwes2.pyx":593 * samples = settings['draw.samples'] * if samples > 0: * glformat.setSamples(2**samples) # <<<<<<<<<<<<<< * if debug & DEBUG_VFPS: * glformat.setSwapInterval(0) */ __pyx_v_glformat.setSamples(__Pyx_pow_long(2, ((long)__pyx_v_samples))); /* "_qt_qtwes2.pyx":592 * cdef int samples #px+ * samples = settings['draw.samples'] * if samples > 0: # <<<<<<<<<<<<<< * glformat.setSamples(2**samples) * if debug & DEBUG_VFPS: */ } /* "_qt_qtwes2.pyx":594 * if samples > 0: * glformat.setSamples(2**samples) * if debug & DEBUG_VFPS: # <<<<<<<<<<<<<< * glformat.setSwapInterval(0) * IF 'es2' != 'ogl': #px+ */ __pyx_t_4 = ((__pyx_v_10_qt_qtwes2_debug & __pyx_e_10_qt_qtwes2_DEBUG_VFPS) != 0); if (__pyx_t_4) { /* "_qt_qtwes2.pyx":595 * glformat.setSamples(2**samples) * if debug & DEBUG_VFPS: * glformat.setSwapInterval(0) # <<<<<<<<<<<<<< * IF 'es2' != 'ogl': #px+ * glformat.setRenderableType(OpenGLES) #px+ */ __pyx_v_glformat.setSwapInterval(0); /* "_qt_qtwes2.pyx":594 * if samples > 0: * glformat.setSamples(2**samples) * if debug & DEBUG_VFPS: # <<<<<<<<<<<<<< * glformat.setSwapInterval(0) * IF 'es2' != 'ogl': #px+ */ } /* "_qt_qtwes2.pyx":597 * glformat.setSwapInterval(0) * IF 'es2' != 'ogl': #px+ * glformat.setRenderableType(OpenGLES) #px+ # <<<<<<<<<<<<<< * if debug & DEBUG_GLDEBUG: * glformat.setOption(DebugContext) */ __pyx_v_glformat.setRenderableType(QSurfaceFormat::OpenGLES); /* "_qt_qtwes2.pyx":598 * IF 'es2' != 'ogl': #px+ * glformat.setRenderableType(OpenGLES) #px+ * if debug & DEBUG_GLDEBUG: # <<<<<<<<<<<<<< * glformat.setOption(DebugContext) * uidata.default_format = defaultFormat() */ __pyx_t_4 = ((__pyx_v_10_qt_qtwes2_debug & __pyx_e_10_qt_qtwes2_DEBUG_GLDEBUG) != 0); if (__pyx_t_4) { /* "_qt_qtwes2.pyx":599 * glformat.setRenderableType(OpenGLES) #px+ * if debug & DEBUG_GLDEBUG: * glformat.setOption(DebugContext) # <<<<<<<<<<<<<< * uidata.default_format = defaultFormat() * setDefaultFormat(glformat) */ __pyx_v_glformat.setOption(QSurfaceFormat::DebugContext); /* "_qt_qtwes2.pyx":598 * IF 'es2' != 'ogl': #px+ * glformat.setRenderableType(OpenGLES) #px+ * if debug & DEBUG_GLDEBUG: # <<<<<<<<<<<<<< * glformat.setOption(DebugContext) * uidata.default_format = defaultFormat() */ } /* "_qt_qtwes2.pyx":600 * if debug & DEBUG_GLDEBUG: * glformat.setOption(DebugContext) * uidata.default_format = defaultFormat() # <<<<<<<<<<<<<< * setDefaultFormat(glformat) * */ __pyx_v_10_qt_qtwes2_uidata.default_format = QSurfaceFormat::defaultFormat(); /* "_qt_qtwes2.pyx":601 * glformat.setOption(DebugContext) * uidata.default_format = defaultFormat() * setDefaultFormat(glformat) # <<<<<<<<<<<<<< * * */ QSurfaceFormat::setDefaultFormat(__pyx_v_glformat); /* "_qt_qtwes2.pyx":587 * * ##pxm-FUNC P * cdef void set_default_surface_format(): # <<<<<<<<<<<<<< * cdef QSurfaceFormat glformat #px/ * #glformat = QSurfaceFormat() */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_WriteUnraisable("_qt_qtwes2.set_default_surface_format", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); } /* "_qt_qtwes2.pyx":945 * # also used in beforeSynchronizing * ##pxm-FUNC P nogil * cdef void dump_info(const char *msg, const QObject *qtobj) nogil: # <<<<<<<<<<<<<< * cdef const QMetaObject *mo #px+ * cdef QMetaProperty p #px+ */ static void __pyx_f_10_qt_qtwes2_dump_info(char const *__pyx_v_msg, QObject const *__pyx_v_qtobj) { QMetaObject const *__pyx_v_mo; QMetaProperty __pyx_v_p; QMetaMethod __pyx_v_m; int __pyx_v_i; int __pyx_t_1; int __pyx_t_2; int __pyx_t_3; /* "_qt_qtwes2.pyx":951 * cdef int i #px+ * * mo = qtobj.metaObject() # <<<<<<<<<<<<<< * * printf('==== %s\n', msg) */ __pyx_v_mo = __pyx_v_qtobj->metaObject(); /* "_qt_qtwes2.pyx":953 * mo = qtobj.metaObject() * * printf('==== %s\n', msg) # <<<<<<<<<<<<<< * #printf('Object-Name: %s\n', q2charp(qtobj.objectName())) * printf('Class-Name: %s\n', mo.className()) */ printf(((char const *)"==== %s\n"), __pyx_v_msg); /* "_qt_qtwes2.pyx":955 * printf('==== %s\n', msg) * #printf('Object-Name: %s\n', q2charp(qtobj.objectName())) * printf('Class-Name: %s\n', mo.className()) # <<<<<<<<<<<<<< * if 0 < mo.propertyCount(): * printf('Properties: %d (%d inherited)\n', mo.propertyCount(), mo.propertyOffset()) */ printf(((char const *)"Class-Name: %s\n"), __pyx_v_mo->className()); /* "_qt_qtwes2.pyx":956 * #printf('Object-Name: %s\n', q2charp(qtobj.objectName())) * printf('Class-Name: %s\n', mo.className()) * if 0 < mo.propertyCount(): # <<<<<<<<<<<<<< * printf('Properties: %d (%d inherited)\n', mo.propertyCount(), mo.propertyOffset()) * for i in range(mo.propertyCount()): */ __pyx_t_1 = ((0 < __pyx_v_mo->propertyCount()) != 0); if (__pyx_t_1) { /* "_qt_qtwes2.pyx":957 * printf('Class-Name: %s\n', mo.className()) * if 0 < mo.propertyCount(): * printf('Properties: %d (%d inherited)\n', mo.propertyCount(), mo.propertyOffset()) # <<<<<<<<<<<<<< * for i in range(mo.propertyCount()): * p = mo.property(i) */ printf(((char const *)"Properties: %d (%d inherited)\n"), __pyx_v_mo->propertyCount(), __pyx_v_mo->propertyOffset()); /* "_qt_qtwes2.pyx":958 * if 0 < mo.propertyCount(): * printf('Properties: %d (%d inherited)\n', mo.propertyCount(), mo.propertyOffset()) * for i in range(mo.propertyCount()): # <<<<<<<<<<<<<< * p = mo.property(i) * printf(' %d %s %s\n', i, p.typeName(), p.name()) */ __pyx_t_2 = __pyx_v_mo->propertyCount(); for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) { __pyx_v_i = __pyx_t_3; /* "_qt_qtwes2.pyx":959 * printf('Properties: %d (%d inherited)\n', mo.propertyCount(), mo.propertyOffset()) * for i in range(mo.propertyCount()): * p = mo.property(i) # <<<<<<<<<<<<<< * printf(' %d %s %s\n', i, p.typeName(), p.name()) * if 0 < mo.methodCount(): */ __pyx_v_p = __pyx_v_mo->property(__pyx_v_i); /* "_qt_qtwes2.pyx":960 * for i in range(mo.propertyCount()): * p = mo.property(i) * printf(' %d %s %s\n', i, p.typeName(), p.name()) # <<<<<<<<<<<<<< * if 0 < mo.methodCount(): * printf('Methods: %d (%d inherited)\n', mo.methodCount(), mo.methodOffset()) */ printf(((char const *)" %d %s %s\n"), __pyx_v_i, __pyx_v_p.typeName(), __pyx_v_p.name()); } /* "_qt_qtwes2.pyx":956 * #printf('Object-Name: %s\n', q2charp(qtobj.objectName())) * printf('Class-Name: %s\n', mo.className()) * if 0 < mo.propertyCount(): # <<<<<<<<<<<<<< * printf('Properties: %d (%d inherited)\n', mo.propertyCount(), mo.propertyOffset()) * for i in range(mo.propertyCount()): */ } /* "_qt_qtwes2.pyx":961 * p = mo.property(i) * printf(' %d %s %s\n', i, p.typeName(), p.name()) * if 0 < mo.methodCount(): # <<<<<<<<<<<<<< * printf('Methods: %d (%d inherited)\n', mo.methodCount(), mo.methodOffset()) * for i in range(mo.methodCount()): */ __pyx_t_1 = ((0 < __pyx_v_mo->methodCount()) != 0); if (__pyx_t_1) { /* "_qt_qtwes2.pyx":962 * printf(' %d %s %s\n', i, p.typeName(), p.name()) * if 0 < mo.methodCount(): * printf('Methods: %d (%d inherited)\n', mo.methodCount(), mo.methodOffset()) # <<<<<<<<<<<<<< * for i in range(mo.methodCount()): * m = mo.method(i) */ printf(((char const *)"Methods: %d (%d inherited)\n"), __pyx_v_mo->methodCount(), __pyx_v_mo->methodOffset()); /* "_qt_qtwes2.pyx":963 * if 0 < mo.methodCount(): * printf('Methods: %d (%d inherited)\n', mo.methodCount(), mo.methodOffset()) * for i in range(mo.methodCount()): # <<<<<<<<<<<<<< * m = mo.method(i) * printf(' %d %s %s\n', i, m.typeName(), m.methodSignature().data()) */ __pyx_t_2 = __pyx_v_mo->methodCount(); for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) { __pyx_v_i = __pyx_t_3; /* "_qt_qtwes2.pyx":964 * printf('Methods: %d (%d inherited)\n', mo.methodCount(), mo.methodOffset()) * for i in range(mo.methodCount()): * m = mo.method(i) # <<<<<<<<<<<<<< * printf(' %d %s %s\n', i, m.typeName(), m.methodSignature().data()) * */ __pyx_v_m = __pyx_v_mo->method(__pyx_v_i); /* "_qt_qtwes2.pyx":965 * for i in range(mo.methodCount()): * m = mo.method(i) * printf(' %d %s %s\n', i, m.typeName(), m.methodSignature().data()) # <<<<<<<<<<<<<< * * ##pxm>IF 'qtw' == 'qtq' */ printf(((char const *)" %d %s %s\n"), __pyx_v_i, __pyx_v_m.typeName(), __pyx_v_m.methodSignature().data()); } /* "_qt_qtwes2.pyx":961 * p = mo.property(i) * printf(' %d %s %s\n', i, p.typeName(), p.name()) * if 0 < mo.methodCount(): # <<<<<<<<<<<<<< * printf('Methods: %d (%d inherited)\n', mo.methodCount(), mo.methodOffset()) * for i in range(mo.methodCount()): */ } /* "_qt_qtwes2.pyx":945 * # also used in beforeSynchronizing * ##pxm-FUNC P nogil * cdef void dump_info(const char *msg, const QObject *qtobj) nogil: # <<<<<<<<<<<<<< * cdef const QMetaObject *mo #px+ * cdef QMetaProperty p #px+ */ /* function exit code */ } /* "_qt_qtwes2.pyx":981 * #~ ##pxm>IF_END * * def set_debug_text(text): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * qtui.set_debug_text(str2q(text)) */ /* Python wrapper */ static PyObject *__pyx_pw_10_qt_qtwes2_9set_debug_text(PyObject *__pyx_self, PyObject *__pyx_v_text); /*proto*/ static PyMethodDef __pyx_mdef_10_qt_qtwes2_9set_debug_text = {"set_debug_text", (PyCFunction)__pyx_pw_10_qt_qtwes2_9set_debug_text, METH_O, 0}; static PyObject *__pyx_pw_10_qt_qtwes2_9set_debug_text(PyObject *__pyx_self, PyObject *__pyx_v_text) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("set_debug_text (wrapper)", 0); __pyx_r = __pyx_pf_10_qt_qtwes2_8set_debug_text(__pyx_self, ((PyObject *)__pyx_v_text)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_10_qt_qtwes2_8set_debug_text(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_text) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("set_debug_text", 0); /* "_qt_qtwes2.pyx":983 * def set_debug_text(text): * ##pxm>IF 'qtw' == 'qtw' * qtui.set_debug_text(str2q(text)) # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtq' * #~ ctx_set(b'debugmsg', text) */ __pyx_f_6_qtui__set_debug_text(__pyx_f_10_qt_qtwes2_str2q(__pyx_v_text)); /* "_qt_qtwes2.pyx":981 * #~ ##pxm>IF_END * * def set_debug_text(text): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * qtui.set_debug_text(str2q(text)) */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwes2.pyx":988 * #~ ##pxm>IF_END * * def set_edit_moves(code, pos): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * uidata.move_edit.setText(str2q(code)) */ /* Python wrapper */ static PyObject *__pyx_pw_10_qt_qtwes2_11set_edit_moves(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static PyMethodDef __pyx_mdef_10_qt_qtwes2_11set_edit_moves = {"set_edit_moves", (PyCFunction)__pyx_pw_10_qt_qtwes2_11set_edit_moves, METH_VARARGS|METH_KEYWORDS, 0}; static PyObject *__pyx_pw_10_qt_qtwes2_11set_edit_moves(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_code = 0; PyObject *__pyx_v_pos = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("set_edit_moves (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_code,&__pyx_n_s_pos,0}; PyObject* values[2] = {0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_code)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_pos)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("set_edit_moves", 1, 2, 2, 1); __PYX_ERR(0, 988, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_edit_moves") < 0)) __PYX_ERR(0, 988, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); } __pyx_v_code = values[0]; __pyx_v_pos = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("set_edit_moves", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 988, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("_qt_qtwes2.set_edit_moves", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_10_qt_qtwes2_10set_edit_moves(__pyx_self, __pyx_v_code, __pyx_v_pos); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_10_qt_qtwes2_10set_edit_moves(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_code, PyObject *__pyx_v_pos) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; __Pyx_RefNannySetupContext("set_edit_moves", 0); /* "_qt_qtwes2.pyx":990 * def set_edit_moves(code, pos): * ##pxm>IF 'qtw' == 'qtw' * uidata.move_edit.setText(str2q(code)) # <<<<<<<<<<<<<< * uidata.move_edit.setCursorPosition(pos) * ##pxm>IF 'qtw' == 'qtq' */ __pyx_v_10_qt_qtwes2_uidata.move_edit->setText(__pyx_f_10_qt_qtwes2_str2q(__pyx_v_code)); /* "_qt_qtwes2.pyx":991 * ##pxm>IF 'qtw' == 'qtw' * uidata.move_edit.setText(str2q(code)) * uidata.move_edit.setCursorPosition(pos) # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtq' * #~ ctx_set(b'edittext', code) */ __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_pos); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 991, __pyx_L1_error) __pyx_v_10_qt_qtwes2_uidata.move_edit->setCursorPosition(__pyx_t_1); /* "_qt_qtwes2.pyx":988 * #~ ##pxm>IF_END * * def set_edit_moves(code, pos): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * uidata.move_edit.setText(str2q(code)) */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("_qt_qtwes2.set_edit_moves", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwes2.pyx":997 * #~ ##pxm>IF_END * * def set_status_text(text): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * uidata.statuslabel.setText(str2q(text)) */ /* Python wrapper */ static PyObject *__pyx_pw_10_qt_qtwes2_13set_status_text(PyObject *__pyx_self, PyObject *__pyx_v_text); /*proto*/ static PyMethodDef __pyx_mdef_10_qt_qtwes2_13set_status_text = {"set_status_text", (PyCFunction)__pyx_pw_10_qt_qtwes2_13set_status_text, METH_O, 0}; static PyObject *__pyx_pw_10_qt_qtwes2_13set_status_text(PyObject *__pyx_self, PyObject *__pyx_v_text) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("set_status_text (wrapper)", 0); __pyx_r = __pyx_pf_10_qt_qtwes2_12set_status_text(__pyx_self, ((PyObject *)__pyx_v_text)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_10_qt_qtwes2_12set_status_text(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_text) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("set_status_text", 0); /* "_qt_qtwes2.pyx":999 * def set_status_text(text): * ##pxm>IF 'qtw' == 'qtw' * uidata.statuslabel.setText(str2q(text)) # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtq' * #~ ctx_set(b'status', text) */ __pyx_v_10_qt_qtwes2_uidata.statuslabel->setText(__pyx_f_10_qt_qtwes2_str2q(__pyx_v_text)); /* "_qt_qtwes2.pyx":997 * #~ ##pxm>IF_END * * def set_status_text(text): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * uidata.statuslabel.setText(str2q(text)) */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwes2.pyx":1006 * show_message_text = None * ##pxm-FUNC P with gil * cdef void show_message_cb() with gil: # <<<<<<<<<<<<<< * global show_message_text * ##pxm>IF 'qtw' == 'qtw' */ static void __pyx_f_10_qt_qtwes2_show_message_cb(void) { QMessageBox *__pyx_v_dialog; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("show_message_cb", 0); /* "_qt_qtwes2.pyx":1009 * global show_message_text * ##pxm>IF 'qtw' == 'qtw' * cdef QMessageBox *dialog = new QMessageBox(uidata.mainwindow) #px/ # <<<<<<<<<<<<<< * #dialog = QMessageBox(uidata.mainwindow) * dialog.setWindowTitle(str2q(_(config_.APPNAME))) */ __pyx_v_dialog = new QMessageBox(__pyx_v_10_qt_qtwes2_uidata.mainwindow); /* "_qt_qtwes2.pyx":1011 * cdef QMessageBox *dialog = new QMessageBox(uidata.mainwindow) #px/ * #dialog = QMessageBox(uidata.mainwindow) * dialog.setWindowTitle(str2q(_(config_.APPNAME))) # <<<<<<<<<<<<<< * dialog.setText(str2q(show_message_text)) * dialog.setIcon(QMessageBox_Information) */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s__4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1011, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_config); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1011, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_APPNAME); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1011, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } if (!__pyx_t_3) { __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1011, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_1); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_4}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1011, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_4}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1011, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1011, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_4); __pyx_t_4 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1011, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_dialog->setWindowTitle(__pyx_f_10_qt_qtwes2_str2q(__pyx_t_1)); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwes2.pyx":1012 * #dialog = QMessageBox(uidata.mainwindow) * dialog.setWindowTitle(str2q(_(config_.APPNAME))) * dialog.setText(str2q(show_message_text)) # <<<<<<<<<<<<<< * dialog.setIcon(QMessageBox_Information) * dialog.setStandardButtons(QMessageBox_Close) */ __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_show_message_text); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1012, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_dialog->setText(__pyx_f_10_qt_qtwes2_str2q(__pyx_t_1)); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwes2.pyx":1013 * dialog.setWindowTitle(str2q(_(config_.APPNAME))) * dialog.setText(str2q(show_message_text)) * dialog.setIcon(QMessageBox_Information) # <<<<<<<<<<<<<< * dialog.setStandardButtons(QMessageBox_Close) * dialog.exec() */ __pyx_v_dialog->setIcon(QMessageBox::Information); /* "_qt_qtwes2.pyx":1014 * dialog.setText(str2q(show_message_text)) * dialog.setIcon(QMessageBox_Information) * dialog.setStandardButtons(QMessageBox_Close) # <<<<<<<<<<<<<< * dialog.exec() * del dialog #px+ */ __pyx_v_dialog->setStandardButtons(QMessageBox::Close); /* "_qt_qtwes2.pyx":1015 * dialog.setIcon(QMessageBox_Information) * dialog.setStandardButtons(QMessageBox_Close) * dialog.exec() # <<<<<<<<<<<<<< * del dialog #px+ * ##pxm>IF 'qtw' == 'qtq' */ __pyx_v_dialog->exec(); /* "_qt_qtwes2.pyx":1016 * dialog.setStandardButtons(QMessageBox_Close) * dialog.exec() * del dialog #px+ # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtq' * #~ ctx_set(b'messagetext', show_message_text) */ delete __pyx_v_dialog; /* "_qt_qtwes2.pyx":1021 * #~ ctx_set(b'messagebox_visible', True) * #~ ##pxm>IF_END * show_message_text = None # <<<<<<<<<<<<<< * def show_message(message): * global show_message_text */ if (PyDict_SetItem(__pyx_d, __pyx_n_s_show_message_text, Py_None) < 0) __PYX_ERR(0, 1021, __pyx_L1_error) /* "_qt_qtwes2.pyx":1006 * show_message_text = None * ##pxm-FUNC P with gil * cdef void show_message_cb() with gil: # <<<<<<<<<<<<<< * global show_message_text * ##pxm>IF 'qtw' == 'qtw' */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_WriteUnraisable("_qt_qtwes2.show_message_cb", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwes2.pyx":1022 * #~ ##pxm>IF_END * show_message_text = None * def show_message(message): # <<<<<<<<<<<<<< * global show_message_text * show_message_text = message */ /* Python wrapper */ static PyObject *__pyx_pw_10_qt_qtwes2_15show_message(PyObject *__pyx_self, PyObject *__pyx_v_message); /*proto*/ static PyMethodDef __pyx_mdef_10_qt_qtwes2_15show_message = {"show_message", (PyCFunction)__pyx_pw_10_qt_qtwes2_15show_message, METH_O, 0}; static PyObject *__pyx_pw_10_qt_qtwes2_15show_message(PyObject *__pyx_self, PyObject *__pyx_v_message) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("show_message (wrapper)", 0); __pyx_r = __pyx_pf_10_qt_qtwes2_14show_message(__pyx_self, ((PyObject *)__pyx_v_message)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_10_qt_qtwes2_14show_message(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_message) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("show_message", 0); /* "_qt_qtwes2.pyx":1024 * def show_message(message): * global show_message_text * show_message_text = message # <<<<<<<<<<<<<< * singleShot(100, show_message_cb) #px/ * #QTimer.singleShot(100, show_message_cb) */ if (PyDict_SetItem(__pyx_d, __pyx_n_s_show_message_text, __pyx_v_message) < 0) __PYX_ERR(0, 1024, __pyx_L1_error) /* "_qt_qtwes2.pyx":1025 * global show_message_text * show_message_text = message * singleShot(100, show_message_cb) #px/ # <<<<<<<<<<<<<< * #QTimer.singleShot(100, show_message_cb) * */ QTimer::singleShot(0x64, __pyx_f_10_qt_qtwes2_show_message_cb); /* "_qt_qtwes2.pyx":1022 * #~ ##pxm>IF_END * show_message_text = None * def show_message(message): # <<<<<<<<<<<<<< * global show_message_text * show_message_text = message */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("_qt_qtwes2.show_message", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwes2.pyx":1030 * ##pxm>IF 'qtw' == 'qtw' * ##pxm-FUNC P * cdef void _fill_treestore(QStandardItem *parent, tree): # <<<<<<<<<<<<<< * cdef QStandardItem *item #px+ * for transl, func, subtree in tree: */ static void __pyx_f_10_qt_qtwes2__fill_treestore(QStandardItem *__pyx_v_parent, PyObject *__pyx_v_tree) { QStandardItem *__pyx_v_item; PyObject *__pyx_v_transl = NULL; PyObject *__pyx_v_func = NULL; PyObject *__pyx_v_subtree = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; Py_ssize_t __pyx_t_2; PyObject *(*__pyx_t_3)(PyObject *); PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; PyObject *__pyx_t_7 = NULL; PyObject *__pyx_t_8 = NULL; PyObject *(*__pyx_t_9)(PyObject *); int __pyx_t_10; int __pyx_t_11; __Pyx_RefNannySetupContext("_fill_treestore", 0); /* "_qt_qtwes2.pyx":1032 * cdef void _fill_treestore(QStandardItem *parent, tree): * cdef QStandardItem *item #px+ * for transl, func, subtree in tree: # <<<<<<<<<<<<<< * item = new QStandardItem(str2q(transl)) #px/ * #item = QStandardItem(str2q(transl)) */ if (likely(PyList_CheckExact(__pyx_v_tree)) || PyTuple_CheckExact(__pyx_v_tree)) { __pyx_t_1 = __pyx_v_tree; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0; __pyx_t_3 = NULL; } else { __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_tree); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1032, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1032, __pyx_L1_error) } for (;;) { if (likely(!__pyx_t_3)) { if (likely(PyList_CheckExact(__pyx_t_1))) { if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(0, 1032, __pyx_L1_error) #else __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1032, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); #endif } else { if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(0, 1032, __pyx_L1_error) #else __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1032, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); #endif } } else { __pyx_t_4 = __pyx_t_3(__pyx_t_1); if (unlikely(!__pyx_t_4)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 1032, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_4); } if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) { PyObject* sequence = __pyx_t_4; #if !CYTHON_COMPILING_IN_PYPY Py_ssize_t size = Py_SIZE(sequence); #else Py_ssize_t size = PySequence_Size(sequence); #endif if (unlikely(size != 3)) { if (size > 3) __Pyx_RaiseTooManyValuesError(3); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 1032, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_5 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1); __pyx_t_7 = PyTuple_GET_ITEM(sequence, 2); } else { __pyx_t_5 = PyList_GET_ITEM(sequence, 0); __pyx_t_6 = PyList_GET_ITEM(sequence, 1); __pyx_t_7 = PyList_GET_ITEM(sequence, 2); } __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(__pyx_t_7); #else __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1032, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1032, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1032, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); #endif __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else { Py_ssize_t index = -1; __pyx_t_8 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1032, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_9 = Py_TYPE(__pyx_t_8)->tp_iternext; index = 0; __pyx_t_5 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_5)) goto __pyx_L5_unpacking_failed; __Pyx_GOTREF(__pyx_t_5); index = 1; __pyx_t_6 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_6)) goto __pyx_L5_unpacking_failed; __Pyx_GOTREF(__pyx_t_6); index = 2; __pyx_t_7 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_7)) goto __pyx_L5_unpacking_failed; __Pyx_GOTREF(__pyx_t_7); if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_8), 3) < 0) __PYX_ERR(0, 1032, __pyx_L1_error) __pyx_t_9 = NULL; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; goto __pyx_L6_unpacking_done; __pyx_L5_unpacking_failed:; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_9 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 1032, __pyx_L1_error) __pyx_L6_unpacking_done:; } __Pyx_XDECREF_SET(__pyx_v_transl, __pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF_SET(__pyx_v_func, __pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF_SET(__pyx_v_subtree, __pyx_t_7); __pyx_t_7 = 0; /* "_qt_qtwes2.pyx":1033 * cdef QStandardItem *item #px+ * for transl, func, subtree in tree: * item = new QStandardItem(str2q(transl)) #px/ # <<<<<<<<<<<<<< * #item = QStandardItem(str2q(transl)) * if func is not None: */ __pyx_v_item = new QStandardItem(__pyx_f_10_qt_qtwes2_str2q(__pyx_v_transl)); /* "_qt_qtwes2.pyx":1035 * item = new QStandardItem(str2q(transl)) #px/ * #item = QStandardItem(str2q(transl)) * if func is not None: # <<<<<<<<<<<<<< * item.setData(tovariant(func)) * parent.appendRow(item) */ __pyx_t_10 = (__pyx_v_func != Py_None); __pyx_t_11 = (__pyx_t_10 != 0); if (__pyx_t_11) { /* "_qt_qtwes2.pyx":1036 * #item = QStandardItem(str2q(transl)) * if func is not None: * item.setData(tovariant(func)) # <<<<<<<<<<<<<< * parent.appendRow(item) * _fill_treestore(item, subtree) */ __pyx_v_item->setData(__pyx_f_10_qt_qtwes2_tovariant(__pyx_v_func)); /* "_qt_qtwes2.pyx":1035 * item = new QStandardItem(str2q(transl)) #px/ * #item = QStandardItem(str2q(transl)) * if func is not None: # <<<<<<<<<<<<<< * item.setData(tovariant(func)) * parent.appendRow(item) */ } /* "_qt_qtwes2.pyx":1037 * if func is not None: * item.setData(tovariant(func)) * parent.appendRow(item) # <<<<<<<<<<<<<< * _fill_treestore(item, subtree) * ##pxm>IF_END */ __pyx_v_parent->appendRow(__pyx_v_item); /* "_qt_qtwes2.pyx":1038 * item.setData(tovariant(func)) * parent.appendRow(item) * _fill_treestore(item, subtree) # <<<<<<<<<<<<<< * ##pxm>IF_END * */ __pyx_f_10_qt_qtwes2__fill_treestore(__pyx_v_item, __pyx_v_subtree); /* "_qt_qtwes2.pyx":1032 * cdef void _fill_treestore(QStandardItem *parent, tree): * cdef QStandardItem *item #px+ * for transl, func, subtree in tree: # <<<<<<<<<<<<<< * item = new QStandardItem(str2q(transl)) #px/ * #item = QStandardItem(str2q(transl)) */ } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwes2.pyx":1030 * ##pxm>IF 'qtw' == 'qtw' * ##pxm-FUNC P * cdef void _fill_treestore(QStandardItem *parent, tree): # <<<<<<<<<<<<<< * cdef QStandardItem *item #px+ * for transl, func, subtree in tree: */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_8); __Pyx_WriteUnraisable("_qt_qtwes2._fill_treestore", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_XDECREF(__pyx_v_transl); __Pyx_XDECREF(__pyx_v_func); __Pyx_XDECREF(__pyx_v_subtree); __Pyx_RefNannyFinishContext(); } /* "_qt_qtwes2.pyx":1041 * ##pxm>IF_END * * def fill_sidepane(plugin_data): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * # remove old plugins */ /* Python wrapper */ static PyObject *__pyx_pw_10_qt_qtwes2_17fill_sidepane(PyObject *__pyx_self, PyObject *__pyx_v_plugin_data); /*proto*/ static PyMethodDef __pyx_mdef_10_qt_qtwes2_17fill_sidepane = {"fill_sidepane", (PyCFunction)__pyx_pw_10_qt_qtwes2_17fill_sidepane, METH_O, 0}; static PyObject *__pyx_pw_10_qt_qtwes2_17fill_sidepane(PyObject *__pyx_self, PyObject *__pyx_v_plugin_data) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("fill_sidepane (wrapper)", 0); __pyx_r = __pyx_pf_10_qt_qtwes2_16fill_sidepane(__pyx_self, ((PyObject *)__pyx_v_plugin_data)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_10_qt_qtwes2_16fill_sidepane(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_plugin_data) { QStandardItem *__pyx_v_item; PyObject *__pyx_v_transl = NULL; PyObject *__pyx_v_func = NULL; PyObject *__pyx_v_subtree = NULL; QPushButton *__pyx_v_button; QTreeView *__pyx_v_treeview; PyObject *__pyx_v_i = NULL; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; Py_ssize_t __pyx_t_2; PyObject *(*__pyx_t_3)(PyObject *); PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; PyObject *__pyx_t_7 = NULL; PyObject *__pyx_t_8 = NULL; PyObject *(*__pyx_t_9)(PyObject *); int __pyx_t_10; int __pyx_t_11; PyObject *__pyx_t_12 = NULL; int __pyx_t_13; __Pyx_RefNannySetupContext("fill_sidepane", 0); /* "_qt_qtwes2.pyx":1044 * ##pxm>IF 'qtw' == 'qtw' * # remove old plugins * uidata.treestore.clear() # <<<<<<<<<<<<<< * qtui.clear_sidepane() * #self.plugin_group_widgets.clear() */ __pyx_v_10_qt_qtwes2_uidata.treestore->clear(); /* "_qt_qtwes2.pyx":1045 * # remove old plugins * uidata.treestore.clear() * qtui.clear_sidepane() # <<<<<<<<<<<<<< * #self.plugin_group_widgets.clear() * # fill treestore with plugins */ __pyx_f_6_qtui__clear_sidepane(); /* "_qt_qtwes2.pyx":1049 * # fill treestore with plugins * cdef QStandardItem *item #px+ * for transl, func, subtree in plugin_data: # <<<<<<<<<<<<<< * item = new QStandardItem(str2q(transl)) #px/ * #item = QStandardItem(str2q(transl)) */ if (likely(PyList_CheckExact(__pyx_v_plugin_data)) || PyTuple_CheckExact(__pyx_v_plugin_data)) { __pyx_t_1 = __pyx_v_plugin_data; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0; __pyx_t_3 = NULL; } else { __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_plugin_data); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1049, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1049, __pyx_L1_error) } for (;;) { if (likely(!__pyx_t_3)) { if (likely(PyList_CheckExact(__pyx_t_1))) { if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(0, 1049, __pyx_L1_error) #else __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1049, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); #endif } else { if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(0, 1049, __pyx_L1_error) #else __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1049, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); #endif } } else { __pyx_t_4 = __pyx_t_3(__pyx_t_1); if (unlikely(!__pyx_t_4)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 1049, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_4); } if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) { PyObject* sequence = __pyx_t_4; #if !CYTHON_COMPILING_IN_PYPY Py_ssize_t size = Py_SIZE(sequence); #else Py_ssize_t size = PySequence_Size(sequence); #endif if (unlikely(size != 3)) { if (size > 3) __Pyx_RaiseTooManyValuesError(3); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 1049, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_5 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1); __pyx_t_7 = PyTuple_GET_ITEM(sequence, 2); } else { __pyx_t_5 = PyList_GET_ITEM(sequence, 0); __pyx_t_6 = PyList_GET_ITEM(sequence, 1); __pyx_t_7 = PyList_GET_ITEM(sequence, 2); } __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(__pyx_t_7); #else __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1049, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1049, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1049, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); #endif __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else { Py_ssize_t index = -1; __pyx_t_8 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1049, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_9 = Py_TYPE(__pyx_t_8)->tp_iternext; index = 0; __pyx_t_5 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_5)) goto __pyx_L5_unpacking_failed; __Pyx_GOTREF(__pyx_t_5); index = 1; __pyx_t_6 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_6)) goto __pyx_L5_unpacking_failed; __Pyx_GOTREF(__pyx_t_6); index = 2; __pyx_t_7 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_7)) goto __pyx_L5_unpacking_failed; __Pyx_GOTREF(__pyx_t_7); if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_8), 3) < 0) __PYX_ERR(0, 1049, __pyx_L1_error) __pyx_t_9 = NULL; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; goto __pyx_L6_unpacking_done; __pyx_L5_unpacking_failed:; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_9 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 1049, __pyx_L1_error) __pyx_L6_unpacking_done:; } __Pyx_XDECREF_SET(__pyx_v_transl, __pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF_SET(__pyx_v_func, __pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF_SET(__pyx_v_subtree, __pyx_t_7); __pyx_t_7 = 0; /* "_qt_qtwes2.pyx":1050 * cdef QStandardItem *item #px+ * for transl, func, subtree in plugin_data: * item = new QStandardItem(str2q(transl)) #px/ # <<<<<<<<<<<<<< * #item = QStandardItem(str2q(transl)) * if func is not None: */ __pyx_v_item = new QStandardItem(__pyx_f_10_qt_qtwes2_str2q(__pyx_v_transl)); /* "_qt_qtwes2.pyx":1052 * item = new QStandardItem(str2q(transl)) #px/ * #item = QStandardItem(str2q(transl)) * if func is not None: # <<<<<<<<<<<<<< * item.setData(tovariant(func)) * uidata.treestore.appendRow(item) */ __pyx_t_10 = (__pyx_v_func != Py_None); __pyx_t_11 = (__pyx_t_10 != 0); if (__pyx_t_11) { /* "_qt_qtwes2.pyx":1053 * #item = QStandardItem(str2q(transl)) * if func is not None: * item.setData(tovariant(func)) # <<<<<<<<<<<<<< * uidata.treestore.appendRow(item) * _fill_treestore(item, subtree) */ __pyx_v_item->setData(__pyx_f_10_qt_qtwes2_tovariant(__pyx_v_func)); /* "_qt_qtwes2.pyx":1052 * item = new QStandardItem(str2q(transl)) #px/ * #item = QStandardItem(str2q(transl)) * if func is not None: # <<<<<<<<<<<<<< * item.setData(tovariant(func)) * uidata.treestore.appendRow(item) */ } /* "_qt_qtwes2.pyx":1054 * if func is not None: * item.setData(tovariant(func)) * uidata.treestore.appendRow(item) # <<<<<<<<<<<<<< * _fill_treestore(item, subtree) * # create widgets in the sidepane to display the plugins */ __pyx_v_10_qt_qtwes2_uidata.treestore->appendRow(__pyx_v_item); /* "_qt_qtwes2.pyx":1055 * item.setData(tovariant(func)) * uidata.treestore.appendRow(item) * _fill_treestore(item, subtree) # <<<<<<<<<<<<<< * # create widgets in the sidepane to display the plugins * cdef QPushButton *button #px+ */ __pyx_f_10_qt_qtwes2__fill_treestore(__pyx_v_item, __pyx_v_subtree); /* "_qt_qtwes2.pyx":1049 * # fill treestore with plugins * cdef QStandardItem *item #px+ * for transl, func, subtree in plugin_data: # <<<<<<<<<<<<<< * item = new QStandardItem(str2q(transl)) #px/ * #item = QStandardItem(str2q(transl)) */ } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwes2.pyx":1059 * cdef QPushButton *button #px+ * cdef QTreeView *treeview #px+ * for i, [transl, func, subtree] in enumerate(plugin_data): # <<<<<<<<<<<<<< * button = qtui.create_sidepane_button(str2q(transl)) * treeview = qtui.create_sidepane_treeview(uidata.treestore, i) */ __Pyx_INCREF(__pyx_int_0); __pyx_t_1 = __pyx_int_0; if (likely(PyList_CheckExact(__pyx_v_plugin_data)) || PyTuple_CheckExact(__pyx_v_plugin_data)) { __pyx_t_4 = __pyx_v_plugin_data; __Pyx_INCREF(__pyx_t_4); __pyx_t_2 = 0; __pyx_t_3 = NULL; } else { __pyx_t_2 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_v_plugin_data); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1059, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1059, __pyx_L1_error) } for (;;) { if (likely(!__pyx_t_3)) { if (likely(PyList_CheckExact(__pyx_t_4))) { if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_4)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_7 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_2); __Pyx_INCREF(__pyx_t_7); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(0, 1059, __pyx_L1_error) #else __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1059, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); #endif } else { if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_4)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_2); __Pyx_INCREF(__pyx_t_7); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(0, 1059, __pyx_L1_error) #else __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1059, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); #endif } } else { __pyx_t_7 = __pyx_t_3(__pyx_t_4); if (unlikely(!__pyx_t_7)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 1059, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_7); } if ((likely(PyTuple_CheckExact(__pyx_t_7))) || (PyList_CheckExact(__pyx_t_7))) { PyObject* sequence = __pyx_t_7; #if !CYTHON_COMPILING_IN_PYPY Py_ssize_t size = Py_SIZE(sequence); #else Py_ssize_t size = PySequence_Size(sequence); #endif if (unlikely(size != 3)) { if (size > 3) __Pyx_RaiseTooManyValuesError(3); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 1059, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_6 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); __pyx_t_8 = PyTuple_GET_ITEM(sequence, 2); } else { __pyx_t_6 = PyList_GET_ITEM(sequence, 0); __pyx_t_5 = PyList_GET_ITEM(sequence, 1); __pyx_t_8 = PyList_GET_ITEM(sequence, 2); } __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(__pyx_t_8); #else __pyx_t_6 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1059, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1059, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_8 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1059, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); #endif __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } else { Py_ssize_t index = -1; __pyx_t_12 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1059, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_9 = Py_TYPE(__pyx_t_12)->tp_iternext; index = 0; __pyx_t_6 = __pyx_t_9(__pyx_t_12); if (unlikely(!__pyx_t_6)) goto __pyx_L10_unpacking_failed; __Pyx_GOTREF(__pyx_t_6); index = 1; __pyx_t_5 = __pyx_t_9(__pyx_t_12); if (unlikely(!__pyx_t_5)) goto __pyx_L10_unpacking_failed; __Pyx_GOTREF(__pyx_t_5); index = 2; __pyx_t_8 = __pyx_t_9(__pyx_t_12); if (unlikely(!__pyx_t_8)) goto __pyx_L10_unpacking_failed; __Pyx_GOTREF(__pyx_t_8); if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_12), 3) < 0) __PYX_ERR(0, 1059, __pyx_L1_error) __pyx_t_9 = NULL; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; goto __pyx_L11_unpacking_done; __pyx_L10_unpacking_failed:; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __pyx_t_9 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 1059, __pyx_L1_error) __pyx_L11_unpacking_done:; } __Pyx_XDECREF_SET(__pyx_v_transl, __pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF_SET(__pyx_v_func, __pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF_SET(__pyx_v_subtree, __pyx_t_8); __pyx_t_8 = 0; __Pyx_INCREF(__pyx_t_1); __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_1); __pyx_t_7 = __Pyx_PyInt_AddObjC(__pyx_t_1, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1059, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = __pyx_t_7; __pyx_t_7 = 0; /* "_qt_qtwes2.pyx":1060 * cdef QTreeView *treeview #px+ * for i, [transl, func, subtree] in enumerate(plugin_data): * button = qtui.create_sidepane_button(str2q(transl)) # <<<<<<<<<<<<<< * treeview = qtui.create_sidepane_treeview(uidata.treestore, i) * uidata.mainwindow.connect_sidepane(button, treeview) */ __pyx_v_button = __pyx_f_6_qtui__create_sidepane_button(__pyx_f_10_qt_qtwes2_str2q(__pyx_v_transl)); /* "_qt_qtwes2.pyx":1061 * for i, [transl, func, subtree] in enumerate(plugin_data): * button = qtui.create_sidepane_button(str2q(transl)) * treeview = qtui.create_sidepane_treeview(uidata.treestore, i) # <<<<<<<<<<<<<< * uidata.mainwindow.connect_sidepane(button, treeview) * qtui.set_active_plugin_group(-1) */ __pyx_t_13 = __Pyx_PyInt_As_int(__pyx_v_i); if (unlikely((__pyx_t_13 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1061, __pyx_L1_error) __pyx_v_treeview = __pyx_f_6_qtui__create_sidepane_treeview(__pyx_v_10_qt_qtwes2_uidata.treestore, __pyx_t_13); /* "_qt_qtwes2.pyx":1062 * button = qtui.create_sidepane_button(str2q(transl)) * treeview = qtui.create_sidepane_treeview(uidata.treestore, i) * uidata.mainwindow.connect_sidepane(button, treeview) # <<<<<<<<<<<<<< * qtui.set_active_plugin_group(-1) * ##pxm>IF 'qtw' == 'qtq' */ __pyx_v_10_qt_qtwes2_uidata.mainwindow->connect_sidepane(__pyx_v_button, __pyx_v_treeview); /* "_qt_qtwes2.pyx":1063 * treeview = qtui.create_sidepane_treeview(uidata.treestore, i) * uidata.mainwindow.connect_sidepane(button, treeview) * qtui.set_active_plugin_group(-1) # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtq' * #~ pydata.plugin_data = plugin_data */ __pyx_f_6_qtui__set_active_plugin_group(-1); /* "_qt_qtwes2.pyx":1059 * cdef QPushButton *button #px+ * cdef QTreeView *treeview #px+ * for i, [transl, func, subtree] in enumerate(plugin_data): # <<<<<<<<<<<<<< * button = qtui.create_sidepane_button(str2q(transl)) * treeview = qtui.create_sidepane_treeview(uidata.treestore, i) */ } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwes2.pyx":1041 * ##pxm>IF_END * * def fill_sidepane(plugin_data): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * # remove old plugins */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_8); __Pyx_XDECREF(__pyx_t_12); __Pyx_AddTraceback("_qt_qtwes2.fill_sidepane", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_transl); __Pyx_XDECREF(__pyx_v_func); __Pyx_XDECREF(__pyx_v_subtree); __Pyx_XDECREF(__pyx_v_i); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwes2.pyx":1070 * ##pxm>IF 'qtw' == 'qtw' * ##pxm-FUNC P * cdef cbool _hide_row(int treeview, const QModelIndex &index): # <<<<<<<<<<<<<< * funcidx = fromvariant(index.data(Qt.UserRole + 1)) * if not pydata.app.on_plugin_test_idx(funcidx): */ static bool __pyx_f_10_qt_qtwes2__hide_row(int __pyx_v_treeview, QModelIndex const &__pyx_v_index) { PyObject *__pyx_v_funcidx = NULL; PyObject *__pyx_v_hide_all = NULL; int __pyx_v_rows; int __pyx_v_r; bool __pyx_v_hide; bool __pyx_r; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; int __pyx_t_5; int __pyx_t_6; int __pyx_t_7; int __pyx_t_8; bool __pyx_t_9; __Pyx_RefNannySetupContext("_hide_row", 0); /* "_qt_qtwes2.pyx":1071 * ##pxm-FUNC P * cdef cbool _hide_row(int treeview, const QModelIndex &index): * funcidx = fromvariant(index.data(Qt.UserRole + 1)) # <<<<<<<<<<<<<< * if not pydata.app.on_plugin_test_idx(funcidx): * return True */ __pyx_t_1 = __pyx_f_10_qt_qtwes2_fromvariant(__pyx_v_index.data((Qt::UserRole + 1))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1071, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_funcidx = __pyx_t_1; __pyx_t_1 = 0; /* "_qt_qtwes2.pyx":1072 * cdef cbool _hide_row(int treeview, const QModelIndex &index): * funcidx = fromvariant(index.data(Qt.UserRole + 1)) * if not pydata.app.on_plugin_test_idx(funcidx): # <<<<<<<<<<<<<< * return True * hide_all = funcidx is None */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1072, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_app); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1072, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_on_plugin_test_idx); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1072, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } if (!__pyx_t_3) { __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_funcidx); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1072, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_funcidx}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1072, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_funcidx}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1072, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1072, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL; __Pyx_INCREF(__pyx_v_funcidx); __Pyx_GIVEREF(__pyx_v_funcidx); PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_funcidx); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1072, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 1072, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_6 = ((!__pyx_t_5) != 0); if (__pyx_t_6) { /* "_qt_qtwes2.pyx":1073 * funcidx = fromvariant(index.data(Qt.UserRole + 1)) * if not pydata.app.on_plugin_test_idx(funcidx): * return True # <<<<<<<<<<<<<< * hide_all = funcidx is None * rows = uidata.treestore.rowCount(index) */ __pyx_r = 1; goto __pyx_L0; /* "_qt_qtwes2.pyx":1072 * cdef cbool _hide_row(int treeview, const QModelIndex &index): * funcidx = fromvariant(index.data(Qt.UserRole + 1)) * if not pydata.app.on_plugin_test_idx(funcidx): # <<<<<<<<<<<<<< * return True * hide_all = funcidx is None */ } /* "_qt_qtwes2.pyx":1074 * if not pydata.app.on_plugin_test_idx(funcidx): * return True * hide_all = funcidx is None # <<<<<<<<<<<<<< * rows = uidata.treestore.rowCount(index) * for r in range(rows): */ __pyx_t_6 = (__pyx_v_funcidx == Py_None); __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1074, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_hide_all = __pyx_t_1; __pyx_t_1 = 0; /* "_qt_qtwes2.pyx":1075 * return True * hide_all = funcidx is None * rows = uidata.treestore.rowCount(index) # <<<<<<<<<<<<<< * for r in range(rows): * hide = _hide_row(treeview, uidata.treestore.index(r, 0, index)) */ __pyx_v_rows = __pyx_v_10_qt_qtwes2_uidata.treestore->rowCount(__pyx_v_index); /* "_qt_qtwes2.pyx":1076 * hide_all = funcidx is None * rows = uidata.treestore.rowCount(index) * for r in range(rows): # <<<<<<<<<<<<<< * hide = _hide_row(treeview, uidata.treestore.index(r, 0, index)) * qtui.set_row_hidden(treeview, r, index, hide) */ __pyx_t_7 = __pyx_v_rows; for (__pyx_t_8 = 0; __pyx_t_8 < __pyx_t_7; __pyx_t_8+=1) { __pyx_v_r = __pyx_t_8; /* "_qt_qtwes2.pyx":1077 * rows = uidata.treestore.rowCount(index) * for r in range(rows): * hide = _hide_row(treeview, uidata.treestore.index(r, 0, index)) # <<<<<<<<<<<<<< * qtui.set_row_hidden(treeview, r, index, hide) * hide_all = hide_all and hide */ __pyx_v_hide = __pyx_f_10_qt_qtwes2__hide_row(__pyx_v_treeview, __pyx_v_10_qt_qtwes2_uidata.treestore->index(__pyx_v_r, 0, __pyx_v_index)); /* "_qt_qtwes2.pyx":1078 * for r in range(rows): * hide = _hide_row(treeview, uidata.treestore.index(r, 0, index)) * qtui.set_row_hidden(treeview, r, index, hide) # <<<<<<<<<<<<<< * hide_all = hide_all and hide * return hide_all */ __pyx_f_6_qtui__set_row_hidden(__pyx_v_treeview, __pyx_v_r, __pyx_v_index, __pyx_v_hide); /* "_qt_qtwes2.pyx":1079 * hide = _hide_row(treeview, uidata.treestore.index(r, 0, index)) * qtui.set_row_hidden(treeview, r, index, hide) * hide_all = hide_all and hide # <<<<<<<<<<<<<< * return hide_all * ##pxm>IF_END */ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_hide_all); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 1079, __pyx_L1_error) if (__pyx_t_6) { } else { __Pyx_INCREF(__pyx_v_hide_all); __pyx_t_1 = __pyx_v_hide_all; goto __pyx_L6_bool_binop_done; } __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_v_hide); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1079, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = __pyx_t_2; __pyx_t_2 = 0; __pyx_L6_bool_binop_done:; __Pyx_DECREF_SET(__pyx_v_hide_all, __pyx_t_1); __pyx_t_1 = 0; } /* "_qt_qtwes2.pyx":1080 * qtui.set_row_hidden(treeview, r, index, hide) * hide_all = hide_all and hide * return hide_all # <<<<<<<<<<<<<< * ##pxm>IF_END * def update_sidepane(): */ __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_hide_all); if (unlikely((__pyx_t_9 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1080, __pyx_L1_error) __pyx_r = __pyx_t_9; goto __pyx_L0; /* "_qt_qtwes2.pyx":1070 * ##pxm>IF 'qtw' == 'qtw' * ##pxm-FUNC P * cdef cbool _hide_row(int treeview, const QModelIndex &index): # <<<<<<<<<<<<<< * funcidx = fromvariant(index.data(Qt.UserRole + 1)) * if not pydata.app.on_plugin_test_idx(funcidx): */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_WriteUnraisable("_qt_qtwes2._hide_row", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_r = 0; __pyx_L0:; __Pyx_XDECREF(__pyx_v_funcidx); __Pyx_XDECREF(__pyx_v_hide_all); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwes2.pyx":1082 * return hide_all * ##pxm>IF_END * def update_sidepane(): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * cdef QModelIndex index #px+ */ /* Python wrapper */ static PyObject *__pyx_pw_10_qt_qtwes2_19update_sidepane(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/ static PyMethodDef __pyx_mdef_10_qt_qtwes2_19update_sidepane = {"update_sidepane", (PyCFunction)__pyx_pw_10_qt_qtwes2_19update_sidepane, METH_NOARGS, 0}; static PyObject *__pyx_pw_10_qt_qtwes2_19update_sidepane(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("update_sidepane (wrapper)", 0); __pyx_r = __pyx_pf_10_qt_qtwes2_18update_sidepane(__pyx_self); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_10_qt_qtwes2_18update_sidepane(CYTHON_UNUSED PyObject *__pyx_self) { QModelIndex __pyx_v_index; int __pyx_v_i; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; int __pyx_t_2; __Pyx_RefNannySetupContext("update_sidepane", 0); /* "_qt_qtwes2.pyx":1085 * ##pxm>IF 'qtw' == 'qtw' * cdef QModelIndex index #px+ * for i in range(qtui.get_plugin_group_count()): # <<<<<<<<<<<<<< * index = qtui.root_index(i) * qtui.hide_row(i, _hide_row(i, index)) */ __pyx_t_1 = __pyx_f_6_qtui__get_plugin_group_count(); for (__pyx_t_2 = 0; __pyx_t_2 < __pyx_t_1; __pyx_t_2+=1) { __pyx_v_i = __pyx_t_2; /* "_qt_qtwes2.pyx":1086 * cdef QModelIndex index #px+ * for i in range(qtui.get_plugin_group_count()): * index = qtui.root_index(i) # <<<<<<<<<<<<<< * qtui.hide_row(i, _hide_row(i, index)) * ##pxm>IF 'qtw' == 'qtq' */ __pyx_v_index = __pyx_f_6_qtui__root_index(__pyx_v_i); /* "_qt_qtwes2.pyx":1087 * for i in range(qtui.get_plugin_group_count()): * index = qtui.root_index(i) * qtui.hide_row(i, _hide_row(i, index)) # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtq' * #~ def filter_plugin_data(tree): */ __pyx_f_6_qtui__hide_row(__pyx_v_i, __pyx_f_10_qt_qtwes2__hide_row(__pyx_v_i, __pyx_v_index)); } /* "_qt_qtwes2.pyx":1082 * return hide_all * ##pxm>IF_END * def update_sidepane(): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * cdef QModelIndex index #px+ */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwes2.pyx":1108 * #~ ##pxm>IF_END * * def set_toolbar_state(state): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * qtui.set_toolbar_state(state[0], state[1], state[2], state[3], state[4]) */ /* Python wrapper */ static PyObject *__pyx_pw_10_qt_qtwes2_21set_toolbar_state(PyObject *__pyx_self, PyObject *__pyx_v_state); /*proto*/ static PyMethodDef __pyx_mdef_10_qt_qtwes2_21set_toolbar_state = {"set_toolbar_state", (PyCFunction)__pyx_pw_10_qt_qtwes2_21set_toolbar_state, METH_O, 0}; static PyObject *__pyx_pw_10_qt_qtwes2_21set_toolbar_state(PyObject *__pyx_self, PyObject *__pyx_v_state) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("set_toolbar_state (wrapper)", 0); __pyx_r = __pyx_pf_10_qt_qtwes2_20set_toolbar_state(__pyx_self, ((PyObject *)__pyx_v_state)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_10_qt_qtwes2_20set_toolbar_state(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_state) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_t_2; int __pyx_t_3; int __pyx_t_4; int __pyx_t_5; int __pyx_t_6; __Pyx_RefNannySetupContext("set_toolbar_state", 0); /* "_qt_qtwes2.pyx":1110 * def set_toolbar_state(state): * ##pxm>IF 'qtw' == 'qtw' * qtui.set_toolbar_state(state[0], state[1], state[2], state[3], state[4]) # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtq' * #~ ctx_set(b'toolbarstate', state) */ __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1110, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1110, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1110, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1110, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1110, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1110, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_state, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1110, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1110, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_state, 4, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1110, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_6 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1110, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_f_6_qtui__set_toolbar_state(__pyx_t_2, __pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_t_6); /* "_qt_qtwes2.pyx":1108 * #~ ##pxm>IF_END * * def set_toolbar_state(state): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * qtui.set_toolbar_state(state[0], state[1], state[2], state[3], state[4]) */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("_qt_qtwes2.set_toolbar_state", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwes2.pyx":1148 * * ##pxm-FUNC P * cdef QVariant create_stdmodel(values): # <<<<<<<<<<<<<< * cdef QObjectList qlist #px/ * #items = [] */ static QVariant __pyx_f_10_qt_qtwes2_create_stdmodel(PyObject *__pyx_v_values) { QList __pyx_v_qlist; PyObject *__pyx_v_text = NULL; PyObject *__pyx_v_key = NULL; CYTHON_UNUSED PyObject *__pyx_v_unused = NULL; QVariant __pyx_v_items; QVariant __pyx_r; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; Py_ssize_t __pyx_t_2; PyObject *(*__pyx_t_3)(PyObject *); PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; PyObject *__pyx_t_7 = NULL; PyObject *(*__pyx_t_8)(PyObject *); PyObject *__pyx_t_9 = NULL; __Pyx_RefNannySetupContext("create_stdmodel", 0); /* "_qt_qtwes2.pyx":1151 * cdef QObjectList qlist #px/ * #items = [] * for text, key, *unused in values: # <<<<<<<<<<<<<< * qlist.append(new TextKeyItem(str2q(text), str2q(key))) #px/ * #items.append({'text': text, 'key': key}) */ if (likely(PyList_CheckExact(__pyx_v_values)) || PyTuple_CheckExact(__pyx_v_values)) { __pyx_t_1 = __pyx_v_values; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0; __pyx_t_3 = NULL; } else { __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_values); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1151, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1151, __pyx_L1_error) } for (;;) { if (likely(!__pyx_t_3)) { if (likely(PyList_CheckExact(__pyx_t_1))) { if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(0, 1151, __pyx_L1_error) #else __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1151, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); #endif } else { if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(0, 1151, __pyx_L1_error) #else __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1151, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); #endif } } else { __pyx_t_4 = __pyx_t_3(__pyx_t_1); if (unlikely(!__pyx_t_4)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 1151, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_4); } { Py_ssize_t index = -1; PyObject** temps[3] = {&__pyx_t_5,&__pyx_t_6}; __pyx_t_7 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1151, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_8 = Py_TYPE(__pyx_t_7)->tp_iternext; for (index=0; index < 2; index++) { PyObject* item = __pyx_t_8(__pyx_t_7); if (unlikely(!item)) goto __pyx_L5_unpacking_failed; __Pyx_GOTREF(item); *(temps[index]) = item; } goto __pyx_L6_unpacking_done; __pyx_L5_unpacking_failed:; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_8 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 1151, __pyx_L1_error) __pyx_L6_unpacking_done:; } __pyx_t_9 = PySequence_List(__pyx_t_7); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1151, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_XDECREF_SET(__pyx_v_text, __pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF_SET(__pyx_v_unused, ((PyObject*)__pyx_t_9)); __pyx_t_9 = 0; /* "_qt_qtwes2.pyx":1152 * #items = [] * for text, key, *unused in values: * qlist.append(new TextKeyItem(str2q(text), str2q(key))) #px/ # <<<<<<<<<<<<<< * #items.append({'text': text, 'key': key}) * cdef QVariant items #px+ */ __pyx_v_qlist.append(((QObject *)new TextKeyItem(__pyx_f_10_qt_qtwes2_str2q(__pyx_v_text), __pyx_f_10_qt_qtwes2_str2q(__pyx_v_key)))); /* "_qt_qtwes2.pyx":1151 * cdef QObjectList qlist #px/ * #items = [] * for text, key, *unused in values: # <<<<<<<<<<<<<< * qlist.append(new TextKeyItem(str2q(text), str2q(key))) #px/ * #items.append({'text': text, 'key': key}) */ } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwes2.pyx":1155 * #items.append({'text': text, 'key': key}) * cdef QVariant items #px+ * items.setValue[QObjectList](qlist) #px+ # <<<<<<<<<<<<<< * return items * */ __pyx_v_items.setValue >(__pyx_v_qlist); /* "_qt_qtwes2.pyx":1156 * cdef QVariant items #px+ * items.setValue[QObjectList](qlist) #px+ * return items # <<<<<<<<<<<<<< * * ##pxm>IF 'qtw' == 'qtq' */ __pyx_r = __pyx_v_items; goto __pyx_L0; /* "_qt_qtwes2.pyx":1148 * * ##pxm-FUNC P * cdef QVariant create_stdmodel(values): # <<<<<<<<<<<<<< * cdef QObjectList qlist #px/ * #items = [] */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_9); __Pyx_WriteUnraisable("_qt_qtwes2.create_stdmodel", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_XDECREF(__pyx_v_text); __Pyx_XDECREF(__pyx_v_key); __Pyx_XDECREF(__pyx_v_unused); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwes2.pyx":1224 * ##pxh> * ##pxm-FUNC PH with gil * void _on_picking_result(int index) with gil: # <<<<<<<<<<<<<< * pydata.app.on_picking_result(index) * */ void MainView::_on_picking_result(int __pyx_v_index) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("_on_picking_result", 0); /* "_qt_qtwes2.pyx":1225 * ##pxm-FUNC PH with gil * void _on_picking_result(int index) with gil: * pydata.app.on_picking_result(index) # <<<<<<<<<<<<<< * * ##pxm-FUNC PH nogil */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1225, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_app); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1225, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_on_picking_result); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1225, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1225, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } if (!__pyx_t_4) { __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1225, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_3}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1225, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_3}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1225, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif { __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1225, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL; __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_3); __pyx_t_3 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1225, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwes2.pyx":1224 * ##pxh> * ##pxm-FUNC PH with gil * void _on_picking_result(int index) with gil: # <<<<<<<<<<<<<< * pydata.app.on_picking_result(index) * */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_WriteUnraisable("MainView._on_picking_result", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwes2.pyx":1228 * * ##pxm-FUNC PH nogil * void _on_debug_fps(int fps) nogil: # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * qtui.set_debug_text(QString_number(fps)) */ void MainView::_on_debug_fps(int __pyx_v_fps) { /* "_qt_qtwes2.pyx":1230 * void _on_debug_fps(int fps) nogil: * ##pxm>IF 'qtw' == 'qtw' * qtui.set_debug_text(QString_number(fps)) # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtq' * #~ uidata.ctx.setProperty(b'debugmsg', QVariant(fps)) */ __pyx_f_6_qtui__set_debug_text(QString::number(__pyx_v_fps)); /* "_qt_qtwes2.pyx":1228 * * ##pxm-FUNC PH nogil * void _on_debug_fps(int fps) nogil: # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * qtui.set_debug_text(QString_number(fps)) */ /* function exit code */ } /* "_qt_qtwes2.pyx":1236 * * ##pxm-FUNC PH nogil * void _on_offscreen_image(QImage image) nogil: # <<<<<<<<<<<<<< * uidata.offscreen_image = image * */ void MainView::_on_offscreen_image(QImage __pyx_v_image) { /* "_qt_qtwes2.pyx":1237 * ##pxm-FUNC PH nogil * void _on_offscreen_image(QImage image) nogil: * uidata.offscreen_image = image # <<<<<<<<<<<<<< * * ##pxm>IF 'qtw' == 'qtw' */ __pyx_v_10_qt_qtwes2_uidata.offscreen_image = __pyx_v_image; /* "_qt_qtwes2.pyx":1236 * * ##pxm-FUNC PH nogil * void _on_offscreen_image(QImage image) nogil: # <<<<<<<<<<<<<< * uidata.offscreen_image = image * */ /* function exit code */ } /* "_qt_qtwes2.pyx":1243 * ##pxm>IF_END * ##pxm-FUNC PH nogil * void on_beforeSynchronizing() nogil: # <<<<<<<<<<<<<< * if renderdata.renderer is NULL: * render_init() */ void MainView::on_beforeSynchronizing(void) { int __pyx_t_1; int __pyx_t_2; /* "_qt_qtwes2.pyx":1244 * ##pxm-FUNC PH nogil * void on_beforeSynchronizing() nogil: * if renderdata.renderer is NULL: # <<<<<<<<<<<<<< * render_init() * this.connect_renderer(renderdata.renderer) */ __pyx_t_1 = ((__pyx_v_10_qt_qtwes2_renderdata.renderer == NULL) != 0); if (__pyx_t_1) { /* "_qt_qtwes2.pyx":1245 * void on_beforeSynchronizing() nogil: * if renderdata.renderer is NULL: * render_init() # <<<<<<<<<<<<<< * this.connect_renderer(renderdata.renderer) * IF OFFSCREEN: #px+ */ __pyx_f_10_qt_qtwes2_render_init(); /* "_qt_qtwes2.pyx":1246 * if renderdata.renderer is NULL: * render_init() * this.connect_renderer(renderdata.renderer) # <<<<<<<<<<<<<< * IF OFFSCREEN: #px+ * this.connect_renderer_offscreen(renderdata.renderer) #px+ */ this->connect_renderer(__pyx_v_10_qt_qtwes2_renderdata.renderer); /* "_qt_qtwes2.pyx":1244 * ##pxm-FUNC PH nogil * void on_beforeSynchronizing() nogil: * if renderdata.renderer is NULL: # <<<<<<<<<<<<<< * render_init() * this.connect_renderer(renderdata.renderer) */ } /* "_qt_qtwes2.pyx":1249 * IF OFFSCREEN: #px+ * this.connect_renderer_offscreen(renderdata.renderer) #px+ * glarea.render_resize(uidata.gl_y, uidata.width, uidata.height) # <<<<<<<<<<<<<< * glarea.sync() * */ __pyx_f_11_glarea_es2_render_resize(__pyx_v_10_qt_qtwes2_uidata.gl_y, __pyx_v_10_qt_qtwes2_uidata.width, __pyx_v_10_qt_qtwes2_uidata.height); /* "_qt_qtwes2.pyx":1250 * this.connect_renderer_offscreen(renderdata.renderer) #px+ * glarea.render_resize(uidata.gl_y, uidata.width, uidata.height) * glarea.sync() # <<<<<<<<<<<<<< * * if uidata.atlas_changed: */ __pyx_f_11_glarea_es2_sync(); /* "_qt_qtwes2.pyx":1252 * glarea.sync() * * if uidata.atlas_changed: # <<<<<<<<<<<<<< * renderdata.atlas_changed = True * renderdata.atlas_width = uidata.atlas_width */ __pyx_t_1 = (__pyx_v_10_qt_qtwes2_uidata.atlas_changed != 0); if (__pyx_t_1) { /* "_qt_qtwes2.pyx":1253 * * if uidata.atlas_changed: * renderdata.atlas_changed = True # <<<<<<<<<<<<<< * renderdata.atlas_width = uidata.atlas_width * renderdata.atlas_height = uidata.atlas_height */ __pyx_v_10_qt_qtwes2_renderdata.atlas_changed = 1; /* "_qt_qtwes2.pyx":1254 * if uidata.atlas_changed: * renderdata.atlas_changed = True * renderdata.atlas_width = uidata.atlas_width # <<<<<<<<<<<<<< * renderdata.atlas_height = uidata.atlas_height * glarea.sync_set_atlas_data() */ __pyx_t_2 = __pyx_v_10_qt_qtwes2_uidata.atlas_width; __pyx_v_10_qt_qtwes2_renderdata.atlas_width = __pyx_t_2; /* "_qt_qtwes2.pyx":1255 * renderdata.atlas_changed = True * renderdata.atlas_width = uidata.atlas_width * renderdata.atlas_height = uidata.atlas_height # <<<<<<<<<<<<<< * glarea.sync_set_atlas_data() * uidata.atlas_changed = False */ __pyx_t_2 = __pyx_v_10_qt_qtwes2_uidata.atlas_height; __pyx_v_10_qt_qtwes2_renderdata.atlas_height = __pyx_t_2; /* "_qt_qtwes2.pyx":1256 * renderdata.atlas_width = uidata.atlas_width * renderdata.atlas_height = uidata.atlas_height * glarea.sync_set_atlas_data() # <<<<<<<<<<<<<< * uidata.atlas_changed = False * if uidata.pick_requested: */ __pyx_f_11_glarea_es2_sync_set_atlas_data(); /* "_qt_qtwes2.pyx":1257 * renderdata.atlas_height = uidata.atlas_height * glarea.sync_set_atlas_data() * uidata.atlas_changed = False # <<<<<<<<<<<<<< * if uidata.pick_requested: * renderdata.pickxy_changed = True */ __pyx_v_10_qt_qtwes2_uidata.atlas_changed = 0; /* "_qt_qtwes2.pyx":1252 * glarea.sync() * * if uidata.atlas_changed: # <<<<<<<<<<<<<< * renderdata.atlas_changed = True * renderdata.atlas_width = uidata.atlas_width */ } /* "_qt_qtwes2.pyx":1258 * glarea.sync_set_atlas_data() * uidata.atlas_changed = False * if uidata.pick_requested: # <<<<<<<<<<<<<< * renderdata.pickxy_changed = True * glarea.sync_set_pick_position() */ __pyx_t_1 = (__pyx_v_10_qt_qtwes2_uidata.pick_requested != 0); if (__pyx_t_1) { /* "_qt_qtwes2.pyx":1259 * uidata.atlas_changed = False * if uidata.pick_requested: * renderdata.pickxy_changed = True # <<<<<<<<<<<<<< * glarea.sync_set_pick_position() * */ __pyx_v_10_qt_qtwes2_renderdata.pickxy_changed = 1; /* "_qt_qtwes2.pyx":1260 * if uidata.pick_requested: * renderdata.pickxy_changed = True * glarea.sync_set_pick_position() # <<<<<<<<<<<<<< * * ##pxm-FUNC PH nogil */ __pyx_f_11_glarea_es2_sync_set_pick_position(); /* "_qt_qtwes2.pyx":1258 * glarea.sync_set_atlas_data() * uidata.atlas_changed = False * if uidata.pick_requested: # <<<<<<<<<<<<<< * renderdata.pickxy_changed = True * glarea.sync_set_pick_position() */ } /* "_qt_qtwes2.pyx":1243 * ##pxm>IF_END * ##pxm-FUNC PH nogil * void on_beforeSynchronizing() nogil: # <<<<<<<<<<<<<< * if renderdata.renderer is NULL: * render_init() */ /* function exit code */ } /* "_qt_qtwes2.pyx":1263 * * ##pxm-FUNC PH nogil * void on_sceneGraphInvalidated() nogil: # <<<<<<<<<<<<<< * if renderdata.renderer is not NULL: * render_destroy() */ void MainView::on_sceneGraphInvalidated(void) { int __pyx_t_1; /* "_qt_qtwes2.pyx":1264 * ##pxm-FUNC PH nogil * void on_sceneGraphInvalidated() nogil: * if renderdata.renderer is not NULL: # <<<<<<<<<<<<<< * render_destroy() * del renderdata.renderer */ __pyx_t_1 = ((__pyx_v_10_qt_qtwes2_renderdata.renderer != NULL) != 0); if (__pyx_t_1) { /* "_qt_qtwes2.pyx":1265 * void on_sceneGraphInvalidated() nogil: * if renderdata.renderer is not NULL: * render_destroy() # <<<<<<<<<<<<<< * del renderdata.renderer * renderdata.renderer = NULL */ __pyx_f_10_qt_qtwes2_render_destroy(); /* "_qt_qtwes2.pyx":1266 * if renderdata.renderer is not NULL: * render_destroy() * del renderdata.renderer # <<<<<<<<<<<<<< * renderdata.renderer = NULL * */ delete __pyx_v_10_qt_qtwes2_renderdata.renderer; /* "_qt_qtwes2.pyx":1267 * render_destroy() * del renderdata.renderer * renderdata.renderer = NULL # <<<<<<<<<<<<<< * * ##pxm>IF 'qtw' == 'qtw' */ __pyx_v_10_qt_qtwes2_renderdata.renderer = NULL; /* "_qt_qtwes2.pyx":1264 * ##pxm-FUNC PH nogil * void on_sceneGraphInvalidated() nogil: * if renderdata.renderer is not NULL: # <<<<<<<<<<<<<< * render_destroy() * del renderdata.renderer */ } /* "_qt_qtwes2.pyx":1263 * * ##pxm-FUNC PH nogil * void on_sceneGraphInvalidated() nogil: # <<<<<<<<<<<<<< * if renderdata.renderer is not NULL: * render_destroy() */ /* function exit code */ } /* "_qt_qtwes2.pyx":1272 * ##pxh> * ##pxm-FUNC PH with gil * void resizeEvent(QResizeEvent *event) with gil: # <<<<<<<<<<<<<< * settings['window.size'] = event.size().width(), event.size().height() * pos = qtui.splitter_pos() */ void MainView::resizeEvent(QResizeEvent *__pyx_v_event) { int __pyx_v_pos; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; int __pyx_t_4; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("resizeEvent", 0); /* "_qt_qtwes2.pyx":1273 * ##pxm-FUNC PH with gil * void resizeEvent(QResizeEvent *event) with gil: * settings['window.size'] = event.size().width(), event.size().height() # <<<<<<<<<<<<<< * pos = qtui.splitter_pos() * if pos > 0: # ignore the first resize event where sizes==[0,0] */ __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_event->size().width()); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1273, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_event->size().height()); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1273, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1273, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2); __pyx_t_1 = 0; __pyx_t_2 = 0; __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1273, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (unlikely(PyObject_SetItem(__pyx_t_2, __pyx_kp_u_window_size, __pyx_t_3) < 0)) __PYX_ERR(0, 1273, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "_qt_qtwes2.pyx":1274 * void resizeEvent(QResizeEvent *event) with gil: * settings['window.size'] = event.size().width(), event.size().height() * pos = qtui.splitter_pos() # <<<<<<<<<<<<<< * if pos > 0: # ignore the first resize event where sizes==[0,0] * settings['window.divider'] = pos */ __pyx_v_pos = __pyx_f_6_qtui__splitter_pos(); /* "_qt_qtwes2.pyx":1275 * settings['window.size'] = event.size().width(), event.size().height() * pos = qtui.splitter_pos() * if pos > 0: # ignore the first resize event where sizes==[0,0] # <<<<<<<<<<<<<< * settings['window.divider'] = pos * this.QWidget_resizeEvent(event) #px/ */ __pyx_t_4 = ((__pyx_v_pos > 0) != 0); if (__pyx_t_4) { /* "_qt_qtwes2.pyx":1276 * pos = qtui.splitter_pos() * if pos > 0: # ignore the first resize event where sizes==[0,0] * settings['window.divider'] = pos # <<<<<<<<<<<<<< * this.QWidget_resizeEvent(event) #px/ * #QWidget.resizeEvent(this, event) */ __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_pos); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1276, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1276, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (unlikely(PyObject_SetItem(__pyx_t_2, __pyx_kp_u_window_divider, __pyx_t_3) < 0)) __PYX_ERR(0, 1276, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "_qt_qtwes2.pyx":1275 * settings['window.size'] = event.size().width(), event.size().height() * pos = qtui.splitter_pos() * if pos > 0: # ignore the first resize event where sizes==[0,0] # <<<<<<<<<<<<<< * settings['window.divider'] = pos * this.QWidget_resizeEvent(event) #px/ */ } /* "_qt_qtwes2.pyx":1277 * if pos > 0: # ignore the first resize event where sizes==[0,0] * settings['window.divider'] = pos * this.QWidget_resizeEvent(event) #px/ # <<<<<<<<<<<<<< * #QWidget.resizeEvent(this, event) * ##pxm-FUNC PH with gil */ this->QWidget::resizeEvent(__pyx_v_event); /* "_qt_qtwes2.pyx":1272 * ##pxh> * ##pxm-FUNC PH with gil * void resizeEvent(QResizeEvent *event) with gil: # <<<<<<<<<<<<<< * settings['window.size'] = event.size().width(), event.size().height() * pos = qtui.splitter_pos() */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_WriteUnraisable("MainView.resizeEvent", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwes2.pyx":1280 * #QWidget.resizeEvent(this, event) * ##pxm-FUNC PH with gil * void closeEvent(QCloseEvent *event) with gil: # <<<<<<<<<<<<<< * destroy_resources() * try: */ void MainView::closeEvent(QCloseEvent *__pyx_v_event) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; int __pyx_t_4; int __pyx_t_5; char const *__pyx_t_6; PyObject *__pyx_t_7 = NULL; PyObject *__pyx_t_8 = NULL; PyObject *__pyx_t_9 = NULL; PyObject *__pyx_t_10 = NULL; PyObject *__pyx_t_11 = NULL; PyObject *__pyx_t_12 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("closeEvent", 0); /* "_qt_qtwes2.pyx":1281 * ##pxm-FUNC PH with gil * void closeEvent(QCloseEvent *event) with gil: * destroy_resources() # <<<<<<<<<<<<<< * try: * pydata.app.on_closing() */ __pyx_f_10_qt_qtwes2_destroy_resources(); /* "_qt_qtwes2.pyx":1282 * void closeEvent(QCloseEvent *event) with gil: * destroy_resources() * try: # <<<<<<<<<<<<<< * pydata.app.on_closing() * finally: */ /*try:*/ { /* "_qt_qtwes2.pyx":1283 * destroy_resources() * try: * pydata.app.on_closing() # <<<<<<<<<<<<<< * finally: * this.QWidget_closeEvent(event) #px/ */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1283, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_app); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1283, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_on_closing); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1283, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } if (__pyx_t_3) { __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1283, __pyx_L4_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1283, __pyx_L4_error) } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } /* "_qt_qtwes2.pyx":1285 * pydata.app.on_closing() * finally: * this.QWidget_closeEvent(event) #px/ # <<<<<<<<<<<<<< * #QWidget.closeEvent(this, event) * ##pxm-FUNC PH with gil */ /*finally:*/ { /*normal exit:*/{ this->QWidget::closeEvent(__pyx_v_event); goto __pyx_L5; } /*exception exit:*/{ __Pyx_PyThreadState_declare __pyx_L4_error:; __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __Pyx_PyThreadState_assign __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12); if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9) < 0)) __Pyx_ErrFetch(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9); __Pyx_XGOTREF(__pyx_t_7); __Pyx_XGOTREF(__pyx_t_8); __Pyx_XGOTREF(__pyx_t_9); __Pyx_XGOTREF(__pyx_t_10); __Pyx_XGOTREF(__pyx_t_11); __Pyx_XGOTREF(__pyx_t_12); __pyx_t_4 = __pyx_lineno; __pyx_t_5 = __pyx_clineno; __pyx_t_6 = __pyx_filename; { this->QWidget::closeEvent(__pyx_v_event); } __Pyx_PyThreadState_assign if (PY_MAJOR_VERSION >= 3) { __Pyx_XGIVEREF(__pyx_t_10); __Pyx_XGIVEREF(__pyx_t_11); __Pyx_XGIVEREF(__pyx_t_12); __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12); } __Pyx_XGIVEREF(__pyx_t_7); __Pyx_XGIVEREF(__pyx_t_8); __Pyx_XGIVEREF(__pyx_t_9); __Pyx_ErrRestore(__pyx_t_7, __pyx_t_8, __pyx_t_9); __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_lineno = __pyx_t_4; __pyx_clineno = __pyx_t_5; __pyx_filename = __pyx_t_6; goto __pyx_L1_error; } __pyx_L5:; } /* "_qt_qtwes2.pyx":1280 * #QWidget.resizeEvent(this, event) * ##pxm-FUNC PH with gil * void closeEvent(QCloseEvent *event) with gil: # <<<<<<<<<<<<<< * destroy_resources() * try: */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_WriteUnraisable("MainView.closeEvent", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwes2.pyx":1288 * #QWidget.closeEvent(this, event) * ##pxm-FUNC PH with gil * void keyPressEvent(QKeyEvent *event) with gil: # <<<<<<<<<<<<<< * if not pydata.app.on_key_pressed(event.key(), int(event.modifiers()) & SAFE_MODIFIER_MASK, False): * event.ignore() */ void MainView::keyPressEvent(QKeyEvent *__pyx_v_event) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; int __pyx_t_7; int __pyx_t_8; int __pyx_t_9; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("keyPressEvent", 0); /* "_qt_qtwes2.pyx":1289 * ##pxm-FUNC PH with gil * void keyPressEvent(QKeyEvent *event) with gil: * if not pydata.app.on_key_pressed(event.key(), int(event.modifiers()) & SAFE_MODIFIER_MASK, False): # <<<<<<<<<<<<<< * event.ignore() * this.QWidget_keyPressEvent(event) #px/ */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1289, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_app); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1289, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_on_key_pressed); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1289, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_event->key()); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1289, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyInt_From_Qt_3a__3a_KeyboardModifiers(__pyx_v_event->modifiers()); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1289, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1289, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)(&PyInt_Type)), __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1289, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_e_10_qt_qtwes2_SAFE_MODIFIER_MASK); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1289, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = PyNumber_And(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1289, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = NULL; __pyx_t_7 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_7 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_5, __pyx_t_3, __pyx_t_6, Py_False}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_7, 3+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1289, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_5, __pyx_t_3, __pyx_t_6, Py_False}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_7, 3+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1289, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else #endif { __pyx_t_4 = PyTuple_New(3+__pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1289, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_7, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_7, __pyx_t_6); __Pyx_INCREF(Py_False); __Pyx_GIVEREF(Py_False); PyTuple_SET_ITEM(__pyx_t_4, 2+__pyx_t_7, Py_False); __pyx_t_3 = 0; __pyx_t_6 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1289, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 1289, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_9 = ((!__pyx_t_8) != 0); if (__pyx_t_9) { /* "_qt_qtwes2.pyx":1290 * void keyPressEvent(QKeyEvent *event) with gil: * if not pydata.app.on_key_pressed(event.key(), int(event.modifiers()) & SAFE_MODIFIER_MASK, False): * event.ignore() # <<<<<<<<<<<<<< * this.QWidget_keyPressEvent(event) #px/ * #QWidget.keyPressEvent(this, event) */ __pyx_v_event->ignore(); /* "_qt_qtwes2.pyx":1291 * if not pydata.app.on_key_pressed(event.key(), int(event.modifiers()) & SAFE_MODIFIER_MASK, False): * event.ignore() * this.QWidget_keyPressEvent(event) #px/ # <<<<<<<<<<<<<< * #QWidget.keyPressEvent(this, event) * ##pxh> */ this->QWidget::keyPressEvent(__pyx_v_event); /* "_qt_qtwes2.pyx":1289 * ##pxm-FUNC PH with gil * void keyPressEvent(QKeyEvent *event) with gil: * if not pydata.app.on_key_pressed(event.key(), int(event.modifiers()) & SAFE_MODIFIER_MASK, False): # <<<<<<<<<<<<<< * event.ignore() * this.QWidget_keyPressEvent(event) #px/ */ } /* "_qt_qtwes2.pyx":1288 * #QWidget.closeEvent(this, event) * ##pxm-FUNC PH with gil * void keyPressEvent(QKeyEvent *event) with gil: # <<<<<<<<<<<<<< * if not pydata.app.on_key_pressed(event.key(), int(event.modifiers()) & SAFE_MODIFIER_MASK, False): * event.ignore() */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_WriteUnraisable("MainView.keyPressEvent", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwes2.pyx":1295 * ##pxh> * ##pxm:ACTION * void on_action_challenge_triggered() with gil: pydata.app.on_action_challenge_triggered() # <<<<<<<<<<<<<< * void on_action_new_solved_triggered() with gil: pydata.app.on_action_new_solved_triggered() * void on_action_preferences_triggered() with gil: pydata.app.on_action_preferences_triggered() */ void MainView::on_action_challenge_triggered(void) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_action_challenge_triggered", 0); __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1295, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_app); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1295, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_on_action_challenge_triggered); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1295, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } if (__pyx_t_3) { __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1295, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1295, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_WriteUnraisable("MainView.on_action_challenge_triggered", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwes2.pyx":1296 * ##pxm:ACTION * void on_action_challenge_triggered() with gil: pydata.app.on_action_challenge_triggered() * void on_action_new_solved_triggered() with gil: pydata.app.on_action_new_solved_triggered() # <<<<<<<<<<<<<< * void on_action_preferences_triggered() with gil: pydata.app.on_action_preferences_triggered() * void on_action_reset_rotation_triggered() with gil: pydata.app.on_action_reset_rotation_triggered() */ void MainView::on_action_new_solved_triggered(void) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_action_new_solved_triggered", 0); __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1296, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_app); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1296, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_on_action_new_solved_triggered); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1296, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } if (__pyx_t_3) { __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1296, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1296, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_WriteUnraisable("MainView.on_action_new_solved_triggered", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwes2.pyx":1297 * void on_action_challenge_triggered() with gil: pydata.app.on_action_challenge_triggered() * void on_action_new_solved_triggered() with gil: pydata.app.on_action_new_solved_triggered() * void on_action_preferences_triggered() with gil: pydata.app.on_action_preferences_triggered() # <<<<<<<<<<<<<< * void on_action_reset_rotation_triggered() with gil: pydata.app.on_action_reset_rotation_triggered() * void on_action_rewind_triggered() with gil: pydata.app.on_action_rewind_triggered() */ void MainView::on_action_preferences_triggered(void) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_action_preferences_triggered", 0); __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1297, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_app); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1297, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_on_action_preferences_triggered); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1297, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } if (__pyx_t_3) { __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1297, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1297, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_WriteUnraisable("MainView.on_action_preferences_triggered", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwes2.pyx":1298 * void on_action_new_solved_triggered() with gil: pydata.app.on_action_new_solved_triggered() * void on_action_preferences_triggered() with gil: pydata.app.on_action_preferences_triggered() * void on_action_reset_rotation_triggered() with gil: pydata.app.on_action_reset_rotation_triggered() # <<<<<<<<<<<<<< * void on_action_rewind_triggered() with gil: pydata.app.on_action_rewind_triggered() * void on_action_previous_triggered() with gil: pydata.app.on_action_previous_triggered() */ void MainView::on_action_reset_rotation_triggered(void) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_action_reset_rotation_triggered", 0); __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1298, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_app); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1298, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_on_action_reset_rotation_trigger); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1298, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } if (__pyx_t_3) { __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1298, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1298, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_WriteUnraisable("MainView.on_action_reset_rotation_triggered", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwes2.pyx":1299 * void on_action_preferences_triggered() with gil: pydata.app.on_action_preferences_triggered() * void on_action_reset_rotation_triggered() with gil: pydata.app.on_action_reset_rotation_triggered() * void on_action_rewind_triggered() with gil: pydata.app.on_action_rewind_triggered() # <<<<<<<<<<<<<< * void on_action_previous_triggered() with gil: pydata.app.on_action_previous_triggered() * void on_action_stop_triggered() with gil: pydata.app.on_action_stop_triggered() */ void MainView::on_action_rewind_triggered(void) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_action_rewind_triggered", 0); __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1299, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_app); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1299, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_on_action_rewind_triggered); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1299, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } if (__pyx_t_3) { __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1299, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1299, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_WriteUnraisable("MainView.on_action_rewind_triggered", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwes2.pyx":1300 * void on_action_reset_rotation_triggered() with gil: pydata.app.on_action_reset_rotation_triggered() * void on_action_rewind_triggered() with gil: pydata.app.on_action_rewind_triggered() * void on_action_previous_triggered() with gil: pydata.app.on_action_previous_triggered() # <<<<<<<<<<<<<< * void on_action_stop_triggered() with gil: pydata.app.on_action_stop_triggered() * void on_action_play_triggered() with gil: pydata.app.on_action_play_triggered() */ void MainView::on_action_previous_triggered(void) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_action_previous_triggered", 0); __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1300, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_app); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1300, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_on_action_previous_triggered); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1300, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } if (__pyx_t_3) { __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1300, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1300, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_WriteUnraisable("MainView.on_action_previous_triggered", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwes2.pyx":1301 * void on_action_rewind_triggered() with gil: pydata.app.on_action_rewind_triggered() * void on_action_previous_triggered() with gil: pydata.app.on_action_previous_triggered() * void on_action_stop_triggered() with gil: pydata.app.on_action_stop_triggered() # <<<<<<<<<<<<<< * void on_action_play_triggered() with gil: pydata.app.on_action_play_triggered() * void on_action_next_triggered() with gil: pydata.app.on_action_next_triggered() */ void MainView::on_action_stop_triggered(void) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_action_stop_triggered", 0); __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1301, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_app); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1301, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_on_action_stop_triggered); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1301, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } if (__pyx_t_3) { __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1301, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1301, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_WriteUnraisable("MainView.on_action_stop_triggered", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwes2.pyx":1302 * void on_action_previous_triggered() with gil: pydata.app.on_action_previous_triggered() * void on_action_stop_triggered() with gil: pydata.app.on_action_stop_triggered() * void on_action_play_triggered() with gil: pydata.app.on_action_play_triggered() # <<<<<<<<<<<<<< * void on_action_next_triggered() with gil: pydata.app.on_action_next_triggered() * void on_action_forward_triggered() with gil: pydata.app.on_action_forward_triggered() */ void MainView::on_action_play_triggered(void) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_action_play_triggered", 0); __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1302, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_app); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1302, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_on_action_play_triggered); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1302, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } if (__pyx_t_3) { __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1302, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1302, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_WriteUnraisable("MainView.on_action_play_triggered", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwes2.pyx":1303 * void on_action_stop_triggered() with gil: pydata.app.on_action_stop_triggered() * void on_action_play_triggered() with gil: pydata.app.on_action_play_triggered() * void on_action_next_triggered() with gil: pydata.app.on_action_next_triggered() # <<<<<<<<<<<<<< * void on_action_forward_triggered() with gil: pydata.app.on_action_forward_triggered() * void on_action_mark_set_triggered() with gil: pydata.app.on_action_mark_set_triggered() */ void MainView::on_action_next_triggered(void) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_action_next_triggered", 0); __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1303, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_app); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1303, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_on_action_next_triggered); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1303, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } if (__pyx_t_3) { __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1303, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1303, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_WriteUnraisable("MainView.on_action_next_triggered", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwes2.pyx":1304 * void on_action_play_triggered() with gil: pydata.app.on_action_play_triggered() * void on_action_next_triggered() with gil: pydata.app.on_action_next_triggered() * void on_action_forward_triggered() with gil: pydata.app.on_action_forward_triggered() # <<<<<<<<<<<<<< * void on_action_mark_set_triggered() with gil: pydata.app.on_action_mark_set_triggered() * void on_action_mark_remove_triggered() with gil: pydata.app.on_action_mark_remove_triggered() */ void MainView::on_action_forward_triggered(void) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_action_forward_triggered", 0); __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1304, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_app); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1304, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_on_action_forward_triggered); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1304, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } if (__pyx_t_3) { __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1304, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1304, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_WriteUnraisable("MainView.on_action_forward_triggered", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwes2.pyx":1305 * void on_action_next_triggered() with gil: pydata.app.on_action_next_triggered() * void on_action_forward_triggered() with gil: pydata.app.on_action_forward_triggered() * void on_action_mark_set_triggered() with gil: pydata.app.on_action_mark_set_triggered() # <<<<<<<<<<<<<< * void on_action_mark_remove_triggered() with gil: pydata.app.on_action_mark_remove_triggered() * void on_action_initial_state_triggered() with gil: pydata.app.on_action_initial_state_triggered() */ void MainView::on_action_mark_set_triggered(void) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_action_mark_set_triggered", 0); __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1305, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_app); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1305, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_on_action_mark_set_triggered); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1305, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } if (__pyx_t_3) { __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1305, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1305, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_WriteUnraisable("MainView.on_action_mark_set_triggered", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwes2.pyx":1306 * void on_action_forward_triggered() with gil: pydata.app.on_action_forward_triggered() * void on_action_mark_set_triggered() with gil: pydata.app.on_action_mark_set_triggered() * void on_action_mark_remove_triggered() with gil: pydata.app.on_action_mark_remove_triggered() # <<<<<<<<<<<<<< * void on_action_initial_state_triggered() with gil: pydata.app.on_action_initial_state_triggered() * void on_action_edit_cube_triggered() with gil: pydata.app.on_action_edit_cube_triggered() */ void MainView::on_action_mark_remove_triggered(void) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_action_mark_remove_triggered", 0); __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1306, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_app); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1306, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_on_action_mark_remove_triggered); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1306, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } if (__pyx_t_3) { __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1306, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1306, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_WriteUnraisable("MainView.on_action_mark_remove_triggered", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwes2.pyx":1307 * void on_action_mark_set_triggered() with gil: pydata.app.on_action_mark_set_triggered() * void on_action_mark_remove_triggered() with gil: pydata.app.on_action_mark_remove_triggered() * void on_action_initial_state_triggered() with gil: pydata.app.on_action_initial_state_triggered() # <<<<<<<<<<<<<< * void on_action_edit_cube_triggered() with gil: pydata.app.on_action_edit_cube_triggered() * ##px. */ void MainView::on_action_initial_state_triggered(void) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_action_initial_state_triggered", 0); __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1307, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_app); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1307, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_on_action_initial_state_triggere); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1307, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } if (__pyx_t_3) { __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1307, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1307, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_WriteUnraisable("MainView.on_action_initial_state_triggered", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwes2.pyx":1308 * void on_action_mark_remove_triggered() with gil: pydata.app.on_action_mark_remove_triggered() * void on_action_initial_state_triggered() with gil: pydata.app.on_action_initial_state_triggered() * void on_action_edit_cube_triggered() with gil: pydata.app.on_action_edit_cube_triggered() # <<<<<<<<<<<<<< * ##px. * */ void MainView::on_action_edit_cube_triggered(void) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_action_edit_cube_triggered", 0); __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1308, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_app); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1308, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_on_action_edit_cube_triggered); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1308, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } if (__pyx_t_3) { __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1308, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1308, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_WriteUnraisable("MainView.on_action_edit_cube_triggered", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwes2.pyx":1312 * * ##pxm-FUNC PH with gil * void on_action_selectmodel_triggered() with gil: # <<<<<<<<<<<<<< * if pydata.modelselect is None: * pydata.modelselect = pydata.app.on_action_selectmodel_triggered() */ void MainView::on_action_selectmodel_triggered(void) { PyObject *__pyx_v_items = NULL; CYTHON_UNUSED PyObject *__pyx_v_index = NULL; PyObject *__pyx_v_title = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; int __pyx_t_3; int __pyx_t_4; PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; PyObject *__pyx_t_7 = NULL; PyObject *(*__pyx_t_8)(PyObject *); #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_action_selectmodel_triggered", 0); /* "_qt_qtwes2.pyx":1313 * ##pxm-FUNC PH with gil * void on_action_selectmodel_triggered() with gil: * if pydata.modelselect is None: # <<<<<<<<<<<<<< * pydata.modelselect = pydata.app.on_action_selectmodel_triggered() * uidata.modelselect_currentpage = 1 */ __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1313, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_modelselect); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1313, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_3 = (__pyx_t_2 == Py_None); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_4 = (__pyx_t_3 != 0); if (__pyx_t_4) { /* "_qt_qtwes2.pyx":1314 * void on_action_selectmodel_triggered() with gil: * if pydata.modelselect is None: * pydata.modelselect = pydata.app.on_action_selectmodel_triggered() # <<<<<<<<<<<<<< * uidata.modelselect_currentpage = 1 * items, index, title = pydata.modelselect.on_model_get_modeldata(1) */ __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1314, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_app); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1314, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_on_action_selectmodel_triggered); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1314, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); } } if (__pyx_t_5) { __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1314, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else { __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1314, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1314, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (__Pyx_PyObject_SetAttrStr(__pyx_t_1, __pyx_n_s_modelselect, __pyx_t_2) < 0) __PYX_ERR(0, 1314, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwes2.pyx":1313 * ##pxm-FUNC PH with gil * void on_action_selectmodel_triggered() with gil: * if pydata.modelselect is None: # <<<<<<<<<<<<<< * pydata.modelselect = pydata.app.on_action_selectmodel_triggered() * uidata.modelselect_currentpage = 1 */ } /* "_qt_qtwes2.pyx":1315 * if pydata.modelselect is None: * pydata.modelselect = pydata.app.on_action_selectmodel_triggered() * uidata.modelselect_currentpage = 1 # <<<<<<<<<<<<<< * items, index, title = pydata.modelselect.on_model_get_modeldata(1) * qtui.fill_page(create_stdmodel(items), str2q(title)) */ __pyx_v_10_qt_qtwes2_uidata.modelselect_currentpage = 1; /* "_qt_qtwes2.pyx":1316 * pydata.modelselect = pydata.app.on_action_selectmodel_triggered() * uidata.modelselect_currentpage = 1 * items, index, title = pydata.modelselect.on_model_get_modeldata(1) # <<<<<<<<<<<<<< * qtui.fill_page(create_stdmodel(items), str2q(title)) * qtui.set_page(1) */ __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1316, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_modelselect); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1316, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_on_model_get_modeldata); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1316, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1316, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_2))) || (PyList_CheckExact(__pyx_t_2))) { PyObject* sequence = __pyx_t_2; #if !CYTHON_COMPILING_IN_PYPY Py_ssize_t size = Py_SIZE(sequence); #else Py_ssize_t size = PySequence_Size(sequence); #endif if (unlikely(size != 3)) { if (size > 3) __Pyx_RaiseTooManyValuesError(3); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 1316, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_1 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); __pyx_t_6 = PyTuple_GET_ITEM(sequence, 2); } else { __pyx_t_1 = PyList_GET_ITEM(sequence, 0); __pyx_t_5 = PyList_GET_ITEM(sequence, 1); __pyx_t_6 = PyList_GET_ITEM(sequence, 2); } __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(__pyx_t_6); #else __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1316, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1316, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1316, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); #endif __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else { Py_ssize_t index = -1; __pyx_t_7 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1316, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_8 = Py_TYPE(__pyx_t_7)->tp_iternext; index = 0; __pyx_t_1 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_1)) goto __pyx_L4_unpacking_failed; __Pyx_GOTREF(__pyx_t_1); index = 1; __pyx_t_5 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_5)) goto __pyx_L4_unpacking_failed; __Pyx_GOTREF(__pyx_t_5); index = 2; __pyx_t_6 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_6)) goto __pyx_L4_unpacking_failed; __Pyx_GOTREF(__pyx_t_6); if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 3) < 0) __PYX_ERR(0, 1316, __pyx_L1_error) __pyx_t_8 = NULL; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; goto __pyx_L5_unpacking_done; __pyx_L4_unpacking_failed:; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_8 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 1316, __pyx_L1_error) __pyx_L5_unpacking_done:; } __pyx_v_items = __pyx_t_1; __pyx_t_1 = 0; __pyx_v_index = __pyx_t_5; __pyx_t_5 = 0; __pyx_v_title = __pyx_t_6; __pyx_t_6 = 0; /* "_qt_qtwes2.pyx":1317 * uidata.modelselect_currentpage = 1 * items, index, title = pydata.modelselect.on_model_get_modeldata(1) * qtui.fill_page(create_stdmodel(items), str2q(title)) # <<<<<<<<<<<<<< * qtui.set_page(1) * ##pxm-FUNC PH with gil */ __pyx_f_6_qtui__fill_page(__pyx_f_10_qt_qtwes2_create_stdmodel(__pyx_v_items), __pyx_f_10_qt_qtwes2_str2q(__pyx_v_title)); /* "_qt_qtwes2.pyx":1318 * items, index, title = pydata.modelselect.on_model_get_modeldata(1) * qtui.fill_page(create_stdmodel(items), str2q(title)) * qtui.set_page(1) # <<<<<<<<<<<<<< * ##pxm-FUNC PH with gil * void on_action_selectmodel_back_triggered() with gil: */ __pyx_f_6_qtui__set_page(1); /* "_qt_qtwes2.pyx":1312 * * ##pxm-FUNC PH with gil * void on_action_selectmodel_triggered() with gil: # <<<<<<<<<<<<<< * if pydata.modelselect is None: * pydata.modelselect = pydata.app.on_action_selectmodel_triggered() */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_WriteUnraisable("MainView.on_action_selectmodel_triggered", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_XDECREF(__pyx_v_items); __Pyx_XDECREF(__pyx_v_index); __Pyx_XDECREF(__pyx_v_title); __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwes2.pyx":1320 * qtui.set_page(1) * ##pxm-FUNC PH with gil * void on_action_selectmodel_back_triggered() with gil: # <<<<<<<<<<<<<< * if pydata.modelselect.on_model_back(): * uidata.modelselect_currentpage -= 1 */ void MainView::on_action_selectmodel_back_triggered(void) { PyObject *__pyx_v_items = NULL; CYTHON_UNUSED PyObject *__pyx_v_index = NULL; PyObject *__pyx_v_title = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; int __pyx_t_4; PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; PyObject *(*__pyx_t_7)(PyObject *); #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_action_selectmodel_back_triggered", 0); /* "_qt_qtwes2.pyx":1321 * ##pxm-FUNC PH with gil * void on_action_selectmodel_back_triggered() with gil: * if pydata.modelselect.on_model_back(): # <<<<<<<<<<<<<< * uidata.modelselect_currentpage -= 1 * items, index, title = pydata.modelselect.on_model_get_modeldata(uidata.modelselect_currentpage) */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1321, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_modelselect); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1321, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_on_model_back); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1321, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } if (__pyx_t_3) { __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1321, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1321, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 1321, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_4) { /* "_qt_qtwes2.pyx":1322 * void on_action_selectmodel_back_triggered() with gil: * if pydata.modelselect.on_model_back(): * uidata.modelselect_currentpage -= 1 # <<<<<<<<<<<<<< * items, index, title = pydata.modelselect.on_model_get_modeldata(uidata.modelselect_currentpage) * qtui.fill_page(create_stdmodel(items), str2q(title)) */ __pyx_v_10_qt_qtwes2_uidata.modelselect_currentpage = (__pyx_v_10_qt_qtwes2_uidata.modelselect_currentpage - 1); /* "_qt_qtwes2.pyx":1323 * if pydata.modelselect.on_model_back(): * uidata.modelselect_currentpage -= 1 * items, index, title = pydata.modelselect.on_model_get_modeldata(uidata.modelselect_currentpage) # <<<<<<<<<<<<<< * qtui.fill_page(create_stdmodel(items), str2q(title)) * qtui.set_page(1) */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1323, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_modelselect); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1323, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_on_model_get_modeldata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1323, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_10_qt_qtwes2_uidata.modelselect_currentpage); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1323, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } if (!__pyx_t_5) { __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1323, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_3}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1323, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_3}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1323, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif { __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1323, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL; __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_3); __pyx_t_3 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1323, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; #if !CYTHON_COMPILING_IN_PYPY Py_ssize_t size = Py_SIZE(sequence); #else Py_ssize_t size = PySequence_Size(sequence); #endif if (unlikely(size != 3)) { if (size > 3) __Pyx_RaiseTooManyValuesError(3); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 1323, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1); __pyx_t_3 = PyTuple_GET_ITEM(sequence, 2); } else { __pyx_t_2 = PyList_GET_ITEM(sequence, 0); __pyx_t_6 = PyList_GET_ITEM(sequence, 1); __pyx_t_3 = PyList_GET_ITEM(sequence, 2); } __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(__pyx_t_3); #else __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1323, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1323, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_3 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1323, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1323, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_7 = Py_TYPE(__pyx_t_5)->tp_iternext; index = 0; __pyx_t_2 = __pyx_t_7(__pyx_t_5); if (unlikely(!__pyx_t_2)) goto __pyx_L4_unpacking_failed; __Pyx_GOTREF(__pyx_t_2); index = 1; __pyx_t_6 = __pyx_t_7(__pyx_t_5); if (unlikely(!__pyx_t_6)) goto __pyx_L4_unpacking_failed; __Pyx_GOTREF(__pyx_t_6); index = 2; __pyx_t_3 = __pyx_t_7(__pyx_t_5); if (unlikely(!__pyx_t_3)) goto __pyx_L4_unpacking_failed; __Pyx_GOTREF(__pyx_t_3); if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_5), 3) < 0) __PYX_ERR(0, 1323, __pyx_L1_error) __pyx_t_7 = NULL; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; goto __pyx_L5_unpacking_done; __pyx_L4_unpacking_failed:; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_7 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 1323, __pyx_L1_error) __pyx_L5_unpacking_done:; } __pyx_v_items = __pyx_t_2; __pyx_t_2 = 0; __pyx_v_index = __pyx_t_6; __pyx_t_6 = 0; __pyx_v_title = __pyx_t_3; __pyx_t_3 = 0; /* "_qt_qtwes2.pyx":1324 * uidata.modelselect_currentpage -= 1 * items, index, title = pydata.modelselect.on_model_get_modeldata(uidata.modelselect_currentpage) * qtui.fill_page(create_stdmodel(items), str2q(title)) # <<<<<<<<<<<<<< * qtui.set_page(1) * else: */ __pyx_f_6_qtui__fill_page(__pyx_f_10_qt_qtwes2_create_stdmodel(__pyx_v_items), __pyx_f_10_qt_qtwes2_str2q(__pyx_v_title)); /* "_qt_qtwes2.pyx":1325 * items, index, title = pydata.modelselect.on_model_get_modeldata(uidata.modelselect_currentpage) * qtui.fill_page(create_stdmodel(items), str2q(title)) * qtui.set_page(1) # <<<<<<<<<<<<<< * else: * qtui.set_page(0) */ __pyx_f_6_qtui__set_page(1); /* "_qt_qtwes2.pyx":1321 * ##pxm-FUNC PH with gil * void on_action_selectmodel_back_triggered() with gil: * if pydata.modelselect.on_model_back(): # <<<<<<<<<<<<<< * uidata.modelselect_currentpage -= 1 * items, index, title = pydata.modelselect.on_model_get_modeldata(uidata.modelselect_currentpage) */ goto __pyx_L3; } /* "_qt_qtwes2.pyx":1327 * qtui.set_page(1) * else: * qtui.set_page(0) # <<<<<<<<<<<<<< * ##pxm-FUNC PHD with gil * void _listwidget_itemActivated(QListWidgetItem *item) with gil: */ /*else*/ { __pyx_f_6_qtui__set_page(0); } __pyx_L3:; /* "_qt_qtwes2.pyx":1320 * qtui.set_page(1) * ##pxm-FUNC PH with gil * void on_action_selectmodel_back_triggered() with gil: # <<<<<<<<<<<<<< * if pydata.modelselect.on_model_back(): * uidata.modelselect_currentpage -= 1 */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_WriteUnraisable("MainView.on_action_selectmodel_back_triggered", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_XDECREF(__pyx_v_items); __Pyx_XDECREF(__pyx_v_index); __Pyx_XDECREF(__pyx_v_title); __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwes2.pyx":1329 * qtui.set_page(0) * ##pxm-FUNC PHD with gil * void _listwidget_itemActivated(QListWidgetItem *item) with gil: # <<<<<<<<<<<<<< * index = item.listWidget().currentRow() #TODO: store index in item * mtype_size = pydata.modelselect.on_convert_to_mtype_size(uidata.modelselect_currentpage, index) */ void MainView::_listwidget_itemActivated(QListWidgetItem *__pyx_v_item) { PyObject *__pyx_v_index = NULL; PyObject *__pyx_v_mtype_size = NULL; PyObject *__pyx_v_items = NULL; PyObject *__pyx_v_title = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; int __pyx_t_5; PyObject *__pyx_t_6 = NULL; int __pyx_t_7; int __pyx_t_8; PyObject *(*__pyx_t_9)(PyObject *); #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("_listwidget_itemActivated", 0); /* "_qt_qtwes2.pyx":1330 * ##pxm-FUNC PHD with gil * void _listwidget_itemActivated(QListWidgetItem *item) with gil: * index = item.listWidget().currentRow() #TODO: store index in item # <<<<<<<<<<<<<< * mtype_size = pydata.modelselect.on_convert_to_mtype_size(uidata.modelselect_currentpage, index) * if mtype_size is None: */ __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_item->listWidget()->currentRow()); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1330, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_index = __pyx_t_1; __pyx_t_1 = 0; /* "_qt_qtwes2.pyx":1331 * void _listwidget_itemActivated(QListWidgetItem *item) with gil: * index = item.listWidget().currentRow() #TODO: store index in item * mtype_size = pydata.modelselect.on_convert_to_mtype_size(uidata.modelselect_currentpage, index) # <<<<<<<<<<<<<< * if mtype_size is None: * uidata.modelselect_currentpage += 1 */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1331, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_modelselect); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1331, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_on_convert_to_mtype_size); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1331, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_10_qt_qtwes2_uidata.modelselect_currentpage); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1331, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = NULL; __pyx_t_5 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_5 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_3, __pyx_v_index}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1331, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_3, __pyx_v_index}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1331, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif { __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1331, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (__pyx_t_4) { __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL; } __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_t_3); __Pyx_INCREF(__pyx_v_index); __Pyx_GIVEREF(__pyx_v_index); PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_v_index); __pyx_t_3 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1331, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_mtype_size = __pyx_t_1; __pyx_t_1 = 0; /* "_qt_qtwes2.pyx":1332 * index = item.listWidget().currentRow() #TODO: store index in item * mtype_size = pydata.modelselect.on_convert_to_mtype_size(uidata.modelselect_currentpage, index) * if mtype_size is None: # <<<<<<<<<<<<<< * uidata.modelselect_currentpage += 1 * items, index, title = pydata.modelselect.on_model_get_modeldata(uidata.modelselect_currentpage) */ __pyx_t_7 = (__pyx_v_mtype_size == Py_None); __pyx_t_8 = (__pyx_t_7 != 0); if (__pyx_t_8) { /* "_qt_qtwes2.pyx":1333 * mtype_size = pydata.modelselect.on_convert_to_mtype_size(uidata.modelselect_currentpage, index) * if mtype_size is None: * uidata.modelselect_currentpage += 1 # <<<<<<<<<<<<<< * items, index, title = pydata.modelselect.on_model_get_modeldata(uidata.modelselect_currentpage) * qtui.fill_page(create_stdmodel(items), str2q(title)) */ __pyx_v_10_qt_qtwes2_uidata.modelselect_currentpage = (__pyx_v_10_qt_qtwes2_uidata.modelselect_currentpage + 1); /* "_qt_qtwes2.pyx":1334 * if mtype_size is None: * uidata.modelselect_currentpage += 1 * items, index, title = pydata.modelselect.on_model_get_modeldata(uidata.modelselect_currentpage) # <<<<<<<<<<<<<< * qtui.fill_page(create_stdmodel(items), str2q(title)) * else: */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1334, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_modelselect); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1334, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_on_model_get_modeldata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1334, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_10_qt_qtwes2_uidata.modelselect_currentpage); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1334, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } if (!__pyx_t_3) { __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1334, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_1); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_6}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1334, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_6}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1334, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else #endif { __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1334, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL; __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_6); __pyx_t_6 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1334, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; #if !CYTHON_COMPILING_IN_PYPY Py_ssize_t size = Py_SIZE(sequence); #else Py_ssize_t size = PySequence_Size(sequence); #endif if (unlikely(size != 3)) { if (size > 3) __Pyx_RaiseTooManyValuesError(3); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 1334, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1); __pyx_t_6 = PyTuple_GET_ITEM(sequence, 2); } else { __pyx_t_2 = PyList_GET_ITEM(sequence, 0); __pyx_t_4 = PyList_GET_ITEM(sequence, 1); __pyx_t_6 = PyList_GET_ITEM(sequence, 2); } __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(__pyx_t_6); #else __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1334, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1334, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_6 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1334, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1334, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_9 = Py_TYPE(__pyx_t_3)->tp_iternext; index = 0; __pyx_t_2 = __pyx_t_9(__pyx_t_3); if (unlikely(!__pyx_t_2)) goto __pyx_L4_unpacking_failed; __Pyx_GOTREF(__pyx_t_2); index = 1; __pyx_t_4 = __pyx_t_9(__pyx_t_3); if (unlikely(!__pyx_t_4)) goto __pyx_L4_unpacking_failed; __Pyx_GOTREF(__pyx_t_4); index = 2; __pyx_t_6 = __pyx_t_9(__pyx_t_3); if (unlikely(!__pyx_t_6)) goto __pyx_L4_unpacking_failed; __Pyx_GOTREF(__pyx_t_6); if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_3), 3) < 0) __PYX_ERR(0, 1334, __pyx_L1_error) __pyx_t_9 = NULL; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L5_unpacking_done; __pyx_L4_unpacking_failed:; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_9 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 1334, __pyx_L1_error) __pyx_L5_unpacking_done:; } __pyx_v_items = __pyx_t_2; __pyx_t_2 = 0; __Pyx_DECREF_SET(__pyx_v_index, __pyx_t_4); __pyx_t_4 = 0; __pyx_v_title = __pyx_t_6; __pyx_t_6 = 0; /* "_qt_qtwes2.pyx":1335 * uidata.modelselect_currentpage += 1 * items, index, title = pydata.modelselect.on_model_get_modeldata(uidata.modelselect_currentpage) * qtui.fill_page(create_stdmodel(items), str2q(title)) # <<<<<<<<<<<<<< * else: * pydata.app.on_load_other_game(*mtype_size) */ __pyx_f_6_qtui__fill_page(__pyx_f_10_qt_qtwes2_create_stdmodel(__pyx_v_items), __pyx_f_10_qt_qtwes2_str2q(__pyx_v_title)); /* "_qt_qtwes2.pyx":1332 * index = item.listWidget().currentRow() #TODO: store index in item * mtype_size = pydata.modelselect.on_convert_to_mtype_size(uidata.modelselect_currentpage, index) * if mtype_size is None: # <<<<<<<<<<<<<< * uidata.modelselect_currentpage += 1 * items, index, title = pydata.modelselect.on_model_get_modeldata(uidata.modelselect_currentpage) */ goto __pyx_L3; } /* "_qt_qtwes2.pyx":1337 * qtui.fill_page(create_stdmodel(items), str2q(title)) * else: * pydata.app.on_load_other_game(*mtype_size) # <<<<<<<<<<<<<< * qtui.set_page(0) * while pydata.modelselect.on_model_back(): */ /*else*/ { __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1337, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_app); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1337, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_on_load_other_game); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1337, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = PySequence_Tuple(__pyx_v_mtype_size); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1337, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1337, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwes2.pyx":1338 * else: * pydata.app.on_load_other_game(*mtype_size) * qtui.set_page(0) # <<<<<<<<<<<<<< * while pydata.modelselect.on_model_back(): * pass */ __pyx_f_6_qtui__set_page(0); /* "_qt_qtwes2.pyx":1339 * pydata.app.on_load_other_game(*mtype_size) * qtui.set_page(0) * while pydata.modelselect.on_model_back(): # <<<<<<<<<<<<<< * pass * ##pxm-FUNC PH with gil */ while (1) { __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1339, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_modelselect); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1339, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_on_model_back); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1339, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) { __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_1)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); } } if (__pyx_t_1) { __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1339, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1339, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 1339, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (!__pyx_t_8) break; } } __pyx_L3:; /* "_qt_qtwes2.pyx":1329 * qtui.set_page(0) * ##pxm-FUNC PHD with gil * void _listwidget_itemActivated(QListWidgetItem *item) with gil: # <<<<<<<<<<<<<< * index = item.listWidget().currentRow() #TODO: store index in item * mtype_size = pydata.modelselect.on_convert_to_mtype_size(uidata.modelselect_currentpage, index) */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_6); __Pyx_WriteUnraisable("MainView._listwidget_itemActivated", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_XDECREF(__pyx_v_index); __Pyx_XDECREF(__pyx_v_mtype_size); __Pyx_XDECREF(__pyx_v_items); __Pyx_XDECREF(__pyx_v_title); __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwes2.pyx":1342 * pass * ##pxm-FUNC PH with gil * void on_listwidget_itemActivated(QListWidgetItem *item) with gil: # <<<<<<<<<<<<<< * this._listwidget_itemActivated(item) * ##pxm-FUNC PH with gil */ void MainView::on_listwidget_itemActivated(QListWidgetItem *__pyx_v_item) { __Pyx_RefNannyDeclarations #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_listwidget_itemActivated", 0); /* "_qt_qtwes2.pyx":1343 * ##pxm-FUNC PH with gil * void on_listwidget_itemActivated(QListWidgetItem *item) with gil: * this._listwidget_itemActivated(item) # <<<<<<<<<<<<<< * ##pxm-FUNC PH with gil * void on_listwidget_itemClicked(QListWidgetItem *item) with gil: */ this->_listwidget_itemActivated(__pyx_v_item); /* "_qt_qtwes2.pyx":1342 * pass * ##pxm-FUNC PH with gil * void on_listwidget_itemActivated(QListWidgetItem *item) with gil: # <<<<<<<<<<<<<< * this._listwidget_itemActivated(item) * ##pxm-FUNC PH with gil */ /* function exit code */ __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwes2.pyx":1345 * this._listwidget_itemActivated(item) * ##pxm-FUNC PH with gil * void on_listwidget_itemClicked(QListWidgetItem *item) with gil: # <<<<<<<<<<<<<< * this._listwidget_itemActivated(item) * ##pxm-FUNC PH with gil */ void MainView::on_listwidget_itemClicked(QListWidgetItem *__pyx_v_item) { __Pyx_RefNannyDeclarations #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_listwidget_itemClicked", 0); /* "_qt_qtwes2.pyx":1346 * ##pxm-FUNC PH with gil * void on_listwidget_itemClicked(QListWidgetItem *item) with gil: * this._listwidget_itemActivated(item) # <<<<<<<<<<<<<< * ##pxm-FUNC PH with gil * void on_action_quit_triggered() with gil: */ this->_listwidget_itemActivated(__pyx_v_item); /* "_qt_qtwes2.pyx":1345 * this._listwidget_itemActivated(item) * ##pxm-FUNC PH with gil * void on_listwidget_itemClicked(QListWidgetItem *item) with gil: # <<<<<<<<<<<<<< * this._listwidget_itemActivated(item) * ##pxm-FUNC PH with gil */ /* function exit code */ __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwes2.pyx":1348 * this._listwidget_itemActivated(item) * ##pxm-FUNC PH with gil * void on_action_quit_triggered() with gil: # <<<<<<<<<<<<<< * this.close() * ##pxm-FUNC PH with gil */ void MainView::on_action_quit_triggered(void) { __Pyx_RefNannyDeclarations #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_action_quit_triggered", 0); /* "_qt_qtwes2.pyx":1349 * ##pxm-FUNC PH with gil * void on_action_quit_triggered() with gil: * this.close() # <<<<<<<<<<<<<< * ##pxm-FUNC PH with gil * void on_action_editbar_toggled(cbool checked) with gil: */ this->close(); /* "_qt_qtwes2.pyx":1348 * this._listwidget_itemActivated(item) * ##pxm-FUNC PH with gil * void on_action_quit_triggered() with gil: # <<<<<<<<<<<<<< * this.close() * ##pxm-FUNC PH with gil */ /* function exit code */ __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwes2.pyx":1351 * this.close() * ##pxm-FUNC PH with gil * void on_action_editbar_toggled(cbool checked) with gil: # <<<<<<<<<<<<<< * qtui.set_frame_editbar_visible(checked) * settings['window.editbar'] = checked */ void MainView::on_action_editbar_toggled(bool __pyx_v_checked) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_action_editbar_toggled", 0); /* "_qt_qtwes2.pyx":1352 * ##pxm-FUNC PH with gil * void on_action_editbar_toggled(cbool checked) with gil: * qtui.set_frame_editbar_visible(checked) # <<<<<<<<<<<<<< * settings['window.editbar'] = checked * ##pxm-FUNC PH with gil */ __pyx_f_6_qtui__set_frame_editbar_visible(__pyx_v_checked); /* "_qt_qtwes2.pyx":1353 * void on_action_editbar_toggled(cbool checked) with gil: * qtui.set_frame_editbar_visible(checked) * settings['window.editbar'] = checked # <<<<<<<<<<<<<< * ##pxm-FUNC PH with gil * void on_action_statusbar_toggled(cbool checked) with gil: */ __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_checked); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1353, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1353, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (unlikely(PyObject_SetItem(__pyx_t_2, __pyx_kp_u_window_editbar, __pyx_t_1) < 0)) __PYX_ERR(0, 1353, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwes2.pyx":1351 * this.close() * ##pxm-FUNC PH with gil * void on_action_editbar_toggled(cbool checked) with gil: # <<<<<<<<<<<<<< * qtui.set_frame_editbar_visible(checked) * settings['window.editbar'] = checked */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_WriteUnraisable("MainView.on_action_editbar_toggled", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwes2.pyx":1355 * settings['window.editbar'] = checked * ##pxm-FUNC PH with gil * void on_action_statusbar_toggled(cbool checked) with gil: # <<<<<<<<<<<<<< * qtui.set_statusbar_visible(checked) * settings['window.statusbar'] = checked */ void MainView::on_action_statusbar_toggled(bool __pyx_v_checked) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_action_statusbar_toggled", 0); /* "_qt_qtwes2.pyx":1356 * ##pxm-FUNC PH with gil * void on_action_statusbar_toggled(cbool checked) with gil: * qtui.set_statusbar_visible(checked) # <<<<<<<<<<<<<< * settings['window.statusbar'] = checked * ##pxm-FUNC PH nogil */ __pyx_f_6_qtui__set_statusbar_visible(__pyx_v_checked); /* "_qt_qtwes2.pyx":1357 * void on_action_statusbar_toggled(cbool checked) with gil: * qtui.set_statusbar_visible(checked) * settings['window.statusbar'] = checked # <<<<<<<<<<<<<< * ##pxm-FUNC PH nogil * void on_action_help_triggered() nogil: */ __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_checked); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1357, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1357, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (unlikely(PyObject_SetItem(__pyx_t_2, __pyx_kp_u_window_statusbar, __pyx_t_1) < 0)) __PYX_ERR(0, 1357, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwes2.pyx":1355 * settings['window.editbar'] = checked * ##pxm-FUNC PH with gil * void on_action_statusbar_toggled(cbool checked) with gil: # <<<<<<<<<<<<<< * qtui.set_statusbar_visible(checked) * settings['window.statusbar'] = checked */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_WriteUnraisable("MainView.on_action_statusbar_toggled", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwes2.pyx":1359 * settings['window.statusbar'] = checked * ##pxm-FUNC PH nogil * void on_action_help_triggered() nogil: # <<<<<<<<<<<<<< * if uidata.help == NULL: * help_dialog() */ void MainView::on_action_help_triggered(void) { int __pyx_t_1; /* "_qt_qtwes2.pyx":1360 * ##pxm-FUNC PH nogil * void on_action_help_triggered() nogil: * if uidata.help == NULL: # <<<<<<<<<<<<<< * help_dialog() * help_dialog_show() */ __pyx_t_1 = ((__pyx_v_10_qt_qtwes2_uidata.help == NULL) != 0); if (__pyx_t_1) { /* "_qt_qtwes2.pyx":1361 * void on_action_help_triggered() nogil: * if uidata.help == NULL: * help_dialog() # <<<<<<<<<<<<<< * help_dialog_show() * ##pxm-FUNC PH nogil */ __pyx_f_10_qt_qtwes2_help_dialog(); /* "_qt_qtwes2.pyx":1360 * ##pxm-FUNC PH nogil * void on_action_help_triggered() nogil: * if uidata.help == NULL: # <<<<<<<<<<<<<< * help_dialog() * help_dialog_show() */ } /* "_qt_qtwes2.pyx":1362 * if uidata.help == NULL: * help_dialog() * help_dialog_show() # <<<<<<<<<<<<<< * ##pxm-FUNC PH nogil * void on_action_info_triggered() nogil: */ __pyx_f_10_qt_qtwes2_help_dialog_show(); /* "_qt_qtwes2.pyx":1359 * settings['window.statusbar'] = checked * ##pxm-FUNC PH nogil * void on_action_help_triggered() nogil: # <<<<<<<<<<<<<< * if uidata.help == NULL: * help_dialog() */ /* function exit code */ } /* "_qt_qtwes2.pyx":1364 * help_dialog_show() * ##pxm-FUNC PH nogil * void on_action_info_triggered() nogil: # <<<<<<<<<<<<<< * about_dialog() * ##pxm-FUNC PH with gil */ void MainView::on_action_info_triggered(void) { /* "_qt_qtwes2.pyx":1365 * ##pxm-FUNC PH nogil * void on_action_info_triggered() nogil: * about_dialog() # <<<<<<<<<<<<<< * ##pxm-FUNC PH with gil * void on_splitter_splitterMoved(int pos, int index) with gil: */ __pyx_f_10_qt_qtwes2_about_dialog(); /* "_qt_qtwes2.pyx":1364 * help_dialog_show() * ##pxm-FUNC PH nogil * void on_action_info_triggered() nogil: # <<<<<<<<<<<<<< * about_dialog() * ##pxm-FUNC PH with gil */ /* function exit code */ } /* "_qt_qtwes2.pyx":1367 * about_dialog() * ##pxm-FUNC PH with gil * void on_splitter_splitterMoved(int pos, int index) with gil: # <<<<<<<<<<<<<< * if index == 1: * settings['window.divider'] = pos */ void MainView::on_splitter_splitterMoved(int __pyx_v_pos, int __pyx_v_index) { __Pyx_RefNannyDeclarations int __pyx_t_1; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_splitter_splitterMoved", 0); /* "_qt_qtwes2.pyx":1368 * ##pxm-FUNC PH with gil * void on_splitter_splitterMoved(int pos, int index) with gil: * if index == 1: # <<<<<<<<<<<<<< * settings['window.divider'] = pos * qtui.splitter_update_minimumsize() */ __pyx_t_1 = ((__pyx_v_index == 1) != 0); if (__pyx_t_1) { /* "_qt_qtwes2.pyx":1369 * void on_splitter_splitterMoved(int pos, int index) with gil: * if index == 1: * settings['window.divider'] = pos # <<<<<<<<<<<<<< * qtui.splitter_update_minimumsize() * ##pxm-FUNC PH with gil */ __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_pos); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1369, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1369, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (unlikely(PyObject_SetItem(__pyx_t_3, __pyx_kp_u_window_divider, __pyx_t_2) < 0)) __PYX_ERR(0, 1369, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwes2.pyx":1370 * if index == 1: * settings['window.divider'] = pos * qtui.splitter_update_minimumsize() # <<<<<<<<<<<<<< * ##pxm-FUNC PH with gil * void on_button_edit_clear_clicked() with gil: */ __pyx_f_6_qtui__splitter_update_minimumsize(); /* "_qt_qtwes2.pyx":1368 * ##pxm-FUNC PH with gil * void on_splitter_splitterMoved(int pos, int index) with gil: * if index == 1: # <<<<<<<<<<<<<< * settings['window.divider'] = pos * qtui.splitter_update_minimumsize() */ } /* "_qt_qtwes2.pyx":1367 * about_dialog() * ##pxm-FUNC PH with gil * void on_splitter_splitterMoved(int pos, int index) with gil: # <<<<<<<<<<<<<< * if index == 1: * settings['window.divider'] = pos */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_WriteUnraisable("MainView.on_splitter_splitterMoved", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwes2.pyx":1372 * qtui.splitter_update_minimumsize() * ##pxm-FUNC PH with gil * void on_button_edit_clear_clicked() with gil: # <<<<<<<<<<<<<< * uidata.move_edit.setText(str2q('')) * pydata.app.on_edit_finished(q2str(uidata.move_edit.text()), uidata.move_edit.cursorPosition()) */ void MainView::on_button_edit_clear_clicked(void) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; int __pyx_t_6; PyObject *__pyx_t_7 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_button_edit_clear_clicked", 0); /* "_qt_qtwes2.pyx":1373 * ##pxm-FUNC PH with gil * void on_button_edit_clear_clicked() with gil: * uidata.move_edit.setText(str2q('')) # <<<<<<<<<<<<<< * pydata.app.on_edit_finished(q2str(uidata.move_edit.text()), uidata.move_edit.cursorPosition()) * ##pxm-FUNC PH with gil */ __pyx_v_10_qt_qtwes2_uidata.move_edit->setText(__pyx_f_10_qt_qtwes2_str2q(__pyx_kp_u__6)); /* "_qt_qtwes2.pyx":1374 * void on_button_edit_clear_clicked() with gil: * uidata.move_edit.setText(str2q('')) * pydata.app.on_edit_finished(q2str(uidata.move_edit.text()), uidata.move_edit.cursorPosition()) # <<<<<<<<<<<<<< * ##pxm-FUNC PH with gil * void on_button_edit_exec_clicked() with gil: */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1374, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_app); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1374, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_on_edit_finished); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1374, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __pyx_f_10_qt_qtwes2_q2str(__pyx_v_10_qt_qtwes2_uidata.move_edit->text()); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1374, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_10_qt_qtwes2_uidata.move_edit->cursorPosition()); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1374, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_3, __pyx_t_4}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1374, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_3, __pyx_t_4}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1374, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1374, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_t_4); __pyx_t_3 = 0; __pyx_t_4 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1374, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwes2.pyx":1372 * qtui.splitter_update_minimumsize() * ##pxm-FUNC PH with gil * void on_button_edit_clear_clicked() with gil: # <<<<<<<<<<<<<< * uidata.move_edit.setText(str2q('')) * pydata.app.on_edit_finished(q2str(uidata.move_edit.text()), uidata.move_edit.cursorPosition()) */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_7); __Pyx_WriteUnraisable("MainView.on_button_edit_clear_clicked", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwes2.pyx":1376 * pydata.app.on_edit_finished(q2str(uidata.move_edit.text()), uidata.move_edit.cursorPosition()) * ##pxm-FUNC PH with gil * void on_button_edit_exec_clicked() with gil: # <<<<<<<<<<<<<< * pydata.app.on_edit_finished(q2str(uidata.move_edit.text()), uidata.move_edit.cursorPosition()) * ##pxm-FUNC PH with gil */ void MainView::on_button_edit_exec_clicked(void) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; int __pyx_t_6; PyObject *__pyx_t_7 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_button_edit_exec_clicked", 0); /* "_qt_qtwes2.pyx":1377 * ##pxm-FUNC PH with gil * void on_button_edit_exec_clicked() with gil: * pydata.app.on_edit_finished(q2str(uidata.move_edit.text()), uidata.move_edit.cursorPosition()) # <<<<<<<<<<<<<< * ##pxm-FUNC PH with gil * void on_action_jump_to_editbar_triggered() with gil: */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1377, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_app); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1377, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_on_edit_finished); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1377, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __pyx_f_10_qt_qtwes2_q2str(__pyx_v_10_qt_qtwes2_uidata.move_edit->text()); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1377, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_10_qt_qtwes2_uidata.move_edit->cursorPosition()); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1377, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_3, __pyx_t_4}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1377, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_3, __pyx_t_4}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1377, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1377, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_t_4); __pyx_t_3 = 0; __pyx_t_4 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1377, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwes2.pyx":1376 * pydata.app.on_edit_finished(q2str(uidata.move_edit.text()), uidata.move_edit.cursorPosition()) * ##pxm-FUNC PH with gil * void on_button_edit_exec_clicked() with gil: # <<<<<<<<<<<<<< * pydata.app.on_edit_finished(q2str(uidata.move_edit.text()), uidata.move_edit.cursorPosition()) * ##pxm-FUNC PH with gil */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_7); __Pyx_WriteUnraisable("MainView.on_button_edit_exec_clicked", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwes2.pyx":1379 * pydata.app.on_edit_finished(q2str(uidata.move_edit.text()), uidata.move_edit.cursorPosition()) * ##pxm-FUNC PH with gil * void on_action_jump_to_editbar_triggered() with gil: # <<<<<<<<<<<<<< * uidata.move_edit.setFocus() * */ void MainView::on_action_jump_to_editbar_triggered(void) { __Pyx_RefNannyDeclarations #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_action_jump_to_editbar_triggered", 0); /* "_qt_qtwes2.pyx":1380 * ##pxm-FUNC PH with gil * void on_action_jump_to_editbar_triggered() with gil: * uidata.move_edit.setFocus() # <<<<<<<<<<<<<< * * ##pxm-FUNC PH with gil */ __pyx_v_10_qt_qtwes2_uidata.move_edit->setFocus(); /* "_qt_qtwes2.pyx":1379 * pydata.app.on_edit_finished(q2str(uidata.move_edit.text()), uidata.move_edit.cursorPosition()) * ##pxm-FUNC PH with gil * void on_action_jump_to_editbar_triggered() with gil: # <<<<<<<<<<<<<< * uidata.move_edit.setFocus() * */ /* function exit code */ __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwes2.pyx":1383 * * ##pxm-FUNC PH with gil * void _on_button_sidepane_clicked() with gil: # <<<<<<<<<<<<<< * qtui.set_active_plugin_group_by_obj(this.sender()) * ##pxm-FUNC PH with gil */ void MainView::_on_button_sidepane_clicked(void) { __Pyx_RefNannyDeclarations #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("_on_button_sidepane_clicked", 0); /* "_qt_qtwes2.pyx":1384 * ##pxm-FUNC PH with gil * void _on_button_sidepane_clicked() with gil: * qtui.set_active_plugin_group_by_obj(this.sender()) # <<<<<<<<<<<<<< * ##pxm-FUNC PH with gil * void _on_treeview_activated(const QModelIndex &index) with gil: */ __pyx_f_6_qtui__set_active_plugin_group_by_obj(this->sender()); /* "_qt_qtwes2.pyx":1383 * * ##pxm-FUNC PH with gil * void _on_button_sidepane_clicked() with gil: # <<<<<<<<<<<<<< * qtui.set_active_plugin_group_by_obj(this.sender()) * ##pxm-FUNC PH with gil */ /* function exit code */ __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwes2.pyx":1386 * qtui.set_active_plugin_group_by_obj(this.sender()) * ##pxm-FUNC PH with gil * void _on_treeview_activated(const QModelIndex &index) with gil: # <<<<<<<<<<<<<< * func_idx = fromvariant(index.data(Qt.UserRole + 1)) * if func_idx is None: */ void MainView::_on_treeview_activated(QModelIndex const &__pyx_v_index) { PyObject *__pyx_v_func_idx = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_t_2; int __pyx_t_3; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("_on_treeview_activated", 0); /* "_qt_qtwes2.pyx":1387 * ##pxm-FUNC PH with gil * void _on_treeview_activated(const QModelIndex &index) with gil: * func_idx = fromvariant(index.data(Qt.UserRole + 1)) # <<<<<<<<<<<<<< * if func_idx is None: * return */ __pyx_t_1 = __pyx_f_10_qt_qtwes2_fromvariant(__pyx_v_index.data((Qt::UserRole + 1))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1387, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_func_idx = __pyx_t_1; __pyx_t_1 = 0; /* "_qt_qtwes2.pyx":1388 * void _on_treeview_activated(const QModelIndex &index) with gil: * func_idx = fromvariant(index.data(Qt.UserRole + 1)) * if func_idx is None: # <<<<<<<<<<<<<< * return * pydata.app.on_plugin_activated(func_idx) */ __pyx_t_2 = (__pyx_v_func_idx == Py_None); __pyx_t_3 = (__pyx_t_2 != 0); if (__pyx_t_3) { /* "_qt_qtwes2.pyx":1389 * func_idx = fromvariant(index.data(Qt.UserRole + 1)) * if func_idx is None: * return # <<<<<<<<<<<<<< * pydata.app.on_plugin_activated(func_idx) * ##pxm>IF_END */ goto __pyx_L0; /* "_qt_qtwes2.pyx":1388 * void _on_treeview_activated(const QModelIndex &index) with gil: * func_idx = fromvariant(index.data(Qt.UserRole + 1)) * if func_idx is None: # <<<<<<<<<<<<<< * return * pydata.app.on_plugin_activated(func_idx) */ } /* "_qt_qtwes2.pyx":1390 * if func_idx is None: * return * pydata.app.on_plugin_activated(func_idx) # <<<<<<<<<<<<<< * ##pxm>IF_END * ##pxm>CPPCLASS_END */ __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1390, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_app); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1390, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_on_plugin_activated); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1390, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); } } if (!__pyx_t_5) { __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_func_idx); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1390, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_v_func_idx}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1390, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_v_func_idx}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1390, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1390, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL; __Pyx_INCREF(__pyx_v_func_idx); __Pyx_GIVEREF(__pyx_v_func_idx); PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_v_func_idx); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1390, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwes2.pyx":1386 * qtui.set_active_plugin_group_by_obj(this.sender()) * ##pxm-FUNC PH with gil * void _on_treeview_activated(const QModelIndex &index) with gil: # <<<<<<<<<<<<<< * func_idx = fromvariant(index.data(Qt.UserRole + 1)) * if func_idx is None: */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_WriteUnraisable("MainView._on_treeview_activated", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_XDECREF(__pyx_v_func_idx); __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwes2.pyx":1406 * ##pxc>} * ##pxm-FUNC PH with gil * void keyPressEvent(QKeyEvent *event) with gil: # <<<<<<<<<<<<<< * if event.matches(MoveToNextWord): * pos = pydata.app.on_edit_moves_nextword(q2str(this.text()), this.cursorPosition()) */ void MoveEdit::keyPressEvent(QKeyEvent *__pyx_v_event) { PyObject *__pyx_v_pos = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; int __pyx_t_7; PyObject *__pyx_t_8 = NULL; int __pyx_t_9; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("keyPressEvent", 0); /* "_qt_qtwes2.pyx":1407 * ##pxm-FUNC PH with gil * void keyPressEvent(QKeyEvent *event) with gil: * if event.matches(MoveToNextWord): # <<<<<<<<<<<<<< * pos = pydata.app.on_edit_moves_nextword(q2str(this.text()), this.cursorPosition()) * this.setCursorPosition(pos) */ __pyx_t_1 = (__pyx_v_event->matches(QKeySequence::MoveToNextWord) != 0); if (__pyx_t_1) { /* "_qt_qtwes2.pyx":1408 * void keyPressEvent(QKeyEvent *event) with gil: * if event.matches(MoveToNextWord): * pos = pydata.app.on_edit_moves_nextword(q2str(this.text()), this.cursorPosition()) # <<<<<<<<<<<<<< * this.setCursorPosition(pos) * elif event.matches(MoveToPreviousWord): */ __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1408, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_app); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1408, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_on_edit_moves_nextword); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1408, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __pyx_f_10_qt_qtwes2_q2str(this->text()); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1408, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyInt_From_int(this->cursorPosition()); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1408, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = NULL; __pyx_t_7 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_7 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_t_4, __pyx_t_5}; __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1408, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_t_4, __pyx_t_5}; __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1408, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif { __pyx_t_8 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1408, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); if (__pyx_t_6) { __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = NULL; } __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_7, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, __pyx_t_5); __pyx_t_4 = 0; __pyx_t_5 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_8, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1408, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_pos = __pyx_t_2; __pyx_t_2 = 0; /* "_qt_qtwes2.pyx":1409 * if event.matches(MoveToNextWord): * pos = pydata.app.on_edit_moves_nextword(q2str(this.text()), this.cursorPosition()) * this.setCursorPosition(pos) # <<<<<<<<<<<<<< * elif event.matches(MoveToPreviousWord): * pos = pydata.app.on_edit_moves_prevword(q2str(this.text()), this.cursorPosition()) */ __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_v_pos); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1409, __pyx_L1_error) this->setCursorPosition(__pyx_t_7); /* "_qt_qtwes2.pyx":1407 * ##pxm-FUNC PH with gil * void keyPressEvent(QKeyEvent *event) with gil: * if event.matches(MoveToNextWord): # <<<<<<<<<<<<<< * pos = pydata.app.on_edit_moves_nextword(q2str(this.text()), this.cursorPosition()) * this.setCursorPosition(pos) */ goto __pyx_L3; } /* "_qt_qtwes2.pyx":1410 * pos = pydata.app.on_edit_moves_nextword(q2str(this.text()), this.cursorPosition()) * this.setCursorPosition(pos) * elif event.matches(MoveToPreviousWord): # <<<<<<<<<<<<<< * pos = pydata.app.on_edit_moves_prevword(q2str(this.text()), this.cursorPosition()) * this.setCursorPosition(pos) */ __pyx_t_1 = (__pyx_v_event->matches(QKeySequence::MoveToPreviousWord) != 0); if (__pyx_t_1) { /* "_qt_qtwes2.pyx":1411 * this.setCursorPosition(pos) * elif event.matches(MoveToPreviousWord): * pos = pydata.app.on_edit_moves_prevword(q2str(this.text()), this.cursorPosition()) # <<<<<<<<<<<<<< * this.setCursorPosition(pos) * elif event.key() == Qt.Key_Right and event.modifiers() == Qt.AltModifier: */ __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1411, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_app); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1411, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_on_edit_moves_prevword); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1411, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = __pyx_f_10_qt_qtwes2_q2str(this->text()); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1411, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_5 = __Pyx_PyInt_From_int(this->cursorPosition()); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1411, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_4 = NULL; __pyx_t_7 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_7 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_8, __pyx_t_5}; __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1411, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_8, __pyx_t_5}; __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1411, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif { __pyx_t_6 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1411, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (__pyx_t_4) { __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL; } __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_7, __pyx_t_8); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_7, __pyx_t_5); __pyx_t_8 = 0; __pyx_t_5 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1411, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_pos = __pyx_t_2; __pyx_t_2 = 0; /* "_qt_qtwes2.pyx":1412 * elif event.matches(MoveToPreviousWord): * pos = pydata.app.on_edit_moves_prevword(q2str(this.text()), this.cursorPosition()) * this.setCursorPosition(pos) # <<<<<<<<<<<<<< * elif event.key() == Qt.Key_Right and event.modifiers() == Qt.AltModifier: * pydata.app.on_edit_moves_swapnext(q2str(this.text()), this.cursorPosition()) */ __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_v_pos); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1412, __pyx_L1_error) this->setCursorPosition(__pyx_t_7); /* "_qt_qtwes2.pyx":1410 * pos = pydata.app.on_edit_moves_nextword(q2str(this.text()), this.cursorPosition()) * this.setCursorPosition(pos) * elif event.matches(MoveToPreviousWord): # <<<<<<<<<<<<<< * pos = pydata.app.on_edit_moves_prevword(q2str(this.text()), this.cursorPosition()) * this.setCursorPosition(pos) */ goto __pyx_L3; } /* "_qt_qtwes2.pyx":1413 * pos = pydata.app.on_edit_moves_prevword(q2str(this.text()), this.cursorPosition()) * this.setCursorPosition(pos) * elif event.key() == Qt.Key_Right and event.modifiers() == Qt.AltModifier: # <<<<<<<<<<<<<< * pydata.app.on_edit_moves_swapnext(q2str(this.text()), this.cursorPosition()) * elif event.key() == Qt.Key_Left and event.modifiers() == Qt.AltModifier: */ __pyx_t_9 = ((__pyx_v_event->key() == Qt::Key_Right) != 0); if (__pyx_t_9) { } else { __pyx_t_1 = __pyx_t_9; goto __pyx_L4_bool_binop_done; } __pyx_t_9 = ((__pyx_v_event->modifiers() == Qt::AltModifier) != 0); __pyx_t_1 = __pyx_t_9; __pyx_L4_bool_binop_done:; if (__pyx_t_1) { /* "_qt_qtwes2.pyx":1414 * this.setCursorPosition(pos) * elif event.key() == Qt.Key_Right and event.modifiers() == Qt.AltModifier: * pydata.app.on_edit_moves_swapnext(q2str(this.text()), this.cursorPosition()) # <<<<<<<<<<<<<< * elif event.key() == Qt.Key_Left and event.modifiers() == Qt.AltModifier: * pydata.app.on_edit_moves_swapprev(q2str(this.text()), this.cursorPosition()) */ __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1414, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_app); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1414, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_on_edit_moves_swapnext); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1414, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __pyx_f_10_qt_qtwes2_q2str(this->text()); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1414, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_5 = __Pyx_PyInt_From_int(this->cursorPosition()); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1414, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_8 = NULL; __pyx_t_7 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_8)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_7 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_8, __pyx_t_6, __pyx_t_5}; __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1414, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_8, __pyx_t_6, __pyx_t_5}; __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1414, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif { __pyx_t_4 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1414, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (__pyx_t_8) { __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_8); __pyx_t_8 = NULL; } __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_7, __pyx_t_6); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_7, __pyx_t_5); __pyx_t_6 = 0; __pyx_t_5 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1414, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwes2.pyx":1413 * pos = pydata.app.on_edit_moves_prevword(q2str(this.text()), this.cursorPosition()) * this.setCursorPosition(pos) * elif event.key() == Qt.Key_Right and event.modifiers() == Qt.AltModifier: # <<<<<<<<<<<<<< * pydata.app.on_edit_moves_swapnext(q2str(this.text()), this.cursorPosition()) * elif event.key() == Qt.Key_Left and event.modifiers() == Qt.AltModifier: */ goto __pyx_L3; } /* "_qt_qtwes2.pyx":1415 * elif event.key() == Qt.Key_Right and event.modifiers() == Qt.AltModifier: * pydata.app.on_edit_moves_swapnext(q2str(this.text()), this.cursorPosition()) * elif event.key() == Qt.Key_Left and event.modifiers() == Qt.AltModifier: # <<<<<<<<<<<<<< * pydata.app.on_edit_moves_swapprev(q2str(this.text()), this.cursorPosition()) * else: */ __pyx_t_9 = ((__pyx_v_event->key() == Qt::Key_Left) != 0); if (__pyx_t_9) { } else { __pyx_t_1 = __pyx_t_9; goto __pyx_L6_bool_binop_done; } __pyx_t_9 = ((__pyx_v_event->modifiers() == Qt::AltModifier) != 0); __pyx_t_1 = __pyx_t_9; __pyx_L6_bool_binop_done:; if (__pyx_t_1) { /* "_qt_qtwes2.pyx":1416 * pydata.app.on_edit_moves_swapnext(q2str(this.text()), this.cursorPosition()) * elif event.key() == Qt.Key_Left and event.modifiers() == Qt.AltModifier: * pydata.app.on_edit_moves_swapprev(q2str(this.text()), this.cursorPosition()) # <<<<<<<<<<<<<< * else: * this.QLineEdit_keyPressEvent(event) #px/ */ __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1416, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_app); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1416, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_on_edit_moves_swapprev); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1416, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __pyx_f_10_qt_qtwes2_q2str(this->text()); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1416, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyInt_From_int(this->cursorPosition()); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1416, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = NULL; __pyx_t_7 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_7 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_t_4, __pyx_t_5}; __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1416, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_t_4, __pyx_t_5}; __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1416, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif { __pyx_t_8 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1416, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); if (__pyx_t_6) { __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = NULL; } __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_7, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, __pyx_t_5); __pyx_t_4 = 0; __pyx_t_5 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_8, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1416, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwes2.pyx":1415 * elif event.key() == Qt.Key_Right and event.modifiers() == Qt.AltModifier: * pydata.app.on_edit_moves_swapnext(q2str(this.text()), this.cursorPosition()) * elif event.key() == Qt.Key_Left and event.modifiers() == Qt.AltModifier: # <<<<<<<<<<<<<< * pydata.app.on_edit_moves_swapprev(q2str(this.text()), this.cursorPosition()) * else: */ goto __pyx_L3; } /* "_qt_qtwes2.pyx":1418 * pydata.app.on_edit_moves_swapprev(q2str(this.text()), this.cursorPosition()) * else: * this.QLineEdit_keyPressEvent(event) #px/ # <<<<<<<<<<<<<< * #QLineEdit.keyPressEvent(self, event) * ##pxm-FUNC PH with gil const */ /*else*/ { this->QLineEdit::keyPressEvent(__pyx_v_event); } __pyx_L3:; /* "_qt_qtwes2.pyx":1406 * ##pxc>} * ##pxm-FUNC PH with gil * void keyPressEvent(QKeyEvent *event) with gil: # <<<<<<<<<<<<<< * if event.matches(MoveToNextWord): * pos = pydata.app.on_edit_moves_nextword(q2str(this.text()), this.cursorPosition()) */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_8); __Pyx_WriteUnraisable("MoveEdit.keyPressEvent", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_XDECREF(__pyx_v_pos); __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwes2.pyx":1421 * #QLineEdit.keyPressEvent(self, event) * ##pxm-FUNC PH with gil const * void on_returnpressed() with gil const: # <<<<<<<<<<<<<< * pydata.app.on_edit_finished(q2str(this.text()), this.cursorPosition()) * ##pxm>CPPCLASS_END */ void MoveEdit::on_returnpressed(void) const { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; int __pyx_t_6; PyObject *__pyx_t_7 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_returnpressed", 0); /* "_qt_qtwes2.pyx":1422 * ##pxm-FUNC PH with gil const * void on_returnpressed() with gil const: * pydata.app.on_edit_finished(q2str(this.text()), this.cursorPosition()) # <<<<<<<<<<<<<< * ##pxm>CPPCLASS_END * */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1422, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_app); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1422, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_on_edit_finished); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1422, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __pyx_f_10_qt_qtwes2_q2str(this->text()); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1422, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyInt_From_int(this->cursorPosition()); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1422, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_3, __pyx_t_4}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1422, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_3, __pyx_t_4}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1422, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1422, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_t_4); __pyx_t_3 = 0; __pyx_t_4 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1422, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwes2.pyx":1421 * #QLineEdit.keyPressEvent(self, event) * ##pxm-FUNC PH with gil const * void on_returnpressed() with gil const: # <<<<<<<<<<<<<< * pydata.app.on_edit_finished(q2str(this.text()), this.cursorPosition()) * ##pxm>CPPCLASS_END */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_7); __Pyx_WriteUnraisable("MoveEdit.on_returnpressed", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwes2.pyx":1432 * ##pxh> : QOpenGLWidget() {} * ##pxm-FUNC PHD with gil * void init() with gil: # <<<<<<<<<<<<<< * this.setAcceptDrops(True) * this.setFocusPolicy(Qt.StrongFocus) */ void DrawingArea::init(void) { __Pyx_RefNannyDeclarations int __pyx_t_1; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("init", 0); /* "_qt_qtwes2.pyx":1433 * ##pxm-FUNC PHD with gil * void init() with gil: * this.setAcceptDrops(True) # <<<<<<<<<<<<<< * this.setFocusPolicy(Qt.StrongFocus) * if debug & DEBUG_NOCONTROLS: */ this->setAcceptDrops(1); /* "_qt_qtwes2.pyx":1434 * void init() with gil: * this.setAcceptDrops(True) * this.setFocusPolicy(Qt.StrongFocus) # <<<<<<<<<<<<<< * if debug & DEBUG_NOCONTROLS: * this.setMinimumSize(128, 128) # for thumbnail generation */ this->setFocusPolicy(Qt::StrongFocus); /* "_qt_qtwes2.pyx":1435 * this.setAcceptDrops(True) * this.setFocusPolicy(Qt.StrongFocus) * if debug & DEBUG_NOCONTROLS: # <<<<<<<<<<<<<< * this.setMinimumSize(128, 128) # for thumbnail generation * else: */ __pyx_t_1 = ((__pyx_v_10_qt_qtwes2_debug & __pyx_e_10_qt_qtwes2_DEBUG_NOCONTROLS) != 0); if (__pyx_t_1) { /* "_qt_qtwes2.pyx":1436 * this.setFocusPolicy(Qt.StrongFocus) * if debug & DEBUG_NOCONTROLS: * this.setMinimumSize(128, 128) # for thumbnail generation # <<<<<<<<<<<<<< * else: * this.setMinimumSize(300, 300) */ this->setMinimumSize(0x80, 0x80); /* "_qt_qtwes2.pyx":1435 * this.setAcceptDrops(True) * this.setFocusPolicy(Qt.StrongFocus) * if debug & DEBUG_NOCONTROLS: # <<<<<<<<<<<<<< * this.setMinimumSize(128, 128) # for thumbnail generation * else: */ goto __pyx_L3; } /* "_qt_qtwes2.pyx":1438 * this.setMinimumSize(128, 128) # for thumbnail generation * else: * this.setMinimumSize(300, 300) # <<<<<<<<<<<<<< * this.setMouseTracking(True) * ##pxm-FUNC PH nogil */ /*else*/ { this->setMinimumSize(0x12C, 0x12C); } __pyx_L3:; /* "_qt_qtwes2.pyx":1439 * else: * this.setMinimumSize(300, 300) * this.setMouseTracking(True) # <<<<<<<<<<<<<< * ##pxm-FUNC PH nogil * void paintGL() nogil: */ this->setMouseTracking(1); /* "_qt_qtwes2.pyx":1432 * ##pxh> : QOpenGLWidget() {} * ##pxm-FUNC PHD with gil * void init() with gil: # <<<<<<<<<<<<<< * this.setAcceptDrops(True) * this.setFocusPolicy(Qt.StrongFocus) */ /* function exit code */ __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwes2.pyx":1441 * this.setMouseTracking(True) * ##pxm-FUNC PH nogil * void paintGL() nogil: # <<<<<<<<<<<<<< * uidata.mainwindow.on_beforeSynchronizing() * renderdata.renderer.on_beforeRendering() */ void DrawingArea::paintGL(void) { /* "_qt_qtwes2.pyx":1442 * ##pxm-FUNC PH nogil * void paintGL() nogil: * uidata.mainwindow.on_beforeSynchronizing() # <<<<<<<<<<<<<< * renderdata.renderer.on_beforeRendering() * ##pxm-FUNC PH with gil */ __pyx_v_10_qt_qtwes2_uidata.mainwindow->on_beforeSynchronizing(); /* "_qt_qtwes2.pyx":1443 * void paintGL() nogil: * uidata.mainwindow.on_beforeSynchronizing() * renderdata.renderer.on_beforeRendering() # <<<<<<<<<<<<<< * ##pxm-FUNC PH with gil * void resizeGL(int width, int height) with gil: */ __pyx_v_10_qt_qtwes2_renderdata.renderer->on_beforeRendering(); /* "_qt_qtwes2.pyx":1441 * this.setMouseTracking(True) * ##pxm-FUNC PH nogil * void paintGL() nogil: # <<<<<<<<<<<<<< * uidata.mainwindow.on_beforeSynchronizing() * renderdata.renderer.on_beforeRendering() */ /* function exit code */ } /* "_qt_qtwes2.pyx":1445 * renderdata.renderer.on_beforeRendering() * ##pxm-FUNC PH with gil * void resizeGL(int width, int height) with gil: # <<<<<<<<<<<<<< * uidata.width = width * uidata.height = height */ void DrawingArea::resizeGL(int __pyx_v_width, int __pyx_v_height) { __Pyx_RefNannyDeclarations #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("resizeGL", 0); /* "_qt_qtwes2.pyx":1446 * ##pxm-FUNC PH with gil * void resizeGL(int width, int height) with gil: * uidata.width = width # <<<<<<<<<<<<<< * uidata.height = height * ##pxm-FUNC PH with gil */ __pyx_v_10_qt_qtwes2_uidata.width = __pyx_v_width; /* "_qt_qtwes2.pyx":1447 * void resizeGL(int width, int height) with gil: * uidata.width = width * uidata.height = height # <<<<<<<<<<<<<< * ##pxm-FUNC PH with gil * void keyPressEvent(QKeyEvent *event) with gil: */ __pyx_v_10_qt_qtwes2_uidata.height = __pyx_v_height; /* "_qt_qtwes2.pyx":1445 * renderdata.renderer.on_beforeRendering() * ##pxm-FUNC PH with gil * void resizeGL(int width, int height) with gil: # <<<<<<<<<<<<<< * uidata.width = width * uidata.height = height */ /* function exit code */ __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwes2.pyx":1449 * uidata.height = height * ##pxm-FUNC PH with gil * void keyPressEvent(QKeyEvent *event) with gil: # <<<<<<<<<<<<<< * if not pydata.app.on_key_pressed(event.key(), event.modifiers() & SAFE_MODIFIER_MASK, True): * this.QWidget_keyPressEvent(event) #px/ */ void DrawingArea::keyPressEvent(QKeyEvent *__pyx_v_event) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; int __pyx_t_6; PyObject *__pyx_t_7 = NULL; int __pyx_t_8; int __pyx_t_9; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("keyPressEvent", 0); /* "_qt_qtwes2.pyx":1450 * ##pxm-FUNC PH with gil * void keyPressEvent(QKeyEvent *event) with gil: * if not pydata.app.on_key_pressed(event.key(), event.modifiers() & SAFE_MODIFIER_MASK, True): # <<<<<<<<<<<<<< * this.QWidget_keyPressEvent(event) #px/ * #QWidget.keyPressEvent(this, event) */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1450, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_app); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1450, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_on_key_pressed); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1450, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_event->key()); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1450, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyInt_From_Qt_3a__3a_KeyboardModifiers((__pyx_v_event->modifiers() & __pyx_e_10_qt_qtwes2_SAFE_MODIFIER_MASK)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1450, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_5, __pyx_t_3, __pyx_t_4, Py_True}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1450, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_5, __pyx_t_3, __pyx_t_4, Py_True}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1450, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_7 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1450, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_t_4); __Pyx_INCREF(Py_True); __Pyx_GIVEREF(Py_True); PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_6, Py_True); __pyx_t_3 = 0; __pyx_t_4 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1450, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 1450, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_9 = ((!__pyx_t_8) != 0); if (__pyx_t_9) { /* "_qt_qtwes2.pyx":1451 * void keyPressEvent(QKeyEvent *event) with gil: * if not pydata.app.on_key_pressed(event.key(), event.modifiers() & SAFE_MODIFIER_MASK, True): * this.QWidget_keyPressEvent(event) #px/ # <<<<<<<<<<<<<< * #QWidget.keyPressEvent(this, event) * ##pxm-FUNC PH with gil */ this->QWidget::keyPressEvent(__pyx_v_event); /* "_qt_qtwes2.pyx":1450 * ##pxm-FUNC PH with gil * void keyPressEvent(QKeyEvent *event) with gil: * if not pydata.app.on_key_pressed(event.key(), event.modifiers() & SAFE_MODIFIER_MASK, True): # <<<<<<<<<<<<<< * this.QWidget_keyPressEvent(event) #px/ * #QWidget.keyPressEvent(this, event) */ } /* "_qt_qtwes2.pyx":1449 * uidata.height = height * ##pxm-FUNC PH with gil * void keyPressEvent(QKeyEvent *event) with gil: # <<<<<<<<<<<<<< * if not pydata.app.on_key_pressed(event.key(), event.modifiers() & SAFE_MODIFIER_MASK, True): * this.QWidget_keyPressEvent(event) #px/ */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_7); __Pyx_WriteUnraisable("DrawingArea.keyPressEvent", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwes2.pyx":1454 * #QWidget.keyPressEvent(this, event) * ##pxm-FUNC PH with gil * void mousePressEvent(QMouseEvent *event) with gil: # <<<<<<<<<<<<<< * pydata.app.on_mouse_pressed(event.modifiers(), event.button(), event.x(), event.y(), this.height()) * ##pxm-FUNC PH with gil */ void DrawingArea::mousePressEvent(QMouseEvent *__pyx_v_event) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; PyObject *__pyx_t_7 = NULL; PyObject *__pyx_t_8 = NULL; int __pyx_t_9; PyObject *__pyx_t_10 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("mousePressEvent", 0); /* "_qt_qtwes2.pyx":1455 * ##pxm-FUNC PH with gil * void mousePressEvent(QMouseEvent *event) with gil: * pydata.app.on_mouse_pressed(event.modifiers(), event.button(), event.x(), event.y(), this.height()) # <<<<<<<<<<<<<< * ##pxm-FUNC PH with gil * void mouseReleaseEvent(QMouseEvent *event) with gil: */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1455, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_app); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1455, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_on_mouse_pressed); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1455, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyInt_From_Qt_3a__3a_KeyboardModifiers(__pyx_v_event->modifiers()); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1455, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyInt_From_enum__Qt_3a__3a_MouseButton(__pyx_v_event->button()); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1455, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_event->x()); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1455, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_event->y()); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1455, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = __Pyx_PyInt_From_int(this->height()); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1455, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_8 = NULL; __pyx_t_9 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_8)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_9 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[6] = {__pyx_t_8, __pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_t_6, __pyx_t_7}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_9, 5+__pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1455, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[6] = {__pyx_t_8, __pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_t_6, __pyx_t_7}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_9, 5+__pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1455, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } else #endif { __pyx_t_10 = PyTuple_New(5+__pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1455, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); if (__pyx_t_8) { __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_8); __pyx_t_8 = NULL; } __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_10, 0+__pyx_t_9, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_9, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_10, 2+__pyx_t_9, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_10, 3+__pyx_t_9, __pyx_t_6); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_10, 4+__pyx_t_9, __pyx_t_7); __pyx_t_3 = 0; __pyx_t_4 = 0; __pyx_t_5 = 0; __pyx_t_6 = 0; __pyx_t_7 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_10, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1455, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwes2.pyx":1454 * #QWidget.keyPressEvent(this, event) * ##pxm-FUNC PH with gil * void mousePressEvent(QMouseEvent *event) with gil: # <<<<<<<<<<<<<< * pydata.app.on_mouse_pressed(event.modifiers(), event.button(), event.x(), event.y(), this.height()) * ##pxm-FUNC PH with gil */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_8); __Pyx_XDECREF(__pyx_t_10); __Pyx_WriteUnraisable("DrawingArea.mousePressEvent", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwes2.pyx":1457 * pydata.app.on_mouse_pressed(event.modifiers(), event.button(), event.x(), event.y(), this.height()) * ##pxm-FUNC PH with gil * void mouseReleaseEvent(QMouseEvent *event) with gil: # <<<<<<<<<<<<<< * pydata.app.on_mouse_released(event.x(), event.y()) * ##pxm-FUNC PH with gil */ void DrawingArea::mouseReleaseEvent(QMouseEvent *__pyx_v_event) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; int __pyx_t_6; PyObject *__pyx_t_7 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("mouseReleaseEvent", 0); /* "_qt_qtwes2.pyx":1458 * ##pxm-FUNC PH with gil * void mouseReleaseEvent(QMouseEvent *event) with gil: * pydata.app.on_mouse_released(event.x(), event.y()) # <<<<<<<<<<<<<< * ##pxm-FUNC PH with gil * void mouseMoveEvent(QMouseEvent *event) with gil: */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1458, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_app); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1458, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_on_mouse_released); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1458, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_event->x()); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1458, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_event->y()); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1458, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_3, __pyx_t_4}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1458, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_3, __pyx_t_4}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1458, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1458, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_t_4); __pyx_t_3 = 0; __pyx_t_4 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1458, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwes2.pyx":1457 * pydata.app.on_mouse_pressed(event.modifiers(), event.button(), event.x(), event.y(), this.height()) * ##pxm-FUNC PH with gil * void mouseReleaseEvent(QMouseEvent *event) with gil: # <<<<<<<<<<<<<< * pydata.app.on_mouse_released(event.x(), event.y()) * ##pxm-FUNC PH with gil */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_7); __Pyx_WriteUnraisable("DrawingArea.mouseReleaseEvent", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwes2.pyx":1460 * pydata.app.on_mouse_released(event.x(), event.y()) * ##pxm-FUNC PH with gil * void mouseMoveEvent(QMouseEvent *event) with gil: # <<<<<<<<<<<<<< * pydata.app.on_mouse_moved(True, event.x(), event.y(), this.height(), 4) * ##pxm-FUNC PH with gil */ void DrawingArea::mouseMoveEvent(QMouseEvent *__pyx_v_event) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; int __pyx_t_7; PyObject *__pyx_t_8 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("mouseMoveEvent", 0); /* "_qt_qtwes2.pyx":1461 * ##pxm-FUNC PH with gil * void mouseMoveEvent(QMouseEvent *event) with gil: * pydata.app.on_mouse_moved(True, event.x(), event.y(), this.height(), 4) # <<<<<<<<<<<<<< * ##pxm-FUNC PH with gil * void wheelEvent(QWheelEvent *event) with gil: */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1461, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_app); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1461, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_on_mouse_moved); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1461, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_event->x()); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1461, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_event->y()); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1461, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyInt_From_int(this->height()); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1461, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = NULL; __pyx_t_7 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_7 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[6] = {__pyx_t_6, Py_True, __pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_int_4}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_7, 5+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1461, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[6] = {__pyx_t_6, Py_True, __pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_int_4}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_7, 5+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1461, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif { __pyx_t_8 = PyTuple_New(5+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1461, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); if (__pyx_t_6) { __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = NULL; } __Pyx_INCREF(Py_True); __Pyx_GIVEREF(Py_True); PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_7, Py_True); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_8, 2+__pyx_t_7, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_8, 3+__pyx_t_7, __pyx_t_5); __Pyx_INCREF(__pyx_int_4); __Pyx_GIVEREF(__pyx_int_4); PyTuple_SET_ITEM(__pyx_t_8, 4+__pyx_t_7, __pyx_int_4); __pyx_t_3 = 0; __pyx_t_4 = 0; __pyx_t_5 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1461, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwes2.pyx":1460 * pydata.app.on_mouse_released(event.x(), event.y()) * ##pxm-FUNC PH with gil * void mouseMoveEvent(QMouseEvent *event) with gil: # <<<<<<<<<<<<<< * pydata.app.on_mouse_moved(True, event.x(), event.y(), this.height(), 4) * ##pxm-FUNC PH with gil */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_8); __Pyx_WriteUnraisable("DrawingArea.mouseMoveEvent", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwes2.pyx":1463 * pydata.app.on_mouse_moved(True, event.x(), event.y(), this.height(), 4) * ##pxm-FUNC PH with gil * void wheelEvent(QWheelEvent *event) with gil: # <<<<<<<<<<<<<< * pydata.app.on_mouse_zoom(event.angleDelta().y() / 120) * ##pxm-FUNC PH with gil */ void DrawingArea::wheelEvent(QWheelEvent *__pyx_v_event) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("wheelEvent", 0); /* "_qt_qtwes2.pyx":1464 * ##pxm-FUNC PH with gil * void wheelEvent(QWheelEvent *event) with gil: * pydata.app.on_mouse_zoom(event.angleDelta().y() / 120) # <<<<<<<<<<<<<< * ##pxm-FUNC PH with gil * void dragEnterEvent(QDragEnterEvent *event) with gil: */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1464, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_app); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1464, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_on_mouse_zoom); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1464, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyFloat_FromDouble((((double)__pyx_v_event->angleDelta().y()) / 120.0)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1464, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } if (!__pyx_t_4) { __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1464, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_3}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1464, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_3}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1464, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif { __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1464, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL; __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_3); __pyx_t_3 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1464, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwes2.pyx":1463 * pydata.app.on_mouse_moved(True, event.x(), event.y(), this.height(), 4) * ##pxm-FUNC PH with gil * void wheelEvent(QWheelEvent *event) with gil: # <<<<<<<<<<<<<< * pydata.app.on_mouse_zoom(event.angleDelta().y() / 120) * ##pxm-FUNC PH with gil */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_WriteUnraisable("DrawingArea.wheelEvent", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwes2.pyx":1466 * pydata.app.on_mouse_zoom(event.angleDelta().y() / 120) * ##pxm-FUNC PH with gil * void dragEnterEvent(QDragEnterEvent *event) with gil: # <<<<<<<<<<<<<< * cdef const QMimeData *mime_data #px+ * mime_data = event.mimeData() */ void DrawingArea::dragEnterEvent(QDragEnterEvent *__pyx_v_event) { QMimeData const *__pyx_v_mime_data; __Pyx_RefNannyDeclarations int __pyx_t_1; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; int __pyx_t_4; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("dragEnterEvent", 0); /* "_qt_qtwes2.pyx":1468 * void dragEnterEvent(QDragEnterEvent *event) with gil: * cdef const QMimeData *mime_data #px+ * mime_data = event.mimeData() # <<<<<<<<<<<<<< * if debug & DEBUG_MSG: * print('drag enter:', _qs2list(mime_data.formats())) #px/ */ __pyx_v_mime_data = __pyx_v_event->mimeData(); /* "_qt_qtwes2.pyx":1469 * cdef const QMimeData *mime_data #px+ * mime_data = event.mimeData() * if debug & DEBUG_MSG: # <<<<<<<<<<<<<< * print('drag enter:', _qs2list(mime_data.formats())) #px/ * #print('drag enter:', mime_data.formats()) */ __pyx_t_1 = ((__pyx_v_10_qt_qtwes2_debug & __pyx_e_10_qt_qtwes2_DEBUG_MSG) != 0); if (__pyx_t_1) { /* "_qt_qtwes2.pyx":1470 * mime_data = event.mimeData() * if debug & DEBUG_MSG: * print('drag enter:', _qs2list(mime_data.formats())) #px/ # <<<<<<<<<<<<<< * #print('drag enter:', mime_data.formats()) * if mime_data.hasColor(): */ __pyx_t_2 = __pyx_f_10_qt_qtwes2__qs2list(__pyx_v_mime_data->formats()); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1470, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1470, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_kp_u_drag_enter); __Pyx_GIVEREF(__pyx_kp_u_drag_enter); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_kp_u_drag_enter); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1470, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwes2.pyx":1469 * cdef const QMimeData *mime_data #px+ * mime_data = event.mimeData() * if debug & DEBUG_MSG: # <<<<<<<<<<<<<< * print('drag enter:', _qs2list(mime_data.formats())) #px/ * #print('drag enter:', mime_data.formats()) */ } /* "_qt_qtwes2.pyx":1472 * print('drag enter:', _qs2list(mime_data.formats())) #px/ * #print('drag enter:', mime_data.formats()) * if mime_data.hasColor(): # <<<<<<<<<<<<<< * event.acceptProposedAction() * elif mime_data.hasUrls() and mime_data.urls().at(0).isLocalFile(): */ __pyx_t_1 = (__pyx_v_mime_data->hasColor() != 0); if (__pyx_t_1) { /* "_qt_qtwes2.pyx":1473 * #print('drag enter:', mime_data.formats()) * if mime_data.hasColor(): * event.acceptProposedAction() # <<<<<<<<<<<<<< * elif mime_data.hasUrls() and mime_data.urls().at(0).isLocalFile(): * event.acceptProposedAction() */ __pyx_v_event->acceptProposedAction(); /* "_qt_qtwes2.pyx":1472 * print('drag enter:', _qs2list(mime_data.formats())) #px/ * #print('drag enter:', mime_data.formats()) * if mime_data.hasColor(): # <<<<<<<<<<<<<< * event.acceptProposedAction() * elif mime_data.hasUrls() and mime_data.urls().at(0).isLocalFile(): */ goto __pyx_L4; } /* "_qt_qtwes2.pyx":1474 * if mime_data.hasColor(): * event.acceptProposedAction() * elif mime_data.hasUrls() and mime_data.urls().at(0).isLocalFile(): # <<<<<<<<<<<<<< * event.acceptProposedAction() * ##pxm-FUNC PH with gil */ __pyx_t_4 = (__pyx_v_mime_data->hasUrls() != 0); if (__pyx_t_4) { } else { __pyx_t_1 = __pyx_t_4; goto __pyx_L5_bool_binop_done; } __pyx_t_4 = (__pyx_v_mime_data->urls().at(0).isLocalFile() != 0); __pyx_t_1 = __pyx_t_4; __pyx_L5_bool_binop_done:; if (__pyx_t_1) { /* "_qt_qtwes2.pyx":1475 * event.acceptProposedAction() * elif mime_data.hasUrls() and mime_data.urls().at(0).isLocalFile(): * event.acceptProposedAction() # <<<<<<<<<<<<<< * ##pxm-FUNC PH with gil * void dropEvent(QDropEvent *event) with gil: */ __pyx_v_event->acceptProposedAction(); /* "_qt_qtwes2.pyx":1474 * if mime_data.hasColor(): * event.acceptProposedAction() * elif mime_data.hasUrls() and mime_data.urls().at(0).isLocalFile(): # <<<<<<<<<<<<<< * event.acceptProposedAction() * ##pxm-FUNC PH with gil */ } __pyx_L4:; /* "_qt_qtwes2.pyx":1466 * pydata.app.on_mouse_zoom(event.angleDelta().y() / 120) * ##pxm-FUNC PH with gil * void dragEnterEvent(QDragEnterEvent *event) with gil: # <<<<<<<<<<<<<< * cdef const QMimeData *mime_data #px+ * mime_data = event.mimeData() */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_WriteUnraisable("DrawingArea.dragEnterEvent", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwes2.pyx":1477 * event.acceptProposedAction() * ##pxm-FUNC PH with gil * void dropEvent(QDropEvent *event) with gil: # <<<<<<<<<<<<<< * cdef const QMimeData *mime_data #px+ * mime_data = event.mimeData() */ void DrawingArea::dropEvent(QDropEvent *__pyx_v_event) { QMimeData const *__pyx_v_mime_data; __Pyx_RefNannyDeclarations int __pyx_t_1; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; PyObject *__pyx_t_7 = NULL; int __pyx_t_8; PyObject *__pyx_t_9 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("dropEvent", 0); /* "_qt_qtwes2.pyx":1479 * void dropEvent(QDropEvent *event) with gil: * cdef const QMimeData *mime_data #px+ * mime_data = event.mimeData() # <<<<<<<<<<<<<< * if mime_data.hasColor(): * pydata.app.on_mouse_drop_color(event.pos().x(), this.height() - event.pos().y(), */ __pyx_v_mime_data = __pyx_v_event->mimeData(); /* "_qt_qtwes2.pyx":1480 * cdef const QMimeData *mime_data #px+ * mime_data = event.mimeData() * if mime_data.hasColor(): # <<<<<<<<<<<<<< * pydata.app.on_mouse_drop_color(event.pos().x(), this.height() - event.pos().y(), * q2str(mime_data.colorData().toString())) */ __pyx_t_1 = (__pyx_v_mime_data->hasColor() != 0); if (__pyx_t_1) { /* "_qt_qtwes2.pyx":1481 * mime_data = event.mimeData() * if mime_data.hasColor(): * pydata.app.on_mouse_drop_color(event.pos().x(), this.height() - event.pos().y(), # <<<<<<<<<<<<<< * q2str(mime_data.colorData().toString())) * elif mime_data.hasUrls(): */ __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1481, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_app); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1481, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_on_mouse_drop_color); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1481, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_event->pos().x()); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1481, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyInt_From_int((this->height() - __pyx_v_event->pos().y())); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1481, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); /* "_qt_qtwes2.pyx":1482 * if mime_data.hasColor(): * pydata.app.on_mouse_drop_color(event.pos().x(), this.height() - event.pos().y(), * q2str(mime_data.colorData().toString())) # <<<<<<<<<<<<<< * elif mime_data.hasUrls(): * pydata.app.on_mouse_drop_url(event.pos().x(), this.height() - event.pos().y(), */ __pyx_t_6 = __pyx_f_10_qt_qtwes2_q2str(__pyx_v_mime_data->colorData().toString()); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1482, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = NULL; __pyx_t_8 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_8 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[4] = {__pyx_t_7, __pyx_t_4, __pyx_t_5, __pyx_t_6}; __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_8, 3+__pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1481, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[4] = {__pyx_t_7, __pyx_t_4, __pyx_t_5, __pyx_t_6}; __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_8, 3+__pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1481, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else #endif { __pyx_t_9 = PyTuple_New(3+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1481, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); if (__pyx_t_7) { __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7); __pyx_t_7 = NULL; } __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_8, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_8, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_9, 2+__pyx_t_8, __pyx_t_6); __pyx_t_4 = 0; __pyx_t_5 = 0; __pyx_t_6 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_9, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1481, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwes2.pyx":1480 * cdef const QMimeData *mime_data #px+ * mime_data = event.mimeData() * if mime_data.hasColor(): # <<<<<<<<<<<<<< * pydata.app.on_mouse_drop_color(event.pos().x(), this.height() - event.pos().y(), * q2str(mime_data.colorData().toString())) */ goto __pyx_L3; } /* "_qt_qtwes2.pyx":1483 * pydata.app.on_mouse_drop_color(event.pos().x(), this.height() - event.pos().y(), * q2str(mime_data.colorData().toString())) * elif mime_data.hasUrls(): # <<<<<<<<<<<<<< * pydata.app.on_mouse_drop_url(event.pos().x(), this.height() - event.pos().y(), * q2str(mime_data.urls().at(0).toString())) */ __pyx_t_1 = (__pyx_v_mime_data->hasUrls() != 0); if (__pyx_t_1) { /* "_qt_qtwes2.pyx":1484 * q2str(mime_data.colorData().toString())) * elif mime_data.hasUrls(): * pydata.app.on_mouse_drop_url(event.pos().x(), this.height() - event.pos().y(), # <<<<<<<<<<<<<< * q2str(mime_data.urls().at(0).toString())) * else: */ __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1484, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_app); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1484, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_on_mouse_drop_url); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1484, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = __Pyx_PyInt_From_int(__pyx_v_event->pos().x()); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1484, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_6 = __Pyx_PyInt_From_int((this->height() - __pyx_v_event->pos().y())); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1484, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); /* "_qt_qtwes2.pyx":1485 * elif mime_data.hasUrls(): * pydata.app.on_mouse_drop_url(event.pos().x(), this.height() - event.pos().y(), * q2str(mime_data.urls().at(0).toString())) # <<<<<<<<<<<<<< * else: * if debug & DEBUG_MSG: */ __pyx_t_5 = __pyx_f_10_qt_qtwes2_q2str(__pyx_v_mime_data->urls().at(0).toString()); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1485, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_4 = NULL; __pyx_t_8 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_8 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[4] = {__pyx_t_4, __pyx_t_9, __pyx_t_6, __pyx_t_5}; __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_8, 3+__pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1484, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[4] = {__pyx_t_4, __pyx_t_9, __pyx_t_6, __pyx_t_5}; __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_8, 3+__pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1484, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif { __pyx_t_7 = PyTuple_New(3+__pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1484, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (__pyx_t_4) { __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_4); __pyx_t_4 = NULL; } __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_8, __pyx_t_9); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_8, __pyx_t_6); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_8, __pyx_t_5); __pyx_t_9 = 0; __pyx_t_6 = 0; __pyx_t_5 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1484, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwes2.pyx":1483 * pydata.app.on_mouse_drop_color(event.pos().x(), this.height() - event.pos().y(), * q2str(mime_data.colorData().toString())) * elif mime_data.hasUrls(): # <<<<<<<<<<<<<< * pydata.app.on_mouse_drop_url(event.pos().x(), this.height() - event.pos().y(), * q2str(mime_data.urls().at(0).toString())) */ goto __pyx_L3; } /* "_qt_qtwes2.pyx":1487 * q2str(mime_data.urls().at(0).toString())) * else: * if debug & DEBUG_MSG: # <<<<<<<<<<<<<< * print('Skip mime type:', ' '.join(_qs2list(mime_data.formats()))) #px/ * #print('Skip mime type:', ' '.join(mime_data.formats())) */ /*else*/ { __pyx_t_1 = ((__pyx_v_10_qt_qtwes2_debug & __pyx_e_10_qt_qtwes2_DEBUG_MSG) != 0); if (__pyx_t_1) { /* "_qt_qtwes2.pyx":1488 * else: * if debug & DEBUG_MSG: * print('Skip mime type:', ' '.join(_qs2list(mime_data.formats()))) #px/ # <<<<<<<<<<<<<< * #print('Skip mime type:', ' '.join(mime_data.formats())) * ##pxm>CPPCLASS_END */ __pyx_t_2 = __pyx_f_10_qt_qtwes2__qs2list(__pyx_v_mime_data->formats()); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1488, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyUnicode_Join(__pyx_kp_u__7, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1488, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1488, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_kp_u_Skip_mime_type); __Pyx_GIVEREF(__pyx_kp_u_Skip_mime_type); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_kp_u_Skip_mime_type); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1488, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "_qt_qtwes2.pyx":1487 * q2str(mime_data.urls().at(0).toString())) * else: * if debug & DEBUG_MSG: # <<<<<<<<<<<<<< * print('Skip mime type:', ' '.join(_qs2list(mime_data.formats()))) #px/ * #print('Skip mime type:', ' '.join(mime_data.formats())) */ } } __pyx_L3:; /* "_qt_qtwes2.pyx":1477 * event.acceptProposedAction() * ##pxm-FUNC PH with gil * void dropEvent(QDropEvent *event) with gil: # <<<<<<<<<<<<<< * cdef const QMimeData *mime_data #px+ * mime_data = event.mimeData() */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_9); __Pyx_WriteUnraisable("DrawingArea.dropEvent", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwes2.pyx":1508 * ##pxh> : QDialog(parent), liststore_blocked(false) {} * ##pxm-FUNC PHD * void init(): # <<<<<<<<<<<<<< * speed_min, speed_max = settings['draw.speed_range'] * mirror_min, mirror_max = settings['draw.mirror_distance_range'] */ void PreferencesDialog::init(void) { PyObject *__pyx_v_speed_min = NULL; PyObject *__pyx_v_speed_max = NULL; PyObject *__pyx_v_mirror_min = NULL; PyObject *__pyx_v_mirror_max = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *(*__pyx_t_5)(PyObject *); int __pyx_t_6; int __pyx_t_7; int __pyx_t_8; int __pyx_t_9; int __pyx_t_10; __Pyx_RefNannySetupContext("init", 0); /* "_qt_qtwes2.pyx":1509 * ##pxm-FUNC PHD * void init(): * speed_min, speed_max = settings['draw.speed_range'] # <<<<<<<<<<<<<< * mirror_min, mirror_max = settings['draw.mirror_distance_range'] * this.liststore_movekeys = new QStandardItemModel(this) #px/ */ __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1509, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyObject_GetItem(__pyx_t_1, __pyx_kp_u_draw_speed_range); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1509, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_2))) || (PyList_CheckExact(__pyx_t_2))) { PyObject* sequence = __pyx_t_2; #if !CYTHON_COMPILING_IN_PYPY Py_ssize_t size = Py_SIZE(sequence); #else Py_ssize_t size = PySequence_Size(sequence); #endif if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 1509, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_1 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_1 = PyList_GET_ITEM(sequence, 0); __pyx_t_3 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(__pyx_t_3); #else __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1509, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1509, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); #endif __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else { Py_ssize_t index = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1509, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_5 = Py_TYPE(__pyx_t_4)->tp_iternext; index = 0; __pyx_t_1 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_1)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_1); index = 1; __pyx_t_3 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_3)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_3); if (__Pyx_IternextUnpackEndCheck(__pyx_t_5(__pyx_t_4), 2) < 0) __PYX_ERR(0, 1509, __pyx_L1_error) __pyx_t_5 = NULL; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; goto __pyx_L4_unpacking_done; __pyx_L3_unpacking_failed:; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_5 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 1509, __pyx_L1_error) __pyx_L4_unpacking_done:; } __pyx_v_speed_min = __pyx_t_1; __pyx_t_1 = 0; __pyx_v_speed_max = __pyx_t_3; __pyx_t_3 = 0; /* "_qt_qtwes2.pyx":1510 * void init(): * speed_min, speed_max = settings['draw.speed_range'] * mirror_min, mirror_max = settings['draw.mirror_distance_range'] # <<<<<<<<<<<<<< * this.liststore_movekeys = new QStandardItemModel(this) #px/ * #this.liststore_movekeys = QStandardItemModel(this) */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1510, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyObject_GetItem(__pyx_t_2, __pyx_kp_u_draw_mirror_distance_range); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1510, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) { PyObject* sequence = __pyx_t_3; #if !CYTHON_COMPILING_IN_PYPY Py_ssize_t size = Py_SIZE(sequence); #else Py_ssize_t size = PySequence_Size(sequence); #endif if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 1510, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_1 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_2 = PyList_GET_ITEM(sequence, 0); __pyx_t_1 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx_t_1); #else __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1510, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1510, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); #endif __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { Py_ssize_t index = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1510, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_5 = Py_TYPE(__pyx_t_4)->tp_iternext; index = 0; __pyx_t_2 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_2)) goto __pyx_L5_unpacking_failed; __Pyx_GOTREF(__pyx_t_2); index = 1; __pyx_t_1 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_1)) goto __pyx_L5_unpacking_failed; __Pyx_GOTREF(__pyx_t_1); if (__Pyx_IternextUnpackEndCheck(__pyx_t_5(__pyx_t_4), 2) < 0) __PYX_ERR(0, 1510, __pyx_L1_error) __pyx_t_5 = NULL; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; goto __pyx_L6_unpacking_done; __pyx_L5_unpacking_failed:; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_5 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 1510, __pyx_L1_error) __pyx_L6_unpacking_done:; } __pyx_v_mirror_min = __pyx_t_2; __pyx_t_2 = 0; __pyx_v_mirror_max = __pyx_t_1; __pyx_t_1 = 0; /* "_qt_qtwes2.pyx":1511 * speed_min, speed_max = settings['draw.speed_range'] * mirror_min, mirror_max = settings['draw.mirror_distance_range'] * this.liststore_movekeys = new QStandardItemModel(this) #px/ # <<<<<<<<<<<<<< * #this.liststore_movekeys = QStandardItemModel(this) * qtui.setupUi_pref(this, */ this->liststore_movekeys = new QStandardItemModel(((QObject *)this)); /* "_qt_qtwes2.pyx":1514 * #this.liststore_movekeys = QStandardItemModel(this) * qtui.setupUi_pref(this, * settings['draw.speed'], speed_min, speed_max, # <<<<<<<<<<<<<< * mirror_min, mirror_max, this.liststore_movekeys) * ##pxh> */ __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1514, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_1 = PyObject_GetItem(__pyx_t_3, __pyx_kp_u_draw_speed); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1514, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_6 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1514, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_v_speed_min); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1514, __pyx_L1_error) __pyx_t_8 = __Pyx_PyInt_As_int(__pyx_v_speed_max); if (unlikely((__pyx_t_8 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1514, __pyx_L1_error) /* "_qt_qtwes2.pyx":1515 * qtui.setupUi_pref(this, * settings['draw.speed'], speed_min, speed_max, * mirror_min, mirror_max, this.liststore_movekeys) # <<<<<<<<<<<<<< * ##pxh> * ##pxm-FUNC PH with gil */ __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_v_mirror_min); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1515, __pyx_L1_error) __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_v_mirror_max); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1515, __pyx_L1_error) /* "_qt_qtwes2.pyx":1513 * this.liststore_movekeys = new QStandardItemModel(this) #px/ * #this.liststore_movekeys = QStandardItemModel(this) * qtui.setupUi_pref(this, # <<<<<<<<<<<<<< * settings['draw.speed'], speed_min, speed_max, * mirror_min, mirror_max, this.liststore_movekeys) */ __pyx_f_6_qtui__setupUi_pref(this, __pyx_t_6, __pyx_t_7, __pyx_t_8, __pyx_t_9, __pyx_t_10, this->liststore_movekeys); /* "_qt_qtwes2.pyx":1508 * ##pxh> : QDialog(parent), liststore_blocked(false) {} * ##pxm-FUNC PHD * void init(): # <<<<<<<<<<<<<< * speed_min, speed_max = settings['draw.speed_range'] * mirror_min, mirror_max = settings['draw.mirror_distance_range'] */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_WriteUnraisable("PreferencesDialog.init", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_XDECREF(__pyx_v_speed_min); __Pyx_XDECREF(__pyx_v_speed_max); __Pyx_XDECREF(__pyx_v_mirror_min); __Pyx_XDECREF(__pyx_v_mirror_max); __Pyx_RefNannyFinishContext(); } /* "_qt_qtwes2.pyx":1518 * ##pxh> * ##pxm-FUNC PH with gil * void on_slider_animspeed_valueChanged(int value) with gil: # <<<<<<<<<<<<<< * settings['draw.speed'] = value * ##pxm-FUNC PH with gil */ void PreferencesDialog::on_slider_animspeed_valueChanged(int __pyx_v_value) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_slider_animspeed_valueChanged", 0); /* "_qt_qtwes2.pyx":1519 * ##pxm-FUNC PH with gil * void on_slider_animspeed_valueChanged(int value) with gil: * settings['draw.speed'] = value # <<<<<<<<<<<<<< * ##pxm-FUNC PH with gil * void on_button_animspeed_reset_clicked() with gil: */ __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_value); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1519, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1519, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (unlikely(PyObject_SetItem(__pyx_t_2, __pyx_kp_u_draw_speed, __pyx_t_1) < 0)) __PYX_ERR(0, 1519, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwes2.pyx":1518 * ##pxh> * ##pxm-FUNC PH with gil * void on_slider_animspeed_valueChanged(int value) with gil: # <<<<<<<<<<<<<< * settings['draw.speed'] = value * ##pxm-FUNC PH with gil */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_WriteUnraisable("PreferencesDialog.on_slider_animspeed_valueChanged", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwes2.pyx":1521 * settings['draw.speed'] = value * ##pxm-FUNC PH with gil * void on_button_animspeed_reset_clicked() with gil: # <<<<<<<<<<<<<< * this.findChild(str2q('slider_animspeed')).setProperty(b'value', tovariant(settings['draw.speed_default'])) * del settings['draw.speed'] */ void PreferencesDialog::on_button_animspeed_reset_clicked(void) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_button_animspeed_reset_clicked", 0); /* "_qt_qtwes2.pyx":1522 * ##pxm-FUNC PH with gil * void on_button_animspeed_reset_clicked() with gil: * this.findChild(str2q('slider_animspeed')).setProperty(b'value', tovariant(settings['draw.speed_default'])) # <<<<<<<<<<<<<< * del settings['draw.speed'] * ##pxm-FUNC PH with gil */ __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1522, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyObject_GetItem(__pyx_t_1, __pyx_kp_u_draw_speed_default); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1522, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; this->findChild(__pyx_f_10_qt_qtwes2_str2q(__pyx_n_u_slider_animspeed))->setProperty(((char const *)"value"), __pyx_f_10_qt_qtwes2_tovariant(__pyx_t_2)); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwes2.pyx":1523 * void on_button_animspeed_reset_clicked() with gil: * this.findChild(str2q('slider_animspeed')).setProperty(b'value', tovariant(settings['draw.speed_default'])) * del settings['draw.speed'] # <<<<<<<<<<<<<< * ##pxm-FUNC PH with gil * void on_combobox_shader_currentIndexChanged(int value) with gil: */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1523, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (unlikely(PyObject_DelItem(__pyx_t_2, __pyx_kp_u_draw_speed) < 0)) __PYX_ERR(0, 1523, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwes2.pyx":1521 * settings['draw.speed'] = value * ##pxm-FUNC PH with gil * void on_button_animspeed_reset_clicked() with gil: # <<<<<<<<<<<<<< * this.findChild(str2q('slider_animspeed')).setProperty(b'value', tovariant(settings['draw.speed_default'])) * del settings['draw.speed'] */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_WriteUnraisable("PreferencesDialog.on_button_animspeed_reset_clicked", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwes2.pyx":1525 * del settings['draw.speed'] * ##pxm-FUNC PH with gil * void on_combobox_shader_currentIndexChanged(int value) with gil: # <<<<<<<<<<<<<< * settings['draw.shader'] = value * ##pxm-FUNC PH with gil */ void PreferencesDialog::on_combobox_shader_currentIndexChanged(int __pyx_v_value) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_combobox_shader_currentIndexChanged", 0); /* "_qt_qtwes2.pyx":1526 * ##pxm-FUNC PH with gil * void on_combobox_shader_currentIndexChanged(int value) with gil: * settings['draw.shader'] = value # <<<<<<<<<<<<<< * ##pxm-FUNC PH with gil * void on_button_shader_reset_clicked() with gil: */ __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_value); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1526, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1526, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (unlikely(PyObject_SetItem(__pyx_t_2, __pyx_kp_u_draw_shader, __pyx_t_1) < 0)) __PYX_ERR(0, 1526, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwes2.pyx":1525 * del settings['draw.speed'] * ##pxm-FUNC PH with gil * void on_combobox_shader_currentIndexChanged(int value) with gil: # <<<<<<<<<<<<<< * settings['draw.shader'] = value * ##pxm-FUNC PH with gil */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_WriteUnraisable("PreferencesDialog.on_combobox_shader_currentIndexChanged", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwes2.pyx":1528 * settings['draw.shader'] = value * ##pxm-FUNC PH with gil * void on_button_shader_reset_clicked() with gil: # <<<<<<<<<<<<<< * this.findChild(str2q('combobox_shader')).setProperty(b'currentIndex', tovariant(settings['draw.shader_default'])) * del settings['draw.shader'] */ void PreferencesDialog::on_button_shader_reset_clicked(void) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_button_shader_reset_clicked", 0); /* "_qt_qtwes2.pyx":1529 * ##pxm-FUNC PH with gil * void on_button_shader_reset_clicked() with gil: * this.findChild(str2q('combobox_shader')).setProperty(b'currentIndex', tovariant(settings['draw.shader_default'])) # <<<<<<<<<<<<<< * del settings['draw.shader'] * ##pxm-FUNC PH with gil */ __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1529, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyObject_GetItem(__pyx_t_1, __pyx_kp_u_draw_shader_default); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1529, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; this->findChild(__pyx_f_10_qt_qtwes2_str2q(__pyx_n_u_combobox_shader))->setProperty(((char const *)"currentIndex"), __pyx_f_10_qt_qtwes2_tovariant(__pyx_t_2)); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwes2.pyx":1530 * void on_button_shader_reset_clicked() with gil: * this.findChild(str2q('combobox_shader')).setProperty(b'currentIndex', tovariant(settings['draw.shader_default'])) * del settings['draw.shader'] # <<<<<<<<<<<<<< * ##pxm-FUNC PH with gil * void on_combobox_samples_currentIndexChanged(int value) with gil: */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1530, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (unlikely(PyObject_DelItem(__pyx_t_2, __pyx_kp_u_draw_shader) < 0)) __PYX_ERR(0, 1530, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwes2.pyx":1528 * settings['draw.shader'] = value * ##pxm-FUNC PH with gil * void on_button_shader_reset_clicked() with gil: # <<<<<<<<<<<<<< * this.findChild(str2q('combobox_shader')).setProperty(b'currentIndex', tovariant(settings['draw.shader_default'])) * del settings['draw.shader'] */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_WriteUnraisable("PreferencesDialog.on_button_shader_reset_clicked", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwes2.pyx":1532 * del settings['draw.shader'] * ##pxm-FUNC PH with gil * void on_combobox_samples_currentIndexChanged(int value) with gil: # <<<<<<<<<<<<<< * settings['draw.samples'] = value * #visible = (this.sample_buffers != 2**settings['draw.samples']) */ void PreferencesDialog::on_combobox_samples_currentIndexChanged(int __pyx_v_value) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_combobox_samples_currentIndexChanged", 0); /* "_qt_qtwes2.pyx":1533 * ##pxm-FUNC PH with gil * void on_combobox_samples_currentIndexChanged(int value) with gil: * settings['draw.samples'] = value # <<<<<<<<<<<<<< * #visible = (this.sample_buffers != 2**settings['draw.samples']) * this.findChild(str2q('label_needs_restarted')).setProperty(b'visible', tovariant(True)) */ __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_value); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1533, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1533, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (unlikely(PyObject_SetItem(__pyx_t_2, __pyx_kp_u_draw_samples, __pyx_t_1) < 0)) __PYX_ERR(0, 1533, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwes2.pyx":1535 * settings['draw.samples'] = value * #visible = (this.sample_buffers != 2**settings['draw.samples']) * this.findChild(str2q('label_needs_restarted')).setProperty(b'visible', tovariant(True)) # <<<<<<<<<<<<<< * ##pxm-FUNC PH with gil * void on_button_antialiasing_reset_clicked() with gil: */ this->findChild(__pyx_f_10_qt_qtwes2_str2q(__pyx_n_u_label_needs_restarted))->setProperty(((char const *)"visible"), __pyx_f_10_qt_qtwes2_tovariant(Py_True)); /* "_qt_qtwes2.pyx":1532 * del settings['draw.shader'] * ##pxm-FUNC PH with gil * void on_combobox_samples_currentIndexChanged(int value) with gil: # <<<<<<<<<<<<<< * settings['draw.samples'] = value * #visible = (this.sample_buffers != 2**settings['draw.samples']) */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_WriteUnraisable("PreferencesDialog.on_combobox_samples_currentIndexChanged", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwes2.pyx":1537 * this.findChild(str2q('label_needs_restarted')).setProperty(b'visible', tovariant(True)) * ##pxm-FUNC PH with gil * void on_button_antialiasing_reset_clicked() with gil: # <<<<<<<<<<<<<< * this.findChild(str2q('combobox_samples')).setProperty(b'currentIndex', tovariant(settings['draw.samples_default'])) * del settings['draw.samples'] */ void PreferencesDialog::on_button_antialiasing_reset_clicked(void) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_button_antialiasing_reset_clicked", 0); /* "_qt_qtwes2.pyx":1538 * ##pxm-FUNC PH with gil * void on_button_antialiasing_reset_clicked() with gil: * this.findChild(str2q('combobox_samples')).setProperty(b'currentIndex', tovariant(settings['draw.samples_default'])) # <<<<<<<<<<<<<< * del settings['draw.samples'] * ##pxm-FUNC PH with gil */ __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1538, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyObject_GetItem(__pyx_t_1, __pyx_kp_u_draw_samples_default); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1538, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; this->findChild(__pyx_f_10_qt_qtwes2_str2q(__pyx_n_u_combobox_samples))->setProperty(((char const *)"currentIndex"), __pyx_f_10_qt_qtwes2_tovariant(__pyx_t_2)); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwes2.pyx":1539 * void on_button_antialiasing_reset_clicked() with gil: * this.findChild(str2q('combobox_samples')).setProperty(b'currentIndex', tovariant(settings['draw.samples_default'])) * del settings['draw.samples'] # <<<<<<<<<<<<<< * ##pxm-FUNC PH with gil * void on_checkbox_mirror_faces_toggled(cbool checked) with gil: */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1539, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (unlikely(PyObject_DelItem(__pyx_t_2, __pyx_kp_u_draw_samples) < 0)) __PYX_ERR(0, 1539, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwes2.pyx":1537 * this.findChild(str2q('label_needs_restarted')).setProperty(b'visible', tovariant(True)) * ##pxm-FUNC PH with gil * void on_button_antialiasing_reset_clicked() with gil: # <<<<<<<<<<<<<< * this.findChild(str2q('combobox_samples')).setProperty(b'currentIndex', tovariant(settings['draw.samples_default'])) * del settings['draw.samples'] */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_WriteUnraisable("PreferencesDialog.on_button_antialiasing_reset_clicked", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwes2.pyx":1541 * del settings['draw.samples'] * ##pxm-FUNC PH with gil * void on_checkbox_mirror_faces_toggled(cbool checked) with gil: # <<<<<<<<<<<<<< * uidata.preferences.findChild(str2q('spinbox_mirror_faces')).setProperty(b'enabled', tovariant(checked)) * settings['draw.mirror_faces'] = checked */ void PreferencesDialog::on_checkbox_mirror_faces_toggled(bool __pyx_v_checked) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_checkbox_mirror_faces_toggled", 0); /* "_qt_qtwes2.pyx":1542 * ##pxm-FUNC PH with gil * void on_checkbox_mirror_faces_toggled(cbool checked) with gil: * uidata.preferences.findChild(str2q('spinbox_mirror_faces')).setProperty(b'enabled', tovariant(checked)) # <<<<<<<<<<<<<< * settings['draw.mirror_faces'] = checked * ##pxm-FUNC PH with gil */ __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_checked); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1542, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_10_qt_qtwes2_uidata.preferences->findChild(__pyx_f_10_qt_qtwes2_str2q(__pyx_n_u_spinbox_mirror_faces))->setProperty(((char const *)"enabled"), __pyx_f_10_qt_qtwes2_tovariant(__pyx_t_1)); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwes2.pyx":1543 * void on_checkbox_mirror_faces_toggled(cbool checked) with gil: * uidata.preferences.findChild(str2q('spinbox_mirror_faces')).setProperty(b'enabled', tovariant(checked)) * settings['draw.mirror_faces'] = checked # <<<<<<<<<<<<<< * ##pxm-FUNC PH with gil * void on_spinbox_mirror_faces_valueChanged(double value) with gil: */ __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_checked); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1543, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1543, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (unlikely(PyObject_SetItem(__pyx_t_2, __pyx_kp_u_draw_mirror_faces, __pyx_t_1) < 0)) __PYX_ERR(0, 1543, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwes2.pyx":1541 * del settings['draw.samples'] * ##pxm-FUNC PH with gil * void on_checkbox_mirror_faces_toggled(cbool checked) with gil: # <<<<<<<<<<<<<< * uidata.preferences.findChild(str2q('spinbox_mirror_faces')).setProperty(b'enabled', tovariant(checked)) * settings['draw.mirror_faces'] = checked */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_WriteUnraisable("PreferencesDialog.on_checkbox_mirror_faces_toggled", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwes2.pyx":1545 * settings['draw.mirror_faces'] = checked * ##pxm-FUNC PH with gil * void on_spinbox_mirror_faces_valueChanged(double value) with gil: # <<<<<<<<<<<<<< * settings['draw.mirror_distance'] = value * ##pxm-FUNC PH with gil */ void PreferencesDialog::on_spinbox_mirror_faces_valueChanged(double __pyx_v_value) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_spinbox_mirror_faces_valueChanged", 0); /* "_qt_qtwes2.pyx":1546 * ##pxm-FUNC PH with gil * void on_spinbox_mirror_faces_valueChanged(double value) with gil: * settings['draw.mirror_distance'] = value # <<<<<<<<<<<<<< * ##pxm-FUNC PH with gil * void on_button_mirror_faces_reset_clicked() with gil: */ __pyx_t_1 = PyFloat_FromDouble(__pyx_v_value); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1546, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1546, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (unlikely(PyObject_SetItem(__pyx_t_2, __pyx_kp_u_draw_mirror_distance, __pyx_t_1) < 0)) __PYX_ERR(0, 1546, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwes2.pyx":1545 * settings['draw.mirror_faces'] = checked * ##pxm-FUNC PH with gil * void on_spinbox_mirror_faces_valueChanged(double value) with gil: # <<<<<<<<<<<<<< * settings['draw.mirror_distance'] = value * ##pxm-FUNC PH with gil */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_WriteUnraisable("PreferencesDialog.on_spinbox_mirror_faces_valueChanged", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwes2.pyx":1548 * settings['draw.mirror_distance'] = value * ##pxm-FUNC PH with gil * void on_button_mirror_faces_reset_clicked() with gil: # <<<<<<<<<<<<<< * this.findChild(str2q('checkbox_mirror_faces')).setProperty(b'checked', tovariant(settings['draw.mirror_faces_default'])) * del settings['draw.mirror_faces'] */ void PreferencesDialog::on_button_mirror_faces_reset_clicked(void) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_button_mirror_faces_reset_clicked", 0); /* "_qt_qtwes2.pyx":1549 * ##pxm-FUNC PH with gil * void on_button_mirror_faces_reset_clicked() with gil: * this.findChild(str2q('checkbox_mirror_faces')).setProperty(b'checked', tovariant(settings['draw.mirror_faces_default'])) # <<<<<<<<<<<<<< * del settings['draw.mirror_faces'] * this.findChild(str2q('spinbox_mirror_faces')).setProperty(b'value', tovariant(settings['draw.mirror_distance_default'])) */ __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1549, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyObject_GetItem(__pyx_t_1, __pyx_kp_u_draw_mirror_faces_default); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1549, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; this->findChild(__pyx_f_10_qt_qtwes2_str2q(__pyx_n_u_checkbox_mirror_faces))->setProperty(((char const *)"checked"), __pyx_f_10_qt_qtwes2_tovariant(__pyx_t_2)); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwes2.pyx":1550 * void on_button_mirror_faces_reset_clicked() with gil: * this.findChild(str2q('checkbox_mirror_faces')).setProperty(b'checked', tovariant(settings['draw.mirror_faces_default'])) * del settings['draw.mirror_faces'] # <<<<<<<<<<<<<< * this.findChild(str2q('spinbox_mirror_faces')).setProperty(b'value', tovariant(settings['draw.mirror_distance_default'])) * del settings['draw.mirror_distance'] */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1550, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (unlikely(PyObject_DelItem(__pyx_t_2, __pyx_kp_u_draw_mirror_faces) < 0)) __PYX_ERR(0, 1550, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwes2.pyx":1551 * this.findChild(str2q('checkbox_mirror_faces')).setProperty(b'checked', tovariant(settings['draw.mirror_faces_default'])) * del settings['draw.mirror_faces'] * this.findChild(str2q('spinbox_mirror_faces')).setProperty(b'value', tovariant(settings['draw.mirror_distance_default'])) # <<<<<<<<<<<<<< * del settings['draw.mirror_distance'] * ##pxm-FUNC PH with gil */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1551, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = PyObject_GetItem(__pyx_t_2, __pyx_kp_u_draw_mirror_distance_default); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1551, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; this->findChild(__pyx_f_10_qt_qtwes2_str2q(__pyx_n_u_spinbox_mirror_faces))->setProperty(((char const *)"value"), __pyx_f_10_qt_qtwes2_tovariant(__pyx_t_1)); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwes2.pyx":1552 * del settings['draw.mirror_faces'] * this.findChild(str2q('spinbox_mirror_faces')).setProperty(b'value', tovariant(settings['draw.mirror_distance_default'])) * del settings['draw.mirror_distance'] # <<<<<<<<<<<<<< * ##pxm-FUNC PH with gil * void on_button_mousemode_quad_toggled(cbool checked) with gil: */ __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1552, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (unlikely(PyObject_DelItem(__pyx_t_1, __pyx_kp_u_draw_mirror_distance) < 0)) __PYX_ERR(0, 1552, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwes2.pyx":1548 * settings['draw.mirror_distance'] = value * ##pxm-FUNC PH with gil * void on_button_mirror_faces_reset_clicked() with gil: # <<<<<<<<<<<<<< * this.findChild(str2q('checkbox_mirror_faces')).setProperty(b'checked', tovariant(settings['draw.mirror_faces_default'])) * del settings['draw.mirror_faces'] */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_WriteUnraisable("PreferencesDialog.on_button_mirror_faces_reset_clicked", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwes2.pyx":1554 * del settings['draw.mirror_distance'] * ##pxm-FUNC PH with gil * void on_button_mousemode_quad_toggled(cbool checked) with gil: # <<<<<<<<<<<<<< * if checked: * settings['draw.selection_nick'] = 'quadrant' */ void PreferencesDialog::on_button_mousemode_quad_toggled(bool __pyx_v_checked) { __Pyx_RefNannyDeclarations int __pyx_t_1; PyObject *__pyx_t_2 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_button_mousemode_quad_toggled", 0); /* "_qt_qtwes2.pyx":1555 * ##pxm-FUNC PH with gil * void on_button_mousemode_quad_toggled(cbool checked) with gil: * if checked: # <<<<<<<<<<<<<< * settings['draw.selection_nick'] = 'quadrant' * ##pxm-FUNC PH with gil */ __pyx_t_1 = (__pyx_v_checked != 0); if (__pyx_t_1) { /* "_qt_qtwes2.pyx":1556 * void on_button_mousemode_quad_toggled(cbool checked) with gil: * if checked: * settings['draw.selection_nick'] = 'quadrant' # <<<<<<<<<<<<<< * ##pxm-FUNC PH with gil * void on_button_mousemode_ext_toggled(cbool checked) with gil: */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1556, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (unlikely(PyObject_SetItem(__pyx_t_2, __pyx_kp_u_draw_selection_nick, __pyx_n_u_quadrant) < 0)) __PYX_ERR(0, 1556, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwes2.pyx":1555 * ##pxm-FUNC PH with gil * void on_button_mousemode_quad_toggled(cbool checked) with gil: * if checked: # <<<<<<<<<<<<<< * settings['draw.selection_nick'] = 'quadrant' * ##pxm-FUNC PH with gil */ } /* "_qt_qtwes2.pyx":1554 * del settings['draw.mirror_distance'] * ##pxm-FUNC PH with gil * void on_button_mousemode_quad_toggled(cbool checked) with gil: # <<<<<<<<<<<<<< * if checked: * settings['draw.selection_nick'] = 'quadrant' */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_WriteUnraisable("PreferencesDialog.on_button_mousemode_quad_toggled", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwes2.pyx":1558 * settings['draw.selection_nick'] = 'quadrant' * ##pxm-FUNC PH with gil * void on_button_mousemode_ext_toggled(cbool checked) with gil: # <<<<<<<<<<<<<< * if checked: * settings['draw.selection_nick'] = 'simple' */ void PreferencesDialog::on_button_mousemode_ext_toggled(bool __pyx_v_checked) { __Pyx_RefNannyDeclarations int __pyx_t_1; PyObject *__pyx_t_2 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_button_mousemode_ext_toggled", 0); /* "_qt_qtwes2.pyx":1559 * ##pxm-FUNC PH with gil * void on_button_mousemode_ext_toggled(cbool checked) with gil: * if checked: # <<<<<<<<<<<<<< * settings['draw.selection_nick'] = 'simple' * ##pxm-FUNC PH with gil */ __pyx_t_1 = (__pyx_v_checked != 0); if (__pyx_t_1) { /* "_qt_qtwes2.pyx":1560 * void on_button_mousemode_ext_toggled(cbool checked) with gil: * if checked: * settings['draw.selection_nick'] = 'simple' # <<<<<<<<<<<<<< * ##pxm-FUNC PH with gil * void on_button_mousemode_gesture_toggled(cbool checked) with gil: */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1560, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (unlikely(PyObject_SetItem(__pyx_t_2, __pyx_kp_u_draw_selection_nick, __pyx_n_u_simple) < 0)) __PYX_ERR(0, 1560, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwes2.pyx":1559 * ##pxm-FUNC PH with gil * void on_button_mousemode_ext_toggled(cbool checked) with gil: * if checked: # <<<<<<<<<<<<<< * settings['draw.selection_nick'] = 'simple' * ##pxm-FUNC PH with gil */ } /* "_qt_qtwes2.pyx":1558 * settings['draw.selection_nick'] = 'quadrant' * ##pxm-FUNC PH with gil * void on_button_mousemode_ext_toggled(cbool checked) with gil: # <<<<<<<<<<<<<< * if checked: * settings['draw.selection_nick'] = 'simple' */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_WriteUnraisable("PreferencesDialog.on_button_mousemode_ext_toggled", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwes2.pyx":1562 * settings['draw.selection_nick'] = 'simple' * ##pxm-FUNC PH with gil * void on_button_mousemode_gesture_toggled(cbool checked) with gil: # <<<<<<<<<<<<<< * if checked: * settings['draw.selection_nick'] = 'gesture' */ void PreferencesDialog::on_button_mousemode_gesture_toggled(bool __pyx_v_checked) { __Pyx_RefNannyDeclarations int __pyx_t_1; PyObject *__pyx_t_2 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_button_mousemode_gesture_toggled", 0); /* "_qt_qtwes2.pyx":1563 * ##pxm-FUNC PH with gil * void on_button_mousemode_gesture_toggled(cbool checked) with gil: * if checked: # <<<<<<<<<<<<<< * settings['draw.selection_nick'] = 'gesture' * */ __pyx_t_1 = (__pyx_v_checked != 0); if (__pyx_t_1) { /* "_qt_qtwes2.pyx":1564 * void on_button_mousemode_gesture_toggled(cbool checked) with gil: * if checked: * settings['draw.selection_nick'] = 'gesture' # <<<<<<<<<<<<<< * * ##pxm-FUNC PHD */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1564, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (unlikely(PyObject_SetItem(__pyx_t_2, __pyx_kp_u_draw_selection_nick, __pyx_n_u_gesture) < 0)) __PYX_ERR(0, 1564, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwes2.pyx":1563 * ##pxm-FUNC PH with gil * void on_button_mousemode_gesture_toggled(cbool checked) with gil: * if checked: # <<<<<<<<<<<<<< * settings['draw.selection_nick'] = 'gesture' * */ } /* "_qt_qtwes2.pyx":1562 * settings['draw.selection_nick'] = 'simple' * ##pxm-FUNC PH with gil * void on_button_mousemode_gesture_toggled(cbool checked) with gil: # <<<<<<<<<<<<<< * if checked: * settings['draw.selection_nick'] = 'gesture' */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_WriteUnraisable("PreferencesDialog.on_button_mousemode_gesture_toggled", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwes2.pyx":1567 * * ##pxm-FUNC PHD * void fill_move_key_list(): # <<<<<<<<<<<<<< * this.liststore_blocked = True * cdef QStandardItem *item #px+ */ void PreferencesDialog::fill_move_key_list(void) { QStandardItem *__pyx_v_item; PyObject *__pyx_v_i = NULL; PyObject *__pyx_v_move = NULL; PyObject *__pyx_v_key = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; Py_ssize_t __pyx_t_4; PyObject *(*__pyx_t_5)(PyObject *); PyObject *__pyx_t_6 = NULL; PyObject *__pyx_t_7 = NULL; PyObject *__pyx_t_8 = NULL; PyObject *(*__pyx_t_9)(PyObject *); int __pyx_t_10; __Pyx_RefNannySetupContext("fill_move_key_list", 0); /* "_qt_qtwes2.pyx":1568 * ##pxm-FUNC PHD * void fill_move_key_list(): * this.liststore_blocked = True # <<<<<<<<<<<<<< * cdef QStandardItem *item #px+ * for i, (move, key) in enumerate(settings['draw.accels']): */ this->liststore_blocked = 1; /* "_qt_qtwes2.pyx":1570 * this.liststore_blocked = True * cdef QStandardItem *item #px+ * for i, (move, key) in enumerate(settings['draw.accels']): # <<<<<<<<<<<<<< * item = new QStandardItem(str2q(move)) #px/ * #item = QStandardItem(str2q(move)) */ __Pyx_INCREF(__pyx_int_0); __pyx_t_1 = __pyx_int_0; __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1570, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyObject_GetItem(__pyx_t_2, __pyx_kp_u_draw_accels); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1570, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) { __pyx_t_2 = __pyx_t_3; __Pyx_INCREF(__pyx_t_2); __pyx_t_4 = 0; __pyx_t_5 = NULL; } else { __pyx_t_4 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1570, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1570, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; for (;;) { if (likely(!__pyx_t_5)) { if (likely(PyList_CheckExact(__pyx_t_2))) { if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_2)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_3 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1570, __pyx_L1_error) #else __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1570, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); #endif } else { if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_2)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1570, __pyx_L1_error) #else __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1570, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); #endif } } else { __pyx_t_3 = __pyx_t_5(__pyx_t_2); if (unlikely(!__pyx_t_3)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 1570, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_3); } if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) { PyObject* sequence = __pyx_t_3; #if !CYTHON_COMPILING_IN_PYPY Py_ssize_t size = Py_SIZE(sequence); #else Py_ssize_t size = PySequence_Size(sequence); #endif if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 1570, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_6 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_7 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_6 = PyList_GET_ITEM(sequence, 0); __pyx_t_7 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(__pyx_t_7); #else __pyx_t_6 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1570, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1570, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); #endif __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { Py_ssize_t index = -1; __pyx_t_8 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1570, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_9 = Py_TYPE(__pyx_t_8)->tp_iternext; index = 0; __pyx_t_6 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_6)) goto __pyx_L5_unpacking_failed; __Pyx_GOTREF(__pyx_t_6); index = 1; __pyx_t_7 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_7)) goto __pyx_L5_unpacking_failed; __Pyx_GOTREF(__pyx_t_7); if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_8), 2) < 0) __PYX_ERR(0, 1570, __pyx_L1_error) __pyx_t_9 = NULL; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; goto __pyx_L6_unpacking_done; __pyx_L5_unpacking_failed:; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_9 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 1570, __pyx_L1_error) __pyx_L6_unpacking_done:; } __Pyx_XDECREF_SET(__pyx_v_move, __pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_7); __pyx_t_7 = 0; __Pyx_INCREF(__pyx_t_1); __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_1); __pyx_t_3 = __Pyx_PyInt_AddObjC(__pyx_t_1, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1570, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = __pyx_t_3; __pyx_t_3 = 0; /* "_qt_qtwes2.pyx":1571 * cdef QStandardItem *item #px+ * for i, (move, key) in enumerate(settings['draw.accels']): * item = new QStandardItem(str2q(move)) #px/ # <<<<<<<<<<<<<< * #item = QStandardItem(str2q(move)) * this.liststore_movekeys.setItem(i, 0, item) */ __pyx_v_item = new QStandardItem(__pyx_f_10_qt_qtwes2_str2q(__pyx_v_move)); /* "_qt_qtwes2.pyx":1573 * item = new QStandardItem(str2q(move)) #px/ * #item = QStandardItem(str2q(move)) * this.liststore_movekeys.setItem(i, 0, item) # <<<<<<<<<<<<<< * item = new QStandardItem(str2q(key)) #px/ * #item = QStandardItem(str2q(key)) */ __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_v_i); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1573, __pyx_L1_error) this->liststore_movekeys->setItem(__pyx_t_10, 0, __pyx_v_item); /* "_qt_qtwes2.pyx":1574 * #item = QStandardItem(str2q(move)) * this.liststore_movekeys.setItem(i, 0, item) * item = new QStandardItem(str2q(key)) #px/ # <<<<<<<<<<<<<< * #item = QStandardItem(str2q(key)) * this.liststore_movekeys.setItem(i, 1, item) */ __pyx_v_item = new QStandardItem(__pyx_f_10_qt_qtwes2_str2q(__pyx_v_key)); /* "_qt_qtwes2.pyx":1576 * item = new QStandardItem(str2q(key)) #px/ * #item = QStandardItem(str2q(key)) * this.liststore_movekeys.setItem(i, 1, item) # <<<<<<<<<<<<<< * item = new QStandardItem(str2q(_('Move'))) #px/ * #item = QStandardItem(str2q(_('Move'))) */ __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_v_i); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1576, __pyx_L1_error) this->liststore_movekeys->setItem(__pyx_t_10, 1, __pyx_v_item); /* "_qt_qtwes2.pyx":1570 * this.liststore_blocked = True * cdef QStandardItem *item #px+ * for i, (move, key) in enumerate(settings['draw.accels']): # <<<<<<<<<<<<<< * item = new QStandardItem(str2q(move)) #px/ * #item = QStandardItem(str2q(move)) */ } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwes2.pyx":1577 * #item = QStandardItem(str2q(key)) * this.liststore_movekeys.setItem(i, 1, item) * item = new QStandardItem(str2q(_('Move'))) #px/ # <<<<<<<<<<<<<< * #item = QStandardItem(str2q(_('Move'))) * this.liststore_movekeys.setHorizontalHeaderItem(0, item) */ __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1577, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__8, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1577, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_item = new QStandardItem(__pyx_f_10_qt_qtwes2_str2q(__pyx_t_2)); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwes2.pyx":1579 * item = new QStandardItem(str2q(_('Move'))) #px/ * #item = QStandardItem(str2q(_('Move'))) * this.liststore_movekeys.setHorizontalHeaderItem(0, item) # <<<<<<<<<<<<<< * item = new QStandardItem(str2q(_('Key'))) #px/ * #item = QStandardItem(str2q(_('Key'))) */ this->liststore_movekeys->setHorizontalHeaderItem(0, __pyx_v_item); /* "_qt_qtwes2.pyx":1580 * #item = QStandardItem(str2q(_('Move'))) * this.liststore_movekeys.setHorizontalHeaderItem(0, item) * item = new QStandardItem(str2q(_('Key'))) #px/ # <<<<<<<<<<<<<< * #item = QStandardItem(str2q(_('Key'))) * this.liststore_movekeys.setHorizontalHeaderItem(1, item) */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s__4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1580, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1580, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_item = new QStandardItem(__pyx_f_10_qt_qtwes2_str2q(__pyx_t_1)); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwes2.pyx":1582 * item = new QStandardItem(str2q(_('Key'))) #px/ * #item = QStandardItem(str2q(_('Key'))) * this.liststore_movekeys.setHorizontalHeaderItem(1, item) # <<<<<<<<<<<<<< * this.liststore_blocked = False * */ this->liststore_movekeys->setHorizontalHeaderItem(1, __pyx_v_item); /* "_qt_qtwes2.pyx":1583 * #item = QStandardItem(str2q(_('Key'))) * this.liststore_movekeys.setHorizontalHeaderItem(1, item) * this.liststore_blocked = False # <<<<<<<<<<<<<< * * ##pxm-FUNC PHD */ this->liststore_blocked = 0; /* "_qt_qtwes2.pyx":1567 * * ##pxm-FUNC PHD * void fill_move_key_list(): # <<<<<<<<<<<<<< * this.liststore_blocked = True * cdef QStandardItem *item #px+ */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_8); __Pyx_WriteUnraisable("PreferencesDialog.fill_move_key_list", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_XDECREF(__pyx_v_i); __Pyx_XDECREF(__pyx_v_move); __Pyx_XDECREF(__pyx_v_key); __Pyx_RefNannyFinishContext(); } /* "_qt_qtwes2.pyx":1586 * * ##pxm-FUNC PHD * object get_move_key_list(): # <<<<<<<<<<<<<< * move_keys = [] * row_count = this.liststore_movekeys.rowCount() */ PyObject *PreferencesDialog::get_move_key_list(void) { PyObject *__pyx_v_move_keys = NULL; int __pyx_v_row_count; int __pyx_v_i; PyObject *__pyx_v_move = NULL; PyObject *__pyx_v_key = NULL; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_t_2; int __pyx_t_3; int __pyx_t_4; __Pyx_RefNannySetupContext("get_move_key_list", 0); /* "_qt_qtwes2.pyx":1587 * ##pxm-FUNC PHD * object get_move_key_list(): * move_keys = [] # <<<<<<<<<<<<<< * row_count = this.liststore_movekeys.rowCount() * for i in range(row_count): */ __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1587, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_move_keys = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwes2.pyx":1588 * object get_move_key_list(): * move_keys = [] * row_count = this.liststore_movekeys.rowCount() # <<<<<<<<<<<<<< * for i in range(row_count): * move = fromvariant(this.liststore_movekeys.item(i, 0).data(Qt.DisplayRole)) */ __pyx_v_row_count = this->liststore_movekeys->rowCount(); /* "_qt_qtwes2.pyx":1589 * move_keys = [] * row_count = this.liststore_movekeys.rowCount() * for i in range(row_count): # <<<<<<<<<<<<<< * move = fromvariant(this.liststore_movekeys.item(i, 0).data(Qt.DisplayRole)) * key = fromvariant(this.liststore_movekeys.item(i, 1).data(Qt.DisplayRole)) */ __pyx_t_2 = __pyx_v_row_count; for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) { __pyx_v_i = __pyx_t_3; /* "_qt_qtwes2.pyx":1590 * row_count = this.liststore_movekeys.rowCount() * for i in range(row_count): * move = fromvariant(this.liststore_movekeys.item(i, 0).data(Qt.DisplayRole)) # <<<<<<<<<<<<<< * key = fromvariant(this.liststore_movekeys.item(i, 1).data(Qt.DisplayRole)) * move_keys.append((move, key)) */ __pyx_t_1 = __pyx_f_10_qt_qtwes2_fromvariant(this->liststore_movekeys->item(__pyx_v_i, 0)->data(Qt::DisplayRole)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1590, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_XDECREF_SET(__pyx_v_move, __pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwes2.pyx":1591 * for i in range(row_count): * move = fromvariant(this.liststore_movekeys.item(i, 0).data(Qt.DisplayRole)) * key = fromvariant(this.liststore_movekeys.item(i, 1).data(Qt.DisplayRole)) # <<<<<<<<<<<<<< * move_keys.append((move, key)) * return move_keys */ __pyx_t_1 = __pyx_f_10_qt_qtwes2_fromvariant(this->liststore_movekeys->item(__pyx_v_i, 1)->data(Qt::DisplayRole)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1591, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwes2.pyx":1592 * move = fromvariant(this.liststore_movekeys.item(i, 0).data(Qt.DisplayRole)) * key = fromvariant(this.liststore_movekeys.item(i, 1).data(Qt.DisplayRole)) * move_keys.append((move, key)) # <<<<<<<<<<<<<< * return move_keys * */ __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1592, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_v_move); __Pyx_GIVEREF(__pyx_v_move); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_move); __Pyx_INCREF(__pyx_v_key); __Pyx_GIVEREF(__pyx_v_key); PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_key); __pyx_t_4 = __Pyx_PyList_Append(__pyx_v_move_keys, __pyx_t_1); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(0, 1592, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } /* "_qt_qtwes2.pyx":1593 * key = fromvariant(this.liststore_movekeys.item(i, 1).data(Qt.DisplayRole)) * move_keys.append((move, key)) * return move_keys # <<<<<<<<<<<<<< * * ##pxm-FUNC PH with gil */ __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_move_keys); __pyx_r = __pyx_v_move_keys; goto __pyx_L0; /* "_qt_qtwes2.pyx":1586 * * ##pxm-FUNC PHD * object get_move_key_list(): # <<<<<<<<<<<<<< * move_keys = [] * row_count = this.liststore_movekeys.rowCount() */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("PreferencesDialog.get_move_key_list", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XDECREF(__pyx_v_move_keys); __Pyx_XDECREF(__pyx_v_move); __Pyx_XDECREF(__pyx_v_key); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwes2.pyx":1596 * * ##pxm-FUNC PH with gil * void on_liststore_movekeys_itemChanged(QStandardItem *unused_item) with gil: # <<<<<<<<<<<<<< * if this.liststore_blocked: return * settings['draw.accels'] = this.get_move_key_list() */ void PreferencesDialog::on_liststore_movekeys_itemChanged(CYTHON_UNUSED QStandardItem *__pyx_v_unused_item) { __Pyx_RefNannyDeclarations int __pyx_t_1; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_liststore_movekeys_itemChanged", 0); /* "_qt_qtwes2.pyx":1597 * ##pxm-FUNC PH with gil * void on_liststore_movekeys_itemChanged(QStandardItem *unused_item) with gil: * if this.liststore_blocked: return # <<<<<<<<<<<<<< * settings['draw.accels'] = this.get_move_key_list() * */ __pyx_t_1 = (this->liststore_blocked != 0); if (__pyx_t_1) { goto __pyx_L0; } /* "_qt_qtwes2.pyx":1598 * void on_liststore_movekeys_itemChanged(QStandardItem *unused_item) with gil: * if this.liststore_blocked: return * settings['draw.accels'] = this.get_move_key_list() # <<<<<<<<<<<<<< * * ##pxm-FUNC PH with gil */ __pyx_t_2 = this->get_move_key_list(); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1598, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1598, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (unlikely(PyObject_SetItem(__pyx_t_3, __pyx_kp_u_draw_accels, __pyx_t_2) < 0)) __PYX_ERR(0, 1598, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwes2.pyx":1596 * * ##pxm-FUNC PH with gil * void on_liststore_movekeys_itemChanged(QStandardItem *unused_item) with gil: # <<<<<<<<<<<<<< * if this.liststore_blocked: return * settings['draw.accels'] = this.get_move_key_list() */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_WriteUnraisable("PreferencesDialog.on_liststore_movekeys_itemChanged", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwes2.pyx":1601 * * ##pxm-FUNC PH with gil * void on_button_movekey_add_clicked() with gil: # <<<<<<<<<<<<<< * this.liststore_blocked = True * qtui.add_movekey_row() */ void PreferencesDialog::on_button_movekey_add_clicked(void) { __Pyx_RefNannyDeclarations #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_button_movekey_add_clicked", 0); /* "_qt_qtwes2.pyx":1602 * ##pxm-FUNC PH with gil * void on_button_movekey_add_clicked() with gil: * this.liststore_blocked = True # <<<<<<<<<<<<<< * qtui.add_movekey_row() * this.liststore_blocked = False */ this->liststore_blocked = 1; /* "_qt_qtwes2.pyx":1603 * void on_button_movekey_add_clicked() with gil: * this.liststore_blocked = True * qtui.add_movekey_row() # <<<<<<<<<<<<<< * this.liststore_blocked = False * */ __pyx_f_6_qtui__add_movekey_row(); /* "_qt_qtwes2.pyx":1604 * this.liststore_blocked = True * qtui.add_movekey_row() * this.liststore_blocked = False # <<<<<<<<<<<<<< * * ##pxm-FUNC PH with gil */ this->liststore_blocked = 0; /* "_qt_qtwes2.pyx":1601 * * ##pxm-FUNC PH with gil * void on_button_movekey_add_clicked() with gil: # <<<<<<<<<<<<<< * this.liststore_blocked = True * qtui.add_movekey_row() */ /* function exit code */ __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwes2.pyx":1607 * * ##pxm-FUNC PH with gil * void on_button_movekey_remove_clicked() with gil: # <<<<<<<<<<<<<< * qtui.remove_movekey_row() * settings['draw.accels'] = this.get_move_key_list() */ void PreferencesDialog::on_button_movekey_remove_clicked(void) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_button_movekey_remove_clicked", 0); /* "_qt_qtwes2.pyx":1608 * ##pxm-FUNC PH with gil * void on_button_movekey_remove_clicked() with gil: * qtui.remove_movekey_row() # <<<<<<<<<<<<<< * settings['draw.accels'] = this.get_move_key_list() * */ __pyx_f_6_qtui__remove_movekey_row(); /* "_qt_qtwes2.pyx":1609 * void on_button_movekey_remove_clicked() with gil: * qtui.remove_movekey_row() * settings['draw.accels'] = this.get_move_key_list() # <<<<<<<<<<<<<< * * ##pxm-FUNC PH with gil */ __pyx_t_1 = this->get_move_key_list(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1609, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1609, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (unlikely(PyObject_SetItem(__pyx_t_2, __pyx_kp_u_draw_accels, __pyx_t_1) < 0)) __PYX_ERR(0, 1609, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwes2.pyx":1607 * * ##pxm-FUNC PH with gil * void on_button_movekey_remove_clicked() with gil: # <<<<<<<<<<<<<< * qtui.remove_movekey_row() * settings['draw.accels'] = this.get_move_key_list() */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_WriteUnraisable("PreferencesDialog.on_button_movekey_remove_clicked", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwes2.pyx":1612 * * ##pxm-FUNC PH with gil * void on_button_movekey_reset_clicked() with gil: # <<<<<<<<<<<<<< * del settings['draw.accels'] * this.fill_move_key_list() */ void PreferencesDialog::on_button_movekey_reset_clicked(void) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_button_movekey_reset_clicked", 0); /* "_qt_qtwes2.pyx":1613 * ##pxm-FUNC PH with gil * void on_button_movekey_reset_clicked() with gil: * del settings['draw.accels'] # <<<<<<<<<<<<<< * this.fill_move_key_list() * */ __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1613, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (unlikely(PyObject_DelItem(__pyx_t_1, __pyx_kp_u_draw_accels) < 0)) __PYX_ERR(0, 1613, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwes2.pyx":1614 * void on_button_movekey_reset_clicked() with gil: * del settings['draw.accels'] * this.fill_move_key_list() # <<<<<<<<<<<<<< * * ##pxm-FUNC PH with gil */ this->fill_move_key_list(); /* "_qt_qtwes2.pyx":1612 * * ##pxm-FUNC PH with gil * void on_button_movekey_reset_clicked() with gil: # <<<<<<<<<<<<<< * del settings['draw.accels'] * this.fill_move_key_list() */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_WriteUnraisable("PreferencesDialog.on_button_movekey_reset_clicked", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwes2.pyx":1617 * * ##pxm-FUNC PH with gil * void _on_listview_faces_currentRowChanged(const QModelIndex ¤t) with gil: # <<<<<<<<<<<<<< * this.current_facekey = qtui.get_liststore_faces_facekey(current) * pydata.app.on_dialog_change_current_face(q2str(this.current_facekey)) */ void PreferencesDialog::_on_listview_faces_currentRowChanged(QModelIndex const &__pyx_v_current) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("_on_listview_faces_currentRowChanged", 0); /* "_qt_qtwes2.pyx":1618 * ##pxm-FUNC PH with gil * void _on_listview_faces_currentRowChanged(const QModelIndex ¤t) with gil: * this.current_facekey = qtui.get_liststore_faces_facekey(current) # <<<<<<<<<<<<<< * pydata.app.on_dialog_change_current_face(q2str(this.current_facekey)) * */ this->current_facekey = __pyx_f_6_qtui__get_liststore_faces_facekey(__pyx_v_current); /* "_qt_qtwes2.pyx":1619 * void _on_listview_faces_currentRowChanged(const QModelIndex ¤t) with gil: * this.current_facekey = qtui.get_liststore_faces_facekey(current) * pydata.app.on_dialog_change_current_face(q2str(this.current_facekey)) # <<<<<<<<<<<<<< * * ##pxm-FUNC PH with gil */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1619, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_app); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1619, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_on_dialog_change_current_face); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1619, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __pyx_f_10_qt_qtwes2_q2str(this->current_facekey); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1619, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } if (!__pyx_t_4) { __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1619, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_3}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1619, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_3}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1619, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif { __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1619, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL; __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_3); __pyx_t_3 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1619, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwes2.pyx":1617 * * ##pxm-FUNC PH with gil * void _on_listview_faces_currentRowChanged(const QModelIndex ¤t) with gil: # <<<<<<<<<<<<<< * this.current_facekey = qtui.get_liststore_faces_facekey(current) * pydata.app.on_dialog_change_current_face(q2str(this.current_facekey)) */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_WriteUnraisable("PreferencesDialog._on_listview_faces_currentRowChanged", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwes2.pyx":1622 * * ##pxm-FUNC PH with gil * void on_button_color_clicked() with gil: # <<<<<<<<<<<<<< * cdef QString color #px+ * current_facekey = q2str(this.current_facekey) */ void PreferencesDialog::on_button_color_clicked(void) { QString __pyx_v_color; PyObject *__pyx_v_current_facekey = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; int __pyx_t_4; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_button_color_clicked", 0); /* "_qt_qtwes2.pyx":1624 * void on_button_color_clicked() with gil: * cdef QString color #px+ * current_facekey = q2str(this.current_facekey) # <<<<<<<<<<<<<< * color = str2q(settings['theme.faces',current_facekey,'color']) * color = qtui.color_dialog(this, color) */ __pyx_t_1 = __pyx_f_10_qt_qtwes2_q2str(this->current_facekey); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1624, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_current_facekey = __pyx_t_1; __pyx_t_1 = 0; /* "_qt_qtwes2.pyx":1625 * cdef QString color #px+ * current_facekey = q2str(this.current_facekey) * color = str2q(settings['theme.faces',current_facekey,'color']) # <<<<<<<<<<<<<< * color = qtui.color_dialog(this, color) * if q2str(color): */ __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1625, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1625, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_kp_u_theme_faces); __Pyx_GIVEREF(__pyx_kp_u_theme_faces); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_kp_u_theme_faces); __Pyx_INCREF(__pyx_v_current_facekey); __Pyx_GIVEREF(__pyx_v_current_facekey); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_current_facekey); __Pyx_INCREF(__pyx_n_u_color); __Pyx_GIVEREF(__pyx_n_u_color); PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_n_u_color); __pyx_t_3 = PyObject_GetItem(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1625, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_color = __pyx_f_10_qt_qtwes2_str2q(__pyx_t_3); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "_qt_qtwes2.pyx":1626 * current_facekey = q2str(this.current_facekey) * color = str2q(settings['theme.faces',current_facekey,'color']) * color = qtui.color_dialog(this, color) # <<<<<<<<<<<<<< * if q2str(color): * qtui.set_button_color(color) */ __pyx_v_color = __pyx_f_6_qtui__color_dialog(this, __pyx_v_color); /* "_qt_qtwes2.pyx":1627 * color = str2q(settings['theme.faces',current_facekey,'color']) * color = qtui.color_dialog(this, color) * if q2str(color): # <<<<<<<<<<<<<< * qtui.set_button_color(color) * settings['theme.faces',current_facekey,'color'] = q2str(color) */ __pyx_t_3 = __pyx_f_10_qt_qtwes2_q2str(__pyx_v_color); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1627, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 1627, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (__pyx_t_4) { /* "_qt_qtwes2.pyx":1628 * color = qtui.color_dialog(this, color) * if q2str(color): * qtui.set_button_color(color) # <<<<<<<<<<<<<< * settings['theme.faces',current_facekey,'color'] = q2str(color) * */ __pyx_f_6_qtui__set_button_color(__pyx_v_color); /* "_qt_qtwes2.pyx":1629 * if q2str(color): * qtui.set_button_color(color) * settings['theme.faces',current_facekey,'color'] = q2str(color) # <<<<<<<<<<<<<< * * ##pxm-FUNC PH with gil */ __pyx_t_3 = __pyx_f_10_qt_qtwes2_q2str(__pyx_v_color); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1629, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1629, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1629, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_kp_u_theme_faces); __Pyx_GIVEREF(__pyx_kp_u_theme_faces); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_kp_u_theme_faces); __Pyx_INCREF(__pyx_v_current_facekey); __Pyx_GIVEREF(__pyx_v_current_facekey); PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_current_facekey); __Pyx_INCREF(__pyx_n_u_color); __Pyx_GIVEREF(__pyx_n_u_color); PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_n_u_color); if (unlikely(PyObject_SetItem(__pyx_t_2, __pyx_t_1, __pyx_t_3) < 0)) __PYX_ERR(0, 1629, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "_qt_qtwes2.pyx":1627 * color = str2q(settings['theme.faces',current_facekey,'color']) * color = qtui.color_dialog(this, color) * if q2str(color): # <<<<<<<<<<<<<< * qtui.set_button_color(color) * settings['theme.faces',current_facekey,'color'] = q2str(color) */ } /* "_qt_qtwes2.pyx":1622 * * ##pxm-FUNC PH with gil * void on_button_color_clicked() with gil: # <<<<<<<<<<<<<< * cdef QString color #px+ * current_facekey = q2str(this.current_facekey) */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_WriteUnraisable("PreferencesDialog.on_button_color_clicked", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_XDECREF(__pyx_v_current_facekey); __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwes2.pyx":1632 * * ##pxm-FUNC PH with gil * void on_button_color_reset_clicked() with gil: # <<<<<<<<<<<<<< * current_facekey = q2str(this.current_facekey) * del settings['theme.faces',current_facekey,'color'] */ void PreferencesDialog::on_button_color_reset_clicked(void) { PyObject *__pyx_v_current_facekey = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_button_color_reset_clicked", 0); /* "_qt_qtwes2.pyx":1633 * ##pxm-FUNC PH with gil * void on_button_color_reset_clicked() with gil: * current_facekey = q2str(this.current_facekey) # <<<<<<<<<<<<<< * del settings['theme.faces',current_facekey,'color'] * qtui.set_button_color(str2q(settings['theme.faces',current_facekey,'color'])) */ __pyx_t_1 = __pyx_f_10_qt_qtwes2_q2str(this->current_facekey); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1633, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_current_facekey = __pyx_t_1; __pyx_t_1 = 0; /* "_qt_qtwes2.pyx":1634 * void on_button_color_reset_clicked() with gil: * current_facekey = q2str(this.current_facekey) * del settings['theme.faces',current_facekey,'color'] # <<<<<<<<<<<<<< * qtui.set_button_color(str2q(settings['theme.faces',current_facekey,'color'])) * */ __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1634, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1634, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_kp_u_theme_faces); __Pyx_GIVEREF(__pyx_kp_u_theme_faces); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_kp_u_theme_faces); __Pyx_INCREF(__pyx_v_current_facekey); __Pyx_GIVEREF(__pyx_v_current_facekey); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_current_facekey); __Pyx_INCREF(__pyx_n_u_color); __Pyx_GIVEREF(__pyx_n_u_color); PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_n_u_color); if (unlikely(PyObject_DelItem(__pyx_t_1, __pyx_t_2) < 0)) __PYX_ERR(0, 1634, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwes2.pyx":1635 * current_facekey = q2str(this.current_facekey) * del settings['theme.faces',current_facekey,'color'] * qtui.set_button_color(str2q(settings['theme.faces',current_facekey,'color'])) # <<<<<<<<<<<<<< * * ##pxm-FUNC PH with gil */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1635, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1635, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_kp_u_theme_faces); __Pyx_GIVEREF(__pyx_kp_u_theme_faces); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_kp_u_theme_faces); __Pyx_INCREF(__pyx_v_current_facekey); __Pyx_GIVEREF(__pyx_v_current_facekey); PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_current_facekey); __Pyx_INCREF(__pyx_n_u_color); __Pyx_GIVEREF(__pyx_n_u_color); PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_n_u_color); __pyx_t_3 = PyObject_GetItem(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1635, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_f_6_qtui__set_button_color(__pyx_f_10_qt_qtwes2_str2q(__pyx_t_3)); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "_qt_qtwes2.pyx":1632 * * ##pxm-FUNC PH with gil * void on_button_color_reset_clicked() with gil: # <<<<<<<<<<<<<< * current_facekey = q2str(this.current_facekey) * del settings['theme.faces',current_facekey,'color'] */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_WriteUnraisable("PreferencesDialog.on_button_color_reset_clicked", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_XDECREF(__pyx_v_current_facekey); __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwes2.pyx":1638 * * ##pxm-FUNC PH with gil * void on_combobox_image_activated(int index) with gil: # <<<<<<<<<<<<<< * pydata.app.on_dialog_change_current_image(q2str(this.current_facekey), index) * */ void PreferencesDialog::on_combobox_image_activated(int __pyx_v_index) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; int __pyx_t_6; PyObject *__pyx_t_7 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_combobox_image_activated", 0); /* "_qt_qtwes2.pyx":1639 * ##pxm-FUNC PH with gil * void on_combobox_image_activated(int index) with gil: * pydata.app.on_dialog_change_current_image(q2str(this.current_facekey), index) # <<<<<<<<<<<<<< * * ##pxm-FUNC PH with gil */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1639, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_app); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1639, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_on_dialog_change_current_image); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1639, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __pyx_f_10_qt_qtwes2_q2str(this->current_facekey); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1639, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1639, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_3, __pyx_t_4}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1639, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_3, __pyx_t_4}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1639, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1639, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_t_4); __pyx_t_3 = 0; __pyx_t_4 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1639, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwes2.pyx":1638 * * ##pxm-FUNC PH with gil * void on_combobox_image_activated(int index) with gil: # <<<<<<<<<<<<<< * pydata.app.on_dialog_change_current_image(q2str(this.current_facekey), index) * */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_7); __Pyx_WriteUnraisable("PreferencesDialog.on_combobox_image_activated", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwes2.pyx":1642 * * ##pxm-FUNC PH with gil * void on_button_image_reset_clicked() with gil: # <<<<<<<<<<<<<< * pydata.app.on_dialog_reset_current_image(q2str(this.current_facekey)) * */ void PreferencesDialog::on_button_image_reset_clicked(void) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_button_image_reset_clicked", 0); /* "_qt_qtwes2.pyx":1643 * ##pxm-FUNC PH with gil * void on_button_image_reset_clicked() with gil: * pydata.app.on_dialog_reset_current_image(q2str(this.current_facekey)) # <<<<<<<<<<<<<< * * ##pxm-FUNC PH with gil */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1643, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_app); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1643, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_on_dialog_reset_current_image); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1643, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __pyx_f_10_qt_qtwes2_q2str(this->current_facekey); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1643, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } if (!__pyx_t_4) { __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1643, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_3}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1643, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_3}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1643, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif { __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1643, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL; __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_3); __pyx_t_3 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1643, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwes2.pyx":1642 * * ##pxm-FUNC PH with gil * void on_button_image_reset_clicked() with gil: # <<<<<<<<<<<<<< * pydata.app.on_dialog_reset_current_image(q2str(this.current_facekey)) * */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_WriteUnraisable("PreferencesDialog.on_button_image_reset_clicked", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwes2.pyx":1646 * * ##pxm-FUNC PH with gil * void on_radiobutton_tiled_toggled(cbool checked) with gil: # <<<<<<<<<<<<<< * if checked: * settings['theme.faces',q2str(this.current_facekey),'mode_nick'] = 'tiled' */ void PreferencesDialog::on_radiobutton_tiled_toggled(bool __pyx_v_checked) { __Pyx_RefNannyDeclarations int __pyx_t_1; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_radiobutton_tiled_toggled", 0); /* "_qt_qtwes2.pyx":1647 * ##pxm-FUNC PH with gil * void on_radiobutton_tiled_toggled(cbool checked) with gil: * if checked: # <<<<<<<<<<<<<< * settings['theme.faces',q2str(this.current_facekey),'mode_nick'] = 'tiled' * ##pxm-FUNC PH with gil */ __pyx_t_1 = (__pyx_v_checked != 0); if (__pyx_t_1) { /* "_qt_qtwes2.pyx":1648 * void on_radiobutton_tiled_toggled(cbool checked) with gil: * if checked: * settings['theme.faces',q2str(this.current_facekey),'mode_nick'] = 'tiled' # <<<<<<<<<<<<<< * ##pxm-FUNC PH with gil * void on_radiobutton_mosaic_toggled(cbool checked) with gil: */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1648, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __pyx_f_10_qt_qtwes2_q2str(this->current_facekey); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1648, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1648, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_INCREF(__pyx_kp_u_theme_faces); __Pyx_GIVEREF(__pyx_kp_u_theme_faces); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_kp_u_theme_faces); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_3); __Pyx_INCREF(__pyx_n_u_mode_nick); __Pyx_GIVEREF(__pyx_n_u_mode_nick); PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_n_u_mode_nick); __pyx_t_3 = 0; if (unlikely(PyObject_SetItem(__pyx_t_2, __pyx_t_4, __pyx_n_u_tiled) < 0)) __PYX_ERR(0, 1648, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwes2.pyx":1647 * ##pxm-FUNC PH with gil * void on_radiobutton_tiled_toggled(cbool checked) with gil: * if checked: # <<<<<<<<<<<<<< * settings['theme.faces',q2str(this.current_facekey),'mode_nick'] = 'tiled' * ##pxm-FUNC PH with gil */ } /* "_qt_qtwes2.pyx":1646 * * ##pxm-FUNC PH with gil * void on_radiobutton_tiled_toggled(cbool checked) with gil: # <<<<<<<<<<<<<< * if checked: * settings['theme.faces',q2str(this.current_facekey),'mode_nick'] = 'tiled' */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_WriteUnraisable("PreferencesDialog.on_radiobutton_tiled_toggled", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwes2.pyx":1650 * settings['theme.faces',q2str(this.current_facekey),'mode_nick'] = 'tiled' * ##pxm-FUNC PH with gil * void on_radiobutton_mosaic_toggled(cbool checked) with gil: # <<<<<<<<<<<<<< * if checked: * settings['theme.faces',q2str(this.current_facekey),'mode_nick'] = 'mosaic' */ void PreferencesDialog::on_radiobutton_mosaic_toggled(bool __pyx_v_checked) { __Pyx_RefNannyDeclarations int __pyx_t_1; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_radiobutton_mosaic_toggled", 0); /* "_qt_qtwes2.pyx":1651 * ##pxm-FUNC PH with gil * void on_radiobutton_mosaic_toggled(cbool checked) with gil: * if checked: # <<<<<<<<<<<<<< * settings['theme.faces',q2str(this.current_facekey),'mode_nick'] = 'mosaic' * */ __pyx_t_1 = (__pyx_v_checked != 0); if (__pyx_t_1) { /* "_qt_qtwes2.pyx":1652 * void on_radiobutton_mosaic_toggled(cbool checked) with gil: * if checked: * settings['theme.faces',q2str(this.current_facekey),'mode_nick'] = 'mosaic' # <<<<<<<<<<<<<< * * ##pxm-FUNC PH with gil */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1652, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __pyx_f_10_qt_qtwes2_q2str(this->current_facekey); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1652, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1652, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_INCREF(__pyx_kp_u_theme_faces); __Pyx_GIVEREF(__pyx_kp_u_theme_faces); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_kp_u_theme_faces); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_3); __Pyx_INCREF(__pyx_n_u_mode_nick); __Pyx_GIVEREF(__pyx_n_u_mode_nick); PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_n_u_mode_nick); __pyx_t_3 = 0; if (unlikely(PyObject_SetItem(__pyx_t_2, __pyx_t_4, __pyx_n_u_mosaic) < 0)) __PYX_ERR(0, 1652, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwes2.pyx":1651 * ##pxm-FUNC PH with gil * void on_radiobutton_mosaic_toggled(cbool checked) with gil: * if checked: # <<<<<<<<<<<<<< * settings['theme.faces',q2str(this.current_facekey),'mode_nick'] = 'mosaic' * */ } /* "_qt_qtwes2.pyx":1650 * settings['theme.faces',q2str(this.current_facekey),'mode_nick'] = 'tiled' * ##pxm-FUNC PH with gil * void on_radiobutton_mosaic_toggled(cbool checked) with gil: # <<<<<<<<<<<<<< * if checked: * settings['theme.faces',q2str(this.current_facekey),'mode_nick'] = 'mosaic' */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_WriteUnraisable("PreferencesDialog.on_radiobutton_mosaic_toggled", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwes2.pyx":1655 * * ##pxm-FUNC PH with gil * void on_button_background_color_clicked() with gil: # <<<<<<<<<<<<<< * cdef QString color #px+ * color = str2q(settings['theme.bgcolor']) */ void PreferencesDialog::on_button_background_color_clicked(void) { QString __pyx_v_color; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; int __pyx_t_3; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_button_background_color_clicked", 0); /* "_qt_qtwes2.pyx":1657 * void on_button_background_color_clicked() with gil: * cdef QString color #px+ * color = str2q(settings['theme.bgcolor']) # <<<<<<<<<<<<<< * color = qtui.color_dialog(this, color) * if q2str(color): */ __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1657, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyObject_GetItem(__pyx_t_1, __pyx_kp_u_theme_bgcolor); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1657, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_color = __pyx_f_10_qt_qtwes2_str2q(__pyx_t_2); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwes2.pyx":1658 * cdef QString color #px+ * color = str2q(settings['theme.bgcolor']) * color = qtui.color_dialog(this, color) # <<<<<<<<<<<<<< * if q2str(color): * qtui.set_button_background_color(color) */ __pyx_v_color = __pyx_f_6_qtui__color_dialog(this, __pyx_v_color); /* "_qt_qtwes2.pyx":1659 * color = str2q(settings['theme.bgcolor']) * color = qtui.color_dialog(this, color) * if q2str(color): # <<<<<<<<<<<<<< * qtui.set_button_background_color(color) * settings['theme.bgcolor'] = q2str(color) */ __pyx_t_2 = __pyx_f_10_qt_qtwes2_q2str(__pyx_v_color); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1659, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1659, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (__pyx_t_3) { /* "_qt_qtwes2.pyx":1660 * color = qtui.color_dialog(this, color) * if q2str(color): * qtui.set_button_background_color(color) # <<<<<<<<<<<<<< * settings['theme.bgcolor'] = q2str(color) * */ __pyx_f_6_qtui__set_button_background_color(__pyx_v_color); /* "_qt_qtwes2.pyx":1661 * if q2str(color): * qtui.set_button_background_color(color) * settings['theme.bgcolor'] = q2str(color) # <<<<<<<<<<<<<< * * ##pxm-FUNC PH with gil */ __pyx_t_2 = __pyx_f_10_qt_qtwes2_q2str(__pyx_v_color); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1661, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1661, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (unlikely(PyObject_SetItem(__pyx_t_1, __pyx_kp_u_theme_bgcolor, __pyx_t_2) < 0)) __PYX_ERR(0, 1661, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwes2.pyx":1659 * color = str2q(settings['theme.bgcolor']) * color = qtui.color_dialog(this, color) * if q2str(color): # <<<<<<<<<<<<<< * qtui.set_button_background_color(color) * settings['theme.bgcolor'] = q2str(color) */ } /* "_qt_qtwes2.pyx":1655 * * ##pxm-FUNC PH with gil * void on_button_background_color_clicked() with gil: # <<<<<<<<<<<<<< * cdef QString color #px+ * color = str2q(settings['theme.bgcolor']) */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_WriteUnraisable("PreferencesDialog.on_button_background_color_clicked", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwes2.pyx":1664 * * ##pxm-FUNC PH with gil * void on_button_background_color_reset_clicked() with gil: # <<<<<<<<<<<<<< * del settings['theme.bgcolor'] * qtui.set_button_background_color(str2q(settings['theme.bgcolor'])) */ void PreferencesDialog::on_button_background_color_reset_clicked(void) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_button_background_color_reset_clicked", 0); /* "_qt_qtwes2.pyx":1665 * ##pxm-FUNC PH with gil * void on_button_background_color_reset_clicked() with gil: * del settings['theme.bgcolor'] # <<<<<<<<<<<<<< * qtui.set_button_background_color(str2q(settings['theme.bgcolor'])) * ##pxm>CPPCLASS_END */ __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1665, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (unlikely(PyObject_DelItem(__pyx_t_1, __pyx_kp_u_theme_bgcolor) < 0)) __PYX_ERR(0, 1665, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwes2.pyx":1666 * void on_button_background_color_reset_clicked() with gil: * del settings['theme.bgcolor'] * qtui.set_button_background_color(str2q(settings['theme.bgcolor'])) # <<<<<<<<<<<<<< * ##pxm>CPPCLASS_END * */ __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1666, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyObject_GetItem(__pyx_t_1, __pyx_kp_u_theme_bgcolor); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1666, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_f_6_qtui__set_button_background_color(__pyx_f_10_qt_qtwes2_str2q(__pyx_t_2)); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwes2.pyx":1664 * * ##pxm-FUNC PH with gil * void on_button_background_color_reset_clicked() with gil: # <<<<<<<<<<<<<< * del settings['theme.bgcolor'] * qtui.set_button_background_color(str2q(settings['theme.bgcolor'])) */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_WriteUnraisable("PreferencesDialog.on_button_background_color_reset_clicked", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwes2.pyx":1669 * ##pxm>CPPCLASS_END * * def set_combobox_current_image(index_icon, imagefile, index): # <<<<<<<<<<<<<< * cdef QIcon icon #px/ * #icon = QIcon() */ /* Python wrapper */ static PyObject *__pyx_pw_10_qt_qtwes2_23set_combobox_current_image(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static PyMethodDef __pyx_mdef_10_qt_qtwes2_23set_combobox_current_image = {"set_combobox_current_image", (PyCFunction)__pyx_pw_10_qt_qtwes2_23set_combobox_current_image, METH_VARARGS|METH_KEYWORDS, 0}; static PyObject *__pyx_pw_10_qt_qtwes2_23set_combobox_current_image(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_index_icon = 0; PyObject *__pyx_v_imagefile = 0; PyObject *__pyx_v_index = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("set_combobox_current_image (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_index_icon,&__pyx_n_s_imagefile,&__pyx_n_s_index,0}; PyObject* values[3] = {0,0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_index_icon)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_imagefile)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("set_combobox_current_image", 1, 3, 3, 1); __PYX_ERR(0, 1669, __pyx_L3_error) } case 2: if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_index)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("set_combobox_current_image", 1, 3, 3, 2); __PYX_ERR(0, 1669, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_combobox_current_image") < 0)) __PYX_ERR(0, 1669, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); values[2] = PyTuple_GET_ITEM(__pyx_args, 2); } __pyx_v_index_icon = values[0]; __pyx_v_imagefile = values[1]; __pyx_v_index = values[2]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("set_combobox_current_image", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1669, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("_qt_qtwes2.set_combobox_current_image", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_10_qt_qtwes2_22set_combobox_current_image(__pyx_self, __pyx_v_index_icon, __pyx_v_imagefile, __pyx_v_index); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_10_qt_qtwes2_22set_combobox_current_image(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_index_icon, PyObject *__pyx_v_imagefile, PyObject *__pyx_v_index) { QIcon __pyx_v_icon; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; int __pyx_t_2; int __pyx_t_3; int __pyx_t_4; __Pyx_RefNannySetupContext("set_combobox_current_image", 0); /* "_qt_qtwes2.pyx":1672 * cdef QIcon icon #px/ * #icon = QIcon() * if imagefile is not None: # <<<<<<<<<<<<<< * icon.addFile(str2q(imagefile)) * qtui.set_combobox_image(index_icon, icon, index) */ __pyx_t_1 = (__pyx_v_imagefile != Py_None); __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { /* "_qt_qtwes2.pyx":1673 * #icon = QIcon() * if imagefile is not None: * icon.addFile(str2q(imagefile)) # <<<<<<<<<<<<<< * qtui.set_combobox_image(index_icon, icon, index) * */ __pyx_v_icon.addFile(__pyx_f_10_qt_qtwes2_str2q(__pyx_v_imagefile)); /* "_qt_qtwes2.pyx":1672 * cdef QIcon icon #px/ * #icon = QIcon() * if imagefile is not None: # <<<<<<<<<<<<<< * icon.addFile(str2q(imagefile)) * qtui.set_combobox_image(index_icon, icon, index) */ } /* "_qt_qtwes2.pyx":1674 * if imagefile is not None: * icon.addFile(str2q(imagefile)) * qtui.set_combobox_image(index_icon, icon, index) # <<<<<<<<<<<<<< * * def set_preferences_current_face_theme(color, imageindex_icon, imagefile, imageindex, imagemode): */ __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_v_index_icon); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1674, __pyx_L1_error) __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_v_index); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1674, __pyx_L1_error) __pyx_f_6_qtui__set_combobox_image(__pyx_t_3, __pyx_v_icon, __pyx_t_4); /* "_qt_qtwes2.pyx":1669 * ##pxm>CPPCLASS_END * * def set_combobox_current_image(index_icon, imagefile, index): # <<<<<<<<<<<<<< * cdef QIcon icon #px/ * #icon = QIcon() */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("_qt_qtwes2.set_combobox_current_image", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwes2.pyx":1676 * qtui.set_combobox_image(index_icon, icon, index) * * def set_preferences_current_face_theme(color, imageindex_icon, imagefile, imageindex, imagemode): # <<<<<<<<<<<<<< * qtui.set_button_color(str2q(color)) * set_combobox_current_image(imageindex_icon, imagefile, imageindex) */ /* Python wrapper */ static PyObject *__pyx_pw_10_qt_qtwes2_25set_preferences_current_face_theme(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static PyMethodDef __pyx_mdef_10_qt_qtwes2_25set_preferences_current_face_theme = {"set_preferences_current_face_theme", (PyCFunction)__pyx_pw_10_qt_qtwes2_25set_preferences_current_face_theme, METH_VARARGS|METH_KEYWORDS, 0}; static PyObject *__pyx_pw_10_qt_qtwes2_25set_preferences_current_face_theme(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_color = 0; PyObject *__pyx_v_imageindex_icon = 0; PyObject *__pyx_v_imagefile = 0; PyObject *__pyx_v_imageindex = 0; PyObject *__pyx_v_imagemode = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("set_preferences_current_face_theme (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_color,&__pyx_n_s_imageindex_icon,&__pyx_n_s_imagefile,&__pyx_n_s_imageindex,&__pyx_n_s_imagemode,0}; PyObject* values[5] = {0,0,0,0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_color)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_imageindex_icon)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("set_preferences_current_face_theme", 1, 5, 5, 1); __PYX_ERR(0, 1676, __pyx_L3_error) } case 2: if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_imagefile)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("set_preferences_current_face_theme", 1, 5, 5, 2); __PYX_ERR(0, 1676, __pyx_L3_error) } case 3: if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_imageindex)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("set_preferences_current_face_theme", 1, 5, 5, 3); __PYX_ERR(0, 1676, __pyx_L3_error) } case 4: if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_imagemode)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("set_preferences_current_face_theme", 1, 5, 5, 4); __PYX_ERR(0, 1676, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_preferences_current_face_theme") < 0)) __PYX_ERR(0, 1676, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 5) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); values[2] = PyTuple_GET_ITEM(__pyx_args, 2); values[3] = PyTuple_GET_ITEM(__pyx_args, 3); values[4] = PyTuple_GET_ITEM(__pyx_args, 4); } __pyx_v_color = values[0]; __pyx_v_imageindex_icon = values[1]; __pyx_v_imagefile = values[2]; __pyx_v_imageindex = values[3]; __pyx_v_imagemode = values[4]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("set_preferences_current_face_theme", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1676, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("_qt_qtwes2.set_preferences_current_face_theme", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_10_qt_qtwes2_24set_preferences_current_face_theme(__pyx_self, __pyx_v_color, __pyx_v_imageindex_icon, __pyx_v_imagefile, __pyx_v_imageindex, __pyx_v_imagemode); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_10_qt_qtwes2_24set_preferences_current_face_theme(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_color, PyObject *__pyx_v_imageindex_icon, PyObject *__pyx_v_imagefile, PyObject *__pyx_v_imageindex, PyObject *__pyx_v_imagemode) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; int __pyx_t_4; PyObject *__pyx_t_5 = NULL; __Pyx_RefNannySetupContext("set_preferences_current_face_theme", 0); /* "_qt_qtwes2.pyx":1677 * * def set_preferences_current_face_theme(color, imageindex_icon, imagefile, imageindex, imagemode): * qtui.set_button_color(str2q(color)) # <<<<<<<<<<<<<< * set_combobox_current_image(imageindex_icon, imagefile, imageindex) * qtui.set_imagemode(imagemode) */ __pyx_f_6_qtui__set_button_color(__pyx_f_10_qt_qtwes2_str2q(__pyx_v_color)); /* "_qt_qtwes2.pyx":1678 * def set_preferences_current_face_theme(color, imageindex_icon, imagefile, imageindex, imagemode): * qtui.set_button_color(str2q(color)) * set_combobox_current_image(imageindex_icon, imagefile, imageindex) # <<<<<<<<<<<<<< * qtui.set_imagemode(imagemode) * */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_set_combobox_current_image); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1678, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_3, __pyx_v_imageindex_icon, __pyx_v_imagefile, __pyx_v_imageindex}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 3+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1678, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_3, __pyx_v_imageindex_icon, __pyx_v_imagefile, __pyx_v_imageindex}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 3+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1678, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_5 = PyTuple_New(3+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1678, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_INCREF(__pyx_v_imageindex_icon); __Pyx_GIVEREF(__pyx_v_imageindex_icon); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_imageindex_icon); __Pyx_INCREF(__pyx_v_imagefile); __Pyx_GIVEREF(__pyx_v_imagefile); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_v_imagefile); __Pyx_INCREF(__pyx_v_imageindex); __Pyx_GIVEREF(__pyx_v_imageindex); PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_4, __pyx_v_imageindex); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1678, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwes2.pyx":1679 * qtui.set_button_color(str2q(color)) * set_combobox_current_image(imageindex_icon, imagefile, imageindex) * qtui.set_imagemode(imagemode) # <<<<<<<<<<<<<< * * def get_filedialog_imagefile(): */ __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_v_imagemode); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1679, __pyx_L1_error) __pyx_f_6_qtui__set_imagemode(__pyx_t_4); /* "_qt_qtwes2.pyx":1676 * qtui.set_combobox_image(index_icon, icon, index) * * def set_preferences_current_face_theme(color, imageindex_icon, imagefile, imageindex, imagemode): # <<<<<<<<<<<<<< * qtui.set_button_color(str2q(color)) * set_combobox_current_image(imageindex_icon, imagefile, imageindex) */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("_qt_qtwes2.set_preferences_current_face_theme", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwes2.pyx":1681 * qtui.set_imagemode(imagemode) * * def get_filedialog_imagefile(): # <<<<<<<<<<<<<< * filename = q2str(getOpenFileName(uidata.preferences, str2q(_("Open Image")), uidata.preferences.image_dirname)) * if filename: */ /* Python wrapper */ static PyObject *__pyx_pw_10_qt_qtwes2_27get_filedialog_imagefile(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/ static PyMethodDef __pyx_mdef_10_qt_qtwes2_27get_filedialog_imagefile = {"get_filedialog_imagefile", (PyCFunction)__pyx_pw_10_qt_qtwes2_27get_filedialog_imagefile, METH_NOARGS, 0}; static PyObject *__pyx_pw_10_qt_qtwes2_27get_filedialog_imagefile(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("get_filedialog_imagefile (wrapper)", 0); __pyx_r = __pyx_pf_10_qt_qtwes2_26get_filedialog_imagefile(__pyx_self); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_10_qt_qtwes2_26get_filedialog_imagefile(CYTHON_UNUSED PyObject *__pyx_self) { PyObject *__pyx_v_filename = NULL; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; int __pyx_t_3; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; __Pyx_RefNannySetupContext("get_filedialog_imagefile", 0); /* "_qt_qtwes2.pyx":1682 * * def get_filedialog_imagefile(): * filename = q2str(getOpenFileName(uidata.preferences, str2q(_("Open Image")), uidata.preferences.image_dirname)) # <<<<<<<<<<<<<< * if filename: * uidata.preferences.image_dirname = str2q(os.path.dirname(filename)) */ __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1682, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__10, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1682, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __pyx_f_10_qt_qtwes2_q2str(QFileDialog::getOpenFileName(__pyx_v_10_qt_qtwes2_uidata.preferences, __pyx_f_10_qt_qtwes2_str2q(__pyx_t_2), __pyx_v_10_qt_qtwes2_uidata.preferences->image_dirname)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1682, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_filename = __pyx_t_1; __pyx_t_1 = 0; /* "_qt_qtwes2.pyx":1683 * def get_filedialog_imagefile(): * filename = q2str(getOpenFileName(uidata.preferences, str2q(_("Open Image")), uidata.preferences.image_dirname)) * if filename: # <<<<<<<<<<<<<< * uidata.preferences.image_dirname = str2q(os.path.dirname(filename)) * return filename */ __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_filename); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1683, __pyx_L1_error) if (__pyx_t_3) { /* "_qt_qtwes2.pyx":1684 * filename = q2str(getOpenFileName(uidata.preferences, str2q(_("Open Image")), uidata.preferences.image_dirname)) * if filename: * uidata.preferences.image_dirname = str2q(os.path.dirname(filename)) # <<<<<<<<<<<<<< * return filename * ##pxm>IF_END */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_os); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1684, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_path); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1684, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_dirname); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1684, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } if (!__pyx_t_4) { __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_filename); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1684, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_filename}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1684, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_filename}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1684, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1684, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL; __Pyx_INCREF(__pyx_v_filename); __Pyx_GIVEREF(__pyx_v_filename); PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_filename); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1684, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_10_qt_qtwes2_uidata.preferences->image_dirname = __pyx_f_10_qt_qtwes2_str2q(__pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwes2.pyx":1683 * def get_filedialog_imagefile(): * filename = q2str(getOpenFileName(uidata.preferences, str2q(_("Open Image")), uidata.preferences.image_dirname)) * if filename: # <<<<<<<<<<<<<< * uidata.preferences.image_dirname = str2q(os.path.dirname(filename)) * return filename */ } /* "_qt_qtwes2.pyx":1685 * if filename: * uidata.preferences.image_dirname = str2q(os.path.dirname(filename)) * return filename # <<<<<<<<<<<<<< * ##pxm>IF_END * */ __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_filename); __pyx_r = __pyx_v_filename; goto __pyx_L0; /* "_qt_qtwes2.pyx":1681 * qtui.set_imagemode(imagemode) * * def get_filedialog_imagefile(): # <<<<<<<<<<<<<< * filename = q2str(getOpenFileName(uidata.preferences, str2q(_("Open Image")), uidata.preferences.image_dirname)) * if filename: */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("_qt_qtwes2.get_filedialog_imagefile", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_filename); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwes2.pyx":1688 * ##pxm>IF_END * * def preferences_dialog(shader_names, sample_buffers, facenames, stockicons): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * uidata.preferences = new PreferencesDialog(uidata.mainwindow) #px/ */ /* Python wrapper */ static PyObject *__pyx_pw_10_qt_qtwes2_29preferences_dialog(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static PyMethodDef __pyx_mdef_10_qt_qtwes2_29preferences_dialog = {"preferences_dialog", (PyCFunction)__pyx_pw_10_qt_qtwes2_29preferences_dialog, METH_VARARGS|METH_KEYWORDS, 0}; static PyObject *__pyx_pw_10_qt_qtwes2_29preferences_dialog(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_shader_names = 0; CYTHON_UNUSED PyObject *__pyx_v_sample_buffers = 0; PyObject *__pyx_v_facenames = 0; PyObject *__pyx_v_stockicons = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("preferences_dialog (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_shader_names,&__pyx_n_s_sample_buffers,&__pyx_n_s_facenames,&__pyx_n_s_stockicons,0}; PyObject* values[4] = {0,0,0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_shader_names)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_sample_buffers)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("preferences_dialog", 1, 4, 4, 1); __PYX_ERR(0, 1688, __pyx_L3_error) } case 2: if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_facenames)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("preferences_dialog", 1, 4, 4, 2); __PYX_ERR(0, 1688, __pyx_L3_error) } case 3: if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_stockicons)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("preferences_dialog", 1, 4, 4, 3); __PYX_ERR(0, 1688, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "preferences_dialog") < 0)) __PYX_ERR(0, 1688, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 4) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); values[2] = PyTuple_GET_ITEM(__pyx_args, 2); values[3] = PyTuple_GET_ITEM(__pyx_args, 3); } __pyx_v_shader_names = values[0]; __pyx_v_sample_buffers = values[1]; __pyx_v_facenames = values[2]; __pyx_v_stockicons = values[3]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("preferences_dialog", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1688, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("_qt_qtwes2.preferences_dialog", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_10_qt_qtwes2_28preferences_dialog(__pyx_self, __pyx_v_shader_names, __pyx_v_sample_buffers, __pyx_v_facenames, __pyx_v_stockicons); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_10_qt_qtwes2_28preferences_dialog(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_shader_names, CYTHON_UNUSED PyObject *__pyx_v_sample_buffers, PyObject *__pyx_v_facenames, PyObject *__pyx_v_stockicons) { PyObject *__pyx_v_nick = NULL; PyObject *__pyx_v_text = NULL; PyObject *__pyx_v_selection_nick = NULL; PyObject *__pyx_v_facename = NULL; PyObject *__pyx_v_facekey = NULL; PyObject *__pyx_v_filename = NULL; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; Py_ssize_t __pyx_t_3; PyObject *(*__pyx_t_4)(PyObject *); PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; int __pyx_t_7; PyObject *__pyx_t_8 = NULL; int __pyx_t_9; PyObject *(*__pyx_t_10)(PyObject *); __Pyx_RefNannySetupContext("preferences_dialog", 0); /* "_qt_qtwes2.pyx":1690 * def preferences_dialog(shader_names, sample_buffers, facenames, stockicons): * ##pxm>IF 'qtw' == 'qtw' * uidata.preferences = new PreferencesDialog(uidata.mainwindow) #px/ # <<<<<<<<<<<<<< * #uidata.preferences = PreferencesDialog(uidata.mainwindow) * uidata.preferences.init() */ __pyx_v_10_qt_qtwes2_uidata.preferences = new PreferencesDialog(__pyx_v_10_qt_qtwes2_uidata.mainwindow); /* "_qt_qtwes2.pyx":1692 * uidata.preferences = new PreferencesDialog(uidata.mainwindow) #px/ * #uidata.preferences = PreferencesDialog(uidata.mainwindow) * uidata.preferences.init() # <<<<<<<<<<<<<< * qtui.preferences_block_signals(True) * */ __pyx_v_10_qt_qtwes2_uidata.preferences->init(); /* "_qt_qtwes2.pyx":1693 * #uidata.preferences = PreferencesDialog(uidata.mainwindow) * uidata.preferences.init() * qtui.preferences_block_signals(True) # <<<<<<<<<<<<<< * * # graphic tab */ __pyx_f_6_qtui__preferences_block_signals(1); /* "_qt_qtwes2.pyx":1696 * * # graphic tab * for nick in settings['draw.shader_range']: # <<<<<<<<<<<<<< * qtui.combobox_add_shaderitem(str2q(shader_names.get(nick, nick)), str2q(nick)) * uidata.preferences.findChild(str2q('combobox_shader')).setProperty(b'currentIndex', tovariant(settings['draw.shader'])) */ __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1696, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyObject_GetItem(__pyx_t_1, __pyx_kp_u_draw_shader_range); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1696, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (likely(PyList_CheckExact(__pyx_t_2)) || PyTuple_CheckExact(__pyx_t_2)) { __pyx_t_1 = __pyx_t_2; __Pyx_INCREF(__pyx_t_1); __pyx_t_3 = 0; __pyx_t_4 = NULL; } else { __pyx_t_3 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1696, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1696, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; for (;;) { if (likely(!__pyx_t_4)) { if (likely(PyList_CheckExact(__pyx_t_1))) { if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_1)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_2); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 1696, __pyx_L1_error) #else __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1696, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); #endif } else { if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_1)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_2); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 1696, __pyx_L1_error) #else __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1696, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); #endif } } else { __pyx_t_2 = __pyx_t_4(__pyx_t_1); if (unlikely(!__pyx_t_2)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 1696, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_2); } __Pyx_XDECREF_SET(__pyx_v_nick, __pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwes2.pyx":1697 * # graphic tab * for nick in settings['draw.shader_range']: * qtui.combobox_add_shaderitem(str2q(shader_names.get(nick, nick)), str2q(nick)) # <<<<<<<<<<<<<< * uidata.preferences.findChild(str2q('combobox_shader')).setProperty(b'currentIndex', tovariant(settings['draw.shader'])) * for text in settings['draw.samples_range']: */ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_shader_names, __pyx_n_s_get); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1697, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = NULL; __pyx_t_7 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); __pyx_t_7 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_nick, __pyx_v_nick}; __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1697, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_2); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_nick, __pyx_v_nick}; __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1697, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_2); } else #endif { __pyx_t_8 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1697, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); if (__pyx_t_6) { __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = NULL; } __Pyx_INCREF(__pyx_v_nick); __Pyx_GIVEREF(__pyx_v_nick); PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_7, __pyx_v_nick); __Pyx_INCREF(__pyx_v_nick); __Pyx_GIVEREF(__pyx_v_nick); PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, __pyx_v_nick); __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_8, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1697, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_f_6_qtui__combobox_add_shaderitem(__pyx_f_10_qt_qtwes2_str2q(__pyx_t_2), __pyx_f_10_qt_qtwes2_str2q(__pyx_v_nick)); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwes2.pyx":1696 * * # graphic tab * for nick in settings['draw.shader_range']: # <<<<<<<<<<<<<< * qtui.combobox_add_shaderitem(str2q(shader_names.get(nick, nick)), str2q(nick)) * uidata.preferences.findChild(str2q('combobox_shader')).setProperty(b'currentIndex', tovariant(settings['draw.shader'])) */ } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwes2.pyx":1698 * for nick in settings['draw.shader_range']: * qtui.combobox_add_shaderitem(str2q(shader_names.get(nick, nick)), str2q(nick)) * uidata.preferences.findChild(str2q('combobox_shader')).setProperty(b'currentIndex', tovariant(settings['draw.shader'])) # <<<<<<<<<<<<<< * for text in settings['draw.samples_range']: * qtui.combobox_add_samplesitem(str2q(_(text)), str2q(text)) */ __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1698, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyObject_GetItem(__pyx_t_1, __pyx_kp_u_draw_shader); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1698, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_10_qt_qtwes2_uidata.preferences->findChild(__pyx_f_10_qt_qtwes2_str2q(__pyx_n_u_combobox_shader))->setProperty(((char const *)"currentIndex"), __pyx_f_10_qt_qtwes2_tovariant(__pyx_t_2)); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwes2.pyx":1699 * qtui.combobox_add_shaderitem(str2q(shader_names.get(nick, nick)), str2q(nick)) * uidata.preferences.findChild(str2q('combobox_shader')).setProperty(b'currentIndex', tovariant(settings['draw.shader'])) * for text in settings['draw.samples_range']: # <<<<<<<<<<<<<< * qtui.combobox_add_samplesitem(str2q(_(text)), str2q(text)) * uidata.preferences.findChild(str2q('combobox_samples')).setProperty(b'currentIndex', tovariant(settings['draw.samples'])) */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1699, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = PyObject_GetItem(__pyx_t_2, __pyx_kp_u_draw_samples_range); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1699, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) { __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0; __pyx_t_4 = NULL; } else { __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1699, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1699, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; for (;;) { if (likely(!__pyx_t_4)) { if (likely(PyList_CheckExact(__pyx_t_2))) { if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 1699, __pyx_L1_error) #else __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1699, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); #endif } else { if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_2)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 1699, __pyx_L1_error) #else __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1699, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); #endif } } else { __pyx_t_1 = __pyx_t_4(__pyx_t_2); if (unlikely(!__pyx_t_1)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 1699, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_1); } __Pyx_XDECREF_SET(__pyx_v_text, __pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwes2.pyx":1700 * uidata.preferences.findChild(str2q('combobox_shader')).setProperty(b'currentIndex', tovariant(settings['draw.shader'])) * for text in settings['draw.samples_range']: * qtui.combobox_add_samplesitem(str2q(_(text)), str2q(text)) # <<<<<<<<<<<<<< * uidata.preferences.findChild(str2q('combobox_samples')).setProperty(b'currentIndex', tovariant(settings['draw.samples'])) * uidata.preferences.findChild(str2q('checkbox_mirror_faces')).setProperty(b'checked', tovariant(settings['draw.mirror_faces'])) */ __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s__4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1700, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_8 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_8)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); } } if (!__pyx_t_8) { __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_text); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1700, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_v_text}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1700, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_v_text}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1700, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1700, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_8); __pyx_t_8 = NULL; __Pyx_INCREF(__pyx_v_text); __Pyx_GIVEREF(__pyx_v_text); PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_v_text); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1700, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_f_6_qtui__combobox_add_samplesitem(__pyx_f_10_qt_qtwes2_str2q(__pyx_t_1), __pyx_f_10_qt_qtwes2_str2q(__pyx_v_text)); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwes2.pyx":1699 * qtui.combobox_add_shaderitem(str2q(shader_names.get(nick, nick)), str2q(nick)) * uidata.preferences.findChild(str2q('combobox_shader')).setProperty(b'currentIndex', tovariant(settings['draw.shader'])) * for text in settings['draw.samples_range']: # <<<<<<<<<<<<<< * qtui.combobox_add_samplesitem(str2q(_(text)), str2q(text)) * uidata.preferences.findChild(str2q('combobox_samples')).setProperty(b'currentIndex', tovariant(settings['draw.samples'])) */ } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwes2.pyx":1701 * for text in settings['draw.samples_range']: * qtui.combobox_add_samplesitem(str2q(_(text)), str2q(text)) * uidata.preferences.findChild(str2q('combobox_samples')).setProperty(b'currentIndex', tovariant(settings['draw.samples'])) # <<<<<<<<<<<<<< * uidata.preferences.findChild(str2q('checkbox_mirror_faces')).setProperty(b'checked', tovariant(settings['draw.mirror_faces'])) * uidata.preferences.findChild(str2q('spinbox_mirror_faces')).setProperty(b'value', tovariant(settings['draw.mirror_distance'])) */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1701, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = PyObject_GetItem(__pyx_t_2, __pyx_kp_u_draw_samples); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1701, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_10_qt_qtwes2_uidata.preferences->findChild(__pyx_f_10_qt_qtwes2_str2q(__pyx_n_u_combobox_samples))->setProperty(((char const *)"currentIndex"), __pyx_f_10_qt_qtwes2_tovariant(__pyx_t_1)); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwes2.pyx":1702 * qtui.combobox_add_samplesitem(str2q(_(text)), str2q(text)) * uidata.preferences.findChild(str2q('combobox_samples')).setProperty(b'currentIndex', tovariant(settings['draw.samples'])) * uidata.preferences.findChild(str2q('checkbox_mirror_faces')).setProperty(b'checked', tovariant(settings['draw.mirror_faces'])) # <<<<<<<<<<<<<< * uidata.preferences.findChild(str2q('spinbox_mirror_faces')).setProperty(b'value', tovariant(settings['draw.mirror_distance'])) * */ __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1702, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyObject_GetItem(__pyx_t_1, __pyx_kp_u_draw_mirror_faces); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1702, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_10_qt_qtwes2_uidata.preferences->findChild(__pyx_f_10_qt_qtwes2_str2q(__pyx_n_u_checkbox_mirror_faces))->setProperty(((char const *)"checked"), __pyx_f_10_qt_qtwes2_tovariant(__pyx_t_2)); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwes2.pyx":1703 * uidata.preferences.findChild(str2q('combobox_samples')).setProperty(b'currentIndex', tovariant(settings['draw.samples'])) * uidata.preferences.findChild(str2q('checkbox_mirror_faces')).setProperty(b'checked', tovariant(settings['draw.mirror_faces'])) * uidata.preferences.findChild(str2q('spinbox_mirror_faces')).setProperty(b'value', tovariant(settings['draw.mirror_distance'])) # <<<<<<<<<<<<<< * * # mouse tab */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1703, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = PyObject_GetItem(__pyx_t_2, __pyx_kp_u_draw_mirror_distance); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1703, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_10_qt_qtwes2_uidata.preferences->findChild(__pyx_f_10_qt_qtwes2_str2q(__pyx_n_u_spinbox_mirror_faces))->setProperty(((char const *)"value"), __pyx_f_10_qt_qtwes2_tovariant(__pyx_t_1)); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwes2.pyx":1706 * * # mouse tab * selection_nick = settings['draw.selection_nick'] # <<<<<<<<<<<<<< * if selection_nick == 'quadrant': * uidata.preferences.findChild(str2q('button_mousemode_quad')).setProperty(b'checked', tovariant(True)) */ __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1706, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyObject_GetItem(__pyx_t_1, __pyx_kp_u_draw_selection_nick); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1706, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_selection_nick = __pyx_t_2; __pyx_t_2 = 0; /* "_qt_qtwes2.pyx":1707 * # mouse tab * selection_nick = settings['draw.selection_nick'] * if selection_nick == 'quadrant': # <<<<<<<<<<<<<< * uidata.preferences.findChild(str2q('button_mousemode_quad')).setProperty(b'checked', tovariant(True)) * elif selection_nick == 'simple': */ __pyx_t_9 = (__Pyx_PyUnicode_Equals(__pyx_v_selection_nick, __pyx_n_u_quadrant, Py_EQ)); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 1707, __pyx_L1_error) if (__pyx_t_9) { /* "_qt_qtwes2.pyx":1708 * selection_nick = settings['draw.selection_nick'] * if selection_nick == 'quadrant': * uidata.preferences.findChild(str2q('button_mousemode_quad')).setProperty(b'checked', tovariant(True)) # <<<<<<<<<<<<<< * elif selection_nick == 'simple': * uidata.preferences.findChild(str2q('button_mousemode_ext')).setProperty(b'checked', tovariant(True)) */ __pyx_v_10_qt_qtwes2_uidata.preferences->findChild(__pyx_f_10_qt_qtwes2_str2q(__pyx_n_u_button_mousemode_quad))->setProperty(((char const *)"checked"), __pyx_f_10_qt_qtwes2_tovariant(Py_True)); /* "_qt_qtwes2.pyx":1707 * # mouse tab * selection_nick = settings['draw.selection_nick'] * if selection_nick == 'quadrant': # <<<<<<<<<<<<<< * uidata.preferences.findChild(str2q('button_mousemode_quad')).setProperty(b'checked', tovariant(True)) * elif selection_nick == 'simple': */ goto __pyx_L7; } /* "_qt_qtwes2.pyx":1709 * if selection_nick == 'quadrant': * uidata.preferences.findChild(str2q('button_mousemode_quad')).setProperty(b'checked', tovariant(True)) * elif selection_nick == 'simple': # <<<<<<<<<<<<<< * uidata.preferences.findChild(str2q('button_mousemode_ext')).setProperty(b'checked', tovariant(True)) * elif selection_nick == 'gesture': */ __pyx_t_9 = (__Pyx_PyUnicode_Equals(__pyx_v_selection_nick, __pyx_n_u_simple, Py_EQ)); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 1709, __pyx_L1_error) if (__pyx_t_9) { /* "_qt_qtwes2.pyx":1710 * uidata.preferences.findChild(str2q('button_mousemode_quad')).setProperty(b'checked', tovariant(True)) * elif selection_nick == 'simple': * uidata.preferences.findChild(str2q('button_mousemode_ext')).setProperty(b'checked', tovariant(True)) # <<<<<<<<<<<<<< * elif selection_nick == 'gesture': * uidata.preferences.findChild(str2q('button_mousemode_gesture')).setProperty(b'checked', tovariant(True)) */ __pyx_v_10_qt_qtwes2_uidata.preferences->findChild(__pyx_f_10_qt_qtwes2_str2q(__pyx_n_u_button_mousemode_ext))->setProperty(((char const *)"checked"), __pyx_f_10_qt_qtwes2_tovariant(Py_True)); /* "_qt_qtwes2.pyx":1709 * if selection_nick == 'quadrant': * uidata.preferences.findChild(str2q('button_mousemode_quad')).setProperty(b'checked', tovariant(True)) * elif selection_nick == 'simple': # <<<<<<<<<<<<<< * uidata.preferences.findChild(str2q('button_mousemode_ext')).setProperty(b'checked', tovariant(True)) * elif selection_nick == 'gesture': */ goto __pyx_L7; } /* "_qt_qtwes2.pyx":1711 * elif selection_nick == 'simple': * uidata.preferences.findChild(str2q('button_mousemode_ext')).setProperty(b'checked', tovariant(True)) * elif selection_nick == 'gesture': # <<<<<<<<<<<<<< * uidata.preferences.findChild(str2q('button_mousemode_gesture')).setProperty(b'checked', tovariant(True)) * */ __pyx_t_9 = (__Pyx_PyUnicode_Equals(__pyx_v_selection_nick, __pyx_n_u_gesture, Py_EQ)); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 1711, __pyx_L1_error) if (__pyx_t_9) { /* "_qt_qtwes2.pyx":1712 * uidata.preferences.findChild(str2q('button_mousemode_ext')).setProperty(b'checked', tovariant(True)) * elif selection_nick == 'gesture': * uidata.preferences.findChild(str2q('button_mousemode_gesture')).setProperty(b'checked', tovariant(True)) # <<<<<<<<<<<<<< * * # keys tab */ __pyx_v_10_qt_qtwes2_uidata.preferences->findChild(__pyx_f_10_qt_qtwes2_str2q(__pyx_n_u_button_mousemode_gesture))->setProperty(((char const *)"checked"), __pyx_f_10_qt_qtwes2_tovariant(Py_True)); /* "_qt_qtwes2.pyx":1711 * elif selection_nick == 'simple': * uidata.preferences.findChild(str2q('button_mousemode_ext')).setProperty(b'checked', tovariant(True)) * elif selection_nick == 'gesture': # <<<<<<<<<<<<<< * uidata.preferences.findChild(str2q('button_mousemode_gesture')).setProperty(b'checked', tovariant(True)) * */ } __pyx_L7:; /* "_qt_qtwes2.pyx":1715 * * # keys tab * uidata.preferences.fill_move_key_list() # <<<<<<<<<<<<<< * * # theme tab */ __pyx_v_10_qt_qtwes2_uidata.preferences->fill_move_key_list(); /* "_qt_qtwes2.pyx":1718 * * # theme tab * for facename, facekey in facenames: # <<<<<<<<<<<<<< * qtui.add_liststore_faces_row(str2q(facename), str2q(facekey)) * qtui.add_combobox_image_item(QIcon(), str2q(_('plain')), str2q('')) */ if (likely(PyList_CheckExact(__pyx_v_facenames)) || PyTuple_CheckExact(__pyx_v_facenames)) { __pyx_t_2 = __pyx_v_facenames; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0; __pyx_t_4 = NULL; } else { __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_facenames); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1718, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1718, __pyx_L1_error) } for (;;) { if (likely(!__pyx_t_4)) { if (likely(PyList_CheckExact(__pyx_t_2))) { if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 1718, __pyx_L1_error) #else __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1718, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); #endif } else { if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_2)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 1718, __pyx_L1_error) #else __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1718, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); #endif } } else { __pyx_t_1 = __pyx_t_4(__pyx_t_2); if (unlikely(!__pyx_t_1)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 1718, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_1); } if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; #if !CYTHON_COMPILING_IN_PYPY Py_ssize_t size = Py_SIZE(sequence); #else Py_ssize_t size = PySequence_Size(sequence); #endif if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 1718, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_5 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_5 = PyList_GET_ITEM(sequence, 0); __pyx_t_6 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(__pyx_t_6); #else __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1718, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1718, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; __pyx_t_8 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1718, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_10 = Py_TYPE(__pyx_t_8)->tp_iternext; index = 0; __pyx_t_5 = __pyx_t_10(__pyx_t_8); if (unlikely(!__pyx_t_5)) goto __pyx_L10_unpacking_failed; __Pyx_GOTREF(__pyx_t_5); index = 1; __pyx_t_6 = __pyx_t_10(__pyx_t_8); if (unlikely(!__pyx_t_6)) goto __pyx_L10_unpacking_failed; __Pyx_GOTREF(__pyx_t_6); if (__Pyx_IternextUnpackEndCheck(__pyx_t_10(__pyx_t_8), 2) < 0) __PYX_ERR(0, 1718, __pyx_L1_error) __pyx_t_10 = NULL; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; goto __pyx_L11_unpacking_done; __pyx_L10_unpacking_failed:; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_10 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 1718, __pyx_L1_error) __pyx_L11_unpacking_done:; } __Pyx_XDECREF_SET(__pyx_v_facename, __pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF_SET(__pyx_v_facekey, __pyx_t_6); __pyx_t_6 = 0; /* "_qt_qtwes2.pyx":1719 * # theme tab * for facename, facekey in facenames: * qtui.add_liststore_faces_row(str2q(facename), str2q(facekey)) # <<<<<<<<<<<<<< * qtui.add_combobox_image_item(QIcon(), str2q(_('plain')), str2q('')) * for filename in stockicons: */ __pyx_f_6_qtui__add_liststore_faces_row(__pyx_f_10_qt_qtwes2_str2q(__pyx_v_facename), __pyx_f_10_qt_qtwes2_str2q(__pyx_v_facekey)); /* "_qt_qtwes2.pyx":1718 * * # theme tab * for facename, facekey in facenames: # <<<<<<<<<<<<<< * qtui.add_liststore_faces_row(str2q(facename), str2q(facekey)) * qtui.add_combobox_image_item(QIcon(), str2q(_('plain')), str2q('')) */ } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwes2.pyx":1720 * for facename, facekey in facenames: * qtui.add_liststore_faces_row(str2q(facename), str2q(facekey)) * qtui.add_combobox_image_item(QIcon(), str2q(_('plain')), str2q('')) # <<<<<<<<<<<<<< * for filename in stockicons: * qtui.add_combobox_image_item(get_icon(filename), str2q(''), str2q(filename)) */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s__4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1720, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__11, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1720, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_f_6_qtui__add_combobox_image_item(QIcon(), __pyx_f_10_qt_qtwes2_str2q(__pyx_t_1), __pyx_f_10_qt_qtwes2_str2q(__pyx_kp_u__6)); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwes2.pyx":1721 * qtui.add_liststore_faces_row(str2q(facename), str2q(facekey)) * qtui.add_combobox_image_item(QIcon(), str2q(_('plain')), str2q('')) * for filename in stockicons: # <<<<<<<<<<<<<< * qtui.add_combobox_image_item(get_icon(filename), str2q(''), str2q(filename)) * qtui.add_combobox_image_item(QIcon(), str2q(_('select ')), str2q('/')) */ if (likely(PyList_CheckExact(__pyx_v_stockicons)) || PyTuple_CheckExact(__pyx_v_stockicons)) { __pyx_t_1 = __pyx_v_stockicons; __Pyx_INCREF(__pyx_t_1); __pyx_t_3 = 0; __pyx_t_4 = NULL; } else { __pyx_t_3 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_stockicons); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1721, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1721, __pyx_L1_error) } for (;;) { if (likely(!__pyx_t_4)) { if (likely(PyList_CheckExact(__pyx_t_1))) { if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_1)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_2); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 1721, __pyx_L1_error) #else __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1721, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); #endif } else { if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_1)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_2); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 1721, __pyx_L1_error) #else __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1721, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); #endif } } else { __pyx_t_2 = __pyx_t_4(__pyx_t_1); if (unlikely(!__pyx_t_2)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 1721, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_2); } __Pyx_XDECREF_SET(__pyx_v_filename, __pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwes2.pyx":1722 * qtui.add_combobox_image_item(QIcon(), str2q(_('plain')), str2q('')) * for filename in stockicons: * qtui.add_combobox_image_item(get_icon(filename), str2q(''), str2q(filename)) # <<<<<<<<<<<<<< * qtui.add_combobox_image_item(QIcon(), str2q(_('select ')), str2q('/')) * uidata.preferences.image_dirname = str2q(get_pictures_folder()) */ __pyx_f_6_qtui__add_combobox_image_item(__pyx_f_10_qt_qtwes2_get_icon(__pyx_v_filename), __pyx_f_10_qt_qtwes2_str2q(__pyx_kp_u__6), __pyx_f_10_qt_qtwes2_str2q(__pyx_v_filename)); /* "_qt_qtwes2.pyx":1721 * qtui.add_liststore_faces_row(str2q(facename), str2q(facekey)) * qtui.add_combobox_image_item(QIcon(), str2q(_('plain')), str2q('')) * for filename in stockicons: # <<<<<<<<<<<<<< * qtui.add_combobox_image_item(get_icon(filename), str2q(''), str2q(filename)) * qtui.add_combobox_image_item(QIcon(), str2q(_('select ')), str2q('/')) */ } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwes2.pyx":1723 * for filename in stockicons: * qtui.add_combobox_image_item(get_icon(filename), str2q(''), str2q(filename)) * qtui.add_combobox_image_item(QIcon(), str2q(_('select ')), str2q('/')) # <<<<<<<<<<<<<< * uidata.preferences.image_dirname = str2q(get_pictures_folder()) * qtui.finalize_liststore_faces(uidata.preferences) */ __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1723, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__12, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1723, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_f_6_qtui__add_combobox_image_item(QIcon(), __pyx_f_10_qt_qtwes2_str2q(__pyx_t_2), __pyx_f_10_qt_qtwes2_str2q(__pyx_kp_u__13)); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwes2.pyx":1724 * qtui.add_combobox_image_item(get_icon(filename), str2q(''), str2q(filename)) * qtui.add_combobox_image_item(QIcon(), str2q(_('select ')), str2q('/')) * uidata.preferences.image_dirname = str2q(get_pictures_folder()) # <<<<<<<<<<<<<< * qtui.finalize_liststore_faces(uidata.preferences) * */ __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_get_pictures_folder); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1724, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_6 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); } } if (__pyx_t_6) { __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1724, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else { __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1724, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_10_qt_qtwes2_uidata.preferences->image_dirname = __pyx_f_10_qt_qtwes2_str2q(__pyx_t_2); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwes2.pyx":1725 * qtui.add_combobox_image_item(QIcon(), str2q(_('select ')), str2q('/')) * uidata.preferences.image_dirname = str2q(get_pictures_folder()) * qtui.finalize_liststore_faces(uidata.preferences) # <<<<<<<<<<<<<< * * qtui.set_button_background_color(str2q(settings['theme.bgcolor'])) */ __pyx_f_6_qtui__finalize_liststore_faces(__pyx_v_10_qt_qtwes2_uidata.preferences); /* "_qt_qtwes2.pyx":1727 * qtui.finalize_liststore_faces(uidata.preferences) * * qtui.set_button_background_color(str2q(settings['theme.bgcolor'])) # <<<<<<<<<<<<<< * * qtui.preferences_block_signals(False) */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1727, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = PyObject_GetItem(__pyx_t_2, __pyx_kp_u_theme_bgcolor); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1727, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_f_6_qtui__set_button_background_color(__pyx_f_10_qt_qtwes2_str2q(__pyx_t_1)); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwes2.pyx":1729 * qtui.set_button_background_color(str2q(settings['theme.bgcolor'])) * * qtui.preferences_block_signals(False) # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtq' * #~ ctx_set_stdmodel(b'shadermodel', ([shader_names.get(nick, nick), nick] for nick in settings['draw.shader_range'])) */ __pyx_f_6_qtui__preferences_block_signals(0); /* "_qt_qtwes2.pyx":1688 * ##pxm>IF_END * * def preferences_dialog(shader_names, sample_buffers, facenames, stockicons): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * uidata.preferences = new PreferencesDialog(uidata.mainwindow) #px/ */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_8); __Pyx_AddTraceback("_qt_qtwes2.preferences_dialog", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_nick); __Pyx_XDECREF(__pyx_v_text); __Pyx_XDECREF(__pyx_v_selection_nick); __Pyx_XDECREF(__pyx_v_facename); __Pyx_XDECREF(__pyx_v_facekey); __Pyx_XDECREF(__pyx_v_filename); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwes2.pyx":1743 * #~ ##pxm>IF_END * * def show_preferences(): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * uidata.preferences.show() */ /* Python wrapper */ static PyObject *__pyx_pw_10_qt_qtwes2_31show_preferences(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/ static PyMethodDef __pyx_mdef_10_qt_qtwes2_31show_preferences = {"show_preferences", (PyCFunction)__pyx_pw_10_qt_qtwes2_31show_preferences, METH_NOARGS, 0}; static PyObject *__pyx_pw_10_qt_qtwes2_31show_preferences(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("show_preferences (wrapper)", 0); __pyx_r = __pyx_pf_10_qt_qtwes2_30show_preferences(__pyx_self); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_10_qt_qtwes2_30show_preferences(CYTHON_UNUSED PyObject *__pyx_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("show_preferences", 0); /* "_qt_qtwes2.pyx":1745 * def show_preferences(): * ##pxm>IF 'qtw' == 'qtw' * uidata.preferences.show() # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtq' * #~ ctx_set(b'preferences_visible', True) */ __pyx_v_10_qt_qtwes2_uidata.preferences->show(); /* "_qt_qtwes2.pyx":1743 * #~ ##pxm>IF_END * * def show_preferences(): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * uidata.preferences.show() */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwes2.pyx":1758 * ##pxh> : QDialog(parent) {} * ##pxm-FUNC PHD * void init(const QString &helptext): # <<<<<<<<<<<<<< * qtui.setupUi_help(this, helptext) * ##pxm>CPPCLASS_END */ void HelpDialog::init(QString const &__pyx_v_helptext) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("init", 0); /* "_qt_qtwes2.pyx":1759 * ##pxm-FUNC PHD * void init(const QString &helptext): * qtui.setupUi_help(this, helptext) # <<<<<<<<<<<<<< * ##pxm>CPPCLASS_END * */ __pyx_f_6_qtui__setupUi_help(this, __pyx_v_helptext); /* "_qt_qtwes2.pyx":1758 * ##pxh> : QDialog(parent) {} * ##pxm-FUNC PHD * void init(const QString &helptext): # <<<<<<<<<<<<<< * qtui.setupUi_help(this, helptext) * ##pxm>CPPCLASS_END */ /* function exit code */ __Pyx_RefNannyFinishContext(); } /* "_qt_qtwes2.pyx":1763 * * ##pxm-FUNC P with gil * cdef void help_dialog() with gil: # <<<<<<<<<<<<<< * uidata.help = new HelpDialog(uidata.mainwindow) #px/ * #uidata.help = HelpDialog(uidata.mainwindow) */ static void __pyx_f_10_qt_qtwes2_help_dialog(void) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("help_dialog", 0); /* "_qt_qtwes2.pyx":1764 * ##pxm-FUNC P with gil * cdef void help_dialog() with gil: * uidata.help = new HelpDialog(uidata.mainwindow) #px/ # <<<<<<<<<<<<<< * #uidata.help = HelpDialog(uidata.mainwindow) * uidata.help.init(str2q(pydata.app.on_dialog_text('help_text'))) */ __pyx_v_10_qt_qtwes2_uidata.help = new HelpDialog(__pyx_v_10_qt_qtwes2_uidata.mainwindow); /* "_qt_qtwes2.pyx":1766 * uidata.help = new HelpDialog(uidata.mainwindow) #px/ * #uidata.help = HelpDialog(uidata.mainwindow) * uidata.help.init(str2q(pydata.app.on_dialog_text('help_text'))) # <<<<<<<<<<<<<< * * ##pxm-FUNC P nogil */ __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1766, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_app); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1766, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_on_dialog_text); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1766, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__14, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1766, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_10_qt_qtwes2_uidata.help->init(__pyx_f_10_qt_qtwes2_str2q(__pyx_t_2)); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwes2.pyx":1763 * * ##pxm-FUNC P with gil * cdef void help_dialog() with gil: # <<<<<<<<<<<<<< * uidata.help = new HelpDialog(uidata.mainwindow) #px/ * #uidata.help = HelpDialog(uidata.mainwindow) */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_WriteUnraisable("_qt_qtwes2.help_dialog", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwes2.pyx":1769 * * ##pxm-FUNC P nogil * cdef void help_dialog_show() nogil: # <<<<<<<<<<<<<< * uidata.help.show() * */ static void __pyx_f_10_qt_qtwes2_help_dialog_show(void) { /* "_qt_qtwes2.pyx":1770 * ##pxm-FUNC P nogil * cdef void help_dialog_show() nogil: * uidata.help.show() # <<<<<<<<<<<<<< * * */ __pyx_v_10_qt_qtwes2_uidata.help->show(); /* "_qt_qtwes2.pyx":1769 * * ##pxm-FUNC P nogil * cdef void help_dialog_show() nogil: # <<<<<<<<<<<<<< * uidata.help.show() * */ /* function exit code */ } /* "_qt_qtwes2.pyx":1779 * ##pxh> : QDialog(parent) {} * ##pxm-FUNC PHD * void init(): # <<<<<<<<<<<<<< * qtui.setupUi_about(this) * */ void AboutDialog::init(void) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("init", 0); /* "_qt_qtwes2.pyx":1780 * ##pxm-FUNC PHD * void init(): * qtui.setupUi_about(this) # <<<<<<<<<<<<<< * * ##pxm-FUNC PH nogil */ __pyx_f_6_qtui__setupUi_about(this); /* "_qt_qtwes2.pyx":1779 * ##pxh> : QDialog(parent) {} * ##pxm-FUNC PHD * void init(): # <<<<<<<<<<<<<< * qtui.setupUi_about(this) * */ /* function exit code */ __Pyx_RefNannyFinishContext(); } /* "_qt_qtwes2.pyx":1783 * * ##pxm-FUNC PH nogil * void showEvent(QShowEvent *unused_event) nogil: # <<<<<<<<<<<<<< * qtui.update_animation(True) * */ void AboutDialog::showEvent(CYTHON_UNUSED QShowEvent *__pyx_v_unused_event) { /* "_qt_qtwes2.pyx":1784 * ##pxm-FUNC PH nogil * void showEvent(QShowEvent *unused_event) nogil: * qtui.update_animation(True) # <<<<<<<<<<<<<< * * ##pxm-FUNC PH nogil */ __pyx_f_6_qtui__update_animation(1); /* "_qt_qtwes2.pyx":1783 * * ##pxm-FUNC PH nogil * void showEvent(QShowEvent *unused_event) nogil: # <<<<<<<<<<<<<< * qtui.update_animation(True) * */ /* function exit code */ } /* "_qt_qtwes2.pyx":1787 * * ##pxm-FUNC PH nogil * void resizeEvent(QResizeEvent *unused_event) nogil: # <<<<<<<<<<<<<< * qtui.update_animation(False) * */ void AboutDialog::resizeEvent(CYTHON_UNUSED QResizeEvent *__pyx_v_unused_event) { /* "_qt_qtwes2.pyx":1788 * ##pxm-FUNC PH nogil * void resizeEvent(QResizeEvent *unused_event) nogil: * qtui.update_animation(False) # <<<<<<<<<<<<<< * * ##pxm-FUNC PH nogil */ __pyx_f_6_qtui__update_animation(0); /* "_qt_qtwes2.pyx":1787 * * ##pxm-FUNC PH nogil * void resizeEvent(QResizeEvent *unused_event) nogil: # <<<<<<<<<<<<<< * qtui.update_animation(False) * */ /* function exit code */ } /* "_qt_qtwes2.pyx":1791 * * ##pxm-FUNC PH nogil * cbool eventFilter(QObject *unused_watched, QEvent *event) nogil: # <<<<<<<<<<<<<< * qtui.event_filter_stop_animation(event) * return False */ bool AboutDialog::eventFilter(CYTHON_UNUSED QObject *__pyx_v_unused_watched, QEvent *__pyx_v_event) { bool __pyx_r; /* "_qt_qtwes2.pyx":1792 * ##pxm-FUNC PH nogil * cbool eventFilter(QObject *unused_watched, QEvent *event) nogil: * qtui.event_filter_stop_animation(event) # <<<<<<<<<<<<<< * return False * ##pxh> */ __pyx_f_6_qtui__event_filter_stop_animation(__pyx_v_event); /* "_qt_qtwes2.pyx":1793 * cbool eventFilter(QObject *unused_watched, QEvent *event) nogil: * qtui.event_filter_stop_animation(event) * return False # <<<<<<<<<<<<<< * ##pxh> * ##pxm-FUNC HD nogil */ __pyx_r = 0; goto __pyx_L0; /* "_qt_qtwes2.pyx":1791 * * ##pxm-FUNC PH nogil * cbool eventFilter(QObject *unused_watched, QEvent *event) nogil: # <<<<<<<<<<<<<< * qtui.event_filter_stop_animation(event) * return False */ /* function exit code */ __pyx_L0:; return __pyx_r; } /* "_qt_qtwes2.pyx":1800 * * ##pxm-FUNC PH nogil * void on_tab_widget_currentChanged(int index) nogil: # <<<<<<<<<<<<<< * qtui.tab_widget_currentChanged(index) * */ void AboutDialog::on_tab_widget_currentChanged(int __pyx_v_index) { /* "_qt_qtwes2.pyx":1801 * ##pxm-FUNC PH nogil * void on_tab_widget_currentChanged(int index) nogil: * qtui.tab_widget_currentChanged(index) # <<<<<<<<<<<<<< * * ##pxm-FUNC PH with gil */ __pyx_f_6_qtui__tab_widget_currentChanged(__pyx_v_index); /* "_qt_qtwes2.pyx":1800 * * ##pxm-FUNC PH nogil * void on_tab_widget_currentChanged(int index) nogil: # <<<<<<<<<<<<<< * qtui.tab_widget_currentChanged(index) * */ /* function exit code */ } /* "_qt_qtwes2.pyx":1804 * * ##pxm-FUNC PH with gil * void on_text_license_short_anchorClicked(const QUrl &url) with gil: # <<<<<<<<<<<<<< * qtui.show_full_license(q2str(url.toString()) == 'text:FULL_LICENSE_TEXT', url) * ##pxm>CPPCLASS_END */ void AboutDialog::on_text_license_short_anchorClicked(QUrl const &__pyx_v_url) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; bool __pyx_t_3; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_text_license_short_anchorClicked", 0); /* "_qt_qtwes2.pyx":1805 * ##pxm-FUNC PH with gil * void on_text_license_short_anchorClicked(const QUrl &url) with gil: * qtui.show_full_license(q2str(url.toString()) == 'text:FULL_LICENSE_TEXT', url) # <<<<<<<<<<<<<< * ##pxm>CPPCLASS_END * */ __pyx_t_1 = __pyx_f_10_qt_qtwes2_q2str(__pyx_v_url.toString()); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1805, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyObject_RichCompare(__pyx_t_1, __pyx_kp_u_text_FULL_LICENSE_TEXT, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1805, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1805, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_f_6_qtui__show_full_license(__pyx_t_3, __pyx_v_url); /* "_qt_qtwes2.pyx":1804 * * ##pxm-FUNC PH with gil * void on_text_license_short_anchorClicked(const QUrl &url) with gil: # <<<<<<<<<<<<<< * qtui.show_full_license(q2str(url.toString()) == 'text:FULL_LICENSE_TEXT', url) * ##pxm>CPPCLASS_END */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_WriteUnraisable("AboutDialog.on_text_license_short_anchorClicked", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwes2.pyx":1809 * * ##pxm-FUNC P with gil * cdef void about_dialog() with gil: # <<<<<<<<<<<<<< * cdef AboutDialog *about = new AboutDialog(uidata.mainwindow) #px/ * #about = AboutDialog(uidata.mainwindow) */ static void __pyx_f_10_qt_qtwes2_about_dialog(void) { AboutDialog *__pyx_v_about; PyObject *__pyx_v_license_full = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; PyObject *__pyx_t_7 = NULL; PyObject *__pyx_t_8 = NULL; int __pyx_t_9; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("about_dialog", 0); /* "_qt_qtwes2.pyx":1810 * ##pxm-FUNC P with gil * cdef void about_dialog() with gil: * cdef AboutDialog *about = new AboutDialog(uidata.mainwindow) #px/ # <<<<<<<<<<<<<< * #about = AboutDialog(uidata.mainwindow) * about.init() */ __pyx_v_about = new AboutDialog(__pyx_v_10_qt_qtwes2_uidata.mainwindow); /* "_qt_qtwes2.pyx":1812 * cdef AboutDialog *about = new AboutDialog(uidata.mainwindow) #px/ * #about = AboutDialog(uidata.mainwindow) * about.init() # <<<<<<<<<<<<<< * * qtui.fill_header(str2q(config_.APPICON_FILE), str2q(_(config_.APPNAME)), */ __pyx_v_about->init(); /* "_qt_qtwes2.pyx":1814 * about.init() * * qtui.fill_header(str2q(config_.APPICON_FILE), str2q(_(config_.APPNAME)), # <<<<<<<<<<<<<< * str2q(config_.VERSION), str2q(_(config_.SHORT_DESCRIPTION))) * qtui.fill_about_tab(str2q(config_.COPYRIGHT), */ __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_config); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1814, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_APPICON_FILE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1814, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s__4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1814, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_config); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1814, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_APPNAME); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1814, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } if (!__pyx_t_4) { __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1814, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_5}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1814, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_5}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1814, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif { __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1814, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL; __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_5); __pyx_t_5 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1814, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "_qt_qtwes2.pyx":1815 * * qtui.fill_header(str2q(config_.APPICON_FILE), str2q(_(config_.APPNAME)), * str2q(config_.VERSION), str2q(_(config_.SHORT_DESCRIPTION))) # <<<<<<<<<<<<<< * qtui.fill_about_tab(str2q(config_.COPYRIGHT), * str2q(pydata.app.on_dialog_text('about_website')), */ __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_config); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1815, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_VERSION); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1815, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s__4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1815, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_config); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1815, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_SHORT_DESCRIPTION); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1815, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); } } if (!__pyx_t_4) { __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1815, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_3); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_7}; __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1815, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_7}; __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1815, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } else #endif { __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1815, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_4); __pyx_t_4 = NULL; __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_7); __pyx_t_7 = 0; __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1815, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; /* "_qt_qtwes2.pyx":1814 * about.init() * * qtui.fill_header(str2q(config_.APPICON_FILE), str2q(_(config_.APPNAME)), # <<<<<<<<<<<<<< * str2q(config_.VERSION), str2q(_(config_.SHORT_DESCRIPTION))) * qtui.fill_about_tab(str2q(config_.COPYRIGHT), */ __pyx_f_6_qtui__fill_header(__pyx_f_10_qt_qtwes2_str2q(__pyx_t_2), __pyx_f_10_qt_qtwes2_str2q(__pyx_t_1), __pyx_f_10_qt_qtwes2_str2q(__pyx_t_6), __pyx_f_10_qt_qtwes2_str2q(__pyx_t_3)); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "_qt_qtwes2.pyx":1816 * qtui.fill_header(str2q(config_.APPICON_FILE), str2q(_(config_.APPNAME)), * str2q(config_.VERSION), str2q(_(config_.SHORT_DESCRIPTION))) * qtui.fill_about_tab(str2q(config_.COPYRIGHT), # <<<<<<<<<<<<<< * str2q(pydata.app.on_dialog_text('about_website')), * str2q(pydata.app.on_dialog_text('about_translators'))) */ __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_config); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1816, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_COPYRIGHT); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1816, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "_qt_qtwes2.pyx":1817 * str2q(config_.VERSION), str2q(_(config_.SHORT_DESCRIPTION))) * qtui.fill_about_tab(str2q(config_.COPYRIGHT), * str2q(pydata.app.on_dialog_text('about_website')), # <<<<<<<<<<<<<< * str2q(pydata.app.on_dialog_text('about_translators'))) * qtui.fill_contribute_tab(str2q(pydata.app.on_dialog_text('about_contribute'))) */ __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1817, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_app); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1817, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_on_dialog_text); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1817, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__15, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1817, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "_qt_qtwes2.pyx":1818 * qtui.fill_about_tab(str2q(config_.COPYRIGHT), * str2q(pydata.app.on_dialog_text('about_website')), * str2q(pydata.app.on_dialog_text('about_translators'))) # <<<<<<<<<<<<<< * qtui.fill_contribute_tab(str2q(pydata.app.on_dialog_text('about_contribute'))) * license_full = pydata.app.on_dialog_text('about_license_full') */ __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1818, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_app); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1818, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_on_dialog_text); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1818, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__16, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1818, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "_qt_qtwes2.pyx":1816 * qtui.fill_header(str2q(config_.APPICON_FILE), str2q(_(config_.APPNAME)), * str2q(config_.VERSION), str2q(_(config_.SHORT_DESCRIPTION))) * qtui.fill_about_tab(str2q(config_.COPYRIGHT), # <<<<<<<<<<<<<< * str2q(pydata.app.on_dialog_text('about_website')), * str2q(pydata.app.on_dialog_text('about_translators'))) */ __pyx_f_6_qtui__fill_about_tab(__pyx_f_10_qt_qtwes2_str2q(__pyx_t_6), __pyx_f_10_qt_qtwes2_str2q(__pyx_t_1), __pyx_f_10_qt_qtwes2_str2q(__pyx_t_2)); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwes2.pyx":1819 * str2q(pydata.app.on_dialog_text('about_website')), * str2q(pydata.app.on_dialog_text('about_translators'))) * qtui.fill_contribute_tab(str2q(pydata.app.on_dialog_text('about_contribute'))) # <<<<<<<<<<<<<< * license_full = pydata.app.on_dialog_text('about_license_full') * if license_full: */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1819, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_app); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1819, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_on_dialog_text); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1819, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__17, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1819, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_f_6_qtui__fill_contribute_tab(__pyx_f_10_qt_qtwes2_str2q(__pyx_t_1)); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwes2.pyx":1820 * str2q(pydata.app.on_dialog_text('about_translators'))) * qtui.fill_contribute_tab(str2q(pydata.app.on_dialog_text('about_contribute'))) * license_full = pydata.app.on_dialog_text('about_license_full') # <<<<<<<<<<<<<< * if license_full: * qtui.fill_license_tab(str2q(pydata.app.on_dialog_text('about_license_short')), */ __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1820, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_app); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1820, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_on_dialog_text); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1820, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__18, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1820, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_license_full = __pyx_t_2; __pyx_t_2 = 0; /* "_qt_qtwes2.pyx":1821 * qtui.fill_contribute_tab(str2q(pydata.app.on_dialog_text('about_contribute'))) * license_full = pydata.app.on_dialog_text('about_license_full') * if license_full: # <<<<<<<<<<<<<< * qtui.fill_license_tab(str2q(pydata.app.on_dialog_text('about_license_short')), * False, str2q(license_full)) */ __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_license_full); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 1821, __pyx_L1_error) if (__pyx_t_9) { /* "_qt_qtwes2.pyx":1822 * license_full = pydata.app.on_dialog_text('about_license_full') * if license_full: * qtui.fill_license_tab(str2q(pydata.app.on_dialog_text('about_license_short')), # <<<<<<<<<<<<<< * False, str2q(license_full)) * else: */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1822, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_app); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1822, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_on_dialog_text); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1822, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__19, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1822, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwes2.pyx":1823 * if license_full: * qtui.fill_license_tab(str2q(pydata.app.on_dialog_text('about_license_short')), * False, str2q(license_full)) # <<<<<<<<<<<<<< * else: * qtui.fill_license_tab(str2q(pydata.app.on_dialog_text('about_license_short')), */ __pyx_f_6_qtui__fill_license_tab(__pyx_f_10_qt_qtwes2_str2q(__pyx_t_1), 0, __pyx_f_10_qt_qtwes2_str2q(__pyx_v_license_full)); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwes2.pyx":1821 * qtui.fill_contribute_tab(str2q(pydata.app.on_dialog_text('about_contribute'))) * license_full = pydata.app.on_dialog_text('about_license_full') * if license_full: # <<<<<<<<<<<<<< * qtui.fill_license_tab(str2q(pydata.app.on_dialog_text('about_license_short')), * False, str2q(license_full)) */ goto __pyx_L3; } /* "_qt_qtwes2.pyx":1825 * False, str2q(license_full)) * else: * qtui.fill_license_tab(str2q(pydata.app.on_dialog_text('about_license_short')), # <<<<<<<<<<<<<< * True, str2q(pydata.app.on_dialog_text('about_license_notfound'))) * about.exec() */ /*else*/ { __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1825, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_app); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1825, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_on_dialog_text); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1825, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__20, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1825, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwes2.pyx":1826 * else: * qtui.fill_license_tab(str2q(pydata.app.on_dialog_text('about_license_short')), * True, str2q(pydata.app.on_dialog_text('about_license_notfound'))) # <<<<<<<<<<<<<< * about.exec() * about.deleteLater() */ __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1826, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_app); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1826, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_on_dialog_text); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1826, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__21, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1826, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwes2.pyx":1825 * False, str2q(license_full)) * else: * qtui.fill_license_tab(str2q(pydata.app.on_dialog_text('about_license_short')), # <<<<<<<<<<<<<< * True, str2q(pydata.app.on_dialog_text('about_license_notfound'))) * about.exec() */ __pyx_f_6_qtui__fill_license_tab(__pyx_f_10_qt_qtwes2_str2q(__pyx_t_2), 1, __pyx_f_10_qt_qtwes2_str2q(__pyx_t_6)); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } __pyx_L3:; /* "_qt_qtwes2.pyx":1827 * qtui.fill_license_tab(str2q(pydata.app.on_dialog_text('about_license_short')), * True, str2q(pydata.app.on_dialog_text('about_license_notfound'))) * about.exec() # <<<<<<<<<<<<<< * about.deleteLater() * ##pxm>IF_END */ __pyx_v_about->exec(); /* "_qt_qtwes2.pyx":1828 * True, str2q(pydata.app.on_dialog_text('about_license_notfound'))) * about.exec() * about.deleteLater() # <<<<<<<<<<<<<< * ##pxm>IF_END * */ __pyx_v_about->deleteLater(); /* "_qt_qtwes2.pyx":1809 * * ##pxm-FUNC P with gil * cdef void about_dialog() with gil: # <<<<<<<<<<<<<< * cdef AboutDialog *about = new AboutDialog(uidata.mainwindow) #px/ * #about = AboutDialog(uidata.mainwindow) */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_8); __Pyx_WriteUnraisable("_qt_qtwes2.about_dialog", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_XDECREF(__pyx_v_license_full); __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwes2.pyx":1832 * * * def initial_resize(): # <<<<<<<<<<<<<< * uidata.width, uidata.height = settings['window.size'] * uidata.mainwindow.resize(uidata.width, uidata.height) */ /* Python wrapper */ static PyObject *__pyx_pw_10_qt_qtwes2_33initial_resize(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/ static PyMethodDef __pyx_mdef_10_qt_qtwes2_33initial_resize = {"initial_resize", (PyCFunction)__pyx_pw_10_qt_qtwes2_33initial_resize, METH_NOARGS, 0}; static PyObject *__pyx_pw_10_qt_qtwes2_33initial_resize(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("initial_resize (wrapper)", 0); __pyx_r = __pyx_pf_10_qt_qtwes2_32initial_resize(__pyx_self); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_10_qt_qtwes2_32initial_resize(CYTHON_UNUSED PyObject *__pyx_self) { int __pyx_v_s1; int __pyx_v_s2; int __pyx_v_divider_pos; int __pyx_v_divider_pos2; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *(*__pyx_t_5)(PyObject *); int __pyx_t_6; int __pyx_t_7; __Pyx_RefNannySetupContext("initial_resize", 0); /* "_qt_qtwes2.pyx":1833 * * def initial_resize(): * uidata.width, uidata.height = settings['window.size'] # <<<<<<<<<<<<<< * uidata.mainwindow.resize(uidata.width, uidata.height) * ##pxm>IF 'qtw' == 'qtw' */ __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1833, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyObject_GetItem(__pyx_t_1, __pyx_kp_u_window_size); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1833, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_2))) || (PyList_CheckExact(__pyx_t_2))) { PyObject* sequence = __pyx_t_2; #if !CYTHON_COMPILING_IN_PYPY Py_ssize_t size = Py_SIZE(sequence); #else Py_ssize_t size = PySequence_Size(sequence); #endif if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 1833, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_1 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_1 = PyList_GET_ITEM(sequence, 0); __pyx_t_3 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(__pyx_t_3); #else __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1833, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1833, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); #endif __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else { Py_ssize_t index = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1833, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_5 = Py_TYPE(__pyx_t_4)->tp_iternext; index = 0; __pyx_t_1 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_1)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_1); index = 1; __pyx_t_3 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_3)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_3); if (__Pyx_IternextUnpackEndCheck(__pyx_t_5(__pyx_t_4), 2) < 0) __PYX_ERR(0, 1833, __pyx_L1_error) __pyx_t_5 = NULL; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; goto __pyx_L4_unpacking_done; __pyx_L3_unpacking_failed:; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_5 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 1833, __pyx_L1_error) __pyx_L4_unpacking_done:; } __pyx_t_6 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1833, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1833, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_10_qt_qtwes2_uidata.width = __pyx_t_6; __pyx_v_10_qt_qtwes2_uidata.height = __pyx_t_7; /* "_qt_qtwes2.pyx":1834 * def initial_resize(): * uidata.width, uidata.height = settings['window.size'] * uidata.mainwindow.resize(uidata.width, uidata.height) # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * cdef int s1=0, s2=0, divider_pos, divider_pos2 #px+ */ __pyx_v_10_qt_qtwes2_uidata.mainwindow->resize(__pyx_v_10_qt_qtwes2_uidata.width, __pyx_v_10_qt_qtwes2_uidata.height); /* "_qt_qtwes2.pyx":1836 * uidata.mainwindow.resize(uidata.width, uidata.height) * ##pxm>IF 'qtw' == 'qtw' * cdef int s1=0, s2=0, divider_pos, divider_pos2 #px+ # <<<<<<<<<<<<<< * divider_pos = settings['window.divider'] * uidata.mainwindow.show() */ __pyx_v_s1 = 0; __pyx_v_s2 = 0; /* "_qt_qtwes2.pyx":1837 * ##pxm>IF 'qtw' == 'qtw' * cdef int s1=0, s2=0, divider_pos, divider_pos2 #px+ * divider_pos = settings['window.divider'] # <<<<<<<<<<<<<< * uidata.mainwindow.show() * qtui.get_splitter_sizes(s1, s2) #px/ */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1837, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyObject_GetItem(__pyx_t_2, __pyx_kp_u_window_divider); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1837, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1837, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_divider_pos = __pyx_t_7; /* "_qt_qtwes2.pyx":1838 * cdef int s1=0, s2=0, divider_pos, divider_pos2 #px+ * divider_pos = settings['window.divider'] * uidata.mainwindow.show() # <<<<<<<<<<<<<< * qtui.get_splitter_sizes(s1, s2) #px/ * #s1, s2 = qtui.get_splitter_sizes() */ __pyx_v_10_qt_qtwes2_uidata.mainwindow->show(); /* "_qt_qtwes2.pyx":1839 * divider_pos = settings['window.divider'] * uidata.mainwindow.show() * qtui.get_splitter_sizes(s1, s2) #px/ # <<<<<<<<<<<<<< * #s1, s2 = qtui.get_splitter_sizes() * divider_pos2 = s1 + s2 - divider_pos */ __pyx_f_6_qtui__get_splitter_sizes(__pyx_v_s1, __pyx_v_s2); /* "_qt_qtwes2.pyx":1841 * qtui.get_splitter_sizes(s1, s2) #px/ * #s1, s2 = qtui.get_splitter_sizes() * divider_pos2 = s1 + s2 - divider_pos # <<<<<<<<<<<<<< * qtui.set_splitter_sizes(divider_pos, divider_pos2) * ##pxm>IF 'qtw' == 'qtq' */ __pyx_v_divider_pos2 = ((__pyx_v_s1 + __pyx_v_s2) - __pyx_v_divider_pos); /* "_qt_qtwes2.pyx":1842 * #s1, s2 = qtui.get_splitter_sizes() * divider_pos2 = s1 + s2 - divider_pos * qtui.set_splitter_sizes(divider_pos, divider_pos2) # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtq' * #~ uidata.mainwindow.show() */ __pyx_f_6_qtui__set_splitter_sizes(__pyx_v_divider_pos, __pyx_v_divider_pos2); /* "_qt_qtwes2.pyx":1846 * #~ uidata.mainwindow.show() * #~ ##pxm>IF_END * singleShot(20, _on_init_finalize) #px/ # <<<<<<<<<<<<<< * #QTimer.singleShot(20, _on_init_finalize) * */ QTimer::singleShot(20, __pyx_f_10_qt_qtwes2__on_init_finalize); /* "_qt_qtwes2.pyx":1832 * * * def initial_resize(): # <<<<<<<<<<<<<< * uidata.width, uidata.height = settings['window.size'] * uidata.mainwindow.resize(uidata.width, uidata.height) */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("_qt_qtwes2.initial_resize", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwes2.pyx":1849 * #QTimer.singleShot(20, _on_init_finalize) * * def set_title(title): # <<<<<<<<<<<<<< * uidata.mainwindow.setTitle(str2q(title)) * */ /* Python wrapper */ static PyObject *__pyx_pw_10_qt_qtwes2_35set_title(PyObject *__pyx_self, PyObject *__pyx_v_title); /*proto*/ static PyMethodDef __pyx_mdef_10_qt_qtwes2_35set_title = {"set_title", (PyCFunction)__pyx_pw_10_qt_qtwes2_35set_title, METH_O, 0}; static PyObject *__pyx_pw_10_qt_qtwes2_35set_title(PyObject *__pyx_self, PyObject *__pyx_v_title) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("set_title (wrapper)", 0); __pyx_r = __pyx_pf_10_qt_qtwes2_34set_title(__pyx_self, ((PyObject *)__pyx_v_title)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_10_qt_qtwes2_34set_title(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_title) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("set_title", 0); /* "_qt_qtwes2.pyx":1850 * * def set_title(title): * uidata.mainwindow.setTitle(str2q(title)) # <<<<<<<<<<<<<< * * def load_ui(path): */ __pyx_v_10_qt_qtwes2_uidata.mainwindow->setWindowTitle(__pyx_f_10_qt_qtwes2_str2q(__pyx_v_title)); /* "_qt_qtwes2.pyx":1849 * #QTimer.singleShot(20, _on_init_finalize) * * def set_title(title): # <<<<<<<<<<<<<< * uidata.mainwindow.setTitle(str2q(title)) * */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwes2.pyx":1852 * uidata.mainwindow.setTitle(str2q(title)) * * def load_ui(path): # <<<<<<<<<<<<<< * pass * ##pxm>IF 'qtw' == 'qtq' */ /* Python wrapper */ static PyObject *__pyx_pw_10_qt_qtwes2_37load_ui(PyObject *__pyx_self, PyObject *__pyx_v_path); /*proto*/ static PyMethodDef __pyx_mdef_10_qt_qtwes2_37load_ui = {"load_ui", (PyCFunction)__pyx_pw_10_qt_qtwes2_37load_ui, METH_O, 0}; static PyObject *__pyx_pw_10_qt_qtwes2_37load_ui(PyObject *__pyx_self, PyObject *__pyx_v_path) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("load_ui (wrapper)", 0); __pyx_r = __pyx_pf_10_qt_qtwes2_36load_ui(__pyx_self, ((PyObject *)__pyx_v_path)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_10_qt_qtwes2_36load_ui(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_path) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("load_ui", 0); /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwes2.pyx":1865 * #~ ##pxm>IF_END * * def close_mainwindow(): # <<<<<<<<<<<<<< * uidata.mainwindow.close() * */ /* Python wrapper */ static PyObject *__pyx_pw_10_qt_qtwes2_39close_mainwindow(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/ static PyMethodDef __pyx_mdef_10_qt_qtwes2_39close_mainwindow = {"close_mainwindow", (PyCFunction)__pyx_pw_10_qt_qtwes2_39close_mainwindow, METH_NOARGS, 0}; static PyObject *__pyx_pw_10_qt_qtwes2_39close_mainwindow(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("close_mainwindow (wrapper)", 0); __pyx_r = __pyx_pf_10_qt_qtwes2_38close_mainwindow(__pyx_self); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_10_qt_qtwes2_38close_mainwindow(CYTHON_UNUSED PyObject *__pyx_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("close_mainwindow", 0); /* "_qt_qtwes2.pyx":1866 * * def close_mainwindow(): * uidata.mainwindow.close() # <<<<<<<<<<<<<< * * def get_samples(): */ __pyx_v_10_qt_qtwes2_uidata.mainwindow->close(); /* "_qt_qtwes2.pyx":1865 * #~ ##pxm>IF_END * * def close_mainwindow(): # <<<<<<<<<<<<<< * uidata.mainwindow.close() * */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwes2.pyx":1868 * uidata.mainwindow.close() * * def get_samples(): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * #TODO: uidata.drawingarea.format().samples() returns only 0 here */ /* Python wrapper */ static PyObject *__pyx_pw_10_qt_qtwes2_41get_samples(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/ static PyMethodDef __pyx_mdef_10_qt_qtwes2_41get_samples = {"get_samples", (PyCFunction)__pyx_pw_10_qt_qtwes2_41get_samples, METH_NOARGS, 0}; static PyObject *__pyx_pw_10_qt_qtwes2_41get_samples(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("get_samples (wrapper)", 0); __pyx_r = __pyx_pf_10_qt_qtwes2_40get_samples(__pyx_self); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_10_qt_qtwes2_40get_samples(CYTHON_UNUSED PyObject *__pyx_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("get_samples", 0); /* "_qt_qtwes2.pyx":1871 * ##pxm>IF 'qtw' == 'qtw' * #TODO: uidata.drawingarea.format().samples() returns only 0 here * return defaultFormat().samples() # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtq' * #~ return uidata.mainwindow.format().samples() */ __Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_PyInt_From_int(QSurfaceFormat::defaultFormat().samples()); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1871, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; /* "_qt_qtwes2.pyx":1868 * uidata.mainwindow.close() * * def get_samples(): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * #TODO: uidata.drawingarea.format().samples() returns only 0 here */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("_qt_qtwes2.get_samples", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwes2.pyx":1876 * #~ ##pxm>IF_END * * def update_drawingarea(): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * uidata.drawingarea.update() */ /* Python wrapper */ static PyObject *__pyx_pw_10_qt_qtwes2_43update_drawingarea(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/ static PyMethodDef __pyx_mdef_10_qt_qtwes2_43update_drawingarea = {"update_drawingarea", (PyCFunction)__pyx_pw_10_qt_qtwes2_43update_drawingarea, METH_NOARGS, 0}; static PyObject *__pyx_pw_10_qt_qtwes2_43update_drawingarea(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("update_drawingarea (wrapper)", 0); __pyx_r = __pyx_pf_10_qt_qtwes2_42update_drawingarea(__pyx_self); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_10_qt_qtwes2_42update_drawingarea(CYTHON_UNUSED PyObject *__pyx_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("update_drawingarea", 0); /* "_qt_qtwes2.pyx":1878 * def update_drawingarea(): * ##pxm>IF 'qtw' == 'qtw' * uidata.drawingarea.update() # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtq' * #~ uidata.mainwindow.update() */ __pyx_v_10_qt_qtwes2_uidata.drawingarea->update(); /* "_qt_qtwes2.pyx":1876 * #~ ##pxm>IF_END * * def update_drawingarea(): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * uidata.drawingarea.update() */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwes2.pyx":1883 * #~ ##pxm>IF_END * * def set_cursor(index): # <<<<<<<<<<<<<< * if index < 0: * index += 18 */ /* Python wrapper */ static PyObject *__pyx_pw_10_qt_qtwes2_45set_cursor(PyObject *__pyx_self, PyObject *__pyx_v_index); /*proto*/ static PyMethodDef __pyx_mdef_10_qt_qtwes2_45set_cursor = {"set_cursor", (PyCFunction)__pyx_pw_10_qt_qtwes2_45set_cursor, METH_O, 0}; static PyObject *__pyx_pw_10_qt_qtwes2_45set_cursor(PyObject *__pyx_self, PyObject *__pyx_v_index) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("set_cursor (wrapper)", 0); __pyx_r = __pyx_pf_10_qt_qtwes2_44set_cursor(__pyx_self, ((PyObject *)__pyx_v_index)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_10_qt_qtwes2_44set_cursor(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_index) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_t_2; Py_ssize_t __pyx_t_3; __Pyx_RefNannySetupContext("set_cursor", 0); __Pyx_INCREF(__pyx_v_index); /* "_qt_qtwes2.pyx":1884 * * def set_cursor(index): * if index < 0: # <<<<<<<<<<<<<< * index += 18 * ##pxm>IF 'qtw' == 'qtw' */ __pyx_t_1 = PyObject_RichCompare(__pyx_v_index, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1884, __pyx_L1_error) __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1884, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_2) { /* "_qt_qtwes2.pyx":1885 * def set_cursor(index): * if index < 0: * index += 18 # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * uidata.drawingarea.setCursor(uidata.cursors[index][0]) #px/ */ __pyx_t_1 = __Pyx_PyInt_AddObjC(__pyx_v_index, __pyx_int_18, 18, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1885, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF_SET(__pyx_v_index, __pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwes2.pyx":1884 * * def set_cursor(index): * if index < 0: # <<<<<<<<<<<<<< * index += 18 * ##pxm>IF 'qtw' == 'qtw' */ } /* "_qt_qtwes2.pyx":1887 * index += 18 * ##pxm>IF 'qtw' == 'qtw' * uidata.drawingarea.setCursor(uidata.cursors[index][0]) #px/ # <<<<<<<<<<<<<< * #uidata.drawingarea.setCursor(uidata.cursors[index]) * ##pxm>IF 'qtw' == 'qtq' */ __pyx_t_3 = __Pyx_PyIndex_AsSsize_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1887, __pyx_L1_error) __pyx_v_10_qt_qtwes2_uidata.drawingarea->setCursor(((__pyx_v_10_qt_qtwes2_uidata.cursors[__pyx_t_3])[0])); /* "_qt_qtwes2.pyx":1883 * #~ ##pxm>IF_END * * def set_cursor(index): # <<<<<<<<<<<<<< * if index < 0: * index += 18 */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("_qt_qtwes2.set_cursor", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_index); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwes2.pyx":1895 * #~ ##pxm>IF_END * * def unset_cursor(): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * uidata.drawingarea.unsetCursor() */ /* Python wrapper */ static PyObject *__pyx_pw_10_qt_qtwes2_47unset_cursor(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/ static PyMethodDef __pyx_mdef_10_qt_qtwes2_47unset_cursor = {"unset_cursor", (PyCFunction)__pyx_pw_10_qt_qtwes2_47unset_cursor, METH_NOARGS, 0}; static PyObject *__pyx_pw_10_qt_qtwes2_47unset_cursor(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("unset_cursor (wrapper)", 0); __pyx_r = __pyx_pf_10_qt_qtwes2_46unset_cursor(__pyx_self); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_10_qt_qtwes2_46unset_cursor(CYTHON_UNUSED PyObject *__pyx_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("unset_cursor", 0); /* "_qt_qtwes2.pyx":1897 * def unset_cursor(): * ##pxm>IF 'qtw' == 'qtw' * uidata.drawingarea.unsetCursor() # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtq' * #~ if uidata.entered: */ __pyx_v_10_qt_qtwes2_uidata.drawingarea->unsetCursor(); /* "_qt_qtwes2.pyx":1895 * #~ ##pxm>IF_END * * def unset_cursor(): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * uidata.drawingarea.unsetCursor() */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwes2.pyx":1913 * #~ ##pxm>IF_END * * def save_screenshot(filename): # <<<<<<<<<<<<<< * IF OFFSCREEN: #px+ * cdef QImage image #px+ */ /* Python wrapper */ static PyObject *__pyx_pw_10_qt_qtwes2_49save_screenshot(PyObject *__pyx_self, PyObject *__pyx_v_filename); /*proto*/ static PyMethodDef __pyx_mdef_10_qt_qtwes2_49save_screenshot = {"save_screenshot", (PyCFunction)__pyx_pw_10_qt_qtwes2_49save_screenshot, METH_O, 0}; static PyObject *__pyx_pw_10_qt_qtwes2_49save_screenshot(PyObject *__pyx_self, PyObject *__pyx_v_filename) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("save_screenshot (wrapper)", 0); __pyx_r = __pyx_pf_10_qt_qtwes2_48save_screenshot(__pyx_self, ((PyObject *)__pyx_v_filename)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_10_qt_qtwes2_48save_screenshot(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_filename) { QPixmap __pyx_v_image; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; __Pyx_RefNannySetupContext("save_screenshot", 0); /* "_qt_qtwes2.pyx":1921 * ##pxm>IF 'qtw' == 'qtw' * cdef QPixmap image #px+ * image = uidata.mainwindow.grab() # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtq' * #~ cdef QImage image */ __pyx_v_image = __pyx_v_10_qt_qtwes2_uidata.mainwindow->grab(); /* "_qt_qtwes2.pyx":1926 * #~ image = uidata.mainwindow.grabWindow() * #~ ##pxm>IF_END * if not (debug & DEBUG_SIM): # <<<<<<<<<<<<<< * image.save(str2q(filename), NULL, -1) * */ __pyx_t_1 = ((!((__pyx_v_10_qt_qtwes2_debug & __pyx_e_10_qt_qtwes2_DEBUG_SIM) != 0)) != 0); if (__pyx_t_1) { /* "_qt_qtwes2.pyx":1927 * #~ ##pxm>IF_END * if not (debug & DEBUG_SIM): * image.save(str2q(filename), NULL, -1) # <<<<<<<<<<<<<< * * */ __pyx_v_image.save(__pyx_f_10_qt_qtwes2_str2q(__pyx_v_filename), NULL, -1); /* "_qt_qtwes2.pyx":1926 * #~ image = uidata.mainwindow.grabWindow() * #~ ##pxm>IF_END * if not (debug & DEBUG_SIM): # <<<<<<<<<<<<<< * image.save(str2q(filename), NULL, -1) * */ } /* "_qt_qtwes2.pyx":1913 * #~ ##pxm>IF_END * * def save_screenshot(filename): # <<<<<<<<<<<<<< * IF OFFSCREEN: #px+ * cdef QImage image #px+ */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwes2.pyx":1932 * #### misc qt #### * * def parse_color(name): # <<<<<<<<<<<<<< * cdef QColor color #px/ * #color = QColor() */ /* Python wrapper */ static PyObject *__pyx_pw_10_qt_qtwes2_51parse_color(PyObject *__pyx_self, PyObject *__pyx_v_name); /*proto*/ static PyMethodDef __pyx_mdef_10_qt_qtwes2_51parse_color = {"parse_color", (PyCFunction)__pyx_pw_10_qt_qtwes2_51parse_color, METH_O, 0}; static PyObject *__pyx_pw_10_qt_qtwes2_51parse_color(PyObject *__pyx_self, PyObject *__pyx_v_name) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("parse_color (wrapper)", 0); __pyx_r = __pyx_pf_10_qt_qtwes2_50parse_color(__pyx_self, ((PyObject *)__pyx_v_name)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_10_qt_qtwes2_50parse_color(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_name) { QColor __pyx_v_color; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; __Pyx_RefNannySetupContext("parse_color", 0); /* "_qt_qtwes2.pyx":1935 * cdef QColor color #px/ * #color = QColor() * color.setNamedColor(str2q(name)) # <<<<<<<<<<<<<< * return color.red(), color.green(), color.blue() * */ __pyx_v_color.setNamedColor(__pyx_f_10_qt_qtwes2_str2q(__pyx_v_name)); /* "_qt_qtwes2.pyx":1936 * #color = QColor() * color.setNamedColor(str2q(name)) * return color.red(), color.green(), color.blue() # <<<<<<<<<<<<<< * * def parse_color_f(name): */ __Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_color.red()); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1936, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_color.green()); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1936, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_color.blue()); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1936, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1936, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_3); __pyx_t_1 = 0; __pyx_t_2 = 0; __pyx_t_3 = 0; __pyx_r = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L0; /* "_qt_qtwes2.pyx":1932 * #### misc qt #### * * def parse_color(name): # <<<<<<<<<<<<<< * cdef QColor color #px/ * #color = QColor() */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("_qt_qtwes2.parse_color", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwes2.pyx":1938 * return color.red(), color.green(), color.blue() * * def parse_color_f(name): # <<<<<<<<<<<<<< * cdef QColor color #px/ * #color = QColor() */ /* Python wrapper */ static PyObject *__pyx_pw_10_qt_qtwes2_53parse_color_f(PyObject *__pyx_self, PyObject *__pyx_v_name); /*proto*/ static PyMethodDef __pyx_mdef_10_qt_qtwes2_53parse_color_f = {"parse_color_f", (PyCFunction)__pyx_pw_10_qt_qtwes2_53parse_color_f, METH_O, 0}; static PyObject *__pyx_pw_10_qt_qtwes2_53parse_color_f(PyObject *__pyx_self, PyObject *__pyx_v_name) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("parse_color_f (wrapper)", 0); __pyx_r = __pyx_pf_10_qt_qtwes2_52parse_color_f(__pyx_self, ((PyObject *)__pyx_v_name)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_10_qt_qtwes2_52parse_color_f(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_name) { QColor __pyx_v_color; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; __Pyx_RefNannySetupContext("parse_color_f", 0); /* "_qt_qtwes2.pyx":1941 * cdef QColor color #px/ * #color = QColor() * color.setNamedColor(str2q(name)) # <<<<<<<<<<<<<< * return color.redF(), color.greenF(), color.blueF() * */ __pyx_v_color.setNamedColor(__pyx_f_10_qt_qtwes2_str2q(__pyx_v_name)); /* "_qt_qtwes2.pyx":1942 * #color = QColor() * color.setNamedColor(str2q(name)) * return color.redF(), color.greenF(), color.blueF() # <<<<<<<<<<<<<< * * def load_image_from_file(filename, maxsize): */ __Pyx_XDECREF(__pyx_r); __pyx_t_1 = PyFloat_FromDouble(__pyx_v_color.redF()); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1942, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyFloat_FromDouble(__pyx_v_color.greenF()); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1942, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyFloat_FromDouble(__pyx_v_color.blueF()); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1942, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1942, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_3); __pyx_t_1 = 0; __pyx_t_2 = 0; __pyx_t_3 = 0; __pyx_r = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L0; /* "_qt_qtwes2.pyx":1938 * return color.red(), color.green(), color.blue() * * def parse_color_f(name): # <<<<<<<<<<<<<< * cdef QColor color #px/ * #color = QColor() */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("_qt_qtwes2.parse_color_f", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwes2.pyx":1944 * return color.redF(), color.greenF(), color.blueF() * * def load_image_from_file(filename, maxsize): # <<<<<<<<<<<<<< * cdef int width, height, scaled_width, scaled_height #px+ * cdef bytes data #px+ */ /* Python wrapper */ static PyObject *__pyx_pw_10_qt_qtwes2_55load_image_from_file(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static PyMethodDef __pyx_mdef_10_qt_qtwes2_55load_image_from_file = {"load_image_from_file", (PyCFunction)__pyx_pw_10_qt_qtwes2_55load_image_from_file, METH_VARARGS|METH_KEYWORDS, 0}; static PyObject *__pyx_pw_10_qt_qtwes2_55load_image_from_file(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_filename = 0; PyObject *__pyx_v_maxsize = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("load_image_from_file (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_filename,&__pyx_n_s_maxsize,0}; PyObject* values[2] = {0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_filename)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_maxsize)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("load_image_from_file", 1, 2, 2, 1); __PYX_ERR(0, 1944, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "load_image_from_file") < 0)) __PYX_ERR(0, 1944, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); } __pyx_v_filename = values[0]; __pyx_v_maxsize = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("load_image_from_file", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1944, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("_qt_qtwes2.load_image_from_file", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_10_qt_qtwes2_54load_image_from_file(__pyx_self, __pyx_v_filename, __pyx_v_maxsize); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_10_qt_qtwes2_54load_image_from_file(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_filename, PyObject *__pyx_v_maxsize) { int __pyx_v_width; int __pyx_v_height; int __pyx_v_scaled_width; int __pyx_v_scaled_height; PyObject *__pyx_v_data = 0; QImage __pyx_v_image; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; int __pyx_t_2; int __pyx_t_3; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; __Pyx_RefNannySetupContext("load_image_from_file", 0); /* "_qt_qtwes2.pyx":1949 * cdef QImage image #px/ * #image = QImage() * image.load(str2q(filename), NULL) # <<<<<<<<<<<<<< * if image.isNull(): * return None */ __pyx_v_image.load(__pyx_f_10_qt_qtwes2_str2q(__pyx_v_filename), NULL); /* "_qt_qtwes2.pyx":1950 * #image = QImage() * image.load(str2q(filename), NULL) * if image.isNull(): # <<<<<<<<<<<<<< * return None * # scale the image to size 2^n for OpenGL */ __pyx_t_1 = (__pyx_v_image.isNull() != 0); if (__pyx_t_1) { /* "_qt_qtwes2.pyx":1951 * image.load(str2q(filename), NULL) * if image.isNull(): * return None # <<<<<<<<<<<<<< * # scale the image to size 2^n for OpenGL * width = image.width() */ __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(Py_None); __pyx_r = Py_None; goto __pyx_L0; /* "_qt_qtwes2.pyx":1950 * #image = QImage() * image.load(str2q(filename), NULL) * if image.isNull(): # <<<<<<<<<<<<<< * return None * # scale the image to size 2^n for OpenGL */ } /* "_qt_qtwes2.pyx":1953 * return None * # scale the image to size 2^n for OpenGL * width = image.width() # <<<<<<<<<<<<<< * height = image.height() * if width < 1 or height < 1: */ __pyx_v_width = __pyx_v_image.width(); /* "_qt_qtwes2.pyx":1954 * # scale the image to size 2^n for OpenGL * width = image.width() * height = image.height() # <<<<<<<<<<<<<< * if width < 1 or height < 1: * return None */ __pyx_v_height = __pyx_v_image.height(); /* "_qt_qtwes2.pyx":1955 * width = image.width() * height = image.height() * if width < 1 or height < 1: # <<<<<<<<<<<<<< * return None * scaled_width = maxsize */ __pyx_t_2 = ((__pyx_v_width < 1) != 0); if (!__pyx_t_2) { } else { __pyx_t_1 = __pyx_t_2; goto __pyx_L5_bool_binop_done; } __pyx_t_2 = ((__pyx_v_height < 1) != 0); __pyx_t_1 = __pyx_t_2; __pyx_L5_bool_binop_done:; if (__pyx_t_1) { /* "_qt_qtwes2.pyx":1956 * height = image.height() * if width < 1 or height < 1: * return None # <<<<<<<<<<<<<< * scaled_width = maxsize * while scaled_width > width: */ __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(Py_None); __pyx_r = Py_None; goto __pyx_L0; /* "_qt_qtwes2.pyx":1955 * width = image.width() * height = image.height() * if width < 1 or height < 1: # <<<<<<<<<<<<<< * return None * scaled_width = maxsize */ } /* "_qt_qtwes2.pyx":1957 * if width < 1 or height < 1: * return None * scaled_width = maxsize # <<<<<<<<<<<<<< * while scaled_width > width: * scaled_width //= 2 */ __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_v_maxsize); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1957, __pyx_L1_error) __pyx_v_scaled_width = __pyx_t_3; /* "_qt_qtwes2.pyx":1958 * return None * scaled_width = maxsize * while scaled_width > width: # <<<<<<<<<<<<<< * scaled_width //= 2 * scaled_height = maxsize */ while (1) { __pyx_t_1 = ((__pyx_v_scaled_width > __pyx_v_width) != 0); if (!__pyx_t_1) break; /* "_qt_qtwes2.pyx":1959 * scaled_width = maxsize * while scaled_width > width: * scaled_width //= 2 # <<<<<<<<<<<<<< * scaled_height = maxsize * while scaled_height > height: */ __pyx_v_scaled_width = __Pyx_div_long(__pyx_v_scaled_width, 2); } /* "_qt_qtwes2.pyx":1960 * while scaled_width > width: * scaled_width //= 2 * scaled_height = maxsize # <<<<<<<<<<<<<< * while scaled_height > height: * scaled_height //= 2 */ __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_v_maxsize); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1960, __pyx_L1_error) __pyx_v_scaled_height = __pyx_t_3; /* "_qt_qtwes2.pyx":1961 * scaled_width //= 2 * scaled_height = maxsize * while scaled_height > height: # <<<<<<<<<<<<<< * scaled_height //= 2 * image = image.scaled(scaled_width, scaled_height, Qt.IgnoreAspectRatio, Qt.SmoothTransformation) */ while (1) { __pyx_t_1 = ((__pyx_v_scaled_height > __pyx_v_height) != 0); if (!__pyx_t_1) break; /* "_qt_qtwes2.pyx":1962 * scaled_height = maxsize * while scaled_height > height: * scaled_height //= 2 # <<<<<<<<<<<<<< * image = image.scaled(scaled_width, scaled_height, Qt.IgnoreAspectRatio, Qt.SmoothTransformation) * image = image.convertToFormat(Format_RGBA8888, Qt.AutoColor) */ __pyx_v_scaled_height = __Pyx_div_long(__pyx_v_scaled_height, 2); } /* "_qt_qtwes2.pyx":1963 * while scaled_height > height: * scaled_height //= 2 * image = image.scaled(scaled_width, scaled_height, Qt.IgnoreAspectRatio, Qt.SmoothTransformation) # <<<<<<<<<<<<<< * image = image.convertToFormat(Format_RGBA8888, Qt.AutoColor) * data = image.bits()[:image.byteCount()] #px+ */ __pyx_v_image = __pyx_v_image.scaled(__pyx_v_scaled_width, __pyx_v_scaled_height, Qt::IgnoreAspectRatio, Qt::SmoothTransformation); /* "_qt_qtwes2.pyx":1964 * scaled_height //= 2 * image = image.scaled(scaled_width, scaled_height, Qt.IgnoreAspectRatio, Qt.SmoothTransformation) * image = image.convertToFormat(Format_RGBA8888, Qt.AutoColor) # <<<<<<<<<<<<<< * data = image.bits()[:image.byteCount()] #px+ * ##px: */ __pyx_v_image = __pyx_v_image.convertToFormat(QImage::Format_RGBA8888, Qt::AutoColor); /* "_qt_qtwes2.pyx":1965 * image = image.scaled(scaled_width, scaled_height, Qt.IgnoreAspectRatio, Qt.SmoothTransformation) * image = image.convertToFormat(Format_RGBA8888, Qt.AutoColor) * data = image.bits()[:image.byteCount()] #px+ # <<<<<<<<<<<<<< * ##px: * #data = image.bits() */ __pyx_t_4 = __Pyx_PyBytes_FromStringAndSize(((const char*)__pyx_v_image.bits()) + 0, __pyx_v_image.byteCount() - 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1965, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_v_data = ((PyObject*)__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwes2.pyx":1971 * #data = bytes(data) * ##px. * return image.width(), image.height(), data # <<<<<<<<<<<<<< * * ##pxm>IF 'qtw' == 'qtw' */ __Pyx_XDECREF(__pyx_r); __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_image.width()); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1971, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_image.height()); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1971, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1971, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_5); __Pyx_INCREF(__pyx_v_data); __Pyx_GIVEREF(__pyx_v_data); PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_v_data); __pyx_t_4 = 0; __pyx_t_5 = 0; __pyx_r = __pyx_t_6; __pyx_t_6 = 0; goto __pyx_L0; /* "_qt_qtwes2.pyx":1944 * return color.redF(), color.greenF(), color.blueF() * * def load_image_from_file(filename, maxsize): # <<<<<<<<<<<<<< * cdef int width, height, scaled_width, scaled_height #px+ * cdef bytes data #px+ */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_AddTraceback("_qt_qtwes2.load_image_from_file", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_data); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwes2.pyx":1975 * ##pxm>IF 'qtw' == 'qtw' * ##pxm-FUNC P * cdef QIcon get_icon(filename): # <<<<<<<<<<<<<< * cdef QPixmap pixmap #px+ * from ..theme import Theme */ static QIcon __pyx_f_10_qt_qtwes2_get_icon(PyObject *__pyx_v_filename) { QPixmap __pyx_v_pixmap; PyObject *__pyx_v_Theme = NULL; PyObject *__pyx_v_image = NULL; PyObject *__pyx_v_width = NULL; PyObject *__pyx_v_height = NULL; PyObject *__pyx_v_data = NULL; QIcon __pyx_r; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; int __pyx_t_5; int __pyx_t_6; PyObject *(*__pyx_t_7)(PyObject *); int __pyx_t_8; int __pyx_t_9; uchar const *__pyx_t_10; __Pyx_RefNannySetupContext("get_icon", 0); /* "_qt_qtwes2.pyx":1977 * cdef QIcon get_icon(filename): * cdef QPixmap pixmap #px+ * from ..theme import Theme # <<<<<<<<<<<<<< * image = Theme.textures.image_from_file(filename) * if image is None: */ __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1977, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_n_s_Theme); __Pyx_GIVEREF(__pyx_n_s_Theme); PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_Theme); __pyx_t_2 = __Pyx_Import(__pyx_n_s_theme, __pyx_t_1, 2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1977, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_Theme); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1977, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_t_1); __pyx_v_Theme = __pyx_t_1; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwes2.pyx":1978 * cdef QPixmap pixmap #px+ * from ..theme import Theme * image = Theme.textures.image_from_file(filename) # <<<<<<<<<<<<<< * if image is None: * return QIcon() */ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_Theme, __pyx_n_s_textures); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1978, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_image_from_file); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1978, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_1)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } if (!__pyx_t_1) { __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_filename); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1978, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_v_filename}; __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1978, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_GOTREF(__pyx_t_2); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_v_filename}; __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1978, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_GOTREF(__pyx_t_2); } else #endif { __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1978, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1); __pyx_t_1 = NULL; __Pyx_INCREF(__pyx_v_filename); __Pyx_GIVEREF(__pyx_v_filename); PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_filename); __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1978, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_image = __pyx_t_2; __pyx_t_2 = 0; /* "_qt_qtwes2.pyx":1979 * from ..theme import Theme * image = Theme.textures.image_from_file(filename) * if image is None: # <<<<<<<<<<<<<< * return QIcon() * else: */ __pyx_t_5 = (__pyx_v_image == Py_None); __pyx_t_6 = (__pyx_t_5 != 0); if (__pyx_t_6) { /* "_qt_qtwes2.pyx":1980 * image = Theme.textures.image_from_file(filename) * if image is None: * return QIcon() # <<<<<<<<<<<<<< * else: * width, height, data = image */ __pyx_r = QIcon(); goto __pyx_L0; /* "_qt_qtwes2.pyx":1979 * from ..theme import Theme * image = Theme.textures.image_from_file(filename) * if image is None: # <<<<<<<<<<<<<< * return QIcon() * else: */ } /* "_qt_qtwes2.pyx":1982 * return QIcon() * else: * width, height, data = image # <<<<<<<<<<<<<< * pixmap = QPixmap(width, height) * pixmap.convertFromImage(QImage(data, width, height, Format_RGBA8888)) */ /*else*/ { if ((likely(PyTuple_CheckExact(__pyx_v_image))) || (PyList_CheckExact(__pyx_v_image))) { PyObject* sequence = __pyx_v_image; #if !CYTHON_COMPILING_IN_PYPY Py_ssize_t size = Py_SIZE(sequence); #else Py_ssize_t size = PySequence_Size(sequence); #endif if (unlikely(size != 3)) { if (size > 3) __Pyx_RaiseTooManyValuesError(3); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 1982, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); __pyx_t_4 = PyTuple_GET_ITEM(sequence, 2); } else { __pyx_t_2 = PyList_GET_ITEM(sequence, 0); __pyx_t_3 = PyList_GET_ITEM(sequence, 1); __pyx_t_4 = PyList_GET_ITEM(sequence, 2); } __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(__pyx_t_4); #else __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1982, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1982, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1982, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); #endif } else { Py_ssize_t index = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_image); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1982, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_7 = Py_TYPE(__pyx_t_1)->tp_iternext; index = 0; __pyx_t_2 = __pyx_t_7(__pyx_t_1); if (unlikely(!__pyx_t_2)) goto __pyx_L4_unpacking_failed; __Pyx_GOTREF(__pyx_t_2); index = 1; __pyx_t_3 = __pyx_t_7(__pyx_t_1); if (unlikely(!__pyx_t_3)) goto __pyx_L4_unpacking_failed; __Pyx_GOTREF(__pyx_t_3); index = 2; __pyx_t_4 = __pyx_t_7(__pyx_t_1); if (unlikely(!__pyx_t_4)) goto __pyx_L4_unpacking_failed; __Pyx_GOTREF(__pyx_t_4); if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_1), 3) < 0) __PYX_ERR(0, 1982, __pyx_L1_error) __pyx_t_7 = NULL; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; goto __pyx_L5_unpacking_done; __pyx_L4_unpacking_failed:; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_7 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 1982, __pyx_L1_error) __pyx_L5_unpacking_done:; } __pyx_v_width = __pyx_t_2; __pyx_t_2 = 0; __pyx_v_height = __pyx_t_3; __pyx_t_3 = 0; __pyx_v_data = __pyx_t_4; __pyx_t_4 = 0; /* "_qt_qtwes2.pyx":1983 * else: * width, height, data = image * pixmap = QPixmap(width, height) # <<<<<<<<<<<<<< * pixmap.convertFromImage(QImage(data, width, height, Format_RGBA8888)) * return QIcon(pixmap) */ __pyx_t_8 = __Pyx_PyInt_As_int(__pyx_v_width); if (unlikely((__pyx_t_8 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1983, __pyx_L1_error) __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_v_height); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1983, __pyx_L1_error) __pyx_v_pixmap = QPixmap(__pyx_t_8, __pyx_t_9); /* "_qt_qtwes2.pyx":1984 * width, height, data = image * pixmap = QPixmap(width, height) * pixmap.convertFromImage(QImage(data, width, height, Format_RGBA8888)) # <<<<<<<<<<<<<< * return QIcon(pixmap) * ##pxm>IF_END */ __pyx_t_10 = __Pyx_PyObject_AsUString(__pyx_v_data); if (unlikely((!__pyx_t_10) && PyErr_Occurred())) __PYX_ERR(0, 1984, __pyx_L1_error) __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_v_width); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1984, __pyx_L1_error) __pyx_t_8 = __Pyx_PyInt_As_int(__pyx_v_height); if (unlikely((__pyx_t_8 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1984, __pyx_L1_error) __pyx_v_pixmap.convertFromImage(QImage(__pyx_t_10, __pyx_t_9, __pyx_t_8, QImage::Format_RGBA8888)); /* "_qt_qtwes2.pyx":1985 * pixmap = QPixmap(width, height) * pixmap.convertFromImage(QImage(data, width, height, Format_RGBA8888)) * return QIcon(pixmap) # <<<<<<<<<<<<<< * ##pxm>IF_END * */ __pyx_r = QIcon(__pyx_v_pixmap); goto __pyx_L0; } /* "_qt_qtwes2.pyx":1975 * ##pxm>IF 'qtw' == 'qtw' * ##pxm-FUNC P * cdef QIcon get_icon(filename): # <<<<<<<<<<<<<< * cdef QPixmap pixmap #px+ * from ..theme import Theme */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_WriteUnraisable("_qt_qtwes2.get_icon", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_XDECREF(__pyx_v_Theme); __Pyx_XDECREF(__pyx_v_image); __Pyx_XDECREF(__pyx_v_width); __Pyx_XDECREF(__pyx_v_height); __Pyx_XDECREF(__pyx_v_data); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwes2.pyx":1988 * ##pxm>IF_END * * def keyval_from_name(keystr): # <<<<<<<<<<<<<< * keystr = '+'.join(('Num' if k == 'KP' else k) for k in keystr.split('+')) * cdef QKeySequence keyseq = fromString(str2q(keystr), PortableText) #px/ */ /* Python wrapper */ static PyObject *__pyx_pw_10_qt_qtwes2_57keyval_from_name(PyObject *__pyx_self, PyObject *__pyx_v_keystr); /*proto*/ static PyMethodDef __pyx_mdef_10_qt_qtwes2_57keyval_from_name = {"keyval_from_name", (PyCFunction)__pyx_pw_10_qt_qtwes2_57keyval_from_name, METH_O, 0}; static PyObject *__pyx_pw_10_qt_qtwes2_57keyval_from_name(PyObject *__pyx_self, PyObject *__pyx_v_keystr) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("keyval_from_name (wrapper)", 0); __pyx_r = __pyx_pf_10_qt_qtwes2_56keyval_from_name(__pyx_self, ((PyObject *)__pyx_v_keystr)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_gb_10_qt_qtwes2_16keyval_from_name_2generator(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */ /* "_qt_qtwes2.pyx":1989 * * def keyval_from_name(keystr): * keystr = '+'.join(('Num' if k == 'KP' else k) for k in keystr.split('+')) # <<<<<<<<<<<<<< * cdef QKeySequence keyseq = fromString(str2q(keystr), PortableText) #px/ * #keyseq = fromString(keystr, PortableText) */ static PyObject *__pyx_pf_10_qt_qtwes2_16keyval_from_name_genexpr(PyObject *__pyx_self) { struct __pyx_obj_10_qt_qtwes2___pyx_scope_struct_1_genexpr *__pyx_cur_scope; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("genexpr", 0); __pyx_cur_scope = (struct __pyx_obj_10_qt_qtwes2___pyx_scope_struct_1_genexpr *)__pyx_tp_new_10_qt_qtwes2___pyx_scope_struct_1_genexpr(__pyx_ptype_10_qt_qtwes2___pyx_scope_struct_1_genexpr, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_cur_scope)) { __pyx_cur_scope = ((struct __pyx_obj_10_qt_qtwes2___pyx_scope_struct_1_genexpr *)Py_None); __Pyx_INCREF(Py_None); __PYX_ERR(0, 1989, __pyx_L1_error) } else { __Pyx_GOTREF(__pyx_cur_scope); } __pyx_cur_scope->__pyx_outer_scope = (struct __pyx_obj_10_qt_qtwes2___pyx_scope_struct__keyval_from_name *) __pyx_self; __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_outer_scope)); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_outer_scope); { __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_10_qt_qtwes2_16keyval_from_name_2generator, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_keyval_from_name_locals_genexpr, __pyx_n_s_qt_qtwes2); if (unlikely(!gen)) __PYX_ERR(0, 1989, __pyx_L1_error) __Pyx_DECREF(__pyx_cur_scope); __Pyx_RefNannyFinishContext(); return (PyObject *) gen; } /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("_qt_qtwes2.keyval_from_name.genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_DECREF(((PyObject *)__pyx_cur_scope)); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_gb_10_qt_qtwes2_16keyval_from_name_2generator(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */ { struct __pyx_obj_10_qt_qtwes2___pyx_scope_struct_1_genexpr *__pyx_cur_scope = ((struct __pyx_obj_10_qt_qtwes2___pyx_scope_struct_1_genexpr *)__pyx_generator->closure); PyObject *__pyx_r = NULL; PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; Py_ssize_t __pyx_t_3; PyObject *(*__pyx_t_4)(PyObject *); int __pyx_t_5; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("None", 0); switch (__pyx_generator->resume_label) { case 0: goto __pyx_L3_first_run; default: /* CPython raises the right error here */ __Pyx_RefNannyFinishContext(); return NULL; } __pyx_L3_first_run:; if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 1989, __pyx_L1_error) __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(0, 1989, __pyx_L1_error) __Pyx_GOTREF(__pyx_r); if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_keystr)) { __Pyx_RaiseClosureNameError("keystr"); __PYX_ERR(0, 1989, __pyx_L1_error) } __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_keystr, __pyx_n_s_split); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1989, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__23, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1989, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (likely(PyList_CheckExact(__pyx_t_2)) || PyTuple_CheckExact(__pyx_t_2)) { __pyx_t_1 = __pyx_t_2; __Pyx_INCREF(__pyx_t_1); __pyx_t_3 = 0; __pyx_t_4 = NULL; } else { __pyx_t_3 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1989, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1989, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; for (;;) { if (likely(!__pyx_t_4)) { if (likely(PyList_CheckExact(__pyx_t_1))) { if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_1)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_2); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 1989, __pyx_L1_error) #else __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1989, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); #endif } else { if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_1)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_2); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 1989, __pyx_L1_error) #else __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1989, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); #endif } } else { __pyx_t_2 = __pyx_t_4(__pyx_t_1); if (unlikely(!__pyx_t_2)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 1989, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_2); } __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_k); __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_k, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_5 = (__Pyx_PyUnicode_Equals(__pyx_cur_scope->__pyx_v_k, __pyx_n_u_KP, Py_EQ)); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 1989, __pyx_L1_error) if (__pyx_t_5) { __Pyx_INCREF(__pyx_n_u_Num); __pyx_t_2 = __pyx_n_u_Num; } else { __Pyx_INCREF(__pyx_cur_scope->__pyx_v_k); __pyx_t_2 = __pyx_cur_scope->__pyx_v_k; } if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_2))) __PYX_ERR(0, 1989, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_r); __pyx_r = 0; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __pyx_generator->resume_label = -1; __Pyx_Coroutine_clear((PyObject*)__pyx_generator); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwes2.pyx":1988 * ##pxm>IF_END * * def keyval_from_name(keystr): # <<<<<<<<<<<<<< * keystr = '+'.join(('Num' if k == 'KP' else k) for k in keystr.split('+')) * cdef QKeySequence keyseq = fromString(str2q(keystr), PortableText) #px/ */ static PyObject *__pyx_pf_10_qt_qtwes2_56keyval_from_name(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_keystr) { struct __pyx_obj_10_qt_qtwes2___pyx_scope_struct__keyval_from_name *__pyx_cur_scope; QKeySequence __pyx_v_keyseq; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; int __pyx_t_3; __Pyx_RefNannySetupContext("keyval_from_name", 0); __pyx_cur_scope = (struct __pyx_obj_10_qt_qtwes2___pyx_scope_struct__keyval_from_name *)__pyx_tp_new_10_qt_qtwes2___pyx_scope_struct__keyval_from_name(__pyx_ptype_10_qt_qtwes2___pyx_scope_struct__keyval_from_name, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_cur_scope)) { __pyx_cur_scope = ((struct __pyx_obj_10_qt_qtwes2___pyx_scope_struct__keyval_from_name *)Py_None); __Pyx_INCREF(Py_None); __PYX_ERR(0, 1988, __pyx_L1_error) } else { __Pyx_GOTREF(__pyx_cur_scope); } __pyx_cur_scope->__pyx_v_keystr = __pyx_v_keystr; __Pyx_INCREF(__pyx_cur_scope->__pyx_v_keystr); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_keystr); /* "_qt_qtwes2.pyx":1989 * * def keyval_from_name(keystr): * keystr = '+'.join(('Num' if k == 'KP' else k) for k in keystr.split('+')) # <<<<<<<<<<<<<< * cdef QKeySequence keyseq = fromString(str2q(keystr), PortableText) #px/ * #keyseq = fromString(keystr, PortableText) */ __pyx_t_1 = __pyx_pf_10_qt_qtwes2_16keyval_from_name_genexpr(((PyObject*)__pyx_cur_scope)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1989, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_Generator_Next(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1989, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyUnicode_Join(__pyx_kp_u__22, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1989, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_keystr); __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_keystr, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwes2.pyx":1990 * def keyval_from_name(keystr): * keystr = '+'.join(('Num' if k == 'KP' else k) for k in keystr.split('+')) * cdef QKeySequence keyseq = fromString(str2q(keystr), PortableText) #px/ # <<<<<<<<<<<<<< * #keyseq = fromString(keystr, PortableText) * if keyseq.count() == 0: */ __pyx_t_1 = __pyx_cur_scope->__pyx_v_keystr; __Pyx_INCREF(__pyx_t_1); __pyx_v_keyseq = QKeySequence::fromString(__pyx_f_10_qt_qtwes2_str2q(__pyx_t_1), QKeySequence::PortableText); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwes2.pyx":1992 * cdef QKeySequence keyseq = fromString(str2q(keystr), PortableText) #px/ * #keyseq = fromString(keystr, PortableText) * if keyseq.count() == 0: # <<<<<<<<<<<<<< * return 0 * return keyseq[0] */ __pyx_t_3 = ((__pyx_v_keyseq.count() == 0) != 0); if (__pyx_t_3) { /* "_qt_qtwes2.pyx":1993 * #keyseq = fromString(keystr, PortableText) * if keyseq.count() == 0: * return 0 # <<<<<<<<<<<<<< * return keyseq[0] * */ __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_int_0); __pyx_r = __pyx_int_0; goto __pyx_L0; /* "_qt_qtwes2.pyx":1992 * cdef QKeySequence keyseq = fromString(str2q(keystr), PortableText) #px/ * #keyseq = fromString(keystr, PortableText) * if keyseq.count() == 0: # <<<<<<<<<<<<<< * return 0 * return keyseq[0] */ } /* "_qt_qtwes2.pyx":1994 * if keyseq.count() == 0: * return 0 * return keyseq[0] # <<<<<<<<<<<<<< * * def get_pictures_folder(): */ __Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_PyInt_From_int((__pyx_v_keyseq[0])); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1994, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; /* "_qt_qtwes2.pyx":1988 * ##pxm>IF_END * * def keyval_from_name(keystr): # <<<<<<<<<<<<<< * keystr = '+'.join(('Num' if k == 'KP' else k) for k in keystr.split('+')) * cdef QKeySequence keyseq = fromString(str2q(keystr), PortableText) #px/ */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("_qt_qtwes2.keyval_from_name", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_DECREF(((PyObject *)__pyx_cur_scope)); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwes2.pyx":1996 * return keyseq[0] * * def get_pictures_folder(): # <<<<<<<<<<<<<< * cdef QStringList locations = standardLocations(PicturesLocation) #px/ * #locations = standardLocations(PicturesLocation) */ /* Python wrapper */ static PyObject *__pyx_pw_10_qt_qtwes2_59get_pictures_folder(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/ static PyMethodDef __pyx_mdef_10_qt_qtwes2_59get_pictures_folder = {"get_pictures_folder", (PyCFunction)__pyx_pw_10_qt_qtwes2_59get_pictures_folder, METH_NOARGS, 0}; static PyObject *__pyx_pw_10_qt_qtwes2_59get_pictures_folder(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("get_pictures_folder (wrapper)", 0); __pyx_r = __pyx_pf_10_qt_qtwes2_58get_pictures_folder(__pyx_self); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_10_qt_qtwes2_58get_pictures_folder(CYTHON_UNUSED PyObject *__pyx_self) { QStringList __pyx_v_locations; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; PyObject *__pyx_t_2 = NULL; __Pyx_RefNannySetupContext("get_pictures_folder", 0); /* "_qt_qtwes2.pyx":1997 * * def get_pictures_folder(): * cdef QStringList locations = standardLocations(PicturesLocation) #px/ # <<<<<<<<<<<<<< * #locations = standardLocations(PicturesLocation) * if locations.size() <= 0: #px/ */ __pyx_v_locations = QStandardPaths::standardLocations(QStandardPaths::PicturesLocation); /* "_qt_qtwes2.pyx":1999 * cdef QStringList locations = standardLocations(PicturesLocation) #px/ * #locations = standardLocations(PicturesLocation) * if locations.size() <= 0: #px/ # <<<<<<<<<<<<<< * #if not locations: * locations = standardLocations(HomeLocation) */ __pyx_t_1 = ((__pyx_v_locations.size() <= 0) != 0); if (__pyx_t_1) { /* "_qt_qtwes2.pyx":2001 * if locations.size() <= 0: #px/ * #if not locations: * locations = standardLocations(HomeLocation) # <<<<<<<<<<<<<< * if locations.size() <= 0: #px/ * #if not locations: */ __pyx_v_locations = QStandardPaths::standardLocations(QStandardPaths::HomeLocation); /* "_qt_qtwes2.pyx":2002 * #if not locations: * locations = standardLocations(HomeLocation) * if locations.size() <= 0: #px/ # <<<<<<<<<<<<<< * #if not locations: * return '' */ __pyx_t_1 = ((__pyx_v_locations.size() <= 0) != 0); if (__pyx_t_1) { /* "_qt_qtwes2.pyx":2004 * if locations.size() <= 0: #px/ * #if not locations: * return '' # <<<<<<<<<<<<<< * return q2str(locations[0]) * */ __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_kp_u__6); __pyx_r = __pyx_kp_u__6; goto __pyx_L0; /* "_qt_qtwes2.pyx":2002 * #if not locations: * locations = standardLocations(HomeLocation) * if locations.size() <= 0: #px/ # <<<<<<<<<<<<<< * #if not locations: * return '' */ } /* "_qt_qtwes2.pyx":1999 * cdef QStringList locations = standardLocations(PicturesLocation) #px/ * #locations = standardLocations(PicturesLocation) * if locations.size() <= 0: #px/ # <<<<<<<<<<<<<< * #if not locations: * locations = standardLocations(HomeLocation) */ } /* "_qt_qtwes2.pyx":2005 * #if not locations: * return '' * return q2str(locations[0]) # <<<<<<<<<<<<<< * * def get_imagefile(facekey): */ __Pyx_XDECREF(__pyx_r); __pyx_t_2 = __pyx_f_10_qt_qtwes2_q2str((__pyx_v_locations[0])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2005, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; /* "_qt_qtwes2.pyx":1996 * return keyseq[0] * * def get_pictures_folder(): # <<<<<<<<<<<<<< * cdef QStringList locations = standardLocations(PicturesLocation) #px/ * #locations = standardLocations(PicturesLocation) */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("_qt_qtwes2.get_pictures_folder", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwes2.pyx":2007 * return q2str(locations[0]) * * def get_imagefile(facekey): # <<<<<<<<<<<<<< * imagefile = settings['theme.faces',facekey,'image'] * currentfolder = get_pictures_folder() */ /* Python wrapper */ static PyObject *__pyx_pw_10_qt_qtwes2_61get_imagefile(PyObject *__pyx_self, PyObject *__pyx_v_facekey); /*proto*/ static PyMethodDef __pyx_mdef_10_qt_qtwes2_61get_imagefile = {"get_imagefile", (PyCFunction)__pyx_pw_10_qt_qtwes2_61get_imagefile, METH_O, 0}; static PyObject *__pyx_pw_10_qt_qtwes2_61get_imagefile(PyObject *__pyx_self, PyObject *__pyx_v_facekey) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("get_imagefile (wrapper)", 0); __pyx_r = __pyx_pf_10_qt_qtwes2_60get_imagefile(__pyx_self, ((PyObject *)__pyx_v_facekey)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_10_qt_qtwes2_60get_imagefile(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_facekey) { PyObject *__pyx_v_imagefile = NULL; PyObject *__pyx_v_currentfolder = NULL; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; int __pyx_t_4; PyObject *__pyx_t_5 = NULL; int __pyx_t_6; PyObject *__pyx_t_7 = NULL; __Pyx_RefNannySetupContext("get_imagefile", 0); /* "_qt_qtwes2.pyx":2008 * * def get_imagefile(facekey): * imagefile = settings['theme.faces',facekey,'image'] # <<<<<<<<<<<<<< * currentfolder = get_pictures_folder() * if imagefile.startswith('/'): */ __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2008, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2008, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_kp_u_theme_faces); __Pyx_GIVEREF(__pyx_kp_u_theme_faces); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_kp_u_theme_faces); __Pyx_INCREF(__pyx_v_facekey); __Pyx_GIVEREF(__pyx_v_facekey); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_facekey); __Pyx_INCREF(__pyx_n_u_image); __Pyx_GIVEREF(__pyx_n_u_image); PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_n_u_image); __pyx_t_3 = PyObject_GetItem(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2008, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_imagefile = __pyx_t_3; __pyx_t_3 = 0; /* "_qt_qtwes2.pyx":2009 * def get_imagefile(facekey): * imagefile = settings['theme.faces',facekey,'image'] * currentfolder = get_pictures_folder() # <<<<<<<<<<<<<< * if imagefile.startswith('/'): * currentfolder = os.path.dirname(imagefile) */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_get_pictures_folder); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2009, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_1)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } if (__pyx_t_1) { __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2009, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2009, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_currentfolder = __pyx_t_3; __pyx_t_3 = 0; /* "_qt_qtwes2.pyx":2010 * imagefile = settings['theme.faces',facekey,'image'] * currentfolder = get_pictures_folder() * if imagefile.startswith('/'): # <<<<<<<<<<<<<< * currentfolder = os.path.dirname(imagefile) * elif imagefile: */ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_imagefile, __pyx_n_s_startswith); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2010, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__24, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2010, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 2010, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (__pyx_t_4) { /* "_qt_qtwes2.pyx":2011 * currentfolder = get_pictures_folder() * if imagefile.startswith('/'): * currentfolder = os.path.dirname(imagefile) # <<<<<<<<<<<<<< * elif imagefile: * imagefile = os.path.join(config_.UI_DIR, 'images', imagefile) */ __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_os); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2011, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_path); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2011, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_dirname); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2011, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_1)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } if (!__pyx_t_1) { __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_imagefile); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2011, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_v_imagefile}; __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2011, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_GOTREF(__pyx_t_2); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_v_imagefile}; __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2011, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_GOTREF(__pyx_t_2); } else #endif { __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2011, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1); __pyx_t_1 = NULL; __Pyx_INCREF(__pyx_v_imagefile); __Pyx_GIVEREF(__pyx_v_imagefile); PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_imagefile); __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2011, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF_SET(__pyx_v_currentfolder, __pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwes2.pyx":2010 * imagefile = settings['theme.faces',facekey,'image'] * currentfolder = get_pictures_folder() * if imagefile.startswith('/'): # <<<<<<<<<<<<<< * currentfolder = os.path.dirname(imagefile) * elif imagefile: */ goto __pyx_L3; } /* "_qt_qtwes2.pyx":2012 * if imagefile.startswith('/'): * currentfolder = os.path.dirname(imagefile) * elif imagefile: # <<<<<<<<<<<<<< * imagefile = os.path.join(config_.UI_DIR, 'images', imagefile) * return currentfolder, imagefile */ __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_imagefile); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 2012, __pyx_L1_error) if (__pyx_t_4) { /* "_qt_qtwes2.pyx":2013 * currentfolder = os.path.dirname(imagefile) * elif imagefile: * imagefile = os.path.join(config_.UI_DIR, 'images', imagefile) # <<<<<<<<<<<<<< * return currentfolder, imagefile * */ __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_os); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2013, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_path); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2013, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_join); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2013, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_config); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2013, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_UI_DIR); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2013, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[4] = {__pyx_t_5, __pyx_t_1, __pyx_n_u_images, __pyx_v_imagefile}; __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2013, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[4] = {__pyx_t_5, __pyx_t_1, __pyx_n_u_images, __pyx_v_imagefile}; __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2013, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else #endif { __pyx_t_7 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2013, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_t_1); __Pyx_INCREF(__pyx_n_u_images); __Pyx_GIVEREF(__pyx_n_u_images); PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_n_u_images); __Pyx_INCREF(__pyx_v_imagefile); __Pyx_GIVEREF(__pyx_v_imagefile); PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_6, __pyx_v_imagefile); __pyx_t_1 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2013, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF_SET(__pyx_v_imagefile, __pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwes2.pyx":2012 * if imagefile.startswith('/'): * currentfolder = os.path.dirname(imagefile) * elif imagefile: # <<<<<<<<<<<<<< * imagefile = os.path.join(config_.UI_DIR, 'images', imagefile) * return currentfolder, imagefile */ } __pyx_L3:; /* "_qt_qtwes2.pyx":2014 * elif imagefile: * imagefile = os.path.join(config_.UI_DIR, 'images', imagefile) * return currentfolder, imagefile # <<<<<<<<<<<<<< * * def text_to_html(text): */ __Pyx_XDECREF(__pyx_r); __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2014, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_currentfolder); __Pyx_GIVEREF(__pyx_v_currentfolder); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_currentfolder); __Pyx_INCREF(__pyx_v_imagefile); __Pyx_GIVEREF(__pyx_v_imagefile); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_imagefile); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; /* "_qt_qtwes2.pyx":2007 * return q2str(locations[0]) * * def get_imagefile(facekey): # <<<<<<<<<<<<<< * imagefile = settings['theme.faces',facekey,'image'] * currentfolder = get_pictures_folder() */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_7); __Pyx_AddTraceback("_qt_qtwes2.get_imagefile", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_imagefile); __Pyx_XDECREF(__pyx_v_currentfolder); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwes2.pyx":2016 * return currentfolder, imagefile * * def text_to_html(text): # <<<<<<<<<<<<<< * return q2str(fromPlainText(str2q(text)).toHtml()) * */ /* Python wrapper */ static PyObject *__pyx_pw_10_qt_qtwes2_63text_to_html(PyObject *__pyx_self, PyObject *__pyx_v_text); /*proto*/ static PyMethodDef __pyx_mdef_10_qt_qtwes2_63text_to_html = {"text_to_html", (PyCFunction)__pyx_pw_10_qt_qtwes2_63text_to_html, METH_O, 0}; static PyObject *__pyx_pw_10_qt_qtwes2_63text_to_html(PyObject *__pyx_self, PyObject *__pyx_v_text) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("text_to_html (wrapper)", 0); __pyx_r = __pyx_pf_10_qt_qtwes2_62text_to_html(__pyx_self, ((PyObject *)__pyx_v_text)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_10_qt_qtwes2_62text_to_html(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_text) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("text_to_html", 0); /* "_qt_qtwes2.pyx":2017 * * def text_to_html(text): * return q2str(fromPlainText(str2q(text)).toHtml()) # <<<<<<<<<<<<<< * * ##pxm-FUNC P with gil */ __Pyx_XDECREF(__pyx_r); __pyx_t_1 = __pyx_f_10_qt_qtwes2_q2str(QTextDocumentFragment::fromPlainText(__pyx_f_10_qt_qtwes2_str2q(__pyx_v_text)).toHtml()); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2017, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; /* "_qt_qtwes2.pyx":2016 * return currentfolder, imagefile * * def text_to_html(text): # <<<<<<<<<<<<<< * return q2str(fromPlainText(str2q(text)).toHtml()) * */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("_qt_qtwes2.text_to_html", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwes2.pyx":2020 * * ##pxm-FUNC P with gil * cdef void _on_filesystemwatcher_changed_1(const QString &qpath) with gil: # <<<<<<<<<<<<<< * if pydata.filesystemwatcher_path is not None: * return */ static void __pyx_f_10_qt_qtwes2__on_filesystemwatcher_changed_1(QString const &__pyx_v_qpath) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; int __pyx_t_3; int __pyx_t_4; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("_on_filesystemwatcher_changed_1", 0); /* "_qt_qtwes2.pyx":2021 * ##pxm-FUNC P with gil * cdef void _on_filesystemwatcher_changed_1(const QString &qpath) with gil: * if pydata.filesystemwatcher_path is not None: # <<<<<<<<<<<<<< * return * pydata.filesystemwatcher_path = q2str(qpath) */ __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2021, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_filesystemwatcher_path); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2021, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_3 = (__pyx_t_2 != Py_None); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_4 = (__pyx_t_3 != 0); if (__pyx_t_4) { /* "_qt_qtwes2.pyx":2022 * cdef void _on_filesystemwatcher_changed_1(const QString &qpath) with gil: * if pydata.filesystemwatcher_path is not None: * return # <<<<<<<<<<<<<< * pydata.filesystemwatcher_path = q2str(qpath) * singleShot(100, _on_filesystemwatcher_changed_2) #px/ */ goto __pyx_L0; /* "_qt_qtwes2.pyx":2021 * ##pxm-FUNC P with gil * cdef void _on_filesystemwatcher_changed_1(const QString &qpath) with gil: * if pydata.filesystemwatcher_path is not None: # <<<<<<<<<<<<<< * return * pydata.filesystemwatcher_path = q2str(qpath) */ } /* "_qt_qtwes2.pyx":2023 * if pydata.filesystemwatcher_path is not None: * return * pydata.filesystemwatcher_path = q2str(qpath) # <<<<<<<<<<<<<< * singleShot(100, _on_filesystemwatcher_changed_2) #px/ * #QTimer.singleShot(100, _on_filesystemwatcher_changed_2) */ __pyx_t_2 = __pyx_f_10_qt_qtwes2_q2str(__pyx_v_qpath); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2023, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2023, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (__Pyx_PyObject_SetAttrStr(__pyx_t_1, __pyx_n_s_filesystemwatcher_path, __pyx_t_2) < 0) __PYX_ERR(0, 2023, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwes2.pyx":2024 * return * pydata.filesystemwatcher_path = q2str(qpath) * singleShot(100, _on_filesystemwatcher_changed_2) #px/ # <<<<<<<<<<<<<< * #QTimer.singleShot(100, _on_filesystemwatcher_changed_2) * ##pxm-FUNC P with gil */ QTimer::singleShot(0x64, __pyx_f_10_qt_qtwes2__on_filesystemwatcher_changed_2); /* "_qt_qtwes2.pyx":2020 * * ##pxm-FUNC P with gil * cdef void _on_filesystemwatcher_changed_1(const QString &qpath) with gil: # <<<<<<<<<<<<<< * if pydata.filesystemwatcher_path is not None: * return */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_WriteUnraisable("_qt_qtwes2._on_filesystemwatcher_changed_1", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwes2.pyx":2027 * #QTimer.singleShot(100, _on_filesystemwatcher_changed_2) * ##pxm-FUNC P with gil * cdef void _on_filesystemwatcher_changed_2() with gil: # <<<<<<<<<<<<<< * path = pydata.filesystemwatcher_path * pydata.filesystemwatcher_path = None */ static void __pyx_f_10_qt_qtwes2__on_filesystemwatcher_changed_2(void) { PyObject *__pyx_v_path = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; int __pyx_t_5; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("_on_filesystemwatcher_changed_2", 0); /* "_qt_qtwes2.pyx":2028 * ##pxm-FUNC P with gil * cdef void _on_filesystemwatcher_changed_2() with gil: * path = pydata.filesystemwatcher_path # <<<<<<<<<<<<<< * pydata.filesystemwatcher_path = None * pydata.filesystemwatcher_handlers[path]() */ __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2028, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_filesystemwatcher_path); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2028, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_path = __pyx_t_2; __pyx_t_2 = 0; /* "_qt_qtwes2.pyx":2029 * cdef void _on_filesystemwatcher_changed_2() with gil: * path = pydata.filesystemwatcher_path * pydata.filesystemwatcher_path = None # <<<<<<<<<<<<<< * pydata.filesystemwatcher_handlers[path]() * if os.path.isfile(path): */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2029, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (__Pyx_PyObject_SetAttrStr(__pyx_t_2, __pyx_n_s_filesystemwatcher_path, Py_None) < 0) __PYX_ERR(0, 2029, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwes2.pyx":2030 * path = pydata.filesystemwatcher_path * pydata.filesystemwatcher_path = None * pydata.filesystemwatcher_handlers[path]() # <<<<<<<<<<<<<< * if os.path.isfile(path): * uidata.filesystemwatcher.addPath(str2q(path)) */ __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2030, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_filesystemwatcher_handlers); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2030, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyObject_GetItem(__pyx_t_3, __pyx_v_path); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2030, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); } } if (__pyx_t_3) { __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2030, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2030, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwes2.pyx":2031 * pydata.filesystemwatcher_path = None * pydata.filesystemwatcher_handlers[path]() * if os.path.isfile(path): # <<<<<<<<<<<<<< * uidata.filesystemwatcher.addPath(str2q(path)) * */ __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_os); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2031, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_path); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2031, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_isfile); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2031, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); } } if (!__pyx_t_3) { __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_path); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2031, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_1)) { PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_path}; __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2031, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_2); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) { PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_path}; __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2031, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_2); } else #endif { __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2031, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL; __Pyx_INCREF(__pyx_v_path); __Pyx_GIVEREF(__pyx_v_path); PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_path); __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_4, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2031, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 2031, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (__pyx_t_5) { /* "_qt_qtwes2.pyx":2032 * pydata.filesystemwatcher_handlers[path]() * if os.path.isfile(path): * uidata.filesystemwatcher.addPath(str2q(path)) # <<<<<<<<<<<<<< * * def create_filesystemwatcher(path, callback): */ __pyx_v_10_qt_qtwes2_uidata.filesystemwatcher->addPath(__pyx_f_10_qt_qtwes2_str2q(__pyx_v_path)); /* "_qt_qtwes2.pyx":2031 * pydata.filesystemwatcher_path = None * pydata.filesystemwatcher_handlers[path]() * if os.path.isfile(path): # <<<<<<<<<<<<<< * uidata.filesystemwatcher.addPath(str2q(path)) * */ } /* "_qt_qtwes2.pyx":2027 * #QTimer.singleShot(100, _on_filesystemwatcher_changed_2) * ##pxm-FUNC P with gil * cdef void _on_filesystemwatcher_changed_2() with gil: # <<<<<<<<<<<<<< * path = pydata.filesystemwatcher_path * pydata.filesystemwatcher_path = None */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_WriteUnraisable("_qt_qtwes2._on_filesystemwatcher_changed_2", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_XDECREF(__pyx_v_path); __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwes2.pyx":2034 * uidata.filesystemwatcher.addPath(str2q(path)) * * def create_filesystemwatcher(path, callback): # <<<<<<<<<<<<<< * cdef QString qpath = str2q(path) #px/ * #qpath = path */ /* Python wrapper */ static PyObject *__pyx_pw_10_qt_qtwes2_65create_filesystemwatcher(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static PyMethodDef __pyx_mdef_10_qt_qtwes2_65create_filesystemwatcher = {"create_filesystemwatcher", (PyCFunction)__pyx_pw_10_qt_qtwes2_65create_filesystemwatcher, METH_VARARGS|METH_KEYWORDS, 0}; static PyObject *__pyx_pw_10_qt_qtwes2_65create_filesystemwatcher(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_path = 0; PyObject *__pyx_v_callback = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("create_filesystemwatcher (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_path,&__pyx_n_s_callback,0}; PyObject* values[2] = {0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_path)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_callback)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("create_filesystemwatcher", 1, 2, 2, 1); __PYX_ERR(0, 2034, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "create_filesystemwatcher") < 0)) __PYX_ERR(0, 2034, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); } __pyx_v_path = values[0]; __pyx_v_callback = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("create_filesystemwatcher", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2034, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("_qt_qtwes2.create_filesystemwatcher", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_10_qt_qtwes2_64create_filesystemwatcher(__pyx_self, __pyx_v_path, __pyx_v_callback); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_10_qt_qtwes2_64create_filesystemwatcher(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_path, PyObject *__pyx_v_callback) { QString __pyx_v_qpath; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; __Pyx_RefNannySetupContext("create_filesystemwatcher", 0); /* "_qt_qtwes2.pyx":2035 * * def create_filesystemwatcher(path, callback): * cdef QString qpath = str2q(path) #px/ # <<<<<<<<<<<<<< * #qpath = path * if uidata.filesystemwatcher is NULL: */ __pyx_v_qpath = __pyx_f_10_qt_qtwes2_str2q(__pyx_v_path); /* "_qt_qtwes2.pyx":2037 * cdef QString qpath = str2q(path) #px/ * #qpath = path * if uidata.filesystemwatcher is NULL: # <<<<<<<<<<<<<< * uidata.filesystemwatcher = new QFileSystemWatcher(NULL) #px/ * #uidata.filesystemwatcher = QFileSystemWatcher(None) */ __pyx_t_1 = ((__pyx_v_10_qt_qtwes2_uidata.filesystemwatcher == NULL) != 0); if (__pyx_t_1) { /* "_qt_qtwes2.pyx":2038 * #qpath = path * if uidata.filesystemwatcher is NULL: * uidata.filesystemwatcher = new QFileSystemWatcher(NULL) #px/ # <<<<<<<<<<<<<< * #uidata.filesystemwatcher = QFileSystemWatcher(None) * connect(uidata.filesystemwatcher, &directoryChanged, _on_filesystemwatcher_changed_1) #px/ */ __pyx_v_10_qt_qtwes2_uidata.filesystemwatcher = new QFileSystemWatcher(NULL); /* "_qt_qtwes2.pyx":2040 * uidata.filesystemwatcher = new QFileSystemWatcher(NULL) #px/ * #uidata.filesystemwatcher = QFileSystemWatcher(None) * connect(uidata.filesystemwatcher, &directoryChanged, _on_filesystemwatcher_changed_1) #px/ # <<<<<<<<<<<<<< * #uidata.filesystemwatcher.directoryChanged.connect(_on_filesystemwatcher_changed_1) * connect(uidata.filesystemwatcher, &fileChanged, _on_filesystemwatcher_changed_1) #px/ */ QObject::connect(__pyx_v_10_qt_qtwes2_uidata.filesystemwatcher, (&QFileSystemWatcher::directoryChanged), __pyx_f_10_qt_qtwes2__on_filesystemwatcher_changed_1); /* "_qt_qtwes2.pyx":2042 * connect(uidata.filesystemwatcher, &directoryChanged, _on_filesystemwatcher_changed_1) #px/ * #uidata.filesystemwatcher.directoryChanged.connect(_on_filesystemwatcher_changed_1) * connect(uidata.filesystemwatcher, &fileChanged, _on_filesystemwatcher_changed_1) #px/ # <<<<<<<<<<<<<< * #uidata.filesystemwatcher.fileChanged.connect(_on_filesystemwatcher_changed_1) * pydata.filesystemwatcher_handlers[path] = callback */ QObject::connect(__pyx_v_10_qt_qtwes2_uidata.filesystemwatcher, (&QFileSystemWatcher::fileChanged), __pyx_f_10_qt_qtwes2__on_filesystemwatcher_changed_1); /* "_qt_qtwes2.pyx":2037 * cdef QString qpath = str2q(path) #px/ * #qpath = path * if uidata.filesystemwatcher is NULL: # <<<<<<<<<<<<<< * uidata.filesystemwatcher = new QFileSystemWatcher(NULL) #px/ * #uidata.filesystemwatcher = QFileSystemWatcher(None) */ } /* "_qt_qtwes2.pyx":2044 * connect(uidata.filesystemwatcher, &fileChanged, _on_filesystemwatcher_changed_1) #px/ * #uidata.filesystemwatcher.fileChanged.connect(_on_filesystemwatcher_changed_1) * pydata.filesystemwatcher_handlers[path] = callback # <<<<<<<<<<<<<< * uidata.filesystemwatcher.addPath(qpath) * */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2044, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_filesystemwatcher_handlers); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2044, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(PyObject_SetItem(__pyx_t_3, __pyx_v_path, __pyx_v_callback) < 0)) __PYX_ERR(0, 2044, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "_qt_qtwes2.pyx":2045 * #uidata.filesystemwatcher.fileChanged.connect(_on_filesystemwatcher_changed_1) * pydata.filesystemwatcher_handlers[path] = callback * uidata.filesystemwatcher.addPath(qpath) # <<<<<<<<<<<<<< * * #XXX: avoid this function, only one active singleShot-handler */ __pyx_v_10_qt_qtwes2_uidata.filesystemwatcher->addPath(__pyx_v_qpath); /* "_qt_qtwes2.pyx":2034 * uidata.filesystemwatcher.addPath(str2q(path)) * * def create_filesystemwatcher(path, callback): # <<<<<<<<<<<<<< * cdef QString qpath = str2q(path) #px/ * #qpath = path */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("_qt_qtwes2.create_filesystemwatcher", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwes2.pyx":2048 * * #XXX: avoid this function, only one active singleShot-handler * cdef void _on_singleShot() with gil: #px+ # <<<<<<<<<<<<<< * pydata.singleshot_handler() #px+ * if pydata.singleshot_queue: #px+ */ static void __pyx_f_10_qt_qtwes2__on_singleShot(void) { PyObject *__pyx_v_msec = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; int __pyx_t_4; PyObject *__pyx_t_5 = NULL; PyObject *(*__pyx_t_6)(PyObject *); int __pyx_t_7; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("_on_singleShot", 0); /* "_qt_qtwes2.pyx":2049 * #XXX: avoid this function, only one active singleShot-handler * cdef void _on_singleShot() with gil: #px+ * pydata.singleshot_handler() #px+ # <<<<<<<<<<<<<< * if pydata.singleshot_queue: #px+ * msec, pydata.singleshot_handler = pydata.singleshot_queue.pop(0) #px+ */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2049, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_singleshot_handler); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2049, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } if (__pyx_t_2) { __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2049, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else { __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2049, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwes2.pyx":2050 * cdef void _on_singleShot() with gil: #px+ * pydata.singleshot_handler() #px+ * if pydata.singleshot_queue: #px+ # <<<<<<<<<<<<<< * msec, pydata.singleshot_handler = pydata.singleshot_queue.pop(0) #px+ * singleShot(msec, _on_singleShot) #px+ */ __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2050, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_singleshot_queue); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2050, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 2050, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (__pyx_t_4) { /* "_qt_qtwes2.pyx":2051 * pydata.singleshot_handler() #px+ * if pydata.singleshot_queue: #px+ * msec, pydata.singleshot_handler = pydata.singleshot_queue.pop(0) #px+ # <<<<<<<<<<<<<< * singleShot(msec, _on_singleShot) #px+ * else: #px+ */ __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2051, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_singleshot_queue); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2051, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_PopIndex(__pyx_t_1, __pyx_int_0, 0, 1, Py_ssize_t, PyInt_FromSsize_t); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2051, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) { PyObject* sequence = __pyx_t_3; #if !CYTHON_COMPILING_IN_PYPY Py_ssize_t size = Py_SIZE(sequence); #else Py_ssize_t size = PySequence_Size(sequence); #endif if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 2051, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_1 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_2 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_1 = PyList_GET_ITEM(sequence, 0); __pyx_t_2 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(__pyx_t_2); #else __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2051, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2051, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); #endif __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { Py_ssize_t index = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2051, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_6 = Py_TYPE(__pyx_t_5)->tp_iternext; index = 0; __pyx_t_1 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_1)) goto __pyx_L4_unpacking_failed; __Pyx_GOTREF(__pyx_t_1); index = 1; __pyx_t_2 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_2)) goto __pyx_L4_unpacking_failed; __Pyx_GOTREF(__pyx_t_2); if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_5), 2) < 0) __PYX_ERR(0, 2051, __pyx_L1_error) __pyx_t_6 = NULL; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; goto __pyx_L5_unpacking_done; __pyx_L4_unpacking_failed:; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_6 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 2051, __pyx_L1_error) __pyx_L5_unpacking_done:; } __pyx_v_msec = __pyx_t_1; __pyx_t_1 = 0; __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2051, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__Pyx_PyObject_SetAttrStr(__pyx_t_5, __pyx_n_s_singleshot_handler, __pyx_t_2) < 0) __PYX_ERR(0, 2051, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; /* "_qt_qtwes2.pyx":2052 * if pydata.singleshot_queue: #px+ * msec, pydata.singleshot_handler = pydata.singleshot_queue.pop(0) #px+ * singleShot(msec, _on_singleShot) #px+ # <<<<<<<<<<<<<< * else: #px+ * pydata.singleshot_handler = None #px+ */ __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_v_msec); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2052, __pyx_L1_error) QTimer::singleShot(__pyx_t_7, __pyx_f_10_qt_qtwes2__on_singleShot); /* "_qt_qtwes2.pyx":2050 * cdef void _on_singleShot() with gil: #px+ * pydata.singleshot_handler() #px+ * if pydata.singleshot_queue: #px+ # <<<<<<<<<<<<<< * msec, pydata.singleshot_handler = pydata.singleshot_queue.pop(0) #px+ * singleShot(msec, _on_singleShot) #px+ */ goto __pyx_L3; } /* "_qt_qtwes2.pyx":2054 * singleShot(msec, _on_singleShot) #px+ * else: #px+ * pydata.singleshot_handler = None #px+ # <<<<<<<<<<<<<< * def timer_singleShot(msec, func): * if pydata.singleshot_handler is None: #px+ */ /*else*/ { __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2054, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (__Pyx_PyObject_SetAttrStr(__pyx_t_3, __pyx_n_s_singleshot_handler, Py_None) < 0) __PYX_ERR(0, 2054, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __pyx_L3:; /* "_qt_qtwes2.pyx":2048 * * #XXX: avoid this function, only one active singleShot-handler * cdef void _on_singleShot() with gil: #px+ # <<<<<<<<<<<<<< * pydata.singleshot_handler() #px+ * if pydata.singleshot_queue: #px+ */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_5); __Pyx_WriteUnraisable("_qt_qtwes2._on_singleShot", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_XDECREF(__pyx_v_msec); __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwes2.pyx":2055 * else: #px+ * pydata.singleshot_handler = None #px+ * def timer_singleShot(msec, func): # <<<<<<<<<<<<<< * if pydata.singleshot_handler is None: #px+ * pydata.singleshot_handler = func #px+ */ /* Python wrapper */ static PyObject *__pyx_pw_10_qt_qtwes2_67timer_singleShot(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static PyMethodDef __pyx_mdef_10_qt_qtwes2_67timer_singleShot = {"timer_singleShot", (PyCFunction)__pyx_pw_10_qt_qtwes2_67timer_singleShot, METH_VARARGS|METH_KEYWORDS, 0}; static PyObject *__pyx_pw_10_qt_qtwes2_67timer_singleShot(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_msec = 0; PyObject *__pyx_v_func = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("timer_singleShot (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_msec,&__pyx_n_s_func,0}; PyObject* values[2] = {0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_msec)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_func)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("timer_singleShot", 1, 2, 2, 1); __PYX_ERR(0, 2055, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "timer_singleShot") < 0)) __PYX_ERR(0, 2055, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); } __pyx_v_msec = values[0]; __pyx_v_func = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("timer_singleShot", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2055, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("_qt_qtwes2.timer_singleShot", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_10_qt_qtwes2_66timer_singleShot(__pyx_self, __pyx_v_msec, __pyx_v_func); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_10_qt_qtwes2_66timer_singleShot(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_msec, PyObject *__pyx_v_func) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; int __pyx_t_3; int __pyx_t_4; int __pyx_t_5; int __pyx_t_6; __Pyx_RefNannySetupContext("timer_singleShot", 0); /* "_qt_qtwes2.pyx":2056 * pydata.singleshot_handler = None #px+ * def timer_singleShot(msec, func): * if pydata.singleshot_handler is None: #px+ # <<<<<<<<<<<<<< * pydata.singleshot_handler = func #px+ * singleShot(msec, _on_singleShot) #px+ */ __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2056, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_singleshot_handler); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2056, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_3 = (__pyx_t_2 == Py_None); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_4 = (__pyx_t_3 != 0); if (__pyx_t_4) { /* "_qt_qtwes2.pyx":2057 * def timer_singleShot(msec, func): * if pydata.singleshot_handler is None: #px+ * pydata.singleshot_handler = func #px+ # <<<<<<<<<<<<<< * singleShot(msec, _on_singleShot) #px+ * else: #px+ */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2057, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (__Pyx_PyObject_SetAttrStr(__pyx_t_2, __pyx_n_s_singleshot_handler, __pyx_v_func) < 0) __PYX_ERR(0, 2057, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwes2.pyx":2058 * if pydata.singleshot_handler is None: #px+ * pydata.singleshot_handler = func #px+ * singleShot(msec, _on_singleShot) #px+ # <<<<<<<<<<<<<< * else: #px+ * pydata.singleshot_queue.append((msec, func)) #px+ */ __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_v_msec); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2058, __pyx_L1_error) QTimer::singleShot(__pyx_t_5, __pyx_f_10_qt_qtwes2__on_singleShot); /* "_qt_qtwes2.pyx":2056 * pydata.singleshot_handler = None #px+ * def timer_singleShot(msec, func): * if pydata.singleshot_handler is None: #px+ # <<<<<<<<<<<<<< * pydata.singleshot_handler = func #px+ * singleShot(msec, _on_singleShot) #px+ */ goto __pyx_L3; } /* "_qt_qtwes2.pyx":2060 * singleShot(msec, _on_singleShot) #px+ * else: #px+ * pydata.singleshot_queue.append((msec, func)) #px+ # <<<<<<<<<<<<<< * ##px- * #QTimer.singleShot(msec, func) */ /*else*/ { __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2060, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_singleshot_queue); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2060, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2060, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_msec); __Pyx_GIVEREF(__pyx_v_msec); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_msec); __Pyx_INCREF(__pyx_v_func); __Pyx_GIVEREF(__pyx_v_func); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_func); __pyx_t_6 = __Pyx_PyObject_Append(__pyx_t_1, __pyx_t_2); if (unlikely(__pyx_t_6 == -1)) __PYX_ERR(0, 2060, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } __pyx_L3:; /* "_qt_qtwes2.pyx":2055 * else: #px+ * pydata.singleshot_handler = None #px+ * def timer_singleShot(msec, func): # <<<<<<<<<<<<<< * if pydata.singleshot_handler is None: #px+ * pydata.singleshot_handler = func #px+ */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("_qt_qtwes2.timer_singleShot", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwes2.pyx":2065 * * ##pxm-FUNC P with gil * cdef void _on_settings_timer_timeout() with gil: # <<<<<<<<<<<<<< * pydata.app.on_settings_timer_timeout() * */ static void __pyx_f_10_qt_qtwes2__on_settings_timer_timeout(void) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("_on_settings_timer_timeout", 0); /* "_qt_qtwes2.pyx":2066 * ##pxm-FUNC P with gil * cdef void _on_settings_timer_timeout() with gil: * pydata.app.on_settings_timer_timeout() # <<<<<<<<<<<<<< * * ##pxm-FUNC P */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2066, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_app); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2066, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_on_settings_timer_timeout); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2066, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } if (__pyx_t_3) { __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2066, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2066, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwes2.pyx":2065 * * ##pxm-FUNC P with gil * cdef void _on_settings_timer_timeout() with gil: # <<<<<<<<<<<<<< * pydata.app.on_settings_timer_timeout() * */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_WriteUnraisable("_qt_qtwes2._on_settings_timer_timeout", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwes2.pyx":2069 * * ##pxm-FUNC P * cdef void settings_timer_create(): # <<<<<<<<<<<<<< * uidata.settings_timer = new QTimer() #px/ * #uidata.settings_timer = QTimer() */ static void __pyx_f_10_qt_qtwes2_settings_timer_create(void) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("settings_timer_create", 0); /* "_qt_qtwes2.pyx":2070 * ##pxm-FUNC P * cdef void settings_timer_create(): * uidata.settings_timer = new QTimer() #px/ # <<<<<<<<<<<<<< * #uidata.settings_timer = QTimer() * uidata.settings_timer.setInterval(5000) */ __pyx_v_10_qt_qtwes2_uidata.settings_timer = new QTimer(); /* "_qt_qtwes2.pyx":2072 * uidata.settings_timer = new QTimer() #px/ * #uidata.settings_timer = QTimer() * uidata.settings_timer.setInterval(5000) # <<<<<<<<<<<<<< * uidata.settings_timer.setSingleShot(True) * connect(uidata.settings_timer, &timeout, _on_settings_timer_timeout) #px/ */ __pyx_v_10_qt_qtwes2_uidata.settings_timer->setInterval(0x1388); /* "_qt_qtwes2.pyx":2073 * #uidata.settings_timer = QTimer() * uidata.settings_timer.setInterval(5000) * uidata.settings_timer.setSingleShot(True) # <<<<<<<<<<<<<< * connect(uidata.settings_timer, &timeout, _on_settings_timer_timeout) #px/ * #uidata.settings_timer.timeout.connect(_on_settings_timer_timeout) */ __pyx_v_10_qt_qtwes2_uidata.settings_timer->setSingleShot(1); /* "_qt_qtwes2.pyx":2074 * uidata.settings_timer.setInterval(5000) * uidata.settings_timer.setSingleShot(True) * connect(uidata.settings_timer, &timeout, _on_settings_timer_timeout) #px/ # <<<<<<<<<<<<<< * #uidata.settings_timer.timeout.connect(_on_settings_timer_timeout) * */ QObject::connect(__pyx_v_10_qt_qtwes2_uidata.settings_timer, (&QTimer::timeout), __pyx_f_10_qt_qtwes2__on_settings_timer_timeout); /* "_qt_qtwes2.pyx":2069 * * ##pxm-FUNC P * cdef void settings_timer_create(): # <<<<<<<<<<<<<< * uidata.settings_timer = new QTimer() #px/ * #uidata.settings_timer = QTimer() */ /* function exit code */ __Pyx_RefNannyFinishContext(); } /* "_qt_qtwes2.pyx":2078 * * ##pxm-FUNC P * cpdef settings_timer_start(): # <<<<<<<<<<<<<< * if not uidata.settings_timer.isActive(): * uidata.settings_timer.start() */ static PyObject *__pyx_pw_10_qt_qtwes2_69settings_timer_start(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/ static PyObject *__pyx_f_10_qt_qtwes2_settings_timer_start(CYTHON_UNUSED int __pyx_skip_dispatch) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; __Pyx_RefNannySetupContext("settings_timer_start", 0); /* "_qt_qtwes2.pyx":2079 * ##pxm-FUNC P * cpdef settings_timer_start(): * if not uidata.settings_timer.isActive(): # <<<<<<<<<<<<<< * uidata.settings_timer.start() * */ __pyx_t_1 = ((!(__pyx_v_10_qt_qtwes2_uidata.settings_timer->isActive() != 0)) != 0); if (__pyx_t_1) { /* "_qt_qtwes2.pyx":2080 * cpdef settings_timer_start(): * if not uidata.settings_timer.isActive(): * uidata.settings_timer.start() # <<<<<<<<<<<<<< * * ##pxm-FUNC P */ __pyx_v_10_qt_qtwes2_uidata.settings_timer->start(); /* "_qt_qtwes2.pyx":2079 * ##pxm-FUNC P * cpdef settings_timer_start(): * if not uidata.settings_timer.isActive(): # <<<<<<<<<<<<<< * uidata.settings_timer.start() * */ } /* "_qt_qtwes2.pyx":2078 * * ##pxm-FUNC P * cpdef settings_timer_start(): # <<<<<<<<<<<<<< * if not uidata.settings_timer.isActive(): * uidata.settings_timer.start() */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* Python wrapper */ static PyObject *__pyx_pw_10_qt_qtwes2_69settings_timer_start(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/ static PyObject *__pyx_pw_10_qt_qtwes2_69settings_timer_start(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("settings_timer_start (wrapper)", 0); __pyx_r = __pyx_pf_10_qt_qtwes2_68settings_timer_start(__pyx_self); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_10_qt_qtwes2_68settings_timer_start(CYTHON_UNUSED PyObject *__pyx_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("settings_timer_start", 0); __Pyx_XDECREF(__pyx_r); __pyx_t_1 = __pyx_f_10_qt_qtwes2_settings_timer_start(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2078, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("_qt_qtwes2.settings_timer_start", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwes2.pyx":2083 * * ##pxm-FUNC P * cdef void settings_timer_destroy(): # <<<<<<<<<<<<<< * uidata.settings_timer.stop() * uidata.settings_timer.deleteLater() */ static void __pyx_f_10_qt_qtwes2_settings_timer_destroy(void) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("settings_timer_destroy", 0); /* "_qt_qtwes2.pyx":2084 * ##pxm-FUNC P * cdef void settings_timer_destroy(): * uidata.settings_timer.stop() # <<<<<<<<<<<<<< * uidata.settings_timer.deleteLater() * uidata.settings_timer = NULL */ __pyx_v_10_qt_qtwes2_uidata.settings_timer->stop(); /* "_qt_qtwes2.pyx":2085 * cdef void settings_timer_destroy(): * uidata.settings_timer.stop() * uidata.settings_timer.deleteLater() # <<<<<<<<<<<<<< * uidata.settings_timer = NULL * */ __pyx_v_10_qt_qtwes2_uidata.settings_timer->deleteLater(); /* "_qt_qtwes2.pyx":2086 * uidata.settings_timer.stop() * uidata.settings_timer.deleteLater() * uidata.settings_timer = NULL # <<<<<<<<<<<<<< * * def set_animation_speed(): */ __pyx_v_10_qt_qtwes2_uidata.settings_timer = NULL; /* "_qt_qtwes2.pyx":2083 * * ##pxm-FUNC P * cdef void settings_timer_destroy(): # <<<<<<<<<<<<<< * uidata.settings_timer.stop() * uidata.settings_timer.deleteLater() */ /* function exit code */ __Pyx_RefNannyFinishContext(); } /* "_qt_qtwes2.pyx":2088 * uidata.settings_timer = NULL * * def set_animation_speed(): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * uidata.speed = settings['draw.speed'] */ /* Python wrapper */ static PyObject *__pyx_pw_10_qt_qtwes2_71set_animation_speed(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/ static PyMethodDef __pyx_mdef_10_qt_qtwes2_71set_animation_speed = {"set_animation_speed", (PyCFunction)__pyx_pw_10_qt_qtwes2_71set_animation_speed, METH_NOARGS, 0}; static PyObject *__pyx_pw_10_qt_qtwes2_71set_animation_speed(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("set_animation_speed (wrapper)", 0); __pyx_r = __pyx_pf_10_qt_qtwes2_70set_animation_speed(__pyx_self); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_10_qt_qtwes2_70set_animation_speed(CYTHON_UNUSED PyObject *__pyx_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; float __pyx_t_3; __Pyx_RefNannySetupContext("set_animation_speed", 0); /* "_qt_qtwes2.pyx":2090 * def set_animation_speed(): * ##pxm>IF 'qtw' == 'qtw' * uidata.speed = settings['draw.speed'] # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtq' * #~ ctx_invoke(b'animation_speed_changed') */ __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2090, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyObject_GetItem(__pyx_t_1, __pyx_kp_u_draw_speed); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2090, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_3 = __pyx_PyFloat_AsFloat(__pyx_t_2); if (unlikely((__pyx_t_3 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 2090, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_10_qt_qtwes2_uidata.speed = __pyx_t_3; /* "_qt_qtwes2.pyx":2088 * uidata.settings_timer = NULL * * def set_animation_speed(): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * uidata.speed = settings['draw.speed'] */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("_qt_qtwes2.set_animation_speed", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwes2.pyx":2096 * * ##pxm-FUNC P * cdef void animation_init(): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * uidata.animate_timer = new QTimer() #px/ */ static void __pyx_f_10_qt_qtwes2_animation_init(void) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; __Pyx_RefNannySetupContext("animation_init", 0); /* "_qt_qtwes2.pyx":2098 * cdef void animation_init(): * ##pxm>IF 'qtw' == 'qtw' * uidata.animate_timer = new QTimer() #px/ # <<<<<<<<<<<<<< * #uidata.animate_timer = QTimer() * #uidata.animate_timer.setInterval(5000) */ __pyx_v_10_qt_qtwes2_uidata.animate_timer = new QTimer(); /* "_qt_qtwes2.pyx":2101 * #uidata.animate_timer = QTimer() * #uidata.animate_timer.setInterval(5000) * connect(uidata.animate_timer, &timeout, _on_animate_timer_timeout) #px/ # <<<<<<<<<<<<<< * #uidata.animate_timer.timeout.connect(_on_animate_timer_timeout) * ##pxm>IF 'qtw' == 'qtq' */ QObject::connect(__pyx_v_10_qt_qtwes2_uidata.animate_timer, (&QTimer::timeout), __pyx_f_10_qt_qtwes2__on_animate_timer_timeout); /* "_qt_qtwes2.pyx":2106 * #~ ctx_set(b'animation_running', False) * #~ ##pxm>IF_END * set_animation_speed() # <<<<<<<<<<<<<< * * ##pxm>IF 'qtw' == 'qtw' */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_set_animation_speed); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2106, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } if (__pyx_t_3) { __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2106, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2106, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwes2.pyx":2096 * * ##pxm-FUNC P * cdef void animation_init(): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * uidata.animate_timer = new QTimer() #px/ */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_WriteUnraisable("_qt_qtwes2.animation_init", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); } /* "_qt_qtwes2.pyx":2110 * ##pxm>IF 'qtw' == 'qtw' * ##pxm-FUNC P with gil * cdef void _on_animate_timer_timeout() with gil: # <<<<<<<<<<<<<< * cdef float increment #px+ * increment = uidata.speed * 1e-02 * 20 */ static void __pyx_f_10_qt_qtwes2__on_animate_timer_timeout(void) { float __pyx_v_increment; __Pyx_RefNannyDeclarations long __pyx_t_1; float __pyx_t_2; float __pyx_t_3; int __pyx_t_4; PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; PyObject *__pyx_t_7 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("_on_animate_timer_timeout", 0); /* "_qt_qtwes2.pyx":2112 * cdef void _on_animate_timer_timeout() with gil: * cdef float increment #px+ * increment = uidata.speed * 1e-02 * 20 # <<<<<<<<<<<<<< * increment = min(increment, 45) * uidata.animation_angle += increment */ __pyx_v_increment = ((__pyx_v_10_qt_qtwes2_uidata.speed * 1e-02) * 20.0); /* "_qt_qtwes2.pyx":2113 * cdef float increment #px+ * increment = uidata.speed * 1e-02 * 20 * increment = min(increment, 45) # <<<<<<<<<<<<<< * uidata.animation_angle += increment * glarea.set_animation_next(uidata.animation_angle) */ __pyx_t_1 = 45; __pyx_t_2 = __pyx_v_increment; if (((__pyx_t_1 < __pyx_t_2) != 0)) { __pyx_t_3 = __pyx_t_1; } else { __pyx_t_3 = __pyx_t_2; } __pyx_v_increment = __pyx_t_3; /* "_qt_qtwes2.pyx":2114 * increment = uidata.speed * 1e-02 * 20 * increment = min(increment, 45) * uidata.animation_angle += increment # <<<<<<<<<<<<<< * glarea.set_animation_next(uidata.animation_angle) * if uidata.animation_angle < uidata.angle_max: */ __pyx_v_10_qt_qtwes2_uidata.animation_angle = (__pyx_v_10_qt_qtwes2_uidata.animation_angle + __pyx_v_increment); /* "_qt_qtwes2.pyx":2115 * increment = min(increment, 45) * uidata.animation_angle += increment * glarea.set_animation_next(uidata.animation_angle) # <<<<<<<<<<<<<< * if uidata.animation_angle < uidata.angle_max: * update_drawingarea() */ __pyx_f_11_glarea_es2_set_animation_next(__pyx_v_10_qt_qtwes2_uidata.animation_angle); /* "_qt_qtwes2.pyx":2116 * uidata.animation_angle += increment * glarea.set_animation_next(uidata.animation_angle) * if uidata.animation_angle < uidata.angle_max: # <<<<<<<<<<<<<< * update_drawingarea() * else: */ __pyx_t_4 = ((__pyx_v_10_qt_qtwes2_uidata.animation_angle < __pyx_v_10_qt_qtwes2_uidata.angle_max) != 0); if (__pyx_t_4) { /* "_qt_qtwes2.pyx":2117 * glarea.set_animation_next(uidata.animation_angle) * if uidata.animation_angle < uidata.angle_max: * update_drawingarea() # <<<<<<<<<<<<<< * else: * pydata.app.on_animation_ending() */ __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_update_drawingarea); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2117, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); } } if (__pyx_t_7) { __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2117, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } else { __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2117, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; /* "_qt_qtwes2.pyx":2116 * uidata.animation_angle += increment * glarea.set_animation_next(uidata.animation_angle) * if uidata.animation_angle < uidata.angle_max: # <<<<<<<<<<<<<< * update_drawingarea() * else: */ goto __pyx_L3; } /* "_qt_qtwes2.pyx":2119 * update_drawingarea() * else: * pydata.app.on_animation_ending() # <<<<<<<<<<<<<< * ##pxm>IF_END * */ /*else*/ { __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2119, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_app); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2119, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_on_animation_ending); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2119, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); } } if (__pyx_t_7) { __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2119, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } else { __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2119, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __pyx_L3:; /* "_qt_qtwes2.pyx":2110 * ##pxm>IF 'qtw' == 'qtw' * ##pxm-FUNC P with gil * cdef void _on_animate_timer_timeout() with gil: # <<<<<<<<<<<<<< * cdef float increment #px+ * increment = uidata.speed * 1e-02 * 20 */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_WriteUnraisable("_qt_qtwes2._on_animate_timer_timeout", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwes2.pyx":2123 * * ##pxm-FUNC P * cpdef animate_timer_start(msec, angle_max): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * uidata.animation_angle = 0. */ static PyObject *__pyx_pw_10_qt_qtwes2_73animate_timer_start(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static PyObject *__pyx_f_10_qt_qtwes2_animate_timer_start(PyObject *__pyx_v_msec, PyObject *__pyx_v_angle_max, CYTHON_UNUSED int __pyx_skip_dispatch) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations float __pyx_t_1; int __pyx_t_2; int __pyx_t_3; __Pyx_RefNannySetupContext("animate_timer_start", 0); /* "_qt_qtwes2.pyx":2125 * cpdef animate_timer_start(msec, angle_max): * ##pxm>IF 'qtw' == 'qtw' * uidata.animation_angle = 0. # <<<<<<<<<<<<<< * uidata.angle_max = angle_max * if not uidata.animate_timer.isActive(): */ __pyx_v_10_qt_qtwes2_uidata.animation_angle = 0.; /* "_qt_qtwes2.pyx":2126 * ##pxm>IF 'qtw' == 'qtw' * uidata.animation_angle = 0. * uidata.angle_max = angle_max # <<<<<<<<<<<<<< * if not uidata.animate_timer.isActive(): * uidata.animate_timer.start(msec) */ __pyx_t_1 = __pyx_PyFloat_AsFloat(__pyx_v_angle_max); if (unlikely((__pyx_t_1 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 2126, __pyx_L1_error) __pyx_v_10_qt_qtwes2_uidata.angle_max = __pyx_t_1; /* "_qt_qtwes2.pyx":2127 * uidata.animation_angle = 0. * uidata.angle_max = angle_max * if not uidata.animate_timer.isActive(): # <<<<<<<<<<<<<< * uidata.animate_timer.start(msec) * ##pxm>IF 'qtw' == 'qtq' */ __pyx_t_2 = ((!(__pyx_v_10_qt_qtwes2_uidata.animate_timer->isActive() != 0)) != 0); if (__pyx_t_2) { /* "_qt_qtwes2.pyx":2128 * uidata.angle_max = angle_max * if not uidata.animate_timer.isActive(): * uidata.animate_timer.start(msec) # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtq' * #~ ctx_set(b'animation_maxangle', angle_max) */ __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_v_msec); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2128, __pyx_L1_error) __pyx_v_10_qt_qtwes2_uidata.animate_timer->start(__pyx_t_3); /* "_qt_qtwes2.pyx":2127 * uidata.animation_angle = 0. * uidata.angle_max = angle_max * if not uidata.animate_timer.isActive(): # <<<<<<<<<<<<<< * uidata.animate_timer.start(msec) * ##pxm>IF 'qtw' == 'qtq' */ } /* "_qt_qtwes2.pyx":2123 * * ##pxm-FUNC P * cpdef animate_timer_start(msec, angle_max): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * uidata.animation_angle = 0. */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("_qt_qtwes2.animate_timer_start", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* Python wrapper */ static PyObject *__pyx_pw_10_qt_qtwes2_73animate_timer_start(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static PyObject *__pyx_pw_10_qt_qtwes2_73animate_timer_start(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_msec = 0; PyObject *__pyx_v_angle_max = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("animate_timer_start (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_msec,&__pyx_n_s_angle_max,0}; PyObject* values[2] = {0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_msec)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_angle_max)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("animate_timer_start", 1, 2, 2, 1); __PYX_ERR(0, 2123, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "animate_timer_start") < 0)) __PYX_ERR(0, 2123, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); } __pyx_v_msec = values[0]; __pyx_v_angle_max = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("animate_timer_start", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2123, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("_qt_qtwes2.animate_timer_start", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_10_qt_qtwes2_72animate_timer_start(__pyx_self, __pyx_v_msec, __pyx_v_angle_max); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_10_qt_qtwes2_72animate_timer_start(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_msec, PyObject *__pyx_v_angle_max) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("animate_timer_start", 0); __Pyx_XDECREF(__pyx_r); __pyx_t_1 = __pyx_f_10_qt_qtwes2_animate_timer_start(__pyx_v_msec, __pyx_v_angle_max, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2123, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("_qt_qtwes2.animate_timer_start", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwes2.pyx":2135 * * # only for demos * def animate_timer_step(angle_max): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * uidata.angle_max = angle_max */ /* Python wrapper */ static PyObject *__pyx_pw_10_qt_qtwes2_75animate_timer_step(PyObject *__pyx_self, PyObject *__pyx_v_angle_max); /*proto*/ static PyMethodDef __pyx_mdef_10_qt_qtwes2_75animate_timer_step = {"animate_timer_step", (PyCFunction)__pyx_pw_10_qt_qtwes2_75animate_timer_step, METH_O, 0}; static PyObject *__pyx_pw_10_qt_qtwes2_75animate_timer_step(PyObject *__pyx_self, PyObject *__pyx_v_angle_max) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("animate_timer_step (wrapper)", 0); __pyx_r = __pyx_pf_10_qt_qtwes2_74animate_timer_step(__pyx_self, ((PyObject *)__pyx_v_angle_max)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_10_qt_qtwes2_74animate_timer_step(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_angle_max) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations float __pyx_t_1; __Pyx_RefNannySetupContext("animate_timer_step", 0); /* "_qt_qtwes2.pyx":2137 * def animate_timer_step(angle_max): * ##pxm>IF 'qtw' == 'qtw' * uidata.angle_max = angle_max # <<<<<<<<<<<<<< * _on_animate_timer_timeout() * ##pxm>IF_END */ __pyx_t_1 = __pyx_PyFloat_AsFloat(__pyx_v_angle_max); if (unlikely((__pyx_t_1 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 2137, __pyx_L1_error) __pyx_v_10_qt_qtwes2_uidata.angle_max = __pyx_t_1; /* "_qt_qtwes2.pyx":2138 * ##pxm>IF 'qtw' == 'qtw' * uidata.angle_max = angle_max * _on_animate_timer_timeout() # <<<<<<<<<<<<<< * ##pxm>IF_END * pass */ __pyx_f_10_qt_qtwes2__on_animate_timer_timeout(); /* "_qt_qtwes2.pyx":2135 * * # only for demos * def animate_timer_step(angle_max): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * uidata.angle_max = angle_max */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("_qt_qtwes2.animate_timer_step", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwes2.pyx":2142 * pass * * def animate_timer_stop(): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * uidata.animate_timer.stop() */ /* Python wrapper */ static PyObject *__pyx_pw_10_qt_qtwes2_77animate_timer_stop(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/ static PyMethodDef __pyx_mdef_10_qt_qtwes2_77animate_timer_stop = {"animate_timer_stop", (PyCFunction)__pyx_pw_10_qt_qtwes2_77animate_timer_stop, METH_NOARGS, 0}; static PyObject *__pyx_pw_10_qt_qtwes2_77animate_timer_stop(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("animate_timer_stop (wrapper)", 0); __pyx_r = __pyx_pf_10_qt_qtwes2_76animate_timer_stop(__pyx_self); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_10_qt_qtwes2_76animate_timer_stop(CYTHON_UNUSED PyObject *__pyx_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("animate_timer_stop", 0); /* "_qt_qtwes2.pyx":2144 * def animate_timer_stop(): * ##pxm>IF 'qtw' == 'qtw' * uidata.animate_timer.stop() # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtq' * #~ ctx_set(b'animation_running', False) */ __pyx_v_10_qt_qtwes2_uidata.animate_timer->stop(); /* "_qt_qtwes2.pyx":2142 * pass * * def animate_timer_stop(): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * uidata.animate_timer.stop() */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwes2.pyx":2151 * ##pxm>IF 'qtw' == 'qtw' * ##pxm-FUNC P * cdef void animate_timer_destroy(): # <<<<<<<<<<<<<< * uidata.animate_timer.stop() * uidata.animate_timer.deleteLater() */ static void __pyx_f_10_qt_qtwes2_animate_timer_destroy(void) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("animate_timer_destroy", 0); /* "_qt_qtwes2.pyx":2152 * ##pxm-FUNC P * cdef void animate_timer_destroy(): * uidata.animate_timer.stop() # <<<<<<<<<<<<<< * uidata.animate_timer.deleteLater() * uidata.animate_timer = NULL */ __pyx_v_10_qt_qtwes2_uidata.animate_timer->stop(); /* "_qt_qtwes2.pyx":2153 * cdef void animate_timer_destroy(): * uidata.animate_timer.stop() * uidata.animate_timer.deleteLater() # <<<<<<<<<<<<<< * uidata.animate_timer = NULL * ##pxm>IF_END */ __pyx_v_10_qt_qtwes2_uidata.animate_timer->deleteLater(); /* "_qt_qtwes2.pyx":2154 * uidata.animate_timer.stop() * uidata.animate_timer.deleteLater() * uidata.animate_timer = NULL # <<<<<<<<<<<<<< * ##pxm>IF_END * */ __pyx_v_10_qt_qtwes2_uidata.animate_timer = NULL; /* "_qt_qtwes2.pyx":2151 * ##pxm>IF 'qtw' == 'qtw' * ##pxm-FUNC P * cdef void animate_timer_destroy(): # <<<<<<<<<<<<<< * uidata.animate_timer.stop() * uidata.animate_timer.deleteLater() */ /* function exit code */ __Pyx_RefNannyFinishContext(); } /* "_qt_qtwes2.pyx":2158 * * ##pxm-FUNC P * cdef void load_cursors(filepattern): # <<<<<<<<<<<<<< * cdef QImage images[17] #px/ * #images = [None]*17 */ static void __pyx_f_10_qt_qtwes2_load_cursors(PyObject *__pyx_v_filepattern) { QImage __pyx_v_images[17]; PyObject *__pyx_v_pos = NULL; PyObject *__pyx_v_i = NULL; PyObject *__pyx_v_x = NULL; PyObject *__pyx_v_y = NULL; PyObject *__pyx_v_filename = NULL; QTransform __pyx_v_transform; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; Py_ssize_t __pyx_t_4; PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; PyObject *__pyx_t_7 = NULL; PyObject *(*__pyx_t_8)(PyObject *); Py_ssize_t __pyx_t_9; int __pyx_t_10; PyObject *(*__pyx_t_11)(PyObject *); Py_ssize_t __pyx_t_12; int __pyx_t_13; int __pyx_t_14; __Pyx_RefNannySetupContext("load_cursors", 0); /* "_qt_qtwes2.pyx":2161 * cdef QImage images[17] #px/ * #images = [None]*17 * pos = [] # <<<<<<<<<<<<<< * # Load 3 cursors from file (n - ne) * for i, (x, y) in enumerate([(8, 0), (15, 0), (15, 0)]): */ __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2161, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_pos = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwes2.pyx":2163 * pos = [] * # Load 3 cursors from file (n - ne) * for i, (x, y) in enumerate([(8, 0), (15, 0), (15, 0)]): # <<<<<<<<<<<<<< * filename = filepattern.format(i) * images[i+1] = QImage(str2q(filename)) */ __Pyx_INCREF(__pyx_int_0); __pyx_t_1 = __pyx_int_0; __pyx_t_2 = PyList_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2163, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_tuple__25); __Pyx_GIVEREF(__pyx_tuple__25); PyList_SET_ITEM(__pyx_t_2, 0, __pyx_tuple__25); __Pyx_INCREF(__pyx_tuple__26); __Pyx_GIVEREF(__pyx_tuple__26); PyList_SET_ITEM(__pyx_t_2, 1, __pyx_tuple__26); __Pyx_INCREF(__pyx_tuple__27); __Pyx_GIVEREF(__pyx_tuple__27); PyList_SET_ITEM(__pyx_t_2, 2, __pyx_tuple__27); __pyx_t_3 = __pyx_t_2; __Pyx_INCREF(__pyx_t_3); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; for (;;) { if (__pyx_t_4 >= 3) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_2 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 2163, __pyx_L1_error) #else __pyx_t_2 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2163, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); #endif if ((likely(PyTuple_CheckExact(__pyx_t_2))) || (PyList_CheckExact(__pyx_t_2))) { PyObject* sequence = __pyx_t_2; #if !CYTHON_COMPILING_IN_PYPY Py_ssize_t size = Py_SIZE(sequence); #else Py_ssize_t size = PySequence_Size(sequence); #endif if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 2163, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_5 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_5 = PyList_GET_ITEM(sequence, 0); __pyx_t_6 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(__pyx_t_6); #else __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2163, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2163, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); #endif __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else { Py_ssize_t index = -1; __pyx_t_7 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2163, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_8 = Py_TYPE(__pyx_t_7)->tp_iternext; index = 0; __pyx_t_5 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_5)) goto __pyx_L5_unpacking_failed; __Pyx_GOTREF(__pyx_t_5); index = 1; __pyx_t_6 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_6)) goto __pyx_L5_unpacking_failed; __Pyx_GOTREF(__pyx_t_6); if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 2) < 0) __PYX_ERR(0, 2163, __pyx_L1_error) __pyx_t_8 = NULL; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; goto __pyx_L6_unpacking_done; __pyx_L5_unpacking_failed:; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_8 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 2163, __pyx_L1_error) __pyx_L6_unpacking_done:; } __Pyx_XDECREF_SET(__pyx_v_x, __pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF_SET(__pyx_v_y, __pyx_t_6); __pyx_t_6 = 0; __Pyx_INCREF(__pyx_t_1); __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_1); __pyx_t_2 = __Pyx_PyInt_AddObjC(__pyx_t_1, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2163, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = __pyx_t_2; __pyx_t_2 = 0; /* "_qt_qtwes2.pyx":2164 * # Load 3 cursors from file (n - ne) * for i, (x, y) in enumerate([(8, 0), (15, 0), (15, 0)]): * filename = filepattern.format(i) # <<<<<<<<<<<<<< * images[i+1] = QImage(str2q(filename)) * pos.append((x, y)) */ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_filepattern, __pyx_n_s_format); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2164, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); } } if (!__pyx_t_5) { __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_i); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2164, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_v_i}; __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2164, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_2); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_v_i}; __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2164, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_2); } else #endif { __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2164, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL; __Pyx_INCREF(__pyx_v_i); __Pyx_GIVEREF(__pyx_v_i); PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_v_i); __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2164, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF_SET(__pyx_v_filename, __pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwes2.pyx":2165 * for i, (x, y) in enumerate([(8, 0), (15, 0), (15, 0)]): * filename = filepattern.format(i) * images[i+1] = QImage(str2q(filename)) # <<<<<<<<<<<<<< * pos.append((x, y)) * # 1 cursor (nnw) */ __pyx_t_2 = __Pyx_PyInt_AddObjC(__pyx_v_i, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2165, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_9 = __Pyx_PyIndex_AsSsize_t(__pyx_t_2); if (unlikely((__pyx_t_9 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2165, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; (__pyx_v_images[__pyx_t_9]) = QImage(__pyx_f_10_qt_qtwes2_str2q(__pyx_v_filename)); /* "_qt_qtwes2.pyx":2166 * filename = filepattern.format(i) * images[i+1] = QImage(str2q(filename)) * pos.append((x, y)) # <<<<<<<<<<<<<< * # 1 cursor (nnw) * x, y = pos[1] */ __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2166, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_x); __Pyx_GIVEREF(__pyx_v_x); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_x); __Pyx_INCREF(__pyx_v_y); __Pyx_GIVEREF(__pyx_v_y); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_y); __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_pos, __pyx_t_2); if (unlikely(__pyx_t_10 == -1)) __PYX_ERR(0, 2166, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwes2.pyx":2163 * pos = [] * # Load 3 cursors from file (n - ne) * for i, (x, y) in enumerate([(8, 0), (15, 0), (15, 0)]): # <<<<<<<<<<<<<< * filename = filepattern.format(i) * images[i+1] = QImage(str2q(filename)) */ } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwes2.pyx":2168 * pos.append((x, y)) * # 1 cursor (nnw) * x, y = pos[1] # <<<<<<<<<<<<<< * images[0] = images[2].mirrored(True, False) * pos.insert(0, (15-x, y)) */ __pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_pos, 1, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2168, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; #if !CYTHON_COMPILING_IN_PYPY Py_ssize_t size = Py_SIZE(sequence); #else Py_ssize_t size = PySequence_Size(sequence); #endif if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 2168, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_3 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_2 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_3 = PyList_GET_ITEM(sequence, 0); __pyx_t_2 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(__pyx_t_2); #else __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2168, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2168, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2168, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_8 = Py_TYPE(__pyx_t_6)->tp_iternext; index = 0; __pyx_t_3 = __pyx_t_8(__pyx_t_6); if (unlikely(!__pyx_t_3)) goto __pyx_L7_unpacking_failed; __Pyx_GOTREF(__pyx_t_3); index = 1; __pyx_t_2 = __pyx_t_8(__pyx_t_6); if (unlikely(!__pyx_t_2)) goto __pyx_L7_unpacking_failed; __Pyx_GOTREF(__pyx_t_2); if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_6), 2) < 0) __PYX_ERR(0, 2168, __pyx_L1_error) __pyx_t_8 = NULL; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; goto __pyx_L8_unpacking_done; __pyx_L7_unpacking_failed:; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_8 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 2168, __pyx_L1_error) __pyx_L8_unpacking_done:; } __Pyx_XDECREF_SET(__pyx_v_x, __pyx_t_3); __pyx_t_3 = 0; __Pyx_XDECREF_SET(__pyx_v_y, __pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwes2.pyx":2169 * # 1 cursor (nnw) * x, y = pos[1] * images[0] = images[2].mirrored(True, False) # <<<<<<<<<<<<<< * pos.insert(0, (15-x, y)) * # 12 cursors (ene - nw) */ (__pyx_v_images[0]) = (__pyx_v_images[2]).mirrored(1, 0); /* "_qt_qtwes2.pyx":2170 * x, y = pos[1] * images[0] = images[2].mirrored(True, False) * pos.insert(0, (15-x, y)) # <<<<<<<<<<<<<< * # 12 cursors (ene - nw) * cdef QTransform transform #px/ */ __pyx_t_1 = __Pyx_PyInt_SubtractCObj(__pyx_int_15, __pyx_v_x, 15, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2170, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2170, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1); __Pyx_INCREF(__pyx_v_y); __Pyx_GIVEREF(__pyx_v_y); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_y); __pyx_t_1 = 0; __pyx_t_10 = PyList_Insert(__pyx_v_pos, 0, __pyx_t_2); if (unlikely(__pyx_t_10 == -1)) __PYX_ERR(0, 2170, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwes2.pyx":2174 * cdef QTransform transform #px/ * #transform = QTransform() * transform.rotate(90) # <<<<<<<<<<<<<< * for i in range(4, 16): * x, y = pos[i-4] */ __pyx_v_transform.rotate(90.0); /* "_qt_qtwes2.pyx":2175 * #transform = QTransform() * transform.rotate(90) * for i in range(4, 16): # <<<<<<<<<<<<<< * x, y = pos[i-4] * images[i] = images[i-4].transformed(transform) */ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_tuple__28, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2175, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (likely(PyList_CheckExact(__pyx_t_2)) || PyTuple_CheckExact(__pyx_t_2)) { __pyx_t_1 = __pyx_t_2; __Pyx_INCREF(__pyx_t_1); __pyx_t_4 = 0; __pyx_t_11 = NULL; } else { __pyx_t_4 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2175, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_11 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2175, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; for (;;) { if (likely(!__pyx_t_11)) { if (likely(PyList_CheckExact(__pyx_t_1))) { if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_1)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 2175, __pyx_L1_error) #else __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2175, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); #endif } else { if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_1)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 2175, __pyx_L1_error) #else __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2175, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); #endif } } else { __pyx_t_2 = __pyx_t_11(__pyx_t_1); if (unlikely(!__pyx_t_2)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 2175, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_2); } __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwes2.pyx":2176 * transform.rotate(90) * for i in range(4, 16): * x, y = pos[i-4] # <<<<<<<<<<<<<< * images[i] = images[i-4].transformed(transform) * pos.append((15-y, x)) */ __pyx_t_2 = __Pyx_PyInt_SubtractObjC(__pyx_v_i, __pyx_int_4, 4, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2176, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyObject_GetItem(__pyx_v_pos, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2176, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) { PyObject* sequence = __pyx_t_3; #if !CYTHON_COMPILING_IN_PYPY Py_ssize_t size = Py_SIZE(sequence); #else Py_ssize_t size = PySequence_Size(sequence); #endif if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 2176, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_2 = PyList_GET_ITEM(sequence, 0); __pyx_t_6 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx_t_6); #else __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2176, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2176, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); #endif __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { Py_ssize_t index = -1; __pyx_t_7 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2176, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_8 = Py_TYPE(__pyx_t_7)->tp_iternext; index = 0; __pyx_t_2 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_2)) goto __pyx_L11_unpacking_failed; __Pyx_GOTREF(__pyx_t_2); index = 1; __pyx_t_6 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_6)) goto __pyx_L11_unpacking_failed; __Pyx_GOTREF(__pyx_t_6); if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 2) < 0) __PYX_ERR(0, 2176, __pyx_L1_error) __pyx_t_8 = NULL; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; goto __pyx_L12_unpacking_done; __pyx_L11_unpacking_failed:; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_8 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 2176, __pyx_L1_error) __pyx_L12_unpacking_done:; } __Pyx_DECREF_SET(__pyx_v_x, __pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF_SET(__pyx_v_y, __pyx_t_6); __pyx_t_6 = 0; /* "_qt_qtwes2.pyx":2177 * for i in range(4, 16): * x, y = pos[i-4] * images[i] = images[i-4].transformed(transform) # <<<<<<<<<<<<<< * pos.append((15-y, x)) * images[16] = images[0] */ __pyx_t_3 = __Pyx_PyInt_SubtractObjC(__pyx_v_i, __pyx_int_4, 4, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2177, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_9 = __Pyx_PyIndex_AsSsize_t(__pyx_t_3); if (unlikely((__pyx_t_9 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2177, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_12 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_12 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2177, __pyx_L1_error) (__pyx_v_images[__pyx_t_12]) = (__pyx_v_images[__pyx_t_9]).transformed(__pyx_v_transform); /* "_qt_qtwes2.pyx":2178 * x, y = pos[i-4] * images[i] = images[i-4].transformed(transform) * pos.append((15-y, x)) # <<<<<<<<<<<<<< * images[16] = images[0] * pos.append(pos[0]) */ __pyx_t_3 = __Pyx_PyInt_SubtractCObj(__pyx_int_15, __pyx_v_y, 15, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2178, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2178, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3); __Pyx_INCREF(__pyx_v_x); __Pyx_GIVEREF(__pyx_v_x); PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_v_x); __pyx_t_3 = 0; __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_pos, __pyx_t_6); if (unlikely(__pyx_t_10 == -1)) __PYX_ERR(0, 2178, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; /* "_qt_qtwes2.pyx":2175 * #transform = QTransform() * transform.rotate(90) * for i in range(4, 16): # <<<<<<<<<<<<<< * x, y = pos[i-4] * images[i] = images[i-4].transformed(transform) */ } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwes2.pyx":2179 * images[i] = images[i-4].transformed(transform) * pos.append((15-y, x)) * images[16] = images[0] # <<<<<<<<<<<<<< * pos.append(pos[0]) * for i in range(16): */ (__pyx_v_images[16]) = (__pyx_v_images[0]); /* "_qt_qtwes2.pyx":2180 * pos.append((15-y, x)) * images[16] = images[0] * pos.append(pos[0]) # <<<<<<<<<<<<<< * for i in range(16): * x, y = pos[i+1] */ __pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_pos, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2180, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_pos, __pyx_t_1); if (unlikely(__pyx_t_10 == -1)) __PYX_ERR(0, 2180, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwes2.pyx":2181 * images[16] = images[0] * pos.append(pos[0]) * for i in range(16): # <<<<<<<<<<<<<< * x, y = pos[i+1] * uidata.cursors[i] = new QCursor(fromImage(images[i+1]), x, y) #px/ */ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_tuple__29, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2181, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) { __pyx_t_6 = __pyx_t_1; __Pyx_INCREF(__pyx_t_6); __pyx_t_4 = 0; __pyx_t_11 = NULL; } else { __pyx_t_4 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2181, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_11 = Py_TYPE(__pyx_t_6)->tp_iternext; if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2181, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; for (;;) { if (likely(!__pyx_t_11)) { if (likely(PyList_CheckExact(__pyx_t_6))) { if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_6)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_1 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 2181, __pyx_L1_error) #else __pyx_t_1 = PySequence_ITEM(__pyx_t_6, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2181, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); #endif } else { if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_6)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 2181, __pyx_L1_error) #else __pyx_t_1 = PySequence_ITEM(__pyx_t_6, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2181, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); #endif } } else { __pyx_t_1 = __pyx_t_11(__pyx_t_6); if (unlikely(!__pyx_t_1)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 2181, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_1); } __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwes2.pyx":2182 * pos.append(pos[0]) * for i in range(16): * x, y = pos[i+1] # <<<<<<<<<<<<<< * uidata.cursors[i] = new QCursor(fromImage(images[i+1]), x, y) #px/ * #uidata.cursors[i] = QCursor(fromImage(images[i+1]), x, y) */ __pyx_t_1 = __Pyx_PyInt_AddObjC(__pyx_v_i, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2182, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = PyObject_GetItem(__pyx_v_pos, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2182, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) { PyObject* sequence = __pyx_t_3; #if !CYTHON_COMPILING_IN_PYPY Py_ssize_t size = Py_SIZE(sequence); #else Py_ssize_t size = PySequence_Size(sequence); #endif if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 2182, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_1 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_2 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_1 = PyList_GET_ITEM(sequence, 0); __pyx_t_2 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(__pyx_t_2); #else __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2182, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2182, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); #endif __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { Py_ssize_t index = -1; __pyx_t_7 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2182, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_8 = Py_TYPE(__pyx_t_7)->tp_iternext; index = 0; __pyx_t_1 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_1)) goto __pyx_L15_unpacking_failed; __Pyx_GOTREF(__pyx_t_1); index = 1; __pyx_t_2 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_2)) goto __pyx_L15_unpacking_failed; __Pyx_GOTREF(__pyx_t_2); if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 2) < 0) __PYX_ERR(0, 2182, __pyx_L1_error) __pyx_t_8 = NULL; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; goto __pyx_L16_unpacking_done; __pyx_L15_unpacking_failed:; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_8 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 2182, __pyx_L1_error) __pyx_L16_unpacking_done:; } __Pyx_DECREF_SET(__pyx_v_x, __pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF_SET(__pyx_v_y, __pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwes2.pyx":2183 * for i in range(16): * x, y = pos[i+1] * uidata.cursors[i] = new QCursor(fromImage(images[i+1]), x, y) #px/ # <<<<<<<<<<<<<< * #uidata.cursors[i] = QCursor(fromImage(images[i+1]), x, y) * # cursor for center faces */ __pyx_t_3 = __Pyx_PyInt_AddObjC(__pyx_v_i, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2183, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_9 = __Pyx_PyIndex_AsSsize_t(__pyx_t_3); if (unlikely((__pyx_t_9 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2183, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_13 = __Pyx_PyInt_As_int(__pyx_v_x); if (unlikely((__pyx_t_13 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2183, __pyx_L1_error) __pyx_t_14 = __Pyx_PyInt_As_int(__pyx_v_y); if (unlikely((__pyx_t_14 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2183, __pyx_L1_error) __pyx_t_12 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_12 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2183, __pyx_L1_error) (__pyx_v_10_qt_qtwes2_uidata.cursors[__pyx_t_12]) = new QCursor(QPixmap::fromImage((__pyx_v_images[__pyx_t_9])), __pyx_t_13, __pyx_t_14); /* "_qt_qtwes2.pyx":2181 * images[16] = images[0] * pos.append(pos[0]) * for i in range(16): # <<<<<<<<<<<<<< * x, y = pos[i+1] * uidata.cursors[i] = new QCursor(fromImage(images[i+1]), x, y) #px/ */ } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; /* "_qt_qtwes2.pyx":2186 * #uidata.cursors[i] = QCursor(fromImage(images[i+1]), x, y) * # cursor for center faces * filename = filepattern.format('ccw') # <<<<<<<<<<<<<< * uidata.cursors[16] = new QCursor(QPixmap(str2q(filename)), 7, 7) #px/ * #uidata.cursors[16] = QCursor(QPixmap(str2q(filename)), 7, 7) */ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_filepattern, __pyx_n_s_format); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2186, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple__30, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2186, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF_SET(__pyx_v_filename, __pyx_t_3); __pyx_t_3 = 0; /* "_qt_qtwes2.pyx":2187 * # cursor for center faces * filename = filepattern.format('ccw') * uidata.cursors[16] = new QCursor(QPixmap(str2q(filename)), 7, 7) #px/ # <<<<<<<<<<<<<< * #uidata.cursors[16] = QCursor(QPixmap(str2q(filename)), 7, 7) * # background cursor */ (__pyx_v_10_qt_qtwes2_uidata.cursors[16]) = new QCursor(QPixmap(__pyx_f_10_qt_qtwes2_str2q(__pyx_v_filename)), 7, 7); /* "_qt_qtwes2.pyx":2190 * #uidata.cursors[16] = QCursor(QPixmap(str2q(filename)), 7, 7) * # background cursor * uidata.cursors[17] = new QCursor() #px/ # <<<<<<<<<<<<<< * #uidata.cursors[17] = QCursor() * uidata.cursors[17].setShape(Qt.CrossCursor) */ (__pyx_v_10_qt_qtwes2_uidata.cursors[17]) = new QCursor(); /* "_qt_qtwes2.pyx":2192 * uidata.cursors[17] = new QCursor() #px/ * #uidata.cursors[17] = QCursor() * uidata.cursors[17].setShape(Qt.CrossCursor) # <<<<<<<<<<<<<< * * ##pxm-FUNC P */ (__pyx_v_10_qt_qtwes2_uidata.cursors[17])->setShape(Qt::CrossCursor); /* "_qt_qtwes2.pyx":2158 * * ##pxm-FUNC P * cdef void load_cursors(filepattern): # <<<<<<<<<<<<<< * cdef QImage images[17] #px/ * #images = [None]*17 */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_WriteUnraisable("_qt_qtwes2.load_cursors", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_XDECREF(__pyx_v_pos); __Pyx_XDECREF(__pyx_v_i); __Pyx_XDECREF(__pyx_v_x); __Pyx_XDECREF(__pyx_v_y); __Pyx_XDECREF(__pyx_v_filename); __Pyx_RefNannyFinishContext(); } /* "_qt_qtwes2.pyx":2195 * * ##pxm-FUNC P * cdef void destroy_cursors(): # <<<<<<<<<<<<<< * for i in range(18): * del uidata.cursors[i] #px+ */ static void __pyx_f_10_qt_qtwes2_destroy_cursors(void) { long __pyx_v_i; __Pyx_RefNannyDeclarations long __pyx_t_1; __Pyx_RefNannySetupContext("destroy_cursors", 0); /* "_qt_qtwes2.pyx":2196 * ##pxm-FUNC P * cdef void destroy_cursors(): * for i in range(18): # <<<<<<<<<<<<<< * del uidata.cursors[i] #px+ * uidata.cursors[i] = NULL */ for (__pyx_t_1 = 0; __pyx_t_1 < 18; __pyx_t_1+=1) { __pyx_v_i = __pyx_t_1; /* "_qt_qtwes2.pyx":2197 * cdef void destroy_cursors(): * for i in range(18): * del uidata.cursors[i] #px+ # <<<<<<<<<<<<<< * uidata.cursors[i] = NULL * */ delete (__pyx_v_10_qt_qtwes2_uidata.cursors[__pyx_v_i]); /* "_qt_qtwes2.pyx":2198 * for i in range(18): * del uidata.cursors[i] #px+ * uidata.cursors[i] = NULL # <<<<<<<<<<<<<< * * ##pxm-FUNC P */ (__pyx_v_10_qt_qtwes2_uidata.cursors[__pyx_v_i]) = NULL; } /* "_qt_qtwes2.pyx":2195 * * ##pxm-FUNC P * cdef void destroy_cursors(): # <<<<<<<<<<<<<< * for i in range(18): * del uidata.cursors[i] #px+ */ /* function exit code */ __Pyx_RefNannyFinishContext(); } /* "_qt_qtwes2.pyx":2201 * * ##pxm-FUNC P * cdef void destroy_resources(): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * uidata.drawingarea.makeCurrent() */ static void __pyx_f_10_qt_qtwes2_destroy_resources(void) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; __Pyx_RefNannySetupContext("destroy_resources", 0); /* "_qt_qtwes2.pyx":2203 * cdef void destroy_resources(): * ##pxm>IF 'qtw' == 'qtw' * uidata.drawingarea.makeCurrent() # <<<<<<<<<<<<<< * gl_delete_atlas() * glarea.gl_exit() */ __pyx_v_10_qt_qtwes2_uidata.drawingarea->makeCurrent(); /* "_qt_qtwes2.pyx":2204 * ##pxm>IF 'qtw' == 'qtw' * uidata.drawingarea.makeCurrent() * gl_delete_atlas() # <<<<<<<<<<<<<< * glarea.gl_exit() * uidata.drawingarea.doneCurrent() */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_gl_delete_atlas); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2204, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } if (__pyx_t_3) { __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2204, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2204, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwes2.pyx":2205 * uidata.drawingarea.makeCurrent() * gl_delete_atlas() * glarea.gl_exit() # <<<<<<<<<<<<<< * uidata.drawingarea.doneCurrent() * uidata.drawingarea.setMouseTracking(False) */ __pyx_f_11_glarea_es2_gl_exit(); /* "_qt_qtwes2.pyx":2206 * gl_delete_atlas() * glarea.gl_exit() * uidata.drawingarea.doneCurrent() # <<<<<<<<<<<<<< * uidata.drawingarea.setMouseTracking(False) * ##pxm>IF 'qtw' == 'qtq' */ __pyx_v_10_qt_qtwes2_uidata.drawingarea->doneCurrent(); /* "_qt_qtwes2.pyx":2207 * glarea.gl_exit() * uidata.drawingarea.doneCurrent() * uidata.drawingarea.setMouseTracking(False) # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtq' * #~ settings['window.size'] = uidata.mainwindow.width(), uidata.mainwindow.height() */ __pyx_v_10_qt_qtwes2_uidata.drawingarea->setMouseTracking(0); /* "_qt_qtwes2.pyx":2201 * * ##pxm-FUNC P * cdef void destroy_resources(): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * uidata.drawingarea.makeCurrent() */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_WriteUnraisable("_qt_qtwes2.destroy_resources", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); } /* "_qt_qtwes2.pyx":2212 * #~ ##pxm>IF_END * * def create_window(pyapp): # <<<<<<<<<<<<<< * pydata.app = pyapp * init_module() */ /* Python wrapper */ static PyObject *__pyx_pw_10_qt_qtwes2_79create_window(PyObject *__pyx_self, PyObject *__pyx_v_pyapp); /*proto*/ static PyMethodDef __pyx_mdef_10_qt_qtwes2_79create_window = {"create_window", (PyCFunction)__pyx_pw_10_qt_qtwes2_79create_window, METH_O, 0}; static PyObject *__pyx_pw_10_qt_qtwes2_79create_window(PyObject *__pyx_self, PyObject *__pyx_v_pyapp) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("create_window (wrapper)", 0); __pyx_r = __pyx_pf_10_qt_qtwes2_78create_window(__pyx_self, ((PyObject *)__pyx_v_pyapp)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_10_qt_qtwes2_78create_window(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_pyapp) { QSizePolicy __pyx_v_sizepolicy; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; int __pyx_t_5; PyObject *__pyx_t_6 = NULL; PyObject *__pyx_t_7 = NULL; PyObject *__pyx_t_8 = NULL; bool __pyx_t_9; bool __pyx_t_10; QLabel *__pyx_t_11; int __pyx_t_12; __Pyx_RefNannySetupContext("create_window", 0); /* "_qt_qtwes2.pyx":2213 * * def create_window(pyapp): * pydata.app = pyapp # <<<<<<<<<<<<<< * init_module() * # Set default format before any widget is created, so that everything uses the same format. */ __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2213, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (__Pyx_PyObject_SetAttrStr(__pyx_t_1, __pyx_n_s_app, __pyx_v_pyapp) < 0) __PYX_ERR(0, 2213, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwes2.pyx":2214 * def create_window(pyapp): * pydata.app = pyapp * init_module() # <<<<<<<<<<<<<< * # Set default format before any widget is created, so that everything uses the same format. * # To test this use DEBUG_VFPS. The framerate should be then >60. */ __pyx_f_10_qt_qtwes2_init_module(); /* "_qt_qtwes2.pyx":2217 * # Set default format before any widget is created, so that everything uses the same format. * # To test this use DEBUG_VFPS. The framerate should be then >60. * set_default_surface_format() # <<<<<<<<<<<<<< * * ##pxm>IF 'qtw' == 'qtw' */ __pyx_f_10_qt_qtwes2_set_default_surface_format(); /* "_qt_qtwes2.pyx":2220 * * ##pxm>IF 'qtw' == 'qtw' * uidata.mainwindow = new MainView() #px/ # <<<<<<<<<<<<<< * #uidata.mainwindow = MainView() * uidata.treestore = new QStandardItemModel() #px/ */ __pyx_v_10_qt_qtwes2_uidata.mainwindow = new MainView(); /* "_qt_qtwes2.pyx":2222 * uidata.mainwindow = new MainView() #px/ * #uidata.mainwindow = MainView() * uidata.treestore = new QStandardItemModel() #px/ # <<<<<<<<<<<<<< * #uidata.treestore = QStandardItemModel() * uidata.drawingarea = new DrawingArea() #px/ */ __pyx_v_10_qt_qtwes2_uidata.treestore = new QStandardItemModel(); /* "_qt_qtwes2.pyx":2224 * uidata.treestore = new QStandardItemModel() #px/ * #uidata.treestore = QStandardItemModel() * uidata.drawingarea = new DrawingArea() #px/ # <<<<<<<<<<<<<< * #uidata.drawingarea = DrawingArea() * */ __pyx_v_10_qt_qtwes2_uidata.drawingarea = new DrawingArea(); /* "_qt_qtwes2.pyx":2228 * * qtui.setupUi_main(uidata.mainwindow, * QIcon(str2q(os.path.join(config_.UI_DIR, 'qt', 'images', 'new-random.png'))), # <<<<<<<<<<<<<< * QIcon(str2q(os.path.join(config_.UI_DIR, 'qt', 'images', 'new-solved.png'))), * QIcon(str2q(os.path.join(config_.UI_DIR, 'qt', 'images', 'select-model.png'))), */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_os); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2228, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_path); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2228, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_join); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2228, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_config); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2228, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_UI_DIR); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2228, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; __pyx_t_5 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_5 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[5] = {__pyx_t_3, __pyx_t_4, __pyx_n_u_qt, __pyx_n_u_images, __pyx_kp_u_new_random_png}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 4+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2228, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[5] = {__pyx_t_3, __pyx_t_4, __pyx_n_u_qt, __pyx_n_u_images, __pyx_kp_u_new_random_png}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 4+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2228, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_6 = PyTuple_New(4+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2228, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_t_4); __Pyx_INCREF(__pyx_n_u_qt); __Pyx_GIVEREF(__pyx_n_u_qt); PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_n_u_qt); __Pyx_INCREF(__pyx_n_u_images); __Pyx_GIVEREF(__pyx_n_u_images); PyTuple_SET_ITEM(__pyx_t_6, 2+__pyx_t_5, __pyx_n_u_images); __Pyx_INCREF(__pyx_kp_u_new_random_png); __Pyx_GIVEREF(__pyx_kp_u_new_random_png); PyTuple_SET_ITEM(__pyx_t_6, 3+__pyx_t_5, __pyx_kp_u_new_random_png); __pyx_t_4 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2228, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwes2.pyx":2229 * qtui.setupUi_main(uidata.mainwindow, * QIcon(str2q(os.path.join(config_.UI_DIR, 'qt', 'images', 'new-random.png'))), * QIcon(str2q(os.path.join(config_.UI_DIR, 'qt', 'images', 'new-solved.png'))), # <<<<<<<<<<<<<< * QIcon(str2q(os.path.join(config_.UI_DIR, 'qt', 'images', 'select-model.png'))), * QKeySequence(str2q(settings['action.edit_moves'])), */ __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_os); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2229, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_path); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2229, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_join); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2229, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_config); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2229, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_UI_DIR); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2229, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = NULL; __pyx_t_5 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); __pyx_t_5 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[5] = {__pyx_t_4, __pyx_t_3, __pyx_n_u_qt, __pyx_n_u_images, __pyx_kp_u_new_solved_png}; __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_5, 4+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2229, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[5] = {__pyx_t_4, __pyx_t_3, __pyx_n_u_qt, __pyx_n_u_images, __pyx_kp_u_new_solved_png}; __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_5, 4+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2229, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif { __pyx_t_7 = PyTuple_New(4+__pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2229, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (__pyx_t_4) { __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_4); __pyx_t_4 = NULL; } __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_5, __pyx_t_3); __Pyx_INCREF(__pyx_n_u_qt); __Pyx_GIVEREF(__pyx_n_u_qt); PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_5, __pyx_n_u_qt); __Pyx_INCREF(__pyx_n_u_images); __Pyx_GIVEREF(__pyx_n_u_images); PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_5, __pyx_n_u_images); __Pyx_INCREF(__pyx_kp_u_new_solved_png); __Pyx_GIVEREF(__pyx_kp_u_new_solved_png); PyTuple_SET_ITEM(__pyx_t_7, 3+__pyx_t_5, __pyx_kp_u_new_solved_png); __pyx_t_3 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2229, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; /* "_qt_qtwes2.pyx":2230 * QIcon(str2q(os.path.join(config_.UI_DIR, 'qt', 'images', 'new-random.png'))), * QIcon(str2q(os.path.join(config_.UI_DIR, 'qt', 'images', 'new-solved.png'))), * QIcon(str2q(os.path.join(config_.UI_DIR, 'qt', 'images', 'select-model.png'))), # <<<<<<<<<<<<<< * QKeySequence(str2q(settings['action.edit_moves'])), * QKeySequence(str2q(settings['action.edit_cube'])), */ __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_os); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2230, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_path); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2230, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_join); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2230, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_config); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2230, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_UI_DIR); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2230, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; __pyx_t_5 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_7); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_7, function); __pyx_t_5 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_7)) { PyObject *__pyx_temp[5] = {__pyx_t_3, __pyx_t_4, __pyx_n_u_qt, __pyx_n_u_images, __pyx_kp_u_select_model_png}; __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_5, 4+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2230, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) { PyObject *__pyx_temp[5] = {__pyx_t_3, __pyx_t_4, __pyx_n_u_qt, __pyx_n_u_images, __pyx_kp_u_select_model_png}; __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_5, 4+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2230, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_8 = PyTuple_New(4+__pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2230, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_5, __pyx_t_4); __Pyx_INCREF(__pyx_n_u_qt); __Pyx_GIVEREF(__pyx_n_u_qt); PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_5, __pyx_n_u_qt); __Pyx_INCREF(__pyx_n_u_images); __Pyx_GIVEREF(__pyx_n_u_images); PyTuple_SET_ITEM(__pyx_t_8, 2+__pyx_t_5, __pyx_n_u_images); __Pyx_INCREF(__pyx_kp_u_select_model_png); __Pyx_GIVEREF(__pyx_kp_u_select_model_png); PyTuple_SET_ITEM(__pyx_t_8, 3+__pyx_t_5, __pyx_kp_u_select_model_png); __pyx_t_4 = 0; __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_8, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2230, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; /* "_qt_qtwes2.pyx":2231 * QIcon(str2q(os.path.join(config_.UI_DIR, 'qt', 'images', 'new-solved.png'))), * QIcon(str2q(os.path.join(config_.UI_DIR, 'qt', 'images', 'select-model.png'))), * QKeySequence(str2q(settings['action.edit_moves'])), # <<<<<<<<<<<<<< * QKeySequence(str2q(settings['action.edit_cube'])), * settings['window.editbar'], */ __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2231, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_8 = PyObject_GetItem(__pyx_t_7, __pyx_kp_u_action_edit_moves); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2231, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; /* "_qt_qtwes2.pyx":2232 * QIcon(str2q(os.path.join(config_.UI_DIR, 'qt', 'images', 'select-model.png'))), * QKeySequence(str2q(settings['action.edit_moves'])), * QKeySequence(str2q(settings['action.edit_cube'])), # <<<<<<<<<<<<<< * settings['window.editbar'], * settings['window.statusbar']) */ __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2232, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_4 = PyObject_GetItem(__pyx_t_7, __pyx_kp_u_action_edit_cube); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2232, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; /* "_qt_qtwes2.pyx":2233 * QKeySequence(str2q(settings['action.edit_moves'])), * QKeySequence(str2q(settings['action.edit_cube'])), * settings['window.editbar'], # <<<<<<<<<<<<<< * settings['window.statusbar']) * uidata.mainwindow.setWindowIcon(QIcon(str2q(config_.APPICON_FILE))) */ __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2233, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_3 = PyObject_GetItem(__pyx_t_7, __pyx_kp_u_window_editbar); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2233, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_9 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2233, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "_qt_qtwes2.pyx":2234 * QKeySequence(str2q(settings['action.edit_cube'])), * settings['window.editbar'], * settings['window.statusbar']) # <<<<<<<<<<<<<< * uidata.mainwindow.setWindowIcon(QIcon(str2q(config_.APPICON_FILE))) * qtui.set_shortcuts(QKeySequence(str2q(settings['action.selectmodel'])), */ __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2234, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_7 = PyObject_GetItem(__pyx_t_3, __pyx_kp_u_window_statusbar); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2234, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely((__pyx_t_10 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2234, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; /* "_qt_qtwes2.pyx":2227 * #uidata.drawingarea = DrawingArea() * * qtui.setupUi_main(uidata.mainwindow, # <<<<<<<<<<<<<< * QIcon(str2q(os.path.join(config_.UI_DIR, 'qt', 'images', 'new-random.png'))), * QIcon(str2q(os.path.join(config_.UI_DIR, 'qt', 'images', 'new-solved.png'))), */ __pyx_f_6_qtui__setupUi_main(__pyx_v_10_qt_qtwes2_uidata.mainwindow, QIcon(__pyx_f_10_qt_qtwes2_str2q(__pyx_t_1)), QIcon(__pyx_f_10_qt_qtwes2_str2q(__pyx_t_2)), QIcon(__pyx_f_10_qt_qtwes2_str2q(__pyx_t_6)), QKeySequence(__pyx_f_10_qt_qtwes2_str2q(__pyx_t_8)), QKeySequence(__pyx_f_10_qt_qtwes2_str2q(__pyx_t_4)), __pyx_t_9, __pyx_t_10); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwes2.pyx":2235 * settings['window.editbar'], * settings['window.statusbar']) * uidata.mainwindow.setWindowIcon(QIcon(str2q(config_.APPICON_FILE))) # <<<<<<<<<<<<<< * qtui.set_shortcuts(QKeySequence(str2q(settings['action.selectmodel'])), * QKeySequence(str2q(settings['action.initial_state'])), */ __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_config); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2235, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_APPICON_FILE); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2235, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_10_qt_qtwes2_uidata.mainwindow->setWindowIcon(QIcon(__pyx_f_10_qt_qtwes2_str2q(__pyx_t_8))); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; /* "_qt_qtwes2.pyx":2236 * settings['window.statusbar']) * uidata.mainwindow.setWindowIcon(QIcon(str2q(config_.APPICON_FILE))) * qtui.set_shortcuts(QKeySequence(str2q(settings['action.selectmodel'])), # <<<<<<<<<<<<<< * QKeySequence(str2q(settings['action.initial_state'])), * QKeySequence(str2q(settings['action.reset_rotation'])), */ __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2236, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_4 = PyObject_GetItem(__pyx_t_8, __pyx_kp_u_action_selectmodel); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2236, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; /* "_qt_qtwes2.pyx":2237 * uidata.mainwindow.setWindowIcon(QIcon(str2q(config_.APPICON_FILE))) * qtui.set_shortcuts(QKeySequence(str2q(settings['action.selectmodel'])), * QKeySequence(str2q(settings['action.initial_state'])), # <<<<<<<<<<<<<< * QKeySequence(str2q(settings['action.reset_rotation'])), * QKeySequence(str2q(settings['action.preferences'])), */ __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2237, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_6 = PyObject_GetItem(__pyx_t_8, __pyx_kp_u_action_initial_state); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2237, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; /* "_qt_qtwes2.pyx":2238 * qtui.set_shortcuts(QKeySequence(str2q(settings['action.selectmodel'])), * QKeySequence(str2q(settings['action.initial_state'])), * QKeySequence(str2q(settings['action.reset_rotation'])), # <<<<<<<<<<<<<< * QKeySequence(str2q(settings['action.preferences'])), * ) */ __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2238, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_2 = PyObject_GetItem(__pyx_t_8, __pyx_kp_u_action_reset_rotation); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2238, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; /* "_qt_qtwes2.pyx":2239 * QKeySequence(str2q(settings['action.initial_state'])), * QKeySequence(str2q(settings['action.reset_rotation'])), * QKeySequence(str2q(settings['action.preferences'])), # <<<<<<<<<<<<<< * ) * uidata.move_edit = new MoveEdit() #px/ */ __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2239, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_1 = PyObject_GetItem(__pyx_t_8, __pyx_kp_u_action_preferences); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2239, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; /* "_qt_qtwes2.pyx":2236 * settings['window.statusbar']) * uidata.mainwindow.setWindowIcon(QIcon(str2q(config_.APPICON_FILE))) * qtui.set_shortcuts(QKeySequence(str2q(settings['action.selectmodel'])), # <<<<<<<<<<<<<< * QKeySequence(str2q(settings['action.initial_state'])), * QKeySequence(str2q(settings['action.reset_rotation'])), */ __pyx_f_6_qtui__set_shortcuts(QKeySequence(__pyx_f_10_qt_qtwes2_str2q(__pyx_t_4)), QKeySequence(__pyx_f_10_qt_qtwes2_str2q(__pyx_t_6)), QKeySequence(__pyx_f_10_qt_qtwes2_str2q(__pyx_t_2)), QKeySequence(__pyx_f_10_qt_qtwes2_str2q(__pyx_t_1))); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwes2.pyx":2241 * QKeySequence(str2q(settings['action.preferences'])), * ) * uidata.move_edit = new MoveEdit() #px/ # <<<<<<<<<<<<<< * #uidata.move_edit = MoveEdit() * uidata.drawingarea.init() */ __pyx_v_10_qt_qtwes2_uidata.move_edit = new MoveEdit(); /* "_qt_qtwes2.pyx":2243 * uidata.move_edit = new MoveEdit() #px/ * #uidata.move_edit = MoveEdit() * uidata.drawingarea.init() # <<<<<<<<<<<<<< * qtui.add_widgets(uidata.mainwindow, uidata.move_edit, uidata.drawingarea) * uidata.statuslabel = new QLabel() #px/ */ __pyx_v_10_qt_qtwes2_uidata.drawingarea->init(); /* "_qt_qtwes2.pyx":2244 * #uidata.move_edit = MoveEdit() * uidata.drawingarea.init() * qtui.add_widgets(uidata.mainwindow, uidata.move_edit, uidata.drawingarea) # <<<<<<<<<<<<<< * uidata.statuslabel = new QLabel() #px/ * #uidata.statuslabel = QLabel() */ __pyx_f_6_qtui__add_widgets(__pyx_v_10_qt_qtwes2_uidata.mainwindow, __pyx_v_10_qt_qtwes2_uidata.move_edit, __pyx_v_10_qt_qtwes2_uidata.drawingarea); /* "_qt_qtwes2.pyx":2245 * uidata.drawingarea.init() * qtui.add_widgets(uidata.mainwindow, uidata.move_edit, uidata.drawingarea) * uidata.statuslabel = new QLabel() #px/ # <<<<<<<<<<<<<< * #uidata.statuslabel = QLabel() * uidata.mainwindow.statusBar().addWidget(uidata.statuslabel, 1) */ try { __pyx_t_11 = new QLabel(); } catch(...) { __Pyx_CppExn2PyErr(); __PYX_ERR(0, 2245, __pyx_L1_error) } __pyx_v_10_qt_qtwes2_uidata.statuslabel = __pyx_t_11; /* "_qt_qtwes2.pyx":2247 * uidata.statuslabel = new QLabel() #px/ * #uidata.statuslabel = QLabel() * uidata.mainwindow.statusBar().addWidget(uidata.statuslabel, 1) # <<<<<<<<<<<<<< * if debug & DEBUG_NOCONTROLS: * qtui.hide_controls() */ __pyx_v_10_qt_qtwes2_uidata.mainwindow->statusBar()->addWidget(__pyx_v_10_qt_qtwes2_uidata.statuslabel, 1); /* "_qt_qtwes2.pyx":2248 * #uidata.statuslabel = QLabel() * uidata.mainwindow.statusBar().addWidget(uidata.statuslabel, 1) * if debug & DEBUG_NOCONTROLS: # <<<<<<<<<<<<<< * qtui.hide_controls() * */ __pyx_t_12 = ((__pyx_v_10_qt_qtwes2_debug & __pyx_e_10_qt_qtwes2_DEBUG_NOCONTROLS) != 0); if (__pyx_t_12) { /* "_qt_qtwes2.pyx":2249 * uidata.mainwindow.statusBar().addWidget(uidata.statuslabel, 1) * if debug & DEBUG_NOCONTROLS: * qtui.hide_controls() # <<<<<<<<<<<<<< * * cdef QSizePolicy sizepolicy #px+ */ __pyx_f_6_qtui__hide_controls(); /* "_qt_qtwes2.pyx":2248 * #uidata.statuslabel = QLabel() * uidata.mainwindow.statusBar().addWidget(uidata.statuslabel, 1) * if debug & DEBUG_NOCONTROLS: # <<<<<<<<<<<<<< * qtui.hide_controls() * */ } /* "_qt_qtwes2.pyx":2252 * * cdef QSizePolicy sizepolicy #px+ * sizepolicy = QSizePolicy(Expanding, Expanding) # <<<<<<<<<<<<<< * sizepolicy.setHorizontalStretch(0) * sizepolicy.setVerticalStretch(0) */ __pyx_v_sizepolicy = QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); /* "_qt_qtwes2.pyx":2253 * cdef QSizePolicy sizepolicy #px+ * sizepolicy = QSizePolicy(Expanding, Expanding) * sizepolicy.setHorizontalStretch(0) # <<<<<<<<<<<<<< * sizepolicy.setVerticalStretch(0) * uidata.drawingarea.setSizePolicy(sizepolicy) */ __pyx_v_sizepolicy.setHorizontalStretch(0); /* "_qt_qtwes2.pyx":2254 * sizepolicy = QSizePolicy(Expanding, Expanding) * sizepolicy.setHorizontalStretch(0) * sizepolicy.setVerticalStretch(0) # <<<<<<<<<<<<<< * uidata.drawingarea.setSizePolicy(sizepolicy) * ##pxm>IF 'qtw' == 'qtq' */ __pyx_v_sizepolicy.setVerticalStretch(0); /* "_qt_qtwes2.pyx":2255 * sizepolicy.setHorizontalStretch(0) * sizepolicy.setVerticalStretch(0) * uidata.drawingarea.setSizePolicy(sizepolicy) # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtq' * #~ uidata.engine = new QQmlEngine() */ __pyx_v_10_qt_qtwes2_uidata.drawingarea->setSizePolicy(__pyx_v_sizepolicy); /* "_qt_qtwes2.pyx":2278 * #~ uidata.mainwindow.setClearBeforeRendering(False) * #~ ##pxm>IF_END * animation_init() # <<<<<<<<<<<<<< * settings_timer_create() * load_cursors(os.path.join(config_.UI_DIR, 'cursors', 'mouse_{}.png')) */ __pyx_f_10_qt_qtwes2_animation_init(); /* "_qt_qtwes2.pyx":2279 * #~ ##pxm>IF_END * animation_init() * settings_timer_create() # <<<<<<<<<<<<<< * load_cursors(os.path.join(config_.UI_DIR, 'cursors', 'mouse_{}.png')) * */ __pyx_f_10_qt_qtwes2_settings_timer_create(); /* "_qt_qtwes2.pyx":2280 * animation_init() * settings_timer_create() * load_cursors(os.path.join(config_.UI_DIR, 'cursors', 'mouse_{}.png')) # <<<<<<<<<<<<<< * * def destroy_window(): */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_os); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2280, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_path); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2280, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_join); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2280, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_config); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2280, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_UI_DIR); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2280, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = NULL; __pyx_t_5 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_5 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_6, __pyx_t_4, __pyx_n_u_cursors, __pyx_kp_u_mouse__png}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 3+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2280, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_6, __pyx_t_4, __pyx_n_u_cursors, __pyx_kp_u_mouse__png}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 3+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2280, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_8 = PyTuple_New(3+__pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2280, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); if (__pyx_t_6) { __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = NULL; } __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_5, __pyx_t_4); __Pyx_INCREF(__pyx_n_u_cursors); __Pyx_GIVEREF(__pyx_n_u_cursors); PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_5, __pyx_n_u_cursors); __Pyx_INCREF(__pyx_kp_u_mouse__png); __Pyx_GIVEREF(__pyx_kp_u_mouse__png); PyTuple_SET_ITEM(__pyx_t_8, 2+__pyx_t_5, __pyx_kp_u_mouse__png); __pyx_t_4 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2280, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_f_10_qt_qtwes2_load_cursors(__pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwes2.pyx":2212 * #~ ##pxm>IF_END * * def create_window(pyapp): # <<<<<<<<<<<<<< * pydata.app = pyapp * init_module() */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_8); __Pyx_AddTraceback("_qt_qtwes2.create_window", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwes2.pyx":2282 * load_cursors(os.path.join(config_.UI_DIR, 'cursors', 'mouse_{}.png')) * * def destroy_window(): # <<<<<<<<<<<<<< * destroy_cursors() * settings_timer_destroy() */ /* Python wrapper */ static PyObject *__pyx_pw_10_qt_qtwes2_81destroy_window(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/ static PyMethodDef __pyx_mdef_10_qt_qtwes2_81destroy_window = {"destroy_window", (PyCFunction)__pyx_pw_10_qt_qtwes2_81destroy_window, METH_NOARGS, 0}; static PyObject *__pyx_pw_10_qt_qtwes2_81destroy_window(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("destroy_window (wrapper)", 0); __pyx_r = __pyx_pf_10_qt_qtwes2_80destroy_window(__pyx_self); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_10_qt_qtwes2_80destroy_window(CYTHON_UNUSED PyObject *__pyx_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("destroy_window", 0); /* "_qt_qtwes2.pyx":2283 * * def destroy_window(): * destroy_cursors() # <<<<<<<<<<<<<< * settings_timer_destroy() * ##pxm>IF 'qtw' == 'qtw' */ __pyx_f_10_qt_qtwes2_destroy_cursors(); /* "_qt_qtwes2.pyx":2284 * def destroy_window(): * destroy_cursors() * settings_timer_destroy() # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * animate_timer_destroy() */ __pyx_f_10_qt_qtwes2_settings_timer_destroy(); /* "_qt_qtwes2.pyx":2286 * settings_timer_destroy() * ##pxm>IF 'qtw' == 'qtw' * animate_timer_destroy() # <<<<<<<<<<<<<< * ##pxm>IF_END * pydata.app = None */ __pyx_f_10_qt_qtwes2_animate_timer_destroy(); /* "_qt_qtwes2.pyx":2288 * animate_timer_destroy() * ##pxm>IF_END * pydata.app = None # <<<<<<<<<<<<<< * * ##pxm-FUNC P with gil */ __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2288, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (__Pyx_PyObject_SetAttrStr(__pyx_t_1, __pyx_n_s_app, Py_None) < 0) __PYX_ERR(0, 2288, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwes2.pyx":2282 * load_cursors(os.path.join(config_.UI_DIR, 'cursors', 'mouse_{}.png')) * * def destroy_window(): # <<<<<<<<<<<<<< * destroy_cursors() * settings_timer_destroy() */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("_qt_qtwes2.destroy_window", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwes2.pyx":2291 * * ##pxm-FUNC P with gil * cdef void _on_init_finalize() with gil: # <<<<<<<<<<<<<< * pydata.app.on_init_finalize() * */ static void __pyx_f_10_qt_qtwes2__on_init_finalize(void) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("_on_init_finalize", 0); /* "_qt_qtwes2.pyx":2292 * ##pxm-FUNC P with gil * cdef void _on_init_finalize() with gil: * pydata.app.on_init_finalize() # <<<<<<<<<<<<<< * * ##pxm>IF 'qtw' == 'qtq' */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2292, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_app); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2292, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_on_init_finalize); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2292, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } if (__pyx_t_3) { __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2292, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2292, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwes2.pyx":2291 * * ##pxm-FUNC P with gil * cdef void _on_init_finalize() with gil: # <<<<<<<<<<<<<< * pydata.app.on_init_finalize() * */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_WriteUnraisable("_qt_qtwes2._on_init_finalize", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwes2.pyx":2302 * #~ ##pxm>IF_END * * def app_post_create(gettext): # <<<<<<<<<<<<<< * cdef QApplication *app = QCoreApplication_instance() #px/ * #app = QCoreApplication.instance() */ /* Python wrapper */ static PyObject *__pyx_pw_10_qt_qtwes2_83app_post_create(PyObject *__pyx_self, PyObject *__pyx_v_gettext); /*proto*/ static PyMethodDef __pyx_mdef_10_qt_qtwes2_83app_post_create = {"app_post_create", (PyCFunction)__pyx_pw_10_qt_qtwes2_83app_post_create, METH_O, 0}; static PyObject *__pyx_pw_10_qt_qtwes2_83app_post_create(PyObject *__pyx_self, PyObject *__pyx_v_gettext) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("app_post_create (wrapper)", 0); __pyx_r = __pyx_pf_10_qt_qtwes2_82app_post_create(__pyx_self, ((PyObject *)__pyx_v_gettext)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_10_qt_qtwes2_82app_post_create(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_gettext) { QApplication *__pyx_v_app; QFont __pyx_v_font; PyObject *__pyx_v_fontpixelsize = NULL; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; double __pyx_t_6; qreal __pyx_t_7; int __pyx_t_8; PyObject *__pyx_t_9 = NULL; __Pyx_RefNannySetupContext("app_post_create", 0); /* "_qt_qtwes2.pyx":2303 * * def app_post_create(gettext): * cdef QApplication *app = QCoreApplication_instance() #px/ # <<<<<<<<<<<<<< * #app = QCoreApplication.instance() * */ __pyx_v_app = ((QApplication *)QCoreApplication::instance()); /* "_qt_qtwes2.pyx":2308 * # font * cdef QFont font #px+ * try: # <<<<<<<<<<<<<< * uidata.grid_unit_px = float(os.environ['GRID_UNIT_PX']) / 8 * except (KeyError, ValueError): */ { __Pyx_PyThreadState_declare __Pyx_PyThreadState_assign __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); __Pyx_XGOTREF(__pyx_t_1); __Pyx_XGOTREF(__pyx_t_2); __Pyx_XGOTREF(__pyx_t_3); /*try:*/ { /* "_qt_qtwes2.pyx":2309 * cdef QFont font #px+ * try: * uidata.grid_unit_px = float(os.environ['GRID_UNIT_PX']) / 8 # <<<<<<<<<<<<<< * except (KeyError, ValueError): * uidata.grid_unit_px = 1. */ __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_os); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2309, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_environ); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2309, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyObject_GetItem(__pyx_t_5, __pyx_n_u_GRID_UNIT_PX); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2309, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_6 = __Pyx_PyObject_AsDouble(__pyx_t_4); if (unlikely(__pyx_t_6 == ((double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2309, __pyx_L3_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_10_qt_qtwes2_uidata.grid_unit_px = (__pyx_t_6 / 8.0); /* "_qt_qtwes2.pyx":2308 * # font * cdef QFont font #px+ * try: # <<<<<<<<<<<<<< * uidata.grid_unit_px = float(os.environ['GRID_UNIT_PX']) / 8 * except (KeyError, ValueError): */ } /* "_qt_qtwes2.pyx":2315 * else: * # On the Ubuntu phone the default font is broken without Ubuntu.Components imported * font = app.font() # <<<<<<<<<<<<<< * # Default in ubuntu-ui-toolkit: fontUnits = 14.0f (to small, use 18.0), DEFAULT_GRID_UNIT_PX = 8 * #TODO: use QWindow.devicePixelRatio */ /*else:*/ { __pyx_v_font = __pyx_v_app->font(); /* "_qt_qtwes2.pyx":2318 * # Default in ubuntu-ui-toolkit: fontUnits = 14.0f (to small, use 18.0), DEFAULT_GRID_UNIT_PX = 8 * #TODO: use QWindow.devicePixelRatio * fontpixelsize = 18.0 * uidata.grid_unit_px / app.devicePixelRatio() # <<<<<<<<<<<<<< * font.setFamily(str2q("Ubuntu")) * font.setPixelSize(int(fontpixelsize)) */ __pyx_t_6 = (18.0 * __pyx_v_10_qt_qtwes2_uidata.grid_unit_px); __pyx_t_7 = __pyx_v_app->devicePixelRatio(); if (unlikely(__pyx_t_7 == 0)) { PyErr_SetString(PyExc_ZeroDivisionError, "float division"); __PYX_ERR(0, 2318, __pyx_L5_except_error) } __pyx_t_4 = PyFloat_FromDouble((((qreal)__pyx_t_6) / __pyx_t_7)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2318, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_4); __pyx_v_fontpixelsize = __pyx_t_4; __pyx_t_4 = 0; /* "_qt_qtwes2.pyx":2319 * #TODO: use QWindow.devicePixelRatio * fontpixelsize = 18.0 * uidata.grid_unit_px / app.devicePixelRatio() * font.setFamily(str2q("Ubuntu")) # <<<<<<<<<<<<<< * font.setPixelSize(int(fontpixelsize)) * font.setWeight(50) */ __pyx_v_font.setFamily(__pyx_f_10_qt_qtwes2_str2q(__pyx_n_u_Ubuntu)); /* "_qt_qtwes2.pyx":2320 * fontpixelsize = 18.0 * uidata.grid_unit_px / app.devicePixelRatio() * font.setFamily(str2q("Ubuntu")) * font.setPixelSize(int(fontpixelsize)) # <<<<<<<<<<<<<< * font.setWeight(50) * app.setFont(font) */ __pyx_t_4 = __Pyx_PyNumber_Int(__pyx_v_fontpixelsize); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2320, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_8 = __Pyx_PyInt_As_int(__pyx_t_4); if (unlikely((__pyx_t_8 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2320, __pyx_L5_except_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_font.setPixelSize(__pyx_t_8); /* "_qt_qtwes2.pyx":2321 * font.setFamily(str2q("Ubuntu")) * font.setPixelSize(int(fontpixelsize)) * font.setWeight(50) # <<<<<<<<<<<<<< * app.setFont(font) * */ __pyx_v_font.setWeight(50); /* "_qt_qtwes2.pyx":2322 * font.setPixelSize(int(fontpixelsize)) * font.setWeight(50) * app.setFont(font) # <<<<<<<<<<<<<< * * global _ */ __pyx_v_app->setFont(__pyx_v_font); } __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L10_try_end; __pyx_L3_error:; __Pyx_PyThreadState_assign __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwes2.pyx":2310 * try: * uidata.grid_unit_px = float(os.environ['GRID_UNIT_PX']) / 8 * except (KeyError, ValueError): # <<<<<<<<<<<<<< * uidata.grid_unit_px = 1. * fontpixelsize = 14.0 */ __pyx_t_8 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_KeyError) || __Pyx_PyErr_ExceptionMatches(__pyx_builtin_ValueError); if (__pyx_t_8) { __Pyx_AddTraceback("_qt_qtwes2.app_post_create", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_5, &__pyx_t_9) < 0) __PYX_ERR(0, 2310, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GOTREF(__pyx_t_5); __Pyx_GOTREF(__pyx_t_9); /* "_qt_qtwes2.pyx":2311 * uidata.grid_unit_px = float(os.environ['GRID_UNIT_PX']) / 8 * except (KeyError, ValueError): * uidata.grid_unit_px = 1. # <<<<<<<<<<<<<< * fontpixelsize = 14.0 * else: */ __pyx_v_10_qt_qtwes2_uidata.grid_unit_px = 1.; /* "_qt_qtwes2.pyx":2312 * except (KeyError, ValueError): * uidata.grid_unit_px = 1. * fontpixelsize = 14.0 # <<<<<<<<<<<<<< * else: * # On the Ubuntu phone the default font is broken without Ubuntu.Components imported */ __Pyx_INCREF(__pyx_float_14_0); __pyx_v_fontpixelsize = __pyx_float_14_0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; goto __pyx_L4_exception_handled; } goto __pyx_L5_except_error; __pyx_L5_except_error:; /* "_qt_qtwes2.pyx":2308 * # font * cdef QFont font #px+ * try: # <<<<<<<<<<<<<< * uidata.grid_unit_px = float(os.environ['GRID_UNIT_PX']) / 8 * except (KeyError, ValueError): */ __Pyx_PyThreadState_assign __Pyx_XGIVEREF(__pyx_t_1); __Pyx_XGIVEREF(__pyx_t_2); __Pyx_XGIVEREF(__pyx_t_3); __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); goto __pyx_L1_error; __pyx_L4_exception_handled:; __Pyx_PyThreadState_assign __Pyx_XGIVEREF(__pyx_t_1); __Pyx_XGIVEREF(__pyx_t_2); __Pyx_XGIVEREF(__pyx_t_3); __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); __pyx_L10_try_end:; } /* "_qt_qtwes2.pyx":2325 * * global _ * _ = gettext # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * qtui.init_gettext(_) */ if (PyDict_SetItem(__pyx_d, __pyx_n_s__4, __pyx_v_gettext) < 0) __PYX_ERR(0, 2325, __pyx_L1_error) /* "_qt_qtwes2.pyx":2327 * _ = gettext * ##pxm>IF 'qtw' == 'qtw' * qtui.init_gettext(_) # <<<<<<<<<<<<<< * ##pxm>IF_END * */ __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s__4); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2327, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_f_6_qtui__init_gettext(__pyx_t_9); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; /* "_qt_qtwes2.pyx":2302 * #~ ##pxm>IF_END * * def app_post_create(gettext): # <<<<<<<<<<<<<< * cdef QApplication *app = QCoreApplication_instance() #px/ * #app = QCoreApplication.instance() */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_9); __Pyx_AddTraceback("_qt_qtwes2.app_post_create", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_fontpixelsize); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } static struct __pyx_obj_10_qt_qtwes2___pyx_scope_struct__keyval_from_name *__pyx_freelist_10_qt_qtwes2___pyx_scope_struct__keyval_from_name[8]; static int __pyx_freecount_10_qt_qtwes2___pyx_scope_struct__keyval_from_name = 0; static PyObject *__pyx_tp_new_10_qt_qtwes2___pyx_scope_struct__keyval_from_name(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { PyObject *o; if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_10_qt_qtwes2___pyx_scope_struct__keyval_from_name > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_10_qt_qtwes2___pyx_scope_struct__keyval_from_name)))) { o = (PyObject*)__pyx_freelist_10_qt_qtwes2___pyx_scope_struct__keyval_from_name[--__pyx_freecount_10_qt_qtwes2___pyx_scope_struct__keyval_from_name]; memset(o, 0, sizeof(struct __pyx_obj_10_qt_qtwes2___pyx_scope_struct__keyval_from_name)); (void) PyObject_INIT(o, t); PyObject_GC_Track(o); } else { o = (*t->tp_alloc)(t, 0); if (unlikely(!o)) return 0; } return o; } static void __pyx_tp_dealloc_10_qt_qtwes2___pyx_scope_struct__keyval_from_name(PyObject *o) { struct __pyx_obj_10_qt_qtwes2___pyx_scope_struct__keyval_from_name *p = (struct __pyx_obj_10_qt_qtwes2___pyx_scope_struct__keyval_from_name *)o; PyObject_GC_UnTrack(o); Py_CLEAR(p->__pyx_v_keystr); if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_10_qt_qtwes2___pyx_scope_struct__keyval_from_name < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_10_qt_qtwes2___pyx_scope_struct__keyval_from_name)))) { __pyx_freelist_10_qt_qtwes2___pyx_scope_struct__keyval_from_name[__pyx_freecount_10_qt_qtwes2___pyx_scope_struct__keyval_from_name++] = ((struct __pyx_obj_10_qt_qtwes2___pyx_scope_struct__keyval_from_name *)o); } else { (*Py_TYPE(o)->tp_free)(o); } } static int __pyx_tp_traverse_10_qt_qtwes2___pyx_scope_struct__keyval_from_name(PyObject *o, visitproc v, void *a) { int e; struct __pyx_obj_10_qt_qtwes2___pyx_scope_struct__keyval_from_name *p = (struct __pyx_obj_10_qt_qtwes2___pyx_scope_struct__keyval_from_name *)o; if (p->__pyx_v_keystr) { e = (*v)(p->__pyx_v_keystr, a); if (e) return e; } return 0; } static int __pyx_tp_clear_10_qt_qtwes2___pyx_scope_struct__keyval_from_name(PyObject *o) { PyObject* tmp; struct __pyx_obj_10_qt_qtwes2___pyx_scope_struct__keyval_from_name *p = (struct __pyx_obj_10_qt_qtwes2___pyx_scope_struct__keyval_from_name *)o; tmp = ((PyObject*)p->__pyx_v_keystr); p->__pyx_v_keystr = Py_None; Py_INCREF(Py_None); Py_XDECREF(tmp); return 0; } static PyTypeObject __pyx_type_10_qt_qtwes2___pyx_scope_struct__keyval_from_name = { PyVarObject_HEAD_INIT(0, 0) "_qt_qtwes2.__pyx_scope_struct__keyval_from_name", /*tp_name*/ sizeof(struct __pyx_obj_10_qt_qtwes2___pyx_scope_struct__keyval_from_name), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc_10_qt_qtwes2___pyx_scope_struct__keyval_from_name, /*tp_dealloc*/ 0, /*tp_print*/ 0, /*tp_getattr*/ 0, /*tp_setattr*/ #if PY_MAJOR_VERSION < 3 0, /*tp_compare*/ #endif #if PY_MAJOR_VERSION >= 3 0, /*tp_as_async*/ #endif 0, /*tp_repr*/ 0, /*tp_as_number*/ 0, /*tp_as_sequence*/ 0, /*tp_as_mapping*/ 0, /*tp_hash*/ 0, /*tp_call*/ 0, /*tp_str*/ 0, /*tp_getattro*/ 0, /*tp_setattro*/ 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ 0, /*tp_doc*/ __pyx_tp_traverse_10_qt_qtwes2___pyx_scope_struct__keyval_from_name, /*tp_traverse*/ __pyx_tp_clear_10_qt_qtwes2___pyx_scope_struct__keyval_from_name, /*tp_clear*/ 0, /*tp_richcompare*/ 0, /*tp_weaklistoffset*/ 0, /*tp_iter*/ 0, /*tp_iternext*/ 0, /*tp_methods*/ 0, /*tp_members*/ 0, /*tp_getset*/ 0, /*tp_base*/ 0, /*tp_dict*/ 0, /*tp_descr_get*/ 0, /*tp_descr_set*/ 0, /*tp_dictoffset*/ 0, /*tp_init*/ 0, /*tp_alloc*/ __pyx_tp_new_10_qt_qtwes2___pyx_scope_struct__keyval_from_name, /*tp_new*/ 0, /*tp_free*/ 0, /*tp_is_gc*/ 0, /*tp_bases*/ 0, /*tp_mro*/ 0, /*tp_cache*/ 0, /*tp_subclasses*/ 0, /*tp_weaklist*/ 0, /*tp_del*/ 0, /*tp_version_tag*/ #if PY_VERSION_HEX >= 0x030400a1 0, /*tp_finalize*/ #endif }; static struct __pyx_obj_10_qt_qtwes2___pyx_scope_struct_1_genexpr *__pyx_freelist_10_qt_qtwes2___pyx_scope_struct_1_genexpr[8]; static int __pyx_freecount_10_qt_qtwes2___pyx_scope_struct_1_genexpr = 0; static PyObject *__pyx_tp_new_10_qt_qtwes2___pyx_scope_struct_1_genexpr(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { PyObject *o; if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_10_qt_qtwes2___pyx_scope_struct_1_genexpr > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_10_qt_qtwes2___pyx_scope_struct_1_genexpr)))) { o = (PyObject*)__pyx_freelist_10_qt_qtwes2___pyx_scope_struct_1_genexpr[--__pyx_freecount_10_qt_qtwes2___pyx_scope_struct_1_genexpr]; memset(o, 0, sizeof(struct __pyx_obj_10_qt_qtwes2___pyx_scope_struct_1_genexpr)); (void) PyObject_INIT(o, t); PyObject_GC_Track(o); } else { o = (*t->tp_alloc)(t, 0); if (unlikely(!o)) return 0; } return o; } static void __pyx_tp_dealloc_10_qt_qtwes2___pyx_scope_struct_1_genexpr(PyObject *o) { struct __pyx_obj_10_qt_qtwes2___pyx_scope_struct_1_genexpr *p = (struct __pyx_obj_10_qt_qtwes2___pyx_scope_struct_1_genexpr *)o; PyObject_GC_UnTrack(o); Py_CLEAR(p->__pyx_outer_scope); Py_CLEAR(p->__pyx_v_k); if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_10_qt_qtwes2___pyx_scope_struct_1_genexpr < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_10_qt_qtwes2___pyx_scope_struct_1_genexpr)))) { __pyx_freelist_10_qt_qtwes2___pyx_scope_struct_1_genexpr[__pyx_freecount_10_qt_qtwes2___pyx_scope_struct_1_genexpr++] = ((struct __pyx_obj_10_qt_qtwes2___pyx_scope_struct_1_genexpr *)o); } else { (*Py_TYPE(o)->tp_free)(o); } } static int __pyx_tp_traverse_10_qt_qtwes2___pyx_scope_struct_1_genexpr(PyObject *o, visitproc v, void *a) { int e; struct __pyx_obj_10_qt_qtwes2___pyx_scope_struct_1_genexpr *p = (struct __pyx_obj_10_qt_qtwes2___pyx_scope_struct_1_genexpr *)o; if (p->__pyx_outer_scope) { e = (*v)(((PyObject*)p->__pyx_outer_scope), a); if (e) return e; } if (p->__pyx_v_k) { e = (*v)(p->__pyx_v_k, a); if (e) return e; } return 0; } static int __pyx_tp_clear_10_qt_qtwes2___pyx_scope_struct_1_genexpr(PyObject *o) { PyObject* tmp; struct __pyx_obj_10_qt_qtwes2___pyx_scope_struct_1_genexpr *p = (struct __pyx_obj_10_qt_qtwes2___pyx_scope_struct_1_genexpr *)o; tmp = ((PyObject*)p->__pyx_outer_scope); p->__pyx_outer_scope = ((struct __pyx_obj_10_qt_qtwes2___pyx_scope_struct__keyval_from_name *)Py_None); Py_INCREF(Py_None); Py_XDECREF(tmp); tmp = ((PyObject*)p->__pyx_v_k); p->__pyx_v_k = Py_None; Py_INCREF(Py_None); Py_XDECREF(tmp); return 0; } static PyTypeObject __pyx_type_10_qt_qtwes2___pyx_scope_struct_1_genexpr = { PyVarObject_HEAD_INIT(0, 0) "_qt_qtwes2.__pyx_scope_struct_1_genexpr", /*tp_name*/ sizeof(struct __pyx_obj_10_qt_qtwes2___pyx_scope_struct_1_genexpr), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc_10_qt_qtwes2___pyx_scope_struct_1_genexpr, /*tp_dealloc*/ 0, /*tp_print*/ 0, /*tp_getattr*/ 0, /*tp_setattr*/ #if PY_MAJOR_VERSION < 3 0, /*tp_compare*/ #endif #if PY_MAJOR_VERSION >= 3 0, /*tp_as_async*/ #endif 0, /*tp_repr*/ 0, /*tp_as_number*/ 0, /*tp_as_sequence*/ 0, /*tp_as_mapping*/ 0, /*tp_hash*/ 0, /*tp_call*/ 0, /*tp_str*/ 0, /*tp_getattro*/ 0, /*tp_setattro*/ 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ 0, /*tp_doc*/ __pyx_tp_traverse_10_qt_qtwes2___pyx_scope_struct_1_genexpr, /*tp_traverse*/ __pyx_tp_clear_10_qt_qtwes2___pyx_scope_struct_1_genexpr, /*tp_clear*/ 0, /*tp_richcompare*/ 0, /*tp_weaklistoffset*/ 0, /*tp_iter*/ 0, /*tp_iternext*/ 0, /*tp_methods*/ 0, /*tp_members*/ 0, /*tp_getset*/ 0, /*tp_base*/ 0, /*tp_dict*/ 0, /*tp_descr_get*/ 0, /*tp_descr_set*/ 0, /*tp_dictoffset*/ 0, /*tp_init*/ 0, /*tp_alloc*/ __pyx_tp_new_10_qt_qtwes2___pyx_scope_struct_1_genexpr, /*tp_new*/ 0, /*tp_free*/ 0, /*tp_is_gc*/ 0, /*tp_bases*/ 0, /*tp_mro*/ 0, /*tp_cache*/ 0, /*tp_subclasses*/ 0, /*tp_weaklist*/ 0, /*tp_del*/ 0, /*tp_version_tag*/ #if PY_VERSION_HEX >= 0x030400a1 0, /*tp_finalize*/ #endif }; static PyMethodDef __pyx_methods[] = { {"set_atlas_size", (PyCFunction)__pyx_pw_10_qt_qtwes2_7set_atlas_size, METH_VARARGS|METH_KEYWORDS, 0}, {"settings_timer_start", (PyCFunction)__pyx_pw_10_qt_qtwes2_69settings_timer_start, METH_NOARGS, 0}, {"animate_timer_start", (PyCFunction)__pyx_pw_10_qt_qtwes2_73animate_timer_start, METH_VARARGS|METH_KEYWORDS, 0}, {0, 0, 0, 0} }; #if PY_MAJOR_VERSION >= 3 static struct PyModuleDef __pyx_moduledef = { #if PY_VERSION_HEX < 0x03020000 { PyObject_HEAD_INIT(NULL) NULL, 0, NULL }, #else PyModuleDef_HEAD_INIT, #endif "_qt_qtwes2", 0, /* m_doc */ -1, /* m_size */ __pyx_methods /* m_methods */, NULL, /* m_reload */ NULL, /* m_traverse */ NULL, /* m_clear */ NULL /* m_free */ }; #endif static __Pyx_StringTabEntry __pyx_string_tab[] = { {&__pyx_n_s_APPICON_FILE, __pyx_k_APPICON_FILE, sizeof(__pyx_k_APPICON_FILE), 0, 0, 1, 1}, {&__pyx_n_s_APPNAME, __pyx_k_APPNAME, sizeof(__pyx_k_APPNAME), 0, 0, 1, 1}, {&__pyx_n_s_COPYRIGHT, __pyx_k_COPYRIGHT, sizeof(__pyx_k_COPYRIGHT), 0, 0, 1, 1}, {&__pyx_n_s_ControlModifier, __pyx_k_ControlModifier, sizeof(__pyx_k_ControlModifier), 0, 0, 1, 1}, {&__pyx_n_s_DEBUG_DRAW, __pyx_k_DEBUG_DRAW, sizeof(__pyx_k_DEBUG_DRAW), 0, 0, 1, 1}, {&__pyx_n_s_DEBUG_FPS, __pyx_k_DEBUG_FPS, sizeof(__pyx_k_DEBUG_FPS), 0, 0, 1, 1}, {&__pyx_n_s_DEBUG_GLDEBUG, __pyx_k_DEBUG_GLDEBUG, sizeof(__pyx_k_DEBUG_GLDEBUG), 0, 0, 1, 1}, {&__pyx_n_s_DEBUG_MSG, __pyx_k_DEBUG_MSG, sizeof(__pyx_k_DEBUG_MSG), 0, 0, 1, 1}, {&__pyx_n_s_DEBUG_MSGEXT, __pyx_k_DEBUG_MSGEXT, sizeof(__pyx_k_DEBUG_MSGEXT), 0, 0, 1, 1}, {&__pyx_n_s_DEBUG_MSGGL, __pyx_k_DEBUG_MSGGL, sizeof(__pyx_k_DEBUG_MSGGL), 0, 0, 1, 1}, {&__pyx_n_s_DEBUG_NOCONTROLS, __pyx_k_DEBUG_NOCONTROLS, sizeof(__pyx_k_DEBUG_NOCONTROLS), 0, 0, 1, 1}, {&__pyx_n_s_DEBUG_PHONE, __pyx_k_DEBUG_PHONE, sizeof(__pyx_k_DEBUG_PHONE), 0, 0, 1, 1}, {&__pyx_n_s_DEBUG_QML, __pyx_k_DEBUG_QML, sizeof(__pyx_k_DEBUG_QML), 0, 0, 1, 1}, {&__pyx_n_s_DEBUG_SIM, __pyx_k_DEBUG_SIM, sizeof(__pyx_k_DEBUG_SIM), 0, 0, 1, 1}, {&__pyx_n_s_DEBUG_VFPS, __pyx_k_DEBUG_VFPS, sizeof(__pyx_k_DEBUG_VFPS), 0, 0, 1, 1}, {&__pyx_kp_u_GL_type_es2, __pyx_k_GL_type_es2, sizeof(__pyx_k_GL_type_es2), 0, 1, 0, 0}, {&__pyx_n_u_GRID_UNIT_PX, __pyx_k_GRID_UNIT_PX, sizeof(__pyx_k_GRID_UNIT_PX), 0, 1, 0, 1}, {&__pyx_n_u_KP, __pyx_k_KP, sizeof(__pyx_k_KP), 0, 1, 0, 1}, {&__pyx_n_u_Key, __pyx_k_Key, sizeof(__pyx_k_Key), 0, 1, 0, 1}, {&__pyx_n_s_KeyError, __pyx_k_KeyError, sizeof(__pyx_k_KeyError), 0, 0, 1, 1}, {&__pyx_n_s_Key_Down, __pyx_k_Key_Down, sizeof(__pyx_k_Key_Down), 0, 0, 1, 1}, {&__pyx_n_s_Key_Escape, __pyx_k_Key_Escape, sizeof(__pyx_k_Key_Escape), 0, 0, 1, 1}, {&__pyx_n_s_Key_Left, __pyx_k_Key_Left, sizeof(__pyx_k_Key_Left), 0, 0, 1, 1}, {&__pyx_n_s_Key_Period, __pyx_k_Key_Period, sizeof(__pyx_k_Key_Period), 0, 0, 1, 1}, {&__pyx_n_s_Key_Right, __pyx_k_Key_Right, sizeof(__pyx_k_Key_Right), 0, 0, 1, 1}, {&__pyx_n_s_Key_Up, __pyx_k_Key_Up, sizeof(__pyx_k_Key_Up), 0, 0, 1, 1}, {&__pyx_n_s_LeftButton, __pyx_k_LeftButton, sizeof(__pyx_k_LeftButton), 0, 0, 1, 1}, {&__pyx_n_u_Move, __pyx_k_Move, sizeof(__pyx_k_Move), 0, 1, 0, 1}, {&__pyx_n_u_Num, __pyx_k_Num, sizeof(__pyx_k_Num), 0, 1, 0, 1}, {&__pyx_kp_u_OFFSCREEN, __pyx_k_OFFSCREEN, sizeof(__pyx_k_OFFSCREEN), 0, 1, 0, 0}, {&__pyx_kp_u_Open_Image, __pyx_k_Open_Image, sizeof(__pyx_k_Open_Image), 0, 1, 0, 0}, {&__pyx_n_s_PyData, __pyx_k_PyData, sizeof(__pyx_k_PyData), 0, 0, 1, 1}, {&__pyx_kp_u_QObject, __pyx_k_QObject, sizeof(__pyx_k_QObject), 0, 1, 0, 0}, {&__pyx_n_b_QString, __pyx_k_QString, sizeof(__pyx_k_QString), 0, 0, 0, 1}, {&__pyx_n_s_QtKeys, __pyx_k_QtKeys, sizeof(__pyx_k_QtKeys), 0, 0, 1, 1}, {&__pyx_n_s_RightButton, __pyx_k_RightButton, sizeof(__pyx_k_RightButton), 0, 0, 1, 1}, {&__pyx_n_s_RuntimeWarning, __pyx_k_RuntimeWarning, sizeof(__pyx_k_RuntimeWarning), 0, 0, 1, 1}, {&__pyx_n_s_SHORT_DESCRIPTION, __pyx_k_SHORT_DESCRIPTION, sizeof(__pyx_k_SHORT_DESCRIPTION), 0, 0, 1, 1}, {&__pyx_n_s_ShiftModifier, __pyx_k_ShiftModifier, sizeof(__pyx_k_ShiftModifier), 0, 0, 1, 1}, {&__pyx_kp_u_Skip_mime_type, __pyx_k_Skip_mime_type, sizeof(__pyx_k_Skip_mime_type), 0, 1, 0, 0}, {&__pyx_n_s_Theme, __pyx_k_Theme, sizeof(__pyx_k_Theme), 0, 0, 1, 1}, {&__pyx_n_s_UI_DIR, __pyx_k_UI_DIR, sizeof(__pyx_k_UI_DIR), 0, 0, 1, 1}, {&__pyx_n_u_Ubuntu, __pyx_k_Ubuntu, sizeof(__pyx_k_Ubuntu), 0, 1, 0, 1}, {&__pyx_n_s_VERSION, __pyx_k_VERSION, sizeof(__pyx_k_VERSION), 0, 0, 1, 1}, {&__pyx_n_s_ValueError, __pyx_k_ValueError, sizeof(__pyx_k_ValueError), 0, 0, 1, 1}, {&__pyx_kp_u__13, __pyx_k__13, sizeof(__pyx_k__13), 0, 1, 0, 0}, {&__pyx_kp_u__22, __pyx_k__22, sizeof(__pyx_k__22), 0, 1, 0, 0}, {&__pyx_n_s__4, __pyx_k__4, sizeof(__pyx_k__4), 0, 0, 1, 1}, {&__pyx_kp_u__6, __pyx_k__6, sizeof(__pyx_k__6), 0, 1, 0, 0}, {&__pyx_kp_u__7, __pyx_k__7, sizeof(__pyx_k__7), 0, 1, 0, 0}, {&__pyx_n_u_about_contribute, __pyx_k_about_contribute, sizeof(__pyx_k_about_contribute), 0, 1, 0, 1}, {&__pyx_n_u_about_license_full, __pyx_k_about_license_full, sizeof(__pyx_k_about_license_full), 0, 1, 0, 1}, {&__pyx_n_u_about_license_notfound, __pyx_k_about_license_notfound, sizeof(__pyx_k_about_license_notfound), 0, 1, 0, 1}, {&__pyx_n_u_about_license_short, __pyx_k_about_license_short, sizeof(__pyx_k_about_license_short), 0, 1, 0, 1}, {&__pyx_n_u_about_translators, __pyx_k_about_translators, sizeof(__pyx_k_about_translators), 0, 1, 0, 1}, {&__pyx_n_u_about_website, __pyx_k_about_website, sizeof(__pyx_k_about_website), 0, 1, 0, 1}, {&__pyx_kp_u_action_edit_cube, __pyx_k_action_edit_cube, sizeof(__pyx_k_action_edit_cube), 0, 1, 0, 0}, {&__pyx_kp_u_action_edit_moves, __pyx_k_action_edit_moves, sizeof(__pyx_k_action_edit_moves), 0, 1, 0, 0}, {&__pyx_kp_u_action_initial_state, __pyx_k_action_initial_state, sizeof(__pyx_k_action_initial_state), 0, 1, 0, 0}, {&__pyx_kp_u_action_preferences, __pyx_k_action_preferences, sizeof(__pyx_k_action_preferences), 0, 1, 0, 0}, {&__pyx_kp_u_action_reset_rotation, __pyx_k_action_reset_rotation, sizeof(__pyx_k_action_reset_rotation), 0, 1, 0, 0}, {&__pyx_kp_u_action_selectmodel, __pyx_k_action_selectmodel, sizeof(__pyx_k_action_selectmodel), 0, 1, 0, 0}, {&__pyx_n_s_angle_max, __pyx_k_angle_max, sizeof(__pyx_k_angle_max), 0, 0, 1, 1}, {&__pyx_n_s_animate_timer_step, __pyx_k_animate_timer_step, sizeof(__pyx_k_animate_timer_step), 0, 0, 1, 1}, {&__pyx_n_s_animate_timer_stop, __pyx_k_animate_timer_stop, sizeof(__pyx_k_animate_timer_stop), 0, 0, 1, 1}, {&__pyx_n_s_app, __pyx_k_app, sizeof(__pyx_k_app), 0, 0, 1, 1}, {&__pyx_n_s_app_post_create, __pyx_k_app_post_create, sizeof(__pyx_k_app_post_create), 0, 0, 1, 1}, {&__pyx_n_s_append, __pyx_k_append, sizeof(__pyx_k_append), 0, 0, 1, 1}, {&__pyx_n_s_args, __pyx_k_args, sizeof(__pyx_k_args), 0, 0, 1, 1}, {&__pyx_n_b_bool, __pyx_k_bool, sizeof(__pyx_k_bool), 0, 0, 0, 1}, {&__pyx_n_s_button, __pyx_k_button, sizeof(__pyx_k_button), 0, 0, 1, 1}, {&__pyx_n_u_button_mousemode_ext, __pyx_k_button_mousemode_ext, sizeof(__pyx_k_button_mousemode_ext), 0, 1, 0, 1}, {&__pyx_n_u_button_mousemode_gesture, __pyx_k_button_mousemode_gesture, sizeof(__pyx_k_button_mousemode_gesture), 0, 1, 0, 1}, {&__pyx_n_u_button_mousemode_quad, __pyx_k_button_mousemode_quad, sizeof(__pyx_k_button_mousemode_quad), 0, 1, 0, 1}, {&__pyx_n_s_callback, __pyx_k_callback, sizeof(__pyx_k_callback), 0, 0, 1, 1}, {&__pyx_n_u_ccw, __pyx_k_ccw, sizeof(__pyx_k_ccw), 0, 1, 0, 1}, {&__pyx_n_u_checkbox_mirror_faces, __pyx_k_checkbox_mirror_faces, sizeof(__pyx_k_checkbox_mirror_faces), 0, 1, 0, 1}, {&__pyx_n_s_close, __pyx_k_close, sizeof(__pyx_k_close), 0, 0, 1, 1}, {&__pyx_n_s_close_mainwindow, __pyx_k_close_mainwindow, sizeof(__pyx_k_close_mainwindow), 0, 0, 1, 1}, {&__pyx_n_s_code, __pyx_k_code, sizeof(__pyx_k_code), 0, 0, 1, 1}, {&__pyx_n_s_color, __pyx_k_color, sizeof(__pyx_k_color), 0, 0, 1, 1}, {&__pyx_n_u_color, __pyx_k_color, sizeof(__pyx_k_color), 0, 1, 0, 1}, {&__pyx_n_u_combobox_samples, __pyx_k_combobox_samples, sizeof(__pyx_k_combobox_samples), 0, 1, 0, 1}, {&__pyx_n_u_combobox_shader, __pyx_k_combobox_shader, sizeof(__pyx_k_combobox_shader), 0, 1, 0, 1}, {&__pyx_kp_u_compiled, __pyx_k_compiled, sizeof(__pyx_k_compiled), 0, 1, 0, 0}, {&__pyx_n_s_compiled_2, __pyx_k_compiled_2, sizeof(__pyx_k_compiled_2), 0, 0, 1, 1}, {&__pyx_n_s_config, __pyx_k_config, sizeof(__pyx_k_config), 0, 0, 1, 1}, {&__pyx_n_s_config_2, __pyx_k_config_2, sizeof(__pyx_k_config_2), 0, 0, 1, 1}, {&__pyx_n_s_create_filesystemwatcher, __pyx_k_create_filesystemwatcher, sizeof(__pyx_k_create_filesystemwatcher), 0, 0, 1, 1}, {&__pyx_n_s_create_window, __pyx_k_create_window, sizeof(__pyx_k_create_window), 0, 0, 1, 1}, {&__pyx_n_s_currentfolder, __pyx_k_currentfolder, sizeof(__pyx_k_currentfolder), 0, 0, 1, 1}, {&__pyx_n_u_cursors, __pyx_k_cursors, sizeof(__pyx_k_cursors), 0, 1, 0, 1}, {&__pyx_n_s_data, __pyx_k_data, sizeof(__pyx_k_data), 0, 0, 1, 1}, {&__pyx_n_s_destroy_window, __pyx_k_destroy_window, sizeof(__pyx_k_destroy_window), 0, 0, 1, 1}, {&__pyx_n_s_dirname, __pyx_k_dirname, sizeof(__pyx_k_dirname), 0, 0, 1, 1}, {&__pyx_n_s_divider_pos, __pyx_k_divider_pos, sizeof(__pyx_k_divider_pos), 0, 0, 1, 1}, {&__pyx_n_s_divider_pos2, __pyx_k_divider_pos2, sizeof(__pyx_k_divider_pos2), 0, 0, 1, 1}, {&__pyx_n_s_doc, __pyx_k_doc, sizeof(__pyx_k_doc), 0, 0, 1, 1}, {&__pyx_n_b_double, __pyx_k_double, sizeof(__pyx_k_double), 0, 0, 0, 1}, {&__pyx_kp_u_drag_enter, __pyx_k_drag_enter, sizeof(__pyx_k_drag_enter), 0, 1, 0, 0}, {&__pyx_kp_u_draw_accels, __pyx_k_draw_accels, sizeof(__pyx_k_draw_accels), 0, 1, 0, 0}, {&__pyx_kp_u_draw_mirror_distance, __pyx_k_draw_mirror_distance, sizeof(__pyx_k_draw_mirror_distance), 0, 1, 0, 0}, {&__pyx_kp_u_draw_mirror_distance_default, __pyx_k_draw_mirror_distance_default, sizeof(__pyx_k_draw_mirror_distance_default), 0, 1, 0, 0}, {&__pyx_kp_u_draw_mirror_distance_range, __pyx_k_draw_mirror_distance_range, sizeof(__pyx_k_draw_mirror_distance_range), 0, 1, 0, 0}, {&__pyx_kp_u_draw_mirror_faces, __pyx_k_draw_mirror_faces, sizeof(__pyx_k_draw_mirror_faces), 0, 1, 0, 0}, {&__pyx_kp_u_draw_mirror_faces_default, __pyx_k_draw_mirror_faces_default, sizeof(__pyx_k_draw_mirror_faces_default), 0, 1, 0, 0}, {&__pyx_kp_u_draw_samples, __pyx_k_draw_samples, sizeof(__pyx_k_draw_samples), 0, 1, 0, 0}, {&__pyx_kp_u_draw_samples_default, __pyx_k_draw_samples_default, sizeof(__pyx_k_draw_samples_default), 0, 1, 0, 0}, {&__pyx_kp_u_draw_samples_range, __pyx_k_draw_samples_range, sizeof(__pyx_k_draw_samples_range), 0, 1, 0, 0}, {&__pyx_kp_u_draw_selection_nick, __pyx_k_draw_selection_nick, sizeof(__pyx_k_draw_selection_nick), 0, 1, 0, 0}, {&__pyx_kp_u_draw_shader, __pyx_k_draw_shader, sizeof(__pyx_k_draw_shader), 0, 1, 0, 0}, {&__pyx_kp_u_draw_shader_default, __pyx_k_draw_shader_default, sizeof(__pyx_k_draw_shader_default), 0, 1, 0, 0}, {&__pyx_kp_u_draw_shader_range, __pyx_k_draw_shader_range, sizeof(__pyx_k_draw_shader_range), 0, 1, 0, 0}, {&__pyx_kp_u_draw_speed, __pyx_k_draw_speed, sizeof(__pyx_k_draw_speed), 0, 1, 0, 0}, {&__pyx_kp_u_draw_speed_default, __pyx_k_draw_speed_default, sizeof(__pyx_k_draw_speed_default), 0, 1, 0, 0}, {&__pyx_kp_u_draw_speed_range, __pyx_k_draw_speed_range, sizeof(__pyx_k_draw_speed_range), 0, 1, 0, 0}, {&__pyx_n_s_encode, __pyx_k_encode, sizeof(__pyx_k_encode), 0, 0, 1, 1}, {&__pyx_n_s_enumerate, __pyx_k_enumerate, sizeof(__pyx_k_enumerate), 0, 0, 1, 1}, {&__pyx_n_s_environ, __pyx_k_environ, sizeof(__pyx_k_environ), 0, 0, 1, 1}, {&__pyx_n_s_facekey, __pyx_k_facekey, sizeof(__pyx_k_facekey), 0, 0, 1, 1}, {&__pyx_n_s_facename, __pyx_k_facename, sizeof(__pyx_k_facename), 0, 0, 1, 1}, {&__pyx_n_s_facenames, __pyx_k_facenames, sizeof(__pyx_k_facenames), 0, 0, 1, 1}, {&__pyx_n_s_filename, __pyx_k_filename, sizeof(__pyx_k_filename), 0, 0, 1, 1}, {&__pyx_n_s_filesystemwatcher_handlers, __pyx_k_filesystemwatcher_handlers, sizeof(__pyx_k_filesystemwatcher_handlers), 0, 0, 1, 1}, {&__pyx_n_s_filesystemwatcher_path, __pyx_k_filesystemwatcher_path, sizeof(__pyx_k_filesystemwatcher_path), 0, 0, 1, 1}, {&__pyx_n_s_fill_sidepane, __pyx_k_fill_sidepane, sizeof(__pyx_k_fill_sidepane), 0, 0, 1, 1}, {&__pyx_n_s_font, __pyx_k_font, sizeof(__pyx_k_font), 0, 0, 1, 1}, {&__pyx_n_s_fontpixelsize, __pyx_k_fontpixelsize, sizeof(__pyx_k_fontpixelsize), 0, 0, 1, 1}, {&__pyx_n_s_format, __pyx_k_format, sizeof(__pyx_k_format), 0, 0, 1, 1}, {&__pyx_kp_u_from_package, __pyx_k_from_package, sizeof(__pyx_k_from_package), 0, 1, 0, 0}, {&__pyx_n_s_func, __pyx_k_func, sizeof(__pyx_k_func), 0, 0, 1, 1}, {&__pyx_n_s_genexpr, __pyx_k_genexpr, sizeof(__pyx_k_genexpr), 0, 0, 1, 1}, {&__pyx_n_u_gesture, __pyx_k_gesture, sizeof(__pyx_k_gesture), 0, 1, 0, 1}, {&__pyx_n_s_get, __pyx_k_get, sizeof(__pyx_k_get), 0, 0, 1, 1}, {&__pyx_n_s_get_filedialog_imagefile, __pyx_k_get_filedialog_imagefile, sizeof(__pyx_k_get_filedialog_imagefile), 0, 0, 1, 1}, {&__pyx_n_s_get_imagefile, __pyx_k_get_imagefile, sizeof(__pyx_k_get_imagefile), 0, 0, 1, 1}, {&__pyx_n_s_get_pictures_folder, __pyx_k_get_pictures_folder, sizeof(__pyx_k_get_pictures_folder), 0, 0, 1, 1}, {&__pyx_n_s_get_samples, __pyx_k_get_samples, sizeof(__pyx_k_get_samples), 0, 0, 1, 1}, {&__pyx_n_s_gettext, __pyx_k_gettext, sizeof(__pyx_k_gettext), 0, 0, 1, 1}, {&__pyx_n_s_gl_delete_atlas, __pyx_k_gl_delete_atlas, sizeof(__pyx_k_gl_delete_atlas), 0, 0, 1, 1}, {&__pyx_n_s_height, __pyx_k_height, sizeof(__pyx_k_height), 0, 0, 1, 1}, {&__pyx_n_u_help_text, __pyx_k_help_text, sizeof(__pyx_k_help_text), 0, 1, 0, 1}, {&__pyx_kp_s_tmp, __pyx_k_tmp, sizeof(__pyx_k_tmp), 0, 0, 1, 0}, {&__pyx_n_s_i, __pyx_k_i, sizeof(__pyx_k_i), 0, 0, 1, 1}, {&__pyx_n_s_icon, __pyx_k_icon, sizeof(__pyx_k_icon), 0, 0, 1, 1}, {&__pyx_n_s_image, __pyx_k_image, sizeof(__pyx_k_image), 0, 0, 1, 1}, {&__pyx_n_u_image, __pyx_k_image, sizeof(__pyx_k_image), 0, 1, 0, 1}, {&__pyx_n_s_image_from_file, __pyx_k_image_from_file, sizeof(__pyx_k_image_from_file), 0, 0, 1, 1}, {&__pyx_n_s_imagefile, __pyx_k_imagefile, sizeof(__pyx_k_imagefile), 0, 0, 1, 1}, {&__pyx_n_s_imageindex, __pyx_k_imageindex, sizeof(__pyx_k_imageindex), 0, 0, 1, 1}, {&__pyx_n_s_imageindex_icon, __pyx_k_imageindex_icon, sizeof(__pyx_k_imageindex_icon), 0, 0, 1, 1}, {&__pyx_n_s_imagemode, __pyx_k_imagemode, sizeof(__pyx_k_imagemode), 0, 0, 1, 1}, {&__pyx_n_u_images, __pyx_k_images, sizeof(__pyx_k_images), 0, 1, 0, 1}, {&__pyx_n_s_import, __pyx_k_import, sizeof(__pyx_k_import), 0, 0, 1, 1}, {&__pyx_n_s_index, __pyx_k_index, sizeof(__pyx_k_index), 0, 0, 1, 1}, {&__pyx_n_s_index_icon, __pyx_k_index_icon, sizeof(__pyx_k_index_icon), 0, 0, 1, 1}, {&__pyx_kp_u_init_module, __pyx_k_init_module, sizeof(__pyx_k_init_module), 0, 1, 0, 0}, {&__pyx_n_s_initial_resize, __pyx_k_initial_resize, sizeof(__pyx_k_initial_resize), 0, 0, 1, 1}, {&__pyx_n_b_int, __pyx_k_int, sizeof(__pyx_k_int), 0, 0, 0, 1}, {&__pyx_n_s_isfile, __pyx_k_isfile, sizeof(__pyx_k_isfile), 0, 0, 1, 1}, {&__pyx_n_s_item, __pyx_k_item, sizeof(__pyx_k_item), 0, 0, 1, 1}, {&__pyx_n_s_join, __pyx_k_join, sizeof(__pyx_k_join), 0, 0, 1, 1}, {&__pyx_n_s_keyseq, __pyx_k_keyseq, sizeof(__pyx_k_keyseq), 0, 0, 1, 1}, {&__pyx_n_s_keystr, __pyx_k_keystr, sizeof(__pyx_k_keystr), 0, 0, 1, 1}, {&__pyx_n_s_keyval_from_name, __pyx_k_keyval_from_name, sizeof(__pyx_k_keyval_from_name), 0, 0, 1, 1}, {&__pyx_n_s_keyval_from_name_locals_genexpr, __pyx_k_keyval_from_name_locals_genexpr, sizeof(__pyx_k_keyval_from_name_locals_genexpr), 0, 0, 1, 1}, {&__pyx_n_u_label_needs_restarted, __pyx_k_label_needs_restarted, sizeof(__pyx_k_label_needs_restarted), 0, 1, 0, 1}, {&__pyx_n_s_load_image_from_file, __pyx_k_load_image_from_file, sizeof(__pyx_k_load_image_from_file), 0, 0, 1, 1}, {&__pyx_n_s_load_ui, __pyx_k_load_ui, sizeof(__pyx_k_load_ui), 0, 0, 1, 1}, {&__pyx_n_s_locations, __pyx_k_locations, sizeof(__pyx_k_locations), 0, 0, 1, 1}, {&__pyx_n_s_main, __pyx_k_main, sizeof(__pyx_k_main), 0, 0, 1, 1}, {&__pyx_n_s_maxsize, __pyx_k_maxsize, sizeof(__pyx_k_maxsize), 0, 0, 1, 1}, {&__pyx_n_s_message, __pyx_k_message, sizeof(__pyx_k_message), 0, 0, 1, 1}, {&__pyx_n_s_metaclass, __pyx_k_metaclass, sizeof(__pyx_k_metaclass), 0, 0, 1, 1}, {&__pyx_n_u_mode_nick, __pyx_k_mode_nick, sizeof(__pyx_k_mode_nick), 0, 1, 0, 1}, {&__pyx_n_s_modelselect, __pyx_k_modelselect, sizeof(__pyx_k_modelselect), 0, 0, 1, 1}, {&__pyx_n_s_module, __pyx_k_module, sizeof(__pyx_k_module), 0, 0, 1, 1}, {&__pyx_n_s_module_2, __pyx_k_module_2, sizeof(__pyx_k_module_2), 0, 0, 1, 1}, {&__pyx_n_u_mosaic, __pyx_k_mosaic, sizeof(__pyx_k_mosaic), 0, 1, 0, 1}, {&__pyx_kp_u_mouse__png, __pyx_k_mouse__png, sizeof(__pyx_k_mouse__png), 0, 1, 0, 0}, {&__pyx_n_s_msec, __pyx_k_msec, sizeof(__pyx_k_msec), 0, 0, 1, 1}, {&__pyx_n_s_name, __pyx_k_name, sizeof(__pyx_k_name), 0, 0, 1, 1}, {&__pyx_n_s_name_2, __pyx_k_name_2, sizeof(__pyx_k_name_2), 0, 0, 1, 1}, {&__pyx_kp_u_new_random_png, __pyx_k_new_random_png, sizeof(__pyx_k_new_random_png), 0, 1, 0, 0}, {&__pyx_kp_u_new_solved_png, __pyx_k_new_solved_png, sizeof(__pyx_k_new_solved_png), 0, 1, 0, 0}, {&__pyx_n_s_nick, __pyx_k_nick, sizeof(__pyx_k_nick), 0, 0, 1, 1}, {&__pyx_n_s_on_action_challenge_triggered, __pyx_k_on_action_challenge_triggered, sizeof(__pyx_k_on_action_challenge_triggered), 0, 0, 1, 1}, {&__pyx_n_s_on_action_edit_cube_triggered, __pyx_k_on_action_edit_cube_triggered, sizeof(__pyx_k_on_action_edit_cube_triggered), 0, 0, 1, 1}, {&__pyx_n_s_on_action_forward_triggered, __pyx_k_on_action_forward_triggered, sizeof(__pyx_k_on_action_forward_triggered), 0, 0, 1, 1}, {&__pyx_n_s_on_action_initial_state_triggere, __pyx_k_on_action_initial_state_triggere, sizeof(__pyx_k_on_action_initial_state_triggere), 0, 0, 1, 1}, {&__pyx_n_s_on_action_mark_remove_triggered, __pyx_k_on_action_mark_remove_triggered, sizeof(__pyx_k_on_action_mark_remove_triggered), 0, 0, 1, 1}, {&__pyx_n_s_on_action_mark_set_triggered, __pyx_k_on_action_mark_set_triggered, sizeof(__pyx_k_on_action_mark_set_triggered), 0, 0, 1, 1}, {&__pyx_n_s_on_action_new_solved_triggered, __pyx_k_on_action_new_solved_triggered, sizeof(__pyx_k_on_action_new_solved_triggered), 0, 0, 1, 1}, {&__pyx_n_s_on_action_next_triggered, __pyx_k_on_action_next_triggered, sizeof(__pyx_k_on_action_next_triggered), 0, 0, 1, 1}, {&__pyx_n_s_on_action_play_triggered, __pyx_k_on_action_play_triggered, sizeof(__pyx_k_on_action_play_triggered), 0, 0, 1, 1}, {&__pyx_n_s_on_action_preferences_triggered, __pyx_k_on_action_preferences_triggered, sizeof(__pyx_k_on_action_preferences_triggered), 0, 0, 1, 1}, {&__pyx_n_s_on_action_previous_triggered, __pyx_k_on_action_previous_triggered, sizeof(__pyx_k_on_action_previous_triggered), 0, 0, 1, 1}, {&__pyx_n_s_on_action_reset_rotation_trigger, __pyx_k_on_action_reset_rotation_trigger, sizeof(__pyx_k_on_action_reset_rotation_trigger), 0, 0, 1, 1}, {&__pyx_n_s_on_action_rewind_triggered, __pyx_k_on_action_rewind_triggered, sizeof(__pyx_k_on_action_rewind_triggered), 0, 0, 1, 1}, {&__pyx_n_s_on_action_selectmodel_triggered, __pyx_k_on_action_selectmodel_triggered, sizeof(__pyx_k_on_action_selectmodel_triggered), 0, 0, 1, 1}, {&__pyx_n_s_on_action_stop_triggered, __pyx_k_on_action_stop_triggered, sizeof(__pyx_k_on_action_stop_triggered), 0, 0, 1, 1}, {&__pyx_n_s_on_animation_ending, __pyx_k_on_animation_ending, sizeof(__pyx_k_on_animation_ending), 0, 0, 1, 1}, {&__pyx_n_s_on_closing, __pyx_k_on_closing, sizeof(__pyx_k_on_closing), 0, 0, 1, 1}, {&__pyx_n_s_on_convert_to_mtype_size, __pyx_k_on_convert_to_mtype_size, sizeof(__pyx_k_on_convert_to_mtype_size), 0, 0, 1, 1}, {&__pyx_n_s_on_dialog_change_current_face, __pyx_k_on_dialog_change_current_face, sizeof(__pyx_k_on_dialog_change_current_face), 0, 0, 1, 1}, {&__pyx_n_s_on_dialog_change_current_image, __pyx_k_on_dialog_change_current_image, sizeof(__pyx_k_on_dialog_change_current_image), 0, 0, 1, 1}, {&__pyx_n_s_on_dialog_reset_current_image, __pyx_k_on_dialog_reset_current_image, sizeof(__pyx_k_on_dialog_reset_current_image), 0, 0, 1, 1}, {&__pyx_n_s_on_dialog_text, __pyx_k_on_dialog_text, sizeof(__pyx_k_on_dialog_text), 0, 0, 1, 1}, {&__pyx_n_s_on_edit_finished, __pyx_k_on_edit_finished, sizeof(__pyx_k_on_edit_finished), 0, 0, 1, 1}, {&__pyx_n_s_on_edit_moves_nextword, __pyx_k_on_edit_moves_nextword, sizeof(__pyx_k_on_edit_moves_nextword), 0, 0, 1, 1}, {&__pyx_n_s_on_edit_moves_prevword, __pyx_k_on_edit_moves_prevword, sizeof(__pyx_k_on_edit_moves_prevword), 0, 0, 1, 1}, {&__pyx_n_s_on_edit_moves_swapnext, __pyx_k_on_edit_moves_swapnext, sizeof(__pyx_k_on_edit_moves_swapnext), 0, 0, 1, 1}, {&__pyx_n_s_on_edit_moves_swapprev, __pyx_k_on_edit_moves_swapprev, sizeof(__pyx_k_on_edit_moves_swapprev), 0, 0, 1, 1}, {&__pyx_n_s_on_init_finalize, __pyx_k_on_init_finalize, sizeof(__pyx_k_on_init_finalize), 0, 0, 1, 1}, {&__pyx_n_s_on_key_pressed, __pyx_k_on_key_pressed, sizeof(__pyx_k_on_key_pressed), 0, 0, 1, 1}, {&__pyx_n_s_on_load_other_game, __pyx_k_on_load_other_game, sizeof(__pyx_k_on_load_other_game), 0, 0, 1, 1}, {&__pyx_n_s_on_model_back, __pyx_k_on_model_back, sizeof(__pyx_k_on_model_back), 0, 0, 1, 1}, {&__pyx_n_s_on_model_get_modeldata, __pyx_k_on_model_get_modeldata, sizeof(__pyx_k_on_model_get_modeldata), 0, 0, 1, 1}, {&__pyx_n_s_on_mouse_drop_color, __pyx_k_on_mouse_drop_color, sizeof(__pyx_k_on_mouse_drop_color), 0, 0, 1, 1}, {&__pyx_n_s_on_mouse_drop_url, __pyx_k_on_mouse_drop_url, sizeof(__pyx_k_on_mouse_drop_url), 0, 0, 1, 1}, {&__pyx_n_s_on_mouse_moved, __pyx_k_on_mouse_moved, sizeof(__pyx_k_on_mouse_moved), 0, 0, 1, 1}, {&__pyx_n_s_on_mouse_pressed, __pyx_k_on_mouse_pressed, sizeof(__pyx_k_on_mouse_pressed), 0, 0, 1, 1}, {&__pyx_n_s_on_mouse_released, __pyx_k_on_mouse_released, sizeof(__pyx_k_on_mouse_released), 0, 0, 1, 1}, {&__pyx_n_s_on_mouse_zoom, __pyx_k_on_mouse_zoom, sizeof(__pyx_k_on_mouse_zoom), 0, 0, 1, 1}, {&__pyx_n_s_on_picking_result, __pyx_k_on_picking_result, sizeof(__pyx_k_on_picking_result), 0, 0, 1, 1}, {&__pyx_n_s_on_plugin_activated, __pyx_k_on_plugin_activated, sizeof(__pyx_k_on_plugin_activated), 0, 0, 1, 1}, {&__pyx_n_s_on_plugin_test_idx, __pyx_k_on_plugin_test_idx, sizeof(__pyx_k_on_plugin_test_idx), 0, 0, 1, 1}, {&__pyx_n_s_on_settings_timer_timeout, __pyx_k_on_settings_timer_timeout, sizeof(__pyx_k_on_settings_timer_timeout), 0, 0, 1, 1}, {&__pyx_n_s_os, __pyx_k_os, sizeof(__pyx_k_os), 0, 0, 1, 1}, {&__pyx_n_s_package, __pyx_k_package, sizeof(__pyx_k_package), 0, 0, 1, 1}, {&__pyx_n_s_parse_color, __pyx_k_parse_color, sizeof(__pyx_k_parse_color), 0, 0, 1, 1}, {&__pyx_n_s_parse_color_f, __pyx_k_parse_color_f, sizeof(__pyx_k_parse_color_f), 0, 0, 1, 1}, {&__pyx_n_s_path, __pyx_k_path, sizeof(__pyx_k_path), 0, 0, 1, 1}, {&__pyx_n_s_pick_requested, __pyx_k_pick_requested, sizeof(__pyx_k_pick_requested), 0, 0, 1, 1}, {&__pyx_n_u_plain, __pyx_k_plain, sizeof(__pyx_k_plain), 0, 1, 0, 1}, {&__pyx_n_s_plugin_data, __pyx_k_plugin_data, sizeof(__pyx_k_plugin_data), 0, 0, 1, 1}, {&__pyx_n_s_pop, __pyx_k_pop, sizeof(__pyx_k_pop), 0, 0, 1, 1}, {&__pyx_n_s_pos, __pyx_k_pos, sizeof(__pyx_k_pos), 0, 0, 1, 1}, {&__pyx_n_s_preferences_dialog, __pyx_k_preferences_dialog, sizeof(__pyx_k_preferences_dialog), 0, 0, 1, 1}, {&__pyx_n_s_prepare, __pyx_k_prepare, sizeof(__pyx_k_prepare), 0, 0, 1, 1}, {&__pyx_n_s_print, __pyx_k_print, sizeof(__pyx_k_print), 0, 0, 1, 1}, {&__pyx_n_s_pyapp, __pyx_k_pyapp, sizeof(__pyx_k_pyapp), 0, 0, 1, 1}, {&__pyx_n_s_pybiklib, __pyx_k_pybiklib, sizeof(__pyx_k_pybiklib), 0, 0, 1, 1}, {&__pyx_n_s_pybiklib_settings, __pyx_k_pybiklib_settings, sizeof(__pyx_k_pybiklib_settings), 0, 0, 1, 1}, {&__pyx_n_s_pydata, __pyx_k_pydata, sizeof(__pyx_k_pydata), 0, 0, 1, 1}, {&__pyx_n_s_qpath, __pyx_k_qpath, sizeof(__pyx_k_qpath), 0, 0, 1, 1}, {&__pyx_n_u_qt, __pyx_k_qt, sizeof(__pyx_k_qt), 0, 1, 0, 1}, {&__pyx_n_s_qt_qtwes2, __pyx_k_qt_qtwes2, sizeof(__pyx_k_qt_qtwes2), 0, 0, 1, 1}, {&__pyx_n_u_quadrant, __pyx_k_quadrant, sizeof(__pyx_k_quadrant), 0, 1, 0, 1}, {&__pyx_n_s_qualname, __pyx_k_qualname, sizeof(__pyx_k_qualname), 0, 0, 1, 1}, {&__pyx_n_s_range, __pyx_k_range, sizeof(__pyx_k_range), 0, 0, 1, 1}, {&__pyx_n_s_s1, __pyx_k_s1, sizeof(__pyx_k_s1), 0, 0, 1, 1}, {&__pyx_n_s_s2, __pyx_k_s2, sizeof(__pyx_k_s2), 0, 0, 1, 1}, {&__pyx_n_s_sample_buffers, __pyx_k_sample_buffers, sizeof(__pyx_k_sample_buffers), 0, 0, 1, 1}, {&__pyx_n_s_save_screenshot, __pyx_k_save_screenshot, sizeof(__pyx_k_save_screenshot), 0, 0, 1, 1}, {&__pyx_n_s_scaled_height, __pyx_k_scaled_height, sizeof(__pyx_k_scaled_height), 0, 0, 1, 1}, {&__pyx_n_s_scaled_width, __pyx_k_scaled_width, sizeof(__pyx_k_scaled_width), 0, 0, 1, 1}, {&__pyx_kp_u_select, __pyx_k_select, sizeof(__pyx_k_select), 0, 1, 0, 0}, {&__pyx_kp_u_select_model_png, __pyx_k_select_model_png, sizeof(__pyx_k_select_model_png), 0, 1, 0, 0}, {&__pyx_n_s_selection_nick, __pyx_k_selection_nick, sizeof(__pyx_k_selection_nick), 0, 0, 1, 1}, {&__pyx_n_s_send, __pyx_k_send, sizeof(__pyx_k_send), 0, 0, 1, 1}, {&__pyx_n_s_set_animation_speed, __pyx_k_set_animation_speed, sizeof(__pyx_k_set_animation_speed), 0, 0, 1, 1}, {&__pyx_n_s_set_combobox_current_image, __pyx_k_set_combobox_current_image, sizeof(__pyx_k_set_combobox_current_image), 0, 0, 1, 1}, {&__pyx_n_s_set_cursor, __pyx_k_set_cursor, sizeof(__pyx_k_set_cursor), 0, 0, 1, 1}, {&__pyx_n_s_set_debug_flags, __pyx_k_set_debug_flags, sizeof(__pyx_k_set_debug_flags), 0, 0, 1, 1}, {&__pyx_n_s_set_debug_text, __pyx_k_set_debug_text, sizeof(__pyx_k_set_debug_text), 0, 0, 1, 1}, {&__pyx_n_s_set_edit_moves, __pyx_k_set_edit_moves, sizeof(__pyx_k_set_edit_moves), 0, 0, 1, 1}, {&__pyx_n_s_set_pick_requested, __pyx_k_set_pick_requested, sizeof(__pyx_k_set_pick_requested), 0, 0, 1, 1}, {&__pyx_n_s_set_preferences_current_face_the, __pyx_k_set_preferences_current_face_the, sizeof(__pyx_k_set_preferences_current_face_the), 0, 0, 1, 1}, {&__pyx_n_s_set_status_text, __pyx_k_set_status_text, sizeof(__pyx_k_set_status_text), 0, 0, 1, 1}, {&__pyx_n_s_set_title, __pyx_k_set_title, sizeof(__pyx_k_set_title), 0, 0, 1, 1}, {&__pyx_n_s_set_toolbar_state, __pyx_k_set_toolbar_state, sizeof(__pyx_k_set_toolbar_state), 0, 0, 1, 1}, {&__pyx_n_s_settings, __pyx_k_settings, sizeof(__pyx_k_settings), 0, 0, 1, 1}, {&__pyx_n_s_shader_names, __pyx_k_shader_names, sizeof(__pyx_k_shader_names), 0, 0, 1, 1}, {&__pyx_n_s_show_message, __pyx_k_show_message, sizeof(__pyx_k_show_message), 0, 0, 1, 1}, {&__pyx_n_s_show_message_text, __pyx_k_show_message_text, sizeof(__pyx_k_show_message_text), 0, 0, 1, 1}, {&__pyx_n_s_show_preferences, __pyx_k_show_preferences, sizeof(__pyx_k_show_preferences), 0, 0, 1, 1}, {&__pyx_n_u_simple, __pyx_k_simple, sizeof(__pyx_k_simple), 0, 1, 0, 1}, {&__pyx_n_s_singleshot_handler, __pyx_k_singleshot_handler, sizeof(__pyx_k_singleshot_handler), 0, 0, 1, 1}, {&__pyx_n_s_singleshot_queue, __pyx_k_singleshot_queue, sizeof(__pyx_k_singleshot_queue), 0, 0, 1, 1}, {&__pyx_n_s_sizepolicy, __pyx_k_sizepolicy, sizeof(__pyx_k_sizepolicy), 0, 0, 1, 1}, {&__pyx_n_u_slider_animspeed, __pyx_k_slider_animspeed, sizeof(__pyx_k_slider_animspeed), 0, 1, 0, 1}, {&__pyx_n_u_spinbox_mirror_faces, __pyx_k_spinbox_mirror_faces, sizeof(__pyx_k_spinbox_mirror_faces), 0, 1, 0, 1}, {&__pyx_n_s_split, __pyx_k_split, sizeof(__pyx_k_split), 0, 0, 1, 1}, {&__pyx_n_s_startswith, __pyx_k_startswith, sizeof(__pyx_k_startswith), 0, 0, 1, 1}, {&__pyx_n_s_state, __pyx_k_state, sizeof(__pyx_k_state), 0, 0, 1, 1}, {&__pyx_n_s_stockicons, __pyx_k_stockicons, sizeof(__pyx_k_stockicons), 0, 0, 1, 1}, {&__pyx_n_s_subtree, __pyx_k_subtree, sizeof(__pyx_k_subtree), 0, 0, 1, 1}, {&__pyx_n_s_sys, __pyx_k_sys, sizeof(__pyx_k_sys), 0, 0, 1, 1}, {&__pyx_n_s_test, __pyx_k_test, sizeof(__pyx_k_test), 0, 0, 1, 1}, {&__pyx_n_s_text, __pyx_k_text, sizeof(__pyx_k_text), 0, 0, 1, 1}, {&__pyx_kp_u_text_FULL_LICENSE_TEXT, __pyx_k_text_FULL_LICENSE_TEXT, sizeof(__pyx_k_text_FULL_LICENSE_TEXT), 0, 1, 0, 0}, {&__pyx_n_s_text_to_html, __pyx_k_text_to_html, sizeof(__pyx_k_text_to_html), 0, 0, 1, 1}, {&__pyx_n_s_textures, __pyx_k_textures, sizeof(__pyx_k_textures), 0, 0, 1, 1}, {&__pyx_n_s_theme, __pyx_k_theme, sizeof(__pyx_k_theme), 0, 0, 1, 1}, {&__pyx_kp_u_theme_bgcolor, __pyx_k_theme_bgcolor, sizeof(__pyx_k_theme_bgcolor), 0, 1, 0, 0}, {&__pyx_kp_u_theme_faces, __pyx_k_theme_faces, sizeof(__pyx_k_theme_faces), 0, 1, 0, 0}, {&__pyx_n_s_throw, __pyx_k_throw, sizeof(__pyx_k_throw), 0, 0, 1, 1}, {&__pyx_n_u_tiled, __pyx_k_tiled, sizeof(__pyx_k_tiled), 0, 1, 0, 1}, {&__pyx_n_s_timer_singleShot, __pyx_k_timer_singleShot, sizeof(__pyx_k_timer_singleShot), 0, 0, 1, 1}, {&__pyx_n_s_title, __pyx_k_title, sizeof(__pyx_k_title), 0, 0, 1, 1}, {&__pyx_n_s_transl, __pyx_k_transl, sizeof(__pyx_k_transl), 0, 0, 1, 1}, {&__pyx_n_s_treeview, __pyx_k_treeview, sizeof(__pyx_k_treeview), 0, 0, 1, 1}, {&__pyx_kp_u_unknown_typename_s, __pyx_k_unknown_typename_s, sizeof(__pyx_k_unknown_typename_s), 0, 1, 0, 0}, {&__pyx_n_s_unset_cursor, __pyx_k_unset_cursor, sizeof(__pyx_k_unset_cursor), 0, 0, 1, 1}, {&__pyx_n_s_update_drawingarea, __pyx_k_update_drawingarea, sizeof(__pyx_k_update_drawingarea), 0, 0, 1, 1}, {&__pyx_n_s_update_sidepane, __pyx_k_update_sidepane, sizeof(__pyx_k_update_sidepane), 0, 0, 1, 1}, {&__pyx_kp_u_utf_8, __pyx_k_utf_8, sizeof(__pyx_k_utf_8), 0, 1, 0, 0}, {&__pyx_kp_u_value_has_wrong_typ, __pyx_k_value_has_wrong_typ, sizeof(__pyx_k_value_has_wrong_typ), 0, 1, 0, 0}, {&__pyx_kp_b_void, __pyx_k_void, sizeof(__pyx_k_void), 0, 0, 0, 0}, {&__pyx_kp_u_void_2, __pyx_k_void_2, sizeof(__pyx_k_void_2), 0, 1, 0, 0}, {&__pyx_n_s_warn, __pyx_k_warn, sizeof(__pyx_k_warn), 0, 0, 1, 1}, {&__pyx_n_s_warn_explicit, __pyx_k_warn_explicit, sizeof(__pyx_k_warn_explicit), 0, 0, 1, 1}, {&__pyx_n_s_warnings, __pyx_k_warnings, sizeof(__pyx_k_warnings), 0, 0, 1, 1}, {&__pyx_n_s_width, __pyx_k_width, sizeof(__pyx_k_width), 0, 0, 1, 1}, {&__pyx_kp_u_window_divider, __pyx_k_window_divider, sizeof(__pyx_k_window_divider), 0, 1, 0, 0}, {&__pyx_kp_u_window_editbar, __pyx_k_window_editbar, sizeof(__pyx_k_window_editbar), 0, 1, 0, 0}, {&__pyx_kp_u_window_size, __pyx_k_window_size, sizeof(__pyx_k_window_size), 0, 1, 0, 0}, {&__pyx_kp_u_window_statusbar, __pyx_k_window_statusbar, sizeof(__pyx_k_window_statusbar), 0, 1, 0, 0}, {&__pyx_n_s_zip, __pyx_k_zip, sizeof(__pyx_k_zip), 0, 0, 1, 1}, {0, 0, 0, 0, 0, 0, 0} }; static int __Pyx_InitCachedBuiltins(void) { __pyx_builtin_print = __Pyx_GetBuiltinName(__pyx_n_s_print); if (!__pyx_builtin_print) __PYX_ERR(0, 227, __pyx_L1_error) __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) __PYX_ERR(0, 264, __pyx_L1_error) __pyx_builtin_zip = __Pyx_GetBuiltinName(__pyx_n_s_zip); if (!__pyx_builtin_zip) __PYX_ERR(0, 294, __pyx_L1_error) __pyx_builtin_RuntimeWarning = __Pyx_GetBuiltinName(__pyx_n_s_RuntimeWarning); if (!__pyx_builtin_RuntimeWarning) __PYX_ERR(0, 319, __pyx_L1_error) __pyx_builtin_enumerate = __Pyx_GetBuiltinName(__pyx_n_s_enumerate); if (!__pyx_builtin_enumerate) __PYX_ERR(0, 1059, __pyx_L1_error) __pyx_builtin_KeyError = __Pyx_GetBuiltinName(__pyx_n_s_KeyError); if (!__pyx_builtin_KeyError) __PYX_ERR(0, 2310, __pyx_L1_error) __pyx_builtin_ValueError = __Pyx_GetBuiltinName(__pyx_n_s_ValueError); if (!__pyx_builtin_ValueError) __PYX_ERR(0, 2310, __pyx_L1_error) return 0; __pyx_L1_error:; return -1; } static int __Pyx_InitCachedConstants(void) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0); /* "_qt_qtwes2.pyx":230 * print(' from package:', __package__) * print(' compiled:', __compiled) * print(' GL-type: es2') #px+ # <<<<<<<<<<<<<< * print(' OFFSCREEN:', OFFSCREEN) * */ __pyx_tuple_ = PyTuple_Pack(1, __pyx_kp_u_GL_type_es2); if (unlikely(!__pyx_tuple_)) __PYX_ERR(0, 230, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple_); __Pyx_GIVEREF(__pyx_tuple_); /* "_qt_qtwes2.pyx":231 * print(' compiled:', __compiled) * print(' GL-type: es2') #px+ * print(' OFFSCREEN:', OFFSCREEN) # <<<<<<<<<<<<<< * * renderdata.renderer = NULL */ __pyx_tuple__2 = PyTuple_Pack(2, __pyx_kp_u_OFFSCREEN, Py_False); if (unlikely(!__pyx_tuple__2)) __PYX_ERR(0, 231, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__2); __Pyx_GIVEREF(__pyx_tuple__2); /* "_qt_qtwes2.pyx":256 * ##pxm-FUNC P * cdef QString str2q(pstr): * data = pstr.encode('utf-8') #px+ # <<<<<<<<<<<<<< * return fromUtf8(data, len(data)) #px+ * */ __pyx_tuple__3 = PyTuple_Pack(1, __pyx_kp_u_utf_8); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(0, 256, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__3); __Pyx_GIVEREF(__pyx_tuple__3); /* "_qt_qtwes2.pyx":1316 * pydata.modelselect = pydata.app.on_action_selectmodel_triggered() * uidata.modelselect_currentpage = 1 * items, index, title = pydata.modelselect.on_model_get_modeldata(1) # <<<<<<<<<<<<<< * qtui.fill_page(create_stdmodel(items), str2q(title)) * qtui.set_page(1) */ __pyx_tuple__5 = PyTuple_Pack(1, __pyx_int_1); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(0, 1316, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__5); __Pyx_GIVEREF(__pyx_tuple__5); /* "_qt_qtwes2.pyx":1577 * #item = QStandardItem(str2q(key)) * this.liststore_movekeys.setItem(i, 1, item) * item = new QStandardItem(str2q(_('Move'))) #px/ # <<<<<<<<<<<<<< * #item = QStandardItem(str2q(_('Move'))) * this.liststore_movekeys.setHorizontalHeaderItem(0, item) */ __pyx_tuple__8 = PyTuple_Pack(1, __pyx_n_u_Move); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(0, 1577, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__8); __Pyx_GIVEREF(__pyx_tuple__8); /* "_qt_qtwes2.pyx":1580 * #item = QStandardItem(str2q(_('Move'))) * this.liststore_movekeys.setHorizontalHeaderItem(0, item) * item = new QStandardItem(str2q(_('Key'))) #px/ # <<<<<<<<<<<<<< * #item = QStandardItem(str2q(_('Key'))) * this.liststore_movekeys.setHorizontalHeaderItem(1, item) */ __pyx_tuple__9 = PyTuple_Pack(1, __pyx_n_u_Key); if (unlikely(!__pyx_tuple__9)) __PYX_ERR(0, 1580, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__9); __Pyx_GIVEREF(__pyx_tuple__9); /* "_qt_qtwes2.pyx":1682 * * def get_filedialog_imagefile(): * filename = q2str(getOpenFileName(uidata.preferences, str2q(_("Open Image")), uidata.preferences.image_dirname)) # <<<<<<<<<<<<<< * if filename: * uidata.preferences.image_dirname = str2q(os.path.dirname(filename)) */ __pyx_tuple__10 = PyTuple_Pack(1, __pyx_kp_u_Open_Image); if (unlikely(!__pyx_tuple__10)) __PYX_ERR(0, 1682, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__10); __Pyx_GIVEREF(__pyx_tuple__10); /* "_qt_qtwes2.pyx":1720 * for facename, facekey in facenames: * qtui.add_liststore_faces_row(str2q(facename), str2q(facekey)) * qtui.add_combobox_image_item(QIcon(), str2q(_('plain')), str2q('')) # <<<<<<<<<<<<<< * for filename in stockicons: * qtui.add_combobox_image_item(get_icon(filename), str2q(''), str2q(filename)) */ __pyx_tuple__11 = PyTuple_Pack(1, __pyx_n_u_plain); if (unlikely(!__pyx_tuple__11)) __PYX_ERR(0, 1720, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__11); __Pyx_GIVEREF(__pyx_tuple__11); /* "_qt_qtwes2.pyx":1723 * for filename in stockicons: * qtui.add_combobox_image_item(get_icon(filename), str2q(''), str2q(filename)) * qtui.add_combobox_image_item(QIcon(), str2q(_('select ')), str2q('/')) # <<<<<<<<<<<<<< * uidata.preferences.image_dirname = str2q(get_pictures_folder()) * qtui.finalize_liststore_faces(uidata.preferences) */ __pyx_tuple__12 = PyTuple_Pack(1, __pyx_kp_u_select); if (unlikely(!__pyx_tuple__12)) __PYX_ERR(0, 1723, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__12); __Pyx_GIVEREF(__pyx_tuple__12); /* "_qt_qtwes2.pyx":1766 * uidata.help = new HelpDialog(uidata.mainwindow) #px/ * #uidata.help = HelpDialog(uidata.mainwindow) * uidata.help.init(str2q(pydata.app.on_dialog_text('help_text'))) # <<<<<<<<<<<<<< * * ##pxm-FUNC P nogil */ __pyx_tuple__14 = PyTuple_Pack(1, __pyx_n_u_help_text); if (unlikely(!__pyx_tuple__14)) __PYX_ERR(0, 1766, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__14); __Pyx_GIVEREF(__pyx_tuple__14); /* "_qt_qtwes2.pyx":1817 * str2q(config_.VERSION), str2q(_(config_.SHORT_DESCRIPTION))) * qtui.fill_about_tab(str2q(config_.COPYRIGHT), * str2q(pydata.app.on_dialog_text('about_website')), # <<<<<<<<<<<<<< * str2q(pydata.app.on_dialog_text('about_translators'))) * qtui.fill_contribute_tab(str2q(pydata.app.on_dialog_text('about_contribute'))) */ __pyx_tuple__15 = PyTuple_Pack(1, __pyx_n_u_about_website); if (unlikely(!__pyx_tuple__15)) __PYX_ERR(0, 1817, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__15); __Pyx_GIVEREF(__pyx_tuple__15); /* "_qt_qtwes2.pyx":1818 * qtui.fill_about_tab(str2q(config_.COPYRIGHT), * str2q(pydata.app.on_dialog_text('about_website')), * str2q(pydata.app.on_dialog_text('about_translators'))) # <<<<<<<<<<<<<< * qtui.fill_contribute_tab(str2q(pydata.app.on_dialog_text('about_contribute'))) * license_full = pydata.app.on_dialog_text('about_license_full') */ __pyx_tuple__16 = PyTuple_Pack(1, __pyx_n_u_about_translators); if (unlikely(!__pyx_tuple__16)) __PYX_ERR(0, 1818, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__16); __Pyx_GIVEREF(__pyx_tuple__16); /* "_qt_qtwes2.pyx":1819 * str2q(pydata.app.on_dialog_text('about_website')), * str2q(pydata.app.on_dialog_text('about_translators'))) * qtui.fill_contribute_tab(str2q(pydata.app.on_dialog_text('about_contribute'))) # <<<<<<<<<<<<<< * license_full = pydata.app.on_dialog_text('about_license_full') * if license_full: */ __pyx_tuple__17 = PyTuple_Pack(1, __pyx_n_u_about_contribute); if (unlikely(!__pyx_tuple__17)) __PYX_ERR(0, 1819, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__17); __Pyx_GIVEREF(__pyx_tuple__17); /* "_qt_qtwes2.pyx":1820 * str2q(pydata.app.on_dialog_text('about_translators'))) * qtui.fill_contribute_tab(str2q(pydata.app.on_dialog_text('about_contribute'))) * license_full = pydata.app.on_dialog_text('about_license_full') # <<<<<<<<<<<<<< * if license_full: * qtui.fill_license_tab(str2q(pydata.app.on_dialog_text('about_license_short')), */ __pyx_tuple__18 = PyTuple_Pack(1, __pyx_n_u_about_license_full); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(0, 1820, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__18); __Pyx_GIVEREF(__pyx_tuple__18); /* "_qt_qtwes2.pyx":1822 * license_full = pydata.app.on_dialog_text('about_license_full') * if license_full: * qtui.fill_license_tab(str2q(pydata.app.on_dialog_text('about_license_short')), # <<<<<<<<<<<<<< * False, str2q(license_full)) * else: */ __pyx_tuple__19 = PyTuple_Pack(1, __pyx_n_u_about_license_short); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(0, 1822, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__19); __Pyx_GIVEREF(__pyx_tuple__19); /* "_qt_qtwes2.pyx":1825 * False, str2q(license_full)) * else: * qtui.fill_license_tab(str2q(pydata.app.on_dialog_text('about_license_short')), # <<<<<<<<<<<<<< * True, str2q(pydata.app.on_dialog_text('about_license_notfound'))) * about.exec() */ __pyx_tuple__20 = PyTuple_Pack(1, __pyx_n_u_about_license_short); if (unlikely(!__pyx_tuple__20)) __PYX_ERR(0, 1825, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__20); __Pyx_GIVEREF(__pyx_tuple__20); /* "_qt_qtwes2.pyx":1826 * else: * qtui.fill_license_tab(str2q(pydata.app.on_dialog_text('about_license_short')), * True, str2q(pydata.app.on_dialog_text('about_license_notfound'))) # <<<<<<<<<<<<<< * about.exec() * about.deleteLater() */ __pyx_tuple__21 = PyTuple_Pack(1, __pyx_n_u_about_license_notfound); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(0, 1826, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__21); __Pyx_GIVEREF(__pyx_tuple__21); /* "_qt_qtwes2.pyx":1989 * * def keyval_from_name(keystr): * keystr = '+'.join(('Num' if k == 'KP' else k) for k in keystr.split('+')) # <<<<<<<<<<<<<< * cdef QKeySequence keyseq = fromString(str2q(keystr), PortableText) #px/ * #keyseq = fromString(keystr, PortableText) */ __pyx_tuple__23 = PyTuple_Pack(1, __pyx_kp_u__22); if (unlikely(!__pyx_tuple__23)) __PYX_ERR(0, 1989, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__23); __Pyx_GIVEREF(__pyx_tuple__23); /* "_qt_qtwes2.pyx":2010 * imagefile = settings['theme.faces',facekey,'image'] * currentfolder = get_pictures_folder() * if imagefile.startswith('/'): # <<<<<<<<<<<<<< * currentfolder = os.path.dirname(imagefile) * elif imagefile: */ __pyx_tuple__24 = PyTuple_Pack(1, __pyx_kp_u__13); if (unlikely(!__pyx_tuple__24)) __PYX_ERR(0, 2010, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__24); __Pyx_GIVEREF(__pyx_tuple__24); /* "_qt_qtwes2.pyx":2163 * pos = [] * # Load 3 cursors from file (n - ne) * for i, (x, y) in enumerate([(8, 0), (15, 0), (15, 0)]): # <<<<<<<<<<<<<< * filename = filepattern.format(i) * images[i+1] = QImage(str2q(filename)) */ __pyx_tuple__25 = PyTuple_Pack(2, __pyx_int_8, __pyx_int_0); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(0, 2163, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__25); __Pyx_GIVEREF(__pyx_tuple__25); __pyx_tuple__26 = PyTuple_Pack(2, __pyx_int_15, __pyx_int_0); if (unlikely(!__pyx_tuple__26)) __PYX_ERR(0, 2163, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__26); __Pyx_GIVEREF(__pyx_tuple__26); __pyx_tuple__27 = PyTuple_Pack(2, __pyx_int_15, __pyx_int_0); if (unlikely(!__pyx_tuple__27)) __PYX_ERR(0, 2163, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__27); __Pyx_GIVEREF(__pyx_tuple__27); /* "_qt_qtwes2.pyx":2175 * #transform = QTransform() * transform.rotate(90) * for i in range(4, 16): # <<<<<<<<<<<<<< * x, y = pos[i-4] * images[i] = images[i-4].transformed(transform) */ __pyx_tuple__28 = PyTuple_Pack(2, __pyx_int_4, __pyx_int_16); if (unlikely(!__pyx_tuple__28)) __PYX_ERR(0, 2175, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__28); __Pyx_GIVEREF(__pyx_tuple__28); /* "_qt_qtwes2.pyx":2181 * images[16] = images[0] * pos.append(pos[0]) * for i in range(16): # <<<<<<<<<<<<<< * x, y = pos[i+1] * uidata.cursors[i] = new QCursor(fromImage(images[i+1]), x, y) #px/ */ __pyx_tuple__29 = PyTuple_Pack(1, __pyx_int_16); if (unlikely(!__pyx_tuple__29)) __PYX_ERR(0, 2181, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__29); __Pyx_GIVEREF(__pyx_tuple__29); /* "_qt_qtwes2.pyx":2186 * #uidata.cursors[i] = QCursor(fromImage(images[i+1]), x, y) * # cursor for center faces * filename = filepattern.format('ccw') # <<<<<<<<<<<<<< * uidata.cursors[16] = new QCursor(QPixmap(str2q(filename)), 7, 7) #px/ * #uidata.cursors[16] = QCursor(QPixmap(str2q(filename)), 7, 7) */ __pyx_tuple__30 = PyTuple_Pack(1, __pyx_n_u_ccw); if (unlikely(!__pyx_tuple__30)) __PYX_ERR(0, 2186, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__30); __Pyx_GIVEREF(__pyx_tuple__30); /* "_qt_qtwes2.pyx":102 * debug = 0 * * def set_debug_flags(module): # <<<<<<<<<<<<<< * global debug * if module.DEBUG_MSG: debug |= DEBUG_MSG */ __pyx_tuple__31 = PyTuple_Pack(1, __pyx_n_s_module); if (unlikely(!__pyx_tuple__31)) __PYX_ERR(0, 102, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__31); __Pyx_GIVEREF(__pyx_tuple__31); __pyx_codeobj__32 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__31, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_set_debug_flags, 102, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__32)) __PYX_ERR(0, 102, __pyx_L1_error) /* "_qt_qtwes2.pyx":396 * * ##pxm>IF 'qtw' == 'qtw' * def gl_delete_atlas(): # <<<<<<<<<<<<<< * if renderdata.texture is not NULL: * renderdata.texture.destroy() */ __pyx_codeobj__33 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_gl_delete_atlas, 396, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__33)) __PYX_ERR(0, 396, __pyx_L1_error) /* "_qt_qtwes2.pyx":577 * #### ui: communicate with render-thread #### * * def set_pick_requested(pick_requested): # <<<<<<<<<<<<<< * uidata.pick_requested = pick_requested * */ __pyx_tuple__34 = PyTuple_Pack(1, __pyx_n_s_pick_requested); if (unlikely(!__pyx_tuple__34)) __PYX_ERR(0, 577, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__34); __Pyx_GIVEREF(__pyx_tuple__34); __pyx_codeobj__35 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__34, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_set_pick_requested, 577, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__35)) __PYX_ERR(0, 577, __pyx_L1_error) /* "_qt_qtwes2.pyx":981 * #~ ##pxm>IF_END * * def set_debug_text(text): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * qtui.set_debug_text(str2q(text)) */ __pyx_tuple__36 = PyTuple_Pack(1, __pyx_n_s_text); if (unlikely(!__pyx_tuple__36)) __PYX_ERR(0, 981, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__36); __Pyx_GIVEREF(__pyx_tuple__36); __pyx_codeobj__37 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__36, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_set_debug_text, 981, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__37)) __PYX_ERR(0, 981, __pyx_L1_error) /* "_qt_qtwes2.pyx":988 * #~ ##pxm>IF_END * * def set_edit_moves(code, pos): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * uidata.move_edit.setText(str2q(code)) */ __pyx_tuple__38 = PyTuple_Pack(2, __pyx_n_s_code, __pyx_n_s_pos); if (unlikely(!__pyx_tuple__38)) __PYX_ERR(0, 988, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__38); __Pyx_GIVEREF(__pyx_tuple__38); __pyx_codeobj__39 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__38, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_set_edit_moves, 988, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__39)) __PYX_ERR(0, 988, __pyx_L1_error) /* "_qt_qtwes2.pyx":997 * #~ ##pxm>IF_END * * def set_status_text(text): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * uidata.statuslabel.setText(str2q(text)) */ __pyx_tuple__40 = PyTuple_Pack(1, __pyx_n_s_text); if (unlikely(!__pyx_tuple__40)) __PYX_ERR(0, 997, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__40); __Pyx_GIVEREF(__pyx_tuple__40); __pyx_codeobj__41 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__40, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_set_status_text, 997, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__41)) __PYX_ERR(0, 997, __pyx_L1_error) /* "_qt_qtwes2.pyx":1022 * #~ ##pxm>IF_END * show_message_text = None * def show_message(message): # <<<<<<<<<<<<<< * global show_message_text * show_message_text = message */ __pyx_tuple__42 = PyTuple_Pack(1, __pyx_n_s_message); if (unlikely(!__pyx_tuple__42)) __PYX_ERR(0, 1022, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__42); __Pyx_GIVEREF(__pyx_tuple__42); __pyx_codeobj__43 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__42, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_show_message, 1022, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__43)) __PYX_ERR(0, 1022, __pyx_L1_error) /* "_qt_qtwes2.pyx":1041 * ##pxm>IF_END * * def fill_sidepane(plugin_data): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * # remove old plugins */ __pyx_tuple__44 = PyTuple_Pack(8, __pyx_n_s_plugin_data, __pyx_n_s_item, __pyx_n_s_transl, __pyx_n_s_func, __pyx_n_s_subtree, __pyx_n_s_button, __pyx_n_s_treeview, __pyx_n_s_i); if (unlikely(!__pyx_tuple__44)) __PYX_ERR(0, 1041, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__44); __Pyx_GIVEREF(__pyx_tuple__44); __pyx_codeobj__45 = (PyObject*)__Pyx_PyCode_New(1, 0, 8, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__44, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_fill_sidepane, 1041, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__45)) __PYX_ERR(0, 1041, __pyx_L1_error) /* "_qt_qtwes2.pyx":1082 * return hide_all * ##pxm>IF_END * def update_sidepane(): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * cdef QModelIndex index #px+ */ __pyx_tuple__46 = PyTuple_Pack(2, __pyx_n_s_index, __pyx_n_s_i); if (unlikely(!__pyx_tuple__46)) __PYX_ERR(0, 1082, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__46); __Pyx_GIVEREF(__pyx_tuple__46); __pyx_codeobj__47 = (PyObject*)__Pyx_PyCode_New(0, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__46, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_update_sidepane, 1082, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__47)) __PYX_ERR(0, 1082, __pyx_L1_error) /* "_qt_qtwes2.pyx":1108 * #~ ##pxm>IF_END * * def set_toolbar_state(state): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * qtui.set_toolbar_state(state[0], state[1], state[2], state[3], state[4]) */ __pyx_tuple__48 = PyTuple_Pack(1, __pyx_n_s_state); if (unlikely(!__pyx_tuple__48)) __PYX_ERR(0, 1108, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__48); __Pyx_GIVEREF(__pyx_tuple__48); __pyx_codeobj__49 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__48, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_set_toolbar_state, 1108, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__49)) __PYX_ERR(0, 1108, __pyx_L1_error) /* "_qt_qtwes2.pyx":1669 * ##pxm>CPPCLASS_END * * def set_combobox_current_image(index_icon, imagefile, index): # <<<<<<<<<<<<<< * cdef QIcon icon #px/ * #icon = QIcon() */ __pyx_tuple__50 = PyTuple_Pack(4, __pyx_n_s_index_icon, __pyx_n_s_imagefile, __pyx_n_s_index, __pyx_n_s_icon); if (unlikely(!__pyx_tuple__50)) __PYX_ERR(0, 1669, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__50); __Pyx_GIVEREF(__pyx_tuple__50); __pyx_codeobj__51 = (PyObject*)__Pyx_PyCode_New(3, 0, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__50, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_set_combobox_current_image, 1669, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__51)) __PYX_ERR(0, 1669, __pyx_L1_error) /* "_qt_qtwes2.pyx":1676 * qtui.set_combobox_image(index_icon, icon, index) * * def set_preferences_current_face_theme(color, imageindex_icon, imagefile, imageindex, imagemode): # <<<<<<<<<<<<<< * qtui.set_button_color(str2q(color)) * set_combobox_current_image(imageindex_icon, imagefile, imageindex) */ __pyx_tuple__52 = PyTuple_Pack(5, __pyx_n_s_color, __pyx_n_s_imageindex_icon, __pyx_n_s_imagefile, __pyx_n_s_imageindex, __pyx_n_s_imagemode); if (unlikely(!__pyx_tuple__52)) __PYX_ERR(0, 1676, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__52); __Pyx_GIVEREF(__pyx_tuple__52); __pyx_codeobj__53 = (PyObject*)__Pyx_PyCode_New(5, 0, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__52, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_set_preferences_current_face_the, 1676, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__53)) __PYX_ERR(0, 1676, __pyx_L1_error) /* "_qt_qtwes2.pyx":1681 * qtui.set_imagemode(imagemode) * * def get_filedialog_imagefile(): # <<<<<<<<<<<<<< * filename = q2str(getOpenFileName(uidata.preferences, str2q(_("Open Image")), uidata.preferences.image_dirname)) * if filename: */ __pyx_tuple__54 = PyTuple_Pack(1, __pyx_n_s_filename); if (unlikely(!__pyx_tuple__54)) __PYX_ERR(0, 1681, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__54); __Pyx_GIVEREF(__pyx_tuple__54); __pyx_codeobj__55 = (PyObject*)__Pyx_PyCode_New(0, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__54, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_get_filedialog_imagefile, 1681, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__55)) __PYX_ERR(0, 1681, __pyx_L1_error) /* "_qt_qtwes2.pyx":1688 * ##pxm>IF_END * * def preferences_dialog(shader_names, sample_buffers, facenames, stockicons): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * uidata.preferences = new PreferencesDialog(uidata.mainwindow) #px/ */ __pyx_tuple__56 = PyTuple_Pack(10, __pyx_n_s_shader_names, __pyx_n_s_sample_buffers, __pyx_n_s_facenames, __pyx_n_s_stockicons, __pyx_n_s_nick, __pyx_n_s_text, __pyx_n_s_selection_nick, __pyx_n_s_facename, __pyx_n_s_facekey, __pyx_n_s_filename); if (unlikely(!__pyx_tuple__56)) __PYX_ERR(0, 1688, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__56); __Pyx_GIVEREF(__pyx_tuple__56); __pyx_codeobj__57 = (PyObject*)__Pyx_PyCode_New(4, 0, 10, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__56, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_preferences_dialog, 1688, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__57)) __PYX_ERR(0, 1688, __pyx_L1_error) /* "_qt_qtwes2.pyx":1743 * #~ ##pxm>IF_END * * def show_preferences(): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * uidata.preferences.show() */ __pyx_codeobj__58 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_show_preferences, 1743, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__58)) __PYX_ERR(0, 1743, __pyx_L1_error) /* "_qt_qtwes2.pyx":1832 * * * def initial_resize(): # <<<<<<<<<<<<<< * uidata.width, uidata.height = settings['window.size'] * uidata.mainwindow.resize(uidata.width, uidata.height) */ __pyx_tuple__59 = PyTuple_Pack(4, __pyx_n_s_s1, __pyx_n_s_s2, __pyx_n_s_divider_pos, __pyx_n_s_divider_pos2); if (unlikely(!__pyx_tuple__59)) __PYX_ERR(0, 1832, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__59); __Pyx_GIVEREF(__pyx_tuple__59); __pyx_codeobj__60 = (PyObject*)__Pyx_PyCode_New(0, 0, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__59, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_initial_resize, 1832, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__60)) __PYX_ERR(0, 1832, __pyx_L1_error) /* "_qt_qtwes2.pyx":1849 * #QTimer.singleShot(20, _on_init_finalize) * * def set_title(title): # <<<<<<<<<<<<<< * uidata.mainwindow.setTitle(str2q(title)) * */ __pyx_tuple__61 = PyTuple_Pack(1, __pyx_n_s_title); if (unlikely(!__pyx_tuple__61)) __PYX_ERR(0, 1849, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__61); __Pyx_GIVEREF(__pyx_tuple__61); __pyx_codeobj__62 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__61, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_set_title, 1849, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__62)) __PYX_ERR(0, 1849, __pyx_L1_error) /* "_qt_qtwes2.pyx":1852 * uidata.mainwindow.setTitle(str2q(title)) * * def load_ui(path): # <<<<<<<<<<<<<< * pass * ##pxm>IF 'qtw' == 'qtq' */ __pyx_tuple__63 = PyTuple_Pack(1, __pyx_n_s_path); if (unlikely(!__pyx_tuple__63)) __PYX_ERR(0, 1852, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__63); __Pyx_GIVEREF(__pyx_tuple__63); __pyx_codeobj__64 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__63, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_load_ui, 1852, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__64)) __PYX_ERR(0, 1852, __pyx_L1_error) /* "_qt_qtwes2.pyx":1865 * #~ ##pxm>IF_END * * def close_mainwindow(): # <<<<<<<<<<<<<< * uidata.mainwindow.close() * */ __pyx_codeobj__65 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_close_mainwindow, 1865, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__65)) __PYX_ERR(0, 1865, __pyx_L1_error) /* "_qt_qtwes2.pyx":1868 * uidata.mainwindow.close() * * def get_samples(): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * #TODO: uidata.drawingarea.format().samples() returns only 0 here */ __pyx_codeobj__66 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_get_samples, 1868, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__66)) __PYX_ERR(0, 1868, __pyx_L1_error) /* "_qt_qtwes2.pyx":1876 * #~ ##pxm>IF_END * * def update_drawingarea(): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * uidata.drawingarea.update() */ __pyx_codeobj__67 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_update_drawingarea, 1876, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__67)) __PYX_ERR(0, 1876, __pyx_L1_error) /* "_qt_qtwes2.pyx":1883 * #~ ##pxm>IF_END * * def set_cursor(index): # <<<<<<<<<<<<<< * if index < 0: * index += 18 */ __pyx_tuple__68 = PyTuple_Pack(1, __pyx_n_s_index); if (unlikely(!__pyx_tuple__68)) __PYX_ERR(0, 1883, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__68); __Pyx_GIVEREF(__pyx_tuple__68); __pyx_codeobj__69 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__68, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_set_cursor, 1883, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__69)) __PYX_ERR(0, 1883, __pyx_L1_error) /* "_qt_qtwes2.pyx":1895 * #~ ##pxm>IF_END * * def unset_cursor(): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * uidata.drawingarea.unsetCursor() */ __pyx_codeobj__70 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_unset_cursor, 1895, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__70)) __PYX_ERR(0, 1895, __pyx_L1_error) /* "_qt_qtwes2.pyx":1913 * #~ ##pxm>IF_END * * def save_screenshot(filename): # <<<<<<<<<<<<<< * IF OFFSCREEN: #px+ * cdef QImage image #px+ */ __pyx_tuple__71 = PyTuple_Pack(2, __pyx_n_s_filename, __pyx_n_s_image); if (unlikely(!__pyx_tuple__71)) __PYX_ERR(0, 1913, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__71); __Pyx_GIVEREF(__pyx_tuple__71); __pyx_codeobj__72 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__71, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_save_screenshot, 1913, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__72)) __PYX_ERR(0, 1913, __pyx_L1_error) /* "_qt_qtwes2.pyx":1932 * #### misc qt #### * * def parse_color(name): # <<<<<<<<<<<<<< * cdef QColor color #px/ * #color = QColor() */ __pyx_tuple__73 = PyTuple_Pack(2, __pyx_n_s_name_2, __pyx_n_s_color); if (unlikely(!__pyx_tuple__73)) __PYX_ERR(0, 1932, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__73); __Pyx_GIVEREF(__pyx_tuple__73); __pyx_codeobj__74 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__73, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_parse_color, 1932, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__74)) __PYX_ERR(0, 1932, __pyx_L1_error) /* "_qt_qtwes2.pyx":1938 * return color.red(), color.green(), color.blue() * * def parse_color_f(name): # <<<<<<<<<<<<<< * cdef QColor color #px/ * #color = QColor() */ __pyx_tuple__75 = PyTuple_Pack(2, __pyx_n_s_name_2, __pyx_n_s_color); if (unlikely(!__pyx_tuple__75)) __PYX_ERR(0, 1938, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__75); __Pyx_GIVEREF(__pyx_tuple__75); __pyx_codeobj__76 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__75, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_parse_color_f, 1938, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__76)) __PYX_ERR(0, 1938, __pyx_L1_error) /* "_qt_qtwes2.pyx":1944 * return color.redF(), color.greenF(), color.blueF() * * def load_image_from_file(filename, maxsize): # <<<<<<<<<<<<<< * cdef int width, height, scaled_width, scaled_height #px+ * cdef bytes data #px+ */ __pyx_tuple__77 = PyTuple_Pack(8, __pyx_n_s_filename, __pyx_n_s_maxsize, __pyx_n_s_width, __pyx_n_s_height, __pyx_n_s_scaled_width, __pyx_n_s_scaled_height, __pyx_n_s_data, __pyx_n_s_image); if (unlikely(!__pyx_tuple__77)) __PYX_ERR(0, 1944, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__77); __Pyx_GIVEREF(__pyx_tuple__77); __pyx_codeobj__78 = (PyObject*)__Pyx_PyCode_New(2, 0, 8, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__77, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_load_image_from_file, 1944, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__78)) __PYX_ERR(0, 1944, __pyx_L1_error) /* "_qt_qtwes2.pyx":1988 * ##pxm>IF_END * * def keyval_from_name(keystr): # <<<<<<<<<<<<<< * keystr = '+'.join(('Num' if k == 'KP' else k) for k in keystr.split('+')) * cdef QKeySequence keyseq = fromString(str2q(keystr), PortableText) #px/ */ __pyx_tuple__79 = PyTuple_Pack(4, __pyx_n_s_keystr, __pyx_n_s_keyseq, __pyx_n_s_genexpr, __pyx_n_s_genexpr); if (unlikely(!__pyx_tuple__79)) __PYX_ERR(0, 1988, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__79); __Pyx_GIVEREF(__pyx_tuple__79); __pyx_codeobj__80 = (PyObject*)__Pyx_PyCode_New(1, 0, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__79, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_keyval_from_name, 1988, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__80)) __PYX_ERR(0, 1988, __pyx_L1_error) /* "_qt_qtwes2.pyx":1996 * return keyseq[0] * * def get_pictures_folder(): # <<<<<<<<<<<<<< * cdef QStringList locations = standardLocations(PicturesLocation) #px/ * #locations = standardLocations(PicturesLocation) */ __pyx_tuple__81 = PyTuple_Pack(1, __pyx_n_s_locations); if (unlikely(!__pyx_tuple__81)) __PYX_ERR(0, 1996, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__81); __Pyx_GIVEREF(__pyx_tuple__81); __pyx_codeobj__82 = (PyObject*)__Pyx_PyCode_New(0, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__81, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_get_pictures_folder, 1996, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__82)) __PYX_ERR(0, 1996, __pyx_L1_error) /* "_qt_qtwes2.pyx":2007 * return q2str(locations[0]) * * def get_imagefile(facekey): # <<<<<<<<<<<<<< * imagefile = settings['theme.faces',facekey,'image'] * currentfolder = get_pictures_folder() */ __pyx_tuple__83 = PyTuple_Pack(3, __pyx_n_s_facekey, __pyx_n_s_imagefile, __pyx_n_s_currentfolder); if (unlikely(!__pyx_tuple__83)) __PYX_ERR(0, 2007, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__83); __Pyx_GIVEREF(__pyx_tuple__83); __pyx_codeobj__84 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__83, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_get_imagefile, 2007, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__84)) __PYX_ERR(0, 2007, __pyx_L1_error) /* "_qt_qtwes2.pyx":2016 * return currentfolder, imagefile * * def text_to_html(text): # <<<<<<<<<<<<<< * return q2str(fromPlainText(str2q(text)).toHtml()) * */ __pyx_tuple__85 = PyTuple_Pack(1, __pyx_n_s_text); if (unlikely(!__pyx_tuple__85)) __PYX_ERR(0, 2016, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__85); __Pyx_GIVEREF(__pyx_tuple__85); __pyx_codeobj__86 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__85, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_text_to_html, 2016, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__86)) __PYX_ERR(0, 2016, __pyx_L1_error) /* "_qt_qtwes2.pyx":2034 * uidata.filesystemwatcher.addPath(str2q(path)) * * def create_filesystemwatcher(path, callback): # <<<<<<<<<<<<<< * cdef QString qpath = str2q(path) #px/ * #qpath = path */ __pyx_tuple__87 = PyTuple_Pack(3, __pyx_n_s_path, __pyx_n_s_callback, __pyx_n_s_qpath); if (unlikely(!__pyx_tuple__87)) __PYX_ERR(0, 2034, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__87); __Pyx_GIVEREF(__pyx_tuple__87); __pyx_codeobj__88 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__87, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_create_filesystemwatcher, 2034, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__88)) __PYX_ERR(0, 2034, __pyx_L1_error) /* "_qt_qtwes2.pyx":2055 * else: #px+ * pydata.singleshot_handler = None #px+ * def timer_singleShot(msec, func): # <<<<<<<<<<<<<< * if pydata.singleshot_handler is None: #px+ * pydata.singleshot_handler = func #px+ */ __pyx_tuple__89 = PyTuple_Pack(2, __pyx_n_s_msec, __pyx_n_s_func); if (unlikely(!__pyx_tuple__89)) __PYX_ERR(0, 2055, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__89); __Pyx_GIVEREF(__pyx_tuple__89); __pyx_codeobj__90 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__89, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_timer_singleShot, 2055, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__90)) __PYX_ERR(0, 2055, __pyx_L1_error) /* "_qt_qtwes2.pyx":2088 * uidata.settings_timer = NULL * * def set_animation_speed(): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * uidata.speed = settings['draw.speed'] */ __pyx_codeobj__91 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_set_animation_speed, 2088, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__91)) __PYX_ERR(0, 2088, __pyx_L1_error) /* "_qt_qtwes2.pyx":2135 * * # only for demos * def animate_timer_step(angle_max): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * uidata.angle_max = angle_max */ __pyx_tuple__92 = PyTuple_Pack(1, __pyx_n_s_angle_max); if (unlikely(!__pyx_tuple__92)) __PYX_ERR(0, 2135, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__92); __Pyx_GIVEREF(__pyx_tuple__92); __pyx_codeobj__93 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__92, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_animate_timer_step, 2135, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__93)) __PYX_ERR(0, 2135, __pyx_L1_error) /* "_qt_qtwes2.pyx":2142 * pass * * def animate_timer_stop(): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * uidata.animate_timer.stop() */ __pyx_codeobj__94 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_animate_timer_stop, 2142, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__94)) __PYX_ERR(0, 2142, __pyx_L1_error) /* "_qt_qtwes2.pyx":2212 * #~ ##pxm>IF_END * * def create_window(pyapp): # <<<<<<<<<<<<<< * pydata.app = pyapp * init_module() */ __pyx_tuple__95 = PyTuple_Pack(2, __pyx_n_s_pyapp, __pyx_n_s_sizepolicy); if (unlikely(!__pyx_tuple__95)) __PYX_ERR(0, 2212, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__95); __Pyx_GIVEREF(__pyx_tuple__95); __pyx_codeobj__96 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__95, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_create_window, 2212, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__96)) __PYX_ERR(0, 2212, __pyx_L1_error) /* "_qt_qtwes2.pyx":2282 * load_cursors(os.path.join(config_.UI_DIR, 'cursors', 'mouse_{}.png')) * * def destroy_window(): # <<<<<<<<<<<<<< * destroy_cursors() * settings_timer_destroy() */ __pyx_codeobj__97 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_destroy_window, 2282, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__97)) __PYX_ERR(0, 2282, __pyx_L1_error) /* "_qt_qtwes2.pyx":2302 * #~ ##pxm>IF_END * * def app_post_create(gettext): # <<<<<<<<<<<<<< * cdef QApplication *app = QCoreApplication_instance() #px/ * #app = QCoreApplication.instance() */ __pyx_tuple__98 = PyTuple_Pack(4, __pyx_n_s_gettext, __pyx_n_s_app, __pyx_n_s_font, __pyx_n_s_fontpixelsize); if (unlikely(!__pyx_tuple__98)) __PYX_ERR(0, 2302, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__98); __Pyx_GIVEREF(__pyx_tuple__98); __pyx_codeobj__99 = (PyObject*)__Pyx_PyCode_New(1, 0, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__98, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_app_post_create, 2302, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__99)) __PYX_ERR(0, 2302, __pyx_L1_error) __Pyx_RefNannyFinishContext(); return 0; __pyx_L1_error:; __Pyx_RefNannyFinishContext(); return -1; } static int __Pyx_InitGlobals(void) { if (__Pyx_InitStrings(__pyx_string_tab) < 0) __PYX_ERR(0, 1, __pyx_L1_error); __pyx_float_14_0 = PyFloat_FromDouble(14.0); if (unlikely(!__pyx_float_14_0)) __PYX_ERR(0, 1, __pyx_L1_error) __pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) __PYX_ERR(0, 1, __pyx_L1_error) __pyx_int_1 = PyInt_FromLong(1); if (unlikely(!__pyx_int_1)) __PYX_ERR(0, 1, __pyx_L1_error) __pyx_int_4 = PyInt_FromLong(4); if (unlikely(!__pyx_int_4)) __PYX_ERR(0, 1, __pyx_L1_error) __pyx_int_8 = PyInt_FromLong(8); if (unlikely(!__pyx_int_8)) __PYX_ERR(0, 1, __pyx_L1_error) __pyx_int_15 = PyInt_FromLong(15); if (unlikely(!__pyx_int_15)) __PYX_ERR(0, 1, __pyx_L1_error) __pyx_int_16 = PyInt_FromLong(16); if (unlikely(!__pyx_int_16)) __PYX_ERR(0, 1, __pyx_L1_error) __pyx_int_18 = PyInt_FromLong(18); if (unlikely(!__pyx_int_18)) __PYX_ERR(0, 1, __pyx_L1_error) return 0; __pyx_L1_error:; return -1; } #if PY_MAJOR_VERSION < 3 PyMODINIT_FUNC init_qt_qtwes2(void); /*proto*/ PyMODINIT_FUNC init_qt_qtwes2(void) #else PyMODINIT_FUNC PyInit__qt_qtwes2(void); /*proto*/ PyMODINIT_FUNC PyInit__qt_qtwes2(void) #endif { PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; __Pyx_RefNannyDeclarations #if CYTHON_REFNANNY __Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny"); if (!__Pyx_RefNanny) { PyErr_Clear(); __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny"); if (!__Pyx_RefNanny) Py_FatalError("failed to import 'refnanny' module"); } #endif __Pyx_RefNannySetupContext("PyMODINIT_FUNC PyInit__qt_qtwes2(void)", 0); if (__Pyx_check_binary_version() < 0) __PYX_ERR(0, 1, __pyx_L1_error) __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(0, 1, __pyx_L1_error) __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(0, 1, __pyx_L1_error) __pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(0, 1, __pyx_L1_error) #ifdef __Pyx_CyFunction_USED if (__pyx_CyFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #endif #ifdef __Pyx_FusedFunction_USED if (__pyx_FusedFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #endif #ifdef __Pyx_Coroutine_USED if (__pyx_Coroutine_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #endif #ifdef __Pyx_Generator_USED if (__pyx_Generator_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #endif #ifdef __Pyx_StopAsyncIteration_USED if (__pyx_StopAsyncIteration_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #endif /*--- Library function declarations ---*/ /*--- Threads initialization code ---*/ #if defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS #ifdef WITH_THREAD /* Python build with threading support? */ PyEval_InitThreads(); #endif #endif /*--- Module creation code ---*/ #if PY_MAJOR_VERSION < 3 __pyx_m = Py_InitModule4("_qt_qtwes2", __pyx_methods, 0, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m); #else __pyx_m = PyModule_Create(&__pyx_moduledef); #endif if (unlikely(!__pyx_m)) __PYX_ERR(0, 1, __pyx_L1_error) __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) __PYX_ERR(0, 1, __pyx_L1_error) Py_INCREF(__pyx_d); __pyx_b = PyImport_AddModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_b)) __PYX_ERR(0, 1, __pyx_L1_error) #if CYTHON_COMPILING_IN_PYPY Py_INCREF(__pyx_b); #endif if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) __PYX_ERR(0, 1, __pyx_L1_error); /*--- Initialize various global constants etc. ---*/ if (__Pyx_InitGlobals() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #if PY_MAJOR_VERSION < 3 && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT) if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #endif if (__pyx_module_is_main__qt_qtwes2) { if (PyObject_SetAttrString(__pyx_m, "__name__", __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error) } #if PY_MAJOR_VERSION >= 3 { PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(0, 1, __pyx_L1_error) if (!PyDict_GetItemString(modules, "_qt_qtwes2")) { if (unlikely(PyDict_SetItemString(modules, "_qt_qtwes2", __pyx_m) < 0)) __PYX_ERR(0, 1, __pyx_L1_error) } } #endif /*--- Builtin init code ---*/ if (__Pyx_InitCachedBuiltins() < 0) __PYX_ERR(0, 1, __pyx_L1_error) /*--- Constants init code ---*/ if (__Pyx_InitCachedConstants() < 0) __PYX_ERR(0, 1, __pyx_L1_error) /*--- Global init code ---*/ /*--- Variable export code ---*/ /*--- Function export code ---*/ /*--- Type init code ---*/ if (PyType_Ready(&__pyx_type_10_qt_qtwes2___pyx_scope_struct__keyval_from_name) < 0) __PYX_ERR(0, 1988, __pyx_L1_error) __pyx_type_10_qt_qtwes2___pyx_scope_struct__keyval_from_name.tp_print = 0; __pyx_ptype_10_qt_qtwes2___pyx_scope_struct__keyval_from_name = &__pyx_type_10_qt_qtwes2___pyx_scope_struct__keyval_from_name; if (PyType_Ready(&__pyx_type_10_qt_qtwes2___pyx_scope_struct_1_genexpr) < 0) __PYX_ERR(0, 1989, __pyx_L1_error) __pyx_type_10_qt_qtwes2___pyx_scope_struct_1_genexpr.tp_print = 0; __pyx_ptype_10_qt_qtwes2___pyx_scope_struct_1_genexpr = &__pyx_type_10_qt_qtwes2___pyx_scope_struct_1_genexpr; /*--- Type import code ---*/ /*--- Variable import code ---*/ /*--- Function import code ---*/ __pyx_t_1 = __Pyx_ImportModule("_glarea_es2"); if (!__pyx_t_1) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_1, "render_resize", (void (**)(void))&__pyx_f_11_glarea_es2_render_resize, "void (int, int, int)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_1, "set_animation_next", (void (**)(void))&__pyx_f_11_glarea_es2_set_animation_next, "void (float)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_1, "sync_set_fixedshaders", (void (**)(void))&__pyx_f_11_glarea_es2_sync_set_fixedshaders, "void (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_1, "sync_set_pick_position", (void (**)(void))&__pyx_f_11_glarea_es2_sync_set_pick_position, "void (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_1, "sync_set_atlas_data", (void (**)(void))&__pyx_f_11_glarea_es2_sync_set_atlas_data, "void (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_1, "sync", (void (**)(void))&__pyx_f_11_glarea_es2_sync, "void (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_1, "gl_init", (void (**)(void))&__pyx_f_11_glarea_es2_gl_init, "void (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_1, "gl_exit", (void (**)(void))&__pyx_f_11_glarea_es2_gl_exit, "void (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_1, "gl_set_atlas_texture", (void (**)(void))&__pyx_f_11_glarea_es2_gl_set_atlas_texture, "void (int, int)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_1, "gl_render", (void (**)(void))&__pyx_f_11_glarea_es2_gl_render, "void (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_1, "gl_render_select_debug", (void (**)(void))&__pyx_f_11_glarea_es2_gl_render_select_debug, "void (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_1, "gl_pick_polygons", (void (**)(void))&__pyx_f_11_glarea_es2_gl_pick_polygons, "int (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) Py_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_2 = __Pyx_ImportModule("_qtui_"); if (!__pyx_t_2) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "init_module", (void (**)(void))&__pyx_f_6_qtui__init_module, "void (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "init_gettext", (void (**)(void))&__pyx_f_6_qtui__init_gettext, "void (PyObject *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "setupUi_main", (void (**)(void))&__pyx_f_6_qtui__setupUi_main, "void (QMainWindow *, QIcon const &, QIcon const &, QIcon const &, QKeySequence const &, QKeySequence const &, bool, bool)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "setupUi_pref", (void (**)(void))&__pyx_f_6_qtui__setupUi_pref, "void (QDialog *, int, int, int, int, int, QStandardItemModel *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "setupUi_help", (void (**)(void))&__pyx_f_6_qtui__setupUi_help, "void (QDialog *, QString const &)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "setupUi_about", (void (**)(void))&__pyx_f_6_qtui__setupUi_about, "void (QDialog *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "set_shortcuts", (void (**)(void))&__pyx_f_6_qtui__set_shortcuts, "void (QKeySequence const &, QKeySequence const &, QKeySequence const &, QKeySequence const &)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "add_widgets", (void (**)(void))&__pyx_f_6_qtui__add_widgets, "void (QMainWindow *, QLineEdit *, QOpenGLWidget *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "set_frame_editbar_visible", (void (**)(void))&__pyx_f_6_qtui__set_frame_editbar_visible, "void (bool)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "set_statusbar_visible", (void (**)(void))&__pyx_f_6_qtui__set_statusbar_visible, "void (bool)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "hide_controls", (void (**)(void))&__pyx_f_6_qtui__hide_controls, "void (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "get_splitter_sizes", (void (**)(void))&__pyx_f_6_qtui__get_splitter_sizes, "void (int &, int &)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "set_splitter_sizes", (void (**)(void))&__pyx_f_6_qtui__set_splitter_sizes, "void (int, int)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "splitter_update_minimumsize", (void (**)(void))&__pyx_f_6_qtui__splitter_update_minimumsize, "void (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "set_debug_text", (void (**)(void))&__pyx_f_6_qtui__set_debug_text, "void (QString const &)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "set_toolbar_state", (void (**)(void))&__pyx_f_6_qtui__set_toolbar_state, "void (int, int, int, int, int)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "clear_sidepane", (void (**)(void))&__pyx_f_6_qtui__clear_sidepane, "void (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "create_sidepane_button", (void (**)(void))&__pyx_f_6_qtui__create_sidepane_button, "QPushButton *(QString const &)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "create_sidepane_treeview", (void (**)(void))&__pyx_f_6_qtui__create_sidepane_treeview, "QTreeView *(QStandardItemModel *, int)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "set_active_plugin_group", (void (**)(void))&__pyx_f_6_qtui__set_active_plugin_group, "void (int)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "set_active_plugin_group_by_obj", (void (**)(void))&__pyx_f_6_qtui__set_active_plugin_group_by_obj, "void (QObject *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "get_plugin_group_count", (void (**)(void))&__pyx_f_6_qtui__get_plugin_group_count, "int (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "root_index", (void (**)(void))&__pyx_f_6_qtui__root_index, "QModelIndex (int)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "hide_row", (void (**)(void))&__pyx_f_6_qtui__hide_row, "void (int, bool)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "set_row_hidden", (void (**)(void))&__pyx_f_6_qtui__set_row_hidden, "void (int, int, QModelIndex const &, bool)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "splitter_pos", (void (**)(void))&__pyx_f_6_qtui__splitter_pos, "int (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "preferences_block_signals", (void (**)(void))&__pyx_f_6_qtui__preferences_block_signals, "void (bool)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "combobox_add_shaderitem", (void (**)(void))&__pyx_f_6_qtui__combobox_add_shaderitem, "void (QString const &, QString const &)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "combobox_add_samplesitem", (void (**)(void))&__pyx_f_6_qtui__combobox_add_samplesitem, "void (QString const &, QString const &)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "add_movekey_row", (void (**)(void))&__pyx_f_6_qtui__add_movekey_row, "void (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "remove_movekey_row", (void (**)(void))&__pyx_f_6_qtui__remove_movekey_row, "void (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "add_liststore_faces_row", (void (**)(void))&__pyx_f_6_qtui__add_liststore_faces_row, "void (QString const &, QString const &)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "finalize_liststore_faces", (void (**)(void))&__pyx_f_6_qtui__finalize_liststore_faces, "void (QWidget *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "get_liststore_faces_facekey", (void (**)(void))&__pyx_f_6_qtui__get_liststore_faces_facekey, "QString (QModelIndex const &)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "set_button_color", (void (**)(void))&__pyx_f_6_qtui__set_button_color, "void (QString const &)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "color_dialog", (void (**)(void))&__pyx_f_6_qtui__color_dialog, "QString (QWidget *, QString const &)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "set_imagemode", (void (**)(void))&__pyx_f_6_qtui__set_imagemode, "void (int)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "add_combobox_image_item", (void (**)(void))&__pyx_f_6_qtui__add_combobox_image_item, "void (QIcon const &, QString const &, QString const &)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "set_combobox_image", (void (**)(void))&__pyx_f_6_qtui__set_combobox_image, "void (int, QIcon const &, int)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "set_button_background_color", (void (**)(void))&__pyx_f_6_qtui__set_button_background_color, "void (QString const &)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "fill_page", (void (**)(void))&__pyx_f_6_qtui__fill_page, "void (QVariant, QString const &)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "set_page", (void (**)(void))&__pyx_f_6_qtui__set_page, "void (int)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "fill_header", (void (**)(void))&__pyx_f_6_qtui__fill_header, "void (QString const &, QString const &, QString const &, QString const &)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "fill_about_tab", (void (**)(void))&__pyx_f_6_qtui__fill_about_tab, "void (QString const &, QString const &, QString const &)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "fill_contribute_tab", (void (**)(void))&__pyx_f_6_qtui__fill_contribute_tab, "void (QString const &)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "fill_license_tab", (void (**)(void))&__pyx_f_6_qtui__fill_license_tab, "void (QString const &, bool, QString const &)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "tab_widget_currentChanged", (void (**)(void))&__pyx_f_6_qtui__tab_widget_currentChanged, "void (int)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "update_animation", (void (**)(void))&__pyx_f_6_qtui__update_animation, "void (bool)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "event_filter_stop_animation", (void (**)(void))&__pyx_f_6_qtui__event_filter_stop_animation, "void (QEvent *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "show_full_license", (void (**)(void))&__pyx_f_6_qtui__show_full_license, "void (bool, QUrl const &)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) Py_DECREF(__pyx_t_2); __pyx_t_2 = 0; /*--- Execution code ---*/ #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) if (__Pyx_patch_abc() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #endif /* "_qt_qtwes2.pyx":25 * # This line makes cython happy * global __name__, __package__ # pylint: disable=W0604 * __compiled = True #px/ # <<<<<<<<<<<<<< * #__compiled = False * DEF OFFSCREEN = False #px/ */ if (PyDict_SetItem(__pyx_d, __pyx_n_s_compiled_2, Py_True) < 0) __PYX_ERR(0, 25, __pyx_L1_error) /* "_qt_qtwes2.pyx":30 * #OFFSCREEN = False * * import sys, os # <<<<<<<<<<<<<< * from warnings import warn_explicit, warn * */ __pyx_t_3 = __Pyx_Import(__pyx_n_s_sys, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 30, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_d, __pyx_n_s_sys, __pyx_t_3) < 0) __PYX_ERR(0, 30, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_Import(__pyx_n_s_os, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 30, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_d, __pyx_n_s_os, __pyx_t_3) < 0) __PYX_ERR(0, 30, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "_qt_qtwes2.pyx":31 * * import sys, os * from warnings import warn_explicit, warn # <<<<<<<<<<<<<< * * cimport gl_es2 as gl #px+ */ __pyx_t_3 = PyList_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 31, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_n_s_warn_explicit); __Pyx_GIVEREF(__pyx_n_s_warn_explicit); PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_warn_explicit); __Pyx_INCREF(__pyx_n_s_warn); __Pyx_GIVEREF(__pyx_n_s_warn); PyList_SET_ITEM(__pyx_t_3, 1, __pyx_n_s_warn); __pyx_t_4 = __Pyx_Import(__pyx_n_s_warnings, __pyx_t_3, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 31, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_4, __pyx_n_s_warn_explicit); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 31, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_d, __pyx_n_s_warn_explicit, __pyx_t_3) < 0) __PYX_ERR(0, 31, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_4, __pyx_n_s_warn); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 31, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_d, __pyx_n_s_warn, __pyx_t_3) < 0) __PYX_ERR(0, 31, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwes2.pyx":35 * cimport gl_es2 as gl #px+ * * from pybiklib import config as config_ # <<<<<<<<<<<<<< * from pybiklib.settings import settings * */ __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 35, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_INCREF(__pyx_n_s_config_2); __Pyx_GIVEREF(__pyx_n_s_config_2); PyList_SET_ITEM(__pyx_t_4, 0, __pyx_n_s_config_2); __pyx_t_3 = __Pyx_Import(__pyx_n_s_pybiklib, __pyx_t_4, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 35, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_config_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 35, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_config, __pyx_t_4) < 0) __PYX_ERR(0, 35, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "_qt_qtwes2.pyx":36 * * from pybiklib import config as config_ * from pybiklib.settings import settings # <<<<<<<<<<<<<< * * cimport _glarea_es2 as glarea #px/ */ __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 36, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_n_s_settings); __Pyx_GIVEREF(__pyx_n_s_settings); PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_settings); __pyx_t_4 = __Pyx_Import(__pyx_n_s_pybiklib_settings, __pyx_t_3, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 36, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_4, __pyx_n_s_settings); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 36, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_d, __pyx_n_s_settings, __pyx_t_3) < 0) __PYX_ERR(0, 36, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwes2.pyx":100 * DEBUG_NOCONTROLS = 0x2000 * cdef long debug #px+ * debug = 0 # <<<<<<<<<<<<<< * * def set_debug_flags(module): */ __pyx_v_10_qt_qtwes2_debug = 0; /* "_qt_qtwes2.pyx":102 * debug = 0 * * def set_debug_flags(module): # <<<<<<<<<<<<<< * global debug * if module.DEBUG_MSG: debug |= DEBUG_MSG */ __pyx_t_4 = PyCFunction_NewEx(&__pyx_mdef_10_qt_qtwes2_1set_debug_flags, NULL, __pyx_n_s_qt_qtwes2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 102, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_set_debug_flags, __pyx_t_4) < 0) __PYX_ERR(0, 102, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwes2.pyx":133 * #~ Qt.Key_CapsLock, Qt.Key_NumLock, Qt.Key_ScrollLock] * #~ ##pxm>IF_END * class QtKeys: # <<<<<<<<<<<<<< * Key_Period = Qt.Key_Period * Key_Escape = Qt.Key_Escape */ __pyx_t_4 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_QtKeys, __pyx_n_s_QtKeys, (PyObject *) NULL, __pyx_n_s_qt_qtwes2, (PyObject *) NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 133, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); /* "_qt_qtwes2.pyx":134 * #~ ##pxm>IF_END * class QtKeys: * Key_Period = Qt.Key_Period # <<<<<<<<<<<<<< * Key_Escape = Qt.Key_Escape * Key_Right = Qt.Key_Right */ __pyx_t_3 = __Pyx_PyInt_From_enum__Qt_3a__3a_Key(Qt::Key_Period); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 134, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_Key_Period, __pyx_t_3) < 0) __PYX_ERR(0, 134, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "_qt_qtwes2.pyx":135 * class QtKeys: * Key_Period = Qt.Key_Period * Key_Escape = Qt.Key_Escape # <<<<<<<<<<<<<< * Key_Right = Qt.Key_Right * Key_Left = Qt.Key_Left */ __pyx_t_3 = __Pyx_PyInt_From_enum__Qt_3a__3a_Key(Qt::Key_Escape); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 135, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_Key_Escape, __pyx_t_3) < 0) __PYX_ERR(0, 135, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "_qt_qtwes2.pyx":136 * Key_Period = Qt.Key_Period * Key_Escape = Qt.Key_Escape * Key_Right = Qt.Key_Right # <<<<<<<<<<<<<< * Key_Left = Qt.Key_Left * Key_Up = Qt.Key_Up */ __pyx_t_3 = __Pyx_PyInt_From_enum__Qt_3a__3a_Key(Qt::Key_Right); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 136, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_Key_Right, __pyx_t_3) < 0) __PYX_ERR(0, 136, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "_qt_qtwes2.pyx":137 * Key_Escape = Qt.Key_Escape * Key_Right = Qt.Key_Right * Key_Left = Qt.Key_Left # <<<<<<<<<<<<<< * Key_Up = Qt.Key_Up * Key_Down = Qt.Key_Down */ __pyx_t_3 = __Pyx_PyInt_From_enum__Qt_3a__3a_Key(Qt::Key_Left); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 137, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_Key_Left, __pyx_t_3) < 0) __PYX_ERR(0, 137, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "_qt_qtwes2.pyx":138 * Key_Right = Qt.Key_Right * Key_Left = Qt.Key_Left * Key_Up = Qt.Key_Up # <<<<<<<<<<<<<< * Key_Down = Qt.Key_Down * ShiftModifier = Qt.ShiftModifier */ __pyx_t_3 = __Pyx_PyInt_From_enum__Qt_3a__3a_Key(Qt::Key_Up); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 138, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_Key_Up, __pyx_t_3) < 0) __PYX_ERR(0, 138, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "_qt_qtwes2.pyx":139 * Key_Left = Qt.Key_Left * Key_Up = Qt.Key_Up * Key_Down = Qt.Key_Down # <<<<<<<<<<<<<< * ShiftModifier = Qt.ShiftModifier * ControlModifier = Qt.ControlModifier */ __pyx_t_3 = __Pyx_PyInt_From_enum__Qt_3a__3a_Key(Qt::Key_Down); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 139, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_Key_Down, __pyx_t_3) < 0) __PYX_ERR(0, 139, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "_qt_qtwes2.pyx":140 * Key_Up = Qt.Key_Up * Key_Down = Qt.Key_Down * ShiftModifier = Qt.ShiftModifier # <<<<<<<<<<<<<< * ControlModifier = Qt.ControlModifier * LeftButton = Qt.LeftButton */ __pyx_t_3 = __Pyx_PyInt_From_enum__Qt_3a__3a_KeyboardModifier(Qt::ShiftModifier); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 140, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_ShiftModifier, __pyx_t_3) < 0) __PYX_ERR(0, 140, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "_qt_qtwes2.pyx":141 * Key_Down = Qt.Key_Down * ShiftModifier = Qt.ShiftModifier * ControlModifier = Qt.ControlModifier # <<<<<<<<<<<<<< * LeftButton = Qt.LeftButton * RightButton = Qt.RightButton */ __pyx_t_3 = __Pyx_PyInt_From_enum__Qt_3a__3a_KeyboardModifier(Qt::ControlModifier); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 141, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_ControlModifier, __pyx_t_3) < 0) __PYX_ERR(0, 141, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "_qt_qtwes2.pyx":142 * ShiftModifier = Qt.ShiftModifier * ControlModifier = Qt.ControlModifier * LeftButton = Qt.LeftButton # <<<<<<<<<<<<<< * RightButton = Qt.RightButton * */ __pyx_t_3 = __Pyx_PyInt_From_enum__Qt_3a__3a_MouseButton(Qt::LeftButton); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 142, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_LeftButton, __pyx_t_3) < 0) __PYX_ERR(0, 142, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "_qt_qtwes2.pyx":143 * ControlModifier = Qt.ControlModifier * LeftButton = Qt.LeftButton * RightButton = Qt.RightButton # <<<<<<<<<<<<<< * * */ __pyx_t_3 = __Pyx_PyInt_From_enum__Qt_3a__3a_MouseButton(Qt::RightButton); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 143, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_RightButton, __pyx_t_3) < 0) __PYX_ERR(0, 143, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "_qt_qtwes2.pyx":133 * #~ Qt.Key_CapsLock, Qt.Key_NumLock, Qt.Key_ScrollLock] * #~ ##pxm>IF_END * class QtKeys: # <<<<<<<<<<<<<< * Key_Period = Qt.Key_Period * Key_Escape = Qt.Key_Escape */ __pyx_t_3 = __Pyx_Py3ClassCreate(((PyObject*)&__Pyx_DefaultClassType), __pyx_n_s_QtKeys, __pyx_empty_tuple, __pyx_t_4, NULL, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 133, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_d, __pyx_n_s_QtKeys, __pyx_t_3) < 0) __PYX_ERR(0, 133, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwes2.pyx":212 * cdef UIData uidata #px+ * * class PyData: # <<<<<<<<<<<<<< * filesystemwatcher_path = None * filesystemwatcher_handlers = {} */ __pyx_t_4 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_PyData, __pyx_n_s_PyData, (PyObject *) NULL, __pyx_n_s_qt_qtwes2, (PyObject *) NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 212, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); /* "_qt_qtwes2.pyx":213 * * class PyData: * filesystemwatcher_path = None # <<<<<<<<<<<<<< * filesystemwatcher_handlers = {} * singleshot_handler = None #px+ */ if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_filesystemwatcher_path, Py_None) < 0) __PYX_ERR(0, 213, __pyx_L1_error) /* "_qt_qtwes2.pyx":214 * class PyData: * filesystemwatcher_path = None * filesystemwatcher_handlers = {} # <<<<<<<<<<<<<< * singleshot_handler = None #px+ * singleshot_queue = [] #px+ */ __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 214, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_filesystemwatcher_handlers, __pyx_t_3) < 0) __PYX_ERR(0, 214, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "_qt_qtwes2.pyx":215 * filesystemwatcher_path = None * filesystemwatcher_handlers = {} * singleshot_handler = None #px+ # <<<<<<<<<<<<<< * singleshot_queue = [] #px+ * app = None */ if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_singleshot_handler, Py_None) < 0) __PYX_ERR(0, 215, __pyx_L1_error) /* "_qt_qtwes2.pyx":216 * filesystemwatcher_handlers = {} * singleshot_handler = None #px+ * singleshot_queue = [] #px+ # <<<<<<<<<<<<<< * app = None * modelselect = None */ __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 216, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_singleshot_queue, __pyx_t_3) < 0) __PYX_ERR(0, 216, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "_qt_qtwes2.pyx":217 * singleshot_handler = None #px+ * singleshot_queue = [] #px+ * app = None # <<<<<<<<<<<<<< * modelselect = None * pydata = PyData() */ if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_app, Py_None) < 0) __PYX_ERR(0, 217, __pyx_L1_error) /* "_qt_qtwes2.pyx":218 * singleshot_queue = [] #px+ * app = None * modelselect = None # <<<<<<<<<<<<<< * pydata = PyData() * */ if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_modelselect, Py_None) < 0) __PYX_ERR(0, 218, __pyx_L1_error) /* "_qt_qtwes2.pyx":212 * cdef UIData uidata #px+ * * class PyData: # <<<<<<<<<<<<<< * filesystemwatcher_path = None * filesystemwatcher_handlers = {} */ __pyx_t_3 = __Pyx_Py3ClassCreate(((PyObject*)&__Pyx_DefaultClassType), __pyx_n_s_PyData, __pyx_empty_tuple, __pyx_t_4, NULL, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 212, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_d, __pyx_n_s_PyData, __pyx_t_3) < 0) __PYX_ERR(0, 212, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwes2.pyx":219 * app = None * modelselect = None * pydata = PyData() # <<<<<<<<<<<<<< * * ##pxm-FUNC P */ __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_PyData); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 219, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } if (__pyx_t_5) { __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 219, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else { __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 219, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (PyDict_SetItem(__pyx_d, __pyx_n_s_pydata, __pyx_t_4) < 0) __PYX_ERR(0, 219, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwes2.pyx":396 * * ##pxm>IF 'qtw' == 'qtw' * def gl_delete_atlas(): # <<<<<<<<<<<<<< * if renderdata.texture is not NULL: * renderdata.texture.destroy() */ __pyx_t_4 = PyCFunction_NewEx(&__pyx_mdef_10_qt_qtwes2_3gl_delete_atlas, NULL, __pyx_n_s_qt_qtwes2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 396, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_gl_delete_atlas, __pyx_t_4) < 0) __PYX_ERR(0, 396, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwes2.pyx":577 * #### ui: communicate with render-thread #### * * def set_pick_requested(pick_requested): # <<<<<<<<<<<<<< * uidata.pick_requested = pick_requested * */ __pyx_t_4 = PyCFunction_NewEx(&__pyx_mdef_10_qt_qtwes2_5set_pick_requested, NULL, __pyx_n_s_qt_qtwes2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 577, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_set_pick_requested, __pyx_t_4) < 0) __PYX_ERR(0, 577, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwes2.pyx":981 * #~ ##pxm>IF_END * * def set_debug_text(text): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * qtui.set_debug_text(str2q(text)) */ __pyx_t_4 = PyCFunction_NewEx(&__pyx_mdef_10_qt_qtwes2_9set_debug_text, NULL, __pyx_n_s_qt_qtwes2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 981, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_set_debug_text, __pyx_t_4) < 0) __PYX_ERR(0, 981, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwes2.pyx":988 * #~ ##pxm>IF_END * * def set_edit_moves(code, pos): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * uidata.move_edit.setText(str2q(code)) */ __pyx_t_4 = PyCFunction_NewEx(&__pyx_mdef_10_qt_qtwes2_11set_edit_moves, NULL, __pyx_n_s_qt_qtwes2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 988, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_set_edit_moves, __pyx_t_4) < 0) __PYX_ERR(0, 988, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwes2.pyx":997 * #~ ##pxm>IF_END * * def set_status_text(text): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * uidata.statuslabel.setText(str2q(text)) */ __pyx_t_4 = PyCFunction_NewEx(&__pyx_mdef_10_qt_qtwes2_13set_status_text, NULL, __pyx_n_s_qt_qtwes2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 997, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_set_status_text, __pyx_t_4) < 0) __PYX_ERR(0, 997, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwes2.pyx":1004 * #~ ##pxm>IF_END * * show_message_text = None # <<<<<<<<<<<<<< * ##pxm-FUNC P with gil * cdef void show_message_cb() with gil: */ if (PyDict_SetItem(__pyx_d, __pyx_n_s_show_message_text, Py_None) < 0) __PYX_ERR(0, 1004, __pyx_L1_error) /* "_qt_qtwes2.pyx":1022 * #~ ##pxm>IF_END * show_message_text = None * def show_message(message): # <<<<<<<<<<<<<< * global show_message_text * show_message_text = message */ __pyx_t_4 = PyCFunction_NewEx(&__pyx_mdef_10_qt_qtwes2_15show_message, NULL, __pyx_n_s_qt_qtwes2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1022, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_show_message, __pyx_t_4) < 0) __PYX_ERR(0, 1022, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwes2.pyx":1041 * ##pxm>IF_END * * def fill_sidepane(plugin_data): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * # remove old plugins */ __pyx_t_4 = PyCFunction_NewEx(&__pyx_mdef_10_qt_qtwes2_17fill_sidepane, NULL, __pyx_n_s_qt_qtwes2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1041, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_fill_sidepane, __pyx_t_4) < 0) __PYX_ERR(0, 1041, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwes2.pyx":1082 * return hide_all * ##pxm>IF_END * def update_sidepane(): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * cdef QModelIndex index #px+ */ __pyx_t_4 = PyCFunction_NewEx(&__pyx_mdef_10_qt_qtwes2_19update_sidepane, NULL, __pyx_n_s_qt_qtwes2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1082, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_update_sidepane, __pyx_t_4) < 0) __PYX_ERR(0, 1082, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwes2.pyx":1108 * #~ ##pxm>IF_END * * def set_toolbar_state(state): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * qtui.set_toolbar_state(state[0], state[1], state[2], state[3], state[4]) */ __pyx_t_4 = PyCFunction_NewEx(&__pyx_mdef_10_qt_qtwes2_21set_toolbar_state, NULL, __pyx_n_s_qt_qtwes2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1108, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_set_toolbar_state, __pyx_t_4) < 0) __PYX_ERR(0, 1108, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwes2.pyx":1669 * ##pxm>CPPCLASS_END * * def set_combobox_current_image(index_icon, imagefile, index): # <<<<<<<<<<<<<< * cdef QIcon icon #px/ * #icon = QIcon() */ __pyx_t_4 = PyCFunction_NewEx(&__pyx_mdef_10_qt_qtwes2_23set_combobox_current_image, NULL, __pyx_n_s_qt_qtwes2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1669, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_set_combobox_current_image, __pyx_t_4) < 0) __PYX_ERR(0, 1669, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwes2.pyx":1676 * qtui.set_combobox_image(index_icon, icon, index) * * def set_preferences_current_face_theme(color, imageindex_icon, imagefile, imageindex, imagemode): # <<<<<<<<<<<<<< * qtui.set_button_color(str2q(color)) * set_combobox_current_image(imageindex_icon, imagefile, imageindex) */ __pyx_t_4 = PyCFunction_NewEx(&__pyx_mdef_10_qt_qtwes2_25set_preferences_current_face_theme, NULL, __pyx_n_s_qt_qtwes2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1676, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_set_preferences_current_face_the, __pyx_t_4) < 0) __PYX_ERR(0, 1676, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwes2.pyx":1681 * qtui.set_imagemode(imagemode) * * def get_filedialog_imagefile(): # <<<<<<<<<<<<<< * filename = q2str(getOpenFileName(uidata.preferences, str2q(_("Open Image")), uidata.preferences.image_dirname)) * if filename: */ __pyx_t_4 = PyCFunction_NewEx(&__pyx_mdef_10_qt_qtwes2_27get_filedialog_imagefile, NULL, __pyx_n_s_qt_qtwes2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1681, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_filedialog_imagefile, __pyx_t_4) < 0) __PYX_ERR(0, 1681, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwes2.pyx":1688 * ##pxm>IF_END * * def preferences_dialog(shader_names, sample_buffers, facenames, stockicons): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * uidata.preferences = new PreferencesDialog(uidata.mainwindow) #px/ */ __pyx_t_4 = PyCFunction_NewEx(&__pyx_mdef_10_qt_qtwes2_29preferences_dialog, NULL, __pyx_n_s_qt_qtwes2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1688, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_preferences_dialog, __pyx_t_4) < 0) __PYX_ERR(0, 1688, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwes2.pyx":1743 * #~ ##pxm>IF_END * * def show_preferences(): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * uidata.preferences.show() */ __pyx_t_4 = PyCFunction_NewEx(&__pyx_mdef_10_qt_qtwes2_31show_preferences, NULL, __pyx_n_s_qt_qtwes2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1743, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_show_preferences, __pyx_t_4) < 0) __PYX_ERR(0, 1743, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwes2.pyx":1832 * * * def initial_resize(): # <<<<<<<<<<<<<< * uidata.width, uidata.height = settings['window.size'] * uidata.mainwindow.resize(uidata.width, uidata.height) */ __pyx_t_4 = PyCFunction_NewEx(&__pyx_mdef_10_qt_qtwes2_33initial_resize, NULL, __pyx_n_s_qt_qtwes2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1832, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_initial_resize, __pyx_t_4) < 0) __PYX_ERR(0, 1832, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwes2.pyx":1849 * #QTimer.singleShot(20, _on_init_finalize) * * def set_title(title): # <<<<<<<<<<<<<< * uidata.mainwindow.setTitle(str2q(title)) * */ __pyx_t_4 = PyCFunction_NewEx(&__pyx_mdef_10_qt_qtwes2_35set_title, NULL, __pyx_n_s_qt_qtwes2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1849, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_set_title, __pyx_t_4) < 0) __PYX_ERR(0, 1849, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwes2.pyx":1852 * uidata.mainwindow.setTitle(str2q(title)) * * def load_ui(path): # <<<<<<<<<<<<<< * pass * ##pxm>IF 'qtw' == 'qtq' */ __pyx_t_4 = PyCFunction_NewEx(&__pyx_mdef_10_qt_qtwes2_37load_ui, NULL, __pyx_n_s_qt_qtwes2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1852, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_load_ui, __pyx_t_4) < 0) __PYX_ERR(0, 1852, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwes2.pyx":1865 * #~ ##pxm>IF_END * * def close_mainwindow(): # <<<<<<<<<<<<<< * uidata.mainwindow.close() * */ __pyx_t_4 = PyCFunction_NewEx(&__pyx_mdef_10_qt_qtwes2_39close_mainwindow, NULL, __pyx_n_s_qt_qtwes2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1865, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_close_mainwindow, __pyx_t_4) < 0) __PYX_ERR(0, 1865, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwes2.pyx":1868 * uidata.mainwindow.close() * * def get_samples(): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * #TODO: uidata.drawingarea.format().samples() returns only 0 here */ __pyx_t_4 = PyCFunction_NewEx(&__pyx_mdef_10_qt_qtwes2_41get_samples, NULL, __pyx_n_s_qt_qtwes2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1868, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_samples, __pyx_t_4) < 0) __PYX_ERR(0, 1868, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwes2.pyx":1876 * #~ ##pxm>IF_END * * def update_drawingarea(): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * uidata.drawingarea.update() */ __pyx_t_4 = PyCFunction_NewEx(&__pyx_mdef_10_qt_qtwes2_43update_drawingarea, NULL, __pyx_n_s_qt_qtwes2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1876, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_update_drawingarea, __pyx_t_4) < 0) __PYX_ERR(0, 1876, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwes2.pyx":1883 * #~ ##pxm>IF_END * * def set_cursor(index): # <<<<<<<<<<<<<< * if index < 0: * index += 18 */ __pyx_t_4 = PyCFunction_NewEx(&__pyx_mdef_10_qt_qtwes2_45set_cursor, NULL, __pyx_n_s_qt_qtwes2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1883, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_set_cursor, __pyx_t_4) < 0) __PYX_ERR(0, 1883, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwes2.pyx":1895 * #~ ##pxm>IF_END * * def unset_cursor(): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * uidata.drawingarea.unsetCursor() */ __pyx_t_4 = PyCFunction_NewEx(&__pyx_mdef_10_qt_qtwes2_47unset_cursor, NULL, __pyx_n_s_qt_qtwes2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1895, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_unset_cursor, __pyx_t_4) < 0) __PYX_ERR(0, 1895, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwes2.pyx":1913 * #~ ##pxm>IF_END * * def save_screenshot(filename): # <<<<<<<<<<<<<< * IF OFFSCREEN: #px+ * cdef QImage image #px+ */ __pyx_t_4 = PyCFunction_NewEx(&__pyx_mdef_10_qt_qtwes2_49save_screenshot, NULL, __pyx_n_s_qt_qtwes2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1913, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_save_screenshot, __pyx_t_4) < 0) __PYX_ERR(0, 1913, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwes2.pyx":1932 * #### misc qt #### * * def parse_color(name): # <<<<<<<<<<<<<< * cdef QColor color #px/ * #color = QColor() */ __pyx_t_4 = PyCFunction_NewEx(&__pyx_mdef_10_qt_qtwes2_51parse_color, NULL, __pyx_n_s_qt_qtwes2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1932, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_parse_color, __pyx_t_4) < 0) __PYX_ERR(0, 1932, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwes2.pyx":1938 * return color.red(), color.green(), color.blue() * * def parse_color_f(name): # <<<<<<<<<<<<<< * cdef QColor color #px/ * #color = QColor() */ __pyx_t_4 = PyCFunction_NewEx(&__pyx_mdef_10_qt_qtwes2_53parse_color_f, NULL, __pyx_n_s_qt_qtwes2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1938, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_parse_color_f, __pyx_t_4) < 0) __PYX_ERR(0, 1938, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwes2.pyx":1944 * return color.redF(), color.greenF(), color.blueF() * * def load_image_from_file(filename, maxsize): # <<<<<<<<<<<<<< * cdef int width, height, scaled_width, scaled_height #px+ * cdef bytes data #px+ */ __pyx_t_4 = PyCFunction_NewEx(&__pyx_mdef_10_qt_qtwes2_55load_image_from_file, NULL, __pyx_n_s_qt_qtwes2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1944, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_load_image_from_file, __pyx_t_4) < 0) __PYX_ERR(0, 1944, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwes2.pyx":1988 * ##pxm>IF_END * * def keyval_from_name(keystr): # <<<<<<<<<<<<<< * keystr = '+'.join(('Num' if k == 'KP' else k) for k in keystr.split('+')) * cdef QKeySequence keyseq = fromString(str2q(keystr), PortableText) #px/ */ __pyx_t_4 = PyCFunction_NewEx(&__pyx_mdef_10_qt_qtwes2_57keyval_from_name, NULL, __pyx_n_s_qt_qtwes2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1988, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_keyval_from_name, __pyx_t_4) < 0) __PYX_ERR(0, 1988, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwes2.pyx":1996 * return keyseq[0] * * def get_pictures_folder(): # <<<<<<<<<<<<<< * cdef QStringList locations = standardLocations(PicturesLocation) #px/ * #locations = standardLocations(PicturesLocation) */ __pyx_t_4 = PyCFunction_NewEx(&__pyx_mdef_10_qt_qtwes2_59get_pictures_folder, NULL, __pyx_n_s_qt_qtwes2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1996, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_pictures_folder, __pyx_t_4) < 0) __PYX_ERR(0, 1996, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwes2.pyx":2007 * return q2str(locations[0]) * * def get_imagefile(facekey): # <<<<<<<<<<<<<< * imagefile = settings['theme.faces',facekey,'image'] * currentfolder = get_pictures_folder() */ __pyx_t_4 = PyCFunction_NewEx(&__pyx_mdef_10_qt_qtwes2_61get_imagefile, NULL, __pyx_n_s_qt_qtwes2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2007, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_imagefile, __pyx_t_4) < 0) __PYX_ERR(0, 2007, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwes2.pyx":2016 * return currentfolder, imagefile * * def text_to_html(text): # <<<<<<<<<<<<<< * return q2str(fromPlainText(str2q(text)).toHtml()) * */ __pyx_t_4 = PyCFunction_NewEx(&__pyx_mdef_10_qt_qtwes2_63text_to_html, NULL, __pyx_n_s_qt_qtwes2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2016, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_text_to_html, __pyx_t_4) < 0) __PYX_ERR(0, 2016, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwes2.pyx":2034 * uidata.filesystemwatcher.addPath(str2q(path)) * * def create_filesystemwatcher(path, callback): # <<<<<<<<<<<<<< * cdef QString qpath = str2q(path) #px/ * #qpath = path */ __pyx_t_4 = PyCFunction_NewEx(&__pyx_mdef_10_qt_qtwes2_65create_filesystemwatcher, NULL, __pyx_n_s_qt_qtwes2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2034, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_create_filesystemwatcher, __pyx_t_4) < 0) __PYX_ERR(0, 2034, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwes2.pyx":2055 * else: #px+ * pydata.singleshot_handler = None #px+ * def timer_singleShot(msec, func): # <<<<<<<<<<<<<< * if pydata.singleshot_handler is None: #px+ * pydata.singleshot_handler = func #px+ */ __pyx_t_4 = PyCFunction_NewEx(&__pyx_mdef_10_qt_qtwes2_67timer_singleShot, NULL, __pyx_n_s_qt_qtwes2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2055, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_timer_singleShot, __pyx_t_4) < 0) __PYX_ERR(0, 2055, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwes2.pyx":2088 * uidata.settings_timer = NULL * * def set_animation_speed(): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * uidata.speed = settings['draw.speed'] */ __pyx_t_4 = PyCFunction_NewEx(&__pyx_mdef_10_qt_qtwes2_71set_animation_speed, NULL, __pyx_n_s_qt_qtwes2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2088, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_set_animation_speed, __pyx_t_4) < 0) __PYX_ERR(0, 2088, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwes2.pyx":2135 * * # only for demos * def animate_timer_step(angle_max): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * uidata.angle_max = angle_max */ __pyx_t_4 = PyCFunction_NewEx(&__pyx_mdef_10_qt_qtwes2_75animate_timer_step, NULL, __pyx_n_s_qt_qtwes2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2135, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_animate_timer_step, __pyx_t_4) < 0) __PYX_ERR(0, 2135, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwes2.pyx":2142 * pass * * def animate_timer_stop(): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * uidata.animate_timer.stop() */ __pyx_t_4 = PyCFunction_NewEx(&__pyx_mdef_10_qt_qtwes2_77animate_timer_stop, NULL, __pyx_n_s_qt_qtwes2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2142, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_animate_timer_stop, __pyx_t_4) < 0) __PYX_ERR(0, 2142, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwes2.pyx":2212 * #~ ##pxm>IF_END * * def create_window(pyapp): # <<<<<<<<<<<<<< * pydata.app = pyapp * init_module() */ __pyx_t_4 = PyCFunction_NewEx(&__pyx_mdef_10_qt_qtwes2_79create_window, NULL, __pyx_n_s_qt_qtwes2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2212, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_create_window, __pyx_t_4) < 0) __PYX_ERR(0, 2212, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwes2.pyx":2282 * load_cursors(os.path.join(config_.UI_DIR, 'cursors', 'mouse_{}.png')) * * def destroy_window(): # <<<<<<<<<<<<<< * destroy_cursors() * settings_timer_destroy() */ __pyx_t_4 = PyCFunction_NewEx(&__pyx_mdef_10_qt_qtwes2_81destroy_window, NULL, __pyx_n_s_qt_qtwes2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2282, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_destroy_window, __pyx_t_4) < 0) __PYX_ERR(0, 2282, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwes2.pyx":2302 * #~ ##pxm>IF_END * * def app_post_create(gettext): # <<<<<<<<<<<<<< * cdef QApplication *app = QCoreApplication_instance() #px/ * #app = QCoreApplication.instance() */ __pyx_t_4 = PyCFunction_NewEx(&__pyx_mdef_10_qt_qtwes2_83app_post_create, NULL, __pyx_n_s_qt_qtwes2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2302, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_app_post_create, __pyx_t_4) < 0) __PYX_ERR(0, 2302, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwes2.pyx":1 * # -*- coding: utf-8 -*- # <<<<<<<<<<<<<< * # cython: profile=False * */ __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_4) < 0) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /*--- Wrapped vars code ---*/ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); if (__pyx_m) { if (__pyx_d) { __Pyx_AddTraceback("init _qt_qtwes2", __pyx_clineno, __pyx_lineno, __pyx_filename); } Py_DECREF(__pyx_m); __pyx_m = 0; } else if (!PyErr_Occurred()) { PyErr_SetString(PyExc_ImportError, "init _qt_qtwes2"); } __pyx_L0:; __Pyx_RefNannyFinishContext(); #if PY_MAJOR_VERSION < 3 return; #else return __pyx_m; #endif } /* --- Runtime support code --- */ /* Refnanny */ #if CYTHON_REFNANNY static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) { PyObject *m = NULL, *p = NULL; void *r = NULL; m = PyImport_ImportModule((char *)modname); if (!m) goto end; p = PyObject_GetAttrString(m, (char *)"RefNannyAPI"); if (!p) goto end; r = PyLong_AsVoidPtr(p); end: Py_XDECREF(p); Py_XDECREF(m); return (__Pyx_RefNannyAPIStruct *)r; } #endif /* GetBuiltinName */ static PyObject *__Pyx_GetBuiltinName(PyObject *name) { PyObject* result = __Pyx_PyObject_GetAttrStr(__pyx_b, name); if (unlikely(!result)) { PyErr_Format(PyExc_NameError, #if PY_MAJOR_VERSION >= 3 "name '%U' is not defined", name); #else "name '%.200s' is not defined", PyString_AS_STRING(name)); #endif } return result; } /* GetModuleGlobalName */ static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name) { PyObject *result; #if !CYTHON_AVOID_BORROWED_REFS result = PyDict_GetItem(__pyx_d, name); if (likely(result)) { Py_INCREF(result); } else { #else result = PyObject_GetItem(__pyx_d, name); if (!result) { PyErr_Clear(); #endif result = __Pyx_GetBuiltinName(name); } return result; } /* PyObjectCall */ #if CYTHON_COMPILING_IN_CPYTHON static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) { PyObject *result; ternaryfunc call = func->ob_type->tp_call; if (unlikely(!call)) return PyObject_Call(func, arg, kw); if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) return NULL; result = (*call)(func, arg, kw); Py_LeaveRecursiveCall(); if (unlikely(!result) && unlikely(!PyErr_Occurred())) { PyErr_SetString( PyExc_SystemError, "NULL result without error in PyObject_Call"); } return result; } #endif /* PyErrFetchRestore */ #if CYTHON_FAST_THREAD_STATE static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { PyObject *tmp_type, *tmp_value, *tmp_tb; tmp_type = tstate->curexc_type; tmp_value = tstate->curexc_value; tmp_tb = tstate->curexc_traceback; tstate->curexc_type = type; tstate->curexc_value = value; tstate->curexc_traceback = tb; Py_XDECREF(tmp_type); Py_XDECREF(tmp_value); Py_XDECREF(tmp_tb); } static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { *type = tstate->curexc_type; *value = tstate->curexc_value; *tb = tstate->curexc_traceback; tstate->curexc_type = 0; tstate->curexc_value = 0; tstate->curexc_traceback = 0; } #endif /* WriteUnraisableException */ static void __Pyx_WriteUnraisable(const char *name, CYTHON_UNUSED int clineno, CYTHON_UNUSED int lineno, CYTHON_UNUSED const char *filename, int full_traceback, CYTHON_UNUSED int nogil) { PyObject *old_exc, *old_val, *old_tb; PyObject *ctx; __Pyx_PyThreadState_declare #ifdef WITH_THREAD PyGILState_STATE state; if (nogil) state = PyGILState_Ensure(); #ifdef _MSC_VER else state = (PyGILState_STATE)-1; #endif #endif __Pyx_PyThreadState_assign __Pyx_ErrFetch(&old_exc, &old_val, &old_tb); if (full_traceback) { Py_XINCREF(old_exc); Py_XINCREF(old_val); Py_XINCREF(old_tb); __Pyx_ErrRestore(old_exc, old_val, old_tb); PyErr_PrintEx(1); } #if PY_MAJOR_VERSION < 3 ctx = PyString_FromString(name); #else ctx = PyUnicode_FromString(name); #endif __Pyx_ErrRestore(old_exc, old_val, old_tb); if (!ctx) { PyErr_WriteUnraisable(Py_None); } else { PyErr_WriteUnraisable(ctx); Py_DECREF(ctx); } #ifdef WITH_THREAD if (nogil) PyGILState_Release(state); #endif } /* decode_c_string */ static CYTHON_INLINE PyObject* __Pyx_decode_c_string( const char* cstring, Py_ssize_t start, Py_ssize_t stop, const char* encoding, const char* errors, PyObject* (*decode_func)(const char *s, Py_ssize_t size, const char *errors)) { Py_ssize_t length; if (unlikely((start < 0) | (stop < 0))) { size_t slen = strlen(cstring); if (unlikely(slen > (size_t) PY_SSIZE_T_MAX)) { PyErr_SetString(PyExc_OverflowError, "c-string too long to convert to Python"); return NULL; } length = (Py_ssize_t) slen; if (start < 0) { start += length; if (start < 0) start = 0; } if (stop < 0) stop += length; } length = stop - start; if (unlikely(length <= 0)) return PyUnicode_FromUnicode(NULL, 0); cstring += start; if (decode_func) { return decode_func(cstring, length, errors); } else { return PyUnicode_Decode(cstring, length, encoding, errors); } } /* GetItemInt */ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) { PyObject *r; if (!j) return NULL; r = PyObject_GetItem(o, j); Py_DECREF(j); return r; } static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, CYTHON_NCP_UNUSED int wraparound, CYTHON_NCP_UNUSED int boundscheck) { #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (wraparound & unlikely(i < 0)) i += PyList_GET_SIZE(o); if ((!boundscheck) || likely((0 <= i) & (i < PyList_GET_SIZE(o)))) { PyObject *r = PyList_GET_ITEM(o, i); Py_INCREF(r); return r; } return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); #else return PySequence_GetItem(o, i); #endif } static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, CYTHON_NCP_UNUSED int wraparound, CYTHON_NCP_UNUSED int boundscheck) { #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (wraparound & unlikely(i < 0)) i += PyTuple_GET_SIZE(o); if ((!boundscheck) || likely((0 <= i) & (i < PyTuple_GET_SIZE(o)))) { PyObject *r = PyTuple_GET_ITEM(o, i); Py_INCREF(r); return r; } return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); #else return PySequence_GetItem(o, i); #endif } static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, int is_list, CYTHON_NCP_UNUSED int wraparound, CYTHON_NCP_UNUSED int boundscheck) { #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS if (is_list || PyList_CheckExact(o)) { Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyList_GET_SIZE(o); if ((!boundscheck) || (likely((n >= 0) & (n < PyList_GET_SIZE(o))))) { PyObject *r = PyList_GET_ITEM(o, n); Py_INCREF(r); return r; } } else if (PyTuple_CheckExact(o)) { Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o); if ((!boundscheck) || likely((n >= 0) & (n < PyTuple_GET_SIZE(o)))) { PyObject *r = PyTuple_GET_ITEM(o, n); Py_INCREF(r); return r; } } else { PySequenceMethods *m = Py_TYPE(o)->tp_as_sequence; if (likely(m && m->sq_item)) { if (wraparound && unlikely(i < 0) && likely(m->sq_length)) { Py_ssize_t l = m->sq_length(o); if (likely(l >= 0)) { i += l; } else { if (!PyErr_ExceptionMatches(PyExc_OverflowError)) return NULL; PyErr_Clear(); } } return m->sq_item(o, i); } } #else if (is_list || PySequence_Check(o)) { return PySequence_GetItem(o, i); } #endif return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); } /* RaiseTooManyValuesToUnpack */ static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) { PyErr_Format(PyExc_ValueError, "too many values to unpack (expected %" CYTHON_FORMAT_SSIZE_T "d)", expected); } /* RaiseNeedMoreValuesToUnpack */ static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) { PyErr_Format(PyExc_ValueError, "need more than %" CYTHON_FORMAT_SSIZE_T "d value%.1s to unpack", index, (index == 1) ? "" : "s"); } /* IterFinish */ static CYTHON_INLINE int __Pyx_IterFinish(void) { #if CYTHON_FAST_THREAD_STATE PyThreadState *tstate = PyThreadState_GET(); PyObject* exc_type = tstate->curexc_type; if (unlikely(exc_type)) { if (likely(exc_type == PyExc_StopIteration) || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)) { PyObject *exc_value, *exc_tb; exc_value = tstate->curexc_value; exc_tb = tstate->curexc_traceback; tstate->curexc_type = 0; tstate->curexc_value = 0; tstate->curexc_traceback = 0; Py_DECREF(exc_type); Py_XDECREF(exc_value); Py_XDECREF(exc_tb); return 0; } else { return -1; } } return 0; #else if (unlikely(PyErr_Occurred())) { if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) { PyErr_Clear(); return 0; } else { return -1; } } return 0; #endif } /* UnpackItemEndCheck */ static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected) { if (unlikely(retval)) { Py_DECREF(retval); __Pyx_RaiseTooManyValuesError(expected); return -1; } else { return __Pyx_IterFinish(); } return 0; } /* BytesEquals */ static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) { #if CYTHON_COMPILING_IN_PYPY return PyObject_RichCompareBool(s1, s2, equals); #else if (s1 == s2) { return (equals == Py_EQ); } else if (PyBytes_CheckExact(s1) & PyBytes_CheckExact(s2)) { const char *ps1, *ps2; Py_ssize_t length = PyBytes_GET_SIZE(s1); if (length != PyBytes_GET_SIZE(s2)) return (equals == Py_NE); ps1 = PyBytes_AS_STRING(s1); ps2 = PyBytes_AS_STRING(s2); if (ps1[0] != ps2[0]) { return (equals == Py_NE); } else if (length == 1) { return (equals == Py_EQ); } else { int result = memcmp(ps1, ps2, (size_t)length); return (equals == Py_EQ) ? (result == 0) : (result != 0); } } else if ((s1 == Py_None) & PyBytes_CheckExact(s2)) { return (equals == Py_NE); } else if ((s2 == Py_None) & PyBytes_CheckExact(s1)) { return (equals == Py_NE); } else { int result; PyObject* py_result = PyObject_RichCompare(s1, s2, equals); if (!py_result) return -1; result = __Pyx_PyObject_IsTrue(py_result); Py_DECREF(py_result); return result; } #endif } /* PyIntBinop */ #if !CYTHON_COMPILING_IN_PYPY static PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED int inplace) { if (op1 == op2) { Py_RETURN_TRUE; } #if PY_MAJOR_VERSION < 3 if (likely(PyInt_CheckExact(op1))) { const long b = intval; long a = PyInt_AS_LONG(op1); if (a == b) { Py_RETURN_TRUE; } else { Py_RETURN_FALSE; } } #endif #if CYTHON_USE_PYLONG_INTERNALS if (likely(PyLong_CheckExact(op1))) { const long b = intval; long a; const digit* digits = ((PyLongObject*)op1)->ob_digit; const Py_ssize_t size = Py_SIZE(op1); if (likely(__Pyx_sst_abs(size) <= 1)) { a = likely(size) ? digits[0] : 0; if (size == -1) a = -a; } else { switch (size) { case -2: if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; } case 2: if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; } case -3: if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; } case 3: if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; } case -4: if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; } case 4: if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; } #if PyLong_SHIFT < 30 && PyLong_SHIFT != 15 default: return PyLong_Type.tp_richcompare(op1, op2, Py_EQ); #else default: Py_RETURN_FALSE; #endif } } if (a == b) { Py_RETURN_TRUE; } else { Py_RETURN_FALSE; } } #endif if (PyFloat_CheckExact(op1)) { const long b = intval; double a = PyFloat_AS_DOUBLE(op1); if ((double)a == (double)b) { Py_RETURN_TRUE; } else { Py_RETURN_FALSE; } } return PyObject_RichCompare(op1, op2, Py_EQ); } #endif /* PyCFunctionFastCall */ #if CYTHON_FAST_PYCCALL static CYTHON_INLINE PyObject * __Pyx_PyCFunction_FastCall(PyObject *func_obj, PyObject **args, Py_ssize_t nargs) { PyCFunctionObject *func = (PyCFunctionObject*)func_obj; PyCFunction meth = PyCFunction_GET_FUNCTION(func); PyObject *self = PyCFunction_GET_SELF(func); assert(PyCFunction_Check(func)); assert(METH_FASTCALL == (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST))); assert(nargs >= 0); assert(nargs == 0 || args != NULL); /* _PyCFunction_FastCallDict() must not be called with an exception set, because it may clear it (directly or indirectly) and so the caller loses its exception */ assert(!PyErr_Occurred()); return (*((__Pyx_PyCFunctionFast)meth)) (self, args, nargs, NULL); } #endif // CYTHON_FAST_PYCCALL /* PyFunctionFastCall */ #if CYTHON_FAST_PYCALL #include "frameobject.h" static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args, Py_ssize_t na, PyObject *globals) { PyFrameObject *f; PyThreadState *tstate = PyThreadState_GET(); PyObject **fastlocals; Py_ssize_t i; PyObject *result; assert(globals != NULL); /* XXX Perhaps we should create a specialized PyFrame_New() that doesn't take locals, but does take builtins without sanity checking them. */ assert(tstate != NULL); f = PyFrame_New(tstate, co, globals, NULL); if (f == NULL) { return NULL; } fastlocals = f->f_localsplus; for (i = 0; i < na; i++) { Py_INCREF(*args); fastlocals[i] = *args++; } result = PyEval_EvalFrameEx(f,0); ++tstate->recursion_depth; Py_DECREF(f); --tstate->recursion_depth; return result; } #if 1 || PY_VERSION_HEX < 0x030600B1 static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, int nargs, PyObject *kwargs) { PyCodeObject *co = (PyCodeObject *)PyFunction_GET_CODE(func); PyObject *globals = PyFunction_GET_GLOBALS(func); PyObject *argdefs = PyFunction_GET_DEFAULTS(func); PyObject *closure; #if PY_MAJOR_VERSION >= 3 PyObject *kwdefs; #endif PyObject *kwtuple, **k; PyObject **d; Py_ssize_t nd; Py_ssize_t nk; PyObject *result; assert(kwargs == NULL || PyDict_Check(kwargs)); nk = kwargs ? PyDict_Size(kwargs) : 0; if (Py_EnterRecursiveCall((char*)" while calling a Python object")) { return NULL; } if ( #if PY_MAJOR_VERSION >= 3 co->co_kwonlyargcount == 0 && #endif likely(kwargs == NULL || nk == 0) && co->co_flags == (CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE)) { if (argdefs == NULL && co->co_argcount == nargs) { result = __Pyx_PyFunction_FastCallNoKw(co, args, nargs, globals); goto done; } else if (nargs == 0 && argdefs != NULL && co->co_argcount == Py_SIZE(argdefs)) { /* function called with no arguments, but all parameters have a default value: use default values as arguments .*/ args = &PyTuple_GET_ITEM(argdefs, 0); result =__Pyx_PyFunction_FastCallNoKw(co, args, Py_SIZE(argdefs), globals); goto done; } } if (kwargs != NULL) { Py_ssize_t pos, i; kwtuple = PyTuple_New(2 * nk); if (kwtuple == NULL) { result = NULL; goto done; } k = &PyTuple_GET_ITEM(kwtuple, 0); pos = i = 0; while (PyDict_Next(kwargs, &pos, &k[i], &k[i+1])) { Py_INCREF(k[i]); Py_INCREF(k[i+1]); i += 2; } nk = i / 2; } else { kwtuple = NULL; k = NULL; } closure = PyFunction_GET_CLOSURE(func); #if PY_MAJOR_VERSION >= 3 kwdefs = PyFunction_GET_KW_DEFAULTS(func); #endif if (argdefs != NULL) { d = &PyTuple_GET_ITEM(argdefs, 0); nd = Py_SIZE(argdefs); } else { d = NULL; nd = 0; } #if PY_MAJOR_VERSION >= 3 result = PyEval_EvalCodeEx((PyObject*)co, globals, (PyObject *)NULL, args, nargs, k, (int)nk, d, (int)nd, kwdefs, closure); #else result = PyEval_EvalCodeEx(co, globals, (PyObject *)NULL, args, nargs, k, (int)nk, d, (int)nd, closure); #endif Py_XDECREF(kwtuple); done: Py_LeaveRecursiveCall(); return result; } #endif // CPython < 3.6 #endif // CYTHON_FAST_PYCALL /* PyObjectCallMethO */ #if CYTHON_COMPILING_IN_CPYTHON static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) { PyObject *self, *result; PyCFunction cfunc; cfunc = PyCFunction_GET_FUNCTION(func); self = PyCFunction_GET_SELF(func); if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) return NULL; result = cfunc(self, arg); Py_LeaveRecursiveCall(); if (unlikely(!result) && unlikely(!PyErr_Occurred())) { PyErr_SetString( PyExc_SystemError, "NULL result without error in PyObject_Call"); } return result; } #endif /* PyObjectCallOneArg */ #if CYTHON_COMPILING_IN_CPYTHON static PyObject* __Pyx__PyObject_CallOneArg(PyObject *func, PyObject *arg) { PyObject *result; PyObject *args = PyTuple_New(1); if (unlikely(!args)) return NULL; Py_INCREF(arg); PyTuple_SET_ITEM(args, 0, arg); result = __Pyx_PyObject_Call(func, args, NULL); Py_DECREF(args); return result; } static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { #if CYTHON_FAST_PYCALL if (PyFunction_Check(func)) { return __Pyx_PyFunction_FastCall(func, &arg, 1); } #endif #ifdef __Pyx_CyFunction_USED if (likely(PyCFunction_Check(func) || PyObject_TypeCheck(func, __pyx_CyFunctionType))) { #else if (likely(PyCFunction_Check(func))) { #endif if (likely(PyCFunction_GET_FLAGS(func) & METH_O)) { return __Pyx_PyObject_CallMethO(func, arg); #if CYTHON_FAST_PYCCALL } else if (PyCFunction_GET_FLAGS(func) & METH_FASTCALL) { return __Pyx_PyCFunction_FastCall(func, &arg, 1); #endif } } return __Pyx__PyObject_CallOneArg(func, arg); } #else static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { PyObject *result; PyObject *args = PyTuple_Pack(1, arg); if (unlikely(!args)) return NULL; result = __Pyx_PyObject_Call(func, args, NULL); Py_DECREF(args); return result; } #endif /* None */ static CYTHON_INLINE qint64 __Pyx_div_qint64(qint64 a, qint64 b) { qint64 q = a / b; qint64 r = a - q*b; q -= ((r != 0) & ((r ^ b) < 0)); return q; } /* RaiseArgTupleInvalid */ static void __Pyx_RaiseArgtupleInvalid( const char* func_name, int exact, Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found) { Py_ssize_t num_expected; const char *more_or_less; if (num_found < num_min) { num_expected = num_min; more_or_less = "at least"; } else { num_expected = num_max; more_or_less = "at most"; } if (exact) { more_or_less = "exactly"; } PyErr_Format(PyExc_TypeError, "%.200s() takes %.8s %" CYTHON_FORMAT_SSIZE_T "d positional argument%.1s (%" CYTHON_FORMAT_SSIZE_T "d given)", func_name, more_or_less, num_expected, (num_expected == 1) ? "" : "s", num_found); } /* RaiseDoubleKeywords */ static void __Pyx_RaiseDoubleKeywordsError( const char* func_name, PyObject* kw_name) { PyErr_Format(PyExc_TypeError, #if PY_MAJOR_VERSION >= 3 "%s() got multiple values for keyword argument '%U'", func_name, kw_name); #else "%s() got multiple values for keyword argument '%s'", func_name, PyString_AsString(kw_name)); #endif } /* ParseKeywords */ static int __Pyx_ParseOptionalKeywords( PyObject *kwds, PyObject **argnames[], PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args, const char* function_name) { PyObject *key = 0, *value = 0; Py_ssize_t pos = 0; PyObject*** name; PyObject*** first_kw_arg = argnames + num_pos_args; while (PyDict_Next(kwds, &pos, &key, &value)) { name = first_kw_arg; while (*name && (**name != key)) name++; if (*name) { values[name-argnames] = value; continue; } name = first_kw_arg; #if PY_MAJOR_VERSION < 3 if (likely(PyString_CheckExact(key)) || likely(PyString_Check(key))) { while (*name) { if ((CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**name) == PyString_GET_SIZE(key)) && _PyString_Eq(**name, key)) { values[name-argnames] = value; break; } name++; } if (*name) continue; else { PyObject*** argname = argnames; while (argname != first_kw_arg) { if ((**argname == key) || ( (CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**argname) == PyString_GET_SIZE(key)) && _PyString_Eq(**argname, key))) { goto arg_passed_twice; } argname++; } } } else #endif if (likely(PyUnicode_Check(key))) { while (*name) { int cmp = (**name == key) ? 0 : #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 (PyUnicode_GET_SIZE(**name) != PyUnicode_GET_SIZE(key)) ? 1 : #endif PyUnicode_Compare(**name, key); if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; if (cmp == 0) { values[name-argnames] = value; break; } name++; } if (*name) continue; else { PyObject*** argname = argnames; while (argname != first_kw_arg) { int cmp = (**argname == key) ? 0 : #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 (PyUnicode_GET_SIZE(**argname) != PyUnicode_GET_SIZE(key)) ? 1 : #endif PyUnicode_Compare(**argname, key); if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; if (cmp == 0) goto arg_passed_twice; argname++; } } } else goto invalid_keyword_type; if (kwds2) { if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad; } else { goto invalid_keyword; } } return 0; arg_passed_twice: __Pyx_RaiseDoubleKeywordsError(function_name, key); goto bad; invalid_keyword_type: PyErr_Format(PyExc_TypeError, "%.200s() keywords must be strings", function_name); goto bad; invalid_keyword: PyErr_Format(PyExc_TypeError, #if PY_MAJOR_VERSION < 3 "%.200s() got an unexpected keyword argument '%.200s'", function_name, PyString_AsString(key)); #else "%s() got an unexpected keyword argument '%U'", function_name, key); #endif bad: return -1; } /* PyIntBinop */ #if !CYTHON_COMPILING_IN_PYPY static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED int inplace) { #if PY_MAJOR_VERSION < 3 if (likely(PyInt_CheckExact(op1))) { const long b = intval; long x; long a = PyInt_AS_LONG(op1); x = (long)((unsigned long)a + b); if (likely((x^a) >= 0 || (x^b) >= 0)) return PyInt_FromLong(x); return PyLong_Type.tp_as_number->nb_add(op1, op2); } #endif #if CYTHON_USE_PYLONG_INTERNALS if (likely(PyLong_CheckExact(op1))) { const long b = intval; long a, x; #ifdef HAVE_LONG_LONG const PY_LONG_LONG llb = intval; PY_LONG_LONG lla, llx; #endif const digit* digits = ((PyLongObject*)op1)->ob_digit; const Py_ssize_t size = Py_SIZE(op1); if (likely(__Pyx_sst_abs(size) <= 1)) { a = likely(size) ? digits[0] : 0; if (size == -1) a = -a; } else { switch (size) { case -2: if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; #ifdef HAVE_LONG_LONG } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) { lla = -(PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); goto long_long; #endif } case 2: if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; #ifdef HAVE_LONG_LONG } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) { lla = (PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); goto long_long; #endif } case -3: if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; #ifdef HAVE_LONG_LONG } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) { lla = -(PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); goto long_long; #endif } case 3: if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; #ifdef HAVE_LONG_LONG } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) { lla = (PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); goto long_long; #endif } case -4: if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; #ifdef HAVE_LONG_LONG } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) { lla = -(PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); goto long_long; #endif } case 4: if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; #ifdef HAVE_LONG_LONG } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) { lla = (PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); goto long_long; #endif } default: return PyLong_Type.tp_as_number->nb_add(op1, op2); } } x = a + b; return PyLong_FromLong(x); #ifdef HAVE_LONG_LONG long_long: llx = lla + llb; return PyLong_FromLongLong(llx); #endif } #endif if (PyFloat_CheckExact(op1)) { const long b = intval; double a = PyFloat_AS_DOUBLE(op1); double result; PyFPE_START_PROTECT("add", return NULL) result = ((double)a) + (double)b; PyFPE_END_PROTECT(result) return PyFloat_FromDouble(result); } return (inplace ? PyNumber_InPlaceAdd : PyNumber_Add)(op1, op2); } #endif /* PyObjectCallNoArg */ #if CYTHON_COMPILING_IN_CPYTHON static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) { #if CYTHON_FAST_PYCALL if (PyFunction_Check(func)) { return __Pyx_PyFunction_FastCall(func, NULL, 0); } #endif #ifdef __Pyx_CyFunction_USED if (likely(PyCFunction_Check(func) || PyObject_TypeCheck(func, __pyx_CyFunctionType))) { #else if (likely(PyCFunction_Check(func))) { #endif if (likely(PyCFunction_GET_FLAGS(func) & METH_NOARGS)) { return __Pyx_PyObject_CallMethO(func, NULL); } } return __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL); } #endif /* GetException */ #if CYTHON_FAST_THREAD_STATE static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { #else static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) { #endif PyObject *local_type, *local_value, *local_tb; #if CYTHON_FAST_THREAD_STATE PyObject *tmp_type, *tmp_value, *tmp_tb; local_type = tstate->curexc_type; local_value = tstate->curexc_value; local_tb = tstate->curexc_traceback; tstate->curexc_type = 0; tstate->curexc_value = 0; tstate->curexc_traceback = 0; #else PyErr_Fetch(&local_type, &local_value, &local_tb); #endif PyErr_NormalizeException(&local_type, &local_value, &local_tb); #if CYTHON_FAST_THREAD_STATE if (unlikely(tstate->curexc_type)) #else if (unlikely(PyErr_Occurred())) #endif goto bad; #if PY_MAJOR_VERSION >= 3 if (local_tb) { if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0)) goto bad; } #endif Py_XINCREF(local_tb); Py_XINCREF(local_type); Py_XINCREF(local_value); *type = local_type; *value = local_value; *tb = local_tb; #if CYTHON_FAST_THREAD_STATE tmp_type = tstate->exc_type; tmp_value = tstate->exc_value; tmp_tb = tstate->exc_traceback; tstate->exc_type = local_type; tstate->exc_value = local_value; tstate->exc_traceback = local_tb; Py_XDECREF(tmp_type); Py_XDECREF(tmp_value); Py_XDECREF(tmp_tb); #else PyErr_SetExcInfo(local_type, local_value, local_tb); #endif return 0; bad: *type = 0; *value = 0; *tb = 0; Py_XDECREF(local_type); Py_XDECREF(local_value); Py_XDECREF(local_tb); return -1; } /* SwapException */ #if CYTHON_FAST_THREAD_STATE static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { PyObject *tmp_type, *tmp_value, *tmp_tb; tmp_type = tstate->exc_type; tmp_value = tstate->exc_value; tmp_tb = tstate->exc_traceback; tstate->exc_type = *type; tstate->exc_value = *value; tstate->exc_traceback = *tb; *type = tmp_type; *value = tmp_value; *tb = tmp_tb; } #else static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb) { PyObject *tmp_type, *tmp_value, *tmp_tb; PyErr_GetExcInfo(&tmp_type, &tmp_value, &tmp_tb); PyErr_SetExcInfo(*type, *value, *tb); *type = tmp_type; *value = tmp_value; *tb = tmp_tb; } #endif /* SaveResetException */ #if CYTHON_FAST_THREAD_STATE static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { *type = tstate->exc_type; *value = tstate->exc_value; *tb = tstate->exc_traceback; Py_XINCREF(*type); Py_XINCREF(*value); Py_XINCREF(*tb); } static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { PyObject *tmp_type, *tmp_value, *tmp_tb; tmp_type = tstate->exc_type; tmp_value = tstate->exc_value; tmp_tb = tstate->exc_traceback; tstate->exc_type = type; tstate->exc_value = value; tstate->exc_traceback = tb; Py_XDECREF(tmp_type); Py_XDECREF(tmp_value); Py_XDECREF(tmp_tb); } #endif /* UnicodeEquals */ static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals) { #if CYTHON_COMPILING_IN_PYPY return PyObject_RichCompareBool(s1, s2, equals); #else #if PY_MAJOR_VERSION < 3 PyObject* owned_ref = NULL; #endif int s1_is_unicode, s2_is_unicode; if (s1 == s2) { goto return_eq; } s1_is_unicode = PyUnicode_CheckExact(s1); s2_is_unicode = PyUnicode_CheckExact(s2); #if PY_MAJOR_VERSION < 3 if ((s1_is_unicode & (!s2_is_unicode)) && PyString_CheckExact(s2)) { owned_ref = PyUnicode_FromObject(s2); if (unlikely(!owned_ref)) return -1; s2 = owned_ref; s2_is_unicode = 1; } else if ((s2_is_unicode & (!s1_is_unicode)) && PyString_CheckExact(s1)) { owned_ref = PyUnicode_FromObject(s1); if (unlikely(!owned_ref)) return -1; s1 = owned_ref; s1_is_unicode = 1; } else if (((!s2_is_unicode) & (!s1_is_unicode))) { return __Pyx_PyBytes_Equals(s1, s2, equals); } #endif if (s1_is_unicode & s2_is_unicode) { Py_ssize_t length; int kind; void *data1, *data2; if (unlikely(__Pyx_PyUnicode_READY(s1) < 0) || unlikely(__Pyx_PyUnicode_READY(s2) < 0)) return -1; length = __Pyx_PyUnicode_GET_LENGTH(s1); if (length != __Pyx_PyUnicode_GET_LENGTH(s2)) { goto return_ne; } kind = __Pyx_PyUnicode_KIND(s1); if (kind != __Pyx_PyUnicode_KIND(s2)) { goto return_ne; } data1 = __Pyx_PyUnicode_DATA(s1); data2 = __Pyx_PyUnicode_DATA(s2); if (__Pyx_PyUnicode_READ(kind, data1, 0) != __Pyx_PyUnicode_READ(kind, data2, 0)) { goto return_ne; } else if (length == 1) { goto return_eq; } else { int result = memcmp(data1, data2, (size_t)(length * kind)); #if PY_MAJOR_VERSION < 3 Py_XDECREF(owned_ref); #endif return (equals == Py_EQ) ? (result == 0) : (result != 0); } } else if ((s1 == Py_None) & s2_is_unicode) { goto return_ne; } else if ((s2 == Py_None) & s1_is_unicode) { goto return_ne; } else { int result; PyObject* py_result = PyObject_RichCompare(s1, s2, equals); if (!py_result) return -1; result = __Pyx_PyObject_IsTrue(py_result); Py_DECREF(py_result); return result; } return_eq: #if PY_MAJOR_VERSION < 3 Py_XDECREF(owned_ref); #endif return (equals == Py_EQ); return_ne: #if PY_MAJOR_VERSION < 3 Py_XDECREF(owned_ref); #endif return (equals == Py_NE); #endif } /* None */ static CYTHON_INLINE long __Pyx_div_long(long a, long b) { long q = a / b; long r = a - q*b; q -= ((r != 0) & ((r ^ b) < 0)); return q; } /* Import */ static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) { PyObject *empty_list = 0; PyObject *module = 0; PyObject *global_dict = 0; PyObject *empty_dict = 0; PyObject *list; #if PY_VERSION_HEX < 0x03030000 PyObject *py_import; py_import = __Pyx_PyObject_GetAttrStr(__pyx_b, __pyx_n_s_import); if (!py_import) goto bad; #endif if (from_list) list = from_list; else { empty_list = PyList_New(0); if (!empty_list) goto bad; list = empty_list; } global_dict = PyModule_GetDict(__pyx_m); if (!global_dict) goto bad; empty_dict = PyDict_New(); if (!empty_dict) goto bad; { #if PY_MAJOR_VERSION >= 3 if (level == -1) { if (strchr(__Pyx_MODULE_NAME, '.')) { #if PY_VERSION_HEX < 0x03030000 PyObject *py_level = PyInt_FromLong(1); if (!py_level) goto bad; module = PyObject_CallFunctionObjArgs(py_import, name, global_dict, empty_dict, list, py_level, NULL); Py_DECREF(py_level); #else module = PyImport_ImportModuleLevelObject( name, global_dict, empty_dict, list, 1); #endif if (!module) { if (!PyErr_ExceptionMatches(PyExc_ImportError)) goto bad; PyErr_Clear(); } } level = 0; } #endif if (!module) { #if PY_VERSION_HEX < 0x03030000 PyObject *py_level = PyInt_FromLong(level); if (!py_level) goto bad; module = PyObject_CallFunctionObjArgs(py_import, name, global_dict, empty_dict, list, py_level, NULL); Py_DECREF(py_level); #else module = PyImport_ImportModuleLevelObject( name, global_dict, empty_dict, list, level); #endif } } bad: #if PY_VERSION_HEX < 0x03030000 Py_XDECREF(py_import); #endif Py_XDECREF(empty_list); Py_XDECREF(empty_dict); return module; } /* ImportFrom */ static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) { PyObject* value = __Pyx_PyObject_GetAttrStr(module, name); if (unlikely(!value) && PyErr_ExceptionMatches(PyExc_AttributeError)) { PyErr_Format(PyExc_ImportError, #if PY_MAJOR_VERSION < 3 "cannot import name %.230s", PyString_AS_STRING(name)); #else "cannot import name %S", name); #endif } return value; } /* None */ static CYTHON_INLINE void __Pyx_RaiseClosureNameError(const char *varname) { PyErr_Format(PyExc_NameError, "free variable '%s' referenced before assignment in enclosing scope", varname); } /* PyObjectCallMethod1 */ static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg) { PyObject *method, *result = NULL; method = __Pyx_PyObject_GetAttrStr(obj, method_name); if (unlikely(!method)) goto done; #if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(method))) { PyObject *self = PyMethod_GET_SELF(method); if (likely(self)) { PyObject *args; PyObject *function = PyMethod_GET_FUNCTION(method); #if CYTHON_FAST_PYCALL if (PyFunction_Check(function)) { PyObject *args[2] = {self, arg}; result = __Pyx_PyFunction_FastCall(function, args, 2); goto done; } #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(function)) { PyObject *args[2] = {self, arg}; result = __Pyx_PyCFunction_FastCall(function, args, 2); goto done; } #endif args = PyTuple_New(2); if (unlikely(!args)) goto done; Py_INCREF(self); PyTuple_SET_ITEM(args, 0, self); Py_INCREF(arg); PyTuple_SET_ITEM(args, 1, arg); Py_INCREF(function); Py_DECREF(method); method = NULL; result = __Pyx_PyObject_Call(function, args, NULL); Py_DECREF(args); Py_DECREF(function); return result; } } #endif result = __Pyx_PyObject_CallOneArg(method, arg); done: Py_XDECREF(method); return result; } /* pop_index */ static PyObject* __Pyx__PyObject_PopNewIndex(PyObject* L, PyObject* py_ix) { PyObject *r; if (unlikely(!py_ix)) return NULL; r = __Pyx__PyObject_PopIndex(L, py_ix); Py_DECREF(py_ix); return r; } static PyObject* __Pyx__PyObject_PopIndex(PyObject* L, PyObject* py_ix) { return __Pyx_PyObject_CallMethod1(L, __pyx_n_s_pop, py_ix); } #if CYTHON_USE_PYLIST_INTERNALS && CYTHON_ASSUME_SAFE_MACROS static PyObject* __Pyx__PyList_PopIndex(PyObject* L, PyObject* py_ix, Py_ssize_t ix) { Py_ssize_t size = PyList_GET_SIZE(L); if (likely(size > (((PyListObject*)L)->allocated >> 1))) { Py_ssize_t cix = ix; if (cix < 0) { cix += size; } if (likely(0 <= cix && cix < size)) { PyObject* v = PyList_GET_ITEM(L, cix); Py_SIZE(L) -= 1; size -= 1; memmove(&PyList_GET_ITEM(L, cix), &PyList_GET_ITEM(L, cix+1), (size_t)(size-cix)*sizeof(PyObject*)); return v; } } if (py_ix == Py_None) { return __Pyx__PyObject_PopNewIndex(L, PyInt_FromSsize_t(ix)); } else { return __Pyx__PyObject_PopIndex(L, py_ix); } } #endif /* append */ static CYTHON_INLINE int __Pyx_PyObject_Append(PyObject* L, PyObject* x) { if (likely(PyList_CheckExact(L))) { if (unlikely(__Pyx_PyList_Append(L, x) < 0)) return -1; } else { PyObject* retval = __Pyx_PyObject_CallMethod1(L, __pyx_n_s_append, x); if (unlikely(!retval)) return -1; Py_DECREF(retval); } return 0; } /* PyIntBinop */ #if !CYTHON_COMPILING_IN_PYPY static PyObject* __Pyx_PyInt_SubtractCObj(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED int inplace) { #if PY_MAJOR_VERSION < 3 if (likely(PyInt_CheckExact(op2))) { const long a = intval; long x; long b = PyInt_AS_LONG(op2); x = (long)((unsigned long)a - b); if (likely((x^a) >= 0 || (x^~b) >= 0)) return PyInt_FromLong(x); return PyLong_Type.tp_as_number->nb_subtract(op1, op2); } #endif #if CYTHON_USE_PYLONG_INTERNALS if (likely(PyLong_CheckExact(op2))) { const long a = intval; long b, x; #ifdef HAVE_LONG_LONG const PY_LONG_LONG lla = intval; PY_LONG_LONG llb, llx; #endif const digit* digits = ((PyLongObject*)op2)->ob_digit; const Py_ssize_t size = Py_SIZE(op2); if (likely(__Pyx_sst_abs(size) <= 1)) { b = likely(size) ? digits[0] : 0; if (size == -1) b = -b; } else { switch (size) { case -2: if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { b = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; #ifdef HAVE_LONG_LONG } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) { llb = -(PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); goto long_long; #endif } case 2: if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { b = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; #ifdef HAVE_LONG_LONG } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) { llb = (PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); goto long_long; #endif } case -3: if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { b = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; #ifdef HAVE_LONG_LONG } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) { llb = -(PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); goto long_long; #endif } case 3: if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { b = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; #ifdef HAVE_LONG_LONG } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) { llb = (PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); goto long_long; #endif } case -4: if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { b = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; #ifdef HAVE_LONG_LONG } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) { llb = -(PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); goto long_long; #endif } case 4: if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { b = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; #ifdef HAVE_LONG_LONG } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) { llb = (PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); goto long_long; #endif } default: return PyLong_Type.tp_as_number->nb_subtract(op1, op2); } } x = a - b; return PyLong_FromLong(x); #ifdef HAVE_LONG_LONG long_long: llx = lla - llb; return PyLong_FromLongLong(llx); #endif } #endif if (PyFloat_CheckExact(op2)) { const long a = intval; double b = PyFloat_AS_DOUBLE(op2); double result; PyFPE_START_PROTECT("subtract", return NULL) result = ((double)a) - (double)b; PyFPE_END_PROTECT(result) return PyFloat_FromDouble(result); } return (inplace ? PyNumber_InPlaceSubtract : PyNumber_Subtract)(op1, op2); } #endif /* PyIntBinop */ #if !CYTHON_COMPILING_IN_PYPY static PyObject* __Pyx_PyInt_SubtractObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED int inplace) { #if PY_MAJOR_VERSION < 3 if (likely(PyInt_CheckExact(op1))) { const long b = intval; long x; long a = PyInt_AS_LONG(op1); x = (long)((unsigned long)a - b); if (likely((x^a) >= 0 || (x^~b) >= 0)) return PyInt_FromLong(x); return PyLong_Type.tp_as_number->nb_subtract(op1, op2); } #endif #if CYTHON_USE_PYLONG_INTERNALS if (likely(PyLong_CheckExact(op1))) { const long b = intval; long a, x; #ifdef HAVE_LONG_LONG const PY_LONG_LONG llb = intval; PY_LONG_LONG lla, llx; #endif const digit* digits = ((PyLongObject*)op1)->ob_digit; const Py_ssize_t size = Py_SIZE(op1); if (likely(__Pyx_sst_abs(size) <= 1)) { a = likely(size) ? digits[0] : 0; if (size == -1) a = -a; } else { switch (size) { case -2: if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; #ifdef HAVE_LONG_LONG } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) { lla = -(PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); goto long_long; #endif } case 2: if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; #ifdef HAVE_LONG_LONG } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) { lla = (PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); goto long_long; #endif } case -3: if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; #ifdef HAVE_LONG_LONG } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) { lla = -(PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); goto long_long; #endif } case 3: if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; #ifdef HAVE_LONG_LONG } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) { lla = (PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); goto long_long; #endif } case -4: if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; #ifdef HAVE_LONG_LONG } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) { lla = -(PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); goto long_long; #endif } case 4: if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; #ifdef HAVE_LONG_LONG } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) { lla = (PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); goto long_long; #endif } default: return PyLong_Type.tp_as_number->nb_subtract(op1, op2); } } x = a - b; return PyLong_FromLong(x); #ifdef HAVE_LONG_LONG long_long: llx = lla - llb; return PyLong_FromLongLong(llx); #endif } #endif if (PyFloat_CheckExact(op1)) { const long b = intval; double a = PyFloat_AS_DOUBLE(op1); double result; PyFPE_START_PROTECT("subtract", return NULL) result = ((double)a) - (double)b; PyFPE_END_PROTECT(result) return PyFloat_FromDouble(result); } return (inplace ? PyNumber_InPlaceSubtract : PyNumber_Subtract)(op1, op2); } #endif /* pyobject_as_double */ static double __Pyx__PyObject_AsDouble(PyObject* obj) { PyObject* float_value; #if !CYTHON_USE_TYPE_SLOTS float_value = PyNumber_Float(obj); if (0) goto bad; #else PyNumberMethods *nb = Py_TYPE(obj)->tp_as_number; if (likely(nb) && likely(nb->nb_float)) { float_value = nb->nb_float(obj); if (likely(float_value) && unlikely(!PyFloat_Check(float_value))) { PyErr_Format(PyExc_TypeError, "__float__ returned non-float (type %.200s)", Py_TYPE(float_value)->tp_name); Py_DECREF(float_value); goto bad; } } else if (PyUnicode_CheckExact(obj) || PyBytes_CheckExact(obj)) { #if PY_MAJOR_VERSION >= 3 float_value = PyFloat_FromString(obj); #else float_value = PyFloat_FromString(obj, 0); #endif } else { PyObject* args = PyTuple_New(1); if (unlikely(!args)) goto bad; PyTuple_SET_ITEM(args, 0, obj); float_value = PyObject_Call((PyObject*)&PyFloat_Type, args, 0); PyTuple_SET_ITEM(args, 0, 0); Py_DECREF(args); } #endif if (likely(float_value)) { double value = PyFloat_AS_DOUBLE(float_value); Py_DECREF(float_value); return value; } bad: return (double)-1; } /* PyErrExceptionMatches */ #if CYTHON_FAST_THREAD_STATE static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err) { PyObject *exc_type = tstate->curexc_type; if (exc_type == err) return 1; if (unlikely(!exc_type)) return 0; return PyErr_GivenExceptionMatches(exc_type, err); } #endif /* CalculateMetaclass */ static PyObject *__Pyx_CalculateMetaclass(PyTypeObject *metaclass, PyObject *bases) { Py_ssize_t i, nbases = PyTuple_GET_SIZE(bases); for (i=0; i < nbases; i++) { PyTypeObject *tmptype; PyObject *tmp = PyTuple_GET_ITEM(bases, i); tmptype = Py_TYPE(tmp); #if PY_MAJOR_VERSION < 3 if (tmptype == &PyClass_Type) continue; #endif if (!metaclass) { metaclass = tmptype; continue; } if (PyType_IsSubtype(metaclass, tmptype)) continue; if (PyType_IsSubtype(tmptype, metaclass)) { metaclass = tmptype; continue; } PyErr_SetString(PyExc_TypeError, "metaclass conflict: " "the metaclass of a derived class " "must be a (non-strict) subclass " "of the metaclasses of all its bases"); return NULL; } if (!metaclass) { #if PY_MAJOR_VERSION < 3 metaclass = &PyClass_Type; #else metaclass = &PyType_Type; #endif } Py_INCREF((PyObject*) metaclass); return (PyObject*) metaclass; } /* Py3ClassCreate */ static PyObject *__Pyx_Py3MetaclassPrepare(PyObject *metaclass, PyObject *bases, PyObject *name, PyObject *qualname, PyObject *mkw, PyObject *modname, PyObject *doc) { PyObject *ns; if (metaclass) { PyObject *prep = __Pyx_PyObject_GetAttrStr(metaclass, __pyx_n_s_prepare); if (prep) { PyObject *pargs = PyTuple_Pack(2, name, bases); if (unlikely(!pargs)) { Py_DECREF(prep); return NULL; } ns = PyObject_Call(prep, pargs, mkw); Py_DECREF(prep); Py_DECREF(pargs); } else { if (unlikely(!PyErr_ExceptionMatches(PyExc_AttributeError))) return NULL; PyErr_Clear(); ns = PyDict_New(); } } else { ns = PyDict_New(); } if (unlikely(!ns)) return NULL; if (unlikely(PyObject_SetItem(ns, __pyx_n_s_module_2, modname) < 0)) goto bad; if (unlikely(PyObject_SetItem(ns, __pyx_n_s_qualname, qualname) < 0)) goto bad; if (unlikely(doc && PyObject_SetItem(ns, __pyx_n_s_doc, doc) < 0)) goto bad; return ns; bad: Py_DECREF(ns); return NULL; } static PyObject *__Pyx_Py3ClassCreate(PyObject *metaclass, PyObject *name, PyObject *bases, PyObject *dict, PyObject *mkw, int calculate_metaclass, int allow_py2_metaclass) { PyObject *result, *margs; PyObject *owned_metaclass = NULL; if (allow_py2_metaclass) { owned_metaclass = PyObject_GetItem(dict, __pyx_n_s_metaclass); if (owned_metaclass) { metaclass = owned_metaclass; } else if (likely(PyErr_ExceptionMatches(PyExc_KeyError))) { PyErr_Clear(); } else { return NULL; } } if (calculate_metaclass && (!metaclass || PyType_Check(metaclass))) { metaclass = __Pyx_CalculateMetaclass((PyTypeObject*) metaclass, bases); Py_XDECREF(owned_metaclass); if (unlikely(!metaclass)) return NULL; owned_metaclass = metaclass; } margs = PyTuple_Pack(3, name, bases, dict); if (unlikely(!margs)) { result = NULL; } else { result = PyObject_Call(metaclass, margs, mkw); Py_DECREF(margs); } Py_XDECREF(owned_metaclass); return result; } /* CodeObjectCache */ static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) { int start = 0, mid = 0, end = count - 1; if (end >= 0 && code_line > entries[end].code_line) { return count; } while (start < end) { mid = start + (end - start) / 2; if (code_line < entries[mid].code_line) { end = mid; } else if (code_line > entries[mid].code_line) { start = mid + 1; } else { return mid; } } if (code_line <= entries[mid].code_line) { return mid; } else { return mid + 1; } } static PyCodeObject *__pyx_find_code_object(int code_line) { PyCodeObject* code_object; int pos; if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) { return NULL; } pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) { return NULL; } code_object = __pyx_code_cache.entries[pos].code_object; Py_INCREF(code_object); return code_object; } static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) { int pos, i; __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries; if (unlikely(!code_line)) { return; } if (unlikely(!entries)) { entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry)); if (likely(entries)) { __pyx_code_cache.entries = entries; __pyx_code_cache.max_count = 64; __pyx_code_cache.count = 1; entries[0].code_line = code_line; entries[0].code_object = code_object; Py_INCREF(code_object); } return; } pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) { PyCodeObject* tmp = entries[pos].code_object; entries[pos].code_object = code_object; Py_DECREF(tmp); return; } if (__pyx_code_cache.count == __pyx_code_cache.max_count) { int new_max = __pyx_code_cache.max_count + 64; entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc( __pyx_code_cache.entries, (size_t)new_max*sizeof(__Pyx_CodeObjectCacheEntry)); if (unlikely(!entries)) { return; } __pyx_code_cache.entries = entries; __pyx_code_cache.max_count = new_max; } for (i=__pyx_code_cache.count; i>pos; i--) { entries[i] = entries[i-1]; } entries[pos].code_line = code_line; entries[pos].code_object = code_object; __pyx_code_cache.count++; Py_INCREF(code_object); } /* AddTraceback */ #include "compile.h" #include "frameobject.h" #include "traceback.h" static PyCodeObject* __Pyx_CreateCodeObjectForTraceback( const char *funcname, int c_line, int py_line, const char *filename) { PyCodeObject *py_code = 0; PyObject *py_srcfile = 0; PyObject *py_funcname = 0; #if PY_MAJOR_VERSION < 3 py_srcfile = PyString_FromString(filename); #else py_srcfile = PyUnicode_FromString(filename); #endif if (!py_srcfile) goto bad; if (c_line) { #if PY_MAJOR_VERSION < 3 py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); #else py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); #endif } else { #if PY_MAJOR_VERSION < 3 py_funcname = PyString_FromString(funcname); #else py_funcname = PyUnicode_FromString(funcname); #endif } if (!py_funcname) goto bad; py_code = __Pyx_PyCode_New( 0, 0, 0, 0, 0, __pyx_empty_bytes, /*PyObject *code,*/ __pyx_empty_tuple, /*PyObject *consts,*/ __pyx_empty_tuple, /*PyObject *names,*/ __pyx_empty_tuple, /*PyObject *varnames,*/ __pyx_empty_tuple, /*PyObject *freevars,*/ __pyx_empty_tuple, /*PyObject *cellvars,*/ py_srcfile, /*PyObject *filename,*/ py_funcname, /*PyObject *name,*/ py_line, __pyx_empty_bytes /*PyObject *lnotab*/ ); Py_DECREF(py_srcfile); Py_DECREF(py_funcname); return py_code; bad: Py_XDECREF(py_srcfile); Py_XDECREF(py_funcname); return NULL; } static void __Pyx_AddTraceback(const char *funcname, int c_line, int py_line, const char *filename) { PyCodeObject *py_code = 0; PyFrameObject *py_frame = 0; py_code = __pyx_find_code_object(c_line ? c_line : py_line); if (!py_code) { py_code = __Pyx_CreateCodeObjectForTraceback( funcname, c_line, py_line, filename); if (!py_code) goto bad; __pyx_insert_code_object(c_line ? c_line : py_line, py_code); } py_frame = PyFrame_New( PyThreadState_GET(), /*PyThreadState *tstate,*/ py_code, /*PyCodeObject *code,*/ __pyx_d, /*PyObject *globals,*/ 0 /*PyObject *locals*/ ); if (!py_frame) goto bad; __Pyx_PyFrame_SetLineNumber(py_frame, py_line); PyTraceBack_Here(py_frame); bad: Py_XDECREF(py_code); Py_XDECREF(py_frame); } /* CIntToPy */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__Qt_3a__3a_Key(enum Qt::Key value) { const enum Qt::Key neg_one = (enum Qt::Key) -1, const_zero = (enum Qt::Key) 0; const int is_unsigned = neg_one > const_zero; if (is_unsigned) { if (sizeof(enum Qt::Key) < sizeof(long)) { return PyInt_FromLong((long) value); } else if (sizeof(enum Qt::Key) <= sizeof(unsigned long)) { return PyLong_FromUnsignedLong((unsigned long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(enum Qt::Key) <= sizeof(unsigned PY_LONG_LONG)) { return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); #endif } } else { if (sizeof(enum Qt::Key) <= sizeof(long)) { return PyInt_FromLong((long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(enum Qt::Key) <= sizeof(PY_LONG_LONG)) { return PyLong_FromLongLong((PY_LONG_LONG) value); #endif } } { int one = 1; int little = (int)*(unsigned char *)&one; unsigned char *bytes = (unsigned char *)&value; return _PyLong_FromByteArray(bytes, sizeof(enum Qt::Key), little, !is_unsigned); } } /* CIntToPy */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__Qt_3a__3a_KeyboardModifier(enum Qt::KeyboardModifier value) { const enum Qt::KeyboardModifier neg_one = (enum Qt::KeyboardModifier) -1, const_zero = (enum Qt::KeyboardModifier) 0; const int is_unsigned = neg_one > const_zero; if (is_unsigned) { if (sizeof(enum Qt::KeyboardModifier) < sizeof(long)) { return PyInt_FromLong((long) value); } else if (sizeof(enum Qt::KeyboardModifier) <= sizeof(unsigned long)) { return PyLong_FromUnsignedLong((unsigned long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(enum Qt::KeyboardModifier) <= sizeof(unsigned PY_LONG_LONG)) { return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); #endif } } else { if (sizeof(enum Qt::KeyboardModifier) <= sizeof(long)) { return PyInt_FromLong((long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(enum Qt::KeyboardModifier) <= sizeof(PY_LONG_LONG)) { return PyLong_FromLongLong((PY_LONG_LONG) value); #endif } } { int one = 1; int little = (int)*(unsigned char *)&one; unsigned char *bytes = (unsigned char *)&value; return _PyLong_FromByteArray(bytes, sizeof(enum Qt::KeyboardModifier), little, !is_unsigned); } } /* CIntToPy */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__Qt_3a__3a_MouseButton(enum Qt::MouseButton value) { const enum Qt::MouseButton neg_one = (enum Qt::MouseButton) -1, const_zero = (enum Qt::MouseButton) 0; const int is_unsigned = neg_one > const_zero; if (is_unsigned) { if (sizeof(enum Qt::MouseButton) < sizeof(long)) { return PyInt_FromLong((long) value); } else if (sizeof(enum Qt::MouseButton) <= sizeof(unsigned long)) { return PyLong_FromUnsignedLong((unsigned long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(enum Qt::MouseButton) <= sizeof(unsigned PY_LONG_LONG)) { return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); #endif } } else { if (sizeof(enum Qt::MouseButton) <= sizeof(long)) { return PyInt_FromLong((long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(enum Qt::MouseButton) <= sizeof(PY_LONG_LONG)) { return PyLong_FromLongLong((PY_LONG_LONG) value); #endif } } { int one = 1; int little = (int)*(unsigned char *)&one; unsigned char *bytes = (unsigned char *)&value; return _PyLong_FromByteArray(bytes, sizeof(enum Qt::MouseButton), little, !is_unsigned); } } /* CIntFromPyVerify */ #define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\ __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0) #define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\ __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1) #define __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, exc)\ {\ func_type value = func_value;\ if (sizeof(target_type) < sizeof(func_type)) {\ if (unlikely(value != (func_type) (target_type) value)) {\ func_type zero = 0;\ if (exc && unlikely(value == (func_type)-1 && PyErr_Occurred()))\ return (target_type) -1;\ if (is_unsigned && unlikely(value < zero))\ goto raise_neg_overflow;\ else\ goto raise_overflow;\ }\ }\ return (target_type) value;\ } /* CIntToPy */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) { const int neg_one = (int) -1, const_zero = (int) 0; const int is_unsigned = neg_one > const_zero; if (is_unsigned) { if (sizeof(int) < sizeof(long)) { return PyInt_FromLong((long) value); } else if (sizeof(int) <= sizeof(unsigned long)) { return PyLong_FromUnsignedLong((unsigned long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) { return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); #endif } } else { if (sizeof(int) <= sizeof(long)) { return PyInt_FromLong((long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) { return PyLong_FromLongLong((PY_LONG_LONG) value); #endif } } { int one = 1; int little = (int)*(unsigned char *)&one; unsigned char *bytes = (unsigned char *)&value; return _PyLong_FromByteArray(bytes, sizeof(int), little, !is_unsigned); } } /* None */ static CYTHON_INLINE long __Pyx_pow_long(long b, long e) { long t = b; switch (e) { case 3: t *= b; case 2: t *= b; case 1: return t; case 0: return 1; } #if 1 if (unlikely(e<0)) return 0; #endif t = 1; while (likely(e)) { t *= (b * (e&1)) | ((~e)&1); b *= b; e >>= 1; } return t; } /* CIntToPy */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) { const long neg_one = (long) -1, const_zero = (long) 0; const int is_unsigned = neg_one > const_zero; if (is_unsigned) { if (sizeof(long) < sizeof(long)) { return PyInt_FromLong((long) value); } else if (sizeof(long) <= sizeof(unsigned long)) { return PyLong_FromUnsignedLong((unsigned long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); #endif } } else { if (sizeof(long) <= sizeof(long)) { return PyInt_FromLong((long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { return PyLong_FromLongLong((PY_LONG_LONG) value); #endif } } { int one = 1; int little = (int)*(unsigned char *)&one; unsigned char *bytes = (unsigned char *)&value; return _PyLong_FromByteArray(bytes, sizeof(long), little, !is_unsigned); } } /* CIntToPy */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_Qt_3a__3a_KeyboardModifiers(Qt::KeyboardModifiers value) { const Qt::KeyboardModifiers neg_one = (Qt::KeyboardModifiers) -1, const_zero = (Qt::KeyboardModifiers) 0; const int is_unsigned = neg_one > const_zero; if (is_unsigned) { if (sizeof(Qt::KeyboardModifiers) < sizeof(long)) { return PyInt_FromLong((long) value); } else if (sizeof(Qt::KeyboardModifiers) <= sizeof(unsigned long)) { return PyLong_FromUnsignedLong((unsigned long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(Qt::KeyboardModifiers) <= sizeof(unsigned PY_LONG_LONG)) { return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); #endif } } else { if (sizeof(Qt::KeyboardModifiers) <= sizeof(long)) { return PyInt_FromLong((long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(Qt::KeyboardModifiers) <= sizeof(PY_LONG_LONG)) { return PyLong_FromLongLong((PY_LONG_LONG) value); #endif } } { int one = 1; int little = (int)*(unsigned char *)&one; unsigned char *bytes = (unsigned char *)&value; return _PyLong_FromByteArray(bytes, sizeof(Qt::KeyboardModifiers), little, !is_unsigned); } } /* CIntFromPy */ static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) { const int neg_one = (int) -1, const_zero = (int) 0; const int is_unsigned = neg_one > const_zero; #if PY_MAJOR_VERSION < 3 if (likely(PyInt_Check(x))) { if (sizeof(int) < sizeof(long)) { __PYX_VERIFY_RETURN_INT(int, long, PyInt_AS_LONG(x)) } else { long val = PyInt_AS_LONG(x); if (is_unsigned && unlikely(val < 0)) { goto raise_neg_overflow; } return (int) val; } } else #endif if (likely(PyLong_Check(x))) { if (is_unsigned) { #if CYTHON_USE_PYLONG_INTERNALS const digit* digits = ((PyLongObject*)x)->ob_digit; switch (Py_SIZE(x)) { case 0: return (int) 0; case 1: __PYX_VERIFY_RETURN_INT(int, digit, digits[0]) case 2: if (8 * sizeof(int) > 1 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(int) >= 2 * PyLong_SHIFT) { return (int) (((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); } } break; case 3: if (8 * sizeof(int) > 2 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(int) >= 3 * PyLong_SHIFT) { return (int) (((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); } } break; case 4: if (8 * sizeof(int) > 3 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(int) >= 4 * PyLong_SHIFT) { return (int) (((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); } } break; } #endif #if CYTHON_COMPILING_IN_CPYTHON if (unlikely(Py_SIZE(x) < 0)) { goto raise_neg_overflow; } #else { int result = PyObject_RichCompareBool(x, Py_False, Py_LT); if (unlikely(result < 0)) return (int) -1; if (unlikely(result == 1)) goto raise_neg_overflow; } #endif if (sizeof(int) <= sizeof(unsigned long)) { __PYX_VERIFY_RETURN_INT_EXC(int, unsigned long, PyLong_AsUnsignedLong(x)) #ifdef HAVE_LONG_LONG } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) { __PYX_VERIFY_RETURN_INT_EXC(int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) #endif } } else { #if CYTHON_USE_PYLONG_INTERNALS const digit* digits = ((PyLongObject*)x)->ob_digit; switch (Py_SIZE(x)) { case 0: return (int) 0; case -1: __PYX_VERIFY_RETURN_INT(int, sdigit, (sdigit) (-(sdigit)digits[0])) case 1: __PYX_VERIFY_RETURN_INT(int, digit, +digits[0]) case -2: if (8 * sizeof(int) - 1 > 1 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { return (int) (((int)-1)*(((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); } } break; case 2: if (8 * sizeof(int) > 1 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { return (int) ((((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); } } break; case -3: if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { return (int) (((int)-1)*(((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); } } break; case 3: if (8 * sizeof(int) > 2 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { return (int) ((((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); } } break; case -4: if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) { return (int) (((int)-1)*(((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); } } break; case 4: if (8 * sizeof(int) > 3 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) { return (int) ((((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); } } break; } #endif if (sizeof(int) <= sizeof(long)) { __PYX_VERIFY_RETURN_INT_EXC(int, long, PyLong_AsLong(x)) #ifdef HAVE_LONG_LONG } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) { __PYX_VERIFY_RETURN_INT_EXC(int, PY_LONG_LONG, PyLong_AsLongLong(x)) #endif } } { #if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray) PyErr_SetString(PyExc_RuntimeError, "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"); #else int val; PyObject *v = __Pyx_PyNumber_IntOrLong(x); #if PY_MAJOR_VERSION < 3 if (likely(v) && !PyLong_Check(v)) { PyObject *tmp = v; v = PyNumber_Long(tmp); Py_DECREF(tmp); } #endif if (likely(v)) { int one = 1; int is_little = (int)*(unsigned char *)&one; unsigned char *bytes = (unsigned char *)&val; int ret = _PyLong_AsByteArray((PyLongObject *)v, bytes, sizeof(val), is_little, !is_unsigned); Py_DECREF(v); if (likely(!ret)) return val; } #endif return (int) -1; } } else { int val; PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); if (!tmp) return (int) -1; val = __Pyx_PyInt_As_int(tmp); Py_DECREF(tmp); return val; } raise_overflow: PyErr_SetString(PyExc_OverflowError, "value too large to convert to int"); return (int) -1; raise_neg_overflow: PyErr_SetString(PyExc_OverflowError, "can't convert negative value to int"); return (int) -1; } /* CIntFromPy */ static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) { const long neg_one = (long) -1, const_zero = (long) 0; const int is_unsigned = neg_one > const_zero; #if PY_MAJOR_VERSION < 3 if (likely(PyInt_Check(x))) { if (sizeof(long) < sizeof(long)) { __PYX_VERIFY_RETURN_INT(long, long, PyInt_AS_LONG(x)) } else { long val = PyInt_AS_LONG(x); if (is_unsigned && unlikely(val < 0)) { goto raise_neg_overflow; } return (long) val; } } else #endif if (likely(PyLong_Check(x))) { if (is_unsigned) { #if CYTHON_USE_PYLONG_INTERNALS const digit* digits = ((PyLongObject*)x)->ob_digit; switch (Py_SIZE(x)) { case 0: return (long) 0; case 1: __PYX_VERIFY_RETURN_INT(long, digit, digits[0]) case 2: if (8 * sizeof(long) > 1 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(long) >= 2 * PyLong_SHIFT) { return (long) (((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); } } break; case 3: if (8 * sizeof(long) > 2 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(long) >= 3 * PyLong_SHIFT) { return (long) (((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); } } break; case 4: if (8 * sizeof(long) > 3 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(long) >= 4 * PyLong_SHIFT) { return (long) (((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); } } break; } #endif #if CYTHON_COMPILING_IN_CPYTHON if (unlikely(Py_SIZE(x) < 0)) { goto raise_neg_overflow; } #else { int result = PyObject_RichCompareBool(x, Py_False, Py_LT); if (unlikely(result < 0)) return (long) -1; if (unlikely(result == 1)) goto raise_neg_overflow; } #endif if (sizeof(long) <= sizeof(unsigned long)) { __PYX_VERIFY_RETURN_INT_EXC(long, unsigned long, PyLong_AsUnsignedLong(x)) #ifdef HAVE_LONG_LONG } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { __PYX_VERIFY_RETURN_INT_EXC(long, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) #endif } } else { #if CYTHON_USE_PYLONG_INTERNALS const digit* digits = ((PyLongObject*)x)->ob_digit; switch (Py_SIZE(x)) { case 0: return (long) 0; case -1: __PYX_VERIFY_RETURN_INT(long, sdigit, (sdigit) (-(sdigit)digits[0])) case 1: __PYX_VERIFY_RETURN_INT(long, digit, +digits[0]) case -2: if (8 * sizeof(long) - 1 > 1 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { return (long) (((long)-1)*(((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); } } break; case 2: if (8 * sizeof(long) > 1 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { return (long) ((((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); } } break; case -3: if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { return (long) (((long)-1)*(((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); } } break; case 3: if (8 * sizeof(long) > 2 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { return (long) ((((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); } } break; case -4: if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { return (long) (((long)-1)*(((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); } } break; case 4: if (8 * sizeof(long) > 3 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { return (long) ((((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); } } break; } #endif if (sizeof(long) <= sizeof(long)) { __PYX_VERIFY_RETURN_INT_EXC(long, long, PyLong_AsLong(x)) #ifdef HAVE_LONG_LONG } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { __PYX_VERIFY_RETURN_INT_EXC(long, PY_LONG_LONG, PyLong_AsLongLong(x)) #endif } } { #if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray) PyErr_SetString(PyExc_RuntimeError, "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"); #else long val; PyObject *v = __Pyx_PyNumber_IntOrLong(x); #if PY_MAJOR_VERSION < 3 if (likely(v) && !PyLong_Check(v)) { PyObject *tmp = v; v = PyNumber_Long(tmp); Py_DECREF(tmp); } #endif if (likely(v)) { int one = 1; int is_little = (int)*(unsigned char *)&one; unsigned char *bytes = (unsigned char *)&val; int ret = _PyLong_AsByteArray((PyLongObject *)v, bytes, sizeof(val), is_little, !is_unsigned); Py_DECREF(v); if (likely(!ret)) return val; } #endif return (long) -1; } } else { long val; PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); if (!tmp) return (long) -1; val = __Pyx_PyInt_As_long(tmp); Py_DECREF(tmp); return val; } raise_overflow: PyErr_SetString(PyExc_OverflowError, "value too large to convert to long"); return (long) -1; raise_neg_overflow: PyErr_SetString(PyExc_OverflowError, "can't convert negative value to long"); return (long) -1; } /* FetchCommonType */ static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type) { PyObject* fake_module; PyTypeObject* cached_type = NULL; fake_module = PyImport_AddModule((char*) "_cython_" CYTHON_ABI); if (!fake_module) return NULL; Py_INCREF(fake_module); cached_type = (PyTypeObject*) PyObject_GetAttrString(fake_module, type->tp_name); if (cached_type) { if (!PyType_Check((PyObject*)cached_type)) { PyErr_Format(PyExc_TypeError, "Shared Cython type %.200s is not a type object", type->tp_name); goto bad; } if (cached_type->tp_basicsize != type->tp_basicsize) { PyErr_Format(PyExc_TypeError, "Shared Cython type %.200s has the wrong size, try recompiling", type->tp_name); goto bad; } } else { if (!PyErr_ExceptionMatches(PyExc_AttributeError)) goto bad; PyErr_Clear(); if (PyType_Ready(type) < 0) goto bad; if (PyObject_SetAttrString(fake_module, type->tp_name, (PyObject*) type) < 0) goto bad; Py_INCREF(type); cached_type = type; } done: Py_DECREF(fake_module); return cached_type; bad: Py_XDECREF(cached_type); cached_type = NULL; goto done; } /* RaiseException */ #if PY_MAJOR_VERSION < 3 static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, CYTHON_UNUSED PyObject *cause) { __Pyx_PyThreadState_declare Py_XINCREF(type); if (!value || value == Py_None) value = NULL; else Py_INCREF(value); if (!tb || tb == Py_None) tb = NULL; else { Py_INCREF(tb); if (!PyTraceBack_Check(tb)) { PyErr_SetString(PyExc_TypeError, "raise: arg 3 must be a traceback or None"); goto raise_error; } } if (PyType_Check(type)) { #if CYTHON_COMPILING_IN_PYPY if (!value) { Py_INCREF(Py_None); value = Py_None; } #endif PyErr_NormalizeException(&type, &value, &tb); } else { if (value) { PyErr_SetString(PyExc_TypeError, "instance exception may not have a separate value"); goto raise_error; } value = type; type = (PyObject*) Py_TYPE(type); Py_INCREF(type); if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) { PyErr_SetString(PyExc_TypeError, "raise: exception class must be a subclass of BaseException"); goto raise_error; } } __Pyx_PyThreadState_assign __Pyx_ErrRestore(type, value, tb); return; raise_error: Py_XDECREF(value); Py_XDECREF(type); Py_XDECREF(tb); return; } #else static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) { PyObject* owned_instance = NULL; if (tb == Py_None) { tb = 0; } else if (tb && !PyTraceBack_Check(tb)) { PyErr_SetString(PyExc_TypeError, "raise: arg 3 must be a traceback or None"); goto bad; } if (value == Py_None) value = 0; if (PyExceptionInstance_Check(type)) { if (value) { PyErr_SetString(PyExc_TypeError, "instance exception may not have a separate value"); goto bad; } value = type; type = (PyObject*) Py_TYPE(value); } else if (PyExceptionClass_Check(type)) { PyObject *instance_class = NULL; if (value && PyExceptionInstance_Check(value)) { instance_class = (PyObject*) Py_TYPE(value); if (instance_class != type) { int is_subclass = PyObject_IsSubclass(instance_class, type); if (!is_subclass) { instance_class = NULL; } else if (unlikely(is_subclass == -1)) { goto bad; } else { type = instance_class; } } } if (!instance_class) { PyObject *args; if (!value) args = PyTuple_New(0); else if (PyTuple_Check(value)) { Py_INCREF(value); args = value; } else args = PyTuple_Pack(1, value); if (!args) goto bad; owned_instance = PyObject_Call(type, args, NULL); Py_DECREF(args); if (!owned_instance) goto bad; value = owned_instance; if (!PyExceptionInstance_Check(value)) { PyErr_Format(PyExc_TypeError, "calling %R should have returned an instance of " "BaseException, not %R", type, Py_TYPE(value)); goto bad; } } } else { PyErr_SetString(PyExc_TypeError, "raise: exception class must be a subclass of BaseException"); goto bad; } #if PY_VERSION_HEX >= 0x03030000 if (cause) { #else if (cause && cause != Py_None) { #endif PyObject *fixed_cause; if (cause == Py_None) { fixed_cause = NULL; } else if (PyExceptionClass_Check(cause)) { fixed_cause = PyObject_CallObject(cause, NULL); if (fixed_cause == NULL) goto bad; } else if (PyExceptionInstance_Check(cause)) { fixed_cause = cause; Py_INCREF(fixed_cause); } else { PyErr_SetString(PyExc_TypeError, "exception causes must derive from " "BaseException"); goto bad; } PyException_SetCause(value, fixed_cause); } PyErr_SetObject(type, value); if (tb) { #if CYTHON_COMPILING_IN_PYPY PyObject *tmp_type, *tmp_value, *tmp_tb; PyErr_Fetch(&tmp_type, &tmp_value, &tmp_tb); Py_INCREF(tb); PyErr_Restore(tmp_type, tmp_value, tb); Py_XDECREF(tmp_tb); #else PyThreadState *tstate = PyThreadState_GET(); PyObject* tmp_tb = tstate->curexc_traceback; if (tb != tmp_tb) { Py_INCREF(tb); tstate->curexc_traceback = tb; Py_XDECREF(tmp_tb); } #endif } bad: Py_XDECREF(owned_instance); return; } #endif /* CoroutineBase */ #include #include static PyObject *__Pyx_Coroutine_Send(PyObject *self, PyObject *value); static PyObject *__Pyx_Coroutine_Close(PyObject *self); static PyObject *__Pyx_Coroutine_Throw(PyObject *gen, PyObject *args); #define __Pyx_Coroutine_Undelegate(gen) Py_CLEAR((gen)->yieldfrom) #if 1 || PY_VERSION_HEX < 0x030300B0 static int __Pyx_PyGen_FetchStopIterationValue(PyObject **pvalue) { PyObject *et, *ev, *tb; PyObject *value = NULL; __Pyx_PyThreadState_declare __Pyx_PyThreadState_assign __Pyx_ErrFetch(&et, &ev, &tb); if (!et) { Py_XDECREF(tb); Py_XDECREF(ev); Py_INCREF(Py_None); *pvalue = Py_None; return 0; } if (likely(et == PyExc_StopIteration)) { if (!ev) { Py_INCREF(Py_None); value = Py_None; } #if PY_VERSION_HEX >= 0x030300A0 else if (Py_TYPE(ev) == (PyTypeObject*)PyExc_StopIteration) { value = ((PyStopIterationObject *)ev)->value; Py_INCREF(value); Py_DECREF(ev); } #endif else if (unlikely(PyTuple_Check(ev))) { if (PyTuple_GET_SIZE(ev) >= 1) { #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS value = PyTuple_GET_ITEM(ev, 0); Py_INCREF(value); #else value = PySequence_ITEM(ev, 0); #endif } else { Py_INCREF(Py_None); value = Py_None; } Py_DECREF(ev); } else if (!PyObject_TypeCheck(ev, (PyTypeObject*)PyExc_StopIteration)) { value = ev; } if (likely(value)) { Py_XDECREF(tb); Py_DECREF(et); *pvalue = value; return 0; } } else if (!PyErr_GivenExceptionMatches(et, PyExc_StopIteration)) { __Pyx_ErrRestore(et, ev, tb); return -1; } PyErr_NormalizeException(&et, &ev, &tb); if (unlikely(!PyObject_TypeCheck(ev, (PyTypeObject*)PyExc_StopIteration))) { __Pyx_ErrRestore(et, ev, tb); return -1; } Py_XDECREF(tb); Py_DECREF(et); #if PY_VERSION_HEX >= 0x030300A0 value = ((PyStopIterationObject *)ev)->value; Py_INCREF(value); Py_DECREF(ev); #else { PyObject* args = __Pyx_PyObject_GetAttrStr(ev, __pyx_n_s_args); Py_DECREF(ev); if (likely(args)) { value = PySequence_GetItem(args, 0); Py_DECREF(args); } if (unlikely(!value)) { __Pyx_ErrRestore(NULL, NULL, NULL); Py_INCREF(Py_None); value = Py_None; } } #endif *pvalue = value; return 0; } #endif static CYTHON_INLINE void __Pyx_Coroutine_ExceptionClear(__pyx_CoroutineObject *self) { PyObject *exc_type = self->exc_type; PyObject *exc_value = self->exc_value; PyObject *exc_traceback = self->exc_traceback; self->exc_type = NULL; self->exc_value = NULL; self->exc_traceback = NULL; Py_XDECREF(exc_type); Py_XDECREF(exc_value); Py_XDECREF(exc_traceback); } static CYTHON_INLINE int __Pyx_Coroutine_CheckRunning(__pyx_CoroutineObject *gen) { if (unlikely(gen->is_running)) { PyErr_SetString(PyExc_ValueError, "generator already executing"); return 1; } return 0; } static CYTHON_INLINE PyObject *__Pyx_Coroutine_SendEx(__pyx_CoroutineObject *self, PyObject *value) { PyObject *retval; __Pyx_PyThreadState_declare assert(!self->is_running); if (unlikely(self->resume_label == 0)) { if (unlikely(value && value != Py_None)) { PyErr_SetString(PyExc_TypeError, "can't send non-None value to a " "just-started generator"); return NULL; } } if (unlikely(self->resume_label == -1)) { PyErr_SetNone(PyExc_StopIteration); return NULL; } __Pyx_PyThreadState_assign if (value) { #if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_PYSTON #else if (self->exc_traceback) { PyTracebackObject *tb = (PyTracebackObject *) self->exc_traceback; PyFrameObject *f = tb->tb_frame; Py_XINCREF(__pyx_tstate->frame); assert(f->f_back == NULL); f->f_back = __pyx_tstate->frame; } #endif __Pyx_ExceptionSwap(&self->exc_type, &self->exc_value, &self->exc_traceback); } else { __Pyx_Coroutine_ExceptionClear(self); } self->is_running = 1; retval = self->body((PyObject *) self, value); self->is_running = 0; if (retval) { __Pyx_ExceptionSwap(&self->exc_type, &self->exc_value, &self->exc_traceback); #if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_PYSTON #else if (self->exc_traceback) { PyTracebackObject *tb = (PyTracebackObject *) self->exc_traceback; PyFrameObject *f = tb->tb_frame; Py_CLEAR(f->f_back); } #endif } else { __Pyx_Coroutine_ExceptionClear(self); } return retval; } static CYTHON_INLINE PyObject *__Pyx_Coroutine_MethodReturn(PyObject *retval) { if (unlikely(!retval && !PyErr_Occurred())) { PyErr_SetNone(PyExc_StopIteration); } return retval; } static CYTHON_INLINE PyObject *__Pyx_Coroutine_FinishDelegation(__pyx_CoroutineObject *gen) { PyObject *ret; PyObject *val = NULL; __Pyx_Coroutine_Undelegate(gen); __Pyx_PyGen_FetchStopIterationValue(&val); ret = __Pyx_Coroutine_SendEx(gen, val); Py_XDECREF(val); return ret; } static PyObject *__Pyx_Coroutine_Send(PyObject *self, PyObject *value) { PyObject *retval; __pyx_CoroutineObject *gen = (__pyx_CoroutineObject*) self; PyObject *yf = gen->yieldfrom; if (unlikely(__Pyx_Coroutine_CheckRunning(gen))) return NULL; if (yf) { PyObject *ret; gen->is_running = 1; #ifdef __Pyx_Generator_USED if (__Pyx_Generator_CheckExact(yf)) { ret = __Pyx_Coroutine_Send(yf, value); } else #endif #ifdef __Pyx_Coroutine_USED if (__Pyx_Coroutine_CheckExact(yf)) { ret = __Pyx_Coroutine_Send(yf, value); } else #endif { if (value == Py_None) ret = Py_TYPE(yf)->tp_iternext(yf); else ret = __Pyx_PyObject_CallMethod1(yf, __pyx_n_s_send, value); } gen->is_running = 0; if (likely(ret)) { return ret; } retval = __Pyx_Coroutine_FinishDelegation(gen); } else { retval = __Pyx_Coroutine_SendEx(gen, value); } return __Pyx_Coroutine_MethodReturn(retval); } static int __Pyx_Coroutine_CloseIter(__pyx_CoroutineObject *gen, PyObject *yf) { PyObject *retval = NULL; int err = 0; #ifdef __Pyx_Generator_USED if (__Pyx_Generator_CheckExact(yf)) { retval = __Pyx_Coroutine_Close(yf); if (!retval) return -1; } else #endif #ifdef __Pyx_Coroutine_USED if (__Pyx_Coroutine_CheckExact(yf)) { retval = __Pyx_Coroutine_Close(yf); if (!retval) return -1; } else #endif { PyObject *meth; gen->is_running = 1; meth = __Pyx_PyObject_GetAttrStr(yf, __pyx_n_s_close); if (unlikely(!meth)) { if (!PyErr_ExceptionMatches(PyExc_AttributeError)) { PyErr_WriteUnraisable(yf); } PyErr_Clear(); } else { retval = PyObject_CallFunction(meth, NULL); Py_DECREF(meth); if (!retval) err = -1; } gen->is_running = 0; } Py_XDECREF(retval); return err; } static PyObject *__Pyx_Generator_Next(PyObject *self) { __pyx_CoroutineObject *gen = (__pyx_CoroutineObject*) self; PyObject *yf = gen->yieldfrom; if (unlikely(__Pyx_Coroutine_CheckRunning(gen))) return NULL; if (yf) { PyObject *ret; gen->is_running = 1; #ifdef __Pyx_Generator_USED if (__Pyx_Generator_CheckExact(yf)) { ret = __Pyx_Generator_Next(yf); } else #endif ret = Py_TYPE(yf)->tp_iternext(yf); gen->is_running = 0; if (likely(ret)) { return ret; } return __Pyx_Coroutine_FinishDelegation(gen); } return __Pyx_Coroutine_SendEx(gen, Py_None); } static PyObject *__Pyx_Coroutine_Close(PyObject *self) { __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self; PyObject *retval, *raised_exception; PyObject *yf = gen->yieldfrom; int err = 0; if (unlikely(__Pyx_Coroutine_CheckRunning(gen))) return NULL; if (yf) { Py_INCREF(yf); err = __Pyx_Coroutine_CloseIter(gen, yf); __Pyx_Coroutine_Undelegate(gen); Py_DECREF(yf); } if (err == 0) PyErr_SetNone(PyExc_GeneratorExit); retval = __Pyx_Coroutine_SendEx(gen, NULL); if (retval) { Py_DECREF(retval); PyErr_SetString(PyExc_RuntimeError, "generator ignored GeneratorExit"); return NULL; } raised_exception = PyErr_Occurred(); if (!raised_exception || raised_exception == PyExc_StopIteration || raised_exception == PyExc_GeneratorExit || PyErr_GivenExceptionMatches(raised_exception, PyExc_GeneratorExit) || PyErr_GivenExceptionMatches(raised_exception, PyExc_StopIteration)) { if (raised_exception) PyErr_Clear(); Py_INCREF(Py_None); return Py_None; } return NULL; } static PyObject *__Pyx_Coroutine_Throw(PyObject *self, PyObject *args) { __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self; PyObject *typ; PyObject *tb = NULL; PyObject *val = NULL; PyObject *yf = gen->yieldfrom; if (!PyArg_UnpackTuple(args, (char *)"throw", 1, 3, &typ, &val, &tb)) return NULL; if (unlikely(__Pyx_Coroutine_CheckRunning(gen))) return NULL; if (yf) { PyObject *ret; Py_INCREF(yf); if (PyErr_GivenExceptionMatches(typ, PyExc_GeneratorExit)) { int err = __Pyx_Coroutine_CloseIter(gen, yf); Py_DECREF(yf); __Pyx_Coroutine_Undelegate(gen); if (err < 0) return __Pyx_Coroutine_MethodReturn(__Pyx_Coroutine_SendEx(gen, NULL)); goto throw_here; } gen->is_running = 1; #ifdef __Pyx_Generator_USED if (__Pyx_Generator_CheckExact(yf)) { ret = __Pyx_Coroutine_Throw(yf, args); } else #endif #ifdef __Pyx_Coroutine_USED if (__Pyx_Coroutine_CheckExact(yf)) { ret = __Pyx_Coroutine_Throw(yf, args); } else #endif { PyObject *meth = __Pyx_PyObject_GetAttrStr(yf, __pyx_n_s_throw); if (unlikely(!meth)) { Py_DECREF(yf); if (!PyErr_ExceptionMatches(PyExc_AttributeError)) { gen->is_running = 0; return NULL; } PyErr_Clear(); __Pyx_Coroutine_Undelegate(gen); gen->is_running = 0; goto throw_here; } ret = PyObject_CallObject(meth, args); Py_DECREF(meth); } gen->is_running = 0; Py_DECREF(yf); if (!ret) { ret = __Pyx_Coroutine_FinishDelegation(gen); } return __Pyx_Coroutine_MethodReturn(ret); } throw_here: __Pyx_Raise(typ, val, tb, NULL); return __Pyx_Coroutine_MethodReturn(__Pyx_Coroutine_SendEx(gen, NULL)); } static int __Pyx_Coroutine_traverse(PyObject *self, visitproc visit, void *arg) { __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self; Py_VISIT(gen->closure); Py_VISIT(gen->classobj); Py_VISIT(gen->yieldfrom); Py_VISIT(gen->exc_type); Py_VISIT(gen->exc_value); Py_VISIT(gen->exc_traceback); return 0; } static int __Pyx_Coroutine_clear(PyObject *self) { __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self; Py_CLEAR(gen->closure); Py_CLEAR(gen->classobj); Py_CLEAR(gen->yieldfrom); Py_CLEAR(gen->exc_type); Py_CLEAR(gen->exc_value); Py_CLEAR(gen->exc_traceback); Py_CLEAR(gen->gi_name); Py_CLEAR(gen->gi_qualname); return 0; } static void __Pyx_Coroutine_dealloc(PyObject *self) { __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self; PyObject_GC_UnTrack(gen); if (gen->gi_weakreflist != NULL) PyObject_ClearWeakRefs(self); if (gen->resume_label > 0) { PyObject_GC_Track(self); #if PY_VERSION_HEX >= 0x030400a1 if (PyObject_CallFinalizerFromDealloc(self)) #else Py_TYPE(gen)->tp_del(self); if (self->ob_refcnt > 0) #endif { return; } PyObject_GC_UnTrack(self); } __Pyx_Coroutine_clear(self); PyObject_GC_Del(gen); } static void __Pyx_Coroutine_del(PyObject *self) { PyObject *res; PyObject *error_type, *error_value, *error_traceback; __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self; __Pyx_PyThreadState_declare if (gen->resume_label <= 0) return ; #if PY_VERSION_HEX < 0x030400a1 assert(self->ob_refcnt == 0); self->ob_refcnt = 1; #endif __Pyx_PyThreadState_assign __Pyx_ErrFetch(&error_type, &error_value, &error_traceback); res = __Pyx_Coroutine_Close(self); if (res == NULL) PyErr_WriteUnraisable(self); else Py_DECREF(res); __Pyx_ErrRestore(error_type, error_value, error_traceback); #if PY_VERSION_HEX < 0x030400a1 assert(self->ob_refcnt > 0); if (--self->ob_refcnt == 0) { return; } { Py_ssize_t refcnt = self->ob_refcnt; _Py_NewReference(self); self->ob_refcnt = refcnt; } #if CYTHON_COMPILING_IN_CPYTHON assert(PyType_IS_GC(self->ob_type) && _Py_AS_GC(self)->gc.gc_refs != _PyGC_REFS_UNTRACKED); _Py_DEC_REFTOTAL; #endif #ifdef COUNT_ALLOCS --Py_TYPE(self)->tp_frees; --Py_TYPE(self)->tp_allocs; #endif #endif } static PyObject * __Pyx_Coroutine_get_name(__pyx_CoroutineObject *self) { PyObject *name = self->gi_name; if (unlikely(!name)) name = Py_None; Py_INCREF(name); return name; } static int __Pyx_Coroutine_set_name(__pyx_CoroutineObject *self, PyObject *value) { PyObject *tmp; #if PY_MAJOR_VERSION >= 3 if (unlikely(value == NULL || !PyUnicode_Check(value))) { #else if (unlikely(value == NULL || !PyString_Check(value))) { #endif PyErr_SetString(PyExc_TypeError, "__name__ must be set to a string object"); return -1; } tmp = self->gi_name; Py_INCREF(value); self->gi_name = value; Py_XDECREF(tmp); return 0; } static PyObject * __Pyx_Coroutine_get_qualname(__pyx_CoroutineObject *self) { PyObject *name = self->gi_qualname; if (unlikely(!name)) name = Py_None; Py_INCREF(name); return name; } static int __Pyx_Coroutine_set_qualname(__pyx_CoroutineObject *self, PyObject *value) { PyObject *tmp; #if PY_MAJOR_VERSION >= 3 if (unlikely(value == NULL || !PyUnicode_Check(value))) { #else if (unlikely(value == NULL || !PyString_Check(value))) { #endif PyErr_SetString(PyExc_TypeError, "__qualname__ must be set to a string object"); return -1; } tmp = self->gi_qualname; Py_INCREF(value); self->gi_qualname = value; Py_XDECREF(tmp); return 0; } static __pyx_CoroutineObject *__Pyx__Coroutine_New( PyTypeObject* type, __pyx_coroutine_body_t body, PyObject *closure, PyObject *name, PyObject *qualname, PyObject *module_name) { __pyx_CoroutineObject *gen = PyObject_GC_New(__pyx_CoroutineObject, type); if (gen == NULL) return NULL; gen->body = body; gen->closure = closure; Py_XINCREF(closure); gen->is_running = 0; gen->resume_label = 0; gen->classobj = NULL; gen->yieldfrom = NULL; gen->exc_type = NULL; gen->exc_value = NULL; gen->exc_traceback = NULL; gen->gi_weakreflist = NULL; Py_XINCREF(qualname); gen->gi_qualname = qualname; Py_XINCREF(name); gen->gi_name = name; Py_XINCREF(module_name); gen->gi_modulename = module_name; PyObject_GC_Track(gen); return gen; } /* PatchModuleWithCoroutine */ static PyObject* __Pyx_Coroutine_patch_module(PyObject* module, const char* py_code) { #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) int result; PyObject *globals, *result_obj; globals = PyDict_New(); if (unlikely(!globals)) goto ignore; result = PyDict_SetItemString(globals, "_cython_coroutine_type", #ifdef __Pyx_Coroutine_USED (PyObject*)__pyx_CoroutineType); #else Py_None); #endif if (unlikely(result < 0)) goto ignore; result = PyDict_SetItemString(globals, "_cython_generator_type", #ifdef __Pyx_Generator_USED (PyObject*)__pyx_GeneratorType); #else Py_None); #endif if (unlikely(result < 0)) goto ignore; if (unlikely(PyDict_SetItemString(globals, "_module", module) < 0)) goto ignore; if (unlikely(PyDict_SetItemString(globals, "__builtins__", __pyx_b) < 0)) goto ignore; result_obj = PyRun_String(py_code, Py_file_input, globals, globals); if (unlikely(!result_obj)) goto ignore; Py_DECREF(result_obj); Py_DECREF(globals); return module; ignore: Py_XDECREF(globals); PyErr_WriteUnraisable(module); if (unlikely(PyErr_WarnEx(PyExc_RuntimeWarning, "Cython module failed to patch module with custom type", 1) < 0)) { Py_DECREF(module); module = NULL; } #else py_code++; #endif return module; } /* PatchGeneratorABC */ #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) static PyObject* __Pyx_patch_abc_module(PyObject *module); static PyObject* __Pyx_patch_abc_module(PyObject *module) { module = __Pyx_Coroutine_patch_module( module, "" "if _cython_generator_type is not None:\n" " try: Generator = _module.Generator\n" " except AttributeError: pass\n" " else: Generator.register(_cython_generator_type)\n" "if _cython_coroutine_type is not None:\n" " try: Coroutine = _module.Coroutine\n" " except AttributeError: pass\n" " else: Coroutine.register(_cython_coroutine_type)\n" ); return module; } #endif static int __Pyx_patch_abc(void) { #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) static int abc_patched = 0; if (!abc_patched) { PyObject *module; module = PyImport_ImportModule((PY_VERSION_HEX >= 0x03030000) ? "collections.abc" : "collections"); if (!module) { PyErr_WriteUnraisable(NULL); if (unlikely(PyErr_WarnEx(PyExc_RuntimeWarning, ((PY_VERSION_HEX >= 0x03030000) ? "Cython module failed to register with collections.abc module" : "Cython module failed to register with collections module"), 1) < 0)) { return -1; } } else { module = __Pyx_patch_abc_module(module); abc_patched = 1; if (unlikely(!module)) return -1; Py_DECREF(module); } module = PyImport_ImportModule("backports_abc"); if (module) { module = __Pyx_patch_abc_module(module); Py_XDECREF(module); } if (!module) { PyErr_Clear(); } } #else if (0) __Pyx_Coroutine_patch_module(NULL, NULL); #endif return 0; } /* Generator */ static PyMethodDef __pyx_Generator_methods[] = { {"send", (PyCFunction) __Pyx_Coroutine_Send, METH_O, (char*) PyDoc_STR("send(arg) -> send 'arg' into generator,\nreturn next yielded value or raise StopIteration.")}, {"throw", (PyCFunction) __Pyx_Coroutine_Throw, METH_VARARGS, (char*) PyDoc_STR("throw(typ[,val[,tb]]) -> raise exception in generator,\nreturn next yielded value or raise StopIteration.")}, {"close", (PyCFunction) __Pyx_Coroutine_Close, METH_NOARGS, (char*) PyDoc_STR("close() -> raise GeneratorExit inside generator.")}, {0, 0, 0, 0} }; static PyMemberDef __pyx_Generator_memberlist[] = { {(char *) "gi_running", T_BOOL, offsetof(__pyx_CoroutineObject, is_running), READONLY, NULL}, {(char*) "gi_yieldfrom", T_OBJECT, offsetof(__pyx_CoroutineObject, yieldfrom), READONLY, (char*) PyDoc_STR("object being iterated by 'yield from', or None")}, {0, 0, 0, 0, 0} }; static PyGetSetDef __pyx_Generator_getsets[] = { {(char *) "__name__", (getter)__Pyx_Coroutine_get_name, (setter)__Pyx_Coroutine_set_name, (char*) PyDoc_STR("name of the generator"), 0}, {(char *) "__qualname__", (getter)__Pyx_Coroutine_get_qualname, (setter)__Pyx_Coroutine_set_qualname, (char*) PyDoc_STR("qualified name of the generator"), 0}, {0, 0, 0, 0, 0} }; static PyTypeObject __pyx_GeneratorType_type = { PyVarObject_HEAD_INIT(0, 0) "generator", sizeof(__pyx_CoroutineObject), 0, (destructor) __Pyx_Coroutine_dealloc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_HAVE_FINALIZE, 0, (traverseproc) __Pyx_Coroutine_traverse, 0, 0, offsetof(__pyx_CoroutineObject, gi_weakreflist), 0, (iternextfunc) __Pyx_Generator_Next, __pyx_Generator_methods, __pyx_Generator_memberlist, __pyx_Generator_getsets, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, #if PY_VERSION_HEX >= 0x030400a1 0, #else __Pyx_Coroutine_del, #endif 0, #if PY_VERSION_HEX >= 0x030400a1 __Pyx_Coroutine_del, #endif }; static int __pyx_Generator_init(void) { __pyx_GeneratorType_type.tp_getattro = PyObject_GenericGetAttr; __pyx_GeneratorType_type.tp_iter = PyObject_SelfIter; __pyx_GeneratorType = __Pyx_FetchCommonType(&__pyx_GeneratorType_type); if (unlikely(!__pyx_GeneratorType)) { return -1; } return 0; } /* CheckBinaryVersion */ static int __Pyx_check_binary_version(void) { char ctversion[4], rtversion[4]; PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION); PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion()); if (ctversion[0] != rtversion[0] || ctversion[2] != rtversion[2]) { char message[200]; PyOS_snprintf(message, sizeof(message), "compiletime version %s of module '%.100s' " "does not match runtime version %s", ctversion, __Pyx_MODULE_NAME, rtversion); return PyErr_WarnEx(NULL, message, 1); } return 0; } /* ModuleImport */ #ifndef __PYX_HAVE_RT_ImportModule #define __PYX_HAVE_RT_ImportModule static PyObject *__Pyx_ImportModule(const char *name) { PyObject *py_name = 0; PyObject *py_module = 0; py_name = __Pyx_PyIdentifier_FromString(name); if (!py_name) goto bad; py_module = PyImport_Import(py_name); Py_DECREF(py_name); return py_module; bad: Py_XDECREF(py_name); return 0; } #endif /* FunctionImport */ #ifndef __PYX_HAVE_RT_ImportFunction #define __PYX_HAVE_RT_ImportFunction static int __Pyx_ImportFunction(PyObject *module, const char *funcname, void (**f)(void), const char *sig) { PyObject *d = 0; PyObject *cobj = 0; union { void (*fp)(void); void *p; } tmp; d = PyObject_GetAttrString(module, (char *)"__pyx_capi__"); if (!d) goto bad; cobj = PyDict_GetItemString(d, funcname); if (!cobj) { PyErr_Format(PyExc_ImportError, "%.200s does not export expected C function %.200s", PyModule_GetName(module), funcname); goto bad; } #if PY_VERSION_HEX >= 0x02070000 if (!PyCapsule_IsValid(cobj, sig)) { PyErr_Format(PyExc_TypeError, "C function %.200s.%.200s has wrong signature (expected %.500s, got %.500s)", PyModule_GetName(module), funcname, sig, PyCapsule_GetName(cobj)); goto bad; } tmp.p = PyCapsule_GetPointer(cobj, sig); #else {const char *desc, *s1, *s2; desc = (const char *)PyCObject_GetDesc(cobj); if (!desc) goto bad; s1 = desc; s2 = sig; while (*s1 != '\0' && *s1 == *s2) { s1++; s2++; } if (*s1 != *s2) { PyErr_Format(PyExc_TypeError, "C function %.200s.%.200s has wrong signature (expected %.500s, got %.500s)", PyModule_GetName(module), funcname, sig, desc); goto bad; } tmp.p = PyCObject_AsVoidPtr(cobj);} #endif *f = tmp.fp; if (!(*f)) goto bad; Py_DECREF(d); return 0; bad: Py_XDECREF(d); return -1; } #endif /* InitStrings */ static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) { while (t->p) { #if PY_MAJOR_VERSION < 3 if (t->is_unicode) { *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL); } else if (t->intern) { *t->p = PyString_InternFromString(t->s); } else { *t->p = PyString_FromStringAndSize(t->s, t->n - 1); } #else if (t->is_unicode | t->is_str) { if (t->intern) { *t->p = PyUnicode_InternFromString(t->s); } else if (t->encoding) { *t->p = PyUnicode_Decode(t->s, t->n - 1, t->encoding, NULL); } else { *t->p = PyUnicode_FromStringAndSize(t->s, t->n - 1); } } else { *t->p = PyBytes_FromStringAndSize(t->s, t->n - 1); } #endif if (!*t->p) return -1; ++t; } return 0; } static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char* c_str) { return __Pyx_PyUnicode_FromStringAndSize(c_str, (Py_ssize_t)strlen(c_str)); } static CYTHON_INLINE char* __Pyx_PyObject_AsString(PyObject* o) { Py_ssize_t ignore; return __Pyx_PyObject_AsStringAndSize(o, &ignore); } static CYTHON_INLINE char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_t *length) { #if CYTHON_COMPILING_IN_CPYTHON && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT) if ( #if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII __Pyx_sys_getdefaultencoding_not_ascii && #endif PyUnicode_Check(o)) { #if PY_VERSION_HEX < 0x03030000 char* defenc_c; PyObject* defenc = _PyUnicode_AsDefaultEncodedString(o, NULL); if (!defenc) return NULL; defenc_c = PyBytes_AS_STRING(defenc); #if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII { char* end = defenc_c + PyBytes_GET_SIZE(defenc); char* c; for (c = defenc_c; c < end; c++) { if ((unsigned char) (*c) >= 128) { PyUnicode_AsASCIIString(o); return NULL; } } } #endif *length = PyBytes_GET_SIZE(defenc); return defenc_c; #else if (__Pyx_PyUnicode_READY(o) == -1) return NULL; #if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII if (PyUnicode_IS_ASCII(o)) { *length = PyUnicode_GET_LENGTH(o); return PyUnicode_AsUTF8(o); } else { PyUnicode_AsASCIIString(o); return NULL; } #else return PyUnicode_AsUTF8AndSize(o, length); #endif #endif } else #endif #if (!CYTHON_COMPILING_IN_PYPY) || (defined(PyByteArray_AS_STRING) && defined(PyByteArray_GET_SIZE)) if (PyByteArray_Check(o)) { *length = PyByteArray_GET_SIZE(o); return PyByteArray_AS_STRING(o); } else #endif { char* result; int r = PyBytes_AsStringAndSize(o, &result, length); if (unlikely(r < 0)) { return NULL; } else { return result; } } } static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) { int is_true = x == Py_True; if (is_true | (x == Py_False) | (x == Py_None)) return is_true; else return PyObject_IsTrue(x); } static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x) { #if CYTHON_USE_TYPE_SLOTS PyNumberMethods *m; #endif const char *name = NULL; PyObject *res = NULL; #if PY_MAJOR_VERSION < 3 if (PyInt_Check(x) || PyLong_Check(x)) #else if (PyLong_Check(x)) #endif return __Pyx_NewRef(x); #if CYTHON_USE_TYPE_SLOTS m = Py_TYPE(x)->tp_as_number; #if PY_MAJOR_VERSION < 3 if (m && m->nb_int) { name = "int"; res = PyNumber_Int(x); } else if (m && m->nb_long) { name = "long"; res = PyNumber_Long(x); } #else if (m && m->nb_int) { name = "int"; res = PyNumber_Long(x); } #endif #else res = PyNumber_Int(x); #endif if (res) { #if PY_MAJOR_VERSION < 3 if (!PyInt_Check(res) && !PyLong_Check(res)) { #else if (!PyLong_Check(res)) { #endif PyErr_Format(PyExc_TypeError, "__%.4s__ returned non-%.4s (type %.200s)", name, name, Py_TYPE(res)->tp_name); Py_DECREF(res); return NULL; } } else if (!PyErr_Occurred()) { PyErr_SetString(PyExc_TypeError, "an integer is required"); } return res; } static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) { Py_ssize_t ival; PyObject *x; #if PY_MAJOR_VERSION < 3 if (likely(PyInt_CheckExact(b))) { if (sizeof(Py_ssize_t) >= sizeof(long)) return PyInt_AS_LONG(b); else return PyInt_AsSsize_t(x); } #endif if (likely(PyLong_CheckExact(b))) { #if CYTHON_USE_PYLONG_INTERNALS const digit* digits = ((PyLongObject*)b)->ob_digit; const Py_ssize_t size = Py_SIZE(b); if (likely(__Pyx_sst_abs(size) <= 1)) { ival = likely(size) ? digits[0] : 0; if (size == -1) ival = -ival; return ival; } else { switch (size) { case 2: if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { return (Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); } break; case -2: if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { return -(Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); } break; case 3: if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { return (Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); } break; case -3: if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { return -(Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); } break; case 4: if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { return (Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); } break; case -4: if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { return -(Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); } break; } } #endif return PyLong_AsSsize_t(b); } x = PyNumber_Index(b); if (!x) return -1; ival = PyInt_AsSsize_t(x); Py_DECREF(x); return ival; } static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) { return PyInt_FromSize_t(ival); } #endif /* Py_PYTHON_H */ pybik-3.0/csrc/_qtui__moc.cpp0000644000175000017500000001470513173054541016426 0ustar barccbarcc00000000000000/**************************************************************************** ** Meta object code from reading C++ file '_qtui__moc.h' ** ** Created by: The Qt Meta Object Compiler version 67 (Qt 5.7.1) ** ** WARNING! All changes made in this file will be lost! *****************************************************************************/ #include "_qtui__moc.h" #include #include #if !defined(Q_MOC_OUTPUT_REVISION) #error "The header file '_qtui__moc.h' doesn't include ." #elif Q_MOC_OUTPUT_REVISION != 67 #error "This file was generated using the moc from 5.7.1. It" #error "cannot be used with the include files from this version of Qt." #error "(The moc has changed too much.)" #endif QT_BEGIN_MOC_NAMESPACE struct qt_meta_stringdata_ShortcutEditor_t { QByteArrayData data[3]; char stringdata0[28]; }; #define QT_MOC_LITERAL(idx, ofs, len) \ Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ qptrdiff(offsetof(qt_meta_stringdata_ShortcutEditor_t, stringdata0) + ofs \ - idx * sizeof(QByteArrayData)) \ ) static const qt_meta_stringdata_ShortcutEditor_t qt_meta_stringdata_ShortcutEditor = { { QT_MOC_LITERAL(0, 0, 14), // "ShortcutEditor" QT_MOC_LITERAL(1, 15, 11), // "key_pressed" QT_MOC_LITERAL(2, 27, 0) // "" }, "ShortcutEditor\0key_pressed\0" }; #undef QT_MOC_LITERAL static const uint qt_meta_data_ShortcutEditor[] = { // content: 7, // revision 0, // classname 0, 0, // classinfo 1, 14, // methods 0, 0, // properties 0, 0, // enums/sets 0, 0, // constructors 0, // flags 1, // signalCount // signals: name, argc, parameters, tag, flags 1, 0, 19, 2, 0x06 /* Public */, // signals: parameters QMetaType::Void, 0 // eod }; void ShortcutEditor::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) { if (_c == QMetaObject::InvokeMetaMethod) { ShortcutEditor *_t = static_cast(_o); Q_UNUSED(_t) switch (_id) { case 0: _t->key_pressed(); break; default: ; } } else if (_c == QMetaObject::IndexOfMethod) { int *result = reinterpret_cast(_a[0]); void **func = reinterpret_cast(_a[1]); { typedef void (ShortcutEditor::*_t)(); if (*reinterpret_cast<_t *>(func) == static_cast<_t>(&ShortcutEditor::key_pressed)) { *result = 0; return; } } } Q_UNUSED(_a); } const QMetaObject ShortcutEditor::staticMetaObject = { { &QLabel::staticMetaObject, qt_meta_stringdata_ShortcutEditor.data, qt_meta_data_ShortcutEditor, qt_static_metacall, Q_NULLPTR, Q_NULLPTR} }; const QMetaObject *ShortcutEditor::metaObject() const { return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; } void *ShortcutEditor::qt_metacast(const char *_clname) { if (!_clname) return Q_NULLPTR; if (!strcmp(_clname, qt_meta_stringdata_ShortcutEditor.stringdata0)) return static_cast(const_cast< ShortcutEditor*>(this)); return QLabel::qt_metacast(_clname); } int ShortcutEditor::qt_metacall(QMetaObject::Call _c, int _id, void **_a) { _id = QLabel::qt_metacall(_c, _id, _a); if (_id < 0) return _id; if (_c == QMetaObject::InvokeMetaMethod) { if (_id < 1) qt_static_metacall(this, _c, _id, _a); _id -= 1; } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) { if (_id < 1) *reinterpret_cast(_a[0]) = -1; _id -= 1; } return _id; } // SIGNAL 0 void ShortcutEditor::key_pressed() { QMetaObject::activate(this, &staticMetaObject, 0, Q_NULLPTR); } struct qt_meta_stringdata_ShortcutDelegate_t { QByteArrayData data[3]; char stringdata0[40]; }; #define QT_MOC_LITERAL(idx, ofs, len) \ Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ qptrdiff(offsetof(qt_meta_stringdata_ShortcutDelegate_t, stringdata0) + ofs \ - idx * sizeof(QByteArrayData)) \ ) static const qt_meta_stringdata_ShortcutDelegate_t qt_meta_stringdata_ShortcutDelegate = { { QT_MOC_LITERAL(0, 0, 16), // "ShortcutDelegate" QT_MOC_LITERAL(1, 17, 21), // "on_editor_key_pressed" QT_MOC_LITERAL(2, 39, 0) // "" }, "ShortcutDelegate\0on_editor_key_pressed\0" "" }; #undef QT_MOC_LITERAL static const uint qt_meta_data_ShortcutDelegate[] = { // content: 7, // revision 0, // classname 0, 0, // classinfo 1, 14, // methods 0, 0, // properties 0, 0, // enums/sets 0, 0, // constructors 0, // flags 0, // signalCount // methods: name, argc, parameters, tag, flags 1, 0, 19, 2, 0x02 /* Public */, // methods: parameters QMetaType::Void, 0 // eod }; void ShortcutDelegate::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) { if (_c == QMetaObject::InvokeMetaMethod) { ShortcutDelegate *_t = static_cast(_o); Q_UNUSED(_t) switch (_id) { case 0: _t->on_editor_key_pressed(); break; default: ; } } Q_UNUSED(_a); } const QMetaObject ShortcutDelegate::staticMetaObject = { { &QStyledItemDelegate::staticMetaObject, qt_meta_stringdata_ShortcutDelegate.data, qt_meta_data_ShortcutDelegate, qt_static_metacall, Q_NULLPTR, Q_NULLPTR} }; const QMetaObject *ShortcutDelegate::metaObject() const { return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; } void *ShortcutDelegate::qt_metacast(const char *_clname) { if (!_clname) return Q_NULLPTR; if (!strcmp(_clname, qt_meta_stringdata_ShortcutDelegate.stringdata0)) return static_cast(const_cast< ShortcutDelegate*>(this)); return QStyledItemDelegate::qt_metacast(_clname); } int ShortcutDelegate::qt_metacall(QMetaObject::Call _c, int _id, void **_a) { _id = QStyledItemDelegate::qt_metacall(_c, _id, _a); if (_id < 0) return _id; if (_c == QMetaObject::InvokeMetaMethod) { if (_id < 1) qt_static_metacall(this, _c, _id, _a); _id -= 1; } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) { if (_id < 1) *reinterpret_cast(_a[0]) = -1; _id -= 1; } return _id; } QT_END_MOC_NAMESPACE pybik-3.0/csrc/_qtui__moc.h0000644000175000017500000001573413173054541016076 0ustar barccbarcc00000000000000//generated from: build/temp.linux-x86_64-3.5/pybiklib/ext/qtui_.py #include //line 31 QString gettext_translate(const char *text, const char *disambiguation); //line 32 #include "../../data/ui/qt/main.h" //line 33 #include "../../data/ui/qt/preferences.h" //line 34 #include "../../data/ui/qt/help.h" //line 35 #include "../../data/ui/qt/about.h" //line 36 #include //line 37 #include //line 38 #include //line 39 #include //line 40 #include //line 41 #include //line 42 #include //line 43 #include //line 44 #include //line 45 #include //line 46 #include //line 47 #include //line 48 #include //line 49 #include //line 50 #include //line 51 class ShortcutEditor : public QLabel //line 89 { //line 89 Q_OBJECT //line 89 public: //line 89 QString *key; //line 91 ShortcutEditor(QWidget *parent); //line 94 Q_SIGNAL void key_pressed(); //line 101 void keyPressEvent(QKeyEvent *event); //line 104 }; //line 124 class ShortcutDelegate : public QStyledItemDelegate //line 126 { //line 126 Q_OBJECT //line 126 public: //line 126 ShortcutDelegate(QObject *parent) : QStyledItemDelegate(parent) {} //line 128 QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const; //line 131 void setEditorData(QWidget *editor, const QModelIndex &index) const {} //line 138 void setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const; //line 141 Q_INVOKABLE void on_editor_key_pressed(); //line 151 }; //line 157 class ColorIconEngine : public QIconEngine //line 159 { //line 159 public: //line 159 QString color; //line 161 ColorIconEngine() : QIconEngine(), color(QStringLiteral("black")) {} //line 163 void paint(QPainter *painter, const QRect &rect, QIcon::Mode mode, QIcon::State state); //line 166 ColorIconEngine *clone() const; //line 169 }; //line 175 class UIContainer //line 178 { //line 178 public: //line 178 Ui::MainWindow ui_main; //line 179 QLabel *label_selectmodel; //line 180 int active_plugin_group; //line 181 Ui::DialogPreferences ui_pref; //line 182 QStandardItemModel *liststore_movekeys; //line 183 QStandardItemModel *liststore_faces; //line 184 int liststore_faces_width; //line 185 ColorIconEngine *iconengine_color; //line 186 ColorIconEngine *iconengine_background_color; //line 187 Ui::DialogHelp ui_help; //line 188 Ui::AboutDialog ui_about; //line 189 int index_tab_about; //line 190 int index_tab_license; //line 191 QScrollBar *scrollbar; //line 192 QPropertyAnimation animation; //line 193 void setupUi_main(QMainWindow *window, const QIcon &icon1, const QIcon &icon2, const QIcon &icon3, const QKeySequence &key1, const QKeySequence &key2); //line 196 void disable_tooltips(); //line 316 void set_shortcuts(const QKeySequence &key1, const QKeySequence &key2, const QKeySequence &key3, const QKeySequence &key4); //line 329 void add_widgets(QMainWindow *window, QLineEdit *edit, QOpenGLWidget *drawing); //line 337 void set_toolbar_visible(bool visible); //line 350 void set_frame_editbar_visible(bool visible); //line 353 void set_statusbar_visible(bool visible); //line 356 void hide_controls(); //line 359 void set_visible(bool debug_text_visible, bool editbar_visible, bool statusbar_visible); //line 369 void get_splitter_sizes(int &s1, int &s2); //line 379 void set_splitter_sizes(int s1, int s2); //line 386 void splitter_update_minimumsize(); //line 394 void set_debug_text(const QString &text); //line 407 void set_toolbar_state(int a, int b, int c, int d, int e); //line 411 void clear_sidepane(); //line 428 QPushButton *create_sidepane_button(const QString &text); //line 436 QTreeView *create_sidepane_treeview(QStandardItemModel *treestore, int i); //line 446 void set_active_plugin_group(int i); //line 461 void set_active_plugin_group_by_obj(QObject *obj); //line 474 int get_plugin_group_count(); //line 480 QModelIndex root_index(int i); //line 483 void hide_row(int i, bool hide); //line 486 void set_row_hidden(int i, int row, const QModelIndex &index, bool hide); //line 497 int splitter_pos(); //line 500 // #### //line 503 void setupUi_pref(QDialog *window, int speed, int speed_min, int speed_max, int mirror_min, int mirror_max, QStandardItemModel *_movekeys); //line 505 void preferences_block_signals(bool block); //line 559 void combobox_add_shaderitem(const QString &name, const QString &nick); //line 566 void combobox_add_samplesitem(const QString &name, const QString &nick); //line 569 void add_movekey_row(); //line 572 void remove_movekey_row(); //line 583 void add_liststore_faces_row(const QString &name, const QString &key); //line 589 void finalize_liststore_faces(QWidget *window); //line 600 QString get_liststore_faces_facekey(const QModelIndex &index); //line 611 void set_button_color(const QString &color); //line 614 QString color_dialog(QWidget *parent, const QString &color); //line 620 void set_imagemode(int imagemode); //line 630 void add_combobox_image_item(const QIcon &icon, const QString &text, const QString &filename); //line 638 void set_combobox_image(int index_icon, const QIcon &icon, int index); //line 641 void set_button_background_color(const QString &color); //line 648 void fill_page(QVariant items, const QString &title); //line 655 void set_page(int i); //line 670 void setupUi_help(QDialog *window, const QString &helptext); //line 678 void setupUi_about(QDialog *window); //line 685 void fill_header(const QString &fileName, const QString &appname, const QString &version, const QString &desc); //line 698 void fill_about_tab(const QString ©r, const QString &website, const QString &translators); //line 706 void fill_contribute_tab(const QString &contribute); //line 713 void fill_license_tab(const QString &license_short, bool license_notfound, const QString &license_full); //line 716 void tab_widget_currentChanged(int index); //line 725 void update_animation(bool first); //line 740 void event_filter_stop_animation(QEvent *event); //line 760 void show_full_license(bool local, const QUrl &url); //line 769 }; //line 778 QString mk_qstr(const char *pstr, int length); //line 782 pybik-3.0/csrc/about.h0000644000175000017500000002151613173054541015065 0ustar barccbarcc00000000000000/******************************************************************************** ** Form generated from reading UI file 'about.ui' ** ** Created by: Qt User Interface Compiler version 5.7.1 ** ** WARNING! All changes made in this file will be lost when recompiling UI file! ********************************************************************************/ #ifndef ABOUT_H #define ABOUT_H #include #include #include #include #include #include #include #include #include #include #include #include #include QT_BEGIN_NAMESPACE class Ui_AboutDialog { public: QVBoxLayout *verticalLayout_2; QHBoxLayout *horizontalLayout_2; QLabel *label_icon; QVBoxLayout *verticalLayout; QHBoxLayout *horizontalLayout; QLabel *label_appname; QLabel *label_version; QLabel *label_description; QTabWidget *tab_widget; QWidget *tab_about; QVBoxLayout *verticalLayout_4; QLabel *label_copyright; QLabel *label_website; QLabel *label_translators; QTextBrowser *text_translators; QWidget *tab_contribute; QVBoxLayout *verticalLayout_5; QLabel *label_contribute; QWidget *tab_license; QVBoxLayout *verticalLayout_3; QTextBrowser *text_license_short; QTextBrowser *text_license_full; QDialogButtonBox *buttonBox; void setupUi(QDialog *AboutDialog) { if (AboutDialog->objectName().isEmpty()) AboutDialog->setObjectName(QStringLiteral("AboutDialog")); AboutDialog->setWindowModality(Qt::ApplicationModal); verticalLayout_2 = new QVBoxLayout(AboutDialog); verticalLayout_2->setObjectName(QStringLiteral("verticalLayout_2")); horizontalLayout_2 = new QHBoxLayout(); horizontalLayout_2->setObjectName(QStringLiteral("horizontalLayout_2")); label_icon = new QLabel(AboutDialog); label_icon->setObjectName(QStringLiteral("label_icon")); label_icon->setText(QStringLiteral("icon")); label_icon->setAlignment(Qt::AlignCenter); horizontalLayout_2->addWidget(label_icon); verticalLayout = new QVBoxLayout(); verticalLayout->setObjectName(QStringLiteral("verticalLayout")); horizontalLayout = new QHBoxLayout(); horizontalLayout->setObjectName(QStringLiteral("horizontalLayout")); label_appname = new QLabel(AboutDialog); label_appname->setObjectName(QStringLiteral("label_appname")); QSizePolicy sizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); sizePolicy.setHorizontalStretch(1); sizePolicy.setVerticalStretch(0); sizePolicy.setHeightForWidth(label_appname->sizePolicy().hasHeightForWidth()); label_appname->setSizePolicy(sizePolicy); QFont font; font.setPointSize(16); font.setBold(true); font.setWeight(75); label_appname->setFont(font); label_appname->setText(QStringLiteral("appname")); label_appname->setTextFormat(Qt::PlainText); label_appname->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter); horizontalLayout->addWidget(label_appname); label_version = new QLabel(AboutDialog); label_version->setObjectName(QStringLiteral("label_version")); sizePolicy.setHeightForWidth(label_version->sizePolicy().hasHeightForWidth()); label_version->setSizePolicy(sizePolicy); label_version->setText(QStringLiteral("version")); label_version->setTextFormat(Qt::PlainText); horizontalLayout->addWidget(label_version); verticalLayout->addLayout(horizontalLayout); label_description = new QLabel(AboutDialog); label_description->setObjectName(QStringLiteral("label_description")); label_description->setText(QStringLiteral("description")); label_description->setTextFormat(Qt::PlainText); label_description->setAlignment(Qt::AlignCenter); label_description->setWordWrap(true); verticalLayout->addWidget(label_description); horizontalLayout_2->addLayout(verticalLayout); verticalLayout_2->addLayout(horizontalLayout_2); tab_widget = new QTabWidget(AboutDialog); tab_widget->setObjectName(QStringLiteral("tab_widget")); tab_about = new QWidget(); tab_about->setObjectName(QStringLiteral("tab_about")); verticalLayout_4 = new QVBoxLayout(tab_about); verticalLayout_4->setObjectName(QStringLiteral("verticalLayout_4")); label_copyright = new QLabel(tab_about); label_copyright->setObjectName(QStringLiteral("label_copyright")); label_copyright->setText(QStringLiteral("copyright")); label_copyright->setTextFormat(Qt::PlainText); label_copyright->setAlignment(Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter); verticalLayout_4->addWidget(label_copyright); label_website = new QLabel(tab_about); label_website->setObjectName(QStringLiteral("label_website")); label_website->setText(QStringLiteral("website")); label_website->setTextFormat(Qt::RichText); label_website->setOpenExternalLinks(true); verticalLayout_4->addWidget(label_website); label_translators = new QLabel(tab_about); label_translators->setObjectName(QStringLiteral("label_translators")); label_translators->setTextFormat(Qt::PlainText); verticalLayout_4->addWidget(label_translators); text_translators = new QTextBrowser(tab_about); text_translators->setObjectName(QStringLiteral("text_translators")); text_translators->setOpenLinks(false); verticalLayout_4->addWidget(text_translators); tab_widget->addTab(tab_about, QString()); tab_contribute = new QWidget(); tab_contribute->setObjectName(QStringLiteral("tab_contribute")); verticalLayout_5 = new QVBoxLayout(tab_contribute); verticalLayout_5->setObjectName(QStringLiteral("verticalLayout_5")); label_contribute = new QLabel(tab_contribute); label_contribute->setObjectName(QStringLiteral("label_contribute")); label_contribute->setTextFormat(Qt::RichText); label_contribute->setAlignment(Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop); label_contribute->setWordWrap(true); label_contribute->setOpenExternalLinks(true); verticalLayout_5->addWidget(label_contribute); tab_widget->addTab(tab_contribute, QString()); tab_license = new QWidget(); tab_license->setObjectName(QStringLiteral("tab_license")); verticalLayout_3 = new QVBoxLayout(tab_license); verticalLayout_3->setObjectName(QStringLiteral("verticalLayout_3")); text_license_short = new QTextBrowser(tab_license); text_license_short->setObjectName(QStringLiteral("text_license_short")); text_license_short->setReadOnly(true); text_license_short->setAcceptRichText(false); text_license_short->setOpenLinks(false); verticalLayout_3->addWidget(text_license_short); text_license_full = new QTextBrowser(tab_license); text_license_full->setObjectName(QStringLiteral("text_license_full")); text_license_full->setLineWrapMode(QTextEdit::NoWrap); text_license_full->setAcceptRichText(false); text_license_full->setOpenExternalLinks(true); verticalLayout_3->addWidget(text_license_full); tab_widget->addTab(tab_license, QString()); verticalLayout_2->addWidget(tab_widget); buttonBox = new QDialogButtonBox(AboutDialog); buttonBox->setObjectName(QStringLiteral("buttonBox")); buttonBox->setStandardButtons(QDialogButtonBox::Close); verticalLayout_2->addWidget(buttonBox); retranslateUi(AboutDialog); QObject::connect(buttonBox, SIGNAL(accepted()), AboutDialog, SLOT(accept())); QObject::connect(buttonBox, SIGNAL(rejected()), AboutDialog, SLOT(reject())); tab_widget->setCurrentIndex(0); QMetaObject::connectSlotsByName(AboutDialog); } // setupUi void retranslateUi(QDialog *AboutDialog) { AboutDialog->setWindowTitle(gettext_translate("About Pybik", Q_NULLPTR)); label_translators->setText(gettext_translate("Translators:", Q_NULLPTR)); tab_widget->setTabText(tab_widget->indexOf(tab_about), gettext_translate("About", Q_NULLPTR)); tab_widget->setTabText(tab_widget->indexOf(tab_contribute), gettext_translate("Contribute", Q_NULLPTR)); tab_widget->setTabText(tab_widget->indexOf(tab_license), gettext_translate("License", Q_NULLPTR)); } // retranslateUi }; namespace Ui { class AboutDialog: public Ui_AboutDialog {}; } // namespace Ui QT_END_NAMESPACE #endif // ABOUT_H pybik-3.0/csrc/_qtexec_.cpp0000644000175000017500000062243013173167603016103 0ustar barccbarcc00000000000000/* Generated by Cython 0.25.2 */ #define PY_SSIZE_T_CLEAN #include "Python.h" #ifndef Py_PYTHON_H #error Python headers needed to compile C extensions, please install development version of Python. #elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03020000) #error Cython requires Python 2.6+ or Python 3.2+. #else #define CYTHON_ABI "0_25_2" #include #ifndef offsetof #define offsetof(type, member) ( (size_t) & ((type*)0) -> member ) #endif #if !defined(WIN32) && !defined(MS_WINDOWS) #ifndef __stdcall #define __stdcall #endif #ifndef __cdecl #define __cdecl #endif #ifndef __fastcall #define __fastcall #endif #endif #ifndef DL_IMPORT #define DL_IMPORT(t) t #endif #ifndef DL_EXPORT #define DL_EXPORT(t) t #endif #ifndef HAVE_LONG_LONG #if PY_VERSION_HEX >= 0x03030000 || (PY_MAJOR_VERSION == 2 && PY_VERSION_HEX >= 0x02070000) #define HAVE_LONG_LONG #endif #endif #ifndef PY_LONG_LONG #define PY_LONG_LONG LONG_LONG #endif #ifndef Py_HUGE_VAL #define Py_HUGE_VAL HUGE_VAL #endif #ifdef PYPY_VERSION #define CYTHON_COMPILING_IN_PYPY 1 #define CYTHON_COMPILING_IN_PYSTON 0 #define CYTHON_COMPILING_IN_CPYTHON 0 #undef CYTHON_USE_TYPE_SLOTS #define CYTHON_USE_TYPE_SLOTS 0 #undef CYTHON_USE_ASYNC_SLOTS #define CYTHON_USE_ASYNC_SLOTS 0 #undef CYTHON_USE_PYLIST_INTERNALS #define CYTHON_USE_PYLIST_INTERNALS 0 #undef CYTHON_USE_UNICODE_INTERNALS #define CYTHON_USE_UNICODE_INTERNALS 0 #undef CYTHON_USE_UNICODE_WRITER #define CYTHON_USE_UNICODE_WRITER 0 #undef CYTHON_USE_PYLONG_INTERNALS #define CYTHON_USE_PYLONG_INTERNALS 0 #undef CYTHON_AVOID_BORROWED_REFS #define CYTHON_AVOID_BORROWED_REFS 1 #undef CYTHON_ASSUME_SAFE_MACROS #define CYTHON_ASSUME_SAFE_MACROS 0 #undef CYTHON_UNPACK_METHODS #define CYTHON_UNPACK_METHODS 0 #undef CYTHON_FAST_THREAD_STATE #define CYTHON_FAST_THREAD_STATE 0 #undef CYTHON_FAST_PYCALL #define CYTHON_FAST_PYCALL 0 #elif defined(PYSTON_VERSION) #define CYTHON_COMPILING_IN_PYPY 0 #define CYTHON_COMPILING_IN_PYSTON 1 #define CYTHON_COMPILING_IN_CPYTHON 0 #ifndef CYTHON_USE_TYPE_SLOTS #define CYTHON_USE_TYPE_SLOTS 1 #endif #undef CYTHON_USE_ASYNC_SLOTS #define CYTHON_USE_ASYNC_SLOTS 0 #undef CYTHON_USE_PYLIST_INTERNALS #define CYTHON_USE_PYLIST_INTERNALS 0 #ifndef CYTHON_USE_UNICODE_INTERNALS #define CYTHON_USE_UNICODE_INTERNALS 1 #endif #undef CYTHON_USE_UNICODE_WRITER #define CYTHON_USE_UNICODE_WRITER 0 #undef CYTHON_USE_PYLONG_INTERNALS #define CYTHON_USE_PYLONG_INTERNALS 0 #ifndef CYTHON_AVOID_BORROWED_REFS #define CYTHON_AVOID_BORROWED_REFS 0 #endif #ifndef CYTHON_ASSUME_SAFE_MACROS #define CYTHON_ASSUME_SAFE_MACROS 1 #endif #ifndef CYTHON_UNPACK_METHODS #define CYTHON_UNPACK_METHODS 1 #endif #undef CYTHON_FAST_THREAD_STATE #define CYTHON_FAST_THREAD_STATE 0 #undef CYTHON_FAST_PYCALL #define CYTHON_FAST_PYCALL 0 #else #define CYTHON_COMPILING_IN_PYPY 0 #define CYTHON_COMPILING_IN_PYSTON 0 #define CYTHON_COMPILING_IN_CPYTHON 1 #ifndef CYTHON_USE_TYPE_SLOTS #define CYTHON_USE_TYPE_SLOTS 1 #endif #if PY_MAJOR_VERSION < 3 #undef CYTHON_USE_ASYNC_SLOTS #define CYTHON_USE_ASYNC_SLOTS 0 #elif !defined(CYTHON_USE_ASYNC_SLOTS) #define CYTHON_USE_ASYNC_SLOTS 1 #endif #if PY_VERSION_HEX < 0x02070000 #undef CYTHON_USE_PYLONG_INTERNALS #define CYTHON_USE_PYLONG_INTERNALS 0 #elif !defined(CYTHON_USE_PYLONG_INTERNALS) #define CYTHON_USE_PYLONG_INTERNALS 1 #endif #ifndef CYTHON_USE_PYLIST_INTERNALS #define CYTHON_USE_PYLIST_INTERNALS 1 #endif #ifndef CYTHON_USE_UNICODE_INTERNALS #define CYTHON_USE_UNICODE_INTERNALS 1 #endif #if PY_VERSION_HEX < 0x030300F0 #undef CYTHON_USE_UNICODE_WRITER #define CYTHON_USE_UNICODE_WRITER 0 #elif !defined(CYTHON_USE_UNICODE_WRITER) #define CYTHON_USE_UNICODE_WRITER 1 #endif #ifndef CYTHON_AVOID_BORROWED_REFS #define CYTHON_AVOID_BORROWED_REFS 0 #endif #ifndef CYTHON_ASSUME_SAFE_MACROS #define CYTHON_ASSUME_SAFE_MACROS 1 #endif #ifndef CYTHON_UNPACK_METHODS #define CYTHON_UNPACK_METHODS 1 #endif #ifndef CYTHON_FAST_THREAD_STATE #define CYTHON_FAST_THREAD_STATE 1 #endif #ifndef CYTHON_FAST_PYCALL #define CYTHON_FAST_PYCALL 1 #endif #endif #if !defined(CYTHON_FAST_PYCCALL) #define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1) #endif #if CYTHON_USE_PYLONG_INTERNALS #include "longintrepr.h" #undef SHIFT #undef BASE #undef MASK #endif #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x02070600 && !defined(Py_OptimizeFlag) #define Py_OptimizeFlag 0 #endif #define __PYX_BUILD_PY_SSIZE_T "n" #define CYTHON_FORMAT_SSIZE_T "z" #if PY_MAJOR_VERSION < 3 #define __Pyx_BUILTIN_MODULE_NAME "__builtin__" #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ PyCode_New(a+k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) #define __Pyx_DefaultClassType PyClass_Type #else #define __Pyx_BUILTIN_MODULE_NAME "builtins" #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) #define __Pyx_DefaultClassType PyType_Type #endif #ifndef Py_TPFLAGS_CHECKTYPES #define Py_TPFLAGS_CHECKTYPES 0 #endif #ifndef Py_TPFLAGS_HAVE_INDEX #define Py_TPFLAGS_HAVE_INDEX 0 #endif #ifndef Py_TPFLAGS_HAVE_NEWBUFFER #define Py_TPFLAGS_HAVE_NEWBUFFER 0 #endif #ifndef Py_TPFLAGS_HAVE_FINALIZE #define Py_TPFLAGS_HAVE_FINALIZE 0 #endif #ifndef METH_FASTCALL #define METH_FASTCALL 0x80 typedef PyObject *(*__Pyx_PyCFunctionFast) (PyObject *self, PyObject **args, Py_ssize_t nargs, PyObject *kwnames); #else #define __Pyx_PyCFunctionFast _PyCFunctionFast #endif #if CYTHON_FAST_PYCCALL #define __Pyx_PyFastCFunction_Check(func)\ ((PyCFunction_Check(func) && (METH_FASTCALL == (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST))))) #else #define __Pyx_PyFastCFunction_Check(func) 0 #endif #if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND) #define CYTHON_PEP393_ENABLED 1 #define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ?\ 0 : _PyUnicode_Ready((PyObject *)(op))) #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_LENGTH(u) #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i) #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) PyUnicode_MAX_CHAR_VALUE(u) #define __Pyx_PyUnicode_KIND(u) PyUnicode_KIND(u) #define __Pyx_PyUnicode_DATA(u) PyUnicode_DATA(u) #define __Pyx_PyUnicode_READ(k, d, i) PyUnicode_READ(k, d, i) #define __Pyx_PyUnicode_WRITE(k, d, i, ch) PyUnicode_WRITE(k, d, i, ch) #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u))) #else #define CYTHON_PEP393_ENABLED 0 #define PyUnicode_1BYTE_KIND 1 #define PyUnicode_2BYTE_KIND 2 #define PyUnicode_4BYTE_KIND 4 #define __Pyx_PyUnicode_READY(op) (0) #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_SIZE(u) #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i])) #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) ((sizeof(Py_UNICODE) == 2) ? 65535 : 1114111) #define __Pyx_PyUnicode_KIND(u) (sizeof(Py_UNICODE)) #define __Pyx_PyUnicode_DATA(u) ((void*)PyUnicode_AS_UNICODE(u)) #define __Pyx_PyUnicode_READ(k, d, i) ((void)(k), (Py_UCS4)(((Py_UNICODE*)d)[i])) #define __Pyx_PyUnicode_WRITE(k, d, i, ch) (((void)(k)), ((Py_UNICODE*)d)[i] = ch) #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_SIZE(u)) #endif #if CYTHON_COMPILING_IN_PYPY #define __Pyx_PyUnicode_Concat(a, b) PyNumber_Add(a, b) #define __Pyx_PyUnicode_ConcatSafe(a, b) PyNumber_Add(a, b) #else #define __Pyx_PyUnicode_Concat(a, b) PyUnicode_Concat(a, b) #define __Pyx_PyUnicode_ConcatSafe(a, b) ((unlikely((a) == Py_None) || unlikely((b) == Py_None)) ?\ PyNumber_Add(a, b) : __Pyx_PyUnicode_Concat(a, b)) #endif #if CYTHON_COMPILING_IN_PYPY && !defined(PyUnicode_Contains) #define PyUnicode_Contains(u, s) PySequence_Contains(u, s) #endif #if CYTHON_COMPILING_IN_PYPY && !defined(PyByteArray_Check) #define PyByteArray_Check(obj) PyObject_TypeCheck(obj, &PyByteArray_Type) #endif #if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Format) #define PyObject_Format(obj, fmt) PyObject_CallMethod(obj, "__format__", "O", fmt) #endif #if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc) #define PyObject_Malloc(s) PyMem_Malloc(s) #define PyObject_Free(p) PyMem_Free(p) #define PyObject_Realloc(p) PyMem_Realloc(p) #endif #if CYTHON_COMPILING_IN_PYSTON #define __Pyx_PyCode_HasFreeVars(co) PyCode_HasFreeVars(co) #define __Pyx_PyFrame_SetLineNumber(frame, lineno) PyFrame_SetLineNumber(frame, lineno) #else #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0) #define __Pyx_PyFrame_SetLineNumber(frame, lineno) (frame)->f_lineno = (lineno) #endif #define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b)) #define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b)) #if PY_MAJOR_VERSION >= 3 #define __Pyx_PyString_Format(a, b) PyUnicode_Format(a, b) #else #define __Pyx_PyString_Format(a, b) PyString_Format(a, b) #endif #if PY_MAJOR_VERSION < 3 && !defined(PyObject_ASCII) #define PyObject_ASCII(o) PyObject_Repr(o) #endif #if PY_MAJOR_VERSION >= 3 #define PyBaseString_Type PyUnicode_Type #define PyStringObject PyUnicodeObject #define PyString_Type PyUnicode_Type #define PyString_Check PyUnicode_Check #define PyString_CheckExact PyUnicode_CheckExact #endif #if PY_MAJOR_VERSION >= 3 #define __Pyx_PyBaseString_Check(obj) PyUnicode_Check(obj) #define __Pyx_PyBaseString_CheckExact(obj) PyUnicode_CheckExact(obj) #else #define __Pyx_PyBaseString_Check(obj) (PyString_Check(obj) || PyUnicode_Check(obj)) #define __Pyx_PyBaseString_CheckExact(obj) (PyString_CheckExact(obj) || PyUnicode_CheckExact(obj)) #endif #ifndef PySet_CheckExact #define PySet_CheckExact(obj) (Py_TYPE(obj) == &PySet_Type) #endif #define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type) #define __Pyx_PyException_Check(obj) __Pyx_TypeCheck(obj, PyExc_Exception) #if PY_MAJOR_VERSION >= 3 #define PyIntObject PyLongObject #define PyInt_Type PyLong_Type #define PyInt_Check(op) PyLong_Check(op) #define PyInt_CheckExact(op) PyLong_CheckExact(op) #define PyInt_FromString PyLong_FromString #define PyInt_FromUnicode PyLong_FromUnicode #define PyInt_FromLong PyLong_FromLong #define PyInt_FromSize_t PyLong_FromSize_t #define PyInt_FromSsize_t PyLong_FromSsize_t #define PyInt_AsLong PyLong_AsLong #define PyInt_AS_LONG PyLong_AS_LONG #define PyInt_AsSsize_t PyLong_AsSsize_t #define PyInt_AsUnsignedLongMask PyLong_AsUnsignedLongMask #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask #define PyNumber_Int PyNumber_Long #endif #if PY_MAJOR_VERSION >= 3 #define PyBoolObject PyLongObject #endif #if PY_MAJOR_VERSION >= 3 && CYTHON_COMPILING_IN_PYPY #ifndef PyUnicode_InternFromString #define PyUnicode_InternFromString(s) PyUnicode_FromString(s) #endif #endif #if PY_VERSION_HEX < 0x030200A4 typedef long Py_hash_t; #define __Pyx_PyInt_FromHash_t PyInt_FromLong #define __Pyx_PyInt_AsHash_t PyInt_AsLong #else #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t #define __Pyx_PyInt_AsHash_t PyInt_AsSsize_t #endif #if PY_MAJOR_VERSION >= 3 #define __Pyx_PyMethod_New(func, self, klass) ((self) ? PyMethod_New(func, self) : PyInstanceMethod_New(func)) #else #define __Pyx_PyMethod_New(func, self, klass) PyMethod_New(func, self, klass) #endif #if CYTHON_USE_ASYNC_SLOTS #if PY_VERSION_HEX >= 0x030500B1 #define __Pyx_PyAsyncMethodsStruct PyAsyncMethods #define __Pyx_PyType_AsAsync(obj) (Py_TYPE(obj)->tp_as_async) #else typedef struct { unaryfunc am_await; unaryfunc am_aiter; unaryfunc am_anext; } __Pyx_PyAsyncMethodsStruct; #define __Pyx_PyType_AsAsync(obj) ((__Pyx_PyAsyncMethodsStruct*) (Py_TYPE(obj)->tp_reserved)) #endif #else #define __Pyx_PyType_AsAsync(obj) NULL #endif #ifndef CYTHON_RESTRICT #if defined(__GNUC__) #define CYTHON_RESTRICT __restrict__ #elif defined(_MSC_VER) && _MSC_VER >= 1400 #define CYTHON_RESTRICT __restrict #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L #define CYTHON_RESTRICT restrict #else #define CYTHON_RESTRICT #endif #endif #ifndef CYTHON_UNUSED # if defined(__GNUC__) # if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) # define CYTHON_UNUSED __attribute__ ((__unused__)) # else # define CYTHON_UNUSED # endif # elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER)) # define CYTHON_UNUSED __attribute__ ((__unused__)) # else # define CYTHON_UNUSED # endif #endif #ifndef CYTHON_MAYBE_UNUSED_VAR # if defined(__cplusplus) template void CYTHON_MAYBE_UNUSED_VAR( const T& ) { } # else # define CYTHON_MAYBE_UNUSED_VAR(x) (void)(x) # endif #endif #ifndef CYTHON_NCP_UNUSED # if CYTHON_COMPILING_IN_CPYTHON # define CYTHON_NCP_UNUSED # else # define CYTHON_NCP_UNUSED CYTHON_UNUSED # endif #endif #define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None) #ifndef __cplusplus #error "Cython files generated with the C++ option must be compiled with a C++ compiler." #endif #ifndef CYTHON_INLINE #if defined(__clang__) #define CYTHON_INLINE __inline__ __attribute__ ((__unused__)) #else #define CYTHON_INLINE inline #endif #endif template void __Pyx_call_destructor(T& x) { x.~T(); } template class __Pyx_FakeReference { public: __Pyx_FakeReference() : ptr(NULL) { } __Pyx_FakeReference(const T& ref) : ptr(const_cast(&ref)) { } T *operator->() { return ptr; } T *operator&() { return ptr; } operator T&() { return *ptr; } template bool operator ==(U other) { return *ptr == other; } template bool operator !=(U other) { return *ptr != other; } private: T *ptr; }; #if defined(WIN32) || defined(MS_WINDOWS) #define _USE_MATH_DEFINES #endif #include #ifdef NAN #define __PYX_NAN() ((float) NAN) #else static CYTHON_INLINE float __PYX_NAN() { float value; memset(&value, 0xFF, sizeof(value)); return value; } #endif #if defined(__CYGWIN__) && defined(_LDBL_EQ_DBL) #define __Pyx_truncl trunc #else #define __Pyx_truncl truncl #endif #define __PYX_ERR(f_index, lineno, Ln_error) \ { \ __pyx_filename = __pyx_f[f_index]; __pyx_lineno = lineno; __pyx_clineno = __LINE__; goto Ln_error; \ } #if PY_MAJOR_VERSION >= 3 #define __Pyx_PyNumber_Divide(x,y) PyNumber_TrueDivide(x,y) #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceTrueDivide(x,y) #else #define __Pyx_PyNumber_Divide(x,y) PyNumber_TrueDivide(x,y) #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceTrueDivide(x,y) #endif #ifndef __PYX_EXTERN_C #ifdef __cplusplus #define __PYX_EXTERN_C extern "C" #else #define __PYX_EXTERN_C extern #endif #endif #define __PYX_HAVE___qtexec_ #define __PYX_HAVE_API___qtexec_ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #ifdef _OPENMP #include #endif /* _OPENMP */ #ifdef PYREX_WITHOUT_ASSERTIONS #define CYTHON_WITHOUT_ASSERTIONS #endif typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* encoding; const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry; #define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0 #define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT 0 #define __PYX_DEFAULT_STRING_ENCODING "" #define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString #define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize #define __Pyx_uchar_cast(c) ((unsigned char)c) #define __Pyx_long_cast(x) ((long)x) #define __Pyx_fits_Py_ssize_t(v, type, is_signed) (\ (sizeof(type) < sizeof(Py_ssize_t)) ||\ (sizeof(type) > sizeof(Py_ssize_t) &&\ likely(v < (type)PY_SSIZE_T_MAX ||\ v == (type)PY_SSIZE_T_MAX) &&\ (!is_signed || likely(v > (type)PY_SSIZE_T_MIN ||\ v == (type)PY_SSIZE_T_MIN))) ||\ (sizeof(type) == sizeof(Py_ssize_t) &&\ (is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\ v == (type)PY_SSIZE_T_MAX))) ) #if defined (__cplusplus) && __cplusplus >= 201103L #include #define __Pyx_sst_abs(value) std::abs(value) #elif SIZEOF_INT >= SIZEOF_SIZE_T #define __Pyx_sst_abs(value) abs(value) #elif SIZEOF_LONG >= SIZEOF_SIZE_T #define __Pyx_sst_abs(value) labs(value) #elif defined (_MSC_VER) && defined (_M_X64) #define __Pyx_sst_abs(value) _abs64(value) #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L #define __Pyx_sst_abs(value) llabs(value) #elif defined (__GNUC__) #define __Pyx_sst_abs(value) __builtin_llabs(value) #else #define __Pyx_sst_abs(value) ((value<0) ? -value : value) #endif static CYTHON_INLINE char* __Pyx_PyObject_AsString(PyObject*); static CYTHON_INLINE char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length); #define __Pyx_PyByteArray_FromString(s) PyByteArray_FromStringAndSize((const char*)s, strlen((const char*)s)) #define __Pyx_PyByteArray_FromStringAndSize(s, l) PyByteArray_FromStringAndSize((const char*)s, l) #define __Pyx_PyBytes_FromString PyBytes_FromString #define __Pyx_PyBytes_FromStringAndSize PyBytes_FromStringAndSize static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char*); #if PY_MAJOR_VERSION < 3 #define __Pyx_PyStr_FromString __Pyx_PyBytes_FromString #define __Pyx_PyStr_FromStringAndSize __Pyx_PyBytes_FromStringAndSize #else #define __Pyx_PyStr_FromString __Pyx_PyUnicode_FromString #define __Pyx_PyStr_FromStringAndSize __Pyx_PyUnicode_FromStringAndSize #endif #define __Pyx_PyObject_AsSString(s) ((signed char*) __Pyx_PyObject_AsString(s)) #define __Pyx_PyObject_AsUString(s) ((unsigned char*) __Pyx_PyObject_AsString(s)) #define __Pyx_PyObject_FromCString(s) __Pyx_PyObject_FromString((const char*)s) #define __Pyx_PyBytes_FromCString(s) __Pyx_PyBytes_FromString((const char*)s) #define __Pyx_PyByteArray_FromCString(s) __Pyx_PyByteArray_FromString((const char*)s) #define __Pyx_PyStr_FromCString(s) __Pyx_PyStr_FromString((const char*)s) #define __Pyx_PyUnicode_FromCString(s) __Pyx_PyUnicode_FromString((const char*)s) #if PY_MAJOR_VERSION < 3 static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u) { const Py_UNICODE *u_end = u; while (*u_end++) ; return (size_t)(u_end - u - 1); } #else #define __Pyx_Py_UNICODE_strlen Py_UNICODE_strlen #endif #define __Pyx_PyUnicode_FromUnicode(u) PyUnicode_FromUnicode(u, __Pyx_Py_UNICODE_strlen(u)) #define __Pyx_PyUnicode_FromUnicodeAndLength PyUnicode_FromUnicode #define __Pyx_PyUnicode_AsUnicode PyUnicode_AsUnicode #define __Pyx_NewRef(obj) (Py_INCREF(obj), obj) #define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None) #define __Pyx_PyBool_FromLong(b) ((b) ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False)) static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*); static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x); static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*); static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t); #if CYTHON_ASSUME_SAFE_MACROS #define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x)) #else #define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x) #endif #define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x)) #if PY_MAJOR_VERSION >= 3 #define __Pyx_PyNumber_Int(x) (PyLong_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Long(x)) #else #define __Pyx_PyNumber_Int(x) (PyInt_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Int(x)) #endif #define __Pyx_PyNumber_Float(x) (PyFloat_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Float(x)) #if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII static int __Pyx_sys_getdefaultencoding_not_ascii; static int __Pyx_init_sys_getdefaultencoding_params(void) { PyObject* sys; PyObject* default_encoding = NULL; PyObject* ascii_chars_u = NULL; PyObject* ascii_chars_b = NULL; const char* default_encoding_c; sys = PyImport_ImportModule("sys"); if (!sys) goto bad; default_encoding = PyObject_CallMethod(sys, (char*) "getdefaultencoding", NULL); Py_DECREF(sys); if (!default_encoding) goto bad; default_encoding_c = PyBytes_AsString(default_encoding); if (!default_encoding_c) goto bad; if (strcmp(default_encoding_c, "ascii") == 0) { __Pyx_sys_getdefaultencoding_not_ascii = 0; } else { char ascii_chars[128]; int c; for (c = 0; c < 128; c++) { ascii_chars[c] = c; } __Pyx_sys_getdefaultencoding_not_ascii = 1; ascii_chars_u = PyUnicode_DecodeASCII(ascii_chars, 128, NULL); if (!ascii_chars_u) goto bad; ascii_chars_b = PyUnicode_AsEncodedString(ascii_chars_u, default_encoding_c, NULL); if (!ascii_chars_b || !PyBytes_Check(ascii_chars_b) || memcmp(ascii_chars, PyBytes_AS_STRING(ascii_chars_b), 128) != 0) { PyErr_Format( PyExc_ValueError, "This module compiled with c_string_encoding=ascii, but default encoding '%.200s' is not a superset of ascii.", default_encoding_c); goto bad; } Py_DECREF(ascii_chars_u); Py_DECREF(ascii_chars_b); } Py_DECREF(default_encoding); return 0; bad: Py_XDECREF(default_encoding); Py_XDECREF(ascii_chars_u); Py_XDECREF(ascii_chars_b); return -1; } #endif #if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT && PY_MAJOR_VERSION >= 3 #define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeUTF8(c_str, size, NULL) #else #define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_Decode(c_str, size, __PYX_DEFAULT_STRING_ENCODING, NULL) #if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT static char* __PYX_DEFAULT_STRING_ENCODING; static int __Pyx_init_sys_getdefaultencoding_params(void) { PyObject* sys; PyObject* default_encoding = NULL; char* default_encoding_c; sys = PyImport_ImportModule("sys"); if (!sys) goto bad; default_encoding = PyObject_CallMethod(sys, (char*) (const char*) "getdefaultencoding", NULL); Py_DECREF(sys); if (!default_encoding) goto bad; default_encoding_c = PyBytes_AsString(default_encoding); if (!default_encoding_c) goto bad; __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c)); if (!__PYX_DEFAULT_STRING_ENCODING) goto bad; strcpy(__PYX_DEFAULT_STRING_ENCODING, default_encoding_c); Py_DECREF(default_encoding); return 0; bad: Py_XDECREF(default_encoding); return -1; } #endif #endif /* Test for GCC > 2.95 */ #if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))) #define likely(x) __builtin_expect(!!(x), 1) #define unlikely(x) __builtin_expect(!!(x), 0) #else /* !__GNUC__ or GCC < 2.95 */ #define likely(x) (x) #define unlikely(x) (x) #endif /* __GNUC__ */ static PyObject *__pyx_m; static PyObject *__pyx_d; static PyObject *__pyx_b; static PyObject *__pyx_empty_tuple; static PyObject *__pyx_empty_bytes; static PyObject *__pyx_empty_unicode; static int __pyx_lineno; static int __pyx_clineno = 0; static const char * __pyx_cfilenm= __FILE__; static const char *__pyx_filename; static const char *__pyx_f[] = { "build/temp.linux-x86_64-3.5/pybiklib/ext/_qtexec_.pyx", }; /*--- Type declarations ---*/ /* "qt.pxd":23 * * * ctypedef void CallbackVoid() nogil # <<<<<<<<<<<<<< * ctypedef void CallbackInt(int) nogil * ctypedef void CallbackString(const QString &) nogil */ typedef void __pyx_t_2qt_CallbackVoid(void); /* "qt.pxd":24 * * ctypedef void CallbackVoid() nogil * ctypedef void CallbackInt(int) nogil # <<<<<<<<<<<<<< * ctypedef void CallbackString(const QString &) nogil * ctypedef void CallbackDebugMessage(const QOpenGLDebugMessage &) nogil */ typedef void __pyx_t_2qt_CallbackInt(int); /* "qt.pxd":25 * ctypedef void CallbackVoid() nogil * ctypedef void CallbackInt(int) nogil * ctypedef void CallbackString(const QString &) nogil # <<<<<<<<<<<<<< * ctypedef void CallbackDebugMessage(const QOpenGLDebugMessage &) nogil * */ typedef void __pyx_t_2qt_CallbackString(QString const &); /* "qt.pxd":26 * ctypedef void CallbackInt(int) nogil * ctypedef void CallbackString(const QString &) nogil * ctypedef void CallbackDebugMessage(const QOpenGLDebugMessage &) nogil # <<<<<<<<<<<<<< * * */ typedef void __pyx_t_2qt_CallbackDebugMessage(QOpenGLDebugMessage const &); /* "_qtexec_.pyx":41 * #puts = print * * cdef enum: # #px/ # <<<<<<<<<<<<<< * #if True: * DEBUG_MSG = 0x0002 */ enum { __pyx_e_8_qtexec__DEBUG_MSG = 0x0002, __pyx_e_8_qtexec__DEBUG_MSGEXT = 0x0020 }; /* --- Runtime support code (head) --- */ /* Refnanny.proto */ #ifndef CYTHON_REFNANNY #define CYTHON_REFNANNY 0 #endif #if CYTHON_REFNANNY typedef struct { void (*INCREF)(void*, PyObject*, int); void (*DECREF)(void*, PyObject*, int); void (*GOTREF)(void*, PyObject*, int); void (*GIVEREF)(void*, PyObject*, int); void* (*SetupContext)(const char*, int, const char*); void (*FinishContext)(void**); } __Pyx_RefNannyAPIStruct; static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL; static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname); #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL; #ifdef WITH_THREAD #define __Pyx_RefNannySetupContext(name, acquire_gil)\ if (acquire_gil) {\ PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\ __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\ PyGILState_Release(__pyx_gilstate_save);\ } else {\ __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\ } #else #define __Pyx_RefNannySetupContext(name, acquire_gil)\ __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__) #endif #define __Pyx_RefNannyFinishContext()\ __Pyx_RefNanny->FinishContext(&__pyx_refnanny) #define __Pyx_INCREF(r) __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__) #define __Pyx_DECREF(r) __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__) #define __Pyx_GOTREF(r) __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), __LINE__) #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), __LINE__) #define __Pyx_XINCREF(r) do { if((r) != NULL) {__Pyx_INCREF(r); }} while(0) #define __Pyx_XDECREF(r) do { if((r) != NULL) {__Pyx_DECREF(r); }} while(0) #define __Pyx_XGOTREF(r) do { if((r) != NULL) {__Pyx_GOTREF(r); }} while(0) #define __Pyx_XGIVEREF(r) do { if((r) != NULL) {__Pyx_GIVEREF(r);}} while(0) #else #define __Pyx_RefNannyDeclarations #define __Pyx_RefNannySetupContext(name, acquire_gil) #define __Pyx_RefNannyFinishContext() #define __Pyx_INCREF(r) Py_INCREF(r) #define __Pyx_DECREF(r) Py_DECREF(r) #define __Pyx_GOTREF(r) #define __Pyx_GIVEREF(r) #define __Pyx_XINCREF(r) Py_XINCREF(r) #define __Pyx_XDECREF(r) Py_XDECREF(r) #define __Pyx_XGOTREF(r) #define __Pyx_XGIVEREF(r) #endif #define __Pyx_XDECREF_SET(r, v) do {\ PyObject *tmp = (PyObject *) r;\ r = v; __Pyx_XDECREF(tmp);\ } while (0) #define __Pyx_DECREF_SET(r, v) do {\ PyObject *tmp = (PyObject *) r;\ r = v; __Pyx_DECREF(tmp);\ } while (0) #define __Pyx_CLEAR(r) do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0) #define __Pyx_XCLEAR(r) do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0) /* PyObjectGetAttrStr.proto */ #if CYTHON_USE_TYPE_SLOTS static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) { PyTypeObject* tp = Py_TYPE(obj); if (likely(tp->tp_getattro)) return tp->tp_getattro(obj, attr_name); #if PY_MAJOR_VERSION < 3 if (likely(tp->tp_getattr)) return tp->tp_getattr(obj, PyString_AS_STRING(attr_name)); #endif return PyObject_GetAttr(obj, attr_name); } #else #define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n) #endif /* GetBuiltinName.proto */ static PyObject *__Pyx_GetBuiltinName(PyObject *name); /* IncludeStringH.proto */ #include /* decode_c_string.proto */ static CYTHON_INLINE PyObject* __Pyx_decode_c_string( const char* cstring, Py_ssize_t start, Py_ssize_t stop, const char* encoding, const char* errors, PyObject* (*decode_func)(const char *s, Py_ssize_t size, const char *errors)); /* PyObjectCall.proto */ #if CYTHON_COMPILING_IN_CPYTHON static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw); #else #define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw) #endif /* PyThreadStateGet.proto */ #if CYTHON_FAST_THREAD_STATE #define __Pyx_PyThreadState_declare PyThreadState *__pyx_tstate; #define __Pyx_PyThreadState_assign __pyx_tstate = PyThreadState_GET(); #else #define __Pyx_PyThreadState_declare #define __Pyx_PyThreadState_assign #endif /* PyErrFetchRestore.proto */ #if CYTHON_FAST_THREAD_STATE #define __Pyx_ErrRestoreWithState(type, value, tb) __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb) #define __Pyx_ErrFetchWithState(type, value, tb) __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb) #define __Pyx_ErrRestore(type, value, tb) __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb) #define __Pyx_ErrFetch(type, value, tb) __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb) static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); #else #define __Pyx_ErrRestoreWithState(type, value, tb) PyErr_Restore(type, value, tb) #define __Pyx_ErrFetchWithState(type, value, tb) PyErr_Fetch(type, value, tb) #define __Pyx_ErrRestore(type, value, tb) PyErr_Restore(type, value, tb) #define __Pyx_ErrFetch(type, value, tb) PyErr_Fetch(type, value, tb) #endif /* WriteUnraisableException.proto */ static void __Pyx_WriteUnraisable(const char *name, int clineno, int lineno, const char *filename, int full_traceback, int nogil); /* ListCompAppend.proto */ #if CYTHON_USE_PYLIST_INTERNALS && CYTHON_ASSUME_SAFE_MACROS static CYTHON_INLINE int __Pyx_ListComp_Append(PyObject* list, PyObject* x) { PyListObject* L = (PyListObject*) list; Py_ssize_t len = Py_SIZE(list); if (likely(L->allocated > len)) { Py_INCREF(x); PyList_SET_ITEM(list, len, x); Py_SIZE(list) = len+1; return 0; } return PyList_Append(list, x); } #else #define __Pyx_ListComp_Append(L,x) PyList_Append(L,x) #endif /* GetModuleGlobalName.proto */ static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name); /* PyCFunctionFastCall.proto */ #if CYTHON_FAST_PYCCALL static CYTHON_INLINE PyObject *__Pyx_PyCFunction_FastCall(PyObject *func, PyObject **args, Py_ssize_t nargs); #else #define __Pyx_PyCFunction_FastCall(func, args, nargs) (assert(0), NULL) #endif /* PyFunctionFastCall.proto */ #if CYTHON_FAST_PYCALL #define __Pyx_PyFunction_FastCall(func, args, nargs)\ __Pyx_PyFunction_FastCallDict((func), (args), (nargs), NULL) #if 1 || PY_VERSION_HEX < 0x030600B1 static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, int nargs, PyObject *kwargs); #else #define __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs) _PyFunction_FastCallDict(func, args, nargs, kwargs) #endif #endif /* PyObjectCallMethO.proto */ #if CYTHON_COMPILING_IN_CPYTHON static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg); #endif /* PyObjectCallOneArg.proto */ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg); /* PyObjectCallNoArg.proto */ #if CYTHON_COMPILING_IN_CPYTHON static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func); #else #define __Pyx_PyObject_CallNoArg(func) __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL) #endif /* SaveResetException.proto */ #if CYTHON_FAST_THREAD_STATE #define __Pyx_ExceptionSave(type, value, tb) __Pyx__ExceptionSave(__pyx_tstate, type, value, tb) static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); #define __Pyx_ExceptionReset(type, value, tb) __Pyx__ExceptionReset(__pyx_tstate, type, value, tb) static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); #else #define __Pyx_ExceptionSave(type, value, tb) PyErr_GetExcInfo(type, value, tb) #define __Pyx_ExceptionReset(type, value, tb) PyErr_SetExcInfo(type, value, tb) #endif /* PyErrExceptionMatches.proto */ #if CYTHON_FAST_THREAD_STATE #define __Pyx_PyErr_ExceptionMatches(err) __Pyx_PyErr_ExceptionMatchesInState(__pyx_tstate, err) static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err); #else #define __Pyx_PyErr_ExceptionMatches(err) PyErr_ExceptionMatches(err) #endif /* GetException.proto */ #if CYTHON_FAST_THREAD_STATE #define __Pyx_GetException(type, value, tb) __Pyx__GetException(__pyx_tstate, type, value, tb) static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); #else static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb); #endif /* StringJoin.proto */ #if PY_MAJOR_VERSION < 3 #define __Pyx_PyString_Join __Pyx_PyBytes_Join #define __Pyx_PyBaseString_Join(s, v) (PyUnicode_CheckExact(s) ? PyUnicode_Join(s, v) : __Pyx_PyBytes_Join(s, v)) #else #define __Pyx_PyString_Join PyUnicode_Join #define __Pyx_PyBaseString_Join PyUnicode_Join #endif #if CYTHON_COMPILING_IN_CPYTHON #if PY_MAJOR_VERSION < 3 #define __Pyx_PyBytes_Join _PyString_Join #else #define __Pyx_PyBytes_Join _PyBytes_Join #endif #else static CYTHON_INLINE PyObject* __Pyx_PyBytes_Join(PyObject* sep, PyObject* values); #endif /* ListAppend.proto */ #if CYTHON_USE_PYLIST_INTERNALS && CYTHON_ASSUME_SAFE_MACROS static CYTHON_INLINE int __Pyx_PyList_Append(PyObject* list, PyObject* x) { PyListObject* L = (PyListObject*) list; Py_ssize_t len = Py_SIZE(list); if (likely(L->allocated > len) & likely(len > (L->allocated >> 1))) { Py_INCREF(x); PyList_SET_ITEM(list, len, x); Py_SIZE(list) = len+1; return 0; } return PyList_Append(list, x); } #else #define __Pyx_PyList_Append(L,x) PyList_Append(L,x) #endif /* Import.proto */ static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level); /* ImportFrom.proto */ static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name); /* CodeObjectCache.proto */ typedef struct { PyCodeObject* code_object; int code_line; } __Pyx_CodeObjectCacheEntry; struct __Pyx_CodeObjectCache { int count; int max_count; __Pyx_CodeObjectCacheEntry* entries; }; static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL}; static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line); static PyCodeObject *__pyx_find_code_object(int code_line); static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object); /* AddTraceback.proto */ static void __Pyx_AddTraceback(const char *funcname, int c_line, int py_line, const char *filename); /* CIntToPy.proto */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value); /* CIntFromPy.proto */ static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *); /* CIntToPy.proto */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value); /* CIntFromPy.proto */ static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *); /* CheckBinaryVersion.proto */ static int __Pyx_check_binary_version(void); /* InitStrings.proto */ static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); /* Module declarations from 'libc.stdint' */ /* Module declarations from 'libcpp' */ /* Module declarations from 'qt' */ /* Module declarations from 'libc.string' */ /* Module declarations from 'libc.stdio' */ /* Module declarations from '_qtexec_' */ static long __pyx_v_8_qtexec__debug; static PyObject *__pyx_f_8_qtexec__q2str(QString const &); /*proto*/ static QString __pyx_f_8_qtexec__str2q(PyObject *); /*proto*/ #define __Pyx_MODULE_NAME "_qtexec_" int __pyx_module_is_main__qtexec_ = 0; /* Implementation of '_qtexec_' */ static PyObject *__pyx_builtin_print; static PyObject *__pyx_builtin_range; static const char __pyx_k_P[] = "{}P"; static const char __pyx_k_d[] = "d"; static const char __pyx_k_i[] = "i"; static const char __pyx_k__2[] = ""; static const char __pyx_k__3[] = "\000"; static const char __pyx_k__5[] = " "; static const char __pyx_k_os[] = "os"; static const char __pyx_k_qt[] = "qt_"; static const char __pyx_k_app[] = "app"; static const char __pyx_k_arg[] = "arg"; static const char __pyx_k_dos[] = "dos"; static const char __pyx_k_es2[] = "es2"; static const char __pyx_k_ogl[] = "ogl"; static const char __pyx_k_ptr[] = "ptr"; static const char __pyx_k_qtq[] = "qtq"; static const char __pyx_k_qtw[] = "qtw\077\077?"; static const char __pyx_k_sys[] = "sys"; static const char __pyx_k_argc[] = "argc"; static const char __pyx_k_argv[] = "argv"; static const char __pyx_k_es2d[] = "es2d"; static const char __pyx_k_join[] = "join"; static const char __pyx_k_main[] = "__main__"; static const char __pyx_k_ogld[] = "ogld"; static const char __pyx_k_opts[] = "opts"; static const char __pyx_k_pack[] = "pack"; static const char __pyx_k_qtqd[] = "qtqd"; static const char __pyx_k_qtui[] = "_qtui_"; static const char __pyx_k_qtwd[] = "qtwd"; static const char __pyx_k_test[] = "__test__"; static const char __pyx_k_es2os[] = "es2os"; static const char __pyx_k_oglos[] = "oglos"; static const char __pyx_k_print[] = "print"; static const char __pyx_k_pyapp[] = "pyapp"; static const char __pyx_k_qargs[] = "qargs"; static const char __pyx_k_qtq_2[] = "qtq\077\077?"; static const char __pyx_k_qtq_d[] = "qtq\077\077?d"; static const char __pyx_k_qtqos[] = "qtqos"; static const char __pyx_k_qtw_2[] = "qtw"; static const char __pyx_k_qtw_d[] = "qtw\077\077?d"; static const char __pyx_k_qtwos[] = "qtwos"; static const char __pyx_k_range[] = "range"; static const char __pyx_k_utf_8[] = "utf-8"; static const char __pyx_k_config[] = "config_"; static const char __pyx_k_encode[] = "encode"; static const char __pyx_k_es2dos[] = "es2dos"; static const char __pyx_k_format[] = "format"; static const char __pyx_k_import[] = "__import__"; static const char __pyx_k_main_2[] = "main"; static const char __pyx_k_module[] = "module"; static const char __pyx_k_ogldos[] = "ogldos"; static const char __pyx_k_qtexec[] = "_qtexec_"; static const char __pyx_k_qtq_os[] = "qtq\077\077?os"; static const char __pyx_k_qtqdos[] = "qtqdos"; static const char __pyx_k_qtqes2[] = "qtqes2"; static const char __pyx_k_qtqogl[] = "qtqogl"; static const char __pyx_k_qtw_os[] = "qtw\077\077?os"; static const char __pyx_k_qtwdos[] = "qtwdos"; static const char __pyx_k_qtwes2[] = "qtwes2"; static const char __pyx_k_qtwogl[] = "qtwogl"; static const char __pyx_k_struct[] = "struct"; static const char __pyx_k_APPNAME[] = "APPNAME"; static const char __pyx_k_PACKAGE[] = "PACKAGE"; static const char __pyx_k_VERSION[] = "VERSION"; static const char __pyx_k_aliases[] = "aliases"; static const char __pyx_k_depends[] = "depends"; static const char __pyx_k_ptrlist[] = "ptrlist"; static const char __pyx_k_qtq_dos[] = "qtq\077\077?dos"; static const char __pyx_k_qtqes2d[] = "qtqes2d"; static const char __pyx_k_qtqogld[] = "qtqogld"; static const char __pyx_k_qtw_dos[] = "qtw\077\077?dos"; static const char __pyx_k_qtwes2d[] = "qtwes2d"; static const char __pyx_k_qtwogld[] = "qtwogld"; static const char __pyx_k_ui_args[] = "ui_args"; static const char __pyx_k_compiled[] = "__compiled"; static const char __pyx_k_config_2[] = "config"; static const char __pyx_k_exc_info[] = "exc_info"; static const char __pyx_k_language[] = "language"; static const char __pyx_k_pybiklib[] = "pybiklib"; static const char __pyx_k_qtqes2os[] = "qtqes2os"; static const char __pyx_k_qtqoglos[] = "qtqoglos"; static const char __pyx_k_qtwes2os[] = "qtwes2os"; static const char __pyx_k_qtwoglos[] = "qtwoglos"; static const char __pyx_k_DEBUG_MSG[] = "DEBUG_MSG"; static const char __pyx_k_byteslist[] = "byteslist"; static const char __pyx_k_debug_es2[] = "_debug_es2"; static const char __pyx_k_debug_ogl[] = "_debug_ogl"; static const char __pyx_k_qt_qtqes2[] = "_qt_qtqes2"; static const char __pyx_k_qt_qtqogl[] = "_qt_qtqogl"; static const char __pyx_k_qt_qtwes2[] = "_qt_qtwes2"; static const char __pyx_k_qt_qtwogl[] = "_qt_qtwogl"; static const char __pyx_k_qtqes2dos[] = "qtqes2dos"; static const char __pyx_k_qtqogldos[] = "qtqogldos"; static const char __pyx_k_qtwes2dos[] = "qtwes2dos"; static const char __pyx_k_qtwogldos[] = "qtwogldos"; static const char __pyx_k_cb_run_app[] = "cb_run_app"; static const char __pyx_k_excepthook[] = "excepthook"; static const char __pyx_k_glarea_es2[] = "_glarea_es2"; static const char __pyx_k_glarea_ogl[] = "_glarea_ogl"; static const char __pyx_k_gldraw_es2[] = "_gldraw_es2"; static const char __pyx_k_gldraw_ogl[] = "_gldraw_ogl"; static const char __pyx_k_qt_qtqes2d[] = "_qt_qtqes2d"; static const char __pyx_k_qt_qtqogld[] = "_qt_qtqogld"; static const char __pyx_k_qt_qtwes2d[] = "_qt_qtwes2d"; static const char __pyx_k_qt_qtwogld[] = "_qt_qtwogld"; static const char __pyx_k_translator[] = "translator"; static const char __pyx_k_args_buffer[] = "args_buffer"; static const char __pyx_k_argv_buffer[] = "argv_buffer"; static const char __pyx_k_glarea_es2d[] = "_glarea_es2d"; static const char __pyx_k_glarea_ogld[] = "_glarea_ogld"; static const char __pyx_k_gldraw_es2d[] = "_gldraw_es2d"; static const char __pyx_k_gldraw_ogld[] = "_gldraw_ogld"; static const char __pyx_k_qt_qtqes2os[] = "_qt_qtqes2os"; static const char __pyx_k_qt_qtqoglos[] = "_qt_qtqoglos"; static const char __pyx_k_qt_qtwes2os[] = "_qt_qtwes2os"; static const char __pyx_k_qt_qtwoglos[] = "_qt_qtwoglos"; static const char __pyx_k_APPICON_FILE[] = "APPICON_FILE"; static const char __pyx_k_DEBUG_MSGEXT[] = "DEBUG_MSGEXT"; static const char __pyx_k_glarea_es2os[] = "_glarea_es2os"; static const char __pyx_k_glarea_oglos[] = "_glarea_oglos"; static const char __pyx_k_qt_qtqes2dos[] = "_qt_qtqes2dos"; static const char __pyx_k_qt_qtqogldos[] = "_qt_qtqogldos"; static const char __pyx_k_qt_qtwes2dos[] = "_qt_qtwes2dos"; static const char __pyx_k_qt_qtwogldos[] = "_qt_qtwogldos"; static const char __pyx_k_glarea_es2dos[] = "_glarea_es2dos"; static const char __pyx_k_glarea_ogldos[] = "_glarea_ogldos"; static const char __pyx_k_get_gl_variant[] = "get_gl_variant"; static const char __pyx_k_set_debug_flags[] = "set_debug_flags"; static const char __pyx_k_exec_application[] = "exec_application"; static const char __pyx_k_Unknown_arguments[] = "Unknown arguments:"; static const char __pyx_k_cb_after_mainloop[] = "cb_after_mainloop"; static const char __pyx_k_cb_app_post_create[] = "cb_app_post_create"; static const char __pyx_k_cb_before_mainloop[] = "cb_before_mainloop"; static const char __pyx_k_getdefaultencoding[] = "getdefaultencoding"; static const char __pyx_k_Unknown_openGLModuleType[] = "Unknown openGLModuleType"; static const char __pyx_k_tmp[] = "/tmp/build/temp.linux-x86_64-3.5/pybiklib/ext/_qtexec_.pyx"; static PyObject *__pyx_n_s_APPICON_FILE; static PyObject *__pyx_n_s_APPNAME; static PyObject *__pyx_n_s_DEBUG_MSG; static PyObject *__pyx_n_s_DEBUG_MSGEXT; static PyObject *__pyx_kp_u_P; static PyObject *__pyx_n_s_PACKAGE; static PyObject *__pyx_kp_u_Unknown_arguments; static PyObject *__pyx_kp_u_Unknown_openGLModuleType; static PyObject *__pyx_n_s_VERSION; static PyObject *__pyx_kp_u__2; static PyObject *__pyx_kp_b__3; static PyObject *__pyx_kp_u__5; static PyObject *__pyx_n_s_aliases; static PyObject *__pyx_n_s_app; static PyObject *__pyx_n_s_arg; static PyObject *__pyx_n_s_argc; static PyObject *__pyx_n_s_args_buffer; static PyObject *__pyx_n_s_argv; static PyObject *__pyx_n_s_argv_buffer; static PyObject *__pyx_n_s_byteslist; static PyObject *__pyx_n_s_cb_after_mainloop; static PyObject *__pyx_n_s_cb_app_post_create; static PyObject *__pyx_n_s_cb_before_mainloop; static PyObject *__pyx_n_s_cb_run_app; static PyObject *__pyx_n_s_compiled; static PyObject *__pyx_n_s_config; static PyObject *__pyx_n_s_config_2; static PyObject *__pyx_n_u_d; static PyObject *__pyx_n_u_debug_es2; static PyObject *__pyx_n_u_debug_ogl; static PyObject *__pyx_n_s_depends; static PyObject *__pyx_n_u_dos; static PyObject *__pyx_n_s_encode; static PyObject *__pyx_n_u_es2; static PyObject *__pyx_n_u_es2d; static PyObject *__pyx_n_u_es2dos; static PyObject *__pyx_n_u_es2os; static PyObject *__pyx_n_s_exc_info; static PyObject *__pyx_n_s_excepthook; static PyObject *__pyx_n_s_exec_application; static PyObject *__pyx_n_s_format; static PyObject *__pyx_n_s_get_gl_variant; static PyObject *__pyx_n_s_getdefaultencoding; static PyObject *__pyx_n_u_glarea_es2; static PyObject *__pyx_n_u_glarea_es2d; static PyObject *__pyx_n_u_glarea_es2dos; static PyObject *__pyx_n_u_glarea_es2os; static PyObject *__pyx_n_u_glarea_ogl; static PyObject *__pyx_n_u_glarea_ogld; static PyObject *__pyx_n_u_glarea_ogldos; static PyObject *__pyx_n_u_glarea_oglos; static PyObject *__pyx_n_u_gldraw_es2; static PyObject *__pyx_n_u_gldraw_es2d; static PyObject *__pyx_n_u_gldraw_ogl; static PyObject *__pyx_n_u_gldraw_ogld; static PyObject *__pyx_kp_s_tmp; static PyObject *__pyx_n_s_i; static PyObject *__pyx_n_s_import; static PyObject *__pyx_n_s_join; static PyObject *__pyx_n_s_language; static PyObject *__pyx_n_s_main; static PyObject *__pyx_n_s_main_2; static PyObject *__pyx_n_s_module; static PyObject *__pyx_n_u_ogl; static PyObject *__pyx_n_u_ogld; static PyObject *__pyx_n_u_ogldos; static PyObject *__pyx_n_u_oglos; static PyObject *__pyx_n_s_opts; static PyObject *__pyx_n_u_os; static PyObject *__pyx_n_s_pack; static PyObject *__pyx_n_s_print; static PyObject *__pyx_n_s_ptr; static PyObject *__pyx_n_s_ptrlist; static PyObject *__pyx_n_s_pyapp; static PyObject *__pyx_n_s_pybiklib; static PyObject *__pyx_n_s_qargs; static PyObject *__pyx_n_u_qt; static PyObject *__pyx_n_u_qt_qtqes2; static PyObject *__pyx_n_u_qt_qtqes2d; static PyObject *__pyx_n_u_qt_qtqes2dos; static PyObject *__pyx_n_u_qt_qtqes2os; static PyObject *__pyx_n_u_qt_qtqogl; static PyObject *__pyx_n_u_qt_qtqogld; static PyObject *__pyx_n_u_qt_qtqogldos; static PyObject *__pyx_n_u_qt_qtqoglos; static PyObject *__pyx_n_u_qt_qtwes2; static PyObject *__pyx_n_u_qt_qtwes2d; static PyObject *__pyx_n_u_qt_qtwes2dos; static PyObject *__pyx_n_u_qt_qtwes2os; static PyObject *__pyx_n_u_qt_qtwogl; static PyObject *__pyx_n_u_qt_qtwogld; static PyObject *__pyx_n_u_qt_qtwogldos; static PyObject *__pyx_n_u_qt_qtwoglos; static PyObject *__pyx_n_s_qtexec; static PyObject *__pyx_n_u_qtq; static PyObject *__pyx_kp_u_qtq_2; static PyObject *__pyx_kp_u_qtq_d; static PyObject *__pyx_kp_u_qtq_dos; static PyObject *__pyx_kp_u_qtq_os; static PyObject *__pyx_n_u_qtqd; static PyObject *__pyx_n_u_qtqdos; static PyObject *__pyx_n_u_qtqes2; static PyObject *__pyx_n_u_qtqes2d; static PyObject *__pyx_n_u_qtqes2dos; static PyObject *__pyx_n_u_qtqes2os; static PyObject *__pyx_n_u_qtqogl; static PyObject *__pyx_n_u_qtqogld; static PyObject *__pyx_n_u_qtqogldos; static PyObject *__pyx_n_u_qtqoglos; static PyObject *__pyx_n_u_qtqos; static PyObject *__pyx_n_u_qtui; static PyObject *__pyx_kp_u_qtw; static PyObject *__pyx_n_u_qtw_2; static PyObject *__pyx_kp_u_qtw_d; static PyObject *__pyx_kp_u_qtw_dos; static PyObject *__pyx_kp_u_qtw_os; static PyObject *__pyx_n_u_qtwd; static PyObject *__pyx_n_u_qtwdos; static PyObject *__pyx_n_u_qtwes2; static PyObject *__pyx_n_u_qtwes2d; static PyObject *__pyx_n_u_qtwes2dos; static PyObject *__pyx_n_u_qtwes2os; static PyObject *__pyx_n_u_qtwogl; static PyObject *__pyx_n_u_qtwogld; static PyObject *__pyx_n_u_qtwogldos; static PyObject *__pyx_n_u_qtwoglos; static PyObject *__pyx_n_u_qtwos; static PyObject *__pyx_n_s_range; static PyObject *__pyx_n_s_set_debug_flags; static PyObject *__pyx_n_s_struct; static PyObject *__pyx_n_s_sys; static PyObject *__pyx_n_s_test; static PyObject *__pyx_n_s_translator; static PyObject *__pyx_n_s_ui_args; static PyObject *__pyx_kp_u_utf_8; static PyObject *__pyx_pf_8_qtexec__set_debug_flags(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_module); /* proto */ static PyObject *__pyx_pf_8_qtexec__2get_gl_variant(CYTHON_UNUSED PyObject *__pyx_self); /* proto */ static PyObject *__pyx_pf_8_qtexec__4exec_application(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_main); /* proto */ static PyObject *__pyx_int_0; static PyObject *__pyx_int_1; static PyObject *__pyx_tuple_; static PyObject *__pyx_tuple__4; static PyObject *__pyx_tuple__6; static PyObject *__pyx_tuple__8; static PyObject *__pyx_tuple__10; static PyObject *__pyx_codeobj__7; static PyObject *__pyx_codeobj__9; static PyObject *__pyx_codeobj__11; /* "_qtexec_.pyx":48 * debug = 0 * * def set_debug_flags(module): # <<<<<<<<<<<<<< * global debug * if module.DEBUG_MSG: debug |= DEBUG_MSG */ /* Python wrapper */ static PyObject *__pyx_pw_8_qtexec__1set_debug_flags(PyObject *__pyx_self, PyObject *__pyx_v_module); /*proto*/ static PyMethodDef __pyx_mdef_8_qtexec__1set_debug_flags = {"set_debug_flags", (PyCFunction)__pyx_pw_8_qtexec__1set_debug_flags, METH_O, 0}; static PyObject *__pyx_pw_8_qtexec__1set_debug_flags(PyObject *__pyx_self, PyObject *__pyx_v_module) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("set_debug_flags (wrapper)", 0); __pyx_r = __pyx_pf_8_qtexec__set_debug_flags(__pyx_self, ((PyObject *)__pyx_v_module)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_8_qtexec__set_debug_flags(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_module) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_t_2; __Pyx_RefNannySetupContext("set_debug_flags", 0); /* "_qtexec_.pyx":50 * def set_debug_flags(module): * global debug * if module.DEBUG_MSG: debug |= DEBUG_MSG # <<<<<<<<<<<<<< * if module.DEBUG_MSGEXT: debug |= DEBUG_MSGEXT * */ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_module, __pyx_n_s_DEBUG_MSG); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 50, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 50, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_2) { __pyx_v_8_qtexec__debug = (__pyx_v_8_qtexec__debug | __pyx_e_8_qtexec__DEBUG_MSG); } /* "_qtexec_.pyx":51 * global debug * if module.DEBUG_MSG: debug |= DEBUG_MSG * if module.DEBUG_MSGEXT: debug |= DEBUG_MSGEXT # <<<<<<<<<<<<<< * * */ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_module, __pyx_n_s_DEBUG_MSGEXT); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 51, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 51, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_2) { __pyx_v_8_qtexec__debug = (__pyx_v_8_qtexec__debug | __pyx_e_8_qtexec__DEBUG_MSGEXT); } /* "_qtexec_.pyx":48 * debug = 0 * * def set_debug_flags(module): # <<<<<<<<<<<<<< * global debug * if module.DEBUG_MSG: debug |= DEBUG_MSG */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("_qtexec_.set_debug_flags", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qtexec_.pyx":57 * * ##pxm-FUNC P * cdef q2str(const QString &qstr): # <<<<<<<<<<<<<< * cdef QByteArray data = qstr.toUtf8() #px+ * return data.data()[:data.size()].decode('utf-8') #px+ */ static PyObject *__pyx_f_8_qtexec__q2str(QString const &__pyx_v_qstr) { QByteArray __pyx_v_data; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("q2str", 0); /* "_qtexec_.pyx":58 * ##pxm-FUNC P * cdef q2str(const QString &qstr): * cdef QByteArray data = qstr.toUtf8() #px+ # <<<<<<<<<<<<<< * return data.data()[:data.size()].decode('utf-8') #px+ * ##pxm-FUNC P */ __pyx_v_data = __pyx_v_qstr.toUtf8(); /* "_qtexec_.pyx":59 * cdef q2str(const QString &qstr): * cdef QByteArray data = qstr.toUtf8() #px+ * return data.data()[:data.size()].decode('utf-8') #px+ # <<<<<<<<<<<<<< * ##pxm-FUNC P * cdef QString str2q(pstr): */ __Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_decode_c_string(__pyx_v_data.data(), 0, __pyx_v_data.size(), NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 59, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; /* "_qtexec_.pyx":57 * * ##pxm-FUNC P * cdef q2str(const QString &qstr): # <<<<<<<<<<<<<< * cdef QByteArray data = qstr.toUtf8() #px+ * return data.data()[:data.size()].decode('utf-8') #px+ */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("_qtexec_.q2str", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qtexec_.pyx":61 * return data.data()[:data.size()].decode('utf-8') #px+ * ##pxm-FUNC P * cdef QString str2q(pstr): # <<<<<<<<<<<<<< * data = pstr.encode('utf-8') #px+ * return fromUtf8(data, len(data)) #px+ */ static QString __pyx_f_8_qtexec__str2q(PyObject *__pyx_v_pstr) { PyObject *__pyx_v_data = NULL; QString __pyx_r; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; char *__pyx_t_3; Py_ssize_t __pyx_t_4; __Pyx_RefNannySetupContext("str2q", 0); /* "_qtexec_.pyx":62 * ##pxm-FUNC P * cdef QString str2q(pstr): * data = pstr.encode('utf-8') #px+ # <<<<<<<<<<<<<< * return fromUtf8(data, len(data)) #px+ * */ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_pstr, __pyx_n_s_encode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 62, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple_, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 62, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_data = __pyx_t_2; __pyx_t_2 = 0; /* "_qtexec_.pyx":63 * cdef QString str2q(pstr): * data = pstr.encode('utf-8') #px+ * return fromUtf8(data, len(data)) #px+ # <<<<<<<<<<<<<< * * */ __pyx_t_3 = __Pyx_PyObject_AsString(__pyx_v_data); if (unlikely((!__pyx_t_3) && PyErr_Occurred())) __PYX_ERR(0, 63, __pyx_L1_error) __pyx_t_4 = PyObject_Length(__pyx_v_data); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(0, 63, __pyx_L1_error) __pyx_r = QString::fromUtf8(((char *)__pyx_t_3), __pyx_t_4); goto __pyx_L0; /* "_qtexec_.pyx":61 * return data.data()[:data.size()].decode('utf-8') #px+ * ##pxm-FUNC P * cdef QString str2q(pstr): # <<<<<<<<<<<<<< * data = pstr.encode('utf-8') #px+ * return fromUtf8(data, len(data)) #px+ */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_WriteUnraisable("_qtexec_.str2q", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_XDECREF(__pyx_v_data); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qtexec_.pyx":68 * #### . #### * * def get_gl_variant(): # <<<<<<<<<<<<<< * cdef int i #px+ * # This function requires that the app instance is already created */ /* Python wrapper */ static PyObject *__pyx_pw_8_qtexec__3get_gl_variant(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/ static PyMethodDef __pyx_mdef_8_qtexec__3get_gl_variant = {"get_gl_variant", (PyCFunction)__pyx_pw_8_qtexec__3get_gl_variant, METH_NOARGS, 0}; static PyObject *__pyx_pw_8_qtexec__3get_gl_variant(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("get_gl_variant (wrapper)", 0); __pyx_r = __pyx_pf_8_qtexec__2get_gl_variant(__pyx_self); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_8_qtexec__2get_gl_variant(CYTHON_UNUSED PyObject *__pyx_self) { int __pyx_v_i; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; __Pyx_RefNannySetupContext("get_gl_variant", 0); /* "_qtexec_.pyx":71 * cdef int i #px+ * # This function requires that the app instance is already created * i = openGLModuleType() # <<<<<<<<<<<<<< * if i == LibGL: * return 'ogl' */ __pyx_v_i = QOpenGLContext::openGLModuleType(); /* "_qtexec_.pyx":72 * # This function requires that the app instance is already created * i = openGLModuleType() * if i == LibGL: # <<<<<<<<<<<<<< * return 'ogl' * elif i == LibGLES: */ switch (__pyx_v_i) { case QOpenGLContext::LibGL: /* "_qtexec_.pyx":73 * i = openGLModuleType() * if i == LibGL: * return 'ogl' # <<<<<<<<<<<<<< * elif i == LibGLES: * return 'es2' */ __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_n_u_ogl); __pyx_r = __pyx_n_u_ogl; goto __pyx_L0; /* "_qtexec_.pyx":72 * # This function requires that the app instance is already created * i = openGLModuleType() * if i == LibGL: # <<<<<<<<<<<<<< * return 'ogl' * elif i == LibGLES: */ break; /* "_qtexec_.pyx":74 * if i == LibGL: * return 'ogl' * elif i == LibGLES: # <<<<<<<<<<<<<< * return 'es2' * else: */ case QOpenGLContext::LibGLES: /* "_qtexec_.pyx":75 * return 'ogl' * elif i == LibGLES: * return 'es2' # <<<<<<<<<<<<<< * else: * print('Unknown openGLModuleType', i) */ __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_n_u_es2); __pyx_r = __pyx_n_u_es2; goto __pyx_L0; /* "_qtexec_.pyx":74 * if i == LibGL: * return 'ogl' * elif i == LibGLES: # <<<<<<<<<<<<<< * return 'es2' * else: */ break; default: /* "_qtexec_.pyx":77 * return 'es2' * else: * print('Unknown openGLModuleType', i) # <<<<<<<<<<<<<< * return '' * */ __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_i); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 77, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 77, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_kp_u_Unknown_openGLModuleType); __Pyx_GIVEREF(__pyx_kp_u_Unknown_openGLModuleType); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_kp_u_Unknown_openGLModuleType); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 77, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qtexec_.pyx":78 * else: * print('Unknown openGLModuleType', i) * return '' # <<<<<<<<<<<<<< * * def exec_application(main): */ __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_kp_u__2); __pyx_r = __pyx_kp_u__2; goto __pyx_L0; break; } /* "_qtexec_.pyx":68 * #### . #### * * def get_gl_variant(): # <<<<<<<<<<<<<< * cdef int i #px+ * # This function requires that the app instance is already created */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("_qtexec_.get_gl_variant", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qtexec_.pyx":80 * return '' * * def exec_application(main): # <<<<<<<<<<<<<< * ##px- * #global app #http://pyqt.sourceforge.net/Docs/PyQt5/gotchas.html#crashes-on-exit */ /* Python wrapper */ static PyObject *__pyx_pw_8_qtexec__5exec_application(PyObject *__pyx_self, PyObject *__pyx_v_main); /*proto*/ static PyMethodDef __pyx_mdef_8_qtexec__5exec_application = {"exec_application", (PyCFunction)__pyx_pw_8_qtexec__5exec_application, METH_O, 0}; static PyObject *__pyx_pw_8_qtexec__5exec_application(PyObject *__pyx_self, PyObject *__pyx_v_main) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("exec_application (wrapper)", 0); __pyx_r = __pyx_pf_8_qtexec__4exec_application(__pyx_self, ((PyObject *)__pyx_v_main)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_8_qtexec__4exec_application(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_main) { PyObject *__pyx_v_byteslist = NULL; PyObject *__pyx_v_args_buffer = NULL; PyObject *__pyx_v_ptr = NULL; PyObject *__pyx_v_ptrlist = NULL; PyObject *__pyx_v_arg = NULL; PyObject *__pyx_v_struct = NULL; PyObject *__pyx_v_argv_buffer = NULL; int __pyx_v_argc; char **__pyx_v_argv; QApplication *__pyx_v_app; QStringList __pyx_v_qargs; long __pyx_v_i; PyObject *__pyx_v_language = NULL; QTranslator __pyx_v_translator; PyObject *__pyx_v_pyapp = NULL; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; Py_ssize_t __pyx_t_7; PyObject *(*__pyx_t_8)(PyObject *); PyObject *__pyx_t_9 = NULL; PyObject *__pyx_t_10 = NULL; PyObject *__pyx_t_11 = NULL; PyObject *__pyx_t_12 = NULL; int __pyx_t_13; char *__pyx_t_14; int __pyx_t_15; Py_ssize_t __pyx_t_16; int __pyx_t_17; long __pyx_t_18; int __pyx_t_19; __Pyx_RefNannySetupContext("exec_application", 0); /* "_qtexec_.pyx":88 * #setAttribute(Qt.AA_UseSoftwareOpenGL) * * try: #px+ # <<<<<<<<<<<<<< * byteslist = [arg.encode(sys.getdefaultencoding()) for arg in main.opts.ui_args] #px+ * except Exception: #px+ */ { __Pyx_PyThreadState_declare __Pyx_PyThreadState_assign __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); __Pyx_XGOTREF(__pyx_t_1); __Pyx_XGOTREF(__pyx_t_2); __Pyx_XGOTREF(__pyx_t_3); /*try:*/ { /* "_qtexec_.pyx":89 * * try: #px+ * byteslist = [arg.encode(sys.getdefaultencoding()) for arg in main.opts.ui_args] #px+ # <<<<<<<<<<<<<< * except Exception: #px+ * sys.excepthook(*sys.exc_info()) #px+ */ { /* enter inner scope */ PyObject *__pyx_7genexpr__pyx_v_arg = NULL; __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 89, __pyx_L13_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_main, __pyx_n_s_opts); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 89, __pyx_L13_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_ui_args); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 89, __pyx_L13_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (likely(PyList_CheckExact(__pyx_t_6)) || PyTuple_CheckExact(__pyx_t_6)) { __pyx_t_5 = __pyx_t_6; __Pyx_INCREF(__pyx_t_5); __pyx_t_7 = 0; __pyx_t_8 = NULL; } else { __pyx_t_7 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 89, __pyx_L13_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_8 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 89, __pyx_L13_error) } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; for (;;) { if (likely(!__pyx_t_8)) { if (likely(PyList_CheckExact(__pyx_t_5))) { if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_5)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_6 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_7); __Pyx_INCREF(__pyx_t_6); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 89, __pyx_L13_error) #else __pyx_t_6 = PySequence_ITEM(__pyx_t_5, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 89, __pyx_L13_error) __Pyx_GOTREF(__pyx_t_6); #endif } else { if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_5)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_7); __Pyx_INCREF(__pyx_t_6); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 89, __pyx_L13_error) #else __pyx_t_6 = PySequence_ITEM(__pyx_t_5, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 89, __pyx_L13_error) __Pyx_GOTREF(__pyx_t_6); #endif } } else { __pyx_t_6 = __pyx_t_8(__pyx_t_5); if (unlikely(!__pyx_t_6)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 89, __pyx_L13_error) } break; } __Pyx_GOTREF(__pyx_t_6); } __Pyx_XDECREF_SET(__pyx_7genexpr__pyx_v_arg, __pyx_t_6); __pyx_t_6 = 0; __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_7genexpr__pyx_v_arg, __pyx_n_s_encode); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 89, __pyx_L13_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_sys); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 89, __pyx_L13_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_getdefaultencoding); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 89, __pyx_L13_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_t_11 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_12))) { __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_12); if (likely(__pyx_t_11)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12); __Pyx_INCREF(__pyx_t_11); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_12, function); } } if (__pyx_t_11) { __pyx_t_10 = __Pyx_PyObject_CallOneArg(__pyx_t_12, __pyx_t_11); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 89, __pyx_L13_error) __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; } else { __pyx_t_10 = __Pyx_PyObject_CallNoArg(__pyx_t_12); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 89, __pyx_L13_error) } __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __pyx_t_12 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_9))) { __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_9); if (likely(__pyx_t_12)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); __Pyx_INCREF(__pyx_t_12); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_9, function); } } if (!__pyx_t_12) { __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_10); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 89, __pyx_L13_error) __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_GOTREF(__pyx_t_6); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_9)) { PyObject *__pyx_temp[2] = {__pyx_t_12, __pyx_t_10}; __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_9, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 89, __pyx_L13_error) __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_9)) { PyObject *__pyx_temp[2] = {__pyx_t_12, __pyx_t_10}; __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_9, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 89, __pyx_L13_error) __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; } else #endif { __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 89, __pyx_L13_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_12); __pyx_t_12 = NULL; __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_11, 0+1, __pyx_t_10); __pyx_t_10 = 0; __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_11, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 89, __pyx_L13_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; } } __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if (unlikely(__Pyx_ListComp_Append(__pyx_t_4, (PyObject*)__pyx_t_6))) __PYX_ERR(0, 89, __pyx_L13_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_7genexpr__pyx_v_arg); goto __pyx_L16_exit_scope; __pyx_L13_error:; __Pyx_XDECREF(__pyx_7genexpr__pyx_v_arg); goto __pyx_L3_error; __pyx_L16_exit_scope:; } /* exit inner scope */ __pyx_v_byteslist = ((PyObject*)__pyx_t_4); __pyx_t_4 = 0; /* "_qtexec_.pyx":88 * #setAttribute(Qt.AA_UseSoftwareOpenGL) * * try: #px+ # <<<<<<<<<<<<<< * byteslist = [arg.encode(sys.getdefaultencoding()) for arg in main.opts.ui_args] #px+ * except Exception: #px+ */ } __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L10_try_end; __pyx_L3_error:; __Pyx_PyThreadState_assign __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qtexec_.pyx":90 * try: #px+ * byteslist = [arg.encode(sys.getdefaultencoding()) for arg in main.opts.ui_args] #px+ * except Exception: #px+ # <<<<<<<<<<<<<< * sys.excepthook(*sys.exc_info()) #px+ * byteslist = [] #px+ */ __pyx_t_13 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0]))); if (__pyx_t_13) { __Pyx_AddTraceback("_qtexec_.exec_application", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6) < 0) __PYX_ERR(0, 90, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GOTREF(__pyx_t_5); __Pyx_GOTREF(__pyx_t_6); /* "_qtexec_.pyx":91 * byteslist = [arg.encode(sys.getdefaultencoding()) for arg in main.opts.ui_args] #px+ * except Exception: #px+ * sys.excepthook(*sys.exc_info()) #px+ # <<<<<<<<<<<<<< * byteslist = [] #px+ * args_buffer = b'\0'.join(byteslist) + b'\0' #px+ */ __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_sys); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 91, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_excepthook); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 91, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_sys); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 91, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_exc_info); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 91, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_t_10 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_12))) { __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_12); if (likely(__pyx_t_10)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12); __Pyx_INCREF(__pyx_t_10); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_12, function); } } if (__pyx_t_10) { __pyx_t_9 = __Pyx_PyObject_CallOneArg(__pyx_t_12, __pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 91, __pyx_L5_except_error) __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; } else { __pyx_t_9 = __Pyx_PyObject_CallNoArg(__pyx_t_12); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 91, __pyx_L5_except_error) } __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __pyx_t_12 = PySequence_Tuple(__pyx_t_9); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 91, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_12, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 91, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; /* "_qtexec_.pyx":92 * except Exception: #px+ * sys.excepthook(*sys.exc_info()) #px+ * byteslist = [] #px+ # <<<<<<<<<<<<<< * args_buffer = b'\0'.join(byteslist) + b'\0' #px+ * */ __pyx_t_9 = PyList_New(0); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 92, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_XDECREF_SET(__pyx_v_byteslist, ((PyObject*)__pyx_t_9)); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; goto __pyx_L4_exception_handled; } goto __pyx_L5_except_error; __pyx_L5_except_error:; /* "_qtexec_.pyx":88 * #setAttribute(Qt.AA_UseSoftwareOpenGL) * * try: #px+ # <<<<<<<<<<<<<< * byteslist = [arg.encode(sys.getdefaultencoding()) for arg in main.opts.ui_args] #px+ * except Exception: #px+ */ __Pyx_PyThreadState_assign __Pyx_XGIVEREF(__pyx_t_1); __Pyx_XGIVEREF(__pyx_t_2); __Pyx_XGIVEREF(__pyx_t_3); __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); goto __pyx_L1_error; __pyx_L4_exception_handled:; __Pyx_PyThreadState_assign __Pyx_XGIVEREF(__pyx_t_1); __Pyx_XGIVEREF(__pyx_t_2); __Pyx_XGIVEREF(__pyx_t_3); __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); __pyx_L10_try_end:; } /* "_qtexec_.pyx":93 * sys.excepthook(*sys.exc_info()) #px+ * byteslist = [] #px+ * args_buffer = b'\0'.join(byteslist) + b'\0' #px+ # <<<<<<<<<<<<<< * * ptr = int(args_buffer) #px+ */ __pyx_t_6 = __Pyx_PyBytes_Join(__pyx_kp_b__3, __pyx_v_byteslist); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 93, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_5 = PyNumber_Add(__pyx_t_6, __pyx_kp_b__3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 93, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_v_args_buffer = __pyx_t_5; __pyx_t_5 = 0; /* "_qtexec_.pyx":95 * args_buffer = b'\0'.join(byteslist) + b'\0' #px+ * * ptr = int(args_buffer) #px+ # <<<<<<<<<<<<<< * ptrlist = [] #px+ * for arg in byteslist: #px+ */ __pyx_t_14 = __Pyx_PyObject_AsString(__pyx_v_args_buffer); if (unlikely((!__pyx_t_14) && PyErr_Occurred())) __PYX_ERR(0, 95, __pyx_L1_error) __pyx_t_5 = __Pyx_PyInt_FromSize_t(((size_t)((void *)((char *)__pyx_t_14)))); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 95, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 95, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)(&PyInt_Type)), __pyx_t_6, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 95, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_v_ptr = __pyx_t_5; __pyx_t_5 = 0; /* "_qtexec_.pyx":96 * * ptr = int(args_buffer) #px+ * ptrlist = [] #px+ # <<<<<<<<<<<<<< * for arg in byteslist: #px+ * ptrlist.append(ptr) #px+ */ __pyx_t_5 = PyList_New(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 96, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_v_ptrlist = ((PyObject*)__pyx_t_5); __pyx_t_5 = 0; /* "_qtexec_.pyx":97 * ptr = int(args_buffer) #px+ * ptrlist = [] #px+ * for arg in byteslist: #px+ # <<<<<<<<<<<<<< * ptrlist.append(ptr) #px+ * ptr += len(arg)+1 #px+ */ __pyx_t_5 = __pyx_v_byteslist; __Pyx_INCREF(__pyx_t_5); __pyx_t_7 = 0; for (;;) { if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_5)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_6 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_7); __Pyx_INCREF(__pyx_t_6); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 97, __pyx_L1_error) #else __pyx_t_6 = PySequence_ITEM(__pyx_t_5, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 97, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); #endif __Pyx_XDECREF_SET(__pyx_v_arg, __pyx_t_6); __pyx_t_6 = 0; /* "_qtexec_.pyx":98 * ptrlist = [] #px+ * for arg in byteslist: #px+ * ptrlist.append(ptr) #px+ # <<<<<<<<<<<<<< * ptr += len(arg)+1 #px+ * ptrlist.append(0) #px+ */ __pyx_t_15 = __Pyx_PyList_Append(__pyx_v_ptrlist, __pyx_v_ptr); if (unlikely(__pyx_t_15 == -1)) __PYX_ERR(0, 98, __pyx_L1_error) /* "_qtexec_.pyx":99 * for arg in byteslist: #px+ * ptrlist.append(ptr) #px+ * ptr += len(arg)+1 #px+ # <<<<<<<<<<<<<< * ptrlist.append(0) #px+ * */ __pyx_t_16 = PyObject_Length(__pyx_v_arg); if (unlikely(__pyx_t_16 == -1)) __PYX_ERR(0, 99, __pyx_L1_error) __pyx_t_6 = PyInt_FromSsize_t((__pyx_t_16 + 1)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 99, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_v_ptr, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 99, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF_SET(__pyx_v_ptr, __pyx_t_4); __pyx_t_4 = 0; /* "_qtexec_.pyx":97 * ptr = int(args_buffer) #px+ * ptrlist = [] #px+ * for arg in byteslist: #px+ # <<<<<<<<<<<<<< * ptrlist.append(ptr) #px+ * ptr += len(arg)+1 #px+ */ } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; /* "_qtexec_.pyx":100 * ptrlist.append(ptr) #px+ * ptr += len(arg)+1 #px+ * ptrlist.append(0) #px+ # <<<<<<<<<<<<<< * * import struct #px+ */ __pyx_t_15 = __Pyx_PyList_Append(__pyx_v_ptrlist, __pyx_int_0); if (unlikely(__pyx_t_15 == -1)) __PYX_ERR(0, 100, __pyx_L1_error) /* "_qtexec_.pyx":102 * ptrlist.append(0) #px+ * * import struct #px+ # <<<<<<<<<<<<<< * argv_buffer = struct.pack('{}P'.format(len(ptrlist)), *ptrlist) #px+ * cdef int argc = len(byteslist) #px+ */ __pyx_t_5 = __Pyx_Import(__pyx_n_s_struct, 0, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 102, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_v_struct = __pyx_t_5; __pyx_t_5 = 0; /* "_qtexec_.pyx":103 * * import struct #px+ * argv_buffer = struct.pack('{}P'.format(len(ptrlist)), *ptrlist) #px+ # <<<<<<<<<<<<<< * cdef int argc = len(byteslist) #px+ * cdef char **argv = argv_buffer #px+ */ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_struct, __pyx_n_s_pack); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 103, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_P, __pyx_n_s_format); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 103, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = PyList_GET_SIZE(__pyx_v_ptrlist); if (unlikely(__pyx_t_7 == -1)) __PYX_ERR(0, 103, __pyx_L1_error) __pyx_t_9 = PyInt_FromSsize_t(__pyx_t_7); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 103, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_12 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) { __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_12)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_12); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); } } if (!__pyx_t_12) { __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_9); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 103, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_GOTREF(__pyx_t_4); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[2] = {__pyx_t_12, __pyx_t_9}; __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 103, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[2] = {__pyx_t_12, __pyx_t_9}; __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 103, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } else #endif { __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 103, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_12); __pyx_t_12 = NULL; __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_11, 0+1, __pyx_t_9); __pyx_t_9 = 0; __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_11, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 103, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; } } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 103, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PySequence_Tuple(__pyx_v_ptrlist); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 103, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_11 = PyNumber_Add(__pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 103, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_11, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 103, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_v_argv_buffer = __pyx_t_4; __pyx_t_4 = 0; /* "_qtexec_.pyx":104 * import struct #px+ * argv_buffer = struct.pack('{}P'.format(len(ptrlist)), *ptrlist) #px+ * cdef int argc = len(byteslist) #px+ # <<<<<<<<<<<<<< * cdef char **argv = argv_buffer #px+ * cdef QApplication *app = new QApplication(argc, argv) #px/ */ __pyx_t_7 = PyList_GET_SIZE(__pyx_v_byteslist); if (unlikely(__pyx_t_7 == -1)) __PYX_ERR(0, 104, __pyx_L1_error) __pyx_v_argc = __pyx_t_7; /* "_qtexec_.pyx":105 * argv_buffer = struct.pack('{}P'.format(len(ptrlist)), *ptrlist) #px+ * cdef int argc = len(byteslist) #px+ * cdef char **argv = argv_buffer #px+ # <<<<<<<<<<<<<< * cdef QApplication *app = new QApplication(argc, argv) #px/ * #app = QApplication(main.opts.ui_args) */ __pyx_t_14 = __Pyx_PyObject_AsString(__pyx_v_argv_buffer); if (unlikely((!__pyx_t_14) && PyErr_Occurred())) __PYX_ERR(0, 105, __pyx_L1_error) __pyx_v_argv = ((char **)((void *)((char *)__pyx_t_14))); /* "_qtexec_.pyx":106 * cdef int argc = len(byteslist) #px+ * cdef char **argv = argv_buffer #px+ * cdef QApplication *app = new QApplication(argc, argv) #px/ # <<<<<<<<<<<<<< * #app = QApplication(main.opts.ui_args) * */ __pyx_v_app = new QApplication(__pyx_v_argc, __pyx_v_argv); /* "_qtexec_.pyx":109 * #app = QApplication(main.opts.ui_args) * * qargs = app.arguments() # <<<<<<<<<<<<<< * if qargs.size() > 1: #px/ * #if len(qargs) > 1: */ __pyx_v_qargs = __pyx_v_app->arguments(); /* "_qtexec_.pyx":110 * * qargs = app.arguments() * if qargs.size() > 1: #px/ # <<<<<<<<<<<<<< * #if len(qargs) > 1: * print('Unknown arguments:') */ __pyx_t_17 = ((__pyx_v_qargs.size() > 1) != 0); if (__pyx_t_17) { /* "_qtexec_.pyx":112 * if qargs.size() > 1: #px/ * #if len(qargs) > 1: * print('Unknown arguments:') # <<<<<<<<<<<<<< * for i in range(1, qargs.size()): #px/ * #for i in range(1, len(qargs)): */ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_tuple__4, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 112, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qtexec_.pyx":113 * #if len(qargs) > 1: * print('Unknown arguments:') * for i in range(1, qargs.size()): #px/ # <<<<<<<<<<<<<< * #for i in range(1, len(qargs)): * print(' ', q2str(qargs[i])) */ __pyx_t_13 = __pyx_v_qargs.size(); for (__pyx_t_18 = 1; __pyx_t_18 < __pyx_t_13; __pyx_t_18+=1) { __pyx_v_i = __pyx_t_18; /* "_qtexec_.pyx":115 * for i in range(1, qargs.size()): #px/ * #for i in range(1, len(qargs)): * print(' ', q2str(qargs[i])) # <<<<<<<<<<<<<< * return 1 * */ __pyx_t_4 = __pyx_f_8_qtexec__q2str((__pyx_v_qargs[__pyx_v_i])); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 115, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_11 = PyTuple_New(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 115, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_INCREF(__pyx_kp_u__5); __Pyx_GIVEREF(__pyx_kp_u__5); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_kp_u__5); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_11, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 115, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } /* "_qtexec_.pyx":116 * #for i in range(1, len(qargs)): * print(' ', q2str(qargs[i])) * return 1 # <<<<<<<<<<<<<< * * app.setOrganizationName(str2q(config_.PACKAGE)) */ __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_int_1); __pyx_r = __pyx_int_1; goto __pyx_L0; /* "_qtexec_.pyx":110 * * qargs = app.arguments() * if qargs.size() > 1: #px/ # <<<<<<<<<<<<<< * #if len(qargs) > 1: * print('Unknown arguments:') */ } /* "_qtexec_.pyx":118 * return 1 * * app.setOrganizationName(str2q(config_.PACKAGE)) # <<<<<<<<<<<<<< * app.setApplicationName(str2q(config_.APPNAME)) * app.setApplicationVersion(str2q(config_.VERSION)) */ __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_config); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 118, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_PACKAGE); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 118, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_app->setOrganizationName(__pyx_f_8_qtexec__str2q(__pyx_t_11)); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; /* "_qtexec_.pyx":119 * * app.setOrganizationName(str2q(config_.PACKAGE)) * app.setApplicationName(str2q(config_.APPNAME)) # <<<<<<<<<<<<<< * app.setApplicationVersion(str2q(config_.VERSION)) * app.setWindowIcon(QIcon(str2q(config_.APPICON_FILE))) */ __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_config); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 119, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_APPNAME); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 119, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_v_app->setApplicationName(__pyx_f_8_qtexec__str2q(__pyx_t_4)); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qtexec_.pyx":120 * app.setOrganizationName(str2q(config_.PACKAGE)) * app.setApplicationName(str2q(config_.APPNAME)) * app.setApplicationVersion(str2q(config_.VERSION)) # <<<<<<<<<<<<<< * app.setWindowIcon(QIcon(str2q(config_.APPICON_FILE))) * */ __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_config); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 120, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_VERSION); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 120, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_app->setApplicationVersion(__pyx_f_8_qtexec__str2q(__pyx_t_11)); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; /* "_qtexec_.pyx":121 * app.setApplicationName(str2q(config_.APPNAME)) * app.setApplicationVersion(str2q(config_.VERSION)) * app.setWindowIcon(QIcon(str2q(config_.APPICON_FILE))) # <<<<<<<<<<<<<< * * # initialize translation */ __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_config); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 121, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_APPICON_FILE); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 121, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_v_app->setWindowIcon(QIcon(__pyx_f_8_qtexec__str2q(__pyx_t_4))); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qtexec_.pyx":124 * * # initialize translation * language = q2str(QLocale_system().name()) # <<<<<<<<<<<<<< * # standard Qt translation, used for e.g. standard buttons and shortcut names * # keep the translator object for the lifetime of the app object, so that the translation works */ __pyx_t_4 = __pyx_f_8_qtexec__q2str(QLocale::system().name()); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 124, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_v_language = __pyx_t_4; __pyx_t_4 = 0; /* "_qtexec_.pyx":129 * cdef QTranslator translator #px/ * #translator = QTranslator() * translator.load(str2q("qt_" + language), location(TranslationsPath)) # <<<<<<<<<<<<<< * app.installTranslator(&translator) #px/ * #app.installTranslator(translator) */ __pyx_t_4 = PyNumber_Add(__pyx_n_u_qt, __pyx_v_language); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 129, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_v_translator.load(__pyx_f_8_qtexec__str2q(__pyx_t_4), QLibraryInfo::location(QLibraryInfo::TranslationsPath)); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qtexec_.pyx":130 * #translator = QTranslator() * translator.load(str2q("qt_" + language), location(TranslationsPath)) * app.installTranslator(&translator) #px/ # <<<<<<<<<<<<<< * #app.installTranslator(translator) * main.cb_app_post_create(language) */ __pyx_v_app->installTranslator((&__pyx_v_translator)); /* "_qtexec_.pyx":132 * app.installTranslator(&translator) #px/ * #app.installTranslator(translator) * main.cb_app_post_create(language) # <<<<<<<<<<<<<< * * #XXX: needed for threaded rendering, prevents blocking on quit */ __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_main, __pyx_n_s_cb_app_post_create); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 132, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_11))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_11); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_11, function); } } if (!__pyx_t_5) { __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_v_language); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 132, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_11)) { PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_v_language}; __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_11, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 132, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_4); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_11)) { PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_v_language}; __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_11, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 132, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_4); } else #endif { __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 132, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL; __Pyx_INCREF(__pyx_v_language); __Pyx_GIVEREF(__pyx_v_language); PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_v_language); __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_6, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 132, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } } __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qtexec_.pyx":135 * * #XXX: needed for threaded rendering, prevents blocking on quit * connect(app, &aboutToQuit, app, &sync, Qt.DirectConnection) #px/ # <<<<<<<<<<<<<< * #app.aboutToQuit.connect(app.sync, type=Qt.DirectConnection) * */ QObject::connect(__pyx_v_app, (&QApplication::aboutToQuit), __pyx_v_app, (&QApplication::sync), Qt::DirectConnection); /* "_qtexec_.pyx":138 * #app.aboutToQuit.connect(app.sync, type=Qt.DirectConnection) * * while True: # <<<<<<<<<<<<<< * pyapp = main.cb_run_app() * if pyapp is None: */ while (1) { /* "_qtexec_.pyx":139 * * while True: * pyapp = main.cb_run_app() # <<<<<<<<<<<<<< * if pyapp is None: * break */ __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_main, __pyx_n_s_cb_run_app); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 139, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_6 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_11))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_11); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_11, function); } } if (__pyx_t_6) { __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 139, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else { __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_11); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 139, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_XDECREF_SET(__pyx_v_pyapp, __pyx_t_4); __pyx_t_4 = 0; /* "_qtexec_.pyx":140 * while True: * pyapp = main.cb_run_app() * if pyapp is None: # <<<<<<<<<<<<<< * break * pyapp.cb_before_mainloop() */ __pyx_t_17 = (__pyx_v_pyapp == Py_None); __pyx_t_19 = (__pyx_t_17 != 0); if (__pyx_t_19) { /* "_qtexec_.pyx":141 * pyapp = main.cb_run_app() * if pyapp is None: * break # <<<<<<<<<<<<<< * pyapp.cb_before_mainloop() * app.exec() */ goto __pyx_L25_break; /* "_qtexec_.pyx":140 * while True: * pyapp = main.cb_run_app() * if pyapp is None: # <<<<<<<<<<<<<< * break * pyapp.cb_before_mainloop() */ } /* "_qtexec_.pyx":142 * if pyapp is None: * break * pyapp.cb_before_mainloop() # <<<<<<<<<<<<<< * app.exec() * pyapp.cb_after_mainloop() */ __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_pyapp, __pyx_n_s_cb_before_mainloop); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 142, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_6 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_11))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_11); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_11, function); } } if (__pyx_t_6) { __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 142, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else { __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_11); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 142, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qtexec_.pyx":143 * break * pyapp.cb_before_mainloop() * app.exec() # <<<<<<<<<<<<<< * pyapp.cb_after_mainloop() * del app */ __pyx_v_app->exec(); /* "_qtexec_.pyx":144 * pyapp.cb_before_mainloop() * app.exec() * pyapp.cb_after_mainloop() # <<<<<<<<<<<<<< * del app * */ __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_pyapp, __pyx_n_s_cb_after_mainloop); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 144, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_6 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_11))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_11); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_11, function); } } if (__pyx_t_6) { __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 144, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else { __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_11); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 144, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } __pyx_L25_break:; /* "_qtexec_.pyx":145 * app.exec() * pyapp.cb_after_mainloop() * del app # <<<<<<<<<<<<<< * * depends = { #px+ */ delete __pyx_v_app; /* "_qtexec_.pyx":80 * return '' * * def exec_application(main): # <<<<<<<<<<<<<< * ##px- * #global app #http://pyqt.sourceforge.net/Docs/PyQt5/gotchas.html#crashes-on-exit */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_9); __Pyx_XDECREF(__pyx_t_10); __Pyx_XDECREF(__pyx_t_11); __Pyx_XDECREF(__pyx_t_12); __Pyx_AddTraceback("_qtexec_.exec_application", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_byteslist); __Pyx_XDECREF(__pyx_v_args_buffer); __Pyx_XDECREF(__pyx_v_ptr); __Pyx_XDECREF(__pyx_v_ptrlist); __Pyx_XDECREF(__pyx_v_arg); __Pyx_XDECREF(__pyx_v_struct); __Pyx_XDECREF(__pyx_v_argv_buffer); __Pyx_XDECREF(__pyx_v_language); __Pyx_XDECREF(__pyx_v_pyapp); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyMethodDef __pyx_methods[] = { {0, 0, 0, 0} }; #if PY_MAJOR_VERSION >= 3 static struct PyModuleDef __pyx_moduledef = { #if PY_VERSION_HEX < 0x03020000 { PyObject_HEAD_INIT(NULL) NULL, 0, NULL }, #else PyModuleDef_HEAD_INIT, #endif "_qtexec_", 0, /* m_doc */ -1, /* m_size */ __pyx_methods /* m_methods */, NULL, /* m_reload */ NULL, /* m_traverse */ NULL, /* m_clear */ NULL /* m_free */ }; #endif static __Pyx_StringTabEntry __pyx_string_tab[] = { {&__pyx_n_s_APPICON_FILE, __pyx_k_APPICON_FILE, sizeof(__pyx_k_APPICON_FILE), 0, 0, 1, 1}, {&__pyx_n_s_APPNAME, __pyx_k_APPNAME, sizeof(__pyx_k_APPNAME), 0, 0, 1, 1}, {&__pyx_n_s_DEBUG_MSG, __pyx_k_DEBUG_MSG, sizeof(__pyx_k_DEBUG_MSG), 0, 0, 1, 1}, {&__pyx_n_s_DEBUG_MSGEXT, __pyx_k_DEBUG_MSGEXT, sizeof(__pyx_k_DEBUG_MSGEXT), 0, 0, 1, 1}, {&__pyx_kp_u_P, __pyx_k_P, sizeof(__pyx_k_P), 0, 1, 0, 0}, {&__pyx_n_s_PACKAGE, __pyx_k_PACKAGE, sizeof(__pyx_k_PACKAGE), 0, 0, 1, 1}, {&__pyx_kp_u_Unknown_arguments, __pyx_k_Unknown_arguments, sizeof(__pyx_k_Unknown_arguments), 0, 1, 0, 0}, {&__pyx_kp_u_Unknown_openGLModuleType, __pyx_k_Unknown_openGLModuleType, sizeof(__pyx_k_Unknown_openGLModuleType), 0, 1, 0, 0}, {&__pyx_n_s_VERSION, __pyx_k_VERSION, sizeof(__pyx_k_VERSION), 0, 0, 1, 1}, {&__pyx_kp_u__2, __pyx_k__2, sizeof(__pyx_k__2), 0, 1, 0, 0}, {&__pyx_kp_b__3, __pyx_k__3, sizeof(__pyx_k__3), 0, 0, 0, 0}, {&__pyx_kp_u__5, __pyx_k__5, sizeof(__pyx_k__5), 0, 1, 0, 0}, {&__pyx_n_s_aliases, __pyx_k_aliases, sizeof(__pyx_k_aliases), 0, 0, 1, 1}, {&__pyx_n_s_app, __pyx_k_app, sizeof(__pyx_k_app), 0, 0, 1, 1}, {&__pyx_n_s_arg, __pyx_k_arg, sizeof(__pyx_k_arg), 0, 0, 1, 1}, {&__pyx_n_s_argc, __pyx_k_argc, sizeof(__pyx_k_argc), 0, 0, 1, 1}, {&__pyx_n_s_args_buffer, __pyx_k_args_buffer, sizeof(__pyx_k_args_buffer), 0, 0, 1, 1}, {&__pyx_n_s_argv, __pyx_k_argv, sizeof(__pyx_k_argv), 0, 0, 1, 1}, {&__pyx_n_s_argv_buffer, __pyx_k_argv_buffer, sizeof(__pyx_k_argv_buffer), 0, 0, 1, 1}, {&__pyx_n_s_byteslist, __pyx_k_byteslist, sizeof(__pyx_k_byteslist), 0, 0, 1, 1}, {&__pyx_n_s_cb_after_mainloop, __pyx_k_cb_after_mainloop, sizeof(__pyx_k_cb_after_mainloop), 0, 0, 1, 1}, {&__pyx_n_s_cb_app_post_create, __pyx_k_cb_app_post_create, sizeof(__pyx_k_cb_app_post_create), 0, 0, 1, 1}, {&__pyx_n_s_cb_before_mainloop, __pyx_k_cb_before_mainloop, sizeof(__pyx_k_cb_before_mainloop), 0, 0, 1, 1}, {&__pyx_n_s_cb_run_app, __pyx_k_cb_run_app, sizeof(__pyx_k_cb_run_app), 0, 0, 1, 1}, {&__pyx_n_s_compiled, __pyx_k_compiled, sizeof(__pyx_k_compiled), 0, 0, 1, 1}, {&__pyx_n_s_config, __pyx_k_config, sizeof(__pyx_k_config), 0, 0, 1, 1}, {&__pyx_n_s_config_2, __pyx_k_config_2, sizeof(__pyx_k_config_2), 0, 0, 1, 1}, {&__pyx_n_u_d, __pyx_k_d, sizeof(__pyx_k_d), 0, 1, 0, 1}, {&__pyx_n_u_debug_es2, __pyx_k_debug_es2, sizeof(__pyx_k_debug_es2), 0, 1, 0, 1}, {&__pyx_n_u_debug_ogl, __pyx_k_debug_ogl, sizeof(__pyx_k_debug_ogl), 0, 1, 0, 1}, {&__pyx_n_s_depends, __pyx_k_depends, sizeof(__pyx_k_depends), 0, 0, 1, 1}, {&__pyx_n_u_dos, __pyx_k_dos, sizeof(__pyx_k_dos), 0, 1, 0, 1}, {&__pyx_n_s_encode, __pyx_k_encode, sizeof(__pyx_k_encode), 0, 0, 1, 1}, {&__pyx_n_u_es2, __pyx_k_es2, sizeof(__pyx_k_es2), 0, 1, 0, 1}, {&__pyx_n_u_es2d, __pyx_k_es2d, sizeof(__pyx_k_es2d), 0, 1, 0, 1}, {&__pyx_n_u_es2dos, __pyx_k_es2dos, sizeof(__pyx_k_es2dos), 0, 1, 0, 1}, {&__pyx_n_u_es2os, __pyx_k_es2os, sizeof(__pyx_k_es2os), 0, 1, 0, 1}, {&__pyx_n_s_exc_info, __pyx_k_exc_info, sizeof(__pyx_k_exc_info), 0, 0, 1, 1}, {&__pyx_n_s_excepthook, __pyx_k_excepthook, sizeof(__pyx_k_excepthook), 0, 0, 1, 1}, {&__pyx_n_s_exec_application, __pyx_k_exec_application, sizeof(__pyx_k_exec_application), 0, 0, 1, 1}, {&__pyx_n_s_format, __pyx_k_format, sizeof(__pyx_k_format), 0, 0, 1, 1}, {&__pyx_n_s_get_gl_variant, __pyx_k_get_gl_variant, sizeof(__pyx_k_get_gl_variant), 0, 0, 1, 1}, {&__pyx_n_s_getdefaultencoding, __pyx_k_getdefaultencoding, sizeof(__pyx_k_getdefaultencoding), 0, 0, 1, 1}, {&__pyx_n_u_glarea_es2, __pyx_k_glarea_es2, sizeof(__pyx_k_glarea_es2), 0, 1, 0, 1}, {&__pyx_n_u_glarea_es2d, __pyx_k_glarea_es2d, sizeof(__pyx_k_glarea_es2d), 0, 1, 0, 1}, {&__pyx_n_u_glarea_es2dos, __pyx_k_glarea_es2dos, sizeof(__pyx_k_glarea_es2dos), 0, 1, 0, 1}, {&__pyx_n_u_glarea_es2os, __pyx_k_glarea_es2os, sizeof(__pyx_k_glarea_es2os), 0, 1, 0, 1}, {&__pyx_n_u_glarea_ogl, __pyx_k_glarea_ogl, sizeof(__pyx_k_glarea_ogl), 0, 1, 0, 1}, {&__pyx_n_u_glarea_ogld, __pyx_k_glarea_ogld, sizeof(__pyx_k_glarea_ogld), 0, 1, 0, 1}, {&__pyx_n_u_glarea_ogldos, __pyx_k_glarea_ogldos, sizeof(__pyx_k_glarea_ogldos), 0, 1, 0, 1}, {&__pyx_n_u_glarea_oglos, __pyx_k_glarea_oglos, sizeof(__pyx_k_glarea_oglos), 0, 1, 0, 1}, {&__pyx_n_u_gldraw_es2, __pyx_k_gldraw_es2, sizeof(__pyx_k_gldraw_es2), 0, 1, 0, 1}, {&__pyx_n_u_gldraw_es2d, __pyx_k_gldraw_es2d, sizeof(__pyx_k_gldraw_es2d), 0, 1, 0, 1}, {&__pyx_n_u_gldraw_ogl, __pyx_k_gldraw_ogl, sizeof(__pyx_k_gldraw_ogl), 0, 1, 0, 1}, {&__pyx_n_u_gldraw_ogld, __pyx_k_gldraw_ogld, sizeof(__pyx_k_gldraw_ogld), 0, 1, 0, 1}, {&__pyx_kp_s_tmp, __pyx_k_tmp, sizeof(__pyx_k_tmp), 0, 0, 1, 0}, {&__pyx_n_s_i, __pyx_k_i, sizeof(__pyx_k_i), 0, 0, 1, 1}, {&__pyx_n_s_import, __pyx_k_import, sizeof(__pyx_k_import), 0, 0, 1, 1}, {&__pyx_n_s_join, __pyx_k_join, sizeof(__pyx_k_join), 0, 0, 1, 1}, {&__pyx_n_s_language, __pyx_k_language, sizeof(__pyx_k_language), 0, 0, 1, 1}, {&__pyx_n_s_main, __pyx_k_main, sizeof(__pyx_k_main), 0, 0, 1, 1}, {&__pyx_n_s_main_2, __pyx_k_main_2, sizeof(__pyx_k_main_2), 0, 0, 1, 1}, {&__pyx_n_s_module, __pyx_k_module, sizeof(__pyx_k_module), 0, 0, 1, 1}, {&__pyx_n_u_ogl, __pyx_k_ogl, sizeof(__pyx_k_ogl), 0, 1, 0, 1}, {&__pyx_n_u_ogld, __pyx_k_ogld, sizeof(__pyx_k_ogld), 0, 1, 0, 1}, {&__pyx_n_u_ogldos, __pyx_k_ogldos, sizeof(__pyx_k_ogldos), 0, 1, 0, 1}, {&__pyx_n_u_oglos, __pyx_k_oglos, sizeof(__pyx_k_oglos), 0, 1, 0, 1}, {&__pyx_n_s_opts, __pyx_k_opts, sizeof(__pyx_k_opts), 0, 0, 1, 1}, {&__pyx_n_u_os, __pyx_k_os, sizeof(__pyx_k_os), 0, 1, 0, 1}, {&__pyx_n_s_pack, __pyx_k_pack, sizeof(__pyx_k_pack), 0, 0, 1, 1}, {&__pyx_n_s_print, __pyx_k_print, sizeof(__pyx_k_print), 0, 0, 1, 1}, {&__pyx_n_s_ptr, __pyx_k_ptr, sizeof(__pyx_k_ptr), 0, 0, 1, 1}, {&__pyx_n_s_ptrlist, __pyx_k_ptrlist, sizeof(__pyx_k_ptrlist), 0, 0, 1, 1}, {&__pyx_n_s_pyapp, __pyx_k_pyapp, sizeof(__pyx_k_pyapp), 0, 0, 1, 1}, {&__pyx_n_s_pybiklib, __pyx_k_pybiklib, sizeof(__pyx_k_pybiklib), 0, 0, 1, 1}, {&__pyx_n_s_qargs, __pyx_k_qargs, sizeof(__pyx_k_qargs), 0, 0, 1, 1}, {&__pyx_n_u_qt, __pyx_k_qt, sizeof(__pyx_k_qt), 0, 1, 0, 1}, {&__pyx_n_u_qt_qtqes2, __pyx_k_qt_qtqes2, sizeof(__pyx_k_qt_qtqes2), 0, 1, 0, 1}, {&__pyx_n_u_qt_qtqes2d, __pyx_k_qt_qtqes2d, sizeof(__pyx_k_qt_qtqes2d), 0, 1, 0, 1}, {&__pyx_n_u_qt_qtqes2dos, __pyx_k_qt_qtqes2dos, sizeof(__pyx_k_qt_qtqes2dos), 0, 1, 0, 1}, {&__pyx_n_u_qt_qtqes2os, __pyx_k_qt_qtqes2os, sizeof(__pyx_k_qt_qtqes2os), 0, 1, 0, 1}, {&__pyx_n_u_qt_qtqogl, __pyx_k_qt_qtqogl, sizeof(__pyx_k_qt_qtqogl), 0, 1, 0, 1}, {&__pyx_n_u_qt_qtqogld, __pyx_k_qt_qtqogld, sizeof(__pyx_k_qt_qtqogld), 0, 1, 0, 1}, {&__pyx_n_u_qt_qtqogldos, __pyx_k_qt_qtqogldos, sizeof(__pyx_k_qt_qtqogldos), 0, 1, 0, 1}, {&__pyx_n_u_qt_qtqoglos, __pyx_k_qt_qtqoglos, sizeof(__pyx_k_qt_qtqoglos), 0, 1, 0, 1}, {&__pyx_n_u_qt_qtwes2, __pyx_k_qt_qtwes2, sizeof(__pyx_k_qt_qtwes2), 0, 1, 0, 1}, {&__pyx_n_u_qt_qtwes2d, __pyx_k_qt_qtwes2d, sizeof(__pyx_k_qt_qtwes2d), 0, 1, 0, 1}, {&__pyx_n_u_qt_qtwes2dos, __pyx_k_qt_qtwes2dos, sizeof(__pyx_k_qt_qtwes2dos), 0, 1, 0, 1}, {&__pyx_n_u_qt_qtwes2os, __pyx_k_qt_qtwes2os, sizeof(__pyx_k_qt_qtwes2os), 0, 1, 0, 1}, {&__pyx_n_u_qt_qtwogl, __pyx_k_qt_qtwogl, sizeof(__pyx_k_qt_qtwogl), 0, 1, 0, 1}, {&__pyx_n_u_qt_qtwogld, __pyx_k_qt_qtwogld, sizeof(__pyx_k_qt_qtwogld), 0, 1, 0, 1}, {&__pyx_n_u_qt_qtwogldos, __pyx_k_qt_qtwogldos, sizeof(__pyx_k_qt_qtwogldos), 0, 1, 0, 1}, {&__pyx_n_u_qt_qtwoglos, __pyx_k_qt_qtwoglos, sizeof(__pyx_k_qt_qtwoglos), 0, 1, 0, 1}, {&__pyx_n_s_qtexec, __pyx_k_qtexec, sizeof(__pyx_k_qtexec), 0, 0, 1, 1}, {&__pyx_n_u_qtq, __pyx_k_qtq, sizeof(__pyx_k_qtq), 0, 1, 0, 1}, {&__pyx_kp_u_qtq_2, __pyx_k_qtq_2, sizeof(__pyx_k_qtq_2), 0, 1, 0, 0}, {&__pyx_kp_u_qtq_d, __pyx_k_qtq_d, sizeof(__pyx_k_qtq_d), 0, 1, 0, 0}, {&__pyx_kp_u_qtq_dos, __pyx_k_qtq_dos, sizeof(__pyx_k_qtq_dos), 0, 1, 0, 0}, {&__pyx_kp_u_qtq_os, __pyx_k_qtq_os, sizeof(__pyx_k_qtq_os), 0, 1, 0, 0}, {&__pyx_n_u_qtqd, __pyx_k_qtqd, sizeof(__pyx_k_qtqd), 0, 1, 0, 1}, {&__pyx_n_u_qtqdos, __pyx_k_qtqdos, sizeof(__pyx_k_qtqdos), 0, 1, 0, 1}, {&__pyx_n_u_qtqes2, __pyx_k_qtqes2, sizeof(__pyx_k_qtqes2), 0, 1, 0, 1}, {&__pyx_n_u_qtqes2d, __pyx_k_qtqes2d, sizeof(__pyx_k_qtqes2d), 0, 1, 0, 1}, {&__pyx_n_u_qtqes2dos, __pyx_k_qtqes2dos, sizeof(__pyx_k_qtqes2dos), 0, 1, 0, 1}, {&__pyx_n_u_qtqes2os, __pyx_k_qtqes2os, sizeof(__pyx_k_qtqes2os), 0, 1, 0, 1}, {&__pyx_n_u_qtqogl, __pyx_k_qtqogl, sizeof(__pyx_k_qtqogl), 0, 1, 0, 1}, {&__pyx_n_u_qtqogld, __pyx_k_qtqogld, sizeof(__pyx_k_qtqogld), 0, 1, 0, 1}, {&__pyx_n_u_qtqogldos, __pyx_k_qtqogldos, sizeof(__pyx_k_qtqogldos), 0, 1, 0, 1}, {&__pyx_n_u_qtqoglos, __pyx_k_qtqoglos, sizeof(__pyx_k_qtqoglos), 0, 1, 0, 1}, {&__pyx_n_u_qtqos, __pyx_k_qtqos, sizeof(__pyx_k_qtqos), 0, 1, 0, 1}, {&__pyx_n_u_qtui, __pyx_k_qtui, sizeof(__pyx_k_qtui), 0, 1, 0, 1}, {&__pyx_kp_u_qtw, __pyx_k_qtw, sizeof(__pyx_k_qtw), 0, 1, 0, 0}, {&__pyx_n_u_qtw_2, __pyx_k_qtw_2, sizeof(__pyx_k_qtw_2), 0, 1, 0, 1}, {&__pyx_kp_u_qtw_d, __pyx_k_qtw_d, sizeof(__pyx_k_qtw_d), 0, 1, 0, 0}, {&__pyx_kp_u_qtw_dos, __pyx_k_qtw_dos, sizeof(__pyx_k_qtw_dos), 0, 1, 0, 0}, {&__pyx_kp_u_qtw_os, __pyx_k_qtw_os, sizeof(__pyx_k_qtw_os), 0, 1, 0, 0}, {&__pyx_n_u_qtwd, __pyx_k_qtwd, sizeof(__pyx_k_qtwd), 0, 1, 0, 1}, {&__pyx_n_u_qtwdos, __pyx_k_qtwdos, sizeof(__pyx_k_qtwdos), 0, 1, 0, 1}, {&__pyx_n_u_qtwes2, __pyx_k_qtwes2, sizeof(__pyx_k_qtwes2), 0, 1, 0, 1}, {&__pyx_n_u_qtwes2d, __pyx_k_qtwes2d, sizeof(__pyx_k_qtwes2d), 0, 1, 0, 1}, {&__pyx_n_u_qtwes2dos, __pyx_k_qtwes2dos, sizeof(__pyx_k_qtwes2dos), 0, 1, 0, 1}, {&__pyx_n_u_qtwes2os, __pyx_k_qtwes2os, sizeof(__pyx_k_qtwes2os), 0, 1, 0, 1}, {&__pyx_n_u_qtwogl, __pyx_k_qtwogl, sizeof(__pyx_k_qtwogl), 0, 1, 0, 1}, {&__pyx_n_u_qtwogld, __pyx_k_qtwogld, sizeof(__pyx_k_qtwogld), 0, 1, 0, 1}, {&__pyx_n_u_qtwogldos, __pyx_k_qtwogldos, sizeof(__pyx_k_qtwogldos), 0, 1, 0, 1}, {&__pyx_n_u_qtwoglos, __pyx_k_qtwoglos, sizeof(__pyx_k_qtwoglos), 0, 1, 0, 1}, {&__pyx_n_u_qtwos, __pyx_k_qtwos, sizeof(__pyx_k_qtwos), 0, 1, 0, 1}, {&__pyx_n_s_range, __pyx_k_range, sizeof(__pyx_k_range), 0, 0, 1, 1}, {&__pyx_n_s_set_debug_flags, __pyx_k_set_debug_flags, sizeof(__pyx_k_set_debug_flags), 0, 0, 1, 1}, {&__pyx_n_s_struct, __pyx_k_struct, sizeof(__pyx_k_struct), 0, 0, 1, 1}, {&__pyx_n_s_sys, __pyx_k_sys, sizeof(__pyx_k_sys), 0, 0, 1, 1}, {&__pyx_n_s_test, __pyx_k_test, sizeof(__pyx_k_test), 0, 0, 1, 1}, {&__pyx_n_s_translator, __pyx_k_translator, sizeof(__pyx_k_translator), 0, 0, 1, 1}, {&__pyx_n_s_ui_args, __pyx_k_ui_args, sizeof(__pyx_k_ui_args), 0, 0, 1, 1}, {&__pyx_kp_u_utf_8, __pyx_k_utf_8, sizeof(__pyx_k_utf_8), 0, 1, 0, 0}, {0, 0, 0, 0, 0, 0, 0} }; static int __Pyx_InitCachedBuiltins(void) { __pyx_builtin_print = __Pyx_GetBuiltinName(__pyx_n_s_print); if (!__pyx_builtin_print) __PYX_ERR(0, 77, __pyx_L1_error) __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) __PYX_ERR(0, 113, __pyx_L1_error) return 0; __pyx_L1_error:; return -1; } static int __Pyx_InitCachedConstants(void) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0); /* "_qtexec_.pyx":62 * ##pxm-FUNC P * cdef QString str2q(pstr): * data = pstr.encode('utf-8') #px+ # <<<<<<<<<<<<<< * return fromUtf8(data, len(data)) #px+ * */ __pyx_tuple_ = PyTuple_Pack(1, __pyx_kp_u_utf_8); if (unlikely(!__pyx_tuple_)) __PYX_ERR(0, 62, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple_); __Pyx_GIVEREF(__pyx_tuple_); /* "_qtexec_.pyx":112 * if qargs.size() > 1: #px/ * #if len(qargs) > 1: * print('Unknown arguments:') # <<<<<<<<<<<<<< * for i in range(1, qargs.size()): #px/ * #for i in range(1, len(qargs)): */ __pyx_tuple__4 = PyTuple_Pack(1, __pyx_kp_u_Unknown_arguments); if (unlikely(!__pyx_tuple__4)) __PYX_ERR(0, 112, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__4); __Pyx_GIVEREF(__pyx_tuple__4); /* "_qtexec_.pyx":48 * debug = 0 * * def set_debug_flags(module): # <<<<<<<<<<<<<< * global debug * if module.DEBUG_MSG: debug |= DEBUG_MSG */ __pyx_tuple__6 = PyTuple_Pack(1, __pyx_n_s_module); if (unlikely(!__pyx_tuple__6)) __PYX_ERR(0, 48, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__6); __Pyx_GIVEREF(__pyx_tuple__6); __pyx_codeobj__7 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__6, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_set_debug_flags, 48, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__7)) __PYX_ERR(0, 48, __pyx_L1_error) /* "_qtexec_.pyx":68 * #### . #### * * def get_gl_variant(): # <<<<<<<<<<<<<< * cdef int i #px+ * # This function requires that the app instance is already created */ __pyx_tuple__8 = PyTuple_Pack(1, __pyx_n_s_i); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(0, 68, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__8); __Pyx_GIVEREF(__pyx_tuple__8); __pyx_codeobj__9 = (PyObject*)__Pyx_PyCode_New(0, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__8, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_get_gl_variant, 68, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__9)) __PYX_ERR(0, 68, __pyx_L1_error) /* "_qtexec_.pyx":80 * return '' * * def exec_application(main): # <<<<<<<<<<<<<< * ##px- * #global app #http://pyqt.sourceforge.net/Docs/PyQt5/gotchas.html#crashes-on-exit */ __pyx_tuple__10 = PyTuple_Pack(16, __pyx_n_s_main_2, __pyx_n_s_byteslist, __pyx_n_s_args_buffer, __pyx_n_s_ptr, __pyx_n_s_ptrlist, __pyx_n_s_arg, __pyx_n_s_struct, __pyx_n_s_argv_buffer, __pyx_n_s_argc, __pyx_n_s_argv, __pyx_n_s_app, __pyx_n_s_qargs, __pyx_n_s_i, __pyx_n_s_language, __pyx_n_s_translator, __pyx_n_s_pyapp); if (unlikely(!__pyx_tuple__10)) __PYX_ERR(0, 80, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__10); __Pyx_GIVEREF(__pyx_tuple__10); __pyx_codeobj__11 = (PyObject*)__Pyx_PyCode_New(1, 0, 16, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__10, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_exec_application, 80, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__11)) __PYX_ERR(0, 80, __pyx_L1_error) __Pyx_RefNannyFinishContext(); return 0; __pyx_L1_error:; __Pyx_RefNannyFinishContext(); return -1; } static int __Pyx_InitGlobals(void) { if (__Pyx_InitStrings(__pyx_string_tab) < 0) __PYX_ERR(0, 1, __pyx_L1_error); __pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) __PYX_ERR(0, 1, __pyx_L1_error) __pyx_int_1 = PyInt_FromLong(1); if (unlikely(!__pyx_int_1)) __PYX_ERR(0, 1, __pyx_L1_error) return 0; __pyx_L1_error:; return -1; } #if PY_MAJOR_VERSION < 3 PyMODINIT_FUNC init_qtexec_(void); /*proto*/ PyMODINIT_FUNC init_qtexec_(void) #else PyMODINIT_FUNC PyInit__qtexec_(void); /*proto*/ PyMODINIT_FUNC PyInit__qtexec_(void) #endif { PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; __Pyx_RefNannyDeclarations #if CYTHON_REFNANNY __Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny"); if (!__Pyx_RefNanny) { PyErr_Clear(); __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny"); if (!__Pyx_RefNanny) Py_FatalError("failed to import 'refnanny' module"); } #endif __Pyx_RefNannySetupContext("PyMODINIT_FUNC PyInit__qtexec_(void)", 0); if (__Pyx_check_binary_version() < 0) __PYX_ERR(0, 1, __pyx_L1_error) __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(0, 1, __pyx_L1_error) __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(0, 1, __pyx_L1_error) __pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(0, 1, __pyx_L1_error) #ifdef __Pyx_CyFunction_USED if (__pyx_CyFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #endif #ifdef __Pyx_FusedFunction_USED if (__pyx_FusedFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #endif #ifdef __Pyx_Coroutine_USED if (__pyx_Coroutine_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #endif #ifdef __Pyx_Generator_USED if (__pyx_Generator_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #endif #ifdef __Pyx_StopAsyncIteration_USED if (__pyx_StopAsyncIteration_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #endif /*--- Library function declarations ---*/ /*--- Threads initialization code ---*/ #if defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS #ifdef WITH_THREAD /* Python build with threading support? */ PyEval_InitThreads(); #endif #endif /*--- Module creation code ---*/ #if PY_MAJOR_VERSION < 3 __pyx_m = Py_InitModule4("_qtexec_", __pyx_methods, 0, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m); #else __pyx_m = PyModule_Create(&__pyx_moduledef); #endif if (unlikely(!__pyx_m)) __PYX_ERR(0, 1, __pyx_L1_error) __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) __PYX_ERR(0, 1, __pyx_L1_error) Py_INCREF(__pyx_d); __pyx_b = PyImport_AddModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_b)) __PYX_ERR(0, 1, __pyx_L1_error) #if CYTHON_COMPILING_IN_PYPY Py_INCREF(__pyx_b); #endif if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) __PYX_ERR(0, 1, __pyx_L1_error); /*--- Initialize various global constants etc. ---*/ if (__Pyx_InitGlobals() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #if PY_MAJOR_VERSION < 3 && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT) if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #endif if (__pyx_module_is_main__qtexec_) { if (PyObject_SetAttrString(__pyx_m, "__name__", __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error) } #if PY_MAJOR_VERSION >= 3 { PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(0, 1, __pyx_L1_error) if (!PyDict_GetItemString(modules, "_qtexec_")) { if (unlikely(PyDict_SetItemString(modules, "_qtexec_", __pyx_m) < 0)) __PYX_ERR(0, 1, __pyx_L1_error) } } #endif /*--- Builtin init code ---*/ if (__Pyx_InitCachedBuiltins() < 0) __PYX_ERR(0, 1, __pyx_L1_error) /*--- Constants init code ---*/ if (__Pyx_InitCachedConstants() < 0) __PYX_ERR(0, 1, __pyx_L1_error) /*--- Global init code ---*/ /*--- Variable export code ---*/ /*--- Function export code ---*/ /*--- Type init code ---*/ /*--- Type import code ---*/ /*--- Variable import code ---*/ /*--- Function import code ---*/ /*--- Execution code ---*/ #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) if (__Pyx_patch_abc() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #endif /* "_qtexec_.pyx":25 * # This line makes cython happy * global __name__, __package__ * __compiled = True #px/ # <<<<<<<<<<<<<< * #__compiled = False * */ if (PyDict_SetItem(__pyx_d, __pyx_n_s_compiled, Py_True) < 0) __PYX_ERR(0, 25, __pyx_L1_error) /* "_qtexec_.pyx":28 * #__compiled = False * * import sys # <<<<<<<<<<<<<< * * from pybiklib import config as config_ */ __pyx_t_1 = __Pyx_Import(__pyx_n_s_sys, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 28, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_d, __pyx_n_s_sys, __pyx_t_1) < 0) __PYX_ERR(0, 28, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qtexec_.pyx":30 * import sys * * from pybiklib import config as config_ # <<<<<<<<<<<<<< * * from qt cimport * #px+ */ __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 30, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_n_s_config_2); __Pyx_GIVEREF(__pyx_n_s_config_2); PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_config_2); __pyx_t_2 = __Pyx_Import(__pyx_n_s_pybiklib, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 30, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_config_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 30, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_d, __pyx_n_s_config, __pyx_t_1) < 0) __PYX_ERR(0, 30, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qtexec_.pyx":46 * DEBUG_MSGEXT = 0x0020 * cdef long debug #px+ * debug = 0 # <<<<<<<<<<<<<< * * def set_debug_flags(module): */ __pyx_v_8_qtexec__debug = 0; /* "_qtexec_.pyx":48 * debug = 0 * * def set_debug_flags(module): # <<<<<<<<<<<<<< * global debug * if module.DEBUG_MSG: debug |= DEBUG_MSG */ __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_8_qtexec__1set_debug_flags, NULL, __pyx_n_s_qtexec); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 48, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_set_debug_flags, __pyx_t_2) < 0) __PYX_ERR(0, 48, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qtexec_.pyx":68 * #### . #### * * def get_gl_variant(): # <<<<<<<<<<<<<< * cdef int i #px+ * # This function requires that the app instance is already created */ __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_8_qtexec__3get_gl_variant, NULL, __pyx_n_s_qtexec); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 68, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_gl_variant, __pyx_t_2) < 0) __PYX_ERR(0, 68, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qtexec_.pyx":80 * return '' * * def exec_application(main): # <<<<<<<<<<<<<< * ##px- * #global app #http://pyqt.sourceforge.net/Docs/PyQt5/gotchas.html#crashes-on-exit */ __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_8_qtexec__5exec_application, NULL, __pyx_n_s_qtexec); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 80, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_exec_application, __pyx_t_2) < 0) __PYX_ERR(0, 80, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qtexec_.pyx":148 * * depends = { #px+ * 'qtwogld': ['_debug_ogl', '_gldraw_ogld', '_glarea_ogld', '_qtui_', '_qt_qtwogld'], # <<<<<<<<<<<<<< * 'qtwogldos': ['_debug_ogl', '_gldraw_ogld', '_glarea_ogldos', '_qtui_', '_qt_qtwogldos'], * 'qtwes2d': ['_debug_es2', '_gldraw_es2d', '_glarea_es2d', '_qtui_', '_qt_qtwes2d'], */ __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 148, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = PyList_New(5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 148, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_n_u_debug_ogl); __Pyx_GIVEREF(__pyx_n_u_debug_ogl); PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_u_debug_ogl); __Pyx_INCREF(__pyx_n_u_gldraw_ogld); __Pyx_GIVEREF(__pyx_n_u_gldraw_ogld); PyList_SET_ITEM(__pyx_t_1, 1, __pyx_n_u_gldraw_ogld); __Pyx_INCREF(__pyx_n_u_glarea_ogld); __Pyx_GIVEREF(__pyx_n_u_glarea_ogld); PyList_SET_ITEM(__pyx_t_1, 2, __pyx_n_u_glarea_ogld); __Pyx_INCREF(__pyx_n_u_qtui); __Pyx_GIVEREF(__pyx_n_u_qtui); PyList_SET_ITEM(__pyx_t_1, 3, __pyx_n_u_qtui); __Pyx_INCREF(__pyx_n_u_qt_qtwogld); __Pyx_GIVEREF(__pyx_n_u_qt_qtwogld); PyList_SET_ITEM(__pyx_t_1, 4, __pyx_n_u_qt_qtwogld); if (PyDict_SetItem(__pyx_t_2, __pyx_n_u_qtwogld, __pyx_t_1) < 0) __PYX_ERR(0, 148, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qtexec_.pyx":149 * depends = { #px+ * 'qtwogld': ['_debug_ogl', '_gldraw_ogld', '_glarea_ogld', '_qtui_', '_qt_qtwogld'], * 'qtwogldos': ['_debug_ogl', '_gldraw_ogld', '_glarea_ogldos', '_qtui_', '_qt_qtwogldos'], # <<<<<<<<<<<<<< * 'qtwes2d': ['_debug_es2', '_gldraw_es2d', '_glarea_es2d', '_qtui_', '_qt_qtwes2d'], * 'qtwes2dos': ['_debug_es2', '_gldraw_es2d', '_glarea_es2dos', '_qtui_', '_qt_qtwes2dos'], */ __pyx_t_1 = PyList_New(5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 149, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_n_u_debug_ogl); __Pyx_GIVEREF(__pyx_n_u_debug_ogl); PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_u_debug_ogl); __Pyx_INCREF(__pyx_n_u_gldraw_ogld); __Pyx_GIVEREF(__pyx_n_u_gldraw_ogld); PyList_SET_ITEM(__pyx_t_1, 1, __pyx_n_u_gldraw_ogld); __Pyx_INCREF(__pyx_n_u_glarea_ogldos); __Pyx_GIVEREF(__pyx_n_u_glarea_ogldos); PyList_SET_ITEM(__pyx_t_1, 2, __pyx_n_u_glarea_ogldos); __Pyx_INCREF(__pyx_n_u_qtui); __Pyx_GIVEREF(__pyx_n_u_qtui); PyList_SET_ITEM(__pyx_t_1, 3, __pyx_n_u_qtui); __Pyx_INCREF(__pyx_n_u_qt_qtwogldos); __Pyx_GIVEREF(__pyx_n_u_qt_qtwogldos); PyList_SET_ITEM(__pyx_t_1, 4, __pyx_n_u_qt_qtwogldos); if (PyDict_SetItem(__pyx_t_2, __pyx_n_u_qtwogldos, __pyx_t_1) < 0) __PYX_ERR(0, 148, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qtexec_.pyx":150 * 'qtwogld': ['_debug_ogl', '_gldraw_ogld', '_glarea_ogld', '_qtui_', '_qt_qtwogld'], * 'qtwogldos': ['_debug_ogl', '_gldraw_ogld', '_glarea_ogldos', '_qtui_', '_qt_qtwogldos'], * 'qtwes2d': ['_debug_es2', '_gldraw_es2d', '_glarea_es2d', '_qtui_', '_qt_qtwes2d'], # <<<<<<<<<<<<<< * 'qtwes2dos': ['_debug_es2', '_gldraw_es2d', '_glarea_es2dos', '_qtui_', '_qt_qtwes2dos'], * 'qtqogld': ['_debug_ogl', '_gldraw_ogld', '_glarea_ogld', '_qt_qtqogld'], */ __pyx_t_1 = PyList_New(5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 150, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_n_u_debug_es2); __Pyx_GIVEREF(__pyx_n_u_debug_es2); PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_u_debug_es2); __Pyx_INCREF(__pyx_n_u_gldraw_es2d); __Pyx_GIVEREF(__pyx_n_u_gldraw_es2d); PyList_SET_ITEM(__pyx_t_1, 1, __pyx_n_u_gldraw_es2d); __Pyx_INCREF(__pyx_n_u_glarea_es2d); __Pyx_GIVEREF(__pyx_n_u_glarea_es2d); PyList_SET_ITEM(__pyx_t_1, 2, __pyx_n_u_glarea_es2d); __Pyx_INCREF(__pyx_n_u_qtui); __Pyx_GIVEREF(__pyx_n_u_qtui); PyList_SET_ITEM(__pyx_t_1, 3, __pyx_n_u_qtui); __Pyx_INCREF(__pyx_n_u_qt_qtwes2d); __Pyx_GIVEREF(__pyx_n_u_qt_qtwes2d); PyList_SET_ITEM(__pyx_t_1, 4, __pyx_n_u_qt_qtwes2d); if (PyDict_SetItem(__pyx_t_2, __pyx_n_u_qtwes2d, __pyx_t_1) < 0) __PYX_ERR(0, 148, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qtexec_.pyx":151 * 'qtwogldos': ['_debug_ogl', '_gldraw_ogld', '_glarea_ogldos', '_qtui_', '_qt_qtwogldos'], * 'qtwes2d': ['_debug_es2', '_gldraw_es2d', '_glarea_es2d', '_qtui_', '_qt_qtwes2d'], * 'qtwes2dos': ['_debug_es2', '_gldraw_es2d', '_glarea_es2dos', '_qtui_', '_qt_qtwes2dos'], # <<<<<<<<<<<<<< * 'qtqogld': ['_debug_ogl', '_gldraw_ogld', '_glarea_ogld', '_qt_qtqogld'], * 'qtqogldos': ['_debug_ogl', '_gldraw_ogld', '_glarea_ogldos', '_qt_qtqogldos'], */ __pyx_t_1 = PyList_New(5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 151, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_n_u_debug_es2); __Pyx_GIVEREF(__pyx_n_u_debug_es2); PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_u_debug_es2); __Pyx_INCREF(__pyx_n_u_gldraw_es2d); __Pyx_GIVEREF(__pyx_n_u_gldraw_es2d); PyList_SET_ITEM(__pyx_t_1, 1, __pyx_n_u_gldraw_es2d); __Pyx_INCREF(__pyx_n_u_glarea_es2dos); __Pyx_GIVEREF(__pyx_n_u_glarea_es2dos); PyList_SET_ITEM(__pyx_t_1, 2, __pyx_n_u_glarea_es2dos); __Pyx_INCREF(__pyx_n_u_qtui); __Pyx_GIVEREF(__pyx_n_u_qtui); PyList_SET_ITEM(__pyx_t_1, 3, __pyx_n_u_qtui); __Pyx_INCREF(__pyx_n_u_qt_qtwes2dos); __Pyx_GIVEREF(__pyx_n_u_qt_qtwes2dos); PyList_SET_ITEM(__pyx_t_1, 4, __pyx_n_u_qt_qtwes2dos); if (PyDict_SetItem(__pyx_t_2, __pyx_n_u_qtwes2dos, __pyx_t_1) < 0) __PYX_ERR(0, 148, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qtexec_.pyx":152 * 'qtwes2d': ['_debug_es2', '_gldraw_es2d', '_glarea_es2d', '_qtui_', '_qt_qtwes2d'], * 'qtwes2dos': ['_debug_es2', '_gldraw_es2d', '_glarea_es2dos', '_qtui_', '_qt_qtwes2dos'], * 'qtqogld': ['_debug_ogl', '_gldraw_ogld', '_glarea_ogld', '_qt_qtqogld'], # <<<<<<<<<<<<<< * 'qtqogldos': ['_debug_ogl', '_gldraw_ogld', '_glarea_ogldos', '_qt_qtqogldos'], * 'qtqes2d': ['_debug_es2', '_gldraw_es2d', '_glarea_es2d', '_qt_qtqes2d'], */ __pyx_t_1 = PyList_New(4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 152, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_n_u_debug_ogl); __Pyx_GIVEREF(__pyx_n_u_debug_ogl); PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_u_debug_ogl); __Pyx_INCREF(__pyx_n_u_gldraw_ogld); __Pyx_GIVEREF(__pyx_n_u_gldraw_ogld); PyList_SET_ITEM(__pyx_t_1, 1, __pyx_n_u_gldraw_ogld); __Pyx_INCREF(__pyx_n_u_glarea_ogld); __Pyx_GIVEREF(__pyx_n_u_glarea_ogld); PyList_SET_ITEM(__pyx_t_1, 2, __pyx_n_u_glarea_ogld); __Pyx_INCREF(__pyx_n_u_qt_qtqogld); __Pyx_GIVEREF(__pyx_n_u_qt_qtqogld); PyList_SET_ITEM(__pyx_t_1, 3, __pyx_n_u_qt_qtqogld); if (PyDict_SetItem(__pyx_t_2, __pyx_n_u_qtqogld, __pyx_t_1) < 0) __PYX_ERR(0, 148, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qtexec_.pyx":153 * 'qtwes2dos': ['_debug_es2', '_gldraw_es2d', '_glarea_es2dos', '_qtui_', '_qt_qtwes2dos'], * 'qtqogld': ['_debug_ogl', '_gldraw_ogld', '_glarea_ogld', '_qt_qtqogld'], * 'qtqogldos': ['_debug_ogl', '_gldraw_ogld', '_glarea_ogldos', '_qt_qtqogldos'], # <<<<<<<<<<<<<< * 'qtqes2d': ['_debug_es2', '_gldraw_es2d', '_glarea_es2d', '_qt_qtqes2d'], * 'qtqes2dos': ['_debug_es2', '_gldraw_es2d', '_glarea_es2dos', '_qt_qtqes2dos'], */ __pyx_t_1 = PyList_New(4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 153, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_n_u_debug_ogl); __Pyx_GIVEREF(__pyx_n_u_debug_ogl); PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_u_debug_ogl); __Pyx_INCREF(__pyx_n_u_gldraw_ogld); __Pyx_GIVEREF(__pyx_n_u_gldraw_ogld); PyList_SET_ITEM(__pyx_t_1, 1, __pyx_n_u_gldraw_ogld); __Pyx_INCREF(__pyx_n_u_glarea_ogldos); __Pyx_GIVEREF(__pyx_n_u_glarea_ogldos); PyList_SET_ITEM(__pyx_t_1, 2, __pyx_n_u_glarea_ogldos); __Pyx_INCREF(__pyx_n_u_qt_qtqogldos); __Pyx_GIVEREF(__pyx_n_u_qt_qtqogldos); PyList_SET_ITEM(__pyx_t_1, 3, __pyx_n_u_qt_qtqogldos); if (PyDict_SetItem(__pyx_t_2, __pyx_n_u_qtqogldos, __pyx_t_1) < 0) __PYX_ERR(0, 148, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qtexec_.pyx":154 * 'qtqogld': ['_debug_ogl', '_gldraw_ogld', '_glarea_ogld', '_qt_qtqogld'], * 'qtqogldos': ['_debug_ogl', '_gldraw_ogld', '_glarea_ogldos', '_qt_qtqogldos'], * 'qtqes2d': ['_debug_es2', '_gldraw_es2d', '_glarea_es2d', '_qt_qtqes2d'], # <<<<<<<<<<<<<< * 'qtqes2dos': ['_debug_es2', '_gldraw_es2d', '_glarea_es2dos', '_qt_qtqes2dos'], * 'qtwogl': ['_gldraw_ogl', '_glarea_ogl', '_qtui_', '_qt_qtwogl'], */ __pyx_t_1 = PyList_New(4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 154, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_n_u_debug_es2); __Pyx_GIVEREF(__pyx_n_u_debug_es2); PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_u_debug_es2); __Pyx_INCREF(__pyx_n_u_gldraw_es2d); __Pyx_GIVEREF(__pyx_n_u_gldraw_es2d); PyList_SET_ITEM(__pyx_t_1, 1, __pyx_n_u_gldraw_es2d); __Pyx_INCREF(__pyx_n_u_glarea_es2d); __Pyx_GIVEREF(__pyx_n_u_glarea_es2d); PyList_SET_ITEM(__pyx_t_1, 2, __pyx_n_u_glarea_es2d); __Pyx_INCREF(__pyx_n_u_qt_qtqes2d); __Pyx_GIVEREF(__pyx_n_u_qt_qtqes2d); PyList_SET_ITEM(__pyx_t_1, 3, __pyx_n_u_qt_qtqes2d); if (PyDict_SetItem(__pyx_t_2, __pyx_n_u_qtqes2d, __pyx_t_1) < 0) __PYX_ERR(0, 148, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qtexec_.pyx":155 * 'qtqogldos': ['_debug_ogl', '_gldraw_ogld', '_glarea_ogldos', '_qt_qtqogldos'], * 'qtqes2d': ['_debug_es2', '_gldraw_es2d', '_glarea_es2d', '_qt_qtqes2d'], * 'qtqes2dos': ['_debug_es2', '_gldraw_es2d', '_glarea_es2dos', '_qt_qtqes2dos'], # <<<<<<<<<<<<<< * 'qtwogl': ['_gldraw_ogl', '_glarea_ogl', '_qtui_', '_qt_qtwogl'], * 'qtwoglos': ['_gldraw_ogl', '_glarea_oglos', '_qtui_', '_qt_qtwoglos'], */ __pyx_t_1 = PyList_New(4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 155, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_n_u_debug_es2); __Pyx_GIVEREF(__pyx_n_u_debug_es2); PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_u_debug_es2); __Pyx_INCREF(__pyx_n_u_gldraw_es2d); __Pyx_GIVEREF(__pyx_n_u_gldraw_es2d); PyList_SET_ITEM(__pyx_t_1, 1, __pyx_n_u_gldraw_es2d); __Pyx_INCREF(__pyx_n_u_glarea_es2dos); __Pyx_GIVEREF(__pyx_n_u_glarea_es2dos); PyList_SET_ITEM(__pyx_t_1, 2, __pyx_n_u_glarea_es2dos); __Pyx_INCREF(__pyx_n_u_qt_qtqes2dos); __Pyx_GIVEREF(__pyx_n_u_qt_qtqes2dos); PyList_SET_ITEM(__pyx_t_1, 3, __pyx_n_u_qt_qtqes2dos); if (PyDict_SetItem(__pyx_t_2, __pyx_n_u_qtqes2dos, __pyx_t_1) < 0) __PYX_ERR(0, 148, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qtexec_.pyx":156 * 'qtqes2d': ['_debug_es2', '_gldraw_es2d', '_glarea_es2d', '_qt_qtqes2d'], * 'qtqes2dos': ['_debug_es2', '_gldraw_es2d', '_glarea_es2dos', '_qt_qtqes2dos'], * 'qtwogl': ['_gldraw_ogl', '_glarea_ogl', '_qtui_', '_qt_qtwogl'], # <<<<<<<<<<<<<< * 'qtwoglos': ['_gldraw_ogl', '_glarea_oglos', '_qtui_', '_qt_qtwoglos'], * 'qtwes2': ['_gldraw_es2', '_glarea_es2', '_qtui_', '_qt_qtwes2'], */ __pyx_t_1 = PyList_New(4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 156, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_n_u_gldraw_ogl); __Pyx_GIVEREF(__pyx_n_u_gldraw_ogl); PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_u_gldraw_ogl); __Pyx_INCREF(__pyx_n_u_glarea_ogl); __Pyx_GIVEREF(__pyx_n_u_glarea_ogl); PyList_SET_ITEM(__pyx_t_1, 1, __pyx_n_u_glarea_ogl); __Pyx_INCREF(__pyx_n_u_qtui); __Pyx_GIVEREF(__pyx_n_u_qtui); PyList_SET_ITEM(__pyx_t_1, 2, __pyx_n_u_qtui); __Pyx_INCREF(__pyx_n_u_qt_qtwogl); __Pyx_GIVEREF(__pyx_n_u_qt_qtwogl); PyList_SET_ITEM(__pyx_t_1, 3, __pyx_n_u_qt_qtwogl); if (PyDict_SetItem(__pyx_t_2, __pyx_n_u_qtwogl, __pyx_t_1) < 0) __PYX_ERR(0, 148, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qtexec_.pyx":157 * 'qtqes2dos': ['_debug_es2', '_gldraw_es2d', '_glarea_es2dos', '_qt_qtqes2dos'], * 'qtwogl': ['_gldraw_ogl', '_glarea_ogl', '_qtui_', '_qt_qtwogl'], * 'qtwoglos': ['_gldraw_ogl', '_glarea_oglos', '_qtui_', '_qt_qtwoglos'], # <<<<<<<<<<<<<< * 'qtwes2': ['_gldraw_es2', '_glarea_es2', '_qtui_', '_qt_qtwes2'], * 'qtwes2os': ['_gldraw_es2', '_glarea_es2os', '_qtui_', '_qt_qtwes2os'], */ __pyx_t_1 = PyList_New(4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 157, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_n_u_gldraw_ogl); __Pyx_GIVEREF(__pyx_n_u_gldraw_ogl); PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_u_gldraw_ogl); __Pyx_INCREF(__pyx_n_u_glarea_oglos); __Pyx_GIVEREF(__pyx_n_u_glarea_oglos); PyList_SET_ITEM(__pyx_t_1, 1, __pyx_n_u_glarea_oglos); __Pyx_INCREF(__pyx_n_u_qtui); __Pyx_GIVEREF(__pyx_n_u_qtui); PyList_SET_ITEM(__pyx_t_1, 2, __pyx_n_u_qtui); __Pyx_INCREF(__pyx_n_u_qt_qtwoglos); __Pyx_GIVEREF(__pyx_n_u_qt_qtwoglos); PyList_SET_ITEM(__pyx_t_1, 3, __pyx_n_u_qt_qtwoglos); if (PyDict_SetItem(__pyx_t_2, __pyx_n_u_qtwoglos, __pyx_t_1) < 0) __PYX_ERR(0, 148, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qtexec_.pyx":158 * 'qtwogl': ['_gldraw_ogl', '_glarea_ogl', '_qtui_', '_qt_qtwogl'], * 'qtwoglos': ['_gldraw_ogl', '_glarea_oglos', '_qtui_', '_qt_qtwoglos'], * 'qtwes2': ['_gldraw_es2', '_glarea_es2', '_qtui_', '_qt_qtwes2'], # <<<<<<<<<<<<<< * 'qtwes2os': ['_gldraw_es2', '_glarea_es2os', '_qtui_', '_qt_qtwes2os'], * 'qtqogl': ['_gldraw_ogl', '_glarea_ogl', '_qt_qtqogl'], */ __pyx_t_1 = PyList_New(4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 158, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_n_u_gldraw_es2); __Pyx_GIVEREF(__pyx_n_u_gldraw_es2); PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_u_gldraw_es2); __Pyx_INCREF(__pyx_n_u_glarea_es2); __Pyx_GIVEREF(__pyx_n_u_glarea_es2); PyList_SET_ITEM(__pyx_t_1, 1, __pyx_n_u_glarea_es2); __Pyx_INCREF(__pyx_n_u_qtui); __Pyx_GIVEREF(__pyx_n_u_qtui); PyList_SET_ITEM(__pyx_t_1, 2, __pyx_n_u_qtui); __Pyx_INCREF(__pyx_n_u_qt_qtwes2); __Pyx_GIVEREF(__pyx_n_u_qt_qtwes2); PyList_SET_ITEM(__pyx_t_1, 3, __pyx_n_u_qt_qtwes2); if (PyDict_SetItem(__pyx_t_2, __pyx_n_u_qtwes2, __pyx_t_1) < 0) __PYX_ERR(0, 148, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qtexec_.pyx":159 * 'qtwoglos': ['_gldraw_ogl', '_glarea_oglos', '_qtui_', '_qt_qtwoglos'], * 'qtwes2': ['_gldraw_es2', '_glarea_es2', '_qtui_', '_qt_qtwes2'], * 'qtwes2os': ['_gldraw_es2', '_glarea_es2os', '_qtui_', '_qt_qtwes2os'], # <<<<<<<<<<<<<< * 'qtqogl': ['_gldraw_ogl', '_glarea_ogl', '_qt_qtqogl'], * 'qtqoglos': ['_gldraw_ogl', '_glarea_oglos', '_qt_qtqoglos'], */ __pyx_t_1 = PyList_New(4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 159, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_n_u_gldraw_es2); __Pyx_GIVEREF(__pyx_n_u_gldraw_es2); PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_u_gldraw_es2); __Pyx_INCREF(__pyx_n_u_glarea_es2os); __Pyx_GIVEREF(__pyx_n_u_glarea_es2os); PyList_SET_ITEM(__pyx_t_1, 1, __pyx_n_u_glarea_es2os); __Pyx_INCREF(__pyx_n_u_qtui); __Pyx_GIVEREF(__pyx_n_u_qtui); PyList_SET_ITEM(__pyx_t_1, 2, __pyx_n_u_qtui); __Pyx_INCREF(__pyx_n_u_qt_qtwes2os); __Pyx_GIVEREF(__pyx_n_u_qt_qtwes2os); PyList_SET_ITEM(__pyx_t_1, 3, __pyx_n_u_qt_qtwes2os); if (PyDict_SetItem(__pyx_t_2, __pyx_n_u_qtwes2os, __pyx_t_1) < 0) __PYX_ERR(0, 148, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qtexec_.pyx":160 * 'qtwes2': ['_gldraw_es2', '_glarea_es2', '_qtui_', '_qt_qtwes2'], * 'qtwes2os': ['_gldraw_es2', '_glarea_es2os', '_qtui_', '_qt_qtwes2os'], * 'qtqogl': ['_gldraw_ogl', '_glarea_ogl', '_qt_qtqogl'], # <<<<<<<<<<<<<< * 'qtqoglos': ['_gldraw_ogl', '_glarea_oglos', '_qt_qtqoglos'], * 'qtqes2': ['_gldraw_es2', '_glarea_es2', '_qt_qtqes2'], */ __pyx_t_1 = PyList_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 160, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_n_u_gldraw_ogl); __Pyx_GIVEREF(__pyx_n_u_gldraw_ogl); PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_u_gldraw_ogl); __Pyx_INCREF(__pyx_n_u_glarea_ogl); __Pyx_GIVEREF(__pyx_n_u_glarea_ogl); PyList_SET_ITEM(__pyx_t_1, 1, __pyx_n_u_glarea_ogl); __Pyx_INCREF(__pyx_n_u_qt_qtqogl); __Pyx_GIVEREF(__pyx_n_u_qt_qtqogl); PyList_SET_ITEM(__pyx_t_1, 2, __pyx_n_u_qt_qtqogl); if (PyDict_SetItem(__pyx_t_2, __pyx_n_u_qtqogl, __pyx_t_1) < 0) __PYX_ERR(0, 148, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qtexec_.pyx":161 * 'qtwes2os': ['_gldraw_es2', '_glarea_es2os', '_qtui_', '_qt_qtwes2os'], * 'qtqogl': ['_gldraw_ogl', '_glarea_ogl', '_qt_qtqogl'], * 'qtqoglos': ['_gldraw_ogl', '_glarea_oglos', '_qt_qtqoglos'], # <<<<<<<<<<<<<< * 'qtqes2': ['_gldraw_es2', '_glarea_es2', '_qt_qtqes2'], * 'qtqes2os': ['_gldraw_es2', '_glarea_es2os', '_qt_qtqes2os'], */ __pyx_t_1 = PyList_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 161, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_n_u_gldraw_ogl); __Pyx_GIVEREF(__pyx_n_u_gldraw_ogl); PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_u_gldraw_ogl); __Pyx_INCREF(__pyx_n_u_glarea_oglos); __Pyx_GIVEREF(__pyx_n_u_glarea_oglos); PyList_SET_ITEM(__pyx_t_1, 1, __pyx_n_u_glarea_oglos); __Pyx_INCREF(__pyx_n_u_qt_qtqoglos); __Pyx_GIVEREF(__pyx_n_u_qt_qtqoglos); PyList_SET_ITEM(__pyx_t_1, 2, __pyx_n_u_qt_qtqoglos); if (PyDict_SetItem(__pyx_t_2, __pyx_n_u_qtqoglos, __pyx_t_1) < 0) __PYX_ERR(0, 148, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qtexec_.pyx":162 * 'qtqogl': ['_gldraw_ogl', '_glarea_ogl', '_qt_qtqogl'], * 'qtqoglos': ['_gldraw_ogl', '_glarea_oglos', '_qt_qtqoglos'], * 'qtqes2': ['_gldraw_es2', '_glarea_es2', '_qt_qtqes2'], # <<<<<<<<<<<<<< * 'qtqes2os': ['_gldraw_es2', '_glarea_es2os', '_qt_qtqes2os'], * } */ __pyx_t_1 = PyList_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 162, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_n_u_gldraw_es2); __Pyx_GIVEREF(__pyx_n_u_gldraw_es2); PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_u_gldraw_es2); __Pyx_INCREF(__pyx_n_u_glarea_es2); __Pyx_GIVEREF(__pyx_n_u_glarea_es2); PyList_SET_ITEM(__pyx_t_1, 1, __pyx_n_u_glarea_es2); __Pyx_INCREF(__pyx_n_u_qt_qtqes2); __Pyx_GIVEREF(__pyx_n_u_qt_qtqes2); PyList_SET_ITEM(__pyx_t_1, 2, __pyx_n_u_qt_qtqes2); if (PyDict_SetItem(__pyx_t_2, __pyx_n_u_qtqes2, __pyx_t_1) < 0) __PYX_ERR(0, 148, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qtexec_.pyx":163 * 'qtqoglos': ['_gldraw_ogl', '_glarea_oglos', '_qt_qtqoglos'], * 'qtqes2': ['_gldraw_es2', '_glarea_es2', '_qt_qtqes2'], * 'qtqes2os': ['_gldraw_es2', '_glarea_es2os', '_qt_qtqes2os'], # <<<<<<<<<<<<<< * } * aliases = { #px+ */ __pyx_t_1 = PyList_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 163, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_n_u_gldraw_es2); __Pyx_GIVEREF(__pyx_n_u_gldraw_es2); PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_u_gldraw_es2); __Pyx_INCREF(__pyx_n_u_glarea_es2os); __Pyx_GIVEREF(__pyx_n_u_glarea_es2os); PyList_SET_ITEM(__pyx_t_1, 1, __pyx_n_u_glarea_es2os); __Pyx_INCREF(__pyx_n_u_qt_qtqes2os); __Pyx_GIVEREF(__pyx_n_u_qt_qtqes2os); PyList_SET_ITEM(__pyx_t_1, 2, __pyx_n_u_qt_qtqes2os); if (PyDict_SetItem(__pyx_t_2, __pyx_n_u_qtqes2os, __pyx_t_1) < 0) __PYX_ERR(0, 148, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (PyDict_SetItem(__pyx_d, __pyx_n_s_depends, __pyx_t_2) < 0) __PYX_ERR(0, 147, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qtexec_.pyx":166 * } * aliases = { #px+ * '': 'qtw???', # <<<<<<<<<<<<<< * 'qtw': 'qtw???', * 'qtq': 'qtq???', */ __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 166, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_t_2, __pyx_kp_u__2, __pyx_kp_u_qtw) < 0) __PYX_ERR(0, 166, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_2, __pyx_n_u_qtw_2, __pyx_kp_u_qtw) < 0) __PYX_ERR(0, 166, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_2, __pyx_n_u_qtq, __pyx_kp_u_qtq_2) < 0) __PYX_ERR(0, 166, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_2, __pyx_n_u_ogl, __pyx_n_u_qtwogl) < 0) __PYX_ERR(0, 166, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_2, __pyx_n_u_es2, __pyx_n_u_qtwes2) < 0) __PYX_ERR(0, 166, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_2, __pyx_n_u_d, __pyx_kp_u_qtw_d) < 0) __PYX_ERR(0, 166, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_2, __pyx_n_u_qtwd, __pyx_kp_u_qtw_d) < 0) __PYX_ERR(0, 166, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_2, __pyx_n_u_qtqd, __pyx_kp_u_qtq_d) < 0) __PYX_ERR(0, 166, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_2, __pyx_n_u_ogld, __pyx_n_u_qtwogld) < 0) __PYX_ERR(0, 166, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_2, __pyx_n_u_es2d, __pyx_n_u_qtwes2d) < 0) __PYX_ERR(0, 166, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_2, __pyx_n_u_os, __pyx_kp_u_qtw_os) < 0) __PYX_ERR(0, 166, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_2, __pyx_n_u_qtwos, __pyx_kp_u_qtw_os) < 0) __PYX_ERR(0, 166, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_2, __pyx_n_u_qtqos, __pyx_kp_u_qtq_os) < 0) __PYX_ERR(0, 166, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_2, __pyx_n_u_oglos, __pyx_n_u_qtwoglos) < 0) __PYX_ERR(0, 166, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_2, __pyx_n_u_es2os, __pyx_n_u_qtwes2os) < 0) __PYX_ERR(0, 166, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_2, __pyx_n_u_dos, __pyx_kp_u_qtw_dos) < 0) __PYX_ERR(0, 166, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_2, __pyx_n_u_qtwdos, __pyx_kp_u_qtw_dos) < 0) __PYX_ERR(0, 166, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_2, __pyx_n_u_qtqdos, __pyx_kp_u_qtq_dos) < 0) __PYX_ERR(0, 166, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_2, __pyx_n_u_ogldos, __pyx_n_u_qtwogldos) < 0) __PYX_ERR(0, 166, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_2, __pyx_n_u_es2dos, __pyx_n_u_qtwes2dos) < 0) __PYX_ERR(0, 166, __pyx_L1_error) if (PyDict_SetItem(__pyx_d, __pyx_n_s_aliases, __pyx_t_2) < 0) __PYX_ERR(0, 165, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qtexec_.pyx":1 * # -*- coding: utf-8 -*- # <<<<<<<<<<<<<< * # cython: profile=False * */ __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /*--- Wrapped vars code ---*/ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); if (__pyx_m) { if (__pyx_d) { __Pyx_AddTraceback("init _qtexec_", __pyx_clineno, __pyx_lineno, __pyx_filename); } Py_DECREF(__pyx_m); __pyx_m = 0; } else if (!PyErr_Occurred()) { PyErr_SetString(PyExc_ImportError, "init _qtexec_"); } __pyx_L0:; __Pyx_RefNannyFinishContext(); #if PY_MAJOR_VERSION < 3 return; #else return __pyx_m; #endif } /* --- Runtime support code --- */ /* Refnanny */ #if CYTHON_REFNANNY static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) { PyObject *m = NULL, *p = NULL; void *r = NULL; m = PyImport_ImportModule((char *)modname); if (!m) goto end; p = PyObject_GetAttrString(m, (char *)"RefNannyAPI"); if (!p) goto end; r = PyLong_AsVoidPtr(p); end: Py_XDECREF(p); Py_XDECREF(m); return (__Pyx_RefNannyAPIStruct *)r; } #endif /* GetBuiltinName */ static PyObject *__Pyx_GetBuiltinName(PyObject *name) { PyObject* result = __Pyx_PyObject_GetAttrStr(__pyx_b, name); if (unlikely(!result)) { PyErr_Format(PyExc_NameError, #if PY_MAJOR_VERSION >= 3 "name '%U' is not defined", name); #else "name '%.200s' is not defined", PyString_AS_STRING(name)); #endif } return result; } /* decode_c_string */ static CYTHON_INLINE PyObject* __Pyx_decode_c_string( const char* cstring, Py_ssize_t start, Py_ssize_t stop, const char* encoding, const char* errors, PyObject* (*decode_func)(const char *s, Py_ssize_t size, const char *errors)) { Py_ssize_t length; if (unlikely((start < 0) | (stop < 0))) { size_t slen = strlen(cstring); if (unlikely(slen > (size_t) PY_SSIZE_T_MAX)) { PyErr_SetString(PyExc_OverflowError, "c-string too long to convert to Python"); return NULL; } length = (Py_ssize_t) slen; if (start < 0) { start += length; if (start < 0) start = 0; } if (stop < 0) stop += length; } length = stop - start; if (unlikely(length <= 0)) return PyUnicode_FromUnicode(NULL, 0); cstring += start; if (decode_func) { return decode_func(cstring, length, errors); } else { return PyUnicode_Decode(cstring, length, encoding, errors); } } /* PyObjectCall */ #if CYTHON_COMPILING_IN_CPYTHON static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) { PyObject *result; ternaryfunc call = func->ob_type->tp_call; if (unlikely(!call)) return PyObject_Call(func, arg, kw); if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) return NULL; result = (*call)(func, arg, kw); Py_LeaveRecursiveCall(); if (unlikely(!result) && unlikely(!PyErr_Occurred())) { PyErr_SetString( PyExc_SystemError, "NULL result without error in PyObject_Call"); } return result; } #endif /* PyErrFetchRestore */ #if CYTHON_FAST_THREAD_STATE static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { PyObject *tmp_type, *tmp_value, *tmp_tb; tmp_type = tstate->curexc_type; tmp_value = tstate->curexc_value; tmp_tb = tstate->curexc_traceback; tstate->curexc_type = type; tstate->curexc_value = value; tstate->curexc_traceback = tb; Py_XDECREF(tmp_type); Py_XDECREF(tmp_value); Py_XDECREF(tmp_tb); } static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { *type = tstate->curexc_type; *value = tstate->curexc_value; *tb = tstate->curexc_traceback; tstate->curexc_type = 0; tstate->curexc_value = 0; tstate->curexc_traceback = 0; } #endif /* WriteUnraisableException */ static void __Pyx_WriteUnraisable(const char *name, CYTHON_UNUSED int clineno, CYTHON_UNUSED int lineno, CYTHON_UNUSED const char *filename, int full_traceback, CYTHON_UNUSED int nogil) { PyObject *old_exc, *old_val, *old_tb; PyObject *ctx; __Pyx_PyThreadState_declare #ifdef WITH_THREAD PyGILState_STATE state; if (nogil) state = PyGILState_Ensure(); #ifdef _MSC_VER else state = (PyGILState_STATE)-1; #endif #endif __Pyx_PyThreadState_assign __Pyx_ErrFetch(&old_exc, &old_val, &old_tb); if (full_traceback) { Py_XINCREF(old_exc); Py_XINCREF(old_val); Py_XINCREF(old_tb); __Pyx_ErrRestore(old_exc, old_val, old_tb); PyErr_PrintEx(1); } #if PY_MAJOR_VERSION < 3 ctx = PyString_FromString(name); #else ctx = PyUnicode_FromString(name); #endif __Pyx_ErrRestore(old_exc, old_val, old_tb); if (!ctx) { PyErr_WriteUnraisable(Py_None); } else { PyErr_WriteUnraisable(ctx); Py_DECREF(ctx); } #ifdef WITH_THREAD if (nogil) PyGILState_Release(state); #endif } /* GetModuleGlobalName */ static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name) { PyObject *result; #if !CYTHON_AVOID_BORROWED_REFS result = PyDict_GetItem(__pyx_d, name); if (likely(result)) { Py_INCREF(result); } else { #else result = PyObject_GetItem(__pyx_d, name); if (!result) { PyErr_Clear(); #endif result = __Pyx_GetBuiltinName(name); } return result; } /* PyCFunctionFastCall */ #if CYTHON_FAST_PYCCALL static CYTHON_INLINE PyObject * __Pyx_PyCFunction_FastCall(PyObject *func_obj, PyObject **args, Py_ssize_t nargs) { PyCFunctionObject *func = (PyCFunctionObject*)func_obj; PyCFunction meth = PyCFunction_GET_FUNCTION(func); PyObject *self = PyCFunction_GET_SELF(func); assert(PyCFunction_Check(func)); assert(METH_FASTCALL == (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST))); assert(nargs >= 0); assert(nargs == 0 || args != NULL); /* _PyCFunction_FastCallDict() must not be called with an exception set, because it may clear it (directly or indirectly) and so the caller loses its exception */ assert(!PyErr_Occurred()); return (*((__Pyx_PyCFunctionFast)meth)) (self, args, nargs, NULL); } #endif // CYTHON_FAST_PYCCALL /* PyFunctionFastCall */ #if CYTHON_FAST_PYCALL #include "frameobject.h" static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args, Py_ssize_t na, PyObject *globals) { PyFrameObject *f; PyThreadState *tstate = PyThreadState_GET(); PyObject **fastlocals; Py_ssize_t i; PyObject *result; assert(globals != NULL); /* XXX Perhaps we should create a specialized PyFrame_New() that doesn't take locals, but does take builtins without sanity checking them. */ assert(tstate != NULL); f = PyFrame_New(tstate, co, globals, NULL); if (f == NULL) { return NULL; } fastlocals = f->f_localsplus; for (i = 0; i < na; i++) { Py_INCREF(*args); fastlocals[i] = *args++; } result = PyEval_EvalFrameEx(f,0); ++tstate->recursion_depth; Py_DECREF(f); --tstate->recursion_depth; return result; } #if 1 || PY_VERSION_HEX < 0x030600B1 static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, int nargs, PyObject *kwargs) { PyCodeObject *co = (PyCodeObject *)PyFunction_GET_CODE(func); PyObject *globals = PyFunction_GET_GLOBALS(func); PyObject *argdefs = PyFunction_GET_DEFAULTS(func); PyObject *closure; #if PY_MAJOR_VERSION >= 3 PyObject *kwdefs; #endif PyObject *kwtuple, **k; PyObject **d; Py_ssize_t nd; Py_ssize_t nk; PyObject *result; assert(kwargs == NULL || PyDict_Check(kwargs)); nk = kwargs ? PyDict_Size(kwargs) : 0; if (Py_EnterRecursiveCall((char*)" while calling a Python object")) { return NULL; } if ( #if PY_MAJOR_VERSION >= 3 co->co_kwonlyargcount == 0 && #endif likely(kwargs == NULL || nk == 0) && co->co_flags == (CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE)) { if (argdefs == NULL && co->co_argcount == nargs) { result = __Pyx_PyFunction_FastCallNoKw(co, args, nargs, globals); goto done; } else if (nargs == 0 && argdefs != NULL && co->co_argcount == Py_SIZE(argdefs)) { /* function called with no arguments, but all parameters have a default value: use default values as arguments .*/ args = &PyTuple_GET_ITEM(argdefs, 0); result =__Pyx_PyFunction_FastCallNoKw(co, args, Py_SIZE(argdefs), globals); goto done; } } if (kwargs != NULL) { Py_ssize_t pos, i; kwtuple = PyTuple_New(2 * nk); if (kwtuple == NULL) { result = NULL; goto done; } k = &PyTuple_GET_ITEM(kwtuple, 0); pos = i = 0; while (PyDict_Next(kwargs, &pos, &k[i], &k[i+1])) { Py_INCREF(k[i]); Py_INCREF(k[i+1]); i += 2; } nk = i / 2; } else { kwtuple = NULL; k = NULL; } closure = PyFunction_GET_CLOSURE(func); #if PY_MAJOR_VERSION >= 3 kwdefs = PyFunction_GET_KW_DEFAULTS(func); #endif if (argdefs != NULL) { d = &PyTuple_GET_ITEM(argdefs, 0); nd = Py_SIZE(argdefs); } else { d = NULL; nd = 0; } #if PY_MAJOR_VERSION >= 3 result = PyEval_EvalCodeEx((PyObject*)co, globals, (PyObject *)NULL, args, nargs, k, (int)nk, d, (int)nd, kwdefs, closure); #else result = PyEval_EvalCodeEx(co, globals, (PyObject *)NULL, args, nargs, k, (int)nk, d, (int)nd, closure); #endif Py_XDECREF(kwtuple); done: Py_LeaveRecursiveCall(); return result; } #endif // CPython < 3.6 #endif // CYTHON_FAST_PYCALL /* PyObjectCallMethO */ #if CYTHON_COMPILING_IN_CPYTHON static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) { PyObject *self, *result; PyCFunction cfunc; cfunc = PyCFunction_GET_FUNCTION(func); self = PyCFunction_GET_SELF(func); if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) return NULL; result = cfunc(self, arg); Py_LeaveRecursiveCall(); if (unlikely(!result) && unlikely(!PyErr_Occurred())) { PyErr_SetString( PyExc_SystemError, "NULL result without error in PyObject_Call"); } return result; } #endif /* PyObjectCallOneArg */ #if CYTHON_COMPILING_IN_CPYTHON static PyObject* __Pyx__PyObject_CallOneArg(PyObject *func, PyObject *arg) { PyObject *result; PyObject *args = PyTuple_New(1); if (unlikely(!args)) return NULL; Py_INCREF(arg); PyTuple_SET_ITEM(args, 0, arg); result = __Pyx_PyObject_Call(func, args, NULL); Py_DECREF(args); return result; } static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { #if CYTHON_FAST_PYCALL if (PyFunction_Check(func)) { return __Pyx_PyFunction_FastCall(func, &arg, 1); } #endif #ifdef __Pyx_CyFunction_USED if (likely(PyCFunction_Check(func) || PyObject_TypeCheck(func, __pyx_CyFunctionType))) { #else if (likely(PyCFunction_Check(func))) { #endif if (likely(PyCFunction_GET_FLAGS(func) & METH_O)) { return __Pyx_PyObject_CallMethO(func, arg); #if CYTHON_FAST_PYCCALL } else if (PyCFunction_GET_FLAGS(func) & METH_FASTCALL) { return __Pyx_PyCFunction_FastCall(func, &arg, 1); #endif } } return __Pyx__PyObject_CallOneArg(func, arg); } #else static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { PyObject *result; PyObject *args = PyTuple_Pack(1, arg); if (unlikely(!args)) return NULL; result = __Pyx_PyObject_Call(func, args, NULL); Py_DECREF(args); return result; } #endif /* PyObjectCallNoArg */ #if CYTHON_COMPILING_IN_CPYTHON static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) { #if CYTHON_FAST_PYCALL if (PyFunction_Check(func)) { return __Pyx_PyFunction_FastCall(func, NULL, 0); } #endif #ifdef __Pyx_CyFunction_USED if (likely(PyCFunction_Check(func) || PyObject_TypeCheck(func, __pyx_CyFunctionType))) { #else if (likely(PyCFunction_Check(func))) { #endif if (likely(PyCFunction_GET_FLAGS(func) & METH_NOARGS)) { return __Pyx_PyObject_CallMethO(func, NULL); } } return __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL); } #endif /* SaveResetException */ #if CYTHON_FAST_THREAD_STATE static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { *type = tstate->exc_type; *value = tstate->exc_value; *tb = tstate->exc_traceback; Py_XINCREF(*type); Py_XINCREF(*value); Py_XINCREF(*tb); } static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { PyObject *tmp_type, *tmp_value, *tmp_tb; tmp_type = tstate->exc_type; tmp_value = tstate->exc_value; tmp_tb = tstate->exc_traceback; tstate->exc_type = type; tstate->exc_value = value; tstate->exc_traceback = tb; Py_XDECREF(tmp_type); Py_XDECREF(tmp_value); Py_XDECREF(tmp_tb); } #endif /* PyErrExceptionMatches */ #if CYTHON_FAST_THREAD_STATE static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err) { PyObject *exc_type = tstate->curexc_type; if (exc_type == err) return 1; if (unlikely(!exc_type)) return 0; return PyErr_GivenExceptionMatches(exc_type, err); } #endif /* GetException */ #if CYTHON_FAST_THREAD_STATE static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { #else static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) { #endif PyObject *local_type, *local_value, *local_tb; #if CYTHON_FAST_THREAD_STATE PyObject *tmp_type, *tmp_value, *tmp_tb; local_type = tstate->curexc_type; local_value = tstate->curexc_value; local_tb = tstate->curexc_traceback; tstate->curexc_type = 0; tstate->curexc_value = 0; tstate->curexc_traceback = 0; #else PyErr_Fetch(&local_type, &local_value, &local_tb); #endif PyErr_NormalizeException(&local_type, &local_value, &local_tb); #if CYTHON_FAST_THREAD_STATE if (unlikely(tstate->curexc_type)) #else if (unlikely(PyErr_Occurred())) #endif goto bad; #if PY_MAJOR_VERSION >= 3 if (local_tb) { if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0)) goto bad; } #endif Py_XINCREF(local_tb); Py_XINCREF(local_type); Py_XINCREF(local_value); *type = local_type; *value = local_value; *tb = local_tb; #if CYTHON_FAST_THREAD_STATE tmp_type = tstate->exc_type; tmp_value = tstate->exc_value; tmp_tb = tstate->exc_traceback; tstate->exc_type = local_type; tstate->exc_value = local_value; tstate->exc_traceback = local_tb; Py_XDECREF(tmp_type); Py_XDECREF(tmp_value); Py_XDECREF(tmp_tb); #else PyErr_SetExcInfo(local_type, local_value, local_tb); #endif return 0; bad: *type = 0; *value = 0; *tb = 0; Py_XDECREF(local_type); Py_XDECREF(local_value); Py_XDECREF(local_tb); return -1; } /* StringJoin */ #if !CYTHON_COMPILING_IN_CPYTHON static CYTHON_INLINE PyObject* __Pyx_PyBytes_Join(PyObject* sep, PyObject* values) { return PyObject_CallMethodObjArgs(sep, __pyx_n_s_join, values, NULL); } #endif /* Import */ static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) { PyObject *empty_list = 0; PyObject *module = 0; PyObject *global_dict = 0; PyObject *empty_dict = 0; PyObject *list; #if PY_VERSION_HEX < 0x03030000 PyObject *py_import; py_import = __Pyx_PyObject_GetAttrStr(__pyx_b, __pyx_n_s_import); if (!py_import) goto bad; #endif if (from_list) list = from_list; else { empty_list = PyList_New(0); if (!empty_list) goto bad; list = empty_list; } global_dict = PyModule_GetDict(__pyx_m); if (!global_dict) goto bad; empty_dict = PyDict_New(); if (!empty_dict) goto bad; { #if PY_MAJOR_VERSION >= 3 if (level == -1) { if (strchr(__Pyx_MODULE_NAME, '.')) { #if PY_VERSION_HEX < 0x03030000 PyObject *py_level = PyInt_FromLong(1); if (!py_level) goto bad; module = PyObject_CallFunctionObjArgs(py_import, name, global_dict, empty_dict, list, py_level, NULL); Py_DECREF(py_level); #else module = PyImport_ImportModuleLevelObject( name, global_dict, empty_dict, list, 1); #endif if (!module) { if (!PyErr_ExceptionMatches(PyExc_ImportError)) goto bad; PyErr_Clear(); } } level = 0; } #endif if (!module) { #if PY_VERSION_HEX < 0x03030000 PyObject *py_level = PyInt_FromLong(level); if (!py_level) goto bad; module = PyObject_CallFunctionObjArgs(py_import, name, global_dict, empty_dict, list, py_level, NULL); Py_DECREF(py_level); #else module = PyImport_ImportModuleLevelObject( name, global_dict, empty_dict, list, level); #endif } } bad: #if PY_VERSION_HEX < 0x03030000 Py_XDECREF(py_import); #endif Py_XDECREF(empty_list); Py_XDECREF(empty_dict); return module; } /* ImportFrom */ static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) { PyObject* value = __Pyx_PyObject_GetAttrStr(module, name); if (unlikely(!value) && PyErr_ExceptionMatches(PyExc_AttributeError)) { PyErr_Format(PyExc_ImportError, #if PY_MAJOR_VERSION < 3 "cannot import name %.230s", PyString_AS_STRING(name)); #else "cannot import name %S", name); #endif } return value; } /* CodeObjectCache */ static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) { int start = 0, mid = 0, end = count - 1; if (end >= 0 && code_line > entries[end].code_line) { return count; } while (start < end) { mid = start + (end - start) / 2; if (code_line < entries[mid].code_line) { end = mid; } else if (code_line > entries[mid].code_line) { start = mid + 1; } else { return mid; } } if (code_line <= entries[mid].code_line) { return mid; } else { return mid + 1; } } static PyCodeObject *__pyx_find_code_object(int code_line) { PyCodeObject* code_object; int pos; if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) { return NULL; } pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) { return NULL; } code_object = __pyx_code_cache.entries[pos].code_object; Py_INCREF(code_object); return code_object; } static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) { int pos, i; __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries; if (unlikely(!code_line)) { return; } if (unlikely(!entries)) { entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry)); if (likely(entries)) { __pyx_code_cache.entries = entries; __pyx_code_cache.max_count = 64; __pyx_code_cache.count = 1; entries[0].code_line = code_line; entries[0].code_object = code_object; Py_INCREF(code_object); } return; } pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) { PyCodeObject* tmp = entries[pos].code_object; entries[pos].code_object = code_object; Py_DECREF(tmp); return; } if (__pyx_code_cache.count == __pyx_code_cache.max_count) { int new_max = __pyx_code_cache.max_count + 64; entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc( __pyx_code_cache.entries, (size_t)new_max*sizeof(__Pyx_CodeObjectCacheEntry)); if (unlikely(!entries)) { return; } __pyx_code_cache.entries = entries; __pyx_code_cache.max_count = new_max; } for (i=__pyx_code_cache.count; i>pos; i--) { entries[i] = entries[i-1]; } entries[pos].code_line = code_line; entries[pos].code_object = code_object; __pyx_code_cache.count++; Py_INCREF(code_object); } /* AddTraceback */ #include "compile.h" #include "frameobject.h" #include "traceback.h" static PyCodeObject* __Pyx_CreateCodeObjectForTraceback( const char *funcname, int c_line, int py_line, const char *filename) { PyCodeObject *py_code = 0; PyObject *py_srcfile = 0; PyObject *py_funcname = 0; #if PY_MAJOR_VERSION < 3 py_srcfile = PyString_FromString(filename); #else py_srcfile = PyUnicode_FromString(filename); #endif if (!py_srcfile) goto bad; if (c_line) { #if PY_MAJOR_VERSION < 3 py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); #else py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); #endif } else { #if PY_MAJOR_VERSION < 3 py_funcname = PyString_FromString(funcname); #else py_funcname = PyUnicode_FromString(funcname); #endif } if (!py_funcname) goto bad; py_code = __Pyx_PyCode_New( 0, 0, 0, 0, 0, __pyx_empty_bytes, /*PyObject *code,*/ __pyx_empty_tuple, /*PyObject *consts,*/ __pyx_empty_tuple, /*PyObject *names,*/ __pyx_empty_tuple, /*PyObject *varnames,*/ __pyx_empty_tuple, /*PyObject *freevars,*/ __pyx_empty_tuple, /*PyObject *cellvars,*/ py_srcfile, /*PyObject *filename,*/ py_funcname, /*PyObject *name,*/ py_line, __pyx_empty_bytes /*PyObject *lnotab*/ ); Py_DECREF(py_srcfile); Py_DECREF(py_funcname); return py_code; bad: Py_XDECREF(py_srcfile); Py_XDECREF(py_funcname); return NULL; } static void __Pyx_AddTraceback(const char *funcname, int c_line, int py_line, const char *filename) { PyCodeObject *py_code = 0; PyFrameObject *py_frame = 0; py_code = __pyx_find_code_object(c_line ? c_line : py_line); if (!py_code) { py_code = __Pyx_CreateCodeObjectForTraceback( funcname, c_line, py_line, filename); if (!py_code) goto bad; __pyx_insert_code_object(c_line ? c_line : py_line, py_code); } py_frame = PyFrame_New( PyThreadState_GET(), /*PyThreadState *tstate,*/ py_code, /*PyCodeObject *code,*/ __pyx_d, /*PyObject *globals,*/ 0 /*PyObject *locals*/ ); if (!py_frame) goto bad; __Pyx_PyFrame_SetLineNumber(py_frame, py_line); PyTraceBack_Here(py_frame); bad: Py_XDECREF(py_code); Py_XDECREF(py_frame); } /* CIntToPy */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) { const int neg_one = (int) -1, const_zero = (int) 0; const int is_unsigned = neg_one > const_zero; if (is_unsigned) { if (sizeof(int) < sizeof(long)) { return PyInt_FromLong((long) value); } else if (sizeof(int) <= sizeof(unsigned long)) { return PyLong_FromUnsignedLong((unsigned long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) { return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); #endif } } else { if (sizeof(int) <= sizeof(long)) { return PyInt_FromLong((long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) { return PyLong_FromLongLong((PY_LONG_LONG) value); #endif } } { int one = 1; int little = (int)*(unsigned char *)&one; unsigned char *bytes = (unsigned char *)&value; return _PyLong_FromByteArray(bytes, sizeof(int), little, !is_unsigned); } } /* CIntFromPyVerify */ #define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\ __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0) #define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\ __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1) #define __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, exc)\ {\ func_type value = func_value;\ if (sizeof(target_type) < sizeof(func_type)) {\ if (unlikely(value != (func_type) (target_type) value)) {\ func_type zero = 0;\ if (exc && unlikely(value == (func_type)-1 && PyErr_Occurred()))\ return (target_type) -1;\ if (is_unsigned && unlikely(value < zero))\ goto raise_neg_overflow;\ else\ goto raise_overflow;\ }\ }\ return (target_type) value;\ } /* CIntFromPy */ static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) { const long neg_one = (long) -1, const_zero = (long) 0; const int is_unsigned = neg_one > const_zero; #if PY_MAJOR_VERSION < 3 if (likely(PyInt_Check(x))) { if (sizeof(long) < sizeof(long)) { __PYX_VERIFY_RETURN_INT(long, long, PyInt_AS_LONG(x)) } else { long val = PyInt_AS_LONG(x); if (is_unsigned && unlikely(val < 0)) { goto raise_neg_overflow; } return (long) val; } } else #endif if (likely(PyLong_Check(x))) { if (is_unsigned) { #if CYTHON_USE_PYLONG_INTERNALS const digit* digits = ((PyLongObject*)x)->ob_digit; switch (Py_SIZE(x)) { case 0: return (long) 0; case 1: __PYX_VERIFY_RETURN_INT(long, digit, digits[0]) case 2: if (8 * sizeof(long) > 1 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(long) >= 2 * PyLong_SHIFT) { return (long) (((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); } } break; case 3: if (8 * sizeof(long) > 2 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(long) >= 3 * PyLong_SHIFT) { return (long) (((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); } } break; case 4: if (8 * sizeof(long) > 3 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(long) >= 4 * PyLong_SHIFT) { return (long) (((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); } } break; } #endif #if CYTHON_COMPILING_IN_CPYTHON if (unlikely(Py_SIZE(x) < 0)) { goto raise_neg_overflow; } #else { int result = PyObject_RichCompareBool(x, Py_False, Py_LT); if (unlikely(result < 0)) return (long) -1; if (unlikely(result == 1)) goto raise_neg_overflow; } #endif if (sizeof(long) <= sizeof(unsigned long)) { __PYX_VERIFY_RETURN_INT_EXC(long, unsigned long, PyLong_AsUnsignedLong(x)) #ifdef HAVE_LONG_LONG } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { __PYX_VERIFY_RETURN_INT_EXC(long, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) #endif } } else { #if CYTHON_USE_PYLONG_INTERNALS const digit* digits = ((PyLongObject*)x)->ob_digit; switch (Py_SIZE(x)) { case 0: return (long) 0; case -1: __PYX_VERIFY_RETURN_INT(long, sdigit, (sdigit) (-(sdigit)digits[0])) case 1: __PYX_VERIFY_RETURN_INT(long, digit, +digits[0]) case -2: if (8 * sizeof(long) - 1 > 1 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { return (long) (((long)-1)*(((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); } } break; case 2: if (8 * sizeof(long) > 1 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { return (long) ((((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); } } break; case -3: if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { return (long) (((long)-1)*(((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); } } break; case 3: if (8 * sizeof(long) > 2 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { return (long) ((((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); } } break; case -4: if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { return (long) (((long)-1)*(((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); } } break; case 4: if (8 * sizeof(long) > 3 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { return (long) ((((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); } } break; } #endif if (sizeof(long) <= sizeof(long)) { __PYX_VERIFY_RETURN_INT_EXC(long, long, PyLong_AsLong(x)) #ifdef HAVE_LONG_LONG } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { __PYX_VERIFY_RETURN_INT_EXC(long, PY_LONG_LONG, PyLong_AsLongLong(x)) #endif } } { #if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray) PyErr_SetString(PyExc_RuntimeError, "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"); #else long val; PyObject *v = __Pyx_PyNumber_IntOrLong(x); #if PY_MAJOR_VERSION < 3 if (likely(v) && !PyLong_Check(v)) { PyObject *tmp = v; v = PyNumber_Long(tmp); Py_DECREF(tmp); } #endif if (likely(v)) { int one = 1; int is_little = (int)*(unsigned char *)&one; unsigned char *bytes = (unsigned char *)&val; int ret = _PyLong_AsByteArray((PyLongObject *)v, bytes, sizeof(val), is_little, !is_unsigned); Py_DECREF(v); if (likely(!ret)) return val; } #endif return (long) -1; } } else { long val; PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); if (!tmp) return (long) -1; val = __Pyx_PyInt_As_long(tmp); Py_DECREF(tmp); return val; } raise_overflow: PyErr_SetString(PyExc_OverflowError, "value too large to convert to long"); return (long) -1; raise_neg_overflow: PyErr_SetString(PyExc_OverflowError, "can't convert negative value to long"); return (long) -1; } /* CIntToPy */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) { const long neg_one = (long) -1, const_zero = (long) 0; const int is_unsigned = neg_one > const_zero; if (is_unsigned) { if (sizeof(long) < sizeof(long)) { return PyInt_FromLong((long) value); } else if (sizeof(long) <= sizeof(unsigned long)) { return PyLong_FromUnsignedLong((unsigned long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); #endif } } else { if (sizeof(long) <= sizeof(long)) { return PyInt_FromLong((long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { return PyLong_FromLongLong((PY_LONG_LONG) value); #endif } } { int one = 1; int little = (int)*(unsigned char *)&one; unsigned char *bytes = (unsigned char *)&value; return _PyLong_FromByteArray(bytes, sizeof(long), little, !is_unsigned); } } /* CIntFromPy */ static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) { const int neg_one = (int) -1, const_zero = (int) 0; const int is_unsigned = neg_one > const_zero; #if PY_MAJOR_VERSION < 3 if (likely(PyInt_Check(x))) { if (sizeof(int) < sizeof(long)) { __PYX_VERIFY_RETURN_INT(int, long, PyInt_AS_LONG(x)) } else { long val = PyInt_AS_LONG(x); if (is_unsigned && unlikely(val < 0)) { goto raise_neg_overflow; } return (int) val; } } else #endif if (likely(PyLong_Check(x))) { if (is_unsigned) { #if CYTHON_USE_PYLONG_INTERNALS const digit* digits = ((PyLongObject*)x)->ob_digit; switch (Py_SIZE(x)) { case 0: return (int) 0; case 1: __PYX_VERIFY_RETURN_INT(int, digit, digits[0]) case 2: if (8 * sizeof(int) > 1 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(int) >= 2 * PyLong_SHIFT) { return (int) (((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); } } break; case 3: if (8 * sizeof(int) > 2 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(int) >= 3 * PyLong_SHIFT) { return (int) (((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); } } break; case 4: if (8 * sizeof(int) > 3 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(int) >= 4 * PyLong_SHIFT) { return (int) (((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); } } break; } #endif #if CYTHON_COMPILING_IN_CPYTHON if (unlikely(Py_SIZE(x) < 0)) { goto raise_neg_overflow; } #else { int result = PyObject_RichCompareBool(x, Py_False, Py_LT); if (unlikely(result < 0)) return (int) -1; if (unlikely(result == 1)) goto raise_neg_overflow; } #endif if (sizeof(int) <= sizeof(unsigned long)) { __PYX_VERIFY_RETURN_INT_EXC(int, unsigned long, PyLong_AsUnsignedLong(x)) #ifdef HAVE_LONG_LONG } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) { __PYX_VERIFY_RETURN_INT_EXC(int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) #endif } } else { #if CYTHON_USE_PYLONG_INTERNALS const digit* digits = ((PyLongObject*)x)->ob_digit; switch (Py_SIZE(x)) { case 0: return (int) 0; case -1: __PYX_VERIFY_RETURN_INT(int, sdigit, (sdigit) (-(sdigit)digits[0])) case 1: __PYX_VERIFY_RETURN_INT(int, digit, +digits[0]) case -2: if (8 * sizeof(int) - 1 > 1 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { return (int) (((int)-1)*(((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); } } break; case 2: if (8 * sizeof(int) > 1 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { return (int) ((((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); } } break; case -3: if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { return (int) (((int)-1)*(((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); } } break; case 3: if (8 * sizeof(int) > 2 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { return (int) ((((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); } } break; case -4: if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) { return (int) (((int)-1)*(((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); } } break; case 4: if (8 * sizeof(int) > 3 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) { return (int) ((((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); } } break; } #endif if (sizeof(int) <= sizeof(long)) { __PYX_VERIFY_RETURN_INT_EXC(int, long, PyLong_AsLong(x)) #ifdef HAVE_LONG_LONG } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) { __PYX_VERIFY_RETURN_INT_EXC(int, PY_LONG_LONG, PyLong_AsLongLong(x)) #endif } } { #if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray) PyErr_SetString(PyExc_RuntimeError, "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"); #else int val; PyObject *v = __Pyx_PyNumber_IntOrLong(x); #if PY_MAJOR_VERSION < 3 if (likely(v) && !PyLong_Check(v)) { PyObject *tmp = v; v = PyNumber_Long(tmp); Py_DECREF(tmp); } #endif if (likely(v)) { int one = 1; int is_little = (int)*(unsigned char *)&one; unsigned char *bytes = (unsigned char *)&val; int ret = _PyLong_AsByteArray((PyLongObject *)v, bytes, sizeof(val), is_little, !is_unsigned); Py_DECREF(v); if (likely(!ret)) return val; } #endif return (int) -1; } } else { int val; PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); if (!tmp) return (int) -1; val = __Pyx_PyInt_As_int(tmp); Py_DECREF(tmp); return val; } raise_overflow: PyErr_SetString(PyExc_OverflowError, "value too large to convert to int"); return (int) -1; raise_neg_overflow: PyErr_SetString(PyExc_OverflowError, "can't convert negative value to int"); return (int) -1; } /* CheckBinaryVersion */ static int __Pyx_check_binary_version(void) { char ctversion[4], rtversion[4]; PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION); PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion()); if (ctversion[0] != rtversion[0] || ctversion[2] != rtversion[2]) { char message[200]; PyOS_snprintf(message, sizeof(message), "compiletime version %s of module '%.100s' " "does not match runtime version %s", ctversion, __Pyx_MODULE_NAME, rtversion); return PyErr_WarnEx(NULL, message, 1); } return 0; } /* InitStrings */ static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) { while (t->p) { #if PY_MAJOR_VERSION < 3 if (t->is_unicode) { *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL); } else if (t->intern) { *t->p = PyString_InternFromString(t->s); } else { *t->p = PyString_FromStringAndSize(t->s, t->n - 1); } #else if (t->is_unicode | t->is_str) { if (t->intern) { *t->p = PyUnicode_InternFromString(t->s); } else if (t->encoding) { *t->p = PyUnicode_Decode(t->s, t->n - 1, t->encoding, NULL); } else { *t->p = PyUnicode_FromStringAndSize(t->s, t->n - 1); } } else { *t->p = PyBytes_FromStringAndSize(t->s, t->n - 1); } #endif if (!*t->p) return -1; ++t; } return 0; } static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char* c_str) { return __Pyx_PyUnicode_FromStringAndSize(c_str, (Py_ssize_t)strlen(c_str)); } static CYTHON_INLINE char* __Pyx_PyObject_AsString(PyObject* o) { Py_ssize_t ignore; return __Pyx_PyObject_AsStringAndSize(o, &ignore); } static CYTHON_INLINE char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_t *length) { #if CYTHON_COMPILING_IN_CPYTHON && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT) if ( #if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII __Pyx_sys_getdefaultencoding_not_ascii && #endif PyUnicode_Check(o)) { #if PY_VERSION_HEX < 0x03030000 char* defenc_c; PyObject* defenc = _PyUnicode_AsDefaultEncodedString(o, NULL); if (!defenc) return NULL; defenc_c = PyBytes_AS_STRING(defenc); #if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII { char* end = defenc_c + PyBytes_GET_SIZE(defenc); char* c; for (c = defenc_c; c < end; c++) { if ((unsigned char) (*c) >= 128) { PyUnicode_AsASCIIString(o); return NULL; } } } #endif *length = PyBytes_GET_SIZE(defenc); return defenc_c; #else if (__Pyx_PyUnicode_READY(o) == -1) return NULL; #if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII if (PyUnicode_IS_ASCII(o)) { *length = PyUnicode_GET_LENGTH(o); return PyUnicode_AsUTF8(o); } else { PyUnicode_AsASCIIString(o); return NULL; } #else return PyUnicode_AsUTF8AndSize(o, length); #endif #endif } else #endif #if (!CYTHON_COMPILING_IN_PYPY) || (defined(PyByteArray_AS_STRING) && defined(PyByteArray_GET_SIZE)) if (PyByteArray_Check(o)) { *length = PyByteArray_GET_SIZE(o); return PyByteArray_AS_STRING(o); } else #endif { char* result; int r = PyBytes_AsStringAndSize(o, &result, length); if (unlikely(r < 0)) { return NULL; } else { return result; } } } static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) { int is_true = x == Py_True; if (is_true | (x == Py_False) | (x == Py_None)) return is_true; else return PyObject_IsTrue(x); } static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x) { #if CYTHON_USE_TYPE_SLOTS PyNumberMethods *m; #endif const char *name = NULL; PyObject *res = NULL; #if PY_MAJOR_VERSION < 3 if (PyInt_Check(x) || PyLong_Check(x)) #else if (PyLong_Check(x)) #endif return __Pyx_NewRef(x); #if CYTHON_USE_TYPE_SLOTS m = Py_TYPE(x)->tp_as_number; #if PY_MAJOR_VERSION < 3 if (m && m->nb_int) { name = "int"; res = PyNumber_Int(x); } else if (m && m->nb_long) { name = "long"; res = PyNumber_Long(x); } #else if (m && m->nb_int) { name = "int"; res = PyNumber_Long(x); } #endif #else res = PyNumber_Int(x); #endif if (res) { #if PY_MAJOR_VERSION < 3 if (!PyInt_Check(res) && !PyLong_Check(res)) { #else if (!PyLong_Check(res)) { #endif PyErr_Format(PyExc_TypeError, "__%.4s__ returned non-%.4s (type %.200s)", name, name, Py_TYPE(res)->tp_name); Py_DECREF(res); return NULL; } } else if (!PyErr_Occurred()) { PyErr_SetString(PyExc_TypeError, "an integer is required"); } return res; } static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) { Py_ssize_t ival; PyObject *x; #if PY_MAJOR_VERSION < 3 if (likely(PyInt_CheckExact(b))) { if (sizeof(Py_ssize_t) >= sizeof(long)) return PyInt_AS_LONG(b); else return PyInt_AsSsize_t(x); } #endif if (likely(PyLong_CheckExact(b))) { #if CYTHON_USE_PYLONG_INTERNALS const digit* digits = ((PyLongObject*)b)->ob_digit; const Py_ssize_t size = Py_SIZE(b); if (likely(__Pyx_sst_abs(size) <= 1)) { ival = likely(size) ? digits[0] : 0; if (size == -1) ival = -ival; return ival; } else { switch (size) { case 2: if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { return (Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); } break; case -2: if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { return -(Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); } break; case 3: if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { return (Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); } break; case -3: if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { return -(Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); } break; case 4: if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { return (Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); } break; case -4: if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { return -(Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); } break; } } #endif return PyLong_AsSsize_t(b); } x = PyNumber_Index(b); if (!x) return -1; ival = PyInt_AsSsize_t(x); Py_DECREF(x); return ival; } static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) { return PyInt_FromSize_t(ival); } #endif /* Py_PYTHON_H */ pybik-3.0/csrc/_qt_qtwes2_moc.h0000644000175000017500000002704213173054542016702 0ustar barccbarcc00000000000000//generated from: build/temp.linux-x86_64-3.5/pybiklib/ext/qt_qtwes2.py #include "Python.h" //line 51 #include //line 53 #include //line 54 #include //line 55 #include //line 56 #include //line 58 #include //line 59 #include //line 60 #include //line 61 #include //line 62 #include //line 63 #include //line 64 #include //line 65 #include //line 66 #include //line 67 #include //line 68 #include //line 69 class Renderer : public QObject //line 326 { //line 326 Q_OBJECT //line 326 public: //line 326 Renderer() //line 328 : QObject() {} //line 329 void connect_gldebuglogger(QOpenGLDebugLogger *gldebuglogger) //line 331 { //line 332 QObject::connect(gldebuglogger, SIGNAL(messageLogged(const QOpenGLDebugMessage &)), this, //line 333 SLOT(on_messageLogged(const QOpenGLDebugMessage &)), Qt::DirectConnection); //line 334 } //line 336 Q_INVOKABLE void on_beforeRendering(); //line 339 Q_INVOKABLE void on_messageLogged(const QOpenGLDebugMessage &msg); //line 366 Q_SIGNAL void picking_result(int); //line 371 Q_SIGNAL void debug_fps(int); //line 372 Q_SIGNAL void offscreen_image(QImage); //line 374 }; //line 380 class SectionNameIndexItem : public QObject //line 607 { //line 607 Q_OBJECT //line 607 public: //line 607 QString m_section; //line 609 Q_SIGNAL void section_changed(); //line 609 Q_PROPERTY (QString section MEMBER m_section NOTIFY section_changed) //line 609 QString m_name; //line 610 Q_SIGNAL void name_changed(); //line 610 Q_PROPERTY (QString name MEMBER m_name NOTIFY name_changed) //line 610 int m_index; //line 611 Q_PROPERTY (int index MEMBER m_index) //line 611 SectionNameIndexItem(const QString §ion, const QString &name, int index) //line 614 { m_section = section; m_name = name; m_index = index; } //line 615 }; //line 616 class TextKeyItem : public QObject //line 619 { //line 619 Q_OBJECT //line 619 public: //line 619 QString m_text; //line 621 Q_SIGNAL void text_changed(); //line 621 Q_PROPERTY (QString text MEMBER m_text NOTIFY text_changed) //line 621 QString m_key; //line 622 Q_SIGNAL void key_changed(); //line 622 Q_PROPERTY (QString key MEMBER m_key NOTIFY key_changed) //line 622 TextKeyItem(const QString &text, const QString &key) //line 625 { m_text = text; m_key = key; } //line 626 }; //line 627 class FacePrefsItem : public QObject //line 630 { //line 630 Q_OBJECT //line 630 public: //line 630 QString m_color; //line 632 Q_SIGNAL void color_changed(); //line 632 Q_PROPERTY (QString color MEMBER m_color NOTIFY color_changed) //line 632 QString m_folder; //line 633 Q_SIGNAL void folder_changed(); //line 633 Q_PROPERTY (QString folder MEMBER m_folder NOTIFY folder_changed) //line 633 QString m_image; //line 634 Q_SIGNAL void image_changed(); //line 634 Q_PROPERTY (QString image MEMBER m_image NOTIFY image_changed) //line 634 QString m_imagemode; //line 635 Q_SIGNAL void imagemode_changed(); //line 635 Q_PROPERTY (QString imagemode MEMBER m_imagemode NOTIFY imagemode_changed) //line 635 FacePrefsItem(const QString &color, const QString &folder, const QString &image, const QString &imagemode) //line 638 { m_color = color; m_folder = folder; m_image = image; m_imagemode = imagemode; } //line 639 }; //line 640 class MainView : public QMainWindow //line 1168 { //line 1168 Q_OBJECT //line 1168 public: //line 1168 MainView() //line 1170 : QMainWindow() {} //line 1171 void connect_renderer(Renderer *renderer); //line 1181 void connect_renderer_offscreen(Renderer *renderer); //line 1194 void connect_view(); //line 1202 void connect_sidepane(QPushButton *button, QTreeView *treeview); //line 1212 Q_INVOKABLE void _on_picking_result(int index); //line 1224 Q_INVOKABLE void _on_debug_fps(int fps); //line 1228 Q_INVOKABLE void _on_offscreen_image(QImage image); //line 1236 Q_INVOKABLE void on_beforeSynchronizing(); //line 1243 Q_INVOKABLE void on_sceneGraphInvalidated(); //line 1263 void resizeEvent(QResizeEvent *event); //line 1272 void closeEvent(QCloseEvent *event); //line 1280 void keyPressEvent(QKeyEvent *event); //line 1288 Q_INVOKABLE void on_action_challenge_triggered(); //line 1295 Q_INVOKABLE void on_action_new_solved_triggered(); //line 1296 Q_INVOKABLE void on_action_preferences_triggered(); //line 1297 Q_INVOKABLE void on_action_reset_rotation_triggered(); //line 1298 Q_INVOKABLE void on_action_rewind_triggered(); //line 1299 Q_INVOKABLE void on_action_previous_triggered(); //line 1300 Q_INVOKABLE void on_action_stop_triggered(); //line 1301 Q_INVOKABLE void on_action_play_triggered(); //line 1302 Q_INVOKABLE void on_action_next_triggered(); //line 1303 Q_INVOKABLE void on_action_forward_triggered(); //line 1304 Q_INVOKABLE void on_action_mark_set_triggered(); //line 1305 Q_INVOKABLE void on_action_mark_remove_triggered(); //line 1306 Q_INVOKABLE void on_action_initial_state_triggered(); //line 1307 Q_INVOKABLE void on_action_edit_cube_triggered(); //line 1308 Q_INVOKABLE void on_action_selectmodel_triggered(); //line 1312 Q_INVOKABLE void on_action_selectmodel_back_triggered(); //line 1320 void _listwidget_itemActivated(QListWidgetItem *item); //line 1329 Q_INVOKABLE void on_listwidget_itemActivated(QListWidgetItem *item); //line 1342 Q_INVOKABLE void on_listwidget_itemClicked(QListWidgetItem *item); //line 1345 Q_INVOKABLE void on_action_quit_triggered(); //line 1348 Q_INVOKABLE void on_action_editbar_toggled(bool checked); //line 1351 Q_INVOKABLE void on_action_statusbar_toggled(bool checked); //line 1355 Q_INVOKABLE void on_action_help_triggered(); //line 1359 Q_INVOKABLE void on_action_info_triggered(); //line 1364 Q_INVOKABLE void on_splitter_splitterMoved(int pos, int index); //line 1367 Q_INVOKABLE void on_button_edit_clear_clicked(); //line 1372 Q_INVOKABLE void on_button_edit_exec_clicked(); //line 1376 Q_INVOKABLE void on_action_jump_to_editbar_triggered(); //line 1379 Q_INVOKABLE void _on_button_sidepane_clicked(); //line 1383 Q_INVOKABLE void _on_treeview_activated(const QModelIndex &index); //line 1386 }; //line 1392 class MoveEdit : public QLineEdit //line 1397 { //line 1397 Q_OBJECT //line 1397 public: //line 1397 MoveEdit(); //line 1400 void keyPressEvent(QKeyEvent *event); //line 1406 Q_INVOKABLE void on_returnpressed() const; //line 1421 }; //line 1423 class DrawingArea : public QOpenGLWidget //line 1427 { //line 1427 Q_OBJECT //line 1427 public: //line 1427 DrawingArea() //line 1429 : QOpenGLWidget() {} //line 1430 void init(); //line 1432 void paintGL(); //line 1441 void resizeGL(int width, int height); //line 1445 void keyPressEvent(QKeyEvent *event); //line 1449 void mousePressEvent(QMouseEvent *event); //line 1454 void mouseReleaseEvent(QMouseEvent *event); //line 1457 void mouseMoveEvent(QMouseEvent *event); //line 1460 void wheelEvent(QWheelEvent *event); //line 1463 void dragEnterEvent(QDragEnterEvent *event); //line 1466 void dropEvent(QDropEvent *event); //line 1477 }; //line 1490 class PreferencesDialog : public QDialog //line 1494 { //line 1494 Q_OBJECT //line 1494 public: //line 1494 QStandardItemModel *liststore_movekeys; //line 1495 bool liststore_blocked; //line 1497 QString current_facekey; //line 1499 QString image_dirname; //line 1501 PreferencesDialog(QWidget *parent) //line 1505 : QDialog(parent), liststore_blocked(false) {} //line 1506 void init(); //line 1508 Q_INVOKABLE void on_slider_animspeed_valueChanged(int value); //line 1518 Q_INVOKABLE void on_button_animspeed_reset_clicked(); //line 1521 Q_INVOKABLE void on_combobox_shader_currentIndexChanged(int value); //line 1525 Q_INVOKABLE void on_button_shader_reset_clicked(); //line 1528 Q_INVOKABLE void on_combobox_samples_currentIndexChanged(int value); //line 1532 Q_INVOKABLE void on_button_antialiasing_reset_clicked(); //line 1537 Q_INVOKABLE void on_checkbox_mirror_faces_toggled(bool checked); //line 1541 Q_INVOKABLE void on_spinbox_mirror_faces_valueChanged(double value); //line 1545 Q_INVOKABLE void on_button_mirror_faces_reset_clicked(); //line 1548 Q_INVOKABLE void on_button_mousemode_quad_toggled(bool checked); //line 1554 Q_INVOKABLE void on_button_mousemode_ext_toggled(bool checked); //line 1558 Q_INVOKABLE void on_button_mousemode_gesture_toggled(bool checked); //line 1562 void fill_move_key_list(); //line 1567 PyObject *get_move_key_list(); //line 1586 Q_INVOKABLE void on_liststore_movekeys_itemChanged(QStandardItem *unused_item); //line 1596 Q_INVOKABLE void on_button_movekey_add_clicked(); //line 1601 Q_INVOKABLE void on_button_movekey_remove_clicked(); //line 1607 Q_INVOKABLE void on_button_movekey_reset_clicked(); //line 1612 Q_INVOKABLE void _on_listview_faces_currentRowChanged(const QModelIndex ¤t); //line 1617 Q_INVOKABLE void on_button_color_clicked(); //line 1622 Q_INVOKABLE void on_button_color_reset_clicked(); //line 1632 Q_INVOKABLE void on_combobox_image_activated(int index); //line 1638 Q_INVOKABLE void on_button_image_reset_clicked(); //line 1642 Q_INVOKABLE void on_radiobutton_tiled_toggled(bool checked); //line 1646 Q_INVOKABLE void on_radiobutton_mosaic_toggled(bool checked); //line 1650 Q_INVOKABLE void on_button_background_color_clicked(); //line 1655 Q_INVOKABLE void on_button_background_color_reset_clicked(); //line 1664 }; //line 1667 class HelpDialog : public QDialog //line 1753 { //line 1753 Q_OBJECT //line 1753 public: //line 1753 HelpDialog(QWidget *parent) //line 1755 : QDialog(parent) {} //line 1756 void init(const QString &helptext); //line 1758 }; //line 1760 class AboutDialog : public QDialog //line 1774 { //line 1774 Q_OBJECT //line 1774 public: //line 1774 AboutDialog(QWidget *parent) //line 1776 : QDialog(parent) {} //line 1777 void init(); //line 1779 void showEvent(QShowEvent *unused_event); //line 1783 void resizeEvent(QResizeEvent *unused_event); //line 1787 bool eventFilter(QObject *unused_watched, QEvent *event); //line 1791 Q_INVOKABLE void on_text_translators_anchorClicked(const QUrl &link) //line 1796 { QDesktopServices::openUrl(link); } //line 1797 Q_INVOKABLE void on_tab_widget_currentChanged(int index); //line 1800 Q_INVOKABLE void on_text_license_short_anchorClicked(const QUrl &url); //line 1804 }; //line 1806 pybik-3.0/csrc/_gldraw_ogl.c0000644000175000017500000047243013173167576016250 0ustar barccbarcc00000000000000/* Generated by Cython 0.25.2 */ #define PY_SSIZE_T_CLEAN #include "Python.h" #ifndef Py_PYTHON_H #error Python headers needed to compile C extensions, please install development version of Python. #elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03020000) #error Cython requires Python 2.6+ or Python 3.2+. #else #define CYTHON_ABI "0_25_2" #include #ifndef offsetof #define offsetof(type, member) ( (size_t) & ((type*)0) -> member ) #endif #if !defined(WIN32) && !defined(MS_WINDOWS) #ifndef __stdcall #define __stdcall #endif #ifndef __cdecl #define __cdecl #endif #ifndef __fastcall #define __fastcall #endif #endif #ifndef DL_IMPORT #define DL_IMPORT(t) t #endif #ifndef DL_EXPORT #define DL_EXPORT(t) t #endif #ifndef HAVE_LONG_LONG #if PY_VERSION_HEX >= 0x03030000 || (PY_MAJOR_VERSION == 2 && PY_VERSION_HEX >= 0x02070000) #define HAVE_LONG_LONG #endif #endif #ifndef PY_LONG_LONG #define PY_LONG_LONG LONG_LONG #endif #ifndef Py_HUGE_VAL #define Py_HUGE_VAL HUGE_VAL #endif #ifdef PYPY_VERSION #define CYTHON_COMPILING_IN_PYPY 1 #define CYTHON_COMPILING_IN_PYSTON 0 #define CYTHON_COMPILING_IN_CPYTHON 0 #undef CYTHON_USE_TYPE_SLOTS #define CYTHON_USE_TYPE_SLOTS 0 #undef CYTHON_USE_ASYNC_SLOTS #define CYTHON_USE_ASYNC_SLOTS 0 #undef CYTHON_USE_PYLIST_INTERNALS #define CYTHON_USE_PYLIST_INTERNALS 0 #undef CYTHON_USE_UNICODE_INTERNALS #define CYTHON_USE_UNICODE_INTERNALS 0 #undef CYTHON_USE_UNICODE_WRITER #define CYTHON_USE_UNICODE_WRITER 0 #undef CYTHON_USE_PYLONG_INTERNALS #define CYTHON_USE_PYLONG_INTERNALS 0 #undef CYTHON_AVOID_BORROWED_REFS #define CYTHON_AVOID_BORROWED_REFS 1 #undef CYTHON_ASSUME_SAFE_MACROS #define CYTHON_ASSUME_SAFE_MACROS 0 #undef CYTHON_UNPACK_METHODS #define CYTHON_UNPACK_METHODS 0 #undef CYTHON_FAST_THREAD_STATE #define CYTHON_FAST_THREAD_STATE 0 #undef CYTHON_FAST_PYCALL #define CYTHON_FAST_PYCALL 0 #elif defined(PYSTON_VERSION) #define CYTHON_COMPILING_IN_PYPY 0 #define CYTHON_COMPILING_IN_PYSTON 1 #define CYTHON_COMPILING_IN_CPYTHON 0 #ifndef CYTHON_USE_TYPE_SLOTS #define CYTHON_USE_TYPE_SLOTS 1 #endif #undef CYTHON_USE_ASYNC_SLOTS #define CYTHON_USE_ASYNC_SLOTS 0 #undef CYTHON_USE_PYLIST_INTERNALS #define CYTHON_USE_PYLIST_INTERNALS 0 #ifndef CYTHON_USE_UNICODE_INTERNALS #define CYTHON_USE_UNICODE_INTERNALS 1 #endif #undef CYTHON_USE_UNICODE_WRITER #define CYTHON_USE_UNICODE_WRITER 0 #undef CYTHON_USE_PYLONG_INTERNALS #define CYTHON_USE_PYLONG_INTERNALS 0 #ifndef CYTHON_AVOID_BORROWED_REFS #define CYTHON_AVOID_BORROWED_REFS 0 #endif #ifndef CYTHON_ASSUME_SAFE_MACROS #define CYTHON_ASSUME_SAFE_MACROS 1 #endif #ifndef CYTHON_UNPACK_METHODS #define CYTHON_UNPACK_METHODS 1 #endif #undef CYTHON_FAST_THREAD_STATE #define CYTHON_FAST_THREAD_STATE 0 #undef CYTHON_FAST_PYCALL #define CYTHON_FAST_PYCALL 0 #else #define CYTHON_COMPILING_IN_PYPY 0 #define CYTHON_COMPILING_IN_PYSTON 0 #define CYTHON_COMPILING_IN_CPYTHON 1 #ifndef CYTHON_USE_TYPE_SLOTS #define CYTHON_USE_TYPE_SLOTS 1 #endif #if PY_MAJOR_VERSION < 3 #undef CYTHON_USE_ASYNC_SLOTS #define CYTHON_USE_ASYNC_SLOTS 0 #elif !defined(CYTHON_USE_ASYNC_SLOTS) #define CYTHON_USE_ASYNC_SLOTS 1 #endif #if PY_VERSION_HEX < 0x02070000 #undef CYTHON_USE_PYLONG_INTERNALS #define CYTHON_USE_PYLONG_INTERNALS 0 #elif !defined(CYTHON_USE_PYLONG_INTERNALS) #define CYTHON_USE_PYLONG_INTERNALS 1 #endif #ifndef CYTHON_USE_PYLIST_INTERNALS #define CYTHON_USE_PYLIST_INTERNALS 1 #endif #ifndef CYTHON_USE_UNICODE_INTERNALS #define CYTHON_USE_UNICODE_INTERNALS 1 #endif #if PY_VERSION_HEX < 0x030300F0 #undef CYTHON_USE_UNICODE_WRITER #define CYTHON_USE_UNICODE_WRITER 0 #elif !defined(CYTHON_USE_UNICODE_WRITER) #define CYTHON_USE_UNICODE_WRITER 1 #endif #ifndef CYTHON_AVOID_BORROWED_REFS #define CYTHON_AVOID_BORROWED_REFS 0 #endif #ifndef CYTHON_ASSUME_SAFE_MACROS #define CYTHON_ASSUME_SAFE_MACROS 1 #endif #ifndef CYTHON_UNPACK_METHODS #define CYTHON_UNPACK_METHODS 1 #endif #ifndef CYTHON_FAST_THREAD_STATE #define CYTHON_FAST_THREAD_STATE 1 #endif #ifndef CYTHON_FAST_PYCALL #define CYTHON_FAST_PYCALL 1 #endif #endif #if !defined(CYTHON_FAST_PYCCALL) #define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1) #endif #if CYTHON_USE_PYLONG_INTERNALS #include "longintrepr.h" #undef SHIFT #undef BASE #undef MASK #endif #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x02070600 && !defined(Py_OptimizeFlag) #define Py_OptimizeFlag 0 #endif #define __PYX_BUILD_PY_SSIZE_T "n" #define CYTHON_FORMAT_SSIZE_T "z" #if PY_MAJOR_VERSION < 3 #define __Pyx_BUILTIN_MODULE_NAME "__builtin__" #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ PyCode_New(a+k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) #define __Pyx_DefaultClassType PyClass_Type #else #define __Pyx_BUILTIN_MODULE_NAME "builtins" #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) #define __Pyx_DefaultClassType PyType_Type #endif #ifndef Py_TPFLAGS_CHECKTYPES #define Py_TPFLAGS_CHECKTYPES 0 #endif #ifndef Py_TPFLAGS_HAVE_INDEX #define Py_TPFLAGS_HAVE_INDEX 0 #endif #ifndef Py_TPFLAGS_HAVE_NEWBUFFER #define Py_TPFLAGS_HAVE_NEWBUFFER 0 #endif #ifndef Py_TPFLAGS_HAVE_FINALIZE #define Py_TPFLAGS_HAVE_FINALIZE 0 #endif #ifndef METH_FASTCALL #define METH_FASTCALL 0x80 typedef PyObject *(*__Pyx_PyCFunctionFast) (PyObject *self, PyObject **args, Py_ssize_t nargs, PyObject *kwnames); #else #define __Pyx_PyCFunctionFast _PyCFunctionFast #endif #if CYTHON_FAST_PYCCALL #define __Pyx_PyFastCFunction_Check(func)\ ((PyCFunction_Check(func) && (METH_FASTCALL == (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST))))) #else #define __Pyx_PyFastCFunction_Check(func) 0 #endif #if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND) #define CYTHON_PEP393_ENABLED 1 #define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ?\ 0 : _PyUnicode_Ready((PyObject *)(op))) #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_LENGTH(u) #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i) #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) PyUnicode_MAX_CHAR_VALUE(u) #define __Pyx_PyUnicode_KIND(u) PyUnicode_KIND(u) #define __Pyx_PyUnicode_DATA(u) PyUnicode_DATA(u) #define __Pyx_PyUnicode_READ(k, d, i) PyUnicode_READ(k, d, i) #define __Pyx_PyUnicode_WRITE(k, d, i, ch) PyUnicode_WRITE(k, d, i, ch) #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u))) #else #define CYTHON_PEP393_ENABLED 0 #define PyUnicode_1BYTE_KIND 1 #define PyUnicode_2BYTE_KIND 2 #define PyUnicode_4BYTE_KIND 4 #define __Pyx_PyUnicode_READY(op) (0) #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_SIZE(u) #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i])) #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) ((sizeof(Py_UNICODE) == 2) ? 65535 : 1114111) #define __Pyx_PyUnicode_KIND(u) (sizeof(Py_UNICODE)) #define __Pyx_PyUnicode_DATA(u) ((void*)PyUnicode_AS_UNICODE(u)) #define __Pyx_PyUnicode_READ(k, d, i) ((void)(k), (Py_UCS4)(((Py_UNICODE*)d)[i])) #define __Pyx_PyUnicode_WRITE(k, d, i, ch) (((void)(k)), ((Py_UNICODE*)d)[i] = ch) #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_SIZE(u)) #endif #if CYTHON_COMPILING_IN_PYPY #define __Pyx_PyUnicode_Concat(a, b) PyNumber_Add(a, b) #define __Pyx_PyUnicode_ConcatSafe(a, b) PyNumber_Add(a, b) #else #define __Pyx_PyUnicode_Concat(a, b) PyUnicode_Concat(a, b) #define __Pyx_PyUnicode_ConcatSafe(a, b) ((unlikely((a) == Py_None) || unlikely((b) == Py_None)) ?\ PyNumber_Add(a, b) : __Pyx_PyUnicode_Concat(a, b)) #endif #if CYTHON_COMPILING_IN_PYPY && !defined(PyUnicode_Contains) #define PyUnicode_Contains(u, s) PySequence_Contains(u, s) #endif #if CYTHON_COMPILING_IN_PYPY && !defined(PyByteArray_Check) #define PyByteArray_Check(obj) PyObject_TypeCheck(obj, &PyByteArray_Type) #endif #if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Format) #define PyObject_Format(obj, fmt) PyObject_CallMethod(obj, "__format__", "O", fmt) #endif #if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc) #define PyObject_Malloc(s) PyMem_Malloc(s) #define PyObject_Free(p) PyMem_Free(p) #define PyObject_Realloc(p) PyMem_Realloc(p) #endif #if CYTHON_COMPILING_IN_PYSTON #define __Pyx_PyCode_HasFreeVars(co) PyCode_HasFreeVars(co) #define __Pyx_PyFrame_SetLineNumber(frame, lineno) PyFrame_SetLineNumber(frame, lineno) #else #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0) #define __Pyx_PyFrame_SetLineNumber(frame, lineno) (frame)->f_lineno = (lineno) #endif #define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b)) #define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b)) #if PY_MAJOR_VERSION >= 3 #define __Pyx_PyString_Format(a, b) PyUnicode_Format(a, b) #else #define __Pyx_PyString_Format(a, b) PyString_Format(a, b) #endif #if PY_MAJOR_VERSION < 3 && !defined(PyObject_ASCII) #define PyObject_ASCII(o) PyObject_Repr(o) #endif #if PY_MAJOR_VERSION >= 3 #define PyBaseString_Type PyUnicode_Type #define PyStringObject PyUnicodeObject #define PyString_Type PyUnicode_Type #define PyString_Check PyUnicode_Check #define PyString_CheckExact PyUnicode_CheckExact #endif #if PY_MAJOR_VERSION >= 3 #define __Pyx_PyBaseString_Check(obj) PyUnicode_Check(obj) #define __Pyx_PyBaseString_CheckExact(obj) PyUnicode_CheckExact(obj) #else #define __Pyx_PyBaseString_Check(obj) (PyString_Check(obj) || PyUnicode_Check(obj)) #define __Pyx_PyBaseString_CheckExact(obj) (PyString_CheckExact(obj) || PyUnicode_CheckExact(obj)) #endif #ifndef PySet_CheckExact #define PySet_CheckExact(obj) (Py_TYPE(obj) == &PySet_Type) #endif #define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type) #define __Pyx_PyException_Check(obj) __Pyx_TypeCheck(obj, PyExc_Exception) #if PY_MAJOR_VERSION >= 3 #define PyIntObject PyLongObject #define PyInt_Type PyLong_Type #define PyInt_Check(op) PyLong_Check(op) #define PyInt_CheckExact(op) PyLong_CheckExact(op) #define PyInt_FromString PyLong_FromString #define PyInt_FromUnicode PyLong_FromUnicode #define PyInt_FromLong PyLong_FromLong #define PyInt_FromSize_t PyLong_FromSize_t #define PyInt_FromSsize_t PyLong_FromSsize_t #define PyInt_AsLong PyLong_AsLong #define PyInt_AS_LONG PyLong_AS_LONG #define PyInt_AsSsize_t PyLong_AsSsize_t #define PyInt_AsUnsignedLongMask PyLong_AsUnsignedLongMask #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask #define PyNumber_Int PyNumber_Long #endif #if PY_MAJOR_VERSION >= 3 #define PyBoolObject PyLongObject #endif #if PY_MAJOR_VERSION >= 3 && CYTHON_COMPILING_IN_PYPY #ifndef PyUnicode_InternFromString #define PyUnicode_InternFromString(s) PyUnicode_FromString(s) #endif #endif #if PY_VERSION_HEX < 0x030200A4 typedef long Py_hash_t; #define __Pyx_PyInt_FromHash_t PyInt_FromLong #define __Pyx_PyInt_AsHash_t PyInt_AsLong #else #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t #define __Pyx_PyInt_AsHash_t PyInt_AsSsize_t #endif #if PY_MAJOR_VERSION >= 3 #define __Pyx_PyMethod_New(func, self, klass) ((self) ? PyMethod_New(func, self) : PyInstanceMethod_New(func)) #else #define __Pyx_PyMethod_New(func, self, klass) PyMethod_New(func, self, klass) #endif #if CYTHON_USE_ASYNC_SLOTS #if PY_VERSION_HEX >= 0x030500B1 #define __Pyx_PyAsyncMethodsStruct PyAsyncMethods #define __Pyx_PyType_AsAsync(obj) (Py_TYPE(obj)->tp_as_async) #else typedef struct { unaryfunc am_await; unaryfunc am_aiter; unaryfunc am_anext; } __Pyx_PyAsyncMethodsStruct; #define __Pyx_PyType_AsAsync(obj) ((__Pyx_PyAsyncMethodsStruct*) (Py_TYPE(obj)->tp_reserved)) #endif #else #define __Pyx_PyType_AsAsync(obj) NULL #endif #ifndef CYTHON_RESTRICT #if defined(__GNUC__) #define CYTHON_RESTRICT __restrict__ #elif defined(_MSC_VER) && _MSC_VER >= 1400 #define CYTHON_RESTRICT __restrict #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L #define CYTHON_RESTRICT restrict #else #define CYTHON_RESTRICT #endif #endif #ifndef CYTHON_UNUSED # if defined(__GNUC__) # if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) # define CYTHON_UNUSED __attribute__ ((__unused__)) # else # define CYTHON_UNUSED # endif # elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER)) # define CYTHON_UNUSED __attribute__ ((__unused__)) # else # define CYTHON_UNUSED # endif #endif #ifndef CYTHON_MAYBE_UNUSED_VAR # if defined(__cplusplus) template void CYTHON_MAYBE_UNUSED_VAR( const T& ) { } # else # define CYTHON_MAYBE_UNUSED_VAR(x) (void)(x) # endif #endif #ifndef CYTHON_NCP_UNUSED # if CYTHON_COMPILING_IN_CPYTHON # define CYTHON_NCP_UNUSED # else # define CYTHON_NCP_UNUSED CYTHON_UNUSED # endif #endif #define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None) #ifndef CYTHON_INLINE #if defined(__clang__) #define CYTHON_INLINE __inline__ __attribute__ ((__unused__)) #elif defined(__GNUC__) #define CYTHON_INLINE __inline__ #elif defined(_MSC_VER) #define CYTHON_INLINE __inline #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L #define CYTHON_INLINE inline #else #define CYTHON_INLINE #endif #endif #if defined(WIN32) || defined(MS_WINDOWS) #define _USE_MATH_DEFINES #endif #include #ifdef NAN #define __PYX_NAN() ((float) NAN) #else static CYTHON_INLINE float __PYX_NAN() { float value; memset(&value, 0xFF, sizeof(value)); return value; } #endif #if defined(__CYGWIN__) && defined(_LDBL_EQ_DBL) #define __Pyx_truncl trunc #else #define __Pyx_truncl truncl #endif #define __PYX_ERR(f_index, lineno, Ln_error) \ { \ __pyx_filename = __pyx_f[f_index]; __pyx_lineno = lineno; __pyx_clineno = __LINE__; goto Ln_error; \ } #if PY_MAJOR_VERSION >= 3 #define __Pyx_PyNumber_Divide(x,y) PyNumber_TrueDivide(x,y) #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceTrueDivide(x,y) #else #define __Pyx_PyNumber_Divide(x,y) PyNumber_TrueDivide(x,y) #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceTrueDivide(x,y) #endif #ifndef __PYX_EXTERN_C #ifdef __cplusplus #define __PYX_EXTERN_C extern "C" #else #define __PYX_EXTERN_C extern #endif #endif #define __PYX_HAVE___gldraw_ogl #define __PYX_HAVE_API___gldraw_ogl #include #include #include "GL/gl.h" #include "GL/glext.h" #include #ifdef _OPENMP #include #endif /* _OPENMP */ #ifdef PYREX_WITHOUT_ASSERTIONS #define CYTHON_WITHOUT_ASSERTIONS #endif typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* encoding; const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry; #define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0 #define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT 0 #define __PYX_DEFAULT_STRING_ENCODING "" #define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString #define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize #define __Pyx_uchar_cast(c) ((unsigned char)c) #define __Pyx_long_cast(x) ((long)x) #define __Pyx_fits_Py_ssize_t(v, type, is_signed) (\ (sizeof(type) < sizeof(Py_ssize_t)) ||\ (sizeof(type) > sizeof(Py_ssize_t) &&\ likely(v < (type)PY_SSIZE_T_MAX ||\ v == (type)PY_SSIZE_T_MAX) &&\ (!is_signed || likely(v > (type)PY_SSIZE_T_MIN ||\ v == (type)PY_SSIZE_T_MIN))) ||\ (sizeof(type) == sizeof(Py_ssize_t) &&\ (is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\ v == (type)PY_SSIZE_T_MAX))) ) #if defined (__cplusplus) && __cplusplus >= 201103L #include #define __Pyx_sst_abs(value) std::abs(value) #elif SIZEOF_INT >= SIZEOF_SIZE_T #define __Pyx_sst_abs(value) abs(value) #elif SIZEOF_LONG >= SIZEOF_SIZE_T #define __Pyx_sst_abs(value) labs(value) #elif defined (_MSC_VER) && defined (_M_X64) #define __Pyx_sst_abs(value) _abs64(value) #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L #define __Pyx_sst_abs(value) llabs(value) #elif defined (__GNUC__) #define __Pyx_sst_abs(value) __builtin_llabs(value) #else #define __Pyx_sst_abs(value) ((value<0) ? -value : value) #endif static CYTHON_INLINE char* __Pyx_PyObject_AsString(PyObject*); static CYTHON_INLINE char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length); #define __Pyx_PyByteArray_FromString(s) PyByteArray_FromStringAndSize((const char*)s, strlen((const char*)s)) #define __Pyx_PyByteArray_FromStringAndSize(s, l) PyByteArray_FromStringAndSize((const char*)s, l) #define __Pyx_PyBytes_FromString PyBytes_FromString #define __Pyx_PyBytes_FromStringAndSize PyBytes_FromStringAndSize static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char*); #if PY_MAJOR_VERSION < 3 #define __Pyx_PyStr_FromString __Pyx_PyBytes_FromString #define __Pyx_PyStr_FromStringAndSize __Pyx_PyBytes_FromStringAndSize #else #define __Pyx_PyStr_FromString __Pyx_PyUnicode_FromString #define __Pyx_PyStr_FromStringAndSize __Pyx_PyUnicode_FromStringAndSize #endif #define __Pyx_PyObject_AsSString(s) ((signed char*) __Pyx_PyObject_AsString(s)) #define __Pyx_PyObject_AsUString(s) ((unsigned char*) __Pyx_PyObject_AsString(s)) #define __Pyx_PyObject_FromCString(s) __Pyx_PyObject_FromString((const char*)s) #define __Pyx_PyBytes_FromCString(s) __Pyx_PyBytes_FromString((const char*)s) #define __Pyx_PyByteArray_FromCString(s) __Pyx_PyByteArray_FromString((const char*)s) #define __Pyx_PyStr_FromCString(s) __Pyx_PyStr_FromString((const char*)s) #define __Pyx_PyUnicode_FromCString(s) __Pyx_PyUnicode_FromString((const char*)s) #if PY_MAJOR_VERSION < 3 static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u) { const Py_UNICODE *u_end = u; while (*u_end++) ; return (size_t)(u_end - u - 1); } #else #define __Pyx_Py_UNICODE_strlen Py_UNICODE_strlen #endif #define __Pyx_PyUnicode_FromUnicode(u) PyUnicode_FromUnicode(u, __Pyx_Py_UNICODE_strlen(u)) #define __Pyx_PyUnicode_FromUnicodeAndLength PyUnicode_FromUnicode #define __Pyx_PyUnicode_AsUnicode PyUnicode_AsUnicode #define __Pyx_NewRef(obj) (Py_INCREF(obj), obj) #define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None) #define __Pyx_PyBool_FromLong(b) ((b) ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False)) static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*); static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x); static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*); static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t); #if CYTHON_ASSUME_SAFE_MACROS #define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x)) #else #define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x) #endif #define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x)) #if PY_MAJOR_VERSION >= 3 #define __Pyx_PyNumber_Int(x) (PyLong_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Long(x)) #else #define __Pyx_PyNumber_Int(x) (PyInt_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Int(x)) #endif #define __Pyx_PyNumber_Float(x) (PyFloat_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Float(x)) #if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII static int __Pyx_sys_getdefaultencoding_not_ascii; static int __Pyx_init_sys_getdefaultencoding_params(void) { PyObject* sys; PyObject* default_encoding = NULL; PyObject* ascii_chars_u = NULL; PyObject* ascii_chars_b = NULL; const char* default_encoding_c; sys = PyImport_ImportModule("sys"); if (!sys) goto bad; default_encoding = PyObject_CallMethod(sys, (char*) "getdefaultencoding", NULL); Py_DECREF(sys); if (!default_encoding) goto bad; default_encoding_c = PyBytes_AsString(default_encoding); if (!default_encoding_c) goto bad; if (strcmp(default_encoding_c, "ascii") == 0) { __Pyx_sys_getdefaultencoding_not_ascii = 0; } else { char ascii_chars[128]; int c; for (c = 0; c < 128; c++) { ascii_chars[c] = c; } __Pyx_sys_getdefaultencoding_not_ascii = 1; ascii_chars_u = PyUnicode_DecodeASCII(ascii_chars, 128, NULL); if (!ascii_chars_u) goto bad; ascii_chars_b = PyUnicode_AsEncodedString(ascii_chars_u, default_encoding_c, NULL); if (!ascii_chars_b || !PyBytes_Check(ascii_chars_b) || memcmp(ascii_chars, PyBytes_AS_STRING(ascii_chars_b), 128) != 0) { PyErr_Format( PyExc_ValueError, "This module compiled with c_string_encoding=ascii, but default encoding '%.200s' is not a superset of ascii.", default_encoding_c); goto bad; } Py_DECREF(ascii_chars_u); Py_DECREF(ascii_chars_b); } Py_DECREF(default_encoding); return 0; bad: Py_XDECREF(default_encoding); Py_XDECREF(ascii_chars_u); Py_XDECREF(ascii_chars_b); return -1; } #endif #if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT && PY_MAJOR_VERSION >= 3 #define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeUTF8(c_str, size, NULL) #else #define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_Decode(c_str, size, __PYX_DEFAULT_STRING_ENCODING, NULL) #if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT static char* __PYX_DEFAULT_STRING_ENCODING; static int __Pyx_init_sys_getdefaultencoding_params(void) { PyObject* sys; PyObject* default_encoding = NULL; char* default_encoding_c; sys = PyImport_ImportModule("sys"); if (!sys) goto bad; default_encoding = PyObject_CallMethod(sys, (char*) (const char*) "getdefaultencoding", NULL); Py_DECREF(sys); if (!default_encoding) goto bad; default_encoding_c = PyBytes_AsString(default_encoding); if (!default_encoding_c) goto bad; __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c)); if (!__PYX_DEFAULT_STRING_ENCODING) goto bad; strcpy(__PYX_DEFAULT_STRING_ENCODING, default_encoding_c); Py_DECREF(default_encoding); return 0; bad: Py_XDECREF(default_encoding); return -1; } #endif #endif /* Test for GCC > 2.95 */ #if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))) #define likely(x) __builtin_expect(!!(x), 1) #define unlikely(x) __builtin_expect(!!(x), 0) #else /* !__GNUC__ or GCC < 2.95 */ #define likely(x) (x) #define unlikely(x) (x) #endif /* __GNUC__ */ static PyObject *__pyx_m; static PyObject *__pyx_d; static PyObject *__pyx_b; static PyObject *__pyx_empty_tuple; static PyObject *__pyx_empty_bytes; static PyObject *__pyx_empty_unicode; static int __pyx_lineno; static int __pyx_clineno = 0; static const char * __pyx_cfilenm= __FILE__; static const char *__pyx_filename; static const char *__pyx_f[] = { "build/temp.linux-x86_64-3.5/pybiklib/ext/_gldraw_ogl.pyx", }; /*--- Type declarations ---*/ struct __pyx_t_11_gldraw_ogl_Block; struct __pyx_t_11_gldraw_ogl_Cube; /* "_gldraw_ogl.pxd":4 * * from gl_ogl cimport * #line 34 * cdef enum: # #line 67 # <<<<<<<<<<<<<< * MAX_TRANSFORMATIONS = 60 #line 71 * MAX_BLOCKS = 1312 #line 72 */ enum { __pyx_e_11_gldraw_ogl_MAX_TRANSFORMATIONS = 60, __pyx_e_11_gldraw_ogl_MAX_BLOCKS = 0x520, __pyx_e_11_gldraw_ogl_MAX_FACES = 20, __pyx_e_11_gldraw_ogl_ATTRIB_LOCATION = 0, __pyx_e_11_gldraw_ogl_PICKATTRIB_LOCATION = 5, __pyx_e_11_gldraw_ogl_ATTRIB_CNT = 7 }; /* "_gldraw_ogl.pxd":11 * PICKATTRIB_LOCATION = 5 #line 75 * ATTRIB_CNT = 7 #line 76 * ctypedef float vec4[4] #line 79 # <<<<<<<<<<<<<< * ctypedef vec4 mat4[4] #line 80 * cdef void matrix_set_identity(mat4 &matrix) nogil #line 87 */ typedef float __pyx_t_11_gldraw_ogl_vec4[4]; /* "_gldraw_ogl.pxd":12 * ATTRIB_CNT = 7 #line 76 * ctypedef float vec4[4] #line 79 * ctypedef vec4 mat4[4] #line 80 # <<<<<<<<<<<<<< * cdef void matrix_set_identity(mat4 &matrix) nogil #line 87 * cdef void init_gldraw() #line 137 */ typedef __pyx_t_11_gldraw_ogl_vec4 __pyx_t_11_gldraw_ogl_mat4[4]; /* "_gldraw_ogl.pyx":54 * * * cdef enum: # #px/ # <<<<<<<<<<<<<< * #if True: * DEBUG_MSGEXT = 8 */ enum { __pyx_e_11_gldraw_ogl_DEBUG_MSGEXT = 8 }; /* "_gldraw_ogl.pyx":93 * matrix[3][0] = 0.; matrix[3][1] = 0.; matrix[3][2] = 0.; matrix[3][3] = 1. * * cdef struct Block: #px/ # <<<<<<<<<<<<<< * #class Block: # pylint: disable=R0903 * ##px- */ struct __pyx_t_11_gldraw_ogl_Block { __pyx_t_11_gldraw_ogl_vec4 *transformation; int in_motion; int idx_triangles; int cnt_triangles; }; /* "_gldraw_ogl.pyx":108 * #self.cnt_triangles = None * * cdef struct Cube: #px/ # <<<<<<<<<<<<<< * #class cube: # pylint: disable=W0232, R0903 * mat4 transformations[MAX_TRANSFORMATIONS] #px/ */ struct __pyx_t_11_gldraw_ogl_Cube { __pyx_t_11_gldraw_ogl_mat4 transformations[__pyx_e_11_gldraw_ogl_MAX_TRANSFORMATIONS]; unsigned int number_blocks; struct __pyx_t_11_gldraw_ogl_Block blocks[__pyx_e_11_gldraw_ogl_MAX_BLOCKS]; int cnt_pick; int idx_debug; int cnt_debug; GLuint object_location; GLuint glbuffer; int vertexdatalen; char *vertexdata; long attrib_pointers[__pyx_e_11_gldraw_ogl_ATTRIB_CNT]; __pyx_t_11_gldraw_ogl_mat4 rotation_matrix; }; /* --- Runtime support code (head) --- */ /* Refnanny.proto */ #ifndef CYTHON_REFNANNY #define CYTHON_REFNANNY 0 #endif #if CYTHON_REFNANNY typedef struct { void (*INCREF)(void*, PyObject*, int); void (*DECREF)(void*, PyObject*, int); void (*GOTREF)(void*, PyObject*, int); void (*GIVEREF)(void*, PyObject*, int); void* (*SetupContext)(const char*, int, const char*); void (*FinishContext)(void**); } __Pyx_RefNannyAPIStruct; static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL; static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname); #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL; #ifdef WITH_THREAD #define __Pyx_RefNannySetupContext(name, acquire_gil)\ if (acquire_gil) {\ PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\ __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\ PyGILState_Release(__pyx_gilstate_save);\ } else {\ __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\ } #else #define __Pyx_RefNannySetupContext(name, acquire_gil)\ __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__) #endif #define __Pyx_RefNannyFinishContext()\ __Pyx_RefNanny->FinishContext(&__pyx_refnanny) #define __Pyx_INCREF(r) __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__) #define __Pyx_DECREF(r) __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__) #define __Pyx_GOTREF(r) __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), __LINE__) #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), __LINE__) #define __Pyx_XINCREF(r) do { if((r) != NULL) {__Pyx_INCREF(r); }} while(0) #define __Pyx_XDECREF(r) do { if((r) != NULL) {__Pyx_DECREF(r); }} while(0) #define __Pyx_XGOTREF(r) do { if((r) != NULL) {__Pyx_GOTREF(r); }} while(0) #define __Pyx_XGIVEREF(r) do { if((r) != NULL) {__Pyx_GIVEREF(r);}} while(0) #else #define __Pyx_RefNannyDeclarations #define __Pyx_RefNannySetupContext(name, acquire_gil) #define __Pyx_RefNannyFinishContext() #define __Pyx_INCREF(r) Py_INCREF(r) #define __Pyx_DECREF(r) Py_DECREF(r) #define __Pyx_GOTREF(r) #define __Pyx_GIVEREF(r) #define __Pyx_XINCREF(r) Py_XINCREF(r) #define __Pyx_XDECREF(r) Py_XDECREF(r) #define __Pyx_XGOTREF(r) #define __Pyx_XGIVEREF(r) #endif #define __Pyx_XDECREF_SET(r, v) do {\ PyObject *tmp = (PyObject *) r;\ r = v; __Pyx_XDECREF(tmp);\ } while (0) #define __Pyx_DECREF_SET(r, v) do {\ PyObject *tmp = (PyObject *) r;\ r = v; __Pyx_DECREF(tmp);\ } while (0) #define __Pyx_CLEAR(r) do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0) #define __Pyx_XCLEAR(r) do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0) /* PyObjectGetAttrStr.proto */ #if CYTHON_USE_TYPE_SLOTS static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) { PyTypeObject* tp = Py_TYPE(obj); if (likely(tp->tp_getattro)) return tp->tp_getattro(obj, attr_name); #if PY_MAJOR_VERSION < 3 if (likely(tp->tp_getattr)) return tp->tp_getattr(obj, PyString_AS_STRING(attr_name)); #endif return PyObject_GetAttr(obj, attr_name); } #else #define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n) #endif /* GetBuiltinName.proto */ static PyObject *__Pyx_GetBuiltinName(PyObject *name); /* GetModuleGlobalName.proto */ static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name); /* PyObjectCall.proto */ #if CYTHON_COMPILING_IN_CPYTHON static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw); #else #define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw) #endif /* PyThreadStateGet.proto */ #if CYTHON_FAST_THREAD_STATE #define __Pyx_PyThreadState_declare PyThreadState *__pyx_tstate; #define __Pyx_PyThreadState_assign __pyx_tstate = PyThreadState_GET(); #else #define __Pyx_PyThreadState_declare #define __Pyx_PyThreadState_assign #endif /* PyErrFetchRestore.proto */ #if CYTHON_FAST_THREAD_STATE #define __Pyx_ErrRestoreWithState(type, value, tb) __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb) #define __Pyx_ErrFetchWithState(type, value, tb) __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb) #define __Pyx_ErrRestore(type, value, tb) __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb) #define __Pyx_ErrFetch(type, value, tb) __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb) static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); #else #define __Pyx_ErrRestoreWithState(type, value, tb) PyErr_Restore(type, value, tb) #define __Pyx_ErrFetchWithState(type, value, tb) PyErr_Fetch(type, value, tb) #define __Pyx_ErrRestore(type, value, tb) PyErr_Restore(type, value, tb) #define __Pyx_ErrFetch(type, value, tb) PyErr_Fetch(type, value, tb) #endif /* WriteUnraisableException.proto */ static void __Pyx_WriteUnraisable(const char *name, int clineno, int lineno, const char *filename, int full_traceback, int nogil); /* CodeObjectCache.proto */ typedef struct { PyCodeObject* code_object; int code_line; } __Pyx_CodeObjectCacheEntry; struct __Pyx_CodeObjectCache { int count; int max_count; __Pyx_CodeObjectCacheEntry* entries; }; static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL}; static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line); static PyCodeObject *__pyx_find_code_object(int code_line); static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object); /* AddTraceback.proto */ static void __Pyx_AddTraceback(const char *funcname, int c_line, int py_line, const char *filename); /* CIntToPy.proto */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_unsigned_int(unsigned int value); /* CIntToPy.proto */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value); /* CIntFromPy.proto */ static CYTHON_INLINE unsigned int __Pyx_PyInt_As_unsigned_int(PyObject *); /* CIntFromPy.proto */ static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *); /* CIntToPy.proto */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value); /* CIntFromPy.proto */ static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *); /* CheckBinaryVersion.proto */ static int __Pyx_check_binary_version(void); /* FunctionExport.proto */ static int __Pyx_ExportFunction(const char *name, void (*f)(void), const char *sig); /* InitStrings.proto */ static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); /* Module declarations from 'libc.stddef' */ /* Module declarations from 'libc.stdint' */ /* Module declarations from 'gl_ogl' */ /* Module declarations from 'libc.math' */ /* Module declarations from '_gldraw_ogl' */ static long __pyx_v_11_gldraw_ogl_debug; static struct __pyx_t_11_gldraw_ogl_Cube __pyx_v_11_gldraw_ogl_cube; static void __pyx_f_11_gldraw_ogl_matrix_set_identity(__pyx_t_11_gldraw_ogl_vec4 *); /*proto*/ static void __pyx_f_11_gldraw_ogl_matrix_mult(__pyx_t_11_gldraw_ogl_vec4 *, __pyx_t_11_gldraw_ogl_vec4 *, __pyx_t_11_gldraw_ogl_vec4 *); /*proto*/ static void __pyx_f_11_gldraw_ogl__gl_enable_pointer(GLuint, GLint, GLenum, GLboolean, long); /*proto*/ static void __pyx_f_11_gldraw_ogl__gl_disable_pointer(GLuint); /*proto*/ #define __Pyx_MODULE_NAME "_gldraw_ogl" int __pyx_module_is_main__gldraw_ogl = 0; /* Implementation of '_gldraw_ogl' */ static PyObject *__pyx_builtin_print; static PyObject *__pyx_builtin_range; static const char __pyx_k_main[] = "__main__"; static const char __pyx_k_name[] = "__name__"; static const char __pyx_k_test[] = "__test__"; static const char __pyx_k_print[] = "print"; static const char __pyx_k_range[] = "range"; static const char __pyx_k_module[] = "module"; static const char __pyx_k_package[] = "__package__"; static const char __pyx_k_compiled[] = " compiled:"; static const char __pyx_k_compiled_2[] = "__compiled"; static const char __pyx_k_gldraw_ogl[] = "_gldraw_ogl"; static const char __pyx_k_GL_type_ogl[] = " GL-type: ogl"; static const char __pyx_k_init_module[] = "init module:"; static const char __pyx_k_DEBUG_MSGEXT[] = "DEBUG_MSGEXT"; static const char __pyx_k_from_package[] = " from package:"; static const char __pyx_k_set_debug_flags[] = "set_debug_flags"; static const char __pyx_k_tmp[] = "/tmp/build/temp.linux-x86_64-3.5/pybiklib/ext/_gldraw_ogl.pyx"; static PyObject *__pyx_n_s_DEBUG_MSGEXT; static PyObject *__pyx_kp_u_GL_type_ogl; static PyObject *__pyx_kp_u_compiled; static PyObject *__pyx_n_s_compiled_2; static PyObject *__pyx_kp_u_from_package; static PyObject *__pyx_n_s_gldraw_ogl; static PyObject *__pyx_kp_s_tmp; static PyObject *__pyx_kp_u_init_module; static PyObject *__pyx_n_s_main; static PyObject *__pyx_n_s_module; static PyObject *__pyx_n_s_name; static PyObject *__pyx_n_s_package; static PyObject *__pyx_n_s_print; static PyObject *__pyx_n_s_range; static PyObject *__pyx_n_s_set_debug_flags; static PyObject *__pyx_n_s_test; static PyObject *__pyx_pf_11_gldraw_ogl_set_debug_flags(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_module); /* proto */ static PyObject *__pyx_tuple_; static PyObject *__pyx_tuple__2; static PyObject *__pyx_codeobj__3; /* "_gldraw_ogl.pyx":60 * debug = 0 * * def set_debug_flags(module): # <<<<<<<<<<<<<< * global debug * if module.DEBUG_MSGEXT: debug |= DEBUG_MSGEXT */ /* Python wrapper */ static PyObject *__pyx_pw_11_gldraw_ogl_1set_debug_flags(PyObject *__pyx_self, PyObject *__pyx_v_module); /*proto*/ static PyMethodDef __pyx_mdef_11_gldraw_ogl_1set_debug_flags = {"set_debug_flags", (PyCFunction)__pyx_pw_11_gldraw_ogl_1set_debug_flags, METH_O, 0}; static PyObject *__pyx_pw_11_gldraw_ogl_1set_debug_flags(PyObject *__pyx_self, PyObject *__pyx_v_module) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("set_debug_flags (wrapper)", 0); __pyx_r = __pyx_pf_11_gldraw_ogl_set_debug_flags(__pyx_self, ((PyObject *)__pyx_v_module)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11_gldraw_ogl_set_debug_flags(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_module) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_t_2; __Pyx_RefNannySetupContext("set_debug_flags", 0); /* "_gldraw_ogl.pyx":62 * def set_debug_flags(module): * global debug * if module.DEBUG_MSGEXT: debug |= DEBUG_MSGEXT # <<<<<<<<<<<<<< * * ##px- */ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_module, __pyx_n_s_DEBUG_MSGEXT); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 62, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 62, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_2) { __pyx_v_11_gldraw_ogl_debug = (__pyx_v_11_gldraw_ogl_debug | __pyx_e_11_gldraw_ogl_DEBUG_MSGEXT); } /* "_gldraw_ogl.pyx":60 * debug = 0 * * def set_debug_flags(module): # <<<<<<<<<<<<<< * global debug * if module.DEBUG_MSGEXT: debug |= DEBUG_MSGEXT */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("_gldraw_ogl.set_debug_flags", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_gldraw_ogl.pyx":87 * * ##pxm-FUNC PD nogil * cdef void matrix_set_identity(mat4 &matrix) nogil: # <<<<<<<<<<<<<< * matrix[0][0] = 1.; matrix[0][1] = 0.; matrix[0][2] = 0.; matrix[0][3] = 0. * matrix[1][0] = 0.; matrix[1][1] = 1.; matrix[1][2] = 0.; matrix[1][3] = 0. */ static void __pyx_f_11_gldraw_ogl_matrix_set_identity(__pyx_t_11_gldraw_ogl_vec4 *__pyx_v_matrix) { /* "_gldraw_ogl.pyx":88 * ##pxm-FUNC PD nogil * cdef void matrix_set_identity(mat4 &matrix) nogil: * matrix[0][0] = 1.; matrix[0][1] = 0.; matrix[0][2] = 0.; matrix[0][3] = 0. # <<<<<<<<<<<<<< * matrix[1][0] = 0.; matrix[1][1] = 1.; matrix[1][2] = 0.; matrix[1][3] = 0. * matrix[2][0] = 0.; matrix[2][1] = 0.; matrix[2][2] = 1.; matrix[2][3] = 0. */ ((__pyx_v_matrix[0])[0]) = 1.; ((__pyx_v_matrix[0])[1]) = 0.; ((__pyx_v_matrix[0])[2]) = 0.; ((__pyx_v_matrix[0])[3]) = 0.; /* "_gldraw_ogl.pyx":89 * cdef void matrix_set_identity(mat4 &matrix) nogil: * matrix[0][0] = 1.; matrix[0][1] = 0.; matrix[0][2] = 0.; matrix[0][3] = 0. * matrix[1][0] = 0.; matrix[1][1] = 1.; matrix[1][2] = 0.; matrix[1][3] = 0. # <<<<<<<<<<<<<< * matrix[2][0] = 0.; matrix[2][1] = 0.; matrix[2][2] = 1.; matrix[2][3] = 0. * matrix[3][0] = 0.; matrix[3][1] = 0.; matrix[3][2] = 0.; matrix[3][3] = 1. */ ((__pyx_v_matrix[1])[0]) = 0.; ((__pyx_v_matrix[1])[1]) = 1.; ((__pyx_v_matrix[1])[2]) = 0.; ((__pyx_v_matrix[1])[3]) = 0.; /* "_gldraw_ogl.pyx":90 * matrix[0][0] = 1.; matrix[0][1] = 0.; matrix[0][2] = 0.; matrix[0][3] = 0. * matrix[1][0] = 0.; matrix[1][1] = 1.; matrix[1][2] = 0.; matrix[1][3] = 0. * matrix[2][0] = 0.; matrix[2][1] = 0.; matrix[2][2] = 1.; matrix[2][3] = 0. # <<<<<<<<<<<<<< * matrix[3][0] = 0.; matrix[3][1] = 0.; matrix[3][2] = 0.; matrix[3][3] = 1. * */ ((__pyx_v_matrix[2])[0]) = 0.; ((__pyx_v_matrix[2])[1]) = 0.; ((__pyx_v_matrix[2])[2]) = 1.; ((__pyx_v_matrix[2])[3]) = 0.; /* "_gldraw_ogl.pyx":91 * matrix[1][0] = 0.; matrix[1][1] = 1.; matrix[1][2] = 0.; matrix[1][3] = 0. * matrix[2][0] = 0.; matrix[2][1] = 0.; matrix[2][2] = 1.; matrix[2][3] = 0. * matrix[3][0] = 0.; matrix[3][1] = 0.; matrix[3][2] = 0.; matrix[3][3] = 1. # <<<<<<<<<<<<<< * * cdef struct Block: #px/ */ ((__pyx_v_matrix[3])[0]) = 0.; ((__pyx_v_matrix[3])[1]) = 0.; ((__pyx_v_matrix[3])[2]) = 0.; ((__pyx_v_matrix[3])[3]) = 1.; /* "_gldraw_ogl.pyx":87 * * ##pxm-FUNC PD nogil * cdef void matrix_set_identity(mat4 &matrix) nogil: # <<<<<<<<<<<<<< * matrix[0][0] = 1.; matrix[0][1] = 0.; matrix[0][2] = 0.; matrix[0][3] = 0. * matrix[1][0] = 0.; matrix[1][1] = 1.; matrix[1][2] = 0.; matrix[1][3] = 0. */ /* function exit code */ } /* "_gldraw_ogl.pyx":137 * * ##pxm-FUNC PD * cdef void init_gldraw(): # <<<<<<<<<<<<<< * if debug & DEBUG_MSGEXT: * print('init module:', __name__) */ static void __pyx_f_11_gldraw_ogl_init_gldraw(void) { __Pyx_RefNannyDeclarations int __pyx_t_1; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; __Pyx_RefNannySetupContext("init_gldraw", 0); /* "_gldraw_ogl.pyx":138 * ##pxm-FUNC PD * cdef void init_gldraw(): * if debug & DEBUG_MSGEXT: # <<<<<<<<<<<<<< * print('init module:', __name__) * print(' from package:', __package__) */ __pyx_t_1 = ((__pyx_v_11_gldraw_ogl_debug & __pyx_e_11_gldraw_ogl_DEBUG_MSGEXT) != 0); if (__pyx_t_1) { /* "_gldraw_ogl.pyx":139 * cdef void init_gldraw(): * if debug & DEBUG_MSGEXT: * print('init module:', __name__) # <<<<<<<<<<<<<< * print(' from package:', __package__) * print(' compiled:', __compiled) */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 139, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 139, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_kp_u_init_module); __Pyx_GIVEREF(__pyx_kp_u_init_module); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_kp_u_init_module); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 139, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_gldraw_ogl.pyx":140 * if debug & DEBUG_MSGEXT: * print('init module:', __name__) * print(' from package:', __package__) # <<<<<<<<<<<<<< * print(' compiled:', __compiled) * print(' GL-type: ogl') #px+ */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_package); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 140, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 140, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_kp_u_from_package); __Pyx_GIVEREF(__pyx_kp_u_from_package); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_kp_u_from_package); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 140, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_gldraw_ogl.pyx":141 * print('init module:', __name__) * print(' from package:', __package__) * print(' compiled:', __compiled) # <<<<<<<<<<<<<< * print(' GL-type: ogl') #px+ * cube.number_blocks = 0 */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_compiled_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 141, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 141, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_kp_u_compiled); __Pyx_GIVEREF(__pyx_kp_u_compiled); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_kp_u_compiled); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 141, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_gldraw_ogl.pyx":142 * print(' from package:', __package__) * print(' compiled:', __compiled) * print(' GL-type: ogl') #px+ # <<<<<<<<<<<<<< * cube.number_blocks = 0 * cube.cnt_pick = 0 */ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_tuple_, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 142, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_gldraw_ogl.pyx":138 * ##pxm-FUNC PD * cdef void init_gldraw(): * if debug & DEBUG_MSGEXT: # <<<<<<<<<<<<<< * print('init module:', __name__) * print(' from package:', __package__) */ } /* "_gldraw_ogl.pyx":143 * print(' compiled:', __compiled) * print(' GL-type: ogl') #px+ * cube.number_blocks = 0 # <<<<<<<<<<<<<< * cube.cnt_pick = 0 * cube.idx_debug = 0 */ __pyx_v_11_gldraw_ogl_cube.number_blocks = 0; /* "_gldraw_ogl.pyx":144 * print(' GL-type: ogl') #px+ * cube.number_blocks = 0 * cube.cnt_pick = 0 # <<<<<<<<<<<<<< * cube.idx_debug = 0 * cube.cnt_debug = 0 */ __pyx_v_11_gldraw_ogl_cube.cnt_pick = 0; /* "_gldraw_ogl.pyx":145 * cube.number_blocks = 0 * cube.cnt_pick = 0 * cube.idx_debug = 0 # <<<<<<<<<<<<<< * cube.cnt_debug = 0 * cube.vertexdatalen = 0 */ __pyx_v_11_gldraw_ogl_cube.idx_debug = 0; /* "_gldraw_ogl.pyx":146 * cube.cnt_pick = 0 * cube.idx_debug = 0 * cube.cnt_debug = 0 # <<<<<<<<<<<<<< * cube.vertexdatalen = 0 * cube.vertexdata = NULL */ __pyx_v_11_gldraw_ogl_cube.cnt_debug = 0; /* "_gldraw_ogl.pyx":147 * cube.idx_debug = 0 * cube.cnt_debug = 0 * cube.vertexdatalen = 0 # <<<<<<<<<<<<<< * cube.vertexdata = NULL * */ __pyx_v_11_gldraw_ogl_cube.vertexdatalen = 0; /* "_gldraw_ogl.pyx":148 * cube.cnt_debug = 0 * cube.vertexdatalen = 0 * cube.vertexdata = NULL # <<<<<<<<<<<<<< * * ##pxm-FUNC PD nogil */ __pyx_v_11_gldraw_ogl_cube.vertexdata = NULL; /* "_gldraw_ogl.pyx":137 * * ##pxm-FUNC PD * cdef void init_gldraw(): # <<<<<<<<<<<<<< * if debug & DEBUG_MSGEXT: * print('init module:', __name__) */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_WriteUnraisable("_gldraw_ogl.init_gldraw", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); } /* "_gldraw_ogl.pyx":151 * * ##pxm-FUNC PD nogil * cdef void sync_block_transformations(short *blocks) nogil: # <<<<<<<<<<<<<< * cdef unsigned int i #px+ * for i in range(cube.number_blocks): */ static void __pyx_f_11_gldraw_ogl_sync_block_transformations(short *__pyx_v_blocks) { unsigned int __pyx_v_i; unsigned int __pyx_t_1; unsigned int __pyx_t_2; /* "_gldraw_ogl.pyx":153 * cdef void sync_block_transformations(short *blocks) nogil: * cdef unsigned int i #px+ * for i in range(cube.number_blocks): # <<<<<<<<<<<<<< * cube.blocks[i].transformation = cube.transformations[blocks[i]] * cube.blocks[i].in_motion = False */ __pyx_t_1 = __pyx_v_11_gldraw_ogl_cube.number_blocks; for (__pyx_t_2 = 0; __pyx_t_2 < __pyx_t_1; __pyx_t_2+=1) { __pyx_v_i = __pyx_t_2; /* "_gldraw_ogl.pyx":154 * cdef unsigned int i #px+ * for i in range(cube.number_blocks): * cube.blocks[i].transformation = cube.transformations[blocks[i]] # <<<<<<<<<<<<<< * cube.blocks[i].in_motion = False * */ (__pyx_v_11_gldraw_ogl_cube.blocks[__pyx_v_i]).transformation = (__pyx_v_11_gldraw_ogl_cube.transformations[(__pyx_v_blocks[__pyx_v_i])]); /* "_gldraw_ogl.pyx":155 * for i in range(cube.number_blocks): * cube.blocks[i].transformation = cube.transformations[blocks[i]] * cube.blocks[i].in_motion = False # <<<<<<<<<<<<<< * * ##pxm-FUNC PD nogil */ (__pyx_v_11_gldraw_ogl_cube.blocks[__pyx_v_i]).in_motion = 0; } /* "_gldraw_ogl.pyx":151 * * ##pxm-FUNC PD nogil * cdef void sync_block_transformations(short *blocks) nogil: # <<<<<<<<<<<<<< * cdef unsigned int i #px+ * for i in range(cube.number_blocks): */ /* function exit code */ } /* "_gldraw_ogl.pyx":158 * * ##pxm-FUNC PD nogil * cdef void sync_animation_start(int blocks_count, short *blocks) nogil: # <<<<<<<<<<<<<< * matrix_set_identity(cube.rotation_matrix) * cdef int i #px+ */ static void __pyx_f_11_gldraw_ogl_sync_animation_start(int __pyx_v_blocks_count, short *__pyx_v_blocks) { int __pyx_v_i; int __pyx_t_1; int __pyx_t_2; /* "_gldraw_ogl.pyx":159 * ##pxm-FUNC PD nogil * cdef void sync_animation_start(int blocks_count, short *blocks) nogil: * matrix_set_identity(cube.rotation_matrix) # <<<<<<<<<<<<<< * cdef int i #px+ * for i in range(blocks_count): */ __pyx_f_11_gldraw_ogl_matrix_set_identity(__pyx_v_11_gldraw_ogl_cube.rotation_matrix); /* "_gldraw_ogl.pyx":161 * matrix_set_identity(cube.rotation_matrix) * cdef int i #px+ * for i in range(blocks_count): # <<<<<<<<<<<<<< * cube.blocks[blocks[i]].in_motion = True * */ __pyx_t_1 = __pyx_v_blocks_count; for (__pyx_t_2 = 0; __pyx_t_2 < __pyx_t_1; __pyx_t_2+=1) { __pyx_v_i = __pyx_t_2; /* "_gldraw_ogl.pyx":162 * cdef int i #px+ * for i in range(blocks_count): * cube.blocks[blocks[i]].in_motion = True # <<<<<<<<<<<<<< * * ##pxm-FUNC PD nogil */ (__pyx_v_11_gldraw_ogl_cube.blocks[(__pyx_v_blocks[__pyx_v_i])]).in_motion = 1; } /* "_gldraw_ogl.pyx":158 * * ##pxm-FUNC PD nogil * cdef void sync_animation_start(int blocks_count, short *blocks) nogil: # <<<<<<<<<<<<<< * matrix_set_identity(cube.rotation_matrix) * cdef int i #px+ */ /* function exit code */ } /* "_gldraw_ogl.pyx":165 * * ##pxm-FUNC PD nogil * cdef void sync_animation_next(float angle, float rotation_x, float rotation_y, float rotation_z) nogil: # <<<<<<<<<<<<<< * angle = angle / 180. * M_PI #px/ * #angle = radians(angle) */ static void __pyx_f_11_gldraw_ogl_sync_animation_next(float __pyx_v_angle, float __pyx_v_rotation_x, float __pyx_v_rotation_y, float __pyx_v_rotation_z) { float __pyx_v_x; float __pyx_v_y; float __pyx_v_z; float __pyx_v_c; float __pyx_v_s; /* "_gldraw_ogl.pyx":166 * ##pxm-FUNC PD nogil * cdef void sync_animation_next(float angle, float rotation_x, float rotation_y, float rotation_z) nogil: * angle = angle / 180. * M_PI #px/ # <<<<<<<<<<<<<< * #angle = radians(angle) * cdef float x, y, z #px+ */ __pyx_v_angle = ((((double)__pyx_v_angle) / 180.) * M_PI); /* "_gldraw_ogl.pyx":169 * #angle = radians(angle) * cdef float x, y, z #px+ * x = rotation_x # <<<<<<<<<<<<<< * y = rotation_y * z = rotation_z */ __pyx_v_x = __pyx_v_rotation_x; /* "_gldraw_ogl.pyx":170 * cdef float x, y, z #px+ * x = rotation_x * y = rotation_y # <<<<<<<<<<<<<< * z = rotation_z * cdef float c, s #px+ */ __pyx_v_y = __pyx_v_rotation_y; /* "_gldraw_ogl.pyx":171 * x = rotation_x * y = rotation_y * z = rotation_z # <<<<<<<<<<<<<< * cdef float c, s #px+ * c = cos(angle) */ __pyx_v_z = __pyx_v_rotation_z; /* "_gldraw_ogl.pyx":173 * z = rotation_z * cdef float c, s #px+ * c = cos(angle) # <<<<<<<<<<<<<< * s = sin(angle) * */ __pyx_v_c = cos(__pyx_v_angle); /* "_gldraw_ogl.pyx":174 * cdef float c, s #px+ * c = cos(angle) * s = sin(angle) # <<<<<<<<<<<<<< * * cube.rotation_matrix[0][0] = x*x*(1-c) + c */ __pyx_v_s = sin(__pyx_v_angle); /* "_gldraw_ogl.pyx":176 * s = sin(angle) * * cube.rotation_matrix[0][0] = x*x*(1-c) + c # <<<<<<<<<<<<<< * cube.rotation_matrix[0][1] = x*y*(1-c) + z*s * cube.rotation_matrix[0][2] = x*z*(1-c) - y*s */ ((__pyx_v_11_gldraw_ogl_cube.rotation_matrix[0])[0]) = (((__pyx_v_x * __pyx_v_x) * (1.0 - __pyx_v_c)) + __pyx_v_c); /* "_gldraw_ogl.pyx":177 * * cube.rotation_matrix[0][0] = x*x*(1-c) + c * cube.rotation_matrix[0][1] = x*y*(1-c) + z*s # <<<<<<<<<<<<<< * cube.rotation_matrix[0][2] = x*z*(1-c) - y*s * cube.rotation_matrix[1][0] = y*x*(1-c) - z*s */ ((__pyx_v_11_gldraw_ogl_cube.rotation_matrix[0])[1]) = (((__pyx_v_x * __pyx_v_y) * (1.0 - __pyx_v_c)) + (__pyx_v_z * __pyx_v_s)); /* "_gldraw_ogl.pyx":178 * cube.rotation_matrix[0][0] = x*x*(1-c) + c * cube.rotation_matrix[0][1] = x*y*(1-c) + z*s * cube.rotation_matrix[0][2] = x*z*(1-c) - y*s # <<<<<<<<<<<<<< * cube.rotation_matrix[1][0] = y*x*(1-c) - z*s * cube.rotation_matrix[1][1] = y*y*(1-c) + c */ ((__pyx_v_11_gldraw_ogl_cube.rotation_matrix[0])[2]) = (((__pyx_v_x * __pyx_v_z) * (1.0 - __pyx_v_c)) - (__pyx_v_y * __pyx_v_s)); /* "_gldraw_ogl.pyx":179 * cube.rotation_matrix[0][1] = x*y*(1-c) + z*s * cube.rotation_matrix[0][2] = x*z*(1-c) - y*s * cube.rotation_matrix[1][0] = y*x*(1-c) - z*s # <<<<<<<<<<<<<< * cube.rotation_matrix[1][1] = y*y*(1-c) + c * cube.rotation_matrix[1][2] = y*z*(1-c) + x*s */ ((__pyx_v_11_gldraw_ogl_cube.rotation_matrix[1])[0]) = (((__pyx_v_y * __pyx_v_x) * (1.0 - __pyx_v_c)) - (__pyx_v_z * __pyx_v_s)); /* "_gldraw_ogl.pyx":180 * cube.rotation_matrix[0][2] = x*z*(1-c) - y*s * cube.rotation_matrix[1][0] = y*x*(1-c) - z*s * cube.rotation_matrix[1][1] = y*y*(1-c) + c # <<<<<<<<<<<<<< * cube.rotation_matrix[1][2] = y*z*(1-c) + x*s * cube.rotation_matrix[2][0] = x*z*(1-c) + y*s */ ((__pyx_v_11_gldraw_ogl_cube.rotation_matrix[1])[1]) = (((__pyx_v_y * __pyx_v_y) * (1.0 - __pyx_v_c)) + __pyx_v_c); /* "_gldraw_ogl.pyx":181 * cube.rotation_matrix[1][0] = y*x*(1-c) - z*s * cube.rotation_matrix[1][1] = y*y*(1-c) + c * cube.rotation_matrix[1][2] = y*z*(1-c) + x*s # <<<<<<<<<<<<<< * cube.rotation_matrix[2][0] = x*z*(1-c) + y*s * cube.rotation_matrix[2][1] = y*z*(1-c) - x*s */ ((__pyx_v_11_gldraw_ogl_cube.rotation_matrix[1])[2]) = (((__pyx_v_y * __pyx_v_z) * (1.0 - __pyx_v_c)) + (__pyx_v_x * __pyx_v_s)); /* "_gldraw_ogl.pyx":182 * cube.rotation_matrix[1][1] = y*y*(1-c) + c * cube.rotation_matrix[1][2] = y*z*(1-c) + x*s * cube.rotation_matrix[2][0] = x*z*(1-c) + y*s # <<<<<<<<<<<<<< * cube.rotation_matrix[2][1] = y*z*(1-c) - x*s * cube.rotation_matrix[2][2] = z*z*(1-c) + c */ ((__pyx_v_11_gldraw_ogl_cube.rotation_matrix[2])[0]) = (((__pyx_v_x * __pyx_v_z) * (1.0 - __pyx_v_c)) + (__pyx_v_y * __pyx_v_s)); /* "_gldraw_ogl.pyx":183 * cube.rotation_matrix[1][2] = y*z*(1-c) + x*s * cube.rotation_matrix[2][0] = x*z*(1-c) + y*s * cube.rotation_matrix[2][1] = y*z*(1-c) - x*s # <<<<<<<<<<<<<< * cube.rotation_matrix[2][2] = z*z*(1-c) + c * */ ((__pyx_v_11_gldraw_ogl_cube.rotation_matrix[2])[1]) = (((__pyx_v_y * __pyx_v_z) * (1.0 - __pyx_v_c)) - (__pyx_v_x * __pyx_v_s)); /* "_gldraw_ogl.pyx":184 * cube.rotation_matrix[2][0] = x*z*(1-c) + y*s * cube.rotation_matrix[2][1] = y*z*(1-c) - x*s * cube.rotation_matrix[2][2] = z*z*(1-c) + c # <<<<<<<<<<<<<< * * ##pxm-FUNC P nogil */ ((__pyx_v_11_gldraw_ogl_cube.rotation_matrix[2])[2]) = (((__pyx_v_z * __pyx_v_z) * (1.0 - __pyx_v_c)) + __pyx_v_c); /* "_gldraw_ogl.pyx":165 * * ##pxm-FUNC PD nogil * cdef void sync_animation_next(float angle, float rotation_x, float rotation_y, float rotation_z) nogil: # <<<<<<<<<<<<<< * angle = angle / 180. * M_PI #px/ * #angle = radians(angle) */ /* function exit code */ } /* "_gldraw_ogl.pyx":187 * * ##pxm-FUNC P nogil * cdef void matrix_mult(mat4 &dest, mat4 &src1, mat4 &src2) nogil: # <<<<<<<<<<<<<< * cdef int i, j, k #px+ * cdef float sum_ #px+ */ static void __pyx_f_11_gldraw_ogl_matrix_mult(__pyx_t_11_gldraw_ogl_vec4 *__pyx_v_dest, __pyx_t_11_gldraw_ogl_vec4 *__pyx_v_src1, __pyx_t_11_gldraw_ogl_vec4 *__pyx_v_src2) { int __pyx_v_i; int __pyx_v_j; int __pyx_v_k; float __pyx_v_sum_; int __pyx_t_1; int __pyx_t_2; int __pyx_t_3; /* "_gldraw_ogl.pyx":190 * cdef int i, j, k #px+ * cdef float sum_ #px+ * for j in range(4): # <<<<<<<<<<<<<< * for i in range(4): * sum_ = 0. */ for (__pyx_t_1 = 0; __pyx_t_1 < 4; __pyx_t_1+=1) { __pyx_v_j = __pyx_t_1; /* "_gldraw_ogl.pyx":191 * cdef float sum_ #px+ * for j in range(4): * for i in range(4): # <<<<<<<<<<<<<< * sum_ = 0. * for k in range(4): */ for (__pyx_t_2 = 0; __pyx_t_2 < 4; __pyx_t_2+=1) { __pyx_v_i = __pyx_t_2; /* "_gldraw_ogl.pyx":192 * for j in range(4): * for i in range(4): * sum_ = 0. # <<<<<<<<<<<<<< * for k in range(4): * sum_ += src1[k][i] * src2[j][k] */ __pyx_v_sum_ = 0.; /* "_gldraw_ogl.pyx":193 * for i in range(4): * sum_ = 0. * for k in range(4): # <<<<<<<<<<<<<< * sum_ += src1[k][i] * src2[j][k] * dest[j][i] = sum_ */ for (__pyx_t_3 = 0; __pyx_t_3 < 4; __pyx_t_3+=1) { __pyx_v_k = __pyx_t_3; /* "_gldraw_ogl.pyx":194 * sum_ = 0. * for k in range(4): * sum_ += src1[k][i] * src2[j][k] # <<<<<<<<<<<<<< * dest[j][i] = sum_ * */ __pyx_v_sum_ = (__pyx_v_sum_ + (((__pyx_v_src1[__pyx_v_k])[__pyx_v_i]) * ((__pyx_v_src2[__pyx_v_j])[__pyx_v_k]))); } /* "_gldraw_ogl.pyx":195 * for k in range(4): * sum_ += src1[k][i] * src2[j][k] * dest[j][i] = sum_ # <<<<<<<<<<<<<< * * ##pxm-FUNC PD nogil */ ((__pyx_v_dest[__pyx_v_j])[__pyx_v_i]) = __pyx_v_sum_; } } /* "_gldraw_ogl.pyx":187 * * ##pxm-FUNC P nogil * cdef void matrix_mult(mat4 &dest, mat4 &src1, mat4 &src2) nogil: # <<<<<<<<<<<<<< * cdef int i, j, k #px+ * cdef float sum_ #px+ */ /* function exit code */ } /* "_gldraw_ogl.pyx":198 * * ##pxm-FUNC PD nogil * cdef void gl_draw_cube() nogil: # <<<<<<<<<<<<<< * cdef unsigned int i #px+ * cdef mat4 object_matrix #px/ */ static void __pyx_f_11_gldraw_ogl_gl_draw_cube(void) { unsigned int __pyx_v_i; __pyx_t_11_gldraw_ogl_mat4 __pyx_v_object_matrix; unsigned int __pyx_t_1; unsigned int __pyx_t_2; int __pyx_t_3; /* "_gldraw_ogl.pyx":202 * cdef mat4 object_matrix #px/ * #object_matrix = mat4() * for i in range(cube.number_blocks): # <<<<<<<<<<<<<< * if cube.blocks[i].in_motion: * matrix_mult(object_matrix, cube.rotation_matrix, cube.blocks[i].transformation) */ __pyx_t_1 = __pyx_v_11_gldraw_ogl_cube.number_blocks; for (__pyx_t_2 = 0; __pyx_t_2 < __pyx_t_1; __pyx_t_2+=1) { __pyx_v_i = __pyx_t_2; /* "_gldraw_ogl.pyx":203 * #object_matrix = mat4() * for i in range(cube.number_blocks): * if cube.blocks[i].in_motion: # <<<<<<<<<<<<<< * matrix_mult(object_matrix, cube.rotation_matrix, cube.blocks[i].transformation) * glUniformMatrix4fv(cube.object_location, 1, GL_FALSE, &object_matrix[0][0]) #px/ */ __pyx_t_3 = ((__pyx_v_11_gldraw_ogl_cube.blocks[__pyx_v_i]).in_motion != 0); if (__pyx_t_3) { /* "_gldraw_ogl.pyx":204 * for i in range(cube.number_blocks): * if cube.blocks[i].in_motion: * matrix_mult(object_matrix, cube.rotation_matrix, cube.blocks[i].transformation) # <<<<<<<<<<<<<< * glUniformMatrix4fv(cube.object_location, 1, GL_FALSE, &object_matrix[0][0]) #px/ * #glUniformMatrix4fv(cube.object_location, 1, GL_FALSE, object_matrix) */ __pyx_f_11_gldraw_ogl_matrix_mult(__pyx_v_object_matrix, __pyx_v_11_gldraw_ogl_cube.rotation_matrix, (__pyx_v_11_gldraw_ogl_cube.blocks[__pyx_v_i]).transformation); /* "_gldraw_ogl.pyx":205 * if cube.blocks[i].in_motion: * matrix_mult(object_matrix, cube.rotation_matrix, cube.blocks[i].transformation) * glUniformMatrix4fv(cube.object_location, 1, GL_FALSE, &object_matrix[0][0]) #px/ # <<<<<<<<<<<<<< * #glUniformMatrix4fv(cube.object_location, 1, GL_FALSE, object_matrix) * else: */ glUniformMatrix4fv(__pyx_v_11_gldraw_ogl_cube.object_location, 1, GL_FALSE, (&((__pyx_v_object_matrix[0])[0]))); /* "_gldraw_ogl.pyx":203 * #object_matrix = mat4() * for i in range(cube.number_blocks): * if cube.blocks[i].in_motion: # <<<<<<<<<<<<<< * matrix_mult(object_matrix, cube.rotation_matrix, cube.blocks[i].transformation) * glUniformMatrix4fv(cube.object_location, 1, GL_FALSE, &object_matrix[0][0]) #px/ */ goto __pyx_L5; } /* "_gldraw_ogl.pyx":208 * #glUniformMatrix4fv(cube.object_location, 1, GL_FALSE, object_matrix) * else: * glUniformMatrix4fv(cube.object_location, 1, GL_FALSE, &cube.blocks[i].transformation[0][0]) #px/ # <<<<<<<<<<<<<< * #glUniformMatrix4fv(cube.object_location, 1, GL_FALSE, cube.blocks[i].transformation) * glDrawArrays(GL_TRIANGLES, cube.blocks[i].idx_triangles, cube.blocks[i].cnt_triangles) */ /*else*/ { glUniformMatrix4fv(__pyx_v_11_gldraw_ogl_cube.object_location, 1, GL_FALSE, (&(((__pyx_v_11_gldraw_ogl_cube.blocks[__pyx_v_i]).transformation[0])[0]))); } __pyx_L5:; /* "_gldraw_ogl.pyx":210 * glUniformMatrix4fv(cube.object_location, 1, GL_FALSE, &cube.blocks[i].transformation[0][0]) #px/ * #glUniformMatrix4fv(cube.object_location, 1, GL_FALSE, cube.blocks[i].transformation) * glDrawArrays(GL_TRIANGLES, cube.blocks[i].idx_triangles, cube.blocks[i].cnt_triangles) # <<<<<<<<<<<<<< * * ##pxm-FUNC PD nogil */ glDrawArrays(GL_TRIANGLES, (__pyx_v_11_gldraw_ogl_cube.blocks[__pyx_v_i]).idx_triangles, (__pyx_v_11_gldraw_ogl_cube.blocks[__pyx_v_i]).cnt_triangles); } /* "_gldraw_ogl.pyx":198 * * ##pxm-FUNC PD nogil * cdef void gl_draw_cube() nogil: # <<<<<<<<<<<<<< * cdef unsigned int i #px+ * cdef mat4 object_matrix #px/ */ /* function exit code */ } /* "_gldraw_ogl.pyx":213 * * ##pxm-FUNC PD nogil * cdef void gl_pick_cube() nogil: # <<<<<<<<<<<<<< * glDrawArrays(GL_TRIANGLES, 0, cube.cnt_pick) * */ static void __pyx_f_11_gldraw_ogl_gl_pick_cube(void) { /* "_gldraw_ogl.pyx":214 * ##pxm-FUNC PD nogil * cdef void gl_pick_cube() nogil: * glDrawArrays(GL_TRIANGLES, 0, cube.cnt_pick) # <<<<<<<<<<<<<< * * ##pxm-FUNC PD nogil */ glDrawArrays(GL_TRIANGLES, 0, __pyx_v_11_gldraw_ogl_cube.cnt_pick); /* "_gldraw_ogl.pyx":213 * * ##pxm-FUNC PD nogil * cdef void gl_pick_cube() nogil: # <<<<<<<<<<<<<< * glDrawArrays(GL_TRIANGLES, 0, cube.cnt_pick) * */ /* function exit code */ } /* "_gldraw_ogl.pyx":217 * * ##pxm-FUNC PD nogil * cdef void gl_init_buffers() nogil: # <<<<<<<<<<<<<< * glGenBuffers(1, &cube.glbuffer) #px/ * #cube.glbuffer = glGenBuffers(1) */ static void __pyx_f_11_gldraw_ogl_gl_init_buffers(void) { /* "_gldraw_ogl.pyx":218 * ##pxm-FUNC PD nogil * cdef void gl_init_buffers() nogil: * glGenBuffers(1, &cube.glbuffer) #px/ # <<<<<<<<<<<<<< * #cube.glbuffer = glGenBuffers(1) * */ glGenBuffers(1, (&__pyx_v_11_gldraw_ogl_cube.glbuffer)); /* "_gldraw_ogl.pyx":217 * * ##pxm-FUNC PD nogil * cdef void gl_init_buffers() nogil: # <<<<<<<<<<<<<< * glGenBuffers(1, &cube.glbuffer) #px/ * #cube.glbuffer = glGenBuffers(1) */ /* function exit code */ } /* "_gldraw_ogl.pyx":222 * * ##pxm-FUNC PD nogil * cdef void gl_delete_buffers() nogil: # <<<<<<<<<<<<<< * glBindBuffer(GL_ARRAY_BUFFER, 0) * glDeleteBuffers(1, &cube.glbuffer) #px/ */ static void __pyx_f_11_gldraw_ogl_gl_delete_buffers(void) { /* "_gldraw_ogl.pyx":223 * ##pxm-FUNC PD nogil * cdef void gl_delete_buffers() nogil: * glBindBuffer(GL_ARRAY_BUFFER, 0) # <<<<<<<<<<<<<< * glDeleteBuffers(1, &cube.glbuffer) #px/ * #glDeleteBuffers(1, [cube.glbuffer]) */ glBindBuffer(GL_ARRAY_BUFFER, 0); /* "_gldraw_ogl.pyx":224 * cdef void gl_delete_buffers() nogil: * glBindBuffer(GL_ARRAY_BUFFER, 0) * glDeleteBuffers(1, &cube.glbuffer) #px/ # <<<<<<<<<<<<<< * #glDeleteBuffers(1, [cube.glbuffer]) * cube.glbuffer = 0 */ glDeleteBuffers(1, (&__pyx_v_11_gldraw_ogl_cube.glbuffer)); /* "_gldraw_ogl.pyx":226 * glDeleteBuffers(1, &cube.glbuffer) #px/ * #glDeleteBuffers(1, [cube.glbuffer]) * cube.glbuffer = 0 # <<<<<<<<<<<<<< * * ##pxm-FUNC P nogil */ __pyx_v_11_gldraw_ogl_cube.glbuffer = 0; /* "_gldraw_ogl.pyx":222 * * ##pxm-FUNC PD nogil * cdef void gl_delete_buffers() nogil: # <<<<<<<<<<<<<< * glBindBuffer(GL_ARRAY_BUFFER, 0) * glDeleteBuffers(1, &cube.glbuffer) #px/ */ /* function exit code */ } /* "_gldraw_ogl.pyx":229 * * ##pxm-FUNC P nogil * cdef void _gl_enable_pointer(GLuint index, GLint size, GLenum type, GLboolean normalized, long pointer) nogil: # <<<<<<<<<<<<<< * glVertexAttribPointer(index, size, type, normalized, 0, pointer) #px/ * #glVertexAttribPointer(index, size, type, normalized, 0, ctypes.cast(pointer, ctypes.c_void_p)) */ static void __pyx_f_11_gldraw_ogl__gl_enable_pointer(GLuint __pyx_v_index, GLint __pyx_v_size, GLenum __pyx_v_type, GLboolean __pyx_v_normalized, long __pyx_v_pointer) { /* "_gldraw_ogl.pyx":230 * ##pxm-FUNC P nogil * cdef void _gl_enable_pointer(GLuint index, GLint size, GLenum type, GLboolean normalized, long pointer) nogil: * glVertexAttribPointer(index, size, type, normalized, 0, pointer) #px/ # <<<<<<<<<<<<<< * #glVertexAttribPointer(index, size, type, normalized, 0, ctypes.cast(pointer, ctypes.c_void_p)) * glEnableVertexAttribArray(index) */ glVertexAttribPointer(__pyx_v_index, __pyx_v_size, __pyx_v_type, __pyx_v_normalized, 0, ((void *)__pyx_v_pointer)); /* "_gldraw_ogl.pyx":232 * glVertexAttribPointer(index, size, type, normalized, 0, pointer) #px/ * #glVertexAttribPointer(index, size, type, normalized, 0, ctypes.cast(pointer, ctypes.c_void_p)) * glEnableVertexAttribArray(index) # <<<<<<<<<<<<<< * * ##pxm-FUNC P nogil */ glEnableVertexAttribArray(__pyx_v_index); /* "_gldraw_ogl.pyx":229 * * ##pxm-FUNC P nogil * cdef void _gl_enable_pointer(GLuint index, GLint size, GLenum type, GLboolean normalized, long pointer) nogil: # <<<<<<<<<<<<<< * glVertexAttribPointer(index, size, type, normalized, 0, pointer) #px/ * #glVertexAttribPointer(index, size, type, normalized, 0, ctypes.cast(pointer, ctypes.c_void_p)) */ /* function exit code */ } /* "_gldraw_ogl.pyx":235 * * ##pxm-FUNC P nogil * cdef void _gl_disable_pointer(GLuint index) nogil: # <<<<<<<<<<<<<< * glVertexAttribPointer(index, 4, GL_FLOAT, GL_FALSE, 0, NULL) #px/ * #glVertexAttribPointer(index, 4, GL_FLOAT, GL_FALSE, 0, ctypes.cast(0, ctypes.c_void_p)) */ static void __pyx_f_11_gldraw_ogl__gl_disable_pointer(GLuint __pyx_v_index) { /* "_gldraw_ogl.pyx":236 * ##pxm-FUNC P nogil * cdef void _gl_disable_pointer(GLuint index) nogil: * glVertexAttribPointer(index, 4, GL_FLOAT, GL_FALSE, 0, NULL) #px/ # <<<<<<<<<<<<<< * #glVertexAttribPointer(index, 4, GL_FLOAT, GL_FALSE, 0, ctypes.cast(0, ctypes.c_void_p)) * glDisableVertexAttribArray(index) */ glVertexAttribPointer(__pyx_v_index, 4, GL_FLOAT, GL_FALSE, 0, NULL); /* "_gldraw_ogl.pyx":238 * glVertexAttribPointer(index, 4, GL_FLOAT, GL_FALSE, 0, NULL) #px/ * #glVertexAttribPointer(index, 4, GL_FLOAT, GL_FALSE, 0, ctypes.cast(0, ctypes.c_void_p)) * glDisableVertexAttribArray(index) # <<<<<<<<<<<<<< * * ##pxm-FUNC PD nogil */ glDisableVertexAttribArray(__pyx_v_index); /* "_gldraw_ogl.pyx":235 * * ##pxm-FUNC P nogil * cdef void _gl_disable_pointer(GLuint index) nogil: # <<<<<<<<<<<<<< * glVertexAttribPointer(index, 4, GL_FLOAT, GL_FALSE, 0, NULL) #px/ * #glVertexAttribPointer(index, 4, GL_FLOAT, GL_FALSE, 0, ctypes.cast(0, ctypes.c_void_p)) */ /* function exit code */ } /* "_gldraw_ogl.pyx":241 * * ##pxm-FUNC PD nogil * cdef void sync_blocks(int nblocks, short *cnts_block, int idx_debug, int cnt_debug, int cnt_pick) nogil: # <<<<<<<<<<<<<< * cdef unsigned int idx_block, idx #px+ * cube.number_blocks = nblocks */ static void __pyx_f_11_gldraw_ogl_sync_blocks(int __pyx_v_nblocks, short *__pyx_v_cnts_block, int __pyx_v_idx_debug, int __pyx_v_cnt_debug, int __pyx_v_cnt_pick) { unsigned int __pyx_v_idx_block; unsigned int __pyx_v_idx; unsigned int __pyx_t_1; unsigned int __pyx_t_2; /* "_gldraw_ogl.pyx":243 * cdef void sync_blocks(int nblocks, short *cnts_block, int idx_debug, int cnt_debug, int cnt_pick) nogil: * cdef unsigned int idx_block, idx #px+ * cube.number_blocks = nblocks # <<<<<<<<<<<<<< * * idx_block = 0 */ __pyx_v_11_gldraw_ogl_cube.number_blocks = __pyx_v_nblocks; /* "_gldraw_ogl.pyx":245 * cube.number_blocks = nblocks * * idx_block = 0 # <<<<<<<<<<<<<< * for idx in range(cube.number_blocks): * cube.blocks[idx].idx_triangles = idx_block */ __pyx_v_idx_block = 0; /* "_gldraw_ogl.pyx":246 * * idx_block = 0 * for idx in range(cube.number_blocks): # <<<<<<<<<<<<<< * cube.blocks[idx].idx_triangles = idx_block * cube.blocks[idx].cnt_triangles = cnts_block[idx] */ __pyx_t_1 = __pyx_v_11_gldraw_ogl_cube.number_blocks; for (__pyx_t_2 = 0; __pyx_t_2 < __pyx_t_1; __pyx_t_2+=1) { __pyx_v_idx = __pyx_t_2; /* "_gldraw_ogl.pyx":247 * idx_block = 0 * for idx in range(cube.number_blocks): * cube.blocks[idx].idx_triangles = idx_block # <<<<<<<<<<<<<< * cube.blocks[idx].cnt_triangles = cnts_block[idx] * idx_block += cnts_block[idx] */ (__pyx_v_11_gldraw_ogl_cube.blocks[__pyx_v_idx]).idx_triangles = __pyx_v_idx_block; /* "_gldraw_ogl.pyx":248 * for idx in range(cube.number_blocks): * cube.blocks[idx].idx_triangles = idx_block * cube.blocks[idx].cnt_triangles = cnts_block[idx] # <<<<<<<<<<<<<< * idx_block += cnts_block[idx] * */ (__pyx_v_11_gldraw_ogl_cube.blocks[__pyx_v_idx]).cnt_triangles = (__pyx_v_cnts_block[__pyx_v_idx]); /* "_gldraw_ogl.pyx":249 * cube.blocks[idx].idx_triangles = idx_block * cube.blocks[idx].cnt_triangles = cnts_block[idx] * idx_block += cnts_block[idx] # <<<<<<<<<<<<<< * * cube.cnt_pick = cnt_pick */ __pyx_v_idx_block = (__pyx_v_idx_block + (__pyx_v_cnts_block[__pyx_v_idx])); } /* "_gldraw_ogl.pyx":251 * idx_block += cnts_block[idx] * * cube.cnt_pick = cnt_pick # <<<<<<<<<<<<<< * cube.idx_debug = idx_debug * cube.cnt_debug = cnt_debug */ __pyx_v_11_gldraw_ogl_cube.cnt_pick = __pyx_v_cnt_pick; /* "_gldraw_ogl.pyx":252 * * cube.cnt_pick = cnt_pick * cube.idx_debug = idx_debug # <<<<<<<<<<<<<< * cube.cnt_debug = cnt_debug * */ __pyx_v_11_gldraw_ogl_cube.idx_debug = __pyx_v_idx_debug; /* "_gldraw_ogl.pyx":253 * cube.cnt_pick = cnt_pick * cube.idx_debug = idx_debug * cube.cnt_debug = cnt_debug # <<<<<<<<<<<<<< * * ##pxm-FUNC PD nogil */ __pyx_v_11_gldraw_ogl_cube.cnt_debug = __pyx_v_cnt_debug; /* "_gldraw_ogl.pyx":241 * * ##pxm-FUNC PD nogil * cdef void sync_blocks(int nblocks, short *cnts_block, int idx_debug, int cnt_debug, int cnt_pick) nogil: # <<<<<<<<<<<<<< * cdef unsigned int idx_block, idx #px+ * cube.number_blocks = nblocks */ /* function exit code */ } /* "_gldraw_ogl.pyx":256 * * ##pxm-FUNC PD nogil * cdef void sync_vertexdata(int vertexdatalen, char *vertexdata, long *vertexpointers) nogil: # <<<<<<<<<<<<<< * cube.vertexdatalen = vertexdatalen * cube.vertexdata = vertexdata */ static void __pyx_f_11_gldraw_ogl_sync_vertexdata(int __pyx_v_vertexdatalen, char *__pyx_v_vertexdata, long *__pyx_v_vertexpointers) { /* "_gldraw_ogl.pyx":257 * ##pxm-FUNC PD nogil * cdef void sync_vertexdata(int vertexdatalen, char *vertexdata, long *vertexpointers) nogil: * cube.vertexdatalen = vertexdatalen # <<<<<<<<<<<<<< * cube.vertexdata = vertexdata * cube.attrib_pointers[0] = 0 */ __pyx_v_11_gldraw_ogl_cube.vertexdatalen = __pyx_v_vertexdatalen; /* "_gldraw_ogl.pyx":258 * cdef void sync_vertexdata(int vertexdatalen, char *vertexdata, long *vertexpointers) nogil: * cube.vertexdatalen = vertexdatalen * cube.vertexdata = vertexdata # <<<<<<<<<<<<<< * cube.attrib_pointers[0] = 0 * cube.attrib_pointers[1] = vertexpointers[0] */ __pyx_v_11_gldraw_ogl_cube.vertexdata = __pyx_v_vertexdata; /* "_gldraw_ogl.pyx":259 * cube.vertexdatalen = vertexdatalen * cube.vertexdata = vertexdata * cube.attrib_pointers[0] = 0 # <<<<<<<<<<<<<< * cube.attrib_pointers[1] = vertexpointers[0] * cube.attrib_pointers[2] = vertexpointers[1] */ (__pyx_v_11_gldraw_ogl_cube.attrib_pointers[0]) = 0; /* "_gldraw_ogl.pyx":260 * cube.vertexdata = vertexdata * cube.attrib_pointers[0] = 0 * cube.attrib_pointers[1] = vertexpointers[0] # <<<<<<<<<<<<<< * cube.attrib_pointers[2] = vertexpointers[1] * cube.attrib_pointers[3] = vertexpointers[2] */ (__pyx_v_11_gldraw_ogl_cube.attrib_pointers[1]) = (__pyx_v_vertexpointers[0]); /* "_gldraw_ogl.pyx":261 * cube.attrib_pointers[0] = 0 * cube.attrib_pointers[1] = vertexpointers[0] * cube.attrib_pointers[2] = vertexpointers[1] # <<<<<<<<<<<<<< * cube.attrib_pointers[3] = vertexpointers[2] * cube.attrib_pointers[4] = vertexpointers[3] */ (__pyx_v_11_gldraw_ogl_cube.attrib_pointers[2]) = (__pyx_v_vertexpointers[1]); /* "_gldraw_ogl.pyx":262 * cube.attrib_pointers[1] = vertexpointers[0] * cube.attrib_pointers[2] = vertexpointers[1] * cube.attrib_pointers[3] = vertexpointers[2] # <<<<<<<<<<<<<< * cube.attrib_pointers[4] = vertexpointers[3] * cube.attrib_pointers[5] = vertexpointers[4] */ (__pyx_v_11_gldraw_ogl_cube.attrib_pointers[3]) = (__pyx_v_vertexpointers[2]); /* "_gldraw_ogl.pyx":263 * cube.attrib_pointers[2] = vertexpointers[1] * cube.attrib_pointers[3] = vertexpointers[2] * cube.attrib_pointers[4] = vertexpointers[3] # <<<<<<<<<<<<<< * cube.attrib_pointers[5] = vertexpointers[4] * cube.attrib_pointers[6] = vertexpointers[5] */ (__pyx_v_11_gldraw_ogl_cube.attrib_pointers[4]) = (__pyx_v_vertexpointers[3]); /* "_gldraw_ogl.pyx":264 * cube.attrib_pointers[3] = vertexpointers[2] * cube.attrib_pointers[4] = vertexpointers[3] * cube.attrib_pointers[5] = vertexpointers[4] # <<<<<<<<<<<<<< * cube.attrib_pointers[6] = vertexpointers[5] * */ (__pyx_v_11_gldraw_ogl_cube.attrib_pointers[5]) = (__pyx_v_vertexpointers[4]); /* "_gldraw_ogl.pyx":265 * cube.attrib_pointers[4] = vertexpointers[3] * cube.attrib_pointers[5] = vertexpointers[4] * cube.attrib_pointers[6] = vertexpointers[5] # <<<<<<<<<<<<<< * * ##pxm-FUNC PD nogil */ (__pyx_v_11_gldraw_ogl_cube.attrib_pointers[6]) = (__pyx_v_vertexpointers[5]); /* "_gldraw_ogl.pyx":256 * * ##pxm-FUNC PD nogil * cdef void sync_vertexdata(int vertexdatalen, char *vertexdata, long *vertexpointers) nogil: # <<<<<<<<<<<<<< * cube.vertexdatalen = vertexdatalen * cube.vertexdata = vertexdata */ /* function exit code */ } /* "_gldraw_ogl.pyx":268 * * ##pxm-FUNC PD nogil * cdef void sync_transformations(int transformations_count, mat4 *transformations) nogil: # <<<<<<<<<<<<<< * cdef int t #px+ * cdef unsigned int i, j #px+ */ static void __pyx_f_11_gldraw_ogl_sync_transformations(int __pyx_v_transformations_count, __pyx_t_11_gldraw_ogl_mat4 *__pyx_v_transformations) { int __pyx_v_t; unsigned int __pyx_v_i; unsigned int __pyx_v_j; int __pyx_t_1; int __pyx_t_2; unsigned int __pyx_t_3; unsigned int __pyx_t_4; /* "_gldraw_ogl.pyx":271 * cdef int t #px+ * cdef unsigned int i, j #px+ * for t in range(transformations_count): # <<<<<<<<<<<<<< * for i in range(4): * for j in range(4): */ __pyx_t_1 = __pyx_v_transformations_count; for (__pyx_t_2 = 0; __pyx_t_2 < __pyx_t_1; __pyx_t_2+=1) { __pyx_v_t = __pyx_t_2; /* "_gldraw_ogl.pyx":272 * cdef unsigned int i, j #px+ * for t in range(transformations_count): * for i in range(4): # <<<<<<<<<<<<<< * for j in range(4): * cube.transformations[t][i][j] = float(transformations[t][i][j]) */ for (__pyx_t_3 = 0; __pyx_t_3 < 4; __pyx_t_3+=1) { __pyx_v_i = __pyx_t_3; /* "_gldraw_ogl.pyx":273 * for t in range(transformations_count): * for i in range(4): * for j in range(4): # <<<<<<<<<<<<<< * cube.transformations[t][i][j] = float(transformations[t][i][j]) * */ for (__pyx_t_4 = 0; __pyx_t_4 < 4; __pyx_t_4+=1) { __pyx_v_j = __pyx_t_4; /* "_gldraw_ogl.pyx":274 * for i in range(4): * for j in range(4): * cube.transformations[t][i][j] = float(transformations[t][i][j]) # <<<<<<<<<<<<<< * * ##pxm-FUNC PD nogil */ (((__pyx_v_11_gldraw_ogl_cube.transformations[__pyx_v_t])[__pyx_v_i])[__pyx_v_j]) = ((double)(((__pyx_v_transformations[__pyx_v_t])[__pyx_v_i])[__pyx_v_j])); } } } /* "_gldraw_ogl.pyx":268 * * ##pxm-FUNC PD nogil * cdef void sync_transformations(int transformations_count, mat4 *transformations) nogil: # <<<<<<<<<<<<<< * cdef int t #px+ * cdef unsigned int i, j #px+ */ /* function exit code */ } /* "_gldraw_ogl.pyx":277 * * ##pxm-FUNC PD nogil * cdef void gl_enable_data() nogil: # <<<<<<<<<<<<<< * glBindBuffer(GL_ARRAY_BUFFER, cube.glbuffer) * glBufferData(GL_ARRAY_BUFFER, cube.vertexdatalen, cube.vertexdata, GL_STATIC_DRAW) */ static void __pyx_f_11_gldraw_ogl_gl_enable_data(void) { /* "_gldraw_ogl.pyx":278 * ##pxm-FUNC PD nogil * cdef void gl_enable_data() nogil: * glBindBuffer(GL_ARRAY_BUFFER, cube.glbuffer) # <<<<<<<<<<<<<< * glBufferData(GL_ARRAY_BUFFER, cube.vertexdatalen, cube.vertexdata, GL_STATIC_DRAW) * */ glBindBuffer(GL_ARRAY_BUFFER, __pyx_v_11_gldraw_ogl_cube.glbuffer); /* "_gldraw_ogl.pyx":279 * cdef void gl_enable_data() nogil: * glBindBuffer(GL_ARRAY_BUFFER, cube.glbuffer) * glBufferData(GL_ARRAY_BUFFER, cube.vertexdatalen, cube.vertexdata, GL_STATIC_DRAW) # <<<<<<<<<<<<<< * * _gl_enable_pointer(ATTRIB_LOCATION, 3, GL_FLOAT, GL_FALSE, cube.attrib_pointers[0]) */ glBufferData(GL_ARRAY_BUFFER, __pyx_v_11_gldraw_ogl_cube.vertexdatalen, __pyx_v_11_gldraw_ogl_cube.vertexdata, GL_STATIC_DRAW); /* "_gldraw_ogl.pyx":281 * glBufferData(GL_ARRAY_BUFFER, cube.vertexdatalen, cube.vertexdata, GL_STATIC_DRAW) * * _gl_enable_pointer(ATTRIB_LOCATION, 3, GL_FLOAT, GL_FALSE, cube.attrib_pointers[0]) # <<<<<<<<<<<<<< * _gl_enable_pointer(ATTRIB_LOCATION+1, 3, GL_FLOAT, GL_FALSE, cube.attrib_pointers[1]) * _gl_enable_pointer(ATTRIB_LOCATION+2, 3, GL_UNSIGNED_BYTE, GL_TRUE, cube.attrib_pointers[2]) */ __pyx_f_11_gldraw_ogl__gl_enable_pointer(__pyx_e_11_gldraw_ogl_ATTRIB_LOCATION, 3, GL_FLOAT, GL_FALSE, (__pyx_v_11_gldraw_ogl_cube.attrib_pointers[0])); /* "_gldraw_ogl.pyx":282 * * _gl_enable_pointer(ATTRIB_LOCATION, 3, GL_FLOAT, GL_FALSE, cube.attrib_pointers[0]) * _gl_enable_pointer(ATTRIB_LOCATION+1, 3, GL_FLOAT, GL_FALSE, cube.attrib_pointers[1]) # <<<<<<<<<<<<<< * _gl_enable_pointer(ATTRIB_LOCATION+2, 3, GL_UNSIGNED_BYTE, GL_TRUE, cube.attrib_pointers[2]) * _gl_enable_pointer(ATTRIB_LOCATION+3, 2, GL_FLOAT, GL_FALSE, cube.attrib_pointers[3]) */ __pyx_f_11_gldraw_ogl__gl_enable_pointer((__pyx_e_11_gldraw_ogl_ATTRIB_LOCATION + 1), 3, GL_FLOAT, GL_FALSE, (__pyx_v_11_gldraw_ogl_cube.attrib_pointers[1])); /* "_gldraw_ogl.pyx":283 * _gl_enable_pointer(ATTRIB_LOCATION, 3, GL_FLOAT, GL_FALSE, cube.attrib_pointers[0]) * _gl_enable_pointer(ATTRIB_LOCATION+1, 3, GL_FLOAT, GL_FALSE, cube.attrib_pointers[1]) * _gl_enable_pointer(ATTRIB_LOCATION+2, 3, GL_UNSIGNED_BYTE, GL_TRUE, cube.attrib_pointers[2]) # <<<<<<<<<<<<<< * _gl_enable_pointer(ATTRIB_LOCATION+3, 2, GL_FLOAT, GL_FALSE, cube.attrib_pointers[3]) * _gl_enable_pointer(ATTRIB_LOCATION+4, 3, GL_FLOAT, GL_FALSE, cube.attrib_pointers[4]) */ __pyx_f_11_gldraw_ogl__gl_enable_pointer((__pyx_e_11_gldraw_ogl_ATTRIB_LOCATION + 2), 3, GL_UNSIGNED_BYTE, GL_TRUE, (__pyx_v_11_gldraw_ogl_cube.attrib_pointers[2])); /* "_gldraw_ogl.pyx":284 * _gl_enable_pointer(ATTRIB_LOCATION+1, 3, GL_FLOAT, GL_FALSE, cube.attrib_pointers[1]) * _gl_enable_pointer(ATTRIB_LOCATION+2, 3, GL_UNSIGNED_BYTE, GL_TRUE, cube.attrib_pointers[2]) * _gl_enable_pointer(ATTRIB_LOCATION+3, 2, GL_FLOAT, GL_FALSE, cube.attrib_pointers[3]) # <<<<<<<<<<<<<< * _gl_enable_pointer(ATTRIB_LOCATION+4, 3, GL_FLOAT, GL_FALSE, cube.attrib_pointers[4]) * _gl_enable_pointer(PICKATTRIB_LOCATION, 3, GL_FLOAT, GL_FALSE, cube.attrib_pointers[5]) */ __pyx_f_11_gldraw_ogl__gl_enable_pointer((__pyx_e_11_gldraw_ogl_ATTRIB_LOCATION + 3), 2, GL_FLOAT, GL_FALSE, (__pyx_v_11_gldraw_ogl_cube.attrib_pointers[3])); /* "_gldraw_ogl.pyx":285 * _gl_enable_pointer(ATTRIB_LOCATION+2, 3, GL_UNSIGNED_BYTE, GL_TRUE, cube.attrib_pointers[2]) * _gl_enable_pointer(ATTRIB_LOCATION+3, 2, GL_FLOAT, GL_FALSE, cube.attrib_pointers[3]) * _gl_enable_pointer(ATTRIB_LOCATION+4, 3, GL_FLOAT, GL_FALSE, cube.attrib_pointers[4]) # <<<<<<<<<<<<<< * _gl_enable_pointer(PICKATTRIB_LOCATION, 3, GL_FLOAT, GL_FALSE, cube.attrib_pointers[5]) * _gl_enable_pointer(PICKATTRIB_LOCATION+1, 3, GL_UNSIGNED_BYTE, GL_TRUE, cube.attrib_pointers[6]) */ __pyx_f_11_gldraw_ogl__gl_enable_pointer((__pyx_e_11_gldraw_ogl_ATTRIB_LOCATION + 4), 3, GL_FLOAT, GL_FALSE, (__pyx_v_11_gldraw_ogl_cube.attrib_pointers[4])); /* "_gldraw_ogl.pyx":286 * _gl_enable_pointer(ATTRIB_LOCATION+3, 2, GL_FLOAT, GL_FALSE, cube.attrib_pointers[3]) * _gl_enable_pointer(ATTRIB_LOCATION+4, 3, GL_FLOAT, GL_FALSE, cube.attrib_pointers[4]) * _gl_enable_pointer(PICKATTRIB_LOCATION, 3, GL_FLOAT, GL_FALSE, cube.attrib_pointers[5]) # <<<<<<<<<<<<<< * _gl_enable_pointer(PICKATTRIB_LOCATION+1, 3, GL_UNSIGNED_BYTE, GL_TRUE, cube.attrib_pointers[6]) * */ __pyx_f_11_gldraw_ogl__gl_enable_pointer(__pyx_e_11_gldraw_ogl_PICKATTRIB_LOCATION, 3, GL_FLOAT, GL_FALSE, (__pyx_v_11_gldraw_ogl_cube.attrib_pointers[5])); /* "_gldraw_ogl.pyx":287 * _gl_enable_pointer(ATTRIB_LOCATION+4, 3, GL_FLOAT, GL_FALSE, cube.attrib_pointers[4]) * _gl_enable_pointer(PICKATTRIB_LOCATION, 3, GL_FLOAT, GL_FALSE, cube.attrib_pointers[5]) * _gl_enable_pointer(PICKATTRIB_LOCATION+1, 3, GL_UNSIGNED_BYTE, GL_TRUE, cube.attrib_pointers[6]) # <<<<<<<<<<<<<< * * ##pxm-FUNC PD nogil */ __pyx_f_11_gldraw_ogl__gl_enable_pointer((__pyx_e_11_gldraw_ogl_PICKATTRIB_LOCATION + 1), 3, GL_UNSIGNED_BYTE, GL_TRUE, (__pyx_v_11_gldraw_ogl_cube.attrib_pointers[6])); /* "_gldraw_ogl.pyx":277 * * ##pxm-FUNC PD nogil * cdef void gl_enable_data() nogil: # <<<<<<<<<<<<<< * glBindBuffer(GL_ARRAY_BUFFER, cube.glbuffer) * glBufferData(GL_ARRAY_BUFFER, cube.vertexdatalen, cube.vertexdata, GL_STATIC_DRAW) */ /* function exit code */ } /* "_gldraw_ogl.pyx":290 * * ##pxm-FUNC PD nogil * cdef void gl_disable_data() nogil: # <<<<<<<<<<<<<< * glBindBuffer(GL_ARRAY_BUFFER, 0) * _gl_disable_pointer(ATTRIB_LOCATION) */ static void __pyx_f_11_gldraw_ogl_gl_disable_data(void) { /* "_gldraw_ogl.pyx":291 * ##pxm-FUNC PD nogil * cdef void gl_disable_data() nogil: * glBindBuffer(GL_ARRAY_BUFFER, 0) # <<<<<<<<<<<<<< * _gl_disable_pointer(ATTRIB_LOCATION) * _gl_disable_pointer(ATTRIB_LOCATION+1) */ glBindBuffer(GL_ARRAY_BUFFER, 0); /* "_gldraw_ogl.pyx":292 * cdef void gl_disable_data() nogil: * glBindBuffer(GL_ARRAY_BUFFER, 0) * _gl_disable_pointer(ATTRIB_LOCATION) # <<<<<<<<<<<<<< * _gl_disable_pointer(ATTRIB_LOCATION+1) * _gl_disable_pointer(ATTRIB_LOCATION+2) */ __pyx_f_11_gldraw_ogl__gl_disable_pointer(__pyx_e_11_gldraw_ogl_ATTRIB_LOCATION); /* "_gldraw_ogl.pyx":293 * glBindBuffer(GL_ARRAY_BUFFER, 0) * _gl_disable_pointer(ATTRIB_LOCATION) * _gl_disable_pointer(ATTRIB_LOCATION+1) # <<<<<<<<<<<<<< * _gl_disable_pointer(ATTRIB_LOCATION+2) * _gl_disable_pointer(ATTRIB_LOCATION+3) */ __pyx_f_11_gldraw_ogl__gl_disable_pointer((__pyx_e_11_gldraw_ogl_ATTRIB_LOCATION + 1)); /* "_gldraw_ogl.pyx":294 * _gl_disable_pointer(ATTRIB_LOCATION) * _gl_disable_pointer(ATTRIB_LOCATION+1) * _gl_disable_pointer(ATTRIB_LOCATION+2) # <<<<<<<<<<<<<< * _gl_disable_pointer(ATTRIB_LOCATION+3) * _gl_disable_pointer(ATTRIB_LOCATION+4) */ __pyx_f_11_gldraw_ogl__gl_disable_pointer((__pyx_e_11_gldraw_ogl_ATTRIB_LOCATION + 2)); /* "_gldraw_ogl.pyx":295 * _gl_disable_pointer(ATTRIB_LOCATION+1) * _gl_disable_pointer(ATTRIB_LOCATION+2) * _gl_disable_pointer(ATTRIB_LOCATION+3) # <<<<<<<<<<<<<< * _gl_disable_pointer(ATTRIB_LOCATION+4) * _gl_disable_pointer(PICKATTRIB_LOCATION) */ __pyx_f_11_gldraw_ogl__gl_disable_pointer((__pyx_e_11_gldraw_ogl_ATTRIB_LOCATION + 3)); /* "_gldraw_ogl.pyx":296 * _gl_disable_pointer(ATTRIB_LOCATION+2) * _gl_disable_pointer(ATTRIB_LOCATION+3) * _gl_disable_pointer(ATTRIB_LOCATION+4) # <<<<<<<<<<<<<< * _gl_disable_pointer(PICKATTRIB_LOCATION) * _gl_disable_pointer(PICKATTRIB_LOCATION+1) */ __pyx_f_11_gldraw_ogl__gl_disable_pointer((__pyx_e_11_gldraw_ogl_ATTRIB_LOCATION + 4)); /* "_gldraw_ogl.pyx":297 * _gl_disable_pointer(ATTRIB_LOCATION+3) * _gl_disable_pointer(ATTRIB_LOCATION+4) * _gl_disable_pointer(PICKATTRIB_LOCATION) # <<<<<<<<<<<<<< * _gl_disable_pointer(PICKATTRIB_LOCATION+1) * */ __pyx_f_11_gldraw_ogl__gl_disable_pointer(__pyx_e_11_gldraw_ogl_PICKATTRIB_LOCATION); /* "_gldraw_ogl.pyx":298 * _gl_disable_pointer(ATTRIB_LOCATION+4) * _gl_disable_pointer(PICKATTRIB_LOCATION) * _gl_disable_pointer(PICKATTRIB_LOCATION+1) # <<<<<<<<<<<<<< * * ##pxm-FUNC PD nogil */ __pyx_f_11_gldraw_ogl__gl_disable_pointer((__pyx_e_11_gldraw_ogl_PICKATTRIB_LOCATION + 1)); /* "_gldraw_ogl.pyx":290 * * ##pxm-FUNC PD nogil * cdef void gl_disable_data() nogil: # <<<<<<<<<<<<<< * glBindBuffer(GL_ARRAY_BUFFER, 0) * _gl_disable_pointer(ATTRIB_LOCATION) */ /* function exit code */ } /* "_gldraw_ogl.pyx":301 * * ##pxm-FUNC PD nogil * cdef void gl_draw_cube_debug() nogil: # <<<<<<<<<<<<<< * cdef mat4 object_matrix #px/ * #object_matrix = mat4() */ static void __pyx_f_11_gldraw_ogl_gl_draw_cube_debug(void) { __pyx_t_11_gldraw_ogl_mat4 __pyx_v_object_matrix; /* "_gldraw_ogl.pyx":304 * cdef mat4 object_matrix #px/ * #object_matrix = mat4() * matrix_set_identity(object_matrix) # <<<<<<<<<<<<<< * glUniformMatrix4fv(cube.object_location, 1, GL_FALSE, &object_matrix[0][0]) #px/ * #glUniformMatrix4fv(cube.object_location, 1, GL_FALSE, object_matrix) */ __pyx_f_11_gldraw_ogl_matrix_set_identity(__pyx_v_object_matrix); /* "_gldraw_ogl.pyx":305 * #object_matrix = mat4() * matrix_set_identity(object_matrix) * glUniformMatrix4fv(cube.object_location, 1, GL_FALSE, &object_matrix[0][0]) #px/ # <<<<<<<<<<<<<< * #glUniformMatrix4fv(cube.object_location, 1, GL_FALSE, object_matrix) * glDrawArrays(GL_LINES, cube.idx_debug, cube.cnt_debug) */ glUniformMatrix4fv(__pyx_v_11_gldraw_ogl_cube.object_location, 1, GL_FALSE, (&((__pyx_v_object_matrix[0])[0]))); /* "_gldraw_ogl.pyx":307 * glUniformMatrix4fv(cube.object_location, 1, GL_FALSE, &object_matrix[0][0]) #px/ * #glUniformMatrix4fv(cube.object_location, 1, GL_FALSE, object_matrix) * glDrawArrays(GL_LINES, cube.idx_debug, cube.cnt_debug) # <<<<<<<<<<<<<< * * ##pxm-FUNC PD nogil */ glDrawArrays(GL_LINES, __pyx_v_11_gldraw_ogl_cube.idx_debug, __pyx_v_11_gldraw_ogl_cube.cnt_debug); /* "_gldraw_ogl.pyx":301 * * ##pxm-FUNC PD nogil * cdef void gl_draw_cube_debug() nogil: # <<<<<<<<<<<<<< * cdef mat4 object_matrix #px/ * #object_matrix = mat4() */ /* function exit code */ } /* "_gldraw_ogl.pyx":310 * * ##pxm-FUNC PD nogil * cdef void gl_draw_select_debug(GLfloat *selectdata, GLsizeiptr size, GLuint prog_hud) nogil: # <<<<<<<<<<<<<< * cdef int i, j #px+ * cdef GLintptr offset #px+ */ static void __pyx_f_11_gldraw_ogl_gl_draw_select_debug(GLfloat *__pyx_v_selectdata, GLsizeiptr __pyx_v_size, GLuint __pyx_v_prog_hud) { GLintptr __pyx_v_offset; int __pyx_t_1; /* "_gldraw_ogl.pyx":313 * cdef int i, j #px+ * cdef GLintptr offset #px+ * if cube.cnt_debug == 0: # <<<<<<<<<<<<<< * #XXX: The data used here has fixed size, but may not be initialized yet * return */ __pyx_t_1 = ((__pyx_v_11_gldraw_ogl_cube.cnt_debug == 0) != 0); if (__pyx_t_1) { /* "_gldraw_ogl.pyx":315 * if cube.cnt_debug == 0: * #XXX: The data used here has fixed size, but may not be initialized yet * return # <<<<<<<<<<<<<< * offset = (cube.idx_debug+cube.cnt_debug) * 3 * sizeof(GLfloat) * glBufferSubData(GL_ARRAY_BUFFER, offset, size, &selectdata[0]) #px/ */ goto __pyx_L0; /* "_gldraw_ogl.pyx":313 * cdef int i, j #px+ * cdef GLintptr offset #px+ * if cube.cnt_debug == 0: # <<<<<<<<<<<<<< * #XXX: The data used here has fixed size, but may not be initialized yet * return */ } /* "_gldraw_ogl.pyx":316 * #XXX: The data used here has fixed size, but may not be initialized yet * return * offset = (cube.idx_debug+cube.cnt_debug) * 3 * sizeof(GLfloat) # <<<<<<<<<<<<<< * glBufferSubData(GL_ARRAY_BUFFER, offset, size, &selectdata[0]) #px/ * #glBufferSubData(GL_ARRAY_BUFFER, offset, len(selectdata) * sizeof(GLfloat), ArrayDatatype.asArray(selectdata, GL_FLOAT)) */ __pyx_v_offset = (((__pyx_v_11_gldraw_ogl_cube.idx_debug + __pyx_v_11_gldraw_ogl_cube.cnt_debug) * 3) * (sizeof(GLfloat))); /* "_gldraw_ogl.pyx":317 * return * offset = (cube.idx_debug+cube.cnt_debug) * 3 * sizeof(GLfloat) * glBufferSubData(GL_ARRAY_BUFFER, offset, size, &selectdata[0]) #px/ # <<<<<<<<<<<<<< * #glBufferSubData(GL_ARRAY_BUFFER, offset, len(selectdata) * sizeof(GLfloat), ArrayDatatype.asArray(selectdata, GL_FLOAT)) * */ glBufferSubData(GL_ARRAY_BUFFER, __pyx_v_offset, __pyx_v_size, (&(__pyx_v_selectdata[0]))); /* "_gldraw_ogl.pyx":320 * #glBufferSubData(GL_ARRAY_BUFFER, offset, len(selectdata) * sizeof(GLfloat), ArrayDatatype.asArray(selectdata, GL_FLOAT)) * * glDisable(GL_DEPTH_TEST) # <<<<<<<<<<<<<< * glDrawArrays(GL_LINES, cube.idx_debug+cube.cnt_debug, 2) * glUseProgram(prog_hud) */ glDisable(GL_DEPTH_TEST); /* "_gldraw_ogl.pyx":321 * * glDisable(GL_DEPTH_TEST) * glDrawArrays(GL_LINES, cube.idx_debug+cube.cnt_debug, 2) # <<<<<<<<<<<<<< * glUseProgram(prog_hud) * glDrawArrays(GL_POINTS, cube.idx_debug+cube.cnt_debug+2, 2) */ glDrawArrays(GL_LINES, (__pyx_v_11_gldraw_ogl_cube.idx_debug + __pyx_v_11_gldraw_ogl_cube.cnt_debug), 2); /* "_gldraw_ogl.pyx":322 * glDisable(GL_DEPTH_TEST) * glDrawArrays(GL_LINES, cube.idx_debug+cube.cnt_debug, 2) * glUseProgram(prog_hud) # <<<<<<<<<<<<<< * glDrawArrays(GL_POINTS, cube.idx_debug+cube.cnt_debug+2, 2) * */ glUseProgram(__pyx_v_prog_hud); /* "_gldraw_ogl.pyx":323 * glDrawArrays(GL_LINES, cube.idx_debug+cube.cnt_debug, 2) * glUseProgram(prog_hud) * glDrawArrays(GL_POINTS, cube.idx_debug+cube.cnt_debug+2, 2) # <<<<<<<<<<<<<< * * ##pxm-FUNC PD nogil */ glDrawArrays(GL_POINTS, ((__pyx_v_11_gldraw_ogl_cube.idx_debug + __pyx_v_11_gldraw_ogl_cube.cnt_debug) + 2), 2); /* "_gldraw_ogl.pyx":310 * * ##pxm-FUNC PD nogil * cdef void gl_draw_select_debug(GLfloat *selectdata, GLsizeiptr size, GLuint prog_hud) nogil: # <<<<<<<<<<<<<< * cdef int i, j #px+ * cdef GLintptr offset #px+ */ /* function exit code */ __pyx_L0:; } /* "_gldraw_ogl.pyx":326 * * ##pxm-FUNC PD nogil * cdef void gl_init_object_location(GLuint location) nogil: # <<<<<<<<<<<<<< * cube.object_location = location * */ static void __pyx_f_11_gldraw_ogl_gl_init_object_location(GLuint __pyx_v_location) { /* "_gldraw_ogl.pyx":327 * ##pxm-FUNC PD nogil * cdef void gl_init_object_location(GLuint location) nogil: * cube.object_location = location # <<<<<<<<<<<<<< * * */ __pyx_v_11_gldraw_ogl_cube.object_location = __pyx_v_location; /* "_gldraw_ogl.pyx":326 * * ##pxm-FUNC PD nogil * cdef void gl_init_object_location(GLuint location) nogil: # <<<<<<<<<<<<<< * cube.object_location = location * */ /* function exit code */ } static PyMethodDef __pyx_methods[] = { {0, 0, 0, 0} }; #if PY_MAJOR_VERSION >= 3 static struct PyModuleDef __pyx_moduledef = { #if PY_VERSION_HEX < 0x03020000 { PyObject_HEAD_INIT(NULL) NULL, 0, NULL }, #else PyModuleDef_HEAD_INIT, #endif "_gldraw_ogl", 0, /* m_doc */ -1, /* m_size */ __pyx_methods /* m_methods */, NULL, /* m_reload */ NULL, /* m_traverse */ NULL, /* m_clear */ NULL /* m_free */ }; #endif static __Pyx_StringTabEntry __pyx_string_tab[] = { {&__pyx_n_s_DEBUG_MSGEXT, __pyx_k_DEBUG_MSGEXT, sizeof(__pyx_k_DEBUG_MSGEXT), 0, 0, 1, 1}, {&__pyx_kp_u_GL_type_ogl, __pyx_k_GL_type_ogl, sizeof(__pyx_k_GL_type_ogl), 0, 1, 0, 0}, {&__pyx_kp_u_compiled, __pyx_k_compiled, sizeof(__pyx_k_compiled), 0, 1, 0, 0}, {&__pyx_n_s_compiled_2, __pyx_k_compiled_2, sizeof(__pyx_k_compiled_2), 0, 0, 1, 1}, {&__pyx_kp_u_from_package, __pyx_k_from_package, sizeof(__pyx_k_from_package), 0, 1, 0, 0}, {&__pyx_n_s_gldraw_ogl, __pyx_k_gldraw_ogl, sizeof(__pyx_k_gldraw_ogl), 0, 0, 1, 1}, {&__pyx_kp_s_tmp, __pyx_k_tmp, sizeof(__pyx_k_tmp), 0, 0, 1, 0}, {&__pyx_kp_u_init_module, __pyx_k_init_module, sizeof(__pyx_k_init_module), 0, 1, 0, 0}, {&__pyx_n_s_main, __pyx_k_main, sizeof(__pyx_k_main), 0, 0, 1, 1}, {&__pyx_n_s_module, __pyx_k_module, sizeof(__pyx_k_module), 0, 0, 1, 1}, {&__pyx_n_s_name, __pyx_k_name, sizeof(__pyx_k_name), 0, 0, 1, 1}, {&__pyx_n_s_package, __pyx_k_package, sizeof(__pyx_k_package), 0, 0, 1, 1}, {&__pyx_n_s_print, __pyx_k_print, sizeof(__pyx_k_print), 0, 0, 1, 1}, {&__pyx_n_s_range, __pyx_k_range, sizeof(__pyx_k_range), 0, 0, 1, 1}, {&__pyx_n_s_set_debug_flags, __pyx_k_set_debug_flags, sizeof(__pyx_k_set_debug_flags), 0, 0, 1, 1}, {&__pyx_n_s_test, __pyx_k_test, sizeof(__pyx_k_test), 0, 0, 1, 1}, {0, 0, 0, 0, 0, 0, 0} }; static int __Pyx_InitCachedBuiltins(void) { __pyx_builtin_print = __Pyx_GetBuiltinName(__pyx_n_s_print); if (!__pyx_builtin_print) __PYX_ERR(0, 139, __pyx_L1_error) __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) __PYX_ERR(0, 153, __pyx_L1_error) return 0; __pyx_L1_error:; return -1; } static int __Pyx_InitCachedConstants(void) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0); /* "_gldraw_ogl.pyx":142 * print(' from package:', __package__) * print(' compiled:', __compiled) * print(' GL-type: ogl') #px+ # <<<<<<<<<<<<<< * cube.number_blocks = 0 * cube.cnt_pick = 0 */ __pyx_tuple_ = PyTuple_Pack(1, __pyx_kp_u_GL_type_ogl); if (unlikely(!__pyx_tuple_)) __PYX_ERR(0, 142, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple_); __Pyx_GIVEREF(__pyx_tuple_); /* "_gldraw_ogl.pyx":60 * debug = 0 * * def set_debug_flags(module): # <<<<<<<<<<<<<< * global debug * if module.DEBUG_MSGEXT: debug |= DEBUG_MSGEXT */ __pyx_tuple__2 = PyTuple_Pack(1, __pyx_n_s_module); if (unlikely(!__pyx_tuple__2)) __PYX_ERR(0, 60, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__2); __Pyx_GIVEREF(__pyx_tuple__2); __pyx_codeobj__3 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__2, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_set_debug_flags, 60, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__3)) __PYX_ERR(0, 60, __pyx_L1_error) __Pyx_RefNannyFinishContext(); return 0; __pyx_L1_error:; __Pyx_RefNannyFinishContext(); return -1; } static int __Pyx_InitGlobals(void) { if (__Pyx_InitStrings(__pyx_string_tab) < 0) __PYX_ERR(0, 1, __pyx_L1_error); return 0; __pyx_L1_error:; return -1; } #if PY_MAJOR_VERSION < 3 PyMODINIT_FUNC init_gldraw_ogl(void); /*proto*/ PyMODINIT_FUNC init_gldraw_ogl(void) #else PyMODINIT_FUNC PyInit__gldraw_ogl(void); /*proto*/ PyMODINIT_FUNC PyInit__gldraw_ogl(void) #endif { PyObject *__pyx_t_1 = NULL; __Pyx_RefNannyDeclarations #if CYTHON_REFNANNY __Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny"); if (!__Pyx_RefNanny) { PyErr_Clear(); __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny"); if (!__Pyx_RefNanny) Py_FatalError("failed to import 'refnanny' module"); } #endif __Pyx_RefNannySetupContext("PyMODINIT_FUNC PyInit__gldraw_ogl(void)", 0); if (__Pyx_check_binary_version() < 0) __PYX_ERR(0, 1, __pyx_L1_error) __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(0, 1, __pyx_L1_error) __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(0, 1, __pyx_L1_error) __pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(0, 1, __pyx_L1_error) #ifdef __Pyx_CyFunction_USED if (__pyx_CyFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #endif #ifdef __Pyx_FusedFunction_USED if (__pyx_FusedFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #endif #ifdef __Pyx_Coroutine_USED if (__pyx_Coroutine_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #endif #ifdef __Pyx_Generator_USED if (__pyx_Generator_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #endif #ifdef __Pyx_StopAsyncIteration_USED if (__pyx_StopAsyncIteration_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #endif /*--- Library function declarations ---*/ /*--- Threads initialization code ---*/ #if defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS #ifdef WITH_THREAD /* Python build with threading support? */ PyEval_InitThreads(); #endif #endif /*--- Module creation code ---*/ #if PY_MAJOR_VERSION < 3 __pyx_m = Py_InitModule4("_gldraw_ogl", __pyx_methods, 0, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m); #else __pyx_m = PyModule_Create(&__pyx_moduledef); #endif if (unlikely(!__pyx_m)) __PYX_ERR(0, 1, __pyx_L1_error) __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) __PYX_ERR(0, 1, __pyx_L1_error) Py_INCREF(__pyx_d); __pyx_b = PyImport_AddModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_b)) __PYX_ERR(0, 1, __pyx_L1_error) #if CYTHON_COMPILING_IN_PYPY Py_INCREF(__pyx_b); #endif if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) __PYX_ERR(0, 1, __pyx_L1_error); /*--- Initialize various global constants etc. ---*/ if (__Pyx_InitGlobals() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #if PY_MAJOR_VERSION < 3 && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT) if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #endif if (__pyx_module_is_main__gldraw_ogl) { if (PyObject_SetAttrString(__pyx_m, "__name__", __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error) } #if PY_MAJOR_VERSION >= 3 { PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(0, 1, __pyx_L1_error) if (!PyDict_GetItemString(modules, "_gldraw_ogl")) { if (unlikely(PyDict_SetItemString(modules, "_gldraw_ogl", __pyx_m) < 0)) __PYX_ERR(0, 1, __pyx_L1_error) } } #endif /*--- Builtin init code ---*/ if (__Pyx_InitCachedBuiltins() < 0) __PYX_ERR(0, 1, __pyx_L1_error) /*--- Constants init code ---*/ if (__Pyx_InitCachedConstants() < 0) __PYX_ERR(0, 1, __pyx_L1_error) /*--- Global init code ---*/ /*--- Variable export code ---*/ /*--- Function export code ---*/ if (__Pyx_ExportFunction("matrix_set_identity", (void (*)(void))__pyx_f_11_gldraw_ogl_matrix_set_identity, "void (__pyx_t_11_gldraw_ogl_vec4 *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("init_gldraw", (void (*)(void))__pyx_f_11_gldraw_ogl_init_gldraw, "void (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("sync_block_transformations", (void (*)(void))__pyx_f_11_gldraw_ogl_sync_block_transformations, "void (short *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("sync_animation_start", (void (*)(void))__pyx_f_11_gldraw_ogl_sync_animation_start, "void (int, short *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("sync_animation_next", (void (*)(void))__pyx_f_11_gldraw_ogl_sync_animation_next, "void (float, float, float, float)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("gl_draw_cube", (void (*)(void))__pyx_f_11_gldraw_ogl_gl_draw_cube, "void (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("gl_pick_cube", (void (*)(void))__pyx_f_11_gldraw_ogl_gl_pick_cube, "void (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("gl_init_buffers", (void (*)(void))__pyx_f_11_gldraw_ogl_gl_init_buffers, "void (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("gl_delete_buffers", (void (*)(void))__pyx_f_11_gldraw_ogl_gl_delete_buffers, "void (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("sync_blocks", (void (*)(void))__pyx_f_11_gldraw_ogl_sync_blocks, "void (int, short *, int, int, int)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("sync_vertexdata", (void (*)(void))__pyx_f_11_gldraw_ogl_sync_vertexdata, "void (int, char *, long *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("sync_transformations", (void (*)(void))__pyx_f_11_gldraw_ogl_sync_transformations, "void (int, __pyx_t_11_gldraw_ogl_mat4 *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("gl_enable_data", (void (*)(void))__pyx_f_11_gldraw_ogl_gl_enable_data, "void (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("gl_disable_data", (void (*)(void))__pyx_f_11_gldraw_ogl_gl_disable_data, "void (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("gl_draw_cube_debug", (void (*)(void))__pyx_f_11_gldraw_ogl_gl_draw_cube_debug, "void (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("gl_draw_select_debug", (void (*)(void))__pyx_f_11_gldraw_ogl_gl_draw_select_debug, "void (GLfloat *, GLsizeiptr, GLuint)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("gl_init_object_location", (void (*)(void))__pyx_f_11_gldraw_ogl_gl_init_object_location, "void (GLuint)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) /*--- Type init code ---*/ /*--- Type import code ---*/ /*--- Variable import code ---*/ /*--- Function import code ---*/ /*--- Execution code ---*/ #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) if (__Pyx_patch_abc() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #endif /* "_gldraw_ogl.pyx":25 * # This line makes cython happy * global __name__, __package__ # pylint: disable=W0604 * __compiled = True #px/ # <<<<<<<<<<<<<< * #__compiled = False * */ if (PyDict_SetItem(__pyx_d, __pyx_n_s_compiled_2, Py_True) < 0) __PYX_ERR(0, 25, __pyx_L1_error) /* "_gldraw_ogl.pyx":58 * DEBUG_MSGEXT = 8 * cdef long debug #px+ * debug = 0 # <<<<<<<<<<<<<< * * def set_debug_flags(module): */ __pyx_v_11_gldraw_ogl_debug = 0; /* "_gldraw_ogl.pyx":60 * debug = 0 * * def set_debug_flags(module): # <<<<<<<<<<<<<< * global debug * if module.DEBUG_MSGEXT: debug |= DEBUG_MSGEXT */ __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_11_gldraw_ogl_1set_debug_flags, NULL, __pyx_n_s_gldraw_ogl); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 60, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_d, __pyx_n_s_set_debug_flags, __pyx_t_1) < 0) __PYX_ERR(0, 60, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_gldraw_ogl.pyx":1 * #-*- coding:utf-8 -*- # <<<<<<<<<<<<<< * # cython: profile=False * */ __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_1) < 0) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /*--- Wrapped vars code ---*/ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); if (__pyx_m) { if (__pyx_d) { __Pyx_AddTraceback("init _gldraw_ogl", __pyx_clineno, __pyx_lineno, __pyx_filename); } Py_DECREF(__pyx_m); __pyx_m = 0; } else if (!PyErr_Occurred()) { PyErr_SetString(PyExc_ImportError, "init _gldraw_ogl"); } __pyx_L0:; __Pyx_RefNannyFinishContext(); #if PY_MAJOR_VERSION < 3 return; #else return __pyx_m; #endif } /* --- Runtime support code --- */ /* Refnanny */ #if CYTHON_REFNANNY static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) { PyObject *m = NULL, *p = NULL; void *r = NULL; m = PyImport_ImportModule((char *)modname); if (!m) goto end; p = PyObject_GetAttrString(m, (char *)"RefNannyAPI"); if (!p) goto end; r = PyLong_AsVoidPtr(p); end: Py_XDECREF(p); Py_XDECREF(m); return (__Pyx_RefNannyAPIStruct *)r; } #endif /* GetBuiltinName */ static PyObject *__Pyx_GetBuiltinName(PyObject *name) { PyObject* result = __Pyx_PyObject_GetAttrStr(__pyx_b, name); if (unlikely(!result)) { PyErr_Format(PyExc_NameError, #if PY_MAJOR_VERSION >= 3 "name '%U' is not defined", name); #else "name '%.200s' is not defined", PyString_AS_STRING(name)); #endif } return result; } /* GetModuleGlobalName */ static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name) { PyObject *result; #if !CYTHON_AVOID_BORROWED_REFS result = PyDict_GetItem(__pyx_d, name); if (likely(result)) { Py_INCREF(result); } else { #else result = PyObject_GetItem(__pyx_d, name); if (!result) { PyErr_Clear(); #endif result = __Pyx_GetBuiltinName(name); } return result; } /* PyObjectCall */ #if CYTHON_COMPILING_IN_CPYTHON static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) { PyObject *result; ternaryfunc call = func->ob_type->tp_call; if (unlikely(!call)) return PyObject_Call(func, arg, kw); if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) return NULL; result = (*call)(func, arg, kw); Py_LeaveRecursiveCall(); if (unlikely(!result) && unlikely(!PyErr_Occurred())) { PyErr_SetString( PyExc_SystemError, "NULL result without error in PyObject_Call"); } return result; } #endif /* PyErrFetchRestore */ #if CYTHON_FAST_THREAD_STATE static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { PyObject *tmp_type, *tmp_value, *tmp_tb; tmp_type = tstate->curexc_type; tmp_value = tstate->curexc_value; tmp_tb = tstate->curexc_traceback; tstate->curexc_type = type; tstate->curexc_value = value; tstate->curexc_traceback = tb; Py_XDECREF(tmp_type); Py_XDECREF(tmp_value); Py_XDECREF(tmp_tb); } static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { *type = tstate->curexc_type; *value = tstate->curexc_value; *tb = tstate->curexc_traceback; tstate->curexc_type = 0; tstate->curexc_value = 0; tstate->curexc_traceback = 0; } #endif /* WriteUnraisableException */ static void __Pyx_WriteUnraisable(const char *name, CYTHON_UNUSED int clineno, CYTHON_UNUSED int lineno, CYTHON_UNUSED const char *filename, int full_traceback, CYTHON_UNUSED int nogil) { PyObject *old_exc, *old_val, *old_tb; PyObject *ctx; __Pyx_PyThreadState_declare #ifdef WITH_THREAD PyGILState_STATE state; if (nogil) state = PyGILState_Ensure(); #ifdef _MSC_VER else state = (PyGILState_STATE)-1; #endif #endif __Pyx_PyThreadState_assign __Pyx_ErrFetch(&old_exc, &old_val, &old_tb); if (full_traceback) { Py_XINCREF(old_exc); Py_XINCREF(old_val); Py_XINCREF(old_tb); __Pyx_ErrRestore(old_exc, old_val, old_tb); PyErr_PrintEx(1); } #if PY_MAJOR_VERSION < 3 ctx = PyString_FromString(name); #else ctx = PyUnicode_FromString(name); #endif __Pyx_ErrRestore(old_exc, old_val, old_tb); if (!ctx) { PyErr_WriteUnraisable(Py_None); } else { PyErr_WriteUnraisable(ctx); Py_DECREF(ctx); } #ifdef WITH_THREAD if (nogil) PyGILState_Release(state); #endif } /* CodeObjectCache */ static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) { int start = 0, mid = 0, end = count - 1; if (end >= 0 && code_line > entries[end].code_line) { return count; } while (start < end) { mid = start + (end - start) / 2; if (code_line < entries[mid].code_line) { end = mid; } else if (code_line > entries[mid].code_line) { start = mid + 1; } else { return mid; } } if (code_line <= entries[mid].code_line) { return mid; } else { return mid + 1; } } static PyCodeObject *__pyx_find_code_object(int code_line) { PyCodeObject* code_object; int pos; if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) { return NULL; } pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) { return NULL; } code_object = __pyx_code_cache.entries[pos].code_object; Py_INCREF(code_object); return code_object; } static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) { int pos, i; __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries; if (unlikely(!code_line)) { return; } if (unlikely(!entries)) { entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry)); if (likely(entries)) { __pyx_code_cache.entries = entries; __pyx_code_cache.max_count = 64; __pyx_code_cache.count = 1; entries[0].code_line = code_line; entries[0].code_object = code_object; Py_INCREF(code_object); } return; } pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) { PyCodeObject* tmp = entries[pos].code_object; entries[pos].code_object = code_object; Py_DECREF(tmp); return; } if (__pyx_code_cache.count == __pyx_code_cache.max_count) { int new_max = __pyx_code_cache.max_count + 64; entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc( __pyx_code_cache.entries, (size_t)new_max*sizeof(__Pyx_CodeObjectCacheEntry)); if (unlikely(!entries)) { return; } __pyx_code_cache.entries = entries; __pyx_code_cache.max_count = new_max; } for (i=__pyx_code_cache.count; i>pos; i--) { entries[i] = entries[i-1]; } entries[pos].code_line = code_line; entries[pos].code_object = code_object; __pyx_code_cache.count++; Py_INCREF(code_object); } /* AddTraceback */ #include "compile.h" #include "frameobject.h" #include "traceback.h" static PyCodeObject* __Pyx_CreateCodeObjectForTraceback( const char *funcname, int c_line, int py_line, const char *filename) { PyCodeObject *py_code = 0; PyObject *py_srcfile = 0; PyObject *py_funcname = 0; #if PY_MAJOR_VERSION < 3 py_srcfile = PyString_FromString(filename); #else py_srcfile = PyUnicode_FromString(filename); #endif if (!py_srcfile) goto bad; if (c_line) { #if PY_MAJOR_VERSION < 3 py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); #else py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); #endif } else { #if PY_MAJOR_VERSION < 3 py_funcname = PyString_FromString(funcname); #else py_funcname = PyUnicode_FromString(funcname); #endif } if (!py_funcname) goto bad; py_code = __Pyx_PyCode_New( 0, 0, 0, 0, 0, __pyx_empty_bytes, /*PyObject *code,*/ __pyx_empty_tuple, /*PyObject *consts,*/ __pyx_empty_tuple, /*PyObject *names,*/ __pyx_empty_tuple, /*PyObject *varnames,*/ __pyx_empty_tuple, /*PyObject *freevars,*/ __pyx_empty_tuple, /*PyObject *cellvars,*/ py_srcfile, /*PyObject *filename,*/ py_funcname, /*PyObject *name,*/ py_line, __pyx_empty_bytes /*PyObject *lnotab*/ ); Py_DECREF(py_srcfile); Py_DECREF(py_funcname); return py_code; bad: Py_XDECREF(py_srcfile); Py_XDECREF(py_funcname); return NULL; } static void __Pyx_AddTraceback(const char *funcname, int c_line, int py_line, const char *filename) { PyCodeObject *py_code = 0; PyFrameObject *py_frame = 0; py_code = __pyx_find_code_object(c_line ? c_line : py_line); if (!py_code) { py_code = __Pyx_CreateCodeObjectForTraceback( funcname, c_line, py_line, filename); if (!py_code) goto bad; __pyx_insert_code_object(c_line ? c_line : py_line, py_code); } py_frame = PyFrame_New( PyThreadState_GET(), /*PyThreadState *tstate,*/ py_code, /*PyCodeObject *code,*/ __pyx_d, /*PyObject *globals,*/ 0 /*PyObject *locals*/ ); if (!py_frame) goto bad; __Pyx_PyFrame_SetLineNumber(py_frame, py_line); PyTraceBack_Here(py_frame); bad: Py_XDECREF(py_code); Py_XDECREF(py_frame); } /* CIntToPy */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_unsigned_int(unsigned int value) { const unsigned int neg_one = (unsigned int) -1, const_zero = (unsigned int) 0; const int is_unsigned = neg_one > const_zero; if (is_unsigned) { if (sizeof(unsigned int) < sizeof(long)) { return PyInt_FromLong((long) value); } else if (sizeof(unsigned int) <= sizeof(unsigned long)) { return PyLong_FromUnsignedLong((unsigned long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(unsigned int) <= sizeof(unsigned PY_LONG_LONG)) { return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); #endif } } else { if (sizeof(unsigned int) <= sizeof(long)) { return PyInt_FromLong((long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(unsigned int) <= sizeof(PY_LONG_LONG)) { return PyLong_FromLongLong((PY_LONG_LONG) value); #endif } } { int one = 1; int little = (int)*(unsigned char *)&one; unsigned char *bytes = (unsigned char *)&value; return _PyLong_FromByteArray(bytes, sizeof(unsigned int), little, !is_unsigned); } } /* CIntFromPyVerify */ #define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\ __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0) #define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\ __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1) #define __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, exc)\ {\ func_type value = func_value;\ if (sizeof(target_type) < sizeof(func_type)) {\ if (unlikely(value != (func_type) (target_type) value)) {\ func_type zero = 0;\ if (exc && unlikely(value == (func_type)-1 && PyErr_Occurred()))\ return (target_type) -1;\ if (is_unsigned && unlikely(value < zero))\ goto raise_neg_overflow;\ else\ goto raise_overflow;\ }\ }\ return (target_type) value;\ } /* CIntToPy */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) { const int neg_one = (int) -1, const_zero = (int) 0; const int is_unsigned = neg_one > const_zero; if (is_unsigned) { if (sizeof(int) < sizeof(long)) { return PyInt_FromLong((long) value); } else if (sizeof(int) <= sizeof(unsigned long)) { return PyLong_FromUnsignedLong((unsigned long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) { return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); #endif } } else { if (sizeof(int) <= sizeof(long)) { return PyInt_FromLong((long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) { return PyLong_FromLongLong((PY_LONG_LONG) value); #endif } } { int one = 1; int little = (int)*(unsigned char *)&one; unsigned char *bytes = (unsigned char *)&value; return _PyLong_FromByteArray(bytes, sizeof(int), little, !is_unsigned); } } /* CIntFromPy */ static CYTHON_INLINE unsigned int __Pyx_PyInt_As_unsigned_int(PyObject *x) { const unsigned int neg_one = (unsigned int) -1, const_zero = (unsigned int) 0; const int is_unsigned = neg_one > const_zero; #if PY_MAJOR_VERSION < 3 if (likely(PyInt_Check(x))) { if (sizeof(unsigned int) < sizeof(long)) { __PYX_VERIFY_RETURN_INT(unsigned int, long, PyInt_AS_LONG(x)) } else { long val = PyInt_AS_LONG(x); if (is_unsigned && unlikely(val < 0)) { goto raise_neg_overflow; } return (unsigned int) val; } } else #endif if (likely(PyLong_Check(x))) { if (is_unsigned) { #if CYTHON_USE_PYLONG_INTERNALS const digit* digits = ((PyLongObject*)x)->ob_digit; switch (Py_SIZE(x)) { case 0: return (unsigned int) 0; case 1: __PYX_VERIFY_RETURN_INT(unsigned int, digit, digits[0]) case 2: if (8 * sizeof(unsigned int) > 1 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(unsigned int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(unsigned int) >= 2 * PyLong_SHIFT) { return (unsigned int) (((((unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0])); } } break; case 3: if (8 * sizeof(unsigned int) > 2 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(unsigned int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(unsigned int) >= 3 * PyLong_SHIFT) { return (unsigned int) (((((((unsigned int)digits[2]) << PyLong_SHIFT) | (unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0])); } } break; case 4: if (8 * sizeof(unsigned int) > 3 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(unsigned int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(unsigned int) >= 4 * PyLong_SHIFT) { return (unsigned int) (((((((((unsigned int)digits[3]) << PyLong_SHIFT) | (unsigned int)digits[2]) << PyLong_SHIFT) | (unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0])); } } break; } #endif #if CYTHON_COMPILING_IN_CPYTHON if (unlikely(Py_SIZE(x) < 0)) { goto raise_neg_overflow; } #else { int result = PyObject_RichCompareBool(x, Py_False, Py_LT); if (unlikely(result < 0)) return (unsigned int) -1; if (unlikely(result == 1)) goto raise_neg_overflow; } #endif if (sizeof(unsigned int) <= sizeof(unsigned long)) { __PYX_VERIFY_RETURN_INT_EXC(unsigned int, unsigned long, PyLong_AsUnsignedLong(x)) #ifdef HAVE_LONG_LONG } else if (sizeof(unsigned int) <= sizeof(unsigned PY_LONG_LONG)) { __PYX_VERIFY_RETURN_INT_EXC(unsigned int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) #endif } } else { #if CYTHON_USE_PYLONG_INTERNALS const digit* digits = ((PyLongObject*)x)->ob_digit; switch (Py_SIZE(x)) { case 0: return (unsigned int) 0; case -1: __PYX_VERIFY_RETURN_INT(unsigned int, sdigit, (sdigit) (-(sdigit)digits[0])) case 1: __PYX_VERIFY_RETURN_INT(unsigned int, digit, +digits[0]) case -2: if (8 * sizeof(unsigned int) - 1 > 1 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(unsigned int, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(unsigned int) - 1 > 2 * PyLong_SHIFT) { return (unsigned int) (((unsigned int)-1)*(((((unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0]))); } } break; case 2: if (8 * sizeof(unsigned int) > 1 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(unsigned int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(unsigned int) - 1 > 2 * PyLong_SHIFT) { return (unsigned int) ((((((unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0]))); } } break; case -3: if (8 * sizeof(unsigned int) - 1 > 2 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(unsigned int, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(unsigned int) - 1 > 3 * PyLong_SHIFT) { return (unsigned int) (((unsigned int)-1)*(((((((unsigned int)digits[2]) << PyLong_SHIFT) | (unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0]))); } } break; case 3: if (8 * sizeof(unsigned int) > 2 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(unsigned int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(unsigned int) - 1 > 3 * PyLong_SHIFT) { return (unsigned int) ((((((((unsigned int)digits[2]) << PyLong_SHIFT) | (unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0]))); } } break; case -4: if (8 * sizeof(unsigned int) - 1 > 3 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(unsigned int, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(unsigned int) - 1 > 4 * PyLong_SHIFT) { return (unsigned int) (((unsigned int)-1)*(((((((((unsigned int)digits[3]) << PyLong_SHIFT) | (unsigned int)digits[2]) << PyLong_SHIFT) | (unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0]))); } } break; case 4: if (8 * sizeof(unsigned int) > 3 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(unsigned int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(unsigned int) - 1 > 4 * PyLong_SHIFT) { return (unsigned int) ((((((((((unsigned int)digits[3]) << PyLong_SHIFT) | (unsigned int)digits[2]) << PyLong_SHIFT) | (unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0]))); } } break; } #endif if (sizeof(unsigned int) <= sizeof(long)) { __PYX_VERIFY_RETURN_INT_EXC(unsigned int, long, PyLong_AsLong(x)) #ifdef HAVE_LONG_LONG } else if (sizeof(unsigned int) <= sizeof(PY_LONG_LONG)) { __PYX_VERIFY_RETURN_INT_EXC(unsigned int, PY_LONG_LONG, PyLong_AsLongLong(x)) #endif } } { #if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray) PyErr_SetString(PyExc_RuntimeError, "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"); #else unsigned int val; PyObject *v = __Pyx_PyNumber_IntOrLong(x); #if PY_MAJOR_VERSION < 3 if (likely(v) && !PyLong_Check(v)) { PyObject *tmp = v; v = PyNumber_Long(tmp); Py_DECREF(tmp); } #endif if (likely(v)) { int one = 1; int is_little = (int)*(unsigned char *)&one; unsigned char *bytes = (unsigned char *)&val; int ret = _PyLong_AsByteArray((PyLongObject *)v, bytes, sizeof(val), is_little, !is_unsigned); Py_DECREF(v); if (likely(!ret)) return val; } #endif return (unsigned int) -1; } } else { unsigned int val; PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); if (!tmp) return (unsigned int) -1; val = __Pyx_PyInt_As_unsigned_int(tmp); Py_DECREF(tmp); return val; } raise_overflow: PyErr_SetString(PyExc_OverflowError, "value too large to convert to unsigned int"); return (unsigned int) -1; raise_neg_overflow: PyErr_SetString(PyExc_OverflowError, "can't convert negative value to unsigned int"); return (unsigned int) -1; } /* CIntFromPy */ static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) { const int neg_one = (int) -1, const_zero = (int) 0; const int is_unsigned = neg_one > const_zero; #if PY_MAJOR_VERSION < 3 if (likely(PyInt_Check(x))) { if (sizeof(int) < sizeof(long)) { __PYX_VERIFY_RETURN_INT(int, long, PyInt_AS_LONG(x)) } else { long val = PyInt_AS_LONG(x); if (is_unsigned && unlikely(val < 0)) { goto raise_neg_overflow; } return (int) val; } } else #endif if (likely(PyLong_Check(x))) { if (is_unsigned) { #if CYTHON_USE_PYLONG_INTERNALS const digit* digits = ((PyLongObject*)x)->ob_digit; switch (Py_SIZE(x)) { case 0: return (int) 0; case 1: __PYX_VERIFY_RETURN_INT(int, digit, digits[0]) case 2: if (8 * sizeof(int) > 1 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(int) >= 2 * PyLong_SHIFT) { return (int) (((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); } } break; case 3: if (8 * sizeof(int) > 2 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(int) >= 3 * PyLong_SHIFT) { return (int) (((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); } } break; case 4: if (8 * sizeof(int) > 3 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(int) >= 4 * PyLong_SHIFT) { return (int) (((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); } } break; } #endif #if CYTHON_COMPILING_IN_CPYTHON if (unlikely(Py_SIZE(x) < 0)) { goto raise_neg_overflow; } #else { int result = PyObject_RichCompareBool(x, Py_False, Py_LT); if (unlikely(result < 0)) return (int) -1; if (unlikely(result == 1)) goto raise_neg_overflow; } #endif if (sizeof(int) <= sizeof(unsigned long)) { __PYX_VERIFY_RETURN_INT_EXC(int, unsigned long, PyLong_AsUnsignedLong(x)) #ifdef HAVE_LONG_LONG } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) { __PYX_VERIFY_RETURN_INT_EXC(int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) #endif } } else { #if CYTHON_USE_PYLONG_INTERNALS const digit* digits = ((PyLongObject*)x)->ob_digit; switch (Py_SIZE(x)) { case 0: return (int) 0; case -1: __PYX_VERIFY_RETURN_INT(int, sdigit, (sdigit) (-(sdigit)digits[0])) case 1: __PYX_VERIFY_RETURN_INT(int, digit, +digits[0]) case -2: if (8 * sizeof(int) - 1 > 1 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { return (int) (((int)-1)*(((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); } } break; case 2: if (8 * sizeof(int) > 1 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { return (int) ((((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); } } break; case -3: if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { return (int) (((int)-1)*(((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); } } break; case 3: if (8 * sizeof(int) > 2 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { return (int) ((((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); } } break; case -4: if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) { return (int) (((int)-1)*(((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); } } break; case 4: if (8 * sizeof(int) > 3 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) { return (int) ((((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); } } break; } #endif if (sizeof(int) <= sizeof(long)) { __PYX_VERIFY_RETURN_INT_EXC(int, long, PyLong_AsLong(x)) #ifdef HAVE_LONG_LONG } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) { __PYX_VERIFY_RETURN_INT_EXC(int, PY_LONG_LONG, PyLong_AsLongLong(x)) #endif } } { #if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray) PyErr_SetString(PyExc_RuntimeError, "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"); #else int val; PyObject *v = __Pyx_PyNumber_IntOrLong(x); #if PY_MAJOR_VERSION < 3 if (likely(v) && !PyLong_Check(v)) { PyObject *tmp = v; v = PyNumber_Long(tmp); Py_DECREF(tmp); } #endif if (likely(v)) { int one = 1; int is_little = (int)*(unsigned char *)&one; unsigned char *bytes = (unsigned char *)&val; int ret = _PyLong_AsByteArray((PyLongObject *)v, bytes, sizeof(val), is_little, !is_unsigned); Py_DECREF(v); if (likely(!ret)) return val; } #endif return (int) -1; } } else { int val; PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); if (!tmp) return (int) -1; val = __Pyx_PyInt_As_int(tmp); Py_DECREF(tmp); return val; } raise_overflow: PyErr_SetString(PyExc_OverflowError, "value too large to convert to int"); return (int) -1; raise_neg_overflow: PyErr_SetString(PyExc_OverflowError, "can't convert negative value to int"); return (int) -1; } /* CIntToPy */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) { const long neg_one = (long) -1, const_zero = (long) 0; const int is_unsigned = neg_one > const_zero; if (is_unsigned) { if (sizeof(long) < sizeof(long)) { return PyInt_FromLong((long) value); } else if (sizeof(long) <= sizeof(unsigned long)) { return PyLong_FromUnsignedLong((unsigned long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); #endif } } else { if (sizeof(long) <= sizeof(long)) { return PyInt_FromLong((long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { return PyLong_FromLongLong((PY_LONG_LONG) value); #endif } } { int one = 1; int little = (int)*(unsigned char *)&one; unsigned char *bytes = (unsigned char *)&value; return _PyLong_FromByteArray(bytes, sizeof(long), little, !is_unsigned); } } /* CIntFromPy */ static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) { const long neg_one = (long) -1, const_zero = (long) 0; const int is_unsigned = neg_one > const_zero; #if PY_MAJOR_VERSION < 3 if (likely(PyInt_Check(x))) { if (sizeof(long) < sizeof(long)) { __PYX_VERIFY_RETURN_INT(long, long, PyInt_AS_LONG(x)) } else { long val = PyInt_AS_LONG(x); if (is_unsigned && unlikely(val < 0)) { goto raise_neg_overflow; } return (long) val; } } else #endif if (likely(PyLong_Check(x))) { if (is_unsigned) { #if CYTHON_USE_PYLONG_INTERNALS const digit* digits = ((PyLongObject*)x)->ob_digit; switch (Py_SIZE(x)) { case 0: return (long) 0; case 1: __PYX_VERIFY_RETURN_INT(long, digit, digits[0]) case 2: if (8 * sizeof(long) > 1 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(long) >= 2 * PyLong_SHIFT) { return (long) (((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); } } break; case 3: if (8 * sizeof(long) > 2 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(long) >= 3 * PyLong_SHIFT) { return (long) (((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); } } break; case 4: if (8 * sizeof(long) > 3 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(long) >= 4 * PyLong_SHIFT) { return (long) (((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); } } break; } #endif #if CYTHON_COMPILING_IN_CPYTHON if (unlikely(Py_SIZE(x) < 0)) { goto raise_neg_overflow; } #else { int result = PyObject_RichCompareBool(x, Py_False, Py_LT); if (unlikely(result < 0)) return (long) -1; if (unlikely(result == 1)) goto raise_neg_overflow; } #endif if (sizeof(long) <= sizeof(unsigned long)) { __PYX_VERIFY_RETURN_INT_EXC(long, unsigned long, PyLong_AsUnsignedLong(x)) #ifdef HAVE_LONG_LONG } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { __PYX_VERIFY_RETURN_INT_EXC(long, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) #endif } } else { #if CYTHON_USE_PYLONG_INTERNALS const digit* digits = ((PyLongObject*)x)->ob_digit; switch (Py_SIZE(x)) { case 0: return (long) 0; case -1: __PYX_VERIFY_RETURN_INT(long, sdigit, (sdigit) (-(sdigit)digits[0])) case 1: __PYX_VERIFY_RETURN_INT(long, digit, +digits[0]) case -2: if (8 * sizeof(long) - 1 > 1 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { return (long) (((long)-1)*(((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); } } break; case 2: if (8 * sizeof(long) > 1 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { return (long) ((((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); } } break; case -3: if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { return (long) (((long)-1)*(((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); } } break; case 3: if (8 * sizeof(long) > 2 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { return (long) ((((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); } } break; case -4: if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { return (long) (((long)-1)*(((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); } } break; case 4: if (8 * sizeof(long) > 3 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { return (long) ((((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); } } break; } #endif if (sizeof(long) <= sizeof(long)) { __PYX_VERIFY_RETURN_INT_EXC(long, long, PyLong_AsLong(x)) #ifdef HAVE_LONG_LONG } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { __PYX_VERIFY_RETURN_INT_EXC(long, PY_LONG_LONG, PyLong_AsLongLong(x)) #endif } } { #if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray) PyErr_SetString(PyExc_RuntimeError, "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"); #else long val; PyObject *v = __Pyx_PyNumber_IntOrLong(x); #if PY_MAJOR_VERSION < 3 if (likely(v) && !PyLong_Check(v)) { PyObject *tmp = v; v = PyNumber_Long(tmp); Py_DECREF(tmp); } #endif if (likely(v)) { int one = 1; int is_little = (int)*(unsigned char *)&one; unsigned char *bytes = (unsigned char *)&val; int ret = _PyLong_AsByteArray((PyLongObject *)v, bytes, sizeof(val), is_little, !is_unsigned); Py_DECREF(v); if (likely(!ret)) return val; } #endif return (long) -1; } } else { long val; PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); if (!tmp) return (long) -1; val = __Pyx_PyInt_As_long(tmp); Py_DECREF(tmp); return val; } raise_overflow: PyErr_SetString(PyExc_OverflowError, "value too large to convert to long"); return (long) -1; raise_neg_overflow: PyErr_SetString(PyExc_OverflowError, "can't convert negative value to long"); return (long) -1; } /* CheckBinaryVersion */ static int __Pyx_check_binary_version(void) { char ctversion[4], rtversion[4]; PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION); PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion()); if (ctversion[0] != rtversion[0] || ctversion[2] != rtversion[2]) { char message[200]; PyOS_snprintf(message, sizeof(message), "compiletime version %s of module '%.100s' " "does not match runtime version %s", ctversion, __Pyx_MODULE_NAME, rtversion); return PyErr_WarnEx(NULL, message, 1); } return 0; } /* FunctionExport */ static int __Pyx_ExportFunction(const char *name, void (*f)(void), const char *sig) { PyObject *d = 0; PyObject *cobj = 0; union { void (*fp)(void); void *p; } tmp; d = PyObject_GetAttrString(__pyx_m, (char *)"__pyx_capi__"); if (!d) { PyErr_Clear(); d = PyDict_New(); if (!d) goto bad; Py_INCREF(d); if (PyModule_AddObject(__pyx_m, (char *)"__pyx_capi__", d) < 0) goto bad; } tmp.fp = f; #if PY_VERSION_HEX >= 0x02070000 cobj = PyCapsule_New(tmp.p, sig, 0); #else cobj = PyCObject_FromVoidPtrAndDesc(tmp.p, (void *)sig, 0); #endif if (!cobj) goto bad; if (PyDict_SetItemString(d, name, cobj) < 0) goto bad; Py_DECREF(cobj); Py_DECREF(d); return 0; bad: Py_XDECREF(cobj); Py_XDECREF(d); return -1; } /* InitStrings */ static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) { while (t->p) { #if PY_MAJOR_VERSION < 3 if (t->is_unicode) { *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL); } else if (t->intern) { *t->p = PyString_InternFromString(t->s); } else { *t->p = PyString_FromStringAndSize(t->s, t->n - 1); } #else if (t->is_unicode | t->is_str) { if (t->intern) { *t->p = PyUnicode_InternFromString(t->s); } else if (t->encoding) { *t->p = PyUnicode_Decode(t->s, t->n - 1, t->encoding, NULL); } else { *t->p = PyUnicode_FromStringAndSize(t->s, t->n - 1); } } else { *t->p = PyBytes_FromStringAndSize(t->s, t->n - 1); } #endif if (!*t->p) return -1; ++t; } return 0; } static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char* c_str) { return __Pyx_PyUnicode_FromStringAndSize(c_str, (Py_ssize_t)strlen(c_str)); } static CYTHON_INLINE char* __Pyx_PyObject_AsString(PyObject* o) { Py_ssize_t ignore; return __Pyx_PyObject_AsStringAndSize(o, &ignore); } static CYTHON_INLINE char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_t *length) { #if CYTHON_COMPILING_IN_CPYTHON && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT) if ( #if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII __Pyx_sys_getdefaultencoding_not_ascii && #endif PyUnicode_Check(o)) { #if PY_VERSION_HEX < 0x03030000 char* defenc_c; PyObject* defenc = _PyUnicode_AsDefaultEncodedString(o, NULL); if (!defenc) return NULL; defenc_c = PyBytes_AS_STRING(defenc); #if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII { char* end = defenc_c + PyBytes_GET_SIZE(defenc); char* c; for (c = defenc_c; c < end; c++) { if ((unsigned char) (*c) >= 128) { PyUnicode_AsASCIIString(o); return NULL; } } } #endif *length = PyBytes_GET_SIZE(defenc); return defenc_c; #else if (__Pyx_PyUnicode_READY(o) == -1) return NULL; #if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII if (PyUnicode_IS_ASCII(o)) { *length = PyUnicode_GET_LENGTH(o); return PyUnicode_AsUTF8(o); } else { PyUnicode_AsASCIIString(o); return NULL; } #else return PyUnicode_AsUTF8AndSize(o, length); #endif #endif } else #endif #if (!CYTHON_COMPILING_IN_PYPY) || (defined(PyByteArray_AS_STRING) && defined(PyByteArray_GET_SIZE)) if (PyByteArray_Check(o)) { *length = PyByteArray_GET_SIZE(o); return PyByteArray_AS_STRING(o); } else #endif { char* result; int r = PyBytes_AsStringAndSize(o, &result, length); if (unlikely(r < 0)) { return NULL; } else { return result; } } } static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) { int is_true = x == Py_True; if (is_true | (x == Py_False) | (x == Py_None)) return is_true; else return PyObject_IsTrue(x); } static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x) { #if CYTHON_USE_TYPE_SLOTS PyNumberMethods *m; #endif const char *name = NULL; PyObject *res = NULL; #if PY_MAJOR_VERSION < 3 if (PyInt_Check(x) || PyLong_Check(x)) #else if (PyLong_Check(x)) #endif return __Pyx_NewRef(x); #if CYTHON_USE_TYPE_SLOTS m = Py_TYPE(x)->tp_as_number; #if PY_MAJOR_VERSION < 3 if (m && m->nb_int) { name = "int"; res = PyNumber_Int(x); } else if (m && m->nb_long) { name = "long"; res = PyNumber_Long(x); } #else if (m && m->nb_int) { name = "int"; res = PyNumber_Long(x); } #endif #else res = PyNumber_Int(x); #endif if (res) { #if PY_MAJOR_VERSION < 3 if (!PyInt_Check(res) && !PyLong_Check(res)) { #else if (!PyLong_Check(res)) { #endif PyErr_Format(PyExc_TypeError, "__%.4s__ returned non-%.4s (type %.200s)", name, name, Py_TYPE(res)->tp_name); Py_DECREF(res); return NULL; } } else if (!PyErr_Occurred()) { PyErr_SetString(PyExc_TypeError, "an integer is required"); } return res; } static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) { Py_ssize_t ival; PyObject *x; #if PY_MAJOR_VERSION < 3 if (likely(PyInt_CheckExact(b))) { if (sizeof(Py_ssize_t) >= sizeof(long)) return PyInt_AS_LONG(b); else return PyInt_AsSsize_t(x); } #endif if (likely(PyLong_CheckExact(b))) { #if CYTHON_USE_PYLONG_INTERNALS const digit* digits = ((PyLongObject*)b)->ob_digit; const Py_ssize_t size = Py_SIZE(b); if (likely(__Pyx_sst_abs(size) <= 1)) { ival = likely(size) ? digits[0] : 0; if (size == -1) ival = -ival; return ival; } else { switch (size) { case 2: if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { return (Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); } break; case -2: if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { return -(Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); } break; case 3: if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { return (Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); } break; case -3: if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { return -(Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); } break; case 4: if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { return (Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); } break; case -4: if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { return -(Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); } break; } } #endif return PyLong_AsSsize_t(b); } x = PyNumber_Index(b); if (!x) return -1; ival = PyInt_AsSsize_t(x); Py_DECREF(x); return ival; } static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) { return PyInt_FromSize_t(ival); } #endif /* Py_PYTHON_H */ pybik-3.0/csrc/_gldraw_es2.c0000644000175000017500000047240613173167576016163 0ustar barccbarcc00000000000000/* Generated by Cython 0.25.2 */ #define PY_SSIZE_T_CLEAN #include "Python.h" #ifndef Py_PYTHON_H #error Python headers needed to compile C extensions, please install development version of Python. #elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03020000) #error Cython requires Python 2.6+ or Python 3.2+. #else #define CYTHON_ABI "0_25_2" #include #ifndef offsetof #define offsetof(type, member) ( (size_t) & ((type*)0) -> member ) #endif #if !defined(WIN32) && !defined(MS_WINDOWS) #ifndef __stdcall #define __stdcall #endif #ifndef __cdecl #define __cdecl #endif #ifndef __fastcall #define __fastcall #endif #endif #ifndef DL_IMPORT #define DL_IMPORT(t) t #endif #ifndef DL_EXPORT #define DL_EXPORT(t) t #endif #ifndef HAVE_LONG_LONG #if PY_VERSION_HEX >= 0x03030000 || (PY_MAJOR_VERSION == 2 && PY_VERSION_HEX >= 0x02070000) #define HAVE_LONG_LONG #endif #endif #ifndef PY_LONG_LONG #define PY_LONG_LONG LONG_LONG #endif #ifndef Py_HUGE_VAL #define Py_HUGE_VAL HUGE_VAL #endif #ifdef PYPY_VERSION #define CYTHON_COMPILING_IN_PYPY 1 #define CYTHON_COMPILING_IN_PYSTON 0 #define CYTHON_COMPILING_IN_CPYTHON 0 #undef CYTHON_USE_TYPE_SLOTS #define CYTHON_USE_TYPE_SLOTS 0 #undef CYTHON_USE_ASYNC_SLOTS #define CYTHON_USE_ASYNC_SLOTS 0 #undef CYTHON_USE_PYLIST_INTERNALS #define CYTHON_USE_PYLIST_INTERNALS 0 #undef CYTHON_USE_UNICODE_INTERNALS #define CYTHON_USE_UNICODE_INTERNALS 0 #undef CYTHON_USE_UNICODE_WRITER #define CYTHON_USE_UNICODE_WRITER 0 #undef CYTHON_USE_PYLONG_INTERNALS #define CYTHON_USE_PYLONG_INTERNALS 0 #undef CYTHON_AVOID_BORROWED_REFS #define CYTHON_AVOID_BORROWED_REFS 1 #undef CYTHON_ASSUME_SAFE_MACROS #define CYTHON_ASSUME_SAFE_MACROS 0 #undef CYTHON_UNPACK_METHODS #define CYTHON_UNPACK_METHODS 0 #undef CYTHON_FAST_THREAD_STATE #define CYTHON_FAST_THREAD_STATE 0 #undef CYTHON_FAST_PYCALL #define CYTHON_FAST_PYCALL 0 #elif defined(PYSTON_VERSION) #define CYTHON_COMPILING_IN_PYPY 0 #define CYTHON_COMPILING_IN_PYSTON 1 #define CYTHON_COMPILING_IN_CPYTHON 0 #ifndef CYTHON_USE_TYPE_SLOTS #define CYTHON_USE_TYPE_SLOTS 1 #endif #undef CYTHON_USE_ASYNC_SLOTS #define CYTHON_USE_ASYNC_SLOTS 0 #undef CYTHON_USE_PYLIST_INTERNALS #define CYTHON_USE_PYLIST_INTERNALS 0 #ifndef CYTHON_USE_UNICODE_INTERNALS #define CYTHON_USE_UNICODE_INTERNALS 1 #endif #undef CYTHON_USE_UNICODE_WRITER #define CYTHON_USE_UNICODE_WRITER 0 #undef CYTHON_USE_PYLONG_INTERNALS #define CYTHON_USE_PYLONG_INTERNALS 0 #ifndef CYTHON_AVOID_BORROWED_REFS #define CYTHON_AVOID_BORROWED_REFS 0 #endif #ifndef CYTHON_ASSUME_SAFE_MACROS #define CYTHON_ASSUME_SAFE_MACROS 1 #endif #ifndef CYTHON_UNPACK_METHODS #define CYTHON_UNPACK_METHODS 1 #endif #undef CYTHON_FAST_THREAD_STATE #define CYTHON_FAST_THREAD_STATE 0 #undef CYTHON_FAST_PYCALL #define CYTHON_FAST_PYCALL 0 #else #define CYTHON_COMPILING_IN_PYPY 0 #define CYTHON_COMPILING_IN_PYSTON 0 #define CYTHON_COMPILING_IN_CPYTHON 1 #ifndef CYTHON_USE_TYPE_SLOTS #define CYTHON_USE_TYPE_SLOTS 1 #endif #if PY_MAJOR_VERSION < 3 #undef CYTHON_USE_ASYNC_SLOTS #define CYTHON_USE_ASYNC_SLOTS 0 #elif !defined(CYTHON_USE_ASYNC_SLOTS) #define CYTHON_USE_ASYNC_SLOTS 1 #endif #if PY_VERSION_HEX < 0x02070000 #undef CYTHON_USE_PYLONG_INTERNALS #define CYTHON_USE_PYLONG_INTERNALS 0 #elif !defined(CYTHON_USE_PYLONG_INTERNALS) #define CYTHON_USE_PYLONG_INTERNALS 1 #endif #ifndef CYTHON_USE_PYLIST_INTERNALS #define CYTHON_USE_PYLIST_INTERNALS 1 #endif #ifndef CYTHON_USE_UNICODE_INTERNALS #define CYTHON_USE_UNICODE_INTERNALS 1 #endif #if PY_VERSION_HEX < 0x030300F0 #undef CYTHON_USE_UNICODE_WRITER #define CYTHON_USE_UNICODE_WRITER 0 #elif !defined(CYTHON_USE_UNICODE_WRITER) #define CYTHON_USE_UNICODE_WRITER 1 #endif #ifndef CYTHON_AVOID_BORROWED_REFS #define CYTHON_AVOID_BORROWED_REFS 0 #endif #ifndef CYTHON_ASSUME_SAFE_MACROS #define CYTHON_ASSUME_SAFE_MACROS 1 #endif #ifndef CYTHON_UNPACK_METHODS #define CYTHON_UNPACK_METHODS 1 #endif #ifndef CYTHON_FAST_THREAD_STATE #define CYTHON_FAST_THREAD_STATE 1 #endif #ifndef CYTHON_FAST_PYCALL #define CYTHON_FAST_PYCALL 1 #endif #endif #if !defined(CYTHON_FAST_PYCCALL) #define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1) #endif #if CYTHON_USE_PYLONG_INTERNALS #include "longintrepr.h" #undef SHIFT #undef BASE #undef MASK #endif #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x02070600 && !defined(Py_OptimizeFlag) #define Py_OptimizeFlag 0 #endif #define __PYX_BUILD_PY_SSIZE_T "n" #define CYTHON_FORMAT_SSIZE_T "z" #if PY_MAJOR_VERSION < 3 #define __Pyx_BUILTIN_MODULE_NAME "__builtin__" #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ PyCode_New(a+k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) #define __Pyx_DefaultClassType PyClass_Type #else #define __Pyx_BUILTIN_MODULE_NAME "builtins" #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) #define __Pyx_DefaultClassType PyType_Type #endif #ifndef Py_TPFLAGS_CHECKTYPES #define Py_TPFLAGS_CHECKTYPES 0 #endif #ifndef Py_TPFLAGS_HAVE_INDEX #define Py_TPFLAGS_HAVE_INDEX 0 #endif #ifndef Py_TPFLAGS_HAVE_NEWBUFFER #define Py_TPFLAGS_HAVE_NEWBUFFER 0 #endif #ifndef Py_TPFLAGS_HAVE_FINALIZE #define Py_TPFLAGS_HAVE_FINALIZE 0 #endif #ifndef METH_FASTCALL #define METH_FASTCALL 0x80 typedef PyObject *(*__Pyx_PyCFunctionFast) (PyObject *self, PyObject **args, Py_ssize_t nargs, PyObject *kwnames); #else #define __Pyx_PyCFunctionFast _PyCFunctionFast #endif #if CYTHON_FAST_PYCCALL #define __Pyx_PyFastCFunction_Check(func)\ ((PyCFunction_Check(func) && (METH_FASTCALL == (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST))))) #else #define __Pyx_PyFastCFunction_Check(func) 0 #endif #if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND) #define CYTHON_PEP393_ENABLED 1 #define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ?\ 0 : _PyUnicode_Ready((PyObject *)(op))) #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_LENGTH(u) #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i) #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) PyUnicode_MAX_CHAR_VALUE(u) #define __Pyx_PyUnicode_KIND(u) PyUnicode_KIND(u) #define __Pyx_PyUnicode_DATA(u) PyUnicode_DATA(u) #define __Pyx_PyUnicode_READ(k, d, i) PyUnicode_READ(k, d, i) #define __Pyx_PyUnicode_WRITE(k, d, i, ch) PyUnicode_WRITE(k, d, i, ch) #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u))) #else #define CYTHON_PEP393_ENABLED 0 #define PyUnicode_1BYTE_KIND 1 #define PyUnicode_2BYTE_KIND 2 #define PyUnicode_4BYTE_KIND 4 #define __Pyx_PyUnicode_READY(op) (0) #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_SIZE(u) #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i])) #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) ((sizeof(Py_UNICODE) == 2) ? 65535 : 1114111) #define __Pyx_PyUnicode_KIND(u) (sizeof(Py_UNICODE)) #define __Pyx_PyUnicode_DATA(u) ((void*)PyUnicode_AS_UNICODE(u)) #define __Pyx_PyUnicode_READ(k, d, i) ((void)(k), (Py_UCS4)(((Py_UNICODE*)d)[i])) #define __Pyx_PyUnicode_WRITE(k, d, i, ch) (((void)(k)), ((Py_UNICODE*)d)[i] = ch) #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_SIZE(u)) #endif #if CYTHON_COMPILING_IN_PYPY #define __Pyx_PyUnicode_Concat(a, b) PyNumber_Add(a, b) #define __Pyx_PyUnicode_ConcatSafe(a, b) PyNumber_Add(a, b) #else #define __Pyx_PyUnicode_Concat(a, b) PyUnicode_Concat(a, b) #define __Pyx_PyUnicode_ConcatSafe(a, b) ((unlikely((a) == Py_None) || unlikely((b) == Py_None)) ?\ PyNumber_Add(a, b) : __Pyx_PyUnicode_Concat(a, b)) #endif #if CYTHON_COMPILING_IN_PYPY && !defined(PyUnicode_Contains) #define PyUnicode_Contains(u, s) PySequence_Contains(u, s) #endif #if CYTHON_COMPILING_IN_PYPY && !defined(PyByteArray_Check) #define PyByteArray_Check(obj) PyObject_TypeCheck(obj, &PyByteArray_Type) #endif #if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Format) #define PyObject_Format(obj, fmt) PyObject_CallMethod(obj, "__format__", "O", fmt) #endif #if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc) #define PyObject_Malloc(s) PyMem_Malloc(s) #define PyObject_Free(p) PyMem_Free(p) #define PyObject_Realloc(p) PyMem_Realloc(p) #endif #if CYTHON_COMPILING_IN_PYSTON #define __Pyx_PyCode_HasFreeVars(co) PyCode_HasFreeVars(co) #define __Pyx_PyFrame_SetLineNumber(frame, lineno) PyFrame_SetLineNumber(frame, lineno) #else #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0) #define __Pyx_PyFrame_SetLineNumber(frame, lineno) (frame)->f_lineno = (lineno) #endif #define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b)) #define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b)) #if PY_MAJOR_VERSION >= 3 #define __Pyx_PyString_Format(a, b) PyUnicode_Format(a, b) #else #define __Pyx_PyString_Format(a, b) PyString_Format(a, b) #endif #if PY_MAJOR_VERSION < 3 && !defined(PyObject_ASCII) #define PyObject_ASCII(o) PyObject_Repr(o) #endif #if PY_MAJOR_VERSION >= 3 #define PyBaseString_Type PyUnicode_Type #define PyStringObject PyUnicodeObject #define PyString_Type PyUnicode_Type #define PyString_Check PyUnicode_Check #define PyString_CheckExact PyUnicode_CheckExact #endif #if PY_MAJOR_VERSION >= 3 #define __Pyx_PyBaseString_Check(obj) PyUnicode_Check(obj) #define __Pyx_PyBaseString_CheckExact(obj) PyUnicode_CheckExact(obj) #else #define __Pyx_PyBaseString_Check(obj) (PyString_Check(obj) || PyUnicode_Check(obj)) #define __Pyx_PyBaseString_CheckExact(obj) (PyString_CheckExact(obj) || PyUnicode_CheckExact(obj)) #endif #ifndef PySet_CheckExact #define PySet_CheckExact(obj) (Py_TYPE(obj) == &PySet_Type) #endif #define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type) #define __Pyx_PyException_Check(obj) __Pyx_TypeCheck(obj, PyExc_Exception) #if PY_MAJOR_VERSION >= 3 #define PyIntObject PyLongObject #define PyInt_Type PyLong_Type #define PyInt_Check(op) PyLong_Check(op) #define PyInt_CheckExact(op) PyLong_CheckExact(op) #define PyInt_FromString PyLong_FromString #define PyInt_FromUnicode PyLong_FromUnicode #define PyInt_FromLong PyLong_FromLong #define PyInt_FromSize_t PyLong_FromSize_t #define PyInt_FromSsize_t PyLong_FromSsize_t #define PyInt_AsLong PyLong_AsLong #define PyInt_AS_LONG PyLong_AS_LONG #define PyInt_AsSsize_t PyLong_AsSsize_t #define PyInt_AsUnsignedLongMask PyLong_AsUnsignedLongMask #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask #define PyNumber_Int PyNumber_Long #endif #if PY_MAJOR_VERSION >= 3 #define PyBoolObject PyLongObject #endif #if PY_MAJOR_VERSION >= 3 && CYTHON_COMPILING_IN_PYPY #ifndef PyUnicode_InternFromString #define PyUnicode_InternFromString(s) PyUnicode_FromString(s) #endif #endif #if PY_VERSION_HEX < 0x030200A4 typedef long Py_hash_t; #define __Pyx_PyInt_FromHash_t PyInt_FromLong #define __Pyx_PyInt_AsHash_t PyInt_AsLong #else #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t #define __Pyx_PyInt_AsHash_t PyInt_AsSsize_t #endif #if PY_MAJOR_VERSION >= 3 #define __Pyx_PyMethod_New(func, self, klass) ((self) ? PyMethod_New(func, self) : PyInstanceMethod_New(func)) #else #define __Pyx_PyMethod_New(func, self, klass) PyMethod_New(func, self, klass) #endif #if CYTHON_USE_ASYNC_SLOTS #if PY_VERSION_HEX >= 0x030500B1 #define __Pyx_PyAsyncMethodsStruct PyAsyncMethods #define __Pyx_PyType_AsAsync(obj) (Py_TYPE(obj)->tp_as_async) #else typedef struct { unaryfunc am_await; unaryfunc am_aiter; unaryfunc am_anext; } __Pyx_PyAsyncMethodsStruct; #define __Pyx_PyType_AsAsync(obj) ((__Pyx_PyAsyncMethodsStruct*) (Py_TYPE(obj)->tp_reserved)) #endif #else #define __Pyx_PyType_AsAsync(obj) NULL #endif #ifndef CYTHON_RESTRICT #if defined(__GNUC__) #define CYTHON_RESTRICT __restrict__ #elif defined(_MSC_VER) && _MSC_VER >= 1400 #define CYTHON_RESTRICT __restrict #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L #define CYTHON_RESTRICT restrict #else #define CYTHON_RESTRICT #endif #endif #ifndef CYTHON_UNUSED # if defined(__GNUC__) # if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) # define CYTHON_UNUSED __attribute__ ((__unused__)) # else # define CYTHON_UNUSED # endif # elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER)) # define CYTHON_UNUSED __attribute__ ((__unused__)) # else # define CYTHON_UNUSED # endif #endif #ifndef CYTHON_MAYBE_UNUSED_VAR # if defined(__cplusplus) template void CYTHON_MAYBE_UNUSED_VAR( const T& ) { } # else # define CYTHON_MAYBE_UNUSED_VAR(x) (void)(x) # endif #endif #ifndef CYTHON_NCP_UNUSED # if CYTHON_COMPILING_IN_CPYTHON # define CYTHON_NCP_UNUSED # else # define CYTHON_NCP_UNUSED CYTHON_UNUSED # endif #endif #define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None) #ifndef CYTHON_INLINE #if defined(__clang__) #define CYTHON_INLINE __inline__ __attribute__ ((__unused__)) #elif defined(__GNUC__) #define CYTHON_INLINE __inline__ #elif defined(_MSC_VER) #define CYTHON_INLINE __inline #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L #define CYTHON_INLINE inline #else #define CYTHON_INLINE #endif #endif #if defined(WIN32) || defined(MS_WINDOWS) #define _USE_MATH_DEFINES #endif #include #ifdef NAN #define __PYX_NAN() ((float) NAN) #else static CYTHON_INLINE float __PYX_NAN() { float value; memset(&value, 0xFF, sizeof(value)); return value; } #endif #if defined(__CYGWIN__) && defined(_LDBL_EQ_DBL) #define __Pyx_truncl trunc #else #define __Pyx_truncl truncl #endif #define __PYX_ERR(f_index, lineno, Ln_error) \ { \ __pyx_filename = __pyx_f[f_index]; __pyx_lineno = lineno; __pyx_clineno = __LINE__; goto Ln_error; \ } #if PY_MAJOR_VERSION >= 3 #define __Pyx_PyNumber_Divide(x,y) PyNumber_TrueDivide(x,y) #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceTrueDivide(x,y) #else #define __Pyx_PyNumber_Divide(x,y) PyNumber_TrueDivide(x,y) #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceTrueDivide(x,y) #endif #ifndef __PYX_EXTERN_C #ifdef __cplusplus #define __PYX_EXTERN_C extern "C" #else #define __PYX_EXTERN_C extern #endif #endif #define __PYX_HAVE___gldraw_es2 #define __PYX_HAVE_API___gldraw_es2 #include #include #include "GLES2/gl2.h" #include #ifdef _OPENMP #include #endif /* _OPENMP */ #ifdef PYREX_WITHOUT_ASSERTIONS #define CYTHON_WITHOUT_ASSERTIONS #endif typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* encoding; const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry; #define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0 #define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT 0 #define __PYX_DEFAULT_STRING_ENCODING "" #define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString #define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize #define __Pyx_uchar_cast(c) ((unsigned char)c) #define __Pyx_long_cast(x) ((long)x) #define __Pyx_fits_Py_ssize_t(v, type, is_signed) (\ (sizeof(type) < sizeof(Py_ssize_t)) ||\ (sizeof(type) > sizeof(Py_ssize_t) &&\ likely(v < (type)PY_SSIZE_T_MAX ||\ v == (type)PY_SSIZE_T_MAX) &&\ (!is_signed || likely(v > (type)PY_SSIZE_T_MIN ||\ v == (type)PY_SSIZE_T_MIN))) ||\ (sizeof(type) == sizeof(Py_ssize_t) &&\ (is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\ v == (type)PY_SSIZE_T_MAX))) ) #if defined (__cplusplus) && __cplusplus >= 201103L #include #define __Pyx_sst_abs(value) std::abs(value) #elif SIZEOF_INT >= SIZEOF_SIZE_T #define __Pyx_sst_abs(value) abs(value) #elif SIZEOF_LONG >= SIZEOF_SIZE_T #define __Pyx_sst_abs(value) labs(value) #elif defined (_MSC_VER) && defined (_M_X64) #define __Pyx_sst_abs(value) _abs64(value) #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L #define __Pyx_sst_abs(value) llabs(value) #elif defined (__GNUC__) #define __Pyx_sst_abs(value) __builtin_llabs(value) #else #define __Pyx_sst_abs(value) ((value<0) ? -value : value) #endif static CYTHON_INLINE char* __Pyx_PyObject_AsString(PyObject*); static CYTHON_INLINE char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length); #define __Pyx_PyByteArray_FromString(s) PyByteArray_FromStringAndSize((const char*)s, strlen((const char*)s)) #define __Pyx_PyByteArray_FromStringAndSize(s, l) PyByteArray_FromStringAndSize((const char*)s, l) #define __Pyx_PyBytes_FromString PyBytes_FromString #define __Pyx_PyBytes_FromStringAndSize PyBytes_FromStringAndSize static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char*); #if PY_MAJOR_VERSION < 3 #define __Pyx_PyStr_FromString __Pyx_PyBytes_FromString #define __Pyx_PyStr_FromStringAndSize __Pyx_PyBytes_FromStringAndSize #else #define __Pyx_PyStr_FromString __Pyx_PyUnicode_FromString #define __Pyx_PyStr_FromStringAndSize __Pyx_PyUnicode_FromStringAndSize #endif #define __Pyx_PyObject_AsSString(s) ((signed char*) __Pyx_PyObject_AsString(s)) #define __Pyx_PyObject_AsUString(s) ((unsigned char*) __Pyx_PyObject_AsString(s)) #define __Pyx_PyObject_FromCString(s) __Pyx_PyObject_FromString((const char*)s) #define __Pyx_PyBytes_FromCString(s) __Pyx_PyBytes_FromString((const char*)s) #define __Pyx_PyByteArray_FromCString(s) __Pyx_PyByteArray_FromString((const char*)s) #define __Pyx_PyStr_FromCString(s) __Pyx_PyStr_FromString((const char*)s) #define __Pyx_PyUnicode_FromCString(s) __Pyx_PyUnicode_FromString((const char*)s) #if PY_MAJOR_VERSION < 3 static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u) { const Py_UNICODE *u_end = u; while (*u_end++) ; return (size_t)(u_end - u - 1); } #else #define __Pyx_Py_UNICODE_strlen Py_UNICODE_strlen #endif #define __Pyx_PyUnicode_FromUnicode(u) PyUnicode_FromUnicode(u, __Pyx_Py_UNICODE_strlen(u)) #define __Pyx_PyUnicode_FromUnicodeAndLength PyUnicode_FromUnicode #define __Pyx_PyUnicode_AsUnicode PyUnicode_AsUnicode #define __Pyx_NewRef(obj) (Py_INCREF(obj), obj) #define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None) #define __Pyx_PyBool_FromLong(b) ((b) ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False)) static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*); static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x); static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*); static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t); #if CYTHON_ASSUME_SAFE_MACROS #define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x)) #else #define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x) #endif #define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x)) #if PY_MAJOR_VERSION >= 3 #define __Pyx_PyNumber_Int(x) (PyLong_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Long(x)) #else #define __Pyx_PyNumber_Int(x) (PyInt_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Int(x)) #endif #define __Pyx_PyNumber_Float(x) (PyFloat_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Float(x)) #if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII static int __Pyx_sys_getdefaultencoding_not_ascii; static int __Pyx_init_sys_getdefaultencoding_params(void) { PyObject* sys; PyObject* default_encoding = NULL; PyObject* ascii_chars_u = NULL; PyObject* ascii_chars_b = NULL; const char* default_encoding_c; sys = PyImport_ImportModule("sys"); if (!sys) goto bad; default_encoding = PyObject_CallMethod(sys, (char*) "getdefaultencoding", NULL); Py_DECREF(sys); if (!default_encoding) goto bad; default_encoding_c = PyBytes_AsString(default_encoding); if (!default_encoding_c) goto bad; if (strcmp(default_encoding_c, "ascii") == 0) { __Pyx_sys_getdefaultencoding_not_ascii = 0; } else { char ascii_chars[128]; int c; for (c = 0; c < 128; c++) { ascii_chars[c] = c; } __Pyx_sys_getdefaultencoding_not_ascii = 1; ascii_chars_u = PyUnicode_DecodeASCII(ascii_chars, 128, NULL); if (!ascii_chars_u) goto bad; ascii_chars_b = PyUnicode_AsEncodedString(ascii_chars_u, default_encoding_c, NULL); if (!ascii_chars_b || !PyBytes_Check(ascii_chars_b) || memcmp(ascii_chars, PyBytes_AS_STRING(ascii_chars_b), 128) != 0) { PyErr_Format( PyExc_ValueError, "This module compiled with c_string_encoding=ascii, but default encoding '%.200s' is not a superset of ascii.", default_encoding_c); goto bad; } Py_DECREF(ascii_chars_u); Py_DECREF(ascii_chars_b); } Py_DECREF(default_encoding); return 0; bad: Py_XDECREF(default_encoding); Py_XDECREF(ascii_chars_u); Py_XDECREF(ascii_chars_b); return -1; } #endif #if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT && PY_MAJOR_VERSION >= 3 #define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeUTF8(c_str, size, NULL) #else #define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_Decode(c_str, size, __PYX_DEFAULT_STRING_ENCODING, NULL) #if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT static char* __PYX_DEFAULT_STRING_ENCODING; static int __Pyx_init_sys_getdefaultencoding_params(void) { PyObject* sys; PyObject* default_encoding = NULL; char* default_encoding_c; sys = PyImport_ImportModule("sys"); if (!sys) goto bad; default_encoding = PyObject_CallMethod(sys, (char*) (const char*) "getdefaultencoding", NULL); Py_DECREF(sys); if (!default_encoding) goto bad; default_encoding_c = PyBytes_AsString(default_encoding); if (!default_encoding_c) goto bad; __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c)); if (!__PYX_DEFAULT_STRING_ENCODING) goto bad; strcpy(__PYX_DEFAULT_STRING_ENCODING, default_encoding_c); Py_DECREF(default_encoding); return 0; bad: Py_XDECREF(default_encoding); return -1; } #endif #endif /* Test for GCC > 2.95 */ #if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))) #define likely(x) __builtin_expect(!!(x), 1) #define unlikely(x) __builtin_expect(!!(x), 0) #else /* !__GNUC__ or GCC < 2.95 */ #define likely(x) (x) #define unlikely(x) (x) #endif /* __GNUC__ */ static PyObject *__pyx_m; static PyObject *__pyx_d; static PyObject *__pyx_b; static PyObject *__pyx_empty_tuple; static PyObject *__pyx_empty_bytes; static PyObject *__pyx_empty_unicode; static int __pyx_lineno; static int __pyx_clineno = 0; static const char * __pyx_cfilenm= __FILE__; static const char *__pyx_filename; static const char *__pyx_f[] = { "build/temp.linux-x86_64-3.5/pybiklib/ext/_gldraw_es2.pyx", }; /*--- Type declarations ---*/ struct __pyx_t_11_gldraw_es2_Block; struct __pyx_t_11_gldraw_es2_Cube; /* "_gldraw_es2.pxd":4 * * from gl_es2 cimport * #line 34 * cdef enum: # #line 67 # <<<<<<<<<<<<<< * MAX_TRANSFORMATIONS = 60 #line 71 * MAX_BLOCKS = 1312 #line 72 */ enum { __pyx_e_11_gldraw_es2_MAX_TRANSFORMATIONS = 60, __pyx_e_11_gldraw_es2_MAX_BLOCKS = 0x520, __pyx_e_11_gldraw_es2_MAX_FACES = 20, __pyx_e_11_gldraw_es2_ATTRIB_LOCATION = 0, __pyx_e_11_gldraw_es2_PICKATTRIB_LOCATION = 5, __pyx_e_11_gldraw_es2_ATTRIB_CNT = 7 }; /* "_gldraw_es2.pxd":11 * PICKATTRIB_LOCATION = 5 #line 75 * ATTRIB_CNT = 7 #line 76 * ctypedef float vec4[4] #line 79 # <<<<<<<<<<<<<< * ctypedef vec4 mat4[4] #line 80 * cdef void matrix_set_identity(mat4 &matrix) nogil #line 87 */ typedef float __pyx_t_11_gldraw_es2_vec4[4]; /* "_gldraw_es2.pxd":12 * ATTRIB_CNT = 7 #line 76 * ctypedef float vec4[4] #line 79 * ctypedef vec4 mat4[4] #line 80 # <<<<<<<<<<<<<< * cdef void matrix_set_identity(mat4 &matrix) nogil #line 87 * cdef void init_gldraw() #line 137 */ typedef __pyx_t_11_gldraw_es2_vec4 __pyx_t_11_gldraw_es2_mat4[4]; /* "_gldraw_es2.pyx":54 * * * cdef enum: # #px/ # <<<<<<<<<<<<<< * #if True: * DEBUG_MSGEXT = 8 */ enum { __pyx_e_11_gldraw_es2_DEBUG_MSGEXT = 8 }; /* "_gldraw_es2.pyx":93 * matrix[3][0] = 0.; matrix[3][1] = 0.; matrix[3][2] = 0.; matrix[3][3] = 1. * * cdef struct Block: #px/ # <<<<<<<<<<<<<< * #class Block: # pylint: disable=R0903 * ##px- */ struct __pyx_t_11_gldraw_es2_Block { __pyx_t_11_gldraw_es2_vec4 *transformation; int in_motion; int idx_triangles; int cnt_triangles; }; /* "_gldraw_es2.pyx":108 * #self.cnt_triangles = None * * cdef struct Cube: #px/ # <<<<<<<<<<<<<< * #class cube: # pylint: disable=W0232, R0903 * mat4 transformations[MAX_TRANSFORMATIONS] #px/ */ struct __pyx_t_11_gldraw_es2_Cube { __pyx_t_11_gldraw_es2_mat4 transformations[__pyx_e_11_gldraw_es2_MAX_TRANSFORMATIONS]; unsigned int number_blocks; struct __pyx_t_11_gldraw_es2_Block blocks[__pyx_e_11_gldraw_es2_MAX_BLOCKS]; int cnt_pick; int idx_debug; int cnt_debug; GLuint object_location; GLuint glbuffer; int vertexdatalen; char *vertexdata; long attrib_pointers[__pyx_e_11_gldraw_es2_ATTRIB_CNT]; __pyx_t_11_gldraw_es2_mat4 rotation_matrix; }; /* --- Runtime support code (head) --- */ /* Refnanny.proto */ #ifndef CYTHON_REFNANNY #define CYTHON_REFNANNY 0 #endif #if CYTHON_REFNANNY typedef struct { void (*INCREF)(void*, PyObject*, int); void (*DECREF)(void*, PyObject*, int); void (*GOTREF)(void*, PyObject*, int); void (*GIVEREF)(void*, PyObject*, int); void* (*SetupContext)(const char*, int, const char*); void (*FinishContext)(void**); } __Pyx_RefNannyAPIStruct; static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL; static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname); #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL; #ifdef WITH_THREAD #define __Pyx_RefNannySetupContext(name, acquire_gil)\ if (acquire_gil) {\ PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\ __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\ PyGILState_Release(__pyx_gilstate_save);\ } else {\ __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\ } #else #define __Pyx_RefNannySetupContext(name, acquire_gil)\ __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__) #endif #define __Pyx_RefNannyFinishContext()\ __Pyx_RefNanny->FinishContext(&__pyx_refnanny) #define __Pyx_INCREF(r) __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__) #define __Pyx_DECREF(r) __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__) #define __Pyx_GOTREF(r) __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), __LINE__) #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), __LINE__) #define __Pyx_XINCREF(r) do { if((r) != NULL) {__Pyx_INCREF(r); }} while(0) #define __Pyx_XDECREF(r) do { if((r) != NULL) {__Pyx_DECREF(r); }} while(0) #define __Pyx_XGOTREF(r) do { if((r) != NULL) {__Pyx_GOTREF(r); }} while(0) #define __Pyx_XGIVEREF(r) do { if((r) != NULL) {__Pyx_GIVEREF(r);}} while(0) #else #define __Pyx_RefNannyDeclarations #define __Pyx_RefNannySetupContext(name, acquire_gil) #define __Pyx_RefNannyFinishContext() #define __Pyx_INCREF(r) Py_INCREF(r) #define __Pyx_DECREF(r) Py_DECREF(r) #define __Pyx_GOTREF(r) #define __Pyx_GIVEREF(r) #define __Pyx_XINCREF(r) Py_XINCREF(r) #define __Pyx_XDECREF(r) Py_XDECREF(r) #define __Pyx_XGOTREF(r) #define __Pyx_XGIVEREF(r) #endif #define __Pyx_XDECREF_SET(r, v) do {\ PyObject *tmp = (PyObject *) r;\ r = v; __Pyx_XDECREF(tmp);\ } while (0) #define __Pyx_DECREF_SET(r, v) do {\ PyObject *tmp = (PyObject *) r;\ r = v; __Pyx_DECREF(tmp);\ } while (0) #define __Pyx_CLEAR(r) do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0) #define __Pyx_XCLEAR(r) do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0) /* PyObjectGetAttrStr.proto */ #if CYTHON_USE_TYPE_SLOTS static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) { PyTypeObject* tp = Py_TYPE(obj); if (likely(tp->tp_getattro)) return tp->tp_getattro(obj, attr_name); #if PY_MAJOR_VERSION < 3 if (likely(tp->tp_getattr)) return tp->tp_getattr(obj, PyString_AS_STRING(attr_name)); #endif return PyObject_GetAttr(obj, attr_name); } #else #define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n) #endif /* GetBuiltinName.proto */ static PyObject *__Pyx_GetBuiltinName(PyObject *name); /* GetModuleGlobalName.proto */ static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name); /* PyObjectCall.proto */ #if CYTHON_COMPILING_IN_CPYTHON static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw); #else #define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw) #endif /* PyThreadStateGet.proto */ #if CYTHON_FAST_THREAD_STATE #define __Pyx_PyThreadState_declare PyThreadState *__pyx_tstate; #define __Pyx_PyThreadState_assign __pyx_tstate = PyThreadState_GET(); #else #define __Pyx_PyThreadState_declare #define __Pyx_PyThreadState_assign #endif /* PyErrFetchRestore.proto */ #if CYTHON_FAST_THREAD_STATE #define __Pyx_ErrRestoreWithState(type, value, tb) __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb) #define __Pyx_ErrFetchWithState(type, value, tb) __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb) #define __Pyx_ErrRestore(type, value, tb) __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb) #define __Pyx_ErrFetch(type, value, tb) __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb) static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); #else #define __Pyx_ErrRestoreWithState(type, value, tb) PyErr_Restore(type, value, tb) #define __Pyx_ErrFetchWithState(type, value, tb) PyErr_Fetch(type, value, tb) #define __Pyx_ErrRestore(type, value, tb) PyErr_Restore(type, value, tb) #define __Pyx_ErrFetch(type, value, tb) PyErr_Fetch(type, value, tb) #endif /* WriteUnraisableException.proto */ static void __Pyx_WriteUnraisable(const char *name, int clineno, int lineno, const char *filename, int full_traceback, int nogil); /* CodeObjectCache.proto */ typedef struct { PyCodeObject* code_object; int code_line; } __Pyx_CodeObjectCacheEntry; struct __Pyx_CodeObjectCache { int count; int max_count; __Pyx_CodeObjectCacheEntry* entries; }; static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL}; static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line); static PyCodeObject *__pyx_find_code_object(int code_line); static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object); /* AddTraceback.proto */ static void __Pyx_AddTraceback(const char *funcname, int c_line, int py_line, const char *filename); /* CIntToPy.proto */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_unsigned_int(unsigned int value); /* CIntToPy.proto */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value); /* CIntFromPy.proto */ static CYTHON_INLINE unsigned int __Pyx_PyInt_As_unsigned_int(PyObject *); /* CIntFromPy.proto */ static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *); /* CIntToPy.proto */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value); /* CIntFromPy.proto */ static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *); /* CheckBinaryVersion.proto */ static int __Pyx_check_binary_version(void); /* FunctionExport.proto */ static int __Pyx_ExportFunction(const char *name, void (*f)(void), const char *sig); /* InitStrings.proto */ static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); /* Module declarations from 'libc.stddef' */ /* Module declarations from 'libc.stdint' */ /* Module declarations from 'gl_es2' */ /* Module declarations from 'libc.math' */ /* Module declarations from '_gldraw_es2' */ static long __pyx_v_11_gldraw_es2_debug; static struct __pyx_t_11_gldraw_es2_Cube __pyx_v_11_gldraw_es2_cube; static void __pyx_f_11_gldraw_es2_matrix_set_identity(__pyx_t_11_gldraw_es2_vec4 *); /*proto*/ static void __pyx_f_11_gldraw_es2_matrix_mult(__pyx_t_11_gldraw_es2_vec4 *, __pyx_t_11_gldraw_es2_vec4 *, __pyx_t_11_gldraw_es2_vec4 *); /*proto*/ static void __pyx_f_11_gldraw_es2__gl_enable_pointer(GLuint, GLint, GLenum, GLboolean, long); /*proto*/ static void __pyx_f_11_gldraw_es2__gl_disable_pointer(GLuint); /*proto*/ #define __Pyx_MODULE_NAME "_gldraw_es2" int __pyx_module_is_main__gldraw_es2 = 0; /* Implementation of '_gldraw_es2' */ static PyObject *__pyx_builtin_print; static PyObject *__pyx_builtin_range; static const char __pyx_k_main[] = "__main__"; static const char __pyx_k_name[] = "__name__"; static const char __pyx_k_test[] = "__test__"; static const char __pyx_k_print[] = "print"; static const char __pyx_k_range[] = "range"; static const char __pyx_k_module[] = "module"; static const char __pyx_k_package[] = "__package__"; static const char __pyx_k_compiled[] = " compiled:"; static const char __pyx_k_compiled_2[] = "__compiled"; static const char __pyx_k_gldraw_es2[] = "_gldraw_es2"; static const char __pyx_k_GL_type_es2[] = " GL-type: es2"; static const char __pyx_k_init_module[] = "init module:"; static const char __pyx_k_DEBUG_MSGEXT[] = "DEBUG_MSGEXT"; static const char __pyx_k_from_package[] = " from package:"; static const char __pyx_k_set_debug_flags[] = "set_debug_flags"; static const char __pyx_k_tmp[] = "/tmp/build/temp.linux-x86_64-3.5/pybiklib/ext/_gldraw_es2.pyx"; static PyObject *__pyx_n_s_DEBUG_MSGEXT; static PyObject *__pyx_kp_u_GL_type_es2; static PyObject *__pyx_kp_u_compiled; static PyObject *__pyx_n_s_compiled_2; static PyObject *__pyx_kp_u_from_package; static PyObject *__pyx_n_s_gldraw_es2; static PyObject *__pyx_kp_s_tmp; static PyObject *__pyx_kp_u_init_module; static PyObject *__pyx_n_s_main; static PyObject *__pyx_n_s_module; static PyObject *__pyx_n_s_name; static PyObject *__pyx_n_s_package; static PyObject *__pyx_n_s_print; static PyObject *__pyx_n_s_range; static PyObject *__pyx_n_s_set_debug_flags; static PyObject *__pyx_n_s_test; static PyObject *__pyx_pf_11_gldraw_es2_set_debug_flags(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_module); /* proto */ static PyObject *__pyx_tuple_; static PyObject *__pyx_tuple__2; static PyObject *__pyx_codeobj__3; /* "_gldraw_es2.pyx":60 * debug = 0 * * def set_debug_flags(module): # <<<<<<<<<<<<<< * global debug * if module.DEBUG_MSGEXT: debug |= DEBUG_MSGEXT */ /* Python wrapper */ static PyObject *__pyx_pw_11_gldraw_es2_1set_debug_flags(PyObject *__pyx_self, PyObject *__pyx_v_module); /*proto*/ static PyMethodDef __pyx_mdef_11_gldraw_es2_1set_debug_flags = {"set_debug_flags", (PyCFunction)__pyx_pw_11_gldraw_es2_1set_debug_flags, METH_O, 0}; static PyObject *__pyx_pw_11_gldraw_es2_1set_debug_flags(PyObject *__pyx_self, PyObject *__pyx_v_module) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("set_debug_flags (wrapper)", 0); __pyx_r = __pyx_pf_11_gldraw_es2_set_debug_flags(__pyx_self, ((PyObject *)__pyx_v_module)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11_gldraw_es2_set_debug_flags(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_module) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_t_2; __Pyx_RefNannySetupContext("set_debug_flags", 0); /* "_gldraw_es2.pyx":62 * def set_debug_flags(module): * global debug * if module.DEBUG_MSGEXT: debug |= DEBUG_MSGEXT # <<<<<<<<<<<<<< * * ##px- */ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_module, __pyx_n_s_DEBUG_MSGEXT); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 62, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 62, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_2) { __pyx_v_11_gldraw_es2_debug = (__pyx_v_11_gldraw_es2_debug | __pyx_e_11_gldraw_es2_DEBUG_MSGEXT); } /* "_gldraw_es2.pyx":60 * debug = 0 * * def set_debug_flags(module): # <<<<<<<<<<<<<< * global debug * if module.DEBUG_MSGEXT: debug |= DEBUG_MSGEXT */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("_gldraw_es2.set_debug_flags", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_gldraw_es2.pyx":87 * * ##pxm-FUNC PD nogil * cdef void matrix_set_identity(mat4 &matrix) nogil: # <<<<<<<<<<<<<< * matrix[0][0] = 1.; matrix[0][1] = 0.; matrix[0][2] = 0.; matrix[0][3] = 0. * matrix[1][0] = 0.; matrix[1][1] = 1.; matrix[1][2] = 0.; matrix[1][3] = 0. */ static void __pyx_f_11_gldraw_es2_matrix_set_identity(__pyx_t_11_gldraw_es2_vec4 *__pyx_v_matrix) { /* "_gldraw_es2.pyx":88 * ##pxm-FUNC PD nogil * cdef void matrix_set_identity(mat4 &matrix) nogil: * matrix[0][0] = 1.; matrix[0][1] = 0.; matrix[0][2] = 0.; matrix[0][3] = 0. # <<<<<<<<<<<<<< * matrix[1][0] = 0.; matrix[1][1] = 1.; matrix[1][2] = 0.; matrix[1][3] = 0. * matrix[2][0] = 0.; matrix[2][1] = 0.; matrix[2][2] = 1.; matrix[2][3] = 0. */ ((__pyx_v_matrix[0])[0]) = 1.; ((__pyx_v_matrix[0])[1]) = 0.; ((__pyx_v_matrix[0])[2]) = 0.; ((__pyx_v_matrix[0])[3]) = 0.; /* "_gldraw_es2.pyx":89 * cdef void matrix_set_identity(mat4 &matrix) nogil: * matrix[0][0] = 1.; matrix[0][1] = 0.; matrix[0][2] = 0.; matrix[0][3] = 0. * matrix[1][0] = 0.; matrix[1][1] = 1.; matrix[1][2] = 0.; matrix[1][3] = 0. # <<<<<<<<<<<<<< * matrix[2][0] = 0.; matrix[2][1] = 0.; matrix[2][2] = 1.; matrix[2][3] = 0. * matrix[3][0] = 0.; matrix[3][1] = 0.; matrix[3][2] = 0.; matrix[3][3] = 1. */ ((__pyx_v_matrix[1])[0]) = 0.; ((__pyx_v_matrix[1])[1]) = 1.; ((__pyx_v_matrix[1])[2]) = 0.; ((__pyx_v_matrix[1])[3]) = 0.; /* "_gldraw_es2.pyx":90 * matrix[0][0] = 1.; matrix[0][1] = 0.; matrix[0][2] = 0.; matrix[0][3] = 0. * matrix[1][0] = 0.; matrix[1][1] = 1.; matrix[1][2] = 0.; matrix[1][3] = 0. * matrix[2][0] = 0.; matrix[2][1] = 0.; matrix[2][2] = 1.; matrix[2][3] = 0. # <<<<<<<<<<<<<< * matrix[3][0] = 0.; matrix[3][1] = 0.; matrix[3][2] = 0.; matrix[3][3] = 1. * */ ((__pyx_v_matrix[2])[0]) = 0.; ((__pyx_v_matrix[2])[1]) = 0.; ((__pyx_v_matrix[2])[2]) = 1.; ((__pyx_v_matrix[2])[3]) = 0.; /* "_gldraw_es2.pyx":91 * matrix[1][0] = 0.; matrix[1][1] = 1.; matrix[1][2] = 0.; matrix[1][3] = 0. * matrix[2][0] = 0.; matrix[2][1] = 0.; matrix[2][2] = 1.; matrix[2][3] = 0. * matrix[3][0] = 0.; matrix[3][1] = 0.; matrix[3][2] = 0.; matrix[3][3] = 1. # <<<<<<<<<<<<<< * * cdef struct Block: #px/ */ ((__pyx_v_matrix[3])[0]) = 0.; ((__pyx_v_matrix[3])[1]) = 0.; ((__pyx_v_matrix[3])[2]) = 0.; ((__pyx_v_matrix[3])[3]) = 1.; /* "_gldraw_es2.pyx":87 * * ##pxm-FUNC PD nogil * cdef void matrix_set_identity(mat4 &matrix) nogil: # <<<<<<<<<<<<<< * matrix[0][0] = 1.; matrix[0][1] = 0.; matrix[0][2] = 0.; matrix[0][3] = 0. * matrix[1][0] = 0.; matrix[1][1] = 1.; matrix[1][2] = 0.; matrix[1][3] = 0. */ /* function exit code */ } /* "_gldraw_es2.pyx":137 * * ##pxm-FUNC PD * cdef void init_gldraw(): # <<<<<<<<<<<<<< * if debug & DEBUG_MSGEXT: * print('init module:', __name__) */ static void __pyx_f_11_gldraw_es2_init_gldraw(void) { __Pyx_RefNannyDeclarations int __pyx_t_1; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; __Pyx_RefNannySetupContext("init_gldraw", 0); /* "_gldraw_es2.pyx":138 * ##pxm-FUNC PD * cdef void init_gldraw(): * if debug & DEBUG_MSGEXT: # <<<<<<<<<<<<<< * print('init module:', __name__) * print(' from package:', __package__) */ __pyx_t_1 = ((__pyx_v_11_gldraw_es2_debug & __pyx_e_11_gldraw_es2_DEBUG_MSGEXT) != 0); if (__pyx_t_1) { /* "_gldraw_es2.pyx":139 * cdef void init_gldraw(): * if debug & DEBUG_MSGEXT: * print('init module:', __name__) # <<<<<<<<<<<<<< * print(' from package:', __package__) * print(' compiled:', __compiled) */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 139, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 139, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_kp_u_init_module); __Pyx_GIVEREF(__pyx_kp_u_init_module); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_kp_u_init_module); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 139, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_gldraw_es2.pyx":140 * if debug & DEBUG_MSGEXT: * print('init module:', __name__) * print(' from package:', __package__) # <<<<<<<<<<<<<< * print(' compiled:', __compiled) * print(' GL-type: es2') #px+ */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_package); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 140, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 140, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_kp_u_from_package); __Pyx_GIVEREF(__pyx_kp_u_from_package); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_kp_u_from_package); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 140, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_gldraw_es2.pyx":141 * print('init module:', __name__) * print(' from package:', __package__) * print(' compiled:', __compiled) # <<<<<<<<<<<<<< * print(' GL-type: es2') #px+ * cube.number_blocks = 0 */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_compiled_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 141, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 141, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_kp_u_compiled); __Pyx_GIVEREF(__pyx_kp_u_compiled); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_kp_u_compiled); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 141, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_gldraw_es2.pyx":142 * print(' from package:', __package__) * print(' compiled:', __compiled) * print(' GL-type: es2') #px+ # <<<<<<<<<<<<<< * cube.number_blocks = 0 * cube.cnt_pick = 0 */ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_tuple_, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 142, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_gldraw_es2.pyx":138 * ##pxm-FUNC PD * cdef void init_gldraw(): * if debug & DEBUG_MSGEXT: # <<<<<<<<<<<<<< * print('init module:', __name__) * print(' from package:', __package__) */ } /* "_gldraw_es2.pyx":143 * print(' compiled:', __compiled) * print(' GL-type: es2') #px+ * cube.number_blocks = 0 # <<<<<<<<<<<<<< * cube.cnt_pick = 0 * cube.idx_debug = 0 */ __pyx_v_11_gldraw_es2_cube.number_blocks = 0; /* "_gldraw_es2.pyx":144 * print(' GL-type: es2') #px+ * cube.number_blocks = 0 * cube.cnt_pick = 0 # <<<<<<<<<<<<<< * cube.idx_debug = 0 * cube.cnt_debug = 0 */ __pyx_v_11_gldraw_es2_cube.cnt_pick = 0; /* "_gldraw_es2.pyx":145 * cube.number_blocks = 0 * cube.cnt_pick = 0 * cube.idx_debug = 0 # <<<<<<<<<<<<<< * cube.cnt_debug = 0 * cube.vertexdatalen = 0 */ __pyx_v_11_gldraw_es2_cube.idx_debug = 0; /* "_gldraw_es2.pyx":146 * cube.cnt_pick = 0 * cube.idx_debug = 0 * cube.cnt_debug = 0 # <<<<<<<<<<<<<< * cube.vertexdatalen = 0 * cube.vertexdata = NULL */ __pyx_v_11_gldraw_es2_cube.cnt_debug = 0; /* "_gldraw_es2.pyx":147 * cube.idx_debug = 0 * cube.cnt_debug = 0 * cube.vertexdatalen = 0 # <<<<<<<<<<<<<< * cube.vertexdata = NULL * */ __pyx_v_11_gldraw_es2_cube.vertexdatalen = 0; /* "_gldraw_es2.pyx":148 * cube.cnt_debug = 0 * cube.vertexdatalen = 0 * cube.vertexdata = NULL # <<<<<<<<<<<<<< * * ##pxm-FUNC PD nogil */ __pyx_v_11_gldraw_es2_cube.vertexdata = NULL; /* "_gldraw_es2.pyx":137 * * ##pxm-FUNC PD * cdef void init_gldraw(): # <<<<<<<<<<<<<< * if debug & DEBUG_MSGEXT: * print('init module:', __name__) */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_WriteUnraisable("_gldraw_es2.init_gldraw", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); } /* "_gldraw_es2.pyx":151 * * ##pxm-FUNC PD nogil * cdef void sync_block_transformations(short *blocks) nogil: # <<<<<<<<<<<<<< * cdef unsigned int i #px+ * for i in range(cube.number_blocks): */ static void __pyx_f_11_gldraw_es2_sync_block_transformations(short *__pyx_v_blocks) { unsigned int __pyx_v_i; unsigned int __pyx_t_1; unsigned int __pyx_t_2; /* "_gldraw_es2.pyx":153 * cdef void sync_block_transformations(short *blocks) nogil: * cdef unsigned int i #px+ * for i in range(cube.number_blocks): # <<<<<<<<<<<<<< * cube.blocks[i].transformation = cube.transformations[blocks[i]] * cube.blocks[i].in_motion = False */ __pyx_t_1 = __pyx_v_11_gldraw_es2_cube.number_blocks; for (__pyx_t_2 = 0; __pyx_t_2 < __pyx_t_1; __pyx_t_2+=1) { __pyx_v_i = __pyx_t_2; /* "_gldraw_es2.pyx":154 * cdef unsigned int i #px+ * for i in range(cube.number_blocks): * cube.blocks[i].transformation = cube.transformations[blocks[i]] # <<<<<<<<<<<<<< * cube.blocks[i].in_motion = False * */ (__pyx_v_11_gldraw_es2_cube.blocks[__pyx_v_i]).transformation = (__pyx_v_11_gldraw_es2_cube.transformations[(__pyx_v_blocks[__pyx_v_i])]); /* "_gldraw_es2.pyx":155 * for i in range(cube.number_blocks): * cube.blocks[i].transformation = cube.transformations[blocks[i]] * cube.blocks[i].in_motion = False # <<<<<<<<<<<<<< * * ##pxm-FUNC PD nogil */ (__pyx_v_11_gldraw_es2_cube.blocks[__pyx_v_i]).in_motion = 0; } /* "_gldraw_es2.pyx":151 * * ##pxm-FUNC PD nogil * cdef void sync_block_transformations(short *blocks) nogil: # <<<<<<<<<<<<<< * cdef unsigned int i #px+ * for i in range(cube.number_blocks): */ /* function exit code */ } /* "_gldraw_es2.pyx":158 * * ##pxm-FUNC PD nogil * cdef void sync_animation_start(int blocks_count, short *blocks) nogil: # <<<<<<<<<<<<<< * matrix_set_identity(cube.rotation_matrix) * cdef int i #px+ */ static void __pyx_f_11_gldraw_es2_sync_animation_start(int __pyx_v_blocks_count, short *__pyx_v_blocks) { int __pyx_v_i; int __pyx_t_1; int __pyx_t_2; /* "_gldraw_es2.pyx":159 * ##pxm-FUNC PD nogil * cdef void sync_animation_start(int blocks_count, short *blocks) nogil: * matrix_set_identity(cube.rotation_matrix) # <<<<<<<<<<<<<< * cdef int i #px+ * for i in range(blocks_count): */ __pyx_f_11_gldraw_es2_matrix_set_identity(__pyx_v_11_gldraw_es2_cube.rotation_matrix); /* "_gldraw_es2.pyx":161 * matrix_set_identity(cube.rotation_matrix) * cdef int i #px+ * for i in range(blocks_count): # <<<<<<<<<<<<<< * cube.blocks[blocks[i]].in_motion = True * */ __pyx_t_1 = __pyx_v_blocks_count; for (__pyx_t_2 = 0; __pyx_t_2 < __pyx_t_1; __pyx_t_2+=1) { __pyx_v_i = __pyx_t_2; /* "_gldraw_es2.pyx":162 * cdef int i #px+ * for i in range(blocks_count): * cube.blocks[blocks[i]].in_motion = True # <<<<<<<<<<<<<< * * ##pxm-FUNC PD nogil */ (__pyx_v_11_gldraw_es2_cube.blocks[(__pyx_v_blocks[__pyx_v_i])]).in_motion = 1; } /* "_gldraw_es2.pyx":158 * * ##pxm-FUNC PD nogil * cdef void sync_animation_start(int blocks_count, short *blocks) nogil: # <<<<<<<<<<<<<< * matrix_set_identity(cube.rotation_matrix) * cdef int i #px+ */ /* function exit code */ } /* "_gldraw_es2.pyx":165 * * ##pxm-FUNC PD nogil * cdef void sync_animation_next(float angle, float rotation_x, float rotation_y, float rotation_z) nogil: # <<<<<<<<<<<<<< * angle = angle / 180. * M_PI #px/ * #angle = radians(angle) */ static void __pyx_f_11_gldraw_es2_sync_animation_next(float __pyx_v_angle, float __pyx_v_rotation_x, float __pyx_v_rotation_y, float __pyx_v_rotation_z) { float __pyx_v_x; float __pyx_v_y; float __pyx_v_z; float __pyx_v_c; float __pyx_v_s; /* "_gldraw_es2.pyx":166 * ##pxm-FUNC PD nogil * cdef void sync_animation_next(float angle, float rotation_x, float rotation_y, float rotation_z) nogil: * angle = angle / 180. * M_PI #px/ # <<<<<<<<<<<<<< * #angle = radians(angle) * cdef float x, y, z #px+ */ __pyx_v_angle = ((((double)__pyx_v_angle) / 180.) * M_PI); /* "_gldraw_es2.pyx":169 * #angle = radians(angle) * cdef float x, y, z #px+ * x = rotation_x # <<<<<<<<<<<<<< * y = rotation_y * z = rotation_z */ __pyx_v_x = __pyx_v_rotation_x; /* "_gldraw_es2.pyx":170 * cdef float x, y, z #px+ * x = rotation_x * y = rotation_y # <<<<<<<<<<<<<< * z = rotation_z * cdef float c, s #px+ */ __pyx_v_y = __pyx_v_rotation_y; /* "_gldraw_es2.pyx":171 * x = rotation_x * y = rotation_y * z = rotation_z # <<<<<<<<<<<<<< * cdef float c, s #px+ * c = cos(angle) */ __pyx_v_z = __pyx_v_rotation_z; /* "_gldraw_es2.pyx":173 * z = rotation_z * cdef float c, s #px+ * c = cos(angle) # <<<<<<<<<<<<<< * s = sin(angle) * */ __pyx_v_c = cos(__pyx_v_angle); /* "_gldraw_es2.pyx":174 * cdef float c, s #px+ * c = cos(angle) * s = sin(angle) # <<<<<<<<<<<<<< * * cube.rotation_matrix[0][0] = x*x*(1-c) + c */ __pyx_v_s = sin(__pyx_v_angle); /* "_gldraw_es2.pyx":176 * s = sin(angle) * * cube.rotation_matrix[0][0] = x*x*(1-c) + c # <<<<<<<<<<<<<< * cube.rotation_matrix[0][1] = x*y*(1-c) + z*s * cube.rotation_matrix[0][2] = x*z*(1-c) - y*s */ ((__pyx_v_11_gldraw_es2_cube.rotation_matrix[0])[0]) = (((__pyx_v_x * __pyx_v_x) * (1.0 - __pyx_v_c)) + __pyx_v_c); /* "_gldraw_es2.pyx":177 * * cube.rotation_matrix[0][0] = x*x*(1-c) + c * cube.rotation_matrix[0][1] = x*y*(1-c) + z*s # <<<<<<<<<<<<<< * cube.rotation_matrix[0][2] = x*z*(1-c) - y*s * cube.rotation_matrix[1][0] = y*x*(1-c) - z*s */ ((__pyx_v_11_gldraw_es2_cube.rotation_matrix[0])[1]) = (((__pyx_v_x * __pyx_v_y) * (1.0 - __pyx_v_c)) + (__pyx_v_z * __pyx_v_s)); /* "_gldraw_es2.pyx":178 * cube.rotation_matrix[0][0] = x*x*(1-c) + c * cube.rotation_matrix[0][1] = x*y*(1-c) + z*s * cube.rotation_matrix[0][2] = x*z*(1-c) - y*s # <<<<<<<<<<<<<< * cube.rotation_matrix[1][0] = y*x*(1-c) - z*s * cube.rotation_matrix[1][1] = y*y*(1-c) + c */ ((__pyx_v_11_gldraw_es2_cube.rotation_matrix[0])[2]) = (((__pyx_v_x * __pyx_v_z) * (1.0 - __pyx_v_c)) - (__pyx_v_y * __pyx_v_s)); /* "_gldraw_es2.pyx":179 * cube.rotation_matrix[0][1] = x*y*(1-c) + z*s * cube.rotation_matrix[0][2] = x*z*(1-c) - y*s * cube.rotation_matrix[1][0] = y*x*(1-c) - z*s # <<<<<<<<<<<<<< * cube.rotation_matrix[1][1] = y*y*(1-c) + c * cube.rotation_matrix[1][2] = y*z*(1-c) + x*s */ ((__pyx_v_11_gldraw_es2_cube.rotation_matrix[1])[0]) = (((__pyx_v_y * __pyx_v_x) * (1.0 - __pyx_v_c)) - (__pyx_v_z * __pyx_v_s)); /* "_gldraw_es2.pyx":180 * cube.rotation_matrix[0][2] = x*z*(1-c) - y*s * cube.rotation_matrix[1][0] = y*x*(1-c) - z*s * cube.rotation_matrix[1][1] = y*y*(1-c) + c # <<<<<<<<<<<<<< * cube.rotation_matrix[1][2] = y*z*(1-c) + x*s * cube.rotation_matrix[2][0] = x*z*(1-c) + y*s */ ((__pyx_v_11_gldraw_es2_cube.rotation_matrix[1])[1]) = (((__pyx_v_y * __pyx_v_y) * (1.0 - __pyx_v_c)) + __pyx_v_c); /* "_gldraw_es2.pyx":181 * cube.rotation_matrix[1][0] = y*x*(1-c) - z*s * cube.rotation_matrix[1][1] = y*y*(1-c) + c * cube.rotation_matrix[1][2] = y*z*(1-c) + x*s # <<<<<<<<<<<<<< * cube.rotation_matrix[2][0] = x*z*(1-c) + y*s * cube.rotation_matrix[2][1] = y*z*(1-c) - x*s */ ((__pyx_v_11_gldraw_es2_cube.rotation_matrix[1])[2]) = (((__pyx_v_y * __pyx_v_z) * (1.0 - __pyx_v_c)) + (__pyx_v_x * __pyx_v_s)); /* "_gldraw_es2.pyx":182 * cube.rotation_matrix[1][1] = y*y*(1-c) + c * cube.rotation_matrix[1][2] = y*z*(1-c) + x*s * cube.rotation_matrix[2][0] = x*z*(1-c) + y*s # <<<<<<<<<<<<<< * cube.rotation_matrix[2][1] = y*z*(1-c) - x*s * cube.rotation_matrix[2][2] = z*z*(1-c) + c */ ((__pyx_v_11_gldraw_es2_cube.rotation_matrix[2])[0]) = (((__pyx_v_x * __pyx_v_z) * (1.0 - __pyx_v_c)) + (__pyx_v_y * __pyx_v_s)); /* "_gldraw_es2.pyx":183 * cube.rotation_matrix[1][2] = y*z*(1-c) + x*s * cube.rotation_matrix[2][0] = x*z*(1-c) + y*s * cube.rotation_matrix[2][1] = y*z*(1-c) - x*s # <<<<<<<<<<<<<< * cube.rotation_matrix[2][2] = z*z*(1-c) + c * */ ((__pyx_v_11_gldraw_es2_cube.rotation_matrix[2])[1]) = (((__pyx_v_y * __pyx_v_z) * (1.0 - __pyx_v_c)) - (__pyx_v_x * __pyx_v_s)); /* "_gldraw_es2.pyx":184 * cube.rotation_matrix[2][0] = x*z*(1-c) + y*s * cube.rotation_matrix[2][1] = y*z*(1-c) - x*s * cube.rotation_matrix[2][2] = z*z*(1-c) + c # <<<<<<<<<<<<<< * * ##pxm-FUNC P nogil */ ((__pyx_v_11_gldraw_es2_cube.rotation_matrix[2])[2]) = (((__pyx_v_z * __pyx_v_z) * (1.0 - __pyx_v_c)) + __pyx_v_c); /* "_gldraw_es2.pyx":165 * * ##pxm-FUNC PD nogil * cdef void sync_animation_next(float angle, float rotation_x, float rotation_y, float rotation_z) nogil: # <<<<<<<<<<<<<< * angle = angle / 180. * M_PI #px/ * #angle = radians(angle) */ /* function exit code */ } /* "_gldraw_es2.pyx":187 * * ##pxm-FUNC P nogil * cdef void matrix_mult(mat4 &dest, mat4 &src1, mat4 &src2) nogil: # <<<<<<<<<<<<<< * cdef int i, j, k #px+ * cdef float sum_ #px+ */ static void __pyx_f_11_gldraw_es2_matrix_mult(__pyx_t_11_gldraw_es2_vec4 *__pyx_v_dest, __pyx_t_11_gldraw_es2_vec4 *__pyx_v_src1, __pyx_t_11_gldraw_es2_vec4 *__pyx_v_src2) { int __pyx_v_i; int __pyx_v_j; int __pyx_v_k; float __pyx_v_sum_; int __pyx_t_1; int __pyx_t_2; int __pyx_t_3; /* "_gldraw_es2.pyx":190 * cdef int i, j, k #px+ * cdef float sum_ #px+ * for j in range(4): # <<<<<<<<<<<<<< * for i in range(4): * sum_ = 0. */ for (__pyx_t_1 = 0; __pyx_t_1 < 4; __pyx_t_1+=1) { __pyx_v_j = __pyx_t_1; /* "_gldraw_es2.pyx":191 * cdef float sum_ #px+ * for j in range(4): * for i in range(4): # <<<<<<<<<<<<<< * sum_ = 0. * for k in range(4): */ for (__pyx_t_2 = 0; __pyx_t_2 < 4; __pyx_t_2+=1) { __pyx_v_i = __pyx_t_2; /* "_gldraw_es2.pyx":192 * for j in range(4): * for i in range(4): * sum_ = 0. # <<<<<<<<<<<<<< * for k in range(4): * sum_ += src1[k][i] * src2[j][k] */ __pyx_v_sum_ = 0.; /* "_gldraw_es2.pyx":193 * for i in range(4): * sum_ = 0. * for k in range(4): # <<<<<<<<<<<<<< * sum_ += src1[k][i] * src2[j][k] * dest[j][i] = sum_ */ for (__pyx_t_3 = 0; __pyx_t_3 < 4; __pyx_t_3+=1) { __pyx_v_k = __pyx_t_3; /* "_gldraw_es2.pyx":194 * sum_ = 0. * for k in range(4): * sum_ += src1[k][i] * src2[j][k] # <<<<<<<<<<<<<< * dest[j][i] = sum_ * */ __pyx_v_sum_ = (__pyx_v_sum_ + (((__pyx_v_src1[__pyx_v_k])[__pyx_v_i]) * ((__pyx_v_src2[__pyx_v_j])[__pyx_v_k]))); } /* "_gldraw_es2.pyx":195 * for k in range(4): * sum_ += src1[k][i] * src2[j][k] * dest[j][i] = sum_ # <<<<<<<<<<<<<< * * ##pxm-FUNC PD nogil */ ((__pyx_v_dest[__pyx_v_j])[__pyx_v_i]) = __pyx_v_sum_; } } /* "_gldraw_es2.pyx":187 * * ##pxm-FUNC P nogil * cdef void matrix_mult(mat4 &dest, mat4 &src1, mat4 &src2) nogil: # <<<<<<<<<<<<<< * cdef int i, j, k #px+ * cdef float sum_ #px+ */ /* function exit code */ } /* "_gldraw_es2.pyx":198 * * ##pxm-FUNC PD nogil * cdef void gl_draw_cube() nogil: # <<<<<<<<<<<<<< * cdef unsigned int i #px+ * cdef mat4 object_matrix #px/ */ static void __pyx_f_11_gldraw_es2_gl_draw_cube(void) { unsigned int __pyx_v_i; __pyx_t_11_gldraw_es2_mat4 __pyx_v_object_matrix; unsigned int __pyx_t_1; unsigned int __pyx_t_2; int __pyx_t_3; /* "_gldraw_es2.pyx":202 * cdef mat4 object_matrix #px/ * #object_matrix = mat4() * for i in range(cube.number_blocks): # <<<<<<<<<<<<<< * if cube.blocks[i].in_motion: * matrix_mult(object_matrix, cube.rotation_matrix, cube.blocks[i].transformation) */ __pyx_t_1 = __pyx_v_11_gldraw_es2_cube.number_blocks; for (__pyx_t_2 = 0; __pyx_t_2 < __pyx_t_1; __pyx_t_2+=1) { __pyx_v_i = __pyx_t_2; /* "_gldraw_es2.pyx":203 * #object_matrix = mat4() * for i in range(cube.number_blocks): * if cube.blocks[i].in_motion: # <<<<<<<<<<<<<< * matrix_mult(object_matrix, cube.rotation_matrix, cube.blocks[i].transformation) * glUniformMatrix4fv(cube.object_location, 1, GL_FALSE, &object_matrix[0][0]) #px/ */ __pyx_t_3 = ((__pyx_v_11_gldraw_es2_cube.blocks[__pyx_v_i]).in_motion != 0); if (__pyx_t_3) { /* "_gldraw_es2.pyx":204 * for i in range(cube.number_blocks): * if cube.blocks[i].in_motion: * matrix_mult(object_matrix, cube.rotation_matrix, cube.blocks[i].transformation) # <<<<<<<<<<<<<< * glUniformMatrix4fv(cube.object_location, 1, GL_FALSE, &object_matrix[0][0]) #px/ * #glUniformMatrix4fv(cube.object_location, 1, GL_FALSE, object_matrix) */ __pyx_f_11_gldraw_es2_matrix_mult(__pyx_v_object_matrix, __pyx_v_11_gldraw_es2_cube.rotation_matrix, (__pyx_v_11_gldraw_es2_cube.blocks[__pyx_v_i]).transformation); /* "_gldraw_es2.pyx":205 * if cube.blocks[i].in_motion: * matrix_mult(object_matrix, cube.rotation_matrix, cube.blocks[i].transformation) * glUniformMatrix4fv(cube.object_location, 1, GL_FALSE, &object_matrix[0][0]) #px/ # <<<<<<<<<<<<<< * #glUniformMatrix4fv(cube.object_location, 1, GL_FALSE, object_matrix) * else: */ glUniformMatrix4fv(__pyx_v_11_gldraw_es2_cube.object_location, 1, GL_FALSE, (&((__pyx_v_object_matrix[0])[0]))); /* "_gldraw_es2.pyx":203 * #object_matrix = mat4() * for i in range(cube.number_blocks): * if cube.blocks[i].in_motion: # <<<<<<<<<<<<<< * matrix_mult(object_matrix, cube.rotation_matrix, cube.blocks[i].transformation) * glUniformMatrix4fv(cube.object_location, 1, GL_FALSE, &object_matrix[0][0]) #px/ */ goto __pyx_L5; } /* "_gldraw_es2.pyx":208 * #glUniformMatrix4fv(cube.object_location, 1, GL_FALSE, object_matrix) * else: * glUniformMatrix4fv(cube.object_location, 1, GL_FALSE, &cube.blocks[i].transformation[0][0]) #px/ # <<<<<<<<<<<<<< * #glUniformMatrix4fv(cube.object_location, 1, GL_FALSE, cube.blocks[i].transformation) * glDrawArrays(GL_TRIANGLES, cube.blocks[i].idx_triangles, cube.blocks[i].cnt_triangles) */ /*else*/ { glUniformMatrix4fv(__pyx_v_11_gldraw_es2_cube.object_location, 1, GL_FALSE, (&(((__pyx_v_11_gldraw_es2_cube.blocks[__pyx_v_i]).transformation[0])[0]))); } __pyx_L5:; /* "_gldraw_es2.pyx":210 * glUniformMatrix4fv(cube.object_location, 1, GL_FALSE, &cube.blocks[i].transformation[0][0]) #px/ * #glUniformMatrix4fv(cube.object_location, 1, GL_FALSE, cube.blocks[i].transformation) * glDrawArrays(GL_TRIANGLES, cube.blocks[i].idx_triangles, cube.blocks[i].cnt_triangles) # <<<<<<<<<<<<<< * * ##pxm-FUNC PD nogil */ glDrawArrays(GL_TRIANGLES, (__pyx_v_11_gldraw_es2_cube.blocks[__pyx_v_i]).idx_triangles, (__pyx_v_11_gldraw_es2_cube.blocks[__pyx_v_i]).cnt_triangles); } /* "_gldraw_es2.pyx":198 * * ##pxm-FUNC PD nogil * cdef void gl_draw_cube() nogil: # <<<<<<<<<<<<<< * cdef unsigned int i #px+ * cdef mat4 object_matrix #px/ */ /* function exit code */ } /* "_gldraw_es2.pyx":213 * * ##pxm-FUNC PD nogil * cdef void gl_pick_cube() nogil: # <<<<<<<<<<<<<< * glDrawArrays(GL_TRIANGLES, 0, cube.cnt_pick) * */ static void __pyx_f_11_gldraw_es2_gl_pick_cube(void) { /* "_gldraw_es2.pyx":214 * ##pxm-FUNC PD nogil * cdef void gl_pick_cube() nogil: * glDrawArrays(GL_TRIANGLES, 0, cube.cnt_pick) # <<<<<<<<<<<<<< * * ##pxm-FUNC PD nogil */ glDrawArrays(GL_TRIANGLES, 0, __pyx_v_11_gldraw_es2_cube.cnt_pick); /* "_gldraw_es2.pyx":213 * * ##pxm-FUNC PD nogil * cdef void gl_pick_cube() nogil: # <<<<<<<<<<<<<< * glDrawArrays(GL_TRIANGLES, 0, cube.cnt_pick) * */ /* function exit code */ } /* "_gldraw_es2.pyx":217 * * ##pxm-FUNC PD nogil * cdef void gl_init_buffers() nogil: # <<<<<<<<<<<<<< * glGenBuffers(1, &cube.glbuffer) #px/ * #cube.glbuffer = glGenBuffers(1) */ static void __pyx_f_11_gldraw_es2_gl_init_buffers(void) { /* "_gldraw_es2.pyx":218 * ##pxm-FUNC PD nogil * cdef void gl_init_buffers() nogil: * glGenBuffers(1, &cube.glbuffer) #px/ # <<<<<<<<<<<<<< * #cube.glbuffer = glGenBuffers(1) * */ glGenBuffers(1, (&__pyx_v_11_gldraw_es2_cube.glbuffer)); /* "_gldraw_es2.pyx":217 * * ##pxm-FUNC PD nogil * cdef void gl_init_buffers() nogil: # <<<<<<<<<<<<<< * glGenBuffers(1, &cube.glbuffer) #px/ * #cube.glbuffer = glGenBuffers(1) */ /* function exit code */ } /* "_gldraw_es2.pyx":222 * * ##pxm-FUNC PD nogil * cdef void gl_delete_buffers() nogil: # <<<<<<<<<<<<<< * glBindBuffer(GL_ARRAY_BUFFER, 0) * glDeleteBuffers(1, &cube.glbuffer) #px/ */ static void __pyx_f_11_gldraw_es2_gl_delete_buffers(void) { /* "_gldraw_es2.pyx":223 * ##pxm-FUNC PD nogil * cdef void gl_delete_buffers() nogil: * glBindBuffer(GL_ARRAY_BUFFER, 0) # <<<<<<<<<<<<<< * glDeleteBuffers(1, &cube.glbuffer) #px/ * #glDeleteBuffers(1, [cube.glbuffer]) */ glBindBuffer(GL_ARRAY_BUFFER, 0); /* "_gldraw_es2.pyx":224 * cdef void gl_delete_buffers() nogil: * glBindBuffer(GL_ARRAY_BUFFER, 0) * glDeleteBuffers(1, &cube.glbuffer) #px/ # <<<<<<<<<<<<<< * #glDeleteBuffers(1, [cube.glbuffer]) * cube.glbuffer = 0 */ glDeleteBuffers(1, (&__pyx_v_11_gldraw_es2_cube.glbuffer)); /* "_gldraw_es2.pyx":226 * glDeleteBuffers(1, &cube.glbuffer) #px/ * #glDeleteBuffers(1, [cube.glbuffer]) * cube.glbuffer = 0 # <<<<<<<<<<<<<< * * ##pxm-FUNC P nogil */ __pyx_v_11_gldraw_es2_cube.glbuffer = 0; /* "_gldraw_es2.pyx":222 * * ##pxm-FUNC PD nogil * cdef void gl_delete_buffers() nogil: # <<<<<<<<<<<<<< * glBindBuffer(GL_ARRAY_BUFFER, 0) * glDeleteBuffers(1, &cube.glbuffer) #px/ */ /* function exit code */ } /* "_gldraw_es2.pyx":229 * * ##pxm-FUNC P nogil * cdef void _gl_enable_pointer(GLuint index, GLint size, GLenum type, GLboolean normalized, long pointer) nogil: # <<<<<<<<<<<<<< * glVertexAttribPointer(index, size, type, normalized, 0, pointer) #px/ * #glVertexAttribPointer(index, size, type, normalized, 0, ctypes.cast(pointer, ctypes.c_void_p)) */ static void __pyx_f_11_gldraw_es2__gl_enable_pointer(GLuint __pyx_v_index, GLint __pyx_v_size, GLenum __pyx_v_type, GLboolean __pyx_v_normalized, long __pyx_v_pointer) { /* "_gldraw_es2.pyx":230 * ##pxm-FUNC P nogil * cdef void _gl_enable_pointer(GLuint index, GLint size, GLenum type, GLboolean normalized, long pointer) nogil: * glVertexAttribPointer(index, size, type, normalized, 0, pointer) #px/ # <<<<<<<<<<<<<< * #glVertexAttribPointer(index, size, type, normalized, 0, ctypes.cast(pointer, ctypes.c_void_p)) * glEnableVertexAttribArray(index) */ glVertexAttribPointer(__pyx_v_index, __pyx_v_size, __pyx_v_type, __pyx_v_normalized, 0, ((void *)__pyx_v_pointer)); /* "_gldraw_es2.pyx":232 * glVertexAttribPointer(index, size, type, normalized, 0, pointer) #px/ * #glVertexAttribPointer(index, size, type, normalized, 0, ctypes.cast(pointer, ctypes.c_void_p)) * glEnableVertexAttribArray(index) # <<<<<<<<<<<<<< * * ##pxm-FUNC P nogil */ glEnableVertexAttribArray(__pyx_v_index); /* "_gldraw_es2.pyx":229 * * ##pxm-FUNC P nogil * cdef void _gl_enable_pointer(GLuint index, GLint size, GLenum type, GLboolean normalized, long pointer) nogil: # <<<<<<<<<<<<<< * glVertexAttribPointer(index, size, type, normalized, 0, pointer) #px/ * #glVertexAttribPointer(index, size, type, normalized, 0, ctypes.cast(pointer, ctypes.c_void_p)) */ /* function exit code */ } /* "_gldraw_es2.pyx":235 * * ##pxm-FUNC P nogil * cdef void _gl_disable_pointer(GLuint index) nogil: # <<<<<<<<<<<<<< * glVertexAttribPointer(index, 4, GL_FLOAT, GL_FALSE, 0, NULL) #px/ * #glVertexAttribPointer(index, 4, GL_FLOAT, GL_FALSE, 0, ctypes.cast(0, ctypes.c_void_p)) */ static void __pyx_f_11_gldraw_es2__gl_disable_pointer(GLuint __pyx_v_index) { /* "_gldraw_es2.pyx":236 * ##pxm-FUNC P nogil * cdef void _gl_disable_pointer(GLuint index) nogil: * glVertexAttribPointer(index, 4, GL_FLOAT, GL_FALSE, 0, NULL) #px/ # <<<<<<<<<<<<<< * #glVertexAttribPointer(index, 4, GL_FLOAT, GL_FALSE, 0, ctypes.cast(0, ctypes.c_void_p)) * glDisableVertexAttribArray(index) */ glVertexAttribPointer(__pyx_v_index, 4, GL_FLOAT, GL_FALSE, 0, NULL); /* "_gldraw_es2.pyx":238 * glVertexAttribPointer(index, 4, GL_FLOAT, GL_FALSE, 0, NULL) #px/ * #glVertexAttribPointer(index, 4, GL_FLOAT, GL_FALSE, 0, ctypes.cast(0, ctypes.c_void_p)) * glDisableVertexAttribArray(index) # <<<<<<<<<<<<<< * * ##pxm-FUNC PD nogil */ glDisableVertexAttribArray(__pyx_v_index); /* "_gldraw_es2.pyx":235 * * ##pxm-FUNC P nogil * cdef void _gl_disable_pointer(GLuint index) nogil: # <<<<<<<<<<<<<< * glVertexAttribPointer(index, 4, GL_FLOAT, GL_FALSE, 0, NULL) #px/ * #glVertexAttribPointer(index, 4, GL_FLOAT, GL_FALSE, 0, ctypes.cast(0, ctypes.c_void_p)) */ /* function exit code */ } /* "_gldraw_es2.pyx":241 * * ##pxm-FUNC PD nogil * cdef void sync_blocks(int nblocks, short *cnts_block, int idx_debug, int cnt_debug, int cnt_pick) nogil: # <<<<<<<<<<<<<< * cdef unsigned int idx_block, idx #px+ * cube.number_blocks = nblocks */ static void __pyx_f_11_gldraw_es2_sync_blocks(int __pyx_v_nblocks, short *__pyx_v_cnts_block, int __pyx_v_idx_debug, int __pyx_v_cnt_debug, int __pyx_v_cnt_pick) { unsigned int __pyx_v_idx_block; unsigned int __pyx_v_idx; unsigned int __pyx_t_1; unsigned int __pyx_t_2; /* "_gldraw_es2.pyx":243 * cdef void sync_blocks(int nblocks, short *cnts_block, int idx_debug, int cnt_debug, int cnt_pick) nogil: * cdef unsigned int idx_block, idx #px+ * cube.number_blocks = nblocks # <<<<<<<<<<<<<< * * idx_block = 0 */ __pyx_v_11_gldraw_es2_cube.number_blocks = __pyx_v_nblocks; /* "_gldraw_es2.pyx":245 * cube.number_blocks = nblocks * * idx_block = 0 # <<<<<<<<<<<<<< * for idx in range(cube.number_blocks): * cube.blocks[idx].idx_triangles = idx_block */ __pyx_v_idx_block = 0; /* "_gldraw_es2.pyx":246 * * idx_block = 0 * for idx in range(cube.number_blocks): # <<<<<<<<<<<<<< * cube.blocks[idx].idx_triangles = idx_block * cube.blocks[idx].cnt_triangles = cnts_block[idx] */ __pyx_t_1 = __pyx_v_11_gldraw_es2_cube.number_blocks; for (__pyx_t_2 = 0; __pyx_t_2 < __pyx_t_1; __pyx_t_2+=1) { __pyx_v_idx = __pyx_t_2; /* "_gldraw_es2.pyx":247 * idx_block = 0 * for idx in range(cube.number_blocks): * cube.blocks[idx].idx_triangles = idx_block # <<<<<<<<<<<<<< * cube.blocks[idx].cnt_triangles = cnts_block[idx] * idx_block += cnts_block[idx] */ (__pyx_v_11_gldraw_es2_cube.blocks[__pyx_v_idx]).idx_triangles = __pyx_v_idx_block; /* "_gldraw_es2.pyx":248 * for idx in range(cube.number_blocks): * cube.blocks[idx].idx_triangles = idx_block * cube.blocks[idx].cnt_triangles = cnts_block[idx] # <<<<<<<<<<<<<< * idx_block += cnts_block[idx] * */ (__pyx_v_11_gldraw_es2_cube.blocks[__pyx_v_idx]).cnt_triangles = (__pyx_v_cnts_block[__pyx_v_idx]); /* "_gldraw_es2.pyx":249 * cube.blocks[idx].idx_triangles = idx_block * cube.blocks[idx].cnt_triangles = cnts_block[idx] * idx_block += cnts_block[idx] # <<<<<<<<<<<<<< * * cube.cnt_pick = cnt_pick */ __pyx_v_idx_block = (__pyx_v_idx_block + (__pyx_v_cnts_block[__pyx_v_idx])); } /* "_gldraw_es2.pyx":251 * idx_block += cnts_block[idx] * * cube.cnt_pick = cnt_pick # <<<<<<<<<<<<<< * cube.idx_debug = idx_debug * cube.cnt_debug = cnt_debug */ __pyx_v_11_gldraw_es2_cube.cnt_pick = __pyx_v_cnt_pick; /* "_gldraw_es2.pyx":252 * * cube.cnt_pick = cnt_pick * cube.idx_debug = idx_debug # <<<<<<<<<<<<<< * cube.cnt_debug = cnt_debug * */ __pyx_v_11_gldraw_es2_cube.idx_debug = __pyx_v_idx_debug; /* "_gldraw_es2.pyx":253 * cube.cnt_pick = cnt_pick * cube.idx_debug = idx_debug * cube.cnt_debug = cnt_debug # <<<<<<<<<<<<<< * * ##pxm-FUNC PD nogil */ __pyx_v_11_gldraw_es2_cube.cnt_debug = __pyx_v_cnt_debug; /* "_gldraw_es2.pyx":241 * * ##pxm-FUNC PD nogil * cdef void sync_blocks(int nblocks, short *cnts_block, int idx_debug, int cnt_debug, int cnt_pick) nogil: # <<<<<<<<<<<<<< * cdef unsigned int idx_block, idx #px+ * cube.number_blocks = nblocks */ /* function exit code */ } /* "_gldraw_es2.pyx":256 * * ##pxm-FUNC PD nogil * cdef void sync_vertexdata(int vertexdatalen, char *vertexdata, long *vertexpointers) nogil: # <<<<<<<<<<<<<< * cube.vertexdatalen = vertexdatalen * cube.vertexdata = vertexdata */ static void __pyx_f_11_gldraw_es2_sync_vertexdata(int __pyx_v_vertexdatalen, char *__pyx_v_vertexdata, long *__pyx_v_vertexpointers) { /* "_gldraw_es2.pyx":257 * ##pxm-FUNC PD nogil * cdef void sync_vertexdata(int vertexdatalen, char *vertexdata, long *vertexpointers) nogil: * cube.vertexdatalen = vertexdatalen # <<<<<<<<<<<<<< * cube.vertexdata = vertexdata * cube.attrib_pointers[0] = 0 */ __pyx_v_11_gldraw_es2_cube.vertexdatalen = __pyx_v_vertexdatalen; /* "_gldraw_es2.pyx":258 * cdef void sync_vertexdata(int vertexdatalen, char *vertexdata, long *vertexpointers) nogil: * cube.vertexdatalen = vertexdatalen * cube.vertexdata = vertexdata # <<<<<<<<<<<<<< * cube.attrib_pointers[0] = 0 * cube.attrib_pointers[1] = vertexpointers[0] */ __pyx_v_11_gldraw_es2_cube.vertexdata = __pyx_v_vertexdata; /* "_gldraw_es2.pyx":259 * cube.vertexdatalen = vertexdatalen * cube.vertexdata = vertexdata * cube.attrib_pointers[0] = 0 # <<<<<<<<<<<<<< * cube.attrib_pointers[1] = vertexpointers[0] * cube.attrib_pointers[2] = vertexpointers[1] */ (__pyx_v_11_gldraw_es2_cube.attrib_pointers[0]) = 0; /* "_gldraw_es2.pyx":260 * cube.vertexdata = vertexdata * cube.attrib_pointers[0] = 0 * cube.attrib_pointers[1] = vertexpointers[0] # <<<<<<<<<<<<<< * cube.attrib_pointers[2] = vertexpointers[1] * cube.attrib_pointers[3] = vertexpointers[2] */ (__pyx_v_11_gldraw_es2_cube.attrib_pointers[1]) = (__pyx_v_vertexpointers[0]); /* "_gldraw_es2.pyx":261 * cube.attrib_pointers[0] = 0 * cube.attrib_pointers[1] = vertexpointers[0] * cube.attrib_pointers[2] = vertexpointers[1] # <<<<<<<<<<<<<< * cube.attrib_pointers[3] = vertexpointers[2] * cube.attrib_pointers[4] = vertexpointers[3] */ (__pyx_v_11_gldraw_es2_cube.attrib_pointers[2]) = (__pyx_v_vertexpointers[1]); /* "_gldraw_es2.pyx":262 * cube.attrib_pointers[1] = vertexpointers[0] * cube.attrib_pointers[2] = vertexpointers[1] * cube.attrib_pointers[3] = vertexpointers[2] # <<<<<<<<<<<<<< * cube.attrib_pointers[4] = vertexpointers[3] * cube.attrib_pointers[5] = vertexpointers[4] */ (__pyx_v_11_gldraw_es2_cube.attrib_pointers[3]) = (__pyx_v_vertexpointers[2]); /* "_gldraw_es2.pyx":263 * cube.attrib_pointers[2] = vertexpointers[1] * cube.attrib_pointers[3] = vertexpointers[2] * cube.attrib_pointers[4] = vertexpointers[3] # <<<<<<<<<<<<<< * cube.attrib_pointers[5] = vertexpointers[4] * cube.attrib_pointers[6] = vertexpointers[5] */ (__pyx_v_11_gldraw_es2_cube.attrib_pointers[4]) = (__pyx_v_vertexpointers[3]); /* "_gldraw_es2.pyx":264 * cube.attrib_pointers[3] = vertexpointers[2] * cube.attrib_pointers[4] = vertexpointers[3] * cube.attrib_pointers[5] = vertexpointers[4] # <<<<<<<<<<<<<< * cube.attrib_pointers[6] = vertexpointers[5] * */ (__pyx_v_11_gldraw_es2_cube.attrib_pointers[5]) = (__pyx_v_vertexpointers[4]); /* "_gldraw_es2.pyx":265 * cube.attrib_pointers[4] = vertexpointers[3] * cube.attrib_pointers[5] = vertexpointers[4] * cube.attrib_pointers[6] = vertexpointers[5] # <<<<<<<<<<<<<< * * ##pxm-FUNC PD nogil */ (__pyx_v_11_gldraw_es2_cube.attrib_pointers[6]) = (__pyx_v_vertexpointers[5]); /* "_gldraw_es2.pyx":256 * * ##pxm-FUNC PD nogil * cdef void sync_vertexdata(int vertexdatalen, char *vertexdata, long *vertexpointers) nogil: # <<<<<<<<<<<<<< * cube.vertexdatalen = vertexdatalen * cube.vertexdata = vertexdata */ /* function exit code */ } /* "_gldraw_es2.pyx":268 * * ##pxm-FUNC PD nogil * cdef void sync_transformations(int transformations_count, mat4 *transformations) nogil: # <<<<<<<<<<<<<< * cdef int t #px+ * cdef unsigned int i, j #px+ */ static void __pyx_f_11_gldraw_es2_sync_transformations(int __pyx_v_transformations_count, __pyx_t_11_gldraw_es2_mat4 *__pyx_v_transformations) { int __pyx_v_t; unsigned int __pyx_v_i; unsigned int __pyx_v_j; int __pyx_t_1; int __pyx_t_2; unsigned int __pyx_t_3; unsigned int __pyx_t_4; /* "_gldraw_es2.pyx":271 * cdef int t #px+ * cdef unsigned int i, j #px+ * for t in range(transformations_count): # <<<<<<<<<<<<<< * for i in range(4): * for j in range(4): */ __pyx_t_1 = __pyx_v_transformations_count; for (__pyx_t_2 = 0; __pyx_t_2 < __pyx_t_1; __pyx_t_2+=1) { __pyx_v_t = __pyx_t_2; /* "_gldraw_es2.pyx":272 * cdef unsigned int i, j #px+ * for t in range(transformations_count): * for i in range(4): # <<<<<<<<<<<<<< * for j in range(4): * cube.transformations[t][i][j] = float(transformations[t][i][j]) */ for (__pyx_t_3 = 0; __pyx_t_3 < 4; __pyx_t_3+=1) { __pyx_v_i = __pyx_t_3; /* "_gldraw_es2.pyx":273 * for t in range(transformations_count): * for i in range(4): * for j in range(4): # <<<<<<<<<<<<<< * cube.transformations[t][i][j] = float(transformations[t][i][j]) * */ for (__pyx_t_4 = 0; __pyx_t_4 < 4; __pyx_t_4+=1) { __pyx_v_j = __pyx_t_4; /* "_gldraw_es2.pyx":274 * for i in range(4): * for j in range(4): * cube.transformations[t][i][j] = float(transformations[t][i][j]) # <<<<<<<<<<<<<< * * ##pxm-FUNC PD nogil */ (((__pyx_v_11_gldraw_es2_cube.transformations[__pyx_v_t])[__pyx_v_i])[__pyx_v_j]) = ((double)(((__pyx_v_transformations[__pyx_v_t])[__pyx_v_i])[__pyx_v_j])); } } } /* "_gldraw_es2.pyx":268 * * ##pxm-FUNC PD nogil * cdef void sync_transformations(int transformations_count, mat4 *transformations) nogil: # <<<<<<<<<<<<<< * cdef int t #px+ * cdef unsigned int i, j #px+ */ /* function exit code */ } /* "_gldraw_es2.pyx":277 * * ##pxm-FUNC PD nogil * cdef void gl_enable_data() nogil: # <<<<<<<<<<<<<< * glBindBuffer(GL_ARRAY_BUFFER, cube.glbuffer) * glBufferData(GL_ARRAY_BUFFER, cube.vertexdatalen, cube.vertexdata, GL_STATIC_DRAW) */ static void __pyx_f_11_gldraw_es2_gl_enable_data(void) { /* "_gldraw_es2.pyx":278 * ##pxm-FUNC PD nogil * cdef void gl_enable_data() nogil: * glBindBuffer(GL_ARRAY_BUFFER, cube.glbuffer) # <<<<<<<<<<<<<< * glBufferData(GL_ARRAY_BUFFER, cube.vertexdatalen, cube.vertexdata, GL_STATIC_DRAW) * */ glBindBuffer(GL_ARRAY_BUFFER, __pyx_v_11_gldraw_es2_cube.glbuffer); /* "_gldraw_es2.pyx":279 * cdef void gl_enable_data() nogil: * glBindBuffer(GL_ARRAY_BUFFER, cube.glbuffer) * glBufferData(GL_ARRAY_BUFFER, cube.vertexdatalen, cube.vertexdata, GL_STATIC_DRAW) # <<<<<<<<<<<<<< * * _gl_enable_pointer(ATTRIB_LOCATION, 3, GL_FLOAT, GL_FALSE, cube.attrib_pointers[0]) */ glBufferData(GL_ARRAY_BUFFER, __pyx_v_11_gldraw_es2_cube.vertexdatalen, __pyx_v_11_gldraw_es2_cube.vertexdata, GL_STATIC_DRAW); /* "_gldraw_es2.pyx":281 * glBufferData(GL_ARRAY_BUFFER, cube.vertexdatalen, cube.vertexdata, GL_STATIC_DRAW) * * _gl_enable_pointer(ATTRIB_LOCATION, 3, GL_FLOAT, GL_FALSE, cube.attrib_pointers[0]) # <<<<<<<<<<<<<< * _gl_enable_pointer(ATTRIB_LOCATION+1, 3, GL_FLOAT, GL_FALSE, cube.attrib_pointers[1]) * _gl_enable_pointer(ATTRIB_LOCATION+2, 3, GL_UNSIGNED_BYTE, GL_TRUE, cube.attrib_pointers[2]) */ __pyx_f_11_gldraw_es2__gl_enable_pointer(__pyx_e_11_gldraw_es2_ATTRIB_LOCATION, 3, GL_FLOAT, GL_FALSE, (__pyx_v_11_gldraw_es2_cube.attrib_pointers[0])); /* "_gldraw_es2.pyx":282 * * _gl_enable_pointer(ATTRIB_LOCATION, 3, GL_FLOAT, GL_FALSE, cube.attrib_pointers[0]) * _gl_enable_pointer(ATTRIB_LOCATION+1, 3, GL_FLOAT, GL_FALSE, cube.attrib_pointers[1]) # <<<<<<<<<<<<<< * _gl_enable_pointer(ATTRIB_LOCATION+2, 3, GL_UNSIGNED_BYTE, GL_TRUE, cube.attrib_pointers[2]) * _gl_enable_pointer(ATTRIB_LOCATION+3, 2, GL_FLOAT, GL_FALSE, cube.attrib_pointers[3]) */ __pyx_f_11_gldraw_es2__gl_enable_pointer((__pyx_e_11_gldraw_es2_ATTRIB_LOCATION + 1), 3, GL_FLOAT, GL_FALSE, (__pyx_v_11_gldraw_es2_cube.attrib_pointers[1])); /* "_gldraw_es2.pyx":283 * _gl_enable_pointer(ATTRIB_LOCATION, 3, GL_FLOAT, GL_FALSE, cube.attrib_pointers[0]) * _gl_enable_pointer(ATTRIB_LOCATION+1, 3, GL_FLOAT, GL_FALSE, cube.attrib_pointers[1]) * _gl_enable_pointer(ATTRIB_LOCATION+2, 3, GL_UNSIGNED_BYTE, GL_TRUE, cube.attrib_pointers[2]) # <<<<<<<<<<<<<< * _gl_enable_pointer(ATTRIB_LOCATION+3, 2, GL_FLOAT, GL_FALSE, cube.attrib_pointers[3]) * _gl_enable_pointer(ATTRIB_LOCATION+4, 3, GL_FLOAT, GL_FALSE, cube.attrib_pointers[4]) */ __pyx_f_11_gldraw_es2__gl_enable_pointer((__pyx_e_11_gldraw_es2_ATTRIB_LOCATION + 2), 3, GL_UNSIGNED_BYTE, GL_TRUE, (__pyx_v_11_gldraw_es2_cube.attrib_pointers[2])); /* "_gldraw_es2.pyx":284 * _gl_enable_pointer(ATTRIB_LOCATION+1, 3, GL_FLOAT, GL_FALSE, cube.attrib_pointers[1]) * _gl_enable_pointer(ATTRIB_LOCATION+2, 3, GL_UNSIGNED_BYTE, GL_TRUE, cube.attrib_pointers[2]) * _gl_enable_pointer(ATTRIB_LOCATION+3, 2, GL_FLOAT, GL_FALSE, cube.attrib_pointers[3]) # <<<<<<<<<<<<<< * _gl_enable_pointer(ATTRIB_LOCATION+4, 3, GL_FLOAT, GL_FALSE, cube.attrib_pointers[4]) * _gl_enable_pointer(PICKATTRIB_LOCATION, 3, GL_FLOAT, GL_FALSE, cube.attrib_pointers[5]) */ __pyx_f_11_gldraw_es2__gl_enable_pointer((__pyx_e_11_gldraw_es2_ATTRIB_LOCATION + 3), 2, GL_FLOAT, GL_FALSE, (__pyx_v_11_gldraw_es2_cube.attrib_pointers[3])); /* "_gldraw_es2.pyx":285 * _gl_enable_pointer(ATTRIB_LOCATION+2, 3, GL_UNSIGNED_BYTE, GL_TRUE, cube.attrib_pointers[2]) * _gl_enable_pointer(ATTRIB_LOCATION+3, 2, GL_FLOAT, GL_FALSE, cube.attrib_pointers[3]) * _gl_enable_pointer(ATTRIB_LOCATION+4, 3, GL_FLOAT, GL_FALSE, cube.attrib_pointers[4]) # <<<<<<<<<<<<<< * _gl_enable_pointer(PICKATTRIB_LOCATION, 3, GL_FLOAT, GL_FALSE, cube.attrib_pointers[5]) * _gl_enable_pointer(PICKATTRIB_LOCATION+1, 3, GL_UNSIGNED_BYTE, GL_TRUE, cube.attrib_pointers[6]) */ __pyx_f_11_gldraw_es2__gl_enable_pointer((__pyx_e_11_gldraw_es2_ATTRIB_LOCATION + 4), 3, GL_FLOAT, GL_FALSE, (__pyx_v_11_gldraw_es2_cube.attrib_pointers[4])); /* "_gldraw_es2.pyx":286 * _gl_enable_pointer(ATTRIB_LOCATION+3, 2, GL_FLOAT, GL_FALSE, cube.attrib_pointers[3]) * _gl_enable_pointer(ATTRIB_LOCATION+4, 3, GL_FLOAT, GL_FALSE, cube.attrib_pointers[4]) * _gl_enable_pointer(PICKATTRIB_LOCATION, 3, GL_FLOAT, GL_FALSE, cube.attrib_pointers[5]) # <<<<<<<<<<<<<< * _gl_enable_pointer(PICKATTRIB_LOCATION+1, 3, GL_UNSIGNED_BYTE, GL_TRUE, cube.attrib_pointers[6]) * */ __pyx_f_11_gldraw_es2__gl_enable_pointer(__pyx_e_11_gldraw_es2_PICKATTRIB_LOCATION, 3, GL_FLOAT, GL_FALSE, (__pyx_v_11_gldraw_es2_cube.attrib_pointers[5])); /* "_gldraw_es2.pyx":287 * _gl_enable_pointer(ATTRIB_LOCATION+4, 3, GL_FLOAT, GL_FALSE, cube.attrib_pointers[4]) * _gl_enable_pointer(PICKATTRIB_LOCATION, 3, GL_FLOAT, GL_FALSE, cube.attrib_pointers[5]) * _gl_enable_pointer(PICKATTRIB_LOCATION+1, 3, GL_UNSIGNED_BYTE, GL_TRUE, cube.attrib_pointers[6]) # <<<<<<<<<<<<<< * * ##pxm-FUNC PD nogil */ __pyx_f_11_gldraw_es2__gl_enable_pointer((__pyx_e_11_gldraw_es2_PICKATTRIB_LOCATION + 1), 3, GL_UNSIGNED_BYTE, GL_TRUE, (__pyx_v_11_gldraw_es2_cube.attrib_pointers[6])); /* "_gldraw_es2.pyx":277 * * ##pxm-FUNC PD nogil * cdef void gl_enable_data() nogil: # <<<<<<<<<<<<<< * glBindBuffer(GL_ARRAY_BUFFER, cube.glbuffer) * glBufferData(GL_ARRAY_BUFFER, cube.vertexdatalen, cube.vertexdata, GL_STATIC_DRAW) */ /* function exit code */ } /* "_gldraw_es2.pyx":290 * * ##pxm-FUNC PD nogil * cdef void gl_disable_data() nogil: # <<<<<<<<<<<<<< * glBindBuffer(GL_ARRAY_BUFFER, 0) * _gl_disable_pointer(ATTRIB_LOCATION) */ static void __pyx_f_11_gldraw_es2_gl_disable_data(void) { /* "_gldraw_es2.pyx":291 * ##pxm-FUNC PD nogil * cdef void gl_disable_data() nogil: * glBindBuffer(GL_ARRAY_BUFFER, 0) # <<<<<<<<<<<<<< * _gl_disable_pointer(ATTRIB_LOCATION) * _gl_disable_pointer(ATTRIB_LOCATION+1) */ glBindBuffer(GL_ARRAY_BUFFER, 0); /* "_gldraw_es2.pyx":292 * cdef void gl_disable_data() nogil: * glBindBuffer(GL_ARRAY_BUFFER, 0) * _gl_disable_pointer(ATTRIB_LOCATION) # <<<<<<<<<<<<<< * _gl_disable_pointer(ATTRIB_LOCATION+1) * _gl_disable_pointer(ATTRIB_LOCATION+2) */ __pyx_f_11_gldraw_es2__gl_disable_pointer(__pyx_e_11_gldraw_es2_ATTRIB_LOCATION); /* "_gldraw_es2.pyx":293 * glBindBuffer(GL_ARRAY_BUFFER, 0) * _gl_disable_pointer(ATTRIB_LOCATION) * _gl_disable_pointer(ATTRIB_LOCATION+1) # <<<<<<<<<<<<<< * _gl_disable_pointer(ATTRIB_LOCATION+2) * _gl_disable_pointer(ATTRIB_LOCATION+3) */ __pyx_f_11_gldraw_es2__gl_disable_pointer((__pyx_e_11_gldraw_es2_ATTRIB_LOCATION + 1)); /* "_gldraw_es2.pyx":294 * _gl_disable_pointer(ATTRIB_LOCATION) * _gl_disable_pointer(ATTRIB_LOCATION+1) * _gl_disable_pointer(ATTRIB_LOCATION+2) # <<<<<<<<<<<<<< * _gl_disable_pointer(ATTRIB_LOCATION+3) * _gl_disable_pointer(ATTRIB_LOCATION+4) */ __pyx_f_11_gldraw_es2__gl_disable_pointer((__pyx_e_11_gldraw_es2_ATTRIB_LOCATION + 2)); /* "_gldraw_es2.pyx":295 * _gl_disable_pointer(ATTRIB_LOCATION+1) * _gl_disable_pointer(ATTRIB_LOCATION+2) * _gl_disable_pointer(ATTRIB_LOCATION+3) # <<<<<<<<<<<<<< * _gl_disable_pointer(ATTRIB_LOCATION+4) * _gl_disable_pointer(PICKATTRIB_LOCATION) */ __pyx_f_11_gldraw_es2__gl_disable_pointer((__pyx_e_11_gldraw_es2_ATTRIB_LOCATION + 3)); /* "_gldraw_es2.pyx":296 * _gl_disable_pointer(ATTRIB_LOCATION+2) * _gl_disable_pointer(ATTRIB_LOCATION+3) * _gl_disable_pointer(ATTRIB_LOCATION+4) # <<<<<<<<<<<<<< * _gl_disable_pointer(PICKATTRIB_LOCATION) * _gl_disable_pointer(PICKATTRIB_LOCATION+1) */ __pyx_f_11_gldraw_es2__gl_disable_pointer((__pyx_e_11_gldraw_es2_ATTRIB_LOCATION + 4)); /* "_gldraw_es2.pyx":297 * _gl_disable_pointer(ATTRIB_LOCATION+3) * _gl_disable_pointer(ATTRIB_LOCATION+4) * _gl_disable_pointer(PICKATTRIB_LOCATION) # <<<<<<<<<<<<<< * _gl_disable_pointer(PICKATTRIB_LOCATION+1) * */ __pyx_f_11_gldraw_es2__gl_disable_pointer(__pyx_e_11_gldraw_es2_PICKATTRIB_LOCATION); /* "_gldraw_es2.pyx":298 * _gl_disable_pointer(ATTRIB_LOCATION+4) * _gl_disable_pointer(PICKATTRIB_LOCATION) * _gl_disable_pointer(PICKATTRIB_LOCATION+1) # <<<<<<<<<<<<<< * * ##pxm-FUNC PD nogil */ __pyx_f_11_gldraw_es2__gl_disable_pointer((__pyx_e_11_gldraw_es2_PICKATTRIB_LOCATION + 1)); /* "_gldraw_es2.pyx":290 * * ##pxm-FUNC PD nogil * cdef void gl_disable_data() nogil: # <<<<<<<<<<<<<< * glBindBuffer(GL_ARRAY_BUFFER, 0) * _gl_disable_pointer(ATTRIB_LOCATION) */ /* function exit code */ } /* "_gldraw_es2.pyx":301 * * ##pxm-FUNC PD nogil * cdef void gl_draw_cube_debug() nogil: # <<<<<<<<<<<<<< * cdef mat4 object_matrix #px/ * #object_matrix = mat4() */ static void __pyx_f_11_gldraw_es2_gl_draw_cube_debug(void) { __pyx_t_11_gldraw_es2_mat4 __pyx_v_object_matrix; /* "_gldraw_es2.pyx":304 * cdef mat4 object_matrix #px/ * #object_matrix = mat4() * matrix_set_identity(object_matrix) # <<<<<<<<<<<<<< * glUniformMatrix4fv(cube.object_location, 1, GL_FALSE, &object_matrix[0][0]) #px/ * #glUniformMatrix4fv(cube.object_location, 1, GL_FALSE, object_matrix) */ __pyx_f_11_gldraw_es2_matrix_set_identity(__pyx_v_object_matrix); /* "_gldraw_es2.pyx":305 * #object_matrix = mat4() * matrix_set_identity(object_matrix) * glUniformMatrix4fv(cube.object_location, 1, GL_FALSE, &object_matrix[0][0]) #px/ # <<<<<<<<<<<<<< * #glUniformMatrix4fv(cube.object_location, 1, GL_FALSE, object_matrix) * glDrawArrays(GL_LINES, cube.idx_debug, cube.cnt_debug) */ glUniformMatrix4fv(__pyx_v_11_gldraw_es2_cube.object_location, 1, GL_FALSE, (&((__pyx_v_object_matrix[0])[0]))); /* "_gldraw_es2.pyx":307 * glUniformMatrix4fv(cube.object_location, 1, GL_FALSE, &object_matrix[0][0]) #px/ * #glUniformMatrix4fv(cube.object_location, 1, GL_FALSE, object_matrix) * glDrawArrays(GL_LINES, cube.idx_debug, cube.cnt_debug) # <<<<<<<<<<<<<< * * ##pxm-FUNC PD nogil */ glDrawArrays(GL_LINES, __pyx_v_11_gldraw_es2_cube.idx_debug, __pyx_v_11_gldraw_es2_cube.cnt_debug); /* "_gldraw_es2.pyx":301 * * ##pxm-FUNC PD nogil * cdef void gl_draw_cube_debug() nogil: # <<<<<<<<<<<<<< * cdef mat4 object_matrix #px/ * #object_matrix = mat4() */ /* function exit code */ } /* "_gldraw_es2.pyx":310 * * ##pxm-FUNC PD nogil * cdef void gl_draw_select_debug(GLfloat *selectdata, GLsizeiptr size, GLuint prog_hud) nogil: # <<<<<<<<<<<<<< * cdef int i, j #px+ * cdef GLintptr offset #px+ */ static void __pyx_f_11_gldraw_es2_gl_draw_select_debug(GLfloat *__pyx_v_selectdata, GLsizeiptr __pyx_v_size, GLuint __pyx_v_prog_hud) { GLintptr __pyx_v_offset; int __pyx_t_1; /* "_gldraw_es2.pyx":313 * cdef int i, j #px+ * cdef GLintptr offset #px+ * if cube.cnt_debug == 0: # <<<<<<<<<<<<<< * #XXX: The data used here has fixed size, but may not be initialized yet * return */ __pyx_t_1 = ((__pyx_v_11_gldraw_es2_cube.cnt_debug == 0) != 0); if (__pyx_t_1) { /* "_gldraw_es2.pyx":315 * if cube.cnt_debug == 0: * #XXX: The data used here has fixed size, but may not be initialized yet * return # <<<<<<<<<<<<<< * offset = (cube.idx_debug+cube.cnt_debug) * 3 * sizeof(GLfloat) * glBufferSubData(GL_ARRAY_BUFFER, offset, size, &selectdata[0]) #px/ */ goto __pyx_L0; /* "_gldraw_es2.pyx":313 * cdef int i, j #px+ * cdef GLintptr offset #px+ * if cube.cnt_debug == 0: # <<<<<<<<<<<<<< * #XXX: The data used here has fixed size, but may not be initialized yet * return */ } /* "_gldraw_es2.pyx":316 * #XXX: The data used here has fixed size, but may not be initialized yet * return * offset = (cube.idx_debug+cube.cnt_debug) * 3 * sizeof(GLfloat) # <<<<<<<<<<<<<< * glBufferSubData(GL_ARRAY_BUFFER, offset, size, &selectdata[0]) #px/ * #glBufferSubData(GL_ARRAY_BUFFER, offset, len(selectdata) * sizeof(GLfloat), ArrayDatatype.asArray(selectdata, GL_FLOAT)) */ __pyx_v_offset = (((__pyx_v_11_gldraw_es2_cube.idx_debug + __pyx_v_11_gldraw_es2_cube.cnt_debug) * 3) * (sizeof(GLfloat))); /* "_gldraw_es2.pyx":317 * return * offset = (cube.idx_debug+cube.cnt_debug) * 3 * sizeof(GLfloat) * glBufferSubData(GL_ARRAY_BUFFER, offset, size, &selectdata[0]) #px/ # <<<<<<<<<<<<<< * #glBufferSubData(GL_ARRAY_BUFFER, offset, len(selectdata) * sizeof(GLfloat), ArrayDatatype.asArray(selectdata, GL_FLOAT)) * */ glBufferSubData(GL_ARRAY_BUFFER, __pyx_v_offset, __pyx_v_size, (&(__pyx_v_selectdata[0]))); /* "_gldraw_es2.pyx":320 * #glBufferSubData(GL_ARRAY_BUFFER, offset, len(selectdata) * sizeof(GLfloat), ArrayDatatype.asArray(selectdata, GL_FLOAT)) * * glDisable(GL_DEPTH_TEST) # <<<<<<<<<<<<<< * glDrawArrays(GL_LINES, cube.idx_debug+cube.cnt_debug, 2) * glUseProgram(prog_hud) */ glDisable(GL_DEPTH_TEST); /* "_gldraw_es2.pyx":321 * * glDisable(GL_DEPTH_TEST) * glDrawArrays(GL_LINES, cube.idx_debug+cube.cnt_debug, 2) # <<<<<<<<<<<<<< * glUseProgram(prog_hud) * glDrawArrays(GL_POINTS, cube.idx_debug+cube.cnt_debug+2, 2) */ glDrawArrays(GL_LINES, (__pyx_v_11_gldraw_es2_cube.idx_debug + __pyx_v_11_gldraw_es2_cube.cnt_debug), 2); /* "_gldraw_es2.pyx":322 * glDisable(GL_DEPTH_TEST) * glDrawArrays(GL_LINES, cube.idx_debug+cube.cnt_debug, 2) * glUseProgram(prog_hud) # <<<<<<<<<<<<<< * glDrawArrays(GL_POINTS, cube.idx_debug+cube.cnt_debug+2, 2) * */ glUseProgram(__pyx_v_prog_hud); /* "_gldraw_es2.pyx":323 * glDrawArrays(GL_LINES, cube.idx_debug+cube.cnt_debug, 2) * glUseProgram(prog_hud) * glDrawArrays(GL_POINTS, cube.idx_debug+cube.cnt_debug+2, 2) # <<<<<<<<<<<<<< * * ##pxm-FUNC PD nogil */ glDrawArrays(GL_POINTS, ((__pyx_v_11_gldraw_es2_cube.idx_debug + __pyx_v_11_gldraw_es2_cube.cnt_debug) + 2), 2); /* "_gldraw_es2.pyx":310 * * ##pxm-FUNC PD nogil * cdef void gl_draw_select_debug(GLfloat *selectdata, GLsizeiptr size, GLuint prog_hud) nogil: # <<<<<<<<<<<<<< * cdef int i, j #px+ * cdef GLintptr offset #px+ */ /* function exit code */ __pyx_L0:; } /* "_gldraw_es2.pyx":326 * * ##pxm-FUNC PD nogil * cdef void gl_init_object_location(GLuint location) nogil: # <<<<<<<<<<<<<< * cube.object_location = location * */ static void __pyx_f_11_gldraw_es2_gl_init_object_location(GLuint __pyx_v_location) { /* "_gldraw_es2.pyx":327 * ##pxm-FUNC PD nogil * cdef void gl_init_object_location(GLuint location) nogil: * cube.object_location = location # <<<<<<<<<<<<<< * * */ __pyx_v_11_gldraw_es2_cube.object_location = __pyx_v_location; /* "_gldraw_es2.pyx":326 * * ##pxm-FUNC PD nogil * cdef void gl_init_object_location(GLuint location) nogil: # <<<<<<<<<<<<<< * cube.object_location = location * */ /* function exit code */ } static PyMethodDef __pyx_methods[] = { {0, 0, 0, 0} }; #if PY_MAJOR_VERSION >= 3 static struct PyModuleDef __pyx_moduledef = { #if PY_VERSION_HEX < 0x03020000 { PyObject_HEAD_INIT(NULL) NULL, 0, NULL }, #else PyModuleDef_HEAD_INIT, #endif "_gldraw_es2", 0, /* m_doc */ -1, /* m_size */ __pyx_methods /* m_methods */, NULL, /* m_reload */ NULL, /* m_traverse */ NULL, /* m_clear */ NULL /* m_free */ }; #endif static __Pyx_StringTabEntry __pyx_string_tab[] = { {&__pyx_n_s_DEBUG_MSGEXT, __pyx_k_DEBUG_MSGEXT, sizeof(__pyx_k_DEBUG_MSGEXT), 0, 0, 1, 1}, {&__pyx_kp_u_GL_type_es2, __pyx_k_GL_type_es2, sizeof(__pyx_k_GL_type_es2), 0, 1, 0, 0}, {&__pyx_kp_u_compiled, __pyx_k_compiled, sizeof(__pyx_k_compiled), 0, 1, 0, 0}, {&__pyx_n_s_compiled_2, __pyx_k_compiled_2, sizeof(__pyx_k_compiled_2), 0, 0, 1, 1}, {&__pyx_kp_u_from_package, __pyx_k_from_package, sizeof(__pyx_k_from_package), 0, 1, 0, 0}, {&__pyx_n_s_gldraw_es2, __pyx_k_gldraw_es2, sizeof(__pyx_k_gldraw_es2), 0, 0, 1, 1}, {&__pyx_kp_s_tmp, __pyx_k_tmp, sizeof(__pyx_k_tmp), 0, 0, 1, 0}, {&__pyx_kp_u_init_module, __pyx_k_init_module, sizeof(__pyx_k_init_module), 0, 1, 0, 0}, {&__pyx_n_s_main, __pyx_k_main, sizeof(__pyx_k_main), 0, 0, 1, 1}, {&__pyx_n_s_module, __pyx_k_module, sizeof(__pyx_k_module), 0, 0, 1, 1}, {&__pyx_n_s_name, __pyx_k_name, sizeof(__pyx_k_name), 0, 0, 1, 1}, {&__pyx_n_s_package, __pyx_k_package, sizeof(__pyx_k_package), 0, 0, 1, 1}, {&__pyx_n_s_print, __pyx_k_print, sizeof(__pyx_k_print), 0, 0, 1, 1}, {&__pyx_n_s_range, __pyx_k_range, sizeof(__pyx_k_range), 0, 0, 1, 1}, {&__pyx_n_s_set_debug_flags, __pyx_k_set_debug_flags, sizeof(__pyx_k_set_debug_flags), 0, 0, 1, 1}, {&__pyx_n_s_test, __pyx_k_test, sizeof(__pyx_k_test), 0, 0, 1, 1}, {0, 0, 0, 0, 0, 0, 0} }; static int __Pyx_InitCachedBuiltins(void) { __pyx_builtin_print = __Pyx_GetBuiltinName(__pyx_n_s_print); if (!__pyx_builtin_print) __PYX_ERR(0, 139, __pyx_L1_error) __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) __PYX_ERR(0, 153, __pyx_L1_error) return 0; __pyx_L1_error:; return -1; } static int __Pyx_InitCachedConstants(void) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0); /* "_gldraw_es2.pyx":142 * print(' from package:', __package__) * print(' compiled:', __compiled) * print(' GL-type: es2') #px+ # <<<<<<<<<<<<<< * cube.number_blocks = 0 * cube.cnt_pick = 0 */ __pyx_tuple_ = PyTuple_Pack(1, __pyx_kp_u_GL_type_es2); if (unlikely(!__pyx_tuple_)) __PYX_ERR(0, 142, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple_); __Pyx_GIVEREF(__pyx_tuple_); /* "_gldraw_es2.pyx":60 * debug = 0 * * def set_debug_flags(module): # <<<<<<<<<<<<<< * global debug * if module.DEBUG_MSGEXT: debug |= DEBUG_MSGEXT */ __pyx_tuple__2 = PyTuple_Pack(1, __pyx_n_s_module); if (unlikely(!__pyx_tuple__2)) __PYX_ERR(0, 60, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__2); __Pyx_GIVEREF(__pyx_tuple__2); __pyx_codeobj__3 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__2, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_set_debug_flags, 60, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__3)) __PYX_ERR(0, 60, __pyx_L1_error) __Pyx_RefNannyFinishContext(); return 0; __pyx_L1_error:; __Pyx_RefNannyFinishContext(); return -1; } static int __Pyx_InitGlobals(void) { if (__Pyx_InitStrings(__pyx_string_tab) < 0) __PYX_ERR(0, 1, __pyx_L1_error); return 0; __pyx_L1_error:; return -1; } #if PY_MAJOR_VERSION < 3 PyMODINIT_FUNC init_gldraw_es2(void); /*proto*/ PyMODINIT_FUNC init_gldraw_es2(void) #else PyMODINIT_FUNC PyInit__gldraw_es2(void); /*proto*/ PyMODINIT_FUNC PyInit__gldraw_es2(void) #endif { PyObject *__pyx_t_1 = NULL; __Pyx_RefNannyDeclarations #if CYTHON_REFNANNY __Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny"); if (!__Pyx_RefNanny) { PyErr_Clear(); __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny"); if (!__Pyx_RefNanny) Py_FatalError("failed to import 'refnanny' module"); } #endif __Pyx_RefNannySetupContext("PyMODINIT_FUNC PyInit__gldraw_es2(void)", 0); if (__Pyx_check_binary_version() < 0) __PYX_ERR(0, 1, __pyx_L1_error) __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(0, 1, __pyx_L1_error) __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(0, 1, __pyx_L1_error) __pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(0, 1, __pyx_L1_error) #ifdef __Pyx_CyFunction_USED if (__pyx_CyFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #endif #ifdef __Pyx_FusedFunction_USED if (__pyx_FusedFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #endif #ifdef __Pyx_Coroutine_USED if (__pyx_Coroutine_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #endif #ifdef __Pyx_Generator_USED if (__pyx_Generator_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #endif #ifdef __Pyx_StopAsyncIteration_USED if (__pyx_StopAsyncIteration_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #endif /*--- Library function declarations ---*/ /*--- Threads initialization code ---*/ #if defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS #ifdef WITH_THREAD /* Python build with threading support? */ PyEval_InitThreads(); #endif #endif /*--- Module creation code ---*/ #if PY_MAJOR_VERSION < 3 __pyx_m = Py_InitModule4("_gldraw_es2", __pyx_methods, 0, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m); #else __pyx_m = PyModule_Create(&__pyx_moduledef); #endif if (unlikely(!__pyx_m)) __PYX_ERR(0, 1, __pyx_L1_error) __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) __PYX_ERR(0, 1, __pyx_L1_error) Py_INCREF(__pyx_d); __pyx_b = PyImport_AddModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_b)) __PYX_ERR(0, 1, __pyx_L1_error) #if CYTHON_COMPILING_IN_PYPY Py_INCREF(__pyx_b); #endif if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) __PYX_ERR(0, 1, __pyx_L1_error); /*--- Initialize various global constants etc. ---*/ if (__Pyx_InitGlobals() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #if PY_MAJOR_VERSION < 3 && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT) if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #endif if (__pyx_module_is_main__gldraw_es2) { if (PyObject_SetAttrString(__pyx_m, "__name__", __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error) } #if PY_MAJOR_VERSION >= 3 { PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(0, 1, __pyx_L1_error) if (!PyDict_GetItemString(modules, "_gldraw_es2")) { if (unlikely(PyDict_SetItemString(modules, "_gldraw_es2", __pyx_m) < 0)) __PYX_ERR(0, 1, __pyx_L1_error) } } #endif /*--- Builtin init code ---*/ if (__Pyx_InitCachedBuiltins() < 0) __PYX_ERR(0, 1, __pyx_L1_error) /*--- Constants init code ---*/ if (__Pyx_InitCachedConstants() < 0) __PYX_ERR(0, 1, __pyx_L1_error) /*--- Global init code ---*/ /*--- Variable export code ---*/ /*--- Function export code ---*/ if (__Pyx_ExportFunction("matrix_set_identity", (void (*)(void))__pyx_f_11_gldraw_es2_matrix_set_identity, "void (__pyx_t_11_gldraw_es2_vec4 *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("init_gldraw", (void (*)(void))__pyx_f_11_gldraw_es2_init_gldraw, "void (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("sync_block_transformations", (void (*)(void))__pyx_f_11_gldraw_es2_sync_block_transformations, "void (short *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("sync_animation_start", (void (*)(void))__pyx_f_11_gldraw_es2_sync_animation_start, "void (int, short *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("sync_animation_next", (void (*)(void))__pyx_f_11_gldraw_es2_sync_animation_next, "void (float, float, float, float)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("gl_draw_cube", (void (*)(void))__pyx_f_11_gldraw_es2_gl_draw_cube, "void (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("gl_pick_cube", (void (*)(void))__pyx_f_11_gldraw_es2_gl_pick_cube, "void (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("gl_init_buffers", (void (*)(void))__pyx_f_11_gldraw_es2_gl_init_buffers, "void (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("gl_delete_buffers", (void (*)(void))__pyx_f_11_gldraw_es2_gl_delete_buffers, "void (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("sync_blocks", (void (*)(void))__pyx_f_11_gldraw_es2_sync_blocks, "void (int, short *, int, int, int)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("sync_vertexdata", (void (*)(void))__pyx_f_11_gldraw_es2_sync_vertexdata, "void (int, char *, long *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("sync_transformations", (void (*)(void))__pyx_f_11_gldraw_es2_sync_transformations, "void (int, __pyx_t_11_gldraw_es2_mat4 *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("gl_enable_data", (void (*)(void))__pyx_f_11_gldraw_es2_gl_enable_data, "void (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("gl_disable_data", (void (*)(void))__pyx_f_11_gldraw_es2_gl_disable_data, "void (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("gl_draw_cube_debug", (void (*)(void))__pyx_f_11_gldraw_es2_gl_draw_cube_debug, "void (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("gl_draw_select_debug", (void (*)(void))__pyx_f_11_gldraw_es2_gl_draw_select_debug, "void (GLfloat *, GLsizeiptr, GLuint)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("gl_init_object_location", (void (*)(void))__pyx_f_11_gldraw_es2_gl_init_object_location, "void (GLuint)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) /*--- Type init code ---*/ /*--- Type import code ---*/ /*--- Variable import code ---*/ /*--- Function import code ---*/ /*--- Execution code ---*/ #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) if (__Pyx_patch_abc() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #endif /* "_gldraw_es2.pyx":25 * # This line makes cython happy * global __name__, __package__ # pylint: disable=W0604 * __compiled = True #px/ # <<<<<<<<<<<<<< * #__compiled = False * */ if (PyDict_SetItem(__pyx_d, __pyx_n_s_compiled_2, Py_True) < 0) __PYX_ERR(0, 25, __pyx_L1_error) /* "_gldraw_es2.pyx":58 * DEBUG_MSGEXT = 8 * cdef long debug #px+ * debug = 0 # <<<<<<<<<<<<<< * * def set_debug_flags(module): */ __pyx_v_11_gldraw_es2_debug = 0; /* "_gldraw_es2.pyx":60 * debug = 0 * * def set_debug_flags(module): # <<<<<<<<<<<<<< * global debug * if module.DEBUG_MSGEXT: debug |= DEBUG_MSGEXT */ __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_11_gldraw_es2_1set_debug_flags, NULL, __pyx_n_s_gldraw_es2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 60, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_d, __pyx_n_s_set_debug_flags, __pyx_t_1) < 0) __PYX_ERR(0, 60, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_gldraw_es2.pyx":1 * #-*- coding:utf-8 -*- # <<<<<<<<<<<<<< * # cython: profile=False * */ __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_1) < 0) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /*--- Wrapped vars code ---*/ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); if (__pyx_m) { if (__pyx_d) { __Pyx_AddTraceback("init _gldraw_es2", __pyx_clineno, __pyx_lineno, __pyx_filename); } Py_DECREF(__pyx_m); __pyx_m = 0; } else if (!PyErr_Occurred()) { PyErr_SetString(PyExc_ImportError, "init _gldraw_es2"); } __pyx_L0:; __Pyx_RefNannyFinishContext(); #if PY_MAJOR_VERSION < 3 return; #else return __pyx_m; #endif } /* --- Runtime support code --- */ /* Refnanny */ #if CYTHON_REFNANNY static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) { PyObject *m = NULL, *p = NULL; void *r = NULL; m = PyImport_ImportModule((char *)modname); if (!m) goto end; p = PyObject_GetAttrString(m, (char *)"RefNannyAPI"); if (!p) goto end; r = PyLong_AsVoidPtr(p); end: Py_XDECREF(p); Py_XDECREF(m); return (__Pyx_RefNannyAPIStruct *)r; } #endif /* GetBuiltinName */ static PyObject *__Pyx_GetBuiltinName(PyObject *name) { PyObject* result = __Pyx_PyObject_GetAttrStr(__pyx_b, name); if (unlikely(!result)) { PyErr_Format(PyExc_NameError, #if PY_MAJOR_VERSION >= 3 "name '%U' is not defined", name); #else "name '%.200s' is not defined", PyString_AS_STRING(name)); #endif } return result; } /* GetModuleGlobalName */ static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name) { PyObject *result; #if !CYTHON_AVOID_BORROWED_REFS result = PyDict_GetItem(__pyx_d, name); if (likely(result)) { Py_INCREF(result); } else { #else result = PyObject_GetItem(__pyx_d, name); if (!result) { PyErr_Clear(); #endif result = __Pyx_GetBuiltinName(name); } return result; } /* PyObjectCall */ #if CYTHON_COMPILING_IN_CPYTHON static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) { PyObject *result; ternaryfunc call = func->ob_type->tp_call; if (unlikely(!call)) return PyObject_Call(func, arg, kw); if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) return NULL; result = (*call)(func, arg, kw); Py_LeaveRecursiveCall(); if (unlikely(!result) && unlikely(!PyErr_Occurred())) { PyErr_SetString( PyExc_SystemError, "NULL result without error in PyObject_Call"); } return result; } #endif /* PyErrFetchRestore */ #if CYTHON_FAST_THREAD_STATE static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { PyObject *tmp_type, *tmp_value, *tmp_tb; tmp_type = tstate->curexc_type; tmp_value = tstate->curexc_value; tmp_tb = tstate->curexc_traceback; tstate->curexc_type = type; tstate->curexc_value = value; tstate->curexc_traceback = tb; Py_XDECREF(tmp_type); Py_XDECREF(tmp_value); Py_XDECREF(tmp_tb); } static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { *type = tstate->curexc_type; *value = tstate->curexc_value; *tb = tstate->curexc_traceback; tstate->curexc_type = 0; tstate->curexc_value = 0; tstate->curexc_traceback = 0; } #endif /* WriteUnraisableException */ static void __Pyx_WriteUnraisable(const char *name, CYTHON_UNUSED int clineno, CYTHON_UNUSED int lineno, CYTHON_UNUSED const char *filename, int full_traceback, CYTHON_UNUSED int nogil) { PyObject *old_exc, *old_val, *old_tb; PyObject *ctx; __Pyx_PyThreadState_declare #ifdef WITH_THREAD PyGILState_STATE state; if (nogil) state = PyGILState_Ensure(); #ifdef _MSC_VER else state = (PyGILState_STATE)-1; #endif #endif __Pyx_PyThreadState_assign __Pyx_ErrFetch(&old_exc, &old_val, &old_tb); if (full_traceback) { Py_XINCREF(old_exc); Py_XINCREF(old_val); Py_XINCREF(old_tb); __Pyx_ErrRestore(old_exc, old_val, old_tb); PyErr_PrintEx(1); } #if PY_MAJOR_VERSION < 3 ctx = PyString_FromString(name); #else ctx = PyUnicode_FromString(name); #endif __Pyx_ErrRestore(old_exc, old_val, old_tb); if (!ctx) { PyErr_WriteUnraisable(Py_None); } else { PyErr_WriteUnraisable(ctx); Py_DECREF(ctx); } #ifdef WITH_THREAD if (nogil) PyGILState_Release(state); #endif } /* CodeObjectCache */ static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) { int start = 0, mid = 0, end = count - 1; if (end >= 0 && code_line > entries[end].code_line) { return count; } while (start < end) { mid = start + (end - start) / 2; if (code_line < entries[mid].code_line) { end = mid; } else if (code_line > entries[mid].code_line) { start = mid + 1; } else { return mid; } } if (code_line <= entries[mid].code_line) { return mid; } else { return mid + 1; } } static PyCodeObject *__pyx_find_code_object(int code_line) { PyCodeObject* code_object; int pos; if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) { return NULL; } pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) { return NULL; } code_object = __pyx_code_cache.entries[pos].code_object; Py_INCREF(code_object); return code_object; } static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) { int pos, i; __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries; if (unlikely(!code_line)) { return; } if (unlikely(!entries)) { entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry)); if (likely(entries)) { __pyx_code_cache.entries = entries; __pyx_code_cache.max_count = 64; __pyx_code_cache.count = 1; entries[0].code_line = code_line; entries[0].code_object = code_object; Py_INCREF(code_object); } return; } pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) { PyCodeObject* tmp = entries[pos].code_object; entries[pos].code_object = code_object; Py_DECREF(tmp); return; } if (__pyx_code_cache.count == __pyx_code_cache.max_count) { int new_max = __pyx_code_cache.max_count + 64; entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc( __pyx_code_cache.entries, (size_t)new_max*sizeof(__Pyx_CodeObjectCacheEntry)); if (unlikely(!entries)) { return; } __pyx_code_cache.entries = entries; __pyx_code_cache.max_count = new_max; } for (i=__pyx_code_cache.count; i>pos; i--) { entries[i] = entries[i-1]; } entries[pos].code_line = code_line; entries[pos].code_object = code_object; __pyx_code_cache.count++; Py_INCREF(code_object); } /* AddTraceback */ #include "compile.h" #include "frameobject.h" #include "traceback.h" static PyCodeObject* __Pyx_CreateCodeObjectForTraceback( const char *funcname, int c_line, int py_line, const char *filename) { PyCodeObject *py_code = 0; PyObject *py_srcfile = 0; PyObject *py_funcname = 0; #if PY_MAJOR_VERSION < 3 py_srcfile = PyString_FromString(filename); #else py_srcfile = PyUnicode_FromString(filename); #endif if (!py_srcfile) goto bad; if (c_line) { #if PY_MAJOR_VERSION < 3 py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); #else py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); #endif } else { #if PY_MAJOR_VERSION < 3 py_funcname = PyString_FromString(funcname); #else py_funcname = PyUnicode_FromString(funcname); #endif } if (!py_funcname) goto bad; py_code = __Pyx_PyCode_New( 0, 0, 0, 0, 0, __pyx_empty_bytes, /*PyObject *code,*/ __pyx_empty_tuple, /*PyObject *consts,*/ __pyx_empty_tuple, /*PyObject *names,*/ __pyx_empty_tuple, /*PyObject *varnames,*/ __pyx_empty_tuple, /*PyObject *freevars,*/ __pyx_empty_tuple, /*PyObject *cellvars,*/ py_srcfile, /*PyObject *filename,*/ py_funcname, /*PyObject *name,*/ py_line, __pyx_empty_bytes /*PyObject *lnotab*/ ); Py_DECREF(py_srcfile); Py_DECREF(py_funcname); return py_code; bad: Py_XDECREF(py_srcfile); Py_XDECREF(py_funcname); return NULL; } static void __Pyx_AddTraceback(const char *funcname, int c_line, int py_line, const char *filename) { PyCodeObject *py_code = 0; PyFrameObject *py_frame = 0; py_code = __pyx_find_code_object(c_line ? c_line : py_line); if (!py_code) { py_code = __Pyx_CreateCodeObjectForTraceback( funcname, c_line, py_line, filename); if (!py_code) goto bad; __pyx_insert_code_object(c_line ? c_line : py_line, py_code); } py_frame = PyFrame_New( PyThreadState_GET(), /*PyThreadState *tstate,*/ py_code, /*PyCodeObject *code,*/ __pyx_d, /*PyObject *globals,*/ 0 /*PyObject *locals*/ ); if (!py_frame) goto bad; __Pyx_PyFrame_SetLineNumber(py_frame, py_line); PyTraceBack_Here(py_frame); bad: Py_XDECREF(py_code); Py_XDECREF(py_frame); } /* CIntToPy */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_unsigned_int(unsigned int value) { const unsigned int neg_one = (unsigned int) -1, const_zero = (unsigned int) 0; const int is_unsigned = neg_one > const_zero; if (is_unsigned) { if (sizeof(unsigned int) < sizeof(long)) { return PyInt_FromLong((long) value); } else if (sizeof(unsigned int) <= sizeof(unsigned long)) { return PyLong_FromUnsignedLong((unsigned long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(unsigned int) <= sizeof(unsigned PY_LONG_LONG)) { return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); #endif } } else { if (sizeof(unsigned int) <= sizeof(long)) { return PyInt_FromLong((long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(unsigned int) <= sizeof(PY_LONG_LONG)) { return PyLong_FromLongLong((PY_LONG_LONG) value); #endif } } { int one = 1; int little = (int)*(unsigned char *)&one; unsigned char *bytes = (unsigned char *)&value; return _PyLong_FromByteArray(bytes, sizeof(unsigned int), little, !is_unsigned); } } /* CIntFromPyVerify */ #define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\ __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0) #define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\ __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1) #define __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, exc)\ {\ func_type value = func_value;\ if (sizeof(target_type) < sizeof(func_type)) {\ if (unlikely(value != (func_type) (target_type) value)) {\ func_type zero = 0;\ if (exc && unlikely(value == (func_type)-1 && PyErr_Occurred()))\ return (target_type) -1;\ if (is_unsigned && unlikely(value < zero))\ goto raise_neg_overflow;\ else\ goto raise_overflow;\ }\ }\ return (target_type) value;\ } /* CIntToPy */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) { const int neg_one = (int) -1, const_zero = (int) 0; const int is_unsigned = neg_one > const_zero; if (is_unsigned) { if (sizeof(int) < sizeof(long)) { return PyInt_FromLong((long) value); } else if (sizeof(int) <= sizeof(unsigned long)) { return PyLong_FromUnsignedLong((unsigned long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) { return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); #endif } } else { if (sizeof(int) <= sizeof(long)) { return PyInt_FromLong((long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) { return PyLong_FromLongLong((PY_LONG_LONG) value); #endif } } { int one = 1; int little = (int)*(unsigned char *)&one; unsigned char *bytes = (unsigned char *)&value; return _PyLong_FromByteArray(bytes, sizeof(int), little, !is_unsigned); } } /* CIntFromPy */ static CYTHON_INLINE unsigned int __Pyx_PyInt_As_unsigned_int(PyObject *x) { const unsigned int neg_one = (unsigned int) -1, const_zero = (unsigned int) 0; const int is_unsigned = neg_one > const_zero; #if PY_MAJOR_VERSION < 3 if (likely(PyInt_Check(x))) { if (sizeof(unsigned int) < sizeof(long)) { __PYX_VERIFY_RETURN_INT(unsigned int, long, PyInt_AS_LONG(x)) } else { long val = PyInt_AS_LONG(x); if (is_unsigned && unlikely(val < 0)) { goto raise_neg_overflow; } return (unsigned int) val; } } else #endif if (likely(PyLong_Check(x))) { if (is_unsigned) { #if CYTHON_USE_PYLONG_INTERNALS const digit* digits = ((PyLongObject*)x)->ob_digit; switch (Py_SIZE(x)) { case 0: return (unsigned int) 0; case 1: __PYX_VERIFY_RETURN_INT(unsigned int, digit, digits[0]) case 2: if (8 * sizeof(unsigned int) > 1 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(unsigned int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(unsigned int) >= 2 * PyLong_SHIFT) { return (unsigned int) (((((unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0])); } } break; case 3: if (8 * sizeof(unsigned int) > 2 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(unsigned int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(unsigned int) >= 3 * PyLong_SHIFT) { return (unsigned int) (((((((unsigned int)digits[2]) << PyLong_SHIFT) | (unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0])); } } break; case 4: if (8 * sizeof(unsigned int) > 3 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(unsigned int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(unsigned int) >= 4 * PyLong_SHIFT) { return (unsigned int) (((((((((unsigned int)digits[3]) << PyLong_SHIFT) | (unsigned int)digits[2]) << PyLong_SHIFT) | (unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0])); } } break; } #endif #if CYTHON_COMPILING_IN_CPYTHON if (unlikely(Py_SIZE(x) < 0)) { goto raise_neg_overflow; } #else { int result = PyObject_RichCompareBool(x, Py_False, Py_LT); if (unlikely(result < 0)) return (unsigned int) -1; if (unlikely(result == 1)) goto raise_neg_overflow; } #endif if (sizeof(unsigned int) <= sizeof(unsigned long)) { __PYX_VERIFY_RETURN_INT_EXC(unsigned int, unsigned long, PyLong_AsUnsignedLong(x)) #ifdef HAVE_LONG_LONG } else if (sizeof(unsigned int) <= sizeof(unsigned PY_LONG_LONG)) { __PYX_VERIFY_RETURN_INT_EXC(unsigned int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) #endif } } else { #if CYTHON_USE_PYLONG_INTERNALS const digit* digits = ((PyLongObject*)x)->ob_digit; switch (Py_SIZE(x)) { case 0: return (unsigned int) 0; case -1: __PYX_VERIFY_RETURN_INT(unsigned int, sdigit, (sdigit) (-(sdigit)digits[0])) case 1: __PYX_VERIFY_RETURN_INT(unsigned int, digit, +digits[0]) case -2: if (8 * sizeof(unsigned int) - 1 > 1 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(unsigned int, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(unsigned int) - 1 > 2 * PyLong_SHIFT) { return (unsigned int) (((unsigned int)-1)*(((((unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0]))); } } break; case 2: if (8 * sizeof(unsigned int) > 1 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(unsigned int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(unsigned int) - 1 > 2 * PyLong_SHIFT) { return (unsigned int) ((((((unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0]))); } } break; case -3: if (8 * sizeof(unsigned int) - 1 > 2 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(unsigned int, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(unsigned int) - 1 > 3 * PyLong_SHIFT) { return (unsigned int) (((unsigned int)-1)*(((((((unsigned int)digits[2]) << PyLong_SHIFT) | (unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0]))); } } break; case 3: if (8 * sizeof(unsigned int) > 2 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(unsigned int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(unsigned int) - 1 > 3 * PyLong_SHIFT) { return (unsigned int) ((((((((unsigned int)digits[2]) << PyLong_SHIFT) | (unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0]))); } } break; case -4: if (8 * sizeof(unsigned int) - 1 > 3 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(unsigned int, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(unsigned int) - 1 > 4 * PyLong_SHIFT) { return (unsigned int) (((unsigned int)-1)*(((((((((unsigned int)digits[3]) << PyLong_SHIFT) | (unsigned int)digits[2]) << PyLong_SHIFT) | (unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0]))); } } break; case 4: if (8 * sizeof(unsigned int) > 3 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(unsigned int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(unsigned int) - 1 > 4 * PyLong_SHIFT) { return (unsigned int) ((((((((((unsigned int)digits[3]) << PyLong_SHIFT) | (unsigned int)digits[2]) << PyLong_SHIFT) | (unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0]))); } } break; } #endif if (sizeof(unsigned int) <= sizeof(long)) { __PYX_VERIFY_RETURN_INT_EXC(unsigned int, long, PyLong_AsLong(x)) #ifdef HAVE_LONG_LONG } else if (sizeof(unsigned int) <= sizeof(PY_LONG_LONG)) { __PYX_VERIFY_RETURN_INT_EXC(unsigned int, PY_LONG_LONG, PyLong_AsLongLong(x)) #endif } } { #if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray) PyErr_SetString(PyExc_RuntimeError, "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"); #else unsigned int val; PyObject *v = __Pyx_PyNumber_IntOrLong(x); #if PY_MAJOR_VERSION < 3 if (likely(v) && !PyLong_Check(v)) { PyObject *tmp = v; v = PyNumber_Long(tmp); Py_DECREF(tmp); } #endif if (likely(v)) { int one = 1; int is_little = (int)*(unsigned char *)&one; unsigned char *bytes = (unsigned char *)&val; int ret = _PyLong_AsByteArray((PyLongObject *)v, bytes, sizeof(val), is_little, !is_unsigned); Py_DECREF(v); if (likely(!ret)) return val; } #endif return (unsigned int) -1; } } else { unsigned int val; PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); if (!tmp) return (unsigned int) -1; val = __Pyx_PyInt_As_unsigned_int(tmp); Py_DECREF(tmp); return val; } raise_overflow: PyErr_SetString(PyExc_OverflowError, "value too large to convert to unsigned int"); return (unsigned int) -1; raise_neg_overflow: PyErr_SetString(PyExc_OverflowError, "can't convert negative value to unsigned int"); return (unsigned int) -1; } /* CIntFromPy */ static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) { const int neg_one = (int) -1, const_zero = (int) 0; const int is_unsigned = neg_one > const_zero; #if PY_MAJOR_VERSION < 3 if (likely(PyInt_Check(x))) { if (sizeof(int) < sizeof(long)) { __PYX_VERIFY_RETURN_INT(int, long, PyInt_AS_LONG(x)) } else { long val = PyInt_AS_LONG(x); if (is_unsigned && unlikely(val < 0)) { goto raise_neg_overflow; } return (int) val; } } else #endif if (likely(PyLong_Check(x))) { if (is_unsigned) { #if CYTHON_USE_PYLONG_INTERNALS const digit* digits = ((PyLongObject*)x)->ob_digit; switch (Py_SIZE(x)) { case 0: return (int) 0; case 1: __PYX_VERIFY_RETURN_INT(int, digit, digits[0]) case 2: if (8 * sizeof(int) > 1 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(int) >= 2 * PyLong_SHIFT) { return (int) (((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); } } break; case 3: if (8 * sizeof(int) > 2 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(int) >= 3 * PyLong_SHIFT) { return (int) (((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); } } break; case 4: if (8 * sizeof(int) > 3 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(int) >= 4 * PyLong_SHIFT) { return (int) (((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); } } break; } #endif #if CYTHON_COMPILING_IN_CPYTHON if (unlikely(Py_SIZE(x) < 0)) { goto raise_neg_overflow; } #else { int result = PyObject_RichCompareBool(x, Py_False, Py_LT); if (unlikely(result < 0)) return (int) -1; if (unlikely(result == 1)) goto raise_neg_overflow; } #endif if (sizeof(int) <= sizeof(unsigned long)) { __PYX_VERIFY_RETURN_INT_EXC(int, unsigned long, PyLong_AsUnsignedLong(x)) #ifdef HAVE_LONG_LONG } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) { __PYX_VERIFY_RETURN_INT_EXC(int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) #endif } } else { #if CYTHON_USE_PYLONG_INTERNALS const digit* digits = ((PyLongObject*)x)->ob_digit; switch (Py_SIZE(x)) { case 0: return (int) 0; case -1: __PYX_VERIFY_RETURN_INT(int, sdigit, (sdigit) (-(sdigit)digits[0])) case 1: __PYX_VERIFY_RETURN_INT(int, digit, +digits[0]) case -2: if (8 * sizeof(int) - 1 > 1 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { return (int) (((int)-1)*(((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); } } break; case 2: if (8 * sizeof(int) > 1 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { return (int) ((((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); } } break; case -3: if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { return (int) (((int)-1)*(((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); } } break; case 3: if (8 * sizeof(int) > 2 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { return (int) ((((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); } } break; case -4: if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) { return (int) (((int)-1)*(((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); } } break; case 4: if (8 * sizeof(int) > 3 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) { return (int) ((((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); } } break; } #endif if (sizeof(int) <= sizeof(long)) { __PYX_VERIFY_RETURN_INT_EXC(int, long, PyLong_AsLong(x)) #ifdef HAVE_LONG_LONG } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) { __PYX_VERIFY_RETURN_INT_EXC(int, PY_LONG_LONG, PyLong_AsLongLong(x)) #endif } } { #if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray) PyErr_SetString(PyExc_RuntimeError, "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"); #else int val; PyObject *v = __Pyx_PyNumber_IntOrLong(x); #if PY_MAJOR_VERSION < 3 if (likely(v) && !PyLong_Check(v)) { PyObject *tmp = v; v = PyNumber_Long(tmp); Py_DECREF(tmp); } #endif if (likely(v)) { int one = 1; int is_little = (int)*(unsigned char *)&one; unsigned char *bytes = (unsigned char *)&val; int ret = _PyLong_AsByteArray((PyLongObject *)v, bytes, sizeof(val), is_little, !is_unsigned); Py_DECREF(v); if (likely(!ret)) return val; } #endif return (int) -1; } } else { int val; PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); if (!tmp) return (int) -1; val = __Pyx_PyInt_As_int(tmp); Py_DECREF(tmp); return val; } raise_overflow: PyErr_SetString(PyExc_OverflowError, "value too large to convert to int"); return (int) -1; raise_neg_overflow: PyErr_SetString(PyExc_OverflowError, "can't convert negative value to int"); return (int) -1; } /* CIntToPy */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) { const long neg_one = (long) -1, const_zero = (long) 0; const int is_unsigned = neg_one > const_zero; if (is_unsigned) { if (sizeof(long) < sizeof(long)) { return PyInt_FromLong((long) value); } else if (sizeof(long) <= sizeof(unsigned long)) { return PyLong_FromUnsignedLong((unsigned long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); #endif } } else { if (sizeof(long) <= sizeof(long)) { return PyInt_FromLong((long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { return PyLong_FromLongLong((PY_LONG_LONG) value); #endif } } { int one = 1; int little = (int)*(unsigned char *)&one; unsigned char *bytes = (unsigned char *)&value; return _PyLong_FromByteArray(bytes, sizeof(long), little, !is_unsigned); } } /* CIntFromPy */ static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) { const long neg_one = (long) -1, const_zero = (long) 0; const int is_unsigned = neg_one > const_zero; #if PY_MAJOR_VERSION < 3 if (likely(PyInt_Check(x))) { if (sizeof(long) < sizeof(long)) { __PYX_VERIFY_RETURN_INT(long, long, PyInt_AS_LONG(x)) } else { long val = PyInt_AS_LONG(x); if (is_unsigned && unlikely(val < 0)) { goto raise_neg_overflow; } return (long) val; } } else #endif if (likely(PyLong_Check(x))) { if (is_unsigned) { #if CYTHON_USE_PYLONG_INTERNALS const digit* digits = ((PyLongObject*)x)->ob_digit; switch (Py_SIZE(x)) { case 0: return (long) 0; case 1: __PYX_VERIFY_RETURN_INT(long, digit, digits[0]) case 2: if (8 * sizeof(long) > 1 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(long) >= 2 * PyLong_SHIFT) { return (long) (((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); } } break; case 3: if (8 * sizeof(long) > 2 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(long) >= 3 * PyLong_SHIFT) { return (long) (((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); } } break; case 4: if (8 * sizeof(long) > 3 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(long) >= 4 * PyLong_SHIFT) { return (long) (((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); } } break; } #endif #if CYTHON_COMPILING_IN_CPYTHON if (unlikely(Py_SIZE(x) < 0)) { goto raise_neg_overflow; } #else { int result = PyObject_RichCompareBool(x, Py_False, Py_LT); if (unlikely(result < 0)) return (long) -1; if (unlikely(result == 1)) goto raise_neg_overflow; } #endif if (sizeof(long) <= sizeof(unsigned long)) { __PYX_VERIFY_RETURN_INT_EXC(long, unsigned long, PyLong_AsUnsignedLong(x)) #ifdef HAVE_LONG_LONG } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { __PYX_VERIFY_RETURN_INT_EXC(long, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) #endif } } else { #if CYTHON_USE_PYLONG_INTERNALS const digit* digits = ((PyLongObject*)x)->ob_digit; switch (Py_SIZE(x)) { case 0: return (long) 0; case -1: __PYX_VERIFY_RETURN_INT(long, sdigit, (sdigit) (-(sdigit)digits[0])) case 1: __PYX_VERIFY_RETURN_INT(long, digit, +digits[0]) case -2: if (8 * sizeof(long) - 1 > 1 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { return (long) (((long)-1)*(((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); } } break; case 2: if (8 * sizeof(long) > 1 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { return (long) ((((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); } } break; case -3: if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { return (long) (((long)-1)*(((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); } } break; case 3: if (8 * sizeof(long) > 2 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { return (long) ((((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); } } break; case -4: if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { return (long) (((long)-1)*(((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); } } break; case 4: if (8 * sizeof(long) > 3 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { return (long) ((((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); } } break; } #endif if (sizeof(long) <= sizeof(long)) { __PYX_VERIFY_RETURN_INT_EXC(long, long, PyLong_AsLong(x)) #ifdef HAVE_LONG_LONG } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { __PYX_VERIFY_RETURN_INT_EXC(long, PY_LONG_LONG, PyLong_AsLongLong(x)) #endif } } { #if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray) PyErr_SetString(PyExc_RuntimeError, "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"); #else long val; PyObject *v = __Pyx_PyNumber_IntOrLong(x); #if PY_MAJOR_VERSION < 3 if (likely(v) && !PyLong_Check(v)) { PyObject *tmp = v; v = PyNumber_Long(tmp); Py_DECREF(tmp); } #endif if (likely(v)) { int one = 1; int is_little = (int)*(unsigned char *)&one; unsigned char *bytes = (unsigned char *)&val; int ret = _PyLong_AsByteArray((PyLongObject *)v, bytes, sizeof(val), is_little, !is_unsigned); Py_DECREF(v); if (likely(!ret)) return val; } #endif return (long) -1; } } else { long val; PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); if (!tmp) return (long) -1; val = __Pyx_PyInt_As_long(tmp); Py_DECREF(tmp); return val; } raise_overflow: PyErr_SetString(PyExc_OverflowError, "value too large to convert to long"); return (long) -1; raise_neg_overflow: PyErr_SetString(PyExc_OverflowError, "can't convert negative value to long"); return (long) -1; } /* CheckBinaryVersion */ static int __Pyx_check_binary_version(void) { char ctversion[4], rtversion[4]; PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION); PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion()); if (ctversion[0] != rtversion[0] || ctversion[2] != rtversion[2]) { char message[200]; PyOS_snprintf(message, sizeof(message), "compiletime version %s of module '%.100s' " "does not match runtime version %s", ctversion, __Pyx_MODULE_NAME, rtversion); return PyErr_WarnEx(NULL, message, 1); } return 0; } /* FunctionExport */ static int __Pyx_ExportFunction(const char *name, void (*f)(void), const char *sig) { PyObject *d = 0; PyObject *cobj = 0; union { void (*fp)(void); void *p; } tmp; d = PyObject_GetAttrString(__pyx_m, (char *)"__pyx_capi__"); if (!d) { PyErr_Clear(); d = PyDict_New(); if (!d) goto bad; Py_INCREF(d); if (PyModule_AddObject(__pyx_m, (char *)"__pyx_capi__", d) < 0) goto bad; } tmp.fp = f; #if PY_VERSION_HEX >= 0x02070000 cobj = PyCapsule_New(tmp.p, sig, 0); #else cobj = PyCObject_FromVoidPtrAndDesc(tmp.p, (void *)sig, 0); #endif if (!cobj) goto bad; if (PyDict_SetItemString(d, name, cobj) < 0) goto bad; Py_DECREF(cobj); Py_DECREF(d); return 0; bad: Py_XDECREF(cobj); Py_XDECREF(d); return -1; } /* InitStrings */ static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) { while (t->p) { #if PY_MAJOR_VERSION < 3 if (t->is_unicode) { *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL); } else if (t->intern) { *t->p = PyString_InternFromString(t->s); } else { *t->p = PyString_FromStringAndSize(t->s, t->n - 1); } #else if (t->is_unicode | t->is_str) { if (t->intern) { *t->p = PyUnicode_InternFromString(t->s); } else if (t->encoding) { *t->p = PyUnicode_Decode(t->s, t->n - 1, t->encoding, NULL); } else { *t->p = PyUnicode_FromStringAndSize(t->s, t->n - 1); } } else { *t->p = PyBytes_FromStringAndSize(t->s, t->n - 1); } #endif if (!*t->p) return -1; ++t; } return 0; } static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char* c_str) { return __Pyx_PyUnicode_FromStringAndSize(c_str, (Py_ssize_t)strlen(c_str)); } static CYTHON_INLINE char* __Pyx_PyObject_AsString(PyObject* o) { Py_ssize_t ignore; return __Pyx_PyObject_AsStringAndSize(o, &ignore); } static CYTHON_INLINE char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_t *length) { #if CYTHON_COMPILING_IN_CPYTHON && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT) if ( #if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII __Pyx_sys_getdefaultencoding_not_ascii && #endif PyUnicode_Check(o)) { #if PY_VERSION_HEX < 0x03030000 char* defenc_c; PyObject* defenc = _PyUnicode_AsDefaultEncodedString(o, NULL); if (!defenc) return NULL; defenc_c = PyBytes_AS_STRING(defenc); #if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII { char* end = defenc_c + PyBytes_GET_SIZE(defenc); char* c; for (c = defenc_c; c < end; c++) { if ((unsigned char) (*c) >= 128) { PyUnicode_AsASCIIString(o); return NULL; } } } #endif *length = PyBytes_GET_SIZE(defenc); return defenc_c; #else if (__Pyx_PyUnicode_READY(o) == -1) return NULL; #if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII if (PyUnicode_IS_ASCII(o)) { *length = PyUnicode_GET_LENGTH(o); return PyUnicode_AsUTF8(o); } else { PyUnicode_AsASCIIString(o); return NULL; } #else return PyUnicode_AsUTF8AndSize(o, length); #endif #endif } else #endif #if (!CYTHON_COMPILING_IN_PYPY) || (defined(PyByteArray_AS_STRING) && defined(PyByteArray_GET_SIZE)) if (PyByteArray_Check(o)) { *length = PyByteArray_GET_SIZE(o); return PyByteArray_AS_STRING(o); } else #endif { char* result; int r = PyBytes_AsStringAndSize(o, &result, length); if (unlikely(r < 0)) { return NULL; } else { return result; } } } static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) { int is_true = x == Py_True; if (is_true | (x == Py_False) | (x == Py_None)) return is_true; else return PyObject_IsTrue(x); } static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x) { #if CYTHON_USE_TYPE_SLOTS PyNumberMethods *m; #endif const char *name = NULL; PyObject *res = NULL; #if PY_MAJOR_VERSION < 3 if (PyInt_Check(x) || PyLong_Check(x)) #else if (PyLong_Check(x)) #endif return __Pyx_NewRef(x); #if CYTHON_USE_TYPE_SLOTS m = Py_TYPE(x)->tp_as_number; #if PY_MAJOR_VERSION < 3 if (m && m->nb_int) { name = "int"; res = PyNumber_Int(x); } else if (m && m->nb_long) { name = "long"; res = PyNumber_Long(x); } #else if (m && m->nb_int) { name = "int"; res = PyNumber_Long(x); } #endif #else res = PyNumber_Int(x); #endif if (res) { #if PY_MAJOR_VERSION < 3 if (!PyInt_Check(res) && !PyLong_Check(res)) { #else if (!PyLong_Check(res)) { #endif PyErr_Format(PyExc_TypeError, "__%.4s__ returned non-%.4s (type %.200s)", name, name, Py_TYPE(res)->tp_name); Py_DECREF(res); return NULL; } } else if (!PyErr_Occurred()) { PyErr_SetString(PyExc_TypeError, "an integer is required"); } return res; } static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) { Py_ssize_t ival; PyObject *x; #if PY_MAJOR_VERSION < 3 if (likely(PyInt_CheckExact(b))) { if (sizeof(Py_ssize_t) >= sizeof(long)) return PyInt_AS_LONG(b); else return PyInt_AsSsize_t(x); } #endif if (likely(PyLong_CheckExact(b))) { #if CYTHON_USE_PYLONG_INTERNALS const digit* digits = ((PyLongObject*)b)->ob_digit; const Py_ssize_t size = Py_SIZE(b); if (likely(__Pyx_sst_abs(size) <= 1)) { ival = likely(size) ? digits[0] : 0; if (size == -1) ival = -ival; return ival; } else { switch (size) { case 2: if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { return (Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); } break; case -2: if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { return -(Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); } break; case 3: if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { return (Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); } break; case -3: if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { return -(Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); } break; case 4: if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { return (Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); } break; case -4: if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { return -(Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); } break; } } #endif return PyLong_AsSsize_t(b); } x = PyNumber_Index(b); if (!x) return -1; ival = PyInt_AsSsize_t(x); Py_DECREF(x); return ival; } static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) { return PyInt_FromSize_t(ival); } #endif /* Py_PYTHON_H */ pybik-3.0/csrc/_qtui_.cpp0000644000175000017500000050761213173167600015575 0ustar barccbarcc00000000000000/* Generated by Cython 0.25.2 */ #define PY_SSIZE_T_CLEAN #include "Python.h" #ifndef Py_PYTHON_H #error Python headers needed to compile C extensions, please install development version of Python. #elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03020000) #error Cython requires Python 2.6+ or Python 3.2+. #else #define CYTHON_ABI "0_25_2" #include #ifndef offsetof #define offsetof(type, member) ( (size_t) & ((type*)0) -> member ) #endif #if !defined(WIN32) && !defined(MS_WINDOWS) #ifndef __stdcall #define __stdcall #endif #ifndef __cdecl #define __cdecl #endif #ifndef __fastcall #define __fastcall #endif #endif #ifndef DL_IMPORT #define DL_IMPORT(t) t #endif #ifndef DL_EXPORT #define DL_EXPORT(t) t #endif #ifndef HAVE_LONG_LONG #if PY_VERSION_HEX >= 0x03030000 || (PY_MAJOR_VERSION == 2 && PY_VERSION_HEX >= 0x02070000) #define HAVE_LONG_LONG #endif #endif #ifndef PY_LONG_LONG #define PY_LONG_LONG LONG_LONG #endif #ifndef Py_HUGE_VAL #define Py_HUGE_VAL HUGE_VAL #endif #ifdef PYPY_VERSION #define CYTHON_COMPILING_IN_PYPY 1 #define CYTHON_COMPILING_IN_PYSTON 0 #define CYTHON_COMPILING_IN_CPYTHON 0 #undef CYTHON_USE_TYPE_SLOTS #define CYTHON_USE_TYPE_SLOTS 0 #undef CYTHON_USE_ASYNC_SLOTS #define CYTHON_USE_ASYNC_SLOTS 0 #undef CYTHON_USE_PYLIST_INTERNALS #define CYTHON_USE_PYLIST_INTERNALS 0 #undef CYTHON_USE_UNICODE_INTERNALS #define CYTHON_USE_UNICODE_INTERNALS 0 #undef CYTHON_USE_UNICODE_WRITER #define CYTHON_USE_UNICODE_WRITER 0 #undef CYTHON_USE_PYLONG_INTERNALS #define CYTHON_USE_PYLONG_INTERNALS 0 #undef CYTHON_AVOID_BORROWED_REFS #define CYTHON_AVOID_BORROWED_REFS 1 #undef CYTHON_ASSUME_SAFE_MACROS #define CYTHON_ASSUME_SAFE_MACROS 0 #undef CYTHON_UNPACK_METHODS #define CYTHON_UNPACK_METHODS 0 #undef CYTHON_FAST_THREAD_STATE #define CYTHON_FAST_THREAD_STATE 0 #undef CYTHON_FAST_PYCALL #define CYTHON_FAST_PYCALL 0 #elif defined(PYSTON_VERSION) #define CYTHON_COMPILING_IN_PYPY 0 #define CYTHON_COMPILING_IN_PYSTON 1 #define CYTHON_COMPILING_IN_CPYTHON 0 #ifndef CYTHON_USE_TYPE_SLOTS #define CYTHON_USE_TYPE_SLOTS 1 #endif #undef CYTHON_USE_ASYNC_SLOTS #define CYTHON_USE_ASYNC_SLOTS 0 #undef CYTHON_USE_PYLIST_INTERNALS #define CYTHON_USE_PYLIST_INTERNALS 0 #ifndef CYTHON_USE_UNICODE_INTERNALS #define CYTHON_USE_UNICODE_INTERNALS 1 #endif #undef CYTHON_USE_UNICODE_WRITER #define CYTHON_USE_UNICODE_WRITER 0 #undef CYTHON_USE_PYLONG_INTERNALS #define CYTHON_USE_PYLONG_INTERNALS 0 #ifndef CYTHON_AVOID_BORROWED_REFS #define CYTHON_AVOID_BORROWED_REFS 0 #endif #ifndef CYTHON_ASSUME_SAFE_MACROS #define CYTHON_ASSUME_SAFE_MACROS 1 #endif #ifndef CYTHON_UNPACK_METHODS #define CYTHON_UNPACK_METHODS 1 #endif #undef CYTHON_FAST_THREAD_STATE #define CYTHON_FAST_THREAD_STATE 0 #undef CYTHON_FAST_PYCALL #define CYTHON_FAST_PYCALL 0 #else #define CYTHON_COMPILING_IN_PYPY 0 #define CYTHON_COMPILING_IN_PYSTON 0 #define CYTHON_COMPILING_IN_CPYTHON 1 #ifndef CYTHON_USE_TYPE_SLOTS #define CYTHON_USE_TYPE_SLOTS 1 #endif #if PY_MAJOR_VERSION < 3 #undef CYTHON_USE_ASYNC_SLOTS #define CYTHON_USE_ASYNC_SLOTS 0 #elif !defined(CYTHON_USE_ASYNC_SLOTS) #define CYTHON_USE_ASYNC_SLOTS 1 #endif #if PY_VERSION_HEX < 0x02070000 #undef CYTHON_USE_PYLONG_INTERNALS #define CYTHON_USE_PYLONG_INTERNALS 0 #elif !defined(CYTHON_USE_PYLONG_INTERNALS) #define CYTHON_USE_PYLONG_INTERNALS 1 #endif #ifndef CYTHON_USE_PYLIST_INTERNALS #define CYTHON_USE_PYLIST_INTERNALS 1 #endif #ifndef CYTHON_USE_UNICODE_INTERNALS #define CYTHON_USE_UNICODE_INTERNALS 1 #endif #if PY_VERSION_HEX < 0x030300F0 #undef CYTHON_USE_UNICODE_WRITER #define CYTHON_USE_UNICODE_WRITER 0 #elif !defined(CYTHON_USE_UNICODE_WRITER) #define CYTHON_USE_UNICODE_WRITER 1 #endif #ifndef CYTHON_AVOID_BORROWED_REFS #define CYTHON_AVOID_BORROWED_REFS 0 #endif #ifndef CYTHON_ASSUME_SAFE_MACROS #define CYTHON_ASSUME_SAFE_MACROS 1 #endif #ifndef CYTHON_UNPACK_METHODS #define CYTHON_UNPACK_METHODS 1 #endif #ifndef CYTHON_FAST_THREAD_STATE #define CYTHON_FAST_THREAD_STATE 1 #endif #ifndef CYTHON_FAST_PYCALL #define CYTHON_FAST_PYCALL 1 #endif #endif #if !defined(CYTHON_FAST_PYCCALL) #define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1) #endif #if CYTHON_USE_PYLONG_INTERNALS #include "longintrepr.h" #undef SHIFT #undef BASE #undef MASK #endif #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x02070600 && !defined(Py_OptimizeFlag) #define Py_OptimizeFlag 0 #endif #define __PYX_BUILD_PY_SSIZE_T "n" #define CYTHON_FORMAT_SSIZE_T "z" #if PY_MAJOR_VERSION < 3 #define __Pyx_BUILTIN_MODULE_NAME "__builtin__" #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ PyCode_New(a+k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) #define __Pyx_DefaultClassType PyClass_Type #else #define __Pyx_BUILTIN_MODULE_NAME "builtins" #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) #define __Pyx_DefaultClassType PyType_Type #endif #ifndef Py_TPFLAGS_CHECKTYPES #define Py_TPFLAGS_CHECKTYPES 0 #endif #ifndef Py_TPFLAGS_HAVE_INDEX #define Py_TPFLAGS_HAVE_INDEX 0 #endif #ifndef Py_TPFLAGS_HAVE_NEWBUFFER #define Py_TPFLAGS_HAVE_NEWBUFFER 0 #endif #ifndef Py_TPFLAGS_HAVE_FINALIZE #define Py_TPFLAGS_HAVE_FINALIZE 0 #endif #ifndef METH_FASTCALL #define METH_FASTCALL 0x80 typedef PyObject *(*__Pyx_PyCFunctionFast) (PyObject *self, PyObject **args, Py_ssize_t nargs, PyObject *kwnames); #else #define __Pyx_PyCFunctionFast _PyCFunctionFast #endif #if CYTHON_FAST_PYCCALL #define __Pyx_PyFastCFunction_Check(func)\ ((PyCFunction_Check(func) && (METH_FASTCALL == (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST))))) #else #define __Pyx_PyFastCFunction_Check(func) 0 #endif #if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND) #define CYTHON_PEP393_ENABLED 1 #define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ?\ 0 : _PyUnicode_Ready((PyObject *)(op))) #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_LENGTH(u) #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i) #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) PyUnicode_MAX_CHAR_VALUE(u) #define __Pyx_PyUnicode_KIND(u) PyUnicode_KIND(u) #define __Pyx_PyUnicode_DATA(u) PyUnicode_DATA(u) #define __Pyx_PyUnicode_READ(k, d, i) PyUnicode_READ(k, d, i) #define __Pyx_PyUnicode_WRITE(k, d, i, ch) PyUnicode_WRITE(k, d, i, ch) #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u))) #else #define CYTHON_PEP393_ENABLED 0 #define PyUnicode_1BYTE_KIND 1 #define PyUnicode_2BYTE_KIND 2 #define PyUnicode_4BYTE_KIND 4 #define __Pyx_PyUnicode_READY(op) (0) #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_SIZE(u) #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i])) #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) ((sizeof(Py_UNICODE) == 2) ? 65535 : 1114111) #define __Pyx_PyUnicode_KIND(u) (sizeof(Py_UNICODE)) #define __Pyx_PyUnicode_DATA(u) ((void*)PyUnicode_AS_UNICODE(u)) #define __Pyx_PyUnicode_READ(k, d, i) ((void)(k), (Py_UCS4)(((Py_UNICODE*)d)[i])) #define __Pyx_PyUnicode_WRITE(k, d, i, ch) (((void)(k)), ((Py_UNICODE*)d)[i] = ch) #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_SIZE(u)) #endif #if CYTHON_COMPILING_IN_PYPY #define __Pyx_PyUnicode_Concat(a, b) PyNumber_Add(a, b) #define __Pyx_PyUnicode_ConcatSafe(a, b) PyNumber_Add(a, b) #else #define __Pyx_PyUnicode_Concat(a, b) PyUnicode_Concat(a, b) #define __Pyx_PyUnicode_ConcatSafe(a, b) ((unlikely((a) == Py_None) || unlikely((b) == Py_None)) ?\ PyNumber_Add(a, b) : __Pyx_PyUnicode_Concat(a, b)) #endif #if CYTHON_COMPILING_IN_PYPY && !defined(PyUnicode_Contains) #define PyUnicode_Contains(u, s) PySequence_Contains(u, s) #endif #if CYTHON_COMPILING_IN_PYPY && !defined(PyByteArray_Check) #define PyByteArray_Check(obj) PyObject_TypeCheck(obj, &PyByteArray_Type) #endif #if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Format) #define PyObject_Format(obj, fmt) PyObject_CallMethod(obj, "__format__", "O", fmt) #endif #if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc) #define PyObject_Malloc(s) PyMem_Malloc(s) #define PyObject_Free(p) PyMem_Free(p) #define PyObject_Realloc(p) PyMem_Realloc(p) #endif #if CYTHON_COMPILING_IN_PYSTON #define __Pyx_PyCode_HasFreeVars(co) PyCode_HasFreeVars(co) #define __Pyx_PyFrame_SetLineNumber(frame, lineno) PyFrame_SetLineNumber(frame, lineno) #else #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0) #define __Pyx_PyFrame_SetLineNumber(frame, lineno) (frame)->f_lineno = (lineno) #endif #define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b)) #define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b)) #if PY_MAJOR_VERSION >= 3 #define __Pyx_PyString_Format(a, b) PyUnicode_Format(a, b) #else #define __Pyx_PyString_Format(a, b) PyString_Format(a, b) #endif #if PY_MAJOR_VERSION < 3 && !defined(PyObject_ASCII) #define PyObject_ASCII(o) PyObject_Repr(o) #endif #if PY_MAJOR_VERSION >= 3 #define PyBaseString_Type PyUnicode_Type #define PyStringObject PyUnicodeObject #define PyString_Type PyUnicode_Type #define PyString_Check PyUnicode_Check #define PyString_CheckExact PyUnicode_CheckExact #endif #if PY_MAJOR_VERSION >= 3 #define __Pyx_PyBaseString_Check(obj) PyUnicode_Check(obj) #define __Pyx_PyBaseString_CheckExact(obj) PyUnicode_CheckExact(obj) #else #define __Pyx_PyBaseString_Check(obj) (PyString_Check(obj) || PyUnicode_Check(obj)) #define __Pyx_PyBaseString_CheckExact(obj) (PyString_CheckExact(obj) || PyUnicode_CheckExact(obj)) #endif #ifndef PySet_CheckExact #define PySet_CheckExact(obj) (Py_TYPE(obj) == &PySet_Type) #endif #define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type) #define __Pyx_PyException_Check(obj) __Pyx_TypeCheck(obj, PyExc_Exception) #if PY_MAJOR_VERSION >= 3 #define PyIntObject PyLongObject #define PyInt_Type PyLong_Type #define PyInt_Check(op) PyLong_Check(op) #define PyInt_CheckExact(op) PyLong_CheckExact(op) #define PyInt_FromString PyLong_FromString #define PyInt_FromUnicode PyLong_FromUnicode #define PyInt_FromLong PyLong_FromLong #define PyInt_FromSize_t PyLong_FromSize_t #define PyInt_FromSsize_t PyLong_FromSsize_t #define PyInt_AsLong PyLong_AsLong #define PyInt_AS_LONG PyLong_AS_LONG #define PyInt_AsSsize_t PyLong_AsSsize_t #define PyInt_AsUnsignedLongMask PyLong_AsUnsignedLongMask #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask #define PyNumber_Int PyNumber_Long #endif #if PY_MAJOR_VERSION >= 3 #define PyBoolObject PyLongObject #endif #if PY_MAJOR_VERSION >= 3 && CYTHON_COMPILING_IN_PYPY #ifndef PyUnicode_InternFromString #define PyUnicode_InternFromString(s) PyUnicode_FromString(s) #endif #endif #if PY_VERSION_HEX < 0x030200A4 typedef long Py_hash_t; #define __Pyx_PyInt_FromHash_t PyInt_FromLong #define __Pyx_PyInt_AsHash_t PyInt_AsLong #else #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t #define __Pyx_PyInt_AsHash_t PyInt_AsSsize_t #endif #if PY_MAJOR_VERSION >= 3 #define __Pyx_PyMethod_New(func, self, klass) ((self) ? PyMethod_New(func, self) : PyInstanceMethod_New(func)) #else #define __Pyx_PyMethod_New(func, self, klass) PyMethod_New(func, self, klass) #endif #if CYTHON_USE_ASYNC_SLOTS #if PY_VERSION_HEX >= 0x030500B1 #define __Pyx_PyAsyncMethodsStruct PyAsyncMethods #define __Pyx_PyType_AsAsync(obj) (Py_TYPE(obj)->tp_as_async) #else typedef struct { unaryfunc am_await; unaryfunc am_aiter; unaryfunc am_anext; } __Pyx_PyAsyncMethodsStruct; #define __Pyx_PyType_AsAsync(obj) ((__Pyx_PyAsyncMethodsStruct*) (Py_TYPE(obj)->tp_reserved)) #endif #else #define __Pyx_PyType_AsAsync(obj) NULL #endif #ifndef CYTHON_RESTRICT #if defined(__GNUC__) #define CYTHON_RESTRICT __restrict__ #elif defined(_MSC_VER) && _MSC_VER >= 1400 #define CYTHON_RESTRICT __restrict #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L #define CYTHON_RESTRICT restrict #else #define CYTHON_RESTRICT #endif #endif #ifndef CYTHON_UNUSED # if defined(__GNUC__) # if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) # define CYTHON_UNUSED __attribute__ ((__unused__)) # else # define CYTHON_UNUSED # endif # elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER)) # define CYTHON_UNUSED __attribute__ ((__unused__)) # else # define CYTHON_UNUSED # endif #endif #ifndef CYTHON_MAYBE_UNUSED_VAR # if defined(__cplusplus) template void CYTHON_MAYBE_UNUSED_VAR( const T& ) { } # else # define CYTHON_MAYBE_UNUSED_VAR(x) (void)(x) # endif #endif #ifndef CYTHON_NCP_UNUSED # if CYTHON_COMPILING_IN_CPYTHON # define CYTHON_NCP_UNUSED # else # define CYTHON_NCP_UNUSED CYTHON_UNUSED # endif #endif #define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None) #ifndef __cplusplus #error "Cython files generated with the C++ option must be compiled with a C++ compiler." #endif #ifndef CYTHON_INLINE #if defined(__clang__) #define CYTHON_INLINE __inline__ __attribute__ ((__unused__)) #else #define CYTHON_INLINE inline #endif #endif template void __Pyx_call_destructor(T& x) { x.~T(); } template class __Pyx_FakeReference { public: __Pyx_FakeReference() : ptr(NULL) { } __Pyx_FakeReference(const T& ref) : ptr(const_cast(&ref)) { } T *operator->() { return ptr; } T *operator&() { return ptr; } operator T&() { return *ptr; } template bool operator ==(U other) { return *ptr == other; } template bool operator !=(U other) { return *ptr != other; } private: T *ptr; }; #if defined(WIN32) || defined(MS_WINDOWS) #define _USE_MATH_DEFINES #endif #include #ifdef NAN #define __PYX_NAN() ((float) NAN) #else static CYTHON_INLINE float __PYX_NAN() { float value; memset(&value, 0xFF, sizeof(value)); return value; } #endif #if defined(__CYGWIN__) && defined(_LDBL_EQ_DBL) #define __Pyx_truncl trunc #else #define __Pyx_truncl truncl #endif #define __PYX_ERR(f_index, lineno, Ln_error) \ { \ __pyx_filename = __pyx_f[f_index]; __pyx_lineno = lineno; __pyx_clineno = __LINE__; goto Ln_error; \ } #if PY_MAJOR_VERSION >= 3 #define __Pyx_PyNumber_Divide(x,y) PyNumber_TrueDivide(x,y) #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceTrueDivide(x,y) #else #define __Pyx_PyNumber_Divide(x,y) PyNumber_TrueDivide(x,y) #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceTrueDivide(x,y) #endif #ifndef __PYX_EXTERN_C #ifdef __cplusplus #define __PYX_EXTERN_C extern "C" #else #define __PYX_EXTERN_C extern #endif #endif #define __PYX_HAVE___qtui_ #define __PYX_HAVE_API___qtui_ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "_qtui__moc.h" #ifdef _OPENMP #include #endif /* _OPENMP */ #ifdef PYREX_WITHOUT_ASSERTIONS #define CYTHON_WITHOUT_ASSERTIONS #endif typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* encoding; const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry; #define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0 #define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT 0 #define __PYX_DEFAULT_STRING_ENCODING "" #define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString #define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize #define __Pyx_uchar_cast(c) ((unsigned char)c) #define __Pyx_long_cast(x) ((long)x) #define __Pyx_fits_Py_ssize_t(v, type, is_signed) (\ (sizeof(type) < sizeof(Py_ssize_t)) ||\ (sizeof(type) > sizeof(Py_ssize_t) &&\ likely(v < (type)PY_SSIZE_T_MAX ||\ v == (type)PY_SSIZE_T_MAX) &&\ (!is_signed || likely(v > (type)PY_SSIZE_T_MIN ||\ v == (type)PY_SSIZE_T_MIN))) ||\ (sizeof(type) == sizeof(Py_ssize_t) &&\ (is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\ v == (type)PY_SSIZE_T_MAX))) ) #if defined (__cplusplus) && __cplusplus >= 201103L #include #define __Pyx_sst_abs(value) std::abs(value) #elif SIZEOF_INT >= SIZEOF_SIZE_T #define __Pyx_sst_abs(value) abs(value) #elif SIZEOF_LONG >= SIZEOF_SIZE_T #define __Pyx_sst_abs(value) labs(value) #elif defined (_MSC_VER) && defined (_M_X64) #define __Pyx_sst_abs(value) _abs64(value) #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L #define __Pyx_sst_abs(value) llabs(value) #elif defined (__GNUC__) #define __Pyx_sst_abs(value) __builtin_llabs(value) #else #define __Pyx_sst_abs(value) ((value<0) ? -value : value) #endif static CYTHON_INLINE char* __Pyx_PyObject_AsString(PyObject*); static CYTHON_INLINE char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length); #define __Pyx_PyByteArray_FromString(s) PyByteArray_FromStringAndSize((const char*)s, strlen((const char*)s)) #define __Pyx_PyByteArray_FromStringAndSize(s, l) PyByteArray_FromStringAndSize((const char*)s, l) #define __Pyx_PyBytes_FromString PyBytes_FromString #define __Pyx_PyBytes_FromStringAndSize PyBytes_FromStringAndSize static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char*); #if PY_MAJOR_VERSION < 3 #define __Pyx_PyStr_FromString __Pyx_PyBytes_FromString #define __Pyx_PyStr_FromStringAndSize __Pyx_PyBytes_FromStringAndSize #else #define __Pyx_PyStr_FromString __Pyx_PyUnicode_FromString #define __Pyx_PyStr_FromStringAndSize __Pyx_PyUnicode_FromStringAndSize #endif #define __Pyx_PyObject_AsSString(s) ((signed char*) __Pyx_PyObject_AsString(s)) #define __Pyx_PyObject_AsUString(s) ((unsigned char*) __Pyx_PyObject_AsString(s)) #define __Pyx_PyObject_FromCString(s) __Pyx_PyObject_FromString((const char*)s) #define __Pyx_PyBytes_FromCString(s) __Pyx_PyBytes_FromString((const char*)s) #define __Pyx_PyByteArray_FromCString(s) __Pyx_PyByteArray_FromString((const char*)s) #define __Pyx_PyStr_FromCString(s) __Pyx_PyStr_FromString((const char*)s) #define __Pyx_PyUnicode_FromCString(s) __Pyx_PyUnicode_FromString((const char*)s) #if PY_MAJOR_VERSION < 3 static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u) { const Py_UNICODE *u_end = u; while (*u_end++) ; return (size_t)(u_end - u - 1); } #else #define __Pyx_Py_UNICODE_strlen Py_UNICODE_strlen #endif #define __Pyx_PyUnicode_FromUnicode(u) PyUnicode_FromUnicode(u, __Pyx_Py_UNICODE_strlen(u)) #define __Pyx_PyUnicode_FromUnicodeAndLength PyUnicode_FromUnicode #define __Pyx_PyUnicode_AsUnicode PyUnicode_AsUnicode #define __Pyx_NewRef(obj) (Py_INCREF(obj), obj) #define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None) #define __Pyx_PyBool_FromLong(b) ((b) ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False)) static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*); static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x); static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*); static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t); #if CYTHON_ASSUME_SAFE_MACROS #define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x)) #else #define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x) #endif #define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x)) #if PY_MAJOR_VERSION >= 3 #define __Pyx_PyNumber_Int(x) (PyLong_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Long(x)) #else #define __Pyx_PyNumber_Int(x) (PyInt_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Int(x)) #endif #define __Pyx_PyNumber_Float(x) (PyFloat_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Float(x)) #if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII static int __Pyx_sys_getdefaultencoding_not_ascii; static int __Pyx_init_sys_getdefaultencoding_params(void) { PyObject* sys; PyObject* default_encoding = NULL; PyObject* ascii_chars_u = NULL; PyObject* ascii_chars_b = NULL; const char* default_encoding_c; sys = PyImport_ImportModule("sys"); if (!sys) goto bad; default_encoding = PyObject_CallMethod(sys, (char*) "getdefaultencoding", NULL); Py_DECREF(sys); if (!default_encoding) goto bad; default_encoding_c = PyBytes_AsString(default_encoding); if (!default_encoding_c) goto bad; if (strcmp(default_encoding_c, "ascii") == 0) { __Pyx_sys_getdefaultencoding_not_ascii = 0; } else { char ascii_chars[128]; int c; for (c = 0; c < 128; c++) { ascii_chars[c] = c; } __Pyx_sys_getdefaultencoding_not_ascii = 1; ascii_chars_u = PyUnicode_DecodeASCII(ascii_chars, 128, NULL); if (!ascii_chars_u) goto bad; ascii_chars_b = PyUnicode_AsEncodedString(ascii_chars_u, default_encoding_c, NULL); if (!ascii_chars_b || !PyBytes_Check(ascii_chars_b) || memcmp(ascii_chars, PyBytes_AS_STRING(ascii_chars_b), 128) != 0) { PyErr_Format( PyExc_ValueError, "This module compiled with c_string_encoding=ascii, but default encoding '%.200s' is not a superset of ascii.", default_encoding_c); goto bad; } Py_DECREF(ascii_chars_u); Py_DECREF(ascii_chars_b); } Py_DECREF(default_encoding); return 0; bad: Py_XDECREF(default_encoding); Py_XDECREF(ascii_chars_u); Py_XDECREF(ascii_chars_b); return -1; } #endif #if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT && PY_MAJOR_VERSION >= 3 #define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeUTF8(c_str, size, NULL) #else #define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_Decode(c_str, size, __PYX_DEFAULT_STRING_ENCODING, NULL) #if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT static char* __PYX_DEFAULT_STRING_ENCODING; static int __Pyx_init_sys_getdefaultencoding_params(void) { PyObject* sys; PyObject* default_encoding = NULL; char* default_encoding_c; sys = PyImport_ImportModule("sys"); if (!sys) goto bad; default_encoding = PyObject_CallMethod(sys, (char*) (const char*) "getdefaultencoding", NULL); Py_DECREF(sys); if (!default_encoding) goto bad; default_encoding_c = PyBytes_AsString(default_encoding); if (!default_encoding_c) goto bad; __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c)); if (!__PYX_DEFAULT_STRING_ENCODING) goto bad; strcpy(__PYX_DEFAULT_STRING_ENCODING, default_encoding_c); Py_DECREF(default_encoding); return 0; bad: Py_XDECREF(default_encoding); return -1; } #endif #endif /* Test for GCC > 2.95 */ #if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))) #define likely(x) __builtin_expect(!!(x), 1) #define unlikely(x) __builtin_expect(!!(x), 0) #else /* !__GNUC__ or GCC < 2.95 */ #define likely(x) (x) #define unlikely(x) (x) #endif /* __GNUC__ */ static PyObject *__pyx_m; static PyObject *__pyx_d; static PyObject *__pyx_b; static PyObject *__pyx_empty_tuple; static PyObject *__pyx_empty_bytes; static PyObject *__pyx_empty_unicode; static int __pyx_lineno; static int __pyx_clineno = 0; static const char * __pyx_cfilenm= __FILE__; static const char *__pyx_filename; static const char *__pyx_f[] = { "build/temp.linux-x86_64-3.5/pybiklib/ext/_qtui_.pyx", }; /*--- Type declarations ---*/ /* "qt.pxd":23 * * * ctypedef void CallbackVoid() nogil # <<<<<<<<<<<<<< * ctypedef void CallbackInt(int) nogil * ctypedef void CallbackString(const QString &) nogil */ typedef void __pyx_t_2qt_CallbackVoid(void); /* "qt.pxd":24 * * ctypedef void CallbackVoid() nogil * ctypedef void CallbackInt(int) nogil # <<<<<<<<<<<<<< * ctypedef void CallbackString(const QString &) nogil * ctypedef void CallbackDebugMessage(const QOpenGLDebugMessage &) nogil */ typedef void __pyx_t_2qt_CallbackInt(int); /* "qt.pxd":25 * ctypedef void CallbackVoid() nogil * ctypedef void CallbackInt(int) nogil * ctypedef void CallbackString(const QString &) nogil # <<<<<<<<<<<<<< * ctypedef void CallbackDebugMessage(const QOpenGLDebugMessage &) nogil * */ typedef void __pyx_t_2qt_CallbackString(QString const &); /* "qt.pxd":26 * ctypedef void CallbackInt(int) nogil * ctypedef void CallbackString(const QString &) nogil * ctypedef void CallbackDebugMessage(const QOpenGLDebugMessage &) nogil # <<<<<<<<<<<<<< * * */ typedef void __pyx_t_2qt_CallbackDebugMessage(QOpenGLDebugMessage const &); /* "_qtui_.pyx":62 * #puts = print * * cdef enum: # #px/ # <<<<<<<<<<<<<< * #if True: * DEBUG_MSGEXT = 0x1 */ enum { __pyx_e_6_qtui__DEBUG_MSGEXT = 0x1, __pyx_e_6_qtui__DEBUG_DRAW = 0x2, __pyx_e_6_qtui__DEBUG_FPS = 0x4 }; /* --- Runtime support code (head) --- */ /* Refnanny.proto */ #ifndef CYTHON_REFNANNY #define CYTHON_REFNANNY 0 #endif #if CYTHON_REFNANNY typedef struct { void (*INCREF)(void*, PyObject*, int); void (*DECREF)(void*, PyObject*, int); void (*GOTREF)(void*, PyObject*, int); void (*GIVEREF)(void*, PyObject*, int); void* (*SetupContext)(const char*, int, const char*); void (*FinishContext)(void**); } __Pyx_RefNannyAPIStruct; static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL; static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname); #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL; #ifdef WITH_THREAD #define __Pyx_RefNannySetupContext(name, acquire_gil)\ if (acquire_gil) {\ PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\ __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\ PyGILState_Release(__pyx_gilstate_save);\ } else {\ __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\ } #else #define __Pyx_RefNannySetupContext(name, acquire_gil)\ __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__) #endif #define __Pyx_RefNannyFinishContext()\ __Pyx_RefNanny->FinishContext(&__pyx_refnanny) #define __Pyx_INCREF(r) __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__) #define __Pyx_DECREF(r) __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__) #define __Pyx_GOTREF(r) __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), __LINE__) #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), __LINE__) #define __Pyx_XINCREF(r) do { if((r) != NULL) {__Pyx_INCREF(r); }} while(0) #define __Pyx_XDECREF(r) do { if((r) != NULL) {__Pyx_DECREF(r); }} while(0) #define __Pyx_XGOTREF(r) do { if((r) != NULL) {__Pyx_GOTREF(r); }} while(0) #define __Pyx_XGIVEREF(r) do { if((r) != NULL) {__Pyx_GIVEREF(r);}} while(0) #else #define __Pyx_RefNannyDeclarations #define __Pyx_RefNannySetupContext(name, acquire_gil) #define __Pyx_RefNannyFinishContext() #define __Pyx_INCREF(r) Py_INCREF(r) #define __Pyx_DECREF(r) Py_DECREF(r) #define __Pyx_GOTREF(r) #define __Pyx_GIVEREF(r) #define __Pyx_XINCREF(r) Py_XINCREF(r) #define __Pyx_XDECREF(r) Py_XDECREF(r) #define __Pyx_XGOTREF(r) #define __Pyx_XGIVEREF(r) #endif #define __Pyx_XDECREF_SET(r, v) do {\ PyObject *tmp = (PyObject *) r;\ r = v; __Pyx_XDECREF(tmp);\ } while (0) #define __Pyx_DECREF_SET(r, v) do {\ PyObject *tmp = (PyObject *) r;\ r = v; __Pyx_DECREF(tmp);\ } while (0) #define __Pyx_CLEAR(r) do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0) #define __Pyx_XCLEAR(r) do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0) /* PyObjectGetAttrStr.proto */ #if CYTHON_USE_TYPE_SLOTS static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) { PyTypeObject* tp = Py_TYPE(obj); if (likely(tp->tp_getattro)) return tp->tp_getattro(obj, attr_name); #if PY_MAJOR_VERSION < 3 if (likely(tp->tp_getattr)) return tp->tp_getattr(obj, PyString_AS_STRING(attr_name)); #endif return PyObject_GetAttr(obj, attr_name); } #else #define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n) #endif /* GetBuiltinName.proto */ static PyObject *__Pyx_GetBuiltinName(PyObject *name); /* GetModuleGlobalName.proto */ static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name); /* PyObjectCall.proto */ #if CYTHON_COMPILING_IN_CPYTHON static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw); #else #define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw) #endif /* PyThreadStateGet.proto */ #if CYTHON_FAST_THREAD_STATE #define __Pyx_PyThreadState_declare PyThreadState *__pyx_tstate; #define __Pyx_PyThreadState_assign __pyx_tstate = PyThreadState_GET(); #else #define __Pyx_PyThreadState_declare #define __Pyx_PyThreadState_assign #endif /* PyErrFetchRestore.proto */ #if CYTHON_FAST_THREAD_STATE #define __Pyx_ErrRestoreWithState(type, value, tb) __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb) #define __Pyx_ErrFetchWithState(type, value, tb) __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb) #define __Pyx_ErrRestore(type, value, tb) __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb) #define __Pyx_ErrFetch(type, value, tb) __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb) static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); #else #define __Pyx_ErrRestoreWithState(type, value, tb) PyErr_Restore(type, value, tb) #define __Pyx_ErrFetchWithState(type, value, tb) PyErr_Fetch(type, value, tb) #define __Pyx_ErrRestore(type, value, tb) PyErr_Restore(type, value, tb) #define __Pyx_ErrFetch(type, value, tb) PyErr_Fetch(type, value, tb) #endif /* WriteUnraisableException.proto */ static void __Pyx_WriteUnraisable(const char *name, int clineno, int lineno, const char *filename, int full_traceback, int nogil); /* ForceInitThreads.proto */ #ifndef __PYX_FORCE_INIT_THREADS #define __PYX_FORCE_INIT_THREADS 0 #endif /* IncludeStringH.proto */ #include /* decode_c_string.proto */ static CYTHON_INLINE PyObject* __Pyx_decode_c_string( const char* cstring, Py_ssize_t start, Py_ssize_t stop, const char* encoding, const char* errors, PyObject* (*decode_func)(const char *s, Py_ssize_t size, const char *errors)); /* PyCFunctionFastCall.proto */ #if CYTHON_FAST_PYCCALL static CYTHON_INLINE PyObject *__Pyx_PyCFunction_FastCall(PyObject *func, PyObject **args, Py_ssize_t nargs); #else #define __Pyx_PyCFunction_FastCall(func, args, nargs) (assert(0), NULL) #endif /* PyFunctionFastCall.proto */ #if CYTHON_FAST_PYCALL #define __Pyx_PyFunction_FastCall(func, args, nargs)\ __Pyx_PyFunction_FastCallDict((func), (args), (nargs), NULL) #if 1 || PY_VERSION_HEX < 0x030600B1 static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, int nargs, PyObject *kwargs); #else #define __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs) _PyFunction_FastCallDict(func, args, nargs, kwargs) #endif #endif /* PyObjectCallMethO.proto */ #if CYTHON_COMPILING_IN_CPYTHON static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg); #endif /* PyObjectCallOneArg.proto */ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg); /* CodeObjectCache.proto */ typedef struct { PyCodeObject* code_object; int code_line; } __Pyx_CodeObjectCacheEntry; struct __Pyx_CodeObjectCache { int count; int max_count; __Pyx_CodeObjectCacheEntry* entries; }; static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL}; static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line); static PyCodeObject *__pyx_find_code_object(int code_line); static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object); /* AddTraceback.proto */ static void __Pyx_AddTraceback(const char *funcname, int c_line, int py_line, const char *filename); /* CIntToPy.proto */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value); /* CIntFromPy.proto */ static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *); /* CIntFromPy.proto */ static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *); /* CheckBinaryVersion.proto */ static int __Pyx_check_binary_version(void); /* FunctionExport.proto */ static int __Pyx_ExportFunction(const char *name, void (*f)(void), const char *sig); /* InitStrings.proto */ static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); /* Module declarations from 'libc.stdint' */ /* Module declarations from 'libcpp' */ /* Module declarations from 'qt' */ /* Module declarations from 'libc.string' */ /* Module declarations from 'libc.stdio' */ /* Module declarations from '_qtui_' */ static long __pyx_v_6_qtui__debug; static UIContainer __pyx_v_6_qtui__qtui; #define __Pyx_MODULE_NAME "_qtui_" int __pyx_module_is_main__qtui_ = 0; /* Implementation of '_qtui_' */ static PyObject *__pyx_builtin_print; static const char __pyx_k_[] = "_"; static const char __pyx_k_main[] = "__main__"; static const char __pyx_k_name[] = "__name__"; static const char __pyx_k_qtui[] = "_qtui_"; static const char __pyx_k_test[] = "__test__"; static const char __pyx_k_print[] = "print"; static const char __pyx_k_utf_8[] = "utf-8"; static const char __pyx_k_encode[] = "encode"; static const char __pyx_k_module[] = "module"; static const char __pyx_k_package[] = "__package__"; static const char __pyx_k_compiled[] = " compiled:"; static const char __pyx_k_DEBUG_FPS[] = "DEBUG_FPS"; static const char __pyx_k_DEBUG_DRAW[] = "DEBUG_DRAW"; static const char __pyx_k_compiled_2[] = "__compiled"; static const char __pyx_k_init_module[] = "init module:"; static const char __pyx_k_DEBUG_MSGEXT[] = "DEBUG_MSGEXT"; static const char __pyx_k_from_package[] = " from package:"; static const char __pyx_k_set_debug_flags[] = "set_debug_flags"; static const char __pyx_k_tmp[] = "/tmp/build/temp.linux-x86_64-3.5/pybiklib/ext/_qtui_.pyx"; static PyObject *__pyx_n_s_; static PyObject *__pyx_n_s_DEBUG_DRAW; static PyObject *__pyx_n_s_DEBUG_FPS; static PyObject *__pyx_n_s_DEBUG_MSGEXT; static PyObject *__pyx_kp_u_compiled; static PyObject *__pyx_n_s_compiled_2; static PyObject *__pyx_n_s_encode; static PyObject *__pyx_kp_u_from_package; static PyObject *__pyx_kp_s_tmp; static PyObject *__pyx_kp_u_init_module; static PyObject *__pyx_n_s_main; static PyObject *__pyx_n_s_module; static PyObject *__pyx_n_s_name; static PyObject *__pyx_n_s_package; static PyObject *__pyx_n_s_print; static PyObject *__pyx_n_s_qtui; static PyObject *__pyx_n_s_set_debug_flags; static PyObject *__pyx_n_s_test; static PyObject *__pyx_kp_u_utf_8; static PyObject *__pyx_pf_6_qtui__set_debug_flags(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_module); /* proto */ static PyObject *__pyx_tuple__2; static PyObject *__pyx_tuple__3; static PyObject *__pyx_codeobj__4; /* "_qtui_.pyx":70 * debug = 0 * * def set_debug_flags(module): # <<<<<<<<<<<<<< * global debug * if module.DEBUG_MSGEXT: debug |= DEBUG_MSGEXT */ /* Python wrapper */ static PyObject *__pyx_pw_6_qtui__1set_debug_flags(PyObject *__pyx_self, PyObject *__pyx_v_module); /*proto*/ static PyMethodDef __pyx_mdef_6_qtui__1set_debug_flags = {"set_debug_flags", (PyCFunction)__pyx_pw_6_qtui__1set_debug_flags, METH_O, 0}; static PyObject *__pyx_pw_6_qtui__1set_debug_flags(PyObject *__pyx_self, PyObject *__pyx_v_module) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("set_debug_flags (wrapper)", 0); __pyx_r = __pyx_pf_6_qtui__set_debug_flags(__pyx_self, ((PyObject *)__pyx_v_module)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_6_qtui__set_debug_flags(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_module) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_t_2; __Pyx_RefNannySetupContext("set_debug_flags", 0); /* "_qtui_.pyx":72 * def set_debug_flags(module): * global debug * if module.DEBUG_MSGEXT: debug |= DEBUG_MSGEXT # <<<<<<<<<<<<<< * if module.DEBUG_DRAW: debug |= DEBUG_DRAW * if module.DEBUG_FPS: debug |= DEBUG_FPS */ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_module, __pyx_n_s_DEBUG_MSGEXT); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 72, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 72, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_2) { __pyx_v_6_qtui__debug = (__pyx_v_6_qtui__debug | __pyx_e_6_qtui__DEBUG_MSGEXT); } /* "_qtui_.pyx":73 * global debug * if module.DEBUG_MSGEXT: debug |= DEBUG_MSGEXT * if module.DEBUG_DRAW: debug |= DEBUG_DRAW # <<<<<<<<<<<<<< * if module.DEBUG_FPS: debug |= DEBUG_FPS * */ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_module, __pyx_n_s_DEBUG_DRAW); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 73, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 73, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_2) { __pyx_v_6_qtui__debug = (__pyx_v_6_qtui__debug | __pyx_e_6_qtui__DEBUG_DRAW); } /* "_qtui_.pyx":74 * if module.DEBUG_MSGEXT: debug |= DEBUG_MSGEXT * if module.DEBUG_DRAW: debug |= DEBUG_DRAW * if module.DEBUG_FPS: debug |= DEBUG_FPS # <<<<<<<<<<<<<< * * ##pxm-FUNC PD */ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_module, __pyx_n_s_DEBUG_FPS); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 74, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 74, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_2) { __pyx_v_6_qtui__debug = (__pyx_v_6_qtui__debug | __pyx_e_6_qtui__DEBUG_FPS); } /* "_qtui_.pyx":70 * debug = 0 * * def set_debug_flags(module): # <<<<<<<<<<<<<< * global debug * if module.DEBUG_MSGEXT: debug |= DEBUG_MSGEXT */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("_qtui_.set_debug_flags", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qtui_.pyx":77 * * ##pxm-FUNC PD * cdef void init_module(): # <<<<<<<<<<<<<< * if debug & DEBUG_MSGEXT: * print('init module:', __name__) */ static void __pyx_f_6_qtui__init_module(void) { __Pyx_RefNannyDeclarations int __pyx_t_1; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; __Pyx_RefNannySetupContext("init_module", 0); /* "_qtui_.pyx":78 * ##pxm-FUNC PD * cdef void init_module(): * if debug & DEBUG_MSGEXT: # <<<<<<<<<<<<<< * print('init module:', __name__) * print(' from package:', __package__) */ __pyx_t_1 = ((__pyx_v_6_qtui__debug & __pyx_e_6_qtui__DEBUG_MSGEXT) != 0); if (__pyx_t_1) { /* "_qtui_.pyx":79 * cdef void init_module(): * if debug & DEBUG_MSGEXT: * print('init module:', __name__) # <<<<<<<<<<<<<< * print(' from package:', __package__) * print(' compiled:', __compiled) */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 79, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 79, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_kp_u_init_module); __Pyx_GIVEREF(__pyx_kp_u_init_module); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_kp_u_init_module); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 79, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qtui_.pyx":80 * if debug & DEBUG_MSGEXT: * print('init module:', __name__) * print(' from package:', __package__) # <<<<<<<<<<<<<< * print(' compiled:', __compiled) * */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_package); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 80, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 80, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_kp_u_from_package); __Pyx_GIVEREF(__pyx_kp_u_from_package); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_kp_u_from_package); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 80, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qtui_.pyx":81 * print('init module:', __name__) * print(' from package:', __package__) * print(' compiled:', __compiled) # <<<<<<<<<<<<<< * * cdef extern from "_qtui__moc.h":# #px+ */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_compiled_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 81, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 81, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_kp_u_compiled); __Pyx_GIVEREF(__pyx_kp_u_compiled); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_kp_u_compiled); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 81, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qtui_.pyx":78 * ##pxm-FUNC PD * cdef void init_module(): * if debug & DEBUG_MSGEXT: # <<<<<<<<<<<<<< * print('init module:', __name__) * print(' from package:', __package__) */ } /* "_qtui_.pyx":77 * * ##pxm-FUNC PD * cdef void init_module(): # <<<<<<<<<<<<<< * if debug & DEBUG_MSGEXT: * print('init module:', __name__) */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_WriteUnraisable("_qtui_.init_module", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); } /* "_qtui_.pyx":791 * * ##pxm-FUNC PD * cdef void init_gettext(gettext): # <<<<<<<<<<<<<< * global _ * _ = gettext */ static void __pyx_f_6_qtui__init_gettext(PyObject *__pyx_v_gettext) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("init_gettext", 0); /* "_qtui_.pyx":793 * cdef void init_gettext(gettext): * global _ * _ = gettext # <<<<<<<<<<<<<< * cdef QString gettext_translate(const char *text, const char *disambiguation) with gil: #px/ * #def gettext_translate(text, disambiguation): */ if (PyDict_SetItem(__pyx_d, __pyx_n_s_, __pyx_v_gettext) < 0) __PYX_ERR(0, 793, __pyx_L1_error) /* "_qtui_.pyx":791 * * ##pxm-FUNC PD * cdef void init_gettext(gettext): # <<<<<<<<<<<<<< * global _ * _ = gettext */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_WriteUnraisable("_qtui_.init_gettext", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); } /* "_qtui_.pyx":794 * global _ * _ = gettext * cdef QString gettext_translate(const char *text, const char *disambiguation) with gil: #px/ # <<<<<<<<<<<<<< * #def gettext_translate(text, disambiguation): * pytext = _(text.decode('utf-8')).encode('utf-8') */ QString gettext_translate(char const *__pyx_v_text, CYTHON_UNUSED char const *__pyx_v_disambiguation) { PyObject *__pyx_v_pytext = NULL; QString __pyx_r; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; char const *__pyx_t_6; Py_ssize_t __pyx_t_7; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("gettext_translate", 0); /* "_qtui_.pyx":796 * cdef QString gettext_translate(const char *text, const char *disambiguation) with gil: #px/ * #def gettext_translate(text, disambiguation): * pytext = _(text.decode('utf-8')).encode('utf-8') # <<<<<<<<<<<<<< * return mk_qstr(pytext, len(pytext)) * */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 796, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_decode_c_string(__pyx_v_text, 0, strlen(__pyx_v_text), NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 796, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } if (!__pyx_t_4) { __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 796, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_3}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 796, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_3}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 796, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif { __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 796, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL; __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_3); __pyx_t_3 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 796, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 796, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 796, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_pytext = __pyx_t_1; __pyx_t_1 = 0; /* "_qtui_.pyx":797 * #def gettext_translate(text, disambiguation): * pytext = _(text.decode('utf-8')).encode('utf-8') * return mk_qstr(pytext, len(pytext)) # <<<<<<<<<<<<<< * * */ __pyx_t_6 = __Pyx_PyObject_AsString(__pyx_v_pytext); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(0, 797, __pyx_L1_error) __pyx_t_7 = PyObject_Length(__pyx_v_pytext); if (unlikely(__pyx_t_7 == -1)) __PYX_ERR(0, 797, __pyx_L1_error) __pyx_r = mk_qstr(__pyx_t_6, __pyx_t_7); goto __pyx_L0; /* "_qtui_.pyx":794 * global _ * _ = gettext * cdef QString gettext_translate(const char *text, const char *disambiguation) with gil: #px/ # <<<<<<<<<<<<<< * #def gettext_translate(text, disambiguation): * pytext = _(text.decode('utf-8')).encode('utf-8') */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_WriteUnraisable("_qtui_.gettext_translate", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_XDECREF(__pyx_v_pytext); __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif return __pyx_r; } /* "_qtui_.pyx":804 * * ##pxm-FUNC PD * cdef void setupUi_main(QMainWindow *window, const QIcon &icon1, const QIcon &icon2, const QIcon &icon3, const QKeySequence &key1, const QKeySequence &key2, cbool editbar_visible, cbool statusbar_visible): # <<<<<<<<<<<<<< * qtui.setupUi_main(window, icon1, icon2, icon3, key1, key2) * qtui.set_visible(debug & (DEBUG_DRAW | DEBUG_FPS), editbar_visible, statusbar_visible) */ static void __pyx_f_6_qtui__setupUi_main(QMainWindow *__pyx_v_window, QIcon const &__pyx_v_icon1, QIcon const &__pyx_v_icon2, QIcon const &__pyx_v_icon3, QKeySequence const &__pyx_v_key1, QKeySequence const &__pyx_v_key2, bool __pyx_v_editbar_visible, bool __pyx_v_statusbar_visible) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("setupUi_main", 0); /* "_qtui_.pyx":805 * ##pxm-FUNC PD * cdef void setupUi_main(QMainWindow *window, const QIcon &icon1, const QIcon &icon2, const QIcon &icon3, const QKeySequence &key1, const QKeySequence &key2, cbool editbar_visible, cbool statusbar_visible): * qtui.setupUi_main(window, icon1, icon2, icon3, key1, key2) # <<<<<<<<<<<<<< * qtui.set_visible(debug & (DEBUG_DRAW | DEBUG_FPS), editbar_visible, statusbar_visible) * */ __pyx_v_6_qtui__qtui.setupUi_main(__pyx_v_window, __pyx_v_icon1, __pyx_v_icon2, __pyx_v_icon3, __pyx_v_key1, __pyx_v_key2); /* "_qtui_.pyx":806 * cdef void setupUi_main(QMainWindow *window, const QIcon &icon1, const QIcon &icon2, const QIcon &icon3, const QKeySequence &key1, const QKeySequence &key2, cbool editbar_visible, cbool statusbar_visible): * qtui.setupUi_main(window, icon1, icon2, icon3, key1, key2) * qtui.set_visible(debug & (DEBUG_DRAW | DEBUG_FPS), editbar_visible, statusbar_visible) # <<<<<<<<<<<<<< * * ##pxm-FUNC PD */ __pyx_v_6_qtui__qtui.set_visible((__pyx_v_6_qtui__debug & (__pyx_e_6_qtui__DEBUG_DRAW | __pyx_e_6_qtui__DEBUG_FPS)), __pyx_v_editbar_visible, __pyx_v_statusbar_visible); /* "_qtui_.pyx":804 * * ##pxm-FUNC PD * cdef void setupUi_main(QMainWindow *window, const QIcon &icon1, const QIcon &icon2, const QIcon &icon3, const QKeySequence &key1, const QKeySequence &key2, cbool editbar_visible, cbool statusbar_visible): # <<<<<<<<<<<<<< * qtui.setupUi_main(window, icon1, icon2, icon3, key1, key2) * qtui.set_visible(debug & (DEBUG_DRAW | DEBUG_FPS), editbar_visible, statusbar_visible) */ /* function exit code */ __Pyx_RefNannyFinishContext(); } /* "_qtui_.pyx":809 * * ##pxm-FUNC PD * cdef void setupUi_pref(QDialog *window, int speed, int speed_min, int speed_max, int mirror_min, int mirror_max, QStandardItemModel *liststore_movekeys): # <<<<<<<<<<<<<< * qtui.setupUi_pref(window, speed, speed_min, speed_max, mirror_min, mirror_max, liststore_movekeys) * */ static void __pyx_f_6_qtui__setupUi_pref(QDialog *__pyx_v_window, int __pyx_v_speed, int __pyx_v_speed_min, int __pyx_v_speed_max, int __pyx_v_mirror_min, int __pyx_v_mirror_max, QStandardItemModel *__pyx_v_liststore_movekeys) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("setupUi_pref", 0); /* "_qtui_.pyx":810 * ##pxm-FUNC PD * cdef void setupUi_pref(QDialog *window, int speed, int speed_min, int speed_max, int mirror_min, int mirror_max, QStandardItemModel *liststore_movekeys): * qtui.setupUi_pref(window, speed, speed_min, speed_max, mirror_min, mirror_max, liststore_movekeys) # <<<<<<<<<<<<<< * * ##pxm-FUNC PD */ __pyx_v_6_qtui__qtui.setupUi_pref(__pyx_v_window, __pyx_v_speed, __pyx_v_speed_min, __pyx_v_speed_max, __pyx_v_mirror_min, __pyx_v_mirror_max, __pyx_v_liststore_movekeys); /* "_qtui_.pyx":809 * * ##pxm-FUNC PD * cdef void setupUi_pref(QDialog *window, int speed, int speed_min, int speed_max, int mirror_min, int mirror_max, QStandardItemModel *liststore_movekeys): # <<<<<<<<<<<<<< * qtui.setupUi_pref(window, speed, speed_min, speed_max, mirror_min, mirror_max, liststore_movekeys) * */ /* function exit code */ __Pyx_RefNannyFinishContext(); } /* "_qtui_.pyx":813 * * ##pxm-FUNC PD * cdef void setupUi_help(QDialog *window, const QString &helptext): # <<<<<<<<<<<<<< * qtui.setupUi_help(window, helptext) * */ static void __pyx_f_6_qtui__setupUi_help(QDialog *__pyx_v_window, QString const &__pyx_v_helptext) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("setupUi_help", 0); /* "_qtui_.pyx":814 * ##pxm-FUNC PD * cdef void setupUi_help(QDialog *window, const QString &helptext): * qtui.setupUi_help(window, helptext) # <<<<<<<<<<<<<< * * ##pxm-FUNC PD */ __pyx_v_6_qtui__qtui.setupUi_help(__pyx_v_window, __pyx_v_helptext); /* "_qtui_.pyx":813 * * ##pxm-FUNC PD * cdef void setupUi_help(QDialog *window, const QString &helptext): # <<<<<<<<<<<<<< * qtui.setupUi_help(window, helptext) * */ /* function exit code */ __Pyx_RefNannyFinishContext(); } /* "_qtui_.pyx":817 * * ##pxm-FUNC PD * cdef void setupUi_about(QDialog *window): # <<<<<<<<<<<<<< * qtui.setupUi_about(window) * */ static void __pyx_f_6_qtui__setupUi_about(QDialog *__pyx_v_window) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("setupUi_about", 0); /* "_qtui_.pyx":818 * ##pxm-FUNC PD * cdef void setupUi_about(QDialog *window): * qtui.setupUi_about(window) # <<<<<<<<<<<<<< * * ##pxm-FUNC PD */ __pyx_v_6_qtui__qtui.setupUi_about(__pyx_v_window); /* "_qtui_.pyx":817 * * ##pxm-FUNC PD * cdef void setupUi_about(QDialog *window): # <<<<<<<<<<<<<< * qtui.setupUi_about(window) * */ /* function exit code */ __Pyx_RefNannyFinishContext(); } /* "_qtui_.pyx":821 * * ##pxm-FUNC PD * cdef void set_shortcuts(const QKeySequence &key1, const QKeySequence &key2, const QKeySequence &key3, const QKeySequence &key4): # <<<<<<<<<<<<<< * qtui.set_shortcuts(key1, key2, key3, key4) * ##pxm-FUNC PD */ static void __pyx_f_6_qtui__set_shortcuts(QKeySequence const &__pyx_v_key1, QKeySequence const &__pyx_v_key2, QKeySequence const &__pyx_v_key3, QKeySequence const &__pyx_v_key4) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("set_shortcuts", 0); /* "_qtui_.pyx":822 * ##pxm-FUNC PD * cdef void set_shortcuts(const QKeySequence &key1, const QKeySequence &key2, const QKeySequence &key3, const QKeySequence &key4): * qtui.set_shortcuts(key1, key2, key3, key4) # <<<<<<<<<<<<<< * ##pxm-FUNC PD * cdef void add_widgets(QMainWindow *window, QLineEdit *edit, QOpenGLWidget *drawing): */ __pyx_v_6_qtui__qtui.set_shortcuts(__pyx_v_key1, __pyx_v_key2, __pyx_v_key3, __pyx_v_key4); /* "_qtui_.pyx":821 * * ##pxm-FUNC PD * cdef void set_shortcuts(const QKeySequence &key1, const QKeySequence &key2, const QKeySequence &key3, const QKeySequence &key4): # <<<<<<<<<<<<<< * qtui.set_shortcuts(key1, key2, key3, key4) * ##pxm-FUNC PD */ /* function exit code */ __Pyx_RefNannyFinishContext(); } /* "_qtui_.pyx":824 * qtui.set_shortcuts(key1, key2, key3, key4) * ##pxm-FUNC PD * cdef void add_widgets(QMainWindow *window, QLineEdit *edit, QOpenGLWidget *drawing): # <<<<<<<<<<<<<< * qtui.add_widgets(window, edit, drawing) * */ static void __pyx_f_6_qtui__add_widgets(QMainWindow *__pyx_v_window, QLineEdit *__pyx_v_edit, QOpenGLWidget *__pyx_v_drawing) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("add_widgets", 0); /* "_qtui_.pyx":825 * ##pxm-FUNC PD * cdef void add_widgets(QMainWindow *window, QLineEdit *edit, QOpenGLWidget *drawing): * qtui.add_widgets(window, edit, drawing) # <<<<<<<<<<<<<< * * ##pxm-FUNC PD nogil */ __pyx_v_6_qtui__qtui.add_widgets(__pyx_v_window, __pyx_v_edit, __pyx_v_drawing); /* "_qtui_.pyx":824 * qtui.set_shortcuts(key1, key2, key3, key4) * ##pxm-FUNC PD * cdef void add_widgets(QMainWindow *window, QLineEdit *edit, QOpenGLWidget *drawing): # <<<<<<<<<<<<<< * qtui.add_widgets(window, edit, drawing) * */ /* function exit code */ __Pyx_RefNannyFinishContext(); } /* "_qtui_.pyx":828 * * ##pxm-FUNC PD nogil * cdef void set_toolbar_visible(cbool visible) nogil: # <<<<<<<<<<<<<< * qtui.set_toolbar_visible(visible) * ##pxm-FUNC PD nogil */ static void __pyx_f_6_qtui__set_toolbar_visible(bool __pyx_v_visible) { /* "_qtui_.pyx":829 * ##pxm-FUNC PD nogil * cdef void set_toolbar_visible(cbool visible) nogil: * qtui.set_toolbar_visible(visible) # <<<<<<<<<<<<<< * ##pxm-FUNC PD nogil * cdef void set_frame_editbar_visible(cbool visible) nogil: */ __pyx_v_6_qtui__qtui.set_toolbar_visible(__pyx_v_visible); /* "_qtui_.pyx":828 * * ##pxm-FUNC PD nogil * cdef void set_toolbar_visible(cbool visible) nogil: # <<<<<<<<<<<<<< * qtui.set_toolbar_visible(visible) * ##pxm-FUNC PD nogil */ /* function exit code */ } /* "_qtui_.pyx":831 * qtui.set_toolbar_visible(visible) * ##pxm-FUNC PD nogil * cdef void set_frame_editbar_visible(cbool visible) nogil: # <<<<<<<<<<<<<< * qtui.set_frame_editbar_visible(visible) * ##pxm-FUNC PD nogil */ static void __pyx_f_6_qtui__set_frame_editbar_visible(bool __pyx_v_visible) { /* "_qtui_.pyx":832 * ##pxm-FUNC PD nogil * cdef void set_frame_editbar_visible(cbool visible) nogil: * qtui.set_frame_editbar_visible(visible) # <<<<<<<<<<<<<< * ##pxm-FUNC PD nogil * cdef void set_statusbar_visible(cbool visible) nogil: */ __pyx_v_6_qtui__qtui.set_frame_editbar_visible(__pyx_v_visible); /* "_qtui_.pyx":831 * qtui.set_toolbar_visible(visible) * ##pxm-FUNC PD nogil * cdef void set_frame_editbar_visible(cbool visible) nogil: # <<<<<<<<<<<<<< * qtui.set_frame_editbar_visible(visible) * ##pxm-FUNC PD nogil */ /* function exit code */ } /* "_qtui_.pyx":834 * qtui.set_frame_editbar_visible(visible) * ##pxm-FUNC PD nogil * cdef void set_statusbar_visible(cbool visible) nogil: # <<<<<<<<<<<<<< * qtui.set_statusbar_visible(visible) * ##pxm-FUNC PD nogil */ static void __pyx_f_6_qtui__set_statusbar_visible(bool __pyx_v_visible) { /* "_qtui_.pyx":835 * ##pxm-FUNC PD nogil * cdef void set_statusbar_visible(cbool visible) nogil: * qtui.set_statusbar_visible(visible) # <<<<<<<<<<<<<< * ##pxm-FUNC PD nogil * cdef void hide_controls() nogil: */ __pyx_v_6_qtui__qtui.set_statusbar_visible(__pyx_v_visible); /* "_qtui_.pyx":834 * qtui.set_frame_editbar_visible(visible) * ##pxm-FUNC PD nogil * cdef void set_statusbar_visible(cbool visible) nogil: # <<<<<<<<<<<<<< * qtui.set_statusbar_visible(visible) * ##pxm-FUNC PD nogil */ /* function exit code */ } /* "_qtui_.pyx":837 * qtui.set_statusbar_visible(visible) * ##pxm-FUNC PD nogil * cdef void hide_controls() nogil: # <<<<<<<<<<<<<< * qtui.hide_controls() * ##pxm-FUNC PD nogil */ static void __pyx_f_6_qtui__hide_controls(void) { /* "_qtui_.pyx":838 * ##pxm-FUNC PD nogil * cdef void hide_controls() nogil: * qtui.hide_controls() # <<<<<<<<<<<<<< * ##pxm-FUNC PD nogil * cdef void get_splitter_sizes(int &s1, int &s2) nogil: */ __pyx_v_6_qtui__qtui.hide_controls(); /* "_qtui_.pyx":837 * qtui.set_statusbar_visible(visible) * ##pxm-FUNC PD nogil * cdef void hide_controls() nogil: # <<<<<<<<<<<<<< * qtui.hide_controls() * ##pxm-FUNC PD nogil */ /* function exit code */ } /* "_qtui_.pyx":840 * qtui.hide_controls() * ##pxm-FUNC PD nogil * cdef void get_splitter_sizes(int &s1, int &s2) nogil: # <<<<<<<<<<<<<< * qtui.get_splitter_sizes(s1, s2) * ##pxm-FUNC PD nogil */ static void __pyx_f_6_qtui__get_splitter_sizes(int &__pyx_v_s1, int &__pyx_v_s2) { /* "_qtui_.pyx":841 * ##pxm-FUNC PD nogil * cdef void get_splitter_sizes(int &s1, int &s2) nogil: * qtui.get_splitter_sizes(s1, s2) # <<<<<<<<<<<<<< * ##pxm-FUNC PD nogil * cdef void set_splitter_sizes(int s1, int s2) nogil: */ __pyx_v_6_qtui__qtui.get_splitter_sizes(__pyx_v_s1, __pyx_v_s2); /* "_qtui_.pyx":840 * qtui.hide_controls() * ##pxm-FUNC PD nogil * cdef void get_splitter_sizes(int &s1, int &s2) nogil: # <<<<<<<<<<<<<< * qtui.get_splitter_sizes(s1, s2) * ##pxm-FUNC PD nogil */ /* function exit code */ } /* "_qtui_.pyx":843 * qtui.get_splitter_sizes(s1, s2) * ##pxm-FUNC PD nogil * cdef void set_splitter_sizes(int s1, int s2) nogil: # <<<<<<<<<<<<<< * qtui.set_splitter_sizes(s1, s2) * ##pxm-FUNC PD nogil */ static void __pyx_f_6_qtui__set_splitter_sizes(int __pyx_v_s1, int __pyx_v_s2) { /* "_qtui_.pyx":844 * ##pxm-FUNC PD nogil * cdef void set_splitter_sizes(int s1, int s2) nogil: * qtui.set_splitter_sizes(s1, s2) # <<<<<<<<<<<<<< * ##pxm-FUNC PD nogil * cdef void splitter_update_minimumsize() nogil: */ __pyx_v_6_qtui__qtui.set_splitter_sizes(__pyx_v_s1, __pyx_v_s2); /* "_qtui_.pyx":843 * qtui.get_splitter_sizes(s1, s2) * ##pxm-FUNC PD nogil * cdef void set_splitter_sizes(int s1, int s2) nogil: # <<<<<<<<<<<<<< * qtui.set_splitter_sizes(s1, s2) * ##pxm-FUNC PD nogil */ /* function exit code */ } /* "_qtui_.pyx":846 * qtui.set_splitter_sizes(s1, s2) * ##pxm-FUNC PD nogil * cdef void splitter_update_minimumsize() nogil: # <<<<<<<<<<<<<< * qtui.splitter_update_minimumsize() * ##pxm-FUNC PD nogil */ static void __pyx_f_6_qtui__splitter_update_minimumsize(void) { /* "_qtui_.pyx":847 * ##pxm-FUNC PD nogil * cdef void splitter_update_minimumsize() nogil: * qtui.splitter_update_minimumsize() # <<<<<<<<<<<<<< * ##pxm-FUNC PD nogil * cdef void set_debug_text(const QString &text) nogil: */ __pyx_v_6_qtui__qtui.splitter_update_minimumsize(); /* "_qtui_.pyx":846 * qtui.set_splitter_sizes(s1, s2) * ##pxm-FUNC PD nogil * cdef void splitter_update_minimumsize() nogil: # <<<<<<<<<<<<<< * qtui.splitter_update_minimumsize() * ##pxm-FUNC PD nogil */ /* function exit code */ } /* "_qtui_.pyx":849 * qtui.splitter_update_minimumsize() * ##pxm-FUNC PD nogil * cdef void set_debug_text(const QString &text) nogil: # <<<<<<<<<<<<<< * qtui.set_debug_text(text) * */ static void __pyx_f_6_qtui__set_debug_text(QString const &__pyx_v_text) { /* "_qtui_.pyx":850 * ##pxm-FUNC PD nogil * cdef void set_debug_text(const QString &text) nogil: * qtui.set_debug_text(text) # <<<<<<<<<<<<<< * * ##pxm-FUNC PD nogil */ __pyx_v_6_qtui__qtui.set_debug_text(__pyx_v_text); /* "_qtui_.pyx":849 * qtui.splitter_update_minimumsize() * ##pxm-FUNC PD nogil * cdef void set_debug_text(const QString &text) nogil: # <<<<<<<<<<<<<< * qtui.set_debug_text(text) * */ /* function exit code */ } /* "_qtui_.pyx":853 * * ##pxm-FUNC PD nogil * cdef void set_toolbar_state(int a, int b, int c, int d, int e) nogil: # <<<<<<<<<<<<<< * qtui.set_toolbar_state(a, b, c, d, e) * */ static void __pyx_f_6_qtui__set_toolbar_state(int __pyx_v_a, int __pyx_v_b, int __pyx_v_c, int __pyx_v_d, int __pyx_v_e) { /* "_qtui_.pyx":854 * ##pxm-FUNC PD nogil * cdef void set_toolbar_state(int a, int b, int c, int d, int e) nogil: * qtui.set_toolbar_state(a, b, c, d, e) # <<<<<<<<<<<<<< * * ##pxm-FUNC PD nogil */ __pyx_v_6_qtui__qtui.set_toolbar_state(__pyx_v_a, __pyx_v_b, __pyx_v_c, __pyx_v_d, __pyx_v_e); /* "_qtui_.pyx":853 * * ##pxm-FUNC PD nogil * cdef void set_toolbar_state(int a, int b, int c, int d, int e) nogil: # <<<<<<<<<<<<<< * qtui.set_toolbar_state(a, b, c, d, e) * */ /* function exit code */ } /* "_qtui_.pyx":857 * * ##pxm-FUNC PD nogil * cdef void clear_sidepane() nogil: # <<<<<<<<<<<<<< * qtui.clear_sidepane() * ##pxm-FUNC PD nogil */ static void __pyx_f_6_qtui__clear_sidepane(void) { /* "_qtui_.pyx":858 * ##pxm-FUNC PD nogil * cdef void clear_sidepane() nogil: * qtui.clear_sidepane() # <<<<<<<<<<<<<< * ##pxm-FUNC PD nogil * cdef QPushButton *create_sidepane_button(const QString &text) nogil: */ __pyx_v_6_qtui__qtui.clear_sidepane(); /* "_qtui_.pyx":857 * * ##pxm-FUNC PD nogil * cdef void clear_sidepane() nogil: # <<<<<<<<<<<<<< * qtui.clear_sidepane() * ##pxm-FUNC PD nogil */ /* function exit code */ } /* "_qtui_.pyx":860 * qtui.clear_sidepane() * ##pxm-FUNC PD nogil * cdef QPushButton *create_sidepane_button(const QString &text) nogil: # <<<<<<<<<<<<<< * return qtui.create_sidepane_button(text) * ##pxm-FUNC PD nogil */ static QPushButton *__pyx_f_6_qtui__create_sidepane_button(QString const &__pyx_v_text) { QPushButton *__pyx_r; /* "_qtui_.pyx":861 * ##pxm-FUNC PD nogil * cdef QPushButton *create_sidepane_button(const QString &text) nogil: * return qtui.create_sidepane_button(text) # <<<<<<<<<<<<<< * ##pxm-FUNC PD nogil * cdef QTreeView *create_sidepane_treeview(QStandardItemModel *treestore, int i) nogil: */ __pyx_r = __pyx_v_6_qtui__qtui.create_sidepane_button(__pyx_v_text); goto __pyx_L0; /* "_qtui_.pyx":860 * qtui.clear_sidepane() * ##pxm-FUNC PD nogil * cdef QPushButton *create_sidepane_button(const QString &text) nogil: # <<<<<<<<<<<<<< * return qtui.create_sidepane_button(text) * ##pxm-FUNC PD nogil */ /* function exit code */ __pyx_L0:; return __pyx_r; } /* "_qtui_.pyx":863 * return qtui.create_sidepane_button(text) * ##pxm-FUNC PD nogil * cdef QTreeView *create_sidepane_treeview(QStandardItemModel *treestore, int i) nogil: # <<<<<<<<<<<<<< * return qtui.create_sidepane_treeview(treestore, i) * ##pxm-FUNC PD nogil */ static QTreeView *__pyx_f_6_qtui__create_sidepane_treeview(QStandardItemModel *__pyx_v_treestore, int __pyx_v_i) { QTreeView *__pyx_r; /* "_qtui_.pyx":864 * ##pxm-FUNC PD nogil * cdef QTreeView *create_sidepane_treeview(QStandardItemModel *treestore, int i) nogil: * return qtui.create_sidepane_treeview(treestore, i) # <<<<<<<<<<<<<< * ##pxm-FUNC PD nogil * cdef void set_active_plugin_group(int i) nogil: */ __pyx_r = __pyx_v_6_qtui__qtui.create_sidepane_treeview(__pyx_v_treestore, __pyx_v_i); goto __pyx_L0; /* "_qtui_.pyx":863 * return qtui.create_sidepane_button(text) * ##pxm-FUNC PD nogil * cdef QTreeView *create_sidepane_treeview(QStandardItemModel *treestore, int i) nogil: # <<<<<<<<<<<<<< * return qtui.create_sidepane_treeview(treestore, i) * ##pxm-FUNC PD nogil */ /* function exit code */ __pyx_L0:; return __pyx_r; } /* "_qtui_.pyx":866 * return qtui.create_sidepane_treeview(treestore, i) * ##pxm-FUNC PD nogil * cdef void set_active_plugin_group(int i) nogil: # <<<<<<<<<<<<<< * qtui.set_active_plugin_group(i) * ##pxm-FUNC PD nogil */ static void __pyx_f_6_qtui__set_active_plugin_group(int __pyx_v_i) { /* "_qtui_.pyx":867 * ##pxm-FUNC PD nogil * cdef void set_active_plugin_group(int i) nogil: * qtui.set_active_plugin_group(i) # <<<<<<<<<<<<<< * ##pxm-FUNC PD nogil * cdef void set_active_plugin_group_by_obj(QObject *obj) nogil: */ __pyx_v_6_qtui__qtui.set_active_plugin_group(__pyx_v_i); /* "_qtui_.pyx":866 * return qtui.create_sidepane_treeview(treestore, i) * ##pxm-FUNC PD nogil * cdef void set_active_plugin_group(int i) nogil: # <<<<<<<<<<<<<< * qtui.set_active_plugin_group(i) * ##pxm-FUNC PD nogil */ /* function exit code */ } /* "_qtui_.pyx":869 * qtui.set_active_plugin_group(i) * ##pxm-FUNC PD nogil * cdef void set_active_plugin_group_by_obj(QObject *obj) nogil: # <<<<<<<<<<<<<< * qtui.set_active_plugin_group_by_obj(obj) * ##pxm-FUNC PD nogil */ static void __pyx_f_6_qtui__set_active_plugin_group_by_obj(QObject *__pyx_v_obj) { /* "_qtui_.pyx":870 * ##pxm-FUNC PD nogil * cdef void set_active_plugin_group_by_obj(QObject *obj) nogil: * qtui.set_active_plugin_group_by_obj(obj) # <<<<<<<<<<<<<< * ##pxm-FUNC PD nogil * cdef int get_plugin_group_count() nogil: */ __pyx_v_6_qtui__qtui.set_active_plugin_group_by_obj(__pyx_v_obj); /* "_qtui_.pyx":869 * qtui.set_active_plugin_group(i) * ##pxm-FUNC PD nogil * cdef void set_active_plugin_group_by_obj(QObject *obj) nogil: # <<<<<<<<<<<<<< * qtui.set_active_plugin_group_by_obj(obj) * ##pxm-FUNC PD nogil */ /* function exit code */ } /* "_qtui_.pyx":872 * qtui.set_active_plugin_group_by_obj(obj) * ##pxm-FUNC PD nogil * cdef int get_plugin_group_count() nogil: # <<<<<<<<<<<<<< * return qtui.get_plugin_group_count() * ##pxm-FUNC PD nogil */ static int __pyx_f_6_qtui__get_plugin_group_count(void) { int __pyx_r; /* "_qtui_.pyx":873 * ##pxm-FUNC PD nogil * cdef int get_plugin_group_count() nogil: * return qtui.get_plugin_group_count() # <<<<<<<<<<<<<< * ##pxm-FUNC PD nogil * cdef QModelIndex root_index(int i) nogil: */ __pyx_r = __pyx_v_6_qtui__qtui.get_plugin_group_count(); goto __pyx_L0; /* "_qtui_.pyx":872 * qtui.set_active_plugin_group_by_obj(obj) * ##pxm-FUNC PD nogil * cdef int get_plugin_group_count() nogil: # <<<<<<<<<<<<<< * return qtui.get_plugin_group_count() * ##pxm-FUNC PD nogil */ /* function exit code */ __pyx_L0:; return __pyx_r; } /* "_qtui_.pyx":875 * return qtui.get_plugin_group_count() * ##pxm-FUNC PD nogil * cdef QModelIndex root_index(int i) nogil: # <<<<<<<<<<<<<< * return qtui.root_index(i) * ##pxm-FUNC PD nogil */ static QModelIndex __pyx_f_6_qtui__root_index(int __pyx_v_i) { QModelIndex __pyx_r; /* "_qtui_.pyx":876 * ##pxm-FUNC PD nogil * cdef QModelIndex root_index(int i) nogil: * return qtui.root_index(i) # <<<<<<<<<<<<<< * ##pxm-FUNC PD nogil * cdef void hide_row(int i, cbool hide) nogil: */ __pyx_r = __pyx_v_6_qtui__qtui.root_index(__pyx_v_i); goto __pyx_L0; /* "_qtui_.pyx":875 * return qtui.get_plugin_group_count() * ##pxm-FUNC PD nogil * cdef QModelIndex root_index(int i) nogil: # <<<<<<<<<<<<<< * return qtui.root_index(i) * ##pxm-FUNC PD nogil */ /* function exit code */ __pyx_L0:; return __pyx_r; } /* "_qtui_.pyx":878 * return qtui.root_index(i) * ##pxm-FUNC PD nogil * cdef void hide_row(int i, cbool hide) nogil: # <<<<<<<<<<<<<< * qtui.hide_row(i, hide) * ##pxm-FUNC PD nogil */ static void __pyx_f_6_qtui__hide_row(int __pyx_v_i, bool __pyx_v_hide) { /* "_qtui_.pyx":879 * ##pxm-FUNC PD nogil * cdef void hide_row(int i, cbool hide) nogil: * qtui.hide_row(i, hide) # <<<<<<<<<<<<<< * ##pxm-FUNC PD nogil * cdef void set_row_hidden(int treeview, int row, const QModelIndex &index, cbool hide) nogil: */ __pyx_v_6_qtui__qtui.hide_row(__pyx_v_i, __pyx_v_hide); /* "_qtui_.pyx":878 * return qtui.root_index(i) * ##pxm-FUNC PD nogil * cdef void hide_row(int i, cbool hide) nogil: # <<<<<<<<<<<<<< * qtui.hide_row(i, hide) * ##pxm-FUNC PD nogil */ /* function exit code */ } /* "_qtui_.pyx":881 * qtui.hide_row(i, hide) * ##pxm-FUNC PD nogil * cdef void set_row_hidden(int treeview, int row, const QModelIndex &index, cbool hide) nogil: # <<<<<<<<<<<<<< * qtui.set_row_hidden(treeview, row, index, hide) * ##pxm-FUNC PD nogil */ static void __pyx_f_6_qtui__set_row_hidden(int __pyx_v_treeview, int __pyx_v_row, QModelIndex const &__pyx_v_index, bool __pyx_v_hide) { /* "_qtui_.pyx":882 * ##pxm-FUNC PD nogil * cdef void set_row_hidden(int treeview, int row, const QModelIndex &index, cbool hide) nogil: * qtui.set_row_hidden(treeview, row, index, hide) # <<<<<<<<<<<<<< * ##pxm-FUNC PD nogil * cdef int splitter_pos() nogil: */ __pyx_v_6_qtui__qtui.set_row_hidden(__pyx_v_treeview, __pyx_v_row, __pyx_v_index, __pyx_v_hide); /* "_qtui_.pyx":881 * qtui.hide_row(i, hide) * ##pxm-FUNC PD nogil * cdef void set_row_hidden(int treeview, int row, const QModelIndex &index, cbool hide) nogil: # <<<<<<<<<<<<<< * qtui.set_row_hidden(treeview, row, index, hide) * ##pxm-FUNC PD nogil */ /* function exit code */ } /* "_qtui_.pyx":884 * qtui.set_row_hidden(treeview, row, index, hide) * ##pxm-FUNC PD nogil * cdef int splitter_pos() nogil: # <<<<<<<<<<<<<< * return qtui.splitter_pos() * */ static int __pyx_f_6_qtui__splitter_pos(void) { int __pyx_r; /* "_qtui_.pyx":885 * ##pxm-FUNC PD nogil * cdef int splitter_pos() nogil: * return qtui.splitter_pos() # <<<<<<<<<<<<<< * * ##pxm-FUNC PD nogil */ __pyx_r = __pyx_v_6_qtui__qtui.splitter_pos(); goto __pyx_L0; /* "_qtui_.pyx":884 * qtui.set_row_hidden(treeview, row, index, hide) * ##pxm-FUNC PD nogil * cdef int splitter_pos() nogil: # <<<<<<<<<<<<<< * return qtui.splitter_pos() * */ /* function exit code */ __pyx_L0:; return __pyx_r; } /* "_qtui_.pyx":888 * * ##pxm-FUNC PD nogil * cdef void preferences_block_signals(cbool block) nogil: # <<<<<<<<<<<<<< * qtui.preferences_block_signals(block) * ##pxm-FUNC PD nogil */ static void __pyx_f_6_qtui__preferences_block_signals(bool __pyx_v_block) { /* "_qtui_.pyx":889 * ##pxm-FUNC PD nogil * cdef void preferences_block_signals(cbool block) nogil: * qtui.preferences_block_signals(block) # <<<<<<<<<<<<<< * ##pxm-FUNC PD nogil * cdef void combobox_add_shaderitem(const QString &name, const QString &nick) nogil: */ __pyx_v_6_qtui__qtui.preferences_block_signals(__pyx_v_block); /* "_qtui_.pyx":888 * * ##pxm-FUNC PD nogil * cdef void preferences_block_signals(cbool block) nogil: # <<<<<<<<<<<<<< * qtui.preferences_block_signals(block) * ##pxm-FUNC PD nogil */ /* function exit code */ } /* "_qtui_.pyx":891 * qtui.preferences_block_signals(block) * ##pxm-FUNC PD nogil * cdef void combobox_add_shaderitem(const QString &name, const QString &nick) nogil: # <<<<<<<<<<<<<< * qtui.combobox_add_shaderitem(name, nick) * ##pxm-FUNC PD nogil */ static void __pyx_f_6_qtui__combobox_add_shaderitem(QString const &__pyx_v_name, QString const &__pyx_v_nick) { /* "_qtui_.pyx":892 * ##pxm-FUNC PD nogil * cdef void combobox_add_shaderitem(const QString &name, const QString &nick) nogil: * qtui.combobox_add_shaderitem(name, nick) # <<<<<<<<<<<<<< * ##pxm-FUNC PD nogil * cdef void combobox_add_samplesitem(const QString &name, const QString &nick) nogil: */ __pyx_v_6_qtui__qtui.combobox_add_shaderitem(__pyx_v_name, __pyx_v_nick); /* "_qtui_.pyx":891 * qtui.preferences_block_signals(block) * ##pxm-FUNC PD nogil * cdef void combobox_add_shaderitem(const QString &name, const QString &nick) nogil: # <<<<<<<<<<<<<< * qtui.combobox_add_shaderitem(name, nick) * ##pxm-FUNC PD nogil */ /* function exit code */ } /* "_qtui_.pyx":894 * qtui.combobox_add_shaderitem(name, nick) * ##pxm-FUNC PD nogil * cdef void combobox_add_samplesitem(const QString &name, const QString &nick) nogil: # <<<<<<<<<<<<<< * qtui.combobox_add_samplesitem(name, nick) * ##pxm-FUNC PD nogil */ static void __pyx_f_6_qtui__combobox_add_samplesitem(QString const &__pyx_v_name, QString const &__pyx_v_nick) { /* "_qtui_.pyx":895 * ##pxm-FUNC PD nogil * cdef void combobox_add_samplesitem(const QString &name, const QString &nick) nogil: * qtui.combobox_add_samplesitem(name, nick) # <<<<<<<<<<<<<< * ##pxm-FUNC PD nogil * cdef void add_movekey_row() nogil: */ __pyx_v_6_qtui__qtui.combobox_add_samplesitem(__pyx_v_name, __pyx_v_nick); /* "_qtui_.pyx":894 * qtui.combobox_add_shaderitem(name, nick) * ##pxm-FUNC PD nogil * cdef void combobox_add_samplesitem(const QString &name, const QString &nick) nogil: # <<<<<<<<<<<<<< * qtui.combobox_add_samplesitem(name, nick) * ##pxm-FUNC PD nogil */ /* function exit code */ } /* "_qtui_.pyx":897 * qtui.combobox_add_samplesitem(name, nick) * ##pxm-FUNC PD nogil * cdef void add_movekey_row() nogil: # <<<<<<<<<<<<<< * qtui.add_movekey_row() * ##pxm-FUNC PD nogil */ static void __pyx_f_6_qtui__add_movekey_row(void) { /* "_qtui_.pyx":898 * ##pxm-FUNC PD nogil * cdef void add_movekey_row() nogil: * qtui.add_movekey_row() # <<<<<<<<<<<<<< * ##pxm-FUNC PD nogil * cdef void remove_movekey_row() nogil: */ __pyx_v_6_qtui__qtui.add_movekey_row(); /* "_qtui_.pyx":897 * qtui.combobox_add_samplesitem(name, nick) * ##pxm-FUNC PD nogil * cdef void add_movekey_row() nogil: # <<<<<<<<<<<<<< * qtui.add_movekey_row() * ##pxm-FUNC PD nogil */ /* function exit code */ } /* "_qtui_.pyx":900 * qtui.add_movekey_row() * ##pxm-FUNC PD nogil * cdef void remove_movekey_row() nogil: # <<<<<<<<<<<<<< * qtui.remove_movekey_row() * ##pxm-FUNC PD nogil */ static void __pyx_f_6_qtui__remove_movekey_row(void) { /* "_qtui_.pyx":901 * ##pxm-FUNC PD nogil * cdef void remove_movekey_row() nogil: * qtui.remove_movekey_row() # <<<<<<<<<<<<<< * ##pxm-FUNC PD nogil * cdef void add_liststore_faces_row(const QString &name, const QString &key) nogil: */ __pyx_v_6_qtui__qtui.remove_movekey_row(); /* "_qtui_.pyx":900 * qtui.add_movekey_row() * ##pxm-FUNC PD nogil * cdef void remove_movekey_row() nogil: # <<<<<<<<<<<<<< * qtui.remove_movekey_row() * ##pxm-FUNC PD nogil */ /* function exit code */ } /* "_qtui_.pyx":903 * qtui.remove_movekey_row() * ##pxm-FUNC PD nogil * cdef void add_liststore_faces_row(const QString &name, const QString &key) nogil: # <<<<<<<<<<<<<< * qtui.add_liststore_faces_row(name, key) * ##pxm-FUNC PD nogil */ static void __pyx_f_6_qtui__add_liststore_faces_row(QString const &__pyx_v_name, QString const &__pyx_v_key) { /* "_qtui_.pyx":904 * ##pxm-FUNC PD nogil * cdef void add_liststore_faces_row(const QString &name, const QString &key) nogil: * qtui.add_liststore_faces_row(name, key) # <<<<<<<<<<<<<< * ##pxm-FUNC PD nogil * cdef void finalize_liststore_faces(QWidget *window) nogil: */ __pyx_v_6_qtui__qtui.add_liststore_faces_row(__pyx_v_name, __pyx_v_key); /* "_qtui_.pyx":903 * qtui.remove_movekey_row() * ##pxm-FUNC PD nogil * cdef void add_liststore_faces_row(const QString &name, const QString &key) nogil: # <<<<<<<<<<<<<< * qtui.add_liststore_faces_row(name, key) * ##pxm-FUNC PD nogil */ /* function exit code */ } /* "_qtui_.pyx":906 * qtui.add_liststore_faces_row(name, key) * ##pxm-FUNC PD nogil * cdef void finalize_liststore_faces(QWidget *window) nogil: # <<<<<<<<<<<<<< * qtui.finalize_liststore_faces(window) * ##pxm-FUNC PD nogil */ static void __pyx_f_6_qtui__finalize_liststore_faces(QWidget *__pyx_v_window) { /* "_qtui_.pyx":907 * ##pxm-FUNC PD nogil * cdef void finalize_liststore_faces(QWidget *window) nogil: * qtui.finalize_liststore_faces(window) # <<<<<<<<<<<<<< * ##pxm-FUNC PD nogil * cdef QString get_liststore_faces_facekey(const QModelIndex &index) nogil: */ __pyx_v_6_qtui__qtui.finalize_liststore_faces(__pyx_v_window); /* "_qtui_.pyx":906 * qtui.add_liststore_faces_row(name, key) * ##pxm-FUNC PD nogil * cdef void finalize_liststore_faces(QWidget *window) nogil: # <<<<<<<<<<<<<< * qtui.finalize_liststore_faces(window) * ##pxm-FUNC PD nogil */ /* function exit code */ } /* "_qtui_.pyx":909 * qtui.finalize_liststore_faces(window) * ##pxm-FUNC PD nogil * cdef QString get_liststore_faces_facekey(const QModelIndex &index) nogil: # <<<<<<<<<<<<<< * return qtui.get_liststore_faces_facekey(index) * ##pxm-FUNC PD nogil */ static QString __pyx_f_6_qtui__get_liststore_faces_facekey(QModelIndex const &__pyx_v_index) { QString __pyx_r; /* "_qtui_.pyx":910 * ##pxm-FUNC PD nogil * cdef QString get_liststore_faces_facekey(const QModelIndex &index) nogil: * return qtui.get_liststore_faces_facekey(index) # <<<<<<<<<<<<<< * ##pxm-FUNC PD nogil * cdef void set_button_color(const QString &color) nogil: */ __pyx_r = __pyx_v_6_qtui__qtui.get_liststore_faces_facekey(__pyx_v_index); goto __pyx_L0; /* "_qtui_.pyx":909 * qtui.finalize_liststore_faces(window) * ##pxm-FUNC PD nogil * cdef QString get_liststore_faces_facekey(const QModelIndex &index) nogil: # <<<<<<<<<<<<<< * return qtui.get_liststore_faces_facekey(index) * ##pxm-FUNC PD nogil */ /* function exit code */ __pyx_L0:; return __pyx_r; } /* "_qtui_.pyx":912 * return qtui.get_liststore_faces_facekey(index) * ##pxm-FUNC PD nogil * cdef void set_button_color(const QString &color) nogil: # <<<<<<<<<<<<<< * qtui.set_button_color(color) * ##pxm-FUNC PD nogil */ static void __pyx_f_6_qtui__set_button_color(QString const &__pyx_v_color) { /* "_qtui_.pyx":913 * ##pxm-FUNC PD nogil * cdef void set_button_color(const QString &color) nogil: * qtui.set_button_color(color) # <<<<<<<<<<<<<< * ##pxm-FUNC PD nogil * cdef QString color_dialog(QWidget *parent, const QString &color) nogil: */ __pyx_v_6_qtui__qtui.set_button_color(__pyx_v_color); /* "_qtui_.pyx":912 * return qtui.get_liststore_faces_facekey(index) * ##pxm-FUNC PD nogil * cdef void set_button_color(const QString &color) nogil: # <<<<<<<<<<<<<< * qtui.set_button_color(color) * ##pxm-FUNC PD nogil */ /* function exit code */ } /* "_qtui_.pyx":915 * qtui.set_button_color(color) * ##pxm-FUNC PD nogil * cdef QString color_dialog(QWidget *parent, const QString &color) nogil: # <<<<<<<<<<<<<< * return qtui.color_dialog(parent, color) * ##pxm-FUNC PD nogil */ static QString __pyx_f_6_qtui__color_dialog(QWidget *__pyx_v_parent, QString const &__pyx_v_color) { QString __pyx_r; /* "_qtui_.pyx":916 * ##pxm-FUNC PD nogil * cdef QString color_dialog(QWidget *parent, const QString &color) nogil: * return qtui.color_dialog(parent, color) # <<<<<<<<<<<<<< * ##pxm-FUNC PD nogil * cdef void set_imagemode(int imagemode) nogil: */ __pyx_r = __pyx_v_6_qtui__qtui.color_dialog(__pyx_v_parent, __pyx_v_color); goto __pyx_L0; /* "_qtui_.pyx":915 * qtui.set_button_color(color) * ##pxm-FUNC PD nogil * cdef QString color_dialog(QWidget *parent, const QString &color) nogil: # <<<<<<<<<<<<<< * return qtui.color_dialog(parent, color) * ##pxm-FUNC PD nogil */ /* function exit code */ __pyx_L0:; return __pyx_r; } /* "_qtui_.pyx":918 * return qtui.color_dialog(parent, color) * ##pxm-FUNC PD nogil * cdef void set_imagemode(int imagemode) nogil: # <<<<<<<<<<<<<< * qtui.set_imagemode(imagemode) * ##pxm-FUNC PD nogil */ static void __pyx_f_6_qtui__set_imagemode(int __pyx_v_imagemode) { /* "_qtui_.pyx":919 * ##pxm-FUNC PD nogil * cdef void set_imagemode(int imagemode) nogil: * qtui.set_imagemode(imagemode) # <<<<<<<<<<<<<< * ##pxm-FUNC PD nogil * cdef void add_combobox_image_item(const QIcon &icon, const QString &text, const QString &filename) nogil: */ __pyx_v_6_qtui__qtui.set_imagemode(__pyx_v_imagemode); /* "_qtui_.pyx":918 * return qtui.color_dialog(parent, color) * ##pxm-FUNC PD nogil * cdef void set_imagemode(int imagemode) nogil: # <<<<<<<<<<<<<< * qtui.set_imagemode(imagemode) * ##pxm-FUNC PD nogil */ /* function exit code */ } /* "_qtui_.pyx":921 * qtui.set_imagemode(imagemode) * ##pxm-FUNC PD nogil * cdef void add_combobox_image_item(const QIcon &icon, const QString &text, const QString &filename) nogil: # <<<<<<<<<<<<<< * qtui.add_combobox_image_item(icon, text, filename) * ##pxm-FUNC PD nogil */ static void __pyx_f_6_qtui__add_combobox_image_item(QIcon const &__pyx_v_icon, QString const &__pyx_v_text, QString const &__pyx_v_filename) { /* "_qtui_.pyx":922 * ##pxm-FUNC PD nogil * cdef void add_combobox_image_item(const QIcon &icon, const QString &text, const QString &filename) nogil: * qtui.add_combobox_image_item(icon, text, filename) # <<<<<<<<<<<<<< * ##pxm-FUNC PD nogil * cdef void set_combobox_image(int index_icon, const QIcon &icon, int index) nogil: */ __pyx_v_6_qtui__qtui.add_combobox_image_item(__pyx_v_icon, __pyx_v_text, __pyx_v_filename); /* "_qtui_.pyx":921 * qtui.set_imagemode(imagemode) * ##pxm-FUNC PD nogil * cdef void add_combobox_image_item(const QIcon &icon, const QString &text, const QString &filename) nogil: # <<<<<<<<<<<<<< * qtui.add_combobox_image_item(icon, text, filename) * ##pxm-FUNC PD nogil */ /* function exit code */ } /* "_qtui_.pyx":924 * qtui.add_combobox_image_item(icon, text, filename) * ##pxm-FUNC PD nogil * cdef void set_combobox_image(int index_icon, const QIcon &icon, int index) nogil: # <<<<<<<<<<<<<< * qtui.set_combobox_image(index_icon, icon, index) * ##pxm-FUNC PD nogil */ static void __pyx_f_6_qtui__set_combobox_image(int __pyx_v_index_icon, QIcon const &__pyx_v_icon, int __pyx_v_index) { /* "_qtui_.pyx":925 * ##pxm-FUNC PD nogil * cdef void set_combobox_image(int index_icon, const QIcon &icon, int index) nogil: * qtui.set_combobox_image(index_icon, icon, index) # <<<<<<<<<<<<<< * ##pxm-FUNC PD nogil * cdef void set_button_background_color(const QString &color) nogil: */ __pyx_v_6_qtui__qtui.set_combobox_image(__pyx_v_index_icon, __pyx_v_icon, __pyx_v_index); /* "_qtui_.pyx":924 * qtui.add_combobox_image_item(icon, text, filename) * ##pxm-FUNC PD nogil * cdef void set_combobox_image(int index_icon, const QIcon &icon, int index) nogil: # <<<<<<<<<<<<<< * qtui.set_combobox_image(index_icon, icon, index) * ##pxm-FUNC PD nogil */ /* function exit code */ } /* "_qtui_.pyx":927 * qtui.set_combobox_image(index_icon, icon, index) * ##pxm-FUNC PD nogil * cdef void set_button_background_color(const QString &color) nogil: # <<<<<<<<<<<<<< * qtui.set_button_background_color(color) * */ static void __pyx_f_6_qtui__set_button_background_color(QString const &__pyx_v_color) { /* "_qtui_.pyx":928 * ##pxm-FUNC PD nogil * cdef void set_button_background_color(const QString &color) nogil: * qtui.set_button_background_color(color) # <<<<<<<<<<<<<< * * ##pxm-FUNC PD nogil */ __pyx_v_6_qtui__qtui.set_button_background_color(__pyx_v_color); /* "_qtui_.pyx":927 * qtui.set_combobox_image(index_icon, icon, index) * ##pxm-FUNC PD nogil * cdef void set_button_background_color(const QString &color) nogil: # <<<<<<<<<<<<<< * qtui.set_button_background_color(color) * */ /* function exit code */ } /* "_qtui_.pyx":931 * * ##pxm-FUNC PD nogil * cdef void fill_page(QVariant items, const QString &title) nogil: # <<<<<<<<<<<<<< * qtui.fill_page(items, title) * ##pxm-FUNC PD nogil */ static void __pyx_f_6_qtui__fill_page(QVariant __pyx_v_items, QString const &__pyx_v_title) { /* "_qtui_.pyx":932 * ##pxm-FUNC PD nogil * cdef void fill_page(QVariant items, const QString &title) nogil: * qtui.fill_page(items, title) # <<<<<<<<<<<<<< * ##pxm-FUNC PD nogil * cdef void set_page(int i) nogil: */ __pyx_v_6_qtui__qtui.fill_page(__pyx_v_items, __pyx_v_title); /* "_qtui_.pyx":931 * * ##pxm-FUNC PD nogil * cdef void fill_page(QVariant items, const QString &title) nogil: # <<<<<<<<<<<<<< * qtui.fill_page(items, title) * ##pxm-FUNC PD nogil */ /* function exit code */ } /* "_qtui_.pyx":934 * qtui.fill_page(items, title) * ##pxm-FUNC PD nogil * cdef void set_page(int i) nogil: # <<<<<<<<<<<<<< * qtui.set_page(i) * */ static void __pyx_f_6_qtui__set_page(int __pyx_v_i) { /* "_qtui_.pyx":935 * ##pxm-FUNC PD nogil * cdef void set_page(int i) nogil: * qtui.set_page(i) # <<<<<<<<<<<<<< * * ##pxm-FUNC PD nogil */ __pyx_v_6_qtui__qtui.set_page(__pyx_v_i); /* "_qtui_.pyx":934 * qtui.fill_page(items, title) * ##pxm-FUNC PD nogil * cdef void set_page(int i) nogil: # <<<<<<<<<<<<<< * qtui.set_page(i) * */ /* function exit code */ } /* "_qtui_.pyx":938 * * ##pxm-FUNC PD nogil * cdef void fill_header(const QString &fileName, const QString &appname, const QString &version, const QString &desc) nogil: # <<<<<<<<<<<<<< * qtui.fill_header(fileName, appname, version, desc) * ##pxm-FUNC PD nogil */ static void __pyx_f_6_qtui__fill_header(QString const &__pyx_v_fileName, QString const &__pyx_v_appname, QString const &__pyx_v_version, QString const &__pyx_v_desc) { /* "_qtui_.pyx":939 * ##pxm-FUNC PD nogil * cdef void fill_header(const QString &fileName, const QString &appname, const QString &version, const QString &desc) nogil: * qtui.fill_header(fileName, appname, version, desc) # <<<<<<<<<<<<<< * ##pxm-FUNC PD nogil * cdef void fill_about_tab(const QString ©r, const QString &website, const QString &translators) nogil: */ __pyx_v_6_qtui__qtui.fill_header(__pyx_v_fileName, __pyx_v_appname, __pyx_v_version, __pyx_v_desc); /* "_qtui_.pyx":938 * * ##pxm-FUNC PD nogil * cdef void fill_header(const QString &fileName, const QString &appname, const QString &version, const QString &desc) nogil: # <<<<<<<<<<<<<< * qtui.fill_header(fileName, appname, version, desc) * ##pxm-FUNC PD nogil */ /* function exit code */ } /* "_qtui_.pyx":941 * qtui.fill_header(fileName, appname, version, desc) * ##pxm-FUNC PD nogil * cdef void fill_about_tab(const QString ©r, const QString &website, const QString &translators) nogil: # <<<<<<<<<<<<<< * qtui.fill_about_tab(copyr, website, translators) * ##pxm-FUNC PD nogil */ static void __pyx_f_6_qtui__fill_about_tab(QString const &__pyx_v_copyr, QString const &__pyx_v_website, QString const &__pyx_v_translators) { /* "_qtui_.pyx":942 * ##pxm-FUNC PD nogil * cdef void fill_about_tab(const QString ©r, const QString &website, const QString &translators) nogil: * qtui.fill_about_tab(copyr, website, translators) # <<<<<<<<<<<<<< * ##pxm-FUNC PD nogil * cdef void fill_contribute_tab(const QString &contribute) nogil: */ __pyx_v_6_qtui__qtui.fill_about_tab(__pyx_v_copyr, __pyx_v_website, __pyx_v_translators); /* "_qtui_.pyx":941 * qtui.fill_header(fileName, appname, version, desc) * ##pxm-FUNC PD nogil * cdef void fill_about_tab(const QString ©r, const QString &website, const QString &translators) nogil: # <<<<<<<<<<<<<< * qtui.fill_about_tab(copyr, website, translators) * ##pxm-FUNC PD nogil */ /* function exit code */ } /* "_qtui_.pyx":944 * qtui.fill_about_tab(copyr, website, translators) * ##pxm-FUNC PD nogil * cdef void fill_contribute_tab(const QString &contribute) nogil: # <<<<<<<<<<<<<< * qtui.fill_contribute_tab(contribute) * ##pxm-FUNC PD nogil */ static void __pyx_f_6_qtui__fill_contribute_tab(QString const &__pyx_v_contribute) { /* "_qtui_.pyx":945 * ##pxm-FUNC PD nogil * cdef void fill_contribute_tab(const QString &contribute) nogil: * qtui.fill_contribute_tab(contribute) # <<<<<<<<<<<<<< * ##pxm-FUNC PD nogil * cdef void fill_license_tab(const QString &license_short, cbool license_notfound, const QString &license_full) nogil: */ __pyx_v_6_qtui__qtui.fill_contribute_tab(__pyx_v_contribute); /* "_qtui_.pyx":944 * qtui.fill_about_tab(copyr, website, translators) * ##pxm-FUNC PD nogil * cdef void fill_contribute_tab(const QString &contribute) nogil: # <<<<<<<<<<<<<< * qtui.fill_contribute_tab(contribute) * ##pxm-FUNC PD nogil */ /* function exit code */ } /* "_qtui_.pyx":947 * qtui.fill_contribute_tab(contribute) * ##pxm-FUNC PD nogil * cdef void fill_license_tab(const QString &license_short, cbool license_notfound, const QString &license_full) nogil: # <<<<<<<<<<<<<< * qtui.fill_license_tab(license_short, license_notfound, license_full) * ##pxm-FUNC PD nogil */ static void __pyx_f_6_qtui__fill_license_tab(QString const &__pyx_v_license_short, bool __pyx_v_license_notfound, QString const &__pyx_v_license_full) { /* "_qtui_.pyx":948 * ##pxm-FUNC PD nogil * cdef void fill_license_tab(const QString &license_short, cbool license_notfound, const QString &license_full) nogil: * qtui.fill_license_tab(license_short, license_notfound, license_full) # <<<<<<<<<<<<<< * ##pxm-FUNC PD nogil * cdef void tab_widget_currentChanged(int index) nogil: */ __pyx_v_6_qtui__qtui.fill_license_tab(__pyx_v_license_short, __pyx_v_license_notfound, __pyx_v_license_full); /* "_qtui_.pyx":947 * qtui.fill_contribute_tab(contribute) * ##pxm-FUNC PD nogil * cdef void fill_license_tab(const QString &license_short, cbool license_notfound, const QString &license_full) nogil: # <<<<<<<<<<<<<< * qtui.fill_license_tab(license_short, license_notfound, license_full) * ##pxm-FUNC PD nogil */ /* function exit code */ } /* "_qtui_.pyx":950 * qtui.fill_license_tab(license_short, license_notfound, license_full) * ##pxm-FUNC PD nogil * cdef void tab_widget_currentChanged(int index) nogil: # <<<<<<<<<<<<<< * qtui.tab_widget_currentChanged(index) * ##pxm-FUNC PD nogil */ static void __pyx_f_6_qtui__tab_widget_currentChanged(int __pyx_v_index) { /* "_qtui_.pyx":951 * ##pxm-FUNC PD nogil * cdef void tab_widget_currentChanged(int index) nogil: * qtui.tab_widget_currentChanged(index) # <<<<<<<<<<<<<< * ##pxm-FUNC PD nogil * cdef void update_animation(cbool first) nogil: */ __pyx_v_6_qtui__qtui.tab_widget_currentChanged(__pyx_v_index); /* "_qtui_.pyx":950 * qtui.fill_license_tab(license_short, license_notfound, license_full) * ##pxm-FUNC PD nogil * cdef void tab_widget_currentChanged(int index) nogil: # <<<<<<<<<<<<<< * qtui.tab_widget_currentChanged(index) * ##pxm-FUNC PD nogil */ /* function exit code */ } /* "_qtui_.pyx":953 * qtui.tab_widget_currentChanged(index) * ##pxm-FUNC PD nogil * cdef void update_animation(cbool first) nogil: # <<<<<<<<<<<<<< * qtui.update_animation(first) * ##pxm-FUNC PD nogil */ static void __pyx_f_6_qtui__update_animation(bool __pyx_v_first) { /* "_qtui_.pyx":954 * ##pxm-FUNC PD nogil * cdef void update_animation(cbool first) nogil: * qtui.update_animation(first) # <<<<<<<<<<<<<< * ##pxm-FUNC PD nogil * cdef void event_filter_stop_animation(QEvent *event) nogil: */ __pyx_v_6_qtui__qtui.update_animation(__pyx_v_first); /* "_qtui_.pyx":953 * qtui.tab_widget_currentChanged(index) * ##pxm-FUNC PD nogil * cdef void update_animation(cbool first) nogil: # <<<<<<<<<<<<<< * qtui.update_animation(first) * ##pxm-FUNC PD nogil */ /* function exit code */ } /* "_qtui_.pyx":956 * qtui.update_animation(first) * ##pxm-FUNC PD nogil * cdef void event_filter_stop_animation(QEvent *event) nogil: # <<<<<<<<<<<<<< * qtui.event_filter_stop_animation(event) * ##pxm-FUNC PD nogil */ static void __pyx_f_6_qtui__event_filter_stop_animation(QEvent *__pyx_v_event) { /* "_qtui_.pyx":957 * ##pxm-FUNC PD nogil * cdef void event_filter_stop_animation(QEvent *event) nogil: * qtui.event_filter_stop_animation(event) # <<<<<<<<<<<<<< * ##pxm-FUNC PD nogil * cdef void show_full_license(cbool local, const QUrl &url) nogil: */ __pyx_v_6_qtui__qtui.event_filter_stop_animation(__pyx_v_event); /* "_qtui_.pyx":956 * qtui.update_animation(first) * ##pxm-FUNC PD nogil * cdef void event_filter_stop_animation(QEvent *event) nogil: # <<<<<<<<<<<<<< * qtui.event_filter_stop_animation(event) * ##pxm-FUNC PD nogil */ /* function exit code */ } /* "_qtui_.pyx":959 * qtui.event_filter_stop_animation(event) * ##pxm-FUNC PD nogil * cdef void show_full_license(cbool local, const QUrl &url) nogil: # <<<<<<<<<<<<<< * qtui.show_full_license(local, url) * */ static void __pyx_f_6_qtui__show_full_license(bool __pyx_v_local, QUrl const &__pyx_v_url) { /* "_qtui_.pyx":960 * ##pxm-FUNC PD nogil * cdef void show_full_license(cbool local, const QUrl &url) nogil: * qtui.show_full_license(local, url) # <<<<<<<<<<<<<< * * */ __pyx_v_6_qtui__qtui.show_full_license(__pyx_v_local, __pyx_v_url); /* "_qtui_.pyx":959 * qtui.event_filter_stop_animation(event) * ##pxm-FUNC PD nogil * cdef void show_full_license(cbool local, const QUrl &url) nogil: # <<<<<<<<<<<<<< * qtui.show_full_license(local, url) * */ /* function exit code */ } static PyMethodDef __pyx_methods[] = { {0, 0, 0, 0} }; #if PY_MAJOR_VERSION >= 3 static struct PyModuleDef __pyx_moduledef = { #if PY_VERSION_HEX < 0x03020000 { PyObject_HEAD_INIT(NULL) NULL, 0, NULL }, #else PyModuleDef_HEAD_INIT, #endif "_qtui_", 0, /* m_doc */ -1, /* m_size */ __pyx_methods /* m_methods */, NULL, /* m_reload */ NULL, /* m_traverse */ NULL, /* m_clear */ NULL /* m_free */ }; #endif static __Pyx_StringTabEntry __pyx_string_tab[] = { {&__pyx_n_s_, __pyx_k_, sizeof(__pyx_k_), 0, 0, 1, 1}, {&__pyx_n_s_DEBUG_DRAW, __pyx_k_DEBUG_DRAW, sizeof(__pyx_k_DEBUG_DRAW), 0, 0, 1, 1}, {&__pyx_n_s_DEBUG_FPS, __pyx_k_DEBUG_FPS, sizeof(__pyx_k_DEBUG_FPS), 0, 0, 1, 1}, {&__pyx_n_s_DEBUG_MSGEXT, __pyx_k_DEBUG_MSGEXT, sizeof(__pyx_k_DEBUG_MSGEXT), 0, 0, 1, 1}, {&__pyx_kp_u_compiled, __pyx_k_compiled, sizeof(__pyx_k_compiled), 0, 1, 0, 0}, {&__pyx_n_s_compiled_2, __pyx_k_compiled_2, sizeof(__pyx_k_compiled_2), 0, 0, 1, 1}, {&__pyx_n_s_encode, __pyx_k_encode, sizeof(__pyx_k_encode), 0, 0, 1, 1}, {&__pyx_kp_u_from_package, __pyx_k_from_package, sizeof(__pyx_k_from_package), 0, 1, 0, 0}, {&__pyx_kp_s_tmp, __pyx_k_tmp, sizeof(__pyx_k_tmp), 0, 0, 1, 0}, {&__pyx_kp_u_init_module, __pyx_k_init_module, sizeof(__pyx_k_init_module), 0, 1, 0, 0}, {&__pyx_n_s_main, __pyx_k_main, sizeof(__pyx_k_main), 0, 0, 1, 1}, {&__pyx_n_s_module, __pyx_k_module, sizeof(__pyx_k_module), 0, 0, 1, 1}, {&__pyx_n_s_name, __pyx_k_name, sizeof(__pyx_k_name), 0, 0, 1, 1}, {&__pyx_n_s_package, __pyx_k_package, sizeof(__pyx_k_package), 0, 0, 1, 1}, {&__pyx_n_s_print, __pyx_k_print, sizeof(__pyx_k_print), 0, 0, 1, 1}, {&__pyx_n_s_qtui, __pyx_k_qtui, sizeof(__pyx_k_qtui), 0, 0, 1, 1}, {&__pyx_n_s_set_debug_flags, __pyx_k_set_debug_flags, sizeof(__pyx_k_set_debug_flags), 0, 0, 1, 1}, {&__pyx_n_s_test, __pyx_k_test, sizeof(__pyx_k_test), 0, 0, 1, 1}, {&__pyx_kp_u_utf_8, __pyx_k_utf_8, sizeof(__pyx_k_utf_8), 0, 1, 0, 0}, {0, 0, 0, 0, 0, 0, 0} }; static int __Pyx_InitCachedBuiltins(void) { __pyx_builtin_print = __Pyx_GetBuiltinName(__pyx_n_s_print); if (!__pyx_builtin_print) __PYX_ERR(0, 79, __pyx_L1_error) return 0; __pyx_L1_error:; return -1; } static int __Pyx_InitCachedConstants(void) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0); /* "_qtui_.pyx":796 * cdef QString gettext_translate(const char *text, const char *disambiguation) with gil: #px/ * #def gettext_translate(text, disambiguation): * pytext = _(text.decode('utf-8')).encode('utf-8') # <<<<<<<<<<<<<< * return mk_qstr(pytext, len(pytext)) * */ __pyx_tuple__2 = PyTuple_Pack(1, __pyx_kp_u_utf_8); if (unlikely(!__pyx_tuple__2)) __PYX_ERR(0, 796, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__2); __Pyx_GIVEREF(__pyx_tuple__2); /* "_qtui_.pyx":70 * debug = 0 * * def set_debug_flags(module): # <<<<<<<<<<<<<< * global debug * if module.DEBUG_MSGEXT: debug |= DEBUG_MSGEXT */ __pyx_tuple__3 = PyTuple_Pack(1, __pyx_n_s_module); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(0, 70, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__3); __Pyx_GIVEREF(__pyx_tuple__3); __pyx_codeobj__4 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__3, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_set_debug_flags, 70, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__4)) __PYX_ERR(0, 70, __pyx_L1_error) __Pyx_RefNannyFinishContext(); return 0; __pyx_L1_error:; __Pyx_RefNannyFinishContext(); return -1; } static int __Pyx_InitGlobals(void) { if (__Pyx_InitStrings(__pyx_string_tab) < 0) __PYX_ERR(0, 1, __pyx_L1_error); return 0; __pyx_L1_error:; return -1; } #if PY_MAJOR_VERSION < 3 PyMODINIT_FUNC init_qtui_(void); /*proto*/ PyMODINIT_FUNC init_qtui_(void) #else PyMODINIT_FUNC PyInit__qtui_(void); /*proto*/ PyMODINIT_FUNC PyInit__qtui_(void) #endif { PyObject *__pyx_t_1 = NULL; __Pyx_RefNannyDeclarations #if CYTHON_REFNANNY __Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny"); if (!__Pyx_RefNanny) { PyErr_Clear(); __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny"); if (!__Pyx_RefNanny) Py_FatalError("failed to import 'refnanny' module"); } #endif __Pyx_RefNannySetupContext("PyMODINIT_FUNC PyInit__qtui_(void)", 0); if (__Pyx_check_binary_version() < 0) __PYX_ERR(0, 1, __pyx_L1_error) __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(0, 1, __pyx_L1_error) __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(0, 1, __pyx_L1_error) __pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(0, 1, __pyx_L1_error) #ifdef __Pyx_CyFunction_USED if (__pyx_CyFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #endif #ifdef __Pyx_FusedFunction_USED if (__pyx_FusedFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #endif #ifdef __Pyx_Coroutine_USED if (__pyx_Coroutine_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #endif #ifdef __Pyx_Generator_USED if (__pyx_Generator_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #endif #ifdef __Pyx_StopAsyncIteration_USED if (__pyx_StopAsyncIteration_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #endif /*--- Library function declarations ---*/ /*--- Threads initialization code ---*/ #if defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS #ifdef WITH_THREAD /* Python build with threading support? */ PyEval_InitThreads(); #endif #endif /*--- Module creation code ---*/ #if PY_MAJOR_VERSION < 3 __pyx_m = Py_InitModule4("_qtui_", __pyx_methods, 0, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m); #else __pyx_m = PyModule_Create(&__pyx_moduledef); #endif if (unlikely(!__pyx_m)) __PYX_ERR(0, 1, __pyx_L1_error) __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) __PYX_ERR(0, 1, __pyx_L1_error) Py_INCREF(__pyx_d); __pyx_b = PyImport_AddModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_b)) __PYX_ERR(0, 1, __pyx_L1_error) #if CYTHON_COMPILING_IN_PYPY Py_INCREF(__pyx_b); #endif if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) __PYX_ERR(0, 1, __pyx_L1_error); /*--- Initialize various global constants etc. ---*/ if (__Pyx_InitGlobals() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #if PY_MAJOR_VERSION < 3 && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT) if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #endif if (__pyx_module_is_main__qtui_) { if (PyObject_SetAttrString(__pyx_m, "__name__", __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error) } #if PY_MAJOR_VERSION >= 3 { PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(0, 1, __pyx_L1_error) if (!PyDict_GetItemString(modules, "_qtui_")) { if (unlikely(PyDict_SetItemString(modules, "_qtui_", __pyx_m) < 0)) __PYX_ERR(0, 1, __pyx_L1_error) } } #endif /*--- Builtin init code ---*/ if (__Pyx_InitCachedBuiltins() < 0) __PYX_ERR(0, 1, __pyx_L1_error) /*--- Constants init code ---*/ if (__Pyx_InitCachedConstants() < 0) __PYX_ERR(0, 1, __pyx_L1_error) /*--- Global init code ---*/ /*--- Variable export code ---*/ /*--- Function export code ---*/ if (__Pyx_ExportFunction("init_module", (void (*)(void))__pyx_f_6_qtui__init_module, "void (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("init_gettext", (void (*)(void))__pyx_f_6_qtui__init_gettext, "void (PyObject *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("setupUi_main", (void (*)(void))__pyx_f_6_qtui__setupUi_main, "void (QMainWindow *, QIcon const &, QIcon const &, QIcon const &, QKeySequence const &, QKeySequence const &, bool, bool)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("setupUi_pref", (void (*)(void))__pyx_f_6_qtui__setupUi_pref, "void (QDialog *, int, int, int, int, int, QStandardItemModel *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("setupUi_help", (void (*)(void))__pyx_f_6_qtui__setupUi_help, "void (QDialog *, QString const &)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("setupUi_about", (void (*)(void))__pyx_f_6_qtui__setupUi_about, "void (QDialog *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("set_shortcuts", (void (*)(void))__pyx_f_6_qtui__set_shortcuts, "void (QKeySequence const &, QKeySequence const &, QKeySequence const &, QKeySequence const &)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("add_widgets", (void (*)(void))__pyx_f_6_qtui__add_widgets, "void (QMainWindow *, QLineEdit *, QOpenGLWidget *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("set_toolbar_visible", (void (*)(void))__pyx_f_6_qtui__set_toolbar_visible, "void (bool)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("set_frame_editbar_visible", (void (*)(void))__pyx_f_6_qtui__set_frame_editbar_visible, "void (bool)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("set_statusbar_visible", (void (*)(void))__pyx_f_6_qtui__set_statusbar_visible, "void (bool)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("hide_controls", (void (*)(void))__pyx_f_6_qtui__hide_controls, "void (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("get_splitter_sizes", (void (*)(void))__pyx_f_6_qtui__get_splitter_sizes, "void (int &, int &)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("set_splitter_sizes", (void (*)(void))__pyx_f_6_qtui__set_splitter_sizes, "void (int, int)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("splitter_update_minimumsize", (void (*)(void))__pyx_f_6_qtui__splitter_update_minimumsize, "void (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("set_debug_text", (void (*)(void))__pyx_f_6_qtui__set_debug_text, "void (QString const &)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("set_toolbar_state", (void (*)(void))__pyx_f_6_qtui__set_toolbar_state, "void (int, int, int, int, int)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("clear_sidepane", (void (*)(void))__pyx_f_6_qtui__clear_sidepane, "void (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("create_sidepane_button", (void (*)(void))__pyx_f_6_qtui__create_sidepane_button, "QPushButton *(QString const &)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("create_sidepane_treeview", (void (*)(void))__pyx_f_6_qtui__create_sidepane_treeview, "QTreeView *(QStandardItemModel *, int)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("set_active_plugin_group", (void (*)(void))__pyx_f_6_qtui__set_active_plugin_group, "void (int)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("set_active_plugin_group_by_obj", (void (*)(void))__pyx_f_6_qtui__set_active_plugin_group_by_obj, "void (QObject *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("get_plugin_group_count", (void (*)(void))__pyx_f_6_qtui__get_plugin_group_count, "int (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("root_index", (void (*)(void))__pyx_f_6_qtui__root_index, "QModelIndex (int)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("hide_row", (void (*)(void))__pyx_f_6_qtui__hide_row, "void (int, bool)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("set_row_hidden", (void (*)(void))__pyx_f_6_qtui__set_row_hidden, "void (int, int, QModelIndex const &, bool)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("splitter_pos", (void (*)(void))__pyx_f_6_qtui__splitter_pos, "int (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("preferences_block_signals", (void (*)(void))__pyx_f_6_qtui__preferences_block_signals, "void (bool)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("combobox_add_shaderitem", (void (*)(void))__pyx_f_6_qtui__combobox_add_shaderitem, "void (QString const &, QString const &)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("combobox_add_samplesitem", (void (*)(void))__pyx_f_6_qtui__combobox_add_samplesitem, "void (QString const &, QString const &)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("add_movekey_row", (void (*)(void))__pyx_f_6_qtui__add_movekey_row, "void (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("remove_movekey_row", (void (*)(void))__pyx_f_6_qtui__remove_movekey_row, "void (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("add_liststore_faces_row", (void (*)(void))__pyx_f_6_qtui__add_liststore_faces_row, "void (QString const &, QString const &)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("finalize_liststore_faces", (void (*)(void))__pyx_f_6_qtui__finalize_liststore_faces, "void (QWidget *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("get_liststore_faces_facekey", (void (*)(void))__pyx_f_6_qtui__get_liststore_faces_facekey, "QString (QModelIndex const &)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("set_button_color", (void (*)(void))__pyx_f_6_qtui__set_button_color, "void (QString const &)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("color_dialog", (void (*)(void))__pyx_f_6_qtui__color_dialog, "QString (QWidget *, QString const &)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("set_imagemode", (void (*)(void))__pyx_f_6_qtui__set_imagemode, "void (int)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("add_combobox_image_item", (void (*)(void))__pyx_f_6_qtui__add_combobox_image_item, "void (QIcon const &, QString const &, QString const &)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("set_combobox_image", (void (*)(void))__pyx_f_6_qtui__set_combobox_image, "void (int, QIcon const &, int)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("set_button_background_color", (void (*)(void))__pyx_f_6_qtui__set_button_background_color, "void (QString const &)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("fill_page", (void (*)(void))__pyx_f_6_qtui__fill_page, "void (QVariant, QString const &)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("set_page", (void (*)(void))__pyx_f_6_qtui__set_page, "void (int)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("fill_header", (void (*)(void))__pyx_f_6_qtui__fill_header, "void (QString const &, QString const &, QString const &, QString const &)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("fill_about_tab", (void (*)(void))__pyx_f_6_qtui__fill_about_tab, "void (QString const &, QString const &, QString const &)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("fill_contribute_tab", (void (*)(void))__pyx_f_6_qtui__fill_contribute_tab, "void (QString const &)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("fill_license_tab", (void (*)(void))__pyx_f_6_qtui__fill_license_tab, "void (QString const &, bool, QString const &)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("tab_widget_currentChanged", (void (*)(void))__pyx_f_6_qtui__tab_widget_currentChanged, "void (int)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("update_animation", (void (*)(void))__pyx_f_6_qtui__update_animation, "void (bool)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("event_filter_stop_animation", (void (*)(void))__pyx_f_6_qtui__event_filter_stop_animation, "void (QEvent *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("show_full_license", (void (*)(void))__pyx_f_6_qtui__show_full_license, "void (bool, QUrl const &)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) /*--- Type init code ---*/ /*--- Type import code ---*/ /*--- Variable import code ---*/ /*--- Function import code ---*/ /*--- Execution code ---*/ #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) if (__Pyx_patch_abc() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #endif /* "_qtui_.pyx":25 * # This line makes cython happy * global __name__, __package__ # pylint: disable=W0604 * __compiled = True #px/ # <<<<<<<<<<<<<< * #__compiled = False * */ if (PyDict_SetItem(__pyx_d, __pyx_n_s_compiled_2, Py_True) < 0) __PYX_ERR(0, 25, __pyx_L1_error) /* "_qtui_.pyx":68 * DEBUG_FPS = 0x4 * cdef long debug #px+ * debug = 0 # <<<<<<<<<<<<<< * * def set_debug_flags(module): */ __pyx_v_6_qtui__debug = 0; /* "_qtui_.pyx":70 * debug = 0 * * def set_debug_flags(module): # <<<<<<<<<<<<<< * global debug * if module.DEBUG_MSGEXT: debug |= DEBUG_MSGEXT */ __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_6_qtui__1set_debug_flags, NULL, __pyx_n_s_qtui); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 70, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_d, __pyx_n_s_set_debug_flags, __pyx_t_1) < 0) __PYX_ERR(0, 70, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qtui_.pyx":1 * # -*- coding: utf-8 -*- # <<<<<<<<<<<<<< * # cython: profile=False * */ __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_1) < 0) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /*--- Wrapped vars code ---*/ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); if (__pyx_m) { if (__pyx_d) { __Pyx_AddTraceback("init _qtui_", __pyx_clineno, __pyx_lineno, __pyx_filename); } Py_DECREF(__pyx_m); __pyx_m = 0; } else if (!PyErr_Occurred()) { PyErr_SetString(PyExc_ImportError, "init _qtui_"); } __pyx_L0:; __Pyx_RefNannyFinishContext(); #if PY_MAJOR_VERSION < 3 return; #else return __pyx_m; #endif } /* --- Runtime support code --- */ /* Refnanny */ #if CYTHON_REFNANNY static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) { PyObject *m = NULL, *p = NULL; void *r = NULL; m = PyImport_ImportModule((char *)modname); if (!m) goto end; p = PyObject_GetAttrString(m, (char *)"RefNannyAPI"); if (!p) goto end; r = PyLong_AsVoidPtr(p); end: Py_XDECREF(p); Py_XDECREF(m); return (__Pyx_RefNannyAPIStruct *)r; } #endif /* GetBuiltinName */ static PyObject *__Pyx_GetBuiltinName(PyObject *name) { PyObject* result = __Pyx_PyObject_GetAttrStr(__pyx_b, name); if (unlikely(!result)) { PyErr_Format(PyExc_NameError, #if PY_MAJOR_VERSION >= 3 "name '%U' is not defined", name); #else "name '%.200s' is not defined", PyString_AS_STRING(name)); #endif } return result; } /* GetModuleGlobalName */ static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name) { PyObject *result; #if !CYTHON_AVOID_BORROWED_REFS result = PyDict_GetItem(__pyx_d, name); if (likely(result)) { Py_INCREF(result); } else { #else result = PyObject_GetItem(__pyx_d, name); if (!result) { PyErr_Clear(); #endif result = __Pyx_GetBuiltinName(name); } return result; } /* PyObjectCall */ #if CYTHON_COMPILING_IN_CPYTHON static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) { PyObject *result; ternaryfunc call = func->ob_type->tp_call; if (unlikely(!call)) return PyObject_Call(func, arg, kw); if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) return NULL; result = (*call)(func, arg, kw); Py_LeaveRecursiveCall(); if (unlikely(!result) && unlikely(!PyErr_Occurred())) { PyErr_SetString( PyExc_SystemError, "NULL result without error in PyObject_Call"); } return result; } #endif /* PyErrFetchRestore */ #if CYTHON_FAST_THREAD_STATE static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { PyObject *tmp_type, *tmp_value, *tmp_tb; tmp_type = tstate->curexc_type; tmp_value = tstate->curexc_value; tmp_tb = tstate->curexc_traceback; tstate->curexc_type = type; tstate->curexc_value = value; tstate->curexc_traceback = tb; Py_XDECREF(tmp_type); Py_XDECREF(tmp_value); Py_XDECREF(tmp_tb); } static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { *type = tstate->curexc_type; *value = tstate->curexc_value; *tb = tstate->curexc_traceback; tstate->curexc_type = 0; tstate->curexc_value = 0; tstate->curexc_traceback = 0; } #endif /* WriteUnraisableException */ static void __Pyx_WriteUnraisable(const char *name, CYTHON_UNUSED int clineno, CYTHON_UNUSED int lineno, CYTHON_UNUSED const char *filename, int full_traceback, CYTHON_UNUSED int nogil) { PyObject *old_exc, *old_val, *old_tb; PyObject *ctx; __Pyx_PyThreadState_declare #ifdef WITH_THREAD PyGILState_STATE state; if (nogil) state = PyGILState_Ensure(); #ifdef _MSC_VER else state = (PyGILState_STATE)-1; #endif #endif __Pyx_PyThreadState_assign __Pyx_ErrFetch(&old_exc, &old_val, &old_tb); if (full_traceback) { Py_XINCREF(old_exc); Py_XINCREF(old_val); Py_XINCREF(old_tb); __Pyx_ErrRestore(old_exc, old_val, old_tb); PyErr_PrintEx(1); } #if PY_MAJOR_VERSION < 3 ctx = PyString_FromString(name); #else ctx = PyUnicode_FromString(name); #endif __Pyx_ErrRestore(old_exc, old_val, old_tb); if (!ctx) { PyErr_WriteUnraisable(Py_None); } else { PyErr_WriteUnraisable(ctx); Py_DECREF(ctx); } #ifdef WITH_THREAD if (nogil) PyGILState_Release(state); #endif } /* decode_c_string */ static CYTHON_INLINE PyObject* __Pyx_decode_c_string( const char* cstring, Py_ssize_t start, Py_ssize_t stop, const char* encoding, const char* errors, PyObject* (*decode_func)(const char *s, Py_ssize_t size, const char *errors)) { Py_ssize_t length; if (unlikely((start < 0) | (stop < 0))) { size_t slen = strlen(cstring); if (unlikely(slen > (size_t) PY_SSIZE_T_MAX)) { PyErr_SetString(PyExc_OverflowError, "c-string too long to convert to Python"); return NULL; } length = (Py_ssize_t) slen; if (start < 0) { start += length; if (start < 0) start = 0; } if (stop < 0) stop += length; } length = stop - start; if (unlikely(length <= 0)) return PyUnicode_FromUnicode(NULL, 0); cstring += start; if (decode_func) { return decode_func(cstring, length, errors); } else { return PyUnicode_Decode(cstring, length, encoding, errors); } } /* PyCFunctionFastCall */ #if CYTHON_FAST_PYCCALL static CYTHON_INLINE PyObject * __Pyx_PyCFunction_FastCall(PyObject *func_obj, PyObject **args, Py_ssize_t nargs) { PyCFunctionObject *func = (PyCFunctionObject*)func_obj; PyCFunction meth = PyCFunction_GET_FUNCTION(func); PyObject *self = PyCFunction_GET_SELF(func); assert(PyCFunction_Check(func)); assert(METH_FASTCALL == (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST))); assert(nargs >= 0); assert(nargs == 0 || args != NULL); /* _PyCFunction_FastCallDict() must not be called with an exception set, because it may clear it (directly or indirectly) and so the caller loses its exception */ assert(!PyErr_Occurred()); return (*((__Pyx_PyCFunctionFast)meth)) (self, args, nargs, NULL); } #endif // CYTHON_FAST_PYCCALL /* PyFunctionFastCall */ #if CYTHON_FAST_PYCALL #include "frameobject.h" static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args, Py_ssize_t na, PyObject *globals) { PyFrameObject *f; PyThreadState *tstate = PyThreadState_GET(); PyObject **fastlocals; Py_ssize_t i; PyObject *result; assert(globals != NULL); /* XXX Perhaps we should create a specialized PyFrame_New() that doesn't take locals, but does take builtins without sanity checking them. */ assert(tstate != NULL); f = PyFrame_New(tstate, co, globals, NULL); if (f == NULL) { return NULL; } fastlocals = f->f_localsplus; for (i = 0; i < na; i++) { Py_INCREF(*args); fastlocals[i] = *args++; } result = PyEval_EvalFrameEx(f,0); ++tstate->recursion_depth; Py_DECREF(f); --tstate->recursion_depth; return result; } #if 1 || PY_VERSION_HEX < 0x030600B1 static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, int nargs, PyObject *kwargs) { PyCodeObject *co = (PyCodeObject *)PyFunction_GET_CODE(func); PyObject *globals = PyFunction_GET_GLOBALS(func); PyObject *argdefs = PyFunction_GET_DEFAULTS(func); PyObject *closure; #if PY_MAJOR_VERSION >= 3 PyObject *kwdefs; #endif PyObject *kwtuple, **k; PyObject **d; Py_ssize_t nd; Py_ssize_t nk; PyObject *result; assert(kwargs == NULL || PyDict_Check(kwargs)); nk = kwargs ? PyDict_Size(kwargs) : 0; if (Py_EnterRecursiveCall((char*)" while calling a Python object")) { return NULL; } if ( #if PY_MAJOR_VERSION >= 3 co->co_kwonlyargcount == 0 && #endif likely(kwargs == NULL || nk == 0) && co->co_flags == (CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE)) { if (argdefs == NULL && co->co_argcount == nargs) { result = __Pyx_PyFunction_FastCallNoKw(co, args, nargs, globals); goto done; } else if (nargs == 0 && argdefs != NULL && co->co_argcount == Py_SIZE(argdefs)) { /* function called with no arguments, but all parameters have a default value: use default values as arguments .*/ args = &PyTuple_GET_ITEM(argdefs, 0); result =__Pyx_PyFunction_FastCallNoKw(co, args, Py_SIZE(argdefs), globals); goto done; } } if (kwargs != NULL) { Py_ssize_t pos, i; kwtuple = PyTuple_New(2 * nk); if (kwtuple == NULL) { result = NULL; goto done; } k = &PyTuple_GET_ITEM(kwtuple, 0); pos = i = 0; while (PyDict_Next(kwargs, &pos, &k[i], &k[i+1])) { Py_INCREF(k[i]); Py_INCREF(k[i+1]); i += 2; } nk = i / 2; } else { kwtuple = NULL; k = NULL; } closure = PyFunction_GET_CLOSURE(func); #if PY_MAJOR_VERSION >= 3 kwdefs = PyFunction_GET_KW_DEFAULTS(func); #endif if (argdefs != NULL) { d = &PyTuple_GET_ITEM(argdefs, 0); nd = Py_SIZE(argdefs); } else { d = NULL; nd = 0; } #if PY_MAJOR_VERSION >= 3 result = PyEval_EvalCodeEx((PyObject*)co, globals, (PyObject *)NULL, args, nargs, k, (int)nk, d, (int)nd, kwdefs, closure); #else result = PyEval_EvalCodeEx(co, globals, (PyObject *)NULL, args, nargs, k, (int)nk, d, (int)nd, closure); #endif Py_XDECREF(kwtuple); done: Py_LeaveRecursiveCall(); return result; } #endif // CPython < 3.6 #endif // CYTHON_FAST_PYCALL /* PyObjectCallMethO */ #if CYTHON_COMPILING_IN_CPYTHON static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) { PyObject *self, *result; PyCFunction cfunc; cfunc = PyCFunction_GET_FUNCTION(func); self = PyCFunction_GET_SELF(func); if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) return NULL; result = cfunc(self, arg); Py_LeaveRecursiveCall(); if (unlikely(!result) && unlikely(!PyErr_Occurred())) { PyErr_SetString( PyExc_SystemError, "NULL result without error in PyObject_Call"); } return result; } #endif /* PyObjectCallOneArg */ #if CYTHON_COMPILING_IN_CPYTHON static PyObject* __Pyx__PyObject_CallOneArg(PyObject *func, PyObject *arg) { PyObject *result; PyObject *args = PyTuple_New(1); if (unlikely(!args)) return NULL; Py_INCREF(arg); PyTuple_SET_ITEM(args, 0, arg); result = __Pyx_PyObject_Call(func, args, NULL); Py_DECREF(args); return result; } static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { #if CYTHON_FAST_PYCALL if (PyFunction_Check(func)) { return __Pyx_PyFunction_FastCall(func, &arg, 1); } #endif #ifdef __Pyx_CyFunction_USED if (likely(PyCFunction_Check(func) || PyObject_TypeCheck(func, __pyx_CyFunctionType))) { #else if (likely(PyCFunction_Check(func))) { #endif if (likely(PyCFunction_GET_FLAGS(func) & METH_O)) { return __Pyx_PyObject_CallMethO(func, arg); #if CYTHON_FAST_PYCCALL } else if (PyCFunction_GET_FLAGS(func) & METH_FASTCALL) { return __Pyx_PyCFunction_FastCall(func, &arg, 1); #endif } } return __Pyx__PyObject_CallOneArg(func, arg); } #else static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { PyObject *result; PyObject *args = PyTuple_Pack(1, arg); if (unlikely(!args)) return NULL; result = __Pyx_PyObject_Call(func, args, NULL); Py_DECREF(args); return result; } #endif /* CodeObjectCache */ static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) { int start = 0, mid = 0, end = count - 1; if (end >= 0 && code_line > entries[end].code_line) { return count; } while (start < end) { mid = start + (end - start) / 2; if (code_line < entries[mid].code_line) { end = mid; } else if (code_line > entries[mid].code_line) { start = mid + 1; } else { return mid; } } if (code_line <= entries[mid].code_line) { return mid; } else { return mid + 1; } } static PyCodeObject *__pyx_find_code_object(int code_line) { PyCodeObject* code_object; int pos; if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) { return NULL; } pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) { return NULL; } code_object = __pyx_code_cache.entries[pos].code_object; Py_INCREF(code_object); return code_object; } static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) { int pos, i; __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries; if (unlikely(!code_line)) { return; } if (unlikely(!entries)) { entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry)); if (likely(entries)) { __pyx_code_cache.entries = entries; __pyx_code_cache.max_count = 64; __pyx_code_cache.count = 1; entries[0].code_line = code_line; entries[0].code_object = code_object; Py_INCREF(code_object); } return; } pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) { PyCodeObject* tmp = entries[pos].code_object; entries[pos].code_object = code_object; Py_DECREF(tmp); return; } if (__pyx_code_cache.count == __pyx_code_cache.max_count) { int new_max = __pyx_code_cache.max_count + 64; entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc( __pyx_code_cache.entries, (size_t)new_max*sizeof(__Pyx_CodeObjectCacheEntry)); if (unlikely(!entries)) { return; } __pyx_code_cache.entries = entries; __pyx_code_cache.max_count = new_max; } for (i=__pyx_code_cache.count; i>pos; i--) { entries[i] = entries[i-1]; } entries[pos].code_line = code_line; entries[pos].code_object = code_object; __pyx_code_cache.count++; Py_INCREF(code_object); } /* AddTraceback */ #include "compile.h" #include "frameobject.h" #include "traceback.h" static PyCodeObject* __Pyx_CreateCodeObjectForTraceback( const char *funcname, int c_line, int py_line, const char *filename) { PyCodeObject *py_code = 0; PyObject *py_srcfile = 0; PyObject *py_funcname = 0; #if PY_MAJOR_VERSION < 3 py_srcfile = PyString_FromString(filename); #else py_srcfile = PyUnicode_FromString(filename); #endif if (!py_srcfile) goto bad; if (c_line) { #if PY_MAJOR_VERSION < 3 py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); #else py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); #endif } else { #if PY_MAJOR_VERSION < 3 py_funcname = PyString_FromString(funcname); #else py_funcname = PyUnicode_FromString(funcname); #endif } if (!py_funcname) goto bad; py_code = __Pyx_PyCode_New( 0, 0, 0, 0, 0, __pyx_empty_bytes, /*PyObject *code,*/ __pyx_empty_tuple, /*PyObject *consts,*/ __pyx_empty_tuple, /*PyObject *names,*/ __pyx_empty_tuple, /*PyObject *varnames,*/ __pyx_empty_tuple, /*PyObject *freevars,*/ __pyx_empty_tuple, /*PyObject *cellvars,*/ py_srcfile, /*PyObject *filename,*/ py_funcname, /*PyObject *name,*/ py_line, __pyx_empty_bytes /*PyObject *lnotab*/ ); Py_DECREF(py_srcfile); Py_DECREF(py_funcname); return py_code; bad: Py_XDECREF(py_srcfile); Py_XDECREF(py_funcname); return NULL; } static void __Pyx_AddTraceback(const char *funcname, int c_line, int py_line, const char *filename) { PyCodeObject *py_code = 0; PyFrameObject *py_frame = 0; py_code = __pyx_find_code_object(c_line ? c_line : py_line); if (!py_code) { py_code = __Pyx_CreateCodeObjectForTraceback( funcname, c_line, py_line, filename); if (!py_code) goto bad; __pyx_insert_code_object(c_line ? c_line : py_line, py_code); } py_frame = PyFrame_New( PyThreadState_GET(), /*PyThreadState *tstate,*/ py_code, /*PyCodeObject *code,*/ __pyx_d, /*PyObject *globals,*/ 0 /*PyObject *locals*/ ); if (!py_frame) goto bad; __Pyx_PyFrame_SetLineNumber(py_frame, py_line); PyTraceBack_Here(py_frame); bad: Py_XDECREF(py_code); Py_XDECREF(py_frame); } /* CIntToPy */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) { const long neg_one = (long) -1, const_zero = (long) 0; const int is_unsigned = neg_one > const_zero; if (is_unsigned) { if (sizeof(long) < sizeof(long)) { return PyInt_FromLong((long) value); } else if (sizeof(long) <= sizeof(unsigned long)) { return PyLong_FromUnsignedLong((unsigned long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); #endif } } else { if (sizeof(long) <= sizeof(long)) { return PyInt_FromLong((long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { return PyLong_FromLongLong((PY_LONG_LONG) value); #endif } } { int one = 1; int little = (int)*(unsigned char *)&one; unsigned char *bytes = (unsigned char *)&value; return _PyLong_FromByteArray(bytes, sizeof(long), little, !is_unsigned); } } /* CIntFromPyVerify */ #define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\ __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0) #define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\ __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1) #define __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, exc)\ {\ func_type value = func_value;\ if (sizeof(target_type) < sizeof(func_type)) {\ if (unlikely(value != (func_type) (target_type) value)) {\ func_type zero = 0;\ if (exc && unlikely(value == (func_type)-1 && PyErr_Occurred()))\ return (target_type) -1;\ if (is_unsigned && unlikely(value < zero))\ goto raise_neg_overflow;\ else\ goto raise_overflow;\ }\ }\ return (target_type) value;\ } /* CIntFromPy */ static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) { const long neg_one = (long) -1, const_zero = (long) 0; const int is_unsigned = neg_one > const_zero; #if PY_MAJOR_VERSION < 3 if (likely(PyInt_Check(x))) { if (sizeof(long) < sizeof(long)) { __PYX_VERIFY_RETURN_INT(long, long, PyInt_AS_LONG(x)) } else { long val = PyInt_AS_LONG(x); if (is_unsigned && unlikely(val < 0)) { goto raise_neg_overflow; } return (long) val; } } else #endif if (likely(PyLong_Check(x))) { if (is_unsigned) { #if CYTHON_USE_PYLONG_INTERNALS const digit* digits = ((PyLongObject*)x)->ob_digit; switch (Py_SIZE(x)) { case 0: return (long) 0; case 1: __PYX_VERIFY_RETURN_INT(long, digit, digits[0]) case 2: if (8 * sizeof(long) > 1 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(long) >= 2 * PyLong_SHIFT) { return (long) (((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); } } break; case 3: if (8 * sizeof(long) > 2 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(long) >= 3 * PyLong_SHIFT) { return (long) (((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); } } break; case 4: if (8 * sizeof(long) > 3 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(long) >= 4 * PyLong_SHIFT) { return (long) (((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); } } break; } #endif #if CYTHON_COMPILING_IN_CPYTHON if (unlikely(Py_SIZE(x) < 0)) { goto raise_neg_overflow; } #else { int result = PyObject_RichCompareBool(x, Py_False, Py_LT); if (unlikely(result < 0)) return (long) -1; if (unlikely(result == 1)) goto raise_neg_overflow; } #endif if (sizeof(long) <= sizeof(unsigned long)) { __PYX_VERIFY_RETURN_INT_EXC(long, unsigned long, PyLong_AsUnsignedLong(x)) #ifdef HAVE_LONG_LONG } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { __PYX_VERIFY_RETURN_INT_EXC(long, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) #endif } } else { #if CYTHON_USE_PYLONG_INTERNALS const digit* digits = ((PyLongObject*)x)->ob_digit; switch (Py_SIZE(x)) { case 0: return (long) 0; case -1: __PYX_VERIFY_RETURN_INT(long, sdigit, (sdigit) (-(sdigit)digits[0])) case 1: __PYX_VERIFY_RETURN_INT(long, digit, +digits[0]) case -2: if (8 * sizeof(long) - 1 > 1 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { return (long) (((long)-1)*(((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); } } break; case 2: if (8 * sizeof(long) > 1 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { return (long) ((((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); } } break; case -3: if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { return (long) (((long)-1)*(((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); } } break; case 3: if (8 * sizeof(long) > 2 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { return (long) ((((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); } } break; case -4: if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { return (long) (((long)-1)*(((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); } } break; case 4: if (8 * sizeof(long) > 3 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { return (long) ((((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); } } break; } #endif if (sizeof(long) <= sizeof(long)) { __PYX_VERIFY_RETURN_INT_EXC(long, long, PyLong_AsLong(x)) #ifdef HAVE_LONG_LONG } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { __PYX_VERIFY_RETURN_INT_EXC(long, PY_LONG_LONG, PyLong_AsLongLong(x)) #endif } } { #if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray) PyErr_SetString(PyExc_RuntimeError, "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"); #else long val; PyObject *v = __Pyx_PyNumber_IntOrLong(x); #if PY_MAJOR_VERSION < 3 if (likely(v) && !PyLong_Check(v)) { PyObject *tmp = v; v = PyNumber_Long(tmp); Py_DECREF(tmp); } #endif if (likely(v)) { int one = 1; int is_little = (int)*(unsigned char *)&one; unsigned char *bytes = (unsigned char *)&val; int ret = _PyLong_AsByteArray((PyLongObject *)v, bytes, sizeof(val), is_little, !is_unsigned); Py_DECREF(v); if (likely(!ret)) return val; } #endif return (long) -1; } } else { long val; PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); if (!tmp) return (long) -1; val = __Pyx_PyInt_As_long(tmp); Py_DECREF(tmp); return val; } raise_overflow: PyErr_SetString(PyExc_OverflowError, "value too large to convert to long"); return (long) -1; raise_neg_overflow: PyErr_SetString(PyExc_OverflowError, "can't convert negative value to long"); return (long) -1; } /* CIntFromPy */ static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) { const int neg_one = (int) -1, const_zero = (int) 0; const int is_unsigned = neg_one > const_zero; #if PY_MAJOR_VERSION < 3 if (likely(PyInt_Check(x))) { if (sizeof(int) < sizeof(long)) { __PYX_VERIFY_RETURN_INT(int, long, PyInt_AS_LONG(x)) } else { long val = PyInt_AS_LONG(x); if (is_unsigned && unlikely(val < 0)) { goto raise_neg_overflow; } return (int) val; } } else #endif if (likely(PyLong_Check(x))) { if (is_unsigned) { #if CYTHON_USE_PYLONG_INTERNALS const digit* digits = ((PyLongObject*)x)->ob_digit; switch (Py_SIZE(x)) { case 0: return (int) 0; case 1: __PYX_VERIFY_RETURN_INT(int, digit, digits[0]) case 2: if (8 * sizeof(int) > 1 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(int) >= 2 * PyLong_SHIFT) { return (int) (((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); } } break; case 3: if (8 * sizeof(int) > 2 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(int) >= 3 * PyLong_SHIFT) { return (int) (((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); } } break; case 4: if (8 * sizeof(int) > 3 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(int) >= 4 * PyLong_SHIFT) { return (int) (((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); } } break; } #endif #if CYTHON_COMPILING_IN_CPYTHON if (unlikely(Py_SIZE(x) < 0)) { goto raise_neg_overflow; } #else { int result = PyObject_RichCompareBool(x, Py_False, Py_LT); if (unlikely(result < 0)) return (int) -1; if (unlikely(result == 1)) goto raise_neg_overflow; } #endif if (sizeof(int) <= sizeof(unsigned long)) { __PYX_VERIFY_RETURN_INT_EXC(int, unsigned long, PyLong_AsUnsignedLong(x)) #ifdef HAVE_LONG_LONG } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) { __PYX_VERIFY_RETURN_INT_EXC(int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) #endif } } else { #if CYTHON_USE_PYLONG_INTERNALS const digit* digits = ((PyLongObject*)x)->ob_digit; switch (Py_SIZE(x)) { case 0: return (int) 0; case -1: __PYX_VERIFY_RETURN_INT(int, sdigit, (sdigit) (-(sdigit)digits[0])) case 1: __PYX_VERIFY_RETURN_INT(int, digit, +digits[0]) case -2: if (8 * sizeof(int) - 1 > 1 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { return (int) (((int)-1)*(((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); } } break; case 2: if (8 * sizeof(int) > 1 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { return (int) ((((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); } } break; case -3: if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { return (int) (((int)-1)*(((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); } } break; case 3: if (8 * sizeof(int) > 2 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { return (int) ((((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); } } break; case -4: if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) { return (int) (((int)-1)*(((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); } } break; case 4: if (8 * sizeof(int) > 3 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) { return (int) ((((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); } } break; } #endif if (sizeof(int) <= sizeof(long)) { __PYX_VERIFY_RETURN_INT_EXC(int, long, PyLong_AsLong(x)) #ifdef HAVE_LONG_LONG } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) { __PYX_VERIFY_RETURN_INT_EXC(int, PY_LONG_LONG, PyLong_AsLongLong(x)) #endif } } { #if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray) PyErr_SetString(PyExc_RuntimeError, "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"); #else int val; PyObject *v = __Pyx_PyNumber_IntOrLong(x); #if PY_MAJOR_VERSION < 3 if (likely(v) && !PyLong_Check(v)) { PyObject *tmp = v; v = PyNumber_Long(tmp); Py_DECREF(tmp); } #endif if (likely(v)) { int one = 1; int is_little = (int)*(unsigned char *)&one; unsigned char *bytes = (unsigned char *)&val; int ret = _PyLong_AsByteArray((PyLongObject *)v, bytes, sizeof(val), is_little, !is_unsigned); Py_DECREF(v); if (likely(!ret)) return val; } #endif return (int) -1; } } else { int val; PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); if (!tmp) return (int) -1; val = __Pyx_PyInt_As_int(tmp); Py_DECREF(tmp); return val; } raise_overflow: PyErr_SetString(PyExc_OverflowError, "value too large to convert to int"); return (int) -1; raise_neg_overflow: PyErr_SetString(PyExc_OverflowError, "can't convert negative value to int"); return (int) -1; } /* CheckBinaryVersion */ static int __Pyx_check_binary_version(void) { char ctversion[4], rtversion[4]; PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION); PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion()); if (ctversion[0] != rtversion[0] || ctversion[2] != rtversion[2]) { char message[200]; PyOS_snprintf(message, sizeof(message), "compiletime version %s of module '%.100s' " "does not match runtime version %s", ctversion, __Pyx_MODULE_NAME, rtversion); return PyErr_WarnEx(NULL, message, 1); } return 0; } /* FunctionExport */ static int __Pyx_ExportFunction(const char *name, void (*f)(void), const char *sig) { PyObject *d = 0; PyObject *cobj = 0; union { void (*fp)(void); void *p; } tmp; d = PyObject_GetAttrString(__pyx_m, (char *)"__pyx_capi__"); if (!d) { PyErr_Clear(); d = PyDict_New(); if (!d) goto bad; Py_INCREF(d); if (PyModule_AddObject(__pyx_m, (char *)"__pyx_capi__", d) < 0) goto bad; } tmp.fp = f; #if PY_VERSION_HEX >= 0x02070000 cobj = PyCapsule_New(tmp.p, sig, 0); #else cobj = PyCObject_FromVoidPtrAndDesc(tmp.p, (void *)sig, 0); #endif if (!cobj) goto bad; if (PyDict_SetItemString(d, name, cobj) < 0) goto bad; Py_DECREF(cobj); Py_DECREF(d); return 0; bad: Py_XDECREF(cobj); Py_XDECREF(d); return -1; } /* InitStrings */ static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) { while (t->p) { #if PY_MAJOR_VERSION < 3 if (t->is_unicode) { *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL); } else if (t->intern) { *t->p = PyString_InternFromString(t->s); } else { *t->p = PyString_FromStringAndSize(t->s, t->n - 1); } #else if (t->is_unicode | t->is_str) { if (t->intern) { *t->p = PyUnicode_InternFromString(t->s); } else if (t->encoding) { *t->p = PyUnicode_Decode(t->s, t->n - 1, t->encoding, NULL); } else { *t->p = PyUnicode_FromStringAndSize(t->s, t->n - 1); } } else { *t->p = PyBytes_FromStringAndSize(t->s, t->n - 1); } #endif if (!*t->p) return -1; ++t; } return 0; } static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char* c_str) { return __Pyx_PyUnicode_FromStringAndSize(c_str, (Py_ssize_t)strlen(c_str)); } static CYTHON_INLINE char* __Pyx_PyObject_AsString(PyObject* o) { Py_ssize_t ignore; return __Pyx_PyObject_AsStringAndSize(o, &ignore); } static CYTHON_INLINE char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_t *length) { #if CYTHON_COMPILING_IN_CPYTHON && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT) if ( #if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII __Pyx_sys_getdefaultencoding_not_ascii && #endif PyUnicode_Check(o)) { #if PY_VERSION_HEX < 0x03030000 char* defenc_c; PyObject* defenc = _PyUnicode_AsDefaultEncodedString(o, NULL); if (!defenc) return NULL; defenc_c = PyBytes_AS_STRING(defenc); #if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII { char* end = defenc_c + PyBytes_GET_SIZE(defenc); char* c; for (c = defenc_c; c < end; c++) { if ((unsigned char) (*c) >= 128) { PyUnicode_AsASCIIString(o); return NULL; } } } #endif *length = PyBytes_GET_SIZE(defenc); return defenc_c; #else if (__Pyx_PyUnicode_READY(o) == -1) return NULL; #if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII if (PyUnicode_IS_ASCII(o)) { *length = PyUnicode_GET_LENGTH(o); return PyUnicode_AsUTF8(o); } else { PyUnicode_AsASCIIString(o); return NULL; } #else return PyUnicode_AsUTF8AndSize(o, length); #endif #endif } else #endif #if (!CYTHON_COMPILING_IN_PYPY) || (defined(PyByteArray_AS_STRING) && defined(PyByteArray_GET_SIZE)) if (PyByteArray_Check(o)) { *length = PyByteArray_GET_SIZE(o); return PyByteArray_AS_STRING(o); } else #endif { char* result; int r = PyBytes_AsStringAndSize(o, &result, length); if (unlikely(r < 0)) { return NULL; } else { return result; } } } static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) { int is_true = x == Py_True; if (is_true | (x == Py_False) | (x == Py_None)) return is_true; else return PyObject_IsTrue(x); } static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x) { #if CYTHON_USE_TYPE_SLOTS PyNumberMethods *m; #endif const char *name = NULL; PyObject *res = NULL; #if PY_MAJOR_VERSION < 3 if (PyInt_Check(x) || PyLong_Check(x)) #else if (PyLong_Check(x)) #endif return __Pyx_NewRef(x); #if CYTHON_USE_TYPE_SLOTS m = Py_TYPE(x)->tp_as_number; #if PY_MAJOR_VERSION < 3 if (m && m->nb_int) { name = "int"; res = PyNumber_Int(x); } else if (m && m->nb_long) { name = "long"; res = PyNumber_Long(x); } #else if (m && m->nb_int) { name = "int"; res = PyNumber_Long(x); } #endif #else res = PyNumber_Int(x); #endif if (res) { #if PY_MAJOR_VERSION < 3 if (!PyInt_Check(res) && !PyLong_Check(res)) { #else if (!PyLong_Check(res)) { #endif PyErr_Format(PyExc_TypeError, "__%.4s__ returned non-%.4s (type %.200s)", name, name, Py_TYPE(res)->tp_name); Py_DECREF(res); return NULL; } } else if (!PyErr_Occurred()) { PyErr_SetString(PyExc_TypeError, "an integer is required"); } return res; } static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) { Py_ssize_t ival; PyObject *x; #if PY_MAJOR_VERSION < 3 if (likely(PyInt_CheckExact(b))) { if (sizeof(Py_ssize_t) >= sizeof(long)) return PyInt_AS_LONG(b); else return PyInt_AsSsize_t(x); } #endif if (likely(PyLong_CheckExact(b))) { #if CYTHON_USE_PYLONG_INTERNALS const digit* digits = ((PyLongObject*)b)->ob_digit; const Py_ssize_t size = Py_SIZE(b); if (likely(__Pyx_sst_abs(size) <= 1)) { ival = likely(size) ? digits[0] : 0; if (size == -1) ival = -ival; return ival; } else { switch (size) { case 2: if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { return (Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); } break; case -2: if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { return -(Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); } break; case 3: if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { return (Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); } break; case -3: if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { return -(Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); } break; case 4: if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { return (Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); } break; case -4: if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { return -(Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); } break; } } #endif return PyLong_AsSsize_t(b); } x = PyNumber_Index(b); if (!x) return -1; ival = PyInt_AsSsize_t(x); Py_DECREF(x); return ival; } static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) { return PyInt_FromSize_t(ival); } #endif /* Py_PYTHON_H */ pybik-3.0/csrc/_glarea_es2.c0000644000175000017500000205700313173167600016114 0ustar barccbarcc00000000000000/* Generated by Cython 0.25.2 */ #define PY_SSIZE_T_CLEAN #include "Python.h" #ifndef Py_PYTHON_H #error Python headers needed to compile C extensions, please install development version of Python. #elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03020000) #error Cython requires Python 2.6+ or Python 3.2+. #else #define CYTHON_ABI "0_25_2" #include #ifndef offsetof #define offsetof(type, member) ( (size_t) & ((type*)0) -> member ) #endif #if !defined(WIN32) && !defined(MS_WINDOWS) #ifndef __stdcall #define __stdcall #endif #ifndef __cdecl #define __cdecl #endif #ifndef __fastcall #define __fastcall #endif #endif #ifndef DL_IMPORT #define DL_IMPORT(t) t #endif #ifndef DL_EXPORT #define DL_EXPORT(t) t #endif #ifndef HAVE_LONG_LONG #if PY_VERSION_HEX >= 0x03030000 || (PY_MAJOR_VERSION == 2 && PY_VERSION_HEX >= 0x02070000) #define HAVE_LONG_LONG #endif #endif #ifndef PY_LONG_LONG #define PY_LONG_LONG LONG_LONG #endif #ifndef Py_HUGE_VAL #define Py_HUGE_VAL HUGE_VAL #endif #ifdef PYPY_VERSION #define CYTHON_COMPILING_IN_PYPY 1 #define CYTHON_COMPILING_IN_PYSTON 0 #define CYTHON_COMPILING_IN_CPYTHON 0 #undef CYTHON_USE_TYPE_SLOTS #define CYTHON_USE_TYPE_SLOTS 0 #undef CYTHON_USE_ASYNC_SLOTS #define CYTHON_USE_ASYNC_SLOTS 0 #undef CYTHON_USE_PYLIST_INTERNALS #define CYTHON_USE_PYLIST_INTERNALS 0 #undef CYTHON_USE_UNICODE_INTERNALS #define CYTHON_USE_UNICODE_INTERNALS 0 #undef CYTHON_USE_UNICODE_WRITER #define CYTHON_USE_UNICODE_WRITER 0 #undef CYTHON_USE_PYLONG_INTERNALS #define CYTHON_USE_PYLONG_INTERNALS 0 #undef CYTHON_AVOID_BORROWED_REFS #define CYTHON_AVOID_BORROWED_REFS 1 #undef CYTHON_ASSUME_SAFE_MACROS #define CYTHON_ASSUME_SAFE_MACROS 0 #undef CYTHON_UNPACK_METHODS #define CYTHON_UNPACK_METHODS 0 #undef CYTHON_FAST_THREAD_STATE #define CYTHON_FAST_THREAD_STATE 0 #undef CYTHON_FAST_PYCALL #define CYTHON_FAST_PYCALL 0 #elif defined(PYSTON_VERSION) #define CYTHON_COMPILING_IN_PYPY 0 #define CYTHON_COMPILING_IN_PYSTON 1 #define CYTHON_COMPILING_IN_CPYTHON 0 #ifndef CYTHON_USE_TYPE_SLOTS #define CYTHON_USE_TYPE_SLOTS 1 #endif #undef CYTHON_USE_ASYNC_SLOTS #define CYTHON_USE_ASYNC_SLOTS 0 #undef CYTHON_USE_PYLIST_INTERNALS #define CYTHON_USE_PYLIST_INTERNALS 0 #ifndef CYTHON_USE_UNICODE_INTERNALS #define CYTHON_USE_UNICODE_INTERNALS 1 #endif #undef CYTHON_USE_UNICODE_WRITER #define CYTHON_USE_UNICODE_WRITER 0 #undef CYTHON_USE_PYLONG_INTERNALS #define CYTHON_USE_PYLONG_INTERNALS 0 #ifndef CYTHON_AVOID_BORROWED_REFS #define CYTHON_AVOID_BORROWED_REFS 0 #endif #ifndef CYTHON_ASSUME_SAFE_MACROS #define CYTHON_ASSUME_SAFE_MACROS 1 #endif #ifndef CYTHON_UNPACK_METHODS #define CYTHON_UNPACK_METHODS 1 #endif #undef CYTHON_FAST_THREAD_STATE #define CYTHON_FAST_THREAD_STATE 0 #undef CYTHON_FAST_PYCALL #define CYTHON_FAST_PYCALL 0 #else #define CYTHON_COMPILING_IN_PYPY 0 #define CYTHON_COMPILING_IN_PYSTON 0 #define CYTHON_COMPILING_IN_CPYTHON 1 #ifndef CYTHON_USE_TYPE_SLOTS #define CYTHON_USE_TYPE_SLOTS 1 #endif #if PY_MAJOR_VERSION < 3 #undef CYTHON_USE_ASYNC_SLOTS #define CYTHON_USE_ASYNC_SLOTS 0 #elif !defined(CYTHON_USE_ASYNC_SLOTS) #define CYTHON_USE_ASYNC_SLOTS 1 #endif #if PY_VERSION_HEX < 0x02070000 #undef CYTHON_USE_PYLONG_INTERNALS #define CYTHON_USE_PYLONG_INTERNALS 0 #elif !defined(CYTHON_USE_PYLONG_INTERNALS) #define CYTHON_USE_PYLONG_INTERNALS 1 #endif #ifndef CYTHON_USE_PYLIST_INTERNALS #define CYTHON_USE_PYLIST_INTERNALS 1 #endif #ifndef CYTHON_USE_UNICODE_INTERNALS #define CYTHON_USE_UNICODE_INTERNALS 1 #endif #if PY_VERSION_HEX < 0x030300F0 #undef CYTHON_USE_UNICODE_WRITER #define CYTHON_USE_UNICODE_WRITER 0 #elif !defined(CYTHON_USE_UNICODE_WRITER) #define CYTHON_USE_UNICODE_WRITER 1 #endif #ifndef CYTHON_AVOID_BORROWED_REFS #define CYTHON_AVOID_BORROWED_REFS 0 #endif #ifndef CYTHON_ASSUME_SAFE_MACROS #define CYTHON_ASSUME_SAFE_MACROS 1 #endif #ifndef CYTHON_UNPACK_METHODS #define CYTHON_UNPACK_METHODS 1 #endif #ifndef CYTHON_FAST_THREAD_STATE #define CYTHON_FAST_THREAD_STATE 1 #endif #ifndef CYTHON_FAST_PYCALL #define CYTHON_FAST_PYCALL 1 #endif #endif #if !defined(CYTHON_FAST_PYCCALL) #define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1) #endif #if CYTHON_USE_PYLONG_INTERNALS #include "longintrepr.h" #undef SHIFT #undef BASE #undef MASK #endif #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x02070600 && !defined(Py_OptimizeFlag) #define Py_OptimizeFlag 0 #endif #define __PYX_BUILD_PY_SSIZE_T "n" #define CYTHON_FORMAT_SSIZE_T "z" #if PY_MAJOR_VERSION < 3 #define __Pyx_BUILTIN_MODULE_NAME "__builtin__" #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ PyCode_New(a+k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) #define __Pyx_DefaultClassType PyClass_Type #else #define __Pyx_BUILTIN_MODULE_NAME "builtins" #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) #define __Pyx_DefaultClassType PyType_Type #endif #ifndef Py_TPFLAGS_CHECKTYPES #define Py_TPFLAGS_CHECKTYPES 0 #endif #ifndef Py_TPFLAGS_HAVE_INDEX #define Py_TPFLAGS_HAVE_INDEX 0 #endif #ifndef Py_TPFLAGS_HAVE_NEWBUFFER #define Py_TPFLAGS_HAVE_NEWBUFFER 0 #endif #ifndef Py_TPFLAGS_HAVE_FINALIZE #define Py_TPFLAGS_HAVE_FINALIZE 0 #endif #ifndef METH_FASTCALL #define METH_FASTCALL 0x80 typedef PyObject *(*__Pyx_PyCFunctionFast) (PyObject *self, PyObject **args, Py_ssize_t nargs, PyObject *kwnames); #else #define __Pyx_PyCFunctionFast _PyCFunctionFast #endif #if CYTHON_FAST_PYCCALL #define __Pyx_PyFastCFunction_Check(func)\ ((PyCFunction_Check(func) && (METH_FASTCALL == (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST))))) #else #define __Pyx_PyFastCFunction_Check(func) 0 #endif #if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND) #define CYTHON_PEP393_ENABLED 1 #define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ?\ 0 : _PyUnicode_Ready((PyObject *)(op))) #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_LENGTH(u) #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i) #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) PyUnicode_MAX_CHAR_VALUE(u) #define __Pyx_PyUnicode_KIND(u) PyUnicode_KIND(u) #define __Pyx_PyUnicode_DATA(u) PyUnicode_DATA(u) #define __Pyx_PyUnicode_READ(k, d, i) PyUnicode_READ(k, d, i) #define __Pyx_PyUnicode_WRITE(k, d, i, ch) PyUnicode_WRITE(k, d, i, ch) #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u))) #else #define CYTHON_PEP393_ENABLED 0 #define PyUnicode_1BYTE_KIND 1 #define PyUnicode_2BYTE_KIND 2 #define PyUnicode_4BYTE_KIND 4 #define __Pyx_PyUnicode_READY(op) (0) #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_SIZE(u) #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i])) #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) ((sizeof(Py_UNICODE) == 2) ? 65535 : 1114111) #define __Pyx_PyUnicode_KIND(u) (sizeof(Py_UNICODE)) #define __Pyx_PyUnicode_DATA(u) ((void*)PyUnicode_AS_UNICODE(u)) #define __Pyx_PyUnicode_READ(k, d, i) ((void)(k), (Py_UCS4)(((Py_UNICODE*)d)[i])) #define __Pyx_PyUnicode_WRITE(k, d, i, ch) (((void)(k)), ((Py_UNICODE*)d)[i] = ch) #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_SIZE(u)) #endif #if CYTHON_COMPILING_IN_PYPY #define __Pyx_PyUnicode_Concat(a, b) PyNumber_Add(a, b) #define __Pyx_PyUnicode_ConcatSafe(a, b) PyNumber_Add(a, b) #else #define __Pyx_PyUnicode_Concat(a, b) PyUnicode_Concat(a, b) #define __Pyx_PyUnicode_ConcatSafe(a, b) ((unlikely((a) == Py_None) || unlikely((b) == Py_None)) ?\ PyNumber_Add(a, b) : __Pyx_PyUnicode_Concat(a, b)) #endif #if CYTHON_COMPILING_IN_PYPY && !defined(PyUnicode_Contains) #define PyUnicode_Contains(u, s) PySequence_Contains(u, s) #endif #if CYTHON_COMPILING_IN_PYPY && !defined(PyByteArray_Check) #define PyByteArray_Check(obj) PyObject_TypeCheck(obj, &PyByteArray_Type) #endif #if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Format) #define PyObject_Format(obj, fmt) PyObject_CallMethod(obj, "__format__", "O", fmt) #endif #if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc) #define PyObject_Malloc(s) PyMem_Malloc(s) #define PyObject_Free(p) PyMem_Free(p) #define PyObject_Realloc(p) PyMem_Realloc(p) #endif #if CYTHON_COMPILING_IN_PYSTON #define __Pyx_PyCode_HasFreeVars(co) PyCode_HasFreeVars(co) #define __Pyx_PyFrame_SetLineNumber(frame, lineno) PyFrame_SetLineNumber(frame, lineno) #else #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0) #define __Pyx_PyFrame_SetLineNumber(frame, lineno) (frame)->f_lineno = (lineno) #endif #define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b)) #define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b)) #if PY_MAJOR_VERSION >= 3 #define __Pyx_PyString_Format(a, b) PyUnicode_Format(a, b) #else #define __Pyx_PyString_Format(a, b) PyString_Format(a, b) #endif #if PY_MAJOR_VERSION < 3 && !defined(PyObject_ASCII) #define PyObject_ASCII(o) PyObject_Repr(o) #endif #if PY_MAJOR_VERSION >= 3 #define PyBaseString_Type PyUnicode_Type #define PyStringObject PyUnicodeObject #define PyString_Type PyUnicode_Type #define PyString_Check PyUnicode_Check #define PyString_CheckExact PyUnicode_CheckExact #endif #if PY_MAJOR_VERSION >= 3 #define __Pyx_PyBaseString_Check(obj) PyUnicode_Check(obj) #define __Pyx_PyBaseString_CheckExact(obj) PyUnicode_CheckExact(obj) #else #define __Pyx_PyBaseString_Check(obj) (PyString_Check(obj) || PyUnicode_Check(obj)) #define __Pyx_PyBaseString_CheckExact(obj) (PyString_CheckExact(obj) || PyUnicode_CheckExact(obj)) #endif #ifndef PySet_CheckExact #define PySet_CheckExact(obj) (Py_TYPE(obj) == &PySet_Type) #endif #define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type) #define __Pyx_PyException_Check(obj) __Pyx_TypeCheck(obj, PyExc_Exception) #if PY_MAJOR_VERSION >= 3 #define PyIntObject PyLongObject #define PyInt_Type PyLong_Type #define PyInt_Check(op) PyLong_Check(op) #define PyInt_CheckExact(op) PyLong_CheckExact(op) #define PyInt_FromString PyLong_FromString #define PyInt_FromUnicode PyLong_FromUnicode #define PyInt_FromLong PyLong_FromLong #define PyInt_FromSize_t PyLong_FromSize_t #define PyInt_FromSsize_t PyLong_FromSsize_t #define PyInt_AsLong PyLong_AsLong #define PyInt_AS_LONG PyLong_AS_LONG #define PyInt_AsSsize_t PyLong_AsSsize_t #define PyInt_AsUnsignedLongMask PyLong_AsUnsignedLongMask #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask #define PyNumber_Int PyNumber_Long #endif #if PY_MAJOR_VERSION >= 3 #define PyBoolObject PyLongObject #endif #if PY_MAJOR_VERSION >= 3 && CYTHON_COMPILING_IN_PYPY #ifndef PyUnicode_InternFromString #define PyUnicode_InternFromString(s) PyUnicode_FromString(s) #endif #endif #if PY_VERSION_HEX < 0x030200A4 typedef long Py_hash_t; #define __Pyx_PyInt_FromHash_t PyInt_FromLong #define __Pyx_PyInt_AsHash_t PyInt_AsLong #else #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t #define __Pyx_PyInt_AsHash_t PyInt_AsSsize_t #endif #if PY_MAJOR_VERSION >= 3 #define __Pyx_PyMethod_New(func, self, klass) ((self) ? PyMethod_New(func, self) : PyInstanceMethod_New(func)) #else #define __Pyx_PyMethod_New(func, self, klass) PyMethod_New(func, self, klass) #endif #if CYTHON_USE_ASYNC_SLOTS #if PY_VERSION_HEX >= 0x030500B1 #define __Pyx_PyAsyncMethodsStruct PyAsyncMethods #define __Pyx_PyType_AsAsync(obj) (Py_TYPE(obj)->tp_as_async) #else typedef struct { unaryfunc am_await; unaryfunc am_aiter; unaryfunc am_anext; } __Pyx_PyAsyncMethodsStruct; #define __Pyx_PyType_AsAsync(obj) ((__Pyx_PyAsyncMethodsStruct*) (Py_TYPE(obj)->tp_reserved)) #endif #else #define __Pyx_PyType_AsAsync(obj) NULL #endif #ifndef CYTHON_RESTRICT #if defined(__GNUC__) #define CYTHON_RESTRICT __restrict__ #elif defined(_MSC_VER) && _MSC_VER >= 1400 #define CYTHON_RESTRICT __restrict #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L #define CYTHON_RESTRICT restrict #else #define CYTHON_RESTRICT #endif #endif #ifndef CYTHON_UNUSED # if defined(__GNUC__) # if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) # define CYTHON_UNUSED __attribute__ ((__unused__)) # else # define CYTHON_UNUSED # endif # elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER)) # define CYTHON_UNUSED __attribute__ ((__unused__)) # else # define CYTHON_UNUSED # endif #endif #ifndef CYTHON_MAYBE_UNUSED_VAR # if defined(__cplusplus) template void CYTHON_MAYBE_UNUSED_VAR( const T& ) { } # else # define CYTHON_MAYBE_UNUSED_VAR(x) (void)(x) # endif #endif #ifndef CYTHON_NCP_UNUSED # if CYTHON_COMPILING_IN_CPYTHON # define CYTHON_NCP_UNUSED # else # define CYTHON_NCP_UNUSED CYTHON_UNUSED # endif #endif #define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None) #ifndef CYTHON_INLINE #if defined(__clang__) #define CYTHON_INLINE __inline__ __attribute__ ((__unused__)) #elif defined(__GNUC__) #define CYTHON_INLINE __inline__ #elif defined(_MSC_VER) #define CYTHON_INLINE __inline #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L #define CYTHON_INLINE inline #else #define CYTHON_INLINE #endif #endif #if defined(WIN32) || defined(MS_WINDOWS) #define _USE_MATH_DEFINES #endif #include #ifdef NAN #define __PYX_NAN() ((float) NAN) #else static CYTHON_INLINE float __PYX_NAN() { float value; memset(&value, 0xFF, sizeof(value)); return value; } #endif #if defined(__CYGWIN__) && defined(_LDBL_EQ_DBL) #define __Pyx_truncl trunc #else #define __Pyx_truncl truncl #endif #define __PYX_ERR(f_index, lineno, Ln_error) \ { \ __pyx_filename = __pyx_f[f_index]; __pyx_lineno = lineno; __pyx_clineno = __LINE__; goto Ln_error; \ } #if PY_MAJOR_VERSION >= 3 #define __Pyx_PyNumber_Divide(x,y) PyNumber_TrueDivide(x,y) #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceTrueDivide(x,y) #else #define __Pyx_PyNumber_Divide(x,y) PyNumber_TrueDivide(x,y) #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceTrueDivide(x,y) #endif #ifndef __PYX_EXTERN_C #ifdef __cplusplus #define __PYX_EXTERN_C extern "C" #else #define __PYX_EXTERN_C extern #endif #endif #define __PYX_HAVE___glarea_es2 #define __PYX_HAVE_API___glarea_es2 #include #include #include #include #include #include "GLES2/gl2.h" #include #ifdef _OPENMP #include #endif /* _OPENMP */ #ifdef PYREX_WITHOUT_ASSERTIONS #define CYTHON_WITHOUT_ASSERTIONS #endif typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* encoding; const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry; #define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0 #define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT 0 #define __PYX_DEFAULT_STRING_ENCODING "" #define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString #define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize #define __Pyx_uchar_cast(c) ((unsigned char)c) #define __Pyx_long_cast(x) ((long)x) #define __Pyx_fits_Py_ssize_t(v, type, is_signed) (\ (sizeof(type) < sizeof(Py_ssize_t)) ||\ (sizeof(type) > sizeof(Py_ssize_t) &&\ likely(v < (type)PY_SSIZE_T_MAX ||\ v == (type)PY_SSIZE_T_MAX) &&\ (!is_signed || likely(v > (type)PY_SSIZE_T_MIN ||\ v == (type)PY_SSIZE_T_MIN))) ||\ (sizeof(type) == sizeof(Py_ssize_t) &&\ (is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\ v == (type)PY_SSIZE_T_MAX))) ) #if defined (__cplusplus) && __cplusplus >= 201103L #include #define __Pyx_sst_abs(value) std::abs(value) #elif SIZEOF_INT >= SIZEOF_SIZE_T #define __Pyx_sst_abs(value) abs(value) #elif SIZEOF_LONG >= SIZEOF_SIZE_T #define __Pyx_sst_abs(value) labs(value) #elif defined (_MSC_VER) && defined (_M_X64) #define __Pyx_sst_abs(value) _abs64(value) #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L #define __Pyx_sst_abs(value) llabs(value) #elif defined (__GNUC__) #define __Pyx_sst_abs(value) __builtin_llabs(value) #else #define __Pyx_sst_abs(value) ((value<0) ? -value : value) #endif static CYTHON_INLINE char* __Pyx_PyObject_AsString(PyObject*); static CYTHON_INLINE char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length); #define __Pyx_PyByteArray_FromString(s) PyByteArray_FromStringAndSize((const char*)s, strlen((const char*)s)) #define __Pyx_PyByteArray_FromStringAndSize(s, l) PyByteArray_FromStringAndSize((const char*)s, l) #define __Pyx_PyBytes_FromString PyBytes_FromString #define __Pyx_PyBytes_FromStringAndSize PyBytes_FromStringAndSize static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char*); #if PY_MAJOR_VERSION < 3 #define __Pyx_PyStr_FromString __Pyx_PyBytes_FromString #define __Pyx_PyStr_FromStringAndSize __Pyx_PyBytes_FromStringAndSize #else #define __Pyx_PyStr_FromString __Pyx_PyUnicode_FromString #define __Pyx_PyStr_FromStringAndSize __Pyx_PyUnicode_FromStringAndSize #endif #define __Pyx_PyObject_AsSString(s) ((signed char*) __Pyx_PyObject_AsString(s)) #define __Pyx_PyObject_AsUString(s) ((unsigned char*) __Pyx_PyObject_AsString(s)) #define __Pyx_PyObject_FromCString(s) __Pyx_PyObject_FromString((const char*)s) #define __Pyx_PyBytes_FromCString(s) __Pyx_PyBytes_FromString((const char*)s) #define __Pyx_PyByteArray_FromCString(s) __Pyx_PyByteArray_FromString((const char*)s) #define __Pyx_PyStr_FromCString(s) __Pyx_PyStr_FromString((const char*)s) #define __Pyx_PyUnicode_FromCString(s) __Pyx_PyUnicode_FromString((const char*)s) #if PY_MAJOR_VERSION < 3 static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u) { const Py_UNICODE *u_end = u; while (*u_end++) ; return (size_t)(u_end - u - 1); } #else #define __Pyx_Py_UNICODE_strlen Py_UNICODE_strlen #endif #define __Pyx_PyUnicode_FromUnicode(u) PyUnicode_FromUnicode(u, __Pyx_Py_UNICODE_strlen(u)) #define __Pyx_PyUnicode_FromUnicodeAndLength PyUnicode_FromUnicode #define __Pyx_PyUnicode_AsUnicode PyUnicode_AsUnicode #define __Pyx_NewRef(obj) (Py_INCREF(obj), obj) #define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None) #define __Pyx_PyBool_FromLong(b) ((b) ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False)) static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*); static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x); static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*); static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t); #if CYTHON_ASSUME_SAFE_MACROS #define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x)) #else #define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x) #endif #define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x)) #if PY_MAJOR_VERSION >= 3 #define __Pyx_PyNumber_Int(x) (PyLong_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Long(x)) #else #define __Pyx_PyNumber_Int(x) (PyInt_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Int(x)) #endif #define __Pyx_PyNumber_Float(x) (PyFloat_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Float(x)) #if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII static int __Pyx_sys_getdefaultencoding_not_ascii; static int __Pyx_init_sys_getdefaultencoding_params(void) { PyObject* sys; PyObject* default_encoding = NULL; PyObject* ascii_chars_u = NULL; PyObject* ascii_chars_b = NULL; const char* default_encoding_c; sys = PyImport_ImportModule("sys"); if (!sys) goto bad; default_encoding = PyObject_CallMethod(sys, (char*) "getdefaultencoding", NULL); Py_DECREF(sys); if (!default_encoding) goto bad; default_encoding_c = PyBytes_AsString(default_encoding); if (!default_encoding_c) goto bad; if (strcmp(default_encoding_c, "ascii") == 0) { __Pyx_sys_getdefaultencoding_not_ascii = 0; } else { char ascii_chars[128]; int c; for (c = 0; c < 128; c++) { ascii_chars[c] = c; } __Pyx_sys_getdefaultencoding_not_ascii = 1; ascii_chars_u = PyUnicode_DecodeASCII(ascii_chars, 128, NULL); if (!ascii_chars_u) goto bad; ascii_chars_b = PyUnicode_AsEncodedString(ascii_chars_u, default_encoding_c, NULL); if (!ascii_chars_b || !PyBytes_Check(ascii_chars_b) || memcmp(ascii_chars, PyBytes_AS_STRING(ascii_chars_b), 128) != 0) { PyErr_Format( PyExc_ValueError, "This module compiled with c_string_encoding=ascii, but default encoding '%.200s' is not a superset of ascii.", default_encoding_c); goto bad; } Py_DECREF(ascii_chars_u); Py_DECREF(ascii_chars_b); } Py_DECREF(default_encoding); return 0; bad: Py_XDECREF(default_encoding); Py_XDECREF(ascii_chars_u); Py_XDECREF(ascii_chars_b); return -1; } #endif #if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT && PY_MAJOR_VERSION >= 3 #define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeUTF8(c_str, size, NULL) #else #define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_Decode(c_str, size, __PYX_DEFAULT_STRING_ENCODING, NULL) #if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT static char* __PYX_DEFAULT_STRING_ENCODING; static int __Pyx_init_sys_getdefaultencoding_params(void) { PyObject* sys; PyObject* default_encoding = NULL; char* default_encoding_c; sys = PyImport_ImportModule("sys"); if (!sys) goto bad; default_encoding = PyObject_CallMethod(sys, (char*) (const char*) "getdefaultencoding", NULL); Py_DECREF(sys); if (!default_encoding) goto bad; default_encoding_c = PyBytes_AsString(default_encoding); if (!default_encoding_c) goto bad; __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c)); if (!__PYX_DEFAULT_STRING_ENCODING) goto bad; strcpy(__PYX_DEFAULT_STRING_ENCODING, default_encoding_c); Py_DECREF(default_encoding); return 0; bad: Py_XDECREF(default_encoding); return -1; } #endif #endif /* Test for GCC > 2.95 */ #if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))) #define likely(x) __builtin_expect(!!(x), 1) #define unlikely(x) __builtin_expect(!!(x), 0) #else /* !__GNUC__ or GCC < 2.95 */ #define likely(x) (x) #define unlikely(x) (x) #endif /* __GNUC__ */ static PyObject *__pyx_m; static PyObject *__pyx_d; static PyObject *__pyx_b; static PyObject *__pyx_empty_tuple; static PyObject *__pyx_empty_bytes; static PyObject *__pyx_empty_unicode; static int __pyx_lineno; static int __pyx_clineno = 0; static const char * __pyx_cfilenm= __FILE__; static const char *__pyx_filename; static const char *__pyx_f[] = { "build/temp.linux-x86_64-3.5/pybiklib/ext/_glarea_es2.pyx", }; /*--- Type declarations ---*/ /* "_gldraw_es2.pxd":4 * * from gl_es2 cimport * #line 34 * cdef enum: # #line 67 # <<<<<<<<<<<<<< * MAX_TRANSFORMATIONS = 60 #line 71 * MAX_BLOCKS = 1312 #line 72 */ enum { __pyx_e_11_gldraw_es2_MAX_TRANSFORMATIONS = 60, __pyx_e_11_gldraw_es2_MAX_BLOCKS = 0x520, __pyx_e_11_gldraw_es2_MAX_FACES = 20, __pyx_e_11_gldraw_es2_ATTRIB_LOCATION = 0, __pyx_e_11_gldraw_es2_PICKATTRIB_LOCATION = 5, __pyx_e_11_gldraw_es2_ATTRIB_CNT = 7 }; /* "_gldraw_es2.pxd":11 * PICKATTRIB_LOCATION = 5 #line 75 * ATTRIB_CNT = 7 #line 76 * ctypedef float vec4[4] #line 79 # <<<<<<<<<<<<<< * ctypedef vec4 mat4[4] #line 80 * cdef void matrix_set_identity(mat4 &matrix) nogil #line 87 */ typedef float __pyx_t_11_gldraw_es2_vec4[4]; /* "_gldraw_es2.pxd":12 * ATTRIB_CNT = 7 #line 76 * ctypedef float vec4[4] #line 79 * ctypedef vec4 mat4[4] #line 80 # <<<<<<<<<<<<<< * cdef void matrix_set_identity(mat4 &matrix) nogil #line 87 * cdef void init_gldraw() #line 137 */ typedef __pyx_t_11_gldraw_es2_vec4 __pyx_t_11_gldraw_es2_mat4[4]; struct __pyx_t_11_glarea_es2_AtlasData; struct __pyx_t_11_glarea_es2_RenderData; struct __pyx_t_11_glarea_es2_UIData; /* "_glarea_es2.pyx":55 * #puts = print * * cdef enum: # #px/ # <<<<<<<<<<<<<< * #if True: * DEBUG_MSGGL = 0x02 */ enum { __pyx_e_11_glarea_es2_DEBUG_MSGGL = 0x02, __pyx_e_11_glarea_es2_DEBUG_MSGEXT = 0x08, __pyx_e_11_glarea_es2_DEBUG_DRAW = 0x10, __pyx_e_11_glarea_es2_DEBUG_PICK = 0x20 }; /* "_glarea_es2.pyx":72 * * * cdef struct AtlasData: #px/ # <<<<<<<<<<<<<< * #class AtlasData: pass * int x, w, h #px+ */ struct __pyx_t_11_glarea_es2_AtlasData { int x; int w; int h; char *data; }; /* "_glarea_es2.pyx":77 * char *data #px+ * * cdef struct RenderData: #px/ # <<<<<<<<<<<<<< * #class renderdata: * float bg_red #px+ */ struct __pyx_t_11_glarea_es2_RenderData { float bg_red; float bg_green; float bg_blue; int y; int width; int height; int pick_x; int pick_y; int multisample; __pyx_t_11_gldraw_es2_mat4 modelview_matrix; __pyx_t_11_gldraw_es2_mat4 projection_matrix; __pyx_t_11_gldraw_es2_mat4 picking_matrix; GLuint prog_render; GLuint projection_location; GLuint modelview_location; GLuint prog_hud; GLuint prog_pick; GLuint picking_location; GLuint projection_pick_location; GLuint modelview_pick_location; int shader_changed; char *shader_vertsrc; char *shader_fragsrc; char *hud_vertsrc; char *hud_fragsrc; char *pick_vertsrc; char *pick_fragsrc; struct __pyx_t_11_glarea_es2_AtlasData atlasdata[__pyx_e_11_gldraw_es2_MAX_FACES]; int atlaslen; float debug_modelview1[3]; float debug_modelview2[3]; int debug_viewport1[2]; int debug_viewport2[2]; }; /* "_glarea_es2.pyx":128 * * * cdef struct UIData: #px/ # <<<<<<<<<<<<<< * #class uidata: * bint synced #px+ */ struct __pyx_t_11_glarea_es2_UIData { int synced; int background_changed; float bg_red; float bg_green; float bg_blue; int viewport_changed; int rotation_changed; float rotationxhalf; float rotationyhalf; int rotation_quat_changed; __pyx_t_11_gldraw_es2_vec4 rotation_quat; int pick_x; int pick_y; int frustum_changed; float fovy_radius; float fovy_radius_zoom; double bounding_sphere_radius; int multisample_changed; char *hud_vertsrc; char *hud_fragsrc; char *pick_vertsrc; char *pick_fragsrc; int shaders_changed; char *shader_vertsrc; char *shader_fragsrc; struct __pyx_t_11_glarea_es2_AtlasData atlasdata[__pyx_e_11_gldraw_es2_MAX_FACES]; int atlaslen; int data_changed; int vertexdatalen; char *vertexdata; long vertexpointers[(__pyx_e_11_gldraw_es2_ATTRIB_CNT - 1)]; int nblocks; short cnts_block[__pyx_e_11_gldraw_es2_MAX_BLOCKS]; int idx_debug; int cnt_debug; int cnt_pick; int transformations_count; __pyx_t_11_gldraw_es2_mat4 transformations[__pyx_e_11_gldraw_es2_MAX_TRANSFORMATIONS]; int transformation_changed; short transformation_blocks[__pyx_e_11_gldraw_es2_MAX_BLOCKS]; int animation_changed; int animation_blocks_count; short animation_blocks[__pyx_e_11_gldraw_es2_MAX_BLOCKS]; float angle; float rotation_x; float rotation_y; float rotation_z; }; /* --- Runtime support code (head) --- */ /* Refnanny.proto */ #ifndef CYTHON_REFNANNY #define CYTHON_REFNANNY 0 #endif #if CYTHON_REFNANNY typedef struct { void (*INCREF)(void*, PyObject*, int); void (*DECREF)(void*, PyObject*, int); void (*GOTREF)(void*, PyObject*, int); void (*GIVEREF)(void*, PyObject*, int); void* (*SetupContext)(const char*, int, const char*); void (*FinishContext)(void**); } __Pyx_RefNannyAPIStruct; static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL; static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname); #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL; #ifdef WITH_THREAD #define __Pyx_RefNannySetupContext(name, acquire_gil)\ if (acquire_gil) {\ PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\ __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\ PyGILState_Release(__pyx_gilstate_save);\ } else {\ __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\ } #else #define __Pyx_RefNannySetupContext(name, acquire_gil)\ __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__) #endif #define __Pyx_RefNannyFinishContext()\ __Pyx_RefNanny->FinishContext(&__pyx_refnanny) #define __Pyx_INCREF(r) __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__) #define __Pyx_DECREF(r) __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__) #define __Pyx_GOTREF(r) __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), __LINE__) #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), __LINE__) #define __Pyx_XINCREF(r) do { if((r) != NULL) {__Pyx_INCREF(r); }} while(0) #define __Pyx_XDECREF(r) do { if((r) != NULL) {__Pyx_DECREF(r); }} while(0) #define __Pyx_XGOTREF(r) do { if((r) != NULL) {__Pyx_GOTREF(r); }} while(0) #define __Pyx_XGIVEREF(r) do { if((r) != NULL) {__Pyx_GIVEREF(r);}} while(0) #else #define __Pyx_RefNannyDeclarations #define __Pyx_RefNannySetupContext(name, acquire_gil) #define __Pyx_RefNannyFinishContext() #define __Pyx_INCREF(r) Py_INCREF(r) #define __Pyx_DECREF(r) Py_DECREF(r) #define __Pyx_GOTREF(r) #define __Pyx_GIVEREF(r) #define __Pyx_XINCREF(r) Py_XINCREF(r) #define __Pyx_XDECREF(r) Py_XDECREF(r) #define __Pyx_XGOTREF(r) #define __Pyx_XGIVEREF(r) #endif #define __Pyx_XDECREF_SET(r, v) do {\ PyObject *tmp = (PyObject *) r;\ r = v; __Pyx_XDECREF(tmp);\ } while (0) #define __Pyx_DECREF_SET(r, v) do {\ PyObject *tmp = (PyObject *) r;\ r = v; __Pyx_DECREF(tmp);\ } while (0) #define __Pyx_CLEAR(r) do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0) #define __Pyx_XCLEAR(r) do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0) /* PyObjectGetAttrStr.proto */ #if CYTHON_USE_TYPE_SLOTS static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) { PyTypeObject* tp = Py_TYPE(obj); if (likely(tp->tp_getattro)) return tp->tp_getattro(obj, attr_name); #if PY_MAJOR_VERSION < 3 if (likely(tp->tp_getattr)) return tp->tp_getattr(obj, PyString_AS_STRING(attr_name)); #endif return PyObject_GetAttr(obj, attr_name); } #else #define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n) #endif /* GetBuiltinName.proto */ static PyObject *__Pyx_GetBuiltinName(PyObject *name); /* ForceInitThreads.proto */ #ifndef __PYX_FORCE_INIT_THREADS #define __PYX_FORCE_INIT_THREADS 0 #endif /* PyThreadStateGet.proto */ #if CYTHON_FAST_THREAD_STATE #define __Pyx_PyThreadState_declare PyThreadState *__pyx_tstate; #define __Pyx_PyThreadState_assign __pyx_tstate = PyThreadState_GET(); #else #define __Pyx_PyThreadState_declare #define __Pyx_PyThreadState_assign #endif /* PyErrFetchRestore.proto */ #if CYTHON_FAST_THREAD_STATE #define __Pyx_ErrRestoreWithState(type, value, tb) __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb) #define __Pyx_ErrFetchWithState(type, value, tb) __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb) #define __Pyx_ErrRestore(type, value, tb) __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb) #define __Pyx_ErrFetch(type, value, tb) __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb) static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); #else #define __Pyx_ErrRestoreWithState(type, value, tb) PyErr_Restore(type, value, tb) #define __Pyx_ErrFetchWithState(type, value, tb) PyErr_Fetch(type, value, tb) #define __Pyx_ErrRestore(type, value, tb) PyErr_Restore(type, value, tb) #define __Pyx_ErrFetch(type, value, tb) PyErr_Fetch(type, value, tb) #endif /* WriteUnraisableException.proto */ static void __Pyx_WriteUnraisable(const char *name, int clineno, int lineno, const char *filename, int full_traceback, int nogil); /* GetModuleGlobalName.proto */ static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name); /* PyObjectCall.proto */ #if CYTHON_COMPILING_IN_CPYTHON static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw); #else #define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw) #endif /* RaiseArgTupleInvalid.proto */ static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact, Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found); /* RaiseDoubleKeywords.proto */ static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name); /* ParseKeywords.proto */ static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[],\ PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args,\ const char* function_name); /* PyIntBinop.proto */ #if !CYTHON_COMPILING_IN_PYPY static PyObject* __Pyx_PyInt_RemainderObjC(PyObject *op1, PyObject *op2, long intval, int inplace); #else #define __Pyx_PyInt_RemainderObjC(op1, op2, intval, inplace)\ (inplace ? PyNumber_InPlaceRemainder(op1, op2) : PyNumber_Remainder(op1, op2)) #endif /* PyFloatBinop.proto */ #if !CYTHON_COMPILING_IN_PYPY static PyObject* __Pyx_PyFloat_TrueDivideObjC(PyObject *op1, PyObject *op2, double floatval, int inplace); #else #define __Pyx_PyFloat_TrueDivideObjC(op1, op2, floatval, inplace)\ (inplace ? PyNumber_InPlaceTrueDivide(op1, op2) : PyNumber_TrueDivide(op1, op2)) #endif /* RaiseTooManyValuesToUnpack.proto */ static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected); /* RaiseNeedMoreValuesToUnpack.proto */ static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index); /* IterFinish.proto */ static CYTHON_INLINE int __Pyx_IterFinish(void); /* UnpackItemEndCheck.proto */ static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected); /* PyIntBinop.proto */ #if !CYTHON_COMPILING_IN_PYPY static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, long intval, int inplace); #else #define __Pyx_PyInt_AddObjC(op1, op2, intval, inplace)\ (inplace ? PyNumber_InPlaceAdd(op1, op2) : PyNumber_Add(op1, op2)) #endif /* None.proto */ static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname); /* PyCFunctionFastCall.proto */ #if CYTHON_FAST_PYCCALL static CYTHON_INLINE PyObject *__Pyx_PyCFunction_FastCall(PyObject *func, PyObject **args, Py_ssize_t nargs); #else #define __Pyx_PyCFunction_FastCall(func, args, nargs) (assert(0), NULL) #endif /* PyFunctionFastCall.proto */ #if CYTHON_FAST_PYCALL #define __Pyx_PyFunction_FastCall(func, args, nargs)\ __Pyx_PyFunction_FastCallDict((func), (args), (nargs), NULL) #if 1 || PY_VERSION_HEX < 0x030600B1 static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, int nargs, PyObject *kwargs); #else #define __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs) _PyFunction_FastCallDict(func, args, nargs, kwargs) #endif #endif /* PyObjectCallMethO.proto */ #if CYTHON_COMPILING_IN_CPYTHON static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg); #endif /* PyObjectCallOneArg.proto */ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg); /* PyObjectCallNoArg.proto */ #if CYTHON_COMPILING_IN_CPYTHON static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func); #else #define __Pyx_PyObject_CallNoArg(func) __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL) #endif /* GetItemInt.proto */ #define __Pyx_GetItemInt(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ __Pyx_GetItemInt_Fast(o, (Py_ssize_t)i, is_list, wraparound, boundscheck) :\ (is_list ? (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL) :\ __Pyx_GetItemInt_Generic(o, to_py_func(i)))) #define __Pyx_GetItemInt_List(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ __Pyx_GetItemInt_List_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\ (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL)) static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, int wraparound, int boundscheck); #define __Pyx_GetItemInt_Tuple(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ __Pyx_GetItemInt_Tuple_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\ (PyErr_SetString(PyExc_IndexError, "tuple index out of range"), (PyObject*)NULL)) static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, int wraparound, int boundscheck); static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j); static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, int is_list, int wraparound, int boundscheck); /* pyobject_as_double.proto */ static double __Pyx__PyObject_AsDouble(PyObject* obj); #if CYTHON_COMPILING_IN_PYPY #define __Pyx_PyObject_AsDouble(obj)\ (likely(PyFloat_CheckExact(obj)) ? PyFloat_AS_DOUBLE(obj) :\ likely(PyInt_CheckExact(obj)) ?\ PyFloat_AsDouble(obj) : __Pyx__PyObject_AsDouble(obj)) #else #define __Pyx_PyObject_AsDouble(obj)\ ((likely(PyFloat_CheckExact(obj))) ?\ PyFloat_AS_DOUBLE(obj) : __Pyx__PyObject_AsDouble(obj)) #endif /* ListCompAppend.proto */ #if CYTHON_USE_PYLIST_INTERNALS && CYTHON_ASSUME_SAFE_MACROS static CYTHON_INLINE int __Pyx_ListComp_Append(PyObject* list, PyObject* x) { PyListObject* L = (PyListObject*) list; Py_ssize_t len = Py_SIZE(list); if (likely(L->allocated > len)) { Py_INCREF(x); PyList_SET_ITEM(list, len, x); Py_SIZE(list) = len+1; return 0; } return PyList_Append(list, x); } #else #define __Pyx_ListComp_Append(L,x) PyList_Append(L,x) #endif /* PyObjectSetAttrStr.proto */ #if CYTHON_USE_TYPE_SLOTS #define __Pyx_PyObject_DelAttrStr(o,n) __Pyx_PyObject_SetAttrStr(o,n,NULL) static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr_name, PyObject* value) { PyTypeObject* tp = Py_TYPE(obj); if (likely(tp->tp_setattro)) return tp->tp_setattro(obj, attr_name, value); #if PY_MAJOR_VERSION < 3 if (likely(tp->tp_setattr)) return tp->tp_setattr(obj, PyString_AS_STRING(attr_name), value); #endif return PyObject_SetAttr(obj, attr_name, value); } #else #define __Pyx_PyObject_DelAttrStr(o,n) PyObject_DelAttr(o,n) #define __Pyx_PyObject_SetAttrStr(o,n,v) PyObject_SetAttr(o,n,v) #endif /* ListAppend.proto */ #if CYTHON_USE_PYLIST_INTERNALS && CYTHON_ASSUME_SAFE_MACROS static CYTHON_INLINE int __Pyx_PyList_Append(PyObject* list, PyObject* x) { PyListObject* L = (PyListObject*) list; Py_ssize_t len = Py_SIZE(list); if (likely(L->allocated > len) & likely(len > (L->allocated >> 1))) { Py_INCREF(x); PyList_SET_ITEM(list, len, x); Py_SIZE(list) = len+1; return 0; } return PyList_Append(list, x); } #else #define __Pyx_PyList_Append(L,x) PyList_Append(L,x) #endif /* PyObjectCallMethod1.proto */ static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg); /* append.proto */ static CYTHON_INLINE int __Pyx_PyObject_Append(PyObject* L, PyObject* x); /* ArgTypeTest.proto */ static CYTHON_INLINE int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *type, int none_allowed, const char *name, int exact); /* CalculateMetaclass.proto */ static PyObject *__Pyx_CalculateMetaclass(PyTypeObject *metaclass, PyObject *bases); /* Py3ClassCreate.proto */ static PyObject *__Pyx_Py3MetaclassPrepare(PyObject *metaclass, PyObject *bases, PyObject *name, PyObject *qualname, PyObject *mkw, PyObject *modname, PyObject *doc); static PyObject *__Pyx_Py3ClassCreate(PyObject *metaclass, PyObject *name, PyObject *bases, PyObject *dict, PyObject *mkw, int calculate_metaclass, int allow_py2_metaclass); /* CodeObjectCache.proto */ typedef struct { PyCodeObject* code_object; int code_line; } __Pyx_CodeObjectCacheEntry; struct __Pyx_CodeObjectCache { int count; int max_count; __Pyx_CodeObjectCacheEntry* entries; }; static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL}; static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line); static PyCodeObject *__pyx_find_code_object(int code_line); static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object); /* AddTraceback.proto */ static void __Pyx_AddTraceback(const char *funcname, int c_line, int py_line, const char *filename); /* CIntToPy.proto */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value); /* CIntToPy.proto */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value); /* CIntToPy.proto */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_GLint(GLint value); /* CIntFromPy.proto */ static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *); /* CIntFromPy.proto */ static CYTHON_INLINE short __Pyx_PyInt_As_short(PyObject *); /* CIntFromPy.proto */ static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *); /* CheckBinaryVersion.proto */ static int __Pyx_check_binary_version(void); /* FunctionExport.proto */ static int __Pyx_ExportFunction(const char *name, void (*f)(void), const char *sig); /* PyIdentifierFromString.proto */ #if !defined(__Pyx_PyIdentifier_FromString) #if PY_MAJOR_VERSION < 3 #define __Pyx_PyIdentifier_FromString(s) PyString_FromString(s) #else #define __Pyx_PyIdentifier_FromString(s) PyUnicode_FromString(s) #endif #endif /* ModuleImport.proto */ static PyObject *__Pyx_ImportModule(const char *name); /* FunctionImport.proto */ static int __Pyx_ImportFunction(PyObject *module, const char *funcname, void (**f)(void), const char *sig); /* InitStrings.proto */ static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); /* Module declarations from 'libc.string' */ /* Module declarations from 'libc.stdlib' */ /* Module declarations from 'libc.math' */ /* Module declarations from 'libc.stddef' */ /* Module declarations from 'libc.stdint' */ /* Module declarations from 'gl_es2' */ /* Module declarations from '_gldraw_es2' */ static void (*__pyx_f_11_gldraw_es2_matrix_set_identity)(__pyx_t_11_gldraw_es2_vec4 *); /*proto*/ static void (*__pyx_f_11_gldraw_es2_init_gldraw)(void); /*proto*/ static void (*__pyx_f_11_gldraw_es2_sync_block_transformations)(short *); /*proto*/ static void (*__pyx_f_11_gldraw_es2_sync_animation_start)(int, short *); /*proto*/ static void (*__pyx_f_11_gldraw_es2_sync_animation_next)(float, float, float, float); /*proto*/ static void (*__pyx_f_11_gldraw_es2_gl_draw_cube)(void); /*proto*/ static void (*__pyx_f_11_gldraw_es2_gl_pick_cube)(void); /*proto*/ static void (*__pyx_f_11_gldraw_es2_gl_init_buffers)(void); /*proto*/ static void (*__pyx_f_11_gldraw_es2_gl_delete_buffers)(void); /*proto*/ static void (*__pyx_f_11_gldraw_es2_sync_blocks)(int, short *, int, int, int); /*proto*/ static void (*__pyx_f_11_gldraw_es2_sync_vertexdata)(int, char *, long *); /*proto*/ static void (*__pyx_f_11_gldraw_es2_sync_transformations)(int, __pyx_t_11_gldraw_es2_mat4 *); /*proto*/ static void (*__pyx_f_11_gldraw_es2_gl_enable_data)(void); /*proto*/ static void (*__pyx_f_11_gldraw_es2_gl_disable_data)(void); /*proto*/ static void (*__pyx_f_11_gldraw_es2_gl_draw_cube_debug)(void); /*proto*/ static void (*__pyx_f_11_gldraw_es2_gl_draw_select_debug)(GLfloat *, GLsizeiptr, GLuint); /*proto*/ static void (*__pyx_f_11_gldraw_es2_gl_init_object_location)(GLuint); /*proto*/ /* Module declarations from 'libc.stdio' */ /* Module declarations from '_glarea_es2' */ static long __pyx_v_11_glarea_es2_debug; static struct __pyx_t_11_glarea_es2_RenderData __pyx_v_11_glarea_es2_renderdata; static struct __pyx_t_11_glarea_es2_UIData __pyx_v_11_glarea_es2_uidata; static void __pyx_f_11_glarea_es2_gl_create_render_program(void); /*proto*/ static void __pyx_f_11_glarea_es2_quat_set_identity(float *); /*proto*/ static void __pyx_f_11_glarea_es2_quat_mult(float *, float *, float *); /*proto*/ static void __pyx_f_11_glarea_es2_quat_to_matrix(__pyx_t_11_gldraw_es2_vec4 *, float *); /*proto*/ static void __pyx_f_11_glarea_es2_quat_from_angle_axis(float *, float, float, float, float); /*proto*/ static void __pyx_f_11_glarea_es2__sync_modelview_matrix_translation(void); /*proto*/ static void __pyx_f_11_glarea_es2__sync_modelview_matrix_rotation(void); /*proto*/ static void __pyx_f_11_glarea_es2__sync_projection_matrix(void); /*proto*/ static void __pyx_f_11_glarea_es2__set_picking_matrix(int, int); /*proto*/ static void __pyx_f_11_glarea_es2__set_picking_matrix_identity(void); /*proto*/ static PyObject *__pyx_f_11_glarea_es2_set_animation_start(PyObject *, float, float, float, int __pyx_skip_dispatch); /*proto*/ static PyObject *__pyx_f_11_glarea_es2_set_atlas_data(int, PyObject *, int, int, int, int __pyx_skip_dispatch); /*proto*/ static void __pyx_f_11_glarea_es2__gl_print_string(char *, GLenum); /*proto*/ static void __pyx_f_11_glarea_es2__gl_print_float(char *, GLenum); /*proto*/ static void __pyx_f_11_glarea_es2__gl_print_integer(char *, GLenum); /*proto*/ static void __pyx_f_11_glarea_es2__gl_print_bool(char *, GLenum); /*proto*/ static void __pyx_f_11_glarea_es2__gl_set_matrix(GLint, __pyx_t_11_gldraw_es2_vec4 *); /*proto*/ static void __pyx_f_11_glarea_es2__gl_render_pick(void); /*proto*/ static void __pyx_f_11_glarea_es2__modelview_to_viewport(float *, int *); /*proto*/ static void __pyx_f_11_glarea_es2__viewport_to_modelview(int *, float *); /*proto*/ static void __pyx_f_11_glarea_es2__gl_print_shader_log(GLuint); /*proto*/ static void __pyx_f_11_glarea_es2__gl_print_program_log(GLuint); /*proto*/ static GLuint __pyx_f_11_glarea_es2__gl_create_compiled_shader(GLenum, char *); /*proto*/ static GLint __pyx_f_11_glarea_es2__get_program_iv(GLuint, GLenum); /*proto*/ static GLint __pyx_f_11_glarea_es2__gl_print_program_info(GLuint); /*proto*/ static void __pyx_f_11_glarea_es2__gl_program_add_shaders(GLuint, char *, char *); /*proto*/ static void __pyx_f_11_glarea_es2_gl_create_hud_program(void); /*proto*/ static void __pyx_f_11_glarea_es2_gl_create_pick_program(void); /*proto*/ #define __Pyx_MODULE_NAME "_glarea_es2" int __pyx_module_is_main__glarea_es2 = 0; /* Implementation of '_glarea_es2' */ static PyObject *__pyx_builtin_print; static PyObject *__pyx_builtin_enumerate; static PyObject *__pyx_builtin_range; static const char __pyx_k_b[] = "b"; static const char __pyx_k_d[] = "d"; static const char __pyx_k_h[] = "h"; static const char __pyx_k_i[] = "i"; static const char __pyx_k_j[] = "j"; static const char __pyx_k_t[] = "t"; static const char __pyx_k_w[] = "w"; static const char __pyx_k_x[] = "x"; static const char __pyx_k_y[] = "y"; static const char __pyx_k__4[] = "\n"; static const char __pyx_k_doc[] = "__doc__"; static const char __pyx_k_nxy[] = "nxy"; static const char __pyx_k_red[] = "red"; static const char __pyx_k_blue[] = "blue"; static const char __pyx_k_data[] = "data"; static const char __pyx_k_main[] = "__main__"; static const char __pyx_k_name[] = "__name__"; static const char __pyx_k_quat[] = "quat"; static const char __pyx_k_test[] = "__test__"; static const char __pyx_k_zoom[] = "zoom"; static const char __pyx_k_angle[] = "angle"; static const char __pyx_k_axisx[] = "axisx"; static const char __pyx_k_axisy[] = "axisy"; static const char __pyx_k_axisz[] = "axisz"; static const char __pyx_k_green[] = "green"; static const char __pyx_k_print[] = "print"; static const char __pyx_k_range[] = "range"; static const char __pyx_k_split[] = "split"; static const char __pyx_k_append[] = "append"; static const char __pyx_k_blocks[] = "blocks"; static const char __pyx_k_module[] = "module"; static const char __pyx_k_pydata[] = "pydata"; static const char __pyx_k_unused[] = "unused"; static const char __pyx_k_nblocks[] = "nblocks"; static const char __pyx_k_package[] = "__package__"; static const char __pyx_k_prepare[] = "__prepare__"; static const char __pyx_k_compiled[] = " compiled:"; static const char __pyx_k_module_2[] = "__module__"; static const char __pyx_k_qualname[] = "__qualname__"; static const char __pyx_k_set_data[] = "set_data"; static const char __pyx_k_uipydata[] = "uipydata"; static const char __pyx_k_OFFSCREEN[] = " OFFSCREEN:"; static const char __pyx_k_atlasdata[] = "atlasdata"; static const char __pyx_k_enumerate[] = "enumerate"; static const char __pyx_k_metaclass[] = "__metaclass__"; static const char __pyx_k_DEBUG_DRAW[] = "DEBUG_DRAW"; static const char __pyx_k_DEBUG_PICK[] = "DEBUG_PICK"; static const char __pyx_k_cnts_block[] = "cnts_block"; static const char __pyx_k_compiled_2[] = "__compiled"; static const char __pyx_k_fovy_angle[] = "fovy_angle"; static const char __pyx_k_glarea_es2[] = "_glarea_es2"; static const char __pyx_k_shader_src[] = "shader_src"; static const char __pyx_k_startswith[] = "startswith"; static const char __pyx_k_syncpydata[] = "syncpydata"; static const char __pyx_k_vertexdata[] = "vertexdata"; static const char __pyx_k_vertexinfo[] = "vertexinfo"; static const char __pyx_k_DEBUG_MSGGL[] = "DEBUG_MSGGL"; static const char __pyx_k_GL_type_es2[] = " GL-type: es2"; static const char __pyx_k_init_engine[] = "init_engine"; static const char __pyx_k_init_module[] = "init module:"; static const char __pyx_k_multisample[] = "multisample"; static const char __pyx_k_set_frustum[] = "set_frustum"; static const char __pyx_k_set_shaders[] = "set_shaders"; static const char __pyx_k_version_100[] = "#version 100\n"; static const char __pyx_k_version_120[] = "#version 120\n"; static const char __pyx_k_DEBUG_MSGEXT[] = "DEBUG_MSGEXT"; static const char __pyx_k_fixedshaders[] = "fixedshaders"; static const char __pyx_k_from_package[] = " from package:"; static const char __pyx_k_pydata_backed[] = "pydata_backed"; static const char __pyx_k_shader_fragsrc[] = "shader_fragsrc"; static const char __pyx_k_shader_vertsrc[] = "shader_vertsrc"; static const char __pyx_k_vertexpointers[] = "vertexpointers"; static const char __pyx_k_pydata_postsync[] = "pydata_postsync"; static const char __pyx_k_set_debug_flags[] = "set_debug_flags"; static const char __pyx_k_set_rotation_xy[] = "set_rotation_xy"; static const char __pyx_k_transformations[] = "transformations"; static const char __pyx_k_get_cursor_angle[] = "get_cursor_angle"; static const char __pyx_k_set_antialiasing[] = "set_antialiasing"; static const char __pyx_k_set_fixedshaders[] = "set_fixedshaders"; static const char __pyx_k_set_rotation_rel[] = "set_rotation_rel"; static const char __pyx_k_set_pick_position[] = "set_pick_position"; static const char __pyx_k_set_transformations[] = "set_transformations"; static const char __pyx_k_set_background_color[] = "set_background_color"; static const char __pyx_k_update_shader_version[] = "update_shader_version"; static const char __pyx_k_bounding_sphere_radius[] = "bounding_sphere_radius"; static const char __pyx_k_tmp[] = "/tmp/build/temp.linux-x86_64-3.5/pybiklib/ext/_glarea_es2.pyx"; static PyObject *__pyx_n_s_DEBUG_DRAW; static PyObject *__pyx_n_s_DEBUG_MSGEXT; static PyObject *__pyx_n_s_DEBUG_MSGGL; static PyObject *__pyx_n_s_DEBUG_PICK; static PyObject *__pyx_kp_u_GL_type_es2; static PyObject *__pyx_kp_u_OFFSCREEN; static PyObject *__pyx_kp_b__4; static PyObject *__pyx_n_s_angle; static PyObject *__pyx_n_s_append; static PyObject *__pyx_n_s_atlasdata; static PyObject *__pyx_n_s_axisx; static PyObject *__pyx_n_s_axisy; static PyObject *__pyx_n_s_axisz; static PyObject *__pyx_n_s_b; static PyObject *__pyx_n_s_blocks; static PyObject *__pyx_n_s_blue; static PyObject *__pyx_n_s_bounding_sphere_radius; static PyObject *__pyx_n_s_cnts_block; static PyObject *__pyx_kp_u_compiled; static PyObject *__pyx_n_s_compiled_2; static PyObject *__pyx_n_s_d; static PyObject *__pyx_n_s_data; static PyObject *__pyx_n_s_doc; static PyObject *__pyx_n_s_enumerate; static PyObject *__pyx_n_s_fixedshaders; static PyObject *__pyx_n_u_fixedshaders; static PyObject *__pyx_n_s_fovy_angle; static PyObject *__pyx_kp_u_from_package; static PyObject *__pyx_n_s_get_cursor_angle; static PyObject *__pyx_n_s_glarea_es2; static PyObject *__pyx_n_s_green; static PyObject *__pyx_n_s_h; static PyObject *__pyx_kp_s_tmp; static PyObject *__pyx_n_s_i; static PyObject *__pyx_n_s_init_engine; static PyObject *__pyx_kp_u_init_module; static PyObject *__pyx_n_s_j; static PyObject *__pyx_n_s_main; static PyObject *__pyx_n_s_metaclass; static PyObject *__pyx_n_s_module; static PyObject *__pyx_n_s_module_2; static PyObject *__pyx_n_s_multisample; static PyObject *__pyx_n_s_name; static PyObject *__pyx_n_s_nblocks; static PyObject *__pyx_n_s_nxy; static PyObject *__pyx_n_s_package; static PyObject *__pyx_n_s_prepare; static PyObject *__pyx_n_s_print; static PyObject *__pyx_n_s_pydata; static PyObject *__pyx_n_s_pydata_backed; static PyObject *__pyx_n_s_pydata_postsync; static PyObject *__pyx_n_s_qualname; static PyObject *__pyx_n_s_quat; static PyObject *__pyx_n_s_range; static PyObject *__pyx_n_s_red; static PyObject *__pyx_n_s_set_antialiasing; static PyObject *__pyx_n_s_set_background_color; static PyObject *__pyx_n_s_set_data; static PyObject *__pyx_n_s_set_debug_flags; static PyObject *__pyx_n_s_set_fixedshaders; static PyObject *__pyx_n_s_set_frustum; static PyObject *__pyx_n_s_set_pick_position; static PyObject *__pyx_n_s_set_rotation_rel; static PyObject *__pyx_n_s_set_rotation_xy; static PyObject *__pyx_n_s_set_shaders; static PyObject *__pyx_n_s_set_transformations; static PyObject *__pyx_n_s_shader_fragsrc; static PyObject *__pyx_n_u_shader_fragsrc; static PyObject *__pyx_n_s_shader_src; static PyObject *__pyx_n_s_shader_vertsrc; static PyObject *__pyx_n_u_shader_vertsrc; static PyObject *__pyx_n_s_split; static PyObject *__pyx_n_s_startswith; static PyObject *__pyx_n_s_syncpydata; static PyObject *__pyx_n_s_t; static PyObject *__pyx_n_s_test; static PyObject *__pyx_n_s_transformations; static PyObject *__pyx_n_s_uipydata; static PyObject *__pyx_n_s_unused; static PyObject *__pyx_n_s_update_shader_version; static PyObject *__pyx_kp_b_version_100; static PyObject *__pyx_kp_b_version_120; static PyObject *__pyx_n_s_vertexdata; static PyObject *__pyx_n_u_vertexdata; static PyObject *__pyx_n_s_vertexinfo; static PyObject *__pyx_n_s_vertexpointers; static PyObject *__pyx_n_s_w; static PyObject *__pyx_n_s_x; static PyObject *__pyx_n_s_y; static PyObject *__pyx_n_s_zoom; static PyObject *__pyx_pf_11_glarea_es2_set_debug_flags(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_module); /* proto */ static PyObject *__pyx_pf_11_glarea_es2_2init_engine(CYTHON_UNUSED PyObject *__pyx_self); /* proto */ static PyObject *__pyx_pf_11_glarea_es2_4set_rotation_rel(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_x, PyObject *__pyx_v_y); /* proto */ static PyObject *__pyx_pf_11_glarea_es2_6set_frustum(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_bounding_sphere_radius, PyObject *__pyx_v_zoom); /* proto */ static PyObject *__pyx_pf_11_glarea_es2_8set_background_color(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_red, PyObject *__pyx_v_green, PyObject *__pyx_v_blue); /* proto */ static PyObject *__pyx_pf_11_glarea_es2_10set_antialiasing(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_multisample); /* proto */ static PyObject *__pyx_pf_11_glarea_es2_12set_rotation_xy(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_x, PyObject *__pyx_v_y); /* proto */ static PyObject *__pyx_pf_11_glarea_es2_14set_transformations(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_blocks); /* proto */ static PyObject *__pyx_pf_11_glarea_es2_16set_animation_start(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_blocks, float __pyx_v_axisx, float __pyx_v_axisy, float __pyx_v_axisz); /* proto */ static PyObject *__pyx_pf_11_glarea_es2_18set_data(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_nblocks, PyObject *__pyx_v_vertexdata, PyObject *__pyx_v_vertexpointers, PyObject *__pyx_v_vertexinfo, PyObject *__pyx_v_transformations); /* proto */ static PyObject *__pyx_pf_11_glarea_es2_20pydata_postsync(CYTHON_UNUSED PyObject *__pyx_self); /* proto */ static PyObject *__pyx_pf_11_glarea_es2_22update_shader_version(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_shader_src); /* proto */ static PyObject *__pyx_pf_11_glarea_es2_24set_shaders(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_shader_vertsrc, PyObject *__pyx_v_shader_fragsrc); /* proto */ static PyObject *__pyx_pf_11_glarea_es2_26set_fixedshaders(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_fixedshaders); /* proto */ static PyObject *__pyx_pf_11_glarea_es2_28set_pick_position(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_x, PyObject *__pyx_v_y); /* proto */ static PyObject *__pyx_pf_11_glarea_es2_30set_atlas_data(CYTHON_UNUSED PyObject *__pyx_self, int __pyx_v_i, PyObject *__pyx_v_data, int __pyx_v_x, int __pyx_v_w, int __pyx_v_h); /* proto */ static PyObject *__pyx_pf_11_glarea_es2_32get_cursor_angle(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_d); /* proto */ static PyObject *__pyx_float_360_0; static PyObject *__pyx_int_0; static PyObject *__pyx_int_1; static PyObject *__pyx_int_120; static PyObject *__pyx_int_360; static PyObject *__pyx_int_neg_120; static PyObject *__pyx_tuple_; static PyObject *__pyx_tuple__2; static PyObject *__pyx_tuple__3; static PyObject *__pyx_tuple__5; static PyObject *__pyx_tuple__6; static PyObject *__pyx_tuple__8; static PyObject *__pyx_tuple__10; static PyObject *__pyx_tuple__12; static PyObject *__pyx_tuple__14; static PyObject *__pyx_tuple__16; static PyObject *__pyx_tuple__18; static PyObject *__pyx_tuple__20; static PyObject *__pyx_tuple__22; static PyObject *__pyx_tuple__25; static PyObject *__pyx_tuple__27; static PyObject *__pyx_tuple__29; static PyObject *__pyx_tuple__31; static PyObject *__pyx_tuple__33; static PyObject *__pyx_codeobj__7; static PyObject *__pyx_codeobj__9; static PyObject *__pyx_codeobj__11; static PyObject *__pyx_codeobj__13; static PyObject *__pyx_codeobj__15; static PyObject *__pyx_codeobj__17; static PyObject *__pyx_codeobj__19; static PyObject *__pyx_codeobj__21; static PyObject *__pyx_codeobj__23; static PyObject *__pyx_codeobj__24; static PyObject *__pyx_codeobj__26; static PyObject *__pyx_codeobj__28; static PyObject *__pyx_codeobj__30; static PyObject *__pyx_codeobj__32; static PyObject *__pyx_codeobj__34; /* "_glarea_es2.pyx":64 * debug = 0 * * def set_debug_flags(module): # <<<<<<<<<<<<<< * global debug * if module.DEBUG_MSGGL: debug |= DEBUG_MSGGL */ /* Python wrapper */ static PyObject *__pyx_pw_11_glarea_es2_1set_debug_flags(PyObject *__pyx_self, PyObject *__pyx_v_module); /*proto*/ static PyMethodDef __pyx_mdef_11_glarea_es2_1set_debug_flags = {"set_debug_flags", (PyCFunction)__pyx_pw_11_glarea_es2_1set_debug_flags, METH_O, 0}; static PyObject *__pyx_pw_11_glarea_es2_1set_debug_flags(PyObject *__pyx_self, PyObject *__pyx_v_module) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("set_debug_flags (wrapper)", 0); __pyx_r = __pyx_pf_11_glarea_es2_set_debug_flags(__pyx_self, ((PyObject *)__pyx_v_module)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11_glarea_es2_set_debug_flags(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_module) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_t_2; __Pyx_RefNannySetupContext("set_debug_flags", 0); /* "_glarea_es2.pyx":66 * def set_debug_flags(module): * global debug * if module.DEBUG_MSGGL: debug |= DEBUG_MSGGL # <<<<<<<<<<<<<< * if module.DEBUG_MSGEXT: debug |= DEBUG_MSGEXT * if module.DEBUG_DRAW: debug |= DEBUG_DRAW */ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_module, __pyx_n_s_DEBUG_MSGGL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 66, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 66, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_2) { __pyx_v_11_glarea_es2_debug = (__pyx_v_11_glarea_es2_debug | __pyx_e_11_glarea_es2_DEBUG_MSGGL); } /* "_glarea_es2.pyx":67 * global debug * if module.DEBUG_MSGGL: debug |= DEBUG_MSGGL * if module.DEBUG_MSGEXT: debug |= DEBUG_MSGEXT # <<<<<<<<<<<<<< * if module.DEBUG_DRAW: debug |= DEBUG_DRAW * if module.DEBUG_PICK: debug |= DEBUG_PICK */ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_module, __pyx_n_s_DEBUG_MSGEXT); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 67, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 67, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_2) { __pyx_v_11_glarea_es2_debug = (__pyx_v_11_glarea_es2_debug | __pyx_e_11_glarea_es2_DEBUG_MSGEXT); } /* "_glarea_es2.pyx":68 * if module.DEBUG_MSGGL: debug |= DEBUG_MSGGL * if module.DEBUG_MSGEXT: debug |= DEBUG_MSGEXT * if module.DEBUG_DRAW: debug |= DEBUG_DRAW # <<<<<<<<<<<<<< * if module.DEBUG_PICK: debug |= DEBUG_PICK * */ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_module, __pyx_n_s_DEBUG_DRAW); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 68, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 68, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_2) { __pyx_v_11_glarea_es2_debug = (__pyx_v_11_glarea_es2_debug | __pyx_e_11_glarea_es2_DEBUG_DRAW); } /* "_glarea_es2.pyx":69 * if module.DEBUG_MSGEXT: debug |= DEBUG_MSGEXT * if module.DEBUG_DRAW: debug |= DEBUG_DRAW * if module.DEBUG_PICK: debug |= DEBUG_PICK # <<<<<<<<<<<<<< * * */ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_module, __pyx_n_s_DEBUG_PICK); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 69, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 69, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_2) { __pyx_v_11_glarea_es2_debug = (__pyx_v_11_glarea_es2_debug | __pyx_e_11_glarea_es2_DEBUG_PICK); } /* "_glarea_es2.pyx":64 * debug = 0 * * def set_debug_flags(module): # <<<<<<<<<<<<<< * global debug * if module.DEBUG_MSGGL: debug |= DEBUG_MSGGL */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("_glarea_es2.set_debug_flags", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_glarea_es2.pyx":203 * * ##pxm-FUNC P nogil * cdef void quat_set_identity(gldraw.vec4 &quat) nogil: # <<<<<<<<<<<<<< * quat[0] = 1. * quat[1] = quat[2] = quat[3] = 0. */ static void __pyx_f_11_glarea_es2_quat_set_identity(float *__pyx_v_quat) { /* "_glarea_es2.pyx":204 * ##pxm-FUNC P nogil * cdef void quat_set_identity(gldraw.vec4 &quat) nogil: * quat[0] = 1. # <<<<<<<<<<<<<< * quat[1] = quat[2] = quat[3] = 0. * */ (__pyx_v_quat[0]) = 1.; /* "_glarea_es2.pyx":205 * cdef void quat_set_identity(gldraw.vec4 &quat) nogil: * quat[0] = 1. * quat[1] = quat[2] = quat[3] = 0. # <<<<<<<<<<<<<< * * # (a+bi+cj+dk)(w+xi+yj+zk) */ (__pyx_v_quat[1]) = 0.; (__pyx_v_quat[2]) = 0.; (__pyx_v_quat[3]) = 0.; /* "_glarea_es2.pyx":203 * * ##pxm-FUNC P nogil * cdef void quat_set_identity(gldraw.vec4 &quat) nogil: # <<<<<<<<<<<<<< * quat[0] = 1. * quat[1] = quat[2] = quat[3] = 0. */ /* function exit code */ } /* "_glarea_es2.pyx":212 * * ##pxm-FUNC P nogil * cdef void quat_mult(gldraw.vec4 &dest, gldraw.vec4 &src1, gldraw.vec4 &src2) nogil: # <<<<<<<<<<<<<< * cdef float a,b,c,d #px+ * a = src1[0]*src2[0] - src1[1]*src2[1] - src1[2]*src2[2] - src1[3]*src2[3] */ static void __pyx_f_11_glarea_es2_quat_mult(float *__pyx_v_dest, float *__pyx_v_src1, float *__pyx_v_src2) { float __pyx_v_a; float __pyx_v_b; float __pyx_v_c; float __pyx_v_d; /* "_glarea_es2.pyx":214 * cdef void quat_mult(gldraw.vec4 &dest, gldraw.vec4 &src1, gldraw.vec4 &src2) nogil: * cdef float a,b,c,d #px+ * a = src1[0]*src2[0] - src1[1]*src2[1] - src1[2]*src2[2] - src1[3]*src2[3] # <<<<<<<<<<<<<< * b = src1[0]*src2[1] + src1[1]*src2[0] + src1[2]*src2[3] - src1[3]*src2[2] * c = src1[0]*src2[2] - src1[1]*src2[3] + src1[2]*src2[0] + src1[3]*src2[1] */ __pyx_v_a = (((((__pyx_v_src1[0]) * (__pyx_v_src2[0])) - ((__pyx_v_src1[1]) * (__pyx_v_src2[1]))) - ((__pyx_v_src1[2]) * (__pyx_v_src2[2]))) - ((__pyx_v_src1[3]) * (__pyx_v_src2[3]))); /* "_glarea_es2.pyx":215 * cdef float a,b,c,d #px+ * a = src1[0]*src2[0] - src1[1]*src2[1] - src1[2]*src2[2] - src1[3]*src2[3] * b = src1[0]*src2[1] + src1[1]*src2[0] + src1[2]*src2[3] - src1[3]*src2[2] # <<<<<<<<<<<<<< * c = src1[0]*src2[2] - src1[1]*src2[3] + src1[2]*src2[0] + src1[3]*src2[1] * d = src1[0]*src2[3] + src1[1]*src2[2] - src1[2]*src2[1] + src1[3]*src2[0] */ __pyx_v_b = (((((__pyx_v_src1[0]) * (__pyx_v_src2[1])) + ((__pyx_v_src1[1]) * (__pyx_v_src2[0]))) + ((__pyx_v_src1[2]) * (__pyx_v_src2[3]))) - ((__pyx_v_src1[3]) * (__pyx_v_src2[2]))); /* "_glarea_es2.pyx":216 * a = src1[0]*src2[0] - src1[1]*src2[1] - src1[2]*src2[2] - src1[3]*src2[3] * b = src1[0]*src2[1] + src1[1]*src2[0] + src1[2]*src2[3] - src1[3]*src2[2] * c = src1[0]*src2[2] - src1[1]*src2[3] + src1[2]*src2[0] + src1[3]*src2[1] # <<<<<<<<<<<<<< * d = src1[0]*src2[3] + src1[1]*src2[2] - src1[2]*src2[1] + src1[3]*src2[0] * dest[0] = a */ __pyx_v_c = (((((__pyx_v_src1[0]) * (__pyx_v_src2[2])) - ((__pyx_v_src1[1]) * (__pyx_v_src2[3]))) + ((__pyx_v_src1[2]) * (__pyx_v_src2[0]))) + ((__pyx_v_src1[3]) * (__pyx_v_src2[1]))); /* "_glarea_es2.pyx":217 * b = src1[0]*src2[1] + src1[1]*src2[0] + src1[2]*src2[3] - src1[3]*src2[2] * c = src1[0]*src2[2] - src1[1]*src2[3] + src1[2]*src2[0] + src1[3]*src2[1] * d = src1[0]*src2[3] + src1[1]*src2[2] - src1[2]*src2[1] + src1[3]*src2[0] # <<<<<<<<<<<<<< * dest[0] = a * dest[1] = b */ __pyx_v_d = (((((__pyx_v_src1[0]) * (__pyx_v_src2[3])) + ((__pyx_v_src1[1]) * (__pyx_v_src2[2]))) - ((__pyx_v_src1[2]) * (__pyx_v_src2[1]))) + ((__pyx_v_src1[3]) * (__pyx_v_src2[0]))); /* "_glarea_es2.pyx":218 * c = src1[0]*src2[2] - src1[1]*src2[3] + src1[2]*src2[0] + src1[3]*src2[1] * d = src1[0]*src2[3] + src1[1]*src2[2] - src1[2]*src2[1] + src1[3]*src2[0] * dest[0] = a # <<<<<<<<<<<<<< * dest[1] = b * dest[2] = c */ (__pyx_v_dest[0]) = __pyx_v_a; /* "_glarea_es2.pyx":219 * d = src1[0]*src2[3] + src1[1]*src2[2] - src1[2]*src2[1] + src1[3]*src2[0] * dest[0] = a * dest[1] = b # <<<<<<<<<<<<<< * dest[2] = c * dest[3] = d */ (__pyx_v_dest[1]) = __pyx_v_b; /* "_glarea_es2.pyx":220 * dest[0] = a * dest[1] = b * dest[2] = c # <<<<<<<<<<<<<< * dest[3] = d * */ (__pyx_v_dest[2]) = __pyx_v_c; /* "_glarea_es2.pyx":221 * dest[1] = b * dest[2] = c * dest[3] = d # <<<<<<<<<<<<<< * * ##pxm-FUNC P nogil */ (__pyx_v_dest[3]) = __pyx_v_d; /* "_glarea_es2.pyx":212 * * ##pxm-FUNC P nogil * cdef void quat_mult(gldraw.vec4 &dest, gldraw.vec4 &src1, gldraw.vec4 &src2) nogil: # <<<<<<<<<<<<<< * cdef float a,b,c,d #px+ * a = src1[0]*src2[0] - src1[1]*src2[1] - src1[2]*src2[2] - src1[3]*src2[3] */ /* function exit code */ } /* "_glarea_es2.pyx":238 * * ##pxm-FUNC P nogil * cdef void quat_to_matrix(gldraw.mat4 &dest, gldraw.vec4 &src) nogil: # <<<<<<<<<<<<<< * cdef float wx2,wy2,wz2, xx2,xy2,xz2, yy2,yz2,zz2 #px+ * cdef float nn #px+ */ static void __pyx_f_11_glarea_es2_quat_to_matrix(__pyx_t_11_gldraw_es2_vec4 *__pyx_v_dest, float *__pyx_v_src) { float __pyx_v_wx2; float __pyx_v_wy2; float __pyx_v_wz2; float __pyx_v_xx2; float __pyx_v_xy2; float __pyx_v_xz2; float __pyx_v_yy2; float __pyx_v_yz2; float __pyx_v_zz2; float __pyx_v_nn; float __pyx_t_1; /* "_glarea_es2.pyx":241 * cdef float wx2,wy2,wz2, xx2,xy2,xz2, yy2,yz2,zz2 #px+ * cdef float nn #px+ * nn = src[0]*src[0] + src[1]*src[1] + src[2]*src[2] + src[3]*src[3] # <<<<<<<<<<<<<< * * wx2 = 2*src[0]*src[1] / nn */ __pyx_v_nn = (((((__pyx_v_src[0]) * (__pyx_v_src[0])) + ((__pyx_v_src[1]) * (__pyx_v_src[1]))) + ((__pyx_v_src[2]) * (__pyx_v_src[2]))) + ((__pyx_v_src[3]) * (__pyx_v_src[3]))); /* "_glarea_es2.pyx":243 * nn = src[0]*src[0] + src[1]*src[1] + src[2]*src[2] + src[3]*src[3] * * wx2 = 2*src[0]*src[1] / nn # <<<<<<<<<<<<<< * wy2 = 2*src[0]*src[2] / nn * wz2 = 2*src[0]*src[3] / nn */ __pyx_t_1 = ((2.0 * (__pyx_v_src[0])) * (__pyx_v_src[1])); if (unlikely(__pyx_v_nn == 0)) { #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif PyErr_SetString(PyExc_ZeroDivisionError, "float division"); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif __PYX_ERR(0, 243, __pyx_L1_error) } __pyx_v_wx2 = (__pyx_t_1 / __pyx_v_nn); /* "_glarea_es2.pyx":244 * * wx2 = 2*src[0]*src[1] / nn * wy2 = 2*src[0]*src[2] / nn # <<<<<<<<<<<<<< * wz2 = 2*src[0]*src[3] / nn * xx2 = 2*src[1]*src[1] / nn */ __pyx_t_1 = ((2.0 * (__pyx_v_src[0])) * (__pyx_v_src[2])); if (unlikely(__pyx_v_nn == 0)) { #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif PyErr_SetString(PyExc_ZeroDivisionError, "float division"); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif __PYX_ERR(0, 244, __pyx_L1_error) } __pyx_v_wy2 = (__pyx_t_1 / __pyx_v_nn); /* "_glarea_es2.pyx":245 * wx2 = 2*src[0]*src[1] / nn * wy2 = 2*src[0]*src[2] / nn * wz2 = 2*src[0]*src[3] / nn # <<<<<<<<<<<<<< * xx2 = 2*src[1]*src[1] / nn * xy2 = 2*src[1]*src[2] / nn */ __pyx_t_1 = ((2.0 * (__pyx_v_src[0])) * (__pyx_v_src[3])); if (unlikely(__pyx_v_nn == 0)) { #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif PyErr_SetString(PyExc_ZeroDivisionError, "float division"); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif __PYX_ERR(0, 245, __pyx_L1_error) } __pyx_v_wz2 = (__pyx_t_1 / __pyx_v_nn); /* "_glarea_es2.pyx":246 * wy2 = 2*src[0]*src[2] / nn * wz2 = 2*src[0]*src[3] / nn * xx2 = 2*src[1]*src[1] / nn # <<<<<<<<<<<<<< * xy2 = 2*src[1]*src[2] / nn * xz2 = 2*src[1]*src[3] / nn */ __pyx_t_1 = ((2.0 * (__pyx_v_src[1])) * (__pyx_v_src[1])); if (unlikely(__pyx_v_nn == 0)) { #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif PyErr_SetString(PyExc_ZeroDivisionError, "float division"); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif __PYX_ERR(0, 246, __pyx_L1_error) } __pyx_v_xx2 = (__pyx_t_1 / __pyx_v_nn); /* "_glarea_es2.pyx":247 * wz2 = 2*src[0]*src[3] / nn * xx2 = 2*src[1]*src[1] / nn * xy2 = 2*src[1]*src[2] / nn # <<<<<<<<<<<<<< * xz2 = 2*src[1]*src[3] / nn * yy2 = 2*src[2]*src[2] / nn */ __pyx_t_1 = ((2.0 * (__pyx_v_src[1])) * (__pyx_v_src[2])); if (unlikely(__pyx_v_nn == 0)) { #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif PyErr_SetString(PyExc_ZeroDivisionError, "float division"); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif __PYX_ERR(0, 247, __pyx_L1_error) } __pyx_v_xy2 = (__pyx_t_1 / __pyx_v_nn); /* "_glarea_es2.pyx":248 * xx2 = 2*src[1]*src[1] / nn * xy2 = 2*src[1]*src[2] / nn * xz2 = 2*src[1]*src[3] / nn # <<<<<<<<<<<<<< * yy2 = 2*src[2]*src[2] / nn * yz2 = 2*src[2]*src[3] / nn */ __pyx_t_1 = ((2.0 * (__pyx_v_src[1])) * (__pyx_v_src[3])); if (unlikely(__pyx_v_nn == 0)) { #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif PyErr_SetString(PyExc_ZeroDivisionError, "float division"); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif __PYX_ERR(0, 248, __pyx_L1_error) } __pyx_v_xz2 = (__pyx_t_1 / __pyx_v_nn); /* "_glarea_es2.pyx":249 * xy2 = 2*src[1]*src[2] / nn * xz2 = 2*src[1]*src[3] / nn * yy2 = 2*src[2]*src[2] / nn # <<<<<<<<<<<<<< * yz2 = 2*src[2]*src[3] / nn * zz2 = 2*src[3]*src[3] / nn */ __pyx_t_1 = ((2.0 * (__pyx_v_src[2])) * (__pyx_v_src[2])); if (unlikely(__pyx_v_nn == 0)) { #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif PyErr_SetString(PyExc_ZeroDivisionError, "float division"); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif __PYX_ERR(0, 249, __pyx_L1_error) } __pyx_v_yy2 = (__pyx_t_1 / __pyx_v_nn); /* "_glarea_es2.pyx":250 * xz2 = 2*src[1]*src[3] / nn * yy2 = 2*src[2]*src[2] / nn * yz2 = 2*src[2]*src[3] / nn # <<<<<<<<<<<<<< * zz2 = 2*src[3]*src[3] / nn * */ __pyx_t_1 = ((2.0 * (__pyx_v_src[2])) * (__pyx_v_src[3])); if (unlikely(__pyx_v_nn == 0)) { #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif PyErr_SetString(PyExc_ZeroDivisionError, "float division"); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif __PYX_ERR(0, 250, __pyx_L1_error) } __pyx_v_yz2 = (__pyx_t_1 / __pyx_v_nn); /* "_glarea_es2.pyx":251 * yy2 = 2*src[2]*src[2] / nn * yz2 = 2*src[2]*src[3] / nn * zz2 = 2*src[3]*src[3] / nn # <<<<<<<<<<<<<< * * dest[0][0] = 1-yy2-zz2; dest[1][0] = xy2-wz2; dest[2][0] = xz2+wy2 */ __pyx_t_1 = ((2.0 * (__pyx_v_src[3])) * (__pyx_v_src[3])); if (unlikely(__pyx_v_nn == 0)) { #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif PyErr_SetString(PyExc_ZeroDivisionError, "float division"); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif __PYX_ERR(0, 251, __pyx_L1_error) } __pyx_v_zz2 = (__pyx_t_1 / __pyx_v_nn); /* "_glarea_es2.pyx":253 * zz2 = 2*src[3]*src[3] / nn * * dest[0][0] = 1-yy2-zz2; dest[1][0] = xy2-wz2; dest[2][0] = xz2+wy2 # <<<<<<<<<<<<<< * dest[0][1] = xy2+wz2; dest[1][1] = 1-xx2-zz2; dest[2][1] = yz2-wx2 * dest[0][2] = xz2-wy2; dest[1][2] = yz2+wx2; dest[2][2] = 1-xx2-yy2 */ ((__pyx_v_dest[0])[0]) = ((1.0 - __pyx_v_yy2) - __pyx_v_zz2); ((__pyx_v_dest[1])[0]) = (__pyx_v_xy2 - __pyx_v_wz2); ((__pyx_v_dest[2])[0]) = (__pyx_v_xz2 + __pyx_v_wy2); /* "_glarea_es2.pyx":254 * * dest[0][0] = 1-yy2-zz2; dest[1][0] = xy2-wz2; dest[2][0] = xz2+wy2 * dest[0][1] = xy2+wz2; dest[1][1] = 1-xx2-zz2; dest[2][1] = yz2-wx2 # <<<<<<<<<<<<<< * dest[0][2] = xz2-wy2; dest[1][2] = yz2+wx2; dest[2][2] = 1-xx2-yy2 * */ ((__pyx_v_dest[0])[1]) = (__pyx_v_xy2 + __pyx_v_wz2); ((__pyx_v_dest[1])[1]) = ((1.0 - __pyx_v_xx2) - __pyx_v_zz2); ((__pyx_v_dest[2])[1]) = (__pyx_v_yz2 - __pyx_v_wx2); /* "_glarea_es2.pyx":255 * dest[0][0] = 1-yy2-zz2; dest[1][0] = xy2-wz2; dest[2][0] = xz2+wy2 * dest[0][1] = xy2+wz2; dest[1][1] = 1-xx2-zz2; dest[2][1] = yz2-wx2 * dest[0][2] = xz2-wy2; dest[1][2] = yz2+wx2; dest[2][2] = 1-xx2-yy2 # <<<<<<<<<<<<<< * * ##pxm-FUNC P nogil */ ((__pyx_v_dest[0])[2]) = (__pyx_v_xz2 - __pyx_v_wy2); ((__pyx_v_dest[1])[2]) = (__pyx_v_yz2 + __pyx_v_wx2); ((__pyx_v_dest[2])[2]) = ((1.0 - __pyx_v_xx2) - __pyx_v_yy2); /* "_glarea_es2.pyx":238 * * ##pxm-FUNC P nogil * cdef void quat_to_matrix(gldraw.mat4 &dest, gldraw.vec4 &src) nogil: # <<<<<<<<<<<<<< * cdef float wx2,wy2,wz2, xx2,xy2,xz2, yy2,yz2,zz2 #px+ * cdef float nn #px+ */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_WriteUnraisable("_glarea_es2.quat_to_matrix", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 1); __pyx_L0:; } /* "_glarea_es2.pyx":258 * * ##pxm-FUNC P nogil * cdef void quat_from_angle_axis(gldraw.vec4 &quat, float angle, float x, float y, float z) nogil: # <<<<<<<<<<<<<< * cdef float sa, ca #px+ * ca = cos(angle) */ static void __pyx_f_11_glarea_es2_quat_from_angle_axis(float *__pyx_v_quat, float __pyx_v_angle, float __pyx_v_x, float __pyx_v_y, float __pyx_v_z) { float __pyx_v_sa; float __pyx_v_ca; /* "_glarea_es2.pyx":260 * cdef void quat_from_angle_axis(gldraw.vec4 &quat, float angle, float x, float y, float z) nogil: * cdef float sa, ca #px+ * ca = cos(angle) # <<<<<<<<<<<<<< * sa = sin(angle) * quat[0] = ca */ __pyx_v_ca = cos(__pyx_v_angle); /* "_glarea_es2.pyx":261 * cdef float sa, ca #px+ * ca = cos(angle) * sa = sin(angle) # <<<<<<<<<<<<<< * quat[0] = ca * quat[1] = sa*x */ __pyx_v_sa = sin(__pyx_v_angle); /* "_glarea_es2.pyx":262 * ca = cos(angle) * sa = sin(angle) * quat[0] = ca # <<<<<<<<<<<<<< * quat[1] = sa*x * quat[2] = sa*y */ (__pyx_v_quat[0]) = __pyx_v_ca; /* "_glarea_es2.pyx":263 * sa = sin(angle) * quat[0] = ca * quat[1] = sa*x # <<<<<<<<<<<<<< * quat[2] = sa*y * quat[3] = sa*z */ (__pyx_v_quat[1]) = (__pyx_v_sa * __pyx_v_x); /* "_glarea_es2.pyx":264 * quat[0] = ca * quat[1] = sa*x * quat[2] = sa*y # <<<<<<<<<<<<<< * quat[3] = sa*z * */ (__pyx_v_quat[2]) = (__pyx_v_sa * __pyx_v_y); /* "_glarea_es2.pyx":265 * quat[1] = sa*x * quat[2] = sa*y * quat[3] = sa*z # <<<<<<<<<<<<<< * * ### module state */ (__pyx_v_quat[3]) = (__pyx_v_sa * __pyx_v_z); /* "_glarea_es2.pyx":258 * * ##pxm-FUNC P nogil * cdef void quat_from_angle_axis(gldraw.vec4 &quat, float angle, float x, float y, float z) nogil: # <<<<<<<<<<<<<< * cdef float sa, ca #px+ * ca = cos(angle) */ /* function exit code */ } /* "_glarea_es2.pyx":269 * ### module state * * def init_engine(): # <<<<<<<<<<<<<< * gldraw.init_gldraw() * if debug & DEBUG_MSGEXT: */ /* Python wrapper */ static PyObject *__pyx_pw_11_glarea_es2_3init_engine(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/ static PyMethodDef __pyx_mdef_11_glarea_es2_3init_engine = {"init_engine", (PyCFunction)__pyx_pw_11_glarea_es2_3init_engine, METH_NOARGS, 0}; static PyObject *__pyx_pw_11_glarea_es2_3init_engine(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("init_engine (wrapper)", 0); __pyx_r = __pyx_pf_11_glarea_es2_2init_engine(__pyx_self); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11_glarea_es2_2init_engine(CYTHON_UNUSED PyObject *__pyx_self) { float __pyx_v_fovy_angle; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; float __pyx_t_4; __Pyx_RefNannySetupContext("init_engine", 0); /* "_glarea_es2.pyx":270 * * def init_engine(): * gldraw.init_gldraw() # <<<<<<<<<<<<<< * if debug & DEBUG_MSGEXT: * print('init module:', __name__) */ __pyx_f_11_gldraw_es2_init_gldraw(); /* "_glarea_es2.pyx":271 * def init_engine(): * gldraw.init_gldraw() * if debug & DEBUG_MSGEXT: # <<<<<<<<<<<<<< * print('init module:', __name__) * print(' from package:', __package__) */ __pyx_t_1 = ((__pyx_v_11_glarea_es2_debug & __pyx_e_11_glarea_es2_DEBUG_MSGEXT) != 0); if (__pyx_t_1) { /* "_glarea_es2.pyx":272 * gldraw.init_gldraw() * if debug & DEBUG_MSGEXT: * print('init module:', __name__) # <<<<<<<<<<<<<< * print(' from package:', __package__) * print(' compiled:', __compiled) */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 272, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 272, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_kp_u_init_module); __Pyx_GIVEREF(__pyx_kp_u_init_module); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_kp_u_init_module); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 272, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_glarea_es2.pyx":273 * if debug & DEBUG_MSGEXT: * print('init module:', __name__) * print(' from package:', __package__) # <<<<<<<<<<<<<< * print(' compiled:', __compiled) * print(' GL-type: es2') #px+ */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_package); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 273, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 273, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_kp_u_from_package); __Pyx_GIVEREF(__pyx_kp_u_from_package); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_kp_u_from_package); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 273, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_glarea_es2.pyx":274 * print('init module:', __name__) * print(' from package:', __package__) * print(' compiled:', __compiled) # <<<<<<<<<<<<<< * print(' GL-type: es2') #px+ * print(' OFFSCREEN:', OFFSCREEN) */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_compiled_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 274, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 274, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_kp_u_compiled); __Pyx_GIVEREF(__pyx_kp_u_compiled); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_kp_u_compiled); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 274, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_glarea_es2.pyx":275 * print(' from package:', __package__) * print(' compiled:', __compiled) * print(' GL-type: es2') #px+ # <<<<<<<<<<<<<< * print(' OFFSCREEN:', OFFSCREEN) * */ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_tuple_, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 275, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_glarea_es2.pyx":276 * print(' compiled:', __compiled) * print(' GL-type: es2') #px+ * print(' OFFSCREEN:', OFFSCREEN) # <<<<<<<<<<<<<< * * uidata.synced = False */ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_tuple__2, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 276, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_glarea_es2.pyx":271 * def init_engine(): * gldraw.init_gldraw() * if debug & DEBUG_MSGEXT: # <<<<<<<<<<<<<< * print('init module:', __name__) * print(' from package:', __package__) */ } /* "_glarea_es2.pyx":278 * print(' OFFSCREEN:', OFFSCREEN) * * uidata.synced = False # <<<<<<<<<<<<<< * uidata.background_changed = True * uidata.viewport_changed = True */ __pyx_v_11_glarea_es2_uidata.synced = 0; /* "_glarea_es2.pyx":279 * * uidata.synced = False * uidata.background_changed = True # <<<<<<<<<<<<<< * uidata.viewport_changed = True * uidata.rotation_changed = True */ __pyx_v_11_glarea_es2_uidata.background_changed = 1; /* "_glarea_es2.pyx":280 * uidata.synced = False * uidata.background_changed = True * uidata.viewport_changed = True # <<<<<<<<<<<<<< * uidata.rotation_changed = True * uidata.rotation_quat_changed = False */ __pyx_v_11_glarea_es2_uidata.viewport_changed = 1; /* "_glarea_es2.pyx":281 * uidata.background_changed = True * uidata.viewport_changed = True * uidata.rotation_changed = True # <<<<<<<<<<<<<< * uidata.rotation_quat_changed = False * uidata.frustum_changed = True */ __pyx_v_11_glarea_es2_uidata.rotation_changed = 1; /* "_glarea_es2.pyx":282 * uidata.viewport_changed = True * uidata.rotation_changed = True * uidata.rotation_quat_changed = False # <<<<<<<<<<<<<< * uidata.frustum_changed = True * uidata.multisample_changed = 1 */ __pyx_v_11_glarea_es2_uidata.rotation_quat_changed = 0; /* "_glarea_es2.pyx":283 * uidata.rotation_changed = True * uidata.rotation_quat_changed = False * uidata.frustum_changed = True # <<<<<<<<<<<<<< * uidata.multisample_changed = 1 * uidata.transformation_changed = False */ __pyx_v_11_glarea_es2_uidata.frustum_changed = 1; /* "_glarea_es2.pyx":284 * uidata.rotation_quat_changed = False * uidata.frustum_changed = True * uidata.multisample_changed = 1 # <<<<<<<<<<<<<< * uidata.transformation_changed = False * uidata.animation_changed = 0 */ __pyx_v_11_glarea_es2_uidata.multisample_changed = 1; /* "_glarea_es2.pyx":285 * uidata.frustum_changed = True * uidata.multisample_changed = 1 * uidata.transformation_changed = False # <<<<<<<<<<<<<< * uidata.animation_changed = 0 * uidata.data_changed = False */ __pyx_v_11_glarea_es2_uidata.transformation_changed = 0; /* "_glarea_es2.pyx":286 * uidata.multisample_changed = 1 * uidata.transformation_changed = False * uidata.animation_changed = 0 # <<<<<<<<<<<<<< * uidata.data_changed = False * uidata.shaders_changed = False */ __pyx_v_11_glarea_es2_uidata.animation_changed = 0; /* "_glarea_es2.pyx":287 * uidata.transformation_changed = False * uidata.animation_changed = 0 * uidata.data_changed = False # <<<<<<<<<<<<<< * uidata.shaders_changed = False * */ __pyx_v_11_glarea_es2_uidata.data_changed = 0; /* "_glarea_es2.pyx":288 * uidata.animation_changed = 0 * uidata.data_changed = False * uidata.shaders_changed = False # <<<<<<<<<<<<<< * * uidata.bg_red = 0.0 */ __pyx_v_11_glarea_es2_uidata.shaders_changed = 0; /* "_glarea_es2.pyx":290 * uidata.shaders_changed = False * * uidata.bg_red = 0.0 # <<<<<<<<<<<<<< * uidata.bg_green = 0.0 * uidata.bg_blue = 0.0 */ __pyx_v_11_glarea_es2_uidata.bg_red = 0.0; /* "_glarea_es2.pyx":291 * * uidata.bg_red = 0.0 * uidata.bg_green = 0.0 # <<<<<<<<<<<<<< * uidata.bg_blue = 0.0 * renderdata.y = 0 */ __pyx_v_11_glarea_es2_uidata.bg_green = 0.0; /* "_glarea_es2.pyx":292 * uidata.bg_red = 0.0 * uidata.bg_green = 0.0 * uidata.bg_blue = 0.0 # <<<<<<<<<<<<<< * renderdata.y = 0 * renderdata.width = 1 */ __pyx_v_11_glarea_es2_uidata.bg_blue = 0.0; /* "_glarea_es2.pyx":293 * uidata.bg_green = 0.0 * uidata.bg_blue = 0.0 * renderdata.y = 0 # <<<<<<<<<<<<<< * renderdata.width = 1 * renderdata.height = 1 */ __pyx_v_11_glarea_es2_renderdata.y = 0; /* "_glarea_es2.pyx":294 * uidata.bg_blue = 0.0 * renderdata.y = 0 * renderdata.width = 1 # <<<<<<<<<<<<<< * renderdata.height = 1 * uidata.rotationxhalf = 0.0 */ __pyx_v_11_glarea_es2_renderdata.width = 1; /* "_glarea_es2.pyx":295 * renderdata.y = 0 * renderdata.width = 1 * renderdata.height = 1 # <<<<<<<<<<<<<< * uidata.rotationxhalf = 0.0 * uidata.rotationyhalf = 0.0 */ __pyx_v_11_glarea_es2_renderdata.height = 1; /* "_glarea_es2.pyx":296 * renderdata.width = 1 * renderdata.height = 1 * uidata.rotationxhalf = 0.0 # <<<<<<<<<<<<<< * uidata.rotationyhalf = 0.0 * quat_set_identity(uidata.rotation_quat) */ __pyx_v_11_glarea_es2_uidata.rotationxhalf = 0.0; /* "_glarea_es2.pyx":297 * renderdata.height = 1 * uidata.rotationxhalf = 0.0 * uidata.rotationyhalf = 0.0 # <<<<<<<<<<<<<< * quat_set_identity(uidata.rotation_quat) * uidata.pick_x = -1 */ __pyx_v_11_glarea_es2_uidata.rotationyhalf = 0.0; /* "_glarea_es2.pyx":298 * uidata.rotationxhalf = 0.0 * uidata.rotationyhalf = 0.0 * quat_set_identity(uidata.rotation_quat) # <<<<<<<<<<<<<< * uidata.pick_x = -1 * uidata.pick_y = -1 */ __pyx_f_11_glarea_es2_quat_set_identity(__pyx_v_11_glarea_es2_uidata.rotation_quat); /* "_glarea_es2.pyx":299 * uidata.rotationyhalf = 0.0 * quat_set_identity(uidata.rotation_quat) * uidata.pick_x = -1 # <<<<<<<<<<<<<< * uidata.pick_y = -1 * renderdata.pick_x = -1 */ __pyx_v_11_glarea_es2_uidata.pick_x = -1; /* "_glarea_es2.pyx":300 * quat_set_identity(uidata.rotation_quat) * uidata.pick_x = -1 * uidata.pick_y = -1 # <<<<<<<<<<<<<< * renderdata.pick_x = -1 * renderdata.pick_y = -1 */ __pyx_v_11_glarea_es2_uidata.pick_y = -1; /* "_glarea_es2.pyx":301 * uidata.pick_x = -1 * uidata.pick_y = -1 * renderdata.pick_x = -1 # <<<<<<<<<<<<<< * renderdata.pick_y = -1 * cdef float fovy_angle # field of view angle #px+ */ __pyx_v_11_glarea_es2_renderdata.pick_x = -1; /* "_glarea_es2.pyx":302 * uidata.pick_y = -1 * renderdata.pick_x = -1 * renderdata.pick_y = -1 # <<<<<<<<<<<<<< * cdef float fovy_angle # field of view angle #px+ * fovy_angle = 33.0 # field of view angle */ __pyx_v_11_glarea_es2_renderdata.pick_y = -1; /* "_glarea_es2.pyx":304 * renderdata.pick_y = -1 * cdef float fovy_angle # field of view angle #px+ * fovy_angle = 33.0 # field of view angle # <<<<<<<<<<<<<< * uidata.fovy_radius = tan(fovy_angle * M_PI / 360.0) * uidata.fovy_radius_zoom = uidata.fovy_radius # zoom == 1. */ __pyx_v_fovy_angle = 33.0; /* "_glarea_es2.pyx":305 * cdef float fovy_angle # field of view angle #px+ * fovy_angle = 33.0 # field of view angle * uidata.fovy_radius = tan(fovy_angle * M_PI / 360.0) # <<<<<<<<<<<<<< * uidata.fovy_radius_zoom = uidata.fovy_radius # zoom == 1. * uidata.bounding_sphere_radius = 1. */ __pyx_v_11_glarea_es2_uidata.fovy_radius = tan(((__pyx_v_fovy_angle * M_PI) / 360.0)); /* "_glarea_es2.pyx":306 * fovy_angle = 33.0 # field of view angle * uidata.fovy_radius = tan(fovy_angle * M_PI / 360.0) * uidata.fovy_radius_zoom = uidata.fovy_radius # zoom == 1. # <<<<<<<<<<<<<< * uidata.bounding_sphere_radius = 1. * uidata.angle = 0 */ __pyx_t_4 = __pyx_v_11_glarea_es2_uidata.fovy_radius; __pyx_v_11_glarea_es2_uidata.fovy_radius_zoom = __pyx_t_4; /* "_glarea_es2.pyx":307 * uidata.fovy_radius = tan(fovy_angle * M_PI / 360.0) * uidata.fovy_radius_zoom = uidata.fovy_radius # zoom == 1. * uidata.bounding_sphere_radius = 1. # <<<<<<<<<<<<<< * uidata.angle = 0 * */ __pyx_v_11_glarea_es2_uidata.bounding_sphere_radius = 1.; /* "_glarea_es2.pyx":308 * uidata.fovy_radius_zoom = uidata.fovy_radius # zoom == 1. * uidata.bounding_sphere_radius = 1. * uidata.angle = 0 # <<<<<<<<<<<<<< * * # fill modelview_matrix */ __pyx_v_11_glarea_es2_uidata.angle = 0.0; /* "_glarea_es2.pyx":311 * * # fill modelview_matrix * gldraw.matrix_set_identity(renderdata.modelview_matrix) # <<<<<<<<<<<<<< * # fill projection_matrix * gldraw.matrix_set_identity(renderdata.projection_matrix) */ __pyx_f_11_gldraw_es2_matrix_set_identity(__pyx_v_11_glarea_es2_renderdata.modelview_matrix); /* "_glarea_es2.pyx":313 * gldraw.matrix_set_identity(renderdata.modelview_matrix) * # fill projection_matrix * gldraw.matrix_set_identity(renderdata.projection_matrix) # <<<<<<<<<<<<<< * renderdata.projection_matrix[2][3] = -1. * renderdata.projection_matrix[3][3] = 0. */ __pyx_f_11_gldraw_es2_matrix_set_identity(__pyx_v_11_glarea_es2_renderdata.projection_matrix); /* "_glarea_es2.pyx":314 * # fill projection_matrix * gldraw.matrix_set_identity(renderdata.projection_matrix) * renderdata.projection_matrix[2][3] = -1. # <<<<<<<<<<<<<< * renderdata.projection_matrix[3][3] = 0. * # fill picking_matrix */ ((__pyx_v_11_glarea_es2_renderdata.projection_matrix[2])[3]) = -1.; /* "_glarea_es2.pyx":315 * gldraw.matrix_set_identity(renderdata.projection_matrix) * renderdata.projection_matrix[2][3] = -1. * renderdata.projection_matrix[3][3] = 0. # <<<<<<<<<<<<<< * # fill picking_matrix * gldraw.matrix_set_identity(renderdata.picking_matrix) */ ((__pyx_v_11_glarea_es2_renderdata.projection_matrix[3])[3]) = 0.; /* "_glarea_es2.pyx":317 * renderdata.projection_matrix[3][3] = 0. * # fill picking_matrix * gldraw.matrix_set_identity(renderdata.picking_matrix) # <<<<<<<<<<<<<< * * renderdata.shader_changed = False */ __pyx_f_11_gldraw_es2_matrix_set_identity(__pyx_v_11_glarea_es2_renderdata.picking_matrix); /* "_glarea_es2.pyx":319 * gldraw.matrix_set_identity(renderdata.picking_matrix) * * renderdata.shader_changed = False # <<<<<<<<<<<<<< * renderdata.prog_render = 0 * renderdata.prog_hud = 0 */ __pyx_v_11_glarea_es2_renderdata.shader_changed = 0; /* "_glarea_es2.pyx":320 * * renderdata.shader_changed = False * renderdata.prog_render = 0 # <<<<<<<<<<<<<< * renderdata.prog_hud = 0 * renderdata.prog_pick = 0 */ __pyx_v_11_glarea_es2_renderdata.prog_render = 0; /* "_glarea_es2.pyx":321 * renderdata.shader_changed = False * renderdata.prog_render = 0 * renderdata.prog_hud = 0 # <<<<<<<<<<<<<< * renderdata.prog_pick = 0 * */ __pyx_v_11_glarea_es2_renderdata.prog_hud = 0; /* "_glarea_es2.pyx":322 * renderdata.prog_render = 0 * renderdata.prog_hud = 0 * renderdata.prog_pick = 0 # <<<<<<<<<<<<<< * * */ __pyx_v_11_glarea_es2_renderdata.prog_pick = 0; /* "_glarea_es2.pyx":269 * ### module state * * def init_engine(): # <<<<<<<<<<<<<< * gldraw.init_gldraw() * if debug & DEBUG_MSGEXT: */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("_glarea_es2.init_engine", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_glarea_es2.pyx":326 * * ##pxm-FUNC P nogil * cdef void _sync_modelview_matrix_translation() nogil: # <<<<<<<<<<<<<< * renderdata.modelview_matrix[3][2] = -uidata.bounding_sphere_radius * (1/uidata.fovy_radius + 1.) * */ static void __pyx_f_11_glarea_es2__sync_modelview_matrix_translation(void) { /* "_glarea_es2.pyx":327 * ##pxm-FUNC P nogil * cdef void _sync_modelview_matrix_translation() nogil: * renderdata.modelview_matrix[3][2] = -uidata.bounding_sphere_radius * (1/uidata.fovy_radius + 1.) # <<<<<<<<<<<<<< * * ##pxm-FUNC P nogil */ if (unlikely(__pyx_v_11_glarea_es2_uidata.fovy_radius == 0)) { #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif PyErr_SetString(PyExc_ZeroDivisionError, "float division"); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif __PYX_ERR(0, 327, __pyx_L1_error) } ((__pyx_v_11_glarea_es2_renderdata.modelview_matrix[3])[2]) = ((-__pyx_v_11_glarea_es2_uidata.bounding_sphere_radius) * ((1.0 / __pyx_v_11_glarea_es2_uidata.fovy_radius) + 1.)); /* "_glarea_es2.pyx":326 * * ##pxm-FUNC P nogil * cdef void _sync_modelview_matrix_translation() nogil: # <<<<<<<<<<<<<< * renderdata.modelview_matrix[3][2] = -uidata.bounding_sphere_radius * (1/uidata.fovy_radius + 1.) * */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_WriteUnraisable("_glarea_es2._sync_modelview_matrix_translation", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 1); __pyx_L0:; } /* "_glarea_es2.pyx":330 * * ##pxm-FUNC P nogil * cdef void _sync_modelview_matrix_rotation() nogil: # <<<<<<<<<<<<<< * cdef gldraw.vec4 *M #px+ * cdef float sx, sy, cx, cy #px+ */ static void __pyx_f_11_glarea_es2__sync_modelview_matrix_rotation(void) { __pyx_t_11_gldraw_es2_vec4 *__pyx_v_M; float __pyx_v_sx; float __pyx_v_sy; float __pyx_v_cx; float __pyx_v_cy; float __pyx_v_m00; float __pyx_v_m11; float __pyx_v_m12; float __pyx_v_m20; /* "_glarea_es2.pyx":335 * cdef float m00, m11, m12, m20 #px+ * * M = &renderdata.modelview_matrix[0][0] #px/ # <<<<<<<<<<<<<< * #M = renderdata.modelview_matrix * */ __pyx_v_M = ((__pyx_t_11_gldraw_es2_vec4 *)(&((__pyx_v_11_glarea_es2_renderdata.modelview_matrix[0])[0]))); /* "_glarea_es2.pyx":338 * #M = renderdata.modelview_matrix * * sx = sin(uidata.rotationxhalf) # <<<<<<<<<<<<<< * sy = sin(uidata.rotationyhalf) * cx = cos(uidata.rotationxhalf) */ __pyx_v_sx = sin(__pyx_v_11_glarea_es2_uidata.rotationxhalf); /* "_glarea_es2.pyx":339 * * sx = sin(uidata.rotationxhalf) * sy = sin(uidata.rotationyhalf) # <<<<<<<<<<<<<< * cx = cos(uidata.rotationxhalf) * cy = cos(uidata.rotationyhalf) */ __pyx_v_sy = sin(__pyx_v_11_glarea_es2_uidata.rotationyhalf); /* "_glarea_es2.pyx":340 * sx = sin(uidata.rotationxhalf) * sy = sin(uidata.rotationyhalf) * cx = cos(uidata.rotationxhalf) # <<<<<<<<<<<<<< * cy = cos(uidata.rotationyhalf) * */ __pyx_v_cx = cos(__pyx_v_11_glarea_es2_uidata.rotationxhalf); /* "_glarea_es2.pyx":341 * sy = sin(uidata.rotationyhalf) * cx = cos(uidata.rotationxhalf) * cy = cos(uidata.rotationyhalf) # <<<<<<<<<<<<<< * * m00 = 2*cx*cx - 1. */ __pyx_v_cy = cos(__pyx_v_11_glarea_es2_uidata.rotationyhalf); /* "_glarea_es2.pyx":343 * cy = cos(uidata.rotationyhalf) * * m00 = 2*cx*cx - 1. # <<<<<<<<<<<<<< * m11 = 2*cy*cy - 1. * m12 = 2*sy*cy */ __pyx_v_m00 = (((2.0 * __pyx_v_cx) * __pyx_v_cx) - 1.); /* "_glarea_es2.pyx":344 * * m00 = 2*cx*cx - 1. * m11 = 2*cy*cy - 1. # <<<<<<<<<<<<<< * m12 = 2*sy*cy * m20 = 2*sx*cx */ __pyx_v_m11 = (((2.0 * __pyx_v_cy) * __pyx_v_cy) - 1.); /* "_glarea_es2.pyx":345 * m00 = 2*cx*cx - 1. * m11 = 2*cy*cy - 1. * m12 = 2*sy*cy # <<<<<<<<<<<<<< * m20 = 2*sx*cx * # pylint: disable=C0321,C0326 */ __pyx_v_m12 = ((2.0 * __pyx_v_sy) * __pyx_v_cy); /* "_glarea_es2.pyx":346 * m11 = 2*cy*cy - 1. * m12 = 2*sy*cy * m20 = 2*sx*cx # <<<<<<<<<<<<<< * # pylint: disable=C0321,C0326 * M[0][0] = m00; M[1][0] = 0.; M[2][0] = m20 */ __pyx_v_m20 = ((2.0 * __pyx_v_sx) * __pyx_v_cx); /* "_glarea_es2.pyx":348 * m20 = 2*sx*cx * # pylint: disable=C0321,C0326 * M[0][0] = m00; M[1][0] = 0.; M[2][0] = m20 # <<<<<<<<<<<<<< * M[0][1] = m12 * m20; M[1][1] = m11; M[2][1] = -m00 * m12 * M[0][2] = -m11 * m20; M[1][2] = m12; M[2][2] = m00 * m11 */ ((__pyx_v_M[0])[0]) = __pyx_v_m00; ((__pyx_v_M[1])[0]) = 0.; ((__pyx_v_M[2])[0]) = __pyx_v_m20; /* "_glarea_es2.pyx":349 * # pylint: disable=C0321,C0326 * M[0][0] = m00; M[1][0] = 0.; M[2][0] = m20 * M[0][1] = m12 * m20; M[1][1] = m11; M[2][1] = -m00 * m12 # <<<<<<<<<<<<<< * M[0][2] = -m11 * m20; M[1][2] = m12; M[2][2] = m00 * m11 * */ ((__pyx_v_M[0])[1]) = (__pyx_v_m12 * __pyx_v_m20); ((__pyx_v_M[1])[1]) = __pyx_v_m11; ((__pyx_v_M[2])[1]) = ((-__pyx_v_m00) * __pyx_v_m12); /* "_glarea_es2.pyx":350 * M[0][0] = m00; M[1][0] = 0.; M[2][0] = m20 * M[0][1] = m12 * m20; M[1][1] = m11; M[2][1] = -m00 * m12 * M[0][2] = -m11 * m20; M[1][2] = m12; M[2][2] = m00 * m11 # <<<<<<<<<<<<<< * * def set_rotation_rel(x, y): */ ((__pyx_v_M[0])[2]) = ((-__pyx_v_m11) * __pyx_v_m20); ((__pyx_v_M[1])[2]) = __pyx_v_m12; ((__pyx_v_M[2])[2]) = (__pyx_v_m00 * __pyx_v_m11); /* "_glarea_es2.pyx":330 * * ##pxm-FUNC P nogil * cdef void _sync_modelview_matrix_rotation() nogil: # <<<<<<<<<<<<<< * cdef gldraw.vec4 *M #px+ * cdef float sx, sy, cx, cy #px+ */ /* function exit code */ } /* "_glarea_es2.pyx":352 * M[0][2] = -m11 * m20; M[1][2] = m12; M[2][2] = m00 * m11 * * def set_rotation_rel(x, y): # <<<<<<<<<<<<<< * cdef gldraw.vec4 quat #px+ * cdef float nxy #px+ */ /* Python wrapper */ static PyObject *__pyx_pw_11_glarea_es2_5set_rotation_rel(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static PyMethodDef __pyx_mdef_11_glarea_es2_5set_rotation_rel = {"set_rotation_rel", (PyCFunction)__pyx_pw_11_glarea_es2_5set_rotation_rel, METH_VARARGS|METH_KEYWORDS, 0}; static PyObject *__pyx_pw_11_glarea_es2_5set_rotation_rel(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_x = 0; PyObject *__pyx_v_y = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("set_rotation_rel (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_y,0}; PyObject* values[2] = {0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("set_rotation_rel", 1, 2, 2, 1); __PYX_ERR(0, 352, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_rotation_rel") < 0)) __PYX_ERR(0, 352, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); } __pyx_v_x = values[0]; __pyx_v_y = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("set_rotation_rel", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 352, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("_glarea_es2.set_rotation_rel", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11_glarea_es2_4set_rotation_rel(__pyx_self, __pyx_v_x, __pyx_v_y); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11_glarea_es2_4set_rotation_rel(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_x, PyObject *__pyx_v_y) { __pyx_t_11_gldraw_es2_vec4 __pyx_v_quat; float __pyx_v_nxy; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; double __pyx_t_4; float __pyx_t_5; float __pyx_t_6; __Pyx_RefNannySetupContext("set_rotation_rel", 0); /* "_glarea_es2.pyx":355 * cdef gldraw.vec4 quat #px+ * cdef float nxy #px+ * nxy = sqrt(x*x + y*y) # <<<<<<<<<<<<<< * quat_from_angle_axis(quat, nxy/50., y/nxy, x/nxy, 0.) * quat_mult(uidata.rotation_quat, quat, uidata.rotation_quat) */ __pyx_t_1 = PyNumber_Multiply(__pyx_v_x, __pyx_v_x); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 355, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyNumber_Multiply(__pyx_v_y, __pyx_v_y); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 355, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyNumber_Add(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 355, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_t_3); if (unlikely((__pyx_t_4 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 355, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_nxy = sqrt(__pyx_t_4); /* "_glarea_es2.pyx":356 * cdef float nxy #px+ * nxy = sqrt(x*x + y*y) * quat_from_angle_axis(quat, nxy/50., y/nxy, x/nxy, 0.) # <<<<<<<<<<<<<< * quat_mult(uidata.rotation_quat, quat, uidata.rotation_quat) * */ __pyx_t_3 = PyFloat_FromDouble(__pyx_v_nxy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 356, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = __Pyx_PyNumber_Divide(__pyx_v_y, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 356, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_5 = __pyx_PyFloat_AsFloat(__pyx_t_2); if (unlikely((__pyx_t_5 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 356, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyFloat_FromDouble(__pyx_v_nxy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 356, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_v_x, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 356, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_6 = __pyx_PyFloat_AsFloat(__pyx_t_3); if (unlikely((__pyx_t_6 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 356, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_f_11_glarea_es2_quat_from_angle_axis(__pyx_v_quat, (((double)__pyx_v_nxy) / 50.), __pyx_t_5, __pyx_t_6, 0.); /* "_glarea_es2.pyx":357 * nxy = sqrt(x*x + y*y) * quat_from_angle_axis(quat, nxy/50., y/nxy, x/nxy, 0.) * quat_mult(uidata.rotation_quat, quat, uidata.rotation_quat) # <<<<<<<<<<<<<< * * # avoid rotation about z-axis */ __pyx_f_11_glarea_es2_quat_mult(__pyx_v_11_glarea_es2_uidata.rotation_quat, __pyx_v_quat, __pyx_v_11_glarea_es2_uidata.rotation_quat); /* "_glarea_es2.pyx":367 * #quat_mult(uidata.rotation_quat, quat, uidata.rotation_quat) * * uidata.rotation_quat_changed = True # <<<<<<<<<<<<<< * * ##pxm-FUNC P nogil */ __pyx_v_11_glarea_es2_uidata.rotation_quat_changed = 1; /* "_glarea_es2.pyx":352 * M[0][2] = -m11 * m20; M[1][2] = m12; M[2][2] = m00 * m11 * * def set_rotation_rel(x, y): # <<<<<<<<<<<<<< * cdef gldraw.vec4 quat #px+ * cdef float nxy #px+ */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("_glarea_es2.set_rotation_rel", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_glarea_es2.pyx":370 * * ##pxm-FUNC P nogil * cdef void _sync_projection_matrix() nogil: # <<<<<<<<<<<<<< * # Taken from the OpenGL documentation for glFrustum: * # glFrustum describes a perspective matrix that produces a perspective projection. */ static void __pyx_f_11_glarea_es2__sync_projection_matrix(void) { float __pyx_v__1_aspectx; float __pyx_v__1_aspecty; int __pyx_t_1; double __pyx_t_2; /* "_glarea_es2.pyx":408 * * cdef float _1_aspectx, _1_aspecty #px+ * if renderdata.width < renderdata.height: # <<<<<<<<<<<<<< * _1_aspectx = 1. * _1_aspecty = renderdata.width / renderdata.height */ __pyx_t_1 = ((__pyx_v_11_glarea_es2_renderdata.width < __pyx_v_11_glarea_es2_renderdata.height) != 0); if (__pyx_t_1) { /* "_glarea_es2.pyx":409 * cdef float _1_aspectx, _1_aspecty #px+ * if renderdata.width < renderdata.height: * _1_aspectx = 1. # <<<<<<<<<<<<<< * _1_aspecty = renderdata.width / renderdata.height * else: */ __pyx_v__1_aspectx = 1.; /* "_glarea_es2.pyx":410 * if renderdata.width < renderdata.height: * _1_aspectx = 1. * _1_aspecty = renderdata.width / renderdata.height # <<<<<<<<<<<<<< * else: * _1_aspectx = renderdata.height / renderdata.width */ if (unlikely(__pyx_v_11_glarea_es2_renderdata.height == 0)) { #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif PyErr_SetString(PyExc_ZeroDivisionError, "float division"); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif __PYX_ERR(0, 410, __pyx_L1_error) } __pyx_v__1_aspecty = (((double)__pyx_v_11_glarea_es2_renderdata.width) / ((double)__pyx_v_11_glarea_es2_renderdata.height)); /* "_glarea_es2.pyx":408 * * cdef float _1_aspectx, _1_aspecty #px+ * if renderdata.width < renderdata.height: # <<<<<<<<<<<<<< * _1_aspectx = 1. * _1_aspecty = renderdata.width / renderdata.height */ goto __pyx_L3; } /* "_glarea_es2.pyx":412 * _1_aspecty = renderdata.width / renderdata.height * else: * _1_aspectx = renderdata.height / renderdata.width # <<<<<<<<<<<<<< * _1_aspecty = 1. * renderdata.projection_matrix[0][0] = _1_aspectx / uidata.fovy_radius_zoom */ /*else*/ { if (unlikely(__pyx_v_11_glarea_es2_renderdata.width == 0)) { #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif PyErr_SetString(PyExc_ZeroDivisionError, "float division"); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif __PYX_ERR(0, 412, __pyx_L1_error) } __pyx_v__1_aspectx = (((double)__pyx_v_11_glarea_es2_renderdata.height) / ((double)__pyx_v_11_glarea_es2_renderdata.width)); /* "_glarea_es2.pyx":413 * else: * _1_aspectx = renderdata.height / renderdata.width * _1_aspecty = 1. # <<<<<<<<<<<<<< * renderdata.projection_matrix[0][0] = _1_aspectx / uidata.fovy_radius_zoom * renderdata.projection_matrix[1][1] = _1_aspecty / uidata.fovy_radius_zoom */ __pyx_v__1_aspecty = 1.; } __pyx_L3:; /* "_glarea_es2.pyx":414 * _1_aspectx = renderdata.height / renderdata.width * _1_aspecty = 1. * renderdata.projection_matrix[0][0] = _1_aspectx / uidata.fovy_radius_zoom # <<<<<<<<<<<<<< * renderdata.projection_matrix[1][1] = _1_aspecty / uidata.fovy_radius_zoom * renderdata.projection_matrix[2][2] = -(1/uidata.fovy_radius + 1.) */ if (unlikely(__pyx_v_11_glarea_es2_uidata.fovy_radius_zoom == 0)) { #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif PyErr_SetString(PyExc_ZeroDivisionError, "float division"); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif __PYX_ERR(0, 414, __pyx_L1_error) } ((__pyx_v_11_glarea_es2_renderdata.projection_matrix[0])[0]) = (__pyx_v__1_aspectx / __pyx_v_11_glarea_es2_uidata.fovy_radius_zoom); /* "_glarea_es2.pyx":415 * _1_aspecty = 1. * renderdata.projection_matrix[0][0] = _1_aspectx / uidata.fovy_radius_zoom * renderdata.projection_matrix[1][1] = _1_aspecty / uidata.fovy_radius_zoom # <<<<<<<<<<<<<< * renderdata.projection_matrix[2][2] = -(1/uidata.fovy_radius + 1.) * renderdata.projection_matrix[3][2] = -(1/uidata.fovy_radius + 2. */ if (unlikely(__pyx_v_11_glarea_es2_uidata.fovy_radius_zoom == 0)) { #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif PyErr_SetString(PyExc_ZeroDivisionError, "float division"); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif __PYX_ERR(0, 415, __pyx_L1_error) } ((__pyx_v_11_glarea_es2_renderdata.projection_matrix[1])[1]) = (__pyx_v__1_aspecty / __pyx_v_11_glarea_es2_uidata.fovy_radius_zoom); /* "_glarea_es2.pyx":416 * renderdata.projection_matrix[0][0] = _1_aspectx / uidata.fovy_radius_zoom * renderdata.projection_matrix[1][1] = _1_aspecty / uidata.fovy_radius_zoom * renderdata.projection_matrix[2][2] = -(1/uidata.fovy_radius + 1.) # <<<<<<<<<<<<<< * renderdata.projection_matrix[3][2] = -(1/uidata.fovy_radius + 2. * ) * uidata.bounding_sphere_radius / uidata.fovy_radius */ if (unlikely(__pyx_v_11_glarea_es2_uidata.fovy_radius == 0)) { #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif PyErr_SetString(PyExc_ZeroDivisionError, "float division"); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif __PYX_ERR(0, 416, __pyx_L1_error) } ((__pyx_v_11_glarea_es2_renderdata.projection_matrix[2])[2]) = (-((1.0 / __pyx_v_11_glarea_es2_uidata.fovy_radius) + 1.)); /* "_glarea_es2.pyx":417 * renderdata.projection_matrix[1][1] = _1_aspecty / uidata.fovy_radius_zoom * renderdata.projection_matrix[2][2] = -(1/uidata.fovy_radius + 1.) * renderdata.projection_matrix[3][2] = -(1/uidata.fovy_radius + 2. # <<<<<<<<<<<<<< * ) * uidata.bounding_sphere_radius / uidata.fovy_radius * */ if (unlikely(__pyx_v_11_glarea_es2_uidata.fovy_radius == 0)) { #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif PyErr_SetString(PyExc_ZeroDivisionError, "float division"); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif __PYX_ERR(0, 417, __pyx_L1_error) } /* "_glarea_es2.pyx":418 * renderdata.projection_matrix[2][2] = -(1/uidata.fovy_radius + 1.) * renderdata.projection_matrix[3][2] = -(1/uidata.fovy_radius + 2. * ) * uidata.bounding_sphere_radius / uidata.fovy_radius # <<<<<<<<<<<<<< * * ##pxm-FUNC P nogil */ __pyx_t_2 = ((-((1.0 / __pyx_v_11_glarea_es2_uidata.fovy_radius) + 2.)) * __pyx_v_11_glarea_es2_uidata.bounding_sphere_radius); if (unlikely(__pyx_v_11_glarea_es2_uidata.fovy_radius == 0)) { #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif PyErr_SetString(PyExc_ZeroDivisionError, "float division"); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif __PYX_ERR(0, 418, __pyx_L1_error) } /* "_glarea_es2.pyx":417 * renderdata.projection_matrix[1][1] = _1_aspecty / uidata.fovy_radius_zoom * renderdata.projection_matrix[2][2] = -(1/uidata.fovy_radius + 1.) * renderdata.projection_matrix[3][2] = -(1/uidata.fovy_radius + 2. # <<<<<<<<<<<<<< * ) * uidata.bounding_sphere_radius / uidata.fovy_radius * */ ((__pyx_v_11_glarea_es2_renderdata.projection_matrix[3])[2]) = (__pyx_t_2 / ((double)__pyx_v_11_glarea_es2_uidata.fovy_radius)); /* "_glarea_es2.pyx":370 * * ##pxm-FUNC P nogil * cdef void _sync_projection_matrix() nogil: # <<<<<<<<<<<<<< * # Taken from the OpenGL documentation for glFrustum: * # glFrustum describes a perspective matrix that produces a perspective projection. */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_WriteUnraisable("_glarea_es2._sync_projection_matrix", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 1); __pyx_L0:; } /* "_glarea_es2.pyx":421 * * ##pxm-FUNC P nogil * cdef void _set_picking_matrix(int x, int y) nogil: # <<<<<<<<<<<<<< * # Set picking matrix, restrict drawing to one pixel of the viewport * # same as: _glLoadIdentity() */ static void __pyx_f_11_glarea_es2__set_picking_matrix(int __pyx_v_x, int __pyx_v_y) { int __pyx_t_1; /* "_glarea_es2.pyx":428 * # _glTranslatef(renderdata.width - 2*x, renderdata.height - 2*y, 0.) * # _glScalef(renderdata.width, renderdata.height, 1.0) * renderdata.picking_matrix[3][0] = renderdata.width - 2*x # <<<<<<<<<<<<<< * renderdata.picking_matrix[3][1] = renderdata.height - 2*y * renderdata.picking_matrix[0][0] = renderdata.width */ ((__pyx_v_11_glarea_es2_renderdata.picking_matrix[3])[0]) = (__pyx_v_11_glarea_es2_renderdata.width - (2 * __pyx_v_x)); /* "_glarea_es2.pyx":429 * # _glScalef(renderdata.width, renderdata.height, 1.0) * renderdata.picking_matrix[3][0] = renderdata.width - 2*x * renderdata.picking_matrix[3][1] = renderdata.height - 2*y # <<<<<<<<<<<<<< * renderdata.picking_matrix[0][0] = renderdata.width * renderdata.picking_matrix[1][1] = renderdata.height */ ((__pyx_v_11_glarea_es2_renderdata.picking_matrix[3])[1]) = (__pyx_v_11_glarea_es2_renderdata.height - (2 * __pyx_v_y)); /* "_glarea_es2.pyx":430 * renderdata.picking_matrix[3][0] = renderdata.width - 2*x * renderdata.picking_matrix[3][1] = renderdata.height - 2*y * renderdata.picking_matrix[0][0] = renderdata.width # <<<<<<<<<<<<<< * renderdata.picking_matrix[1][1] = renderdata.height * */ __pyx_t_1 = __pyx_v_11_glarea_es2_renderdata.width; ((__pyx_v_11_glarea_es2_renderdata.picking_matrix[0])[0]) = __pyx_t_1; /* "_glarea_es2.pyx":431 * renderdata.picking_matrix[3][1] = renderdata.height - 2*y * renderdata.picking_matrix[0][0] = renderdata.width * renderdata.picking_matrix[1][1] = renderdata.height # <<<<<<<<<<<<<< * * ##pxm-FUNC P nogil */ __pyx_t_1 = __pyx_v_11_glarea_es2_renderdata.height; ((__pyx_v_11_glarea_es2_renderdata.picking_matrix[1])[1]) = __pyx_t_1; /* "_glarea_es2.pyx":421 * * ##pxm-FUNC P nogil * cdef void _set_picking_matrix(int x, int y) nogil: # <<<<<<<<<<<<<< * # Set picking matrix, restrict drawing to one pixel of the viewport * # same as: _glLoadIdentity() */ /* function exit code */ } /* "_glarea_es2.pyx":434 * * ##pxm-FUNC P nogil * cdef void _set_picking_matrix_identity() nogil: # <<<<<<<<<<<<<< * renderdata.picking_matrix[3][0] = 0. * renderdata.picking_matrix[3][1] = 0. */ static void __pyx_f_11_glarea_es2__set_picking_matrix_identity(void) { /* "_glarea_es2.pyx":435 * ##pxm-FUNC P nogil * cdef void _set_picking_matrix_identity() nogil: * renderdata.picking_matrix[3][0] = 0. # <<<<<<<<<<<<<< * renderdata.picking_matrix[3][1] = 0. * renderdata.picking_matrix[0][0] = 1. */ ((__pyx_v_11_glarea_es2_renderdata.picking_matrix[3])[0]) = 0.; /* "_glarea_es2.pyx":436 * cdef void _set_picking_matrix_identity() nogil: * renderdata.picking_matrix[3][0] = 0. * renderdata.picking_matrix[3][1] = 0. # <<<<<<<<<<<<<< * renderdata.picking_matrix[0][0] = 1. * renderdata.picking_matrix[1][1] = 1. */ ((__pyx_v_11_glarea_es2_renderdata.picking_matrix[3])[1]) = 0.; /* "_glarea_es2.pyx":437 * renderdata.picking_matrix[3][0] = 0. * renderdata.picking_matrix[3][1] = 0. * renderdata.picking_matrix[0][0] = 1. # <<<<<<<<<<<<<< * renderdata.picking_matrix[1][1] = 1. * */ ((__pyx_v_11_glarea_es2_renderdata.picking_matrix[0])[0]) = 1.; /* "_glarea_es2.pyx":438 * renderdata.picking_matrix[3][1] = 0. * renderdata.picking_matrix[0][0] = 1. * renderdata.picking_matrix[1][1] = 1. # <<<<<<<<<<<<<< * * def set_frustum(bounding_sphere_radius, zoom): */ ((__pyx_v_11_glarea_es2_renderdata.picking_matrix[1])[1]) = 1.; /* "_glarea_es2.pyx":434 * * ##pxm-FUNC P nogil * cdef void _set_picking_matrix_identity() nogil: # <<<<<<<<<<<<<< * renderdata.picking_matrix[3][0] = 0. * renderdata.picking_matrix[3][1] = 0. */ /* function exit code */ } /* "_glarea_es2.pyx":440 * renderdata.picking_matrix[1][1] = 1. * * def set_frustum(bounding_sphere_radius, zoom): # <<<<<<<<<<<<<< * uidata.frustum_changed = True * if bounding_sphere_radius > 0: */ /* Python wrapper */ static PyObject *__pyx_pw_11_glarea_es2_7set_frustum(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static PyMethodDef __pyx_mdef_11_glarea_es2_7set_frustum = {"set_frustum", (PyCFunction)__pyx_pw_11_glarea_es2_7set_frustum, METH_VARARGS|METH_KEYWORDS, 0}; static PyObject *__pyx_pw_11_glarea_es2_7set_frustum(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_bounding_sphere_radius = 0; PyObject *__pyx_v_zoom = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("set_frustum (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_bounding_sphere_radius,&__pyx_n_s_zoom,0}; PyObject* values[2] = {0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_bounding_sphere_radius)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_zoom)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("set_frustum", 1, 2, 2, 1); __PYX_ERR(0, 440, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_frustum") < 0)) __PYX_ERR(0, 440, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); } __pyx_v_bounding_sphere_radius = values[0]; __pyx_v_zoom = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("set_frustum", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 440, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("_glarea_es2.set_frustum", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11_glarea_es2_6set_frustum(__pyx_self, __pyx_v_bounding_sphere_radius, __pyx_v_zoom); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11_glarea_es2_6set_frustum(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_bounding_sphere_radius, PyObject *__pyx_v_zoom) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_t_2; double __pyx_t_3; PyObject *__pyx_t_4 = NULL; float __pyx_t_5; __Pyx_RefNannySetupContext("set_frustum", 0); /* "_glarea_es2.pyx":441 * * def set_frustum(bounding_sphere_radius, zoom): * uidata.frustum_changed = True # <<<<<<<<<<<<<< * if bounding_sphere_radius > 0: * uidata.bounding_sphere_radius = bounding_sphere_radius */ __pyx_v_11_glarea_es2_uidata.frustum_changed = 1; /* "_glarea_es2.pyx":442 * def set_frustum(bounding_sphere_radius, zoom): * uidata.frustum_changed = True * if bounding_sphere_radius > 0: # <<<<<<<<<<<<<< * uidata.bounding_sphere_radius = bounding_sphere_radius * uidata.fovy_radius_zoom = uidata.fovy_radius / zoom */ __pyx_t_1 = PyObject_RichCompare(__pyx_v_bounding_sphere_radius, __pyx_int_0, Py_GT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 442, __pyx_L1_error) __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 442, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_2) { /* "_glarea_es2.pyx":443 * uidata.frustum_changed = True * if bounding_sphere_radius > 0: * uidata.bounding_sphere_radius = bounding_sphere_radius # <<<<<<<<<<<<<< * uidata.fovy_radius_zoom = uidata.fovy_radius / zoom * */ __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_bounding_sphere_radius); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 443, __pyx_L1_error) __pyx_v_11_glarea_es2_uidata.bounding_sphere_radius = __pyx_t_3; /* "_glarea_es2.pyx":442 * def set_frustum(bounding_sphere_radius, zoom): * uidata.frustum_changed = True * if bounding_sphere_radius > 0: # <<<<<<<<<<<<<< * uidata.bounding_sphere_radius = bounding_sphere_radius * uidata.fovy_radius_zoom = uidata.fovy_radius / zoom */ } /* "_glarea_es2.pyx":444 * if bounding_sphere_radius > 0: * uidata.bounding_sphere_radius = bounding_sphere_radius * uidata.fovy_radius_zoom = uidata.fovy_radius / zoom # <<<<<<<<<<<<<< * * def set_background_color(red, green, blue): */ __pyx_t_1 = PyFloat_FromDouble(__pyx_v_11_glarea_es2_uidata.fovy_radius); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 444, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = __Pyx_PyNumber_Divide(__pyx_t_1, __pyx_v_zoom); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 444, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_5 = __pyx_PyFloat_AsFloat(__pyx_t_4); if (unlikely((__pyx_t_5 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 444, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_11_glarea_es2_uidata.fovy_radius_zoom = __pyx_t_5; /* "_glarea_es2.pyx":440 * renderdata.picking_matrix[1][1] = 1. * * def set_frustum(bounding_sphere_radius, zoom): # <<<<<<<<<<<<<< * uidata.frustum_changed = True * if bounding_sphere_radius > 0: */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("_glarea_es2.set_frustum", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_glarea_es2.pyx":446 * uidata.fovy_radius_zoom = uidata.fovy_radius / zoom * * def set_background_color(red, green, blue): # <<<<<<<<<<<<<< * uidata.background_changed = True * uidata.bg_red = red */ /* Python wrapper */ static PyObject *__pyx_pw_11_glarea_es2_9set_background_color(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static PyMethodDef __pyx_mdef_11_glarea_es2_9set_background_color = {"set_background_color", (PyCFunction)__pyx_pw_11_glarea_es2_9set_background_color, METH_VARARGS|METH_KEYWORDS, 0}; static PyObject *__pyx_pw_11_glarea_es2_9set_background_color(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_red = 0; PyObject *__pyx_v_green = 0; PyObject *__pyx_v_blue = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("set_background_color (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_red,&__pyx_n_s_green,&__pyx_n_s_blue,0}; PyObject* values[3] = {0,0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_red)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_green)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("set_background_color", 1, 3, 3, 1); __PYX_ERR(0, 446, __pyx_L3_error) } case 2: if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_blue)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("set_background_color", 1, 3, 3, 2); __PYX_ERR(0, 446, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_background_color") < 0)) __PYX_ERR(0, 446, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); values[2] = PyTuple_GET_ITEM(__pyx_args, 2); } __pyx_v_red = values[0]; __pyx_v_green = values[1]; __pyx_v_blue = values[2]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("set_background_color", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 446, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("_glarea_es2.set_background_color", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11_glarea_es2_8set_background_color(__pyx_self, __pyx_v_red, __pyx_v_green, __pyx_v_blue); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11_glarea_es2_8set_background_color(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_red, PyObject *__pyx_v_green, PyObject *__pyx_v_blue) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations float __pyx_t_1; __Pyx_RefNannySetupContext("set_background_color", 0); /* "_glarea_es2.pyx":447 * * def set_background_color(red, green, blue): * uidata.background_changed = True # <<<<<<<<<<<<<< * uidata.bg_red = red * uidata.bg_green = green */ __pyx_v_11_glarea_es2_uidata.background_changed = 1; /* "_glarea_es2.pyx":448 * def set_background_color(red, green, blue): * uidata.background_changed = True * uidata.bg_red = red # <<<<<<<<<<<<<< * uidata.bg_green = green * uidata.bg_blue = blue */ __pyx_t_1 = __pyx_PyFloat_AsFloat(__pyx_v_red); if (unlikely((__pyx_t_1 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 448, __pyx_L1_error) __pyx_v_11_glarea_es2_uidata.bg_red = __pyx_t_1; /* "_glarea_es2.pyx":449 * uidata.background_changed = True * uidata.bg_red = red * uidata.bg_green = green # <<<<<<<<<<<<<< * uidata.bg_blue = blue * */ __pyx_t_1 = __pyx_PyFloat_AsFloat(__pyx_v_green); if (unlikely((__pyx_t_1 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 449, __pyx_L1_error) __pyx_v_11_glarea_es2_uidata.bg_green = __pyx_t_1; /* "_glarea_es2.pyx":450 * uidata.bg_red = red * uidata.bg_green = green * uidata.bg_blue = blue # <<<<<<<<<<<<<< * * def set_antialiasing(multisample): */ __pyx_t_1 = __pyx_PyFloat_AsFloat(__pyx_v_blue); if (unlikely((__pyx_t_1 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 450, __pyx_L1_error) __pyx_v_11_glarea_es2_uidata.bg_blue = __pyx_t_1; /* "_glarea_es2.pyx":446 * uidata.fovy_radius_zoom = uidata.fovy_radius / zoom * * def set_background_color(red, green, blue): # <<<<<<<<<<<<<< * uidata.background_changed = True * uidata.bg_red = red */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("_glarea_es2.set_background_color", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_glarea_es2.pyx":452 * uidata.bg_blue = blue * * def set_antialiasing(multisample): # <<<<<<<<<<<<<< * uidata.multisample_changed = 2 if multisample else 1 * */ /* Python wrapper */ static PyObject *__pyx_pw_11_glarea_es2_11set_antialiasing(PyObject *__pyx_self, PyObject *__pyx_v_multisample); /*proto*/ static PyMethodDef __pyx_mdef_11_glarea_es2_11set_antialiasing = {"set_antialiasing", (PyCFunction)__pyx_pw_11_glarea_es2_11set_antialiasing, METH_O, 0}; static PyObject *__pyx_pw_11_glarea_es2_11set_antialiasing(PyObject *__pyx_self, PyObject *__pyx_v_multisample) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("set_antialiasing (wrapper)", 0); __pyx_r = __pyx_pf_11_glarea_es2_10set_antialiasing(__pyx_self, ((PyObject *)__pyx_v_multisample)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11_glarea_es2_10set_antialiasing(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_multisample) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; int __pyx_t_2; __Pyx_RefNannySetupContext("set_antialiasing", 0); /* "_glarea_es2.pyx":453 * * def set_antialiasing(multisample): * uidata.multisample_changed = 2 if multisample else 1 # <<<<<<<<<<<<<< * * def set_rotation_xy(x, y): */ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_multisample); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 453, __pyx_L1_error) if (__pyx_t_2) { __pyx_t_1 = 2; } else { __pyx_t_1 = 1; } __pyx_v_11_glarea_es2_uidata.multisample_changed = __pyx_t_1; /* "_glarea_es2.pyx":452 * uidata.bg_blue = blue * * def set_antialiasing(multisample): # <<<<<<<<<<<<<< * uidata.multisample_changed = 2 if multisample else 1 * */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("_glarea_es2.set_antialiasing", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_glarea_es2.pyx":455 * uidata.multisample_changed = 2 if multisample else 1 * * def set_rotation_xy(x, y): # <<<<<<<<<<<<<< * x %= 360 * # pylint: disable=C0321 */ /* Python wrapper */ static PyObject *__pyx_pw_11_glarea_es2_13set_rotation_xy(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static PyMethodDef __pyx_mdef_11_glarea_es2_13set_rotation_xy = {"set_rotation_xy", (PyCFunction)__pyx_pw_11_glarea_es2_13set_rotation_xy, METH_VARARGS|METH_KEYWORDS, 0}; static PyObject *__pyx_pw_11_glarea_es2_13set_rotation_xy(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_x = 0; PyObject *__pyx_v_y = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("set_rotation_xy (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_y,0}; PyObject* values[2] = {0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("set_rotation_xy", 1, 2, 2, 1); __PYX_ERR(0, 455, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_rotation_xy") < 0)) __PYX_ERR(0, 455, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); } __pyx_v_x = values[0]; __pyx_v_y = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("set_rotation_xy", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 455, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("_glarea_es2.set_rotation_xy", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11_glarea_es2_12set_rotation_xy(__pyx_self, __pyx_v_x, __pyx_v_y); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11_glarea_es2_12set_rotation_xy(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_x, PyObject *__pyx_v_y) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_t_2; PyObject *__pyx_t_3 = NULL; float __pyx_t_4; __Pyx_RefNannySetupContext("set_rotation_xy", 0); __Pyx_INCREF(__pyx_v_x); __Pyx_INCREF(__pyx_v_y); /* "_glarea_es2.pyx":456 * * def set_rotation_xy(x, y): * x %= 360 # <<<<<<<<<<<<<< * # pylint: disable=C0321 * if y < -120: y = -120 */ __pyx_t_1 = __Pyx_PyInt_RemainderObjC(__pyx_v_x, __pyx_int_360, 0x168, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 456, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF_SET(__pyx_v_x, __pyx_t_1); __pyx_t_1 = 0; /* "_glarea_es2.pyx":458 * x %= 360 * # pylint: disable=C0321 * if y < -120: y = -120 # <<<<<<<<<<<<<< * elif y > 120: y = 120 * uidata.rotation_changed = True */ __pyx_t_1 = PyObject_RichCompare(__pyx_v_y, __pyx_int_neg_120, Py_LT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 458, __pyx_L1_error) __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 458, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_2) { __Pyx_INCREF(__pyx_int_neg_120); __Pyx_DECREF_SET(__pyx_v_y, __pyx_int_neg_120); goto __pyx_L3; } /* "_glarea_es2.pyx":459 * # pylint: disable=C0321 * if y < -120: y = -120 * elif y > 120: y = 120 # <<<<<<<<<<<<<< * uidata.rotation_changed = True * uidata.rotationxhalf = M_PI * x / 360.0 */ __pyx_t_1 = PyObject_RichCompare(__pyx_v_y, __pyx_int_120, Py_GT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 459, __pyx_L1_error) __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 459, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_2) { __Pyx_INCREF(__pyx_int_120); __Pyx_DECREF_SET(__pyx_v_y, __pyx_int_120); } __pyx_L3:; /* "_glarea_es2.pyx":460 * if y < -120: y = -120 * elif y > 120: y = 120 * uidata.rotation_changed = True # <<<<<<<<<<<<<< * uidata.rotationxhalf = M_PI * x / 360.0 * uidata.rotationyhalf = M_PI * y / 360.0 */ __pyx_v_11_glarea_es2_uidata.rotation_changed = 1; /* "_glarea_es2.pyx":461 * elif y > 120: y = 120 * uidata.rotation_changed = True * uidata.rotationxhalf = M_PI * x / 360.0 # <<<<<<<<<<<<<< * uidata.rotationyhalf = M_PI * y / 360.0 * return x, y */ __pyx_t_1 = PyFloat_FromDouble(M_PI); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 461, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = PyNumber_Multiply(__pyx_t_1, __pyx_v_x); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 461, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyFloat_TrueDivideObjC(__pyx_t_3, __pyx_float_360_0, 360.0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 461, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_4 = __pyx_PyFloat_AsFloat(__pyx_t_1); if (unlikely((__pyx_t_4 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 461, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_11_glarea_es2_uidata.rotationxhalf = __pyx_t_4; /* "_glarea_es2.pyx":462 * uidata.rotation_changed = True * uidata.rotationxhalf = M_PI * x / 360.0 * uidata.rotationyhalf = M_PI * y / 360.0 # <<<<<<<<<<<<<< * return x, y * */ __pyx_t_1 = PyFloat_FromDouble(M_PI); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 462, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = PyNumber_Multiply(__pyx_t_1, __pyx_v_y); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 462, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyFloat_TrueDivideObjC(__pyx_t_3, __pyx_float_360_0, 360.0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 462, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_4 = __pyx_PyFloat_AsFloat(__pyx_t_1); if (unlikely((__pyx_t_4 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 462, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_11_glarea_es2_uidata.rotationyhalf = __pyx_t_4; /* "_glarea_es2.pyx":463 * uidata.rotationxhalf = M_PI * x / 360.0 * uidata.rotationyhalf = M_PI * y / 360.0 * return x, y # <<<<<<<<<<<<<< * * ##pxm-FUNC PD nogil */ __Pyx_XDECREF(__pyx_r); __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 463, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_v_x); __Pyx_GIVEREF(__pyx_v_x); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_x); __Pyx_INCREF(__pyx_v_y); __Pyx_GIVEREF(__pyx_v_y); PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_y); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; /* "_glarea_es2.pyx":455 * uidata.multisample_changed = 2 if multisample else 1 * * def set_rotation_xy(x, y): # <<<<<<<<<<<<<< * x %= 360 * # pylint: disable=C0321 */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("_glarea_es2.set_rotation_xy", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_x); __Pyx_XDECREF(__pyx_v_y); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_glarea_es2.pyx":466 * * ##pxm-FUNC PD nogil * cdef void render_resize(int y, int width, int height) nogil: # <<<<<<<<<<<<<< * renderdata.y = y * renderdata.width = width */ static void __pyx_f_11_glarea_es2_render_resize(int __pyx_v_y, int __pyx_v_width, int __pyx_v_height) { /* "_glarea_es2.pyx":467 * ##pxm-FUNC PD nogil * cdef void render_resize(int y, int width, int height) nogil: * renderdata.y = y # <<<<<<<<<<<<<< * renderdata.width = width * renderdata.height = height */ __pyx_v_11_glarea_es2_renderdata.y = __pyx_v_y; /* "_glarea_es2.pyx":468 * cdef void render_resize(int y, int width, int height) nogil: * renderdata.y = y * renderdata.width = width # <<<<<<<<<<<<<< * renderdata.height = height * uidata.viewport_changed = True */ __pyx_v_11_glarea_es2_renderdata.width = __pyx_v_width; /* "_glarea_es2.pyx":469 * renderdata.y = y * renderdata.width = width * renderdata.height = height # <<<<<<<<<<<<<< * uidata.viewport_changed = True * */ __pyx_v_11_glarea_es2_renderdata.height = __pyx_v_height; /* "_glarea_es2.pyx":470 * renderdata.width = width * renderdata.height = height * uidata.viewport_changed = True # <<<<<<<<<<<<<< * * def set_transformations(blocks): */ __pyx_v_11_glarea_es2_uidata.viewport_changed = 1; /* "_glarea_es2.pyx":466 * * ##pxm-FUNC PD nogil * cdef void render_resize(int y, int width, int height) nogil: # <<<<<<<<<<<<<< * renderdata.y = y * renderdata.width = width */ /* function exit code */ } /* "_glarea_es2.pyx":472 * uidata.viewport_changed = True * * def set_transformations(blocks): # <<<<<<<<<<<<<< * assert uidata.nblocks == len(blocks) * cdef int i #px+ */ /* Python wrapper */ static PyObject *__pyx_pw_11_glarea_es2_15set_transformations(PyObject *__pyx_self, PyObject *__pyx_v_blocks); /*proto*/ static PyMethodDef __pyx_mdef_11_glarea_es2_15set_transformations = {"set_transformations", (PyCFunction)__pyx_pw_11_glarea_es2_15set_transformations, METH_O, 0}; static PyObject *__pyx_pw_11_glarea_es2_15set_transformations(PyObject *__pyx_self, PyObject *__pyx_v_blocks) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("set_transformations (wrapper)", 0); __pyx_r = __pyx_pf_11_glarea_es2_14set_transformations(__pyx_self, ((PyObject *)__pyx_v_blocks)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11_glarea_es2_14set_transformations(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_blocks) { int __pyx_v_i; short __pyx_v_b; CYTHON_UNUSED PyObject *__pyx_v_unused = NULL; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations Py_ssize_t __pyx_t_1; PyObject *__pyx_t_2 = NULL; PyObject *(*__pyx_t_3)(PyObject *); PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; PyObject *__pyx_t_7 = NULL; PyObject *__pyx_t_8 = NULL; PyObject *(*__pyx_t_9)(PyObject *); int __pyx_t_10; short __pyx_t_11; __Pyx_RefNannySetupContext("set_transformations", 0); /* "_glarea_es2.pyx":473 * * def set_transformations(blocks): * assert uidata.nblocks == len(blocks) # <<<<<<<<<<<<<< * cdef int i #px+ * cdef short b #px+ */ #ifndef CYTHON_WITHOUT_ASSERTIONS if (unlikely(!Py_OptimizeFlag)) { __pyx_t_1 = PyObject_Length(__pyx_v_blocks); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(0, 473, __pyx_L1_error) if (unlikely(!((__pyx_v_11_glarea_es2_uidata.nblocks == __pyx_t_1) != 0))) { PyErr_SetNone(PyExc_AssertionError); __PYX_ERR(0, 473, __pyx_L1_error) } } #endif /* "_glarea_es2.pyx":476 * cdef int i #px+ * cdef short b #px+ * for i, b, unused in blocks: # <<<<<<<<<<<<<< * uidata.transformation_blocks[i] = b * uidata.transformation_changed = True */ if (likely(PyList_CheckExact(__pyx_v_blocks)) || PyTuple_CheckExact(__pyx_v_blocks)) { __pyx_t_2 = __pyx_v_blocks; __Pyx_INCREF(__pyx_t_2); __pyx_t_1 = 0; __pyx_t_3 = NULL; } else { __pyx_t_1 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_blocks); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 476, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 476, __pyx_L1_error) } for (;;) { if (likely(!__pyx_t_3)) { if (likely(PyList_CheckExact(__pyx_t_2))) { if (__pyx_t_1 >= PyList_GET_SIZE(__pyx_t_2)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_4 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_1); __Pyx_INCREF(__pyx_t_4); __pyx_t_1++; if (unlikely(0 < 0)) __PYX_ERR(0, 476, __pyx_L1_error) #else __pyx_t_4 = PySequence_ITEM(__pyx_t_2, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 476, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); #endif } else { if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_2)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_1); __Pyx_INCREF(__pyx_t_4); __pyx_t_1++; if (unlikely(0 < 0)) __PYX_ERR(0, 476, __pyx_L1_error) #else __pyx_t_4 = PySequence_ITEM(__pyx_t_2, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 476, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); #endif } } else { __pyx_t_4 = __pyx_t_3(__pyx_t_2); if (unlikely(!__pyx_t_4)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 476, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_4); } if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) { PyObject* sequence = __pyx_t_4; #if !CYTHON_COMPILING_IN_PYPY Py_ssize_t size = Py_SIZE(sequence); #else Py_ssize_t size = PySequence_Size(sequence); #endif if (unlikely(size != 3)) { if (size > 3) __Pyx_RaiseTooManyValuesError(3); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 476, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_5 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1); __pyx_t_7 = PyTuple_GET_ITEM(sequence, 2); } else { __pyx_t_5 = PyList_GET_ITEM(sequence, 0); __pyx_t_6 = PyList_GET_ITEM(sequence, 1); __pyx_t_7 = PyList_GET_ITEM(sequence, 2); } __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(__pyx_t_7); #else __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 476, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 476, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 476, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); #endif __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else { Py_ssize_t index = -1; __pyx_t_8 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 476, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_9 = Py_TYPE(__pyx_t_8)->tp_iternext; index = 0; __pyx_t_5 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_5)) goto __pyx_L5_unpacking_failed; __Pyx_GOTREF(__pyx_t_5); index = 1; __pyx_t_6 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_6)) goto __pyx_L5_unpacking_failed; __Pyx_GOTREF(__pyx_t_6); index = 2; __pyx_t_7 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_7)) goto __pyx_L5_unpacking_failed; __Pyx_GOTREF(__pyx_t_7); if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_8), 3) < 0) __PYX_ERR(0, 476, __pyx_L1_error) __pyx_t_9 = NULL; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; goto __pyx_L6_unpacking_done; __pyx_L5_unpacking_failed:; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_9 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 476, __pyx_L1_error) __pyx_L6_unpacking_done:; } __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 476, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_11 = __Pyx_PyInt_As_short(__pyx_t_6); if (unlikely((__pyx_t_11 == (short)-1) && PyErr_Occurred())) __PYX_ERR(0, 476, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_v_i = __pyx_t_10; __pyx_v_b = __pyx_t_11; __Pyx_XDECREF_SET(__pyx_v_unused, __pyx_t_7); __pyx_t_7 = 0; /* "_glarea_es2.pyx":477 * cdef short b #px+ * for i, b, unused in blocks: * uidata.transformation_blocks[i] = b # <<<<<<<<<<<<<< * uidata.transformation_changed = True * */ (__pyx_v_11_glarea_es2_uidata.transformation_blocks[__pyx_v_i]) = __pyx_v_b; /* "_glarea_es2.pyx":476 * cdef int i #px+ * cdef short b #px+ * for i, b, unused in blocks: # <<<<<<<<<<<<<< * uidata.transformation_blocks[i] = b * uidata.transformation_changed = True */ } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_glarea_es2.pyx":478 * for i, b, unused in blocks: * uidata.transformation_blocks[i] = b * uidata.transformation_changed = True # <<<<<<<<<<<<<< * * ##pxm-FUNC P */ __pyx_v_11_glarea_es2_uidata.transformation_changed = 1; /* "_glarea_es2.pyx":472 * uidata.viewport_changed = True * * def set_transformations(blocks): # <<<<<<<<<<<<<< * assert uidata.nblocks == len(blocks) * cdef int i #px+ */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_8); __Pyx_AddTraceback("_glarea_es2.set_transformations", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_unused); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_glarea_es2.pyx":481 * * ##pxm-FUNC P * cpdef set_animation_start(blocks, float axisx, float axisy, float axisz): # <<<<<<<<<<<<<< * for i, (b, unused) in enumerate(blocks): * uidata.animation_blocks[i] = b */ static PyObject *__pyx_pw_11_glarea_es2_17set_animation_start(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static PyObject *__pyx_f_11_glarea_es2_set_animation_start(PyObject *__pyx_v_blocks, float __pyx_v_axisx, float __pyx_v_axisy, float __pyx_v_axisz, CYTHON_UNUSED int __pyx_skip_dispatch) { PyObject *__pyx_v_i = NULL; PyObject *__pyx_v_b = NULL; CYTHON_UNUSED PyObject *__pyx_v_unused = NULL; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; Py_ssize_t __pyx_t_3; PyObject *(*__pyx_t_4)(PyObject *); PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; PyObject *__pyx_t_7 = NULL; PyObject *__pyx_t_8 = NULL; PyObject *(*__pyx_t_9)(PyObject *); short __pyx_t_10; Py_ssize_t __pyx_t_11; int __pyx_t_12; __Pyx_RefNannySetupContext("set_animation_start", 0); /* "_glarea_es2.pyx":482 * ##pxm-FUNC P * cpdef set_animation_start(blocks, float axisx, float axisy, float axisz): * for i, (b, unused) in enumerate(blocks): # <<<<<<<<<<<<<< * uidata.animation_blocks[i] = b * uidata.animation_blocks_count = i+1 */ __Pyx_INCREF(__pyx_int_0); __pyx_t_1 = __pyx_int_0; if (likely(PyList_CheckExact(__pyx_v_blocks)) || PyTuple_CheckExact(__pyx_v_blocks)) { __pyx_t_2 = __pyx_v_blocks; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0; __pyx_t_4 = NULL; } else { __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_blocks); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 482, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 482, __pyx_L1_error) } for (;;) { if (likely(!__pyx_t_4)) { if (likely(PyList_CheckExact(__pyx_t_2))) { if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 482, __pyx_L1_error) #else __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 482, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif } else { if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_2)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 482, __pyx_L1_error) #else __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 482, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif } } else { __pyx_t_5 = __pyx_t_4(__pyx_t_2); if (unlikely(!__pyx_t_5)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 482, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_5); } if ((likely(PyTuple_CheckExact(__pyx_t_5))) || (PyList_CheckExact(__pyx_t_5))) { PyObject* sequence = __pyx_t_5; #if !CYTHON_COMPILING_IN_PYPY Py_ssize_t size = Py_SIZE(sequence); #else Py_ssize_t size = PySequence_Size(sequence); #endif if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 482, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_6 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_7 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_6 = PyList_GET_ITEM(sequence, 0); __pyx_t_7 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(__pyx_t_7); #else __pyx_t_6 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 482, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 482, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); #endif __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else { Py_ssize_t index = -1; __pyx_t_8 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 482, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_9 = Py_TYPE(__pyx_t_8)->tp_iternext; index = 0; __pyx_t_6 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_6)) goto __pyx_L5_unpacking_failed; __Pyx_GOTREF(__pyx_t_6); index = 1; __pyx_t_7 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_7)) goto __pyx_L5_unpacking_failed; __Pyx_GOTREF(__pyx_t_7); if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_8), 2) < 0) __PYX_ERR(0, 482, __pyx_L1_error) __pyx_t_9 = NULL; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; goto __pyx_L6_unpacking_done; __pyx_L5_unpacking_failed:; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_9 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 482, __pyx_L1_error) __pyx_L6_unpacking_done:; } __Pyx_XDECREF_SET(__pyx_v_b, __pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF_SET(__pyx_v_unused, __pyx_t_7); __pyx_t_7 = 0; __Pyx_INCREF(__pyx_t_1); __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_1); __pyx_t_5 = __Pyx_PyInt_AddObjC(__pyx_t_1, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 482, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = __pyx_t_5; __pyx_t_5 = 0; /* "_glarea_es2.pyx":483 * cpdef set_animation_start(blocks, float axisx, float axisy, float axisz): * for i, (b, unused) in enumerate(blocks): * uidata.animation_blocks[i] = b # <<<<<<<<<<<<<< * uidata.animation_blocks_count = i+1 * uidata.angle = 0.0 */ __pyx_t_10 = __Pyx_PyInt_As_short(__pyx_v_b); if (unlikely((__pyx_t_10 == (short)-1) && PyErr_Occurred())) __PYX_ERR(0, 483, __pyx_L1_error) __pyx_t_11 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_11 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 483, __pyx_L1_error) (__pyx_v_11_glarea_es2_uidata.animation_blocks[__pyx_t_11]) = __pyx_t_10; /* "_glarea_es2.pyx":482 * ##pxm-FUNC P * cpdef set_animation_start(blocks, float axisx, float axisy, float axisz): * for i, (b, unused) in enumerate(blocks): # <<<<<<<<<<<<<< * uidata.animation_blocks[i] = b * uidata.animation_blocks_count = i+1 */ } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_glarea_es2.pyx":484 * for i, (b, unused) in enumerate(blocks): * uidata.animation_blocks[i] = b * uidata.animation_blocks_count = i+1 # <<<<<<<<<<<<<< * uidata.angle = 0.0 * uidata.rotation_x = axisx */ if (unlikely(!__pyx_v_i)) { __Pyx_RaiseUnboundLocalError("i"); __PYX_ERR(0, 484, __pyx_L1_error) } __pyx_t_1 = __Pyx_PyInt_AddObjC(__pyx_v_i, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 484, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_12 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 484, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_11_glarea_es2_uidata.animation_blocks_count = __pyx_t_12; /* "_glarea_es2.pyx":485 * uidata.animation_blocks[i] = b * uidata.animation_blocks_count = i+1 * uidata.angle = 0.0 # <<<<<<<<<<<<<< * uidata.rotation_x = axisx * uidata.rotation_y = axisy */ __pyx_v_11_glarea_es2_uidata.angle = 0.0; /* "_glarea_es2.pyx":486 * uidata.animation_blocks_count = i+1 * uidata.angle = 0.0 * uidata.rotation_x = axisx # <<<<<<<<<<<<<< * uidata.rotation_y = axisy * uidata.rotation_z = axisz */ __pyx_v_11_glarea_es2_uidata.rotation_x = __pyx_v_axisx; /* "_glarea_es2.pyx":487 * uidata.angle = 0.0 * uidata.rotation_x = axisx * uidata.rotation_y = axisy # <<<<<<<<<<<<<< * uidata.rotation_z = axisz * uidata.animation_changed = 1 */ __pyx_v_11_glarea_es2_uidata.rotation_y = __pyx_v_axisy; /* "_glarea_es2.pyx":488 * uidata.rotation_x = axisx * uidata.rotation_y = axisy * uidata.rotation_z = axisz # <<<<<<<<<<<<<< * uidata.animation_changed = 1 * */ __pyx_v_11_glarea_es2_uidata.rotation_z = __pyx_v_axisz; /* "_glarea_es2.pyx":489 * uidata.rotation_y = axisy * uidata.rotation_z = axisz * uidata.animation_changed = 1 # <<<<<<<<<<<<<< * * ##pxm-FUNC PD */ __pyx_v_11_glarea_es2_uidata.animation_changed = 1; /* "_glarea_es2.pyx":481 * * ##pxm-FUNC P * cpdef set_animation_start(blocks, float axisx, float axisy, float axisz): # <<<<<<<<<<<<<< * for i, (b, unused) in enumerate(blocks): * uidata.animation_blocks[i] = b */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_8); __Pyx_AddTraceback("_glarea_es2.set_animation_start", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XDECREF(__pyx_v_i); __Pyx_XDECREF(__pyx_v_b); __Pyx_XDECREF(__pyx_v_unused); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* Python wrapper */ static PyObject *__pyx_pw_11_glarea_es2_17set_animation_start(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static PyObject *__pyx_pw_11_glarea_es2_17set_animation_start(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_blocks = 0; float __pyx_v_axisx; float __pyx_v_axisy; float __pyx_v_axisz; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("set_animation_start (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_blocks,&__pyx_n_s_axisx,&__pyx_n_s_axisy,&__pyx_n_s_axisz,0}; PyObject* values[4] = {0,0,0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_blocks)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_axisx)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("set_animation_start", 1, 4, 4, 1); __PYX_ERR(0, 481, __pyx_L3_error) } case 2: if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_axisy)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("set_animation_start", 1, 4, 4, 2); __PYX_ERR(0, 481, __pyx_L3_error) } case 3: if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_axisz)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("set_animation_start", 1, 4, 4, 3); __PYX_ERR(0, 481, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_animation_start") < 0)) __PYX_ERR(0, 481, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 4) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); values[2] = PyTuple_GET_ITEM(__pyx_args, 2); values[3] = PyTuple_GET_ITEM(__pyx_args, 3); } __pyx_v_blocks = values[0]; __pyx_v_axisx = __pyx_PyFloat_AsFloat(values[1]); if (unlikely((__pyx_v_axisx == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 481, __pyx_L3_error) __pyx_v_axisy = __pyx_PyFloat_AsFloat(values[2]); if (unlikely((__pyx_v_axisy == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 481, __pyx_L3_error) __pyx_v_axisz = __pyx_PyFloat_AsFloat(values[3]); if (unlikely((__pyx_v_axisz == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 481, __pyx_L3_error) } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("set_animation_start", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 481, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("_glarea_es2.set_animation_start", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11_glarea_es2_16set_animation_start(__pyx_self, __pyx_v_blocks, __pyx_v_axisx, __pyx_v_axisy, __pyx_v_axisz); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11_glarea_es2_16set_animation_start(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_blocks, float __pyx_v_axisx, float __pyx_v_axisy, float __pyx_v_axisz) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("set_animation_start", 0); __Pyx_XDECREF(__pyx_r); __pyx_t_1 = __pyx_f_11_glarea_es2_set_animation_start(__pyx_v_blocks, __pyx_v_axisx, __pyx_v_axisy, __pyx_v_axisz, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 481, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("_glarea_es2.set_animation_start", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_glarea_es2.pyx":492 * * ##pxm-FUNC PD * cdef void set_animation_next(float angle): # <<<<<<<<<<<<<< * uidata.angle = -angle * uidata.animation_changed = 2 */ static void __pyx_f_11_glarea_es2_set_animation_next(float __pyx_v_angle) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("set_animation_next", 0); /* "_glarea_es2.pyx":493 * ##pxm-FUNC PD * cdef void set_animation_next(float angle): * uidata.angle = -angle # <<<<<<<<<<<<<< * uidata.animation_changed = 2 * */ __pyx_v_11_glarea_es2_uidata.angle = (-__pyx_v_angle); /* "_glarea_es2.pyx":494 * cdef void set_animation_next(float angle): * uidata.angle = -angle * uidata.animation_changed = 2 # <<<<<<<<<<<<<< * * def set_data(nblocks, vertexdata, vertexpointers, vertexinfo, transformations): */ __pyx_v_11_glarea_es2_uidata.animation_changed = 2; /* "_glarea_es2.pyx":492 * * ##pxm-FUNC PD * cdef void set_animation_next(float angle): # <<<<<<<<<<<<<< * uidata.angle = -angle * uidata.animation_changed = 2 */ /* function exit code */ __Pyx_RefNannyFinishContext(); } /* "_glarea_es2.pyx":496 * uidata.animation_changed = 2 * * def set_data(nblocks, vertexdata, vertexpointers, vertexinfo, transformations): # <<<<<<<<<<<<<< * pydata_postsync() * cdef int t,i,j #px+ */ /* Python wrapper */ static PyObject *__pyx_pw_11_glarea_es2_19set_data(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static PyMethodDef __pyx_mdef_11_glarea_es2_19set_data = {"set_data", (PyCFunction)__pyx_pw_11_glarea_es2_19set_data, METH_VARARGS|METH_KEYWORDS, 0}; static PyObject *__pyx_pw_11_glarea_es2_19set_data(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_nblocks = 0; PyObject *__pyx_v_vertexdata = 0; PyObject *__pyx_v_vertexpointers = 0; PyObject *__pyx_v_vertexinfo = 0; PyObject *__pyx_v_transformations = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("set_data (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_nblocks,&__pyx_n_s_vertexdata,&__pyx_n_s_vertexpointers,&__pyx_n_s_vertexinfo,&__pyx_n_s_transformations,0}; PyObject* values[5] = {0,0,0,0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_nblocks)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_vertexdata)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("set_data", 1, 5, 5, 1); __PYX_ERR(0, 496, __pyx_L3_error) } case 2: if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_vertexpointers)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("set_data", 1, 5, 5, 2); __PYX_ERR(0, 496, __pyx_L3_error) } case 3: if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_vertexinfo)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("set_data", 1, 5, 5, 3); __PYX_ERR(0, 496, __pyx_L3_error) } case 4: if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_transformations)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("set_data", 1, 5, 5, 4); __PYX_ERR(0, 496, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_data") < 0)) __PYX_ERR(0, 496, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 5) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); values[2] = PyTuple_GET_ITEM(__pyx_args, 2); values[3] = PyTuple_GET_ITEM(__pyx_args, 3); values[4] = PyTuple_GET_ITEM(__pyx_args, 4); } __pyx_v_nblocks = values[0]; __pyx_v_vertexdata = values[1]; __pyx_v_vertexpointers = values[2]; __pyx_v_vertexinfo = values[3]; __pyx_v_transformations = values[4]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("set_data", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 496, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("_glarea_es2.set_data", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11_glarea_es2_18set_data(__pyx_self, __pyx_v_nblocks, __pyx_v_vertexdata, __pyx_v_vertexpointers, __pyx_v_vertexinfo, __pyx_v_transformations); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11_glarea_es2_18set_data(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_nblocks, PyObject *__pyx_v_vertexdata, PyObject *__pyx_v_vertexpointers, PyObject *__pyx_v_vertexinfo, PyObject *__pyx_v_transformations) { int __pyx_v_t; int __pyx_v_i; int __pyx_v_j; PyObject *__pyx_v_cnts_block = NULL; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; int __pyx_t_4; int __pyx_t_5; Py_ssize_t __pyx_t_6; char *__pyx_t_7; long __pyx_t_8; long __pyx_t_9; PyObject *__pyx_t_10 = NULL; PyObject *__pyx_t_11 = NULL; PyObject *(*__pyx_t_12)(PyObject *); int __pyx_t_13; int __pyx_t_14; short __pyx_t_15; Py_ssize_t __pyx_t_16; int __pyx_t_17; double __pyx_t_18; __Pyx_RefNannySetupContext("set_data", 0); /* "_glarea_es2.pyx":497 * * def set_data(nblocks, vertexdata, vertexpointers, vertexinfo, transformations): * pydata_postsync() # <<<<<<<<<<<<<< * cdef int t,i,j #px+ * assert nblocks <= gldraw.MAX_BLOCKS, (nblocks, gldraw.MAX_BLOCKS) */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata_postsync); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 497, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } if (__pyx_t_3) { __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 497, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 497, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_glarea_es2.pyx":499 * pydata_postsync() * cdef int t,i,j #px+ * assert nblocks <= gldraw.MAX_BLOCKS, (nblocks, gldraw.MAX_BLOCKS) # <<<<<<<<<<<<<< * uidata.nblocks = nblocks * pydata['vertexdata'] = vertexdata */ #ifndef CYTHON_WITHOUT_ASSERTIONS if (unlikely(!Py_OptimizeFlag)) { __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_e_11_gldraw_es2_MAX_BLOCKS); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 499, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyObject_RichCompare(__pyx_v_nblocks, __pyx_t_1, Py_LE); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 499, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 499, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_4)) { __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_e_11_gldraw_es2_MAX_BLOCKS); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 499, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 499, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_v_nblocks); __Pyx_GIVEREF(__pyx_v_nblocks); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_nblocks); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyTuple_Pack(1, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 499, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; PyErr_SetObject(PyExc_AssertionError, __pyx_t_2); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(0, 499, __pyx_L1_error) } } #endif /* "_glarea_es2.pyx":500 * cdef int t,i,j #px+ * assert nblocks <= gldraw.MAX_BLOCKS, (nblocks, gldraw.MAX_BLOCKS) * uidata.nblocks = nblocks # <<<<<<<<<<<<<< * pydata['vertexdata'] = vertexdata * uidata.vertexdatalen = len(vertexdata) */ __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_v_nblocks); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 500, __pyx_L1_error) __pyx_v_11_glarea_es2_uidata.nblocks = __pyx_t_5; /* "_glarea_es2.pyx":501 * assert nblocks <= gldraw.MAX_BLOCKS, (nblocks, gldraw.MAX_BLOCKS) * uidata.nblocks = nblocks * pydata['vertexdata'] = vertexdata # <<<<<<<<<<<<<< * uidata.vertexdatalen = len(vertexdata) * uidata.vertexdata = vertexdata */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 501, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (unlikely(PyObject_SetItem(__pyx_t_2, __pyx_n_u_vertexdata, __pyx_v_vertexdata) < 0)) __PYX_ERR(0, 501, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_glarea_es2.pyx":502 * uidata.nblocks = nblocks * pydata['vertexdata'] = vertexdata * uidata.vertexdatalen = len(vertexdata) # <<<<<<<<<<<<<< * uidata.vertexdata = vertexdata * assert len(vertexpointers) == gldraw.ATTRIB_CNT-1 */ __pyx_t_6 = PyObject_Length(__pyx_v_vertexdata); if (unlikely(__pyx_t_6 == -1)) __PYX_ERR(0, 502, __pyx_L1_error) __pyx_v_11_glarea_es2_uidata.vertexdatalen = __pyx_t_6; /* "_glarea_es2.pyx":503 * pydata['vertexdata'] = vertexdata * uidata.vertexdatalen = len(vertexdata) * uidata.vertexdata = vertexdata # <<<<<<<<<<<<<< * assert len(vertexpointers) == gldraw.ATTRIB_CNT-1 * for i in range(gldraw.ATTRIB_CNT-1): */ __pyx_t_7 = __Pyx_PyObject_AsString(__pyx_v_vertexdata); if (unlikely((!__pyx_t_7) && PyErr_Occurred())) __PYX_ERR(0, 503, __pyx_L1_error) __pyx_v_11_glarea_es2_uidata.vertexdata = __pyx_t_7; /* "_glarea_es2.pyx":504 * uidata.vertexdatalen = len(vertexdata) * uidata.vertexdata = vertexdata * assert len(vertexpointers) == gldraw.ATTRIB_CNT-1 # <<<<<<<<<<<<<< * for i in range(gldraw.ATTRIB_CNT-1): * uidata.vertexpointers[i] = vertexpointers[i] */ #ifndef CYTHON_WITHOUT_ASSERTIONS if (unlikely(!Py_OptimizeFlag)) { __pyx_t_6 = PyObject_Length(__pyx_v_vertexpointers); if (unlikely(__pyx_t_6 == -1)) __PYX_ERR(0, 504, __pyx_L1_error) if (unlikely(!((__pyx_t_6 == (__pyx_e_11_gldraw_es2_ATTRIB_CNT - 1)) != 0))) { PyErr_SetNone(PyExc_AssertionError); __PYX_ERR(0, 504, __pyx_L1_error) } } #endif /* "_glarea_es2.pyx":505 * uidata.vertexdata = vertexdata * assert len(vertexpointers) == gldraw.ATTRIB_CNT-1 * for i in range(gldraw.ATTRIB_CNT-1): # <<<<<<<<<<<<<< * uidata.vertexpointers[i] = vertexpointers[i] * cnts_block, uidata.idx_debug, uidata.cnt_debug, uidata.cnt_pick = vertexinfo */ __pyx_t_8 = (__pyx_e_11_gldraw_es2_ATTRIB_CNT - 1); for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_8; __pyx_t_5+=1) { __pyx_v_i = __pyx_t_5; /* "_glarea_es2.pyx":506 * assert len(vertexpointers) == gldraw.ATTRIB_CNT-1 * for i in range(gldraw.ATTRIB_CNT-1): * uidata.vertexpointers[i] = vertexpointers[i] # <<<<<<<<<<<<<< * cnts_block, uidata.idx_debug, uidata.cnt_debug, uidata.cnt_pick = vertexinfo * assert len(cnts_block) == nblocks */ __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_vertexpointers, __pyx_v_i, int, 1, __Pyx_PyInt_From_int, 0, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 506, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_9 = __Pyx_PyInt_As_long(__pyx_t_2); if (unlikely((__pyx_t_9 == (long)-1) && PyErr_Occurred())) __PYX_ERR(0, 506, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; (__pyx_v_11_glarea_es2_uidata.vertexpointers[__pyx_v_i]) = __pyx_t_9; } /* "_glarea_es2.pyx":507 * for i in range(gldraw.ATTRIB_CNT-1): * uidata.vertexpointers[i] = vertexpointers[i] * cnts_block, uidata.idx_debug, uidata.cnt_debug, uidata.cnt_pick = vertexinfo # <<<<<<<<<<<<<< * assert len(cnts_block) == nblocks * for i in range(nblocks): */ if ((likely(PyTuple_CheckExact(__pyx_v_vertexinfo))) || (PyList_CheckExact(__pyx_v_vertexinfo))) { PyObject* sequence = __pyx_v_vertexinfo; #if !CYTHON_COMPILING_IN_PYPY Py_ssize_t size = Py_SIZE(sequence); #else Py_ssize_t size = PySequence_Size(sequence); #endif if (unlikely(size != 4)) { if (size > 4) __Pyx_RaiseTooManyValuesError(4); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 507, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_1 = PyTuple_GET_ITEM(sequence, 1); __pyx_t_3 = PyTuple_GET_ITEM(sequence, 2); __pyx_t_10 = PyTuple_GET_ITEM(sequence, 3); } else { __pyx_t_2 = PyList_GET_ITEM(sequence, 0); __pyx_t_1 = PyList_GET_ITEM(sequence, 1); __pyx_t_3 = PyList_GET_ITEM(sequence, 2); __pyx_t_10 = PyList_GET_ITEM(sequence, 3); } __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(__pyx_t_10); #else { Py_ssize_t i; PyObject** temps[4] = {&__pyx_t_2,&__pyx_t_1,&__pyx_t_3,&__pyx_t_10}; for (i=0; i < 4; i++) { PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) __PYX_ERR(0, 507, __pyx_L1_error) __Pyx_GOTREF(item); *(temps[i]) = item; } } #endif } else { Py_ssize_t index = -1; PyObject** temps[4] = {&__pyx_t_2,&__pyx_t_1,&__pyx_t_3,&__pyx_t_10}; __pyx_t_11 = PyObject_GetIter(__pyx_v_vertexinfo); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 507, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_12 = Py_TYPE(__pyx_t_11)->tp_iternext; for (index=0; index < 4; index++) { PyObject* item = __pyx_t_12(__pyx_t_11); if (unlikely(!item)) goto __pyx_L5_unpacking_failed; __Pyx_GOTREF(item); *(temps[index]) = item; } if (__Pyx_IternextUnpackEndCheck(__pyx_t_12(__pyx_t_11), 4) < 0) __PYX_ERR(0, 507, __pyx_L1_error) __pyx_t_12 = NULL; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; goto __pyx_L6_unpacking_done; __pyx_L5_unpacking_failed:; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_t_12 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 507, __pyx_L1_error) __pyx_L6_unpacking_done:; } __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 507, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_13 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_13 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 507, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_14 = __Pyx_PyInt_As_int(__pyx_t_10); if (unlikely((__pyx_t_14 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 507, __pyx_L1_error) __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_v_cnts_block = __pyx_t_2; __pyx_t_2 = 0; __pyx_v_11_glarea_es2_uidata.idx_debug = __pyx_t_5; __pyx_v_11_glarea_es2_uidata.cnt_debug = __pyx_t_13; __pyx_v_11_glarea_es2_uidata.cnt_pick = __pyx_t_14; /* "_glarea_es2.pyx":508 * uidata.vertexpointers[i] = vertexpointers[i] * cnts_block, uidata.idx_debug, uidata.cnt_debug, uidata.cnt_pick = vertexinfo * assert len(cnts_block) == nblocks # <<<<<<<<<<<<<< * for i in range(nblocks): * uidata.cnts_block[i] = cnts_block[i] */ #ifndef CYTHON_WITHOUT_ASSERTIONS if (unlikely(!Py_OptimizeFlag)) { __pyx_t_6 = PyObject_Length(__pyx_v_cnts_block); if (unlikely(__pyx_t_6 == -1)) __PYX_ERR(0, 508, __pyx_L1_error) __pyx_t_10 = PyInt_FromSsize_t(__pyx_t_6); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 508, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_3 = PyObject_RichCompare(__pyx_t_10, __pyx_v_nblocks, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 508, __pyx_L1_error) __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 508, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_4)) { PyErr_SetNone(PyExc_AssertionError); __PYX_ERR(0, 508, __pyx_L1_error) } } #endif /* "_glarea_es2.pyx":509 * cnts_block, uidata.idx_debug, uidata.cnt_debug, uidata.cnt_pick = vertexinfo * assert len(cnts_block) == nblocks * for i in range(nblocks): # <<<<<<<<<<<<<< * uidata.cnts_block[i] = cnts_block[i] * assert len(transformations) <= gldraw.MAX_TRANSFORMATIONS, len(transformations) */ __pyx_t_8 = __Pyx_PyInt_As_long(__pyx_v_nblocks); if (unlikely((__pyx_t_8 == (long)-1) && PyErr_Occurred())) __PYX_ERR(0, 509, __pyx_L1_error) for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_8; __pyx_t_14+=1) { __pyx_v_i = __pyx_t_14; /* "_glarea_es2.pyx":510 * assert len(cnts_block) == nblocks * for i in range(nblocks): * uidata.cnts_block[i] = cnts_block[i] # <<<<<<<<<<<<<< * assert len(transformations) <= gldraw.MAX_TRANSFORMATIONS, len(transformations) * uidata.transformations_count = len(transformations) */ __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_cnts_block, __pyx_v_i, int, 1, __Pyx_PyInt_From_int, 0, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 510, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_15 = __Pyx_PyInt_As_short(__pyx_t_3); if (unlikely((__pyx_t_15 == (short)-1) && PyErr_Occurred())) __PYX_ERR(0, 510, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; (__pyx_v_11_glarea_es2_uidata.cnts_block[__pyx_v_i]) = __pyx_t_15; } /* "_glarea_es2.pyx":511 * for i in range(nblocks): * uidata.cnts_block[i] = cnts_block[i] * assert len(transformations) <= gldraw.MAX_TRANSFORMATIONS, len(transformations) # <<<<<<<<<<<<<< * uidata.transformations_count = len(transformations) * for t in range(uidata.transformations_count): */ #ifndef CYTHON_WITHOUT_ASSERTIONS if (unlikely(!Py_OptimizeFlag)) { __pyx_t_6 = PyObject_Length(__pyx_v_transformations); if (unlikely(__pyx_t_6 == -1)) __PYX_ERR(0, 511, __pyx_L1_error) if (unlikely(!((__pyx_t_6 <= __pyx_e_11_gldraw_es2_MAX_TRANSFORMATIONS) != 0))) { __pyx_t_16 = PyObject_Length(__pyx_v_transformations); if (unlikely(__pyx_t_16 == -1)) __PYX_ERR(0, 511, __pyx_L1_error) __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_16); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 511, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 511, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_3); __pyx_t_3 = 0; PyErr_SetObject(PyExc_AssertionError, __pyx_t_10); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __PYX_ERR(0, 511, __pyx_L1_error) } } #endif /* "_glarea_es2.pyx":512 * uidata.cnts_block[i] = cnts_block[i] * assert len(transformations) <= gldraw.MAX_TRANSFORMATIONS, len(transformations) * uidata.transformations_count = len(transformations) # <<<<<<<<<<<<<< * for t in range(uidata.transformations_count): * for i in range(4): */ __pyx_t_6 = PyObject_Length(__pyx_v_transformations); if (unlikely(__pyx_t_6 == -1)) __PYX_ERR(0, 512, __pyx_L1_error) __pyx_v_11_glarea_es2_uidata.transformations_count = __pyx_t_6; /* "_glarea_es2.pyx":513 * assert len(transformations) <= gldraw.MAX_TRANSFORMATIONS, len(transformations) * uidata.transformations_count = len(transformations) * for t in range(uidata.transformations_count): # <<<<<<<<<<<<<< * for i in range(4): * for j in range(4): */ __pyx_t_14 = __pyx_v_11_glarea_es2_uidata.transformations_count; for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_14; __pyx_t_13+=1) { __pyx_v_t = __pyx_t_13; /* "_glarea_es2.pyx":514 * uidata.transformations_count = len(transformations) * for t in range(uidata.transformations_count): * for i in range(4): # <<<<<<<<<<<<<< * for j in range(4): * uidata.transformations[t][i][j] = float(transformations[t][i][j]) */ for (__pyx_t_5 = 0; __pyx_t_5 < 4; __pyx_t_5+=1) { __pyx_v_i = __pyx_t_5; /* "_glarea_es2.pyx":515 * for t in range(uidata.transformations_count): * for i in range(4): * for j in range(4): # <<<<<<<<<<<<<< * uidata.transformations[t][i][j] = float(transformations[t][i][j]) * uidata.data_changed = True */ for (__pyx_t_17 = 0; __pyx_t_17 < 4; __pyx_t_17+=1) { __pyx_v_j = __pyx_t_17; /* "_glarea_es2.pyx":516 * for i in range(4): * for j in range(4): * uidata.transformations[t][i][j] = float(transformations[t][i][j]) # <<<<<<<<<<<<<< * uidata.data_changed = True * */ __pyx_t_10 = __Pyx_GetItemInt(__pyx_v_transformations, __pyx_v_t, int, 1, __Pyx_PyInt_From_int, 0, 1, 1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 516, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_10, __pyx_v_i, int, 1, __Pyx_PyInt_From_int, 0, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 516, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_t_10 = __Pyx_GetItemInt(__pyx_t_3, __pyx_v_j, int, 1, __Pyx_PyInt_From_int, 0, 1, 1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 516, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_18 = __Pyx_PyObject_AsDouble(__pyx_t_10); if (unlikely(__pyx_t_18 == ((double)-1) && PyErr_Occurred())) __PYX_ERR(0, 516, __pyx_L1_error) __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; (((__pyx_v_11_glarea_es2_uidata.transformations[__pyx_v_t])[__pyx_v_i])[__pyx_v_j]) = __pyx_t_18; } } } /* "_glarea_es2.pyx":517 * for j in range(4): * uidata.transformations[t][i][j] = float(transformations[t][i][j]) * uidata.data_changed = True # <<<<<<<<<<<<<< * * def pydata_postsync(): */ __pyx_v_11_glarea_es2_uidata.data_changed = 1; /* "_glarea_es2.pyx":496 * uidata.animation_changed = 2 * * def set_data(nblocks, vertexdata, vertexpointers, vertexinfo, transformations): # <<<<<<<<<<<<<< * pydata_postsync() * cdef int t,i,j #px+ */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_10); __Pyx_XDECREF(__pyx_t_11); __Pyx_AddTraceback("_glarea_es2.set_data", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_cnts_block); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_glarea_es2.pyx":519 * uidata.data_changed = True * * def pydata_postsync(): # <<<<<<<<<<<<<< * global pydata_backed * if uidata.synced: */ /* Python wrapper */ static PyObject *__pyx_pw_11_glarea_es2_21pydata_postsync(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/ static PyMethodDef __pyx_mdef_11_glarea_es2_21pydata_postsync = {"pydata_postsync", (PyCFunction)__pyx_pw_11_glarea_es2_21pydata_postsync, METH_NOARGS, 0}; static PyObject *__pyx_pw_11_glarea_es2_21pydata_postsync(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("pydata_postsync (wrapper)", 0); __pyx_r = __pyx_pf_11_glarea_es2_20pydata_postsync(__pyx_self); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11_glarea_es2_20pydata_postsync(CYTHON_UNUSED PyObject *__pyx_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; __Pyx_RefNannySetupContext("pydata_postsync", 0); /* "_glarea_es2.pyx":521 * def pydata_postsync(): * global pydata_backed * if uidata.synced: # <<<<<<<<<<<<<< * pydata_backed = dict(pydata) * uidata.synced = False */ __pyx_t_1 = (__pyx_v_11_glarea_es2_uidata.synced != 0); if (__pyx_t_1) { /* "_glarea_es2.pyx":522 * global pydata_backed * if uidata.synced: * pydata_backed = dict(pydata) # <<<<<<<<<<<<<< * uidata.synced = False * */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 522, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 522, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)(&PyDict_Type)), __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 522, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (PyDict_SetItem(__pyx_d, __pyx_n_s_pydata_backed, __pyx_t_2) < 0) __PYX_ERR(0, 522, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_glarea_es2.pyx":523 * if uidata.synced: * pydata_backed = dict(pydata) * uidata.synced = False # <<<<<<<<<<<<<< * * def update_shader_version(shader_src): */ __pyx_v_11_glarea_es2_uidata.synced = 0; /* "_glarea_es2.pyx":521 * def pydata_postsync(): * global pydata_backed * if uidata.synced: # <<<<<<<<<<<<<< * pydata_backed = dict(pydata) * uidata.synced = False */ } /* "_glarea_es2.pyx":519 * uidata.data_changed = True * * def pydata_postsync(): # <<<<<<<<<<<<<< * global pydata_backed * if uidata.synced: */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("_glarea_es2.pydata_postsync", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_glarea_es2.pyx":525 * uidata.synced = False * * def update_shader_version(shader_src): # <<<<<<<<<<<<<< * assert shader_src.startswith(b'#version 120\n') * IF 'es2' == 'es2': #px/ */ /* Python wrapper */ static PyObject *__pyx_pw_11_glarea_es2_23update_shader_version(PyObject *__pyx_self, PyObject *__pyx_v_shader_src); /*proto*/ static PyMethodDef __pyx_mdef_11_glarea_es2_23update_shader_version = {"update_shader_version", (PyCFunction)__pyx_pw_11_glarea_es2_23update_shader_version, METH_O, 0}; static PyObject *__pyx_pw_11_glarea_es2_23update_shader_version(PyObject *__pyx_self, PyObject *__pyx_v_shader_src) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("update_shader_version (wrapper)", 0); __pyx_r = __pyx_pf_11_glarea_es2_22update_shader_version(__pyx_self, ((PyObject *)__pyx_v_shader_src)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11_glarea_es2_22update_shader_version(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_shader_src) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; int __pyx_t_3; __Pyx_RefNannySetupContext("update_shader_version", 0); __Pyx_INCREF(__pyx_v_shader_src); /* "_glarea_es2.pyx":526 * * def update_shader_version(shader_src): * assert shader_src.startswith(b'#version 120\n') # <<<<<<<<<<<<<< * IF 'es2' == 'es2': #px/ * #if False: */ #ifndef CYTHON_WITHOUT_ASSERTIONS if (unlikely(!Py_OptimizeFlag)) { __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_shader_src, __pyx_n_s_startswith); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 526, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 526, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 526, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_3)) { PyErr_SetNone(PyExc_AssertionError); __PYX_ERR(0, 526, __pyx_L1_error) } } #endif /* "_glarea_es2.pyx":529 * IF 'es2' == 'es2': #px/ * #if False: * shader_src = b'#version 100\n' + shader_src.split(b'\n', 1)[1] # <<<<<<<<<<<<<< * return shader_src * */ __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_shader_src, __pyx_n_s_split); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 529, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 529, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 529, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyNumber_Add(__pyx_kp_b_version_100, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 529, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF_SET(__pyx_v_shader_src, __pyx_t_1); __pyx_t_1 = 0; /* "_glarea_es2.pyx":530 * #if False: * shader_src = b'#version 100\n' + shader_src.split(b'\n', 1)[1] * return shader_src # <<<<<<<<<<<<<< * * def set_shaders(shader_vertsrc, shader_fragsrc): */ __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_shader_src); __pyx_r = __pyx_v_shader_src; goto __pyx_L0; /* "_glarea_es2.pyx":525 * uidata.synced = False * * def update_shader_version(shader_src): # <<<<<<<<<<<<<< * assert shader_src.startswith(b'#version 120\n') * IF 'es2' == 'es2': #px/ */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("_glarea_es2.update_shader_version", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_shader_src); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_glarea_es2.pyx":532 * return shader_src * * def set_shaders(shader_vertsrc, shader_fragsrc): # <<<<<<<<<<<<<< * pydata_postsync() * shader_vertsrc = update_shader_version(shader_vertsrc) */ /* Python wrapper */ static PyObject *__pyx_pw_11_glarea_es2_25set_shaders(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static PyMethodDef __pyx_mdef_11_glarea_es2_25set_shaders = {"set_shaders", (PyCFunction)__pyx_pw_11_glarea_es2_25set_shaders, METH_VARARGS|METH_KEYWORDS, 0}; static PyObject *__pyx_pw_11_glarea_es2_25set_shaders(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_shader_vertsrc = 0; PyObject *__pyx_v_shader_fragsrc = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("set_shaders (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_shader_vertsrc,&__pyx_n_s_shader_fragsrc,0}; PyObject* values[2] = {0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_shader_vertsrc)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_shader_fragsrc)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("set_shaders", 1, 2, 2, 1); __PYX_ERR(0, 532, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_shaders") < 0)) __PYX_ERR(0, 532, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); } __pyx_v_shader_vertsrc = values[0]; __pyx_v_shader_fragsrc = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("set_shaders", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 532, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("_glarea_es2.set_shaders", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11_glarea_es2_24set_shaders(__pyx_self, __pyx_v_shader_vertsrc, __pyx_v_shader_fragsrc); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11_glarea_es2_24set_shaders(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_shader_vertsrc, PyObject *__pyx_v_shader_fragsrc) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; char *__pyx_t_5; __Pyx_RefNannySetupContext("set_shaders", 0); __Pyx_INCREF(__pyx_v_shader_vertsrc); __Pyx_INCREF(__pyx_v_shader_fragsrc); /* "_glarea_es2.pyx":533 * * def set_shaders(shader_vertsrc, shader_fragsrc): * pydata_postsync() # <<<<<<<<<<<<<< * shader_vertsrc = update_shader_version(shader_vertsrc) * shader_fragsrc = update_shader_version(shader_fragsrc) */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata_postsync); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 533, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } if (__pyx_t_3) { __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 533, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 533, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_glarea_es2.pyx":534 * def set_shaders(shader_vertsrc, shader_fragsrc): * pydata_postsync() * shader_vertsrc = update_shader_version(shader_vertsrc) # <<<<<<<<<<<<<< * shader_fragsrc = update_shader_version(shader_fragsrc) * pydata['shader_vertsrc'] = shader_vertsrc */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_update_shader_version); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 534, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } if (!__pyx_t_3) { __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_shader_vertsrc); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 534, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_shader_vertsrc}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 534, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_shader_vertsrc}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 534, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 534, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL; __Pyx_INCREF(__pyx_v_shader_vertsrc); __Pyx_GIVEREF(__pyx_v_shader_vertsrc); PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_shader_vertsrc); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 534, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF_SET(__pyx_v_shader_vertsrc, __pyx_t_1); __pyx_t_1 = 0; /* "_glarea_es2.pyx":535 * pydata_postsync() * shader_vertsrc = update_shader_version(shader_vertsrc) * shader_fragsrc = update_shader_version(shader_fragsrc) # <<<<<<<<<<<<<< * pydata['shader_vertsrc'] = shader_vertsrc * uidata.shader_vertsrc = shader_vertsrc */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_update_shader_version); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 535, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } if (!__pyx_t_4) { __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_shader_fragsrc); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 535, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_shader_fragsrc}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 535, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_shader_fragsrc}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 535, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 535, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); __pyx_t_4 = NULL; __Pyx_INCREF(__pyx_v_shader_fragsrc); __Pyx_GIVEREF(__pyx_v_shader_fragsrc); PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_v_shader_fragsrc); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 535, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF_SET(__pyx_v_shader_fragsrc, __pyx_t_1); __pyx_t_1 = 0; /* "_glarea_es2.pyx":536 * shader_vertsrc = update_shader_version(shader_vertsrc) * shader_fragsrc = update_shader_version(shader_fragsrc) * pydata['shader_vertsrc'] = shader_vertsrc # <<<<<<<<<<<<<< * uidata.shader_vertsrc = shader_vertsrc * pydata['shader_fragsrc'] = shader_fragsrc */ __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 536, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (unlikely(PyObject_SetItem(__pyx_t_1, __pyx_n_u_shader_vertsrc, __pyx_v_shader_vertsrc) < 0)) __PYX_ERR(0, 536, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_glarea_es2.pyx":537 * shader_fragsrc = update_shader_version(shader_fragsrc) * pydata['shader_vertsrc'] = shader_vertsrc * uidata.shader_vertsrc = shader_vertsrc # <<<<<<<<<<<<<< * pydata['shader_fragsrc'] = shader_fragsrc * uidata.shader_fragsrc = shader_fragsrc */ __pyx_t_5 = __Pyx_PyObject_AsString(__pyx_v_shader_vertsrc); if (unlikely((!__pyx_t_5) && PyErr_Occurred())) __PYX_ERR(0, 537, __pyx_L1_error) __pyx_v_11_glarea_es2_uidata.shader_vertsrc = __pyx_t_5; /* "_glarea_es2.pyx":538 * pydata['shader_vertsrc'] = shader_vertsrc * uidata.shader_vertsrc = shader_vertsrc * pydata['shader_fragsrc'] = shader_fragsrc # <<<<<<<<<<<<<< * uidata.shader_fragsrc = shader_fragsrc * uidata.shaders_changed = True */ __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 538, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (unlikely(PyObject_SetItem(__pyx_t_1, __pyx_n_u_shader_fragsrc, __pyx_v_shader_fragsrc) < 0)) __PYX_ERR(0, 538, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_glarea_es2.pyx":539 * uidata.shader_vertsrc = shader_vertsrc * pydata['shader_fragsrc'] = shader_fragsrc * uidata.shader_fragsrc = shader_fragsrc # <<<<<<<<<<<<<< * uidata.shaders_changed = True * */ __pyx_t_5 = __Pyx_PyObject_AsString(__pyx_v_shader_fragsrc); if (unlikely((!__pyx_t_5) && PyErr_Occurred())) __PYX_ERR(0, 539, __pyx_L1_error) __pyx_v_11_glarea_es2_uidata.shader_fragsrc = __pyx_t_5; /* "_glarea_es2.pyx":540 * pydata['shader_fragsrc'] = shader_fragsrc * uidata.shader_fragsrc = shader_fragsrc * uidata.shaders_changed = True # <<<<<<<<<<<<<< * * def set_fixedshaders(fixedshaders): */ __pyx_v_11_glarea_es2_uidata.shaders_changed = 1; /* "_glarea_es2.pyx":532 * return shader_src * * def set_shaders(shader_vertsrc, shader_fragsrc): # <<<<<<<<<<<<<< * pydata_postsync() * shader_vertsrc = update_shader_version(shader_vertsrc) */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("_glarea_es2.set_shaders", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_shader_vertsrc); __Pyx_XDECREF(__pyx_v_shader_fragsrc); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_glarea_es2.pyx":542 * uidata.shaders_changed = True * * def set_fixedshaders(fixedshaders): # <<<<<<<<<<<<<< * pydata_postsync() * fixedshaders = [update_shader_version(s) for s in fixedshaders] */ /* Python wrapper */ static PyObject *__pyx_pw_11_glarea_es2_27set_fixedshaders(PyObject *__pyx_self, PyObject *__pyx_v_fixedshaders); /*proto*/ static PyMethodDef __pyx_mdef_11_glarea_es2_27set_fixedshaders = {"set_fixedshaders", (PyCFunction)__pyx_pw_11_glarea_es2_27set_fixedshaders, METH_O, 0}; static PyObject *__pyx_pw_11_glarea_es2_27set_fixedshaders(PyObject *__pyx_self, PyObject *__pyx_v_fixedshaders) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("set_fixedshaders (wrapper)", 0); __pyx_r = __pyx_pf_11_glarea_es2_26set_fixedshaders(__pyx_self, ((PyObject *)__pyx_v_fixedshaders)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11_glarea_es2_26set_fixedshaders(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_fixedshaders) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; Py_ssize_t __pyx_t_4; PyObject *(*__pyx_t_5)(PyObject *); PyObject *__pyx_t_6 = NULL; PyObject *__pyx_t_7 = NULL; PyObject *__pyx_t_8 = NULL; char *__pyx_t_9; int __pyx_t_10; __Pyx_RefNannySetupContext("set_fixedshaders", 0); __Pyx_INCREF(__pyx_v_fixedshaders); /* "_glarea_es2.pyx":543 * * def set_fixedshaders(fixedshaders): * pydata_postsync() # <<<<<<<<<<<<<< * fixedshaders = [update_shader_version(s) for s in fixedshaders] * pydata['fixedshaders'] = fixedshaders */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata_postsync); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 543, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } if (__pyx_t_3) { __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 543, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 543, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_glarea_es2.pyx":544 * def set_fixedshaders(fixedshaders): * pydata_postsync() * fixedshaders = [update_shader_version(s) for s in fixedshaders] # <<<<<<<<<<<<<< * pydata['fixedshaders'] = fixedshaders * uidata.pick_vertsrc = fixedshaders[0] */ { /* enter inner scope */ PyObject *__pyx_7genexpr__pyx_v_s = NULL; __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 544, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_1); if (likely(PyList_CheckExact(__pyx_v_fixedshaders)) || PyTuple_CheckExact(__pyx_v_fixedshaders)) { __pyx_t_2 = __pyx_v_fixedshaders; __Pyx_INCREF(__pyx_t_2); __pyx_t_4 = 0; __pyx_t_5 = NULL; } else { __pyx_t_4 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_fixedshaders); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 544, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 544, __pyx_L5_error) } for (;;) { if (likely(!__pyx_t_5)) { if (likely(PyList_CheckExact(__pyx_t_2))) { if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_2)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_3 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 544, __pyx_L5_error) #else __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 544, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_3); #endif } else { if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_2)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 544, __pyx_L5_error) #else __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 544, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_3); #endif } } else { __pyx_t_3 = __pyx_t_5(__pyx_t_2); if (unlikely(!__pyx_t_3)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 544, __pyx_L5_error) } break; } __Pyx_GOTREF(__pyx_t_3); } __Pyx_XDECREF_SET(__pyx_7genexpr__pyx_v_s, __pyx_t_3); __pyx_t_3 = 0; __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_update_shader_version); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 544, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); } } if (!__pyx_t_7) { __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_7genexpr__pyx_v_s); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 544, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_3); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_7genexpr__pyx_v_s}; __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 544, __pyx_L5_error) __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_3); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_7genexpr__pyx_v_s}; __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 544, __pyx_L5_error) __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_3); } else #endif { __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 544, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7); __pyx_t_7 = NULL; __Pyx_INCREF(__pyx_7genexpr__pyx_v_s); __Pyx_GIVEREF(__pyx_7genexpr__pyx_v_s); PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_7genexpr__pyx_v_s); __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 544, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_3))) __PYX_ERR(0, 544, __pyx_L5_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF(__pyx_7genexpr__pyx_v_s); goto __pyx_L8_exit_scope; __pyx_L5_error:; __Pyx_XDECREF(__pyx_7genexpr__pyx_v_s); goto __pyx_L1_error; __pyx_L8_exit_scope:; } /* exit inner scope */ __Pyx_DECREF_SET(__pyx_v_fixedshaders, __pyx_t_1); __pyx_t_1 = 0; /* "_glarea_es2.pyx":545 * pydata_postsync() * fixedshaders = [update_shader_version(s) for s in fixedshaders] * pydata['fixedshaders'] = fixedshaders # <<<<<<<<<<<<<< * uidata.pick_vertsrc = fixedshaders[0] * uidata.pick_fragsrc = fixedshaders[1] */ __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 545, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (unlikely(PyObject_SetItem(__pyx_t_1, __pyx_n_u_fixedshaders, __pyx_v_fixedshaders) < 0)) __PYX_ERR(0, 545, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_glarea_es2.pyx":546 * fixedshaders = [update_shader_version(s) for s in fixedshaders] * pydata['fixedshaders'] = fixedshaders * uidata.pick_vertsrc = fixedshaders[0] # <<<<<<<<<<<<<< * uidata.pick_fragsrc = fixedshaders[1] * if debug & DEBUG_DRAW: */ __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_fixedshaders, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 546, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_9 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_9) && PyErr_Occurred())) __PYX_ERR(0, 546, __pyx_L1_error) __pyx_v_11_glarea_es2_uidata.pick_vertsrc = __pyx_t_9; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_glarea_es2.pyx":547 * pydata['fixedshaders'] = fixedshaders * uidata.pick_vertsrc = fixedshaders[0] * uidata.pick_fragsrc = fixedshaders[1] # <<<<<<<<<<<<<< * if debug & DEBUG_DRAW: * uidata.hud_vertsrc = fixedshaders[2] */ __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_fixedshaders, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 547, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_9 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_9) && PyErr_Occurred())) __PYX_ERR(0, 547, __pyx_L1_error) __pyx_v_11_glarea_es2_uidata.pick_fragsrc = __pyx_t_9; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_glarea_es2.pyx":548 * uidata.pick_vertsrc = fixedshaders[0] * uidata.pick_fragsrc = fixedshaders[1] * if debug & DEBUG_DRAW: # <<<<<<<<<<<<<< * uidata.hud_vertsrc = fixedshaders[2] * uidata.hud_fragsrc = fixedshaders[1] */ __pyx_t_10 = ((__pyx_v_11_glarea_es2_debug & __pyx_e_11_glarea_es2_DEBUG_DRAW) != 0); if (__pyx_t_10) { /* "_glarea_es2.pyx":549 * uidata.pick_fragsrc = fixedshaders[1] * if debug & DEBUG_DRAW: * uidata.hud_vertsrc = fixedshaders[2] # <<<<<<<<<<<<<< * uidata.hud_fragsrc = fixedshaders[1] * */ __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_fixedshaders, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 549, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_9 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_9) && PyErr_Occurred())) __PYX_ERR(0, 549, __pyx_L1_error) __pyx_v_11_glarea_es2_uidata.hud_vertsrc = __pyx_t_9; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_glarea_es2.pyx":550 * if debug & DEBUG_DRAW: * uidata.hud_vertsrc = fixedshaders[2] * uidata.hud_fragsrc = fixedshaders[1] # <<<<<<<<<<<<<< * * ##pxm-FUNC PD nogil */ __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_fixedshaders, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 550, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_9 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_9) && PyErr_Occurred())) __PYX_ERR(0, 550, __pyx_L1_error) __pyx_v_11_glarea_es2_uidata.hud_fragsrc = __pyx_t_9; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_glarea_es2.pyx":548 * uidata.pick_vertsrc = fixedshaders[0] * uidata.pick_fragsrc = fixedshaders[1] * if debug & DEBUG_DRAW: # <<<<<<<<<<<<<< * uidata.hud_vertsrc = fixedshaders[2] * uidata.hud_fragsrc = fixedshaders[1] */ } /* "_glarea_es2.pyx":542 * uidata.shaders_changed = True * * def set_fixedshaders(fixedshaders): # <<<<<<<<<<<<<< * pydata_postsync() * fixedshaders = [update_shader_version(s) for s in fixedshaders] */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_8); __Pyx_AddTraceback("_glarea_es2.set_fixedshaders", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_fixedshaders); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_glarea_es2.pyx":553 * * ##pxm-FUNC PD nogil * cdef void sync_set_fixedshaders() nogil: # <<<<<<<<<<<<<< * renderdata.pick_vertsrc = uidata.pick_vertsrc * renderdata.pick_fragsrc = uidata.pick_fragsrc */ static void __pyx_f_11_glarea_es2_sync_set_fixedshaders(void) { char *__pyx_t_1; int __pyx_t_2; /* "_glarea_es2.pyx":554 * ##pxm-FUNC PD nogil * cdef void sync_set_fixedshaders() nogil: * renderdata.pick_vertsrc = uidata.pick_vertsrc # <<<<<<<<<<<<<< * renderdata.pick_fragsrc = uidata.pick_fragsrc * if debug & DEBUG_DRAW: */ __pyx_t_1 = __pyx_v_11_glarea_es2_uidata.pick_vertsrc; __pyx_v_11_glarea_es2_renderdata.pick_vertsrc = __pyx_t_1; /* "_glarea_es2.pyx":555 * cdef void sync_set_fixedshaders() nogil: * renderdata.pick_vertsrc = uidata.pick_vertsrc * renderdata.pick_fragsrc = uidata.pick_fragsrc # <<<<<<<<<<<<<< * if debug & DEBUG_DRAW: * renderdata.hud_vertsrc = uidata.hud_vertsrc */ __pyx_t_1 = __pyx_v_11_glarea_es2_uidata.pick_fragsrc; __pyx_v_11_glarea_es2_renderdata.pick_fragsrc = __pyx_t_1; /* "_glarea_es2.pyx":556 * renderdata.pick_vertsrc = uidata.pick_vertsrc * renderdata.pick_fragsrc = uidata.pick_fragsrc * if debug & DEBUG_DRAW: # <<<<<<<<<<<<<< * renderdata.hud_vertsrc = uidata.hud_vertsrc * renderdata.hud_fragsrc = uidata.hud_fragsrc */ __pyx_t_2 = ((__pyx_v_11_glarea_es2_debug & __pyx_e_11_glarea_es2_DEBUG_DRAW) != 0); if (__pyx_t_2) { /* "_glarea_es2.pyx":557 * renderdata.pick_fragsrc = uidata.pick_fragsrc * if debug & DEBUG_DRAW: * renderdata.hud_vertsrc = uidata.hud_vertsrc # <<<<<<<<<<<<<< * renderdata.hud_fragsrc = uidata.hud_fragsrc * */ __pyx_t_1 = __pyx_v_11_glarea_es2_uidata.hud_vertsrc; __pyx_v_11_glarea_es2_renderdata.hud_vertsrc = __pyx_t_1; /* "_glarea_es2.pyx":558 * if debug & DEBUG_DRAW: * renderdata.hud_vertsrc = uidata.hud_vertsrc * renderdata.hud_fragsrc = uidata.hud_fragsrc # <<<<<<<<<<<<<< * * def set_pick_position(x, y): */ __pyx_t_1 = __pyx_v_11_glarea_es2_uidata.hud_fragsrc; __pyx_v_11_glarea_es2_renderdata.hud_fragsrc = __pyx_t_1; /* "_glarea_es2.pyx":556 * renderdata.pick_vertsrc = uidata.pick_vertsrc * renderdata.pick_fragsrc = uidata.pick_fragsrc * if debug & DEBUG_DRAW: # <<<<<<<<<<<<<< * renderdata.hud_vertsrc = uidata.hud_vertsrc * renderdata.hud_fragsrc = uidata.hud_fragsrc */ } /* "_glarea_es2.pyx":553 * * ##pxm-FUNC PD nogil * cdef void sync_set_fixedshaders() nogil: # <<<<<<<<<<<<<< * renderdata.pick_vertsrc = uidata.pick_vertsrc * renderdata.pick_fragsrc = uidata.pick_fragsrc */ /* function exit code */ } /* "_glarea_es2.pyx":560 * renderdata.hud_fragsrc = uidata.hud_fragsrc * * def set_pick_position(x, y): # <<<<<<<<<<<<<< * uidata.pick_x = x * uidata.pick_y = y */ /* Python wrapper */ static PyObject *__pyx_pw_11_glarea_es2_29set_pick_position(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static PyMethodDef __pyx_mdef_11_glarea_es2_29set_pick_position = {"set_pick_position", (PyCFunction)__pyx_pw_11_glarea_es2_29set_pick_position, METH_VARARGS|METH_KEYWORDS, 0}; static PyObject *__pyx_pw_11_glarea_es2_29set_pick_position(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_x = 0; PyObject *__pyx_v_y = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("set_pick_position (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_y,0}; PyObject* values[2] = {0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("set_pick_position", 1, 2, 2, 1); __PYX_ERR(0, 560, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_pick_position") < 0)) __PYX_ERR(0, 560, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); } __pyx_v_x = values[0]; __pyx_v_y = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("set_pick_position", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 560, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("_glarea_es2.set_pick_position", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11_glarea_es2_28set_pick_position(__pyx_self, __pyx_v_x, __pyx_v_y); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11_glarea_es2_28set_pick_position(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_x, PyObject *__pyx_v_y) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; __Pyx_RefNannySetupContext("set_pick_position", 0); /* "_glarea_es2.pyx":561 * * def set_pick_position(x, y): * uidata.pick_x = x # <<<<<<<<<<<<<< * uidata.pick_y = y * */ __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_x); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 561, __pyx_L1_error) __pyx_v_11_glarea_es2_uidata.pick_x = __pyx_t_1; /* "_glarea_es2.pyx":562 * def set_pick_position(x, y): * uidata.pick_x = x * uidata.pick_y = y # <<<<<<<<<<<<<< * * ##pxm-FUNC PD nogil */ __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_y); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 562, __pyx_L1_error) __pyx_v_11_glarea_es2_uidata.pick_y = __pyx_t_1; /* "_glarea_es2.pyx":560 * renderdata.hud_fragsrc = uidata.hud_fragsrc * * def set_pick_position(x, y): # <<<<<<<<<<<<<< * uidata.pick_x = x * uidata.pick_y = y */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("_glarea_es2.set_pick_position", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_glarea_es2.pyx":565 * * ##pxm-FUNC PD nogil * cdef void sync_set_pick_position() nogil: # <<<<<<<<<<<<<< * renderdata.pick_x = uidata.pick_x * renderdata.pick_y = uidata.pick_y */ static void __pyx_f_11_glarea_es2_sync_set_pick_position(void) { int __pyx_t_1; /* "_glarea_es2.pyx":566 * ##pxm-FUNC PD nogil * cdef void sync_set_pick_position() nogil: * renderdata.pick_x = uidata.pick_x # <<<<<<<<<<<<<< * renderdata.pick_y = uidata.pick_y * */ __pyx_t_1 = __pyx_v_11_glarea_es2_uidata.pick_x; __pyx_v_11_glarea_es2_renderdata.pick_x = __pyx_t_1; /* "_glarea_es2.pyx":567 * cdef void sync_set_pick_position() nogil: * renderdata.pick_x = uidata.pick_x * renderdata.pick_y = uidata.pick_y # <<<<<<<<<<<<<< * * ##pxm-FUNC P */ __pyx_t_1 = __pyx_v_11_glarea_es2_uidata.pick_y; __pyx_v_11_glarea_es2_renderdata.pick_y = __pyx_t_1; /* "_glarea_es2.pyx":565 * * ##pxm-FUNC PD nogil * cdef void sync_set_pick_position() nogil: # <<<<<<<<<<<<<< * renderdata.pick_x = uidata.pick_x * renderdata.pick_y = uidata.pick_y */ /* function exit code */ } /* "_glarea_es2.pyx":570 * * ##pxm-FUNC P * cpdef set_atlas_data(int i, bytes data, int x, int w, int h): # <<<<<<<<<<<<<< * assert i < gldraw.MAX_FACES, (i, gldraw.MAX_FACES) * if i == 0: */ static PyObject *__pyx_pw_11_glarea_es2_31set_atlas_data(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static PyObject *__pyx_f_11_glarea_es2_set_atlas_data(int __pyx_v_i, PyObject *__pyx_v_data, int __pyx_v_x, int __pyx_v_w, int __pyx_v_h, CYTHON_UNUSED int __pyx_skip_dispatch) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; int __pyx_t_4; int __pyx_t_5; char *__pyx_t_6; __Pyx_RefNannySetupContext("set_atlas_data", 0); /* "_glarea_es2.pyx":571 * ##pxm-FUNC P * cpdef set_atlas_data(int i, bytes data, int x, int w, int h): * assert i < gldraw.MAX_FACES, (i, gldraw.MAX_FACES) # <<<<<<<<<<<<<< * if i == 0: * uipydata.atlasdata = [] */ #ifndef CYTHON_WITHOUT_ASSERTIONS if (unlikely(!Py_OptimizeFlag)) { if (unlikely(!((__pyx_v_i < __pyx_e_11_gldraw_es2_MAX_FACES) != 0))) { __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_i); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 571, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_e_11_gldraw_es2_MAX_FACES); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 571, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 571, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2); __pyx_t_1 = 0; __pyx_t_2 = 0; __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 571, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3); __pyx_t_3 = 0; PyErr_SetObject(PyExc_AssertionError, __pyx_t_2); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(0, 571, __pyx_L1_error) } } #endif /* "_glarea_es2.pyx":572 * cpdef set_atlas_data(int i, bytes data, int x, int w, int h): * assert i < gldraw.MAX_FACES, (i, gldraw.MAX_FACES) * if i == 0: # <<<<<<<<<<<<<< * uipydata.atlasdata = [] * uipydata.atlasdata.append(data) */ __pyx_t_4 = ((__pyx_v_i == 0) != 0); if (__pyx_t_4) { /* "_glarea_es2.pyx":573 * assert i < gldraw.MAX_FACES, (i, gldraw.MAX_FACES) * if i == 0: * uipydata.atlasdata = [] # <<<<<<<<<<<<<< * uipydata.atlasdata.append(data) * uidata.atlasdata[i].x = x */ __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 573, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_uipydata); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 573, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (__Pyx_PyObject_SetAttrStr(__pyx_t_3, __pyx_n_s_atlasdata, __pyx_t_2) < 0) __PYX_ERR(0, 573, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "_glarea_es2.pyx":572 * cpdef set_atlas_data(int i, bytes data, int x, int w, int h): * assert i < gldraw.MAX_FACES, (i, gldraw.MAX_FACES) * if i == 0: # <<<<<<<<<<<<<< * uipydata.atlasdata = [] * uipydata.atlasdata.append(data) */ } /* "_glarea_es2.pyx":574 * if i == 0: * uipydata.atlasdata = [] * uipydata.atlasdata.append(data) # <<<<<<<<<<<<<< * uidata.atlasdata[i].x = x * uidata.atlasdata[i].w = w */ __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_uipydata); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 574, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_atlasdata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 574, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_5 = __Pyx_PyObject_Append(__pyx_t_2, __pyx_v_data); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(0, 574, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_glarea_es2.pyx":575 * uipydata.atlasdata = [] * uipydata.atlasdata.append(data) * uidata.atlasdata[i].x = x # <<<<<<<<<<<<<< * uidata.atlasdata[i].w = w * uidata.atlasdata[i].h = h */ (__pyx_v_11_glarea_es2_uidata.atlasdata[__pyx_v_i]).x = __pyx_v_x; /* "_glarea_es2.pyx":576 * uipydata.atlasdata.append(data) * uidata.atlasdata[i].x = x * uidata.atlasdata[i].w = w # <<<<<<<<<<<<<< * uidata.atlasdata[i].h = h * uidata.atlasdata[i].data = data */ (__pyx_v_11_glarea_es2_uidata.atlasdata[__pyx_v_i]).w = __pyx_v_w; /* "_glarea_es2.pyx":577 * uidata.atlasdata[i].x = x * uidata.atlasdata[i].w = w * uidata.atlasdata[i].h = h # <<<<<<<<<<<<<< * uidata.atlasdata[i].data = data * uidata.atlaslen = i+1 */ (__pyx_v_11_glarea_es2_uidata.atlasdata[__pyx_v_i]).h = __pyx_v_h; /* "_glarea_es2.pyx":578 * uidata.atlasdata[i].w = w * uidata.atlasdata[i].h = h * uidata.atlasdata[i].data = data # <<<<<<<<<<<<<< * uidata.atlaslen = i+1 * */ __pyx_t_6 = __Pyx_PyObject_AsString(__pyx_v_data); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(0, 578, __pyx_L1_error) (__pyx_v_11_glarea_es2_uidata.atlasdata[__pyx_v_i]).data = __pyx_t_6; /* "_glarea_es2.pyx":579 * uidata.atlasdata[i].h = h * uidata.atlasdata[i].data = data * uidata.atlaslen = i+1 # <<<<<<<<<<<<<< * * ##pxm-FUNC PD nogil */ __pyx_v_11_glarea_es2_uidata.atlaslen = (__pyx_v_i + 1); /* "_glarea_es2.pyx":570 * * ##pxm-FUNC P * cpdef set_atlas_data(int i, bytes data, int x, int w, int h): # <<<<<<<<<<<<<< * assert i < gldraw.MAX_FACES, (i, gldraw.MAX_FACES) * if i == 0: */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("_glarea_es2.set_atlas_data", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* Python wrapper */ static PyObject *__pyx_pw_11_glarea_es2_31set_atlas_data(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static PyObject *__pyx_pw_11_glarea_es2_31set_atlas_data(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { int __pyx_v_i; PyObject *__pyx_v_data = 0; int __pyx_v_x; int __pyx_v_w; int __pyx_v_h; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("set_atlas_data (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,&__pyx_n_s_data,&__pyx_n_s_x,&__pyx_n_s_w,&__pyx_n_s_h,0}; PyObject* values[5] = {0,0,0,0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_i)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_data)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("set_atlas_data", 1, 5, 5, 1); __PYX_ERR(0, 570, __pyx_L3_error) } case 2: if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("set_atlas_data", 1, 5, 5, 2); __PYX_ERR(0, 570, __pyx_L3_error) } case 3: if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_w)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("set_atlas_data", 1, 5, 5, 3); __PYX_ERR(0, 570, __pyx_L3_error) } case 4: if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_h)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("set_atlas_data", 1, 5, 5, 4); __PYX_ERR(0, 570, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_atlas_data") < 0)) __PYX_ERR(0, 570, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 5) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); values[2] = PyTuple_GET_ITEM(__pyx_args, 2); values[3] = PyTuple_GET_ITEM(__pyx_args, 3); values[4] = PyTuple_GET_ITEM(__pyx_args, 4); } __pyx_v_i = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_i == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 570, __pyx_L3_error) __pyx_v_data = ((PyObject*)values[1]); __pyx_v_x = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 570, __pyx_L3_error) __pyx_v_w = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_w == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 570, __pyx_L3_error) __pyx_v_h = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_h == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 570, __pyx_L3_error) } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("set_atlas_data", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 570, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("_glarea_es2.set_atlas_data", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_data), (&PyBytes_Type), 1, "data", 1))) __PYX_ERR(0, 570, __pyx_L1_error) __pyx_r = __pyx_pf_11_glarea_es2_30set_atlas_data(__pyx_self, __pyx_v_i, __pyx_v_data, __pyx_v_x, __pyx_v_w, __pyx_v_h); /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11_glarea_es2_30set_atlas_data(CYTHON_UNUSED PyObject *__pyx_self, int __pyx_v_i, PyObject *__pyx_v_data, int __pyx_v_x, int __pyx_v_w, int __pyx_v_h) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("set_atlas_data", 0); __Pyx_XDECREF(__pyx_r); __pyx_t_1 = __pyx_f_11_glarea_es2_set_atlas_data(__pyx_v_i, __pyx_v_data, __pyx_v_x, __pyx_v_w, __pyx_v_h, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 570, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("_glarea_es2.set_atlas_data", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_glarea_es2.pyx":582 * * ##pxm-FUNC PD nogil * cdef void sync_set_atlas_data() nogil: # <<<<<<<<<<<<<< * cdef int i #px+ * for i in range(uidata.atlaslen): */ static void __pyx_f_11_glarea_es2_sync_set_atlas_data(void) { int __pyx_v_i; int __pyx_t_1; int __pyx_t_2; int __pyx_t_3; char *__pyx_t_4; /* "_glarea_es2.pyx":584 * cdef void sync_set_atlas_data() nogil: * cdef int i #px+ * for i in range(uidata.atlaslen): # <<<<<<<<<<<<<< * renderdata.atlasdata[i].x = uidata.atlasdata[i].x * renderdata.atlasdata[i].w = uidata.atlasdata[i].w */ __pyx_t_1 = __pyx_v_11_glarea_es2_uidata.atlaslen; for (__pyx_t_2 = 0; __pyx_t_2 < __pyx_t_1; __pyx_t_2+=1) { __pyx_v_i = __pyx_t_2; /* "_glarea_es2.pyx":585 * cdef int i #px+ * for i in range(uidata.atlaslen): * renderdata.atlasdata[i].x = uidata.atlasdata[i].x # <<<<<<<<<<<<<< * renderdata.atlasdata[i].w = uidata.atlasdata[i].w * renderdata.atlasdata[i].h = uidata.atlasdata[i].h */ __pyx_t_3 = (__pyx_v_11_glarea_es2_uidata.atlasdata[__pyx_v_i]).x; (__pyx_v_11_glarea_es2_renderdata.atlasdata[__pyx_v_i]).x = __pyx_t_3; /* "_glarea_es2.pyx":586 * for i in range(uidata.atlaslen): * renderdata.atlasdata[i].x = uidata.atlasdata[i].x * renderdata.atlasdata[i].w = uidata.atlasdata[i].w # <<<<<<<<<<<<<< * renderdata.atlasdata[i].h = uidata.atlasdata[i].h * renderdata.atlasdata[i].data = uidata.atlasdata[i].data */ __pyx_t_3 = (__pyx_v_11_glarea_es2_uidata.atlasdata[__pyx_v_i]).w; (__pyx_v_11_glarea_es2_renderdata.atlasdata[__pyx_v_i]).w = __pyx_t_3; /* "_glarea_es2.pyx":587 * renderdata.atlasdata[i].x = uidata.atlasdata[i].x * renderdata.atlasdata[i].w = uidata.atlasdata[i].w * renderdata.atlasdata[i].h = uidata.atlasdata[i].h # <<<<<<<<<<<<<< * renderdata.atlasdata[i].data = uidata.atlasdata[i].data * renderdata.atlaslen = uidata.atlaslen */ __pyx_t_3 = (__pyx_v_11_glarea_es2_uidata.atlasdata[__pyx_v_i]).h; (__pyx_v_11_glarea_es2_renderdata.atlasdata[__pyx_v_i]).h = __pyx_t_3; /* "_glarea_es2.pyx":588 * renderdata.atlasdata[i].w = uidata.atlasdata[i].w * renderdata.atlasdata[i].h = uidata.atlasdata[i].h * renderdata.atlasdata[i].data = uidata.atlasdata[i].data # <<<<<<<<<<<<<< * renderdata.atlaslen = uidata.atlaslen * */ __pyx_t_4 = (__pyx_v_11_glarea_es2_uidata.atlasdata[__pyx_v_i]).data; (__pyx_v_11_glarea_es2_renderdata.atlasdata[__pyx_v_i]).data = __pyx_t_4; } /* "_glarea_es2.pyx":589 * renderdata.atlasdata[i].h = uidata.atlasdata[i].h * renderdata.atlasdata[i].data = uidata.atlasdata[i].data * renderdata.atlaslen = uidata.atlaslen # <<<<<<<<<<<<<< * * ##pxm-FUNC PD nogil */ __pyx_t_1 = __pyx_v_11_glarea_es2_uidata.atlaslen; __pyx_v_11_glarea_es2_renderdata.atlaslen = __pyx_t_1; /* "_glarea_es2.pyx":582 * * ##pxm-FUNC PD nogil * cdef void sync_set_atlas_data() nogil: # <<<<<<<<<<<<<< * cdef int i #px+ * for i in range(uidata.atlaslen): */ /* function exit code */ } /* "_glarea_es2.pyx":592 * * ##pxm-FUNC PD nogil * cdef void sync() nogil: # <<<<<<<<<<<<<< * uidata.synced = True * if uidata.background_changed: */ static void __pyx_f_11_glarea_es2_sync(void) { int __pyx_t_1; float __pyx_t_2; char *__pyx_t_3; /* "_glarea_es2.pyx":593 * ##pxm-FUNC PD nogil * cdef void sync() nogil: * uidata.synced = True # <<<<<<<<<<<<<< * if uidata.background_changed: * renderdata.bg_red = uidata.bg_red */ __pyx_v_11_glarea_es2_uidata.synced = 1; /* "_glarea_es2.pyx":594 * cdef void sync() nogil: * uidata.synced = True * if uidata.background_changed: # <<<<<<<<<<<<<< * renderdata.bg_red = uidata.bg_red * renderdata.bg_green = uidata.bg_green */ __pyx_t_1 = (__pyx_v_11_glarea_es2_uidata.background_changed != 0); if (__pyx_t_1) { /* "_glarea_es2.pyx":595 * uidata.synced = True * if uidata.background_changed: * renderdata.bg_red = uidata.bg_red # <<<<<<<<<<<<<< * renderdata.bg_green = uidata.bg_green * renderdata.bg_blue = uidata.bg_blue */ __pyx_t_2 = __pyx_v_11_glarea_es2_uidata.bg_red; __pyx_v_11_glarea_es2_renderdata.bg_red = __pyx_t_2; /* "_glarea_es2.pyx":596 * if uidata.background_changed: * renderdata.bg_red = uidata.bg_red * renderdata.bg_green = uidata.bg_green # <<<<<<<<<<<<<< * renderdata.bg_blue = uidata.bg_blue * uidata.background_changed = False */ __pyx_t_2 = __pyx_v_11_glarea_es2_uidata.bg_green; __pyx_v_11_glarea_es2_renderdata.bg_green = __pyx_t_2; /* "_glarea_es2.pyx":597 * renderdata.bg_red = uidata.bg_red * renderdata.bg_green = uidata.bg_green * renderdata.bg_blue = uidata.bg_blue # <<<<<<<<<<<<<< * uidata.background_changed = False * if uidata.viewport_changed: */ __pyx_t_2 = __pyx_v_11_glarea_es2_uidata.bg_blue; __pyx_v_11_glarea_es2_renderdata.bg_blue = __pyx_t_2; /* "_glarea_es2.pyx":598 * renderdata.bg_green = uidata.bg_green * renderdata.bg_blue = uidata.bg_blue * uidata.background_changed = False # <<<<<<<<<<<<<< * if uidata.viewport_changed: * _sync_projection_matrix() */ __pyx_v_11_glarea_es2_uidata.background_changed = 0; /* "_glarea_es2.pyx":594 * cdef void sync() nogil: * uidata.synced = True * if uidata.background_changed: # <<<<<<<<<<<<<< * renderdata.bg_red = uidata.bg_red * renderdata.bg_green = uidata.bg_green */ } /* "_glarea_es2.pyx":599 * renderdata.bg_blue = uidata.bg_blue * uidata.background_changed = False * if uidata.viewport_changed: # <<<<<<<<<<<<<< * _sync_projection_matrix() * uidata.viewport_changed = False */ __pyx_t_1 = (__pyx_v_11_glarea_es2_uidata.viewport_changed != 0); if (__pyx_t_1) { /* "_glarea_es2.pyx":600 * uidata.background_changed = False * if uidata.viewport_changed: * _sync_projection_matrix() # <<<<<<<<<<<<<< * uidata.viewport_changed = False * if uidata.rotation_changed: */ __pyx_f_11_glarea_es2__sync_projection_matrix(); /* "_glarea_es2.pyx":601 * if uidata.viewport_changed: * _sync_projection_matrix() * uidata.viewport_changed = False # <<<<<<<<<<<<<< * if uidata.rotation_changed: * _sync_modelview_matrix_rotation() */ __pyx_v_11_glarea_es2_uidata.viewport_changed = 0; /* "_glarea_es2.pyx":599 * renderdata.bg_blue = uidata.bg_blue * uidata.background_changed = False * if uidata.viewport_changed: # <<<<<<<<<<<<<< * _sync_projection_matrix() * uidata.viewport_changed = False */ } /* "_glarea_es2.pyx":602 * _sync_projection_matrix() * uidata.viewport_changed = False * if uidata.rotation_changed: # <<<<<<<<<<<<<< * _sync_modelview_matrix_rotation() * uidata.rotation_changed = False */ __pyx_t_1 = (__pyx_v_11_glarea_es2_uidata.rotation_changed != 0); if (__pyx_t_1) { /* "_glarea_es2.pyx":603 * uidata.viewport_changed = False * if uidata.rotation_changed: * _sync_modelview_matrix_rotation() # <<<<<<<<<<<<<< * uidata.rotation_changed = False * if uidata.rotation_quat_changed: */ __pyx_f_11_glarea_es2__sync_modelview_matrix_rotation(); /* "_glarea_es2.pyx":604 * if uidata.rotation_changed: * _sync_modelview_matrix_rotation() * uidata.rotation_changed = False # <<<<<<<<<<<<<< * if uidata.rotation_quat_changed: * quat_to_matrix(renderdata.modelview_matrix, uidata.rotation_quat) */ __pyx_v_11_glarea_es2_uidata.rotation_changed = 0; /* "_glarea_es2.pyx":602 * _sync_projection_matrix() * uidata.viewport_changed = False * if uidata.rotation_changed: # <<<<<<<<<<<<<< * _sync_modelview_matrix_rotation() * uidata.rotation_changed = False */ } /* "_glarea_es2.pyx":605 * _sync_modelview_matrix_rotation() * uidata.rotation_changed = False * if uidata.rotation_quat_changed: # <<<<<<<<<<<<<< * quat_to_matrix(renderdata.modelview_matrix, uidata.rotation_quat) * uidata.rotation_quat_changed = False */ __pyx_t_1 = (__pyx_v_11_glarea_es2_uidata.rotation_quat_changed != 0); if (__pyx_t_1) { /* "_glarea_es2.pyx":606 * uidata.rotation_changed = False * if uidata.rotation_quat_changed: * quat_to_matrix(renderdata.modelview_matrix, uidata.rotation_quat) # <<<<<<<<<<<<<< * uidata.rotation_quat_changed = False * if uidata.frustum_changed: */ __pyx_f_11_glarea_es2_quat_to_matrix(__pyx_v_11_glarea_es2_renderdata.modelview_matrix, __pyx_v_11_glarea_es2_uidata.rotation_quat); /* "_glarea_es2.pyx":607 * if uidata.rotation_quat_changed: * quat_to_matrix(renderdata.modelview_matrix, uidata.rotation_quat) * uidata.rotation_quat_changed = False # <<<<<<<<<<<<<< * if uidata.frustum_changed: * _sync_modelview_matrix_translation() */ __pyx_v_11_glarea_es2_uidata.rotation_quat_changed = 0; /* "_glarea_es2.pyx":605 * _sync_modelview_matrix_rotation() * uidata.rotation_changed = False * if uidata.rotation_quat_changed: # <<<<<<<<<<<<<< * quat_to_matrix(renderdata.modelview_matrix, uidata.rotation_quat) * uidata.rotation_quat_changed = False */ } /* "_glarea_es2.pyx":608 * quat_to_matrix(renderdata.modelview_matrix, uidata.rotation_quat) * uidata.rotation_quat_changed = False * if uidata.frustum_changed: # <<<<<<<<<<<<<< * _sync_modelview_matrix_translation() * _sync_projection_matrix() */ __pyx_t_1 = (__pyx_v_11_glarea_es2_uidata.frustum_changed != 0); if (__pyx_t_1) { /* "_glarea_es2.pyx":609 * uidata.rotation_quat_changed = False * if uidata.frustum_changed: * _sync_modelview_matrix_translation() # <<<<<<<<<<<<<< * _sync_projection_matrix() * uidata.frustum_changed = False */ __pyx_f_11_glarea_es2__sync_modelview_matrix_translation(); /* "_glarea_es2.pyx":610 * if uidata.frustum_changed: * _sync_modelview_matrix_translation() * _sync_projection_matrix() # <<<<<<<<<<<<<< * uidata.frustum_changed = False * if uidata.multisample_changed: */ __pyx_f_11_glarea_es2__sync_projection_matrix(); /* "_glarea_es2.pyx":611 * _sync_modelview_matrix_translation() * _sync_projection_matrix() * uidata.frustum_changed = False # <<<<<<<<<<<<<< * if uidata.multisample_changed: * renderdata.multisample = uidata.multisample_changed - 1 */ __pyx_v_11_glarea_es2_uidata.frustum_changed = 0; /* "_glarea_es2.pyx":608 * quat_to_matrix(renderdata.modelview_matrix, uidata.rotation_quat) * uidata.rotation_quat_changed = False * if uidata.frustum_changed: # <<<<<<<<<<<<<< * _sync_modelview_matrix_translation() * _sync_projection_matrix() */ } /* "_glarea_es2.pyx":612 * _sync_projection_matrix() * uidata.frustum_changed = False * if uidata.multisample_changed: # <<<<<<<<<<<<<< * renderdata.multisample = uidata.multisample_changed - 1 * uidata.multisample_changed = 0 */ __pyx_t_1 = (__pyx_v_11_glarea_es2_uidata.multisample_changed != 0); if (__pyx_t_1) { /* "_glarea_es2.pyx":613 * uidata.frustum_changed = False * if uidata.multisample_changed: * renderdata.multisample = uidata.multisample_changed - 1 # <<<<<<<<<<<<<< * uidata.multisample_changed = 0 * if uidata.data_changed: */ __pyx_v_11_glarea_es2_renderdata.multisample = (__pyx_v_11_glarea_es2_uidata.multisample_changed - 1); /* "_glarea_es2.pyx":614 * if uidata.multisample_changed: * renderdata.multisample = uidata.multisample_changed - 1 * uidata.multisample_changed = 0 # <<<<<<<<<<<<<< * if uidata.data_changed: * gldraw.sync_vertexdata(uidata.vertexdatalen, uidata.vertexdata, uidata.vertexpointers) */ __pyx_v_11_glarea_es2_uidata.multisample_changed = 0; /* "_glarea_es2.pyx":612 * _sync_projection_matrix() * uidata.frustum_changed = False * if uidata.multisample_changed: # <<<<<<<<<<<<<< * renderdata.multisample = uidata.multisample_changed - 1 * uidata.multisample_changed = 0 */ } /* "_glarea_es2.pyx":615 * renderdata.multisample = uidata.multisample_changed - 1 * uidata.multisample_changed = 0 * if uidata.data_changed: # <<<<<<<<<<<<<< * gldraw.sync_vertexdata(uidata.vertexdatalen, uidata.vertexdata, uidata.vertexpointers) * gldraw.sync_blocks(uidata.nblocks, uidata.cnts_block, uidata.idx_debug, uidata.cnt_debug, uidata.cnt_pick) */ __pyx_t_1 = (__pyx_v_11_glarea_es2_uidata.data_changed != 0); if (__pyx_t_1) { /* "_glarea_es2.pyx":616 * uidata.multisample_changed = 0 * if uidata.data_changed: * gldraw.sync_vertexdata(uidata.vertexdatalen, uidata.vertexdata, uidata.vertexpointers) # <<<<<<<<<<<<<< * gldraw.sync_blocks(uidata.nblocks, uidata.cnts_block, uidata.idx_debug, uidata.cnt_debug, uidata.cnt_pick) * gldraw.sync_transformations(uidata.transformations_count, uidata.transformations) */ __pyx_f_11_gldraw_es2_sync_vertexdata(__pyx_v_11_glarea_es2_uidata.vertexdatalen, __pyx_v_11_glarea_es2_uidata.vertexdata, __pyx_v_11_glarea_es2_uidata.vertexpointers); /* "_glarea_es2.pyx":617 * if uidata.data_changed: * gldraw.sync_vertexdata(uidata.vertexdatalen, uidata.vertexdata, uidata.vertexpointers) * gldraw.sync_blocks(uidata.nblocks, uidata.cnts_block, uidata.idx_debug, uidata.cnt_debug, uidata.cnt_pick) # <<<<<<<<<<<<<< * gldraw.sync_transformations(uidata.transformations_count, uidata.transformations) * uidata.data_changed = False */ __pyx_f_11_gldraw_es2_sync_blocks(__pyx_v_11_glarea_es2_uidata.nblocks, __pyx_v_11_glarea_es2_uidata.cnts_block, __pyx_v_11_glarea_es2_uidata.idx_debug, __pyx_v_11_glarea_es2_uidata.cnt_debug, __pyx_v_11_glarea_es2_uidata.cnt_pick); /* "_glarea_es2.pyx":618 * gldraw.sync_vertexdata(uidata.vertexdatalen, uidata.vertexdata, uidata.vertexpointers) * gldraw.sync_blocks(uidata.nblocks, uidata.cnts_block, uidata.idx_debug, uidata.cnt_debug, uidata.cnt_pick) * gldraw.sync_transformations(uidata.transformations_count, uidata.transformations) # <<<<<<<<<<<<<< * uidata.data_changed = False * if uidata.transformation_changed: */ __pyx_f_11_gldraw_es2_sync_transformations(__pyx_v_11_glarea_es2_uidata.transformations_count, __pyx_v_11_glarea_es2_uidata.transformations); /* "_glarea_es2.pyx":619 * gldraw.sync_blocks(uidata.nblocks, uidata.cnts_block, uidata.idx_debug, uidata.cnt_debug, uidata.cnt_pick) * gldraw.sync_transformations(uidata.transformations_count, uidata.transformations) * uidata.data_changed = False # <<<<<<<<<<<<<< * if uidata.transformation_changed: * gldraw.sync_block_transformations(uidata.transformation_blocks) */ __pyx_v_11_glarea_es2_uidata.data_changed = 0; /* "_glarea_es2.pyx":615 * renderdata.multisample = uidata.multisample_changed - 1 * uidata.multisample_changed = 0 * if uidata.data_changed: # <<<<<<<<<<<<<< * gldraw.sync_vertexdata(uidata.vertexdatalen, uidata.vertexdata, uidata.vertexpointers) * gldraw.sync_blocks(uidata.nblocks, uidata.cnts_block, uidata.idx_debug, uidata.cnt_debug, uidata.cnt_pick) */ } /* "_glarea_es2.pyx":620 * gldraw.sync_transformations(uidata.transformations_count, uidata.transformations) * uidata.data_changed = False * if uidata.transformation_changed: # <<<<<<<<<<<<<< * gldraw.sync_block_transformations(uidata.transformation_blocks) * uidata.transformation_changed = False */ __pyx_t_1 = (__pyx_v_11_glarea_es2_uidata.transformation_changed != 0); if (__pyx_t_1) { /* "_glarea_es2.pyx":621 * uidata.data_changed = False * if uidata.transformation_changed: * gldraw.sync_block_transformations(uidata.transformation_blocks) # <<<<<<<<<<<<<< * uidata.transformation_changed = False * if uidata.animation_changed == 2: */ __pyx_f_11_gldraw_es2_sync_block_transformations(__pyx_v_11_glarea_es2_uidata.transformation_blocks); /* "_glarea_es2.pyx":622 * if uidata.transformation_changed: * gldraw.sync_block_transformations(uidata.transformation_blocks) * uidata.transformation_changed = False # <<<<<<<<<<<<<< * if uidata.animation_changed == 2: * gldraw.sync_animation_next(uidata.angle, uidata.rotation_x, uidata.rotation_y, uidata.rotation_z) */ __pyx_v_11_glarea_es2_uidata.transformation_changed = 0; /* "_glarea_es2.pyx":620 * gldraw.sync_transformations(uidata.transformations_count, uidata.transformations) * uidata.data_changed = False * if uidata.transformation_changed: # <<<<<<<<<<<<<< * gldraw.sync_block_transformations(uidata.transformation_blocks) * uidata.transformation_changed = False */ } /* "_glarea_es2.pyx":623 * gldraw.sync_block_transformations(uidata.transformation_blocks) * uidata.transformation_changed = False * if uidata.animation_changed == 2: # <<<<<<<<<<<<<< * gldraw.sync_animation_next(uidata.angle, uidata.rotation_x, uidata.rotation_y, uidata.rotation_z) * uidata.animation_changed = 0 */ switch (__pyx_v_11_glarea_es2_uidata.animation_changed) { case 2: /* "_glarea_es2.pyx":624 * uidata.transformation_changed = False * if uidata.animation_changed == 2: * gldraw.sync_animation_next(uidata.angle, uidata.rotation_x, uidata.rotation_y, uidata.rotation_z) # <<<<<<<<<<<<<< * uidata.animation_changed = 0 * elif uidata.animation_changed == 1: */ __pyx_f_11_gldraw_es2_sync_animation_next(__pyx_v_11_glarea_es2_uidata.angle, __pyx_v_11_glarea_es2_uidata.rotation_x, __pyx_v_11_glarea_es2_uidata.rotation_y, __pyx_v_11_glarea_es2_uidata.rotation_z); /* "_glarea_es2.pyx":625 * if uidata.animation_changed == 2: * gldraw.sync_animation_next(uidata.angle, uidata.rotation_x, uidata.rotation_y, uidata.rotation_z) * uidata.animation_changed = 0 # <<<<<<<<<<<<<< * elif uidata.animation_changed == 1: * gldraw.sync_animation_start(uidata.animation_blocks_count, uidata.animation_blocks) */ __pyx_v_11_glarea_es2_uidata.animation_changed = 0; /* "_glarea_es2.pyx":623 * gldraw.sync_block_transformations(uidata.transformation_blocks) * uidata.transformation_changed = False * if uidata.animation_changed == 2: # <<<<<<<<<<<<<< * gldraw.sync_animation_next(uidata.angle, uidata.rotation_x, uidata.rotation_y, uidata.rotation_z) * uidata.animation_changed = 0 */ break; /* "_glarea_es2.pyx":626 * gldraw.sync_animation_next(uidata.angle, uidata.rotation_x, uidata.rotation_y, uidata.rotation_z) * uidata.animation_changed = 0 * elif uidata.animation_changed == 1: # <<<<<<<<<<<<<< * gldraw.sync_animation_start(uidata.animation_blocks_count, uidata.animation_blocks) * uidata.animation_changed = 0 */ case 1: /* "_glarea_es2.pyx":627 * uidata.animation_changed = 0 * elif uidata.animation_changed == 1: * gldraw.sync_animation_start(uidata.animation_blocks_count, uidata.animation_blocks) # <<<<<<<<<<<<<< * uidata.animation_changed = 0 * if uidata.shaders_changed: */ __pyx_f_11_gldraw_es2_sync_animation_start(__pyx_v_11_glarea_es2_uidata.animation_blocks_count, __pyx_v_11_glarea_es2_uidata.animation_blocks); /* "_glarea_es2.pyx":628 * elif uidata.animation_changed == 1: * gldraw.sync_animation_start(uidata.animation_blocks_count, uidata.animation_blocks) * uidata.animation_changed = 0 # <<<<<<<<<<<<<< * if uidata.shaders_changed: * renderdata.shader_changed = True */ __pyx_v_11_glarea_es2_uidata.animation_changed = 0; /* "_glarea_es2.pyx":626 * gldraw.sync_animation_next(uidata.angle, uidata.rotation_x, uidata.rotation_y, uidata.rotation_z) * uidata.animation_changed = 0 * elif uidata.animation_changed == 1: # <<<<<<<<<<<<<< * gldraw.sync_animation_start(uidata.animation_blocks_count, uidata.animation_blocks) * uidata.animation_changed = 0 */ break; default: break; } /* "_glarea_es2.pyx":629 * gldraw.sync_animation_start(uidata.animation_blocks_count, uidata.animation_blocks) * uidata.animation_changed = 0 * if uidata.shaders_changed: # <<<<<<<<<<<<<< * renderdata.shader_changed = True * renderdata.shader_vertsrc = uidata.shader_vertsrc */ __pyx_t_1 = (__pyx_v_11_glarea_es2_uidata.shaders_changed != 0); if (__pyx_t_1) { /* "_glarea_es2.pyx":630 * uidata.animation_changed = 0 * if uidata.shaders_changed: * renderdata.shader_changed = True # <<<<<<<<<<<<<< * renderdata.shader_vertsrc = uidata.shader_vertsrc * renderdata.shader_fragsrc = uidata.shader_fragsrc */ __pyx_v_11_glarea_es2_renderdata.shader_changed = 1; /* "_glarea_es2.pyx":631 * if uidata.shaders_changed: * renderdata.shader_changed = True * renderdata.shader_vertsrc = uidata.shader_vertsrc # <<<<<<<<<<<<<< * renderdata.shader_fragsrc = uidata.shader_fragsrc * uidata.shaders_changed = False */ __pyx_t_3 = __pyx_v_11_glarea_es2_uidata.shader_vertsrc; __pyx_v_11_glarea_es2_renderdata.shader_vertsrc = __pyx_t_3; /* "_glarea_es2.pyx":632 * renderdata.shader_changed = True * renderdata.shader_vertsrc = uidata.shader_vertsrc * renderdata.shader_fragsrc = uidata.shader_fragsrc # <<<<<<<<<<<<<< * uidata.shaders_changed = False * */ __pyx_t_3 = __pyx_v_11_glarea_es2_uidata.shader_fragsrc; __pyx_v_11_glarea_es2_renderdata.shader_fragsrc = __pyx_t_3; /* "_glarea_es2.pyx":633 * renderdata.shader_vertsrc = uidata.shader_vertsrc * renderdata.shader_fragsrc = uidata.shader_fragsrc * uidata.shaders_changed = False # <<<<<<<<<<<<<< * * ### GL state */ __pyx_v_11_glarea_es2_uidata.shaders_changed = 0; /* "_glarea_es2.pyx":629 * gldraw.sync_animation_start(uidata.animation_blocks_count, uidata.animation_blocks) * uidata.animation_changed = 0 * if uidata.shaders_changed: # <<<<<<<<<<<<<< * renderdata.shader_changed = True * renderdata.shader_vertsrc = uidata.shader_vertsrc */ } /* "_glarea_es2.pyx":592 * * ##pxm-FUNC PD nogil * cdef void sync() nogil: # <<<<<<<<<<<<<< * uidata.synced = True * if uidata.background_changed: */ /* function exit code */ } /* "_glarea_es2.pyx":638 * * ##pxm-FUNC P nogil * cdef void _gl_print_string(char *msg, GLenum name) nogil: # <<<<<<<<<<<<<< * printf('%s %s\n', msg, glGetString(name)) #px/ * #printf('%s %s\n', msg, glGetString(name)) */ static void __pyx_f_11_glarea_es2__gl_print_string(char *__pyx_v_msg, GLenum __pyx_v_name) { /* "_glarea_es2.pyx":639 * ##pxm-FUNC P nogil * cdef void _gl_print_string(char *msg, GLenum name) nogil: * printf('%s %s\n', msg, glGetString(name)) #px/ # <<<<<<<<<<<<<< * #printf('%s %s\n', msg, glGetString(name)) * */ printf(((char const *)"%s %s\n"), __pyx_v_msg, ((char *)glGetString(__pyx_v_name))); /* "_glarea_es2.pyx":638 * * ##pxm-FUNC P nogil * cdef void _gl_print_string(char *msg, GLenum name) nogil: # <<<<<<<<<<<<<< * printf('%s %s\n', msg, glGetString(name)) #px/ * #printf('%s %s\n', msg, glGetString(name)) */ /* function exit code */ } /* "_glarea_es2.pyx":643 * * ##pxm-FUNC P nogil * cdef void _gl_print_float(char *msg, GLenum name) nogil: # <<<<<<<<<<<<<< * cdef GLfloat i #px+ * glGetFloatv(name, &i) #px/ */ static void __pyx_f_11_glarea_es2__gl_print_float(char *__pyx_v_msg, GLenum __pyx_v_name) { GLfloat __pyx_v_i; /* "_glarea_es2.pyx":645 * cdef void _gl_print_float(char *msg, GLenum name) nogil: * cdef GLfloat i #px+ * glGetFloatv(name, &i) #px/ # <<<<<<<<<<<<<< * #i = glGetFloatv(name) * printf('%s %f\n', msg, i) */ glGetFloatv(__pyx_v_name, (&__pyx_v_i)); /* "_glarea_es2.pyx":647 * glGetFloatv(name, &i) #px/ * #i = glGetFloatv(name) * printf('%s %f\n', msg, i) # <<<<<<<<<<<<<< * * ##pxm-FUNC P nogil */ printf(((char const *)"%s %f\n"), __pyx_v_msg, __pyx_v_i); /* "_glarea_es2.pyx":643 * * ##pxm-FUNC P nogil * cdef void _gl_print_float(char *msg, GLenum name) nogil: # <<<<<<<<<<<<<< * cdef GLfloat i #px+ * glGetFloatv(name, &i) #px/ */ /* function exit code */ } /* "_glarea_es2.pyx":650 * * ##pxm-FUNC P nogil * cdef void _gl_print_integer(char *msg, GLenum name) nogil: # <<<<<<<<<<<<<< * cdef GLint i #px+ * glGetIntegerv(name, &i) #px/ */ static void __pyx_f_11_glarea_es2__gl_print_integer(char *__pyx_v_msg, GLenum __pyx_v_name) { GLint __pyx_v_i; /* "_glarea_es2.pyx":652 * cdef void _gl_print_integer(char *msg, GLenum name) nogil: * cdef GLint i #px+ * glGetIntegerv(name, &i) #px/ # <<<<<<<<<<<<<< * #i = glGetIntegerv(name) * printf('%s %d\n', msg, i) */ glGetIntegerv(__pyx_v_name, (&__pyx_v_i)); /* "_glarea_es2.pyx":654 * glGetIntegerv(name, &i) #px/ * #i = glGetIntegerv(name) * printf('%s %d\n', msg, i) # <<<<<<<<<<<<<< * * ##pxm-FUNC P nogil */ printf(((char const *)"%s %d\n"), __pyx_v_msg, __pyx_v_i); /* "_glarea_es2.pyx":650 * * ##pxm-FUNC P nogil * cdef void _gl_print_integer(char *msg, GLenum name) nogil: # <<<<<<<<<<<<<< * cdef GLint i #px+ * glGetIntegerv(name, &i) #px/ */ /* function exit code */ } /* "_glarea_es2.pyx":657 * * ##pxm-FUNC P nogil * cdef void _gl_print_bool(char *msg, GLenum name) nogil: # <<<<<<<<<<<<<< * cdef GLboolean i #px+ * glGetBooleanv(name, &i) #px+ */ static void __pyx_f_11_glarea_es2__gl_print_bool(char *__pyx_v_msg, GLenum __pyx_v_name) { GLboolean __pyx_v_i; /* "_glarea_es2.pyx":659 * cdef void _gl_print_bool(char *msg, GLenum name) nogil: * cdef GLboolean i #px+ * glGetBooleanv(name, &i) #px+ # <<<<<<<<<<<<<< * printf('%s %d\n', msg, i) #px/ * #printf('%s %d\n', msg, glGetBooleanv(name)) */ glGetBooleanv(__pyx_v_name, (&__pyx_v_i)); /* "_glarea_es2.pyx":660 * cdef GLboolean i #px+ * glGetBooleanv(name, &i) #px+ * printf('%s %d\n', msg, i) #px/ # <<<<<<<<<<<<<< * #printf('%s %d\n', msg, glGetBooleanv(name)) * */ printf(((char const *)"%s %d\n"), __pyx_v_msg, ((int)__pyx_v_i)); /* "_glarea_es2.pyx":657 * * ##pxm-FUNC P nogil * cdef void _gl_print_bool(char *msg, GLenum name) nogil: # <<<<<<<<<<<<<< * cdef GLboolean i #px+ * glGetBooleanv(name, &i) #px+ */ /* function exit code */ } /* "_glarea_es2.pyx":664 * * ##pxm-FUNC PD nogil * cdef void gl_init() nogil: # <<<<<<<<<<<<<< * if debug & DEBUG_MSGGL: * puts('GL Strings:') */ static void __pyx_f_11_glarea_es2_gl_init(void) { int __pyx_t_1; /* "_glarea_es2.pyx":665 * ##pxm-FUNC PD nogil * cdef void gl_init() nogil: * if debug & DEBUG_MSGGL: # <<<<<<<<<<<<<< * puts('GL Strings:') * _gl_print_string(' GL Vendor:', GL_VENDOR) */ __pyx_t_1 = ((__pyx_v_11_glarea_es2_debug & __pyx_e_11_glarea_es2_DEBUG_MSGGL) != 0); if (__pyx_t_1) { /* "_glarea_es2.pyx":666 * cdef void gl_init() nogil: * if debug & DEBUG_MSGGL: * puts('GL Strings:') # <<<<<<<<<<<<<< * _gl_print_string(' GL Vendor:', GL_VENDOR) * _gl_print_string(' GL Renderer:', GL_RENDERER) */ puts(((char const *)"GL Strings:")); /* "_glarea_es2.pyx":667 * if debug & DEBUG_MSGGL: * puts('GL Strings:') * _gl_print_string(' GL Vendor:', GL_VENDOR) # <<<<<<<<<<<<<< * _gl_print_string(' GL Renderer:', GL_RENDERER) * _gl_print_string(' GL Version:', GL_VERSION) */ __pyx_f_11_glarea_es2__gl_print_string(((char *)" GL Vendor:"), GL_VENDOR); /* "_glarea_es2.pyx":668 * puts('GL Strings:') * _gl_print_string(' GL Vendor:', GL_VENDOR) * _gl_print_string(' GL Renderer:', GL_RENDERER) # <<<<<<<<<<<<<< * _gl_print_string(' GL Version:', GL_VERSION) * _gl_print_string(' GL Shading Language Version:', GL_SHADING_LANGUAGE_VERSION) */ __pyx_f_11_glarea_es2__gl_print_string(((char *)" GL Renderer:"), GL_RENDERER); /* "_glarea_es2.pyx":669 * _gl_print_string(' GL Vendor:', GL_VENDOR) * _gl_print_string(' GL Renderer:', GL_RENDERER) * _gl_print_string(' GL Version:', GL_VERSION) # <<<<<<<<<<<<<< * _gl_print_string(' GL Shading Language Version:', GL_SHADING_LANGUAGE_VERSION) * #_gl_print_string(' GL Extensions:', GL_EXTENSIONS) */ __pyx_f_11_glarea_es2__gl_print_string(((char *)" GL Version:"), GL_VERSION); /* "_glarea_es2.pyx":670 * _gl_print_string(' GL Renderer:', GL_RENDERER) * _gl_print_string(' GL Version:', GL_VERSION) * _gl_print_string(' GL Shading Language Version:', GL_SHADING_LANGUAGE_VERSION) # <<<<<<<<<<<<<< * #_gl_print_string(' GL Extensions:', GL_EXTENSIONS) * _gl_print_integer(' GL_SAMPLE_BUFFERS:', GL_SAMPLE_BUFFERS) */ __pyx_f_11_glarea_es2__gl_print_string(((char *)" GL Shading Language Version:"), GL_SHADING_LANGUAGE_VERSION); /* "_glarea_es2.pyx":672 * _gl_print_string(' GL Shading Language Version:', GL_SHADING_LANGUAGE_VERSION) * #_gl_print_string(' GL Extensions:', GL_EXTENSIONS) * _gl_print_integer(' GL_SAMPLE_BUFFERS:', GL_SAMPLE_BUFFERS) # <<<<<<<<<<<<<< * _gl_print_float(' GL_SAMPLE_COVERAGE_VALUE:', GL_SAMPLE_COVERAGE_VALUE) * _gl_print_bool(' GL_SAMPLE_COVERAGE_INVERT:', GL_SAMPLE_COVERAGE_INVERT) */ __pyx_f_11_glarea_es2__gl_print_integer(((char *)" GL_SAMPLE_BUFFERS:"), GL_SAMPLE_BUFFERS); /* "_glarea_es2.pyx":673 * #_gl_print_string(' GL Extensions:', GL_EXTENSIONS) * _gl_print_integer(' GL_SAMPLE_BUFFERS:', GL_SAMPLE_BUFFERS) * _gl_print_float(' GL_SAMPLE_COVERAGE_VALUE:', GL_SAMPLE_COVERAGE_VALUE) # <<<<<<<<<<<<<< * _gl_print_bool(' GL_SAMPLE_COVERAGE_INVERT:', GL_SAMPLE_COVERAGE_INVERT) * _gl_print_integer(' GL_SAMPLES:', GL_SAMPLES) */ __pyx_f_11_glarea_es2__gl_print_float(((char *)" GL_SAMPLE_COVERAGE_VALUE:"), GL_SAMPLE_COVERAGE_VALUE); /* "_glarea_es2.pyx":674 * _gl_print_integer(' GL_SAMPLE_BUFFERS:', GL_SAMPLE_BUFFERS) * _gl_print_float(' GL_SAMPLE_COVERAGE_VALUE:', GL_SAMPLE_COVERAGE_VALUE) * _gl_print_bool(' GL_SAMPLE_COVERAGE_INVERT:', GL_SAMPLE_COVERAGE_INVERT) # <<<<<<<<<<<<<< * _gl_print_integer(' GL_SAMPLES:', GL_SAMPLES) * IF 'es2' == 'ogl': #px/ */ __pyx_f_11_glarea_es2__gl_print_bool(((char *)" GL_SAMPLE_COVERAGE_INVERT:"), GL_SAMPLE_COVERAGE_INVERT); /* "_glarea_es2.pyx":675 * _gl_print_float(' GL_SAMPLE_COVERAGE_VALUE:', GL_SAMPLE_COVERAGE_VALUE) * _gl_print_bool(' GL_SAMPLE_COVERAGE_INVERT:', GL_SAMPLE_COVERAGE_INVERT) * _gl_print_integer(' GL_SAMPLES:', GL_SAMPLES) # <<<<<<<<<<<<<< * IF 'es2' == 'ogl': #px/ * #if True: */ __pyx_f_11_glarea_es2__gl_print_integer(((char *)" GL_SAMPLES:"), GL_SAMPLES); /* "_glarea_es2.pyx":681 * #print(' GL_SAMPLE_ALPHA_TO_COVERAGE:', glIsEnabled(GL_SAMPLE_ALPHA_TO_COVERAGE)) * #print(' GL_SAMPLE_COVERAGE:', glIsEnabled(GL_SAMPLE_COVERAGE)) * _gl_print_integer(' GL_MAX_VERTEX_ATTRIBS:', GL_MAX_VERTEX_ATTRIBS) # <<<<<<<<<<<<<< * _gl_print_integer(' GL_MAX_TEXTURE_SIZE:', GL_MAX_TEXTURE_SIZE) * gldraw.gl_init_buffers() */ __pyx_f_11_glarea_es2__gl_print_integer(((char *)" GL_MAX_VERTEX_ATTRIBS:"), GL_MAX_VERTEX_ATTRIBS); /* "_glarea_es2.pyx":682 * #print(' GL_SAMPLE_COVERAGE:', glIsEnabled(GL_SAMPLE_COVERAGE)) * _gl_print_integer(' GL_MAX_VERTEX_ATTRIBS:', GL_MAX_VERTEX_ATTRIBS) * _gl_print_integer(' GL_MAX_TEXTURE_SIZE:', GL_MAX_TEXTURE_SIZE) # <<<<<<<<<<<<<< * gldraw.gl_init_buffers() * if debug & DEBUG_DRAW: */ __pyx_f_11_glarea_es2__gl_print_integer(((char *)" GL_MAX_TEXTURE_SIZE:"), GL_MAX_TEXTURE_SIZE); /* "_glarea_es2.pyx":665 * ##pxm-FUNC PD nogil * cdef void gl_init() nogil: * if debug & DEBUG_MSGGL: # <<<<<<<<<<<<<< * puts('GL Strings:') * _gl_print_string(' GL Vendor:', GL_VENDOR) */ } /* "_glarea_es2.pyx":683 * _gl_print_integer(' GL_MAX_VERTEX_ATTRIBS:', GL_MAX_VERTEX_ATTRIBS) * _gl_print_integer(' GL_MAX_TEXTURE_SIZE:', GL_MAX_TEXTURE_SIZE) * gldraw.gl_init_buffers() # <<<<<<<<<<<<<< * if debug & DEBUG_DRAW: * gl_create_hud_program() */ __pyx_f_11_gldraw_es2_gl_init_buffers(); /* "_glarea_es2.pyx":684 * _gl_print_integer(' GL_MAX_TEXTURE_SIZE:', GL_MAX_TEXTURE_SIZE) * gldraw.gl_init_buffers() * if debug & DEBUG_DRAW: # <<<<<<<<<<<<<< * gl_create_hud_program() * gl_create_pick_program() */ __pyx_t_1 = ((__pyx_v_11_glarea_es2_debug & __pyx_e_11_glarea_es2_DEBUG_DRAW) != 0); if (__pyx_t_1) { /* "_glarea_es2.pyx":685 * gldraw.gl_init_buffers() * if debug & DEBUG_DRAW: * gl_create_hud_program() # <<<<<<<<<<<<<< * gl_create_pick_program() * */ __pyx_f_11_glarea_es2_gl_create_hud_program(); /* "_glarea_es2.pyx":684 * _gl_print_integer(' GL_MAX_TEXTURE_SIZE:', GL_MAX_TEXTURE_SIZE) * gldraw.gl_init_buffers() * if debug & DEBUG_DRAW: # <<<<<<<<<<<<<< * gl_create_hud_program() * gl_create_pick_program() */ } /* "_glarea_es2.pyx":686 * if debug & DEBUG_DRAW: * gl_create_hud_program() * gl_create_pick_program() # <<<<<<<<<<<<<< * * ##pxm-FUNC PD nogil */ __pyx_f_11_glarea_es2_gl_create_pick_program(); /* "_glarea_es2.pyx":664 * * ##pxm-FUNC PD nogil * cdef void gl_init() nogil: # <<<<<<<<<<<<<< * if debug & DEBUG_MSGGL: * puts('GL Strings:') */ /* function exit code */ } /* "_glarea_es2.pyx":689 * * ##pxm-FUNC PD nogil * cdef void gl_exit() nogil: # <<<<<<<<<<<<<< * gldraw.gl_delete_buffers() * if renderdata.prog_render > 0: glDeleteProgram(renderdata.prog_render) */ static void __pyx_f_11_glarea_es2_gl_exit(void) { int __pyx_t_1; /* "_glarea_es2.pyx":690 * ##pxm-FUNC PD nogil * cdef void gl_exit() nogil: * gldraw.gl_delete_buffers() # <<<<<<<<<<<<<< * if renderdata.prog_render > 0: glDeleteProgram(renderdata.prog_render) * if renderdata.prog_hud > 0: glDeleteProgram(renderdata.prog_hud) */ __pyx_f_11_gldraw_es2_gl_delete_buffers(); /* "_glarea_es2.pyx":691 * cdef void gl_exit() nogil: * gldraw.gl_delete_buffers() * if renderdata.prog_render > 0: glDeleteProgram(renderdata.prog_render) # <<<<<<<<<<<<<< * if renderdata.prog_hud > 0: glDeleteProgram(renderdata.prog_hud) * if renderdata.prog_pick > 0: glDeleteProgram(renderdata.prog_pick) */ __pyx_t_1 = ((__pyx_v_11_glarea_es2_renderdata.prog_render > 0) != 0); if (__pyx_t_1) { glDeleteProgram(__pyx_v_11_glarea_es2_renderdata.prog_render); } /* "_glarea_es2.pyx":692 * gldraw.gl_delete_buffers() * if renderdata.prog_render > 0: glDeleteProgram(renderdata.prog_render) * if renderdata.prog_hud > 0: glDeleteProgram(renderdata.prog_hud) # <<<<<<<<<<<<<< * if renderdata.prog_pick > 0: glDeleteProgram(renderdata.prog_pick) * renderdata.prog_render = 0 */ __pyx_t_1 = ((__pyx_v_11_glarea_es2_renderdata.prog_hud > 0) != 0); if (__pyx_t_1) { glDeleteProgram(__pyx_v_11_glarea_es2_renderdata.prog_hud); } /* "_glarea_es2.pyx":693 * if renderdata.prog_render > 0: glDeleteProgram(renderdata.prog_render) * if renderdata.prog_hud > 0: glDeleteProgram(renderdata.prog_hud) * if renderdata.prog_pick > 0: glDeleteProgram(renderdata.prog_pick) # <<<<<<<<<<<<<< * renderdata.prog_render = 0 * renderdata.prog_hud = 0 */ __pyx_t_1 = ((__pyx_v_11_glarea_es2_renderdata.prog_pick > 0) != 0); if (__pyx_t_1) { glDeleteProgram(__pyx_v_11_glarea_es2_renderdata.prog_pick); } /* "_glarea_es2.pyx":694 * if renderdata.prog_hud > 0: glDeleteProgram(renderdata.prog_hud) * if renderdata.prog_pick > 0: glDeleteProgram(renderdata.prog_pick) * renderdata.prog_render = 0 # <<<<<<<<<<<<<< * renderdata.prog_hud = 0 * renderdata.prog_pick = 0 */ __pyx_v_11_glarea_es2_renderdata.prog_render = 0; /* "_glarea_es2.pyx":695 * if renderdata.prog_pick > 0: glDeleteProgram(renderdata.prog_pick) * renderdata.prog_render = 0 * renderdata.prog_hud = 0 # <<<<<<<<<<<<<< * renderdata.prog_pick = 0 * */ __pyx_v_11_glarea_es2_renderdata.prog_hud = 0; /* "_glarea_es2.pyx":696 * renderdata.prog_render = 0 * renderdata.prog_hud = 0 * renderdata.prog_pick = 0 # <<<<<<<<<<<<<< * * ### render functions */ __pyx_v_11_glarea_es2_renderdata.prog_pick = 0; /* "_glarea_es2.pyx":689 * * ##pxm-FUNC PD nogil * cdef void gl_exit() nogil: # <<<<<<<<<<<<<< * gldraw.gl_delete_buffers() * if renderdata.prog_render > 0: glDeleteProgram(renderdata.prog_render) */ /* function exit code */ } /* "_glarea_es2.pyx":701 * * ##pxm-FUNC PD nogil * cdef void gl_set_atlas_texture(int width, int height) nogil: # <<<<<<<<<<<<<< * cdef int i, x, w, h #px+ * cdef char *data = malloc(width*height*4) #px+ */ static void __pyx_f_11_glarea_es2_gl_set_atlas_texture(int __pyx_v_width, int __pyx_v_height) { int __pyx_v_i; int __pyx_v_x; int __pyx_v_w; int __pyx_v_h; char *__pyx_v_data; int __pyx_t_1; int __pyx_t_2; int __pyx_t_3; int __pyx_t_4; int __pyx_t_5; char *__pyx_t_6; /* "_glarea_es2.pyx":703 * cdef void gl_set_atlas_texture(int width, int height) nogil: * cdef int i, x, w, h #px+ * cdef char *data = malloc(width*height*4) #px+ # <<<<<<<<<<<<<< * memset(data, 0, width*height*4) #px+ * #FIXME: GL_INVALID_OPERATION, but it works, at least on the phone a call to glTexImage2D is needed before glTexSubImage2D */ __pyx_v_data = ((char *)malloc(((__pyx_v_width * __pyx_v_height) * 4))); /* "_glarea_es2.pyx":704 * cdef int i, x, w, h #px+ * cdef char *data = malloc(width*height*4) #px+ * memset(data, 0, width*height*4) #px+ # <<<<<<<<<<<<<< * #FIXME: GL_INVALID_OPERATION, but it works, at least on the phone a call to glTexImage2D is needed before glTexSubImage2D * glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, data) #px+ */ memset(__pyx_v_data, 0, ((__pyx_v_width * __pyx_v_height) * 4)); /* "_glarea_es2.pyx":706 * memset(data, 0, width*height*4) #px+ * #FIXME: GL_INVALID_OPERATION, but it works, at least on the phone a call to glTexImage2D is needed before glTexSubImage2D * glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, data) #px+ # <<<<<<<<<<<<<< * free(data) #px+ * for i in range(renderdata.atlaslen): */ glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, __pyx_v_width, __pyx_v_height, 0, GL_RGBA, GL_UNSIGNED_BYTE, __pyx_v_data); /* "_glarea_es2.pyx":707 * #FIXME: GL_INVALID_OPERATION, but it works, at least on the phone a call to glTexImage2D is needed before glTexSubImage2D * glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, data) #px+ * free(data) #px+ # <<<<<<<<<<<<<< * for i in range(renderdata.atlaslen): * x, w, h = renderdata.atlasdata[i].x, renderdata.atlasdata[i].w, renderdata.atlasdata[i].h */ free(__pyx_v_data); /* "_glarea_es2.pyx":708 * glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, data) #px+ * free(data) #px+ * for i in range(renderdata.atlaslen): # <<<<<<<<<<<<<< * x, w, h = renderdata.atlasdata[i].x, renderdata.atlasdata[i].w, renderdata.atlasdata[i].h * data = renderdata.atlasdata[i].data */ __pyx_t_1 = __pyx_v_11_glarea_es2_renderdata.atlaslen; for (__pyx_t_2 = 0; __pyx_t_2 < __pyx_t_1; __pyx_t_2+=1) { __pyx_v_i = __pyx_t_2; /* "_glarea_es2.pyx":709 * free(data) #px+ * for i in range(renderdata.atlaslen): * x, w, h = renderdata.atlasdata[i].x, renderdata.atlasdata[i].w, renderdata.atlasdata[i].h # <<<<<<<<<<<<<< * data = renderdata.atlasdata[i].data * glTexSubImage2D(GL_TEXTURE_2D, 0, x, 0, w, h, GL_RGBA, GL_UNSIGNED_BYTE, data) */ __pyx_t_3 = (__pyx_v_11_glarea_es2_renderdata.atlasdata[__pyx_v_i]).x; __pyx_t_4 = (__pyx_v_11_glarea_es2_renderdata.atlasdata[__pyx_v_i]).w; __pyx_t_5 = (__pyx_v_11_glarea_es2_renderdata.atlasdata[__pyx_v_i]).h; __pyx_v_x = __pyx_t_3; __pyx_v_w = __pyx_t_4; __pyx_v_h = __pyx_t_5; /* "_glarea_es2.pyx":710 * for i in range(renderdata.atlaslen): * x, w, h = renderdata.atlasdata[i].x, renderdata.atlasdata[i].w, renderdata.atlasdata[i].h * data = renderdata.atlasdata[i].data # <<<<<<<<<<<<<< * glTexSubImage2D(GL_TEXTURE_2D, 0, x, 0, w, h, GL_RGBA, GL_UNSIGNED_BYTE, data) * */ __pyx_t_6 = (__pyx_v_11_glarea_es2_renderdata.atlasdata[__pyx_v_i]).data; __pyx_v_data = __pyx_t_6; /* "_glarea_es2.pyx":711 * x, w, h = renderdata.atlasdata[i].x, renderdata.atlasdata[i].w, renderdata.atlasdata[i].h * data = renderdata.atlasdata[i].data * glTexSubImage2D(GL_TEXTURE_2D, 0, x, 0, w, h, GL_RGBA, GL_UNSIGNED_BYTE, data) # <<<<<<<<<<<<<< * * ##pxm-FUNC P nogil */ glTexSubImage2D(GL_TEXTURE_2D, 0, __pyx_v_x, 0, __pyx_v_w, __pyx_v_h, GL_RGBA, GL_UNSIGNED_BYTE, __pyx_v_data); } /* "_glarea_es2.pyx":701 * * ##pxm-FUNC PD nogil * cdef void gl_set_atlas_texture(int width, int height) nogil: # <<<<<<<<<<<<<< * cdef int i, x, w, h #px+ * cdef char *data = malloc(width*height*4) #px+ */ /* function exit code */ } /* "_glarea_es2.pyx":714 * * ##pxm-FUNC P nogil * cdef void _gl_set_matrix(GLint location, gldraw.mat4 &matrix) nogil: # <<<<<<<<<<<<<< * glUniformMatrix4fv(location, 1, GL_FALSE, &matrix[0][0]) #px/ * #glUniformMatrix4fv(location, 1, GL_FALSE, matrix) */ static void __pyx_f_11_glarea_es2__gl_set_matrix(GLint __pyx_v_location, __pyx_t_11_gldraw_es2_vec4 *__pyx_v_matrix) { /* "_glarea_es2.pyx":715 * ##pxm-FUNC P nogil * cdef void _gl_set_matrix(GLint location, gldraw.mat4 &matrix) nogil: * glUniformMatrix4fv(location, 1, GL_FALSE, &matrix[0][0]) #px/ # <<<<<<<<<<<<<< * #glUniformMatrix4fv(location, 1, GL_FALSE, matrix) * */ glUniformMatrix4fv(__pyx_v_location, 1, GL_FALSE, (&((__pyx_v_matrix[0])[0]))); /* "_glarea_es2.pyx":714 * * ##pxm-FUNC P nogil * cdef void _gl_set_matrix(GLint location, gldraw.mat4 &matrix) nogil: # <<<<<<<<<<<<<< * glUniformMatrix4fv(location, 1, GL_FALSE, &matrix[0][0]) #px/ * #glUniformMatrix4fv(location, 1, GL_FALSE, matrix) */ /* function exit code */ } /* "_glarea_es2.pyx":719 * * ##pxm-FUNC PD nogil * cdef void gl_render() nogil: # <<<<<<<<<<<<<< * if renderdata.shader_changed: * gl_create_render_program() */ static void __pyx_f_11_glarea_es2_gl_render(void) { int __pyx_t_1; /* "_glarea_es2.pyx":720 * ##pxm-FUNC PD nogil * cdef void gl_render() nogil: * if renderdata.shader_changed: # <<<<<<<<<<<<<< * gl_create_render_program() * renderdata.shader_changed = False */ __pyx_t_1 = (__pyx_v_11_glarea_es2_renderdata.shader_changed != 0); if (__pyx_t_1) { /* "_glarea_es2.pyx":721 * cdef void gl_render() nogil: * if renderdata.shader_changed: * gl_create_render_program() # <<<<<<<<<<<<<< * renderdata.shader_changed = False * glEnable(GL_DEPTH_TEST) */ __pyx_f_11_glarea_es2_gl_create_render_program(); /* "_glarea_es2.pyx":722 * if renderdata.shader_changed: * gl_create_render_program() * renderdata.shader_changed = False # <<<<<<<<<<<<<< * glEnable(GL_DEPTH_TEST) * glEnable(GL_CULL_FACE) */ __pyx_v_11_glarea_es2_renderdata.shader_changed = 0; /* "_glarea_es2.pyx":720 * ##pxm-FUNC PD nogil * cdef void gl_render() nogil: * if renderdata.shader_changed: # <<<<<<<<<<<<<< * gl_create_render_program() * renderdata.shader_changed = False */ } /* "_glarea_es2.pyx":723 * gl_create_render_program() * renderdata.shader_changed = False * glEnable(GL_DEPTH_TEST) # <<<<<<<<<<<<<< * glEnable(GL_CULL_FACE) * glCullFace(GL_BACK) */ glEnable(GL_DEPTH_TEST); /* "_glarea_es2.pyx":724 * renderdata.shader_changed = False * glEnable(GL_DEPTH_TEST) * glEnable(GL_CULL_FACE) # <<<<<<<<<<<<<< * glCullFace(GL_BACK) * glFrontFace(GL_CCW) */ glEnable(GL_CULL_FACE); /* "_glarea_es2.pyx":725 * glEnable(GL_DEPTH_TEST) * glEnable(GL_CULL_FACE) * glCullFace(GL_BACK) # <<<<<<<<<<<<<< * glFrontFace(GL_CCW) * gldraw.gl_enable_data() */ glCullFace(GL_BACK); /* "_glarea_es2.pyx":726 * glEnable(GL_CULL_FACE) * glCullFace(GL_BACK) * glFrontFace(GL_CCW) # <<<<<<<<<<<<<< * gldraw.gl_enable_data() * glViewport(0, renderdata.y, renderdata.width, renderdata.height) */ glFrontFace(GL_CCW); /* "_glarea_es2.pyx":727 * glCullFace(GL_BACK) * glFrontFace(GL_CCW) * gldraw.gl_enable_data() # <<<<<<<<<<<<<< * glViewport(0, renderdata.y, renderdata.width, renderdata.height) * if debug & DEBUG_PICK: */ __pyx_f_11_gldraw_es2_gl_enable_data(); /* "_glarea_es2.pyx":728 * glFrontFace(GL_CCW) * gldraw.gl_enable_data() * glViewport(0, renderdata.y, renderdata.width, renderdata.height) # <<<<<<<<<<<<<< * if debug & DEBUG_PICK: * _set_picking_matrix_identity() */ glViewport(0, __pyx_v_11_glarea_es2_renderdata.y, __pyx_v_11_glarea_es2_renderdata.width, __pyx_v_11_glarea_es2_renderdata.height); /* "_glarea_es2.pyx":729 * gldraw.gl_enable_data() * glViewport(0, renderdata.y, renderdata.width, renderdata.height) * if debug & DEBUG_PICK: # <<<<<<<<<<<<<< * _set_picking_matrix_identity() * _gl_render_pick() */ __pyx_t_1 = ((__pyx_v_11_glarea_es2_debug & __pyx_e_11_glarea_es2_DEBUG_PICK) != 0); if (__pyx_t_1) { /* "_glarea_es2.pyx":730 * glViewport(0, renderdata.y, renderdata.width, renderdata.height) * if debug & DEBUG_PICK: * _set_picking_matrix_identity() # <<<<<<<<<<<<<< * _gl_render_pick() * else: */ __pyx_f_11_glarea_es2__set_picking_matrix_identity(); /* "_glarea_es2.pyx":731 * if debug & DEBUG_PICK: * _set_picking_matrix_identity() * _gl_render_pick() # <<<<<<<<<<<<<< * else: * glUseProgram(renderdata.prog_render) */ __pyx_f_11_glarea_es2__gl_render_pick(); /* "_glarea_es2.pyx":729 * gldraw.gl_enable_data() * glViewport(0, renderdata.y, renderdata.width, renderdata.height) * if debug & DEBUG_PICK: # <<<<<<<<<<<<<< * _set_picking_matrix_identity() * _gl_render_pick() */ goto __pyx_L4; } /* "_glarea_es2.pyx":733 * _gl_render_pick() * else: * glUseProgram(renderdata.prog_render) # <<<<<<<<<<<<<< * IF 'es2' == 'ogl': #px/ * #if True: */ /*else*/ { glUseProgram(__pyx_v_11_glarea_es2_renderdata.prog_render); /* "_glarea_es2.pyx":744 * ELSE: #px/ * #if True: * glClearColor(renderdata.bg_red, renderdata.bg_green, renderdata.bg_blue, 1.) # <<<<<<<<<<<<<< * _gl_set_matrix(renderdata.projection_location, renderdata.projection_matrix) * _gl_set_matrix(renderdata.modelview_location, renderdata.modelview_matrix) */ glClearColor(__pyx_v_11_glarea_es2_renderdata.bg_red, __pyx_v_11_glarea_es2_renderdata.bg_green, __pyx_v_11_glarea_es2_renderdata.bg_blue, 1.); /* "_glarea_es2.pyx":745 * #if True: * glClearColor(renderdata.bg_red, renderdata.bg_green, renderdata.bg_blue, 1.) * _gl_set_matrix(renderdata.projection_location, renderdata.projection_matrix) # <<<<<<<<<<<<<< * _gl_set_matrix(renderdata.modelview_location, renderdata.modelview_matrix) * glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) */ __pyx_f_11_glarea_es2__gl_set_matrix(__pyx_v_11_glarea_es2_renderdata.projection_location, __pyx_v_11_glarea_es2_renderdata.projection_matrix); /* "_glarea_es2.pyx":746 * glClearColor(renderdata.bg_red, renderdata.bg_green, renderdata.bg_blue, 1.) * _gl_set_matrix(renderdata.projection_location, renderdata.projection_matrix) * _gl_set_matrix(renderdata.modelview_location, renderdata.modelview_matrix) # <<<<<<<<<<<<<< * glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) * gldraw.gl_draw_cube() */ __pyx_f_11_glarea_es2__gl_set_matrix(__pyx_v_11_glarea_es2_renderdata.modelview_location, __pyx_v_11_glarea_es2_renderdata.modelview_matrix); /* "_glarea_es2.pyx":747 * _gl_set_matrix(renderdata.projection_location, renderdata.projection_matrix) * _gl_set_matrix(renderdata.modelview_location, renderdata.modelview_matrix) * glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) # <<<<<<<<<<<<<< * gldraw.gl_draw_cube() * if debug & DEBUG_DRAW: */ glClear((GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)); /* "_glarea_es2.pyx":748 * _gl_set_matrix(renderdata.modelview_location, renderdata.modelview_matrix) * glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) * gldraw.gl_draw_cube() # <<<<<<<<<<<<<< * if debug & DEBUG_DRAW: * gldraw.gl_draw_cube_debug() */ __pyx_f_11_gldraw_es2_gl_draw_cube(); } __pyx_L4:; /* "_glarea_es2.pyx":749 * glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) * gldraw.gl_draw_cube() * if debug & DEBUG_DRAW: # <<<<<<<<<<<<<< * gldraw.gl_draw_cube_debug() * glClearColor(0, 0, 0, 0) */ __pyx_t_1 = ((__pyx_v_11_glarea_es2_debug & __pyx_e_11_glarea_es2_DEBUG_DRAW) != 0); if (__pyx_t_1) { /* "_glarea_es2.pyx":750 * gldraw.gl_draw_cube() * if debug & DEBUG_DRAW: * gldraw.gl_draw_cube_debug() # <<<<<<<<<<<<<< * glClearColor(0, 0, 0, 0) * glUseProgram(0) */ __pyx_f_11_gldraw_es2_gl_draw_cube_debug(); /* "_glarea_es2.pyx":749 * glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) * gldraw.gl_draw_cube() * if debug & DEBUG_DRAW: # <<<<<<<<<<<<<< * gldraw.gl_draw_cube_debug() * glClearColor(0, 0, 0, 0) */ } /* "_glarea_es2.pyx":751 * if debug & DEBUG_DRAW: * gldraw.gl_draw_cube_debug() * glClearColor(0, 0, 0, 0) # <<<<<<<<<<<<<< * glUseProgram(0) * gldraw.gl_disable_data() */ glClearColor(0.0, 0.0, 0.0, 0.0); /* "_glarea_es2.pyx":752 * gldraw.gl_draw_cube_debug() * glClearColor(0, 0, 0, 0) * glUseProgram(0) # <<<<<<<<<<<<<< * gldraw.gl_disable_data() * glDisable(GL_CULL_FACE) */ glUseProgram(0); /* "_glarea_es2.pyx":753 * glClearColor(0, 0, 0, 0) * glUseProgram(0) * gldraw.gl_disable_data() # <<<<<<<<<<<<<< * glDisable(GL_CULL_FACE) * glDisable(GL_DEPTH_TEST) */ __pyx_f_11_gldraw_es2_gl_disable_data(); /* "_glarea_es2.pyx":754 * glUseProgram(0) * gldraw.gl_disable_data() * glDisable(GL_CULL_FACE) # <<<<<<<<<<<<<< * glDisable(GL_DEPTH_TEST) * */ glDisable(GL_CULL_FACE); /* "_glarea_es2.pyx":755 * gldraw.gl_disable_data() * glDisable(GL_CULL_FACE) * glDisable(GL_DEPTH_TEST) # <<<<<<<<<<<<<< * * ##pxm-FUNC PD nogil */ glDisable(GL_DEPTH_TEST); /* "_glarea_es2.pyx":719 * * ##pxm-FUNC PD nogil * cdef void gl_render() nogil: # <<<<<<<<<<<<<< * if renderdata.shader_changed: * gl_create_render_program() */ /* function exit code */ } /* "_glarea_es2.pyx":758 * * ##pxm-FUNC PD nogil * cdef void gl_render_select_debug() nogil: # <<<<<<<<<<<<<< * cdef GLfloat selectdata[12] #px/ * #selectdata = [0.] * 12 */ static void __pyx_f_11_glarea_es2_gl_render_select_debug(void) { GLfloat __pyx_v_selectdata[12]; /* "_glarea_es2.pyx":761 * cdef GLfloat selectdata[12] #px/ * #selectdata = [0.] * 12 * selectdata[0] = renderdata.debug_modelview1[0] # <<<<<<<<<<<<<< * selectdata[1] = renderdata.debug_modelview1[1] * selectdata[2] = renderdata.debug_modelview1[2] */ (__pyx_v_selectdata[0]) = (__pyx_v_11_glarea_es2_renderdata.debug_modelview1[0]); /* "_glarea_es2.pyx":762 * #selectdata = [0.] * 12 * selectdata[0] = renderdata.debug_modelview1[0] * selectdata[1] = renderdata.debug_modelview1[1] # <<<<<<<<<<<<<< * selectdata[2] = renderdata.debug_modelview1[2] * selectdata[3] = renderdata.debug_modelview2[0] */ (__pyx_v_selectdata[1]) = (__pyx_v_11_glarea_es2_renderdata.debug_modelview1[1]); /* "_glarea_es2.pyx":763 * selectdata[0] = renderdata.debug_modelview1[0] * selectdata[1] = renderdata.debug_modelview1[1] * selectdata[2] = renderdata.debug_modelview1[2] # <<<<<<<<<<<<<< * selectdata[3] = renderdata.debug_modelview2[0] * selectdata[4] = renderdata.debug_modelview2[1] */ (__pyx_v_selectdata[2]) = (__pyx_v_11_glarea_es2_renderdata.debug_modelview1[2]); /* "_glarea_es2.pyx":764 * selectdata[1] = renderdata.debug_modelview1[1] * selectdata[2] = renderdata.debug_modelview1[2] * selectdata[3] = renderdata.debug_modelview2[0] # <<<<<<<<<<<<<< * selectdata[4] = renderdata.debug_modelview2[1] * selectdata[5] = renderdata.debug_modelview2[2] */ (__pyx_v_selectdata[3]) = (__pyx_v_11_glarea_es2_renderdata.debug_modelview2[0]); /* "_glarea_es2.pyx":765 * selectdata[2] = renderdata.debug_modelview1[2] * selectdata[3] = renderdata.debug_modelview2[0] * selectdata[4] = renderdata.debug_modelview2[1] # <<<<<<<<<<<<<< * selectdata[5] = renderdata.debug_modelview2[2] * selectdata[6] = renderdata.debug_viewport1[0] / renderdata.width * 2 - 1 */ (__pyx_v_selectdata[4]) = (__pyx_v_11_glarea_es2_renderdata.debug_modelview2[1]); /* "_glarea_es2.pyx":766 * selectdata[3] = renderdata.debug_modelview2[0] * selectdata[4] = renderdata.debug_modelview2[1] * selectdata[5] = renderdata.debug_modelview2[2] # <<<<<<<<<<<<<< * selectdata[6] = renderdata.debug_viewport1[0] / renderdata.width * 2 - 1 * selectdata[7] = renderdata.debug_viewport1[1] / renderdata.height * 2 - 1 */ (__pyx_v_selectdata[5]) = (__pyx_v_11_glarea_es2_renderdata.debug_modelview2[2]); /* "_glarea_es2.pyx":767 * selectdata[4] = renderdata.debug_modelview2[1] * selectdata[5] = renderdata.debug_modelview2[2] * selectdata[6] = renderdata.debug_viewport1[0] / renderdata.width * 2 - 1 # <<<<<<<<<<<<<< * selectdata[7] = renderdata.debug_viewport1[1] / renderdata.height * 2 - 1 * selectdata[8] = 0 */ if (unlikely(__pyx_v_11_glarea_es2_renderdata.width == 0)) { #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif PyErr_SetString(PyExc_ZeroDivisionError, "float division"); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif __PYX_ERR(0, 767, __pyx_L1_error) } (__pyx_v_selectdata[6]) = (((((double)(__pyx_v_11_glarea_es2_renderdata.debug_viewport1[0])) / ((double)__pyx_v_11_glarea_es2_renderdata.width)) * 2.0) - 1.0); /* "_glarea_es2.pyx":768 * selectdata[5] = renderdata.debug_modelview2[2] * selectdata[6] = renderdata.debug_viewport1[0] / renderdata.width * 2 - 1 * selectdata[7] = renderdata.debug_viewport1[1] / renderdata.height * 2 - 1 # <<<<<<<<<<<<<< * selectdata[8] = 0 * selectdata[9] = renderdata.debug_viewport2[0] / renderdata.width * 2 - 1 */ if (unlikely(__pyx_v_11_glarea_es2_renderdata.height == 0)) { #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif PyErr_SetString(PyExc_ZeroDivisionError, "float division"); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif __PYX_ERR(0, 768, __pyx_L1_error) } (__pyx_v_selectdata[7]) = (((((double)(__pyx_v_11_glarea_es2_renderdata.debug_viewport1[1])) / ((double)__pyx_v_11_glarea_es2_renderdata.height)) * 2.0) - 1.0); /* "_glarea_es2.pyx":769 * selectdata[6] = renderdata.debug_viewport1[0] / renderdata.width * 2 - 1 * selectdata[7] = renderdata.debug_viewport1[1] / renderdata.height * 2 - 1 * selectdata[8] = 0 # <<<<<<<<<<<<<< * selectdata[9] = renderdata.debug_viewport2[0] / renderdata.width * 2 - 1 * selectdata[10] = renderdata.debug_viewport2[1] / renderdata.height * 2 - 1 */ (__pyx_v_selectdata[8]) = 0.0; /* "_glarea_es2.pyx":770 * selectdata[7] = renderdata.debug_viewport1[1] / renderdata.height * 2 - 1 * selectdata[8] = 0 * selectdata[9] = renderdata.debug_viewport2[0] / renderdata.width * 2 - 1 # <<<<<<<<<<<<<< * selectdata[10] = renderdata.debug_viewport2[1] / renderdata.height * 2 - 1 * selectdata[11] = 0 */ if (unlikely(__pyx_v_11_glarea_es2_renderdata.width == 0)) { #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif PyErr_SetString(PyExc_ZeroDivisionError, "float division"); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif __PYX_ERR(0, 770, __pyx_L1_error) } (__pyx_v_selectdata[9]) = (((((double)(__pyx_v_11_glarea_es2_renderdata.debug_viewport2[0])) / ((double)__pyx_v_11_glarea_es2_renderdata.width)) * 2.0) - 1.0); /* "_glarea_es2.pyx":771 * selectdata[8] = 0 * selectdata[9] = renderdata.debug_viewport2[0] / renderdata.width * 2 - 1 * selectdata[10] = renderdata.debug_viewport2[1] / renderdata.height * 2 - 1 # <<<<<<<<<<<<<< * selectdata[11] = 0 * gldraw.gl_enable_data() */ if (unlikely(__pyx_v_11_glarea_es2_renderdata.height == 0)) { #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif PyErr_SetString(PyExc_ZeroDivisionError, "float division"); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif __PYX_ERR(0, 771, __pyx_L1_error) } (__pyx_v_selectdata[10]) = (((((double)(__pyx_v_11_glarea_es2_renderdata.debug_viewport2[1])) / ((double)__pyx_v_11_glarea_es2_renderdata.height)) * 2.0) - 1.0); /* "_glarea_es2.pyx":772 * selectdata[9] = renderdata.debug_viewport2[0] / renderdata.width * 2 - 1 * selectdata[10] = renderdata.debug_viewport2[1] / renderdata.height * 2 - 1 * selectdata[11] = 0 # <<<<<<<<<<<<<< * gldraw.gl_enable_data() * glUseProgram(renderdata.prog_render) */ (__pyx_v_selectdata[11]) = 0.0; /* "_glarea_es2.pyx":773 * selectdata[10] = renderdata.debug_viewport2[1] / renderdata.height * 2 - 1 * selectdata[11] = 0 * gldraw.gl_enable_data() # <<<<<<<<<<<<<< * glUseProgram(renderdata.prog_render) * glViewport(0, renderdata.y, renderdata.width, renderdata.height) */ __pyx_f_11_gldraw_es2_gl_enable_data(); /* "_glarea_es2.pyx":774 * selectdata[11] = 0 * gldraw.gl_enable_data() * glUseProgram(renderdata.prog_render) # <<<<<<<<<<<<<< * glViewport(0, renderdata.y, renderdata.width, renderdata.height) * gldraw.gl_draw_select_debug(&selectdata[0], sizeof(selectdata), renderdata.prog_hud) #px/ */ glUseProgram(__pyx_v_11_glarea_es2_renderdata.prog_render); /* "_glarea_es2.pyx":775 * gldraw.gl_enable_data() * glUseProgram(renderdata.prog_render) * glViewport(0, renderdata.y, renderdata.width, renderdata.height) # <<<<<<<<<<<<<< * gldraw.gl_draw_select_debug(&selectdata[0], sizeof(selectdata), renderdata.prog_hud) #px/ * #gldraw.gl_draw_select_debug(selectdata, 0, renderdata.prog_hud) */ glViewport(0, __pyx_v_11_glarea_es2_renderdata.y, __pyx_v_11_glarea_es2_renderdata.width, __pyx_v_11_glarea_es2_renderdata.height); /* "_glarea_es2.pyx":776 * glUseProgram(renderdata.prog_render) * glViewport(0, renderdata.y, renderdata.width, renderdata.height) * gldraw.gl_draw_select_debug(&selectdata[0], sizeof(selectdata), renderdata.prog_hud) #px/ # <<<<<<<<<<<<<< * #gldraw.gl_draw_select_debug(selectdata, 0, renderdata.prog_hud) * glUseProgram(0) */ __pyx_f_11_gldraw_es2_gl_draw_select_debug((&(__pyx_v_selectdata[0])), (sizeof(__pyx_v_selectdata)), __pyx_v_11_glarea_es2_renderdata.prog_hud); /* "_glarea_es2.pyx":778 * gldraw.gl_draw_select_debug(&selectdata[0], sizeof(selectdata), renderdata.prog_hud) #px/ * #gldraw.gl_draw_select_debug(selectdata, 0, renderdata.prog_hud) * glUseProgram(0) # <<<<<<<<<<<<<< * gldraw.gl_disable_data() * */ glUseProgram(0); /* "_glarea_es2.pyx":779 * #gldraw.gl_draw_select_debug(selectdata, 0, renderdata.prog_hud) * glUseProgram(0) * gldraw.gl_disable_data() # <<<<<<<<<<<<<< * * */ __pyx_f_11_gldraw_es2_gl_disable_data(); /* "_glarea_es2.pyx":758 * * ##pxm-FUNC PD nogil * cdef void gl_render_select_debug() nogil: # <<<<<<<<<<<<<< * cdef GLfloat selectdata[12] #px/ * #selectdata = [0.] * 12 */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_WriteUnraisable("_glarea_es2.gl_render_select_debug", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 1); __pyx_L0:; } /* "_glarea_es2.pyx":785 * * ##pxm-FUNC P nogil * cdef void _gl_render_pick() nogil: # <<<<<<<<<<<<<< * glUseProgram(renderdata.prog_pick) * IF 'es2' == 'ogl': #px/ */ static void __pyx_f_11_glarea_es2__gl_render_pick(void) { /* "_glarea_es2.pyx":786 * ##pxm-FUNC P nogil * cdef void _gl_render_pick() nogil: * glUseProgram(renderdata.prog_pick) # <<<<<<<<<<<<<< * IF 'es2' == 'ogl': #px/ * #if True: */ glUseProgram(__pyx_v_11_glarea_es2_renderdata.prog_pick); /* "_glarea_es2.pyx":790 * #if True: * glDisable(GL_MULTISAMPLE) * glClearColor(0., 0., 0., 1.) # <<<<<<<<<<<<<< * _gl_set_matrix(renderdata.picking_location, renderdata.picking_matrix) * _gl_set_matrix(renderdata.projection_pick_location, renderdata.projection_matrix) */ glClearColor(0., 0., 0., 1.); /* "_glarea_es2.pyx":791 * glDisable(GL_MULTISAMPLE) * glClearColor(0., 0., 0., 1.) * _gl_set_matrix(renderdata.picking_location, renderdata.picking_matrix) # <<<<<<<<<<<<<< * _gl_set_matrix(renderdata.projection_pick_location, renderdata.projection_matrix) * _gl_set_matrix(renderdata.modelview_pick_location, renderdata.modelview_matrix) */ __pyx_f_11_glarea_es2__gl_set_matrix(__pyx_v_11_glarea_es2_renderdata.picking_location, __pyx_v_11_glarea_es2_renderdata.picking_matrix); /* "_glarea_es2.pyx":792 * glClearColor(0., 0., 0., 1.) * _gl_set_matrix(renderdata.picking_location, renderdata.picking_matrix) * _gl_set_matrix(renderdata.projection_pick_location, renderdata.projection_matrix) # <<<<<<<<<<<<<< * _gl_set_matrix(renderdata.modelview_pick_location, renderdata.modelview_matrix) * glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) */ __pyx_f_11_glarea_es2__gl_set_matrix(__pyx_v_11_glarea_es2_renderdata.projection_pick_location, __pyx_v_11_glarea_es2_renderdata.projection_matrix); /* "_glarea_es2.pyx":793 * _gl_set_matrix(renderdata.picking_location, renderdata.picking_matrix) * _gl_set_matrix(renderdata.projection_pick_location, renderdata.projection_matrix) * _gl_set_matrix(renderdata.modelview_pick_location, renderdata.modelview_matrix) # <<<<<<<<<<<<<< * glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) * gldraw.gl_pick_cube() */ __pyx_f_11_glarea_es2__gl_set_matrix(__pyx_v_11_glarea_es2_renderdata.modelview_pick_location, __pyx_v_11_glarea_es2_renderdata.modelview_matrix); /* "_glarea_es2.pyx":794 * _gl_set_matrix(renderdata.projection_pick_location, renderdata.projection_matrix) * _gl_set_matrix(renderdata.modelview_pick_location, renderdata.modelview_matrix) * glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) # <<<<<<<<<<<<<< * gldraw.gl_pick_cube() * */ glClear((GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)); /* "_glarea_es2.pyx":795 * _gl_set_matrix(renderdata.modelview_pick_location, renderdata.modelview_matrix) * glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) * gldraw.gl_pick_cube() # <<<<<<<<<<<<<< * * ##pxm-FUNC PD nogil */ __pyx_f_11_gldraw_es2_gl_pick_cube(); /* "_glarea_es2.pyx":785 * * ##pxm-FUNC P nogil * cdef void _gl_render_pick() nogil: # <<<<<<<<<<<<<< * glUseProgram(renderdata.prog_pick) * IF 'es2' == 'ogl': #px/ */ /* function exit code */ } /* "_glarea_es2.pyx":798 * * ##pxm-FUNC PD nogil * cdef int gl_pick_polygons() nogil: # <<<<<<<<<<<<<< * cdef unsigned char pixel[4] #px+ * cdef int index #px+ */ static int __pyx_f_11_glarea_es2_gl_pick_polygons(void) { unsigned char __pyx_v_pixel[4]; int __pyx_r; int __pyx_t_1; int __pyx_t_2; int __pyx_t_3; /* "_glarea_es2.pyx":802 * cdef int index #px+ * * if not (0 <= renderdata.pick_x < renderdata.width and 0 <= renderdata.pick_y < renderdata.height): # <<<<<<<<<<<<<< * return 0 * _set_picking_matrix(renderdata.pick_x, renderdata.pick_y) */ __pyx_t_2 = (0 <= __pyx_v_11_glarea_es2_renderdata.pick_x); if (__pyx_t_2) { __pyx_t_2 = (__pyx_v_11_glarea_es2_renderdata.pick_x < __pyx_v_11_glarea_es2_renderdata.width); } __pyx_t_3 = (__pyx_t_2 != 0); if (__pyx_t_3) { } else { __pyx_t_1 = __pyx_t_3; goto __pyx_L4_bool_binop_done; } __pyx_t_3 = (0 <= __pyx_v_11_glarea_es2_renderdata.pick_y); if (__pyx_t_3) { __pyx_t_3 = (__pyx_v_11_glarea_es2_renderdata.pick_y < __pyx_v_11_glarea_es2_renderdata.height); } __pyx_t_2 = (__pyx_t_3 != 0); __pyx_t_1 = __pyx_t_2; __pyx_L4_bool_binop_done:; __pyx_t_2 = ((!__pyx_t_1) != 0); if (__pyx_t_2) { /* "_glarea_es2.pyx":803 * * if not (0 <= renderdata.pick_x < renderdata.width and 0 <= renderdata.pick_y < renderdata.height): * return 0 # <<<<<<<<<<<<<< * _set_picking_matrix(renderdata.pick_x, renderdata.pick_y) * glEnable(GL_DEPTH_TEST) */ __pyx_r = 0; goto __pyx_L0; /* "_glarea_es2.pyx":802 * cdef int index #px+ * * if not (0 <= renderdata.pick_x < renderdata.width and 0 <= renderdata.pick_y < renderdata.height): # <<<<<<<<<<<<<< * return 0 * _set_picking_matrix(renderdata.pick_x, renderdata.pick_y) */ } /* "_glarea_es2.pyx":804 * if not (0 <= renderdata.pick_x < renderdata.width and 0 <= renderdata.pick_y < renderdata.height): * return 0 * _set_picking_matrix(renderdata.pick_x, renderdata.pick_y) # <<<<<<<<<<<<<< * glEnable(GL_DEPTH_TEST) * glEnable(GL_CULL_FACE) */ __pyx_f_11_glarea_es2__set_picking_matrix(__pyx_v_11_glarea_es2_renderdata.pick_x, __pyx_v_11_glarea_es2_renderdata.pick_y); /* "_glarea_es2.pyx":805 * return 0 * _set_picking_matrix(renderdata.pick_x, renderdata.pick_y) * glEnable(GL_DEPTH_TEST) # <<<<<<<<<<<<<< * glEnable(GL_CULL_FACE) * glCullFace(GL_BACK) */ glEnable(GL_DEPTH_TEST); /* "_glarea_es2.pyx":806 * _set_picking_matrix(renderdata.pick_x, renderdata.pick_y) * glEnable(GL_DEPTH_TEST) * glEnable(GL_CULL_FACE) # <<<<<<<<<<<<<< * glCullFace(GL_BACK) * glFrontFace(GL_CCW) */ glEnable(GL_CULL_FACE); /* "_glarea_es2.pyx":807 * glEnable(GL_DEPTH_TEST) * glEnable(GL_CULL_FACE) * glCullFace(GL_BACK) # <<<<<<<<<<<<<< * glFrontFace(GL_CCW) * gldraw.gl_enable_data() */ glCullFace(GL_BACK); /* "_glarea_es2.pyx":808 * glEnable(GL_CULL_FACE) * glCullFace(GL_BACK) * glFrontFace(GL_CCW) # <<<<<<<<<<<<<< * gldraw.gl_enable_data() * glViewport(0, 0, 1, 1) */ glFrontFace(GL_CCW); /* "_glarea_es2.pyx":809 * glCullFace(GL_BACK) * glFrontFace(GL_CCW) * gldraw.gl_enable_data() # <<<<<<<<<<<<<< * glViewport(0, 0, 1, 1) * _gl_render_pick() */ __pyx_f_11_gldraw_es2_gl_enable_data(); /* "_glarea_es2.pyx":810 * glFrontFace(GL_CCW) * gldraw.gl_enable_data() * glViewport(0, 0, 1, 1) # <<<<<<<<<<<<<< * _gl_render_pick() * gldraw.gl_disable_data() */ glViewport(0, 0, 1, 1); /* "_glarea_es2.pyx":811 * gldraw.gl_enable_data() * glViewport(0, 0, 1, 1) * _gl_render_pick() # <<<<<<<<<<<<<< * gldraw.gl_disable_data() * glDisable(GL_CULL_FACE) */ __pyx_f_11_glarea_es2__gl_render_pick(); /* "_glarea_es2.pyx":812 * glViewport(0, 0, 1, 1) * _gl_render_pick() * gldraw.gl_disable_data() # <<<<<<<<<<<<<< * glDisable(GL_CULL_FACE) * glDisable(GL_DEPTH_TEST) */ __pyx_f_11_gldraw_es2_gl_disable_data(); /* "_glarea_es2.pyx":813 * _gl_render_pick() * gldraw.gl_disable_data() * glDisable(GL_CULL_FACE) # <<<<<<<<<<<<<< * glDisable(GL_DEPTH_TEST) * glReadPixels(0, 0, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, pixel) #px/ */ glDisable(GL_CULL_FACE); /* "_glarea_es2.pyx":814 * gldraw.gl_disable_data() * glDisable(GL_CULL_FACE) * glDisable(GL_DEPTH_TEST) # <<<<<<<<<<<<<< * glReadPixels(0, 0, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, pixel) #px/ * #pixel = glReadPixels(0, 0, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, [[[0, 0, 0, 0]]])[0][0] */ glDisable(GL_DEPTH_TEST); /* "_glarea_es2.pyx":815 * glDisable(GL_CULL_FACE) * glDisable(GL_DEPTH_TEST) * glReadPixels(0, 0, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, pixel) #px/ # <<<<<<<<<<<<<< * #pixel = glReadPixels(0, 0, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, [[[0, 0, 0, 0]]])[0][0] * return pixel[0]<<4 | pixel[1] | pixel[2]>>4 */ glReadPixels(0, 0, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, __pyx_v_pixel); /* "_glarea_es2.pyx":817 * glReadPixels(0, 0, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, pixel) #px/ * #pixel = glReadPixels(0, 0, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, [[[0, 0, 0, 0]]])[0][0] * return pixel[0]<<4 | pixel[1] | pixel[2]>>4 # <<<<<<<<<<<<<< * * ##pxm-FUNC P nogil */ __pyx_r = ((((__pyx_v_pixel[0]) << 4) | (__pyx_v_pixel[1])) | ((__pyx_v_pixel[2]) >> 4)); goto __pyx_L0; /* "_glarea_es2.pyx":798 * * ##pxm-FUNC PD nogil * cdef int gl_pick_polygons() nogil: # <<<<<<<<<<<<<< * cdef unsigned char pixel[4] #px+ * cdef int index #px+ */ /* function exit code */ __pyx_L0:; return __pyx_r; } /* "_glarea_es2.pyx":820 * * ##pxm-FUNC P nogil * cdef void _modelview_to_viewport(float *vvect, int *mvect) nogil: # <<<<<<<<<<<<<< * cdef gldraw.vec4 *M #px+ * cdef gldraw.vec4 *P #px+ */ static void __pyx_f_11_glarea_es2__modelview_to_viewport(float *__pyx_v_vvect, int *__pyx_v_mvect) { __pyx_t_11_gldraw_es2_vec4 *__pyx_v_M; __pyx_t_11_gldraw_es2_vec4 *__pyx_v_P; float __pyx_v_u0; float __pyx_v_u1; float __pyx_v_u2; float __pyx_v_v0; float __pyx_v_v1; float __pyx_v_v3; /* "_glarea_es2.pyx":825 * cdef float u0, u1, u2, v0, v1, v3 #px+ * * M = &renderdata.modelview_matrix[0][0] #px/ # <<<<<<<<<<<<<< * #M = renderdata.modelview_matrix * P = &renderdata.projection_matrix[0][0] #px/ */ __pyx_v_M = ((__pyx_t_11_gldraw_es2_vec4 *)(&((__pyx_v_11_glarea_es2_renderdata.modelview_matrix[0])[0]))); /* "_glarea_es2.pyx":827 * M = &renderdata.modelview_matrix[0][0] #px/ * #M = renderdata.modelview_matrix * P = &renderdata.projection_matrix[0][0] #px/ # <<<<<<<<<<<<<< * #P = renderdata.projection_matrix * */ __pyx_v_P = ((__pyx_t_11_gldraw_es2_vec4 *)(&((__pyx_v_11_glarea_es2_renderdata.projection_matrix[0])[0]))); /* "_glarea_es2.pyx":832 * # u = M^T * vvect * #assert M[1][0] == 0 * u0 = M[0][0]*vvect[0] + M[1][0]*vvect[1] + M[2][0]*vvect[2] + M[3][0] # <<<<<<<<<<<<<< * u1 = M[0][1]*vvect[0] + M[1][1]*vvect[1] + M[2][1]*vvect[2] + M[3][1] * u2 = M[0][2]*vvect[0] + M[1][2]*vvect[1] + M[2][2]*vvect[2] + M[3][2] */ __pyx_v_u0 = ((((((__pyx_v_M[0])[0]) * (__pyx_v_vvect[0])) + (((__pyx_v_M[1])[0]) * (__pyx_v_vvect[1]))) + (((__pyx_v_M[2])[0]) * (__pyx_v_vvect[2]))) + ((__pyx_v_M[3])[0])); /* "_glarea_es2.pyx":833 * #assert M[1][0] == 0 * u0 = M[0][0]*vvect[0] + M[1][0]*vvect[1] + M[2][0]*vvect[2] + M[3][0] * u1 = M[0][1]*vvect[0] + M[1][1]*vvect[1] + M[2][1]*vvect[2] + M[3][1] # <<<<<<<<<<<<<< * u2 = M[0][2]*vvect[0] + M[1][2]*vvect[1] + M[2][2]*vvect[2] + M[3][2] * #u3 = 1. */ __pyx_v_u1 = ((((((__pyx_v_M[0])[1]) * (__pyx_v_vvect[0])) + (((__pyx_v_M[1])[1]) * (__pyx_v_vvect[1]))) + (((__pyx_v_M[2])[1]) * (__pyx_v_vvect[2]))) + ((__pyx_v_M[3])[1])); /* "_glarea_es2.pyx":834 * u0 = M[0][0]*vvect[0] + M[1][0]*vvect[1] + M[2][0]*vvect[2] + M[3][0] * u1 = M[0][1]*vvect[0] + M[1][1]*vvect[1] + M[2][1]*vvect[2] + M[3][1] * u2 = M[0][2]*vvect[0] + M[1][2]*vvect[1] + M[2][2]*vvect[2] + M[3][2] # <<<<<<<<<<<<<< * #u3 = 1. * */ __pyx_v_u2 = ((((((__pyx_v_M[0])[2]) * (__pyx_v_vvect[0])) + (((__pyx_v_M[1])[2]) * (__pyx_v_vvect[1]))) + (((__pyx_v_M[2])[2]) * (__pyx_v_vvect[2]))) + ((__pyx_v_M[3])[2])); /* "_glarea_es2.pyx":838 * * # v = P * u * v0 = P[0][0] * u0 + P[1][0] * u1 + P[2][0] * u2 + P[3][0] #* u3 # <<<<<<<<<<<<<< * v1 = P[0][1] * u0 + P[1][1] * u1 + P[2][1] * u2 + P[3][1] #* u3 * #v2 = P[0][2] * u0 + P[1][2] * u1 + P[2][2] * u2 + P[3][2] * u3 */ __pyx_v_v0 = ((((((__pyx_v_P[0])[0]) * __pyx_v_u0) + (((__pyx_v_P[1])[0]) * __pyx_v_u1)) + (((__pyx_v_P[2])[0]) * __pyx_v_u2)) + ((__pyx_v_P[3])[0])); /* "_glarea_es2.pyx":839 * # v = P * u * v0 = P[0][0] * u0 + P[1][0] * u1 + P[2][0] * u2 + P[3][0] #* u3 * v1 = P[0][1] * u0 + P[1][1] * u1 + P[2][1] * u2 + P[3][1] #* u3 # <<<<<<<<<<<<<< * #v2 = P[0][2] * u0 + P[1][2] * u1 + P[2][2] * u2 + P[3][2] * u3 * v3 = P[0][3] * u0 + P[1][3] * u1 + P[2][3] * u2 + P[3][3] #* u3 */ __pyx_v_v1 = ((((((__pyx_v_P[0])[1]) * __pyx_v_u0) + (((__pyx_v_P[1])[1]) * __pyx_v_u1)) + (((__pyx_v_P[2])[1]) * __pyx_v_u2)) + ((__pyx_v_P[3])[1])); /* "_glarea_es2.pyx":841 * v1 = P[0][1] * u0 + P[1][1] * u1 + P[2][1] * u2 + P[3][1] #* u3 * #v2 = P[0][2] * u0 + P[1][2] * u1 + P[2][2] * u2 + P[3][2] * u3 * v3 = P[0][3] * u0 + P[1][3] * u1 + P[2][3] * u2 + P[3][3] #* u3 # <<<<<<<<<<<<<< * * mvect[0] = int((v0 / v3 + 1) / 2 * renderdata.width) */ __pyx_v_v3 = ((((((__pyx_v_P[0])[3]) * __pyx_v_u0) + (((__pyx_v_P[1])[3]) * __pyx_v_u1)) + (((__pyx_v_P[2])[3]) * __pyx_v_u2)) + ((__pyx_v_P[3])[3])); /* "_glarea_es2.pyx":843 * v3 = P[0][3] * u0 + P[1][3] * u1 + P[2][3] * u2 + P[3][3] #* u3 * * mvect[0] = int((v0 / v3 + 1) / 2 * renderdata.width) # <<<<<<<<<<<<<< * mvect[1] = int((v1 / v3 + 1) / 2 * renderdata.height) * */ if (unlikely(__pyx_v_v3 == 0)) { #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif PyErr_SetString(PyExc_ZeroDivisionError, "float division"); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif __PYX_ERR(0, 843, __pyx_L1_error) } (__pyx_v_mvect[0]) = ((int)((((__pyx_v_v0 / __pyx_v_v3) + 1.0) / 2.0) * __pyx_v_11_glarea_es2_renderdata.width)); /* "_glarea_es2.pyx":844 * * mvect[0] = int((v0 / v3 + 1) / 2 * renderdata.width) * mvect[1] = int((v1 / v3 + 1) / 2 * renderdata.height) # <<<<<<<<<<<<<< * * ##pxm-FUNC P nogil */ if (unlikely(__pyx_v_v3 == 0)) { #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif PyErr_SetString(PyExc_ZeroDivisionError, "float division"); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif __PYX_ERR(0, 844, __pyx_L1_error) } (__pyx_v_mvect[1]) = ((int)((((__pyx_v_v1 / __pyx_v_v3) + 1.0) / 2.0) * __pyx_v_11_glarea_es2_renderdata.height)); /* "_glarea_es2.pyx":820 * * ##pxm-FUNC P nogil * cdef void _modelview_to_viewport(float *vvect, int *mvect) nogil: # <<<<<<<<<<<<<< * cdef gldraw.vec4 *M #px+ * cdef gldraw.vec4 *P #px+ */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_WriteUnraisable("_glarea_es2._modelview_to_viewport", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 1); __pyx_L0:; } /* "_glarea_es2.pyx":847 * * ##pxm-FUNC P nogil * cdef void _viewport_to_modelview(int *vvect, float *mvect) nogil: # <<<<<<<<<<<<<< * cdef gldraw.vec4 *MT #px+ * cdef gldraw.vec4 *P #px+ */ static void __pyx_f_11_glarea_es2__viewport_to_modelview(int *__pyx_v_vvect, float *__pyx_v_mvect) { __pyx_t_11_gldraw_es2_vec4 *__pyx_v_MT; __pyx_t_11_gldraw_es2_vec4 *__pyx_v_P; float __pyx_v_u0; float __pyx_v_u1; float __pyx_v_u2; float __pyx_v_u3; float __pyx_v_v0; float __pyx_v_v1; float __pyx_v_v2; float __pyx_t_1; float __pyx_t_2; /* "_glarea_es2.pyx":852 * cdef float u0, u1, u2, u3, v0, v1, v2 #px+ * * v0 = vvect[0] / renderdata.width * 2 - 1 # <<<<<<<<<<<<<< * v1 = vvect[1] / renderdata.height * 2 - 1 * v2 = 0 */ if (unlikely(__pyx_v_11_glarea_es2_renderdata.width == 0)) { #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif PyErr_SetString(PyExc_ZeroDivisionError, "float division"); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif __PYX_ERR(0, 852, __pyx_L1_error) } __pyx_v_v0 = (((((double)(__pyx_v_vvect[0])) / ((double)__pyx_v_11_glarea_es2_renderdata.width)) * 2.0) - 1.0); /* "_glarea_es2.pyx":853 * * v0 = vvect[0] / renderdata.width * 2 - 1 * v1 = vvect[1] / renderdata.height * 2 - 1 # <<<<<<<<<<<<<< * v2 = 0 * #v3 = 1 */ if (unlikely(__pyx_v_11_glarea_es2_renderdata.height == 0)) { #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif PyErr_SetString(PyExc_ZeroDivisionError, "float division"); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif __PYX_ERR(0, 853, __pyx_L1_error) } __pyx_v_v1 = (((((double)(__pyx_v_vvect[1])) / ((double)__pyx_v_11_glarea_es2_renderdata.height)) * 2.0) - 1.0); /* "_glarea_es2.pyx":854 * v0 = vvect[0] / renderdata.width * 2 - 1 * v1 = vvect[1] / renderdata.height * 2 - 1 * v2 = 0 # <<<<<<<<<<<<<< * #v3 = 1 * */ __pyx_v_v2 = 0.0; /* "_glarea_es2.pyx":862 * # 0 0 e c 0 0 0 D 0 0 cC 0 * # 0 0 d 0 0 0 C E 0 0 0 dD * P = &renderdata.projection_matrix[0][0] #px/ # <<<<<<<<<<<<<< * #P = renderdata.projection_matrix * # u = P^-1 * v */ __pyx_v_P = ((__pyx_t_11_gldraw_es2_vec4 *)(&((__pyx_v_11_glarea_es2_renderdata.projection_matrix[0])[0]))); /* "_glarea_es2.pyx":865 * #P = renderdata.projection_matrix * # u = P^-1 * v * u0 = 1 / P[0][0] * v0 # <<<<<<<<<<<<<< * u1 = 1 / P[1][1] * v1 * u2 = 1 / P[2][3] */ if (unlikely(((__pyx_v_P[0])[0]) == 0)) { #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif PyErr_SetString(PyExc_ZeroDivisionError, "float division"); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif __PYX_ERR(0, 865, __pyx_L1_error) } __pyx_v_u0 = ((1.0 / ((__pyx_v_P[0])[0])) * __pyx_v_v0); /* "_glarea_es2.pyx":866 * # u = P^-1 * v * u0 = 1 / P[0][0] * v0 * u1 = 1 / P[1][1] * v1 # <<<<<<<<<<<<<< * u2 = 1 / P[2][3] * #assert u2 == -1 */ if (unlikely(((__pyx_v_P[1])[1]) == 0)) { #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif PyErr_SetString(PyExc_ZeroDivisionError, "float division"); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif __PYX_ERR(0, 866, __pyx_L1_error) } __pyx_v_u1 = ((1.0 / ((__pyx_v_P[1])[1])) * __pyx_v_v1); /* "_glarea_es2.pyx":867 * u0 = 1 / P[0][0] * v0 * u1 = 1 / P[1][1] * v1 * u2 = 1 / P[2][3] # <<<<<<<<<<<<<< * #assert u2 == -1 * u3 = - P[2][2] / P[3][2] / P[2][3] */ if (unlikely(((__pyx_v_P[2])[3]) == 0)) { #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif PyErr_SetString(PyExc_ZeroDivisionError, "float division"); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif __PYX_ERR(0, 867, __pyx_L1_error) } __pyx_v_u2 = (1.0 / ((__pyx_v_P[2])[3])); /* "_glarea_es2.pyx":869 * u2 = 1 / P[2][3] * #assert u2 == -1 * u3 = - P[2][2] / P[3][2] / P[2][3] # <<<<<<<<<<<<<< * * # MT * MT^-1 = I */ __pyx_t_1 = (-((__pyx_v_P[2])[2])); if (unlikely(((__pyx_v_P[3])[2]) == 0)) { #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif PyErr_SetString(PyExc_ZeroDivisionError, "float division"); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif __PYX_ERR(0, 869, __pyx_L1_error) } __pyx_t_2 = (__pyx_t_1 / ((__pyx_v_P[3])[2])); if (unlikely(((__pyx_v_P[2])[3]) == 0)) { #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif PyErr_SetString(PyExc_ZeroDivisionError, "float division"); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif __PYX_ERR(0, 869, __pyx_L1_error) } __pyx_v_u3 = (__pyx_t_2 / ((__pyx_v_P[2])[3])); /* "_glarea_es2.pyx":876 * # f g h 0 c e h 0 0 0 1 0 W = -hz * # 0 0 z 1 U V W 1 0 0 0 1 * MT = &renderdata.modelview_matrix[0][0] #px/ # <<<<<<<<<<<<<< * #MT = renderdata.modelview_matrix * # v = M^-1 * u */ __pyx_v_MT = ((__pyx_t_11_gldraw_es2_vec4 *)(&((__pyx_v_11_glarea_es2_renderdata.modelview_matrix[0])[0]))); /* "_glarea_es2.pyx":879 * #MT = renderdata.modelview_matrix * # v = M^-1 * u * v0 = MT[0][0]*u0 + MT[0][1]*u1 + MT[0][2]*u2 - MT[0][2] * MT[3][2]*u3 # <<<<<<<<<<<<<< * v1 = MT[1][0]*u0 + MT[1][1]*u1 + MT[1][2]*u2 - MT[1][2] * MT[3][2]*u3 * v2 = MT[2][0]*u0 + MT[2][1]*u1 + MT[2][2]*u2 - MT[2][2] * MT[3][2]*u3 */ __pyx_v_v0 = ((((((__pyx_v_MT[0])[0]) * __pyx_v_u0) + (((__pyx_v_MT[0])[1]) * __pyx_v_u1)) + (((__pyx_v_MT[0])[2]) * __pyx_v_u2)) - ((((__pyx_v_MT[0])[2]) * ((__pyx_v_MT[3])[2])) * __pyx_v_u3)); /* "_glarea_es2.pyx":880 * # v = M^-1 * u * v0 = MT[0][0]*u0 + MT[0][1]*u1 + MT[0][2]*u2 - MT[0][2] * MT[3][2]*u3 * v1 = MT[1][0]*u0 + MT[1][1]*u1 + MT[1][2]*u2 - MT[1][2] * MT[3][2]*u3 # <<<<<<<<<<<<<< * v2 = MT[2][0]*u0 + MT[2][1]*u1 + MT[2][2]*u2 - MT[2][2] * MT[3][2]*u3 * #v3 = u3 */ __pyx_v_v1 = ((((((__pyx_v_MT[1])[0]) * __pyx_v_u0) + (((__pyx_v_MT[1])[1]) * __pyx_v_u1)) + (((__pyx_v_MT[1])[2]) * __pyx_v_u2)) - ((((__pyx_v_MT[1])[2]) * ((__pyx_v_MT[3])[2])) * __pyx_v_u3)); /* "_glarea_es2.pyx":881 * v0 = MT[0][0]*u0 + MT[0][1]*u1 + MT[0][2]*u2 - MT[0][2] * MT[3][2]*u3 * v1 = MT[1][0]*u0 + MT[1][1]*u1 + MT[1][2]*u2 - MT[1][2] * MT[3][2]*u3 * v2 = MT[2][0]*u0 + MT[2][1]*u1 + MT[2][2]*u2 - MT[2][2] * MT[3][2]*u3 # <<<<<<<<<<<<<< * #v3 = u3 * */ __pyx_v_v2 = ((((((__pyx_v_MT[2])[0]) * __pyx_v_u0) + (((__pyx_v_MT[2])[1]) * __pyx_v_u1)) + (((__pyx_v_MT[2])[2]) * __pyx_v_u2)) - ((((__pyx_v_MT[2])[2]) * ((__pyx_v_MT[3])[2])) * __pyx_v_u3)); /* "_glarea_es2.pyx":884 * #v3 = u3 * * mvect[0] = v0 / u3 # <<<<<<<<<<<<<< * mvect[1] = v1 / u3 * mvect[2] = v2 / u3 */ if (unlikely(__pyx_v_u3 == 0)) { #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif PyErr_SetString(PyExc_ZeroDivisionError, "float division"); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif __PYX_ERR(0, 884, __pyx_L1_error) } (__pyx_v_mvect[0]) = (__pyx_v_v0 / __pyx_v_u3); /* "_glarea_es2.pyx":885 * * mvect[0] = v0 / u3 * mvect[1] = v1 / u3 # <<<<<<<<<<<<<< * mvect[2] = v2 / u3 * */ if (unlikely(__pyx_v_u3 == 0)) { #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif PyErr_SetString(PyExc_ZeroDivisionError, "float division"); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif __PYX_ERR(0, 885, __pyx_L1_error) } (__pyx_v_mvect[1]) = (__pyx_v_v1 / __pyx_v_u3); /* "_glarea_es2.pyx":886 * mvect[0] = v0 / u3 * mvect[1] = v1 / u3 * mvect[2] = v2 / u3 # <<<<<<<<<<<<<< * * def get_cursor_angle(d): */ if (unlikely(__pyx_v_u3 == 0)) { #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif PyErr_SetString(PyExc_ZeroDivisionError, "float division"); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif __PYX_ERR(0, 886, __pyx_L1_error) } (__pyx_v_mvect[2]) = (__pyx_v_v2 / __pyx_v_u3); /* "_glarea_es2.pyx":847 * * ##pxm-FUNC P nogil * cdef void _viewport_to_modelview(int *vvect, float *mvect) nogil: # <<<<<<<<<<<<<< * cdef gldraw.vec4 *MT #px+ * cdef gldraw.vec4 *P #px+ */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_WriteUnraisable("_glarea_es2._viewport_to_modelview", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 1); __pyx_L0:; } /* "_glarea_es2.pyx":888 * mvect[2] = v2 / u3 * * def get_cursor_angle(d): # <<<<<<<<<<<<<< * cdef float angle #px+ * cdef int i #px+ */ /* Python wrapper */ static PyObject *__pyx_pw_11_glarea_es2_33get_cursor_angle(PyObject *__pyx_self, PyObject *__pyx_v_d); /*proto*/ static PyMethodDef __pyx_mdef_11_glarea_es2_33get_cursor_angle = {"get_cursor_angle", (PyCFunction)__pyx_pw_11_glarea_es2_33get_cursor_angle, METH_O, 0}; static PyObject *__pyx_pw_11_glarea_es2_33get_cursor_angle(PyObject *__pyx_self, PyObject *__pyx_v_d) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("get_cursor_angle (wrapper)", 0); __pyx_r = __pyx_pf_11_glarea_es2_32get_cursor_angle(__pyx_self, ((PyObject *)__pyx_v_d)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11_glarea_es2_32get_cursor_angle(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_d) { float __pyx_v_angle; int __pyx_v_i; float __pyx_v_x; float __pyx_v_y; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; float __pyx_t_5; double __pyx_t_6; __Pyx_RefNannySetupContext("get_cursor_angle", 0); /* "_glarea_es2.pyx":892 * cdef int i #px+ * cdef float x, y #px+ * renderdata.debug_viewport1[0] = uidata.pick_x # <<<<<<<<<<<<<< * renderdata.debug_viewport1[1] = uidata.pick_y * _viewport_to_modelview(renderdata.debug_viewport1, renderdata.debug_modelview1) */ __pyx_t_1 = __pyx_v_11_glarea_es2_uidata.pick_x; (__pyx_v_11_glarea_es2_renderdata.debug_viewport1[0]) = __pyx_t_1; /* "_glarea_es2.pyx":893 * cdef float x, y #px+ * renderdata.debug_viewport1[0] = uidata.pick_x * renderdata.debug_viewport1[1] = uidata.pick_y # <<<<<<<<<<<<<< * _viewport_to_modelview(renderdata.debug_viewport1, renderdata.debug_modelview1) * for i in range(3): */ __pyx_t_1 = __pyx_v_11_glarea_es2_uidata.pick_y; (__pyx_v_11_glarea_es2_renderdata.debug_viewport1[1]) = __pyx_t_1; /* "_glarea_es2.pyx":894 * renderdata.debug_viewport1[0] = uidata.pick_x * renderdata.debug_viewport1[1] = uidata.pick_y * _viewport_to_modelview(renderdata.debug_viewport1, renderdata.debug_modelview1) # <<<<<<<<<<<<<< * for i in range(3): * renderdata.debug_modelview2[i] = d[i] + renderdata.debug_modelview1[i] */ __pyx_f_11_glarea_es2__viewport_to_modelview(__pyx_v_11_glarea_es2_renderdata.debug_viewport1, __pyx_v_11_glarea_es2_renderdata.debug_modelview1); /* "_glarea_es2.pyx":895 * renderdata.debug_viewport1[1] = uidata.pick_y * _viewport_to_modelview(renderdata.debug_viewport1, renderdata.debug_modelview1) * for i in range(3): # <<<<<<<<<<<<<< * renderdata.debug_modelview2[i] = d[i] + renderdata.debug_modelview1[i] * _modelview_to_viewport(renderdata.debug_modelview2, renderdata.debug_viewport2) */ for (__pyx_t_1 = 0; __pyx_t_1 < 3; __pyx_t_1+=1) { __pyx_v_i = __pyx_t_1; /* "_glarea_es2.pyx":896 * _viewport_to_modelview(renderdata.debug_viewport1, renderdata.debug_modelview1) * for i in range(3): * renderdata.debug_modelview2[i] = d[i] + renderdata.debug_modelview1[i] # <<<<<<<<<<<<<< * _modelview_to_viewport(renderdata.debug_modelview2, renderdata.debug_viewport2) * x = renderdata.debug_viewport1[0] - renderdata.debug_viewport2[0] */ __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_d, __pyx_v_i, int, 1, __Pyx_PyInt_From_int, 0, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 896, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyFloat_FromDouble((__pyx_v_11_glarea_es2_renderdata.debug_modelview1[__pyx_v_i])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 896, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyNumber_Add(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 896, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_5 = __pyx_PyFloat_AsFloat(__pyx_t_4); if (unlikely((__pyx_t_5 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 896, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; (__pyx_v_11_glarea_es2_renderdata.debug_modelview2[__pyx_v_i]) = __pyx_t_5; } /* "_glarea_es2.pyx":897 * for i in range(3): * renderdata.debug_modelview2[i] = d[i] + renderdata.debug_modelview1[i] * _modelview_to_viewport(renderdata.debug_modelview2, renderdata.debug_viewport2) # <<<<<<<<<<<<<< * x = renderdata.debug_viewport1[0] - renderdata.debug_viewport2[0] * y = renderdata.debug_viewport1[1] - renderdata.debug_viewport2[1] */ __pyx_f_11_glarea_es2__modelview_to_viewport(__pyx_v_11_glarea_es2_renderdata.debug_modelview2, __pyx_v_11_glarea_es2_renderdata.debug_viewport2); /* "_glarea_es2.pyx":898 * renderdata.debug_modelview2[i] = d[i] + renderdata.debug_modelview1[i] * _modelview_to_viewport(renderdata.debug_modelview2, renderdata.debug_viewport2) * x = renderdata.debug_viewport1[0] - renderdata.debug_viewport2[0] # <<<<<<<<<<<<<< * y = renderdata.debug_viewport1[1] - renderdata.debug_viewport2[1] * angle = atan2(x, y) * 180.0 / M_PI */ __pyx_v_x = ((__pyx_v_11_glarea_es2_renderdata.debug_viewport1[0]) - (__pyx_v_11_glarea_es2_renderdata.debug_viewport2[0])); /* "_glarea_es2.pyx":899 * _modelview_to_viewport(renderdata.debug_modelview2, renderdata.debug_viewport2) * x = renderdata.debug_viewport1[0] - renderdata.debug_viewport2[0] * y = renderdata.debug_viewport1[1] - renderdata.debug_viewport2[1] # <<<<<<<<<<<<<< * angle = atan2(x, y) * 180.0 / M_PI * return angle */ __pyx_v_y = ((__pyx_v_11_glarea_es2_renderdata.debug_viewport1[1]) - (__pyx_v_11_glarea_es2_renderdata.debug_viewport2[1])); /* "_glarea_es2.pyx":900 * x = renderdata.debug_viewport1[0] - renderdata.debug_viewport2[0] * y = renderdata.debug_viewport1[1] - renderdata.debug_viewport2[1] * angle = atan2(x, y) * 180.0 / M_PI # <<<<<<<<<<<<<< * return angle * */ __pyx_t_6 = (atan2(__pyx_v_x, __pyx_v_y) * 180.0); if (unlikely(M_PI == 0)) { PyErr_SetString(PyExc_ZeroDivisionError, "float division"); __PYX_ERR(0, 900, __pyx_L1_error) } __pyx_v_angle = (__pyx_t_6 / M_PI); /* "_glarea_es2.pyx":901 * y = renderdata.debug_viewport1[1] - renderdata.debug_viewport2[1] * angle = atan2(x, y) * 180.0 / M_PI * return angle # <<<<<<<<<<<<<< * * */ __Pyx_XDECREF(__pyx_r); __pyx_t_4 = PyFloat_FromDouble(__pyx_v_angle); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 901, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_r = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L0; /* "_glarea_es2.pyx":888 * mvect[2] = v2 / u3 * * def get_cursor_angle(d): # <<<<<<<<<<<<<< * cdef float angle #px+ * cdef int i #px+ */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("_glarea_es2.get_cursor_angle", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_glarea_es2.pyx":907 * * ##pxm-FUNC P nogil * cdef void _gl_print_shader_log(GLuint shader) nogil: # <<<<<<<<<<<<<< * cdef GLint log_len #px+ * cdef GLsizei length #px+ */ static void __pyx_f_11_glarea_es2__gl_print_shader_log(GLuint __pyx_v_shader) { GLint __pyx_v_log_len; GLsizei __pyx_v_length; char __pyx_v_log[0x400]; int __pyx_t_1; /* "_glarea_es2.pyx":911 * cdef GLsizei length #px+ * cdef char log[1024] #px+ * glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &log_len) #px/ # <<<<<<<<<<<<<< * #log_len = glGetShaderiv(shader, GL_INFO_LOG_LENGTH) * if log_len > 0: */ glGetShaderiv(__pyx_v_shader, GL_INFO_LOG_LENGTH, (&__pyx_v_log_len)); /* "_glarea_es2.pyx":913 * glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &log_len) #px/ * #log_len = glGetShaderiv(shader, GL_INFO_LOG_LENGTH) * if log_len > 0: # <<<<<<<<<<<<<< * puts('==== shader info log:') * glGetShaderInfoLog(shader, 1023, &length, log) #px/ */ __pyx_t_1 = ((__pyx_v_log_len > 0) != 0); if (__pyx_t_1) { /* "_glarea_es2.pyx":914 * #log_len = glGetShaderiv(shader, GL_INFO_LOG_LENGTH) * if log_len > 0: * puts('==== shader info log:') # <<<<<<<<<<<<<< * glGetShaderInfoLog(shader, 1023, &length, log) #px/ * #log = glGetShaderInfoLog(shader).decode('utf-8') */ puts(((char const *)"==== shader info log:")); /* "_glarea_es2.pyx":915 * if log_len > 0: * puts('==== shader info log:') * glGetShaderInfoLog(shader, 1023, &length, log) #px/ # <<<<<<<<<<<<<< * #log = glGetShaderInfoLog(shader).decode('utf-8') * printf('%s', log) */ glGetShaderInfoLog(__pyx_v_shader, 0x3FF, (&__pyx_v_length), __pyx_v_log); /* "_glarea_es2.pyx":917 * glGetShaderInfoLog(shader, 1023, &length, log) #px/ * #log = glGetShaderInfoLog(shader).decode('utf-8') * printf('%s', log) # <<<<<<<<<<<<<< * puts('====') * else: */ printf(((char const *)"%s"), __pyx_v_log); /* "_glarea_es2.pyx":918 * #log = glGetShaderInfoLog(shader).decode('utf-8') * printf('%s', log) * puts('====') # <<<<<<<<<<<<<< * else: * puts('==== empty shader info log') */ puts(((char const *)"====")); /* "_glarea_es2.pyx":913 * glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &log_len) #px/ * #log_len = glGetShaderiv(shader, GL_INFO_LOG_LENGTH) * if log_len > 0: # <<<<<<<<<<<<<< * puts('==== shader info log:') * glGetShaderInfoLog(shader, 1023, &length, log) #px/ */ goto __pyx_L3; } /* "_glarea_es2.pyx":920 * puts('====') * else: * puts('==== empty shader info log') # <<<<<<<<<<<<<< * * ##pxm-FUNC P nogil */ /*else*/ { puts(((char const *)"==== empty shader info log")); } __pyx_L3:; /* "_glarea_es2.pyx":907 * * ##pxm-FUNC P nogil * cdef void _gl_print_shader_log(GLuint shader) nogil: # <<<<<<<<<<<<<< * cdef GLint log_len #px+ * cdef GLsizei length #px+ */ /* function exit code */ } /* "_glarea_es2.pyx":923 * * ##pxm-FUNC P nogil * cdef void _gl_print_program_log(GLuint program) nogil: # <<<<<<<<<<<<<< * cdef GLint log_len #px+ * cdef GLsizei length #px+ */ static void __pyx_f_11_glarea_es2__gl_print_program_log(GLuint __pyx_v_program) { GLint __pyx_v_log_len; GLsizei __pyx_v_length; char __pyx_v_log[0x400]; int __pyx_t_1; /* "_glarea_es2.pyx":927 * cdef GLsizei length #px+ * cdef char log[1024] #px+ * glGetProgramiv(program, GL_INFO_LOG_LENGTH, &log_len) #px/ # <<<<<<<<<<<<<< * #log_len = glGetProgramiv(program, GL_INFO_LOG_LENGTH) * if log_len > 0: */ glGetProgramiv(__pyx_v_program, GL_INFO_LOG_LENGTH, (&__pyx_v_log_len)); /* "_glarea_es2.pyx":929 * glGetProgramiv(program, GL_INFO_LOG_LENGTH, &log_len) #px/ * #log_len = glGetProgramiv(program, GL_INFO_LOG_LENGTH) * if log_len > 0: # <<<<<<<<<<<<<< * puts('==== program info log:') * glGetProgramInfoLog(program, 1023, &length, log) #px/ */ __pyx_t_1 = ((__pyx_v_log_len > 0) != 0); if (__pyx_t_1) { /* "_glarea_es2.pyx":930 * #log_len = glGetProgramiv(program, GL_INFO_LOG_LENGTH) * if log_len > 0: * puts('==== program info log:') # <<<<<<<<<<<<<< * glGetProgramInfoLog(program, 1023, &length, log) #px/ * #log = glGetProgramInfoLog(program).decode('utf-8') */ puts(((char const *)"==== program info log:")); /* "_glarea_es2.pyx":931 * if log_len > 0: * puts('==== program info log:') * glGetProgramInfoLog(program, 1023, &length, log) #px/ # <<<<<<<<<<<<<< * #log = glGetProgramInfoLog(program).decode('utf-8') * printf('%s', log) */ glGetProgramInfoLog(__pyx_v_program, 0x3FF, (&__pyx_v_length), __pyx_v_log); /* "_glarea_es2.pyx":933 * glGetProgramInfoLog(program, 1023, &length, log) #px/ * #log = glGetProgramInfoLog(program).decode('utf-8') * printf('%s', log) # <<<<<<<<<<<<<< * puts('====') * else: */ printf(((char const *)"%s"), __pyx_v_log); /* "_glarea_es2.pyx":934 * #log = glGetProgramInfoLog(program).decode('utf-8') * printf('%s', log) * puts('====') # <<<<<<<<<<<<<< * else: * puts('==== empty program info log') */ puts(((char const *)"====")); /* "_glarea_es2.pyx":929 * glGetProgramiv(program, GL_INFO_LOG_LENGTH, &log_len) #px/ * #log_len = glGetProgramiv(program, GL_INFO_LOG_LENGTH) * if log_len > 0: # <<<<<<<<<<<<<< * puts('==== program info log:') * glGetProgramInfoLog(program, 1023, &length, log) #px/ */ goto __pyx_L3; } /* "_glarea_es2.pyx":936 * puts('====') * else: * puts('==== empty program info log') # <<<<<<<<<<<<<< * * ##pxm-FUNC P nogil */ /*else*/ { puts(((char const *)"==== empty program info log")); } __pyx_L3:; /* "_glarea_es2.pyx":923 * * ##pxm-FUNC P nogil * cdef void _gl_print_program_log(GLuint program) nogil: # <<<<<<<<<<<<<< * cdef GLint log_len #px+ * cdef GLsizei length #px+ */ /* function exit code */ } /* "_glarea_es2.pyx":939 * * ##pxm-FUNC P nogil * cdef GLuint _gl_create_compiled_shader(GLenum shadertype, char *source) nogil: # <<<<<<<<<<<<<< * cdef GLuint shader #px+ * cdef const_GLchar_ptr pchar #px+ */ static GLuint __pyx_f_11_glarea_es2__gl_create_compiled_shader(GLenum __pyx_v_shadertype, char *__pyx_v_source) { GLuint __pyx_v_shader; const GLchar* __pyx_v_pchar; GLint __pyx_v_compile_status; GLuint __pyx_r; int __pyx_t_1; /* "_glarea_es2.pyx":944 * cdef GLint compile_status #px+ * * shader = glCreateShader(shadertype) # <<<<<<<<<<<<<< * if shader == 0: * puts('Failed to create shader') */ __pyx_v_shader = glCreateShader(__pyx_v_shadertype); /* "_glarea_es2.pyx":945 * * shader = glCreateShader(shadertype) * if shader == 0: # <<<<<<<<<<<<<< * puts('Failed to create shader') * return 0 */ __pyx_t_1 = ((__pyx_v_shader == 0) != 0); if (__pyx_t_1) { /* "_glarea_es2.pyx":946 * shader = glCreateShader(shadertype) * if shader == 0: * puts('Failed to create shader') # <<<<<<<<<<<<<< * return 0 * pchar = source #px+ */ puts(((char const *)"Failed to create shader")); /* "_glarea_es2.pyx":947 * if shader == 0: * puts('Failed to create shader') * return 0 # <<<<<<<<<<<<<< * pchar = source #px+ * glShaderSource(shader, 1, &pchar, NULL) #px/ */ __pyx_r = 0; goto __pyx_L0; /* "_glarea_es2.pyx":945 * * shader = glCreateShader(shadertype) * if shader == 0: # <<<<<<<<<<<<<< * puts('Failed to create shader') * return 0 */ } /* "_glarea_es2.pyx":948 * puts('Failed to create shader') * return 0 * pchar = source #px+ # <<<<<<<<<<<<<< * glShaderSource(shader, 1, &pchar, NULL) #px/ * #glShaderSource(shader, source.decode('utf-8')) # PyOpenGL needs str currently */ __pyx_v_pchar = ((const GLchar*)((char *)__pyx_v_source)); /* "_glarea_es2.pyx":949 * return 0 * pchar = source #px+ * glShaderSource(shader, 1, &pchar, NULL) #px/ # <<<<<<<<<<<<<< * #glShaderSource(shader, source.decode('utf-8')) # PyOpenGL needs str currently * glCompileShader(shader) */ glShaderSource(__pyx_v_shader, 1, (&__pyx_v_pchar), NULL); /* "_glarea_es2.pyx":951 * glShaderSource(shader, 1, &pchar, NULL) #px/ * #glShaderSource(shader, source.decode('utf-8')) # PyOpenGL needs str currently * glCompileShader(shader) # <<<<<<<<<<<<<< * if debug & DEBUG_MSGGL: * glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &compile_status) #px/ */ glCompileShader(__pyx_v_shader); /* "_glarea_es2.pyx":952 * #glShaderSource(shader, source.decode('utf-8')) # PyOpenGL needs str currently * glCompileShader(shader) * if debug & DEBUG_MSGGL: # <<<<<<<<<<<<<< * glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &compile_status) #px/ * #compile_status = glGetShaderiv(shader, GL_INFO_LOG_LENGTH) */ __pyx_t_1 = ((__pyx_v_11_glarea_es2_debug & __pyx_e_11_glarea_es2_DEBUG_MSGGL) != 0); if (__pyx_t_1) { /* "_glarea_es2.pyx":953 * glCompileShader(shader) * if debug & DEBUG_MSGGL: * glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &compile_status) #px/ # <<<<<<<<<<<<<< * #compile_status = glGetShaderiv(shader, GL_INFO_LOG_LENGTH) * printf('GL_INFO_LOG_LENGTH %d\n', compile_status) */ glGetShaderiv(__pyx_v_shader, GL_INFO_LOG_LENGTH, (&__pyx_v_compile_status)); /* "_glarea_es2.pyx":955 * glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &compile_status) #px/ * #compile_status = glGetShaderiv(shader, GL_INFO_LOG_LENGTH) * printf('GL_INFO_LOG_LENGTH %d\n', compile_status) # <<<<<<<<<<<<<< * compile_status = compile_status <= 1 * if compile_status: */ printf(((char const *)"GL_INFO_LOG_LENGTH %d\n"), __pyx_v_compile_status); /* "_glarea_es2.pyx":956 * #compile_status = glGetShaderiv(shader, GL_INFO_LOG_LENGTH) * printf('GL_INFO_LOG_LENGTH %d\n', compile_status) * compile_status = compile_status <= 1 # <<<<<<<<<<<<<< * if compile_status: * glGetShaderiv(shader, GL_COMPILE_STATUS, &compile_status) #px/ */ __pyx_v_compile_status = (__pyx_v_compile_status <= 1); /* "_glarea_es2.pyx":957 * printf('GL_INFO_LOG_LENGTH %d\n', compile_status) * compile_status = compile_status <= 1 * if compile_status: # <<<<<<<<<<<<<< * glGetShaderiv(shader, GL_COMPILE_STATUS, &compile_status) #px/ * #compile_status = glGetShaderiv(shader, GL_COMPILE_STATUS) */ __pyx_t_1 = (__pyx_v_compile_status != 0); if (__pyx_t_1) { /* "_glarea_es2.pyx":958 * compile_status = compile_status <= 1 * if compile_status: * glGetShaderiv(shader, GL_COMPILE_STATUS, &compile_status) #px/ # <<<<<<<<<<<<<< * #compile_status = glGetShaderiv(shader, GL_COMPILE_STATUS) * else: */ glGetShaderiv(__pyx_v_shader, GL_COMPILE_STATUS, (&__pyx_v_compile_status)); /* "_glarea_es2.pyx":957 * printf('GL_INFO_LOG_LENGTH %d\n', compile_status) * compile_status = compile_status <= 1 * if compile_status: # <<<<<<<<<<<<<< * glGetShaderiv(shader, GL_COMPILE_STATUS, &compile_status) #px/ * #compile_status = glGetShaderiv(shader, GL_COMPILE_STATUS) */ } /* "_glarea_es2.pyx":952 * #glShaderSource(shader, source.decode('utf-8')) # PyOpenGL needs str currently * glCompileShader(shader) * if debug & DEBUG_MSGGL: # <<<<<<<<<<<<<< * glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &compile_status) #px/ * #compile_status = glGetShaderiv(shader, GL_INFO_LOG_LENGTH) */ goto __pyx_L4; } /* "_glarea_es2.pyx":961 * #compile_status = glGetShaderiv(shader, GL_COMPILE_STATUS) * else: * glGetShaderiv(shader, GL_COMPILE_STATUS, &compile_status) #px/ # <<<<<<<<<<<<<< * #compile_status = glGetShaderiv(shader, GL_COMPILE_STATUS) * if not compile_status: */ /*else*/ { glGetShaderiv(__pyx_v_shader, GL_COMPILE_STATUS, (&__pyx_v_compile_status)); } __pyx_L4:; /* "_glarea_es2.pyx":963 * glGetShaderiv(shader, GL_COMPILE_STATUS, &compile_status) #px/ * #compile_status = glGetShaderiv(shader, GL_COMPILE_STATUS) * if not compile_status: # <<<<<<<<<<<<<< * _gl_print_shader_log(shader) * return shader */ __pyx_t_1 = ((!(__pyx_v_compile_status != 0)) != 0); if (__pyx_t_1) { /* "_glarea_es2.pyx":964 * #compile_status = glGetShaderiv(shader, GL_COMPILE_STATUS) * if not compile_status: * _gl_print_shader_log(shader) # <<<<<<<<<<<<<< * return shader * */ __pyx_f_11_glarea_es2__gl_print_shader_log(__pyx_v_shader); /* "_glarea_es2.pyx":963 * glGetShaderiv(shader, GL_COMPILE_STATUS, &compile_status) #px/ * #compile_status = glGetShaderiv(shader, GL_COMPILE_STATUS) * if not compile_status: # <<<<<<<<<<<<<< * _gl_print_shader_log(shader) * return shader */ } /* "_glarea_es2.pyx":965 * if not compile_status: * _gl_print_shader_log(shader) * return shader # <<<<<<<<<<<<<< * * ##pxm-FUNC P nogil */ __pyx_r = __pyx_v_shader; goto __pyx_L0; /* "_glarea_es2.pyx":939 * * ##pxm-FUNC P nogil * cdef GLuint _gl_create_compiled_shader(GLenum shadertype, char *source) nogil: # <<<<<<<<<<<<<< * cdef GLuint shader #px+ * cdef const_GLchar_ptr pchar #px+ */ /* function exit code */ __pyx_L0:; return __pyx_r; } /* "_glarea_es2.pyx":968 * * ##pxm-FUNC P nogil * cdef GLint _get_program_iv(GLuint program, GLenum pname) nogil: # <<<<<<<<<<<<<< * cdef GLint param #px+ * glGetProgramiv(program, pname, ¶m) #px/ */ static GLint __pyx_f_11_glarea_es2__get_program_iv(GLuint __pyx_v_program, GLenum __pyx_v_pname) { GLint __pyx_v_param; GLint __pyx_r; /* "_glarea_es2.pyx":970 * cdef GLint _get_program_iv(GLuint program, GLenum pname) nogil: * cdef GLint param #px+ * glGetProgramiv(program, pname, ¶m) #px/ # <<<<<<<<<<<<<< * #param = int(glGetProgramiv(program, pname)) * return param */ glGetProgramiv(__pyx_v_program, __pyx_v_pname, (&__pyx_v_param)); /* "_glarea_es2.pyx":972 * glGetProgramiv(program, pname, ¶m) #px/ * #param = int(glGetProgramiv(program, pname)) * return param # <<<<<<<<<<<<<< * * ##pxm-FUNC P nogil */ __pyx_r = __pyx_v_param; goto __pyx_L0; /* "_glarea_es2.pyx":968 * * ##pxm-FUNC P nogil * cdef GLint _get_program_iv(GLuint program, GLenum pname) nogil: # <<<<<<<<<<<<<< * cdef GLint param #px+ * glGetProgramiv(program, pname, ¶m) #px/ */ /* function exit code */ __pyx_L0:; return __pyx_r; } /* "_glarea_es2.pyx":975 * * ##pxm-FUNC P nogil * cdef GLint _gl_print_program_info(GLuint program) nogil: # <<<<<<<<<<<<<< * cdef GLint link_status, info_log_length, param, aaml, auml #px+ * cdef int i #px+ */ static GLint __pyx_f_11_glarea_es2__gl_print_program_info(GLuint __pyx_v_program) { GLint __pyx_v_link_status; GLint __pyx_v_info_log_length; GLint __pyx_v_param; GLint __pyx_v_aaml; GLint __pyx_v_auml; int __pyx_v_i; GLsizei __pyx_v_alength; GLint __pyx_v_asize; GLint __pyx_v_location; GLenum __pyx_v_atype; char __pyx_v_aname[0x400]; GLint __pyx_r; GLint __pyx_t_1; int __pyx_t_2; int __pyx_t_3; /* "_glarea_es2.pyx":983 * cdef char aname[1024] #px+ * * printf('shader program info %d\n', program) # <<<<<<<<<<<<<< * glValidateProgram(program) * printf(' delete status %d\n', _get_program_iv(program, GL_DELETE_STATUS)) */ printf(((char const *)"shader program info %d\n"), __pyx_v_program); /* "_glarea_es2.pyx":984 * * printf('shader program info %d\n', program) * glValidateProgram(program) # <<<<<<<<<<<<<< * printf(' delete status %d\n', _get_program_iv(program, GL_DELETE_STATUS)) * link_status = _get_program_iv(program, GL_LINK_STATUS) */ glValidateProgram(__pyx_v_program); /* "_glarea_es2.pyx":985 * printf('shader program info %d\n', program) * glValidateProgram(program) * printf(' delete status %d\n', _get_program_iv(program, GL_DELETE_STATUS)) # <<<<<<<<<<<<<< * link_status = _get_program_iv(program, GL_LINK_STATUS) * printf(' link status %d\n', link_status) */ printf(((char const *)" delete status %d\n"), __pyx_f_11_glarea_es2__get_program_iv(__pyx_v_program, GL_DELETE_STATUS)); /* "_glarea_es2.pyx":986 * glValidateProgram(program) * printf(' delete status %d\n', _get_program_iv(program, GL_DELETE_STATUS)) * link_status = _get_program_iv(program, GL_LINK_STATUS) # <<<<<<<<<<<<<< * printf(' link status %d\n', link_status) * printf(' validate status %d\n', _get_program_iv(program, GL_VALIDATE_STATUS)) */ __pyx_v_link_status = __pyx_f_11_glarea_es2__get_program_iv(__pyx_v_program, GL_LINK_STATUS); /* "_glarea_es2.pyx":987 * printf(' delete status %d\n', _get_program_iv(program, GL_DELETE_STATUS)) * link_status = _get_program_iv(program, GL_LINK_STATUS) * printf(' link status %d\n', link_status) # <<<<<<<<<<<<<< * printf(' validate status %d\n', _get_program_iv(program, GL_VALIDATE_STATUS)) * info_log_length = _get_program_iv(program, GL_INFO_LOG_LENGTH) */ printf(((char const *)" link status %d\n"), __pyx_v_link_status); /* "_glarea_es2.pyx":988 * link_status = _get_program_iv(program, GL_LINK_STATUS) * printf(' link status %d\n', link_status) * printf(' validate status %d\n', _get_program_iv(program, GL_VALIDATE_STATUS)) # <<<<<<<<<<<<<< * info_log_length = _get_program_iv(program, GL_INFO_LOG_LENGTH) * printf(' info log length %d\n', info_log_length) */ printf(((char const *)" validate status %d\n"), __pyx_f_11_glarea_es2__get_program_iv(__pyx_v_program, GL_VALIDATE_STATUS)); /* "_glarea_es2.pyx":989 * printf(' link status %d\n', link_status) * printf(' validate status %d\n', _get_program_iv(program, GL_VALIDATE_STATUS)) * info_log_length = _get_program_iv(program, GL_INFO_LOG_LENGTH) # <<<<<<<<<<<<<< * printf(' info log length %d\n', info_log_length) * printf(' attached shaders %d\n',_get_program_iv(program, GL_ATTACHED_SHADERS)) */ __pyx_v_info_log_length = __pyx_f_11_glarea_es2__get_program_iv(__pyx_v_program, GL_INFO_LOG_LENGTH); /* "_glarea_es2.pyx":990 * printf(' validate status %d\n', _get_program_iv(program, GL_VALIDATE_STATUS)) * info_log_length = _get_program_iv(program, GL_INFO_LOG_LENGTH) * printf(' info log length %d\n', info_log_length) # <<<<<<<<<<<<<< * printf(' attached shaders %d\n',_get_program_iv(program, GL_ATTACHED_SHADERS)) * aaml = _get_program_iv(program, GL_ACTIVE_ATTRIBUTE_MAX_LENGTH) */ printf(((char const *)" info log length %d\n"), __pyx_v_info_log_length); /* "_glarea_es2.pyx":991 * info_log_length = _get_program_iv(program, GL_INFO_LOG_LENGTH) * printf(' info log length %d\n', info_log_length) * printf(' attached shaders %d\n',_get_program_iv(program, GL_ATTACHED_SHADERS)) # <<<<<<<<<<<<<< * aaml = _get_program_iv(program, GL_ACTIVE_ATTRIBUTE_MAX_LENGTH) * printf(' active attribute max length %d\n', aaml) */ printf(((char const *)" attached shaders %d\n"), __pyx_f_11_glarea_es2__get_program_iv(__pyx_v_program, GL_ATTACHED_SHADERS)); /* "_glarea_es2.pyx":992 * printf(' info log length %d\n', info_log_length) * printf(' attached shaders %d\n',_get_program_iv(program, GL_ATTACHED_SHADERS)) * aaml = _get_program_iv(program, GL_ACTIVE_ATTRIBUTE_MAX_LENGTH) # <<<<<<<<<<<<<< * printf(' active attribute max length %d\n', aaml) * auml = _get_program_iv(program, GL_ACTIVE_UNIFORM_MAX_LENGTH) */ __pyx_v_aaml = __pyx_f_11_glarea_es2__get_program_iv(__pyx_v_program, GL_ACTIVE_ATTRIBUTE_MAX_LENGTH); /* "_glarea_es2.pyx":993 * printf(' attached shaders %d\n',_get_program_iv(program, GL_ATTACHED_SHADERS)) * aaml = _get_program_iv(program, GL_ACTIVE_ATTRIBUTE_MAX_LENGTH) * printf(' active attribute max length %d\n', aaml) # <<<<<<<<<<<<<< * auml = _get_program_iv(program, GL_ACTIVE_UNIFORM_MAX_LENGTH) * printf(' active uniform max length %d\n', auml) */ printf(((char const *)" active attribute max length %d\n"), __pyx_v_aaml); /* "_glarea_es2.pyx":994 * aaml = _get_program_iv(program, GL_ACTIVE_ATTRIBUTE_MAX_LENGTH) * printf(' active attribute max length %d\n', aaml) * auml = _get_program_iv(program, GL_ACTIVE_UNIFORM_MAX_LENGTH) # <<<<<<<<<<<<<< * printf(' active uniform max length %d\n', auml) * */ __pyx_v_auml = __pyx_f_11_glarea_es2__get_program_iv(__pyx_v_program, GL_ACTIVE_UNIFORM_MAX_LENGTH); /* "_glarea_es2.pyx":995 * printf(' active attribute max length %d\n', aaml) * auml = _get_program_iv(program, GL_ACTIVE_UNIFORM_MAX_LENGTH) * printf(' active uniform max length %d\n', auml) # <<<<<<<<<<<<<< * * glGetProgramiv(program, GL_ACTIVE_ATTRIBUTES, ¶m) #px/ */ printf(((char const *)" active uniform max length %d\n"), __pyx_v_auml); /* "_glarea_es2.pyx":997 * printf(' active uniform max length %d\n', auml) * * glGetProgramiv(program, GL_ACTIVE_ATTRIBUTES, ¶m) #px/ # <<<<<<<<<<<<<< * #param = glGetProgramiv(program, GL_ACTIVE_ATTRIBUTES) * printf('active attributes %d:\n', param) */ glGetProgramiv(__pyx_v_program, GL_ACTIVE_ATTRIBUTES, (&__pyx_v_param)); /* "_glarea_es2.pyx":999 * glGetProgramiv(program, GL_ACTIVE_ATTRIBUTES, ¶m) #px/ * #param = glGetProgramiv(program, GL_ACTIVE_ATTRIBUTES) * printf('active attributes %d:\n', param) # <<<<<<<<<<<<<< * for i in range(param): * glGetActiveAttrib(program, i, 1023, &alength, &asize, &atype, aname) #px/ */ printf(((char const *)"active attributes %d:\n"), __pyx_v_param); /* "_glarea_es2.pyx":1000 * #param = glGetProgramiv(program, GL_ACTIVE_ATTRIBUTES) * printf('active attributes %d:\n', param) * for i in range(param): # <<<<<<<<<<<<<< * glGetActiveAttrib(program, i, 1023, &alength, &asize, &atype, aname) #px/ * #aname, asize, atype = glGetActiveAttrib(program, i); alength = len(aname) */ __pyx_t_1 = __pyx_v_param; for (__pyx_t_2 = 0; __pyx_t_2 < __pyx_t_1; __pyx_t_2+=1) { __pyx_v_i = __pyx_t_2; /* "_glarea_es2.pyx":1001 * printf('active attributes %d:\n', param) * for i in range(param): * glGetActiveAttrib(program, i, 1023, &alength, &asize, &atype, aname) #px/ # <<<<<<<<<<<<<< * #aname, asize, atype = glGetActiveAttrib(program, i); alength = len(aname) * location = glGetAttribLocation(program, aname) */ glGetActiveAttrib(__pyx_v_program, __pyx_v_i, 0x3FF, (&__pyx_v_alength), (&__pyx_v_asize), (&__pyx_v_atype), __pyx_v_aname); /* "_glarea_es2.pyx":1003 * glGetActiveAttrib(program, i, 1023, &alength, &asize, &atype, aname) #px/ * #aname, asize, atype = glGetActiveAttrib(program, i); alength = len(aname) * location = glGetAttribLocation(program, aname) # <<<<<<<<<<<<<< * printf(' %d %-*s length=%d size=%d type=%d location=%d\n', i, aaml+3, aname, alength, asize, atype, location) * */ __pyx_v_location = glGetAttribLocation(__pyx_v_program, __pyx_v_aname); /* "_glarea_es2.pyx":1004 * #aname, asize, atype = glGetActiveAttrib(program, i); alength = len(aname) * location = glGetAttribLocation(program, aname) * printf(' %d %-*s length=%d size=%d type=%d location=%d\n', i, aaml+3, aname, alength, asize, atype, location) # <<<<<<<<<<<<<< * * glGetProgramiv(program, GL_ACTIVE_UNIFORMS, ¶m) #px/ */ printf(((char const *)" %d %-*s length=%d size=%d type=%d location=%d\n"), __pyx_v_i, (__pyx_v_aaml + 3), __pyx_v_aname, __pyx_v_alength, __pyx_v_asize, __pyx_v_atype, __pyx_v_location); } /* "_glarea_es2.pyx":1006 * printf(' %d %-*s length=%d size=%d type=%d location=%d\n', i, aaml+3, aname, alength, asize, atype, location) * * glGetProgramiv(program, GL_ACTIVE_UNIFORMS, ¶m) #px/ # <<<<<<<<<<<<<< * #param = glGetProgramiv(program, GL_ACTIVE_UNIFORMS) * printf('active uniforms %d:\n', param) */ glGetProgramiv(__pyx_v_program, GL_ACTIVE_UNIFORMS, (&__pyx_v_param)); /* "_glarea_es2.pyx":1008 * glGetProgramiv(program, GL_ACTIVE_UNIFORMS, ¶m) #px/ * #param = glGetProgramiv(program, GL_ACTIVE_UNIFORMS) * printf('active uniforms %d:\n', param) # <<<<<<<<<<<<<< * for i in range(param): * glGetActiveUniform(program, i, 1023, &alength, &asize, &atype, aname) #px/ */ printf(((char const *)"active uniforms %d:\n"), __pyx_v_param); /* "_glarea_es2.pyx":1009 * #param = glGetProgramiv(program, GL_ACTIVE_UNIFORMS) * printf('active uniforms %d:\n', param) * for i in range(param): # <<<<<<<<<<<<<< * glGetActiveUniform(program, i, 1023, &alength, &asize, &atype, aname) #px/ * #aname, asize, atype = glGetActiveUniform(program, i); alength = len(aname) */ __pyx_t_1 = __pyx_v_param; for (__pyx_t_2 = 0; __pyx_t_2 < __pyx_t_1; __pyx_t_2+=1) { __pyx_v_i = __pyx_t_2; /* "_glarea_es2.pyx":1010 * printf('active uniforms %d:\n', param) * for i in range(param): * glGetActiveUniform(program, i, 1023, &alength, &asize, &atype, aname) #px/ # <<<<<<<<<<<<<< * #aname, asize, atype = glGetActiveUniform(program, i); alength = len(aname) * location = glGetUniformLocation(program, aname) */ glGetActiveUniform(__pyx_v_program, __pyx_v_i, 0x3FF, (&__pyx_v_alength), (&__pyx_v_asize), (&__pyx_v_atype), __pyx_v_aname); /* "_glarea_es2.pyx":1012 * glGetActiveUniform(program, i, 1023, &alength, &asize, &atype, aname) #px/ * #aname, asize, atype = glGetActiveUniform(program, i); alength = len(aname) * location = glGetUniformLocation(program, aname) # <<<<<<<<<<<<<< * printf(' %d %-*s length=%d size=%d type=%d location=%d\n', i, auml+3, aname, alength, asize, atype, location) * return link_status and info_log_length <= 1 */ __pyx_v_location = glGetUniformLocation(__pyx_v_program, __pyx_v_aname); /* "_glarea_es2.pyx":1013 * #aname, asize, atype = glGetActiveUniform(program, i); alength = len(aname) * location = glGetUniformLocation(program, aname) * printf(' %d %-*s length=%d size=%d type=%d location=%d\n', i, auml+3, aname, alength, asize, atype, location) # <<<<<<<<<<<<<< * return link_status and info_log_length <= 1 * */ printf(((char const *)" %d %-*s length=%d size=%d type=%d location=%d\n"), __pyx_v_i, (__pyx_v_auml + 3), __pyx_v_aname, __pyx_v_alength, __pyx_v_asize, __pyx_v_atype, __pyx_v_location); } /* "_glarea_es2.pyx":1014 * location = glGetUniformLocation(program, aname) * printf(' %d %-*s length=%d size=%d type=%d location=%d\n', i, auml+3, aname, alength, asize, atype, location) * return link_status and info_log_length <= 1 # <<<<<<<<<<<<<< * * ##pxm-FUNC P nogil */ if (__pyx_v_link_status) { } else { __pyx_t_1 = __pyx_v_link_status; goto __pyx_L7_bool_binop_done; } __pyx_t_3 = (__pyx_v_info_log_length <= 1); __pyx_t_1 = __pyx_t_3; __pyx_L7_bool_binop_done:; __pyx_r = __pyx_t_1; goto __pyx_L0; /* "_glarea_es2.pyx":975 * * ##pxm-FUNC P nogil * cdef GLint _gl_print_program_info(GLuint program) nogil: # <<<<<<<<<<<<<< * cdef GLint link_status, info_log_length, param, aaml, auml #px+ * cdef int i #px+ */ /* function exit code */ __pyx_L0:; return __pyx_r; } /* "_glarea_es2.pyx":1017 * * ##pxm-FUNC P nogil * cdef void _gl_program_add_shaders(GLuint program, char *vertex_source, char *fragment_source) nogil: # <<<<<<<<<<<<<< * cdef GLuint vertex_shader = 0, fragment_shader = 0 #px+ * cdef GLint link_status #px+ */ static void __pyx_f_11_glarea_es2__gl_program_add_shaders(GLuint __pyx_v_program, char *__pyx_v_vertex_source, char *__pyx_v_fragment_source) { GLuint __pyx_v_vertex_shader; GLuint __pyx_v_fragment_shader; GLint __pyx_v_link_status; int __pyx_t_1; /* "_glarea_es2.pyx":1018 * ##pxm-FUNC P nogil * cdef void _gl_program_add_shaders(GLuint program, char *vertex_source, char *fragment_source) nogil: * cdef GLuint vertex_shader = 0, fragment_shader = 0 #px+ # <<<<<<<<<<<<<< * cdef GLint link_status #px+ * */ __pyx_v_vertex_shader = 0; __pyx_v_fragment_shader = 0; /* "_glarea_es2.pyx":1021 * cdef GLint link_status #px+ * * if debug & DEBUG_MSGGL: puts(' creating vertex shader') # <<<<<<<<<<<<<< * vertex_shader = _gl_create_compiled_shader(GL_VERTEX_SHADER, vertex_source) * if vertex_shader: */ __pyx_t_1 = ((__pyx_v_11_glarea_es2_debug & __pyx_e_11_glarea_es2_DEBUG_MSGGL) != 0); if (__pyx_t_1) { puts(((char const *)" creating vertex shader")); } /* "_glarea_es2.pyx":1022 * * if debug & DEBUG_MSGGL: puts(' creating vertex shader') * vertex_shader = _gl_create_compiled_shader(GL_VERTEX_SHADER, vertex_source) # <<<<<<<<<<<<<< * if vertex_shader: * glAttachShader(program, vertex_shader) */ __pyx_v_vertex_shader = __pyx_f_11_glarea_es2__gl_create_compiled_shader(GL_VERTEX_SHADER, __pyx_v_vertex_source); /* "_glarea_es2.pyx":1023 * if debug & DEBUG_MSGGL: puts(' creating vertex shader') * vertex_shader = _gl_create_compiled_shader(GL_VERTEX_SHADER, vertex_source) * if vertex_shader: # <<<<<<<<<<<<<< * glAttachShader(program, vertex_shader) * else: */ __pyx_t_1 = (__pyx_v_vertex_shader != 0); if (__pyx_t_1) { /* "_glarea_es2.pyx":1024 * vertex_shader = _gl_create_compiled_shader(GL_VERTEX_SHADER, vertex_source) * if vertex_shader: * glAttachShader(program, vertex_shader) # <<<<<<<<<<<<<< * else: * puts('error: no vertex shader') */ glAttachShader(__pyx_v_program, __pyx_v_vertex_shader); /* "_glarea_es2.pyx":1023 * if debug & DEBUG_MSGGL: puts(' creating vertex shader') * vertex_shader = _gl_create_compiled_shader(GL_VERTEX_SHADER, vertex_source) * if vertex_shader: # <<<<<<<<<<<<<< * glAttachShader(program, vertex_shader) * else: */ goto __pyx_L4; } /* "_glarea_es2.pyx":1026 * glAttachShader(program, vertex_shader) * else: * puts('error: no vertex shader') # <<<<<<<<<<<<<< * * if debug & DEBUG_MSGGL: puts(' creating fragment shader') */ /*else*/ { puts(((char const *)"error: no vertex shader")); } __pyx_L4:; /* "_glarea_es2.pyx":1028 * puts('error: no vertex shader') * * if debug & DEBUG_MSGGL: puts(' creating fragment shader') # <<<<<<<<<<<<<< * fragment_shader = _gl_create_compiled_shader(GL_FRAGMENT_SHADER, fragment_source) * if fragment_shader: */ __pyx_t_1 = ((__pyx_v_11_glarea_es2_debug & __pyx_e_11_glarea_es2_DEBUG_MSGGL) != 0); if (__pyx_t_1) { puts(((char const *)" creating fragment shader")); } /* "_glarea_es2.pyx":1029 * * if debug & DEBUG_MSGGL: puts(' creating fragment shader') * fragment_shader = _gl_create_compiled_shader(GL_FRAGMENT_SHADER, fragment_source) # <<<<<<<<<<<<<< * if fragment_shader: * glAttachShader(program, fragment_shader) */ __pyx_v_fragment_shader = __pyx_f_11_glarea_es2__gl_create_compiled_shader(GL_FRAGMENT_SHADER, __pyx_v_fragment_source); /* "_glarea_es2.pyx":1030 * if debug & DEBUG_MSGGL: puts(' creating fragment shader') * fragment_shader = _gl_create_compiled_shader(GL_FRAGMENT_SHADER, fragment_source) * if fragment_shader: # <<<<<<<<<<<<<< * glAttachShader(program, fragment_shader) * else: */ __pyx_t_1 = (__pyx_v_fragment_shader != 0); if (__pyx_t_1) { /* "_glarea_es2.pyx":1031 * fragment_shader = _gl_create_compiled_shader(GL_FRAGMENT_SHADER, fragment_source) * if fragment_shader: * glAttachShader(program, fragment_shader) # <<<<<<<<<<<<<< * else: * puts('error: no fragment shader') */ glAttachShader(__pyx_v_program, __pyx_v_fragment_shader); /* "_glarea_es2.pyx":1030 * if debug & DEBUG_MSGGL: puts(' creating fragment shader') * fragment_shader = _gl_create_compiled_shader(GL_FRAGMENT_SHADER, fragment_source) * if fragment_shader: # <<<<<<<<<<<<<< * glAttachShader(program, fragment_shader) * else: */ goto __pyx_L6; } /* "_glarea_es2.pyx":1033 * glAttachShader(program, fragment_shader) * else: * puts('error: no fragment shader') # <<<<<<<<<<<<<< * * glLinkProgram(program) */ /*else*/ { puts(((char const *)"error: no fragment shader")); } __pyx_L6:; /* "_glarea_es2.pyx":1035 * puts('error: no fragment shader') * * glLinkProgram(program) # <<<<<<<<<<<<<< * if debug & DEBUG_MSGGL: * link_status = _gl_print_program_info(program) */ glLinkProgram(__pyx_v_program); /* "_glarea_es2.pyx":1036 * * glLinkProgram(program) * if debug & DEBUG_MSGGL: # <<<<<<<<<<<<<< * link_status = _gl_print_program_info(program) * else: */ __pyx_t_1 = ((__pyx_v_11_glarea_es2_debug & __pyx_e_11_glarea_es2_DEBUG_MSGGL) != 0); if (__pyx_t_1) { /* "_glarea_es2.pyx":1037 * glLinkProgram(program) * if debug & DEBUG_MSGGL: * link_status = _gl_print_program_info(program) # <<<<<<<<<<<<<< * else: * glGetProgramiv(program, GL_LINK_STATUS, &link_status) #px/ */ __pyx_v_link_status = __pyx_f_11_glarea_es2__gl_print_program_info(__pyx_v_program); /* "_glarea_es2.pyx":1036 * * glLinkProgram(program) * if debug & DEBUG_MSGGL: # <<<<<<<<<<<<<< * link_status = _gl_print_program_info(program) * else: */ goto __pyx_L7; } /* "_glarea_es2.pyx":1039 * link_status = _gl_print_program_info(program) * else: * glGetProgramiv(program, GL_LINK_STATUS, &link_status) #px/ # <<<<<<<<<<<<<< * #link_status = glGetProgramiv(program, GL_LINK_STATUS) * if not link_status: */ /*else*/ { glGetProgramiv(__pyx_v_program, GL_LINK_STATUS, (&__pyx_v_link_status)); } __pyx_L7:; /* "_glarea_es2.pyx":1041 * glGetProgramiv(program, GL_LINK_STATUS, &link_status) #px/ * #link_status = glGetProgramiv(program, GL_LINK_STATUS) * if not link_status: # <<<<<<<<<<<<<< * printf('link status %d\n', link_status) * _gl_print_program_log(program) */ __pyx_t_1 = ((!(__pyx_v_link_status != 0)) != 0); if (__pyx_t_1) { /* "_glarea_es2.pyx":1042 * #link_status = glGetProgramiv(program, GL_LINK_STATUS) * if not link_status: * printf('link status %d\n', link_status) # <<<<<<<<<<<<<< * _gl_print_program_log(program) * if vertex_shader: */ printf(((char const *)"link status %d\n"), __pyx_v_link_status); /* "_glarea_es2.pyx":1043 * if not link_status: * printf('link status %d\n', link_status) * _gl_print_program_log(program) # <<<<<<<<<<<<<< * if vertex_shader: * glDetachShader(program, vertex_shader) */ __pyx_f_11_glarea_es2__gl_print_program_log(__pyx_v_program); /* "_glarea_es2.pyx":1041 * glGetProgramiv(program, GL_LINK_STATUS, &link_status) #px/ * #link_status = glGetProgramiv(program, GL_LINK_STATUS) * if not link_status: # <<<<<<<<<<<<<< * printf('link status %d\n', link_status) * _gl_print_program_log(program) */ } /* "_glarea_es2.pyx":1044 * printf('link status %d\n', link_status) * _gl_print_program_log(program) * if vertex_shader: # <<<<<<<<<<<<<< * glDetachShader(program, vertex_shader) * glDeleteShader(vertex_shader) */ __pyx_t_1 = (__pyx_v_vertex_shader != 0); if (__pyx_t_1) { /* "_glarea_es2.pyx":1045 * _gl_print_program_log(program) * if vertex_shader: * glDetachShader(program, vertex_shader) # <<<<<<<<<<<<<< * glDeleteShader(vertex_shader) * if fragment_shader: */ glDetachShader(__pyx_v_program, __pyx_v_vertex_shader); /* "_glarea_es2.pyx":1046 * if vertex_shader: * glDetachShader(program, vertex_shader) * glDeleteShader(vertex_shader) # <<<<<<<<<<<<<< * if fragment_shader: * glDetachShader(program, fragment_shader) */ glDeleteShader(__pyx_v_vertex_shader); /* "_glarea_es2.pyx":1044 * printf('link status %d\n', link_status) * _gl_print_program_log(program) * if vertex_shader: # <<<<<<<<<<<<<< * glDetachShader(program, vertex_shader) * glDeleteShader(vertex_shader) */ } /* "_glarea_es2.pyx":1047 * glDetachShader(program, vertex_shader) * glDeleteShader(vertex_shader) * if fragment_shader: # <<<<<<<<<<<<<< * glDetachShader(program, fragment_shader) * glDeleteShader(fragment_shader) */ __pyx_t_1 = (__pyx_v_fragment_shader != 0); if (__pyx_t_1) { /* "_glarea_es2.pyx":1048 * glDeleteShader(vertex_shader) * if fragment_shader: * glDetachShader(program, fragment_shader) # <<<<<<<<<<<<<< * glDeleteShader(fragment_shader) * */ glDetachShader(__pyx_v_program, __pyx_v_fragment_shader); /* "_glarea_es2.pyx":1049 * if fragment_shader: * glDetachShader(program, fragment_shader) * glDeleteShader(fragment_shader) # <<<<<<<<<<<<<< * * ##pxm-FUNC PD nogil */ glDeleteShader(__pyx_v_fragment_shader); /* "_glarea_es2.pyx":1047 * glDetachShader(program, vertex_shader) * glDeleteShader(vertex_shader) * if fragment_shader: # <<<<<<<<<<<<<< * glDetachShader(program, fragment_shader) * glDeleteShader(fragment_shader) */ } /* "_glarea_es2.pyx":1017 * * ##pxm-FUNC P nogil * cdef void _gl_program_add_shaders(GLuint program, char *vertex_source, char *fragment_source) nogil: # <<<<<<<<<<<<<< * cdef GLuint vertex_shader = 0, fragment_shader = 0 #px+ * cdef GLint link_status #px+ */ /* function exit code */ } /* "_glarea_es2.pyx":1052 * * ##pxm-FUNC PD nogil * cdef void gl_create_render_program() nogil: # <<<<<<<<<<<<<< * cdef GLint location #px+ * if debug & DEBUG_MSGGL: puts('Creating render shaders:') */ static void __pyx_f_11_glarea_es2_gl_create_render_program(void) { GLint __pyx_v_location; int __pyx_t_1; /* "_glarea_es2.pyx":1054 * cdef void gl_create_render_program() nogil: * cdef GLint location #px+ * if debug & DEBUG_MSGGL: puts('Creating render shaders:') # <<<<<<<<<<<<<< * if renderdata.prog_render > 0: * glDeleteProgram(renderdata.prog_render) */ __pyx_t_1 = ((__pyx_v_11_glarea_es2_debug & __pyx_e_11_glarea_es2_DEBUG_MSGGL) != 0); if (__pyx_t_1) { puts(((char const *)"Creating render shaders:")); } /* "_glarea_es2.pyx":1055 * cdef GLint location #px+ * if debug & DEBUG_MSGGL: puts('Creating render shaders:') * if renderdata.prog_render > 0: # <<<<<<<<<<<<<< * glDeleteProgram(renderdata.prog_render) * renderdata.prog_render = glCreateProgram() */ __pyx_t_1 = ((__pyx_v_11_glarea_es2_renderdata.prog_render > 0) != 0); if (__pyx_t_1) { /* "_glarea_es2.pyx":1056 * if debug & DEBUG_MSGGL: puts('Creating render shaders:') * if renderdata.prog_render > 0: * glDeleteProgram(renderdata.prog_render) # <<<<<<<<<<<<<< * renderdata.prog_render = glCreateProgram() * glBindAttribLocation(renderdata.prog_render, gldraw.ATTRIB_LOCATION+0, b'vertex_attr') */ glDeleteProgram(__pyx_v_11_glarea_es2_renderdata.prog_render); /* "_glarea_es2.pyx":1055 * cdef GLint location #px+ * if debug & DEBUG_MSGGL: puts('Creating render shaders:') * if renderdata.prog_render > 0: # <<<<<<<<<<<<<< * glDeleteProgram(renderdata.prog_render) * renderdata.prog_render = glCreateProgram() */ } /* "_glarea_es2.pyx":1057 * if renderdata.prog_render > 0: * glDeleteProgram(renderdata.prog_render) * renderdata.prog_render = glCreateProgram() # <<<<<<<<<<<<<< * glBindAttribLocation(renderdata.prog_render, gldraw.ATTRIB_LOCATION+0, b'vertex_attr') * glBindAttribLocation(renderdata.prog_render, gldraw.ATTRIB_LOCATION+1, b'normal_attr') */ __pyx_v_11_glarea_es2_renderdata.prog_render = glCreateProgram(); /* "_glarea_es2.pyx":1058 * glDeleteProgram(renderdata.prog_render) * renderdata.prog_render = glCreateProgram() * glBindAttribLocation(renderdata.prog_render, gldraw.ATTRIB_LOCATION+0, b'vertex_attr') # <<<<<<<<<<<<<< * glBindAttribLocation(renderdata.prog_render, gldraw.ATTRIB_LOCATION+1, b'normal_attr') * glBindAttribLocation(renderdata.prog_render, gldraw.ATTRIB_LOCATION+2, b'color_attr') */ glBindAttribLocation(__pyx_v_11_glarea_es2_renderdata.prog_render, (__pyx_e_11_gldraw_es2_ATTRIB_LOCATION + 0), ((GLchar *)"vertex_attr")); /* "_glarea_es2.pyx":1059 * renderdata.prog_render = glCreateProgram() * glBindAttribLocation(renderdata.prog_render, gldraw.ATTRIB_LOCATION+0, b'vertex_attr') * glBindAttribLocation(renderdata.prog_render, gldraw.ATTRIB_LOCATION+1, b'normal_attr') # <<<<<<<<<<<<<< * glBindAttribLocation(renderdata.prog_render, gldraw.ATTRIB_LOCATION+2, b'color_attr') * glBindAttribLocation(renderdata.prog_render, gldraw.ATTRIB_LOCATION+3, b'texcoord_attr') */ glBindAttribLocation(__pyx_v_11_glarea_es2_renderdata.prog_render, (__pyx_e_11_gldraw_es2_ATTRIB_LOCATION + 1), ((GLchar *)"normal_attr")); /* "_glarea_es2.pyx":1060 * glBindAttribLocation(renderdata.prog_render, gldraw.ATTRIB_LOCATION+0, b'vertex_attr') * glBindAttribLocation(renderdata.prog_render, gldraw.ATTRIB_LOCATION+1, b'normal_attr') * glBindAttribLocation(renderdata.prog_render, gldraw.ATTRIB_LOCATION+2, b'color_attr') # <<<<<<<<<<<<<< * glBindAttribLocation(renderdata.prog_render, gldraw.ATTRIB_LOCATION+3, b'texcoord_attr') * glBindAttribLocation(renderdata.prog_render, gldraw.ATTRIB_LOCATION+4, b'barycentric_attr') */ glBindAttribLocation(__pyx_v_11_glarea_es2_renderdata.prog_render, (__pyx_e_11_gldraw_es2_ATTRIB_LOCATION + 2), ((GLchar *)"color_attr")); /* "_glarea_es2.pyx":1061 * glBindAttribLocation(renderdata.prog_render, gldraw.ATTRIB_LOCATION+1, b'normal_attr') * glBindAttribLocation(renderdata.prog_render, gldraw.ATTRIB_LOCATION+2, b'color_attr') * glBindAttribLocation(renderdata.prog_render, gldraw.ATTRIB_LOCATION+3, b'texcoord_attr') # <<<<<<<<<<<<<< * glBindAttribLocation(renderdata.prog_render, gldraw.ATTRIB_LOCATION+4, b'barycentric_attr') * _gl_program_add_shaders(renderdata.prog_render, renderdata.shader_vertsrc, renderdata.shader_fragsrc) */ glBindAttribLocation(__pyx_v_11_glarea_es2_renderdata.prog_render, (__pyx_e_11_gldraw_es2_ATTRIB_LOCATION + 3), ((GLchar *)"texcoord_attr")); /* "_glarea_es2.pyx":1062 * glBindAttribLocation(renderdata.prog_render, gldraw.ATTRIB_LOCATION+2, b'color_attr') * glBindAttribLocation(renderdata.prog_render, gldraw.ATTRIB_LOCATION+3, b'texcoord_attr') * glBindAttribLocation(renderdata.prog_render, gldraw.ATTRIB_LOCATION+4, b'barycentric_attr') # <<<<<<<<<<<<<< * _gl_program_add_shaders(renderdata.prog_render, renderdata.shader_vertsrc, renderdata.shader_fragsrc) * if renderdata.prog_render > 0: */ glBindAttribLocation(__pyx_v_11_glarea_es2_renderdata.prog_render, (__pyx_e_11_gldraw_es2_ATTRIB_LOCATION + 4), ((GLchar *)"barycentric_attr")); /* "_glarea_es2.pyx":1063 * glBindAttribLocation(renderdata.prog_render, gldraw.ATTRIB_LOCATION+3, b'texcoord_attr') * glBindAttribLocation(renderdata.prog_render, gldraw.ATTRIB_LOCATION+4, b'barycentric_attr') * _gl_program_add_shaders(renderdata.prog_render, renderdata.shader_vertsrc, renderdata.shader_fragsrc) # <<<<<<<<<<<<<< * if renderdata.prog_render > 0: * glUseProgram(renderdata.prog_render) */ __pyx_f_11_glarea_es2__gl_program_add_shaders(__pyx_v_11_glarea_es2_renderdata.prog_render, __pyx_v_11_glarea_es2_renderdata.shader_vertsrc, __pyx_v_11_glarea_es2_renderdata.shader_fragsrc); /* "_glarea_es2.pyx":1064 * glBindAttribLocation(renderdata.prog_render, gldraw.ATTRIB_LOCATION+4, b'barycentric_attr') * _gl_program_add_shaders(renderdata.prog_render, renderdata.shader_vertsrc, renderdata.shader_fragsrc) * if renderdata.prog_render > 0: # <<<<<<<<<<<<<< * glUseProgram(renderdata.prog_render) * location = glGetUniformLocation(renderdata.prog_render, b'tex') */ __pyx_t_1 = ((__pyx_v_11_glarea_es2_renderdata.prog_render > 0) != 0); if (__pyx_t_1) { /* "_glarea_es2.pyx":1065 * _gl_program_add_shaders(renderdata.prog_render, renderdata.shader_vertsrc, renderdata.shader_fragsrc) * if renderdata.prog_render > 0: * glUseProgram(renderdata.prog_render) # <<<<<<<<<<<<<< * location = glGetUniformLocation(renderdata.prog_render, b'tex') * glUniform1i(location, 0) # 0 is the texture unit (-> glActiveTexture) */ glUseProgram(__pyx_v_11_glarea_es2_renderdata.prog_render); /* "_glarea_es2.pyx":1066 * if renderdata.prog_render > 0: * glUseProgram(renderdata.prog_render) * location = glGetUniformLocation(renderdata.prog_render, b'tex') # <<<<<<<<<<<<<< * glUniform1i(location, 0) # 0 is the texture unit (-> glActiveTexture) * renderdata.modelview_location = glGetUniformLocation(renderdata.prog_render, b'modelview') */ __pyx_v_location = glGetUniformLocation(__pyx_v_11_glarea_es2_renderdata.prog_render, ((GLchar *)"tex")); /* "_glarea_es2.pyx":1067 * glUseProgram(renderdata.prog_render) * location = glGetUniformLocation(renderdata.prog_render, b'tex') * glUniform1i(location, 0) # 0 is the texture unit (-> glActiveTexture) # <<<<<<<<<<<<<< * renderdata.modelview_location = glGetUniformLocation(renderdata.prog_render, b'modelview') * renderdata.projection_location = glGetUniformLocation(renderdata.prog_render, b'projection') */ glUniform1i(__pyx_v_location, 0); /* "_glarea_es2.pyx":1068 * location = glGetUniformLocation(renderdata.prog_render, b'tex') * glUniform1i(location, 0) # 0 is the texture unit (-> glActiveTexture) * renderdata.modelview_location = glGetUniformLocation(renderdata.prog_render, b'modelview') # <<<<<<<<<<<<<< * renderdata.projection_location = glGetUniformLocation(renderdata.prog_render, b'projection') * location = glGetUniformLocation(renderdata.prog_render, b'object') */ __pyx_v_11_glarea_es2_renderdata.modelview_location = glGetUniformLocation(__pyx_v_11_glarea_es2_renderdata.prog_render, ((GLchar *)"modelview")); /* "_glarea_es2.pyx":1069 * glUniform1i(location, 0) # 0 is the texture unit (-> glActiveTexture) * renderdata.modelview_location = glGetUniformLocation(renderdata.prog_render, b'modelview') * renderdata.projection_location = glGetUniformLocation(renderdata.prog_render, b'projection') # <<<<<<<<<<<<<< * location = glGetUniformLocation(renderdata.prog_render, b'object') * gldraw.gl_init_object_location(location) */ __pyx_v_11_glarea_es2_renderdata.projection_location = glGetUniformLocation(__pyx_v_11_glarea_es2_renderdata.prog_render, ((GLchar *)"projection")); /* "_glarea_es2.pyx":1070 * renderdata.modelview_location = glGetUniformLocation(renderdata.prog_render, b'modelview') * renderdata.projection_location = glGetUniformLocation(renderdata.prog_render, b'projection') * location = glGetUniformLocation(renderdata.prog_render, b'object') # <<<<<<<<<<<<<< * gldraw.gl_init_object_location(location) * */ __pyx_v_location = glGetUniformLocation(__pyx_v_11_glarea_es2_renderdata.prog_render, ((GLchar *)"object")); /* "_glarea_es2.pyx":1071 * renderdata.projection_location = glGetUniformLocation(renderdata.prog_render, b'projection') * location = glGetUniformLocation(renderdata.prog_render, b'object') * gldraw.gl_init_object_location(location) # <<<<<<<<<<<<<< * * ##pxm-FUNC P nogil */ __pyx_f_11_gldraw_es2_gl_init_object_location(__pyx_v_location); /* "_glarea_es2.pyx":1064 * glBindAttribLocation(renderdata.prog_render, gldraw.ATTRIB_LOCATION+4, b'barycentric_attr') * _gl_program_add_shaders(renderdata.prog_render, renderdata.shader_vertsrc, renderdata.shader_fragsrc) * if renderdata.prog_render > 0: # <<<<<<<<<<<<<< * glUseProgram(renderdata.prog_render) * location = glGetUniformLocation(renderdata.prog_render, b'tex') */ } /* "_glarea_es2.pyx":1052 * * ##pxm-FUNC PD nogil * cdef void gl_create_render_program() nogil: # <<<<<<<<<<<<<< * cdef GLint location #px+ * if debug & DEBUG_MSGGL: puts('Creating render shaders:') */ /* function exit code */ } /* "_glarea_es2.pyx":1074 * * ##pxm-FUNC P nogil * cdef void gl_create_hud_program() nogil: # <<<<<<<<<<<<<< * cdef GLint location #px+ * if debug & DEBUG_MSGGL: puts('Creating "hud" shaders:') */ static void __pyx_f_11_glarea_es2_gl_create_hud_program(void) { int __pyx_t_1; /* "_glarea_es2.pyx":1076 * cdef void gl_create_hud_program() nogil: * cdef GLint location #px+ * if debug & DEBUG_MSGGL: puts('Creating "hud" shaders:') # <<<<<<<<<<<<<< * if renderdata.prog_hud > 0: * glDeleteProgram(renderdata.prog_hud) */ __pyx_t_1 = ((__pyx_v_11_glarea_es2_debug & __pyx_e_11_glarea_es2_DEBUG_MSGGL) != 0); if (__pyx_t_1) { puts(((char const *)"Creating \"hud\" shaders:")); } /* "_glarea_es2.pyx":1077 * cdef GLint location #px+ * if debug & DEBUG_MSGGL: puts('Creating "hud" shaders:') * if renderdata.prog_hud > 0: # <<<<<<<<<<<<<< * glDeleteProgram(renderdata.prog_hud) * renderdata.prog_hud = glCreateProgram() */ __pyx_t_1 = ((__pyx_v_11_glarea_es2_renderdata.prog_hud > 0) != 0); if (__pyx_t_1) { /* "_glarea_es2.pyx":1078 * if debug & DEBUG_MSGGL: puts('Creating "hud" shaders:') * if renderdata.prog_hud > 0: * glDeleteProgram(renderdata.prog_hud) # <<<<<<<<<<<<<< * renderdata.prog_hud = glCreateProgram() * glBindAttribLocation(renderdata.prog_hud, gldraw.ATTRIB_LOCATION+0, b'vertex_attr') */ glDeleteProgram(__pyx_v_11_glarea_es2_renderdata.prog_hud); /* "_glarea_es2.pyx":1077 * cdef GLint location #px+ * if debug & DEBUG_MSGGL: puts('Creating "hud" shaders:') * if renderdata.prog_hud > 0: # <<<<<<<<<<<<<< * glDeleteProgram(renderdata.prog_hud) * renderdata.prog_hud = glCreateProgram() */ } /* "_glarea_es2.pyx":1079 * if renderdata.prog_hud > 0: * glDeleteProgram(renderdata.prog_hud) * renderdata.prog_hud = glCreateProgram() # <<<<<<<<<<<<<< * glBindAttribLocation(renderdata.prog_hud, gldraw.ATTRIB_LOCATION+0, b'vertex_attr') * glBindAttribLocation(renderdata.prog_hud, gldraw.ATTRIB_LOCATION+2, b'color_attr') */ __pyx_v_11_glarea_es2_renderdata.prog_hud = glCreateProgram(); /* "_glarea_es2.pyx":1080 * glDeleteProgram(renderdata.prog_hud) * renderdata.prog_hud = glCreateProgram() * glBindAttribLocation(renderdata.prog_hud, gldraw.ATTRIB_LOCATION+0, b'vertex_attr') # <<<<<<<<<<<<<< * glBindAttribLocation(renderdata.prog_hud, gldraw.ATTRIB_LOCATION+2, b'color_attr') * _gl_program_add_shaders(renderdata.prog_hud, renderdata.hud_vertsrc, renderdata.hud_fragsrc) */ glBindAttribLocation(__pyx_v_11_glarea_es2_renderdata.prog_hud, (__pyx_e_11_gldraw_es2_ATTRIB_LOCATION + 0), ((GLchar *)"vertex_attr")); /* "_glarea_es2.pyx":1081 * renderdata.prog_hud = glCreateProgram() * glBindAttribLocation(renderdata.prog_hud, gldraw.ATTRIB_LOCATION+0, b'vertex_attr') * glBindAttribLocation(renderdata.prog_hud, gldraw.ATTRIB_LOCATION+2, b'color_attr') # <<<<<<<<<<<<<< * _gl_program_add_shaders(renderdata.prog_hud, renderdata.hud_vertsrc, renderdata.hud_fragsrc) * if renderdata.prog_hud > 0: */ glBindAttribLocation(__pyx_v_11_glarea_es2_renderdata.prog_hud, (__pyx_e_11_gldraw_es2_ATTRIB_LOCATION + 2), ((GLchar *)"color_attr")); /* "_glarea_es2.pyx":1082 * glBindAttribLocation(renderdata.prog_hud, gldraw.ATTRIB_LOCATION+0, b'vertex_attr') * glBindAttribLocation(renderdata.prog_hud, gldraw.ATTRIB_LOCATION+2, b'color_attr') * _gl_program_add_shaders(renderdata.prog_hud, renderdata.hud_vertsrc, renderdata.hud_fragsrc) # <<<<<<<<<<<<<< * if renderdata.prog_hud > 0: * glUseProgram(renderdata.prog_hud) */ __pyx_f_11_glarea_es2__gl_program_add_shaders(__pyx_v_11_glarea_es2_renderdata.prog_hud, __pyx_v_11_glarea_es2_renderdata.hud_vertsrc, __pyx_v_11_glarea_es2_renderdata.hud_fragsrc); /* "_glarea_es2.pyx":1083 * glBindAttribLocation(renderdata.prog_hud, gldraw.ATTRIB_LOCATION+2, b'color_attr') * _gl_program_add_shaders(renderdata.prog_hud, renderdata.hud_vertsrc, renderdata.hud_fragsrc) * if renderdata.prog_hud > 0: # <<<<<<<<<<<<<< * glUseProgram(renderdata.prog_hud) * */ __pyx_t_1 = ((__pyx_v_11_glarea_es2_renderdata.prog_hud > 0) != 0); if (__pyx_t_1) { /* "_glarea_es2.pyx":1084 * _gl_program_add_shaders(renderdata.prog_hud, renderdata.hud_vertsrc, renderdata.hud_fragsrc) * if renderdata.prog_hud > 0: * glUseProgram(renderdata.prog_hud) # <<<<<<<<<<<<<< * * ##pxm-FUNC P nogil */ glUseProgram(__pyx_v_11_glarea_es2_renderdata.prog_hud); /* "_glarea_es2.pyx":1083 * glBindAttribLocation(renderdata.prog_hud, gldraw.ATTRIB_LOCATION+2, b'color_attr') * _gl_program_add_shaders(renderdata.prog_hud, renderdata.hud_vertsrc, renderdata.hud_fragsrc) * if renderdata.prog_hud > 0: # <<<<<<<<<<<<<< * glUseProgram(renderdata.prog_hud) * */ } /* "_glarea_es2.pyx":1074 * * ##pxm-FUNC P nogil * cdef void gl_create_hud_program() nogil: # <<<<<<<<<<<<<< * cdef GLint location #px+ * if debug & DEBUG_MSGGL: puts('Creating "hud" shaders:') */ /* function exit code */ } /* "_glarea_es2.pyx":1087 * * ##pxm-FUNC P nogil * cdef void gl_create_pick_program() nogil: # <<<<<<<<<<<<<< * if debug & DEBUG_MSGGL: puts('Creating "pick" shaders:') * if renderdata.prog_pick > 0: */ static void __pyx_f_11_glarea_es2_gl_create_pick_program(void) { int __pyx_t_1; /* "_glarea_es2.pyx":1088 * ##pxm-FUNC P nogil * cdef void gl_create_pick_program() nogil: * if debug & DEBUG_MSGGL: puts('Creating "pick" shaders:') # <<<<<<<<<<<<<< * if renderdata.prog_pick > 0: * glDeleteProgram(renderdata.prog_pick) */ __pyx_t_1 = ((__pyx_v_11_glarea_es2_debug & __pyx_e_11_glarea_es2_DEBUG_MSGGL) != 0); if (__pyx_t_1) { puts(((char const *)"Creating \"pick\" shaders:")); } /* "_glarea_es2.pyx":1089 * cdef void gl_create_pick_program() nogil: * if debug & DEBUG_MSGGL: puts('Creating "pick" shaders:') * if renderdata.prog_pick > 0: # <<<<<<<<<<<<<< * glDeleteProgram(renderdata.prog_pick) * renderdata.prog_pick = glCreateProgram() */ __pyx_t_1 = ((__pyx_v_11_glarea_es2_renderdata.prog_pick > 0) != 0); if (__pyx_t_1) { /* "_glarea_es2.pyx":1090 * if debug & DEBUG_MSGGL: puts('Creating "pick" shaders:') * if renderdata.prog_pick > 0: * glDeleteProgram(renderdata.prog_pick) # <<<<<<<<<<<<<< * renderdata.prog_pick = glCreateProgram() * glBindAttribLocation(renderdata.prog_pick, gldraw.PICKATTRIB_LOCATION+0, b'vertex_attr') */ glDeleteProgram(__pyx_v_11_glarea_es2_renderdata.prog_pick); /* "_glarea_es2.pyx":1089 * cdef void gl_create_pick_program() nogil: * if debug & DEBUG_MSGGL: puts('Creating "pick" shaders:') * if renderdata.prog_pick > 0: # <<<<<<<<<<<<<< * glDeleteProgram(renderdata.prog_pick) * renderdata.prog_pick = glCreateProgram() */ } /* "_glarea_es2.pyx":1091 * if renderdata.prog_pick > 0: * glDeleteProgram(renderdata.prog_pick) * renderdata.prog_pick = glCreateProgram() # <<<<<<<<<<<<<< * glBindAttribLocation(renderdata.prog_pick, gldraw.PICKATTRIB_LOCATION+0, b'vertex_attr') * glBindAttribLocation(renderdata.prog_pick, gldraw.PICKATTRIB_LOCATION+1, b'color_attr') */ __pyx_v_11_glarea_es2_renderdata.prog_pick = glCreateProgram(); /* "_glarea_es2.pyx":1092 * glDeleteProgram(renderdata.prog_pick) * renderdata.prog_pick = glCreateProgram() * glBindAttribLocation(renderdata.prog_pick, gldraw.PICKATTRIB_LOCATION+0, b'vertex_attr') # <<<<<<<<<<<<<< * glBindAttribLocation(renderdata.prog_pick, gldraw.PICKATTRIB_LOCATION+1, b'color_attr') * _gl_program_add_shaders(renderdata.prog_pick, renderdata.pick_vertsrc, renderdata.pick_fragsrc) */ glBindAttribLocation(__pyx_v_11_glarea_es2_renderdata.prog_pick, (__pyx_e_11_gldraw_es2_PICKATTRIB_LOCATION + 0), ((GLchar *)"vertex_attr")); /* "_glarea_es2.pyx":1093 * renderdata.prog_pick = glCreateProgram() * glBindAttribLocation(renderdata.prog_pick, gldraw.PICKATTRIB_LOCATION+0, b'vertex_attr') * glBindAttribLocation(renderdata.prog_pick, gldraw.PICKATTRIB_LOCATION+1, b'color_attr') # <<<<<<<<<<<<<< * _gl_program_add_shaders(renderdata.prog_pick, renderdata.pick_vertsrc, renderdata.pick_fragsrc) * if renderdata.prog_pick > 0: */ glBindAttribLocation(__pyx_v_11_glarea_es2_renderdata.prog_pick, (__pyx_e_11_gldraw_es2_PICKATTRIB_LOCATION + 1), ((GLchar *)"color_attr")); /* "_glarea_es2.pyx":1094 * glBindAttribLocation(renderdata.prog_pick, gldraw.PICKATTRIB_LOCATION+0, b'vertex_attr') * glBindAttribLocation(renderdata.prog_pick, gldraw.PICKATTRIB_LOCATION+1, b'color_attr') * _gl_program_add_shaders(renderdata.prog_pick, renderdata.pick_vertsrc, renderdata.pick_fragsrc) # <<<<<<<<<<<<<< * if renderdata.prog_pick > 0: * glUseProgram(renderdata.prog_pick) */ __pyx_f_11_glarea_es2__gl_program_add_shaders(__pyx_v_11_glarea_es2_renderdata.prog_pick, __pyx_v_11_glarea_es2_renderdata.pick_vertsrc, __pyx_v_11_glarea_es2_renderdata.pick_fragsrc); /* "_glarea_es2.pyx":1095 * glBindAttribLocation(renderdata.prog_pick, gldraw.PICKATTRIB_LOCATION+1, b'color_attr') * _gl_program_add_shaders(renderdata.prog_pick, renderdata.pick_vertsrc, renderdata.pick_fragsrc) * if renderdata.prog_pick > 0: # <<<<<<<<<<<<<< * glUseProgram(renderdata.prog_pick) * renderdata.picking_location = glGetUniformLocation(renderdata.prog_pick, b'picking') */ __pyx_t_1 = ((__pyx_v_11_glarea_es2_renderdata.prog_pick > 0) != 0); if (__pyx_t_1) { /* "_glarea_es2.pyx":1096 * _gl_program_add_shaders(renderdata.prog_pick, renderdata.pick_vertsrc, renderdata.pick_fragsrc) * if renderdata.prog_pick > 0: * glUseProgram(renderdata.prog_pick) # <<<<<<<<<<<<<< * renderdata.picking_location = glGetUniformLocation(renderdata.prog_pick, b'picking') * renderdata.projection_pick_location = glGetUniformLocation(renderdata.prog_pick, b'projection') */ glUseProgram(__pyx_v_11_glarea_es2_renderdata.prog_pick); /* "_glarea_es2.pyx":1097 * if renderdata.prog_pick > 0: * glUseProgram(renderdata.prog_pick) * renderdata.picking_location = glGetUniformLocation(renderdata.prog_pick, b'picking') # <<<<<<<<<<<<<< * renderdata.projection_pick_location = glGetUniformLocation(renderdata.prog_pick, b'projection') * renderdata.modelview_pick_location = glGetUniformLocation(renderdata.prog_pick, b'modelview') */ __pyx_v_11_glarea_es2_renderdata.picking_location = glGetUniformLocation(__pyx_v_11_glarea_es2_renderdata.prog_pick, ((GLchar *)"picking")); /* "_glarea_es2.pyx":1098 * glUseProgram(renderdata.prog_pick) * renderdata.picking_location = glGetUniformLocation(renderdata.prog_pick, b'picking') * renderdata.projection_pick_location = glGetUniformLocation(renderdata.prog_pick, b'projection') # <<<<<<<<<<<<<< * renderdata.modelview_pick_location = glGetUniformLocation(renderdata.prog_pick, b'modelview') * */ __pyx_v_11_glarea_es2_renderdata.projection_pick_location = glGetUniformLocation(__pyx_v_11_glarea_es2_renderdata.prog_pick, ((GLchar *)"projection")); /* "_glarea_es2.pyx":1099 * renderdata.picking_location = glGetUniformLocation(renderdata.prog_pick, b'picking') * renderdata.projection_pick_location = glGetUniformLocation(renderdata.prog_pick, b'projection') * renderdata.modelview_pick_location = glGetUniformLocation(renderdata.prog_pick, b'modelview') # <<<<<<<<<<<<<< * * */ __pyx_v_11_glarea_es2_renderdata.modelview_pick_location = glGetUniformLocation(__pyx_v_11_glarea_es2_renderdata.prog_pick, ((GLchar *)"modelview")); /* "_glarea_es2.pyx":1095 * glBindAttribLocation(renderdata.prog_pick, gldraw.PICKATTRIB_LOCATION+1, b'color_attr') * _gl_program_add_shaders(renderdata.prog_pick, renderdata.pick_vertsrc, renderdata.pick_fragsrc) * if renderdata.prog_pick > 0: # <<<<<<<<<<<<<< * glUseProgram(renderdata.prog_pick) * renderdata.picking_location = glGetUniformLocation(renderdata.prog_pick, b'picking') */ } /* "_glarea_es2.pyx":1087 * * ##pxm-FUNC P nogil * cdef void gl_create_pick_program() nogil: # <<<<<<<<<<<<<< * if debug & DEBUG_MSGGL: puts('Creating "pick" shaders:') * if renderdata.prog_pick > 0: */ /* function exit code */ } static PyMethodDef __pyx_methods[] = { {"set_animation_start", (PyCFunction)__pyx_pw_11_glarea_es2_17set_animation_start, METH_VARARGS|METH_KEYWORDS, 0}, {"set_atlas_data", (PyCFunction)__pyx_pw_11_glarea_es2_31set_atlas_data, METH_VARARGS|METH_KEYWORDS, 0}, {0, 0, 0, 0} }; #if PY_MAJOR_VERSION >= 3 static struct PyModuleDef __pyx_moduledef = { #if PY_VERSION_HEX < 0x03020000 { PyObject_HEAD_INIT(NULL) NULL, 0, NULL }, #else PyModuleDef_HEAD_INIT, #endif "_glarea_es2", 0, /* m_doc */ -1, /* m_size */ __pyx_methods /* m_methods */, NULL, /* m_reload */ NULL, /* m_traverse */ NULL, /* m_clear */ NULL /* m_free */ }; #endif static __Pyx_StringTabEntry __pyx_string_tab[] = { {&__pyx_n_s_DEBUG_DRAW, __pyx_k_DEBUG_DRAW, sizeof(__pyx_k_DEBUG_DRAW), 0, 0, 1, 1}, {&__pyx_n_s_DEBUG_MSGEXT, __pyx_k_DEBUG_MSGEXT, sizeof(__pyx_k_DEBUG_MSGEXT), 0, 0, 1, 1}, {&__pyx_n_s_DEBUG_MSGGL, __pyx_k_DEBUG_MSGGL, sizeof(__pyx_k_DEBUG_MSGGL), 0, 0, 1, 1}, {&__pyx_n_s_DEBUG_PICK, __pyx_k_DEBUG_PICK, sizeof(__pyx_k_DEBUG_PICK), 0, 0, 1, 1}, {&__pyx_kp_u_GL_type_es2, __pyx_k_GL_type_es2, sizeof(__pyx_k_GL_type_es2), 0, 1, 0, 0}, {&__pyx_kp_u_OFFSCREEN, __pyx_k_OFFSCREEN, sizeof(__pyx_k_OFFSCREEN), 0, 1, 0, 0}, {&__pyx_kp_b__4, __pyx_k__4, sizeof(__pyx_k__4), 0, 0, 0, 0}, {&__pyx_n_s_angle, __pyx_k_angle, sizeof(__pyx_k_angle), 0, 0, 1, 1}, {&__pyx_n_s_append, __pyx_k_append, sizeof(__pyx_k_append), 0, 0, 1, 1}, {&__pyx_n_s_atlasdata, __pyx_k_atlasdata, sizeof(__pyx_k_atlasdata), 0, 0, 1, 1}, {&__pyx_n_s_axisx, __pyx_k_axisx, sizeof(__pyx_k_axisx), 0, 0, 1, 1}, {&__pyx_n_s_axisy, __pyx_k_axisy, sizeof(__pyx_k_axisy), 0, 0, 1, 1}, {&__pyx_n_s_axisz, __pyx_k_axisz, sizeof(__pyx_k_axisz), 0, 0, 1, 1}, {&__pyx_n_s_b, __pyx_k_b, sizeof(__pyx_k_b), 0, 0, 1, 1}, {&__pyx_n_s_blocks, __pyx_k_blocks, sizeof(__pyx_k_blocks), 0, 0, 1, 1}, {&__pyx_n_s_blue, __pyx_k_blue, sizeof(__pyx_k_blue), 0, 0, 1, 1}, {&__pyx_n_s_bounding_sphere_radius, __pyx_k_bounding_sphere_radius, sizeof(__pyx_k_bounding_sphere_radius), 0, 0, 1, 1}, {&__pyx_n_s_cnts_block, __pyx_k_cnts_block, sizeof(__pyx_k_cnts_block), 0, 0, 1, 1}, {&__pyx_kp_u_compiled, __pyx_k_compiled, sizeof(__pyx_k_compiled), 0, 1, 0, 0}, {&__pyx_n_s_compiled_2, __pyx_k_compiled_2, sizeof(__pyx_k_compiled_2), 0, 0, 1, 1}, {&__pyx_n_s_d, __pyx_k_d, sizeof(__pyx_k_d), 0, 0, 1, 1}, {&__pyx_n_s_data, __pyx_k_data, sizeof(__pyx_k_data), 0, 0, 1, 1}, {&__pyx_n_s_doc, __pyx_k_doc, sizeof(__pyx_k_doc), 0, 0, 1, 1}, {&__pyx_n_s_enumerate, __pyx_k_enumerate, sizeof(__pyx_k_enumerate), 0, 0, 1, 1}, {&__pyx_n_s_fixedshaders, __pyx_k_fixedshaders, sizeof(__pyx_k_fixedshaders), 0, 0, 1, 1}, {&__pyx_n_u_fixedshaders, __pyx_k_fixedshaders, sizeof(__pyx_k_fixedshaders), 0, 1, 0, 1}, {&__pyx_n_s_fovy_angle, __pyx_k_fovy_angle, sizeof(__pyx_k_fovy_angle), 0, 0, 1, 1}, {&__pyx_kp_u_from_package, __pyx_k_from_package, sizeof(__pyx_k_from_package), 0, 1, 0, 0}, {&__pyx_n_s_get_cursor_angle, __pyx_k_get_cursor_angle, sizeof(__pyx_k_get_cursor_angle), 0, 0, 1, 1}, {&__pyx_n_s_glarea_es2, __pyx_k_glarea_es2, sizeof(__pyx_k_glarea_es2), 0, 0, 1, 1}, {&__pyx_n_s_green, __pyx_k_green, sizeof(__pyx_k_green), 0, 0, 1, 1}, {&__pyx_n_s_h, __pyx_k_h, sizeof(__pyx_k_h), 0, 0, 1, 1}, {&__pyx_kp_s_tmp, __pyx_k_tmp, sizeof(__pyx_k_tmp), 0, 0, 1, 0}, {&__pyx_n_s_i, __pyx_k_i, sizeof(__pyx_k_i), 0, 0, 1, 1}, {&__pyx_n_s_init_engine, __pyx_k_init_engine, sizeof(__pyx_k_init_engine), 0, 0, 1, 1}, {&__pyx_kp_u_init_module, __pyx_k_init_module, sizeof(__pyx_k_init_module), 0, 1, 0, 0}, {&__pyx_n_s_j, __pyx_k_j, sizeof(__pyx_k_j), 0, 0, 1, 1}, {&__pyx_n_s_main, __pyx_k_main, sizeof(__pyx_k_main), 0, 0, 1, 1}, {&__pyx_n_s_metaclass, __pyx_k_metaclass, sizeof(__pyx_k_metaclass), 0, 0, 1, 1}, {&__pyx_n_s_module, __pyx_k_module, sizeof(__pyx_k_module), 0, 0, 1, 1}, {&__pyx_n_s_module_2, __pyx_k_module_2, sizeof(__pyx_k_module_2), 0, 0, 1, 1}, {&__pyx_n_s_multisample, __pyx_k_multisample, sizeof(__pyx_k_multisample), 0, 0, 1, 1}, {&__pyx_n_s_name, __pyx_k_name, sizeof(__pyx_k_name), 0, 0, 1, 1}, {&__pyx_n_s_nblocks, __pyx_k_nblocks, sizeof(__pyx_k_nblocks), 0, 0, 1, 1}, {&__pyx_n_s_nxy, __pyx_k_nxy, sizeof(__pyx_k_nxy), 0, 0, 1, 1}, {&__pyx_n_s_package, __pyx_k_package, sizeof(__pyx_k_package), 0, 0, 1, 1}, {&__pyx_n_s_prepare, __pyx_k_prepare, sizeof(__pyx_k_prepare), 0, 0, 1, 1}, {&__pyx_n_s_print, __pyx_k_print, sizeof(__pyx_k_print), 0, 0, 1, 1}, {&__pyx_n_s_pydata, __pyx_k_pydata, sizeof(__pyx_k_pydata), 0, 0, 1, 1}, {&__pyx_n_s_pydata_backed, __pyx_k_pydata_backed, sizeof(__pyx_k_pydata_backed), 0, 0, 1, 1}, {&__pyx_n_s_pydata_postsync, __pyx_k_pydata_postsync, sizeof(__pyx_k_pydata_postsync), 0, 0, 1, 1}, {&__pyx_n_s_qualname, __pyx_k_qualname, sizeof(__pyx_k_qualname), 0, 0, 1, 1}, {&__pyx_n_s_quat, __pyx_k_quat, sizeof(__pyx_k_quat), 0, 0, 1, 1}, {&__pyx_n_s_range, __pyx_k_range, sizeof(__pyx_k_range), 0, 0, 1, 1}, {&__pyx_n_s_red, __pyx_k_red, sizeof(__pyx_k_red), 0, 0, 1, 1}, {&__pyx_n_s_set_antialiasing, __pyx_k_set_antialiasing, sizeof(__pyx_k_set_antialiasing), 0, 0, 1, 1}, {&__pyx_n_s_set_background_color, __pyx_k_set_background_color, sizeof(__pyx_k_set_background_color), 0, 0, 1, 1}, {&__pyx_n_s_set_data, __pyx_k_set_data, sizeof(__pyx_k_set_data), 0, 0, 1, 1}, {&__pyx_n_s_set_debug_flags, __pyx_k_set_debug_flags, sizeof(__pyx_k_set_debug_flags), 0, 0, 1, 1}, {&__pyx_n_s_set_fixedshaders, __pyx_k_set_fixedshaders, sizeof(__pyx_k_set_fixedshaders), 0, 0, 1, 1}, {&__pyx_n_s_set_frustum, __pyx_k_set_frustum, sizeof(__pyx_k_set_frustum), 0, 0, 1, 1}, {&__pyx_n_s_set_pick_position, __pyx_k_set_pick_position, sizeof(__pyx_k_set_pick_position), 0, 0, 1, 1}, {&__pyx_n_s_set_rotation_rel, __pyx_k_set_rotation_rel, sizeof(__pyx_k_set_rotation_rel), 0, 0, 1, 1}, {&__pyx_n_s_set_rotation_xy, __pyx_k_set_rotation_xy, sizeof(__pyx_k_set_rotation_xy), 0, 0, 1, 1}, {&__pyx_n_s_set_shaders, __pyx_k_set_shaders, sizeof(__pyx_k_set_shaders), 0, 0, 1, 1}, {&__pyx_n_s_set_transformations, __pyx_k_set_transformations, sizeof(__pyx_k_set_transformations), 0, 0, 1, 1}, {&__pyx_n_s_shader_fragsrc, __pyx_k_shader_fragsrc, sizeof(__pyx_k_shader_fragsrc), 0, 0, 1, 1}, {&__pyx_n_u_shader_fragsrc, __pyx_k_shader_fragsrc, sizeof(__pyx_k_shader_fragsrc), 0, 1, 0, 1}, {&__pyx_n_s_shader_src, __pyx_k_shader_src, sizeof(__pyx_k_shader_src), 0, 0, 1, 1}, {&__pyx_n_s_shader_vertsrc, __pyx_k_shader_vertsrc, sizeof(__pyx_k_shader_vertsrc), 0, 0, 1, 1}, {&__pyx_n_u_shader_vertsrc, __pyx_k_shader_vertsrc, sizeof(__pyx_k_shader_vertsrc), 0, 1, 0, 1}, {&__pyx_n_s_split, __pyx_k_split, sizeof(__pyx_k_split), 0, 0, 1, 1}, {&__pyx_n_s_startswith, __pyx_k_startswith, sizeof(__pyx_k_startswith), 0, 0, 1, 1}, {&__pyx_n_s_syncpydata, __pyx_k_syncpydata, sizeof(__pyx_k_syncpydata), 0, 0, 1, 1}, {&__pyx_n_s_t, __pyx_k_t, sizeof(__pyx_k_t), 0, 0, 1, 1}, {&__pyx_n_s_test, __pyx_k_test, sizeof(__pyx_k_test), 0, 0, 1, 1}, {&__pyx_n_s_transformations, __pyx_k_transformations, sizeof(__pyx_k_transformations), 0, 0, 1, 1}, {&__pyx_n_s_uipydata, __pyx_k_uipydata, sizeof(__pyx_k_uipydata), 0, 0, 1, 1}, {&__pyx_n_s_unused, __pyx_k_unused, sizeof(__pyx_k_unused), 0, 0, 1, 1}, {&__pyx_n_s_update_shader_version, __pyx_k_update_shader_version, sizeof(__pyx_k_update_shader_version), 0, 0, 1, 1}, {&__pyx_kp_b_version_100, __pyx_k_version_100, sizeof(__pyx_k_version_100), 0, 0, 0, 0}, {&__pyx_kp_b_version_120, __pyx_k_version_120, sizeof(__pyx_k_version_120), 0, 0, 0, 0}, {&__pyx_n_s_vertexdata, __pyx_k_vertexdata, sizeof(__pyx_k_vertexdata), 0, 0, 1, 1}, {&__pyx_n_u_vertexdata, __pyx_k_vertexdata, sizeof(__pyx_k_vertexdata), 0, 1, 0, 1}, {&__pyx_n_s_vertexinfo, __pyx_k_vertexinfo, sizeof(__pyx_k_vertexinfo), 0, 0, 1, 1}, {&__pyx_n_s_vertexpointers, __pyx_k_vertexpointers, sizeof(__pyx_k_vertexpointers), 0, 0, 1, 1}, {&__pyx_n_s_w, __pyx_k_w, sizeof(__pyx_k_w), 0, 0, 1, 1}, {&__pyx_n_s_x, __pyx_k_x, sizeof(__pyx_k_x), 0, 0, 1, 1}, {&__pyx_n_s_y, __pyx_k_y, sizeof(__pyx_k_y), 0, 0, 1, 1}, {&__pyx_n_s_zoom, __pyx_k_zoom, sizeof(__pyx_k_zoom), 0, 0, 1, 1}, {0, 0, 0, 0, 0, 0, 0} }; static int __Pyx_InitCachedBuiltins(void) { __pyx_builtin_print = __Pyx_GetBuiltinName(__pyx_n_s_print); if (!__pyx_builtin_print) __PYX_ERR(0, 272, __pyx_L1_error) __pyx_builtin_enumerate = __Pyx_GetBuiltinName(__pyx_n_s_enumerate); if (!__pyx_builtin_enumerate) __PYX_ERR(0, 482, __pyx_L1_error) __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) __PYX_ERR(0, 505, __pyx_L1_error) return 0; __pyx_L1_error:; return -1; } static int __Pyx_InitCachedConstants(void) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0); /* "_glarea_es2.pyx":275 * print(' from package:', __package__) * print(' compiled:', __compiled) * print(' GL-type: es2') #px+ # <<<<<<<<<<<<<< * print(' OFFSCREEN:', OFFSCREEN) * */ __pyx_tuple_ = PyTuple_Pack(1, __pyx_kp_u_GL_type_es2); if (unlikely(!__pyx_tuple_)) __PYX_ERR(0, 275, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple_); __Pyx_GIVEREF(__pyx_tuple_); /* "_glarea_es2.pyx":276 * print(' compiled:', __compiled) * print(' GL-type: es2') #px+ * print(' OFFSCREEN:', OFFSCREEN) # <<<<<<<<<<<<<< * * uidata.synced = False */ __pyx_tuple__2 = PyTuple_Pack(2, __pyx_kp_u_OFFSCREEN, Py_False); if (unlikely(!__pyx_tuple__2)) __PYX_ERR(0, 276, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__2); __Pyx_GIVEREF(__pyx_tuple__2); /* "_glarea_es2.pyx":526 * * def update_shader_version(shader_src): * assert shader_src.startswith(b'#version 120\n') # <<<<<<<<<<<<<< * IF 'es2' == 'es2': #px/ * #if False: */ __pyx_tuple__3 = PyTuple_Pack(1, __pyx_kp_b_version_120); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(0, 526, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__3); __Pyx_GIVEREF(__pyx_tuple__3); /* "_glarea_es2.pyx":529 * IF 'es2' == 'es2': #px/ * #if False: * shader_src = b'#version 100\n' + shader_src.split(b'\n', 1)[1] # <<<<<<<<<<<<<< * return shader_src * */ __pyx_tuple__5 = PyTuple_Pack(2, __pyx_kp_b__4, __pyx_int_1); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(0, 529, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__5); __Pyx_GIVEREF(__pyx_tuple__5); /* "_glarea_es2.pyx":64 * debug = 0 * * def set_debug_flags(module): # <<<<<<<<<<<<<< * global debug * if module.DEBUG_MSGGL: debug |= DEBUG_MSGGL */ __pyx_tuple__6 = PyTuple_Pack(1, __pyx_n_s_module); if (unlikely(!__pyx_tuple__6)) __PYX_ERR(0, 64, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__6); __Pyx_GIVEREF(__pyx_tuple__6); __pyx_codeobj__7 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__6, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_set_debug_flags, 64, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__7)) __PYX_ERR(0, 64, __pyx_L1_error) /* "_glarea_es2.pyx":269 * ### module state * * def init_engine(): # <<<<<<<<<<<<<< * gldraw.init_gldraw() * if debug & DEBUG_MSGEXT: */ __pyx_tuple__8 = PyTuple_Pack(1, __pyx_n_s_fovy_angle); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(0, 269, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__8); __Pyx_GIVEREF(__pyx_tuple__8); __pyx_codeobj__9 = (PyObject*)__Pyx_PyCode_New(0, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__8, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_init_engine, 269, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__9)) __PYX_ERR(0, 269, __pyx_L1_error) /* "_glarea_es2.pyx":352 * M[0][2] = -m11 * m20; M[1][2] = m12; M[2][2] = m00 * m11 * * def set_rotation_rel(x, y): # <<<<<<<<<<<<<< * cdef gldraw.vec4 quat #px+ * cdef float nxy #px+ */ __pyx_tuple__10 = PyTuple_Pack(4, __pyx_n_s_x, __pyx_n_s_y, __pyx_n_s_quat, __pyx_n_s_nxy); if (unlikely(!__pyx_tuple__10)) __PYX_ERR(0, 352, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__10); __Pyx_GIVEREF(__pyx_tuple__10); __pyx_codeobj__11 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__10, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_set_rotation_rel, 352, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__11)) __PYX_ERR(0, 352, __pyx_L1_error) /* "_glarea_es2.pyx":440 * renderdata.picking_matrix[1][1] = 1. * * def set_frustum(bounding_sphere_radius, zoom): # <<<<<<<<<<<<<< * uidata.frustum_changed = True * if bounding_sphere_radius > 0: */ __pyx_tuple__12 = PyTuple_Pack(2, __pyx_n_s_bounding_sphere_radius, __pyx_n_s_zoom); if (unlikely(!__pyx_tuple__12)) __PYX_ERR(0, 440, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__12); __Pyx_GIVEREF(__pyx_tuple__12); __pyx_codeobj__13 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__12, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_set_frustum, 440, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__13)) __PYX_ERR(0, 440, __pyx_L1_error) /* "_glarea_es2.pyx":446 * uidata.fovy_radius_zoom = uidata.fovy_radius / zoom * * def set_background_color(red, green, blue): # <<<<<<<<<<<<<< * uidata.background_changed = True * uidata.bg_red = red */ __pyx_tuple__14 = PyTuple_Pack(3, __pyx_n_s_red, __pyx_n_s_green, __pyx_n_s_blue); if (unlikely(!__pyx_tuple__14)) __PYX_ERR(0, 446, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__14); __Pyx_GIVEREF(__pyx_tuple__14); __pyx_codeobj__15 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__14, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_set_background_color, 446, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__15)) __PYX_ERR(0, 446, __pyx_L1_error) /* "_glarea_es2.pyx":452 * uidata.bg_blue = blue * * def set_antialiasing(multisample): # <<<<<<<<<<<<<< * uidata.multisample_changed = 2 if multisample else 1 * */ __pyx_tuple__16 = PyTuple_Pack(1, __pyx_n_s_multisample); if (unlikely(!__pyx_tuple__16)) __PYX_ERR(0, 452, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__16); __Pyx_GIVEREF(__pyx_tuple__16); __pyx_codeobj__17 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__16, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_set_antialiasing, 452, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__17)) __PYX_ERR(0, 452, __pyx_L1_error) /* "_glarea_es2.pyx":455 * uidata.multisample_changed = 2 if multisample else 1 * * def set_rotation_xy(x, y): # <<<<<<<<<<<<<< * x %= 360 * # pylint: disable=C0321 */ __pyx_tuple__18 = PyTuple_Pack(2, __pyx_n_s_x, __pyx_n_s_y); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(0, 455, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__18); __Pyx_GIVEREF(__pyx_tuple__18); __pyx_codeobj__19 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_set_rotation_xy, 455, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__19)) __PYX_ERR(0, 455, __pyx_L1_error) /* "_glarea_es2.pyx":472 * uidata.viewport_changed = True * * def set_transformations(blocks): # <<<<<<<<<<<<<< * assert uidata.nblocks == len(blocks) * cdef int i #px+ */ __pyx_tuple__20 = PyTuple_Pack(4, __pyx_n_s_blocks, __pyx_n_s_i, __pyx_n_s_b, __pyx_n_s_unused); if (unlikely(!__pyx_tuple__20)) __PYX_ERR(0, 472, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__20); __Pyx_GIVEREF(__pyx_tuple__20); __pyx_codeobj__21 = (PyObject*)__Pyx_PyCode_New(1, 0, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__20, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_set_transformations, 472, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__21)) __PYX_ERR(0, 472, __pyx_L1_error) /* "_glarea_es2.pyx":496 * uidata.animation_changed = 2 * * def set_data(nblocks, vertexdata, vertexpointers, vertexinfo, transformations): # <<<<<<<<<<<<<< * pydata_postsync() * cdef int t,i,j #px+ */ __pyx_tuple__22 = PyTuple_Pack(9, __pyx_n_s_nblocks, __pyx_n_s_vertexdata, __pyx_n_s_vertexpointers, __pyx_n_s_vertexinfo, __pyx_n_s_transformations, __pyx_n_s_t, __pyx_n_s_i, __pyx_n_s_j, __pyx_n_s_cnts_block); if (unlikely(!__pyx_tuple__22)) __PYX_ERR(0, 496, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__22); __Pyx_GIVEREF(__pyx_tuple__22); __pyx_codeobj__23 = (PyObject*)__Pyx_PyCode_New(5, 0, 9, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__22, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_set_data, 496, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__23)) __PYX_ERR(0, 496, __pyx_L1_error) /* "_glarea_es2.pyx":519 * uidata.data_changed = True * * def pydata_postsync(): # <<<<<<<<<<<<<< * global pydata_backed * if uidata.synced: */ __pyx_codeobj__24 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_pydata_postsync, 519, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__24)) __PYX_ERR(0, 519, __pyx_L1_error) /* "_glarea_es2.pyx":525 * uidata.synced = False * * def update_shader_version(shader_src): # <<<<<<<<<<<<<< * assert shader_src.startswith(b'#version 120\n') * IF 'es2' == 'es2': #px/ */ __pyx_tuple__25 = PyTuple_Pack(1, __pyx_n_s_shader_src); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(0, 525, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__25); __Pyx_GIVEREF(__pyx_tuple__25); __pyx_codeobj__26 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__25, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_update_shader_version, 525, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__26)) __PYX_ERR(0, 525, __pyx_L1_error) /* "_glarea_es2.pyx":532 * return shader_src * * def set_shaders(shader_vertsrc, shader_fragsrc): # <<<<<<<<<<<<<< * pydata_postsync() * shader_vertsrc = update_shader_version(shader_vertsrc) */ __pyx_tuple__27 = PyTuple_Pack(2, __pyx_n_s_shader_vertsrc, __pyx_n_s_shader_fragsrc); if (unlikely(!__pyx_tuple__27)) __PYX_ERR(0, 532, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__27); __Pyx_GIVEREF(__pyx_tuple__27); __pyx_codeobj__28 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__27, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_set_shaders, 532, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__28)) __PYX_ERR(0, 532, __pyx_L1_error) /* "_glarea_es2.pyx":542 * uidata.shaders_changed = True * * def set_fixedshaders(fixedshaders): # <<<<<<<<<<<<<< * pydata_postsync() * fixedshaders = [update_shader_version(s) for s in fixedshaders] */ __pyx_tuple__29 = PyTuple_Pack(1, __pyx_n_s_fixedshaders); if (unlikely(!__pyx_tuple__29)) __PYX_ERR(0, 542, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__29); __Pyx_GIVEREF(__pyx_tuple__29); __pyx_codeobj__30 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__29, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_set_fixedshaders, 542, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__30)) __PYX_ERR(0, 542, __pyx_L1_error) /* "_glarea_es2.pyx":560 * renderdata.hud_fragsrc = uidata.hud_fragsrc * * def set_pick_position(x, y): # <<<<<<<<<<<<<< * uidata.pick_x = x * uidata.pick_y = y */ __pyx_tuple__31 = PyTuple_Pack(2, __pyx_n_s_x, __pyx_n_s_y); if (unlikely(!__pyx_tuple__31)) __PYX_ERR(0, 560, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__31); __Pyx_GIVEREF(__pyx_tuple__31); __pyx_codeobj__32 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__31, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_set_pick_position, 560, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__32)) __PYX_ERR(0, 560, __pyx_L1_error) /* "_glarea_es2.pyx":888 * mvect[2] = v2 / u3 * * def get_cursor_angle(d): # <<<<<<<<<<<<<< * cdef float angle #px+ * cdef int i #px+ */ __pyx_tuple__33 = PyTuple_Pack(5, __pyx_n_s_d, __pyx_n_s_angle, __pyx_n_s_i, __pyx_n_s_x, __pyx_n_s_y); if (unlikely(!__pyx_tuple__33)) __PYX_ERR(0, 888, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__33); __Pyx_GIVEREF(__pyx_tuple__33); __pyx_codeobj__34 = (PyObject*)__Pyx_PyCode_New(1, 0, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__33, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_get_cursor_angle, 888, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__34)) __PYX_ERR(0, 888, __pyx_L1_error) __Pyx_RefNannyFinishContext(); return 0; __pyx_L1_error:; __Pyx_RefNannyFinishContext(); return -1; } static int __Pyx_InitGlobals(void) { if (__Pyx_InitStrings(__pyx_string_tab) < 0) __PYX_ERR(0, 1, __pyx_L1_error); __pyx_float_360_0 = PyFloat_FromDouble(360.0); if (unlikely(!__pyx_float_360_0)) __PYX_ERR(0, 1, __pyx_L1_error) __pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) __PYX_ERR(0, 1, __pyx_L1_error) __pyx_int_1 = PyInt_FromLong(1); if (unlikely(!__pyx_int_1)) __PYX_ERR(0, 1, __pyx_L1_error) __pyx_int_120 = PyInt_FromLong(120); if (unlikely(!__pyx_int_120)) __PYX_ERR(0, 1, __pyx_L1_error) __pyx_int_360 = PyInt_FromLong(360); if (unlikely(!__pyx_int_360)) __PYX_ERR(0, 1, __pyx_L1_error) __pyx_int_neg_120 = PyInt_FromLong(-120); if (unlikely(!__pyx_int_neg_120)) __PYX_ERR(0, 1, __pyx_L1_error) return 0; __pyx_L1_error:; return -1; } #if PY_MAJOR_VERSION < 3 PyMODINIT_FUNC init_glarea_es2(void); /*proto*/ PyMODINIT_FUNC init_glarea_es2(void) #else PyMODINIT_FUNC PyInit__glarea_es2(void); /*proto*/ PyMODINIT_FUNC PyInit__glarea_es2(void) #endif { PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; __Pyx_RefNannyDeclarations #if CYTHON_REFNANNY __Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny"); if (!__Pyx_RefNanny) { PyErr_Clear(); __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny"); if (!__Pyx_RefNanny) Py_FatalError("failed to import 'refnanny' module"); } #endif __Pyx_RefNannySetupContext("PyMODINIT_FUNC PyInit__glarea_es2(void)", 0); if (__Pyx_check_binary_version() < 0) __PYX_ERR(0, 1, __pyx_L1_error) __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(0, 1, __pyx_L1_error) __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(0, 1, __pyx_L1_error) __pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(0, 1, __pyx_L1_error) #ifdef __Pyx_CyFunction_USED if (__pyx_CyFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #endif #ifdef __Pyx_FusedFunction_USED if (__pyx_FusedFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #endif #ifdef __Pyx_Coroutine_USED if (__pyx_Coroutine_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #endif #ifdef __Pyx_Generator_USED if (__pyx_Generator_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #endif #ifdef __Pyx_StopAsyncIteration_USED if (__pyx_StopAsyncIteration_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #endif /*--- Library function declarations ---*/ /*--- Threads initialization code ---*/ #if defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS #ifdef WITH_THREAD /* Python build with threading support? */ PyEval_InitThreads(); #endif #endif /*--- Module creation code ---*/ #if PY_MAJOR_VERSION < 3 __pyx_m = Py_InitModule4("_glarea_es2", __pyx_methods, 0, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m); #else __pyx_m = PyModule_Create(&__pyx_moduledef); #endif if (unlikely(!__pyx_m)) __PYX_ERR(0, 1, __pyx_L1_error) __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) __PYX_ERR(0, 1, __pyx_L1_error) Py_INCREF(__pyx_d); __pyx_b = PyImport_AddModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_b)) __PYX_ERR(0, 1, __pyx_L1_error) #if CYTHON_COMPILING_IN_PYPY Py_INCREF(__pyx_b); #endif if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) __PYX_ERR(0, 1, __pyx_L1_error); /*--- Initialize various global constants etc. ---*/ if (__Pyx_InitGlobals() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #if PY_MAJOR_VERSION < 3 && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT) if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #endif if (__pyx_module_is_main__glarea_es2) { if (PyObject_SetAttrString(__pyx_m, "__name__", __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error) } #if PY_MAJOR_VERSION >= 3 { PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(0, 1, __pyx_L1_error) if (!PyDict_GetItemString(modules, "_glarea_es2")) { if (unlikely(PyDict_SetItemString(modules, "_glarea_es2", __pyx_m) < 0)) __PYX_ERR(0, 1, __pyx_L1_error) } } #endif /*--- Builtin init code ---*/ if (__Pyx_InitCachedBuiltins() < 0) __PYX_ERR(0, 1, __pyx_L1_error) /*--- Constants init code ---*/ if (__Pyx_InitCachedConstants() < 0) __PYX_ERR(0, 1, __pyx_L1_error) /*--- Global init code ---*/ /*--- Variable export code ---*/ /*--- Function export code ---*/ if (__Pyx_ExportFunction("render_resize", (void (*)(void))__pyx_f_11_glarea_es2_render_resize, "void (int, int, int)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("set_animation_next", (void (*)(void))__pyx_f_11_glarea_es2_set_animation_next, "void (float)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("sync_set_fixedshaders", (void (*)(void))__pyx_f_11_glarea_es2_sync_set_fixedshaders, "void (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("sync_set_pick_position", (void (*)(void))__pyx_f_11_glarea_es2_sync_set_pick_position, "void (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("sync_set_atlas_data", (void (*)(void))__pyx_f_11_glarea_es2_sync_set_atlas_data, "void (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("sync", (void (*)(void))__pyx_f_11_glarea_es2_sync, "void (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("gl_init", (void (*)(void))__pyx_f_11_glarea_es2_gl_init, "void (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("gl_exit", (void (*)(void))__pyx_f_11_glarea_es2_gl_exit, "void (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("gl_set_atlas_texture", (void (*)(void))__pyx_f_11_glarea_es2_gl_set_atlas_texture, "void (int, int)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("gl_render", (void (*)(void))__pyx_f_11_glarea_es2_gl_render, "void (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("gl_render_select_debug", (void (*)(void))__pyx_f_11_glarea_es2_gl_render_select_debug, "void (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("gl_pick_polygons", (void (*)(void))__pyx_f_11_glarea_es2_gl_pick_polygons, "int (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("gl_create_render_program", (void (*)(void))__pyx_f_11_glarea_es2_gl_create_render_program, "void (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) /*--- Type init code ---*/ /*--- Type import code ---*/ /*--- Variable import code ---*/ /*--- Function import code ---*/ __pyx_t_1 = __Pyx_ImportModule("_gldraw_es2"); if (!__pyx_t_1) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_1, "matrix_set_identity", (void (**)(void))&__pyx_f_11_gldraw_es2_matrix_set_identity, "void (__pyx_t_11_gldraw_es2_vec4 *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_1, "init_gldraw", (void (**)(void))&__pyx_f_11_gldraw_es2_init_gldraw, "void (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_1, "sync_block_transformations", (void (**)(void))&__pyx_f_11_gldraw_es2_sync_block_transformations, "void (short *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_1, "sync_animation_start", (void (**)(void))&__pyx_f_11_gldraw_es2_sync_animation_start, "void (int, short *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_1, "sync_animation_next", (void (**)(void))&__pyx_f_11_gldraw_es2_sync_animation_next, "void (float, float, float, float)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_1, "gl_draw_cube", (void (**)(void))&__pyx_f_11_gldraw_es2_gl_draw_cube, "void (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_1, "gl_pick_cube", (void (**)(void))&__pyx_f_11_gldraw_es2_gl_pick_cube, "void (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_1, "gl_init_buffers", (void (**)(void))&__pyx_f_11_gldraw_es2_gl_init_buffers, "void (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_1, "gl_delete_buffers", (void (**)(void))&__pyx_f_11_gldraw_es2_gl_delete_buffers, "void (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_1, "sync_blocks", (void (**)(void))&__pyx_f_11_gldraw_es2_sync_blocks, "void (int, short *, int, int, int)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_1, "sync_vertexdata", (void (**)(void))&__pyx_f_11_gldraw_es2_sync_vertexdata, "void (int, char *, long *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_1, "sync_transformations", (void (**)(void))&__pyx_f_11_gldraw_es2_sync_transformations, "void (int, __pyx_t_11_gldraw_es2_mat4 *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_1, "gl_enable_data", (void (**)(void))&__pyx_f_11_gldraw_es2_gl_enable_data, "void (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_1, "gl_disable_data", (void (**)(void))&__pyx_f_11_gldraw_es2_gl_disable_data, "void (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_1, "gl_draw_cube_debug", (void (**)(void))&__pyx_f_11_gldraw_es2_gl_draw_cube_debug, "void (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_1, "gl_draw_select_debug", (void (**)(void))&__pyx_f_11_gldraw_es2_gl_draw_select_debug, "void (GLfloat *, GLsizeiptr, GLuint)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_1, "gl_init_object_location", (void (**)(void))&__pyx_f_11_gldraw_es2_gl_init_object_location, "void (GLuint)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) Py_DECREF(__pyx_t_1); __pyx_t_1 = 0; /*--- Execution code ---*/ #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) if (__Pyx_patch_abc() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #endif /* "_glarea_es2.pyx":25 * # This line makes cython happy * global __name__, __package__ # pylint: disable=W0604 * __compiled = True #px/ # <<<<<<<<<<<<<< * #__compiled = False * DEF OFFSCREEN = False #px/ */ if (PyDict_SetItem(__pyx_d, __pyx_n_s_compiled_2, Py_True) < 0) __PYX_ERR(0, 25, __pyx_L1_error) /* "_glarea_es2.pyx":62 * DEBUG_PICK = 0x20 * cdef long debug #px+ * debug = 0 # <<<<<<<<<<<<<< * * def set_debug_flags(module): */ __pyx_v_11_glarea_es2_debug = 0; /* "_glarea_es2.pyx":64 * debug = 0 * * def set_debug_flags(module): # <<<<<<<<<<<<<< * global debug * if module.DEBUG_MSGGL: debug |= DEBUG_MSGGL */ __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_11_glarea_es2_1set_debug_flags, NULL, __pyx_n_s_glarea_es2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 64, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_set_debug_flags, __pyx_t_2) < 0) __PYX_ERR(0, 64, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_glarea_es2.pyx":195 * cdef UIData uidata #px+ * * class syncpydata: pass # <<<<<<<<<<<<<< * class uipydata: pass * pydata = {} */ __pyx_t_2 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_syncpydata, __pyx_n_s_syncpydata, (PyObject *) NULL, __pyx_n_s_glarea_es2, (PyObject *) NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 195, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_Py3ClassCreate(((PyObject*)&__Pyx_DefaultClassType), __pyx_n_s_syncpydata, __pyx_empty_tuple, __pyx_t_2, NULL, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 195, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_d, __pyx_n_s_syncpydata, __pyx_t_3) < 0) __PYX_ERR(0, 195, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_glarea_es2.pyx":196 * * class syncpydata: pass * class uipydata: pass # <<<<<<<<<<<<<< * pydata = {} * */ __pyx_t_2 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_uipydata, __pyx_n_s_uipydata, (PyObject *) NULL, __pyx_n_s_glarea_es2, (PyObject *) NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 196, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_Py3ClassCreate(((PyObject*)&__Pyx_DefaultClassType), __pyx_n_s_uipydata, __pyx_empty_tuple, __pyx_t_2, NULL, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 196, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_d, __pyx_n_s_uipydata, __pyx_t_3) < 0) __PYX_ERR(0, 196, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_glarea_es2.pyx":197 * class syncpydata: pass * class uipydata: pass * pydata = {} # <<<<<<<<<<<<<< * * */ __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 197, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_pydata, __pyx_t_2) < 0) __PYX_ERR(0, 197, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_glarea_es2.pyx":269 * ### module state * * def init_engine(): # <<<<<<<<<<<<<< * gldraw.init_gldraw() * if debug & DEBUG_MSGEXT: */ __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_11_glarea_es2_3init_engine, NULL, __pyx_n_s_glarea_es2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 269, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_init_engine, __pyx_t_2) < 0) __PYX_ERR(0, 269, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_glarea_es2.pyx":352 * M[0][2] = -m11 * m20; M[1][2] = m12; M[2][2] = m00 * m11 * * def set_rotation_rel(x, y): # <<<<<<<<<<<<<< * cdef gldraw.vec4 quat #px+ * cdef float nxy #px+ */ __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_11_glarea_es2_5set_rotation_rel, NULL, __pyx_n_s_glarea_es2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 352, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_set_rotation_rel, __pyx_t_2) < 0) __PYX_ERR(0, 352, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_glarea_es2.pyx":440 * renderdata.picking_matrix[1][1] = 1. * * def set_frustum(bounding_sphere_radius, zoom): # <<<<<<<<<<<<<< * uidata.frustum_changed = True * if bounding_sphere_radius > 0: */ __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_11_glarea_es2_7set_frustum, NULL, __pyx_n_s_glarea_es2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 440, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_set_frustum, __pyx_t_2) < 0) __PYX_ERR(0, 440, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_glarea_es2.pyx":446 * uidata.fovy_radius_zoom = uidata.fovy_radius / zoom * * def set_background_color(red, green, blue): # <<<<<<<<<<<<<< * uidata.background_changed = True * uidata.bg_red = red */ __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_11_glarea_es2_9set_background_color, NULL, __pyx_n_s_glarea_es2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 446, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_set_background_color, __pyx_t_2) < 0) __PYX_ERR(0, 446, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_glarea_es2.pyx":452 * uidata.bg_blue = blue * * def set_antialiasing(multisample): # <<<<<<<<<<<<<< * uidata.multisample_changed = 2 if multisample else 1 * */ __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_11_glarea_es2_11set_antialiasing, NULL, __pyx_n_s_glarea_es2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 452, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_set_antialiasing, __pyx_t_2) < 0) __PYX_ERR(0, 452, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_glarea_es2.pyx":455 * uidata.multisample_changed = 2 if multisample else 1 * * def set_rotation_xy(x, y): # <<<<<<<<<<<<<< * x %= 360 * # pylint: disable=C0321 */ __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_11_glarea_es2_13set_rotation_xy, NULL, __pyx_n_s_glarea_es2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 455, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_set_rotation_xy, __pyx_t_2) < 0) __PYX_ERR(0, 455, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_glarea_es2.pyx":472 * uidata.viewport_changed = True * * def set_transformations(blocks): # <<<<<<<<<<<<<< * assert uidata.nblocks == len(blocks) * cdef int i #px+ */ __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_11_glarea_es2_15set_transformations, NULL, __pyx_n_s_glarea_es2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 472, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_set_transformations, __pyx_t_2) < 0) __PYX_ERR(0, 472, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_glarea_es2.pyx":496 * uidata.animation_changed = 2 * * def set_data(nblocks, vertexdata, vertexpointers, vertexinfo, transformations): # <<<<<<<<<<<<<< * pydata_postsync() * cdef int t,i,j #px+ */ __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_11_glarea_es2_19set_data, NULL, __pyx_n_s_glarea_es2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 496, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_set_data, __pyx_t_2) < 0) __PYX_ERR(0, 496, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_glarea_es2.pyx":519 * uidata.data_changed = True * * def pydata_postsync(): # <<<<<<<<<<<<<< * global pydata_backed * if uidata.synced: */ __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_11_glarea_es2_21pydata_postsync, NULL, __pyx_n_s_glarea_es2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 519, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_pydata_postsync, __pyx_t_2) < 0) __PYX_ERR(0, 519, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_glarea_es2.pyx":525 * uidata.synced = False * * def update_shader_version(shader_src): # <<<<<<<<<<<<<< * assert shader_src.startswith(b'#version 120\n') * IF 'es2' == 'es2': #px/ */ __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_11_glarea_es2_23update_shader_version, NULL, __pyx_n_s_glarea_es2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 525, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_update_shader_version, __pyx_t_2) < 0) __PYX_ERR(0, 525, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_glarea_es2.pyx":532 * return shader_src * * def set_shaders(shader_vertsrc, shader_fragsrc): # <<<<<<<<<<<<<< * pydata_postsync() * shader_vertsrc = update_shader_version(shader_vertsrc) */ __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_11_glarea_es2_25set_shaders, NULL, __pyx_n_s_glarea_es2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 532, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_set_shaders, __pyx_t_2) < 0) __PYX_ERR(0, 532, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_glarea_es2.pyx":542 * uidata.shaders_changed = True * * def set_fixedshaders(fixedshaders): # <<<<<<<<<<<<<< * pydata_postsync() * fixedshaders = [update_shader_version(s) for s in fixedshaders] */ __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_11_glarea_es2_27set_fixedshaders, NULL, __pyx_n_s_glarea_es2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 542, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_set_fixedshaders, __pyx_t_2) < 0) __PYX_ERR(0, 542, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_glarea_es2.pyx":560 * renderdata.hud_fragsrc = uidata.hud_fragsrc * * def set_pick_position(x, y): # <<<<<<<<<<<<<< * uidata.pick_x = x * uidata.pick_y = y */ __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_11_glarea_es2_29set_pick_position, NULL, __pyx_n_s_glarea_es2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 560, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_set_pick_position, __pyx_t_2) < 0) __PYX_ERR(0, 560, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_glarea_es2.pyx":888 * mvect[2] = v2 / u3 * * def get_cursor_angle(d): # <<<<<<<<<<<<<< * cdef float angle #px+ * cdef int i #px+ */ __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_11_glarea_es2_33get_cursor_angle, NULL, __pyx_n_s_glarea_es2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 888, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_cursor_angle, __pyx_t_2) < 0) __PYX_ERR(0, 888, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_glarea_es2.pyx":1 * #-*- coding:utf-8 -*- # <<<<<<<<<<<<<< * # cython: profile=False * */ __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /*--- Wrapped vars code ---*/ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); if (__pyx_m) { if (__pyx_d) { __Pyx_AddTraceback("init _glarea_es2", __pyx_clineno, __pyx_lineno, __pyx_filename); } Py_DECREF(__pyx_m); __pyx_m = 0; } else if (!PyErr_Occurred()) { PyErr_SetString(PyExc_ImportError, "init _glarea_es2"); } __pyx_L0:; __Pyx_RefNannyFinishContext(); #if PY_MAJOR_VERSION < 3 return; #else return __pyx_m; #endif } /* --- Runtime support code --- */ /* Refnanny */ #if CYTHON_REFNANNY static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) { PyObject *m = NULL, *p = NULL; void *r = NULL; m = PyImport_ImportModule((char *)modname); if (!m) goto end; p = PyObject_GetAttrString(m, (char *)"RefNannyAPI"); if (!p) goto end; r = PyLong_AsVoidPtr(p); end: Py_XDECREF(p); Py_XDECREF(m); return (__Pyx_RefNannyAPIStruct *)r; } #endif /* GetBuiltinName */ static PyObject *__Pyx_GetBuiltinName(PyObject *name) { PyObject* result = __Pyx_PyObject_GetAttrStr(__pyx_b, name); if (unlikely(!result)) { PyErr_Format(PyExc_NameError, #if PY_MAJOR_VERSION >= 3 "name '%U' is not defined", name); #else "name '%.200s' is not defined", PyString_AS_STRING(name)); #endif } return result; } /* PyErrFetchRestore */ #if CYTHON_FAST_THREAD_STATE static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { PyObject *tmp_type, *tmp_value, *tmp_tb; tmp_type = tstate->curexc_type; tmp_value = tstate->curexc_value; tmp_tb = tstate->curexc_traceback; tstate->curexc_type = type; tstate->curexc_value = value; tstate->curexc_traceback = tb; Py_XDECREF(tmp_type); Py_XDECREF(tmp_value); Py_XDECREF(tmp_tb); } static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { *type = tstate->curexc_type; *value = tstate->curexc_value; *tb = tstate->curexc_traceback; tstate->curexc_type = 0; tstate->curexc_value = 0; tstate->curexc_traceback = 0; } #endif /* WriteUnraisableException */ static void __Pyx_WriteUnraisable(const char *name, CYTHON_UNUSED int clineno, CYTHON_UNUSED int lineno, CYTHON_UNUSED const char *filename, int full_traceback, CYTHON_UNUSED int nogil) { PyObject *old_exc, *old_val, *old_tb; PyObject *ctx; __Pyx_PyThreadState_declare #ifdef WITH_THREAD PyGILState_STATE state; if (nogil) state = PyGILState_Ensure(); #ifdef _MSC_VER else state = (PyGILState_STATE)-1; #endif #endif __Pyx_PyThreadState_assign __Pyx_ErrFetch(&old_exc, &old_val, &old_tb); if (full_traceback) { Py_XINCREF(old_exc); Py_XINCREF(old_val); Py_XINCREF(old_tb); __Pyx_ErrRestore(old_exc, old_val, old_tb); PyErr_PrintEx(1); } #if PY_MAJOR_VERSION < 3 ctx = PyString_FromString(name); #else ctx = PyUnicode_FromString(name); #endif __Pyx_ErrRestore(old_exc, old_val, old_tb); if (!ctx) { PyErr_WriteUnraisable(Py_None); } else { PyErr_WriteUnraisable(ctx); Py_DECREF(ctx); } #ifdef WITH_THREAD if (nogil) PyGILState_Release(state); #endif } /* GetModuleGlobalName */ static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name) { PyObject *result; #if !CYTHON_AVOID_BORROWED_REFS result = PyDict_GetItem(__pyx_d, name); if (likely(result)) { Py_INCREF(result); } else { #else result = PyObject_GetItem(__pyx_d, name); if (!result) { PyErr_Clear(); #endif result = __Pyx_GetBuiltinName(name); } return result; } /* PyObjectCall */ #if CYTHON_COMPILING_IN_CPYTHON static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) { PyObject *result; ternaryfunc call = func->ob_type->tp_call; if (unlikely(!call)) return PyObject_Call(func, arg, kw); if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) return NULL; result = (*call)(func, arg, kw); Py_LeaveRecursiveCall(); if (unlikely(!result) && unlikely(!PyErr_Occurred())) { PyErr_SetString( PyExc_SystemError, "NULL result without error in PyObject_Call"); } return result; } #endif /* RaiseArgTupleInvalid */ static void __Pyx_RaiseArgtupleInvalid( const char* func_name, int exact, Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found) { Py_ssize_t num_expected; const char *more_or_less; if (num_found < num_min) { num_expected = num_min; more_or_less = "at least"; } else { num_expected = num_max; more_or_less = "at most"; } if (exact) { more_or_less = "exactly"; } PyErr_Format(PyExc_TypeError, "%.200s() takes %.8s %" CYTHON_FORMAT_SSIZE_T "d positional argument%.1s (%" CYTHON_FORMAT_SSIZE_T "d given)", func_name, more_or_less, num_expected, (num_expected == 1) ? "" : "s", num_found); } /* RaiseDoubleKeywords */ static void __Pyx_RaiseDoubleKeywordsError( const char* func_name, PyObject* kw_name) { PyErr_Format(PyExc_TypeError, #if PY_MAJOR_VERSION >= 3 "%s() got multiple values for keyword argument '%U'", func_name, kw_name); #else "%s() got multiple values for keyword argument '%s'", func_name, PyString_AsString(kw_name)); #endif } /* ParseKeywords */ static int __Pyx_ParseOptionalKeywords( PyObject *kwds, PyObject **argnames[], PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args, const char* function_name) { PyObject *key = 0, *value = 0; Py_ssize_t pos = 0; PyObject*** name; PyObject*** first_kw_arg = argnames + num_pos_args; while (PyDict_Next(kwds, &pos, &key, &value)) { name = first_kw_arg; while (*name && (**name != key)) name++; if (*name) { values[name-argnames] = value; continue; } name = first_kw_arg; #if PY_MAJOR_VERSION < 3 if (likely(PyString_CheckExact(key)) || likely(PyString_Check(key))) { while (*name) { if ((CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**name) == PyString_GET_SIZE(key)) && _PyString_Eq(**name, key)) { values[name-argnames] = value; break; } name++; } if (*name) continue; else { PyObject*** argname = argnames; while (argname != first_kw_arg) { if ((**argname == key) || ( (CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**argname) == PyString_GET_SIZE(key)) && _PyString_Eq(**argname, key))) { goto arg_passed_twice; } argname++; } } } else #endif if (likely(PyUnicode_Check(key))) { while (*name) { int cmp = (**name == key) ? 0 : #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 (PyUnicode_GET_SIZE(**name) != PyUnicode_GET_SIZE(key)) ? 1 : #endif PyUnicode_Compare(**name, key); if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; if (cmp == 0) { values[name-argnames] = value; break; } name++; } if (*name) continue; else { PyObject*** argname = argnames; while (argname != first_kw_arg) { int cmp = (**argname == key) ? 0 : #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 (PyUnicode_GET_SIZE(**argname) != PyUnicode_GET_SIZE(key)) ? 1 : #endif PyUnicode_Compare(**argname, key); if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; if (cmp == 0) goto arg_passed_twice; argname++; } } } else goto invalid_keyword_type; if (kwds2) { if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad; } else { goto invalid_keyword; } } return 0; arg_passed_twice: __Pyx_RaiseDoubleKeywordsError(function_name, key); goto bad; invalid_keyword_type: PyErr_Format(PyExc_TypeError, "%.200s() keywords must be strings", function_name); goto bad; invalid_keyword: PyErr_Format(PyExc_TypeError, #if PY_MAJOR_VERSION < 3 "%.200s() got an unexpected keyword argument '%.200s'", function_name, PyString_AsString(key)); #else "%s() got an unexpected keyword argument '%U'", function_name, key); #endif bad: return -1; } /* PyIntBinop */ #if !CYTHON_COMPILING_IN_PYPY static PyObject* __Pyx_PyInt_RemainderObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED int inplace) { #if PY_MAJOR_VERSION < 3 if (likely(PyInt_CheckExact(op1))) { const long b = intval; long x; long a = PyInt_AS_LONG(op1); x = a % b; x += ((x != 0) & ((x ^ b) < 0)) * b; return PyInt_FromLong(x); } #endif #if CYTHON_USE_PYLONG_INTERNALS if (likely(PyLong_CheckExact(op1))) { const long b = intval; long a, x; #ifdef HAVE_LONG_LONG const PY_LONG_LONG llb = intval; PY_LONG_LONG lla, llx; #endif const digit* digits = ((PyLongObject*)op1)->ob_digit; const Py_ssize_t size = Py_SIZE(op1); if (likely(__Pyx_sst_abs(size) <= 1)) { a = likely(size) ? digits[0] : 0; if (size == -1) a = -a; } else { switch (size) { case -2: if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; #ifdef HAVE_LONG_LONG } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) { lla = -(PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); goto long_long; #endif } case 2: if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; #ifdef HAVE_LONG_LONG } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) { lla = (PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); goto long_long; #endif } case -3: if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; #ifdef HAVE_LONG_LONG } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) { lla = -(PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); goto long_long; #endif } case 3: if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; #ifdef HAVE_LONG_LONG } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) { lla = (PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); goto long_long; #endif } case -4: if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; #ifdef HAVE_LONG_LONG } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) { lla = -(PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); goto long_long; #endif } case 4: if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; #ifdef HAVE_LONG_LONG } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) { lla = (PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); goto long_long; #endif } default: return PyLong_Type.tp_as_number->nb_remainder(op1, op2); } } x = a % b; x += ((x != 0) & ((x ^ b) < 0)) * b; return PyLong_FromLong(x); #ifdef HAVE_LONG_LONG long_long: llx = lla % llb; llx += ((llx != 0) & ((llx ^ llb) < 0)) * llb; return PyLong_FromLongLong(llx); #endif } #endif return (inplace ? PyNumber_InPlaceRemainder : PyNumber_Remainder)(op1, op2); } #endif /* PyFloatBinop */ #if !CYTHON_COMPILING_IN_PYPY static PyObject* __Pyx_PyFloat_TrueDivideObjC(PyObject *op1, PyObject *op2, double floatval, CYTHON_UNUSED int inplace) { const double b = floatval; double a, result; if (likely(PyFloat_CheckExact(op1))) { a = PyFloat_AS_DOUBLE(op1); } else #if PY_MAJOR_VERSION < 3 if (likely(PyInt_CheckExact(op1))) { a = (double) PyInt_AS_LONG(op1); } else #endif if (likely(PyLong_CheckExact(op1))) { #if CYTHON_USE_PYLONG_INTERNALS const digit* digits = ((PyLongObject*)op1)->ob_digit; const Py_ssize_t size = Py_SIZE(op1); switch (size) { case 0: a = 0.0; break; case -1: a = -(double) digits[0]; break; case 1: a = (double) digits[0]; break; case -2: case 2: if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT && ((8 * sizeof(unsigned long) < 53) || (1 * PyLong_SHIFT < 53))) { a = (double) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); if ((8 * sizeof(unsigned long) < 53) || (2 * PyLong_SHIFT < 53) || (a < (double) (1L<<53))) { if (size == -2) a = -a; break; } } case -3: case 3: if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT && ((8 * sizeof(unsigned long) < 53) || (2 * PyLong_SHIFT < 53))) { a = (double) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); if ((8 * sizeof(unsigned long) < 53) || (3 * PyLong_SHIFT < 53) || (a < (double) (1L<<53))) { if (size == -3) a = -a; break; } } case -4: case 4: if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT && ((8 * sizeof(unsigned long) < 53) || (3 * PyLong_SHIFT < 53))) { a = (double) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); if ((8 * sizeof(unsigned long) < 53) || (4 * PyLong_SHIFT < 53) || (a < (double) (1L<<53))) { if (size == -4) a = -a; break; } } default: #else { #endif a = PyLong_AsDouble(op1); if (unlikely(a == -1.0 && PyErr_Occurred())) return NULL; } } else { return (inplace ? PyNumber_InPlaceTrueDivide : PyNumber_TrueDivide)(op1, op2); } PyFPE_START_PROTECT("divide", return NULL) result = a / b; PyFPE_END_PROTECT(result) return PyFloat_FromDouble(result); } #endif /* RaiseTooManyValuesToUnpack */ static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) { PyErr_Format(PyExc_ValueError, "too many values to unpack (expected %" CYTHON_FORMAT_SSIZE_T "d)", expected); } /* RaiseNeedMoreValuesToUnpack */ static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) { PyErr_Format(PyExc_ValueError, "need more than %" CYTHON_FORMAT_SSIZE_T "d value%.1s to unpack", index, (index == 1) ? "" : "s"); } /* IterFinish */ static CYTHON_INLINE int __Pyx_IterFinish(void) { #if CYTHON_FAST_THREAD_STATE PyThreadState *tstate = PyThreadState_GET(); PyObject* exc_type = tstate->curexc_type; if (unlikely(exc_type)) { if (likely(exc_type == PyExc_StopIteration) || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)) { PyObject *exc_value, *exc_tb; exc_value = tstate->curexc_value; exc_tb = tstate->curexc_traceback; tstate->curexc_type = 0; tstate->curexc_value = 0; tstate->curexc_traceback = 0; Py_DECREF(exc_type); Py_XDECREF(exc_value); Py_XDECREF(exc_tb); return 0; } else { return -1; } } return 0; #else if (unlikely(PyErr_Occurred())) { if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) { PyErr_Clear(); return 0; } else { return -1; } } return 0; #endif } /* UnpackItemEndCheck */ static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected) { if (unlikely(retval)) { Py_DECREF(retval); __Pyx_RaiseTooManyValuesError(expected); return -1; } else { return __Pyx_IterFinish(); } return 0; } /* PyIntBinop */ #if !CYTHON_COMPILING_IN_PYPY static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED int inplace) { #if PY_MAJOR_VERSION < 3 if (likely(PyInt_CheckExact(op1))) { const long b = intval; long x; long a = PyInt_AS_LONG(op1); x = (long)((unsigned long)a + b); if (likely((x^a) >= 0 || (x^b) >= 0)) return PyInt_FromLong(x); return PyLong_Type.tp_as_number->nb_add(op1, op2); } #endif #if CYTHON_USE_PYLONG_INTERNALS if (likely(PyLong_CheckExact(op1))) { const long b = intval; long a, x; #ifdef HAVE_LONG_LONG const PY_LONG_LONG llb = intval; PY_LONG_LONG lla, llx; #endif const digit* digits = ((PyLongObject*)op1)->ob_digit; const Py_ssize_t size = Py_SIZE(op1); if (likely(__Pyx_sst_abs(size) <= 1)) { a = likely(size) ? digits[0] : 0; if (size == -1) a = -a; } else { switch (size) { case -2: if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; #ifdef HAVE_LONG_LONG } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) { lla = -(PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); goto long_long; #endif } case 2: if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; #ifdef HAVE_LONG_LONG } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) { lla = (PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); goto long_long; #endif } case -3: if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; #ifdef HAVE_LONG_LONG } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) { lla = -(PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); goto long_long; #endif } case 3: if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; #ifdef HAVE_LONG_LONG } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) { lla = (PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); goto long_long; #endif } case -4: if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; #ifdef HAVE_LONG_LONG } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) { lla = -(PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); goto long_long; #endif } case 4: if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; #ifdef HAVE_LONG_LONG } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) { lla = (PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); goto long_long; #endif } default: return PyLong_Type.tp_as_number->nb_add(op1, op2); } } x = a + b; return PyLong_FromLong(x); #ifdef HAVE_LONG_LONG long_long: llx = lla + llb; return PyLong_FromLongLong(llx); #endif } #endif if (PyFloat_CheckExact(op1)) { const long b = intval; double a = PyFloat_AS_DOUBLE(op1); double result; PyFPE_START_PROTECT("add", return NULL) result = ((double)a) + (double)b; PyFPE_END_PROTECT(result) return PyFloat_FromDouble(result); } return (inplace ? PyNumber_InPlaceAdd : PyNumber_Add)(op1, op2); } #endif /* None */ static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname) { PyErr_Format(PyExc_UnboundLocalError, "local variable '%s' referenced before assignment", varname); } /* PyCFunctionFastCall */ #if CYTHON_FAST_PYCCALL static CYTHON_INLINE PyObject * __Pyx_PyCFunction_FastCall(PyObject *func_obj, PyObject **args, Py_ssize_t nargs) { PyCFunctionObject *func = (PyCFunctionObject*)func_obj; PyCFunction meth = PyCFunction_GET_FUNCTION(func); PyObject *self = PyCFunction_GET_SELF(func); assert(PyCFunction_Check(func)); assert(METH_FASTCALL == (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST))); assert(nargs >= 0); assert(nargs == 0 || args != NULL); /* _PyCFunction_FastCallDict() must not be called with an exception set, because it may clear it (directly or indirectly) and so the caller loses its exception */ assert(!PyErr_Occurred()); return (*((__Pyx_PyCFunctionFast)meth)) (self, args, nargs, NULL); } #endif // CYTHON_FAST_PYCCALL /* PyFunctionFastCall */ #if CYTHON_FAST_PYCALL #include "frameobject.h" static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args, Py_ssize_t na, PyObject *globals) { PyFrameObject *f; PyThreadState *tstate = PyThreadState_GET(); PyObject **fastlocals; Py_ssize_t i; PyObject *result; assert(globals != NULL); /* XXX Perhaps we should create a specialized PyFrame_New() that doesn't take locals, but does take builtins without sanity checking them. */ assert(tstate != NULL); f = PyFrame_New(tstate, co, globals, NULL); if (f == NULL) { return NULL; } fastlocals = f->f_localsplus; for (i = 0; i < na; i++) { Py_INCREF(*args); fastlocals[i] = *args++; } result = PyEval_EvalFrameEx(f,0); ++tstate->recursion_depth; Py_DECREF(f); --tstate->recursion_depth; return result; } #if 1 || PY_VERSION_HEX < 0x030600B1 static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, int nargs, PyObject *kwargs) { PyCodeObject *co = (PyCodeObject *)PyFunction_GET_CODE(func); PyObject *globals = PyFunction_GET_GLOBALS(func); PyObject *argdefs = PyFunction_GET_DEFAULTS(func); PyObject *closure; #if PY_MAJOR_VERSION >= 3 PyObject *kwdefs; #endif PyObject *kwtuple, **k; PyObject **d; Py_ssize_t nd; Py_ssize_t nk; PyObject *result; assert(kwargs == NULL || PyDict_Check(kwargs)); nk = kwargs ? PyDict_Size(kwargs) : 0; if (Py_EnterRecursiveCall((char*)" while calling a Python object")) { return NULL; } if ( #if PY_MAJOR_VERSION >= 3 co->co_kwonlyargcount == 0 && #endif likely(kwargs == NULL || nk == 0) && co->co_flags == (CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE)) { if (argdefs == NULL && co->co_argcount == nargs) { result = __Pyx_PyFunction_FastCallNoKw(co, args, nargs, globals); goto done; } else if (nargs == 0 && argdefs != NULL && co->co_argcount == Py_SIZE(argdefs)) { /* function called with no arguments, but all parameters have a default value: use default values as arguments .*/ args = &PyTuple_GET_ITEM(argdefs, 0); result =__Pyx_PyFunction_FastCallNoKw(co, args, Py_SIZE(argdefs), globals); goto done; } } if (kwargs != NULL) { Py_ssize_t pos, i; kwtuple = PyTuple_New(2 * nk); if (kwtuple == NULL) { result = NULL; goto done; } k = &PyTuple_GET_ITEM(kwtuple, 0); pos = i = 0; while (PyDict_Next(kwargs, &pos, &k[i], &k[i+1])) { Py_INCREF(k[i]); Py_INCREF(k[i+1]); i += 2; } nk = i / 2; } else { kwtuple = NULL; k = NULL; } closure = PyFunction_GET_CLOSURE(func); #if PY_MAJOR_VERSION >= 3 kwdefs = PyFunction_GET_KW_DEFAULTS(func); #endif if (argdefs != NULL) { d = &PyTuple_GET_ITEM(argdefs, 0); nd = Py_SIZE(argdefs); } else { d = NULL; nd = 0; } #if PY_MAJOR_VERSION >= 3 result = PyEval_EvalCodeEx((PyObject*)co, globals, (PyObject *)NULL, args, nargs, k, (int)nk, d, (int)nd, kwdefs, closure); #else result = PyEval_EvalCodeEx(co, globals, (PyObject *)NULL, args, nargs, k, (int)nk, d, (int)nd, closure); #endif Py_XDECREF(kwtuple); done: Py_LeaveRecursiveCall(); return result; } #endif // CPython < 3.6 #endif // CYTHON_FAST_PYCALL /* PyObjectCallMethO */ #if CYTHON_COMPILING_IN_CPYTHON static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) { PyObject *self, *result; PyCFunction cfunc; cfunc = PyCFunction_GET_FUNCTION(func); self = PyCFunction_GET_SELF(func); if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) return NULL; result = cfunc(self, arg); Py_LeaveRecursiveCall(); if (unlikely(!result) && unlikely(!PyErr_Occurred())) { PyErr_SetString( PyExc_SystemError, "NULL result without error in PyObject_Call"); } return result; } #endif /* PyObjectCallOneArg */ #if CYTHON_COMPILING_IN_CPYTHON static PyObject* __Pyx__PyObject_CallOneArg(PyObject *func, PyObject *arg) { PyObject *result; PyObject *args = PyTuple_New(1); if (unlikely(!args)) return NULL; Py_INCREF(arg); PyTuple_SET_ITEM(args, 0, arg); result = __Pyx_PyObject_Call(func, args, NULL); Py_DECREF(args); return result; } static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { #if CYTHON_FAST_PYCALL if (PyFunction_Check(func)) { return __Pyx_PyFunction_FastCall(func, &arg, 1); } #endif #ifdef __Pyx_CyFunction_USED if (likely(PyCFunction_Check(func) || PyObject_TypeCheck(func, __pyx_CyFunctionType))) { #else if (likely(PyCFunction_Check(func))) { #endif if (likely(PyCFunction_GET_FLAGS(func) & METH_O)) { return __Pyx_PyObject_CallMethO(func, arg); #if CYTHON_FAST_PYCCALL } else if (PyCFunction_GET_FLAGS(func) & METH_FASTCALL) { return __Pyx_PyCFunction_FastCall(func, &arg, 1); #endif } } return __Pyx__PyObject_CallOneArg(func, arg); } #else static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { PyObject *result; PyObject *args = PyTuple_Pack(1, arg); if (unlikely(!args)) return NULL; result = __Pyx_PyObject_Call(func, args, NULL); Py_DECREF(args); return result; } #endif /* PyObjectCallNoArg */ #if CYTHON_COMPILING_IN_CPYTHON static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) { #if CYTHON_FAST_PYCALL if (PyFunction_Check(func)) { return __Pyx_PyFunction_FastCall(func, NULL, 0); } #endif #ifdef __Pyx_CyFunction_USED if (likely(PyCFunction_Check(func) || PyObject_TypeCheck(func, __pyx_CyFunctionType))) { #else if (likely(PyCFunction_Check(func))) { #endif if (likely(PyCFunction_GET_FLAGS(func) & METH_NOARGS)) { return __Pyx_PyObject_CallMethO(func, NULL); } } return __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL); } #endif /* GetItemInt */ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) { PyObject *r; if (!j) return NULL; r = PyObject_GetItem(o, j); Py_DECREF(j); return r; } static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, CYTHON_NCP_UNUSED int wraparound, CYTHON_NCP_UNUSED int boundscheck) { #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (wraparound & unlikely(i < 0)) i += PyList_GET_SIZE(o); if ((!boundscheck) || likely((0 <= i) & (i < PyList_GET_SIZE(o)))) { PyObject *r = PyList_GET_ITEM(o, i); Py_INCREF(r); return r; } return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); #else return PySequence_GetItem(o, i); #endif } static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, CYTHON_NCP_UNUSED int wraparound, CYTHON_NCP_UNUSED int boundscheck) { #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (wraparound & unlikely(i < 0)) i += PyTuple_GET_SIZE(o); if ((!boundscheck) || likely((0 <= i) & (i < PyTuple_GET_SIZE(o)))) { PyObject *r = PyTuple_GET_ITEM(o, i); Py_INCREF(r); return r; } return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); #else return PySequence_GetItem(o, i); #endif } static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, int is_list, CYTHON_NCP_UNUSED int wraparound, CYTHON_NCP_UNUSED int boundscheck) { #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS if (is_list || PyList_CheckExact(o)) { Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyList_GET_SIZE(o); if ((!boundscheck) || (likely((n >= 0) & (n < PyList_GET_SIZE(o))))) { PyObject *r = PyList_GET_ITEM(o, n); Py_INCREF(r); return r; } } else if (PyTuple_CheckExact(o)) { Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o); if ((!boundscheck) || likely((n >= 0) & (n < PyTuple_GET_SIZE(o)))) { PyObject *r = PyTuple_GET_ITEM(o, n); Py_INCREF(r); return r; } } else { PySequenceMethods *m = Py_TYPE(o)->tp_as_sequence; if (likely(m && m->sq_item)) { if (wraparound && unlikely(i < 0) && likely(m->sq_length)) { Py_ssize_t l = m->sq_length(o); if (likely(l >= 0)) { i += l; } else { if (!PyErr_ExceptionMatches(PyExc_OverflowError)) return NULL; PyErr_Clear(); } } return m->sq_item(o, i); } } #else if (is_list || PySequence_Check(o)) { return PySequence_GetItem(o, i); } #endif return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); } /* pyobject_as_double */ static double __Pyx__PyObject_AsDouble(PyObject* obj) { PyObject* float_value; #if !CYTHON_USE_TYPE_SLOTS float_value = PyNumber_Float(obj); if (0) goto bad; #else PyNumberMethods *nb = Py_TYPE(obj)->tp_as_number; if (likely(nb) && likely(nb->nb_float)) { float_value = nb->nb_float(obj); if (likely(float_value) && unlikely(!PyFloat_Check(float_value))) { PyErr_Format(PyExc_TypeError, "__float__ returned non-float (type %.200s)", Py_TYPE(float_value)->tp_name); Py_DECREF(float_value); goto bad; } } else if (PyUnicode_CheckExact(obj) || PyBytes_CheckExact(obj)) { #if PY_MAJOR_VERSION >= 3 float_value = PyFloat_FromString(obj); #else float_value = PyFloat_FromString(obj, 0); #endif } else { PyObject* args = PyTuple_New(1); if (unlikely(!args)) goto bad; PyTuple_SET_ITEM(args, 0, obj); float_value = PyObject_Call((PyObject*)&PyFloat_Type, args, 0); PyTuple_SET_ITEM(args, 0, 0); Py_DECREF(args); } #endif if (likely(float_value)) { double value = PyFloat_AS_DOUBLE(float_value); Py_DECREF(float_value); return value; } bad: return (double)-1; } /* PyObjectCallMethod1 */ static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg) { PyObject *method, *result = NULL; method = __Pyx_PyObject_GetAttrStr(obj, method_name); if (unlikely(!method)) goto done; #if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(method))) { PyObject *self = PyMethod_GET_SELF(method); if (likely(self)) { PyObject *args; PyObject *function = PyMethod_GET_FUNCTION(method); #if CYTHON_FAST_PYCALL if (PyFunction_Check(function)) { PyObject *args[2] = {self, arg}; result = __Pyx_PyFunction_FastCall(function, args, 2); goto done; } #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(function)) { PyObject *args[2] = {self, arg}; result = __Pyx_PyCFunction_FastCall(function, args, 2); goto done; } #endif args = PyTuple_New(2); if (unlikely(!args)) goto done; Py_INCREF(self); PyTuple_SET_ITEM(args, 0, self); Py_INCREF(arg); PyTuple_SET_ITEM(args, 1, arg); Py_INCREF(function); Py_DECREF(method); method = NULL; result = __Pyx_PyObject_Call(function, args, NULL); Py_DECREF(args); Py_DECREF(function); return result; } } #endif result = __Pyx_PyObject_CallOneArg(method, arg); done: Py_XDECREF(method); return result; } /* append */ static CYTHON_INLINE int __Pyx_PyObject_Append(PyObject* L, PyObject* x) { if (likely(PyList_CheckExact(L))) { if (unlikely(__Pyx_PyList_Append(L, x) < 0)) return -1; } else { PyObject* retval = __Pyx_PyObject_CallMethod1(L, __pyx_n_s_append, x); if (unlikely(!retval)) return -1; Py_DECREF(retval); } return 0; } /* ArgTypeTest */ static void __Pyx_RaiseArgumentTypeInvalid(const char* name, PyObject *obj, PyTypeObject *type) { PyErr_Format(PyExc_TypeError, "Argument '%.200s' has incorrect type (expected %.200s, got %.200s)", name, type->tp_name, Py_TYPE(obj)->tp_name); } static CYTHON_INLINE int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *type, int none_allowed, const char *name, int exact) { if (unlikely(!type)) { PyErr_SetString(PyExc_SystemError, "Missing type object"); return 0; } if (none_allowed && obj == Py_None) return 1; else if (exact) { if (likely(Py_TYPE(obj) == type)) return 1; #if PY_MAJOR_VERSION == 2 else if ((type == &PyBaseString_Type) && likely(__Pyx_PyBaseString_CheckExact(obj))) return 1; #endif } else { if (likely(PyObject_TypeCheck(obj, type))) return 1; } __Pyx_RaiseArgumentTypeInvalid(name, obj, type); return 0; } /* CalculateMetaclass */ static PyObject *__Pyx_CalculateMetaclass(PyTypeObject *metaclass, PyObject *bases) { Py_ssize_t i, nbases = PyTuple_GET_SIZE(bases); for (i=0; i < nbases; i++) { PyTypeObject *tmptype; PyObject *tmp = PyTuple_GET_ITEM(bases, i); tmptype = Py_TYPE(tmp); #if PY_MAJOR_VERSION < 3 if (tmptype == &PyClass_Type) continue; #endif if (!metaclass) { metaclass = tmptype; continue; } if (PyType_IsSubtype(metaclass, tmptype)) continue; if (PyType_IsSubtype(tmptype, metaclass)) { metaclass = tmptype; continue; } PyErr_SetString(PyExc_TypeError, "metaclass conflict: " "the metaclass of a derived class " "must be a (non-strict) subclass " "of the metaclasses of all its bases"); return NULL; } if (!metaclass) { #if PY_MAJOR_VERSION < 3 metaclass = &PyClass_Type; #else metaclass = &PyType_Type; #endif } Py_INCREF((PyObject*) metaclass); return (PyObject*) metaclass; } /* Py3ClassCreate */ static PyObject *__Pyx_Py3MetaclassPrepare(PyObject *metaclass, PyObject *bases, PyObject *name, PyObject *qualname, PyObject *mkw, PyObject *modname, PyObject *doc) { PyObject *ns; if (metaclass) { PyObject *prep = __Pyx_PyObject_GetAttrStr(metaclass, __pyx_n_s_prepare); if (prep) { PyObject *pargs = PyTuple_Pack(2, name, bases); if (unlikely(!pargs)) { Py_DECREF(prep); return NULL; } ns = PyObject_Call(prep, pargs, mkw); Py_DECREF(prep); Py_DECREF(pargs); } else { if (unlikely(!PyErr_ExceptionMatches(PyExc_AttributeError))) return NULL; PyErr_Clear(); ns = PyDict_New(); } } else { ns = PyDict_New(); } if (unlikely(!ns)) return NULL; if (unlikely(PyObject_SetItem(ns, __pyx_n_s_module_2, modname) < 0)) goto bad; if (unlikely(PyObject_SetItem(ns, __pyx_n_s_qualname, qualname) < 0)) goto bad; if (unlikely(doc && PyObject_SetItem(ns, __pyx_n_s_doc, doc) < 0)) goto bad; return ns; bad: Py_DECREF(ns); return NULL; } static PyObject *__Pyx_Py3ClassCreate(PyObject *metaclass, PyObject *name, PyObject *bases, PyObject *dict, PyObject *mkw, int calculate_metaclass, int allow_py2_metaclass) { PyObject *result, *margs; PyObject *owned_metaclass = NULL; if (allow_py2_metaclass) { owned_metaclass = PyObject_GetItem(dict, __pyx_n_s_metaclass); if (owned_metaclass) { metaclass = owned_metaclass; } else if (likely(PyErr_ExceptionMatches(PyExc_KeyError))) { PyErr_Clear(); } else { return NULL; } } if (calculate_metaclass && (!metaclass || PyType_Check(metaclass))) { metaclass = __Pyx_CalculateMetaclass((PyTypeObject*) metaclass, bases); Py_XDECREF(owned_metaclass); if (unlikely(!metaclass)) return NULL; owned_metaclass = metaclass; } margs = PyTuple_Pack(3, name, bases, dict); if (unlikely(!margs)) { result = NULL; } else { result = PyObject_Call(metaclass, margs, mkw); Py_DECREF(margs); } Py_XDECREF(owned_metaclass); return result; } /* CodeObjectCache */ static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) { int start = 0, mid = 0, end = count - 1; if (end >= 0 && code_line > entries[end].code_line) { return count; } while (start < end) { mid = start + (end - start) / 2; if (code_line < entries[mid].code_line) { end = mid; } else if (code_line > entries[mid].code_line) { start = mid + 1; } else { return mid; } } if (code_line <= entries[mid].code_line) { return mid; } else { return mid + 1; } } static PyCodeObject *__pyx_find_code_object(int code_line) { PyCodeObject* code_object; int pos; if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) { return NULL; } pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) { return NULL; } code_object = __pyx_code_cache.entries[pos].code_object; Py_INCREF(code_object); return code_object; } static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) { int pos, i; __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries; if (unlikely(!code_line)) { return; } if (unlikely(!entries)) { entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry)); if (likely(entries)) { __pyx_code_cache.entries = entries; __pyx_code_cache.max_count = 64; __pyx_code_cache.count = 1; entries[0].code_line = code_line; entries[0].code_object = code_object; Py_INCREF(code_object); } return; } pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) { PyCodeObject* tmp = entries[pos].code_object; entries[pos].code_object = code_object; Py_DECREF(tmp); return; } if (__pyx_code_cache.count == __pyx_code_cache.max_count) { int new_max = __pyx_code_cache.max_count + 64; entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc( __pyx_code_cache.entries, (size_t)new_max*sizeof(__Pyx_CodeObjectCacheEntry)); if (unlikely(!entries)) { return; } __pyx_code_cache.entries = entries; __pyx_code_cache.max_count = new_max; } for (i=__pyx_code_cache.count; i>pos; i--) { entries[i] = entries[i-1]; } entries[pos].code_line = code_line; entries[pos].code_object = code_object; __pyx_code_cache.count++; Py_INCREF(code_object); } /* AddTraceback */ #include "compile.h" #include "frameobject.h" #include "traceback.h" static PyCodeObject* __Pyx_CreateCodeObjectForTraceback( const char *funcname, int c_line, int py_line, const char *filename) { PyCodeObject *py_code = 0; PyObject *py_srcfile = 0; PyObject *py_funcname = 0; #if PY_MAJOR_VERSION < 3 py_srcfile = PyString_FromString(filename); #else py_srcfile = PyUnicode_FromString(filename); #endif if (!py_srcfile) goto bad; if (c_line) { #if PY_MAJOR_VERSION < 3 py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); #else py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); #endif } else { #if PY_MAJOR_VERSION < 3 py_funcname = PyString_FromString(funcname); #else py_funcname = PyUnicode_FromString(funcname); #endif } if (!py_funcname) goto bad; py_code = __Pyx_PyCode_New( 0, 0, 0, 0, 0, __pyx_empty_bytes, /*PyObject *code,*/ __pyx_empty_tuple, /*PyObject *consts,*/ __pyx_empty_tuple, /*PyObject *names,*/ __pyx_empty_tuple, /*PyObject *varnames,*/ __pyx_empty_tuple, /*PyObject *freevars,*/ __pyx_empty_tuple, /*PyObject *cellvars,*/ py_srcfile, /*PyObject *filename,*/ py_funcname, /*PyObject *name,*/ py_line, __pyx_empty_bytes /*PyObject *lnotab*/ ); Py_DECREF(py_srcfile); Py_DECREF(py_funcname); return py_code; bad: Py_XDECREF(py_srcfile); Py_XDECREF(py_funcname); return NULL; } static void __Pyx_AddTraceback(const char *funcname, int c_line, int py_line, const char *filename) { PyCodeObject *py_code = 0; PyFrameObject *py_frame = 0; py_code = __pyx_find_code_object(c_line ? c_line : py_line); if (!py_code) { py_code = __Pyx_CreateCodeObjectForTraceback( funcname, c_line, py_line, filename); if (!py_code) goto bad; __pyx_insert_code_object(c_line ? c_line : py_line, py_code); } py_frame = PyFrame_New( PyThreadState_GET(), /*PyThreadState *tstate,*/ py_code, /*PyCodeObject *code,*/ __pyx_d, /*PyObject *globals,*/ 0 /*PyObject *locals*/ ); if (!py_frame) goto bad; __Pyx_PyFrame_SetLineNumber(py_frame, py_line); PyTraceBack_Here(py_frame); bad: Py_XDECREF(py_code); Py_XDECREF(py_frame); } /* CIntFromPyVerify */ #define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\ __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0) #define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\ __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1) #define __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, exc)\ {\ func_type value = func_value;\ if (sizeof(target_type) < sizeof(func_type)) {\ if (unlikely(value != (func_type) (target_type) value)) {\ func_type zero = 0;\ if (exc && unlikely(value == (func_type)-1 && PyErr_Occurred()))\ return (target_type) -1;\ if (is_unsigned && unlikely(value < zero))\ goto raise_neg_overflow;\ else\ goto raise_overflow;\ }\ }\ return (target_type) value;\ } /* CIntToPy */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) { const int neg_one = (int) -1, const_zero = (int) 0; const int is_unsigned = neg_one > const_zero; if (is_unsigned) { if (sizeof(int) < sizeof(long)) { return PyInt_FromLong((long) value); } else if (sizeof(int) <= sizeof(unsigned long)) { return PyLong_FromUnsignedLong((unsigned long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) { return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); #endif } } else { if (sizeof(int) <= sizeof(long)) { return PyInt_FromLong((long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) { return PyLong_FromLongLong((PY_LONG_LONG) value); #endif } } { int one = 1; int little = (int)*(unsigned char *)&one; unsigned char *bytes = (unsigned char *)&value; return _PyLong_FromByteArray(bytes, sizeof(int), little, !is_unsigned); } } /* CIntToPy */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) { const long neg_one = (long) -1, const_zero = (long) 0; const int is_unsigned = neg_one > const_zero; if (is_unsigned) { if (sizeof(long) < sizeof(long)) { return PyInt_FromLong((long) value); } else if (sizeof(long) <= sizeof(unsigned long)) { return PyLong_FromUnsignedLong((unsigned long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); #endif } } else { if (sizeof(long) <= sizeof(long)) { return PyInt_FromLong((long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { return PyLong_FromLongLong((PY_LONG_LONG) value); #endif } } { int one = 1; int little = (int)*(unsigned char *)&one; unsigned char *bytes = (unsigned char *)&value; return _PyLong_FromByteArray(bytes, sizeof(long), little, !is_unsigned); } } /* CIntToPy */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_GLint(GLint value) { const GLint neg_one = (GLint) -1, const_zero = (GLint) 0; const int is_unsigned = neg_one > const_zero; if (is_unsigned) { if (sizeof(GLint) < sizeof(long)) { return PyInt_FromLong((long) value); } else if (sizeof(GLint) <= sizeof(unsigned long)) { return PyLong_FromUnsignedLong((unsigned long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(GLint) <= sizeof(unsigned PY_LONG_LONG)) { return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); #endif } } else { if (sizeof(GLint) <= sizeof(long)) { return PyInt_FromLong((long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(GLint) <= sizeof(PY_LONG_LONG)) { return PyLong_FromLongLong((PY_LONG_LONG) value); #endif } } { int one = 1; int little = (int)*(unsigned char *)&one; unsigned char *bytes = (unsigned char *)&value; return _PyLong_FromByteArray(bytes, sizeof(GLint), little, !is_unsigned); } } /* CIntFromPy */ static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) { const int neg_one = (int) -1, const_zero = (int) 0; const int is_unsigned = neg_one > const_zero; #if PY_MAJOR_VERSION < 3 if (likely(PyInt_Check(x))) { if (sizeof(int) < sizeof(long)) { __PYX_VERIFY_RETURN_INT(int, long, PyInt_AS_LONG(x)) } else { long val = PyInt_AS_LONG(x); if (is_unsigned && unlikely(val < 0)) { goto raise_neg_overflow; } return (int) val; } } else #endif if (likely(PyLong_Check(x))) { if (is_unsigned) { #if CYTHON_USE_PYLONG_INTERNALS const digit* digits = ((PyLongObject*)x)->ob_digit; switch (Py_SIZE(x)) { case 0: return (int) 0; case 1: __PYX_VERIFY_RETURN_INT(int, digit, digits[0]) case 2: if (8 * sizeof(int) > 1 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(int) >= 2 * PyLong_SHIFT) { return (int) (((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); } } break; case 3: if (8 * sizeof(int) > 2 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(int) >= 3 * PyLong_SHIFT) { return (int) (((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); } } break; case 4: if (8 * sizeof(int) > 3 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(int) >= 4 * PyLong_SHIFT) { return (int) (((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); } } break; } #endif #if CYTHON_COMPILING_IN_CPYTHON if (unlikely(Py_SIZE(x) < 0)) { goto raise_neg_overflow; } #else { int result = PyObject_RichCompareBool(x, Py_False, Py_LT); if (unlikely(result < 0)) return (int) -1; if (unlikely(result == 1)) goto raise_neg_overflow; } #endif if (sizeof(int) <= sizeof(unsigned long)) { __PYX_VERIFY_RETURN_INT_EXC(int, unsigned long, PyLong_AsUnsignedLong(x)) #ifdef HAVE_LONG_LONG } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) { __PYX_VERIFY_RETURN_INT_EXC(int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) #endif } } else { #if CYTHON_USE_PYLONG_INTERNALS const digit* digits = ((PyLongObject*)x)->ob_digit; switch (Py_SIZE(x)) { case 0: return (int) 0; case -1: __PYX_VERIFY_RETURN_INT(int, sdigit, (sdigit) (-(sdigit)digits[0])) case 1: __PYX_VERIFY_RETURN_INT(int, digit, +digits[0]) case -2: if (8 * sizeof(int) - 1 > 1 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { return (int) (((int)-1)*(((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); } } break; case 2: if (8 * sizeof(int) > 1 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { return (int) ((((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); } } break; case -3: if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { return (int) (((int)-1)*(((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); } } break; case 3: if (8 * sizeof(int) > 2 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { return (int) ((((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); } } break; case -4: if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) { return (int) (((int)-1)*(((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); } } break; case 4: if (8 * sizeof(int) > 3 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) { return (int) ((((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); } } break; } #endif if (sizeof(int) <= sizeof(long)) { __PYX_VERIFY_RETURN_INT_EXC(int, long, PyLong_AsLong(x)) #ifdef HAVE_LONG_LONG } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) { __PYX_VERIFY_RETURN_INT_EXC(int, PY_LONG_LONG, PyLong_AsLongLong(x)) #endif } } { #if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray) PyErr_SetString(PyExc_RuntimeError, "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"); #else int val; PyObject *v = __Pyx_PyNumber_IntOrLong(x); #if PY_MAJOR_VERSION < 3 if (likely(v) && !PyLong_Check(v)) { PyObject *tmp = v; v = PyNumber_Long(tmp); Py_DECREF(tmp); } #endif if (likely(v)) { int one = 1; int is_little = (int)*(unsigned char *)&one; unsigned char *bytes = (unsigned char *)&val; int ret = _PyLong_AsByteArray((PyLongObject *)v, bytes, sizeof(val), is_little, !is_unsigned); Py_DECREF(v); if (likely(!ret)) return val; } #endif return (int) -1; } } else { int val; PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); if (!tmp) return (int) -1; val = __Pyx_PyInt_As_int(tmp); Py_DECREF(tmp); return val; } raise_overflow: PyErr_SetString(PyExc_OverflowError, "value too large to convert to int"); return (int) -1; raise_neg_overflow: PyErr_SetString(PyExc_OverflowError, "can't convert negative value to int"); return (int) -1; } /* CIntFromPy */ static CYTHON_INLINE short __Pyx_PyInt_As_short(PyObject *x) { const short neg_one = (short) -1, const_zero = (short) 0; const int is_unsigned = neg_one > const_zero; #if PY_MAJOR_VERSION < 3 if (likely(PyInt_Check(x))) { if (sizeof(short) < sizeof(long)) { __PYX_VERIFY_RETURN_INT(short, long, PyInt_AS_LONG(x)) } else { long val = PyInt_AS_LONG(x); if (is_unsigned && unlikely(val < 0)) { goto raise_neg_overflow; } return (short) val; } } else #endif if (likely(PyLong_Check(x))) { if (is_unsigned) { #if CYTHON_USE_PYLONG_INTERNALS const digit* digits = ((PyLongObject*)x)->ob_digit; switch (Py_SIZE(x)) { case 0: return (short) 0; case 1: __PYX_VERIFY_RETURN_INT(short, digit, digits[0]) case 2: if (8 * sizeof(short) > 1 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(short, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(short) >= 2 * PyLong_SHIFT) { return (short) (((((short)digits[1]) << PyLong_SHIFT) | (short)digits[0])); } } break; case 3: if (8 * sizeof(short) > 2 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(short, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(short) >= 3 * PyLong_SHIFT) { return (short) (((((((short)digits[2]) << PyLong_SHIFT) | (short)digits[1]) << PyLong_SHIFT) | (short)digits[0])); } } break; case 4: if (8 * sizeof(short) > 3 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(short, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(short) >= 4 * PyLong_SHIFT) { return (short) (((((((((short)digits[3]) << PyLong_SHIFT) | (short)digits[2]) << PyLong_SHIFT) | (short)digits[1]) << PyLong_SHIFT) | (short)digits[0])); } } break; } #endif #if CYTHON_COMPILING_IN_CPYTHON if (unlikely(Py_SIZE(x) < 0)) { goto raise_neg_overflow; } #else { int result = PyObject_RichCompareBool(x, Py_False, Py_LT); if (unlikely(result < 0)) return (short) -1; if (unlikely(result == 1)) goto raise_neg_overflow; } #endif if (sizeof(short) <= sizeof(unsigned long)) { __PYX_VERIFY_RETURN_INT_EXC(short, unsigned long, PyLong_AsUnsignedLong(x)) #ifdef HAVE_LONG_LONG } else if (sizeof(short) <= sizeof(unsigned PY_LONG_LONG)) { __PYX_VERIFY_RETURN_INT_EXC(short, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) #endif } } else { #if CYTHON_USE_PYLONG_INTERNALS const digit* digits = ((PyLongObject*)x)->ob_digit; switch (Py_SIZE(x)) { case 0: return (short) 0; case -1: __PYX_VERIFY_RETURN_INT(short, sdigit, (sdigit) (-(sdigit)digits[0])) case 1: __PYX_VERIFY_RETURN_INT(short, digit, +digits[0]) case -2: if (8 * sizeof(short) - 1 > 1 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(short, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(short) - 1 > 2 * PyLong_SHIFT) { return (short) (((short)-1)*(((((short)digits[1]) << PyLong_SHIFT) | (short)digits[0]))); } } break; case 2: if (8 * sizeof(short) > 1 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(short, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(short) - 1 > 2 * PyLong_SHIFT) { return (short) ((((((short)digits[1]) << PyLong_SHIFT) | (short)digits[0]))); } } break; case -3: if (8 * sizeof(short) - 1 > 2 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(short, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(short) - 1 > 3 * PyLong_SHIFT) { return (short) (((short)-1)*(((((((short)digits[2]) << PyLong_SHIFT) | (short)digits[1]) << PyLong_SHIFT) | (short)digits[0]))); } } break; case 3: if (8 * sizeof(short) > 2 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(short, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(short) - 1 > 3 * PyLong_SHIFT) { return (short) ((((((((short)digits[2]) << PyLong_SHIFT) | (short)digits[1]) << PyLong_SHIFT) | (short)digits[0]))); } } break; case -4: if (8 * sizeof(short) - 1 > 3 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(short, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(short) - 1 > 4 * PyLong_SHIFT) { return (short) (((short)-1)*(((((((((short)digits[3]) << PyLong_SHIFT) | (short)digits[2]) << PyLong_SHIFT) | (short)digits[1]) << PyLong_SHIFT) | (short)digits[0]))); } } break; case 4: if (8 * sizeof(short) > 3 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(short, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(short) - 1 > 4 * PyLong_SHIFT) { return (short) ((((((((((short)digits[3]) << PyLong_SHIFT) | (short)digits[2]) << PyLong_SHIFT) | (short)digits[1]) << PyLong_SHIFT) | (short)digits[0]))); } } break; } #endif if (sizeof(short) <= sizeof(long)) { __PYX_VERIFY_RETURN_INT_EXC(short, long, PyLong_AsLong(x)) #ifdef HAVE_LONG_LONG } else if (sizeof(short) <= sizeof(PY_LONG_LONG)) { __PYX_VERIFY_RETURN_INT_EXC(short, PY_LONG_LONG, PyLong_AsLongLong(x)) #endif } } { #if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray) PyErr_SetString(PyExc_RuntimeError, "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"); #else short val; PyObject *v = __Pyx_PyNumber_IntOrLong(x); #if PY_MAJOR_VERSION < 3 if (likely(v) && !PyLong_Check(v)) { PyObject *tmp = v; v = PyNumber_Long(tmp); Py_DECREF(tmp); } #endif if (likely(v)) { int one = 1; int is_little = (int)*(unsigned char *)&one; unsigned char *bytes = (unsigned char *)&val; int ret = _PyLong_AsByteArray((PyLongObject *)v, bytes, sizeof(val), is_little, !is_unsigned); Py_DECREF(v); if (likely(!ret)) return val; } #endif return (short) -1; } } else { short val; PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); if (!tmp) return (short) -1; val = __Pyx_PyInt_As_short(tmp); Py_DECREF(tmp); return val; } raise_overflow: PyErr_SetString(PyExc_OverflowError, "value too large to convert to short"); return (short) -1; raise_neg_overflow: PyErr_SetString(PyExc_OverflowError, "can't convert negative value to short"); return (short) -1; } /* CIntFromPy */ static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) { const long neg_one = (long) -1, const_zero = (long) 0; const int is_unsigned = neg_one > const_zero; #if PY_MAJOR_VERSION < 3 if (likely(PyInt_Check(x))) { if (sizeof(long) < sizeof(long)) { __PYX_VERIFY_RETURN_INT(long, long, PyInt_AS_LONG(x)) } else { long val = PyInt_AS_LONG(x); if (is_unsigned && unlikely(val < 0)) { goto raise_neg_overflow; } return (long) val; } } else #endif if (likely(PyLong_Check(x))) { if (is_unsigned) { #if CYTHON_USE_PYLONG_INTERNALS const digit* digits = ((PyLongObject*)x)->ob_digit; switch (Py_SIZE(x)) { case 0: return (long) 0; case 1: __PYX_VERIFY_RETURN_INT(long, digit, digits[0]) case 2: if (8 * sizeof(long) > 1 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(long) >= 2 * PyLong_SHIFT) { return (long) (((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); } } break; case 3: if (8 * sizeof(long) > 2 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(long) >= 3 * PyLong_SHIFT) { return (long) (((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); } } break; case 4: if (8 * sizeof(long) > 3 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(long) >= 4 * PyLong_SHIFT) { return (long) (((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); } } break; } #endif #if CYTHON_COMPILING_IN_CPYTHON if (unlikely(Py_SIZE(x) < 0)) { goto raise_neg_overflow; } #else { int result = PyObject_RichCompareBool(x, Py_False, Py_LT); if (unlikely(result < 0)) return (long) -1; if (unlikely(result == 1)) goto raise_neg_overflow; } #endif if (sizeof(long) <= sizeof(unsigned long)) { __PYX_VERIFY_RETURN_INT_EXC(long, unsigned long, PyLong_AsUnsignedLong(x)) #ifdef HAVE_LONG_LONG } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { __PYX_VERIFY_RETURN_INT_EXC(long, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) #endif } } else { #if CYTHON_USE_PYLONG_INTERNALS const digit* digits = ((PyLongObject*)x)->ob_digit; switch (Py_SIZE(x)) { case 0: return (long) 0; case -1: __PYX_VERIFY_RETURN_INT(long, sdigit, (sdigit) (-(sdigit)digits[0])) case 1: __PYX_VERIFY_RETURN_INT(long, digit, +digits[0]) case -2: if (8 * sizeof(long) - 1 > 1 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { return (long) (((long)-1)*(((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); } } break; case 2: if (8 * sizeof(long) > 1 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { return (long) ((((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); } } break; case -3: if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { return (long) (((long)-1)*(((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); } } break; case 3: if (8 * sizeof(long) > 2 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { return (long) ((((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); } } break; case -4: if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { return (long) (((long)-1)*(((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); } } break; case 4: if (8 * sizeof(long) > 3 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { return (long) ((((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); } } break; } #endif if (sizeof(long) <= sizeof(long)) { __PYX_VERIFY_RETURN_INT_EXC(long, long, PyLong_AsLong(x)) #ifdef HAVE_LONG_LONG } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { __PYX_VERIFY_RETURN_INT_EXC(long, PY_LONG_LONG, PyLong_AsLongLong(x)) #endif } } { #if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray) PyErr_SetString(PyExc_RuntimeError, "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"); #else long val; PyObject *v = __Pyx_PyNumber_IntOrLong(x); #if PY_MAJOR_VERSION < 3 if (likely(v) && !PyLong_Check(v)) { PyObject *tmp = v; v = PyNumber_Long(tmp); Py_DECREF(tmp); } #endif if (likely(v)) { int one = 1; int is_little = (int)*(unsigned char *)&one; unsigned char *bytes = (unsigned char *)&val; int ret = _PyLong_AsByteArray((PyLongObject *)v, bytes, sizeof(val), is_little, !is_unsigned); Py_DECREF(v); if (likely(!ret)) return val; } #endif return (long) -1; } } else { long val; PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); if (!tmp) return (long) -1; val = __Pyx_PyInt_As_long(tmp); Py_DECREF(tmp); return val; } raise_overflow: PyErr_SetString(PyExc_OverflowError, "value too large to convert to long"); return (long) -1; raise_neg_overflow: PyErr_SetString(PyExc_OverflowError, "can't convert negative value to long"); return (long) -1; } /* CheckBinaryVersion */ static int __Pyx_check_binary_version(void) { char ctversion[4], rtversion[4]; PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION); PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion()); if (ctversion[0] != rtversion[0] || ctversion[2] != rtversion[2]) { char message[200]; PyOS_snprintf(message, sizeof(message), "compiletime version %s of module '%.100s' " "does not match runtime version %s", ctversion, __Pyx_MODULE_NAME, rtversion); return PyErr_WarnEx(NULL, message, 1); } return 0; } /* FunctionExport */ static int __Pyx_ExportFunction(const char *name, void (*f)(void), const char *sig) { PyObject *d = 0; PyObject *cobj = 0; union { void (*fp)(void); void *p; } tmp; d = PyObject_GetAttrString(__pyx_m, (char *)"__pyx_capi__"); if (!d) { PyErr_Clear(); d = PyDict_New(); if (!d) goto bad; Py_INCREF(d); if (PyModule_AddObject(__pyx_m, (char *)"__pyx_capi__", d) < 0) goto bad; } tmp.fp = f; #if PY_VERSION_HEX >= 0x02070000 cobj = PyCapsule_New(tmp.p, sig, 0); #else cobj = PyCObject_FromVoidPtrAndDesc(tmp.p, (void *)sig, 0); #endif if (!cobj) goto bad; if (PyDict_SetItemString(d, name, cobj) < 0) goto bad; Py_DECREF(cobj); Py_DECREF(d); return 0; bad: Py_XDECREF(cobj); Py_XDECREF(d); return -1; } /* ModuleImport */ #ifndef __PYX_HAVE_RT_ImportModule #define __PYX_HAVE_RT_ImportModule static PyObject *__Pyx_ImportModule(const char *name) { PyObject *py_name = 0; PyObject *py_module = 0; py_name = __Pyx_PyIdentifier_FromString(name); if (!py_name) goto bad; py_module = PyImport_Import(py_name); Py_DECREF(py_name); return py_module; bad: Py_XDECREF(py_name); return 0; } #endif /* FunctionImport */ #ifndef __PYX_HAVE_RT_ImportFunction #define __PYX_HAVE_RT_ImportFunction static int __Pyx_ImportFunction(PyObject *module, const char *funcname, void (**f)(void), const char *sig) { PyObject *d = 0; PyObject *cobj = 0; union { void (*fp)(void); void *p; } tmp; d = PyObject_GetAttrString(module, (char *)"__pyx_capi__"); if (!d) goto bad; cobj = PyDict_GetItemString(d, funcname); if (!cobj) { PyErr_Format(PyExc_ImportError, "%.200s does not export expected C function %.200s", PyModule_GetName(module), funcname); goto bad; } #if PY_VERSION_HEX >= 0x02070000 if (!PyCapsule_IsValid(cobj, sig)) { PyErr_Format(PyExc_TypeError, "C function %.200s.%.200s has wrong signature (expected %.500s, got %.500s)", PyModule_GetName(module), funcname, sig, PyCapsule_GetName(cobj)); goto bad; } tmp.p = PyCapsule_GetPointer(cobj, sig); #else {const char *desc, *s1, *s2; desc = (const char *)PyCObject_GetDesc(cobj); if (!desc) goto bad; s1 = desc; s2 = sig; while (*s1 != '\0' && *s1 == *s2) { s1++; s2++; } if (*s1 != *s2) { PyErr_Format(PyExc_TypeError, "C function %.200s.%.200s has wrong signature (expected %.500s, got %.500s)", PyModule_GetName(module), funcname, sig, desc); goto bad; } tmp.p = PyCObject_AsVoidPtr(cobj);} #endif *f = tmp.fp; if (!(*f)) goto bad; Py_DECREF(d); return 0; bad: Py_XDECREF(d); return -1; } #endif /* InitStrings */ static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) { while (t->p) { #if PY_MAJOR_VERSION < 3 if (t->is_unicode) { *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL); } else if (t->intern) { *t->p = PyString_InternFromString(t->s); } else { *t->p = PyString_FromStringAndSize(t->s, t->n - 1); } #else if (t->is_unicode | t->is_str) { if (t->intern) { *t->p = PyUnicode_InternFromString(t->s); } else if (t->encoding) { *t->p = PyUnicode_Decode(t->s, t->n - 1, t->encoding, NULL); } else { *t->p = PyUnicode_FromStringAndSize(t->s, t->n - 1); } } else { *t->p = PyBytes_FromStringAndSize(t->s, t->n - 1); } #endif if (!*t->p) return -1; ++t; } return 0; } static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char* c_str) { return __Pyx_PyUnicode_FromStringAndSize(c_str, (Py_ssize_t)strlen(c_str)); } static CYTHON_INLINE char* __Pyx_PyObject_AsString(PyObject* o) { Py_ssize_t ignore; return __Pyx_PyObject_AsStringAndSize(o, &ignore); } static CYTHON_INLINE char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_t *length) { #if CYTHON_COMPILING_IN_CPYTHON && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT) if ( #if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII __Pyx_sys_getdefaultencoding_not_ascii && #endif PyUnicode_Check(o)) { #if PY_VERSION_HEX < 0x03030000 char* defenc_c; PyObject* defenc = _PyUnicode_AsDefaultEncodedString(o, NULL); if (!defenc) return NULL; defenc_c = PyBytes_AS_STRING(defenc); #if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII { char* end = defenc_c + PyBytes_GET_SIZE(defenc); char* c; for (c = defenc_c; c < end; c++) { if ((unsigned char) (*c) >= 128) { PyUnicode_AsASCIIString(o); return NULL; } } } #endif *length = PyBytes_GET_SIZE(defenc); return defenc_c; #else if (__Pyx_PyUnicode_READY(o) == -1) return NULL; #if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII if (PyUnicode_IS_ASCII(o)) { *length = PyUnicode_GET_LENGTH(o); return PyUnicode_AsUTF8(o); } else { PyUnicode_AsASCIIString(o); return NULL; } #else return PyUnicode_AsUTF8AndSize(o, length); #endif #endif } else #endif #if (!CYTHON_COMPILING_IN_PYPY) || (defined(PyByteArray_AS_STRING) && defined(PyByteArray_GET_SIZE)) if (PyByteArray_Check(o)) { *length = PyByteArray_GET_SIZE(o); return PyByteArray_AS_STRING(o); } else #endif { char* result; int r = PyBytes_AsStringAndSize(o, &result, length); if (unlikely(r < 0)) { return NULL; } else { return result; } } } static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) { int is_true = x == Py_True; if (is_true | (x == Py_False) | (x == Py_None)) return is_true; else return PyObject_IsTrue(x); } static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x) { #if CYTHON_USE_TYPE_SLOTS PyNumberMethods *m; #endif const char *name = NULL; PyObject *res = NULL; #if PY_MAJOR_VERSION < 3 if (PyInt_Check(x) || PyLong_Check(x)) #else if (PyLong_Check(x)) #endif return __Pyx_NewRef(x); #if CYTHON_USE_TYPE_SLOTS m = Py_TYPE(x)->tp_as_number; #if PY_MAJOR_VERSION < 3 if (m && m->nb_int) { name = "int"; res = PyNumber_Int(x); } else if (m && m->nb_long) { name = "long"; res = PyNumber_Long(x); } #else if (m && m->nb_int) { name = "int"; res = PyNumber_Long(x); } #endif #else res = PyNumber_Int(x); #endif if (res) { #if PY_MAJOR_VERSION < 3 if (!PyInt_Check(res) && !PyLong_Check(res)) { #else if (!PyLong_Check(res)) { #endif PyErr_Format(PyExc_TypeError, "__%.4s__ returned non-%.4s (type %.200s)", name, name, Py_TYPE(res)->tp_name); Py_DECREF(res); return NULL; } } else if (!PyErr_Occurred()) { PyErr_SetString(PyExc_TypeError, "an integer is required"); } return res; } static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) { Py_ssize_t ival; PyObject *x; #if PY_MAJOR_VERSION < 3 if (likely(PyInt_CheckExact(b))) { if (sizeof(Py_ssize_t) >= sizeof(long)) return PyInt_AS_LONG(b); else return PyInt_AsSsize_t(x); } #endif if (likely(PyLong_CheckExact(b))) { #if CYTHON_USE_PYLONG_INTERNALS const digit* digits = ((PyLongObject*)b)->ob_digit; const Py_ssize_t size = Py_SIZE(b); if (likely(__Pyx_sst_abs(size) <= 1)) { ival = likely(size) ? digits[0] : 0; if (size == -1) ival = -ival; return ival; } else { switch (size) { case 2: if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { return (Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); } break; case -2: if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { return -(Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); } break; case 3: if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { return (Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); } break; case -3: if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { return -(Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); } break; case 4: if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { return (Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); } break; case -4: if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { return -(Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); } break; } } #endif return PyLong_AsSsize_t(b); } x = PyNumber_Index(b); if (!x) return -1; ival = PyInt_AsSsize_t(x); Py_DECREF(x); return ival; } static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) { return PyInt_FromSize_t(ival); } #endif /* Py_PYTHON_H */ pybik-3.0/csrc/main.h0000644000175000017500000003407313173054541014701 0ustar barccbarcc00000000000000/******************************************************************************** ** Form generated from reading UI file 'main.ui' ** ** Created by: Qt User Interface Compiler version 5.7.1 ** ** WARNING! All changes made in this file will be lost when recompiling UI file! ********************************************************************************/ #ifndef MAIN_H #define MAIN_H #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "../../../pybiklib/ext/qtui_p.h" QT_BEGIN_NAMESPACE class Ui_MainWindow { public: QAction *action_challenge; QAction *action_new_solved; QAction *action_quit; QAction *action_selectmodel; QAction *action_selectmodel_back; QAction *action_initial_state; QAction *action_reset_rotation; QAction *action_preferences; QAction *action_statusbar; QAction *action_info; QAction *action_rewind; QAction *action_previous; QAction *action_stop; QAction *action_play; QAction *action_next; QAction *action_forward; QAction *action_mark_set; QAction *action_mark_remove; QAction *action_editbar; QAction *action_help; QWidget *centralwidget; QVBoxLayout *verticalLayout_3; QStackedWidget *stackedwidget; QWidget *page_game; QVBoxLayout *verticalLayout_2; QFrame *frame_editbar; QHBoxLayout *layout_moves; QToolButton *button_edit_exec; QToolButton *button_edit_clear; QSplitter *splitter; QWidget *layoutWidget; QVBoxLayout *verticalLayout; QLabel *label_debug_text; QWidget *box_sidepane; QVBoxLayout *layout_sidepane; QWidget *page_modelselection; QVBoxLayout *verticalLayout_9; ModelSelectionWidget *listwidget; QStatusBar *statusbar; QToolBar *toolbar_play; QToolBar *toolbar_selectmodel; QToolBar *toolbar_common; void setupUi(QMainWindow *MainWindow) { if (MainWindow->objectName().isEmpty()) MainWindow->setObjectName(QStringLiteral("MainWindow")); action_challenge = new QAction(MainWindow); action_challenge->setObjectName(QStringLiteral("action_challenge")); action_challenge->setShortcut(QStringLiteral("Ctrl+N")); action_new_solved = new QAction(MainWindow); action_new_solved->setObjectName(QStringLiteral("action_new_solved")); action_new_solved->setShortcut(QStringLiteral("Ctrl+Shift+N")); action_quit = new QAction(MainWindow); action_quit->setObjectName(QStringLiteral("action_quit")); action_quit->setShortcut(QStringLiteral("Ctrl+Q")); action_selectmodel = new QAction(MainWindow); action_selectmodel->setObjectName(QStringLiteral("action_selectmodel")); action_selectmodel_back = new QAction(MainWindow); action_selectmodel_back->setObjectName(QStringLiteral("action_selectmodel_back")); action_selectmodel_back->setShortcut(QStringLiteral("Esc")); action_initial_state = new QAction(MainWindow); action_initial_state->setObjectName(QStringLiteral("action_initial_state")); action_reset_rotation = new QAction(MainWindow); action_reset_rotation->setObjectName(QStringLiteral("action_reset_rotation")); action_preferences = new QAction(MainWindow); action_preferences->setObjectName(QStringLiteral("action_preferences")); action_statusbar = new QAction(MainWindow); action_statusbar->setObjectName(QStringLiteral("action_statusbar")); action_statusbar->setCheckable(true); action_statusbar->setChecked(true); action_info = new QAction(MainWindow); action_info->setObjectName(QStringLiteral("action_info")); action_rewind = new QAction(MainWindow); action_rewind->setObjectName(QStringLiteral("action_rewind")); action_previous = new QAction(MainWindow); action_previous->setObjectName(QStringLiteral("action_previous")); action_stop = new QAction(MainWindow); action_stop->setObjectName(QStringLiteral("action_stop")); action_play = new QAction(MainWindow); action_play->setObjectName(QStringLiteral("action_play")); action_next = new QAction(MainWindow); action_next->setObjectName(QStringLiteral("action_next")); action_forward = new QAction(MainWindow); action_forward->setObjectName(QStringLiteral("action_forward")); action_mark_set = new QAction(MainWindow); action_mark_set->setObjectName(QStringLiteral("action_mark_set")); action_mark_remove = new QAction(MainWindow); action_mark_remove->setObjectName(QStringLiteral("action_mark_remove")); action_editbar = new QAction(MainWindow); action_editbar->setObjectName(QStringLiteral("action_editbar")); action_editbar->setCheckable(true); action_editbar->setChecked(true); action_help = new QAction(MainWindow); action_help->setObjectName(QStringLiteral("action_help")); #ifndef QT_NO_TOOLTIP action_help->setToolTip(QStringLiteral("Help")); #endif // QT_NO_TOOLTIP action_help->setShortcut(QStringLiteral("F1")); centralwidget = new QWidget(MainWindow); centralwidget->setObjectName(QStringLiteral("centralwidget")); verticalLayout_3 = new QVBoxLayout(centralwidget); verticalLayout_3->setSpacing(6); verticalLayout_3->setObjectName(QStringLiteral("verticalLayout_3")); verticalLayout_3->setContentsMargins(0, 0, 0, 0); stackedwidget = new QStackedWidget(centralwidget); stackedwidget->setObjectName(QStringLiteral("stackedwidget")); page_game = new QWidget(); page_game->setObjectName(QStringLiteral("page_game")); verticalLayout_2 = new QVBoxLayout(page_game); verticalLayout_2->setSpacing(0); verticalLayout_2->setObjectName(QStringLiteral("verticalLayout_2")); verticalLayout_2->setContentsMargins(0, 0, 0, 0); frame_editbar = new QFrame(page_game); frame_editbar->setObjectName(QStringLiteral("frame_editbar")); QSizePolicy sizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed); sizePolicy.setHorizontalStretch(0); sizePolicy.setVerticalStretch(0); sizePolicy.setHeightForWidth(frame_editbar->sizePolicy().hasHeightForWidth()); frame_editbar->setSizePolicy(sizePolicy); frame_editbar->setLayoutDirection(Qt::LeftToRight); frame_editbar->setFrameShape(QFrame::StyledPanel); frame_editbar->setFrameShadow(QFrame::Raised); frame_editbar->setLineWidth(0); frame_editbar->setMidLineWidth(0); layout_moves = new QHBoxLayout(frame_editbar); layout_moves->setSpacing(0); layout_moves->setObjectName(QStringLiteral("layout_moves")); layout_moves->setContentsMargins(0, 0, 0, 0); button_edit_exec = new QToolButton(frame_editbar); button_edit_exec->setObjectName(QStringLiteral("button_edit_exec")); button_edit_exec->setFocusPolicy(Qt::NoFocus); button_edit_exec->setAutoRaise(true); layout_moves->addWidget(button_edit_exec); button_edit_clear = new QToolButton(frame_editbar); button_edit_clear->setObjectName(QStringLiteral("button_edit_clear")); button_edit_clear->setFocusPolicy(Qt::NoFocus); button_edit_clear->setAutoRaise(true); layout_moves->addWidget(button_edit_clear); verticalLayout_2->addWidget(frame_editbar); splitter = new QSplitter(page_game); splitter->setObjectName(QStringLiteral("splitter")); splitter->setOrientation(Qt::Horizontal); layoutWidget = new QWidget(splitter); layoutWidget->setObjectName(QStringLiteral("layoutWidget")); verticalLayout = new QVBoxLayout(layoutWidget); verticalLayout->setSpacing(0); verticalLayout->setObjectName(QStringLiteral("verticalLayout")); verticalLayout->setContentsMargins(0, 0, 0, 0); label_debug_text = new QLabel(layoutWidget); label_debug_text->setObjectName(QStringLiteral("label_debug_text")); QSizePolicy sizePolicy1(QSizePolicy::Minimum, QSizePolicy::Minimum); sizePolicy1.setHorizontalStretch(0); sizePolicy1.setVerticalStretch(0); sizePolicy1.setHeightForWidth(label_debug_text->sizePolicy().hasHeightForWidth()); label_debug_text->setSizePolicy(sizePolicy1); label_debug_text->setText(QStringLiteral("")); label_debug_text->setTextFormat(Qt::PlainText); verticalLayout->addWidget(label_debug_text); splitter->addWidget(layoutWidget); box_sidepane = new QWidget(splitter); box_sidepane->setObjectName(QStringLiteral("box_sidepane")); layout_sidepane = new QVBoxLayout(box_sidepane); layout_sidepane->setSpacing(0); layout_sidepane->setObjectName(QStringLiteral("layout_sidepane")); layout_sidepane->setContentsMargins(0, 0, 0, 0); splitter->addWidget(box_sidepane); verticalLayout_2->addWidget(splitter); stackedwidget->addWidget(page_game); page_modelselection = new QWidget(); page_modelselection->setObjectName(QStringLiteral("page_modelselection")); verticalLayout_9 = new QVBoxLayout(page_modelselection); verticalLayout_9->setSpacing(0); verticalLayout_9->setObjectName(QStringLiteral("verticalLayout_9")); verticalLayout_9->setContentsMargins(0, 0, 0, 0); listwidget = new ModelSelectionWidget(page_modelselection); listwidget->setObjectName(QStringLiteral("listwidget")); listwidget->setEditTriggers(QAbstractItemView::NoEditTriggers); listwidget->setDragDropMode(QAbstractItemView::NoDragDrop); listwidget->setIconSize(QSize(128, 128)); listwidget->setMovement(QListView::Static); listwidget->setViewMode(QListView::IconMode); listwidget->setUniformItemSizes(true); listwidget->setWordWrap(true); verticalLayout_9->addWidget(listwidget); stackedwidget->addWidget(page_modelselection); verticalLayout_3->addWidget(stackedwidget); MainWindow->setCentralWidget(centralwidget); statusbar = new QStatusBar(MainWindow); statusbar->setObjectName(QStringLiteral("statusbar")); MainWindow->setStatusBar(statusbar); toolbar_play = new QToolBar(MainWindow); toolbar_play->setObjectName(QStringLiteral("toolbar_play")); toolbar_play->setMovable(false); toolbar_play->setFloatable(false); MainWindow->addToolBar(Qt::TopToolBarArea, toolbar_play); toolbar_selectmodel = new QToolBar(MainWindow); toolbar_selectmodel->setObjectName(QStringLiteral("toolbar_selectmodel")); toolbar_selectmodel->setMovable(false); toolbar_selectmodel->setFloatable(false); MainWindow->addToolBar(Qt::TopToolBarArea, toolbar_selectmodel); toolbar_common = new QToolBar(MainWindow); toolbar_common->setObjectName(QStringLiteral("toolbar_common")); QSizePolicy sizePolicy2(QSizePolicy::Minimum, QSizePolicy::Fixed); sizePolicy2.setHorizontalStretch(0); sizePolicy2.setVerticalStretch(0); sizePolicy2.setHeightForWidth(toolbar_common->sizePolicy().hasHeightForWidth()); toolbar_common->setSizePolicy(sizePolicy2); toolbar_common->setMovable(false); toolbar_common->setFloatable(false); MainWindow->addToolBar(Qt::TopToolBarArea, toolbar_common); retranslateUi(MainWindow); stackedwidget->setCurrentIndex(0); QMetaObject::connectSlotsByName(MainWindow); } // setupUi void retranslateUi(QMainWindow *MainWindow) { MainWindow->setWindowTitle(gettext_translate("Pybik", Q_NULLPTR)); action_challenge->setText(gettext_translate("&New Challenge", Q_NULLPTR)); action_new_solved->setText(gettext_translate("Ne&w Solved", Q_NULLPTR)); action_quit->setText(gettext_translate("&Quit", Q_NULLPTR)); action_selectmodel->setText(gettext_translate("Select Puzzle", Q_NULLPTR)); action_initial_state->setText(gettext_translate("&Set as Initial State", Q_NULLPTR)); action_reset_rotation->setText(gettext_translate("&Reset Rotation", Q_NULLPTR)); action_preferences->setText(gettext_translate("&Preferences \342\200\246", Q_NULLPTR)); action_statusbar->setText(gettext_translate("&Status Bar", Q_NULLPTR)); action_info->setText(gettext_translate("&Info \342\200\246", Q_NULLPTR)); action_rewind->setText(gettext_translate("Rewind", Q_NULLPTR)); action_previous->setText(gettext_translate("Previous", Q_NULLPTR)); action_stop->setText(gettext_translate("Stop", Q_NULLPTR)); action_play->setText(gettext_translate("Play", Q_NULLPTR)); action_next->setText(gettext_translate("Next", Q_NULLPTR)); action_forward->setText(gettext_translate("Forward", Q_NULLPTR)); action_mark_set->setText(gettext_translate("Add Mark", Q_NULLPTR)); #ifndef QT_NO_TOOLTIP action_mark_set->setToolTip(gettext_translate("Mark the current place in the sequence of moves", Q_NULLPTR)); #endif // QT_NO_TOOLTIP action_mark_remove->setText(gettext_translate("Remove Mark", Q_NULLPTR)); #ifndef QT_NO_TOOLTIP action_mark_remove->setToolTip(gettext_translate("Remove the mark at the current place in the sequence of moves", Q_NULLPTR)); #endif // QT_NO_TOOLTIP action_editbar->setText(gettext_translate("&Edit Bar", Q_NULLPTR)); action_help->setText(gettext_translate("&Help \342\200\246", Q_NULLPTR)); action_help->setIconText(gettext_translate("Help", Q_NULLPTR)); button_edit_exec->setText(QString()); button_edit_clear->setText(QString()); } // retranslateUi }; namespace Ui { class MainWindow: public Ui_MainWindow {}; } // namespace Ui QT_END_NAMESPACE #endif // MAIN_H pybik-3.0/csrc/_qt_qtwogl_moc.cpp0000644000175000017500000015402013173054542017322 0ustar barccbarcc00000000000000/**************************************************************************** ** Meta object code from reading C++ file '_qt_qtwogl_moc.h' ** ** Created by: The Qt Meta Object Compiler version 67 (Qt 5.7.1) ** ** WARNING! All changes made in this file will be lost! *****************************************************************************/ #include "_qt_qtwogl_moc.h" #include #include #if !defined(Q_MOC_OUTPUT_REVISION) #error "The header file '_qt_qtwogl_moc.h' doesn't include ." #elif Q_MOC_OUTPUT_REVISION != 67 #error "This file was generated using the moc from 5.7.1. It" #error "cannot be used with the include files from this version of Qt." #error "(The moc has changed too much.)" #endif QT_BEGIN_MOC_NAMESPACE struct qt_meta_stringdata_Renderer_t { QByteArrayData data[9]; char stringdata0[111]; }; #define QT_MOC_LITERAL(idx, ofs, len) \ Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ qptrdiff(offsetof(qt_meta_stringdata_Renderer_t, stringdata0) + ofs \ - idx * sizeof(QByteArrayData)) \ ) static const qt_meta_stringdata_Renderer_t qt_meta_stringdata_Renderer = { { QT_MOC_LITERAL(0, 0, 8), // "Renderer" QT_MOC_LITERAL(1, 9, 14), // "picking_result" QT_MOC_LITERAL(2, 24, 0), // "" QT_MOC_LITERAL(3, 25, 9), // "debug_fps" QT_MOC_LITERAL(4, 35, 15), // "offscreen_image" QT_MOC_LITERAL(5, 51, 18), // "on_beforeRendering" QT_MOC_LITERAL(6, 70, 16), // "on_messageLogged" QT_MOC_LITERAL(7, 87, 19), // "QOpenGLDebugMessage" QT_MOC_LITERAL(8, 107, 3) // "msg" }, "Renderer\0picking_result\0\0debug_fps\0" "offscreen_image\0on_beforeRendering\0" "on_messageLogged\0QOpenGLDebugMessage\0" "msg" }; #undef QT_MOC_LITERAL static const uint qt_meta_data_Renderer[] = { // content: 7, // revision 0, // classname 0, 0, // classinfo 5, 14, // methods 0, 0, // properties 0, 0, // enums/sets 0, 0, // constructors 0, // flags 3, // signalCount // signals: name, argc, parameters, tag, flags 1, 1, 39, 2, 0x06 /* Public */, 3, 1, 42, 2, 0x06 /* Public */, 4, 1, 45, 2, 0x06 /* Public */, // methods: name, argc, parameters, tag, flags 5, 0, 48, 2, 0x02 /* Public */, 6, 1, 49, 2, 0x02 /* Public */, // signals: parameters QMetaType::Void, QMetaType::Int, 2, QMetaType::Void, QMetaType::Int, 2, QMetaType::Void, QMetaType::QImage, 2, // methods: parameters QMetaType::Void, QMetaType::Void, 0x80000000 | 7, 8, 0 // eod }; void Renderer::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) { if (_c == QMetaObject::InvokeMetaMethod) { Renderer *_t = static_cast(_o); Q_UNUSED(_t) switch (_id) { case 0: _t->picking_result((*reinterpret_cast< int(*)>(_a[1]))); break; case 1: _t->debug_fps((*reinterpret_cast< int(*)>(_a[1]))); break; case 2: _t->offscreen_image((*reinterpret_cast< QImage(*)>(_a[1]))); break; case 3: _t->on_beforeRendering(); break; case 4: _t->on_messageLogged((*reinterpret_cast< const QOpenGLDebugMessage(*)>(_a[1]))); break; default: ; } } else if (_c == QMetaObject::IndexOfMethod) { int *result = reinterpret_cast(_a[0]); void **func = reinterpret_cast(_a[1]); { typedef void (Renderer::*_t)(int ); if (*reinterpret_cast<_t *>(func) == static_cast<_t>(&Renderer::picking_result)) { *result = 0; return; } } { typedef void (Renderer::*_t)(int ); if (*reinterpret_cast<_t *>(func) == static_cast<_t>(&Renderer::debug_fps)) { *result = 1; return; } } { typedef void (Renderer::*_t)(QImage ); if (*reinterpret_cast<_t *>(func) == static_cast<_t>(&Renderer::offscreen_image)) { *result = 2; return; } } } } const QMetaObject Renderer::staticMetaObject = { { &QObject::staticMetaObject, qt_meta_stringdata_Renderer.data, qt_meta_data_Renderer, qt_static_metacall, Q_NULLPTR, Q_NULLPTR} }; const QMetaObject *Renderer::metaObject() const { return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; } void *Renderer::qt_metacast(const char *_clname) { if (!_clname) return Q_NULLPTR; if (!strcmp(_clname, qt_meta_stringdata_Renderer.stringdata0)) return static_cast(const_cast< Renderer*>(this)); return QObject::qt_metacast(_clname); } int Renderer::qt_metacall(QMetaObject::Call _c, int _id, void **_a) { _id = QObject::qt_metacall(_c, _id, _a); if (_id < 0) return _id; if (_c == QMetaObject::InvokeMetaMethod) { if (_id < 5) qt_static_metacall(this, _c, _id, _a); _id -= 5; } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) { if (_id < 5) *reinterpret_cast(_a[0]) = -1; _id -= 5; } return _id; } // SIGNAL 0 void Renderer::picking_result(int _t1) { void *_a[] = { Q_NULLPTR, const_cast(reinterpret_cast(&_t1)) }; QMetaObject::activate(this, &staticMetaObject, 0, _a); } // SIGNAL 1 void Renderer::debug_fps(int _t1) { void *_a[] = { Q_NULLPTR, const_cast(reinterpret_cast(&_t1)) }; QMetaObject::activate(this, &staticMetaObject, 1, _a); } // SIGNAL 2 void Renderer::offscreen_image(QImage _t1) { void *_a[] = { Q_NULLPTR, const_cast(reinterpret_cast(&_t1)) }; QMetaObject::activate(this, &staticMetaObject, 2, _a); } struct qt_meta_stringdata_SectionNameIndexItem_t { QByteArrayData data[7]; char stringdata0[70]; }; #define QT_MOC_LITERAL(idx, ofs, len) \ Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ qptrdiff(offsetof(qt_meta_stringdata_SectionNameIndexItem_t, stringdata0) + ofs \ - idx * sizeof(QByteArrayData)) \ ) static const qt_meta_stringdata_SectionNameIndexItem_t qt_meta_stringdata_SectionNameIndexItem = { { QT_MOC_LITERAL(0, 0, 20), // "SectionNameIndexItem" QT_MOC_LITERAL(1, 21, 15), // "section_changed" QT_MOC_LITERAL(2, 37, 0), // "" QT_MOC_LITERAL(3, 38, 12), // "name_changed" QT_MOC_LITERAL(4, 51, 7), // "section" QT_MOC_LITERAL(5, 59, 4), // "name" QT_MOC_LITERAL(6, 64, 5) // "index" }, "SectionNameIndexItem\0section_changed\0" "\0name_changed\0section\0name\0index" }; #undef QT_MOC_LITERAL static const uint qt_meta_data_SectionNameIndexItem[] = { // content: 7, // revision 0, // classname 0, 0, // classinfo 2, 14, // methods 3, 26, // properties 0, 0, // enums/sets 0, 0, // constructors 0, // flags 2, // signalCount // signals: name, argc, parameters, tag, flags 1, 0, 24, 2, 0x06 /* Public */, 3, 0, 25, 2, 0x06 /* Public */, // signals: parameters QMetaType::Void, QMetaType::Void, // properties: name, type, flags 4, QMetaType::QString, 0x00495003, 5, QMetaType::QString, 0x00495003, 6, QMetaType::Int, 0x00095003, // properties: notify_signal_id 0, 1, 0, 0 // eod }; void SectionNameIndexItem::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) { if (_c == QMetaObject::InvokeMetaMethod) { SectionNameIndexItem *_t = static_cast(_o); Q_UNUSED(_t) switch (_id) { case 0: _t->section_changed(); break; case 1: _t->name_changed(); break; default: ; } } else if (_c == QMetaObject::IndexOfMethod) { int *result = reinterpret_cast(_a[0]); void **func = reinterpret_cast(_a[1]); { typedef void (SectionNameIndexItem::*_t)(); if (*reinterpret_cast<_t *>(func) == static_cast<_t>(&SectionNameIndexItem::section_changed)) { *result = 0; return; } } { typedef void (SectionNameIndexItem::*_t)(); if (*reinterpret_cast<_t *>(func) == static_cast<_t>(&SectionNameIndexItem::name_changed)) { *result = 1; return; } } } #ifndef QT_NO_PROPERTIES else if (_c == QMetaObject::ReadProperty) { SectionNameIndexItem *_t = static_cast(_o); Q_UNUSED(_t) void *_v = _a[0]; switch (_id) { case 0: *reinterpret_cast< QString*>(_v) = _t->m_section; break; case 1: *reinterpret_cast< QString*>(_v) = _t->m_name; break; case 2: *reinterpret_cast< int*>(_v) = _t->m_index; break; default: break; } } else if (_c == QMetaObject::WriteProperty) { SectionNameIndexItem *_t = static_cast(_o); Q_UNUSED(_t) void *_v = _a[0]; switch (_id) { case 0: if (_t->m_section != *reinterpret_cast< QString*>(_v)) { _t->m_section = *reinterpret_cast< QString*>(_v); Q_EMIT _t->section_changed(); } break; case 1: if (_t->m_name != *reinterpret_cast< QString*>(_v)) { _t->m_name = *reinterpret_cast< QString*>(_v); Q_EMIT _t->name_changed(); } break; case 2: if (_t->m_index != *reinterpret_cast< int*>(_v)) { _t->m_index = *reinterpret_cast< int*>(_v); } break; default: break; } } else if (_c == QMetaObject::ResetProperty) { } #endif // QT_NO_PROPERTIES Q_UNUSED(_a); } const QMetaObject SectionNameIndexItem::staticMetaObject = { { &QObject::staticMetaObject, qt_meta_stringdata_SectionNameIndexItem.data, qt_meta_data_SectionNameIndexItem, qt_static_metacall, Q_NULLPTR, Q_NULLPTR} }; const QMetaObject *SectionNameIndexItem::metaObject() const { return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; } void *SectionNameIndexItem::qt_metacast(const char *_clname) { if (!_clname) return Q_NULLPTR; if (!strcmp(_clname, qt_meta_stringdata_SectionNameIndexItem.stringdata0)) return static_cast(const_cast< SectionNameIndexItem*>(this)); return QObject::qt_metacast(_clname); } int SectionNameIndexItem::qt_metacall(QMetaObject::Call _c, int _id, void **_a) { _id = QObject::qt_metacall(_c, _id, _a); if (_id < 0) return _id; if (_c == QMetaObject::InvokeMetaMethod) { if (_id < 2) qt_static_metacall(this, _c, _id, _a); _id -= 2; } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) { if (_id < 2) *reinterpret_cast(_a[0]) = -1; _id -= 2; } #ifndef QT_NO_PROPERTIES else if (_c == QMetaObject::ReadProperty || _c == QMetaObject::WriteProperty || _c == QMetaObject::ResetProperty || _c == QMetaObject::RegisterPropertyMetaType) { qt_static_metacall(this, _c, _id, _a); _id -= 3; } else if (_c == QMetaObject::QueryPropertyDesignable) { _id -= 3; } else if (_c == QMetaObject::QueryPropertyScriptable) { _id -= 3; } else if (_c == QMetaObject::QueryPropertyStored) { _id -= 3; } else if (_c == QMetaObject::QueryPropertyEditable) { _id -= 3; } else if (_c == QMetaObject::QueryPropertyUser) { _id -= 3; } #endif // QT_NO_PROPERTIES return _id; } // SIGNAL 0 void SectionNameIndexItem::section_changed() { QMetaObject::activate(this, &staticMetaObject, 0, Q_NULLPTR); } // SIGNAL 1 void SectionNameIndexItem::name_changed() { QMetaObject::activate(this, &staticMetaObject, 1, Q_NULLPTR); } struct qt_meta_stringdata_TextKeyItem_t { QByteArrayData data[6]; char stringdata0[47]; }; #define QT_MOC_LITERAL(idx, ofs, len) \ Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ qptrdiff(offsetof(qt_meta_stringdata_TextKeyItem_t, stringdata0) + ofs \ - idx * sizeof(QByteArrayData)) \ ) static const qt_meta_stringdata_TextKeyItem_t qt_meta_stringdata_TextKeyItem = { { QT_MOC_LITERAL(0, 0, 11), // "TextKeyItem" QT_MOC_LITERAL(1, 12, 12), // "text_changed" QT_MOC_LITERAL(2, 25, 0), // "" QT_MOC_LITERAL(3, 26, 11), // "key_changed" QT_MOC_LITERAL(4, 38, 4), // "text" QT_MOC_LITERAL(5, 43, 3) // "key" }, "TextKeyItem\0text_changed\0\0key_changed\0" "text\0key" }; #undef QT_MOC_LITERAL static const uint qt_meta_data_TextKeyItem[] = { // content: 7, // revision 0, // classname 0, 0, // classinfo 2, 14, // methods 2, 26, // properties 0, 0, // enums/sets 0, 0, // constructors 0, // flags 2, // signalCount // signals: name, argc, parameters, tag, flags 1, 0, 24, 2, 0x06 /* Public */, 3, 0, 25, 2, 0x06 /* Public */, // signals: parameters QMetaType::Void, QMetaType::Void, // properties: name, type, flags 4, QMetaType::QString, 0x00495003, 5, QMetaType::QString, 0x00495003, // properties: notify_signal_id 0, 1, 0 // eod }; void TextKeyItem::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) { if (_c == QMetaObject::InvokeMetaMethod) { TextKeyItem *_t = static_cast(_o); Q_UNUSED(_t) switch (_id) { case 0: _t->text_changed(); break; case 1: _t->key_changed(); break; default: ; } } else if (_c == QMetaObject::IndexOfMethod) { int *result = reinterpret_cast(_a[0]); void **func = reinterpret_cast(_a[1]); { typedef void (TextKeyItem::*_t)(); if (*reinterpret_cast<_t *>(func) == static_cast<_t>(&TextKeyItem::text_changed)) { *result = 0; return; } } { typedef void (TextKeyItem::*_t)(); if (*reinterpret_cast<_t *>(func) == static_cast<_t>(&TextKeyItem::key_changed)) { *result = 1; return; } } } #ifndef QT_NO_PROPERTIES else if (_c == QMetaObject::ReadProperty) { TextKeyItem *_t = static_cast(_o); Q_UNUSED(_t) void *_v = _a[0]; switch (_id) { case 0: *reinterpret_cast< QString*>(_v) = _t->m_text; break; case 1: *reinterpret_cast< QString*>(_v) = _t->m_key; break; default: break; } } else if (_c == QMetaObject::WriteProperty) { TextKeyItem *_t = static_cast(_o); Q_UNUSED(_t) void *_v = _a[0]; switch (_id) { case 0: if (_t->m_text != *reinterpret_cast< QString*>(_v)) { _t->m_text = *reinterpret_cast< QString*>(_v); Q_EMIT _t->text_changed(); } break; case 1: if (_t->m_key != *reinterpret_cast< QString*>(_v)) { _t->m_key = *reinterpret_cast< QString*>(_v); Q_EMIT _t->key_changed(); } break; default: break; } } else if (_c == QMetaObject::ResetProperty) { } #endif // QT_NO_PROPERTIES Q_UNUSED(_a); } const QMetaObject TextKeyItem::staticMetaObject = { { &QObject::staticMetaObject, qt_meta_stringdata_TextKeyItem.data, qt_meta_data_TextKeyItem, qt_static_metacall, Q_NULLPTR, Q_NULLPTR} }; const QMetaObject *TextKeyItem::metaObject() const { return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; } void *TextKeyItem::qt_metacast(const char *_clname) { if (!_clname) return Q_NULLPTR; if (!strcmp(_clname, qt_meta_stringdata_TextKeyItem.stringdata0)) return static_cast(const_cast< TextKeyItem*>(this)); return QObject::qt_metacast(_clname); } int TextKeyItem::qt_metacall(QMetaObject::Call _c, int _id, void **_a) { _id = QObject::qt_metacall(_c, _id, _a); if (_id < 0) return _id; if (_c == QMetaObject::InvokeMetaMethod) { if (_id < 2) qt_static_metacall(this, _c, _id, _a); _id -= 2; } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) { if (_id < 2) *reinterpret_cast(_a[0]) = -1; _id -= 2; } #ifndef QT_NO_PROPERTIES else if (_c == QMetaObject::ReadProperty || _c == QMetaObject::WriteProperty || _c == QMetaObject::ResetProperty || _c == QMetaObject::RegisterPropertyMetaType) { qt_static_metacall(this, _c, _id, _a); _id -= 2; } else if (_c == QMetaObject::QueryPropertyDesignable) { _id -= 2; } else if (_c == QMetaObject::QueryPropertyScriptable) { _id -= 2; } else if (_c == QMetaObject::QueryPropertyStored) { _id -= 2; } else if (_c == QMetaObject::QueryPropertyEditable) { _id -= 2; } else if (_c == QMetaObject::QueryPropertyUser) { _id -= 2; } #endif // QT_NO_PROPERTIES return _id; } // SIGNAL 0 void TextKeyItem::text_changed() { QMetaObject::activate(this, &staticMetaObject, 0, Q_NULLPTR); } // SIGNAL 1 void TextKeyItem::key_changed() { QMetaObject::activate(this, &staticMetaObject, 1, Q_NULLPTR); } struct qt_meta_stringdata_FacePrefsItem_t { QByteArrayData data[10]; char stringdata0[105]; }; #define QT_MOC_LITERAL(idx, ofs, len) \ Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ qptrdiff(offsetof(qt_meta_stringdata_FacePrefsItem_t, stringdata0) + ofs \ - idx * sizeof(QByteArrayData)) \ ) static const qt_meta_stringdata_FacePrefsItem_t qt_meta_stringdata_FacePrefsItem = { { QT_MOC_LITERAL(0, 0, 13), // "FacePrefsItem" QT_MOC_LITERAL(1, 14, 13), // "color_changed" QT_MOC_LITERAL(2, 28, 0), // "" QT_MOC_LITERAL(3, 29, 14), // "folder_changed" QT_MOC_LITERAL(4, 44, 13), // "image_changed" QT_MOC_LITERAL(5, 58, 17), // "imagemode_changed" QT_MOC_LITERAL(6, 76, 5), // "color" QT_MOC_LITERAL(7, 82, 6), // "folder" QT_MOC_LITERAL(8, 89, 5), // "image" QT_MOC_LITERAL(9, 95, 9) // "imagemode" }, "FacePrefsItem\0color_changed\0\0" "folder_changed\0image_changed\0" "imagemode_changed\0color\0folder\0image\0" "imagemode" }; #undef QT_MOC_LITERAL static const uint qt_meta_data_FacePrefsItem[] = { // content: 7, // revision 0, // classname 0, 0, // classinfo 4, 14, // methods 4, 38, // properties 0, 0, // enums/sets 0, 0, // constructors 0, // flags 4, // signalCount // signals: name, argc, parameters, tag, flags 1, 0, 34, 2, 0x06 /* Public */, 3, 0, 35, 2, 0x06 /* Public */, 4, 0, 36, 2, 0x06 /* Public */, 5, 0, 37, 2, 0x06 /* Public */, // signals: parameters QMetaType::Void, QMetaType::Void, QMetaType::Void, QMetaType::Void, // properties: name, type, flags 6, QMetaType::QString, 0x00495003, 7, QMetaType::QString, 0x00495003, 8, QMetaType::QString, 0x00495003, 9, QMetaType::QString, 0x00495003, // properties: notify_signal_id 0, 1, 2, 3, 0 // eod }; void FacePrefsItem::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) { if (_c == QMetaObject::InvokeMetaMethod) { FacePrefsItem *_t = static_cast(_o); Q_UNUSED(_t) switch (_id) { case 0: _t->color_changed(); break; case 1: _t->folder_changed(); break; case 2: _t->image_changed(); break; case 3: _t->imagemode_changed(); break; default: ; } } else if (_c == QMetaObject::IndexOfMethod) { int *result = reinterpret_cast(_a[0]); void **func = reinterpret_cast(_a[1]); { typedef void (FacePrefsItem::*_t)(); if (*reinterpret_cast<_t *>(func) == static_cast<_t>(&FacePrefsItem::color_changed)) { *result = 0; return; } } { typedef void (FacePrefsItem::*_t)(); if (*reinterpret_cast<_t *>(func) == static_cast<_t>(&FacePrefsItem::folder_changed)) { *result = 1; return; } } { typedef void (FacePrefsItem::*_t)(); if (*reinterpret_cast<_t *>(func) == static_cast<_t>(&FacePrefsItem::image_changed)) { *result = 2; return; } } { typedef void (FacePrefsItem::*_t)(); if (*reinterpret_cast<_t *>(func) == static_cast<_t>(&FacePrefsItem::imagemode_changed)) { *result = 3; return; } } } #ifndef QT_NO_PROPERTIES else if (_c == QMetaObject::ReadProperty) { FacePrefsItem *_t = static_cast(_o); Q_UNUSED(_t) void *_v = _a[0]; switch (_id) { case 0: *reinterpret_cast< QString*>(_v) = _t->m_color; break; case 1: *reinterpret_cast< QString*>(_v) = _t->m_folder; break; case 2: *reinterpret_cast< QString*>(_v) = _t->m_image; break; case 3: *reinterpret_cast< QString*>(_v) = _t->m_imagemode; break; default: break; } } else if (_c == QMetaObject::WriteProperty) { FacePrefsItem *_t = static_cast(_o); Q_UNUSED(_t) void *_v = _a[0]; switch (_id) { case 0: if (_t->m_color != *reinterpret_cast< QString*>(_v)) { _t->m_color = *reinterpret_cast< QString*>(_v); Q_EMIT _t->color_changed(); } break; case 1: if (_t->m_folder != *reinterpret_cast< QString*>(_v)) { _t->m_folder = *reinterpret_cast< QString*>(_v); Q_EMIT _t->folder_changed(); } break; case 2: if (_t->m_image != *reinterpret_cast< QString*>(_v)) { _t->m_image = *reinterpret_cast< QString*>(_v); Q_EMIT _t->image_changed(); } break; case 3: if (_t->m_imagemode != *reinterpret_cast< QString*>(_v)) { _t->m_imagemode = *reinterpret_cast< QString*>(_v); Q_EMIT _t->imagemode_changed(); } break; default: break; } } else if (_c == QMetaObject::ResetProperty) { } #endif // QT_NO_PROPERTIES Q_UNUSED(_a); } const QMetaObject FacePrefsItem::staticMetaObject = { { &QObject::staticMetaObject, qt_meta_stringdata_FacePrefsItem.data, qt_meta_data_FacePrefsItem, qt_static_metacall, Q_NULLPTR, Q_NULLPTR} }; const QMetaObject *FacePrefsItem::metaObject() const { return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; } void *FacePrefsItem::qt_metacast(const char *_clname) { if (!_clname) return Q_NULLPTR; if (!strcmp(_clname, qt_meta_stringdata_FacePrefsItem.stringdata0)) return static_cast(const_cast< FacePrefsItem*>(this)); return QObject::qt_metacast(_clname); } int FacePrefsItem::qt_metacall(QMetaObject::Call _c, int _id, void **_a) { _id = QObject::qt_metacall(_c, _id, _a); if (_id < 0) return _id; if (_c == QMetaObject::InvokeMetaMethod) { if (_id < 4) qt_static_metacall(this, _c, _id, _a); _id -= 4; } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) { if (_id < 4) *reinterpret_cast(_a[0]) = -1; _id -= 4; } #ifndef QT_NO_PROPERTIES else if (_c == QMetaObject::ReadProperty || _c == QMetaObject::WriteProperty || _c == QMetaObject::ResetProperty || _c == QMetaObject::RegisterPropertyMetaType) { qt_static_metacall(this, _c, _id, _a); _id -= 4; } else if (_c == QMetaObject::QueryPropertyDesignable) { _id -= 4; } else if (_c == QMetaObject::QueryPropertyScriptable) { _id -= 4; } else if (_c == QMetaObject::QueryPropertyStored) { _id -= 4; } else if (_c == QMetaObject::QueryPropertyEditable) { _id -= 4; } else if (_c == QMetaObject::QueryPropertyUser) { _id -= 4; } #endif // QT_NO_PROPERTIES return _id; } // SIGNAL 0 void FacePrefsItem::color_changed() { QMetaObject::activate(this, &staticMetaObject, 0, Q_NULLPTR); } // SIGNAL 1 void FacePrefsItem::folder_changed() { QMetaObject::activate(this, &staticMetaObject, 1, Q_NULLPTR); } // SIGNAL 2 void FacePrefsItem::image_changed() { QMetaObject::activate(this, &staticMetaObject, 2, Q_NULLPTR); } // SIGNAL 3 void FacePrefsItem::imagemode_changed() { QMetaObject::activate(this, &staticMetaObject, 3, Q_NULLPTR); } struct qt_meta_stringdata_MainView_t { QByteArrayData data[43]; char stringdata0[995]; }; #define QT_MOC_LITERAL(idx, ofs, len) \ Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ qptrdiff(offsetof(qt_meta_stringdata_MainView_t, stringdata0) + ofs \ - idx * sizeof(QByteArrayData)) \ ) static const qt_meta_stringdata_MainView_t qt_meta_stringdata_MainView = { { QT_MOC_LITERAL(0, 0, 8), // "MainView" QT_MOC_LITERAL(1, 9, 18), // "_on_picking_result" QT_MOC_LITERAL(2, 28, 0), // "" QT_MOC_LITERAL(3, 29, 5), // "index" QT_MOC_LITERAL(4, 35, 13), // "_on_debug_fps" QT_MOC_LITERAL(5, 49, 3), // "fps" QT_MOC_LITERAL(6, 53, 19), // "_on_offscreen_image" QT_MOC_LITERAL(7, 73, 5), // "image" QT_MOC_LITERAL(8, 79, 22), // "on_beforeSynchronizing" QT_MOC_LITERAL(9, 102, 24), // "on_sceneGraphInvalidated" QT_MOC_LITERAL(10, 127, 29), // "on_action_challenge_triggered" QT_MOC_LITERAL(11, 157, 30), // "on_action_new_solved_triggered" QT_MOC_LITERAL(12, 188, 31), // "on_action_preferences_triggered" QT_MOC_LITERAL(13, 220, 34), // "on_action_reset_rotation_trig..." QT_MOC_LITERAL(14, 255, 26), // "on_action_rewind_triggered" QT_MOC_LITERAL(15, 282, 28), // "on_action_previous_triggered" QT_MOC_LITERAL(16, 311, 24), // "on_action_stop_triggered" QT_MOC_LITERAL(17, 336, 24), // "on_action_play_triggered" QT_MOC_LITERAL(18, 361, 24), // "on_action_next_triggered" QT_MOC_LITERAL(19, 386, 27), // "on_action_forward_triggered" QT_MOC_LITERAL(20, 414, 28), // "on_action_mark_set_triggered" QT_MOC_LITERAL(21, 443, 31), // "on_action_mark_remove_triggered" QT_MOC_LITERAL(22, 475, 33), // "on_action_initial_state_trigg..." QT_MOC_LITERAL(23, 509, 29), // "on_action_edit_cube_triggered" QT_MOC_LITERAL(24, 539, 31), // "on_action_selectmodel_triggered" QT_MOC_LITERAL(25, 571, 36), // "on_action_selectmodel_back_tr..." QT_MOC_LITERAL(26, 608, 27), // "on_listwidget_itemActivated" QT_MOC_LITERAL(27, 636, 16), // "QListWidgetItem*" QT_MOC_LITERAL(28, 653, 4), // "item" QT_MOC_LITERAL(29, 658, 25), // "on_listwidget_itemClicked" QT_MOC_LITERAL(30, 684, 24), // "on_action_quit_triggered" QT_MOC_LITERAL(31, 709, 25), // "on_action_editbar_toggled" QT_MOC_LITERAL(32, 735, 7), // "checked" QT_MOC_LITERAL(33, 743, 27), // "on_action_statusbar_toggled" QT_MOC_LITERAL(34, 771, 24), // "on_action_help_triggered" QT_MOC_LITERAL(35, 796, 24), // "on_action_info_triggered" QT_MOC_LITERAL(36, 821, 25), // "on_splitter_splitterMoved" QT_MOC_LITERAL(37, 847, 3), // "pos" QT_MOC_LITERAL(38, 851, 28), // "on_button_edit_clear_clicked" QT_MOC_LITERAL(39, 880, 27), // "on_button_edit_exec_clicked" QT_MOC_LITERAL(40, 908, 35), // "on_action_jump_to_editbar_tri..." QT_MOC_LITERAL(41, 944, 27), // "_on_button_sidepane_clicked" QT_MOC_LITERAL(42, 972, 22) // "_on_treeview_activated" }, "MainView\0_on_picking_result\0\0index\0" "_on_debug_fps\0fps\0_on_offscreen_image\0" "image\0on_beforeSynchronizing\0" "on_sceneGraphInvalidated\0" "on_action_challenge_triggered\0" "on_action_new_solved_triggered\0" "on_action_preferences_triggered\0" "on_action_reset_rotation_triggered\0" "on_action_rewind_triggered\0" "on_action_previous_triggered\0" "on_action_stop_triggered\0" "on_action_play_triggered\0" "on_action_next_triggered\0" "on_action_forward_triggered\0" "on_action_mark_set_triggered\0" "on_action_mark_remove_triggered\0" "on_action_initial_state_triggered\0" "on_action_edit_cube_triggered\0" "on_action_selectmodel_triggered\0" "on_action_selectmodel_back_triggered\0" "on_listwidget_itemActivated\0" "QListWidgetItem*\0item\0on_listwidget_itemClicked\0" "on_action_quit_triggered\0" "on_action_editbar_toggled\0checked\0" "on_action_statusbar_toggled\0" "on_action_help_triggered\0" "on_action_info_triggered\0" "on_splitter_splitterMoved\0pos\0" "on_button_edit_clear_clicked\0" "on_button_edit_exec_clicked\0" "on_action_jump_to_editbar_triggered\0" "_on_button_sidepane_clicked\0" "_on_treeview_activated" }; #undef QT_MOC_LITERAL static const uint qt_meta_data_MainView[] = { // content: 7, // revision 0, // classname 0, 0, // classinfo 34, 14, // methods 0, 0, // properties 0, 0, // enums/sets 0, 0, // constructors 0, // flags 0, // signalCount // methods: name, argc, parameters, tag, flags 1, 1, 184, 2, 0x02 /* Public */, 4, 1, 187, 2, 0x02 /* Public */, 6, 1, 190, 2, 0x02 /* Public */, 8, 0, 193, 2, 0x02 /* Public */, 9, 0, 194, 2, 0x02 /* Public */, 10, 0, 195, 2, 0x02 /* Public */, 11, 0, 196, 2, 0x02 /* Public */, 12, 0, 197, 2, 0x02 /* Public */, 13, 0, 198, 2, 0x02 /* Public */, 14, 0, 199, 2, 0x02 /* Public */, 15, 0, 200, 2, 0x02 /* Public */, 16, 0, 201, 2, 0x02 /* Public */, 17, 0, 202, 2, 0x02 /* Public */, 18, 0, 203, 2, 0x02 /* Public */, 19, 0, 204, 2, 0x02 /* Public */, 20, 0, 205, 2, 0x02 /* Public */, 21, 0, 206, 2, 0x02 /* Public */, 22, 0, 207, 2, 0x02 /* Public */, 23, 0, 208, 2, 0x02 /* Public */, 24, 0, 209, 2, 0x02 /* Public */, 25, 0, 210, 2, 0x02 /* Public */, 26, 1, 211, 2, 0x02 /* Public */, 29, 1, 214, 2, 0x02 /* Public */, 30, 0, 217, 2, 0x02 /* Public */, 31, 1, 218, 2, 0x02 /* Public */, 33, 1, 221, 2, 0x02 /* Public */, 34, 0, 224, 2, 0x02 /* Public */, 35, 0, 225, 2, 0x02 /* Public */, 36, 2, 226, 2, 0x02 /* Public */, 38, 0, 231, 2, 0x02 /* Public */, 39, 0, 232, 2, 0x02 /* Public */, 40, 0, 233, 2, 0x02 /* Public */, 41, 0, 234, 2, 0x02 /* Public */, 42, 1, 235, 2, 0x02 /* Public */, // methods: parameters QMetaType::Void, QMetaType::Int, 3, QMetaType::Void, QMetaType::Int, 5, QMetaType::Void, QMetaType::QImage, 7, QMetaType::Void, QMetaType::Void, QMetaType::Void, QMetaType::Void, QMetaType::Void, QMetaType::Void, QMetaType::Void, QMetaType::Void, QMetaType::Void, QMetaType::Void, QMetaType::Void, QMetaType::Void, QMetaType::Void, QMetaType::Void, QMetaType::Void, QMetaType::Void, QMetaType::Void, QMetaType::Void, QMetaType::Void, 0x80000000 | 27, 28, QMetaType::Void, 0x80000000 | 27, 28, QMetaType::Void, QMetaType::Void, QMetaType::Bool, 32, QMetaType::Void, QMetaType::Bool, 32, QMetaType::Void, QMetaType::Void, QMetaType::Void, QMetaType::Int, QMetaType::Int, 37, 3, QMetaType::Void, QMetaType::Void, QMetaType::Void, QMetaType::Void, QMetaType::Void, QMetaType::QModelIndex, 3, 0 // eod }; void MainView::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) { if (_c == QMetaObject::InvokeMetaMethod) { MainView *_t = static_cast(_o); Q_UNUSED(_t) switch (_id) { case 0: _t->_on_picking_result((*reinterpret_cast< int(*)>(_a[1]))); break; case 1: _t->_on_debug_fps((*reinterpret_cast< int(*)>(_a[1]))); break; case 2: _t->_on_offscreen_image((*reinterpret_cast< QImage(*)>(_a[1]))); break; case 3: _t->on_beforeSynchronizing(); break; case 4: _t->on_sceneGraphInvalidated(); break; case 5: _t->on_action_challenge_triggered(); break; case 6: _t->on_action_new_solved_triggered(); break; case 7: _t->on_action_preferences_triggered(); break; case 8: _t->on_action_reset_rotation_triggered(); break; case 9: _t->on_action_rewind_triggered(); break; case 10: _t->on_action_previous_triggered(); break; case 11: _t->on_action_stop_triggered(); break; case 12: _t->on_action_play_triggered(); break; case 13: _t->on_action_next_triggered(); break; case 14: _t->on_action_forward_triggered(); break; case 15: _t->on_action_mark_set_triggered(); break; case 16: _t->on_action_mark_remove_triggered(); break; case 17: _t->on_action_initial_state_triggered(); break; case 18: _t->on_action_edit_cube_triggered(); break; case 19: _t->on_action_selectmodel_triggered(); break; case 20: _t->on_action_selectmodel_back_triggered(); break; case 21: _t->on_listwidget_itemActivated((*reinterpret_cast< QListWidgetItem*(*)>(_a[1]))); break; case 22: _t->on_listwidget_itemClicked((*reinterpret_cast< QListWidgetItem*(*)>(_a[1]))); break; case 23: _t->on_action_quit_triggered(); break; case 24: _t->on_action_editbar_toggled((*reinterpret_cast< bool(*)>(_a[1]))); break; case 25: _t->on_action_statusbar_toggled((*reinterpret_cast< bool(*)>(_a[1]))); break; case 26: _t->on_action_help_triggered(); break; case 27: _t->on_action_info_triggered(); break; case 28: _t->on_splitter_splitterMoved((*reinterpret_cast< int(*)>(_a[1])),(*reinterpret_cast< int(*)>(_a[2]))); break; case 29: _t->on_button_edit_clear_clicked(); break; case 30: _t->on_button_edit_exec_clicked(); break; case 31: _t->on_action_jump_to_editbar_triggered(); break; case 32: _t->_on_button_sidepane_clicked(); break; case 33: _t->_on_treeview_activated((*reinterpret_cast< const QModelIndex(*)>(_a[1]))); break; default: ; } } } const QMetaObject MainView::staticMetaObject = { { &QMainWindow::staticMetaObject, qt_meta_stringdata_MainView.data, qt_meta_data_MainView, qt_static_metacall, Q_NULLPTR, Q_NULLPTR} }; const QMetaObject *MainView::metaObject() const { return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; } void *MainView::qt_metacast(const char *_clname) { if (!_clname) return Q_NULLPTR; if (!strcmp(_clname, qt_meta_stringdata_MainView.stringdata0)) return static_cast(const_cast< MainView*>(this)); return QMainWindow::qt_metacast(_clname); } int MainView::qt_metacall(QMetaObject::Call _c, int _id, void **_a) { _id = QMainWindow::qt_metacall(_c, _id, _a); if (_id < 0) return _id; if (_c == QMetaObject::InvokeMetaMethod) { if (_id < 34) qt_static_metacall(this, _c, _id, _a); _id -= 34; } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) { if (_id < 34) *reinterpret_cast(_a[0]) = -1; _id -= 34; } return _id; } struct qt_meta_stringdata_MoveEdit_t { QByteArrayData data[3]; char stringdata0[27]; }; #define QT_MOC_LITERAL(idx, ofs, len) \ Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ qptrdiff(offsetof(qt_meta_stringdata_MoveEdit_t, stringdata0) + ofs \ - idx * sizeof(QByteArrayData)) \ ) static const qt_meta_stringdata_MoveEdit_t qt_meta_stringdata_MoveEdit = { { QT_MOC_LITERAL(0, 0, 8), // "MoveEdit" QT_MOC_LITERAL(1, 9, 16), // "on_returnpressed" QT_MOC_LITERAL(2, 26, 0) // "" }, "MoveEdit\0on_returnpressed\0" }; #undef QT_MOC_LITERAL static const uint qt_meta_data_MoveEdit[] = { // content: 7, // revision 0, // classname 0, 0, // classinfo 1, 14, // methods 0, 0, // properties 0, 0, // enums/sets 0, 0, // constructors 0, // flags 0, // signalCount // methods: name, argc, parameters, tag, flags 1, 0, 19, 2, 0x02 /* Public */, // methods: parameters QMetaType::Void, 0 // eod }; void MoveEdit::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) { if (_c == QMetaObject::InvokeMetaMethod) { MoveEdit *_t = static_cast(_o); Q_UNUSED(_t) switch (_id) { case 0: _t->on_returnpressed(); break; default: ; } } Q_UNUSED(_a); } const QMetaObject MoveEdit::staticMetaObject = { { &QLineEdit::staticMetaObject, qt_meta_stringdata_MoveEdit.data, qt_meta_data_MoveEdit, qt_static_metacall, Q_NULLPTR, Q_NULLPTR} }; const QMetaObject *MoveEdit::metaObject() const { return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; } void *MoveEdit::qt_metacast(const char *_clname) { if (!_clname) return Q_NULLPTR; if (!strcmp(_clname, qt_meta_stringdata_MoveEdit.stringdata0)) return static_cast(const_cast< MoveEdit*>(this)); return QLineEdit::qt_metacast(_clname); } int MoveEdit::qt_metacall(QMetaObject::Call _c, int _id, void **_a) { _id = QLineEdit::qt_metacall(_c, _id, _a); if (_id < 0) return _id; if (_c == QMetaObject::InvokeMetaMethod) { if (_id < 1) qt_static_metacall(this, _c, _id, _a); _id -= 1; } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) { if (_id < 1) *reinterpret_cast(_a[0]) = -1; _id -= 1; } return _id; } struct qt_meta_stringdata_DrawingArea_t { QByteArrayData data[1]; char stringdata0[12]; }; #define QT_MOC_LITERAL(idx, ofs, len) \ Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ qptrdiff(offsetof(qt_meta_stringdata_DrawingArea_t, stringdata0) + ofs \ - idx * sizeof(QByteArrayData)) \ ) static const qt_meta_stringdata_DrawingArea_t qt_meta_stringdata_DrawingArea = { { QT_MOC_LITERAL(0, 0, 11) // "DrawingArea" }, "DrawingArea" }; #undef QT_MOC_LITERAL static const uint qt_meta_data_DrawingArea[] = { // content: 7, // revision 0, // classname 0, 0, // classinfo 0, 0, // methods 0, 0, // properties 0, 0, // enums/sets 0, 0, // constructors 0, // flags 0, // signalCount 0 // eod }; void DrawingArea::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) { Q_UNUSED(_o); Q_UNUSED(_id); Q_UNUSED(_c); Q_UNUSED(_a); } const QMetaObject DrawingArea::staticMetaObject = { { &QOpenGLWidget::staticMetaObject, qt_meta_stringdata_DrawingArea.data, qt_meta_data_DrawingArea, qt_static_metacall, Q_NULLPTR, Q_NULLPTR} }; const QMetaObject *DrawingArea::metaObject() const { return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; } void *DrawingArea::qt_metacast(const char *_clname) { if (!_clname) return Q_NULLPTR; if (!strcmp(_clname, qt_meta_stringdata_DrawingArea.stringdata0)) return static_cast(const_cast< DrawingArea*>(this)); return QOpenGLWidget::qt_metacast(_clname); } int DrawingArea::qt_metacall(QMetaObject::Call _c, int _id, void **_a) { _id = QOpenGLWidget::qt_metacall(_c, _id, _a); if (_id < 0) return _id; return _id; } struct qt_meta_stringdata_PreferencesDialog_t { QByteArrayData data[33]; char stringdata0[909]; }; #define QT_MOC_LITERAL(idx, ofs, len) \ Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ qptrdiff(offsetof(qt_meta_stringdata_PreferencesDialog_t, stringdata0) + ofs \ - idx * sizeof(QByteArrayData)) \ ) static const qt_meta_stringdata_PreferencesDialog_t qt_meta_stringdata_PreferencesDialog = { { QT_MOC_LITERAL(0, 0, 17), // "PreferencesDialog" QT_MOC_LITERAL(1, 18, 32), // "on_slider_animspeed_valueChanged" QT_MOC_LITERAL(2, 51, 0), // "" QT_MOC_LITERAL(3, 52, 5), // "value" QT_MOC_LITERAL(4, 58, 33), // "on_button_animspeed_reset_cli..." QT_MOC_LITERAL(5, 92, 38), // "on_combobox_shader_currentInd..." QT_MOC_LITERAL(6, 131, 30), // "on_button_shader_reset_clicked" QT_MOC_LITERAL(7, 162, 39), // "on_combobox_samples_currentIn..." QT_MOC_LITERAL(8, 202, 36), // "on_button_antialiasing_reset_..." QT_MOC_LITERAL(9, 239, 32), // "on_checkbox_mirror_faces_toggled" QT_MOC_LITERAL(10, 272, 7), // "checked" QT_MOC_LITERAL(11, 280, 36), // "on_spinbox_mirror_faces_value..." QT_MOC_LITERAL(12, 317, 36), // "on_button_mirror_faces_reset_..." QT_MOC_LITERAL(13, 354, 32), // "on_button_mousemode_quad_toggled" QT_MOC_LITERAL(14, 387, 31), // "on_button_mousemode_ext_toggled" QT_MOC_LITERAL(15, 419, 35), // "on_button_mousemode_gesture_t..." QT_MOC_LITERAL(16, 455, 33), // "on_liststore_movekeys_itemCha..." QT_MOC_LITERAL(17, 489, 14), // "QStandardItem*" QT_MOC_LITERAL(18, 504, 11), // "unused_item" QT_MOC_LITERAL(19, 516, 29), // "on_button_movekey_add_clicked" QT_MOC_LITERAL(20, 546, 32), // "on_button_movekey_remove_clicked" QT_MOC_LITERAL(21, 579, 31), // "on_button_movekey_reset_clicked" QT_MOC_LITERAL(22, 611, 36), // "_on_listview_faces_currentRow..." QT_MOC_LITERAL(23, 648, 7), // "current" QT_MOC_LITERAL(24, 656, 23), // "on_button_color_clicked" QT_MOC_LITERAL(25, 680, 29), // "on_button_color_reset_clicked" QT_MOC_LITERAL(26, 710, 27), // "on_combobox_image_activated" QT_MOC_LITERAL(27, 738, 5), // "index" QT_MOC_LITERAL(28, 744, 29), // "on_button_image_reset_clicked" QT_MOC_LITERAL(29, 774, 28), // "on_radiobutton_tiled_toggled" QT_MOC_LITERAL(30, 803, 29), // "on_radiobutton_mosaic_toggled" QT_MOC_LITERAL(31, 833, 34), // "on_button_background_color_cl..." QT_MOC_LITERAL(32, 868, 40) // "on_button_background_color_re..." }, "PreferencesDialog\0on_slider_animspeed_valueChanged\0" "\0value\0on_button_animspeed_reset_clicked\0" "on_combobox_shader_currentIndexChanged\0" "on_button_shader_reset_clicked\0" "on_combobox_samples_currentIndexChanged\0" "on_button_antialiasing_reset_clicked\0" "on_checkbox_mirror_faces_toggled\0" "checked\0on_spinbox_mirror_faces_valueChanged\0" "on_button_mirror_faces_reset_clicked\0" "on_button_mousemode_quad_toggled\0" "on_button_mousemode_ext_toggled\0" "on_button_mousemode_gesture_toggled\0" "on_liststore_movekeys_itemChanged\0" "QStandardItem*\0unused_item\0" "on_button_movekey_add_clicked\0" "on_button_movekey_remove_clicked\0" "on_button_movekey_reset_clicked\0" "_on_listview_faces_currentRowChanged\0" "current\0on_button_color_clicked\0" "on_button_color_reset_clicked\0" "on_combobox_image_activated\0index\0" "on_button_image_reset_clicked\0" "on_radiobutton_tiled_toggled\0" "on_radiobutton_mosaic_toggled\0" "on_button_background_color_clicked\0" "on_button_background_color_reset_clicked" }; #undef QT_MOC_LITERAL static const uint qt_meta_data_PreferencesDialog[] = { // content: 7, // revision 0, // classname 0, 0, // classinfo 25, 14, // methods 0, 0, // properties 0, 0, // enums/sets 0, 0, // constructors 0, // flags 0, // signalCount // methods: name, argc, parameters, tag, flags 1, 1, 139, 2, 0x02 /* Public */, 4, 0, 142, 2, 0x02 /* Public */, 5, 1, 143, 2, 0x02 /* Public */, 6, 0, 146, 2, 0x02 /* Public */, 7, 1, 147, 2, 0x02 /* Public */, 8, 0, 150, 2, 0x02 /* Public */, 9, 1, 151, 2, 0x02 /* Public */, 11, 1, 154, 2, 0x02 /* Public */, 12, 0, 157, 2, 0x02 /* Public */, 13, 1, 158, 2, 0x02 /* Public */, 14, 1, 161, 2, 0x02 /* Public */, 15, 1, 164, 2, 0x02 /* Public */, 16, 1, 167, 2, 0x02 /* Public */, 19, 0, 170, 2, 0x02 /* Public */, 20, 0, 171, 2, 0x02 /* Public */, 21, 0, 172, 2, 0x02 /* Public */, 22, 1, 173, 2, 0x02 /* Public */, 24, 0, 176, 2, 0x02 /* Public */, 25, 0, 177, 2, 0x02 /* Public */, 26, 1, 178, 2, 0x02 /* Public */, 28, 0, 181, 2, 0x02 /* Public */, 29, 1, 182, 2, 0x02 /* Public */, 30, 1, 185, 2, 0x02 /* Public */, 31, 0, 188, 2, 0x02 /* Public */, 32, 0, 189, 2, 0x02 /* Public */, // methods: parameters QMetaType::Void, QMetaType::Int, 3, QMetaType::Void, QMetaType::Void, QMetaType::Int, 3, QMetaType::Void, QMetaType::Void, QMetaType::Int, 3, QMetaType::Void, QMetaType::Void, QMetaType::Bool, 10, QMetaType::Void, QMetaType::Double, 3, QMetaType::Void, QMetaType::Void, QMetaType::Bool, 10, QMetaType::Void, QMetaType::Bool, 10, QMetaType::Void, QMetaType::Bool, 10, QMetaType::Void, 0x80000000 | 17, 18, QMetaType::Void, QMetaType::Void, QMetaType::Void, QMetaType::Void, QMetaType::QModelIndex, 23, QMetaType::Void, QMetaType::Void, QMetaType::Void, QMetaType::Int, 27, QMetaType::Void, QMetaType::Void, QMetaType::Bool, 10, QMetaType::Void, QMetaType::Bool, 10, QMetaType::Void, QMetaType::Void, 0 // eod }; void PreferencesDialog::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) { if (_c == QMetaObject::InvokeMetaMethod) { PreferencesDialog *_t = static_cast(_o); Q_UNUSED(_t) switch (_id) { case 0: _t->on_slider_animspeed_valueChanged((*reinterpret_cast< int(*)>(_a[1]))); break; case 1: _t->on_button_animspeed_reset_clicked(); break; case 2: _t->on_combobox_shader_currentIndexChanged((*reinterpret_cast< int(*)>(_a[1]))); break; case 3: _t->on_button_shader_reset_clicked(); break; case 4: _t->on_combobox_samples_currentIndexChanged((*reinterpret_cast< int(*)>(_a[1]))); break; case 5: _t->on_button_antialiasing_reset_clicked(); break; case 6: _t->on_checkbox_mirror_faces_toggled((*reinterpret_cast< bool(*)>(_a[1]))); break; case 7: _t->on_spinbox_mirror_faces_valueChanged((*reinterpret_cast< double(*)>(_a[1]))); break; case 8: _t->on_button_mirror_faces_reset_clicked(); break; case 9: _t->on_button_mousemode_quad_toggled((*reinterpret_cast< bool(*)>(_a[1]))); break; case 10: _t->on_button_mousemode_ext_toggled((*reinterpret_cast< bool(*)>(_a[1]))); break; case 11: _t->on_button_mousemode_gesture_toggled((*reinterpret_cast< bool(*)>(_a[1]))); break; case 12: _t->on_liststore_movekeys_itemChanged((*reinterpret_cast< QStandardItem*(*)>(_a[1]))); break; case 13: _t->on_button_movekey_add_clicked(); break; case 14: _t->on_button_movekey_remove_clicked(); break; case 15: _t->on_button_movekey_reset_clicked(); break; case 16: _t->_on_listview_faces_currentRowChanged((*reinterpret_cast< const QModelIndex(*)>(_a[1]))); break; case 17: _t->on_button_color_clicked(); break; case 18: _t->on_button_color_reset_clicked(); break; case 19: _t->on_combobox_image_activated((*reinterpret_cast< int(*)>(_a[1]))); break; case 20: _t->on_button_image_reset_clicked(); break; case 21: _t->on_radiobutton_tiled_toggled((*reinterpret_cast< bool(*)>(_a[1]))); break; case 22: _t->on_radiobutton_mosaic_toggled((*reinterpret_cast< bool(*)>(_a[1]))); break; case 23: _t->on_button_background_color_clicked(); break; case 24: _t->on_button_background_color_reset_clicked(); break; default: ; } } } const QMetaObject PreferencesDialog::staticMetaObject = { { &QDialog::staticMetaObject, qt_meta_stringdata_PreferencesDialog.data, qt_meta_data_PreferencesDialog, qt_static_metacall, Q_NULLPTR, Q_NULLPTR} }; const QMetaObject *PreferencesDialog::metaObject() const { return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; } void *PreferencesDialog::qt_metacast(const char *_clname) { if (!_clname) return Q_NULLPTR; if (!strcmp(_clname, qt_meta_stringdata_PreferencesDialog.stringdata0)) return static_cast(const_cast< PreferencesDialog*>(this)); return QDialog::qt_metacast(_clname); } int PreferencesDialog::qt_metacall(QMetaObject::Call _c, int _id, void **_a) { _id = QDialog::qt_metacall(_c, _id, _a); if (_id < 0) return _id; if (_c == QMetaObject::InvokeMetaMethod) { if (_id < 25) qt_static_metacall(this, _c, _id, _a); _id -= 25; } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) { if (_id < 25) *reinterpret_cast(_a[0]) = -1; _id -= 25; } return _id; } struct qt_meta_stringdata_HelpDialog_t { QByteArrayData data[1]; char stringdata0[11]; }; #define QT_MOC_LITERAL(idx, ofs, len) \ Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ qptrdiff(offsetof(qt_meta_stringdata_HelpDialog_t, stringdata0) + ofs \ - idx * sizeof(QByteArrayData)) \ ) static const qt_meta_stringdata_HelpDialog_t qt_meta_stringdata_HelpDialog = { { QT_MOC_LITERAL(0, 0, 10) // "HelpDialog" }, "HelpDialog" }; #undef QT_MOC_LITERAL static const uint qt_meta_data_HelpDialog[] = { // content: 7, // revision 0, // classname 0, 0, // classinfo 0, 0, // methods 0, 0, // properties 0, 0, // enums/sets 0, 0, // constructors 0, // flags 0, // signalCount 0 // eod }; void HelpDialog::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) { Q_UNUSED(_o); Q_UNUSED(_id); Q_UNUSED(_c); Q_UNUSED(_a); } const QMetaObject HelpDialog::staticMetaObject = { { &QDialog::staticMetaObject, qt_meta_stringdata_HelpDialog.data, qt_meta_data_HelpDialog, qt_static_metacall, Q_NULLPTR, Q_NULLPTR} }; const QMetaObject *HelpDialog::metaObject() const { return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; } void *HelpDialog::qt_metacast(const char *_clname) { if (!_clname) return Q_NULLPTR; if (!strcmp(_clname, qt_meta_stringdata_HelpDialog.stringdata0)) return static_cast(const_cast< HelpDialog*>(this)); return QDialog::qt_metacast(_clname); } int HelpDialog::qt_metacall(QMetaObject::Call _c, int _id, void **_a) { _id = QDialog::qt_metacall(_c, _id, _a); if (_id < 0) return _id; return _id; } struct qt_meta_stringdata_AboutDialog_t { QByteArrayData data[8]; char stringdata0[127]; }; #define QT_MOC_LITERAL(idx, ofs, len) \ Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ qptrdiff(offsetof(qt_meta_stringdata_AboutDialog_t, stringdata0) + ofs \ - idx * sizeof(QByteArrayData)) \ ) static const qt_meta_stringdata_AboutDialog_t qt_meta_stringdata_AboutDialog = { { QT_MOC_LITERAL(0, 0, 11), // "AboutDialog" QT_MOC_LITERAL(1, 12, 33), // "on_text_translators_anchorCli..." QT_MOC_LITERAL(2, 46, 0), // "" QT_MOC_LITERAL(3, 47, 4), // "link" QT_MOC_LITERAL(4, 52, 28), // "on_tab_widget_currentChanged" QT_MOC_LITERAL(5, 81, 5), // "index" QT_MOC_LITERAL(6, 87, 35), // "on_text_license_short_anchorC..." QT_MOC_LITERAL(7, 123, 3) // "url" }, "AboutDialog\0on_text_translators_anchorClicked\0" "\0link\0on_tab_widget_currentChanged\0" "index\0on_text_license_short_anchorClicked\0" "url" }; #undef QT_MOC_LITERAL static const uint qt_meta_data_AboutDialog[] = { // content: 7, // revision 0, // classname 0, 0, // classinfo 3, 14, // methods 0, 0, // properties 0, 0, // enums/sets 0, 0, // constructors 0, // flags 0, // signalCount // methods: name, argc, parameters, tag, flags 1, 1, 29, 2, 0x02 /* Public */, 4, 1, 32, 2, 0x02 /* Public */, 6, 1, 35, 2, 0x02 /* Public */, // methods: parameters QMetaType::Void, QMetaType::QUrl, 3, QMetaType::Void, QMetaType::Int, 5, QMetaType::Void, QMetaType::QUrl, 7, 0 // eod }; void AboutDialog::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) { if (_c == QMetaObject::InvokeMetaMethod) { AboutDialog *_t = static_cast(_o); Q_UNUSED(_t) switch (_id) { case 0: _t->on_text_translators_anchorClicked((*reinterpret_cast< const QUrl(*)>(_a[1]))); break; case 1: _t->on_tab_widget_currentChanged((*reinterpret_cast< int(*)>(_a[1]))); break; case 2: _t->on_text_license_short_anchorClicked((*reinterpret_cast< const QUrl(*)>(_a[1]))); break; default: ; } } } const QMetaObject AboutDialog::staticMetaObject = { { &QDialog::staticMetaObject, qt_meta_stringdata_AboutDialog.data, qt_meta_data_AboutDialog, qt_static_metacall, Q_NULLPTR, Q_NULLPTR} }; const QMetaObject *AboutDialog::metaObject() const { return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; } void *AboutDialog::qt_metacast(const char *_clname) { if (!_clname) return Q_NULLPTR; if (!strcmp(_clname, qt_meta_stringdata_AboutDialog.stringdata0)) return static_cast(const_cast< AboutDialog*>(this)); return QDialog::qt_metacast(_clname); } int AboutDialog::qt_metacall(QMetaObject::Call _c, int _id, void **_a) { _id = QDialog::qt_metacall(_c, _id, _a); if (_id < 0) return _id; if (_c == QMetaObject::InvokeMetaMethod) { if (_id < 3) qt_static_metacall(this, _c, _id, _a); _id -= 3; } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) { if (_id < 3) *reinterpret_cast(_a[0]) = -1; _id -= 3; } return _id; } QT_END_MOC_NAMESPACE pybik-3.0/csrc/_qt_qtwogl_priv.cpp0000644000175000017500000000341113173054541017520 0ustar barccbarcc00000000000000//generated from: build/temp.linux-x86_64-3.5/pybiklib/ext/qt_qtwogl.py #include "_qt_qtwogl_moc.h" //line 75 void MainView::connect_renderer(Renderer *renderer) //line 1181 { //line 1182 QObject::connect(renderer, SIGNAL(picking_result(int)), this, SLOT(_on_picking_result(int)), Qt::QueuedConnection); //line 1187 QObject::connect(renderer, SIGNAL(debug_fps(int)), this, SLOT(_on_debug_fps(int)), Qt::QueuedConnection); //line 1189 } //line 1191 void MainView::connect_renderer_offscreen(Renderer *renderer) //line 1194 { //line 1195 QObject::connect(renderer, SIGNAL(offscreen_image(QImage)), //line 1196 this, SLOT(_on_offscreen_image(QImage)), Qt::QueuedConnection); //line 1197 } //line 1199 void MainView::connect_view() //line 1202 { //line 1203 connect(this, SIGNAL(beforeSynchronizing()), this, SLOT(on_beforeSynchronizing()), Qt::DirectConnection); //line 1204 connect(this, SIGNAL(sceneGraphInvalidated()), this, SLOT(on_sceneGraphInvalidated()), Qt::DirectConnection); //line 1206 } //line 1208 void MainView::connect_sidepane(QPushButton *button, QTreeView *treeview) //line 1212 { //line 1213 connect(button, SIGNAL(clicked()), this, SLOT(_on_button_sidepane_clicked()), Qt::DirectConnection); //line 1215 connect(treeview, SIGNAL(activated(const QModelIndex &)), this, SLOT(_on_treeview_activated(const QModelIndex &)), Qt::DirectConnection); //line 1217 } //line 1219 MoveEdit::MoveEdit() //line 1400 : QLineEdit() { //line 1401 connect(this, SIGNAL(returnPressed()), this, SLOT(on_returnpressed()), Qt::DirectConnection); //line 1402 } //line 1404 pybik-3.0/csrc/_qt_qtwes2_priv.cpp0000644000175000017500000000341113173054542017431 0ustar barccbarcc00000000000000//generated from: build/temp.linux-x86_64-3.5/pybiklib/ext/qt_qtwes2.py #include "_qt_qtwes2_moc.h" //line 75 void MainView::connect_renderer(Renderer *renderer) //line 1181 { //line 1182 QObject::connect(renderer, SIGNAL(picking_result(int)), this, SLOT(_on_picking_result(int)), Qt::QueuedConnection); //line 1187 QObject::connect(renderer, SIGNAL(debug_fps(int)), this, SLOT(_on_debug_fps(int)), Qt::QueuedConnection); //line 1189 } //line 1191 void MainView::connect_renderer_offscreen(Renderer *renderer) //line 1194 { //line 1195 QObject::connect(renderer, SIGNAL(offscreen_image(QImage)), //line 1196 this, SLOT(_on_offscreen_image(QImage)), Qt::QueuedConnection); //line 1197 } //line 1199 void MainView::connect_view() //line 1202 { //line 1203 connect(this, SIGNAL(beforeSynchronizing()), this, SLOT(on_beforeSynchronizing()), Qt::DirectConnection); //line 1204 connect(this, SIGNAL(sceneGraphInvalidated()), this, SLOT(on_sceneGraphInvalidated()), Qt::DirectConnection); //line 1206 } //line 1208 void MainView::connect_sidepane(QPushButton *button, QTreeView *treeview) //line 1212 { //line 1213 connect(button, SIGNAL(clicked()), this, SLOT(_on_button_sidepane_clicked()), Qt::DirectConnection); //line 1215 connect(treeview, SIGNAL(activated(const QModelIndex &)), this, SLOT(_on_treeview_activated(const QModelIndex &)), Qt::DirectConnection); //line 1217 } //line 1219 MoveEdit::MoveEdit() //line 1400 : QLineEdit() { //line 1401 connect(this, SIGNAL(returnPressed()), this, SLOT(on_returnpressed()), Qt::DirectConnection); //line 1402 } //line 1404 pybik-3.0/csrc/_qtui__priv.cpp0000644000175000017500000010745413173054541016634 0ustar barccbarcc00000000000000//generated from: build/temp.linux-x86_64-3.5/pybiklib/ext/qtui_.py #include "_qtui__moc.h" //line 53 #include "qtui_p.h" //line 54 ShortcutEditor::ShortcutEditor(QWidget *parent) //line 94 : QLabel(gettext_translate("Press a key …", Q_NULLPTR), parent) //line 95 { //line 96 setFocusPolicy(Qt::StrongFocus); //line 97 setAutoFillBackground(true); //line 98 } //line 99 void ShortcutEditor::keyPressEvent(QKeyEvent *event) //line 104 { //line 105 switch (event->key()) { //line 106 case Qt::Key_Shift: case Qt::Key_Control: case Qt::Key_Meta: //line 107 case Qt::Key_Alt: case Qt::Key_AltGr: //line 108 case Qt::Key_CapsLock: case Qt::Key_NumLock: case Qt::Key_ScrollLock: //line 109 QLabel::keyPressEvent(event); //line 110 return; //line 111 } //line 112 if (event->count() != 1) { //line 113 QLabel::keyPressEvent(event); //line 114 return; //line 115 } //line 116 int mod = event->modifiers() & (Qt::ShiftModifier | Qt::ControlModifier); //line 117 QStringList keylist = QKeySequence(event->key() | int(mod)).toString().split('+'); //line 118 if ((event->modifiers() & Qt::KeypadModifier) && !keylist.contains(QStringLiteral("Num"))) //line 119 keylist.insert(keylist.size()-1, "Num"); //line 120 key = new QString(keylist.join('+')); //line 121 key_pressed(); //line 122 } //line 123 QWidget *ShortcutDelegate::createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const //line 131 { //line 132 ShortcutEditor *editor = new ShortcutEditor(parent); //line 133 connect(editor, SIGNAL(key_pressed()), this, SLOT(on_editor_key_pressed())); //line 134 return editor; //line 135 } //line 136 void ShortcutDelegate::setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const //line 141 { //line 142 if (((ShortcutEditor*)editor)->key != NULL) { //line 143 QVariant value(*((ShortcutEditor*)editor)->key); //line 144 model->setData(index, value, Qt::DisplayRole); //line 145 } //line 146 } //line 147 Q_INVOKABLE void ShortcutDelegate::on_editor_key_pressed() //line 151 { //line 152 QWidget *editor = (QWidget*)this->sender(); //line 153 this->commitData(editor); //line 154 this->closeEditor(editor, QAbstractItemDelegate::NoHint); //line 155 } //line 156 void ColorIconEngine::paint(QPainter *painter, const QRect &rect, QIcon::Mode mode, QIcon::State state) //line 166 { painter->fillRect(rect, QColor(this->color)); } //line 167 ColorIconEngine *ColorIconEngine::clone() const //line 169 { //line 170 ColorIconEngine *cloned = new ColorIconEngine(); //line 171 cloned->color = color; //line 172 return cloned; //line 173 } //line 174 void UIContainer::setupUi_main(QMainWindow *window, const QIcon &icon1, const QIcon &icon2, const QIcon &icon3, const QKeySequence &key1, const QKeySequence &key2) //line 196 { //line 197 // actions that belongs to no widget //line 198 QAction *action_jump_to_editbar = new QAction(window); //line 199 action_jump_to_editbar->setObjectName("action_jump_to_editbar"); //line 200 action_jump_to_editbar->setShortcut(key1); //line 201 window->addAction(action_jump_to_editbar); //line 202 QAction *action_edit_cube = new QAction(window); //line 203 action_edit_cube->setObjectName("action_edit_cube"); //line 204 action_edit_cube->setShortcut(key2); //line 205 window->addAction(action_edit_cube); //line 206 // Qt Designer code //line 208 ui_main.setupUi(window); //line 209 // ... //line 211 ui_main.splitter->setCollapsible(0, false); //line 212 ui_main.splitter->setStretchFactor(0, 1); //line 213 ui_main.splitter->setStretchFactor(1, 0); //line 214 ui_main.listwidget->setItemDelegate(new ModelSelectionItemDelegate()); //line 215 // set icons //line 217 ui_main.button_edit_exec->setIcon(QIcon::fromTheme("system-run")); //line 218 ui_main.button_edit_clear->setIcon(QIcon::fromTheme("edit-clear")); //line 219 ui_main.action_challenge->setIcon(icon1); //line 220 ui_main.action_new_solved->setIcon(icon2); //line 221 ui_main.action_quit->setIcon(QIcon::fromTheme("application-exit")); //line 222 ui_main.action_rewind->setIcon(QIcon::fromTheme("media-seek-backward")); //line 223 ui_main.action_previous->setIcon(QIcon::fromTheme("media-skip-backward")); //line 224 ui_main.action_stop->setIcon(QIcon::fromTheme("media-playback-stop")); //line 225 ui_main.action_play->setIcon(QIcon::fromTheme("media-playback-start")); //line 226 ui_main.action_next->setIcon(QIcon::fromTheme("media-skip-forward")); //line 227 ui_main.action_forward->setIcon(QIcon::fromTheme("media-seek-forward")); //line 228 ui_main.action_mark_set->setIcon(QIcon::fromTheme("list-add")); //line 229 ui_main.action_mark_remove->setIcon(QIcon::fromTheme("list-remove")); //line 230 ui_main.action_selectmodel->setIcon(icon3); //line 231 ui_main.action_selectmodel_back->setIcon(QIcon::fromTheme("back")); //line 232 ui_main.action_preferences->setIcon(QIcon::fromTheme("document-properties")); //line 233 ui_main.action_info->setIcon(QIcon::fromTheme("help-about")); //line 234 ui_main.action_help->setIcon(QIcon::fromTheme("help")); //line 235 // widgets that are not created with Qt Designer: toolbar_play //line 237 ui_main.toolbar_play->addAction(ui_main.action_selectmodel); //line 238 ui_main.toolbar_play->addAction(ui_main.action_new_solved); //line 239 ui_main.toolbar_play->addAction(ui_main.action_challenge); //line 240 ui_main.toolbar_play->addSeparator(); //line 241 ui_main.toolbar_play->addAction(ui_main.action_rewind); //line 242 ui_main.toolbar_play->addAction(ui_main.action_previous); //line 243 ui_main.toolbar_play->addAction(ui_main.action_stop); //line 244 ui_main.toolbar_play->addAction(ui_main.action_play); //line 245 ui_main.toolbar_play->addAction(ui_main.action_next); //line 246 ui_main.toolbar_play->addAction(ui_main.action_forward); //line 247 ui_main.toolbar_play->addAction(ui_main.action_mark_set); //line 248 ui_main.toolbar_play->addAction(ui_main.action_mark_remove); //line 249 // …: toolbar_selectmodel //line 251 ui_main.toolbar_selectmodel->addAction(ui_main.action_selectmodel_back); //line 252 label_selectmodel = new QLabel(); //line 253 ui_main.toolbar_selectmodel->addWidget(label_selectmodel); //line 254 ui_main.toolbar_selectmodel->setVisible(false); //line 255 // …: toolbar_common //line 257 QWidget *spacer = new QWidget(); //line 258 spacer->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); //line 259 ui_main.toolbar_common->addWidget(spacer); //line 260 // …: menu button //line 262 QToolButton *menubutton = new QToolButton(window); //line 263 menubutton->setIcon(QIcon::fromTheme("format-justify-fill")); //XXX: hmm //line 264 menubutton->setPopupMode(QToolButton::InstantPopup); //line 265 QMenu *menu = new QMenu(menubutton); //line 266 menu->addAction(ui_main.action_initial_state); //line 267 menu->addAction(ui_main.action_reset_rotation); //line 268 menu->addSeparator(); //line 269 menu->addAction(ui_main.action_editbar); //line 270 menu->addAction(ui_main.action_statusbar); //line 271 menu->addSeparator(); //line 272 menu->addAction(ui_main.action_preferences); //line 273 menu->addAction(ui_main.action_help); //line 274 menu->addAction(ui_main.action_info); //line 275 menu->addSeparator(); //line 276 menu->addAction(ui_main.action_quit); //line 277 menubutton->setMenu(menu); //line 278 ui_main.toolbar_common->addWidget(menubutton); //line 279 // add action to main window for shortcuts //line 281 window->addAction(ui_main.action_challenge); //line 282 window->addAction(ui_main.action_new_solved); //line 283 window->addAction(ui_main.action_quit); //line 284 window->addAction(ui_main.action_selectmodel); //line 285 window->addAction(ui_main.action_initial_state); //line 286 window->addAction(ui_main.action_reset_rotation); //line 287 window->addAction(ui_main.action_preferences); //line 288 window->addAction(ui_main.action_statusbar); //line 289 window->addAction(ui_main.action_info); //line 290 window->addAction(ui_main.action_rewind); //line 291 window->addAction(ui_main.action_rewind); //line 292 window->addAction(ui_main.action_previous); //line 293 window->addAction(ui_main.action_previous); //line 294 window->addAction(ui_main.action_stop); //line 295 window->addAction(ui_main.action_stop); //line 296 window->addAction(ui_main.action_play); //line 297 window->addAction(ui_main.action_play); //line 298 window->addAction(ui_main.action_next); //line 299 window->addAction(ui_main.action_next); //line 300 window->addAction(ui_main.action_forward); //line 301 window->addAction(ui_main.action_forward); //line 302 window->addAction(ui_main.action_mark_set); //line 303 window->addAction(ui_main.action_mark_set); //line 304 window->addAction(ui_main.action_mark_remove); //line 305 window->addAction(ui_main.action_mark_remove); //line 306 window->addAction(ui_main.action_editbar); //line 307 window->addAction(ui_main.action_help); //line 308 window->addAction(ui_main.action_help); //line 309 // rest //line 311 disable_tooltips(); //line 312 active_plugin_group = 0; //line 313 } //line 314 void UIContainer::disable_tooltips() //line 316 { //line 317 //pita: If a action has no tooltip, the appropriate toolbutton uses the actions text for the tooltip. //line 318 // To remove tooltips you have to remove the tooltips for the appropriate toolbutton, //line 319 // but every time you change something on the action, the button will recreate the tooltip //line 320 ui_main.toolbar_play->widgetForAction(ui_main.action_rewind)->setToolTip(QStringLiteral("")); //line 321 ui_main.toolbar_play->widgetForAction(ui_main.action_previous)->setToolTip(QStringLiteral("")); //line 322 ui_main.toolbar_play->widgetForAction(ui_main.action_stop)->setToolTip(QStringLiteral("")); //line 323 ui_main.toolbar_play->widgetForAction(ui_main.action_play)->setToolTip(QStringLiteral("")); //line 324 ui_main.toolbar_play->widgetForAction(ui_main.action_next)->setToolTip(QStringLiteral("")); //line 325 ui_main.toolbar_play->widgetForAction(ui_main.action_forward)->setToolTip(QStringLiteral("")); //line 326 } //line 327 void UIContainer::set_shortcuts(const QKeySequence &key1, const QKeySequence &key2, const QKeySequence &key3, const QKeySequence &key4) //line 329 { //line 330 ui_main.action_selectmodel->setShortcut(key1); //line 331 ui_main.action_initial_state->setShortcut(key2); //line 332 ui_main.action_reset_rotation->setShortcut(key3); //line 333 ui_main.action_preferences->setShortcut(key4); //line 334 } //line 335 void UIContainer::add_widgets(QMainWindow *window, QLineEdit *edit, QOpenGLWidget *drawing) //line 337 { //line 338 edit->setObjectName("edit_moves"); //line 339 edit->setFrame(false); //line 340 ui_main.layout_moves->insertWidget(1, edit); //line 341 drawing->setObjectName("drawingarea"); //line 342 ui_main.verticalLayout->addWidget(drawing); //line 343 window->setTabOrder(edit, drawing); //line 344 window->setTabOrder(drawing, ui_main.box_sidepane); //line 345 drawing->setFocus(Qt::OtherFocusReason); //line 346 } //line 347 void UIContainer::set_toolbar_visible(bool visible) //line 350 { ui_main.toolbar_play->setVisible(visible); } //line 351 void UIContainer::set_frame_editbar_visible(bool visible) //line 353 { ui_main.frame_editbar->setVisible(visible); } //line 354 void UIContainer::set_statusbar_visible(bool visible) //line 356 { ui_main.statusbar->setVisible(visible); } //line 357 void UIContainer::hide_controls() //line 359 { //line 360 ui_main.toolbar_play->setVisible(false); //line 361 ui_main.toolbar_common->setVisible(false); //line 362 ui_main.frame_editbar->setVisible(false); //line 363 ui_main.statusbar->setVisible(false); //line 364 ui_main.box_sidepane->setVisible(false); //line 365 } //line 366 void UIContainer::set_visible(bool debug_text_visible, bool editbar_visible, bool statusbar_visible) //line 369 { //line 370 ui_main.label_debug_text->setVisible(debug_text_visible); //line 371 ui_main.action_editbar->setChecked(editbar_visible); //line 372 ui_main.action_statusbar->setChecked(statusbar_visible); //line 373 ui_main.frame_editbar->setVisible(editbar_visible); //line 374 ui_main.statusbar->setVisible(statusbar_visible); //line 375 } //line 376 void UIContainer::get_splitter_sizes(int &s1, int &s2) //line 379 { //line 380 QList list(ui_main.splitter->sizes()); //line 381 s1 = list.at(0); //line 382 s2 = list.at(1); //line 383 } //line 384 void UIContainer::set_splitter_sizes(int s1, int s2) //line 386 { //line 387 QList list; //line 388 list.append(s1); //line 389 list.append(s2); //line 390 ui_main.splitter->setSizes(list); //line 391 } //line 392 void UIContainer::splitter_update_minimumsize() //line 394 { //line 395 int w0, w1; //line 396 get_splitter_sizes(w0, w1); //line 397 QSize s0 = ui_main.splitter->widget(0)->minimumSizeHint(); //line 398 QSize s1 = ui_main.splitter->widget(1)->minimumSizeHint(); //line 399 int w = s0.width() + ui_main.splitter->handleWidth(); //line 400 int h = std::max(s0.height(), s1.height()); //line 401 w += w1==0 ? 6 : s1.width(); //line 402 ui_main.splitter->setMinimumSize(w, h); //line 403 } //line 404 void UIContainer::set_debug_text(const QString &text) //line 407 { ui_main.label_debug_text->setText(text); } //line 408 void UIContainer::set_toolbar_state(int a, int b, int c, int d, int e) //line 411 { //line 412 ui_main.action_rewind->setEnabled(a); //line 413 ui_main.action_previous->setEnabled(a); //line 414 ui_main.action_play->setEnabled(b); //line 415 ui_main.action_next->setEnabled(b); //line 416 ui_main.action_forward->setEnabled(b); //line 417 ui_main.action_mark_set->setEnabled(c); //line 418 ui_main.action_mark_remove->setEnabled(c); //line 419 ui_main.action_stop->setVisible(d); //line 420 ui_main.action_play->setVisible(!d); //line 421 ui_main.action_mark_set->setVisible(e); //line 422 ui_main.action_mark_remove->setVisible(!e); //line 423 disable_tooltips(); //line 424 } //line 425 void UIContainer::clear_sidepane() //line 428 { //line 429 QLayoutItem *child; //line 430 while ((child = ui_main.layout_sidepane->takeAt(0)) != 0) { //line 431 delete child; //line 432 } //line 433 } //line 434 QPushButton *UIContainer::create_sidepane_button(const QString &text) //line 436 { //line 437 QPushButton *button = new QPushButton(ui_main.box_sidepane); //line 438 button->setText(text); //line 439 button->setFlat(true); //line 440 button->setFocusPolicy(Qt::TabFocus); //line 441 ui_main.layout_sidepane->addWidget(button); //line 442 return button; //line 443 } //line 444 QTreeView *UIContainer::create_sidepane_treeview(QStandardItemModel *treestore, int i) //line 446 { //line 447 QTreeView *treeview = new QTreeView(ui_main.box_sidepane); //line 448 treeview->setFrameShape(QFrame::NoFrame); //line 449 treeview->setEditTriggers(QAbstractItemView::NoEditTriggers); //line 450 treeview->setUniformRowHeights(true); //line 451 treeview->setAnimated(true); //line 452 treeview->setHeaderHidden(true); //line 453 treeview->hide(); //line 454 treeview->setModel(treestore); //line 455 treeview->setRootIndex(treestore->index(i, 0)); //line 456 ui_main.layout_sidepane->addWidget(treeview); //line 457 return treeview; //line 458 } //line 459 void UIContainer::set_active_plugin_group(int i) //line 461 { //line 462 QLayoutItem *item_treeview; //line 463 if (i == -1) i = active_plugin_group; //line 464 item_treeview = ui_main.layout_sidepane->itemAt(active_plugin_group*2+1); //line 465 if (item_treeview != NULL) //line 466 item_treeview->widget()->hide(); //line 467 item_treeview = ui_main.layout_sidepane->itemAt(i*2+1); //line 468 if (item_treeview != NULL) //line 469 item_treeview->widget()->show(); //line 470 active_plugin_group = i; //line 471 } //line 472 void UIContainer::set_active_plugin_group_by_obj(QObject *obj) //line 474 { //line 475 int i = ui_main.layout_sidepane->indexOf((QWidget*)obj); //line 476 this->set_active_plugin_group(i/2); //line 477 } //line 478 int UIContainer::get_plugin_group_count() //line 480 { return ui_main.layout_sidepane->count() / 2; } //line 481 QModelIndex UIContainer::root_index(int i) //line 483 { return ((QTreeView*)ui_main.layout_sidepane->itemAt(i*2+1)->widget())->rootIndex(); } //line 484 void UIContainer::hide_row(int i, bool hide) //line 486 { //line 487 QWidget *button = ui_main.layout_sidepane->itemAt(i*2)->widget(); //line 488 if (hide) { //line 489 button->hide(); //line 490 if (i == active_plugin_group) set_active_plugin_group(0); //line 491 } else { //line 492 button->show(); //line 493 } //line 494 } //line 495 void UIContainer::set_row_hidden(int i, int row, const QModelIndex &index, bool hide) //line 497 { ((QTreeView*)ui_main.layout_sidepane->itemAt(i*2+1)->widget())->setRowHidden(row, index, hide); } //line 498 int UIContainer::splitter_pos() //line 500 { return ui_main.splitter->sizes()[0]; } //line 501 void UIContainer::setupUi_pref(QDialog *window, int speed, int speed_min, int speed_max, int mirror_min, int mirror_max, QStandardItemModel *_movekeys) //line 505 { //line 506 liststore_movekeys = _movekeys; //line 507 liststore_movekeys->setObjectName("liststore_movekeys"); //line 508 liststore_faces = new QStandardItemModel(window); //line 509 liststore_faces->setObjectName("liststore_faces"); //line 510 ui_pref.setupUi(window); //line 512 ui_pref.button_animspeed_reset->setIcon(QIcon::fromTheme("edit-clear")); //line 514 ui_pref.button_shader_reset->setIcon(QIcon::fromTheme("edit-clear")); //line 515 ui_pref.button_antialiasing_reset->setIcon(QIcon::fromTheme("edit-clear")); //line 516 ui_pref.button_mirror_faces_reset->setIcon(QIcon::fromTheme("edit-clear")); //line 517 ui_pref.button_movekey_add->setIcon(QIcon::fromTheme("list-add")); //line 518 ui_pref.button_movekey_remove->setIcon(QIcon::fromTheme("list-remove")); //line 519 ui_pref.button_movekey_reset->setIcon(QIcon::fromTheme("document-revert")); //line 520 ui_pref.button_color_reset->setIcon(QIcon::fromTheme("edit-clear")); //line 521 ui_pref.button_image_reset->setIcon(QIcon::fromTheme("edit-clear")); //line 522 ui_pref.button_background_color_reset->setIcon(QIcon::fromTheme("edit-clear")); //line 523 ui_pref.buttonBox->button(QDialogButtonBox::Close)->setDefault(true); //line 525 ui_pref.label_needs_restarted->setVisible(false); //line 526 QPalette pal(ui_pref.label_needs_restarted->palette()); //line 527 pal.setColor(QPalette::WindowText, QColor(170, 0, 0)); //line 528 ui_pref.label_needs_restarted->setPalette(pal); //line 529 // graphic tab //line 531 ui_pref.slider_animspeed->setRange(speed_min, speed_max); //line 532 ui_pref.slider_animspeed->setValue(speed); //line 533 ui_pref.spinbox_mirror_faces->setRange(mirror_min, mirror_max); //line 534 // keys tab //line 536 liststore_movekeys->setColumnCount(2); //line 537 ui_pref.listview_movekeys->setModel(liststore_movekeys); //line 538 ShortcutDelegate *shortcut_delegate = new ShortcutDelegate(ui_pref.listview_movekeys); //line 539 ui_pref.listview_movekeys->setItemDelegateForColumn(1, shortcut_delegate); //line 540 // theme tab //line 542 liststore_faces_width = 30; //line 543 iconengine_color = new ColorIconEngine(); //line 544 ui_pref.button_color->setIcon(QIcon(iconengine_color)); //line 545 int height = ui_pref.button_color->iconSize().height(); //line 546 ui_pref.button_color->setIconSize( //line 547 QSize(height * ui_pref.button_color->width() / ui_pref.button_color->height(), height)); //line 548 ui_pref.button_color->setText(QStringLiteral("")); //line 549 iconengine_background_color = new ColorIconEngine(); //line 550 ui_pref.button_background_color->setIcon(QIcon(iconengine_background_color)); //line 551 height = ui_pref.button_background_color->iconSize().height(); //line 552 ui_pref.button_background_color->setIconSize( //line 553 QSize(height * ui_pref.button_background_color->width() / ui_pref.button_background_color->height(), height)); //line 554 ui_pref.button_background_color->setText(QStringLiteral("")); //line 555 } //line 556 void UIContainer::preferences_block_signals(bool block) //line 559 { //line 560 ui_pref.combobox_shader->blockSignals(block); //line 561 ui_pref.combobox_samples->blockSignals(block); //line 562 liststore_movekeys->blockSignals(block); //line 563 } //line 564 void UIContainer::combobox_add_shaderitem(const QString &name, const QString &nick) //line 566 { ui_pref.combobox_shader->addItem(name, nick); } //line 567 void UIContainer::combobox_add_samplesitem(const QString &name, const QString &nick) //line 569 { ui_pref.combobox_samples->addItem(name, nick); } //line 570 void UIContainer::add_movekey_row() //line 572 { //line 573 int row = ui_pref.listview_movekeys->currentIndex().row(); //line 574 liststore_movekeys->insertRow(row); //line 575 liststore_movekeys->setItem(row, 0, new QStandardItem("")); //line 576 liststore_movekeys->setItem(row, 1, new QStandardItem("")); //line 577 QModelIndex index = liststore_movekeys->index(row, 0); //line 578 ui_pref.listview_movekeys->setCurrentIndex(index); //line 579 ui_pref.listview_movekeys->edit(index); //line 580 } //line 581 void UIContainer::remove_movekey_row() //line 583 { //line 584 int row = ui_pref.listview_movekeys->currentIndex().row(); //line 585 liststore_movekeys->takeRow(row); //line 586 } //line 587 void UIContainer::add_liststore_faces_row(const QString &name, const QString &key) //line 589 { //line 590 QStandardItem *item = new QStandardItem(name); //line 591 item->setData(QVariant(key)); //line 592 liststore_faces->appendRow(item); //line 593 //XXX: workaround, listview_faces should automatically set to the correct width //line 594 QFontMetrics fm(ui_pref.listview_faces->font()); //line 595 int width = fm.width(name) + 20; // 20 for the scroll bar //line 596 if (liststore_faces_width < width) liststore_faces_width = width; //line 597 } //line 598 void UIContainer::finalize_liststore_faces(QWidget *window) //line 600 { //line 601 ui_pref.listview_faces->setMaximumWidth(liststore_faces_width); //line 602 ui_pref.listview_faces->setModel(liststore_faces); //line 603 QObject::connect(ui_pref.listview_faces->selectionModel(), //line 604 SIGNAL(currentRowChanged(const QModelIndex &, const QModelIndex &)), //line 605 window, //line 606 SLOT(_on_listview_faces_currentRowChanged(const QModelIndex &))); //line 607 ui_pref.listview_faces->setCurrentIndex(liststore_faces->index(0, 0)); //line 608 } //line 609 QString UIContainer::get_liststore_faces_facekey(const QModelIndex &index) //line 611 { return liststore_faces->itemFromIndex(index)->data().toString(); } //line 612 void UIContainer::set_button_color(const QString &color) //line 614 { //line 615 iconengine_color->color = color; //line 616 ui_pref.button_color->update(); //line 617 } //line 618 QString UIContainer::color_dialog(QWidget *parent, const QString &color) //line 620 { //line 621 QColorDialog dialog(parent); //line 622 dialog.setOption(QColorDialog::DontUseNativeDialog); //line 623 dialog.setCurrentColor(QColor(color)); //line 624 if (dialog.exec() == QDialog::Accepted) //line 625 return dialog.currentColor().name(); //line 626 return QString(); //line 627 } //line 628 void UIContainer::set_imagemode(int imagemode) //line 630 { //line 631 if (imagemode == 0) //line 632 ui_pref.radiobutton_tiled->setChecked(true); //line 633 else if (imagemode == 1) //line 634 ui_pref.radiobutton_mosaic->setChecked(true); //line 635 } //line 636 void UIContainer::add_combobox_image_item(const QIcon &icon, const QString &text, const QString &filename) //line 638 { ui_pref.combobox_image->addItem(icon, text, filename); } //line 639 void UIContainer::set_combobox_image(int index_icon, const QIcon &icon, int index) //line 641 { //line 642 ui_pref.combobox_image->setItemIcon(index_icon, icon); //line 643 if (index >= 0) ui_pref.combobox_image->setCurrentIndex(index); //line 644 } //line 645 void UIContainer::set_button_background_color(const QString &color) //line 648 { //line 649 iconengine_background_color->color = color; //line 650 ui_pref.button_background_color->update(); //line 651 } //line 652 void UIContainer::fill_page(QVariant items, const QString &title) //line 655 { //line 656 ui_main.listwidget->clear(); //line 657 QList list = items.value >(); //line 658 for (int i=0; i < list.size(); ++i) { //line 659 QObject *obj = list.at(i); //line 660 QString text = obj->property("text").value(); //line 661 QString filename = obj->property("key").value(); //line 662 QListWidgetItem *item = new QListWidgetItem(QIcon(filename), text); //line 663 item->setTextAlignment(Qt::AlignHCenter | Qt::AlignBottom); //line 664 ui_main.listwidget->addItem(item); //line 665 } //line 666 label_selectmodel->setText(title); //line 667 } //line 668 void UIContainer::set_page(int i) //line 670 { //line 671 ui_main.stackedwidget->setCurrentIndex(i); //line 672 ui_main.toolbar_play->setVisible(i==0); //line 673 ui_main.toolbar_selectmodel->setVisible(i!=0); //line 674 } //line 675 void UIContainer::setupUi_help(QDialog *window, const QString &helptext) //line 678 { //line 679 ui_help.setupUi(window); //line 680 ui_help.text_help->setHtml(helptext); //line 681 } //line 682 void UIContainer::setupUi_about(QDialog *window) //line 685 { //line 686 ui_about.setupUi(window); //line 687 index_tab_about = ui_about.tab_widget->indexOf(ui_about.tab_about); //line 688 index_tab_license = ui_about.tab_widget->indexOf(ui_about.tab_license); //line 689 // About tab animation //line 690 scrollbar = ui_about.text_translators->verticalScrollBar(); //line 691 animation.setTargetObject(scrollbar); //line 692 animation.setPropertyName(QByteArray("value")); //line 693 animation.setLoopCount(-1); //line 694 ui_about.text_translators->viewport()->installEventFilter(window); //line 695 } //line 696 void UIContainer::fill_header(const QString &fileName, const QString &appname, const QString &version, const QString &desc) //line 698 { //line 699 ui_about.label_icon->setPixmap(QPixmap(fileName)); //line 700 ui_about.label_appname->setText(appname); //line 701 ui_about.label_version->setText(version); //line 702 ui_about.label_description->setText(desc); //line 703 } //line 704 void UIContainer::fill_about_tab(const QString ©r, const QString &website, const QString &translators) //line 706 { //line 707 ui_about.label_copyright->setText(copyr); //line 708 ui_about.label_website->setText(website); //line 709 ui_about.text_translators->setHtml(translators); //line 710 } //line 711 void UIContainer::fill_contribute_tab(const QString &contribute) //line 713 { ui_about.label_contribute->setText(contribute); } //line 714 void UIContainer::fill_license_tab(const QString &license_short, bool license_notfound, const QString &license_full) //line 716 { //line 717 ui_about.text_license_short->hide(); //line 718 ui_about.text_license_full->hide(); //line 719 ui_about.text_license_short->setHtml(license_short); //line 720 if (license_notfound) ui_about.text_license_full->setLineWrapMode(QTextEdit::WidgetWidth); //line 721 ui_about.text_license_full->setHtml(license_full); //line 722 } //line 723 void UIContainer::tab_widget_currentChanged(int index) //line 725 { //line 726 if (index == index_tab_about) { //line 727 animation.resume(); //line 728 scrollbar->hide(); //line 729 } else { //line 730 animation.pause(); //line 731 scrollbar->show(); //line 732 } //line 733 if (index == index_tab_license) { //line 734 ui_about.text_license_short->setVisible(true); //line 735 ui_about.text_license_full->setVisible(false); //line 736 } //line 737 } //line 738 void UIContainer::update_animation(bool first) //line 740 { //line 741 int smin, smax; //line 742 if (first and animation.state() != QAbstractAnimation::Stopped) return; //line 743 smin = scrollbar->minimum(); //line 744 smax = scrollbar->maximum(); //line 745 if (smax > smin) { //line 746 animation.setDuration((smax-smin) * 40); //line 747 animation.setKeyValueAt(0., smin); //line 748 animation.setKeyValueAt(0.04, smin); //line 749 animation.setKeyValueAt(0.50, smax); //line 750 animation.setKeyValueAt(0.54, smax); //line 751 animation.setKeyValueAt(1., smin); //line 752 } //line 753 if (first) { //line 754 scrollbar->hide(); //line 755 animation.start(); //line 756 } //line 757 } //line 758 void UIContainer::event_filter_stop_animation(QEvent *event) //line 760 { //line 761 //assert watched == ui_about.text_translators.viewport() //line 762 if ((event->type() == QEvent::MouseButtonPress) || (event->type() == QEvent::Wheel)) { //line 763 animation.pause(); //line 764 scrollbar->show(); //line 765 } //line 766 } //line 767 void UIContainer::show_full_license(bool local, const QUrl &url) //line 769 { //line 770 if (local) { //line 771 ui_about.text_license_short->setVisible(false); //line 772 ui_about.text_license_full->setVisible(true); //line 773 } else //line 774 QDesktopServices::openUrl(url); //line 775 } //line 776 QString mk_qstr(const char *pstr, int length) //line 782 { return QString::fromUtf8(pstr, length); } //line 783 pybik-3.0/csrc/qtui_p.h0000644000175000017500000002267413124002557015256 0ustar barccbarcc00000000000000// Copyright © 2017 B. Clausius // // 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 . // some code in class ModelSelectionItemDelegate is derived from class QCommonStyle, // part of the QtWidgets module of the Qt Toolkit (v5.6.1): // Original Copyright: (C) 2015 The Qt Company Ltd. // Original license: General Public License version 2.1 or version 3 // as published by the Free Software Foundation #ifndef QTUI_P_H #define QTUI_P_H #include #include #include #include static QSizeF viewItemTextLayout(QTextLayout &textLayout, int lineWidth) { qreal height = 0; qreal widthUsed = 0; textLayout.beginLayout(); while (true) { QTextLine line = textLayout.createLine(); if (!line.isValid()) break; line.setLineWidth(lineWidth); line.setPosition(QPointF(0, height)); height += line.height(); widthUsed = qMax(widthUsed, line.naturalTextWidth()); } textLayout.endLayout(); return QSizeF(widthUsed, height); } class ModelSelectionItemDelegate : public QStyledItemDelegate { public: ModelSelectionItemDelegate() : QStyledItemDelegate() {} //~ModelSelectionItemDelegate(); QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const { return QSize(128, 128); } void _draw_text_background(QPainter *p, const QStyleOptionViewItem *option, const QRect &rect) const { QPalette::ColorGroup cg = option->widget->isEnabled() ? QPalette::Normal : QPalette::Disabled; if (cg == QPalette::Normal && !(option->state & QStyle::State_Active)) cg = QPalette::Inactive; QPalette::ColorRole crole = option->state & QStyle::State_Selected ? QPalette::Highlight : QPalette::Dark; QColor color(option->palette.brush(cg, crole).color()); color = color.darker(180); color.setAlpha(160); p->fillRect(rect, color); } void _draw_text(QPainter *p, const QStyleOptionViewItem *option, const QRect &rect) const { const int textMargin = option->widget->style()->pixelMetric(QStyle::PM_FocusFrameHMargin, 0, option->widget) + 1; QRect textRect = rect.adjusted(textMargin, 0, -textMargin, 0); // remove width padding const bool wrapText = option->features & QStyleOptionViewItem::WrapText; QTextOption textOption; textOption.setWrapMode(wrapText ? QTextOption::WordWrap : QTextOption::ManualWrap); textOption.setTextDirection(option->direction); textOption.setAlignment(QStyle::visualAlignment(option->direction, option->displayAlignment)); QTextLayout textLayout(option->text, option->font); textLayout.setTextOption(textOption); QSizeF minsize(viewItemTextLayout(textLayout, textRect.width())); QString elidedText; qreal height = 0; qreal width = 0; int elidedIndex = -1; const int lineCount = textLayout.lineCount(); for (int j = 0; j < lineCount; ++j) { const QTextLine line = textLayout.lineAt(j); if (j + 1 <= lineCount - 1) { const QTextLine nextLine = textLayout.lineAt(j + 1); if ((nextLine.y() + nextLine.height()) > textRect.height()) { int start = line.textStart(); int length = line.textLength() + nextLine.textLength(); const QFontMetrics fontmetrics(option->font); elidedText = fontmetrics.elidedText(textLayout.text().mid(start, length), option->textElideMode, textRect.width()); height += line.height(); width = textRect.width(); elidedIndex = j; break; } } if (line.naturalTextWidth() > textRect.width()) { int start = line.textStart(); int length = line.textLength(); const QFontMetrics fontmetrics(option->font); elidedText = fontmetrics.elidedText(textLayout.text().mid(start, length), option->textElideMode, textRect.width()); height += line.height(); width = textRect.width(); elidedIndex = j; break; } width = qMax(width, line.width()); height += line.height(); } const QRect layoutRect = QStyle::alignedRect(option->direction, option->displayAlignment, QSize(int(width), int(height)), textRect); _draw_text_background(p, option, QRect(layoutRect.x()+layoutRect.width()/2-minsize.width()/2-2, layoutRect.y(), minsize.width()+5, layoutRect.height()+1)); const QPointF position = layoutRect.topLeft(); for (int i = 0; i < lineCount; ++i) { const QTextLine line = textLayout.lineAt(i); if (i == elidedIndex) { qreal x = position.x() + line.x(); qreal y = position.y() + line.y() + line.ascent(); p->save(); p->setFont(option->font); p->drawText(QPointF(x, y), elidedText); p->restore(); break; } line.draw(p, position); } } void paint(QPainter *p, const QStyleOptionViewItem &opt, const QModelIndex &index) const { QStyleOptionViewItem option = opt; initStyleOption(&option, index); p->save(); p->setClipRect(option.rect); QRect iconRect = option.rect.adjusted(3, 4, -3, -6); QRect textRect = option.rect.adjusted(5, 6, -5, -8); // draw the background option.widget->style()->drawPrimitive(QStyle::PE_PanelItemViewItem, &option, p, option.widget); // draw the icon QIcon::Mode mode = QIcon::Normal; if (!(option.state & QStyle::State_Enabled)) mode = QIcon::Disabled; else if (option.state & QStyle::State_Selected) mode = QIcon::Selected; QIcon::State state = option.state & QStyle::State_Open ? QIcon::On : QIcon::Off; option.icon.paint(p, iconRect, option.decorationAlignment, mode, state); // draw the text if (!option.text.isEmpty()) { QPalette::ColorGroup cg = option.state & QStyle::State_Enabled ? QPalette::Normal : QPalette::Disabled; if (cg == QPalette::Normal && !(option.state & QStyle::State_Active)) cg = QPalette::Inactive; if (option.state & QStyle::State_Selected) { p->setPen(option.palette.color(cg, QPalette::HighlightedText)); } else { p->setPen(option.palette.color(cg, QPalette::BrightText)); } _draw_text(p, &option, textRect); } // draw the focus rect if (option.state & QStyle::State_HasFocus) { QStyleOptionFocusRect o; o.QStyleOption::operator=(option); o.rect = QRect(option.rect); o.state |= QStyle::State_KeyboardFocusChange; o.state |= QStyle::State_Item; QPalette::ColorGroup cg = (option.state & QStyle::State_Enabled) ? QPalette::Normal : QPalette::Disabled; o.backgroundColor = option.palette.color(cg, (option.state & QStyle::State_Selected) ? QPalette::Highlight : QPalette::Window); option.widget->style()->drawPrimitive(QStyle::PE_FrameFocusRect, &o, p, option.widget); } p->restore(); } }; class ModelSelectionWidget : public QListWidget { public: ModelSelectionWidget(QWidget *p) : QListWidget(p) {} protected: void mouseDoubleClickEvent(QMouseEvent *event) { event->ignore(); } QItemSelectionModel::SelectionFlags selectionCommand(const QModelIndex &index, const QEvent *event = Q_NULLPTR) const { if (dynamic_cast(event)) { return QItemSelectionModel::NoUpdate; } else return QListWidget::selectionCommand(index, event); } }; #endif // QTUI_P_H pybik-3.0/csrc/_qt_qtwes2_moc.cpp0000644000175000017500000015402013173054543017233 0ustar barccbarcc00000000000000/**************************************************************************** ** Meta object code from reading C++ file '_qt_qtwes2_moc.h' ** ** Created by: The Qt Meta Object Compiler version 67 (Qt 5.7.1) ** ** WARNING! All changes made in this file will be lost! *****************************************************************************/ #include "_qt_qtwes2_moc.h" #include #include #if !defined(Q_MOC_OUTPUT_REVISION) #error "The header file '_qt_qtwes2_moc.h' doesn't include ." #elif Q_MOC_OUTPUT_REVISION != 67 #error "This file was generated using the moc from 5.7.1. It" #error "cannot be used with the include files from this version of Qt." #error "(The moc has changed too much.)" #endif QT_BEGIN_MOC_NAMESPACE struct qt_meta_stringdata_Renderer_t { QByteArrayData data[9]; char stringdata0[111]; }; #define QT_MOC_LITERAL(idx, ofs, len) \ Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ qptrdiff(offsetof(qt_meta_stringdata_Renderer_t, stringdata0) + ofs \ - idx * sizeof(QByteArrayData)) \ ) static const qt_meta_stringdata_Renderer_t qt_meta_stringdata_Renderer = { { QT_MOC_LITERAL(0, 0, 8), // "Renderer" QT_MOC_LITERAL(1, 9, 14), // "picking_result" QT_MOC_LITERAL(2, 24, 0), // "" QT_MOC_LITERAL(3, 25, 9), // "debug_fps" QT_MOC_LITERAL(4, 35, 15), // "offscreen_image" QT_MOC_LITERAL(5, 51, 18), // "on_beforeRendering" QT_MOC_LITERAL(6, 70, 16), // "on_messageLogged" QT_MOC_LITERAL(7, 87, 19), // "QOpenGLDebugMessage" QT_MOC_LITERAL(8, 107, 3) // "msg" }, "Renderer\0picking_result\0\0debug_fps\0" "offscreen_image\0on_beforeRendering\0" "on_messageLogged\0QOpenGLDebugMessage\0" "msg" }; #undef QT_MOC_LITERAL static const uint qt_meta_data_Renderer[] = { // content: 7, // revision 0, // classname 0, 0, // classinfo 5, 14, // methods 0, 0, // properties 0, 0, // enums/sets 0, 0, // constructors 0, // flags 3, // signalCount // signals: name, argc, parameters, tag, flags 1, 1, 39, 2, 0x06 /* Public */, 3, 1, 42, 2, 0x06 /* Public */, 4, 1, 45, 2, 0x06 /* Public */, // methods: name, argc, parameters, tag, flags 5, 0, 48, 2, 0x02 /* Public */, 6, 1, 49, 2, 0x02 /* Public */, // signals: parameters QMetaType::Void, QMetaType::Int, 2, QMetaType::Void, QMetaType::Int, 2, QMetaType::Void, QMetaType::QImage, 2, // methods: parameters QMetaType::Void, QMetaType::Void, 0x80000000 | 7, 8, 0 // eod }; void Renderer::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) { if (_c == QMetaObject::InvokeMetaMethod) { Renderer *_t = static_cast(_o); Q_UNUSED(_t) switch (_id) { case 0: _t->picking_result((*reinterpret_cast< int(*)>(_a[1]))); break; case 1: _t->debug_fps((*reinterpret_cast< int(*)>(_a[1]))); break; case 2: _t->offscreen_image((*reinterpret_cast< QImage(*)>(_a[1]))); break; case 3: _t->on_beforeRendering(); break; case 4: _t->on_messageLogged((*reinterpret_cast< const QOpenGLDebugMessage(*)>(_a[1]))); break; default: ; } } else if (_c == QMetaObject::IndexOfMethod) { int *result = reinterpret_cast(_a[0]); void **func = reinterpret_cast(_a[1]); { typedef void (Renderer::*_t)(int ); if (*reinterpret_cast<_t *>(func) == static_cast<_t>(&Renderer::picking_result)) { *result = 0; return; } } { typedef void (Renderer::*_t)(int ); if (*reinterpret_cast<_t *>(func) == static_cast<_t>(&Renderer::debug_fps)) { *result = 1; return; } } { typedef void (Renderer::*_t)(QImage ); if (*reinterpret_cast<_t *>(func) == static_cast<_t>(&Renderer::offscreen_image)) { *result = 2; return; } } } } const QMetaObject Renderer::staticMetaObject = { { &QObject::staticMetaObject, qt_meta_stringdata_Renderer.data, qt_meta_data_Renderer, qt_static_metacall, Q_NULLPTR, Q_NULLPTR} }; const QMetaObject *Renderer::metaObject() const { return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; } void *Renderer::qt_metacast(const char *_clname) { if (!_clname) return Q_NULLPTR; if (!strcmp(_clname, qt_meta_stringdata_Renderer.stringdata0)) return static_cast(const_cast< Renderer*>(this)); return QObject::qt_metacast(_clname); } int Renderer::qt_metacall(QMetaObject::Call _c, int _id, void **_a) { _id = QObject::qt_metacall(_c, _id, _a); if (_id < 0) return _id; if (_c == QMetaObject::InvokeMetaMethod) { if (_id < 5) qt_static_metacall(this, _c, _id, _a); _id -= 5; } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) { if (_id < 5) *reinterpret_cast(_a[0]) = -1; _id -= 5; } return _id; } // SIGNAL 0 void Renderer::picking_result(int _t1) { void *_a[] = { Q_NULLPTR, const_cast(reinterpret_cast(&_t1)) }; QMetaObject::activate(this, &staticMetaObject, 0, _a); } // SIGNAL 1 void Renderer::debug_fps(int _t1) { void *_a[] = { Q_NULLPTR, const_cast(reinterpret_cast(&_t1)) }; QMetaObject::activate(this, &staticMetaObject, 1, _a); } // SIGNAL 2 void Renderer::offscreen_image(QImage _t1) { void *_a[] = { Q_NULLPTR, const_cast(reinterpret_cast(&_t1)) }; QMetaObject::activate(this, &staticMetaObject, 2, _a); } struct qt_meta_stringdata_SectionNameIndexItem_t { QByteArrayData data[7]; char stringdata0[70]; }; #define QT_MOC_LITERAL(idx, ofs, len) \ Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ qptrdiff(offsetof(qt_meta_stringdata_SectionNameIndexItem_t, stringdata0) + ofs \ - idx * sizeof(QByteArrayData)) \ ) static const qt_meta_stringdata_SectionNameIndexItem_t qt_meta_stringdata_SectionNameIndexItem = { { QT_MOC_LITERAL(0, 0, 20), // "SectionNameIndexItem" QT_MOC_LITERAL(1, 21, 15), // "section_changed" QT_MOC_LITERAL(2, 37, 0), // "" QT_MOC_LITERAL(3, 38, 12), // "name_changed" QT_MOC_LITERAL(4, 51, 7), // "section" QT_MOC_LITERAL(5, 59, 4), // "name" QT_MOC_LITERAL(6, 64, 5) // "index" }, "SectionNameIndexItem\0section_changed\0" "\0name_changed\0section\0name\0index" }; #undef QT_MOC_LITERAL static const uint qt_meta_data_SectionNameIndexItem[] = { // content: 7, // revision 0, // classname 0, 0, // classinfo 2, 14, // methods 3, 26, // properties 0, 0, // enums/sets 0, 0, // constructors 0, // flags 2, // signalCount // signals: name, argc, parameters, tag, flags 1, 0, 24, 2, 0x06 /* Public */, 3, 0, 25, 2, 0x06 /* Public */, // signals: parameters QMetaType::Void, QMetaType::Void, // properties: name, type, flags 4, QMetaType::QString, 0x00495003, 5, QMetaType::QString, 0x00495003, 6, QMetaType::Int, 0x00095003, // properties: notify_signal_id 0, 1, 0, 0 // eod }; void SectionNameIndexItem::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) { if (_c == QMetaObject::InvokeMetaMethod) { SectionNameIndexItem *_t = static_cast(_o); Q_UNUSED(_t) switch (_id) { case 0: _t->section_changed(); break; case 1: _t->name_changed(); break; default: ; } } else if (_c == QMetaObject::IndexOfMethod) { int *result = reinterpret_cast(_a[0]); void **func = reinterpret_cast(_a[1]); { typedef void (SectionNameIndexItem::*_t)(); if (*reinterpret_cast<_t *>(func) == static_cast<_t>(&SectionNameIndexItem::section_changed)) { *result = 0; return; } } { typedef void (SectionNameIndexItem::*_t)(); if (*reinterpret_cast<_t *>(func) == static_cast<_t>(&SectionNameIndexItem::name_changed)) { *result = 1; return; } } } #ifndef QT_NO_PROPERTIES else if (_c == QMetaObject::ReadProperty) { SectionNameIndexItem *_t = static_cast(_o); Q_UNUSED(_t) void *_v = _a[0]; switch (_id) { case 0: *reinterpret_cast< QString*>(_v) = _t->m_section; break; case 1: *reinterpret_cast< QString*>(_v) = _t->m_name; break; case 2: *reinterpret_cast< int*>(_v) = _t->m_index; break; default: break; } } else if (_c == QMetaObject::WriteProperty) { SectionNameIndexItem *_t = static_cast(_o); Q_UNUSED(_t) void *_v = _a[0]; switch (_id) { case 0: if (_t->m_section != *reinterpret_cast< QString*>(_v)) { _t->m_section = *reinterpret_cast< QString*>(_v); Q_EMIT _t->section_changed(); } break; case 1: if (_t->m_name != *reinterpret_cast< QString*>(_v)) { _t->m_name = *reinterpret_cast< QString*>(_v); Q_EMIT _t->name_changed(); } break; case 2: if (_t->m_index != *reinterpret_cast< int*>(_v)) { _t->m_index = *reinterpret_cast< int*>(_v); } break; default: break; } } else if (_c == QMetaObject::ResetProperty) { } #endif // QT_NO_PROPERTIES Q_UNUSED(_a); } const QMetaObject SectionNameIndexItem::staticMetaObject = { { &QObject::staticMetaObject, qt_meta_stringdata_SectionNameIndexItem.data, qt_meta_data_SectionNameIndexItem, qt_static_metacall, Q_NULLPTR, Q_NULLPTR} }; const QMetaObject *SectionNameIndexItem::metaObject() const { return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; } void *SectionNameIndexItem::qt_metacast(const char *_clname) { if (!_clname) return Q_NULLPTR; if (!strcmp(_clname, qt_meta_stringdata_SectionNameIndexItem.stringdata0)) return static_cast(const_cast< SectionNameIndexItem*>(this)); return QObject::qt_metacast(_clname); } int SectionNameIndexItem::qt_metacall(QMetaObject::Call _c, int _id, void **_a) { _id = QObject::qt_metacall(_c, _id, _a); if (_id < 0) return _id; if (_c == QMetaObject::InvokeMetaMethod) { if (_id < 2) qt_static_metacall(this, _c, _id, _a); _id -= 2; } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) { if (_id < 2) *reinterpret_cast(_a[0]) = -1; _id -= 2; } #ifndef QT_NO_PROPERTIES else if (_c == QMetaObject::ReadProperty || _c == QMetaObject::WriteProperty || _c == QMetaObject::ResetProperty || _c == QMetaObject::RegisterPropertyMetaType) { qt_static_metacall(this, _c, _id, _a); _id -= 3; } else if (_c == QMetaObject::QueryPropertyDesignable) { _id -= 3; } else if (_c == QMetaObject::QueryPropertyScriptable) { _id -= 3; } else if (_c == QMetaObject::QueryPropertyStored) { _id -= 3; } else if (_c == QMetaObject::QueryPropertyEditable) { _id -= 3; } else if (_c == QMetaObject::QueryPropertyUser) { _id -= 3; } #endif // QT_NO_PROPERTIES return _id; } // SIGNAL 0 void SectionNameIndexItem::section_changed() { QMetaObject::activate(this, &staticMetaObject, 0, Q_NULLPTR); } // SIGNAL 1 void SectionNameIndexItem::name_changed() { QMetaObject::activate(this, &staticMetaObject, 1, Q_NULLPTR); } struct qt_meta_stringdata_TextKeyItem_t { QByteArrayData data[6]; char stringdata0[47]; }; #define QT_MOC_LITERAL(idx, ofs, len) \ Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ qptrdiff(offsetof(qt_meta_stringdata_TextKeyItem_t, stringdata0) + ofs \ - idx * sizeof(QByteArrayData)) \ ) static const qt_meta_stringdata_TextKeyItem_t qt_meta_stringdata_TextKeyItem = { { QT_MOC_LITERAL(0, 0, 11), // "TextKeyItem" QT_MOC_LITERAL(1, 12, 12), // "text_changed" QT_MOC_LITERAL(2, 25, 0), // "" QT_MOC_LITERAL(3, 26, 11), // "key_changed" QT_MOC_LITERAL(4, 38, 4), // "text" QT_MOC_LITERAL(5, 43, 3) // "key" }, "TextKeyItem\0text_changed\0\0key_changed\0" "text\0key" }; #undef QT_MOC_LITERAL static const uint qt_meta_data_TextKeyItem[] = { // content: 7, // revision 0, // classname 0, 0, // classinfo 2, 14, // methods 2, 26, // properties 0, 0, // enums/sets 0, 0, // constructors 0, // flags 2, // signalCount // signals: name, argc, parameters, tag, flags 1, 0, 24, 2, 0x06 /* Public */, 3, 0, 25, 2, 0x06 /* Public */, // signals: parameters QMetaType::Void, QMetaType::Void, // properties: name, type, flags 4, QMetaType::QString, 0x00495003, 5, QMetaType::QString, 0x00495003, // properties: notify_signal_id 0, 1, 0 // eod }; void TextKeyItem::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) { if (_c == QMetaObject::InvokeMetaMethod) { TextKeyItem *_t = static_cast(_o); Q_UNUSED(_t) switch (_id) { case 0: _t->text_changed(); break; case 1: _t->key_changed(); break; default: ; } } else if (_c == QMetaObject::IndexOfMethod) { int *result = reinterpret_cast(_a[0]); void **func = reinterpret_cast(_a[1]); { typedef void (TextKeyItem::*_t)(); if (*reinterpret_cast<_t *>(func) == static_cast<_t>(&TextKeyItem::text_changed)) { *result = 0; return; } } { typedef void (TextKeyItem::*_t)(); if (*reinterpret_cast<_t *>(func) == static_cast<_t>(&TextKeyItem::key_changed)) { *result = 1; return; } } } #ifndef QT_NO_PROPERTIES else if (_c == QMetaObject::ReadProperty) { TextKeyItem *_t = static_cast(_o); Q_UNUSED(_t) void *_v = _a[0]; switch (_id) { case 0: *reinterpret_cast< QString*>(_v) = _t->m_text; break; case 1: *reinterpret_cast< QString*>(_v) = _t->m_key; break; default: break; } } else if (_c == QMetaObject::WriteProperty) { TextKeyItem *_t = static_cast(_o); Q_UNUSED(_t) void *_v = _a[0]; switch (_id) { case 0: if (_t->m_text != *reinterpret_cast< QString*>(_v)) { _t->m_text = *reinterpret_cast< QString*>(_v); Q_EMIT _t->text_changed(); } break; case 1: if (_t->m_key != *reinterpret_cast< QString*>(_v)) { _t->m_key = *reinterpret_cast< QString*>(_v); Q_EMIT _t->key_changed(); } break; default: break; } } else if (_c == QMetaObject::ResetProperty) { } #endif // QT_NO_PROPERTIES Q_UNUSED(_a); } const QMetaObject TextKeyItem::staticMetaObject = { { &QObject::staticMetaObject, qt_meta_stringdata_TextKeyItem.data, qt_meta_data_TextKeyItem, qt_static_metacall, Q_NULLPTR, Q_NULLPTR} }; const QMetaObject *TextKeyItem::metaObject() const { return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; } void *TextKeyItem::qt_metacast(const char *_clname) { if (!_clname) return Q_NULLPTR; if (!strcmp(_clname, qt_meta_stringdata_TextKeyItem.stringdata0)) return static_cast(const_cast< TextKeyItem*>(this)); return QObject::qt_metacast(_clname); } int TextKeyItem::qt_metacall(QMetaObject::Call _c, int _id, void **_a) { _id = QObject::qt_metacall(_c, _id, _a); if (_id < 0) return _id; if (_c == QMetaObject::InvokeMetaMethod) { if (_id < 2) qt_static_metacall(this, _c, _id, _a); _id -= 2; } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) { if (_id < 2) *reinterpret_cast(_a[0]) = -1; _id -= 2; } #ifndef QT_NO_PROPERTIES else if (_c == QMetaObject::ReadProperty || _c == QMetaObject::WriteProperty || _c == QMetaObject::ResetProperty || _c == QMetaObject::RegisterPropertyMetaType) { qt_static_metacall(this, _c, _id, _a); _id -= 2; } else if (_c == QMetaObject::QueryPropertyDesignable) { _id -= 2; } else if (_c == QMetaObject::QueryPropertyScriptable) { _id -= 2; } else if (_c == QMetaObject::QueryPropertyStored) { _id -= 2; } else if (_c == QMetaObject::QueryPropertyEditable) { _id -= 2; } else if (_c == QMetaObject::QueryPropertyUser) { _id -= 2; } #endif // QT_NO_PROPERTIES return _id; } // SIGNAL 0 void TextKeyItem::text_changed() { QMetaObject::activate(this, &staticMetaObject, 0, Q_NULLPTR); } // SIGNAL 1 void TextKeyItem::key_changed() { QMetaObject::activate(this, &staticMetaObject, 1, Q_NULLPTR); } struct qt_meta_stringdata_FacePrefsItem_t { QByteArrayData data[10]; char stringdata0[105]; }; #define QT_MOC_LITERAL(idx, ofs, len) \ Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ qptrdiff(offsetof(qt_meta_stringdata_FacePrefsItem_t, stringdata0) + ofs \ - idx * sizeof(QByteArrayData)) \ ) static const qt_meta_stringdata_FacePrefsItem_t qt_meta_stringdata_FacePrefsItem = { { QT_MOC_LITERAL(0, 0, 13), // "FacePrefsItem" QT_MOC_LITERAL(1, 14, 13), // "color_changed" QT_MOC_LITERAL(2, 28, 0), // "" QT_MOC_LITERAL(3, 29, 14), // "folder_changed" QT_MOC_LITERAL(4, 44, 13), // "image_changed" QT_MOC_LITERAL(5, 58, 17), // "imagemode_changed" QT_MOC_LITERAL(6, 76, 5), // "color" QT_MOC_LITERAL(7, 82, 6), // "folder" QT_MOC_LITERAL(8, 89, 5), // "image" QT_MOC_LITERAL(9, 95, 9) // "imagemode" }, "FacePrefsItem\0color_changed\0\0" "folder_changed\0image_changed\0" "imagemode_changed\0color\0folder\0image\0" "imagemode" }; #undef QT_MOC_LITERAL static const uint qt_meta_data_FacePrefsItem[] = { // content: 7, // revision 0, // classname 0, 0, // classinfo 4, 14, // methods 4, 38, // properties 0, 0, // enums/sets 0, 0, // constructors 0, // flags 4, // signalCount // signals: name, argc, parameters, tag, flags 1, 0, 34, 2, 0x06 /* Public */, 3, 0, 35, 2, 0x06 /* Public */, 4, 0, 36, 2, 0x06 /* Public */, 5, 0, 37, 2, 0x06 /* Public */, // signals: parameters QMetaType::Void, QMetaType::Void, QMetaType::Void, QMetaType::Void, // properties: name, type, flags 6, QMetaType::QString, 0x00495003, 7, QMetaType::QString, 0x00495003, 8, QMetaType::QString, 0x00495003, 9, QMetaType::QString, 0x00495003, // properties: notify_signal_id 0, 1, 2, 3, 0 // eod }; void FacePrefsItem::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) { if (_c == QMetaObject::InvokeMetaMethod) { FacePrefsItem *_t = static_cast(_o); Q_UNUSED(_t) switch (_id) { case 0: _t->color_changed(); break; case 1: _t->folder_changed(); break; case 2: _t->image_changed(); break; case 3: _t->imagemode_changed(); break; default: ; } } else if (_c == QMetaObject::IndexOfMethod) { int *result = reinterpret_cast(_a[0]); void **func = reinterpret_cast(_a[1]); { typedef void (FacePrefsItem::*_t)(); if (*reinterpret_cast<_t *>(func) == static_cast<_t>(&FacePrefsItem::color_changed)) { *result = 0; return; } } { typedef void (FacePrefsItem::*_t)(); if (*reinterpret_cast<_t *>(func) == static_cast<_t>(&FacePrefsItem::folder_changed)) { *result = 1; return; } } { typedef void (FacePrefsItem::*_t)(); if (*reinterpret_cast<_t *>(func) == static_cast<_t>(&FacePrefsItem::image_changed)) { *result = 2; return; } } { typedef void (FacePrefsItem::*_t)(); if (*reinterpret_cast<_t *>(func) == static_cast<_t>(&FacePrefsItem::imagemode_changed)) { *result = 3; return; } } } #ifndef QT_NO_PROPERTIES else if (_c == QMetaObject::ReadProperty) { FacePrefsItem *_t = static_cast(_o); Q_UNUSED(_t) void *_v = _a[0]; switch (_id) { case 0: *reinterpret_cast< QString*>(_v) = _t->m_color; break; case 1: *reinterpret_cast< QString*>(_v) = _t->m_folder; break; case 2: *reinterpret_cast< QString*>(_v) = _t->m_image; break; case 3: *reinterpret_cast< QString*>(_v) = _t->m_imagemode; break; default: break; } } else if (_c == QMetaObject::WriteProperty) { FacePrefsItem *_t = static_cast(_o); Q_UNUSED(_t) void *_v = _a[0]; switch (_id) { case 0: if (_t->m_color != *reinterpret_cast< QString*>(_v)) { _t->m_color = *reinterpret_cast< QString*>(_v); Q_EMIT _t->color_changed(); } break; case 1: if (_t->m_folder != *reinterpret_cast< QString*>(_v)) { _t->m_folder = *reinterpret_cast< QString*>(_v); Q_EMIT _t->folder_changed(); } break; case 2: if (_t->m_image != *reinterpret_cast< QString*>(_v)) { _t->m_image = *reinterpret_cast< QString*>(_v); Q_EMIT _t->image_changed(); } break; case 3: if (_t->m_imagemode != *reinterpret_cast< QString*>(_v)) { _t->m_imagemode = *reinterpret_cast< QString*>(_v); Q_EMIT _t->imagemode_changed(); } break; default: break; } } else if (_c == QMetaObject::ResetProperty) { } #endif // QT_NO_PROPERTIES Q_UNUSED(_a); } const QMetaObject FacePrefsItem::staticMetaObject = { { &QObject::staticMetaObject, qt_meta_stringdata_FacePrefsItem.data, qt_meta_data_FacePrefsItem, qt_static_metacall, Q_NULLPTR, Q_NULLPTR} }; const QMetaObject *FacePrefsItem::metaObject() const { return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; } void *FacePrefsItem::qt_metacast(const char *_clname) { if (!_clname) return Q_NULLPTR; if (!strcmp(_clname, qt_meta_stringdata_FacePrefsItem.stringdata0)) return static_cast(const_cast< FacePrefsItem*>(this)); return QObject::qt_metacast(_clname); } int FacePrefsItem::qt_metacall(QMetaObject::Call _c, int _id, void **_a) { _id = QObject::qt_metacall(_c, _id, _a); if (_id < 0) return _id; if (_c == QMetaObject::InvokeMetaMethod) { if (_id < 4) qt_static_metacall(this, _c, _id, _a); _id -= 4; } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) { if (_id < 4) *reinterpret_cast(_a[0]) = -1; _id -= 4; } #ifndef QT_NO_PROPERTIES else if (_c == QMetaObject::ReadProperty || _c == QMetaObject::WriteProperty || _c == QMetaObject::ResetProperty || _c == QMetaObject::RegisterPropertyMetaType) { qt_static_metacall(this, _c, _id, _a); _id -= 4; } else if (_c == QMetaObject::QueryPropertyDesignable) { _id -= 4; } else if (_c == QMetaObject::QueryPropertyScriptable) { _id -= 4; } else if (_c == QMetaObject::QueryPropertyStored) { _id -= 4; } else if (_c == QMetaObject::QueryPropertyEditable) { _id -= 4; } else if (_c == QMetaObject::QueryPropertyUser) { _id -= 4; } #endif // QT_NO_PROPERTIES return _id; } // SIGNAL 0 void FacePrefsItem::color_changed() { QMetaObject::activate(this, &staticMetaObject, 0, Q_NULLPTR); } // SIGNAL 1 void FacePrefsItem::folder_changed() { QMetaObject::activate(this, &staticMetaObject, 1, Q_NULLPTR); } // SIGNAL 2 void FacePrefsItem::image_changed() { QMetaObject::activate(this, &staticMetaObject, 2, Q_NULLPTR); } // SIGNAL 3 void FacePrefsItem::imagemode_changed() { QMetaObject::activate(this, &staticMetaObject, 3, Q_NULLPTR); } struct qt_meta_stringdata_MainView_t { QByteArrayData data[43]; char stringdata0[995]; }; #define QT_MOC_LITERAL(idx, ofs, len) \ Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ qptrdiff(offsetof(qt_meta_stringdata_MainView_t, stringdata0) + ofs \ - idx * sizeof(QByteArrayData)) \ ) static const qt_meta_stringdata_MainView_t qt_meta_stringdata_MainView = { { QT_MOC_LITERAL(0, 0, 8), // "MainView" QT_MOC_LITERAL(1, 9, 18), // "_on_picking_result" QT_MOC_LITERAL(2, 28, 0), // "" QT_MOC_LITERAL(3, 29, 5), // "index" QT_MOC_LITERAL(4, 35, 13), // "_on_debug_fps" QT_MOC_LITERAL(5, 49, 3), // "fps" QT_MOC_LITERAL(6, 53, 19), // "_on_offscreen_image" QT_MOC_LITERAL(7, 73, 5), // "image" QT_MOC_LITERAL(8, 79, 22), // "on_beforeSynchronizing" QT_MOC_LITERAL(9, 102, 24), // "on_sceneGraphInvalidated" QT_MOC_LITERAL(10, 127, 29), // "on_action_challenge_triggered" QT_MOC_LITERAL(11, 157, 30), // "on_action_new_solved_triggered" QT_MOC_LITERAL(12, 188, 31), // "on_action_preferences_triggered" QT_MOC_LITERAL(13, 220, 34), // "on_action_reset_rotation_trig..." QT_MOC_LITERAL(14, 255, 26), // "on_action_rewind_triggered" QT_MOC_LITERAL(15, 282, 28), // "on_action_previous_triggered" QT_MOC_LITERAL(16, 311, 24), // "on_action_stop_triggered" QT_MOC_LITERAL(17, 336, 24), // "on_action_play_triggered" QT_MOC_LITERAL(18, 361, 24), // "on_action_next_triggered" QT_MOC_LITERAL(19, 386, 27), // "on_action_forward_triggered" QT_MOC_LITERAL(20, 414, 28), // "on_action_mark_set_triggered" QT_MOC_LITERAL(21, 443, 31), // "on_action_mark_remove_triggered" QT_MOC_LITERAL(22, 475, 33), // "on_action_initial_state_trigg..." QT_MOC_LITERAL(23, 509, 29), // "on_action_edit_cube_triggered" QT_MOC_LITERAL(24, 539, 31), // "on_action_selectmodel_triggered" QT_MOC_LITERAL(25, 571, 36), // "on_action_selectmodel_back_tr..." QT_MOC_LITERAL(26, 608, 27), // "on_listwidget_itemActivated" QT_MOC_LITERAL(27, 636, 16), // "QListWidgetItem*" QT_MOC_LITERAL(28, 653, 4), // "item" QT_MOC_LITERAL(29, 658, 25), // "on_listwidget_itemClicked" QT_MOC_LITERAL(30, 684, 24), // "on_action_quit_triggered" QT_MOC_LITERAL(31, 709, 25), // "on_action_editbar_toggled" QT_MOC_LITERAL(32, 735, 7), // "checked" QT_MOC_LITERAL(33, 743, 27), // "on_action_statusbar_toggled" QT_MOC_LITERAL(34, 771, 24), // "on_action_help_triggered" QT_MOC_LITERAL(35, 796, 24), // "on_action_info_triggered" QT_MOC_LITERAL(36, 821, 25), // "on_splitter_splitterMoved" QT_MOC_LITERAL(37, 847, 3), // "pos" QT_MOC_LITERAL(38, 851, 28), // "on_button_edit_clear_clicked" QT_MOC_LITERAL(39, 880, 27), // "on_button_edit_exec_clicked" QT_MOC_LITERAL(40, 908, 35), // "on_action_jump_to_editbar_tri..." QT_MOC_LITERAL(41, 944, 27), // "_on_button_sidepane_clicked" QT_MOC_LITERAL(42, 972, 22) // "_on_treeview_activated" }, "MainView\0_on_picking_result\0\0index\0" "_on_debug_fps\0fps\0_on_offscreen_image\0" "image\0on_beforeSynchronizing\0" "on_sceneGraphInvalidated\0" "on_action_challenge_triggered\0" "on_action_new_solved_triggered\0" "on_action_preferences_triggered\0" "on_action_reset_rotation_triggered\0" "on_action_rewind_triggered\0" "on_action_previous_triggered\0" "on_action_stop_triggered\0" "on_action_play_triggered\0" "on_action_next_triggered\0" "on_action_forward_triggered\0" "on_action_mark_set_triggered\0" "on_action_mark_remove_triggered\0" "on_action_initial_state_triggered\0" "on_action_edit_cube_triggered\0" "on_action_selectmodel_triggered\0" "on_action_selectmodel_back_triggered\0" "on_listwidget_itemActivated\0" "QListWidgetItem*\0item\0on_listwidget_itemClicked\0" "on_action_quit_triggered\0" "on_action_editbar_toggled\0checked\0" "on_action_statusbar_toggled\0" "on_action_help_triggered\0" "on_action_info_triggered\0" "on_splitter_splitterMoved\0pos\0" "on_button_edit_clear_clicked\0" "on_button_edit_exec_clicked\0" "on_action_jump_to_editbar_triggered\0" "_on_button_sidepane_clicked\0" "_on_treeview_activated" }; #undef QT_MOC_LITERAL static const uint qt_meta_data_MainView[] = { // content: 7, // revision 0, // classname 0, 0, // classinfo 34, 14, // methods 0, 0, // properties 0, 0, // enums/sets 0, 0, // constructors 0, // flags 0, // signalCount // methods: name, argc, parameters, tag, flags 1, 1, 184, 2, 0x02 /* Public */, 4, 1, 187, 2, 0x02 /* Public */, 6, 1, 190, 2, 0x02 /* Public */, 8, 0, 193, 2, 0x02 /* Public */, 9, 0, 194, 2, 0x02 /* Public */, 10, 0, 195, 2, 0x02 /* Public */, 11, 0, 196, 2, 0x02 /* Public */, 12, 0, 197, 2, 0x02 /* Public */, 13, 0, 198, 2, 0x02 /* Public */, 14, 0, 199, 2, 0x02 /* Public */, 15, 0, 200, 2, 0x02 /* Public */, 16, 0, 201, 2, 0x02 /* Public */, 17, 0, 202, 2, 0x02 /* Public */, 18, 0, 203, 2, 0x02 /* Public */, 19, 0, 204, 2, 0x02 /* Public */, 20, 0, 205, 2, 0x02 /* Public */, 21, 0, 206, 2, 0x02 /* Public */, 22, 0, 207, 2, 0x02 /* Public */, 23, 0, 208, 2, 0x02 /* Public */, 24, 0, 209, 2, 0x02 /* Public */, 25, 0, 210, 2, 0x02 /* Public */, 26, 1, 211, 2, 0x02 /* Public */, 29, 1, 214, 2, 0x02 /* Public */, 30, 0, 217, 2, 0x02 /* Public */, 31, 1, 218, 2, 0x02 /* Public */, 33, 1, 221, 2, 0x02 /* Public */, 34, 0, 224, 2, 0x02 /* Public */, 35, 0, 225, 2, 0x02 /* Public */, 36, 2, 226, 2, 0x02 /* Public */, 38, 0, 231, 2, 0x02 /* Public */, 39, 0, 232, 2, 0x02 /* Public */, 40, 0, 233, 2, 0x02 /* Public */, 41, 0, 234, 2, 0x02 /* Public */, 42, 1, 235, 2, 0x02 /* Public */, // methods: parameters QMetaType::Void, QMetaType::Int, 3, QMetaType::Void, QMetaType::Int, 5, QMetaType::Void, QMetaType::QImage, 7, QMetaType::Void, QMetaType::Void, QMetaType::Void, QMetaType::Void, QMetaType::Void, QMetaType::Void, QMetaType::Void, QMetaType::Void, QMetaType::Void, QMetaType::Void, QMetaType::Void, QMetaType::Void, QMetaType::Void, QMetaType::Void, QMetaType::Void, QMetaType::Void, QMetaType::Void, QMetaType::Void, QMetaType::Void, 0x80000000 | 27, 28, QMetaType::Void, 0x80000000 | 27, 28, QMetaType::Void, QMetaType::Void, QMetaType::Bool, 32, QMetaType::Void, QMetaType::Bool, 32, QMetaType::Void, QMetaType::Void, QMetaType::Void, QMetaType::Int, QMetaType::Int, 37, 3, QMetaType::Void, QMetaType::Void, QMetaType::Void, QMetaType::Void, QMetaType::Void, QMetaType::QModelIndex, 3, 0 // eod }; void MainView::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) { if (_c == QMetaObject::InvokeMetaMethod) { MainView *_t = static_cast(_o); Q_UNUSED(_t) switch (_id) { case 0: _t->_on_picking_result((*reinterpret_cast< int(*)>(_a[1]))); break; case 1: _t->_on_debug_fps((*reinterpret_cast< int(*)>(_a[1]))); break; case 2: _t->_on_offscreen_image((*reinterpret_cast< QImage(*)>(_a[1]))); break; case 3: _t->on_beforeSynchronizing(); break; case 4: _t->on_sceneGraphInvalidated(); break; case 5: _t->on_action_challenge_triggered(); break; case 6: _t->on_action_new_solved_triggered(); break; case 7: _t->on_action_preferences_triggered(); break; case 8: _t->on_action_reset_rotation_triggered(); break; case 9: _t->on_action_rewind_triggered(); break; case 10: _t->on_action_previous_triggered(); break; case 11: _t->on_action_stop_triggered(); break; case 12: _t->on_action_play_triggered(); break; case 13: _t->on_action_next_triggered(); break; case 14: _t->on_action_forward_triggered(); break; case 15: _t->on_action_mark_set_triggered(); break; case 16: _t->on_action_mark_remove_triggered(); break; case 17: _t->on_action_initial_state_triggered(); break; case 18: _t->on_action_edit_cube_triggered(); break; case 19: _t->on_action_selectmodel_triggered(); break; case 20: _t->on_action_selectmodel_back_triggered(); break; case 21: _t->on_listwidget_itemActivated((*reinterpret_cast< QListWidgetItem*(*)>(_a[1]))); break; case 22: _t->on_listwidget_itemClicked((*reinterpret_cast< QListWidgetItem*(*)>(_a[1]))); break; case 23: _t->on_action_quit_triggered(); break; case 24: _t->on_action_editbar_toggled((*reinterpret_cast< bool(*)>(_a[1]))); break; case 25: _t->on_action_statusbar_toggled((*reinterpret_cast< bool(*)>(_a[1]))); break; case 26: _t->on_action_help_triggered(); break; case 27: _t->on_action_info_triggered(); break; case 28: _t->on_splitter_splitterMoved((*reinterpret_cast< int(*)>(_a[1])),(*reinterpret_cast< int(*)>(_a[2]))); break; case 29: _t->on_button_edit_clear_clicked(); break; case 30: _t->on_button_edit_exec_clicked(); break; case 31: _t->on_action_jump_to_editbar_triggered(); break; case 32: _t->_on_button_sidepane_clicked(); break; case 33: _t->_on_treeview_activated((*reinterpret_cast< const QModelIndex(*)>(_a[1]))); break; default: ; } } } const QMetaObject MainView::staticMetaObject = { { &QMainWindow::staticMetaObject, qt_meta_stringdata_MainView.data, qt_meta_data_MainView, qt_static_metacall, Q_NULLPTR, Q_NULLPTR} }; const QMetaObject *MainView::metaObject() const { return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; } void *MainView::qt_metacast(const char *_clname) { if (!_clname) return Q_NULLPTR; if (!strcmp(_clname, qt_meta_stringdata_MainView.stringdata0)) return static_cast(const_cast< MainView*>(this)); return QMainWindow::qt_metacast(_clname); } int MainView::qt_metacall(QMetaObject::Call _c, int _id, void **_a) { _id = QMainWindow::qt_metacall(_c, _id, _a); if (_id < 0) return _id; if (_c == QMetaObject::InvokeMetaMethod) { if (_id < 34) qt_static_metacall(this, _c, _id, _a); _id -= 34; } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) { if (_id < 34) *reinterpret_cast(_a[0]) = -1; _id -= 34; } return _id; } struct qt_meta_stringdata_MoveEdit_t { QByteArrayData data[3]; char stringdata0[27]; }; #define QT_MOC_LITERAL(idx, ofs, len) \ Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ qptrdiff(offsetof(qt_meta_stringdata_MoveEdit_t, stringdata0) + ofs \ - idx * sizeof(QByteArrayData)) \ ) static const qt_meta_stringdata_MoveEdit_t qt_meta_stringdata_MoveEdit = { { QT_MOC_LITERAL(0, 0, 8), // "MoveEdit" QT_MOC_LITERAL(1, 9, 16), // "on_returnpressed" QT_MOC_LITERAL(2, 26, 0) // "" }, "MoveEdit\0on_returnpressed\0" }; #undef QT_MOC_LITERAL static const uint qt_meta_data_MoveEdit[] = { // content: 7, // revision 0, // classname 0, 0, // classinfo 1, 14, // methods 0, 0, // properties 0, 0, // enums/sets 0, 0, // constructors 0, // flags 0, // signalCount // methods: name, argc, parameters, tag, flags 1, 0, 19, 2, 0x02 /* Public */, // methods: parameters QMetaType::Void, 0 // eod }; void MoveEdit::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) { if (_c == QMetaObject::InvokeMetaMethod) { MoveEdit *_t = static_cast(_o); Q_UNUSED(_t) switch (_id) { case 0: _t->on_returnpressed(); break; default: ; } } Q_UNUSED(_a); } const QMetaObject MoveEdit::staticMetaObject = { { &QLineEdit::staticMetaObject, qt_meta_stringdata_MoveEdit.data, qt_meta_data_MoveEdit, qt_static_metacall, Q_NULLPTR, Q_NULLPTR} }; const QMetaObject *MoveEdit::metaObject() const { return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; } void *MoveEdit::qt_metacast(const char *_clname) { if (!_clname) return Q_NULLPTR; if (!strcmp(_clname, qt_meta_stringdata_MoveEdit.stringdata0)) return static_cast(const_cast< MoveEdit*>(this)); return QLineEdit::qt_metacast(_clname); } int MoveEdit::qt_metacall(QMetaObject::Call _c, int _id, void **_a) { _id = QLineEdit::qt_metacall(_c, _id, _a); if (_id < 0) return _id; if (_c == QMetaObject::InvokeMetaMethod) { if (_id < 1) qt_static_metacall(this, _c, _id, _a); _id -= 1; } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) { if (_id < 1) *reinterpret_cast(_a[0]) = -1; _id -= 1; } return _id; } struct qt_meta_stringdata_DrawingArea_t { QByteArrayData data[1]; char stringdata0[12]; }; #define QT_MOC_LITERAL(idx, ofs, len) \ Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ qptrdiff(offsetof(qt_meta_stringdata_DrawingArea_t, stringdata0) + ofs \ - idx * sizeof(QByteArrayData)) \ ) static const qt_meta_stringdata_DrawingArea_t qt_meta_stringdata_DrawingArea = { { QT_MOC_LITERAL(0, 0, 11) // "DrawingArea" }, "DrawingArea" }; #undef QT_MOC_LITERAL static const uint qt_meta_data_DrawingArea[] = { // content: 7, // revision 0, // classname 0, 0, // classinfo 0, 0, // methods 0, 0, // properties 0, 0, // enums/sets 0, 0, // constructors 0, // flags 0, // signalCount 0 // eod }; void DrawingArea::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) { Q_UNUSED(_o); Q_UNUSED(_id); Q_UNUSED(_c); Q_UNUSED(_a); } const QMetaObject DrawingArea::staticMetaObject = { { &QOpenGLWidget::staticMetaObject, qt_meta_stringdata_DrawingArea.data, qt_meta_data_DrawingArea, qt_static_metacall, Q_NULLPTR, Q_NULLPTR} }; const QMetaObject *DrawingArea::metaObject() const { return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; } void *DrawingArea::qt_metacast(const char *_clname) { if (!_clname) return Q_NULLPTR; if (!strcmp(_clname, qt_meta_stringdata_DrawingArea.stringdata0)) return static_cast(const_cast< DrawingArea*>(this)); return QOpenGLWidget::qt_metacast(_clname); } int DrawingArea::qt_metacall(QMetaObject::Call _c, int _id, void **_a) { _id = QOpenGLWidget::qt_metacall(_c, _id, _a); if (_id < 0) return _id; return _id; } struct qt_meta_stringdata_PreferencesDialog_t { QByteArrayData data[33]; char stringdata0[909]; }; #define QT_MOC_LITERAL(idx, ofs, len) \ Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ qptrdiff(offsetof(qt_meta_stringdata_PreferencesDialog_t, stringdata0) + ofs \ - idx * sizeof(QByteArrayData)) \ ) static const qt_meta_stringdata_PreferencesDialog_t qt_meta_stringdata_PreferencesDialog = { { QT_MOC_LITERAL(0, 0, 17), // "PreferencesDialog" QT_MOC_LITERAL(1, 18, 32), // "on_slider_animspeed_valueChanged" QT_MOC_LITERAL(2, 51, 0), // "" QT_MOC_LITERAL(3, 52, 5), // "value" QT_MOC_LITERAL(4, 58, 33), // "on_button_animspeed_reset_cli..." QT_MOC_LITERAL(5, 92, 38), // "on_combobox_shader_currentInd..." QT_MOC_LITERAL(6, 131, 30), // "on_button_shader_reset_clicked" QT_MOC_LITERAL(7, 162, 39), // "on_combobox_samples_currentIn..." QT_MOC_LITERAL(8, 202, 36), // "on_button_antialiasing_reset_..." QT_MOC_LITERAL(9, 239, 32), // "on_checkbox_mirror_faces_toggled" QT_MOC_LITERAL(10, 272, 7), // "checked" QT_MOC_LITERAL(11, 280, 36), // "on_spinbox_mirror_faces_value..." QT_MOC_LITERAL(12, 317, 36), // "on_button_mirror_faces_reset_..." QT_MOC_LITERAL(13, 354, 32), // "on_button_mousemode_quad_toggled" QT_MOC_LITERAL(14, 387, 31), // "on_button_mousemode_ext_toggled" QT_MOC_LITERAL(15, 419, 35), // "on_button_mousemode_gesture_t..." QT_MOC_LITERAL(16, 455, 33), // "on_liststore_movekeys_itemCha..." QT_MOC_LITERAL(17, 489, 14), // "QStandardItem*" QT_MOC_LITERAL(18, 504, 11), // "unused_item" QT_MOC_LITERAL(19, 516, 29), // "on_button_movekey_add_clicked" QT_MOC_LITERAL(20, 546, 32), // "on_button_movekey_remove_clicked" QT_MOC_LITERAL(21, 579, 31), // "on_button_movekey_reset_clicked" QT_MOC_LITERAL(22, 611, 36), // "_on_listview_faces_currentRow..." QT_MOC_LITERAL(23, 648, 7), // "current" QT_MOC_LITERAL(24, 656, 23), // "on_button_color_clicked" QT_MOC_LITERAL(25, 680, 29), // "on_button_color_reset_clicked" QT_MOC_LITERAL(26, 710, 27), // "on_combobox_image_activated" QT_MOC_LITERAL(27, 738, 5), // "index" QT_MOC_LITERAL(28, 744, 29), // "on_button_image_reset_clicked" QT_MOC_LITERAL(29, 774, 28), // "on_radiobutton_tiled_toggled" QT_MOC_LITERAL(30, 803, 29), // "on_radiobutton_mosaic_toggled" QT_MOC_LITERAL(31, 833, 34), // "on_button_background_color_cl..." QT_MOC_LITERAL(32, 868, 40) // "on_button_background_color_re..." }, "PreferencesDialog\0on_slider_animspeed_valueChanged\0" "\0value\0on_button_animspeed_reset_clicked\0" "on_combobox_shader_currentIndexChanged\0" "on_button_shader_reset_clicked\0" "on_combobox_samples_currentIndexChanged\0" "on_button_antialiasing_reset_clicked\0" "on_checkbox_mirror_faces_toggled\0" "checked\0on_spinbox_mirror_faces_valueChanged\0" "on_button_mirror_faces_reset_clicked\0" "on_button_mousemode_quad_toggled\0" "on_button_mousemode_ext_toggled\0" "on_button_mousemode_gesture_toggled\0" "on_liststore_movekeys_itemChanged\0" "QStandardItem*\0unused_item\0" "on_button_movekey_add_clicked\0" "on_button_movekey_remove_clicked\0" "on_button_movekey_reset_clicked\0" "_on_listview_faces_currentRowChanged\0" "current\0on_button_color_clicked\0" "on_button_color_reset_clicked\0" "on_combobox_image_activated\0index\0" "on_button_image_reset_clicked\0" "on_radiobutton_tiled_toggled\0" "on_radiobutton_mosaic_toggled\0" "on_button_background_color_clicked\0" "on_button_background_color_reset_clicked" }; #undef QT_MOC_LITERAL static const uint qt_meta_data_PreferencesDialog[] = { // content: 7, // revision 0, // classname 0, 0, // classinfo 25, 14, // methods 0, 0, // properties 0, 0, // enums/sets 0, 0, // constructors 0, // flags 0, // signalCount // methods: name, argc, parameters, tag, flags 1, 1, 139, 2, 0x02 /* Public */, 4, 0, 142, 2, 0x02 /* Public */, 5, 1, 143, 2, 0x02 /* Public */, 6, 0, 146, 2, 0x02 /* Public */, 7, 1, 147, 2, 0x02 /* Public */, 8, 0, 150, 2, 0x02 /* Public */, 9, 1, 151, 2, 0x02 /* Public */, 11, 1, 154, 2, 0x02 /* Public */, 12, 0, 157, 2, 0x02 /* Public */, 13, 1, 158, 2, 0x02 /* Public */, 14, 1, 161, 2, 0x02 /* Public */, 15, 1, 164, 2, 0x02 /* Public */, 16, 1, 167, 2, 0x02 /* Public */, 19, 0, 170, 2, 0x02 /* Public */, 20, 0, 171, 2, 0x02 /* Public */, 21, 0, 172, 2, 0x02 /* Public */, 22, 1, 173, 2, 0x02 /* Public */, 24, 0, 176, 2, 0x02 /* Public */, 25, 0, 177, 2, 0x02 /* Public */, 26, 1, 178, 2, 0x02 /* Public */, 28, 0, 181, 2, 0x02 /* Public */, 29, 1, 182, 2, 0x02 /* Public */, 30, 1, 185, 2, 0x02 /* Public */, 31, 0, 188, 2, 0x02 /* Public */, 32, 0, 189, 2, 0x02 /* Public */, // methods: parameters QMetaType::Void, QMetaType::Int, 3, QMetaType::Void, QMetaType::Void, QMetaType::Int, 3, QMetaType::Void, QMetaType::Void, QMetaType::Int, 3, QMetaType::Void, QMetaType::Void, QMetaType::Bool, 10, QMetaType::Void, QMetaType::Double, 3, QMetaType::Void, QMetaType::Void, QMetaType::Bool, 10, QMetaType::Void, QMetaType::Bool, 10, QMetaType::Void, QMetaType::Bool, 10, QMetaType::Void, 0x80000000 | 17, 18, QMetaType::Void, QMetaType::Void, QMetaType::Void, QMetaType::Void, QMetaType::QModelIndex, 23, QMetaType::Void, QMetaType::Void, QMetaType::Void, QMetaType::Int, 27, QMetaType::Void, QMetaType::Void, QMetaType::Bool, 10, QMetaType::Void, QMetaType::Bool, 10, QMetaType::Void, QMetaType::Void, 0 // eod }; void PreferencesDialog::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) { if (_c == QMetaObject::InvokeMetaMethod) { PreferencesDialog *_t = static_cast(_o); Q_UNUSED(_t) switch (_id) { case 0: _t->on_slider_animspeed_valueChanged((*reinterpret_cast< int(*)>(_a[1]))); break; case 1: _t->on_button_animspeed_reset_clicked(); break; case 2: _t->on_combobox_shader_currentIndexChanged((*reinterpret_cast< int(*)>(_a[1]))); break; case 3: _t->on_button_shader_reset_clicked(); break; case 4: _t->on_combobox_samples_currentIndexChanged((*reinterpret_cast< int(*)>(_a[1]))); break; case 5: _t->on_button_antialiasing_reset_clicked(); break; case 6: _t->on_checkbox_mirror_faces_toggled((*reinterpret_cast< bool(*)>(_a[1]))); break; case 7: _t->on_spinbox_mirror_faces_valueChanged((*reinterpret_cast< double(*)>(_a[1]))); break; case 8: _t->on_button_mirror_faces_reset_clicked(); break; case 9: _t->on_button_mousemode_quad_toggled((*reinterpret_cast< bool(*)>(_a[1]))); break; case 10: _t->on_button_mousemode_ext_toggled((*reinterpret_cast< bool(*)>(_a[1]))); break; case 11: _t->on_button_mousemode_gesture_toggled((*reinterpret_cast< bool(*)>(_a[1]))); break; case 12: _t->on_liststore_movekeys_itemChanged((*reinterpret_cast< QStandardItem*(*)>(_a[1]))); break; case 13: _t->on_button_movekey_add_clicked(); break; case 14: _t->on_button_movekey_remove_clicked(); break; case 15: _t->on_button_movekey_reset_clicked(); break; case 16: _t->_on_listview_faces_currentRowChanged((*reinterpret_cast< const QModelIndex(*)>(_a[1]))); break; case 17: _t->on_button_color_clicked(); break; case 18: _t->on_button_color_reset_clicked(); break; case 19: _t->on_combobox_image_activated((*reinterpret_cast< int(*)>(_a[1]))); break; case 20: _t->on_button_image_reset_clicked(); break; case 21: _t->on_radiobutton_tiled_toggled((*reinterpret_cast< bool(*)>(_a[1]))); break; case 22: _t->on_radiobutton_mosaic_toggled((*reinterpret_cast< bool(*)>(_a[1]))); break; case 23: _t->on_button_background_color_clicked(); break; case 24: _t->on_button_background_color_reset_clicked(); break; default: ; } } } const QMetaObject PreferencesDialog::staticMetaObject = { { &QDialog::staticMetaObject, qt_meta_stringdata_PreferencesDialog.data, qt_meta_data_PreferencesDialog, qt_static_metacall, Q_NULLPTR, Q_NULLPTR} }; const QMetaObject *PreferencesDialog::metaObject() const { return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; } void *PreferencesDialog::qt_metacast(const char *_clname) { if (!_clname) return Q_NULLPTR; if (!strcmp(_clname, qt_meta_stringdata_PreferencesDialog.stringdata0)) return static_cast(const_cast< PreferencesDialog*>(this)); return QDialog::qt_metacast(_clname); } int PreferencesDialog::qt_metacall(QMetaObject::Call _c, int _id, void **_a) { _id = QDialog::qt_metacall(_c, _id, _a); if (_id < 0) return _id; if (_c == QMetaObject::InvokeMetaMethod) { if (_id < 25) qt_static_metacall(this, _c, _id, _a); _id -= 25; } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) { if (_id < 25) *reinterpret_cast(_a[0]) = -1; _id -= 25; } return _id; } struct qt_meta_stringdata_HelpDialog_t { QByteArrayData data[1]; char stringdata0[11]; }; #define QT_MOC_LITERAL(idx, ofs, len) \ Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ qptrdiff(offsetof(qt_meta_stringdata_HelpDialog_t, stringdata0) + ofs \ - idx * sizeof(QByteArrayData)) \ ) static const qt_meta_stringdata_HelpDialog_t qt_meta_stringdata_HelpDialog = { { QT_MOC_LITERAL(0, 0, 10) // "HelpDialog" }, "HelpDialog" }; #undef QT_MOC_LITERAL static const uint qt_meta_data_HelpDialog[] = { // content: 7, // revision 0, // classname 0, 0, // classinfo 0, 0, // methods 0, 0, // properties 0, 0, // enums/sets 0, 0, // constructors 0, // flags 0, // signalCount 0 // eod }; void HelpDialog::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) { Q_UNUSED(_o); Q_UNUSED(_id); Q_UNUSED(_c); Q_UNUSED(_a); } const QMetaObject HelpDialog::staticMetaObject = { { &QDialog::staticMetaObject, qt_meta_stringdata_HelpDialog.data, qt_meta_data_HelpDialog, qt_static_metacall, Q_NULLPTR, Q_NULLPTR} }; const QMetaObject *HelpDialog::metaObject() const { return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; } void *HelpDialog::qt_metacast(const char *_clname) { if (!_clname) return Q_NULLPTR; if (!strcmp(_clname, qt_meta_stringdata_HelpDialog.stringdata0)) return static_cast(const_cast< HelpDialog*>(this)); return QDialog::qt_metacast(_clname); } int HelpDialog::qt_metacall(QMetaObject::Call _c, int _id, void **_a) { _id = QDialog::qt_metacall(_c, _id, _a); if (_id < 0) return _id; return _id; } struct qt_meta_stringdata_AboutDialog_t { QByteArrayData data[8]; char stringdata0[127]; }; #define QT_MOC_LITERAL(idx, ofs, len) \ Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \ qptrdiff(offsetof(qt_meta_stringdata_AboutDialog_t, stringdata0) + ofs \ - idx * sizeof(QByteArrayData)) \ ) static const qt_meta_stringdata_AboutDialog_t qt_meta_stringdata_AboutDialog = { { QT_MOC_LITERAL(0, 0, 11), // "AboutDialog" QT_MOC_LITERAL(1, 12, 33), // "on_text_translators_anchorCli..." QT_MOC_LITERAL(2, 46, 0), // "" QT_MOC_LITERAL(3, 47, 4), // "link" QT_MOC_LITERAL(4, 52, 28), // "on_tab_widget_currentChanged" QT_MOC_LITERAL(5, 81, 5), // "index" QT_MOC_LITERAL(6, 87, 35), // "on_text_license_short_anchorC..." QT_MOC_LITERAL(7, 123, 3) // "url" }, "AboutDialog\0on_text_translators_anchorClicked\0" "\0link\0on_tab_widget_currentChanged\0" "index\0on_text_license_short_anchorClicked\0" "url" }; #undef QT_MOC_LITERAL static const uint qt_meta_data_AboutDialog[] = { // content: 7, // revision 0, // classname 0, 0, // classinfo 3, 14, // methods 0, 0, // properties 0, 0, // enums/sets 0, 0, // constructors 0, // flags 0, // signalCount // methods: name, argc, parameters, tag, flags 1, 1, 29, 2, 0x02 /* Public */, 4, 1, 32, 2, 0x02 /* Public */, 6, 1, 35, 2, 0x02 /* Public */, // methods: parameters QMetaType::Void, QMetaType::QUrl, 3, QMetaType::Void, QMetaType::Int, 5, QMetaType::Void, QMetaType::QUrl, 7, 0 // eod }; void AboutDialog::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a) { if (_c == QMetaObject::InvokeMetaMethod) { AboutDialog *_t = static_cast(_o); Q_UNUSED(_t) switch (_id) { case 0: _t->on_text_translators_anchorClicked((*reinterpret_cast< const QUrl(*)>(_a[1]))); break; case 1: _t->on_tab_widget_currentChanged((*reinterpret_cast< int(*)>(_a[1]))); break; case 2: _t->on_text_license_short_anchorClicked((*reinterpret_cast< const QUrl(*)>(_a[1]))); break; default: ; } } } const QMetaObject AboutDialog::staticMetaObject = { { &QDialog::staticMetaObject, qt_meta_stringdata_AboutDialog.data, qt_meta_data_AboutDialog, qt_static_metacall, Q_NULLPTR, Q_NULLPTR} }; const QMetaObject *AboutDialog::metaObject() const { return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject; } void *AboutDialog::qt_metacast(const char *_clname) { if (!_clname) return Q_NULLPTR; if (!strcmp(_clname, qt_meta_stringdata_AboutDialog.stringdata0)) return static_cast(const_cast< AboutDialog*>(this)); return QDialog::qt_metacast(_clname); } int AboutDialog::qt_metacall(QMetaObject::Call _c, int _id, void **_a) { _id = QDialog::qt_metacall(_c, _id, _a); if (_id < 0) return _id; if (_c == QMetaObject::InvokeMetaMethod) { if (_id < 3) qt_static_metacall(this, _c, _id, _a); _id -= 3; } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) { if (_id < 3) *reinterpret_cast(_a[0]) = -1; _id -= 3; } return _id; } QT_END_MOC_NAMESPACE pybik-3.0/csrc/help.h0000644000175000017500000000342413173054541014701 0ustar barccbarcc00000000000000/******************************************************************************** ** Form generated from reading UI file 'help.ui' ** ** Created by: Qt User Interface Compiler version 5.7.1 ** ** WARNING! All changes made in this file will be lost when recompiling UI file! ********************************************************************************/ #ifndef HELP_H #define HELP_H #include #include #include #include #include #include #include #include QT_BEGIN_NAMESPACE class Ui_DialogHelp { public: QVBoxLayout *verticalLayout; QTextBrowser *text_help; void setupUi(QDialog *DialogHelp) { if (DialogHelp->objectName().isEmpty()) DialogHelp->setObjectName(QStringLiteral("DialogHelp")); DialogHelp->resize(380, 500); DialogHelp->setMinimumSize(QSize(200, 200)); verticalLayout = new QVBoxLayout(DialogHelp); verticalLayout->setObjectName(QStringLiteral("verticalLayout")); verticalLayout->setContentsMargins(2, 2, 2, 2); text_help = new QTextBrowser(DialogHelp); text_help->setObjectName(QStringLiteral("text_help")); text_help->setAcceptRichText(false); text_help->setOpenLinks(false); verticalLayout->addWidget(text_help); retranslateUi(DialogHelp); QMetaObject::connectSlotsByName(DialogHelp); } // setupUi void retranslateUi(QDialog *DialogHelp) { DialogHelp->setWindowTitle(gettext_translate("Help", Q_NULLPTR)); } // retranslateUi }; namespace Ui { class DialogHelp: public Ui_DialogHelp {}; } // namespace Ui QT_END_NAMESPACE #endif // HELP_H pybik-3.0/csrc/preferences.h0000644000175000017500000004246413173054541016261 0ustar barccbarcc00000000000000/******************************************************************************** ** Form generated from reading UI file 'preferences.ui' ** ** Created by: Qt User Interface Compiler version 5.7.1 ** ** WARNING! All changes made in this file will be lost when recompiling UI file! ********************************************************************************/ #ifndef PREFERENCES_H #define PREFERENCES_H #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include QT_BEGIN_NAMESPACE class Ui_DialogPreferences { public: QVBoxLayout *verticalLayout; QTabWidget *tabWidget; QWidget *tab_1; QGridLayout *gridLayout; QLabel *label; QSlider *slider_animspeed; QPushButton *button_animspeed_reset; QCheckBox *checkbox_mirror_faces; QDoubleSpinBox *spinbox_mirror_faces; QPushButton *button_mirror_faces_reset; QFrame *line; QLabel *label_6; QComboBox *combobox_shader; QPushButton *button_shader_reset; QLabel *label_2; QComboBox *combobox_samples; QPushButton *button_antialiasing_reset; QLabel *label_needs_restarted; QSpacerItem *verticalSpacer; QWidget *tab_2; QGridLayout *gridLayout_2; QRadioButton *button_mousemode_quad; QRadioButton *button_mousemode_ext; QRadioButton *button_mousemode_gesture; QSpacerItem *verticalSpacer2; QWidget *tab_3; QVBoxLayout *verticalLayout_2; QTreeView *listview_movekeys; QHBoxLayout *horizontalLayout; QSpacerItem *horizontalSpacer; QToolButton *button_movekey_add; QToolButton *button_movekey_remove; QToolButton *button_movekey_reset; QWidget *tab_4; QGridLayout *gridLayout_3; QListView *listview_faces; QLabel *label_5; QPushButton *button_color; QPushButton *button_color_reset; QLabel *label_7; QComboBox *combobox_image; QPushButton *button_image_reset; QRadioButton *radiobutton_tiled; QRadioButton *radiobutton_mosaic; QLabel *label_8; QPushButton *button_background_color; QPushButton *button_background_color_reset; QSpacerItem *verticalSpacer_2; QDialogButtonBox *buttonBox; void setupUi(QDialog *DialogPreferences) { if (DialogPreferences->objectName().isEmpty()) DialogPreferences->setObjectName(QStringLiteral("DialogPreferences")); verticalLayout = new QVBoxLayout(DialogPreferences); verticalLayout->setObjectName(QStringLiteral("verticalLayout")); tabWidget = new QTabWidget(DialogPreferences); tabWidget->setObjectName(QStringLiteral("tabWidget")); tab_1 = new QWidget(); tab_1->setObjectName(QStringLiteral("tab_1")); gridLayout = new QGridLayout(tab_1); gridLayout->setObjectName(QStringLiteral("gridLayout")); label = new QLabel(tab_1); label->setObjectName(QStringLiteral("label")); gridLayout->addWidget(label, 0, 0, 1, 1); slider_animspeed = new QSlider(tab_1); slider_animspeed->setObjectName(QStringLiteral("slider_animspeed")); slider_animspeed->setMinimum(1); slider_animspeed->setMaximum(100); slider_animspeed->setOrientation(Qt::Horizontal); slider_animspeed->setTickPosition(QSlider::TicksBelow); slider_animspeed->setTickInterval(0); gridLayout->addWidget(slider_animspeed, 1, 0, 1, 2); button_animspeed_reset = new QPushButton(tab_1); button_animspeed_reset->setObjectName(QStringLiteral("button_animspeed_reset")); gridLayout->addWidget(button_animspeed_reset, 1, 2, 1, 1); checkbox_mirror_faces = new QCheckBox(tab_1); checkbox_mirror_faces->setObjectName(QStringLiteral("checkbox_mirror_faces")); checkbox_mirror_faces->setChecked(false); gridLayout->addWidget(checkbox_mirror_faces, 2, 0, 1, 1); spinbox_mirror_faces = new QDoubleSpinBox(tab_1); spinbox_mirror_faces->setObjectName(QStringLiteral("spinbox_mirror_faces")); spinbox_mirror_faces->setEnabled(false); QSizePolicy sizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); sizePolicy.setHorizontalStretch(0); sizePolicy.setVerticalStretch(0); sizePolicy.setHeightForWidth(spinbox_mirror_faces->sizePolicy().hasHeightForWidth()); spinbox_mirror_faces->setSizePolicy(sizePolicy); spinbox_mirror_faces->setSingleStep(0.1); gridLayout->addWidget(spinbox_mirror_faces, 2, 1, 1, 1); button_mirror_faces_reset = new QPushButton(tab_1); button_mirror_faces_reset->setObjectName(QStringLiteral("button_mirror_faces_reset")); gridLayout->addWidget(button_mirror_faces_reset, 2, 2, 1, 1); line = new QFrame(tab_1); line->setObjectName(QStringLiteral("line")); line->setFrameShape(QFrame::HLine); line->setFrameShadow(QFrame::Sunken); gridLayout->addWidget(line, 3, 0, 1, 3); label_6 = new QLabel(tab_1); label_6->setObjectName(QStringLiteral("label_6")); gridLayout->addWidget(label_6, 4, 0, 1, 1); combobox_shader = new QComboBox(tab_1); combobox_shader->setObjectName(QStringLiteral("combobox_shader")); gridLayout->addWidget(combobox_shader, 4, 1, 1, 1); button_shader_reset = new QPushButton(tab_1); button_shader_reset->setObjectName(QStringLiteral("button_shader_reset")); gridLayout->addWidget(button_shader_reset, 4, 2, 1, 1); label_2 = new QLabel(tab_1); label_2->setObjectName(QStringLiteral("label_2")); gridLayout->addWidget(label_2, 5, 0, 1, 1); combobox_samples = new QComboBox(tab_1); combobox_samples->setObjectName(QStringLiteral("combobox_samples")); gridLayout->addWidget(combobox_samples, 5, 1, 1, 1); button_antialiasing_reset = new QPushButton(tab_1); button_antialiasing_reset->setObjectName(QStringLiteral("button_antialiasing_reset")); gridLayout->addWidget(button_antialiasing_reset, 5, 2, 1, 1); label_needs_restarted = new QLabel(tab_1); label_needs_restarted->setObjectName(QStringLiteral("label_needs_restarted")); label_needs_restarted->setTextFormat(Qt::PlainText); label_needs_restarted->setWordWrap(true); gridLayout->addWidget(label_needs_restarted, 6, 0, 1, 3); verticalSpacer = new QSpacerItem(20, 108, QSizePolicy::Minimum, QSizePolicy::Expanding); gridLayout->addItem(verticalSpacer, 7, 0, 1, 1); tabWidget->addTab(tab_1, QString()); tab_2 = new QWidget(); tab_2->setObjectName(QStringLiteral("tab_2")); gridLayout_2 = new QGridLayout(tab_2); gridLayout_2->setObjectName(QStringLiteral("gridLayout_2")); button_mousemode_quad = new QRadioButton(tab_2); button_mousemode_quad->setObjectName(QStringLiteral("button_mousemode_quad")); gridLayout_2->addWidget(button_mousemode_quad, 0, 0, 1, 1); button_mousemode_ext = new QRadioButton(tab_2); button_mousemode_ext->setObjectName(QStringLiteral("button_mousemode_ext")); gridLayout_2->addWidget(button_mousemode_ext, 1, 0, 1, 1); button_mousemode_gesture = new QRadioButton(tab_2); button_mousemode_gesture->setObjectName(QStringLiteral("button_mousemode_gesture")); gridLayout_2->addWidget(button_mousemode_gesture, 2, 0, 1, 1); verticalSpacer2 = new QSpacerItem(0, 0, QSizePolicy::Minimum, QSizePolicy::Expanding); gridLayout_2->addItem(verticalSpacer2, 3, 0, 1, 1); tabWidget->addTab(tab_2, QString()); tab_3 = new QWidget(); tab_3->setObjectName(QStringLiteral("tab_3")); verticalLayout_2 = new QVBoxLayout(tab_3); verticalLayout_2->setObjectName(QStringLiteral("verticalLayout_2")); listview_movekeys = new QTreeView(tab_3); listview_movekeys->setObjectName(QStringLiteral("listview_movekeys")); listview_movekeys->setUniformRowHeights(true); verticalLayout_2->addWidget(listview_movekeys); horizontalLayout = new QHBoxLayout(); horizontalLayout->setObjectName(QStringLiteral("horizontalLayout")); horizontalSpacer = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum); horizontalLayout->addItem(horizontalSpacer); button_movekey_add = new QToolButton(tab_3); button_movekey_add->setObjectName(QStringLiteral("button_movekey_add")); button_movekey_add->setToolButtonStyle(Qt::ToolButtonIconOnly); horizontalLayout->addWidget(button_movekey_add); button_movekey_remove = new QToolButton(tab_3); button_movekey_remove->setObjectName(QStringLiteral("button_movekey_remove")); button_movekey_remove->setToolButtonStyle(Qt::ToolButtonIconOnly); horizontalLayout->addWidget(button_movekey_remove); button_movekey_reset = new QToolButton(tab_3); button_movekey_reset->setObjectName(QStringLiteral("button_movekey_reset")); button_movekey_reset->setToolButtonStyle(Qt::ToolButtonIconOnly); horizontalLayout->addWidget(button_movekey_reset); verticalLayout_2->addLayout(horizontalLayout); tabWidget->addTab(tab_3, QString()); tab_4 = new QWidget(); tab_4->setObjectName(QStringLiteral("tab_4")); gridLayout_3 = new QGridLayout(tab_4); gridLayout_3->setObjectName(QStringLiteral("gridLayout_3")); listview_faces = new QListView(tab_4); listview_faces->setObjectName(QStringLiteral("listview_faces")); QSizePolicy sizePolicy1(QSizePolicy::Fixed, QSizePolicy::Expanding); sizePolicy1.setHorizontalStretch(0); sizePolicy1.setVerticalStretch(0); sizePolicy1.setHeightForWidth(listview_faces->sizePolicy().hasHeightForWidth()); listview_faces->setSizePolicy(sizePolicy1); listview_faces->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); listview_faces->setEditTriggers(QAbstractItemView::NoEditTriggers); listview_faces->setTextElideMode(Qt::ElideNone); listview_faces->setUniformItemSizes(true); gridLayout_3->addWidget(listview_faces, 0, 0, 5, 1); label_5 = new QLabel(tab_4); label_5->setObjectName(QStringLiteral("label_5")); gridLayout_3->addWidget(label_5, 0, 1, 1, 1); button_color = new QPushButton(tab_4); button_color->setObjectName(QStringLiteral("button_color")); sizePolicy.setHeightForWidth(button_color->sizePolicy().hasHeightForWidth()); button_color->setSizePolicy(sizePolicy); button_color->setText(QStringLiteral("Color")); gridLayout_3->addWidget(button_color, 0, 2, 1, 1); button_color_reset = new QPushButton(tab_4); button_color_reset->setObjectName(QStringLiteral("button_color_reset")); gridLayout_3->addWidget(button_color_reset, 0, 3, 1, 1); label_7 = new QLabel(tab_4); label_7->setObjectName(QStringLiteral("label_7")); gridLayout_3->addWidget(label_7, 1, 1, 1, 1); combobox_image = new QComboBox(tab_4); combobox_image->setObjectName(QStringLiteral("combobox_image")); sizePolicy.setHeightForWidth(combobox_image->sizePolicy().hasHeightForWidth()); combobox_image->setSizePolicy(sizePolicy); combobox_image->setIconSize(QSize(32, 32)); gridLayout_3->addWidget(combobox_image, 1, 2, 1, 1); button_image_reset = new QPushButton(tab_4); button_image_reset->setObjectName(QStringLiteral("button_image_reset")); gridLayout_3->addWidget(button_image_reset, 1, 3, 1, 1); radiobutton_tiled = new QRadioButton(tab_4); radiobutton_tiled->setObjectName(QStringLiteral("radiobutton_tiled")); sizePolicy.setHeightForWidth(radiobutton_tiled->sizePolicy().hasHeightForWidth()); radiobutton_tiled->setSizePolicy(sizePolicy); gridLayout_3->addWidget(radiobutton_tiled, 2, 1, 1, 2); radiobutton_mosaic = new QRadioButton(tab_4); radiobutton_mosaic->setObjectName(QStringLiteral("radiobutton_mosaic")); sizePolicy.setHeightForWidth(radiobutton_mosaic->sizePolicy().hasHeightForWidth()); radiobutton_mosaic->setSizePolicy(sizePolicy); gridLayout_3->addWidget(radiobutton_mosaic, 3, 1, 1, 2); label_8 = new QLabel(tab_4); label_8->setObjectName(QStringLiteral("label_8")); gridLayout_3->addWidget(label_8, 5, 1, 1, 1); button_background_color = new QPushButton(tab_4); button_background_color->setObjectName(QStringLiteral("button_background_color")); sizePolicy.setHeightForWidth(button_background_color->sizePolicy().hasHeightForWidth()); button_background_color->setSizePolicy(sizePolicy); button_background_color->setText(QStringLiteral("Color")); gridLayout_3->addWidget(button_background_color, 5, 2, 1, 1); button_background_color_reset = new QPushButton(tab_4); button_background_color_reset->setObjectName(QStringLiteral("button_background_color_reset")); gridLayout_3->addWidget(button_background_color_reset, 5, 3, 1, 1); verticalSpacer_2 = new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding); gridLayout_3->addItem(verticalSpacer_2, 4, 1, 1, 1); tabWidget->addTab(tab_4, QString()); verticalLayout->addWidget(tabWidget); buttonBox = new QDialogButtonBox(DialogPreferences); buttonBox->setObjectName(QStringLiteral("buttonBox")); buttonBox->setOrientation(Qt::Horizontal); buttonBox->setStandardButtons(QDialogButtonBox::Close); verticalLayout->addWidget(buttonBox); retranslateUi(DialogPreferences); QObject::connect(buttonBox, SIGNAL(accepted()), DialogPreferences, SLOT(accept())); QObject::connect(buttonBox, SIGNAL(rejected()), DialogPreferences, SLOT(reject())); tabWidget->setCurrentIndex(0); QMetaObject::connectSlotsByName(DialogPreferences); } // setupUi void retranslateUi(QDialog *DialogPreferences) { DialogPreferences->setWindowTitle(gettext_translate("Preferences", Q_NULLPTR)); label->setText(gettext_translate("Animation Speed:", Q_NULLPTR)); button_animspeed_reset->setText(QString()); checkbox_mirror_faces->setText(gettext_translate("Mirror Distance:", Q_NULLPTR)); button_mirror_faces_reset->setText(QString()); label_6->setText(gettext_translate("Quality:", Q_NULLPTR)); button_shader_reset->setText(QString()); #ifndef QT_NO_TOOLTIP label_2->setToolTip(gettext_translate("Lower antialiasing has better performance, higher antialiasing has better quality.", Q_NULLPTR)); #endif // QT_NO_TOOLTIP label_2->setText(gettext_translate("Antialiasing:", Q_NULLPTR)); button_antialiasing_reset->setText(QString()); label_needs_restarted->setText(gettext_translate("The program needs to be restarted for the changes to take effect.", Q_NULLPTR)); tabWidget->setTabText(tabWidget->indexOf(tab_1), gettext_translate("Graphic", Q_NULLPTR)); button_mousemode_quad->setText(gettext_translate("Point and click, all directions", Q_NULLPTR)); button_mousemode_ext->setText(gettext_translate("Point and click, simplified", Q_NULLPTR)); button_mousemode_gesture->setText(gettext_translate("Gestures", Q_NULLPTR)); tabWidget->setTabText(tabWidget->indexOf(tab_2), gettext_translate("Mouse", Q_NULLPTR)); #ifndef QT_NO_TOOLTIP button_movekey_add->setToolTip(gettext_translate("Add", Q_NULLPTR)); #endif // QT_NO_TOOLTIP button_movekey_add->setText(gettext_translate("Add", Q_NULLPTR)); #ifndef QT_NO_TOOLTIP button_movekey_remove->setToolTip(gettext_translate("Remove", Q_NULLPTR)); #endif // QT_NO_TOOLTIP button_movekey_remove->setText(gettext_translate("Remove", Q_NULLPTR)); #ifndef QT_NO_TOOLTIP button_movekey_reset->setToolTip(gettext_translate("Reset", Q_NULLPTR)); #endif // QT_NO_TOOLTIP button_movekey_reset->setText(gettext_translate("Reset", Q_NULLPTR)); tabWidget->setTabText(tabWidget->indexOf(tab_3), gettext_translate("Keys", Q_NULLPTR)); label_5->setText(gettext_translate("Color:", Q_NULLPTR)); button_color_reset->setText(QString()); label_7->setText(gettext_translate("Image File:", Q_NULLPTR)); button_image_reset->setText(QString()); radiobutton_tiled->setText(gettext_translate("Tiled", Q_NULLPTR)); radiobutton_mosaic->setText(gettext_translate("Mosaic", Q_NULLPTR)); label_8->setText(gettext_translate("Background:", Q_NULLPTR)); button_background_color_reset->setText(QString()); tabWidget->setTabText(tabWidget->indexOf(tab_4), gettext_translate("Appearance", Q_NULLPTR)); } // retranslateUi }; namespace Ui { class DialogPreferences: public Ui_DialogPreferences {}; } // namespace Ui QT_END_NAMESPACE #endif // PREFERENCES_H pybik-3.0/csrc/_glarea_ogl.c0000644000175000017500000205665613173167577016236 0ustar barccbarcc00000000000000/* Generated by Cython 0.25.2 */ #define PY_SSIZE_T_CLEAN #include "Python.h" #ifndef Py_PYTHON_H #error Python headers needed to compile C extensions, please install development version of Python. #elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03020000) #error Cython requires Python 2.6+ or Python 3.2+. #else #define CYTHON_ABI "0_25_2" #include #ifndef offsetof #define offsetof(type, member) ( (size_t) & ((type*)0) -> member ) #endif #if !defined(WIN32) && !defined(MS_WINDOWS) #ifndef __stdcall #define __stdcall #endif #ifndef __cdecl #define __cdecl #endif #ifndef __fastcall #define __fastcall #endif #endif #ifndef DL_IMPORT #define DL_IMPORT(t) t #endif #ifndef DL_EXPORT #define DL_EXPORT(t) t #endif #ifndef HAVE_LONG_LONG #if PY_VERSION_HEX >= 0x03030000 || (PY_MAJOR_VERSION == 2 && PY_VERSION_HEX >= 0x02070000) #define HAVE_LONG_LONG #endif #endif #ifndef PY_LONG_LONG #define PY_LONG_LONG LONG_LONG #endif #ifndef Py_HUGE_VAL #define Py_HUGE_VAL HUGE_VAL #endif #ifdef PYPY_VERSION #define CYTHON_COMPILING_IN_PYPY 1 #define CYTHON_COMPILING_IN_PYSTON 0 #define CYTHON_COMPILING_IN_CPYTHON 0 #undef CYTHON_USE_TYPE_SLOTS #define CYTHON_USE_TYPE_SLOTS 0 #undef CYTHON_USE_ASYNC_SLOTS #define CYTHON_USE_ASYNC_SLOTS 0 #undef CYTHON_USE_PYLIST_INTERNALS #define CYTHON_USE_PYLIST_INTERNALS 0 #undef CYTHON_USE_UNICODE_INTERNALS #define CYTHON_USE_UNICODE_INTERNALS 0 #undef CYTHON_USE_UNICODE_WRITER #define CYTHON_USE_UNICODE_WRITER 0 #undef CYTHON_USE_PYLONG_INTERNALS #define CYTHON_USE_PYLONG_INTERNALS 0 #undef CYTHON_AVOID_BORROWED_REFS #define CYTHON_AVOID_BORROWED_REFS 1 #undef CYTHON_ASSUME_SAFE_MACROS #define CYTHON_ASSUME_SAFE_MACROS 0 #undef CYTHON_UNPACK_METHODS #define CYTHON_UNPACK_METHODS 0 #undef CYTHON_FAST_THREAD_STATE #define CYTHON_FAST_THREAD_STATE 0 #undef CYTHON_FAST_PYCALL #define CYTHON_FAST_PYCALL 0 #elif defined(PYSTON_VERSION) #define CYTHON_COMPILING_IN_PYPY 0 #define CYTHON_COMPILING_IN_PYSTON 1 #define CYTHON_COMPILING_IN_CPYTHON 0 #ifndef CYTHON_USE_TYPE_SLOTS #define CYTHON_USE_TYPE_SLOTS 1 #endif #undef CYTHON_USE_ASYNC_SLOTS #define CYTHON_USE_ASYNC_SLOTS 0 #undef CYTHON_USE_PYLIST_INTERNALS #define CYTHON_USE_PYLIST_INTERNALS 0 #ifndef CYTHON_USE_UNICODE_INTERNALS #define CYTHON_USE_UNICODE_INTERNALS 1 #endif #undef CYTHON_USE_UNICODE_WRITER #define CYTHON_USE_UNICODE_WRITER 0 #undef CYTHON_USE_PYLONG_INTERNALS #define CYTHON_USE_PYLONG_INTERNALS 0 #ifndef CYTHON_AVOID_BORROWED_REFS #define CYTHON_AVOID_BORROWED_REFS 0 #endif #ifndef CYTHON_ASSUME_SAFE_MACROS #define CYTHON_ASSUME_SAFE_MACROS 1 #endif #ifndef CYTHON_UNPACK_METHODS #define CYTHON_UNPACK_METHODS 1 #endif #undef CYTHON_FAST_THREAD_STATE #define CYTHON_FAST_THREAD_STATE 0 #undef CYTHON_FAST_PYCALL #define CYTHON_FAST_PYCALL 0 #else #define CYTHON_COMPILING_IN_PYPY 0 #define CYTHON_COMPILING_IN_PYSTON 0 #define CYTHON_COMPILING_IN_CPYTHON 1 #ifndef CYTHON_USE_TYPE_SLOTS #define CYTHON_USE_TYPE_SLOTS 1 #endif #if PY_MAJOR_VERSION < 3 #undef CYTHON_USE_ASYNC_SLOTS #define CYTHON_USE_ASYNC_SLOTS 0 #elif !defined(CYTHON_USE_ASYNC_SLOTS) #define CYTHON_USE_ASYNC_SLOTS 1 #endif #if PY_VERSION_HEX < 0x02070000 #undef CYTHON_USE_PYLONG_INTERNALS #define CYTHON_USE_PYLONG_INTERNALS 0 #elif !defined(CYTHON_USE_PYLONG_INTERNALS) #define CYTHON_USE_PYLONG_INTERNALS 1 #endif #ifndef CYTHON_USE_PYLIST_INTERNALS #define CYTHON_USE_PYLIST_INTERNALS 1 #endif #ifndef CYTHON_USE_UNICODE_INTERNALS #define CYTHON_USE_UNICODE_INTERNALS 1 #endif #if PY_VERSION_HEX < 0x030300F0 #undef CYTHON_USE_UNICODE_WRITER #define CYTHON_USE_UNICODE_WRITER 0 #elif !defined(CYTHON_USE_UNICODE_WRITER) #define CYTHON_USE_UNICODE_WRITER 1 #endif #ifndef CYTHON_AVOID_BORROWED_REFS #define CYTHON_AVOID_BORROWED_REFS 0 #endif #ifndef CYTHON_ASSUME_SAFE_MACROS #define CYTHON_ASSUME_SAFE_MACROS 1 #endif #ifndef CYTHON_UNPACK_METHODS #define CYTHON_UNPACK_METHODS 1 #endif #ifndef CYTHON_FAST_THREAD_STATE #define CYTHON_FAST_THREAD_STATE 1 #endif #ifndef CYTHON_FAST_PYCALL #define CYTHON_FAST_PYCALL 1 #endif #endif #if !defined(CYTHON_FAST_PYCCALL) #define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1) #endif #if CYTHON_USE_PYLONG_INTERNALS #include "longintrepr.h" #undef SHIFT #undef BASE #undef MASK #endif #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x02070600 && !defined(Py_OptimizeFlag) #define Py_OptimizeFlag 0 #endif #define __PYX_BUILD_PY_SSIZE_T "n" #define CYTHON_FORMAT_SSIZE_T "z" #if PY_MAJOR_VERSION < 3 #define __Pyx_BUILTIN_MODULE_NAME "__builtin__" #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ PyCode_New(a+k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) #define __Pyx_DefaultClassType PyClass_Type #else #define __Pyx_BUILTIN_MODULE_NAME "builtins" #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) #define __Pyx_DefaultClassType PyType_Type #endif #ifndef Py_TPFLAGS_CHECKTYPES #define Py_TPFLAGS_CHECKTYPES 0 #endif #ifndef Py_TPFLAGS_HAVE_INDEX #define Py_TPFLAGS_HAVE_INDEX 0 #endif #ifndef Py_TPFLAGS_HAVE_NEWBUFFER #define Py_TPFLAGS_HAVE_NEWBUFFER 0 #endif #ifndef Py_TPFLAGS_HAVE_FINALIZE #define Py_TPFLAGS_HAVE_FINALIZE 0 #endif #ifndef METH_FASTCALL #define METH_FASTCALL 0x80 typedef PyObject *(*__Pyx_PyCFunctionFast) (PyObject *self, PyObject **args, Py_ssize_t nargs, PyObject *kwnames); #else #define __Pyx_PyCFunctionFast _PyCFunctionFast #endif #if CYTHON_FAST_PYCCALL #define __Pyx_PyFastCFunction_Check(func)\ ((PyCFunction_Check(func) && (METH_FASTCALL == (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST))))) #else #define __Pyx_PyFastCFunction_Check(func) 0 #endif #if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND) #define CYTHON_PEP393_ENABLED 1 #define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ?\ 0 : _PyUnicode_Ready((PyObject *)(op))) #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_LENGTH(u) #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i) #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) PyUnicode_MAX_CHAR_VALUE(u) #define __Pyx_PyUnicode_KIND(u) PyUnicode_KIND(u) #define __Pyx_PyUnicode_DATA(u) PyUnicode_DATA(u) #define __Pyx_PyUnicode_READ(k, d, i) PyUnicode_READ(k, d, i) #define __Pyx_PyUnicode_WRITE(k, d, i, ch) PyUnicode_WRITE(k, d, i, ch) #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u))) #else #define CYTHON_PEP393_ENABLED 0 #define PyUnicode_1BYTE_KIND 1 #define PyUnicode_2BYTE_KIND 2 #define PyUnicode_4BYTE_KIND 4 #define __Pyx_PyUnicode_READY(op) (0) #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_SIZE(u) #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i])) #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) ((sizeof(Py_UNICODE) == 2) ? 65535 : 1114111) #define __Pyx_PyUnicode_KIND(u) (sizeof(Py_UNICODE)) #define __Pyx_PyUnicode_DATA(u) ((void*)PyUnicode_AS_UNICODE(u)) #define __Pyx_PyUnicode_READ(k, d, i) ((void)(k), (Py_UCS4)(((Py_UNICODE*)d)[i])) #define __Pyx_PyUnicode_WRITE(k, d, i, ch) (((void)(k)), ((Py_UNICODE*)d)[i] = ch) #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_SIZE(u)) #endif #if CYTHON_COMPILING_IN_PYPY #define __Pyx_PyUnicode_Concat(a, b) PyNumber_Add(a, b) #define __Pyx_PyUnicode_ConcatSafe(a, b) PyNumber_Add(a, b) #else #define __Pyx_PyUnicode_Concat(a, b) PyUnicode_Concat(a, b) #define __Pyx_PyUnicode_ConcatSafe(a, b) ((unlikely((a) == Py_None) || unlikely((b) == Py_None)) ?\ PyNumber_Add(a, b) : __Pyx_PyUnicode_Concat(a, b)) #endif #if CYTHON_COMPILING_IN_PYPY && !defined(PyUnicode_Contains) #define PyUnicode_Contains(u, s) PySequence_Contains(u, s) #endif #if CYTHON_COMPILING_IN_PYPY && !defined(PyByteArray_Check) #define PyByteArray_Check(obj) PyObject_TypeCheck(obj, &PyByteArray_Type) #endif #if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Format) #define PyObject_Format(obj, fmt) PyObject_CallMethod(obj, "__format__", "O", fmt) #endif #if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc) #define PyObject_Malloc(s) PyMem_Malloc(s) #define PyObject_Free(p) PyMem_Free(p) #define PyObject_Realloc(p) PyMem_Realloc(p) #endif #if CYTHON_COMPILING_IN_PYSTON #define __Pyx_PyCode_HasFreeVars(co) PyCode_HasFreeVars(co) #define __Pyx_PyFrame_SetLineNumber(frame, lineno) PyFrame_SetLineNumber(frame, lineno) #else #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0) #define __Pyx_PyFrame_SetLineNumber(frame, lineno) (frame)->f_lineno = (lineno) #endif #define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b)) #define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b)) #if PY_MAJOR_VERSION >= 3 #define __Pyx_PyString_Format(a, b) PyUnicode_Format(a, b) #else #define __Pyx_PyString_Format(a, b) PyString_Format(a, b) #endif #if PY_MAJOR_VERSION < 3 && !defined(PyObject_ASCII) #define PyObject_ASCII(o) PyObject_Repr(o) #endif #if PY_MAJOR_VERSION >= 3 #define PyBaseString_Type PyUnicode_Type #define PyStringObject PyUnicodeObject #define PyString_Type PyUnicode_Type #define PyString_Check PyUnicode_Check #define PyString_CheckExact PyUnicode_CheckExact #endif #if PY_MAJOR_VERSION >= 3 #define __Pyx_PyBaseString_Check(obj) PyUnicode_Check(obj) #define __Pyx_PyBaseString_CheckExact(obj) PyUnicode_CheckExact(obj) #else #define __Pyx_PyBaseString_Check(obj) (PyString_Check(obj) || PyUnicode_Check(obj)) #define __Pyx_PyBaseString_CheckExact(obj) (PyString_CheckExact(obj) || PyUnicode_CheckExact(obj)) #endif #ifndef PySet_CheckExact #define PySet_CheckExact(obj) (Py_TYPE(obj) == &PySet_Type) #endif #define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type) #define __Pyx_PyException_Check(obj) __Pyx_TypeCheck(obj, PyExc_Exception) #if PY_MAJOR_VERSION >= 3 #define PyIntObject PyLongObject #define PyInt_Type PyLong_Type #define PyInt_Check(op) PyLong_Check(op) #define PyInt_CheckExact(op) PyLong_CheckExact(op) #define PyInt_FromString PyLong_FromString #define PyInt_FromUnicode PyLong_FromUnicode #define PyInt_FromLong PyLong_FromLong #define PyInt_FromSize_t PyLong_FromSize_t #define PyInt_FromSsize_t PyLong_FromSsize_t #define PyInt_AsLong PyLong_AsLong #define PyInt_AS_LONG PyLong_AS_LONG #define PyInt_AsSsize_t PyLong_AsSsize_t #define PyInt_AsUnsignedLongMask PyLong_AsUnsignedLongMask #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask #define PyNumber_Int PyNumber_Long #endif #if PY_MAJOR_VERSION >= 3 #define PyBoolObject PyLongObject #endif #if PY_MAJOR_VERSION >= 3 && CYTHON_COMPILING_IN_PYPY #ifndef PyUnicode_InternFromString #define PyUnicode_InternFromString(s) PyUnicode_FromString(s) #endif #endif #if PY_VERSION_HEX < 0x030200A4 typedef long Py_hash_t; #define __Pyx_PyInt_FromHash_t PyInt_FromLong #define __Pyx_PyInt_AsHash_t PyInt_AsLong #else #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t #define __Pyx_PyInt_AsHash_t PyInt_AsSsize_t #endif #if PY_MAJOR_VERSION >= 3 #define __Pyx_PyMethod_New(func, self, klass) ((self) ? PyMethod_New(func, self) : PyInstanceMethod_New(func)) #else #define __Pyx_PyMethod_New(func, self, klass) PyMethod_New(func, self, klass) #endif #if CYTHON_USE_ASYNC_SLOTS #if PY_VERSION_HEX >= 0x030500B1 #define __Pyx_PyAsyncMethodsStruct PyAsyncMethods #define __Pyx_PyType_AsAsync(obj) (Py_TYPE(obj)->tp_as_async) #else typedef struct { unaryfunc am_await; unaryfunc am_aiter; unaryfunc am_anext; } __Pyx_PyAsyncMethodsStruct; #define __Pyx_PyType_AsAsync(obj) ((__Pyx_PyAsyncMethodsStruct*) (Py_TYPE(obj)->tp_reserved)) #endif #else #define __Pyx_PyType_AsAsync(obj) NULL #endif #ifndef CYTHON_RESTRICT #if defined(__GNUC__) #define CYTHON_RESTRICT __restrict__ #elif defined(_MSC_VER) && _MSC_VER >= 1400 #define CYTHON_RESTRICT __restrict #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L #define CYTHON_RESTRICT restrict #else #define CYTHON_RESTRICT #endif #endif #ifndef CYTHON_UNUSED # if defined(__GNUC__) # if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) # define CYTHON_UNUSED __attribute__ ((__unused__)) # else # define CYTHON_UNUSED # endif # elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER)) # define CYTHON_UNUSED __attribute__ ((__unused__)) # else # define CYTHON_UNUSED # endif #endif #ifndef CYTHON_MAYBE_UNUSED_VAR # if defined(__cplusplus) template void CYTHON_MAYBE_UNUSED_VAR( const T& ) { } # else # define CYTHON_MAYBE_UNUSED_VAR(x) (void)(x) # endif #endif #ifndef CYTHON_NCP_UNUSED # if CYTHON_COMPILING_IN_CPYTHON # define CYTHON_NCP_UNUSED # else # define CYTHON_NCP_UNUSED CYTHON_UNUSED # endif #endif #define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None) #ifndef CYTHON_INLINE #if defined(__clang__) #define CYTHON_INLINE __inline__ __attribute__ ((__unused__)) #elif defined(__GNUC__) #define CYTHON_INLINE __inline__ #elif defined(_MSC_VER) #define CYTHON_INLINE __inline #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L #define CYTHON_INLINE inline #else #define CYTHON_INLINE #endif #endif #if defined(WIN32) || defined(MS_WINDOWS) #define _USE_MATH_DEFINES #endif #include #ifdef NAN #define __PYX_NAN() ((float) NAN) #else static CYTHON_INLINE float __PYX_NAN() { float value; memset(&value, 0xFF, sizeof(value)); return value; } #endif #if defined(__CYGWIN__) && defined(_LDBL_EQ_DBL) #define __Pyx_truncl trunc #else #define __Pyx_truncl truncl #endif #define __PYX_ERR(f_index, lineno, Ln_error) \ { \ __pyx_filename = __pyx_f[f_index]; __pyx_lineno = lineno; __pyx_clineno = __LINE__; goto Ln_error; \ } #if PY_MAJOR_VERSION >= 3 #define __Pyx_PyNumber_Divide(x,y) PyNumber_TrueDivide(x,y) #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceTrueDivide(x,y) #else #define __Pyx_PyNumber_Divide(x,y) PyNumber_TrueDivide(x,y) #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceTrueDivide(x,y) #endif #ifndef __PYX_EXTERN_C #ifdef __cplusplus #define __PYX_EXTERN_C extern "C" #else #define __PYX_EXTERN_C extern #endif #endif #define __PYX_HAVE___glarea_ogl #define __PYX_HAVE_API___glarea_ogl #include #include #include #include #include #include "GL/gl.h" #include "GL/glext.h" #include #ifdef _OPENMP #include #endif /* _OPENMP */ #ifdef PYREX_WITHOUT_ASSERTIONS #define CYTHON_WITHOUT_ASSERTIONS #endif typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* encoding; const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry; #define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0 #define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT 0 #define __PYX_DEFAULT_STRING_ENCODING "" #define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString #define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize #define __Pyx_uchar_cast(c) ((unsigned char)c) #define __Pyx_long_cast(x) ((long)x) #define __Pyx_fits_Py_ssize_t(v, type, is_signed) (\ (sizeof(type) < sizeof(Py_ssize_t)) ||\ (sizeof(type) > sizeof(Py_ssize_t) &&\ likely(v < (type)PY_SSIZE_T_MAX ||\ v == (type)PY_SSIZE_T_MAX) &&\ (!is_signed || likely(v > (type)PY_SSIZE_T_MIN ||\ v == (type)PY_SSIZE_T_MIN))) ||\ (sizeof(type) == sizeof(Py_ssize_t) &&\ (is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\ v == (type)PY_SSIZE_T_MAX))) ) #if defined (__cplusplus) && __cplusplus >= 201103L #include #define __Pyx_sst_abs(value) std::abs(value) #elif SIZEOF_INT >= SIZEOF_SIZE_T #define __Pyx_sst_abs(value) abs(value) #elif SIZEOF_LONG >= SIZEOF_SIZE_T #define __Pyx_sst_abs(value) labs(value) #elif defined (_MSC_VER) && defined (_M_X64) #define __Pyx_sst_abs(value) _abs64(value) #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L #define __Pyx_sst_abs(value) llabs(value) #elif defined (__GNUC__) #define __Pyx_sst_abs(value) __builtin_llabs(value) #else #define __Pyx_sst_abs(value) ((value<0) ? -value : value) #endif static CYTHON_INLINE char* __Pyx_PyObject_AsString(PyObject*); static CYTHON_INLINE char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length); #define __Pyx_PyByteArray_FromString(s) PyByteArray_FromStringAndSize((const char*)s, strlen((const char*)s)) #define __Pyx_PyByteArray_FromStringAndSize(s, l) PyByteArray_FromStringAndSize((const char*)s, l) #define __Pyx_PyBytes_FromString PyBytes_FromString #define __Pyx_PyBytes_FromStringAndSize PyBytes_FromStringAndSize static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char*); #if PY_MAJOR_VERSION < 3 #define __Pyx_PyStr_FromString __Pyx_PyBytes_FromString #define __Pyx_PyStr_FromStringAndSize __Pyx_PyBytes_FromStringAndSize #else #define __Pyx_PyStr_FromString __Pyx_PyUnicode_FromString #define __Pyx_PyStr_FromStringAndSize __Pyx_PyUnicode_FromStringAndSize #endif #define __Pyx_PyObject_AsSString(s) ((signed char*) __Pyx_PyObject_AsString(s)) #define __Pyx_PyObject_AsUString(s) ((unsigned char*) __Pyx_PyObject_AsString(s)) #define __Pyx_PyObject_FromCString(s) __Pyx_PyObject_FromString((const char*)s) #define __Pyx_PyBytes_FromCString(s) __Pyx_PyBytes_FromString((const char*)s) #define __Pyx_PyByteArray_FromCString(s) __Pyx_PyByteArray_FromString((const char*)s) #define __Pyx_PyStr_FromCString(s) __Pyx_PyStr_FromString((const char*)s) #define __Pyx_PyUnicode_FromCString(s) __Pyx_PyUnicode_FromString((const char*)s) #if PY_MAJOR_VERSION < 3 static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u) { const Py_UNICODE *u_end = u; while (*u_end++) ; return (size_t)(u_end - u - 1); } #else #define __Pyx_Py_UNICODE_strlen Py_UNICODE_strlen #endif #define __Pyx_PyUnicode_FromUnicode(u) PyUnicode_FromUnicode(u, __Pyx_Py_UNICODE_strlen(u)) #define __Pyx_PyUnicode_FromUnicodeAndLength PyUnicode_FromUnicode #define __Pyx_PyUnicode_AsUnicode PyUnicode_AsUnicode #define __Pyx_NewRef(obj) (Py_INCREF(obj), obj) #define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None) #define __Pyx_PyBool_FromLong(b) ((b) ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False)) static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*); static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x); static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*); static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t); #if CYTHON_ASSUME_SAFE_MACROS #define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x)) #else #define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x) #endif #define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x)) #if PY_MAJOR_VERSION >= 3 #define __Pyx_PyNumber_Int(x) (PyLong_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Long(x)) #else #define __Pyx_PyNumber_Int(x) (PyInt_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Int(x)) #endif #define __Pyx_PyNumber_Float(x) (PyFloat_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Float(x)) #if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII static int __Pyx_sys_getdefaultencoding_not_ascii; static int __Pyx_init_sys_getdefaultencoding_params(void) { PyObject* sys; PyObject* default_encoding = NULL; PyObject* ascii_chars_u = NULL; PyObject* ascii_chars_b = NULL; const char* default_encoding_c; sys = PyImport_ImportModule("sys"); if (!sys) goto bad; default_encoding = PyObject_CallMethod(sys, (char*) "getdefaultencoding", NULL); Py_DECREF(sys); if (!default_encoding) goto bad; default_encoding_c = PyBytes_AsString(default_encoding); if (!default_encoding_c) goto bad; if (strcmp(default_encoding_c, "ascii") == 0) { __Pyx_sys_getdefaultencoding_not_ascii = 0; } else { char ascii_chars[128]; int c; for (c = 0; c < 128; c++) { ascii_chars[c] = c; } __Pyx_sys_getdefaultencoding_not_ascii = 1; ascii_chars_u = PyUnicode_DecodeASCII(ascii_chars, 128, NULL); if (!ascii_chars_u) goto bad; ascii_chars_b = PyUnicode_AsEncodedString(ascii_chars_u, default_encoding_c, NULL); if (!ascii_chars_b || !PyBytes_Check(ascii_chars_b) || memcmp(ascii_chars, PyBytes_AS_STRING(ascii_chars_b), 128) != 0) { PyErr_Format( PyExc_ValueError, "This module compiled with c_string_encoding=ascii, but default encoding '%.200s' is not a superset of ascii.", default_encoding_c); goto bad; } Py_DECREF(ascii_chars_u); Py_DECREF(ascii_chars_b); } Py_DECREF(default_encoding); return 0; bad: Py_XDECREF(default_encoding); Py_XDECREF(ascii_chars_u); Py_XDECREF(ascii_chars_b); return -1; } #endif #if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT && PY_MAJOR_VERSION >= 3 #define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeUTF8(c_str, size, NULL) #else #define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_Decode(c_str, size, __PYX_DEFAULT_STRING_ENCODING, NULL) #if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT static char* __PYX_DEFAULT_STRING_ENCODING; static int __Pyx_init_sys_getdefaultencoding_params(void) { PyObject* sys; PyObject* default_encoding = NULL; char* default_encoding_c; sys = PyImport_ImportModule("sys"); if (!sys) goto bad; default_encoding = PyObject_CallMethod(sys, (char*) (const char*) "getdefaultencoding", NULL); Py_DECREF(sys); if (!default_encoding) goto bad; default_encoding_c = PyBytes_AsString(default_encoding); if (!default_encoding_c) goto bad; __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c)); if (!__PYX_DEFAULT_STRING_ENCODING) goto bad; strcpy(__PYX_DEFAULT_STRING_ENCODING, default_encoding_c); Py_DECREF(default_encoding); return 0; bad: Py_XDECREF(default_encoding); return -1; } #endif #endif /* Test for GCC > 2.95 */ #if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))) #define likely(x) __builtin_expect(!!(x), 1) #define unlikely(x) __builtin_expect(!!(x), 0) #else /* !__GNUC__ or GCC < 2.95 */ #define likely(x) (x) #define unlikely(x) (x) #endif /* __GNUC__ */ static PyObject *__pyx_m; static PyObject *__pyx_d; static PyObject *__pyx_b; static PyObject *__pyx_empty_tuple; static PyObject *__pyx_empty_bytes; static PyObject *__pyx_empty_unicode; static int __pyx_lineno; static int __pyx_clineno = 0; static const char * __pyx_cfilenm= __FILE__; static const char *__pyx_filename; static const char *__pyx_f[] = { "build/temp.linux-x86_64-3.5/pybiklib/ext/_glarea_ogl.pyx", }; /*--- Type declarations ---*/ /* "_gldraw_ogl.pxd":4 * * from gl_ogl cimport * #line 34 * cdef enum: # #line 67 # <<<<<<<<<<<<<< * MAX_TRANSFORMATIONS = 60 #line 71 * MAX_BLOCKS = 1312 #line 72 */ enum { __pyx_e_11_gldraw_ogl_MAX_TRANSFORMATIONS = 60, __pyx_e_11_gldraw_ogl_MAX_BLOCKS = 0x520, __pyx_e_11_gldraw_ogl_MAX_FACES = 20, __pyx_e_11_gldraw_ogl_ATTRIB_LOCATION = 0, __pyx_e_11_gldraw_ogl_PICKATTRIB_LOCATION = 5, __pyx_e_11_gldraw_ogl_ATTRIB_CNT = 7 }; /* "_gldraw_ogl.pxd":11 * PICKATTRIB_LOCATION = 5 #line 75 * ATTRIB_CNT = 7 #line 76 * ctypedef float vec4[4] #line 79 # <<<<<<<<<<<<<< * ctypedef vec4 mat4[4] #line 80 * cdef void matrix_set_identity(mat4 &matrix) nogil #line 87 */ typedef float __pyx_t_11_gldraw_ogl_vec4[4]; /* "_gldraw_ogl.pxd":12 * ATTRIB_CNT = 7 #line 76 * ctypedef float vec4[4] #line 79 * ctypedef vec4 mat4[4] #line 80 # <<<<<<<<<<<<<< * cdef void matrix_set_identity(mat4 &matrix) nogil #line 87 * cdef void init_gldraw() #line 137 */ typedef __pyx_t_11_gldraw_ogl_vec4 __pyx_t_11_gldraw_ogl_mat4[4]; struct __pyx_t_11_glarea_ogl_AtlasData; struct __pyx_t_11_glarea_ogl_RenderData; struct __pyx_t_11_glarea_ogl_UIData; /* "_glarea_ogl.pyx":55 * #puts = print * * cdef enum: # #px/ # <<<<<<<<<<<<<< * #if True: * DEBUG_MSGGL = 0x02 */ enum { __pyx_e_11_glarea_ogl_DEBUG_MSGGL = 0x02, __pyx_e_11_glarea_ogl_DEBUG_MSGEXT = 0x08, __pyx_e_11_glarea_ogl_DEBUG_DRAW = 0x10, __pyx_e_11_glarea_ogl_DEBUG_PICK = 0x20 }; /* "_glarea_ogl.pyx":72 * * * cdef struct AtlasData: #px/ # <<<<<<<<<<<<<< * #class AtlasData: pass * int x, w, h #px+ */ struct __pyx_t_11_glarea_ogl_AtlasData { int x; int w; int h; char *data; }; /* "_glarea_ogl.pyx":77 * char *data #px+ * * cdef struct RenderData: #px/ # <<<<<<<<<<<<<< * #class renderdata: * float bg_red #px+ */ struct __pyx_t_11_glarea_ogl_RenderData { float bg_red; float bg_green; float bg_blue; int y; int width; int height; int pick_x; int pick_y; int multisample; __pyx_t_11_gldraw_ogl_mat4 modelview_matrix; __pyx_t_11_gldraw_ogl_mat4 projection_matrix; __pyx_t_11_gldraw_ogl_mat4 picking_matrix; GLuint prog_render; GLuint projection_location; GLuint modelview_location; GLuint prog_hud; GLuint prog_pick; GLuint picking_location; GLuint projection_pick_location; GLuint modelview_pick_location; int shader_changed; char *shader_vertsrc; char *shader_fragsrc; char *hud_vertsrc; char *hud_fragsrc; char *pick_vertsrc; char *pick_fragsrc; struct __pyx_t_11_glarea_ogl_AtlasData atlasdata[__pyx_e_11_gldraw_ogl_MAX_FACES]; int atlaslen; float debug_modelview1[3]; float debug_modelview2[3]; int debug_viewport1[2]; int debug_viewport2[2]; }; /* "_glarea_ogl.pyx":128 * * * cdef struct UIData: #px/ # <<<<<<<<<<<<<< * #class uidata: * bint synced #px+ */ struct __pyx_t_11_glarea_ogl_UIData { int synced; int background_changed; float bg_red; float bg_green; float bg_blue; int viewport_changed; int rotation_changed; float rotationxhalf; float rotationyhalf; int rotation_quat_changed; __pyx_t_11_gldraw_ogl_vec4 rotation_quat; int pick_x; int pick_y; int frustum_changed; float fovy_radius; float fovy_radius_zoom; double bounding_sphere_radius; int multisample_changed; char *hud_vertsrc; char *hud_fragsrc; char *pick_vertsrc; char *pick_fragsrc; int shaders_changed; char *shader_vertsrc; char *shader_fragsrc; struct __pyx_t_11_glarea_ogl_AtlasData atlasdata[__pyx_e_11_gldraw_ogl_MAX_FACES]; int atlaslen; int data_changed; int vertexdatalen; char *vertexdata; long vertexpointers[(__pyx_e_11_gldraw_ogl_ATTRIB_CNT - 1)]; int nblocks; short cnts_block[__pyx_e_11_gldraw_ogl_MAX_BLOCKS]; int idx_debug; int cnt_debug; int cnt_pick; int transformations_count; __pyx_t_11_gldraw_ogl_mat4 transformations[__pyx_e_11_gldraw_ogl_MAX_TRANSFORMATIONS]; int transformation_changed; short transformation_blocks[__pyx_e_11_gldraw_ogl_MAX_BLOCKS]; int animation_changed; int animation_blocks_count; short animation_blocks[__pyx_e_11_gldraw_ogl_MAX_BLOCKS]; float angle; float rotation_x; float rotation_y; float rotation_z; }; /* --- Runtime support code (head) --- */ /* Refnanny.proto */ #ifndef CYTHON_REFNANNY #define CYTHON_REFNANNY 0 #endif #if CYTHON_REFNANNY typedef struct { void (*INCREF)(void*, PyObject*, int); void (*DECREF)(void*, PyObject*, int); void (*GOTREF)(void*, PyObject*, int); void (*GIVEREF)(void*, PyObject*, int); void* (*SetupContext)(const char*, int, const char*); void (*FinishContext)(void**); } __Pyx_RefNannyAPIStruct; static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL; static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname); #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL; #ifdef WITH_THREAD #define __Pyx_RefNannySetupContext(name, acquire_gil)\ if (acquire_gil) {\ PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\ __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\ PyGILState_Release(__pyx_gilstate_save);\ } else {\ __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\ } #else #define __Pyx_RefNannySetupContext(name, acquire_gil)\ __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__) #endif #define __Pyx_RefNannyFinishContext()\ __Pyx_RefNanny->FinishContext(&__pyx_refnanny) #define __Pyx_INCREF(r) __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__) #define __Pyx_DECREF(r) __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__) #define __Pyx_GOTREF(r) __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), __LINE__) #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), __LINE__) #define __Pyx_XINCREF(r) do { if((r) != NULL) {__Pyx_INCREF(r); }} while(0) #define __Pyx_XDECREF(r) do { if((r) != NULL) {__Pyx_DECREF(r); }} while(0) #define __Pyx_XGOTREF(r) do { if((r) != NULL) {__Pyx_GOTREF(r); }} while(0) #define __Pyx_XGIVEREF(r) do { if((r) != NULL) {__Pyx_GIVEREF(r);}} while(0) #else #define __Pyx_RefNannyDeclarations #define __Pyx_RefNannySetupContext(name, acquire_gil) #define __Pyx_RefNannyFinishContext() #define __Pyx_INCREF(r) Py_INCREF(r) #define __Pyx_DECREF(r) Py_DECREF(r) #define __Pyx_GOTREF(r) #define __Pyx_GIVEREF(r) #define __Pyx_XINCREF(r) Py_XINCREF(r) #define __Pyx_XDECREF(r) Py_XDECREF(r) #define __Pyx_XGOTREF(r) #define __Pyx_XGIVEREF(r) #endif #define __Pyx_XDECREF_SET(r, v) do {\ PyObject *tmp = (PyObject *) r;\ r = v; __Pyx_XDECREF(tmp);\ } while (0) #define __Pyx_DECREF_SET(r, v) do {\ PyObject *tmp = (PyObject *) r;\ r = v; __Pyx_DECREF(tmp);\ } while (0) #define __Pyx_CLEAR(r) do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0) #define __Pyx_XCLEAR(r) do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0) /* PyObjectGetAttrStr.proto */ #if CYTHON_USE_TYPE_SLOTS static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) { PyTypeObject* tp = Py_TYPE(obj); if (likely(tp->tp_getattro)) return tp->tp_getattro(obj, attr_name); #if PY_MAJOR_VERSION < 3 if (likely(tp->tp_getattr)) return tp->tp_getattr(obj, PyString_AS_STRING(attr_name)); #endif return PyObject_GetAttr(obj, attr_name); } #else #define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n) #endif /* GetBuiltinName.proto */ static PyObject *__Pyx_GetBuiltinName(PyObject *name); /* ForceInitThreads.proto */ #ifndef __PYX_FORCE_INIT_THREADS #define __PYX_FORCE_INIT_THREADS 0 #endif /* PyThreadStateGet.proto */ #if CYTHON_FAST_THREAD_STATE #define __Pyx_PyThreadState_declare PyThreadState *__pyx_tstate; #define __Pyx_PyThreadState_assign __pyx_tstate = PyThreadState_GET(); #else #define __Pyx_PyThreadState_declare #define __Pyx_PyThreadState_assign #endif /* PyErrFetchRestore.proto */ #if CYTHON_FAST_THREAD_STATE #define __Pyx_ErrRestoreWithState(type, value, tb) __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb) #define __Pyx_ErrFetchWithState(type, value, tb) __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb) #define __Pyx_ErrRestore(type, value, tb) __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb) #define __Pyx_ErrFetch(type, value, tb) __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb) static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); #else #define __Pyx_ErrRestoreWithState(type, value, tb) PyErr_Restore(type, value, tb) #define __Pyx_ErrFetchWithState(type, value, tb) PyErr_Fetch(type, value, tb) #define __Pyx_ErrRestore(type, value, tb) PyErr_Restore(type, value, tb) #define __Pyx_ErrFetch(type, value, tb) PyErr_Fetch(type, value, tb) #endif /* WriteUnraisableException.proto */ static void __Pyx_WriteUnraisable(const char *name, int clineno, int lineno, const char *filename, int full_traceback, int nogil); /* GetModuleGlobalName.proto */ static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name); /* PyObjectCall.proto */ #if CYTHON_COMPILING_IN_CPYTHON static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw); #else #define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw) #endif /* RaiseArgTupleInvalid.proto */ static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact, Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found); /* RaiseDoubleKeywords.proto */ static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name); /* ParseKeywords.proto */ static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[],\ PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args,\ const char* function_name); /* PyIntBinop.proto */ #if !CYTHON_COMPILING_IN_PYPY static PyObject* __Pyx_PyInt_RemainderObjC(PyObject *op1, PyObject *op2, long intval, int inplace); #else #define __Pyx_PyInt_RemainderObjC(op1, op2, intval, inplace)\ (inplace ? PyNumber_InPlaceRemainder(op1, op2) : PyNumber_Remainder(op1, op2)) #endif /* PyFloatBinop.proto */ #if !CYTHON_COMPILING_IN_PYPY static PyObject* __Pyx_PyFloat_TrueDivideObjC(PyObject *op1, PyObject *op2, double floatval, int inplace); #else #define __Pyx_PyFloat_TrueDivideObjC(op1, op2, floatval, inplace)\ (inplace ? PyNumber_InPlaceTrueDivide(op1, op2) : PyNumber_TrueDivide(op1, op2)) #endif /* RaiseTooManyValuesToUnpack.proto */ static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected); /* RaiseNeedMoreValuesToUnpack.proto */ static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index); /* IterFinish.proto */ static CYTHON_INLINE int __Pyx_IterFinish(void); /* UnpackItemEndCheck.proto */ static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected); /* PyIntBinop.proto */ #if !CYTHON_COMPILING_IN_PYPY static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, long intval, int inplace); #else #define __Pyx_PyInt_AddObjC(op1, op2, intval, inplace)\ (inplace ? PyNumber_InPlaceAdd(op1, op2) : PyNumber_Add(op1, op2)) #endif /* None.proto */ static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname); /* PyCFunctionFastCall.proto */ #if CYTHON_FAST_PYCCALL static CYTHON_INLINE PyObject *__Pyx_PyCFunction_FastCall(PyObject *func, PyObject **args, Py_ssize_t nargs); #else #define __Pyx_PyCFunction_FastCall(func, args, nargs) (assert(0), NULL) #endif /* PyFunctionFastCall.proto */ #if CYTHON_FAST_PYCALL #define __Pyx_PyFunction_FastCall(func, args, nargs)\ __Pyx_PyFunction_FastCallDict((func), (args), (nargs), NULL) #if 1 || PY_VERSION_HEX < 0x030600B1 static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, int nargs, PyObject *kwargs); #else #define __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs) _PyFunction_FastCallDict(func, args, nargs, kwargs) #endif #endif /* PyObjectCallMethO.proto */ #if CYTHON_COMPILING_IN_CPYTHON static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg); #endif /* PyObjectCallOneArg.proto */ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg); /* PyObjectCallNoArg.proto */ #if CYTHON_COMPILING_IN_CPYTHON static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func); #else #define __Pyx_PyObject_CallNoArg(func) __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL) #endif /* GetItemInt.proto */ #define __Pyx_GetItemInt(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ __Pyx_GetItemInt_Fast(o, (Py_ssize_t)i, is_list, wraparound, boundscheck) :\ (is_list ? (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL) :\ __Pyx_GetItemInt_Generic(o, to_py_func(i)))) #define __Pyx_GetItemInt_List(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ __Pyx_GetItemInt_List_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\ (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL)) static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, int wraparound, int boundscheck); #define __Pyx_GetItemInt_Tuple(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ __Pyx_GetItemInt_Tuple_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\ (PyErr_SetString(PyExc_IndexError, "tuple index out of range"), (PyObject*)NULL)) static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, int wraparound, int boundscheck); static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j); static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, int is_list, int wraparound, int boundscheck); /* pyobject_as_double.proto */ static double __Pyx__PyObject_AsDouble(PyObject* obj); #if CYTHON_COMPILING_IN_PYPY #define __Pyx_PyObject_AsDouble(obj)\ (likely(PyFloat_CheckExact(obj)) ? PyFloat_AS_DOUBLE(obj) :\ likely(PyInt_CheckExact(obj)) ?\ PyFloat_AsDouble(obj) : __Pyx__PyObject_AsDouble(obj)) #else #define __Pyx_PyObject_AsDouble(obj)\ ((likely(PyFloat_CheckExact(obj))) ?\ PyFloat_AS_DOUBLE(obj) : __Pyx__PyObject_AsDouble(obj)) #endif /* ListCompAppend.proto */ #if CYTHON_USE_PYLIST_INTERNALS && CYTHON_ASSUME_SAFE_MACROS static CYTHON_INLINE int __Pyx_ListComp_Append(PyObject* list, PyObject* x) { PyListObject* L = (PyListObject*) list; Py_ssize_t len = Py_SIZE(list); if (likely(L->allocated > len)) { Py_INCREF(x); PyList_SET_ITEM(list, len, x); Py_SIZE(list) = len+1; return 0; } return PyList_Append(list, x); } #else #define __Pyx_ListComp_Append(L,x) PyList_Append(L,x) #endif /* PyObjectSetAttrStr.proto */ #if CYTHON_USE_TYPE_SLOTS #define __Pyx_PyObject_DelAttrStr(o,n) __Pyx_PyObject_SetAttrStr(o,n,NULL) static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr_name, PyObject* value) { PyTypeObject* tp = Py_TYPE(obj); if (likely(tp->tp_setattro)) return tp->tp_setattro(obj, attr_name, value); #if PY_MAJOR_VERSION < 3 if (likely(tp->tp_setattr)) return tp->tp_setattr(obj, PyString_AS_STRING(attr_name), value); #endif return PyObject_SetAttr(obj, attr_name, value); } #else #define __Pyx_PyObject_DelAttrStr(o,n) PyObject_DelAttr(o,n) #define __Pyx_PyObject_SetAttrStr(o,n,v) PyObject_SetAttr(o,n,v) #endif /* ListAppend.proto */ #if CYTHON_USE_PYLIST_INTERNALS && CYTHON_ASSUME_SAFE_MACROS static CYTHON_INLINE int __Pyx_PyList_Append(PyObject* list, PyObject* x) { PyListObject* L = (PyListObject*) list; Py_ssize_t len = Py_SIZE(list); if (likely(L->allocated > len) & likely(len > (L->allocated >> 1))) { Py_INCREF(x); PyList_SET_ITEM(list, len, x); Py_SIZE(list) = len+1; return 0; } return PyList_Append(list, x); } #else #define __Pyx_PyList_Append(L,x) PyList_Append(L,x) #endif /* PyObjectCallMethod1.proto */ static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg); /* append.proto */ static CYTHON_INLINE int __Pyx_PyObject_Append(PyObject* L, PyObject* x); /* ArgTypeTest.proto */ static CYTHON_INLINE int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *type, int none_allowed, const char *name, int exact); /* CalculateMetaclass.proto */ static PyObject *__Pyx_CalculateMetaclass(PyTypeObject *metaclass, PyObject *bases); /* Py3ClassCreate.proto */ static PyObject *__Pyx_Py3MetaclassPrepare(PyObject *metaclass, PyObject *bases, PyObject *name, PyObject *qualname, PyObject *mkw, PyObject *modname, PyObject *doc); static PyObject *__Pyx_Py3ClassCreate(PyObject *metaclass, PyObject *name, PyObject *bases, PyObject *dict, PyObject *mkw, int calculate_metaclass, int allow_py2_metaclass); /* CodeObjectCache.proto */ typedef struct { PyCodeObject* code_object; int code_line; } __Pyx_CodeObjectCacheEntry; struct __Pyx_CodeObjectCache { int count; int max_count; __Pyx_CodeObjectCacheEntry* entries; }; static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL}; static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line); static PyCodeObject *__pyx_find_code_object(int code_line); static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object); /* AddTraceback.proto */ static void __Pyx_AddTraceback(const char *funcname, int c_line, int py_line, const char *filename); /* CIntToPy.proto */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value); /* CIntToPy.proto */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value); /* CIntToPy.proto */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_GLint(GLint value); /* CIntFromPy.proto */ static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *); /* CIntFromPy.proto */ static CYTHON_INLINE short __Pyx_PyInt_As_short(PyObject *); /* CIntFromPy.proto */ static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *); /* CheckBinaryVersion.proto */ static int __Pyx_check_binary_version(void); /* FunctionExport.proto */ static int __Pyx_ExportFunction(const char *name, void (*f)(void), const char *sig); /* PyIdentifierFromString.proto */ #if !defined(__Pyx_PyIdentifier_FromString) #if PY_MAJOR_VERSION < 3 #define __Pyx_PyIdentifier_FromString(s) PyString_FromString(s) #else #define __Pyx_PyIdentifier_FromString(s) PyUnicode_FromString(s) #endif #endif /* ModuleImport.proto */ static PyObject *__Pyx_ImportModule(const char *name); /* FunctionImport.proto */ static int __Pyx_ImportFunction(PyObject *module, const char *funcname, void (**f)(void), const char *sig); /* InitStrings.proto */ static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); /* Module declarations from 'libc.string' */ /* Module declarations from 'libc.stdlib' */ /* Module declarations from 'libc.math' */ /* Module declarations from 'libc.stddef' */ /* Module declarations from 'libc.stdint' */ /* Module declarations from 'gl_ogl' */ /* Module declarations from '_gldraw_ogl' */ static void (*__pyx_f_11_gldraw_ogl_matrix_set_identity)(__pyx_t_11_gldraw_ogl_vec4 *); /*proto*/ static void (*__pyx_f_11_gldraw_ogl_init_gldraw)(void); /*proto*/ static void (*__pyx_f_11_gldraw_ogl_sync_block_transformations)(short *); /*proto*/ static void (*__pyx_f_11_gldraw_ogl_sync_animation_start)(int, short *); /*proto*/ static void (*__pyx_f_11_gldraw_ogl_sync_animation_next)(float, float, float, float); /*proto*/ static void (*__pyx_f_11_gldraw_ogl_gl_draw_cube)(void); /*proto*/ static void (*__pyx_f_11_gldraw_ogl_gl_pick_cube)(void); /*proto*/ static void (*__pyx_f_11_gldraw_ogl_gl_init_buffers)(void); /*proto*/ static void (*__pyx_f_11_gldraw_ogl_gl_delete_buffers)(void); /*proto*/ static void (*__pyx_f_11_gldraw_ogl_sync_blocks)(int, short *, int, int, int); /*proto*/ static void (*__pyx_f_11_gldraw_ogl_sync_vertexdata)(int, char *, long *); /*proto*/ static void (*__pyx_f_11_gldraw_ogl_sync_transformations)(int, __pyx_t_11_gldraw_ogl_mat4 *); /*proto*/ static void (*__pyx_f_11_gldraw_ogl_gl_enable_data)(void); /*proto*/ static void (*__pyx_f_11_gldraw_ogl_gl_disable_data)(void); /*proto*/ static void (*__pyx_f_11_gldraw_ogl_gl_draw_cube_debug)(void); /*proto*/ static void (*__pyx_f_11_gldraw_ogl_gl_draw_select_debug)(GLfloat *, GLsizeiptr, GLuint); /*proto*/ static void (*__pyx_f_11_gldraw_ogl_gl_init_object_location)(GLuint); /*proto*/ /* Module declarations from 'libc.stdio' */ /* Module declarations from '_glarea_ogl' */ static long __pyx_v_11_glarea_ogl_debug; static struct __pyx_t_11_glarea_ogl_RenderData __pyx_v_11_glarea_ogl_renderdata; static struct __pyx_t_11_glarea_ogl_UIData __pyx_v_11_glarea_ogl_uidata; static void __pyx_f_11_glarea_ogl_gl_create_render_program(void); /*proto*/ static void __pyx_f_11_glarea_ogl_quat_set_identity(float *); /*proto*/ static void __pyx_f_11_glarea_ogl_quat_mult(float *, float *, float *); /*proto*/ static void __pyx_f_11_glarea_ogl_quat_to_matrix(__pyx_t_11_gldraw_ogl_vec4 *, float *); /*proto*/ static void __pyx_f_11_glarea_ogl_quat_from_angle_axis(float *, float, float, float, float); /*proto*/ static void __pyx_f_11_glarea_ogl__sync_modelview_matrix_translation(void); /*proto*/ static void __pyx_f_11_glarea_ogl__sync_modelview_matrix_rotation(void); /*proto*/ static void __pyx_f_11_glarea_ogl__sync_projection_matrix(void); /*proto*/ static void __pyx_f_11_glarea_ogl__set_picking_matrix(int, int); /*proto*/ static void __pyx_f_11_glarea_ogl__set_picking_matrix_identity(void); /*proto*/ static PyObject *__pyx_f_11_glarea_ogl_set_animation_start(PyObject *, float, float, float, int __pyx_skip_dispatch); /*proto*/ static PyObject *__pyx_f_11_glarea_ogl_set_atlas_data(int, PyObject *, int, int, int, int __pyx_skip_dispatch); /*proto*/ static void __pyx_f_11_glarea_ogl__gl_print_string(char *, GLenum); /*proto*/ static void __pyx_f_11_glarea_ogl__gl_print_float(char *, GLenum); /*proto*/ static void __pyx_f_11_glarea_ogl__gl_print_integer(char *, GLenum); /*proto*/ static void __pyx_f_11_glarea_ogl__gl_print_bool(char *, GLenum); /*proto*/ static void __pyx_f_11_glarea_ogl__gl_set_matrix(GLint, __pyx_t_11_gldraw_ogl_vec4 *); /*proto*/ static void __pyx_f_11_glarea_ogl__gl_render_pick(void); /*proto*/ static void __pyx_f_11_glarea_ogl__modelview_to_viewport(float *, int *); /*proto*/ static void __pyx_f_11_glarea_ogl__viewport_to_modelview(int *, float *); /*proto*/ static void __pyx_f_11_glarea_ogl__gl_print_shader_log(GLuint); /*proto*/ static void __pyx_f_11_glarea_ogl__gl_print_program_log(GLuint); /*proto*/ static GLuint __pyx_f_11_glarea_ogl__gl_create_compiled_shader(GLenum, char *); /*proto*/ static GLint __pyx_f_11_glarea_ogl__get_program_iv(GLuint, GLenum); /*proto*/ static GLint __pyx_f_11_glarea_ogl__gl_print_program_info(GLuint); /*proto*/ static void __pyx_f_11_glarea_ogl__gl_program_add_shaders(GLuint, char *, char *); /*proto*/ static void __pyx_f_11_glarea_ogl_gl_create_hud_program(void); /*proto*/ static void __pyx_f_11_glarea_ogl_gl_create_pick_program(void); /*proto*/ #define __Pyx_MODULE_NAME "_glarea_ogl" int __pyx_module_is_main__glarea_ogl = 0; /* Implementation of '_glarea_ogl' */ static PyObject *__pyx_builtin_print; static PyObject *__pyx_builtin_enumerate; static PyObject *__pyx_builtin_range; static const char __pyx_k_b[] = "b"; static const char __pyx_k_d[] = "d"; static const char __pyx_k_h[] = "h"; static const char __pyx_k_i[] = "i"; static const char __pyx_k_j[] = "j"; static const char __pyx_k_t[] = "t"; static const char __pyx_k_w[] = "w"; static const char __pyx_k_x[] = "x"; static const char __pyx_k_y[] = "y"; static const char __pyx_k_doc[] = "__doc__"; static const char __pyx_k_nxy[] = "nxy"; static const char __pyx_k_red[] = "red"; static const char __pyx_k_blue[] = "blue"; static const char __pyx_k_data[] = "data"; static const char __pyx_k_main[] = "__main__"; static const char __pyx_k_name[] = "__name__"; static const char __pyx_k_quat[] = "quat"; static const char __pyx_k_test[] = "__test__"; static const char __pyx_k_zoom[] = "zoom"; static const char __pyx_k_angle[] = "angle"; static const char __pyx_k_axisx[] = "axisx"; static const char __pyx_k_axisy[] = "axisy"; static const char __pyx_k_axisz[] = "axisz"; static const char __pyx_k_green[] = "green"; static const char __pyx_k_print[] = "print"; static const char __pyx_k_range[] = "range"; static const char __pyx_k_append[] = "append"; static const char __pyx_k_blocks[] = "blocks"; static const char __pyx_k_module[] = "module"; static const char __pyx_k_pydata[] = "pydata"; static const char __pyx_k_unused[] = "unused"; static const char __pyx_k_nblocks[] = "nblocks"; static const char __pyx_k_package[] = "__package__"; static const char __pyx_k_prepare[] = "__prepare__"; static const char __pyx_k_compiled[] = " compiled:"; static const char __pyx_k_module_2[] = "__module__"; static const char __pyx_k_qualname[] = "__qualname__"; static const char __pyx_k_set_data[] = "set_data"; static const char __pyx_k_uipydata[] = "uipydata"; static const char __pyx_k_OFFSCREEN[] = " OFFSCREEN:"; static const char __pyx_k_atlasdata[] = "atlasdata"; static const char __pyx_k_enumerate[] = "enumerate"; static const char __pyx_k_metaclass[] = "__metaclass__"; static const char __pyx_k_DEBUG_DRAW[] = "DEBUG_DRAW"; static const char __pyx_k_DEBUG_PICK[] = "DEBUG_PICK"; static const char __pyx_k_cnts_block[] = "cnts_block"; static const char __pyx_k_compiled_2[] = "__compiled"; static const char __pyx_k_fovy_angle[] = "fovy_angle"; static const char __pyx_k_glarea_ogl[] = "_glarea_ogl"; static const char __pyx_k_shader_src[] = "shader_src"; static const char __pyx_k_startswith[] = "startswith"; static const char __pyx_k_syncpydata[] = "syncpydata"; static const char __pyx_k_vertexdata[] = "vertexdata"; static const char __pyx_k_vertexinfo[] = "vertexinfo"; static const char __pyx_k_DEBUG_MSGGL[] = "DEBUG_MSGGL"; static const char __pyx_k_GL_type_ogl[] = " GL-type: ogl"; static const char __pyx_k_init_engine[] = "init_engine"; static const char __pyx_k_init_module[] = "init module:"; static const char __pyx_k_multisample[] = "multisample"; static const char __pyx_k_set_frustum[] = "set_frustum"; static const char __pyx_k_set_shaders[] = "set_shaders"; static const char __pyx_k_version_120[] = "#version 120\n"; static const char __pyx_k_DEBUG_MSGEXT[] = "DEBUG_MSGEXT"; static const char __pyx_k_fixedshaders[] = "fixedshaders"; static const char __pyx_k_from_package[] = " from package:"; static const char __pyx_k_pydata_backed[] = "pydata_backed"; static const char __pyx_k_shader_fragsrc[] = "shader_fragsrc"; static const char __pyx_k_shader_vertsrc[] = "shader_vertsrc"; static const char __pyx_k_vertexpointers[] = "vertexpointers"; static const char __pyx_k_pydata_postsync[] = "pydata_postsync"; static const char __pyx_k_set_debug_flags[] = "set_debug_flags"; static const char __pyx_k_set_rotation_xy[] = "set_rotation_xy"; static const char __pyx_k_transformations[] = "transformations"; static const char __pyx_k_get_cursor_angle[] = "get_cursor_angle"; static const char __pyx_k_set_antialiasing[] = "set_antialiasing"; static const char __pyx_k_set_fixedshaders[] = "set_fixedshaders"; static const char __pyx_k_set_rotation_rel[] = "set_rotation_rel"; static const char __pyx_k_set_pick_position[] = "set_pick_position"; static const char __pyx_k_set_transformations[] = "set_transformations"; static const char __pyx_k_set_background_color[] = "set_background_color"; static const char __pyx_k_update_shader_version[] = "update_shader_version"; static const char __pyx_k_bounding_sphere_radius[] = "bounding_sphere_radius"; static const char __pyx_k_tmp[] = "/tmp/build/temp.linux-x86_64-3.5/pybiklib/ext/_glarea_ogl.pyx"; static PyObject *__pyx_n_s_DEBUG_DRAW; static PyObject *__pyx_n_s_DEBUG_MSGEXT; static PyObject *__pyx_n_s_DEBUG_MSGGL; static PyObject *__pyx_n_s_DEBUG_PICK; static PyObject *__pyx_kp_u_GL_type_ogl; static PyObject *__pyx_kp_u_OFFSCREEN; static PyObject *__pyx_n_s_angle; static PyObject *__pyx_n_s_append; static PyObject *__pyx_n_s_atlasdata; static PyObject *__pyx_n_s_axisx; static PyObject *__pyx_n_s_axisy; static PyObject *__pyx_n_s_axisz; static PyObject *__pyx_n_s_b; static PyObject *__pyx_n_s_blocks; static PyObject *__pyx_n_s_blue; static PyObject *__pyx_n_s_bounding_sphere_radius; static PyObject *__pyx_n_s_cnts_block; static PyObject *__pyx_kp_u_compiled; static PyObject *__pyx_n_s_compiled_2; static PyObject *__pyx_n_s_d; static PyObject *__pyx_n_s_data; static PyObject *__pyx_n_s_doc; static PyObject *__pyx_n_s_enumerate; static PyObject *__pyx_n_s_fixedshaders; static PyObject *__pyx_n_u_fixedshaders; static PyObject *__pyx_n_s_fovy_angle; static PyObject *__pyx_kp_u_from_package; static PyObject *__pyx_n_s_get_cursor_angle; static PyObject *__pyx_n_s_glarea_ogl; static PyObject *__pyx_n_s_green; static PyObject *__pyx_n_s_h; static PyObject *__pyx_kp_s_tmp; static PyObject *__pyx_n_s_i; static PyObject *__pyx_n_s_init_engine; static PyObject *__pyx_kp_u_init_module; static PyObject *__pyx_n_s_j; static PyObject *__pyx_n_s_main; static PyObject *__pyx_n_s_metaclass; static PyObject *__pyx_n_s_module; static PyObject *__pyx_n_s_module_2; static PyObject *__pyx_n_s_multisample; static PyObject *__pyx_n_s_name; static PyObject *__pyx_n_s_nblocks; static PyObject *__pyx_n_s_nxy; static PyObject *__pyx_n_s_package; static PyObject *__pyx_n_s_prepare; static PyObject *__pyx_n_s_print; static PyObject *__pyx_n_s_pydata; static PyObject *__pyx_n_s_pydata_backed; static PyObject *__pyx_n_s_pydata_postsync; static PyObject *__pyx_n_s_qualname; static PyObject *__pyx_n_s_quat; static PyObject *__pyx_n_s_range; static PyObject *__pyx_n_s_red; static PyObject *__pyx_n_s_set_antialiasing; static PyObject *__pyx_n_s_set_background_color; static PyObject *__pyx_n_s_set_data; static PyObject *__pyx_n_s_set_debug_flags; static PyObject *__pyx_n_s_set_fixedshaders; static PyObject *__pyx_n_s_set_frustum; static PyObject *__pyx_n_s_set_pick_position; static PyObject *__pyx_n_s_set_rotation_rel; static PyObject *__pyx_n_s_set_rotation_xy; static PyObject *__pyx_n_s_set_shaders; static PyObject *__pyx_n_s_set_transformations; static PyObject *__pyx_n_s_shader_fragsrc; static PyObject *__pyx_n_u_shader_fragsrc; static PyObject *__pyx_n_s_shader_src; static PyObject *__pyx_n_s_shader_vertsrc; static PyObject *__pyx_n_u_shader_vertsrc; static PyObject *__pyx_n_s_startswith; static PyObject *__pyx_n_s_syncpydata; static PyObject *__pyx_n_s_t; static PyObject *__pyx_n_s_test; static PyObject *__pyx_n_s_transformations; static PyObject *__pyx_n_s_uipydata; static PyObject *__pyx_n_s_unused; static PyObject *__pyx_n_s_update_shader_version; static PyObject *__pyx_kp_b_version_120; static PyObject *__pyx_n_s_vertexdata; static PyObject *__pyx_n_u_vertexdata; static PyObject *__pyx_n_s_vertexinfo; static PyObject *__pyx_n_s_vertexpointers; static PyObject *__pyx_n_s_w; static PyObject *__pyx_n_s_x; static PyObject *__pyx_n_s_y; static PyObject *__pyx_n_s_zoom; static PyObject *__pyx_pf_11_glarea_ogl_set_debug_flags(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_module); /* proto */ static PyObject *__pyx_pf_11_glarea_ogl_2init_engine(CYTHON_UNUSED PyObject *__pyx_self); /* proto */ static PyObject *__pyx_pf_11_glarea_ogl_4set_rotation_rel(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_x, PyObject *__pyx_v_y); /* proto */ static PyObject *__pyx_pf_11_glarea_ogl_6set_frustum(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_bounding_sphere_radius, PyObject *__pyx_v_zoom); /* proto */ static PyObject *__pyx_pf_11_glarea_ogl_8set_background_color(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_red, PyObject *__pyx_v_green, PyObject *__pyx_v_blue); /* proto */ static PyObject *__pyx_pf_11_glarea_ogl_10set_antialiasing(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_multisample); /* proto */ static PyObject *__pyx_pf_11_glarea_ogl_12set_rotation_xy(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_x, PyObject *__pyx_v_y); /* proto */ static PyObject *__pyx_pf_11_glarea_ogl_14set_transformations(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_blocks); /* proto */ static PyObject *__pyx_pf_11_glarea_ogl_16set_animation_start(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_blocks, float __pyx_v_axisx, float __pyx_v_axisy, float __pyx_v_axisz); /* proto */ static PyObject *__pyx_pf_11_glarea_ogl_18set_data(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_nblocks, PyObject *__pyx_v_vertexdata, PyObject *__pyx_v_vertexpointers, PyObject *__pyx_v_vertexinfo, PyObject *__pyx_v_transformations); /* proto */ static PyObject *__pyx_pf_11_glarea_ogl_20pydata_postsync(CYTHON_UNUSED PyObject *__pyx_self); /* proto */ static PyObject *__pyx_pf_11_glarea_ogl_22update_shader_version(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_shader_src); /* proto */ static PyObject *__pyx_pf_11_glarea_ogl_24set_shaders(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_shader_vertsrc, PyObject *__pyx_v_shader_fragsrc); /* proto */ static PyObject *__pyx_pf_11_glarea_ogl_26set_fixedshaders(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_fixedshaders); /* proto */ static PyObject *__pyx_pf_11_glarea_ogl_28set_pick_position(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_x, PyObject *__pyx_v_y); /* proto */ static PyObject *__pyx_pf_11_glarea_ogl_30set_atlas_data(CYTHON_UNUSED PyObject *__pyx_self, int __pyx_v_i, PyObject *__pyx_v_data, int __pyx_v_x, int __pyx_v_w, int __pyx_v_h); /* proto */ static PyObject *__pyx_pf_11_glarea_ogl_32get_cursor_angle(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_d); /* proto */ static PyObject *__pyx_float_360_0; static PyObject *__pyx_int_0; static PyObject *__pyx_int_1; static PyObject *__pyx_int_120; static PyObject *__pyx_int_360; static PyObject *__pyx_int_neg_120; static PyObject *__pyx_tuple_; static PyObject *__pyx_tuple__2; static PyObject *__pyx_tuple__3; static PyObject *__pyx_tuple__4; static PyObject *__pyx_tuple__6; static PyObject *__pyx_tuple__8; static PyObject *__pyx_tuple__10; static PyObject *__pyx_tuple__12; static PyObject *__pyx_tuple__14; static PyObject *__pyx_tuple__16; static PyObject *__pyx_tuple__18; static PyObject *__pyx_tuple__20; static PyObject *__pyx_tuple__23; static PyObject *__pyx_tuple__25; static PyObject *__pyx_tuple__27; static PyObject *__pyx_tuple__29; static PyObject *__pyx_tuple__31; static PyObject *__pyx_codeobj__5; static PyObject *__pyx_codeobj__7; static PyObject *__pyx_codeobj__9; static PyObject *__pyx_codeobj__11; static PyObject *__pyx_codeobj__13; static PyObject *__pyx_codeobj__15; static PyObject *__pyx_codeobj__17; static PyObject *__pyx_codeobj__19; static PyObject *__pyx_codeobj__21; static PyObject *__pyx_codeobj__22; static PyObject *__pyx_codeobj__24; static PyObject *__pyx_codeobj__26; static PyObject *__pyx_codeobj__28; static PyObject *__pyx_codeobj__30; static PyObject *__pyx_codeobj__32; /* "_glarea_ogl.pyx":64 * debug = 0 * * def set_debug_flags(module): # <<<<<<<<<<<<<< * global debug * if module.DEBUG_MSGGL: debug |= DEBUG_MSGGL */ /* Python wrapper */ static PyObject *__pyx_pw_11_glarea_ogl_1set_debug_flags(PyObject *__pyx_self, PyObject *__pyx_v_module); /*proto*/ static PyMethodDef __pyx_mdef_11_glarea_ogl_1set_debug_flags = {"set_debug_flags", (PyCFunction)__pyx_pw_11_glarea_ogl_1set_debug_flags, METH_O, 0}; static PyObject *__pyx_pw_11_glarea_ogl_1set_debug_flags(PyObject *__pyx_self, PyObject *__pyx_v_module) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("set_debug_flags (wrapper)", 0); __pyx_r = __pyx_pf_11_glarea_ogl_set_debug_flags(__pyx_self, ((PyObject *)__pyx_v_module)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11_glarea_ogl_set_debug_flags(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_module) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_t_2; __Pyx_RefNannySetupContext("set_debug_flags", 0); /* "_glarea_ogl.pyx":66 * def set_debug_flags(module): * global debug * if module.DEBUG_MSGGL: debug |= DEBUG_MSGGL # <<<<<<<<<<<<<< * if module.DEBUG_MSGEXT: debug |= DEBUG_MSGEXT * if module.DEBUG_DRAW: debug |= DEBUG_DRAW */ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_module, __pyx_n_s_DEBUG_MSGGL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 66, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 66, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_2) { __pyx_v_11_glarea_ogl_debug = (__pyx_v_11_glarea_ogl_debug | __pyx_e_11_glarea_ogl_DEBUG_MSGGL); } /* "_glarea_ogl.pyx":67 * global debug * if module.DEBUG_MSGGL: debug |= DEBUG_MSGGL * if module.DEBUG_MSGEXT: debug |= DEBUG_MSGEXT # <<<<<<<<<<<<<< * if module.DEBUG_DRAW: debug |= DEBUG_DRAW * if module.DEBUG_PICK: debug |= DEBUG_PICK */ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_module, __pyx_n_s_DEBUG_MSGEXT); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 67, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 67, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_2) { __pyx_v_11_glarea_ogl_debug = (__pyx_v_11_glarea_ogl_debug | __pyx_e_11_glarea_ogl_DEBUG_MSGEXT); } /* "_glarea_ogl.pyx":68 * if module.DEBUG_MSGGL: debug |= DEBUG_MSGGL * if module.DEBUG_MSGEXT: debug |= DEBUG_MSGEXT * if module.DEBUG_DRAW: debug |= DEBUG_DRAW # <<<<<<<<<<<<<< * if module.DEBUG_PICK: debug |= DEBUG_PICK * */ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_module, __pyx_n_s_DEBUG_DRAW); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 68, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 68, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_2) { __pyx_v_11_glarea_ogl_debug = (__pyx_v_11_glarea_ogl_debug | __pyx_e_11_glarea_ogl_DEBUG_DRAW); } /* "_glarea_ogl.pyx":69 * if module.DEBUG_MSGEXT: debug |= DEBUG_MSGEXT * if module.DEBUG_DRAW: debug |= DEBUG_DRAW * if module.DEBUG_PICK: debug |= DEBUG_PICK # <<<<<<<<<<<<<< * * */ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_module, __pyx_n_s_DEBUG_PICK); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 69, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 69, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_2) { __pyx_v_11_glarea_ogl_debug = (__pyx_v_11_glarea_ogl_debug | __pyx_e_11_glarea_ogl_DEBUG_PICK); } /* "_glarea_ogl.pyx":64 * debug = 0 * * def set_debug_flags(module): # <<<<<<<<<<<<<< * global debug * if module.DEBUG_MSGGL: debug |= DEBUG_MSGGL */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("_glarea_ogl.set_debug_flags", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_glarea_ogl.pyx":203 * * ##pxm-FUNC P nogil * cdef void quat_set_identity(gldraw.vec4 &quat) nogil: # <<<<<<<<<<<<<< * quat[0] = 1. * quat[1] = quat[2] = quat[3] = 0. */ static void __pyx_f_11_glarea_ogl_quat_set_identity(float *__pyx_v_quat) { /* "_glarea_ogl.pyx":204 * ##pxm-FUNC P nogil * cdef void quat_set_identity(gldraw.vec4 &quat) nogil: * quat[0] = 1. # <<<<<<<<<<<<<< * quat[1] = quat[2] = quat[3] = 0. * */ (__pyx_v_quat[0]) = 1.; /* "_glarea_ogl.pyx":205 * cdef void quat_set_identity(gldraw.vec4 &quat) nogil: * quat[0] = 1. * quat[1] = quat[2] = quat[3] = 0. # <<<<<<<<<<<<<< * * # (a+bi+cj+dk)(w+xi+yj+zk) */ (__pyx_v_quat[1]) = 0.; (__pyx_v_quat[2]) = 0.; (__pyx_v_quat[3]) = 0.; /* "_glarea_ogl.pyx":203 * * ##pxm-FUNC P nogil * cdef void quat_set_identity(gldraw.vec4 &quat) nogil: # <<<<<<<<<<<<<< * quat[0] = 1. * quat[1] = quat[2] = quat[3] = 0. */ /* function exit code */ } /* "_glarea_ogl.pyx":212 * * ##pxm-FUNC P nogil * cdef void quat_mult(gldraw.vec4 &dest, gldraw.vec4 &src1, gldraw.vec4 &src2) nogil: # <<<<<<<<<<<<<< * cdef float a,b,c,d #px+ * a = src1[0]*src2[0] - src1[1]*src2[1] - src1[2]*src2[2] - src1[3]*src2[3] */ static void __pyx_f_11_glarea_ogl_quat_mult(float *__pyx_v_dest, float *__pyx_v_src1, float *__pyx_v_src2) { float __pyx_v_a; float __pyx_v_b; float __pyx_v_c; float __pyx_v_d; /* "_glarea_ogl.pyx":214 * cdef void quat_mult(gldraw.vec4 &dest, gldraw.vec4 &src1, gldraw.vec4 &src2) nogil: * cdef float a,b,c,d #px+ * a = src1[0]*src2[0] - src1[1]*src2[1] - src1[2]*src2[2] - src1[3]*src2[3] # <<<<<<<<<<<<<< * b = src1[0]*src2[1] + src1[1]*src2[0] + src1[2]*src2[3] - src1[3]*src2[2] * c = src1[0]*src2[2] - src1[1]*src2[3] + src1[2]*src2[0] + src1[3]*src2[1] */ __pyx_v_a = (((((__pyx_v_src1[0]) * (__pyx_v_src2[0])) - ((__pyx_v_src1[1]) * (__pyx_v_src2[1]))) - ((__pyx_v_src1[2]) * (__pyx_v_src2[2]))) - ((__pyx_v_src1[3]) * (__pyx_v_src2[3]))); /* "_glarea_ogl.pyx":215 * cdef float a,b,c,d #px+ * a = src1[0]*src2[0] - src1[1]*src2[1] - src1[2]*src2[2] - src1[3]*src2[3] * b = src1[0]*src2[1] + src1[1]*src2[0] + src1[2]*src2[3] - src1[3]*src2[2] # <<<<<<<<<<<<<< * c = src1[0]*src2[2] - src1[1]*src2[3] + src1[2]*src2[0] + src1[3]*src2[1] * d = src1[0]*src2[3] + src1[1]*src2[2] - src1[2]*src2[1] + src1[3]*src2[0] */ __pyx_v_b = (((((__pyx_v_src1[0]) * (__pyx_v_src2[1])) + ((__pyx_v_src1[1]) * (__pyx_v_src2[0]))) + ((__pyx_v_src1[2]) * (__pyx_v_src2[3]))) - ((__pyx_v_src1[3]) * (__pyx_v_src2[2]))); /* "_glarea_ogl.pyx":216 * a = src1[0]*src2[0] - src1[1]*src2[1] - src1[2]*src2[2] - src1[3]*src2[3] * b = src1[0]*src2[1] + src1[1]*src2[0] + src1[2]*src2[3] - src1[3]*src2[2] * c = src1[0]*src2[2] - src1[1]*src2[3] + src1[2]*src2[0] + src1[3]*src2[1] # <<<<<<<<<<<<<< * d = src1[0]*src2[3] + src1[1]*src2[2] - src1[2]*src2[1] + src1[3]*src2[0] * dest[0] = a */ __pyx_v_c = (((((__pyx_v_src1[0]) * (__pyx_v_src2[2])) - ((__pyx_v_src1[1]) * (__pyx_v_src2[3]))) + ((__pyx_v_src1[2]) * (__pyx_v_src2[0]))) + ((__pyx_v_src1[3]) * (__pyx_v_src2[1]))); /* "_glarea_ogl.pyx":217 * b = src1[0]*src2[1] + src1[1]*src2[0] + src1[2]*src2[3] - src1[3]*src2[2] * c = src1[0]*src2[2] - src1[1]*src2[3] + src1[2]*src2[0] + src1[3]*src2[1] * d = src1[0]*src2[3] + src1[1]*src2[2] - src1[2]*src2[1] + src1[3]*src2[0] # <<<<<<<<<<<<<< * dest[0] = a * dest[1] = b */ __pyx_v_d = (((((__pyx_v_src1[0]) * (__pyx_v_src2[3])) + ((__pyx_v_src1[1]) * (__pyx_v_src2[2]))) - ((__pyx_v_src1[2]) * (__pyx_v_src2[1]))) + ((__pyx_v_src1[3]) * (__pyx_v_src2[0]))); /* "_glarea_ogl.pyx":218 * c = src1[0]*src2[2] - src1[1]*src2[3] + src1[2]*src2[0] + src1[3]*src2[1] * d = src1[0]*src2[3] + src1[1]*src2[2] - src1[2]*src2[1] + src1[3]*src2[0] * dest[0] = a # <<<<<<<<<<<<<< * dest[1] = b * dest[2] = c */ (__pyx_v_dest[0]) = __pyx_v_a; /* "_glarea_ogl.pyx":219 * d = src1[0]*src2[3] + src1[1]*src2[2] - src1[2]*src2[1] + src1[3]*src2[0] * dest[0] = a * dest[1] = b # <<<<<<<<<<<<<< * dest[2] = c * dest[3] = d */ (__pyx_v_dest[1]) = __pyx_v_b; /* "_glarea_ogl.pyx":220 * dest[0] = a * dest[1] = b * dest[2] = c # <<<<<<<<<<<<<< * dest[3] = d * */ (__pyx_v_dest[2]) = __pyx_v_c; /* "_glarea_ogl.pyx":221 * dest[1] = b * dest[2] = c * dest[3] = d # <<<<<<<<<<<<<< * * ##pxm-FUNC P nogil */ (__pyx_v_dest[3]) = __pyx_v_d; /* "_glarea_ogl.pyx":212 * * ##pxm-FUNC P nogil * cdef void quat_mult(gldraw.vec4 &dest, gldraw.vec4 &src1, gldraw.vec4 &src2) nogil: # <<<<<<<<<<<<<< * cdef float a,b,c,d #px+ * a = src1[0]*src2[0] - src1[1]*src2[1] - src1[2]*src2[2] - src1[3]*src2[3] */ /* function exit code */ } /* "_glarea_ogl.pyx":238 * * ##pxm-FUNC P nogil * cdef void quat_to_matrix(gldraw.mat4 &dest, gldraw.vec4 &src) nogil: # <<<<<<<<<<<<<< * cdef float wx2,wy2,wz2, xx2,xy2,xz2, yy2,yz2,zz2 #px+ * cdef float nn #px+ */ static void __pyx_f_11_glarea_ogl_quat_to_matrix(__pyx_t_11_gldraw_ogl_vec4 *__pyx_v_dest, float *__pyx_v_src) { float __pyx_v_wx2; float __pyx_v_wy2; float __pyx_v_wz2; float __pyx_v_xx2; float __pyx_v_xy2; float __pyx_v_xz2; float __pyx_v_yy2; float __pyx_v_yz2; float __pyx_v_zz2; float __pyx_v_nn; float __pyx_t_1; /* "_glarea_ogl.pyx":241 * cdef float wx2,wy2,wz2, xx2,xy2,xz2, yy2,yz2,zz2 #px+ * cdef float nn #px+ * nn = src[0]*src[0] + src[1]*src[1] + src[2]*src[2] + src[3]*src[3] # <<<<<<<<<<<<<< * * wx2 = 2*src[0]*src[1] / nn */ __pyx_v_nn = (((((__pyx_v_src[0]) * (__pyx_v_src[0])) + ((__pyx_v_src[1]) * (__pyx_v_src[1]))) + ((__pyx_v_src[2]) * (__pyx_v_src[2]))) + ((__pyx_v_src[3]) * (__pyx_v_src[3]))); /* "_glarea_ogl.pyx":243 * nn = src[0]*src[0] + src[1]*src[1] + src[2]*src[2] + src[3]*src[3] * * wx2 = 2*src[0]*src[1] / nn # <<<<<<<<<<<<<< * wy2 = 2*src[0]*src[2] / nn * wz2 = 2*src[0]*src[3] / nn */ __pyx_t_1 = ((2.0 * (__pyx_v_src[0])) * (__pyx_v_src[1])); if (unlikely(__pyx_v_nn == 0)) { #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif PyErr_SetString(PyExc_ZeroDivisionError, "float division"); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif __PYX_ERR(0, 243, __pyx_L1_error) } __pyx_v_wx2 = (__pyx_t_1 / __pyx_v_nn); /* "_glarea_ogl.pyx":244 * * wx2 = 2*src[0]*src[1] / nn * wy2 = 2*src[0]*src[2] / nn # <<<<<<<<<<<<<< * wz2 = 2*src[0]*src[3] / nn * xx2 = 2*src[1]*src[1] / nn */ __pyx_t_1 = ((2.0 * (__pyx_v_src[0])) * (__pyx_v_src[2])); if (unlikely(__pyx_v_nn == 0)) { #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif PyErr_SetString(PyExc_ZeroDivisionError, "float division"); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif __PYX_ERR(0, 244, __pyx_L1_error) } __pyx_v_wy2 = (__pyx_t_1 / __pyx_v_nn); /* "_glarea_ogl.pyx":245 * wx2 = 2*src[0]*src[1] / nn * wy2 = 2*src[0]*src[2] / nn * wz2 = 2*src[0]*src[3] / nn # <<<<<<<<<<<<<< * xx2 = 2*src[1]*src[1] / nn * xy2 = 2*src[1]*src[2] / nn */ __pyx_t_1 = ((2.0 * (__pyx_v_src[0])) * (__pyx_v_src[3])); if (unlikely(__pyx_v_nn == 0)) { #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif PyErr_SetString(PyExc_ZeroDivisionError, "float division"); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif __PYX_ERR(0, 245, __pyx_L1_error) } __pyx_v_wz2 = (__pyx_t_1 / __pyx_v_nn); /* "_glarea_ogl.pyx":246 * wy2 = 2*src[0]*src[2] / nn * wz2 = 2*src[0]*src[3] / nn * xx2 = 2*src[1]*src[1] / nn # <<<<<<<<<<<<<< * xy2 = 2*src[1]*src[2] / nn * xz2 = 2*src[1]*src[3] / nn */ __pyx_t_1 = ((2.0 * (__pyx_v_src[1])) * (__pyx_v_src[1])); if (unlikely(__pyx_v_nn == 0)) { #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif PyErr_SetString(PyExc_ZeroDivisionError, "float division"); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif __PYX_ERR(0, 246, __pyx_L1_error) } __pyx_v_xx2 = (__pyx_t_1 / __pyx_v_nn); /* "_glarea_ogl.pyx":247 * wz2 = 2*src[0]*src[3] / nn * xx2 = 2*src[1]*src[1] / nn * xy2 = 2*src[1]*src[2] / nn # <<<<<<<<<<<<<< * xz2 = 2*src[1]*src[3] / nn * yy2 = 2*src[2]*src[2] / nn */ __pyx_t_1 = ((2.0 * (__pyx_v_src[1])) * (__pyx_v_src[2])); if (unlikely(__pyx_v_nn == 0)) { #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif PyErr_SetString(PyExc_ZeroDivisionError, "float division"); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif __PYX_ERR(0, 247, __pyx_L1_error) } __pyx_v_xy2 = (__pyx_t_1 / __pyx_v_nn); /* "_glarea_ogl.pyx":248 * xx2 = 2*src[1]*src[1] / nn * xy2 = 2*src[1]*src[2] / nn * xz2 = 2*src[1]*src[3] / nn # <<<<<<<<<<<<<< * yy2 = 2*src[2]*src[2] / nn * yz2 = 2*src[2]*src[3] / nn */ __pyx_t_1 = ((2.0 * (__pyx_v_src[1])) * (__pyx_v_src[3])); if (unlikely(__pyx_v_nn == 0)) { #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif PyErr_SetString(PyExc_ZeroDivisionError, "float division"); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif __PYX_ERR(0, 248, __pyx_L1_error) } __pyx_v_xz2 = (__pyx_t_1 / __pyx_v_nn); /* "_glarea_ogl.pyx":249 * xy2 = 2*src[1]*src[2] / nn * xz2 = 2*src[1]*src[3] / nn * yy2 = 2*src[2]*src[2] / nn # <<<<<<<<<<<<<< * yz2 = 2*src[2]*src[3] / nn * zz2 = 2*src[3]*src[3] / nn */ __pyx_t_1 = ((2.0 * (__pyx_v_src[2])) * (__pyx_v_src[2])); if (unlikely(__pyx_v_nn == 0)) { #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif PyErr_SetString(PyExc_ZeroDivisionError, "float division"); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif __PYX_ERR(0, 249, __pyx_L1_error) } __pyx_v_yy2 = (__pyx_t_1 / __pyx_v_nn); /* "_glarea_ogl.pyx":250 * xz2 = 2*src[1]*src[3] / nn * yy2 = 2*src[2]*src[2] / nn * yz2 = 2*src[2]*src[3] / nn # <<<<<<<<<<<<<< * zz2 = 2*src[3]*src[3] / nn * */ __pyx_t_1 = ((2.0 * (__pyx_v_src[2])) * (__pyx_v_src[3])); if (unlikely(__pyx_v_nn == 0)) { #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif PyErr_SetString(PyExc_ZeroDivisionError, "float division"); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif __PYX_ERR(0, 250, __pyx_L1_error) } __pyx_v_yz2 = (__pyx_t_1 / __pyx_v_nn); /* "_glarea_ogl.pyx":251 * yy2 = 2*src[2]*src[2] / nn * yz2 = 2*src[2]*src[3] / nn * zz2 = 2*src[3]*src[3] / nn # <<<<<<<<<<<<<< * * dest[0][0] = 1-yy2-zz2; dest[1][0] = xy2-wz2; dest[2][0] = xz2+wy2 */ __pyx_t_1 = ((2.0 * (__pyx_v_src[3])) * (__pyx_v_src[3])); if (unlikely(__pyx_v_nn == 0)) { #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif PyErr_SetString(PyExc_ZeroDivisionError, "float division"); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif __PYX_ERR(0, 251, __pyx_L1_error) } __pyx_v_zz2 = (__pyx_t_1 / __pyx_v_nn); /* "_glarea_ogl.pyx":253 * zz2 = 2*src[3]*src[3] / nn * * dest[0][0] = 1-yy2-zz2; dest[1][0] = xy2-wz2; dest[2][0] = xz2+wy2 # <<<<<<<<<<<<<< * dest[0][1] = xy2+wz2; dest[1][1] = 1-xx2-zz2; dest[2][1] = yz2-wx2 * dest[0][2] = xz2-wy2; dest[1][2] = yz2+wx2; dest[2][2] = 1-xx2-yy2 */ ((__pyx_v_dest[0])[0]) = ((1.0 - __pyx_v_yy2) - __pyx_v_zz2); ((__pyx_v_dest[1])[0]) = (__pyx_v_xy2 - __pyx_v_wz2); ((__pyx_v_dest[2])[0]) = (__pyx_v_xz2 + __pyx_v_wy2); /* "_glarea_ogl.pyx":254 * * dest[0][0] = 1-yy2-zz2; dest[1][0] = xy2-wz2; dest[2][0] = xz2+wy2 * dest[0][1] = xy2+wz2; dest[1][1] = 1-xx2-zz2; dest[2][1] = yz2-wx2 # <<<<<<<<<<<<<< * dest[0][2] = xz2-wy2; dest[1][2] = yz2+wx2; dest[2][2] = 1-xx2-yy2 * */ ((__pyx_v_dest[0])[1]) = (__pyx_v_xy2 + __pyx_v_wz2); ((__pyx_v_dest[1])[1]) = ((1.0 - __pyx_v_xx2) - __pyx_v_zz2); ((__pyx_v_dest[2])[1]) = (__pyx_v_yz2 - __pyx_v_wx2); /* "_glarea_ogl.pyx":255 * dest[0][0] = 1-yy2-zz2; dest[1][0] = xy2-wz2; dest[2][0] = xz2+wy2 * dest[0][1] = xy2+wz2; dest[1][1] = 1-xx2-zz2; dest[2][1] = yz2-wx2 * dest[0][2] = xz2-wy2; dest[1][2] = yz2+wx2; dest[2][2] = 1-xx2-yy2 # <<<<<<<<<<<<<< * * ##pxm-FUNC P nogil */ ((__pyx_v_dest[0])[2]) = (__pyx_v_xz2 - __pyx_v_wy2); ((__pyx_v_dest[1])[2]) = (__pyx_v_yz2 + __pyx_v_wx2); ((__pyx_v_dest[2])[2]) = ((1.0 - __pyx_v_xx2) - __pyx_v_yy2); /* "_glarea_ogl.pyx":238 * * ##pxm-FUNC P nogil * cdef void quat_to_matrix(gldraw.mat4 &dest, gldraw.vec4 &src) nogil: # <<<<<<<<<<<<<< * cdef float wx2,wy2,wz2, xx2,xy2,xz2, yy2,yz2,zz2 #px+ * cdef float nn #px+ */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_WriteUnraisable("_glarea_ogl.quat_to_matrix", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 1); __pyx_L0:; } /* "_glarea_ogl.pyx":258 * * ##pxm-FUNC P nogil * cdef void quat_from_angle_axis(gldraw.vec4 &quat, float angle, float x, float y, float z) nogil: # <<<<<<<<<<<<<< * cdef float sa, ca #px+ * ca = cos(angle) */ static void __pyx_f_11_glarea_ogl_quat_from_angle_axis(float *__pyx_v_quat, float __pyx_v_angle, float __pyx_v_x, float __pyx_v_y, float __pyx_v_z) { float __pyx_v_sa; float __pyx_v_ca; /* "_glarea_ogl.pyx":260 * cdef void quat_from_angle_axis(gldraw.vec4 &quat, float angle, float x, float y, float z) nogil: * cdef float sa, ca #px+ * ca = cos(angle) # <<<<<<<<<<<<<< * sa = sin(angle) * quat[0] = ca */ __pyx_v_ca = cos(__pyx_v_angle); /* "_glarea_ogl.pyx":261 * cdef float sa, ca #px+ * ca = cos(angle) * sa = sin(angle) # <<<<<<<<<<<<<< * quat[0] = ca * quat[1] = sa*x */ __pyx_v_sa = sin(__pyx_v_angle); /* "_glarea_ogl.pyx":262 * ca = cos(angle) * sa = sin(angle) * quat[0] = ca # <<<<<<<<<<<<<< * quat[1] = sa*x * quat[2] = sa*y */ (__pyx_v_quat[0]) = __pyx_v_ca; /* "_glarea_ogl.pyx":263 * sa = sin(angle) * quat[0] = ca * quat[1] = sa*x # <<<<<<<<<<<<<< * quat[2] = sa*y * quat[3] = sa*z */ (__pyx_v_quat[1]) = (__pyx_v_sa * __pyx_v_x); /* "_glarea_ogl.pyx":264 * quat[0] = ca * quat[1] = sa*x * quat[2] = sa*y # <<<<<<<<<<<<<< * quat[3] = sa*z * */ (__pyx_v_quat[2]) = (__pyx_v_sa * __pyx_v_y); /* "_glarea_ogl.pyx":265 * quat[1] = sa*x * quat[2] = sa*y * quat[3] = sa*z # <<<<<<<<<<<<<< * * ### module state */ (__pyx_v_quat[3]) = (__pyx_v_sa * __pyx_v_z); /* "_glarea_ogl.pyx":258 * * ##pxm-FUNC P nogil * cdef void quat_from_angle_axis(gldraw.vec4 &quat, float angle, float x, float y, float z) nogil: # <<<<<<<<<<<<<< * cdef float sa, ca #px+ * ca = cos(angle) */ /* function exit code */ } /* "_glarea_ogl.pyx":269 * ### module state * * def init_engine(): # <<<<<<<<<<<<<< * gldraw.init_gldraw() * if debug & DEBUG_MSGEXT: */ /* Python wrapper */ static PyObject *__pyx_pw_11_glarea_ogl_3init_engine(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/ static PyMethodDef __pyx_mdef_11_glarea_ogl_3init_engine = {"init_engine", (PyCFunction)__pyx_pw_11_glarea_ogl_3init_engine, METH_NOARGS, 0}; static PyObject *__pyx_pw_11_glarea_ogl_3init_engine(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("init_engine (wrapper)", 0); __pyx_r = __pyx_pf_11_glarea_ogl_2init_engine(__pyx_self); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11_glarea_ogl_2init_engine(CYTHON_UNUSED PyObject *__pyx_self) { float __pyx_v_fovy_angle; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; float __pyx_t_4; __Pyx_RefNannySetupContext("init_engine", 0); /* "_glarea_ogl.pyx":270 * * def init_engine(): * gldraw.init_gldraw() # <<<<<<<<<<<<<< * if debug & DEBUG_MSGEXT: * print('init module:', __name__) */ __pyx_f_11_gldraw_ogl_init_gldraw(); /* "_glarea_ogl.pyx":271 * def init_engine(): * gldraw.init_gldraw() * if debug & DEBUG_MSGEXT: # <<<<<<<<<<<<<< * print('init module:', __name__) * print(' from package:', __package__) */ __pyx_t_1 = ((__pyx_v_11_glarea_ogl_debug & __pyx_e_11_glarea_ogl_DEBUG_MSGEXT) != 0); if (__pyx_t_1) { /* "_glarea_ogl.pyx":272 * gldraw.init_gldraw() * if debug & DEBUG_MSGEXT: * print('init module:', __name__) # <<<<<<<<<<<<<< * print(' from package:', __package__) * print(' compiled:', __compiled) */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 272, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 272, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_kp_u_init_module); __Pyx_GIVEREF(__pyx_kp_u_init_module); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_kp_u_init_module); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 272, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_glarea_ogl.pyx":273 * if debug & DEBUG_MSGEXT: * print('init module:', __name__) * print(' from package:', __package__) # <<<<<<<<<<<<<< * print(' compiled:', __compiled) * print(' GL-type: ogl') #px+ */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_package); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 273, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 273, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_kp_u_from_package); __Pyx_GIVEREF(__pyx_kp_u_from_package); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_kp_u_from_package); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 273, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_glarea_ogl.pyx":274 * print('init module:', __name__) * print(' from package:', __package__) * print(' compiled:', __compiled) # <<<<<<<<<<<<<< * print(' GL-type: ogl') #px+ * print(' OFFSCREEN:', OFFSCREEN) */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_compiled_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 274, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 274, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_kp_u_compiled); __Pyx_GIVEREF(__pyx_kp_u_compiled); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_kp_u_compiled); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 274, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_glarea_ogl.pyx":275 * print(' from package:', __package__) * print(' compiled:', __compiled) * print(' GL-type: ogl') #px+ # <<<<<<<<<<<<<< * print(' OFFSCREEN:', OFFSCREEN) * */ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_tuple_, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 275, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_glarea_ogl.pyx":276 * print(' compiled:', __compiled) * print(' GL-type: ogl') #px+ * print(' OFFSCREEN:', OFFSCREEN) # <<<<<<<<<<<<<< * * uidata.synced = False */ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_tuple__2, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 276, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_glarea_ogl.pyx":271 * def init_engine(): * gldraw.init_gldraw() * if debug & DEBUG_MSGEXT: # <<<<<<<<<<<<<< * print('init module:', __name__) * print(' from package:', __package__) */ } /* "_glarea_ogl.pyx":278 * print(' OFFSCREEN:', OFFSCREEN) * * uidata.synced = False # <<<<<<<<<<<<<< * uidata.background_changed = True * uidata.viewport_changed = True */ __pyx_v_11_glarea_ogl_uidata.synced = 0; /* "_glarea_ogl.pyx":279 * * uidata.synced = False * uidata.background_changed = True # <<<<<<<<<<<<<< * uidata.viewport_changed = True * uidata.rotation_changed = True */ __pyx_v_11_glarea_ogl_uidata.background_changed = 1; /* "_glarea_ogl.pyx":280 * uidata.synced = False * uidata.background_changed = True * uidata.viewport_changed = True # <<<<<<<<<<<<<< * uidata.rotation_changed = True * uidata.rotation_quat_changed = False */ __pyx_v_11_glarea_ogl_uidata.viewport_changed = 1; /* "_glarea_ogl.pyx":281 * uidata.background_changed = True * uidata.viewport_changed = True * uidata.rotation_changed = True # <<<<<<<<<<<<<< * uidata.rotation_quat_changed = False * uidata.frustum_changed = True */ __pyx_v_11_glarea_ogl_uidata.rotation_changed = 1; /* "_glarea_ogl.pyx":282 * uidata.viewport_changed = True * uidata.rotation_changed = True * uidata.rotation_quat_changed = False # <<<<<<<<<<<<<< * uidata.frustum_changed = True * uidata.multisample_changed = 1 */ __pyx_v_11_glarea_ogl_uidata.rotation_quat_changed = 0; /* "_glarea_ogl.pyx":283 * uidata.rotation_changed = True * uidata.rotation_quat_changed = False * uidata.frustum_changed = True # <<<<<<<<<<<<<< * uidata.multisample_changed = 1 * uidata.transformation_changed = False */ __pyx_v_11_glarea_ogl_uidata.frustum_changed = 1; /* "_glarea_ogl.pyx":284 * uidata.rotation_quat_changed = False * uidata.frustum_changed = True * uidata.multisample_changed = 1 # <<<<<<<<<<<<<< * uidata.transformation_changed = False * uidata.animation_changed = 0 */ __pyx_v_11_glarea_ogl_uidata.multisample_changed = 1; /* "_glarea_ogl.pyx":285 * uidata.frustum_changed = True * uidata.multisample_changed = 1 * uidata.transformation_changed = False # <<<<<<<<<<<<<< * uidata.animation_changed = 0 * uidata.data_changed = False */ __pyx_v_11_glarea_ogl_uidata.transformation_changed = 0; /* "_glarea_ogl.pyx":286 * uidata.multisample_changed = 1 * uidata.transformation_changed = False * uidata.animation_changed = 0 # <<<<<<<<<<<<<< * uidata.data_changed = False * uidata.shaders_changed = False */ __pyx_v_11_glarea_ogl_uidata.animation_changed = 0; /* "_glarea_ogl.pyx":287 * uidata.transformation_changed = False * uidata.animation_changed = 0 * uidata.data_changed = False # <<<<<<<<<<<<<< * uidata.shaders_changed = False * */ __pyx_v_11_glarea_ogl_uidata.data_changed = 0; /* "_glarea_ogl.pyx":288 * uidata.animation_changed = 0 * uidata.data_changed = False * uidata.shaders_changed = False # <<<<<<<<<<<<<< * * uidata.bg_red = 0.0 */ __pyx_v_11_glarea_ogl_uidata.shaders_changed = 0; /* "_glarea_ogl.pyx":290 * uidata.shaders_changed = False * * uidata.bg_red = 0.0 # <<<<<<<<<<<<<< * uidata.bg_green = 0.0 * uidata.bg_blue = 0.0 */ __pyx_v_11_glarea_ogl_uidata.bg_red = 0.0; /* "_glarea_ogl.pyx":291 * * uidata.bg_red = 0.0 * uidata.bg_green = 0.0 # <<<<<<<<<<<<<< * uidata.bg_blue = 0.0 * renderdata.y = 0 */ __pyx_v_11_glarea_ogl_uidata.bg_green = 0.0; /* "_glarea_ogl.pyx":292 * uidata.bg_red = 0.0 * uidata.bg_green = 0.0 * uidata.bg_blue = 0.0 # <<<<<<<<<<<<<< * renderdata.y = 0 * renderdata.width = 1 */ __pyx_v_11_glarea_ogl_uidata.bg_blue = 0.0; /* "_glarea_ogl.pyx":293 * uidata.bg_green = 0.0 * uidata.bg_blue = 0.0 * renderdata.y = 0 # <<<<<<<<<<<<<< * renderdata.width = 1 * renderdata.height = 1 */ __pyx_v_11_glarea_ogl_renderdata.y = 0; /* "_glarea_ogl.pyx":294 * uidata.bg_blue = 0.0 * renderdata.y = 0 * renderdata.width = 1 # <<<<<<<<<<<<<< * renderdata.height = 1 * uidata.rotationxhalf = 0.0 */ __pyx_v_11_glarea_ogl_renderdata.width = 1; /* "_glarea_ogl.pyx":295 * renderdata.y = 0 * renderdata.width = 1 * renderdata.height = 1 # <<<<<<<<<<<<<< * uidata.rotationxhalf = 0.0 * uidata.rotationyhalf = 0.0 */ __pyx_v_11_glarea_ogl_renderdata.height = 1; /* "_glarea_ogl.pyx":296 * renderdata.width = 1 * renderdata.height = 1 * uidata.rotationxhalf = 0.0 # <<<<<<<<<<<<<< * uidata.rotationyhalf = 0.0 * quat_set_identity(uidata.rotation_quat) */ __pyx_v_11_glarea_ogl_uidata.rotationxhalf = 0.0; /* "_glarea_ogl.pyx":297 * renderdata.height = 1 * uidata.rotationxhalf = 0.0 * uidata.rotationyhalf = 0.0 # <<<<<<<<<<<<<< * quat_set_identity(uidata.rotation_quat) * uidata.pick_x = -1 */ __pyx_v_11_glarea_ogl_uidata.rotationyhalf = 0.0; /* "_glarea_ogl.pyx":298 * uidata.rotationxhalf = 0.0 * uidata.rotationyhalf = 0.0 * quat_set_identity(uidata.rotation_quat) # <<<<<<<<<<<<<< * uidata.pick_x = -1 * uidata.pick_y = -1 */ __pyx_f_11_glarea_ogl_quat_set_identity(__pyx_v_11_glarea_ogl_uidata.rotation_quat); /* "_glarea_ogl.pyx":299 * uidata.rotationyhalf = 0.0 * quat_set_identity(uidata.rotation_quat) * uidata.pick_x = -1 # <<<<<<<<<<<<<< * uidata.pick_y = -1 * renderdata.pick_x = -1 */ __pyx_v_11_glarea_ogl_uidata.pick_x = -1; /* "_glarea_ogl.pyx":300 * quat_set_identity(uidata.rotation_quat) * uidata.pick_x = -1 * uidata.pick_y = -1 # <<<<<<<<<<<<<< * renderdata.pick_x = -1 * renderdata.pick_y = -1 */ __pyx_v_11_glarea_ogl_uidata.pick_y = -1; /* "_glarea_ogl.pyx":301 * uidata.pick_x = -1 * uidata.pick_y = -1 * renderdata.pick_x = -1 # <<<<<<<<<<<<<< * renderdata.pick_y = -1 * cdef float fovy_angle # field of view angle #px+ */ __pyx_v_11_glarea_ogl_renderdata.pick_x = -1; /* "_glarea_ogl.pyx":302 * uidata.pick_y = -1 * renderdata.pick_x = -1 * renderdata.pick_y = -1 # <<<<<<<<<<<<<< * cdef float fovy_angle # field of view angle #px+ * fovy_angle = 33.0 # field of view angle */ __pyx_v_11_glarea_ogl_renderdata.pick_y = -1; /* "_glarea_ogl.pyx":304 * renderdata.pick_y = -1 * cdef float fovy_angle # field of view angle #px+ * fovy_angle = 33.0 # field of view angle # <<<<<<<<<<<<<< * uidata.fovy_radius = tan(fovy_angle * M_PI / 360.0) * uidata.fovy_radius_zoom = uidata.fovy_radius # zoom == 1. */ __pyx_v_fovy_angle = 33.0; /* "_glarea_ogl.pyx":305 * cdef float fovy_angle # field of view angle #px+ * fovy_angle = 33.0 # field of view angle * uidata.fovy_radius = tan(fovy_angle * M_PI / 360.0) # <<<<<<<<<<<<<< * uidata.fovy_radius_zoom = uidata.fovy_radius # zoom == 1. * uidata.bounding_sphere_radius = 1. */ __pyx_v_11_glarea_ogl_uidata.fovy_radius = tan(((__pyx_v_fovy_angle * M_PI) / 360.0)); /* "_glarea_ogl.pyx":306 * fovy_angle = 33.0 # field of view angle * uidata.fovy_radius = tan(fovy_angle * M_PI / 360.0) * uidata.fovy_radius_zoom = uidata.fovy_radius # zoom == 1. # <<<<<<<<<<<<<< * uidata.bounding_sphere_radius = 1. * uidata.angle = 0 */ __pyx_t_4 = __pyx_v_11_glarea_ogl_uidata.fovy_radius; __pyx_v_11_glarea_ogl_uidata.fovy_radius_zoom = __pyx_t_4; /* "_glarea_ogl.pyx":307 * uidata.fovy_radius = tan(fovy_angle * M_PI / 360.0) * uidata.fovy_radius_zoom = uidata.fovy_radius # zoom == 1. * uidata.bounding_sphere_radius = 1. # <<<<<<<<<<<<<< * uidata.angle = 0 * */ __pyx_v_11_glarea_ogl_uidata.bounding_sphere_radius = 1.; /* "_glarea_ogl.pyx":308 * uidata.fovy_radius_zoom = uidata.fovy_radius # zoom == 1. * uidata.bounding_sphere_radius = 1. * uidata.angle = 0 # <<<<<<<<<<<<<< * * # fill modelview_matrix */ __pyx_v_11_glarea_ogl_uidata.angle = 0.0; /* "_glarea_ogl.pyx":311 * * # fill modelview_matrix * gldraw.matrix_set_identity(renderdata.modelview_matrix) # <<<<<<<<<<<<<< * # fill projection_matrix * gldraw.matrix_set_identity(renderdata.projection_matrix) */ __pyx_f_11_gldraw_ogl_matrix_set_identity(__pyx_v_11_glarea_ogl_renderdata.modelview_matrix); /* "_glarea_ogl.pyx":313 * gldraw.matrix_set_identity(renderdata.modelview_matrix) * # fill projection_matrix * gldraw.matrix_set_identity(renderdata.projection_matrix) # <<<<<<<<<<<<<< * renderdata.projection_matrix[2][3] = -1. * renderdata.projection_matrix[3][3] = 0. */ __pyx_f_11_gldraw_ogl_matrix_set_identity(__pyx_v_11_glarea_ogl_renderdata.projection_matrix); /* "_glarea_ogl.pyx":314 * # fill projection_matrix * gldraw.matrix_set_identity(renderdata.projection_matrix) * renderdata.projection_matrix[2][3] = -1. # <<<<<<<<<<<<<< * renderdata.projection_matrix[3][3] = 0. * # fill picking_matrix */ ((__pyx_v_11_glarea_ogl_renderdata.projection_matrix[2])[3]) = -1.; /* "_glarea_ogl.pyx":315 * gldraw.matrix_set_identity(renderdata.projection_matrix) * renderdata.projection_matrix[2][3] = -1. * renderdata.projection_matrix[3][3] = 0. # <<<<<<<<<<<<<< * # fill picking_matrix * gldraw.matrix_set_identity(renderdata.picking_matrix) */ ((__pyx_v_11_glarea_ogl_renderdata.projection_matrix[3])[3]) = 0.; /* "_glarea_ogl.pyx":317 * renderdata.projection_matrix[3][3] = 0. * # fill picking_matrix * gldraw.matrix_set_identity(renderdata.picking_matrix) # <<<<<<<<<<<<<< * * renderdata.shader_changed = False */ __pyx_f_11_gldraw_ogl_matrix_set_identity(__pyx_v_11_glarea_ogl_renderdata.picking_matrix); /* "_glarea_ogl.pyx":319 * gldraw.matrix_set_identity(renderdata.picking_matrix) * * renderdata.shader_changed = False # <<<<<<<<<<<<<< * renderdata.prog_render = 0 * renderdata.prog_hud = 0 */ __pyx_v_11_glarea_ogl_renderdata.shader_changed = 0; /* "_glarea_ogl.pyx":320 * * renderdata.shader_changed = False * renderdata.prog_render = 0 # <<<<<<<<<<<<<< * renderdata.prog_hud = 0 * renderdata.prog_pick = 0 */ __pyx_v_11_glarea_ogl_renderdata.prog_render = 0; /* "_glarea_ogl.pyx":321 * renderdata.shader_changed = False * renderdata.prog_render = 0 * renderdata.prog_hud = 0 # <<<<<<<<<<<<<< * renderdata.prog_pick = 0 * */ __pyx_v_11_glarea_ogl_renderdata.prog_hud = 0; /* "_glarea_ogl.pyx":322 * renderdata.prog_render = 0 * renderdata.prog_hud = 0 * renderdata.prog_pick = 0 # <<<<<<<<<<<<<< * * */ __pyx_v_11_glarea_ogl_renderdata.prog_pick = 0; /* "_glarea_ogl.pyx":269 * ### module state * * def init_engine(): # <<<<<<<<<<<<<< * gldraw.init_gldraw() * if debug & DEBUG_MSGEXT: */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("_glarea_ogl.init_engine", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_glarea_ogl.pyx":326 * * ##pxm-FUNC P nogil * cdef void _sync_modelview_matrix_translation() nogil: # <<<<<<<<<<<<<< * renderdata.modelview_matrix[3][2] = -uidata.bounding_sphere_radius * (1/uidata.fovy_radius + 1.) * */ static void __pyx_f_11_glarea_ogl__sync_modelview_matrix_translation(void) { /* "_glarea_ogl.pyx":327 * ##pxm-FUNC P nogil * cdef void _sync_modelview_matrix_translation() nogil: * renderdata.modelview_matrix[3][2] = -uidata.bounding_sphere_radius * (1/uidata.fovy_radius + 1.) # <<<<<<<<<<<<<< * * ##pxm-FUNC P nogil */ if (unlikely(__pyx_v_11_glarea_ogl_uidata.fovy_radius == 0)) { #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif PyErr_SetString(PyExc_ZeroDivisionError, "float division"); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif __PYX_ERR(0, 327, __pyx_L1_error) } ((__pyx_v_11_glarea_ogl_renderdata.modelview_matrix[3])[2]) = ((-__pyx_v_11_glarea_ogl_uidata.bounding_sphere_radius) * ((1.0 / __pyx_v_11_glarea_ogl_uidata.fovy_radius) + 1.)); /* "_glarea_ogl.pyx":326 * * ##pxm-FUNC P nogil * cdef void _sync_modelview_matrix_translation() nogil: # <<<<<<<<<<<<<< * renderdata.modelview_matrix[3][2] = -uidata.bounding_sphere_radius * (1/uidata.fovy_radius + 1.) * */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_WriteUnraisable("_glarea_ogl._sync_modelview_matrix_translation", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 1); __pyx_L0:; } /* "_glarea_ogl.pyx":330 * * ##pxm-FUNC P nogil * cdef void _sync_modelview_matrix_rotation() nogil: # <<<<<<<<<<<<<< * cdef gldraw.vec4 *M #px+ * cdef float sx, sy, cx, cy #px+ */ static void __pyx_f_11_glarea_ogl__sync_modelview_matrix_rotation(void) { __pyx_t_11_gldraw_ogl_vec4 *__pyx_v_M; float __pyx_v_sx; float __pyx_v_sy; float __pyx_v_cx; float __pyx_v_cy; float __pyx_v_m00; float __pyx_v_m11; float __pyx_v_m12; float __pyx_v_m20; /* "_glarea_ogl.pyx":335 * cdef float m00, m11, m12, m20 #px+ * * M = &renderdata.modelview_matrix[0][0] #px/ # <<<<<<<<<<<<<< * #M = renderdata.modelview_matrix * */ __pyx_v_M = ((__pyx_t_11_gldraw_ogl_vec4 *)(&((__pyx_v_11_glarea_ogl_renderdata.modelview_matrix[0])[0]))); /* "_glarea_ogl.pyx":338 * #M = renderdata.modelview_matrix * * sx = sin(uidata.rotationxhalf) # <<<<<<<<<<<<<< * sy = sin(uidata.rotationyhalf) * cx = cos(uidata.rotationxhalf) */ __pyx_v_sx = sin(__pyx_v_11_glarea_ogl_uidata.rotationxhalf); /* "_glarea_ogl.pyx":339 * * sx = sin(uidata.rotationxhalf) * sy = sin(uidata.rotationyhalf) # <<<<<<<<<<<<<< * cx = cos(uidata.rotationxhalf) * cy = cos(uidata.rotationyhalf) */ __pyx_v_sy = sin(__pyx_v_11_glarea_ogl_uidata.rotationyhalf); /* "_glarea_ogl.pyx":340 * sx = sin(uidata.rotationxhalf) * sy = sin(uidata.rotationyhalf) * cx = cos(uidata.rotationxhalf) # <<<<<<<<<<<<<< * cy = cos(uidata.rotationyhalf) * */ __pyx_v_cx = cos(__pyx_v_11_glarea_ogl_uidata.rotationxhalf); /* "_glarea_ogl.pyx":341 * sy = sin(uidata.rotationyhalf) * cx = cos(uidata.rotationxhalf) * cy = cos(uidata.rotationyhalf) # <<<<<<<<<<<<<< * * m00 = 2*cx*cx - 1. */ __pyx_v_cy = cos(__pyx_v_11_glarea_ogl_uidata.rotationyhalf); /* "_glarea_ogl.pyx":343 * cy = cos(uidata.rotationyhalf) * * m00 = 2*cx*cx - 1. # <<<<<<<<<<<<<< * m11 = 2*cy*cy - 1. * m12 = 2*sy*cy */ __pyx_v_m00 = (((2.0 * __pyx_v_cx) * __pyx_v_cx) - 1.); /* "_glarea_ogl.pyx":344 * * m00 = 2*cx*cx - 1. * m11 = 2*cy*cy - 1. # <<<<<<<<<<<<<< * m12 = 2*sy*cy * m20 = 2*sx*cx */ __pyx_v_m11 = (((2.0 * __pyx_v_cy) * __pyx_v_cy) - 1.); /* "_glarea_ogl.pyx":345 * m00 = 2*cx*cx - 1. * m11 = 2*cy*cy - 1. * m12 = 2*sy*cy # <<<<<<<<<<<<<< * m20 = 2*sx*cx * # pylint: disable=C0321,C0326 */ __pyx_v_m12 = ((2.0 * __pyx_v_sy) * __pyx_v_cy); /* "_glarea_ogl.pyx":346 * m11 = 2*cy*cy - 1. * m12 = 2*sy*cy * m20 = 2*sx*cx # <<<<<<<<<<<<<< * # pylint: disable=C0321,C0326 * M[0][0] = m00; M[1][0] = 0.; M[2][0] = m20 */ __pyx_v_m20 = ((2.0 * __pyx_v_sx) * __pyx_v_cx); /* "_glarea_ogl.pyx":348 * m20 = 2*sx*cx * # pylint: disable=C0321,C0326 * M[0][0] = m00; M[1][0] = 0.; M[2][0] = m20 # <<<<<<<<<<<<<< * M[0][1] = m12 * m20; M[1][1] = m11; M[2][1] = -m00 * m12 * M[0][2] = -m11 * m20; M[1][2] = m12; M[2][2] = m00 * m11 */ ((__pyx_v_M[0])[0]) = __pyx_v_m00; ((__pyx_v_M[1])[0]) = 0.; ((__pyx_v_M[2])[0]) = __pyx_v_m20; /* "_glarea_ogl.pyx":349 * # pylint: disable=C0321,C0326 * M[0][0] = m00; M[1][0] = 0.; M[2][0] = m20 * M[0][1] = m12 * m20; M[1][1] = m11; M[2][1] = -m00 * m12 # <<<<<<<<<<<<<< * M[0][2] = -m11 * m20; M[1][2] = m12; M[2][2] = m00 * m11 * */ ((__pyx_v_M[0])[1]) = (__pyx_v_m12 * __pyx_v_m20); ((__pyx_v_M[1])[1]) = __pyx_v_m11; ((__pyx_v_M[2])[1]) = ((-__pyx_v_m00) * __pyx_v_m12); /* "_glarea_ogl.pyx":350 * M[0][0] = m00; M[1][0] = 0.; M[2][0] = m20 * M[0][1] = m12 * m20; M[1][1] = m11; M[2][1] = -m00 * m12 * M[0][2] = -m11 * m20; M[1][2] = m12; M[2][2] = m00 * m11 # <<<<<<<<<<<<<< * * def set_rotation_rel(x, y): */ ((__pyx_v_M[0])[2]) = ((-__pyx_v_m11) * __pyx_v_m20); ((__pyx_v_M[1])[2]) = __pyx_v_m12; ((__pyx_v_M[2])[2]) = (__pyx_v_m00 * __pyx_v_m11); /* "_glarea_ogl.pyx":330 * * ##pxm-FUNC P nogil * cdef void _sync_modelview_matrix_rotation() nogil: # <<<<<<<<<<<<<< * cdef gldraw.vec4 *M #px+ * cdef float sx, sy, cx, cy #px+ */ /* function exit code */ } /* "_glarea_ogl.pyx":352 * M[0][2] = -m11 * m20; M[1][2] = m12; M[2][2] = m00 * m11 * * def set_rotation_rel(x, y): # <<<<<<<<<<<<<< * cdef gldraw.vec4 quat #px+ * cdef float nxy #px+ */ /* Python wrapper */ static PyObject *__pyx_pw_11_glarea_ogl_5set_rotation_rel(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static PyMethodDef __pyx_mdef_11_glarea_ogl_5set_rotation_rel = {"set_rotation_rel", (PyCFunction)__pyx_pw_11_glarea_ogl_5set_rotation_rel, METH_VARARGS|METH_KEYWORDS, 0}; static PyObject *__pyx_pw_11_glarea_ogl_5set_rotation_rel(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_x = 0; PyObject *__pyx_v_y = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("set_rotation_rel (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_y,0}; PyObject* values[2] = {0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("set_rotation_rel", 1, 2, 2, 1); __PYX_ERR(0, 352, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_rotation_rel") < 0)) __PYX_ERR(0, 352, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); } __pyx_v_x = values[0]; __pyx_v_y = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("set_rotation_rel", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 352, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("_glarea_ogl.set_rotation_rel", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11_glarea_ogl_4set_rotation_rel(__pyx_self, __pyx_v_x, __pyx_v_y); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11_glarea_ogl_4set_rotation_rel(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_x, PyObject *__pyx_v_y) { __pyx_t_11_gldraw_ogl_vec4 __pyx_v_quat; float __pyx_v_nxy; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; double __pyx_t_4; float __pyx_t_5; float __pyx_t_6; __Pyx_RefNannySetupContext("set_rotation_rel", 0); /* "_glarea_ogl.pyx":355 * cdef gldraw.vec4 quat #px+ * cdef float nxy #px+ * nxy = sqrt(x*x + y*y) # <<<<<<<<<<<<<< * quat_from_angle_axis(quat, nxy/50., y/nxy, x/nxy, 0.) * quat_mult(uidata.rotation_quat, quat, uidata.rotation_quat) */ __pyx_t_1 = PyNumber_Multiply(__pyx_v_x, __pyx_v_x); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 355, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyNumber_Multiply(__pyx_v_y, __pyx_v_y); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 355, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyNumber_Add(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 355, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_t_3); if (unlikely((__pyx_t_4 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 355, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_nxy = sqrt(__pyx_t_4); /* "_glarea_ogl.pyx":356 * cdef float nxy #px+ * nxy = sqrt(x*x + y*y) * quat_from_angle_axis(quat, nxy/50., y/nxy, x/nxy, 0.) # <<<<<<<<<<<<<< * quat_mult(uidata.rotation_quat, quat, uidata.rotation_quat) * */ __pyx_t_3 = PyFloat_FromDouble(__pyx_v_nxy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 356, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = __Pyx_PyNumber_Divide(__pyx_v_y, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 356, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_5 = __pyx_PyFloat_AsFloat(__pyx_t_2); if (unlikely((__pyx_t_5 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 356, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyFloat_FromDouble(__pyx_v_nxy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 356, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_v_x, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 356, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_6 = __pyx_PyFloat_AsFloat(__pyx_t_3); if (unlikely((__pyx_t_6 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 356, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_f_11_glarea_ogl_quat_from_angle_axis(__pyx_v_quat, (((double)__pyx_v_nxy) / 50.), __pyx_t_5, __pyx_t_6, 0.); /* "_glarea_ogl.pyx":357 * nxy = sqrt(x*x + y*y) * quat_from_angle_axis(quat, nxy/50., y/nxy, x/nxy, 0.) * quat_mult(uidata.rotation_quat, quat, uidata.rotation_quat) # <<<<<<<<<<<<<< * * # avoid rotation about z-axis */ __pyx_f_11_glarea_ogl_quat_mult(__pyx_v_11_glarea_ogl_uidata.rotation_quat, __pyx_v_quat, __pyx_v_11_glarea_ogl_uidata.rotation_quat); /* "_glarea_ogl.pyx":367 * #quat_mult(uidata.rotation_quat, quat, uidata.rotation_quat) * * uidata.rotation_quat_changed = True # <<<<<<<<<<<<<< * * ##pxm-FUNC P nogil */ __pyx_v_11_glarea_ogl_uidata.rotation_quat_changed = 1; /* "_glarea_ogl.pyx":352 * M[0][2] = -m11 * m20; M[1][2] = m12; M[2][2] = m00 * m11 * * def set_rotation_rel(x, y): # <<<<<<<<<<<<<< * cdef gldraw.vec4 quat #px+ * cdef float nxy #px+ */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("_glarea_ogl.set_rotation_rel", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_glarea_ogl.pyx":370 * * ##pxm-FUNC P nogil * cdef void _sync_projection_matrix() nogil: # <<<<<<<<<<<<<< * # Taken from the OpenGL documentation for glFrustum: * # glFrustum describes a perspective matrix that produces a perspective projection. */ static void __pyx_f_11_glarea_ogl__sync_projection_matrix(void) { float __pyx_v__1_aspectx; float __pyx_v__1_aspecty; int __pyx_t_1; double __pyx_t_2; /* "_glarea_ogl.pyx":408 * * cdef float _1_aspectx, _1_aspecty #px+ * if renderdata.width < renderdata.height: # <<<<<<<<<<<<<< * _1_aspectx = 1. * _1_aspecty = renderdata.width / renderdata.height */ __pyx_t_1 = ((__pyx_v_11_glarea_ogl_renderdata.width < __pyx_v_11_glarea_ogl_renderdata.height) != 0); if (__pyx_t_1) { /* "_glarea_ogl.pyx":409 * cdef float _1_aspectx, _1_aspecty #px+ * if renderdata.width < renderdata.height: * _1_aspectx = 1. # <<<<<<<<<<<<<< * _1_aspecty = renderdata.width / renderdata.height * else: */ __pyx_v__1_aspectx = 1.; /* "_glarea_ogl.pyx":410 * if renderdata.width < renderdata.height: * _1_aspectx = 1. * _1_aspecty = renderdata.width / renderdata.height # <<<<<<<<<<<<<< * else: * _1_aspectx = renderdata.height / renderdata.width */ if (unlikely(__pyx_v_11_glarea_ogl_renderdata.height == 0)) { #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif PyErr_SetString(PyExc_ZeroDivisionError, "float division"); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif __PYX_ERR(0, 410, __pyx_L1_error) } __pyx_v__1_aspecty = (((double)__pyx_v_11_glarea_ogl_renderdata.width) / ((double)__pyx_v_11_glarea_ogl_renderdata.height)); /* "_glarea_ogl.pyx":408 * * cdef float _1_aspectx, _1_aspecty #px+ * if renderdata.width < renderdata.height: # <<<<<<<<<<<<<< * _1_aspectx = 1. * _1_aspecty = renderdata.width / renderdata.height */ goto __pyx_L3; } /* "_glarea_ogl.pyx":412 * _1_aspecty = renderdata.width / renderdata.height * else: * _1_aspectx = renderdata.height / renderdata.width # <<<<<<<<<<<<<< * _1_aspecty = 1. * renderdata.projection_matrix[0][0] = _1_aspectx / uidata.fovy_radius_zoom */ /*else*/ { if (unlikely(__pyx_v_11_glarea_ogl_renderdata.width == 0)) { #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif PyErr_SetString(PyExc_ZeroDivisionError, "float division"); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif __PYX_ERR(0, 412, __pyx_L1_error) } __pyx_v__1_aspectx = (((double)__pyx_v_11_glarea_ogl_renderdata.height) / ((double)__pyx_v_11_glarea_ogl_renderdata.width)); /* "_glarea_ogl.pyx":413 * else: * _1_aspectx = renderdata.height / renderdata.width * _1_aspecty = 1. # <<<<<<<<<<<<<< * renderdata.projection_matrix[0][0] = _1_aspectx / uidata.fovy_radius_zoom * renderdata.projection_matrix[1][1] = _1_aspecty / uidata.fovy_radius_zoom */ __pyx_v__1_aspecty = 1.; } __pyx_L3:; /* "_glarea_ogl.pyx":414 * _1_aspectx = renderdata.height / renderdata.width * _1_aspecty = 1. * renderdata.projection_matrix[0][0] = _1_aspectx / uidata.fovy_radius_zoom # <<<<<<<<<<<<<< * renderdata.projection_matrix[1][1] = _1_aspecty / uidata.fovy_radius_zoom * renderdata.projection_matrix[2][2] = -(1/uidata.fovy_radius + 1.) */ if (unlikely(__pyx_v_11_glarea_ogl_uidata.fovy_radius_zoom == 0)) { #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif PyErr_SetString(PyExc_ZeroDivisionError, "float division"); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif __PYX_ERR(0, 414, __pyx_L1_error) } ((__pyx_v_11_glarea_ogl_renderdata.projection_matrix[0])[0]) = (__pyx_v__1_aspectx / __pyx_v_11_glarea_ogl_uidata.fovy_radius_zoom); /* "_glarea_ogl.pyx":415 * _1_aspecty = 1. * renderdata.projection_matrix[0][0] = _1_aspectx / uidata.fovy_radius_zoom * renderdata.projection_matrix[1][1] = _1_aspecty / uidata.fovy_radius_zoom # <<<<<<<<<<<<<< * renderdata.projection_matrix[2][2] = -(1/uidata.fovy_radius + 1.) * renderdata.projection_matrix[3][2] = -(1/uidata.fovy_radius + 2. */ if (unlikely(__pyx_v_11_glarea_ogl_uidata.fovy_radius_zoom == 0)) { #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif PyErr_SetString(PyExc_ZeroDivisionError, "float division"); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif __PYX_ERR(0, 415, __pyx_L1_error) } ((__pyx_v_11_glarea_ogl_renderdata.projection_matrix[1])[1]) = (__pyx_v__1_aspecty / __pyx_v_11_glarea_ogl_uidata.fovy_radius_zoom); /* "_glarea_ogl.pyx":416 * renderdata.projection_matrix[0][0] = _1_aspectx / uidata.fovy_radius_zoom * renderdata.projection_matrix[1][1] = _1_aspecty / uidata.fovy_radius_zoom * renderdata.projection_matrix[2][2] = -(1/uidata.fovy_radius + 1.) # <<<<<<<<<<<<<< * renderdata.projection_matrix[3][2] = -(1/uidata.fovy_radius + 2. * ) * uidata.bounding_sphere_radius / uidata.fovy_radius */ if (unlikely(__pyx_v_11_glarea_ogl_uidata.fovy_radius == 0)) { #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif PyErr_SetString(PyExc_ZeroDivisionError, "float division"); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif __PYX_ERR(0, 416, __pyx_L1_error) } ((__pyx_v_11_glarea_ogl_renderdata.projection_matrix[2])[2]) = (-((1.0 / __pyx_v_11_glarea_ogl_uidata.fovy_radius) + 1.)); /* "_glarea_ogl.pyx":417 * renderdata.projection_matrix[1][1] = _1_aspecty / uidata.fovy_radius_zoom * renderdata.projection_matrix[2][2] = -(1/uidata.fovy_radius + 1.) * renderdata.projection_matrix[3][2] = -(1/uidata.fovy_radius + 2. # <<<<<<<<<<<<<< * ) * uidata.bounding_sphere_radius / uidata.fovy_radius * */ if (unlikely(__pyx_v_11_glarea_ogl_uidata.fovy_radius == 0)) { #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif PyErr_SetString(PyExc_ZeroDivisionError, "float division"); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif __PYX_ERR(0, 417, __pyx_L1_error) } /* "_glarea_ogl.pyx":418 * renderdata.projection_matrix[2][2] = -(1/uidata.fovy_radius + 1.) * renderdata.projection_matrix[3][2] = -(1/uidata.fovy_radius + 2. * ) * uidata.bounding_sphere_radius / uidata.fovy_radius # <<<<<<<<<<<<<< * * ##pxm-FUNC P nogil */ __pyx_t_2 = ((-((1.0 / __pyx_v_11_glarea_ogl_uidata.fovy_radius) + 2.)) * __pyx_v_11_glarea_ogl_uidata.bounding_sphere_radius); if (unlikely(__pyx_v_11_glarea_ogl_uidata.fovy_radius == 0)) { #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif PyErr_SetString(PyExc_ZeroDivisionError, "float division"); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif __PYX_ERR(0, 418, __pyx_L1_error) } /* "_glarea_ogl.pyx":417 * renderdata.projection_matrix[1][1] = _1_aspecty / uidata.fovy_radius_zoom * renderdata.projection_matrix[2][2] = -(1/uidata.fovy_radius + 1.) * renderdata.projection_matrix[3][2] = -(1/uidata.fovy_radius + 2. # <<<<<<<<<<<<<< * ) * uidata.bounding_sphere_radius / uidata.fovy_radius * */ ((__pyx_v_11_glarea_ogl_renderdata.projection_matrix[3])[2]) = (__pyx_t_2 / ((double)__pyx_v_11_glarea_ogl_uidata.fovy_radius)); /* "_glarea_ogl.pyx":370 * * ##pxm-FUNC P nogil * cdef void _sync_projection_matrix() nogil: # <<<<<<<<<<<<<< * # Taken from the OpenGL documentation for glFrustum: * # glFrustum describes a perspective matrix that produces a perspective projection. */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_WriteUnraisable("_glarea_ogl._sync_projection_matrix", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 1); __pyx_L0:; } /* "_glarea_ogl.pyx":421 * * ##pxm-FUNC P nogil * cdef void _set_picking_matrix(int x, int y) nogil: # <<<<<<<<<<<<<< * # Set picking matrix, restrict drawing to one pixel of the viewport * # same as: _glLoadIdentity() */ static void __pyx_f_11_glarea_ogl__set_picking_matrix(int __pyx_v_x, int __pyx_v_y) { int __pyx_t_1; /* "_glarea_ogl.pyx":428 * # _glTranslatef(renderdata.width - 2*x, renderdata.height - 2*y, 0.) * # _glScalef(renderdata.width, renderdata.height, 1.0) * renderdata.picking_matrix[3][0] = renderdata.width - 2*x # <<<<<<<<<<<<<< * renderdata.picking_matrix[3][1] = renderdata.height - 2*y * renderdata.picking_matrix[0][0] = renderdata.width */ ((__pyx_v_11_glarea_ogl_renderdata.picking_matrix[3])[0]) = (__pyx_v_11_glarea_ogl_renderdata.width - (2 * __pyx_v_x)); /* "_glarea_ogl.pyx":429 * # _glScalef(renderdata.width, renderdata.height, 1.0) * renderdata.picking_matrix[3][0] = renderdata.width - 2*x * renderdata.picking_matrix[3][1] = renderdata.height - 2*y # <<<<<<<<<<<<<< * renderdata.picking_matrix[0][0] = renderdata.width * renderdata.picking_matrix[1][1] = renderdata.height */ ((__pyx_v_11_glarea_ogl_renderdata.picking_matrix[3])[1]) = (__pyx_v_11_glarea_ogl_renderdata.height - (2 * __pyx_v_y)); /* "_glarea_ogl.pyx":430 * renderdata.picking_matrix[3][0] = renderdata.width - 2*x * renderdata.picking_matrix[3][1] = renderdata.height - 2*y * renderdata.picking_matrix[0][0] = renderdata.width # <<<<<<<<<<<<<< * renderdata.picking_matrix[1][1] = renderdata.height * */ __pyx_t_1 = __pyx_v_11_glarea_ogl_renderdata.width; ((__pyx_v_11_glarea_ogl_renderdata.picking_matrix[0])[0]) = __pyx_t_1; /* "_glarea_ogl.pyx":431 * renderdata.picking_matrix[3][1] = renderdata.height - 2*y * renderdata.picking_matrix[0][0] = renderdata.width * renderdata.picking_matrix[1][1] = renderdata.height # <<<<<<<<<<<<<< * * ##pxm-FUNC P nogil */ __pyx_t_1 = __pyx_v_11_glarea_ogl_renderdata.height; ((__pyx_v_11_glarea_ogl_renderdata.picking_matrix[1])[1]) = __pyx_t_1; /* "_glarea_ogl.pyx":421 * * ##pxm-FUNC P nogil * cdef void _set_picking_matrix(int x, int y) nogil: # <<<<<<<<<<<<<< * # Set picking matrix, restrict drawing to one pixel of the viewport * # same as: _glLoadIdentity() */ /* function exit code */ } /* "_glarea_ogl.pyx":434 * * ##pxm-FUNC P nogil * cdef void _set_picking_matrix_identity() nogil: # <<<<<<<<<<<<<< * renderdata.picking_matrix[3][0] = 0. * renderdata.picking_matrix[3][1] = 0. */ static void __pyx_f_11_glarea_ogl__set_picking_matrix_identity(void) { /* "_glarea_ogl.pyx":435 * ##pxm-FUNC P nogil * cdef void _set_picking_matrix_identity() nogil: * renderdata.picking_matrix[3][0] = 0. # <<<<<<<<<<<<<< * renderdata.picking_matrix[3][1] = 0. * renderdata.picking_matrix[0][0] = 1. */ ((__pyx_v_11_glarea_ogl_renderdata.picking_matrix[3])[0]) = 0.; /* "_glarea_ogl.pyx":436 * cdef void _set_picking_matrix_identity() nogil: * renderdata.picking_matrix[3][0] = 0. * renderdata.picking_matrix[3][1] = 0. # <<<<<<<<<<<<<< * renderdata.picking_matrix[0][0] = 1. * renderdata.picking_matrix[1][1] = 1. */ ((__pyx_v_11_glarea_ogl_renderdata.picking_matrix[3])[1]) = 0.; /* "_glarea_ogl.pyx":437 * renderdata.picking_matrix[3][0] = 0. * renderdata.picking_matrix[3][1] = 0. * renderdata.picking_matrix[0][0] = 1. # <<<<<<<<<<<<<< * renderdata.picking_matrix[1][1] = 1. * */ ((__pyx_v_11_glarea_ogl_renderdata.picking_matrix[0])[0]) = 1.; /* "_glarea_ogl.pyx":438 * renderdata.picking_matrix[3][1] = 0. * renderdata.picking_matrix[0][0] = 1. * renderdata.picking_matrix[1][1] = 1. # <<<<<<<<<<<<<< * * def set_frustum(bounding_sphere_radius, zoom): */ ((__pyx_v_11_glarea_ogl_renderdata.picking_matrix[1])[1]) = 1.; /* "_glarea_ogl.pyx":434 * * ##pxm-FUNC P nogil * cdef void _set_picking_matrix_identity() nogil: # <<<<<<<<<<<<<< * renderdata.picking_matrix[3][0] = 0. * renderdata.picking_matrix[3][1] = 0. */ /* function exit code */ } /* "_glarea_ogl.pyx":440 * renderdata.picking_matrix[1][1] = 1. * * def set_frustum(bounding_sphere_radius, zoom): # <<<<<<<<<<<<<< * uidata.frustum_changed = True * if bounding_sphere_radius > 0: */ /* Python wrapper */ static PyObject *__pyx_pw_11_glarea_ogl_7set_frustum(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static PyMethodDef __pyx_mdef_11_glarea_ogl_7set_frustum = {"set_frustum", (PyCFunction)__pyx_pw_11_glarea_ogl_7set_frustum, METH_VARARGS|METH_KEYWORDS, 0}; static PyObject *__pyx_pw_11_glarea_ogl_7set_frustum(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_bounding_sphere_radius = 0; PyObject *__pyx_v_zoom = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("set_frustum (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_bounding_sphere_radius,&__pyx_n_s_zoom,0}; PyObject* values[2] = {0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_bounding_sphere_radius)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_zoom)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("set_frustum", 1, 2, 2, 1); __PYX_ERR(0, 440, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_frustum") < 0)) __PYX_ERR(0, 440, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); } __pyx_v_bounding_sphere_radius = values[0]; __pyx_v_zoom = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("set_frustum", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 440, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("_glarea_ogl.set_frustum", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11_glarea_ogl_6set_frustum(__pyx_self, __pyx_v_bounding_sphere_radius, __pyx_v_zoom); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11_glarea_ogl_6set_frustum(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_bounding_sphere_radius, PyObject *__pyx_v_zoom) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_t_2; double __pyx_t_3; PyObject *__pyx_t_4 = NULL; float __pyx_t_5; __Pyx_RefNannySetupContext("set_frustum", 0); /* "_glarea_ogl.pyx":441 * * def set_frustum(bounding_sphere_radius, zoom): * uidata.frustum_changed = True # <<<<<<<<<<<<<< * if bounding_sphere_radius > 0: * uidata.bounding_sphere_radius = bounding_sphere_radius */ __pyx_v_11_glarea_ogl_uidata.frustum_changed = 1; /* "_glarea_ogl.pyx":442 * def set_frustum(bounding_sphere_radius, zoom): * uidata.frustum_changed = True * if bounding_sphere_radius > 0: # <<<<<<<<<<<<<< * uidata.bounding_sphere_radius = bounding_sphere_radius * uidata.fovy_radius_zoom = uidata.fovy_radius / zoom */ __pyx_t_1 = PyObject_RichCompare(__pyx_v_bounding_sphere_radius, __pyx_int_0, Py_GT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 442, __pyx_L1_error) __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 442, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_2) { /* "_glarea_ogl.pyx":443 * uidata.frustum_changed = True * if bounding_sphere_radius > 0: * uidata.bounding_sphere_radius = bounding_sphere_radius # <<<<<<<<<<<<<< * uidata.fovy_radius_zoom = uidata.fovy_radius / zoom * */ __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_bounding_sphere_radius); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 443, __pyx_L1_error) __pyx_v_11_glarea_ogl_uidata.bounding_sphere_radius = __pyx_t_3; /* "_glarea_ogl.pyx":442 * def set_frustum(bounding_sphere_radius, zoom): * uidata.frustum_changed = True * if bounding_sphere_radius > 0: # <<<<<<<<<<<<<< * uidata.bounding_sphere_radius = bounding_sphere_radius * uidata.fovy_radius_zoom = uidata.fovy_radius / zoom */ } /* "_glarea_ogl.pyx":444 * if bounding_sphere_radius > 0: * uidata.bounding_sphere_radius = bounding_sphere_radius * uidata.fovy_radius_zoom = uidata.fovy_radius / zoom # <<<<<<<<<<<<<< * * def set_background_color(red, green, blue): */ __pyx_t_1 = PyFloat_FromDouble(__pyx_v_11_glarea_ogl_uidata.fovy_radius); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 444, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = __Pyx_PyNumber_Divide(__pyx_t_1, __pyx_v_zoom); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 444, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_5 = __pyx_PyFloat_AsFloat(__pyx_t_4); if (unlikely((__pyx_t_5 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 444, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_11_glarea_ogl_uidata.fovy_radius_zoom = __pyx_t_5; /* "_glarea_ogl.pyx":440 * renderdata.picking_matrix[1][1] = 1. * * def set_frustum(bounding_sphere_radius, zoom): # <<<<<<<<<<<<<< * uidata.frustum_changed = True * if bounding_sphere_radius > 0: */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("_glarea_ogl.set_frustum", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_glarea_ogl.pyx":446 * uidata.fovy_radius_zoom = uidata.fovy_radius / zoom * * def set_background_color(red, green, blue): # <<<<<<<<<<<<<< * uidata.background_changed = True * uidata.bg_red = red */ /* Python wrapper */ static PyObject *__pyx_pw_11_glarea_ogl_9set_background_color(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static PyMethodDef __pyx_mdef_11_glarea_ogl_9set_background_color = {"set_background_color", (PyCFunction)__pyx_pw_11_glarea_ogl_9set_background_color, METH_VARARGS|METH_KEYWORDS, 0}; static PyObject *__pyx_pw_11_glarea_ogl_9set_background_color(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_red = 0; PyObject *__pyx_v_green = 0; PyObject *__pyx_v_blue = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("set_background_color (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_red,&__pyx_n_s_green,&__pyx_n_s_blue,0}; PyObject* values[3] = {0,0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_red)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_green)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("set_background_color", 1, 3, 3, 1); __PYX_ERR(0, 446, __pyx_L3_error) } case 2: if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_blue)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("set_background_color", 1, 3, 3, 2); __PYX_ERR(0, 446, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_background_color") < 0)) __PYX_ERR(0, 446, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); values[2] = PyTuple_GET_ITEM(__pyx_args, 2); } __pyx_v_red = values[0]; __pyx_v_green = values[1]; __pyx_v_blue = values[2]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("set_background_color", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 446, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("_glarea_ogl.set_background_color", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11_glarea_ogl_8set_background_color(__pyx_self, __pyx_v_red, __pyx_v_green, __pyx_v_blue); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11_glarea_ogl_8set_background_color(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_red, PyObject *__pyx_v_green, PyObject *__pyx_v_blue) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations float __pyx_t_1; __Pyx_RefNannySetupContext("set_background_color", 0); /* "_glarea_ogl.pyx":447 * * def set_background_color(red, green, blue): * uidata.background_changed = True # <<<<<<<<<<<<<< * uidata.bg_red = red * uidata.bg_green = green */ __pyx_v_11_glarea_ogl_uidata.background_changed = 1; /* "_glarea_ogl.pyx":448 * def set_background_color(red, green, blue): * uidata.background_changed = True * uidata.bg_red = red # <<<<<<<<<<<<<< * uidata.bg_green = green * uidata.bg_blue = blue */ __pyx_t_1 = __pyx_PyFloat_AsFloat(__pyx_v_red); if (unlikely((__pyx_t_1 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 448, __pyx_L1_error) __pyx_v_11_glarea_ogl_uidata.bg_red = __pyx_t_1; /* "_glarea_ogl.pyx":449 * uidata.background_changed = True * uidata.bg_red = red * uidata.bg_green = green # <<<<<<<<<<<<<< * uidata.bg_blue = blue * */ __pyx_t_1 = __pyx_PyFloat_AsFloat(__pyx_v_green); if (unlikely((__pyx_t_1 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 449, __pyx_L1_error) __pyx_v_11_glarea_ogl_uidata.bg_green = __pyx_t_1; /* "_glarea_ogl.pyx":450 * uidata.bg_red = red * uidata.bg_green = green * uidata.bg_blue = blue # <<<<<<<<<<<<<< * * def set_antialiasing(multisample): */ __pyx_t_1 = __pyx_PyFloat_AsFloat(__pyx_v_blue); if (unlikely((__pyx_t_1 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 450, __pyx_L1_error) __pyx_v_11_glarea_ogl_uidata.bg_blue = __pyx_t_1; /* "_glarea_ogl.pyx":446 * uidata.fovy_radius_zoom = uidata.fovy_radius / zoom * * def set_background_color(red, green, blue): # <<<<<<<<<<<<<< * uidata.background_changed = True * uidata.bg_red = red */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("_glarea_ogl.set_background_color", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_glarea_ogl.pyx":452 * uidata.bg_blue = blue * * def set_antialiasing(multisample): # <<<<<<<<<<<<<< * uidata.multisample_changed = 2 if multisample else 1 * */ /* Python wrapper */ static PyObject *__pyx_pw_11_glarea_ogl_11set_antialiasing(PyObject *__pyx_self, PyObject *__pyx_v_multisample); /*proto*/ static PyMethodDef __pyx_mdef_11_glarea_ogl_11set_antialiasing = {"set_antialiasing", (PyCFunction)__pyx_pw_11_glarea_ogl_11set_antialiasing, METH_O, 0}; static PyObject *__pyx_pw_11_glarea_ogl_11set_antialiasing(PyObject *__pyx_self, PyObject *__pyx_v_multisample) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("set_antialiasing (wrapper)", 0); __pyx_r = __pyx_pf_11_glarea_ogl_10set_antialiasing(__pyx_self, ((PyObject *)__pyx_v_multisample)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11_glarea_ogl_10set_antialiasing(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_multisample) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; int __pyx_t_2; __Pyx_RefNannySetupContext("set_antialiasing", 0); /* "_glarea_ogl.pyx":453 * * def set_antialiasing(multisample): * uidata.multisample_changed = 2 if multisample else 1 # <<<<<<<<<<<<<< * * def set_rotation_xy(x, y): */ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_multisample); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 453, __pyx_L1_error) if (__pyx_t_2) { __pyx_t_1 = 2; } else { __pyx_t_1 = 1; } __pyx_v_11_glarea_ogl_uidata.multisample_changed = __pyx_t_1; /* "_glarea_ogl.pyx":452 * uidata.bg_blue = blue * * def set_antialiasing(multisample): # <<<<<<<<<<<<<< * uidata.multisample_changed = 2 if multisample else 1 * */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("_glarea_ogl.set_antialiasing", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_glarea_ogl.pyx":455 * uidata.multisample_changed = 2 if multisample else 1 * * def set_rotation_xy(x, y): # <<<<<<<<<<<<<< * x %= 360 * # pylint: disable=C0321 */ /* Python wrapper */ static PyObject *__pyx_pw_11_glarea_ogl_13set_rotation_xy(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static PyMethodDef __pyx_mdef_11_glarea_ogl_13set_rotation_xy = {"set_rotation_xy", (PyCFunction)__pyx_pw_11_glarea_ogl_13set_rotation_xy, METH_VARARGS|METH_KEYWORDS, 0}; static PyObject *__pyx_pw_11_glarea_ogl_13set_rotation_xy(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_x = 0; PyObject *__pyx_v_y = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("set_rotation_xy (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_y,0}; PyObject* values[2] = {0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("set_rotation_xy", 1, 2, 2, 1); __PYX_ERR(0, 455, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_rotation_xy") < 0)) __PYX_ERR(0, 455, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); } __pyx_v_x = values[0]; __pyx_v_y = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("set_rotation_xy", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 455, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("_glarea_ogl.set_rotation_xy", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11_glarea_ogl_12set_rotation_xy(__pyx_self, __pyx_v_x, __pyx_v_y); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11_glarea_ogl_12set_rotation_xy(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_x, PyObject *__pyx_v_y) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_t_2; PyObject *__pyx_t_3 = NULL; float __pyx_t_4; __Pyx_RefNannySetupContext("set_rotation_xy", 0); __Pyx_INCREF(__pyx_v_x); __Pyx_INCREF(__pyx_v_y); /* "_glarea_ogl.pyx":456 * * def set_rotation_xy(x, y): * x %= 360 # <<<<<<<<<<<<<< * # pylint: disable=C0321 * if y < -120: y = -120 */ __pyx_t_1 = __Pyx_PyInt_RemainderObjC(__pyx_v_x, __pyx_int_360, 0x168, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 456, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF_SET(__pyx_v_x, __pyx_t_1); __pyx_t_1 = 0; /* "_glarea_ogl.pyx":458 * x %= 360 * # pylint: disable=C0321 * if y < -120: y = -120 # <<<<<<<<<<<<<< * elif y > 120: y = 120 * uidata.rotation_changed = True */ __pyx_t_1 = PyObject_RichCompare(__pyx_v_y, __pyx_int_neg_120, Py_LT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 458, __pyx_L1_error) __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 458, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_2) { __Pyx_INCREF(__pyx_int_neg_120); __Pyx_DECREF_SET(__pyx_v_y, __pyx_int_neg_120); goto __pyx_L3; } /* "_glarea_ogl.pyx":459 * # pylint: disable=C0321 * if y < -120: y = -120 * elif y > 120: y = 120 # <<<<<<<<<<<<<< * uidata.rotation_changed = True * uidata.rotationxhalf = M_PI * x / 360.0 */ __pyx_t_1 = PyObject_RichCompare(__pyx_v_y, __pyx_int_120, Py_GT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 459, __pyx_L1_error) __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 459, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_2) { __Pyx_INCREF(__pyx_int_120); __Pyx_DECREF_SET(__pyx_v_y, __pyx_int_120); } __pyx_L3:; /* "_glarea_ogl.pyx":460 * if y < -120: y = -120 * elif y > 120: y = 120 * uidata.rotation_changed = True # <<<<<<<<<<<<<< * uidata.rotationxhalf = M_PI * x / 360.0 * uidata.rotationyhalf = M_PI * y / 360.0 */ __pyx_v_11_glarea_ogl_uidata.rotation_changed = 1; /* "_glarea_ogl.pyx":461 * elif y > 120: y = 120 * uidata.rotation_changed = True * uidata.rotationxhalf = M_PI * x / 360.0 # <<<<<<<<<<<<<< * uidata.rotationyhalf = M_PI * y / 360.0 * return x, y */ __pyx_t_1 = PyFloat_FromDouble(M_PI); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 461, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = PyNumber_Multiply(__pyx_t_1, __pyx_v_x); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 461, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyFloat_TrueDivideObjC(__pyx_t_3, __pyx_float_360_0, 360.0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 461, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_4 = __pyx_PyFloat_AsFloat(__pyx_t_1); if (unlikely((__pyx_t_4 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 461, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_11_glarea_ogl_uidata.rotationxhalf = __pyx_t_4; /* "_glarea_ogl.pyx":462 * uidata.rotation_changed = True * uidata.rotationxhalf = M_PI * x / 360.0 * uidata.rotationyhalf = M_PI * y / 360.0 # <<<<<<<<<<<<<< * return x, y * */ __pyx_t_1 = PyFloat_FromDouble(M_PI); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 462, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = PyNumber_Multiply(__pyx_t_1, __pyx_v_y); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 462, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyFloat_TrueDivideObjC(__pyx_t_3, __pyx_float_360_0, 360.0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 462, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_4 = __pyx_PyFloat_AsFloat(__pyx_t_1); if (unlikely((__pyx_t_4 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 462, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_11_glarea_ogl_uidata.rotationyhalf = __pyx_t_4; /* "_glarea_ogl.pyx":463 * uidata.rotationxhalf = M_PI * x / 360.0 * uidata.rotationyhalf = M_PI * y / 360.0 * return x, y # <<<<<<<<<<<<<< * * ##pxm-FUNC PD nogil */ __Pyx_XDECREF(__pyx_r); __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 463, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_v_x); __Pyx_GIVEREF(__pyx_v_x); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_x); __Pyx_INCREF(__pyx_v_y); __Pyx_GIVEREF(__pyx_v_y); PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_y); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; /* "_glarea_ogl.pyx":455 * uidata.multisample_changed = 2 if multisample else 1 * * def set_rotation_xy(x, y): # <<<<<<<<<<<<<< * x %= 360 * # pylint: disable=C0321 */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("_glarea_ogl.set_rotation_xy", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_x); __Pyx_XDECREF(__pyx_v_y); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_glarea_ogl.pyx":466 * * ##pxm-FUNC PD nogil * cdef void render_resize(int y, int width, int height) nogil: # <<<<<<<<<<<<<< * renderdata.y = y * renderdata.width = width */ static void __pyx_f_11_glarea_ogl_render_resize(int __pyx_v_y, int __pyx_v_width, int __pyx_v_height) { /* "_glarea_ogl.pyx":467 * ##pxm-FUNC PD nogil * cdef void render_resize(int y, int width, int height) nogil: * renderdata.y = y # <<<<<<<<<<<<<< * renderdata.width = width * renderdata.height = height */ __pyx_v_11_glarea_ogl_renderdata.y = __pyx_v_y; /* "_glarea_ogl.pyx":468 * cdef void render_resize(int y, int width, int height) nogil: * renderdata.y = y * renderdata.width = width # <<<<<<<<<<<<<< * renderdata.height = height * uidata.viewport_changed = True */ __pyx_v_11_glarea_ogl_renderdata.width = __pyx_v_width; /* "_glarea_ogl.pyx":469 * renderdata.y = y * renderdata.width = width * renderdata.height = height # <<<<<<<<<<<<<< * uidata.viewport_changed = True * */ __pyx_v_11_glarea_ogl_renderdata.height = __pyx_v_height; /* "_glarea_ogl.pyx":470 * renderdata.width = width * renderdata.height = height * uidata.viewport_changed = True # <<<<<<<<<<<<<< * * def set_transformations(blocks): */ __pyx_v_11_glarea_ogl_uidata.viewport_changed = 1; /* "_glarea_ogl.pyx":466 * * ##pxm-FUNC PD nogil * cdef void render_resize(int y, int width, int height) nogil: # <<<<<<<<<<<<<< * renderdata.y = y * renderdata.width = width */ /* function exit code */ } /* "_glarea_ogl.pyx":472 * uidata.viewport_changed = True * * def set_transformations(blocks): # <<<<<<<<<<<<<< * assert uidata.nblocks == len(blocks) * cdef int i #px+ */ /* Python wrapper */ static PyObject *__pyx_pw_11_glarea_ogl_15set_transformations(PyObject *__pyx_self, PyObject *__pyx_v_blocks); /*proto*/ static PyMethodDef __pyx_mdef_11_glarea_ogl_15set_transformations = {"set_transformations", (PyCFunction)__pyx_pw_11_glarea_ogl_15set_transformations, METH_O, 0}; static PyObject *__pyx_pw_11_glarea_ogl_15set_transformations(PyObject *__pyx_self, PyObject *__pyx_v_blocks) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("set_transformations (wrapper)", 0); __pyx_r = __pyx_pf_11_glarea_ogl_14set_transformations(__pyx_self, ((PyObject *)__pyx_v_blocks)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11_glarea_ogl_14set_transformations(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_blocks) { int __pyx_v_i; short __pyx_v_b; CYTHON_UNUSED PyObject *__pyx_v_unused = NULL; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations Py_ssize_t __pyx_t_1; PyObject *__pyx_t_2 = NULL; PyObject *(*__pyx_t_3)(PyObject *); PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; PyObject *__pyx_t_7 = NULL; PyObject *__pyx_t_8 = NULL; PyObject *(*__pyx_t_9)(PyObject *); int __pyx_t_10; short __pyx_t_11; __Pyx_RefNannySetupContext("set_transformations", 0); /* "_glarea_ogl.pyx":473 * * def set_transformations(blocks): * assert uidata.nblocks == len(blocks) # <<<<<<<<<<<<<< * cdef int i #px+ * cdef short b #px+ */ #ifndef CYTHON_WITHOUT_ASSERTIONS if (unlikely(!Py_OptimizeFlag)) { __pyx_t_1 = PyObject_Length(__pyx_v_blocks); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(0, 473, __pyx_L1_error) if (unlikely(!((__pyx_v_11_glarea_ogl_uidata.nblocks == __pyx_t_1) != 0))) { PyErr_SetNone(PyExc_AssertionError); __PYX_ERR(0, 473, __pyx_L1_error) } } #endif /* "_glarea_ogl.pyx":476 * cdef int i #px+ * cdef short b #px+ * for i, b, unused in blocks: # <<<<<<<<<<<<<< * uidata.transformation_blocks[i] = b * uidata.transformation_changed = True */ if (likely(PyList_CheckExact(__pyx_v_blocks)) || PyTuple_CheckExact(__pyx_v_blocks)) { __pyx_t_2 = __pyx_v_blocks; __Pyx_INCREF(__pyx_t_2); __pyx_t_1 = 0; __pyx_t_3 = NULL; } else { __pyx_t_1 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_blocks); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 476, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 476, __pyx_L1_error) } for (;;) { if (likely(!__pyx_t_3)) { if (likely(PyList_CheckExact(__pyx_t_2))) { if (__pyx_t_1 >= PyList_GET_SIZE(__pyx_t_2)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_4 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_1); __Pyx_INCREF(__pyx_t_4); __pyx_t_1++; if (unlikely(0 < 0)) __PYX_ERR(0, 476, __pyx_L1_error) #else __pyx_t_4 = PySequence_ITEM(__pyx_t_2, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 476, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); #endif } else { if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_2)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_1); __Pyx_INCREF(__pyx_t_4); __pyx_t_1++; if (unlikely(0 < 0)) __PYX_ERR(0, 476, __pyx_L1_error) #else __pyx_t_4 = PySequence_ITEM(__pyx_t_2, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 476, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); #endif } } else { __pyx_t_4 = __pyx_t_3(__pyx_t_2); if (unlikely(!__pyx_t_4)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 476, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_4); } if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) { PyObject* sequence = __pyx_t_4; #if !CYTHON_COMPILING_IN_PYPY Py_ssize_t size = Py_SIZE(sequence); #else Py_ssize_t size = PySequence_Size(sequence); #endif if (unlikely(size != 3)) { if (size > 3) __Pyx_RaiseTooManyValuesError(3); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 476, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_5 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1); __pyx_t_7 = PyTuple_GET_ITEM(sequence, 2); } else { __pyx_t_5 = PyList_GET_ITEM(sequence, 0); __pyx_t_6 = PyList_GET_ITEM(sequence, 1); __pyx_t_7 = PyList_GET_ITEM(sequence, 2); } __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(__pyx_t_7); #else __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 476, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 476, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 476, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); #endif __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else { Py_ssize_t index = -1; __pyx_t_8 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 476, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_9 = Py_TYPE(__pyx_t_8)->tp_iternext; index = 0; __pyx_t_5 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_5)) goto __pyx_L5_unpacking_failed; __Pyx_GOTREF(__pyx_t_5); index = 1; __pyx_t_6 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_6)) goto __pyx_L5_unpacking_failed; __Pyx_GOTREF(__pyx_t_6); index = 2; __pyx_t_7 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_7)) goto __pyx_L5_unpacking_failed; __Pyx_GOTREF(__pyx_t_7); if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_8), 3) < 0) __PYX_ERR(0, 476, __pyx_L1_error) __pyx_t_9 = NULL; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; goto __pyx_L6_unpacking_done; __pyx_L5_unpacking_failed:; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_9 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 476, __pyx_L1_error) __pyx_L6_unpacking_done:; } __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_t_5); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 476, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_11 = __Pyx_PyInt_As_short(__pyx_t_6); if (unlikely((__pyx_t_11 == (short)-1) && PyErr_Occurred())) __PYX_ERR(0, 476, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_v_i = __pyx_t_10; __pyx_v_b = __pyx_t_11; __Pyx_XDECREF_SET(__pyx_v_unused, __pyx_t_7); __pyx_t_7 = 0; /* "_glarea_ogl.pyx":477 * cdef short b #px+ * for i, b, unused in blocks: * uidata.transformation_blocks[i] = b # <<<<<<<<<<<<<< * uidata.transformation_changed = True * */ (__pyx_v_11_glarea_ogl_uidata.transformation_blocks[__pyx_v_i]) = __pyx_v_b; /* "_glarea_ogl.pyx":476 * cdef int i #px+ * cdef short b #px+ * for i, b, unused in blocks: # <<<<<<<<<<<<<< * uidata.transformation_blocks[i] = b * uidata.transformation_changed = True */ } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_glarea_ogl.pyx":478 * for i, b, unused in blocks: * uidata.transformation_blocks[i] = b * uidata.transformation_changed = True # <<<<<<<<<<<<<< * * ##pxm-FUNC P */ __pyx_v_11_glarea_ogl_uidata.transformation_changed = 1; /* "_glarea_ogl.pyx":472 * uidata.viewport_changed = True * * def set_transformations(blocks): # <<<<<<<<<<<<<< * assert uidata.nblocks == len(blocks) * cdef int i #px+ */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_8); __Pyx_AddTraceback("_glarea_ogl.set_transformations", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_unused); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_glarea_ogl.pyx":481 * * ##pxm-FUNC P * cpdef set_animation_start(blocks, float axisx, float axisy, float axisz): # <<<<<<<<<<<<<< * for i, (b, unused) in enumerate(blocks): * uidata.animation_blocks[i] = b */ static PyObject *__pyx_pw_11_glarea_ogl_17set_animation_start(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static PyObject *__pyx_f_11_glarea_ogl_set_animation_start(PyObject *__pyx_v_blocks, float __pyx_v_axisx, float __pyx_v_axisy, float __pyx_v_axisz, CYTHON_UNUSED int __pyx_skip_dispatch) { PyObject *__pyx_v_i = NULL; PyObject *__pyx_v_b = NULL; CYTHON_UNUSED PyObject *__pyx_v_unused = NULL; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; Py_ssize_t __pyx_t_3; PyObject *(*__pyx_t_4)(PyObject *); PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; PyObject *__pyx_t_7 = NULL; PyObject *__pyx_t_8 = NULL; PyObject *(*__pyx_t_9)(PyObject *); short __pyx_t_10; Py_ssize_t __pyx_t_11; int __pyx_t_12; __Pyx_RefNannySetupContext("set_animation_start", 0); /* "_glarea_ogl.pyx":482 * ##pxm-FUNC P * cpdef set_animation_start(blocks, float axisx, float axisy, float axisz): * for i, (b, unused) in enumerate(blocks): # <<<<<<<<<<<<<< * uidata.animation_blocks[i] = b * uidata.animation_blocks_count = i+1 */ __Pyx_INCREF(__pyx_int_0); __pyx_t_1 = __pyx_int_0; if (likely(PyList_CheckExact(__pyx_v_blocks)) || PyTuple_CheckExact(__pyx_v_blocks)) { __pyx_t_2 = __pyx_v_blocks; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0; __pyx_t_4 = NULL; } else { __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_blocks); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 482, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 482, __pyx_L1_error) } for (;;) { if (likely(!__pyx_t_4)) { if (likely(PyList_CheckExact(__pyx_t_2))) { if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 482, __pyx_L1_error) #else __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 482, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif } else { if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_2)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 482, __pyx_L1_error) #else __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 482, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif } } else { __pyx_t_5 = __pyx_t_4(__pyx_t_2); if (unlikely(!__pyx_t_5)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 482, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_5); } if ((likely(PyTuple_CheckExact(__pyx_t_5))) || (PyList_CheckExact(__pyx_t_5))) { PyObject* sequence = __pyx_t_5; #if !CYTHON_COMPILING_IN_PYPY Py_ssize_t size = Py_SIZE(sequence); #else Py_ssize_t size = PySequence_Size(sequence); #endif if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 482, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_6 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_7 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_6 = PyList_GET_ITEM(sequence, 0); __pyx_t_7 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(__pyx_t_7); #else __pyx_t_6 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 482, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 482, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); #endif __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else { Py_ssize_t index = -1; __pyx_t_8 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 482, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_9 = Py_TYPE(__pyx_t_8)->tp_iternext; index = 0; __pyx_t_6 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_6)) goto __pyx_L5_unpacking_failed; __Pyx_GOTREF(__pyx_t_6); index = 1; __pyx_t_7 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_7)) goto __pyx_L5_unpacking_failed; __Pyx_GOTREF(__pyx_t_7); if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_8), 2) < 0) __PYX_ERR(0, 482, __pyx_L1_error) __pyx_t_9 = NULL; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; goto __pyx_L6_unpacking_done; __pyx_L5_unpacking_failed:; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_9 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 482, __pyx_L1_error) __pyx_L6_unpacking_done:; } __Pyx_XDECREF_SET(__pyx_v_b, __pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF_SET(__pyx_v_unused, __pyx_t_7); __pyx_t_7 = 0; __Pyx_INCREF(__pyx_t_1); __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_1); __pyx_t_5 = __Pyx_PyInt_AddObjC(__pyx_t_1, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 482, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = __pyx_t_5; __pyx_t_5 = 0; /* "_glarea_ogl.pyx":483 * cpdef set_animation_start(blocks, float axisx, float axisy, float axisz): * for i, (b, unused) in enumerate(blocks): * uidata.animation_blocks[i] = b # <<<<<<<<<<<<<< * uidata.animation_blocks_count = i+1 * uidata.angle = 0.0 */ __pyx_t_10 = __Pyx_PyInt_As_short(__pyx_v_b); if (unlikely((__pyx_t_10 == (short)-1) && PyErr_Occurred())) __PYX_ERR(0, 483, __pyx_L1_error) __pyx_t_11 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_11 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 483, __pyx_L1_error) (__pyx_v_11_glarea_ogl_uidata.animation_blocks[__pyx_t_11]) = __pyx_t_10; /* "_glarea_ogl.pyx":482 * ##pxm-FUNC P * cpdef set_animation_start(blocks, float axisx, float axisy, float axisz): * for i, (b, unused) in enumerate(blocks): # <<<<<<<<<<<<<< * uidata.animation_blocks[i] = b * uidata.animation_blocks_count = i+1 */ } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_glarea_ogl.pyx":484 * for i, (b, unused) in enumerate(blocks): * uidata.animation_blocks[i] = b * uidata.animation_blocks_count = i+1 # <<<<<<<<<<<<<< * uidata.angle = 0.0 * uidata.rotation_x = axisx */ if (unlikely(!__pyx_v_i)) { __Pyx_RaiseUnboundLocalError("i"); __PYX_ERR(0, 484, __pyx_L1_error) } __pyx_t_1 = __Pyx_PyInt_AddObjC(__pyx_v_i, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 484, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_12 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 484, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_11_glarea_ogl_uidata.animation_blocks_count = __pyx_t_12; /* "_glarea_ogl.pyx":485 * uidata.animation_blocks[i] = b * uidata.animation_blocks_count = i+1 * uidata.angle = 0.0 # <<<<<<<<<<<<<< * uidata.rotation_x = axisx * uidata.rotation_y = axisy */ __pyx_v_11_glarea_ogl_uidata.angle = 0.0; /* "_glarea_ogl.pyx":486 * uidata.animation_blocks_count = i+1 * uidata.angle = 0.0 * uidata.rotation_x = axisx # <<<<<<<<<<<<<< * uidata.rotation_y = axisy * uidata.rotation_z = axisz */ __pyx_v_11_glarea_ogl_uidata.rotation_x = __pyx_v_axisx; /* "_glarea_ogl.pyx":487 * uidata.angle = 0.0 * uidata.rotation_x = axisx * uidata.rotation_y = axisy # <<<<<<<<<<<<<< * uidata.rotation_z = axisz * uidata.animation_changed = 1 */ __pyx_v_11_glarea_ogl_uidata.rotation_y = __pyx_v_axisy; /* "_glarea_ogl.pyx":488 * uidata.rotation_x = axisx * uidata.rotation_y = axisy * uidata.rotation_z = axisz # <<<<<<<<<<<<<< * uidata.animation_changed = 1 * */ __pyx_v_11_glarea_ogl_uidata.rotation_z = __pyx_v_axisz; /* "_glarea_ogl.pyx":489 * uidata.rotation_y = axisy * uidata.rotation_z = axisz * uidata.animation_changed = 1 # <<<<<<<<<<<<<< * * ##pxm-FUNC PD */ __pyx_v_11_glarea_ogl_uidata.animation_changed = 1; /* "_glarea_ogl.pyx":481 * * ##pxm-FUNC P * cpdef set_animation_start(blocks, float axisx, float axisy, float axisz): # <<<<<<<<<<<<<< * for i, (b, unused) in enumerate(blocks): * uidata.animation_blocks[i] = b */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_8); __Pyx_AddTraceback("_glarea_ogl.set_animation_start", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XDECREF(__pyx_v_i); __Pyx_XDECREF(__pyx_v_b); __Pyx_XDECREF(__pyx_v_unused); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* Python wrapper */ static PyObject *__pyx_pw_11_glarea_ogl_17set_animation_start(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static PyObject *__pyx_pw_11_glarea_ogl_17set_animation_start(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_blocks = 0; float __pyx_v_axisx; float __pyx_v_axisy; float __pyx_v_axisz; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("set_animation_start (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_blocks,&__pyx_n_s_axisx,&__pyx_n_s_axisy,&__pyx_n_s_axisz,0}; PyObject* values[4] = {0,0,0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_blocks)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_axisx)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("set_animation_start", 1, 4, 4, 1); __PYX_ERR(0, 481, __pyx_L3_error) } case 2: if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_axisy)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("set_animation_start", 1, 4, 4, 2); __PYX_ERR(0, 481, __pyx_L3_error) } case 3: if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_axisz)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("set_animation_start", 1, 4, 4, 3); __PYX_ERR(0, 481, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_animation_start") < 0)) __PYX_ERR(0, 481, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 4) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); values[2] = PyTuple_GET_ITEM(__pyx_args, 2); values[3] = PyTuple_GET_ITEM(__pyx_args, 3); } __pyx_v_blocks = values[0]; __pyx_v_axisx = __pyx_PyFloat_AsFloat(values[1]); if (unlikely((__pyx_v_axisx == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 481, __pyx_L3_error) __pyx_v_axisy = __pyx_PyFloat_AsFloat(values[2]); if (unlikely((__pyx_v_axisy == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 481, __pyx_L3_error) __pyx_v_axisz = __pyx_PyFloat_AsFloat(values[3]); if (unlikely((__pyx_v_axisz == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 481, __pyx_L3_error) } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("set_animation_start", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 481, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("_glarea_ogl.set_animation_start", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11_glarea_ogl_16set_animation_start(__pyx_self, __pyx_v_blocks, __pyx_v_axisx, __pyx_v_axisy, __pyx_v_axisz); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11_glarea_ogl_16set_animation_start(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_blocks, float __pyx_v_axisx, float __pyx_v_axisy, float __pyx_v_axisz) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("set_animation_start", 0); __Pyx_XDECREF(__pyx_r); __pyx_t_1 = __pyx_f_11_glarea_ogl_set_animation_start(__pyx_v_blocks, __pyx_v_axisx, __pyx_v_axisy, __pyx_v_axisz, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 481, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("_glarea_ogl.set_animation_start", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_glarea_ogl.pyx":492 * * ##pxm-FUNC PD * cdef void set_animation_next(float angle): # <<<<<<<<<<<<<< * uidata.angle = -angle * uidata.animation_changed = 2 */ static void __pyx_f_11_glarea_ogl_set_animation_next(float __pyx_v_angle) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("set_animation_next", 0); /* "_glarea_ogl.pyx":493 * ##pxm-FUNC PD * cdef void set_animation_next(float angle): * uidata.angle = -angle # <<<<<<<<<<<<<< * uidata.animation_changed = 2 * */ __pyx_v_11_glarea_ogl_uidata.angle = (-__pyx_v_angle); /* "_glarea_ogl.pyx":494 * cdef void set_animation_next(float angle): * uidata.angle = -angle * uidata.animation_changed = 2 # <<<<<<<<<<<<<< * * def set_data(nblocks, vertexdata, vertexpointers, vertexinfo, transformations): */ __pyx_v_11_glarea_ogl_uidata.animation_changed = 2; /* "_glarea_ogl.pyx":492 * * ##pxm-FUNC PD * cdef void set_animation_next(float angle): # <<<<<<<<<<<<<< * uidata.angle = -angle * uidata.animation_changed = 2 */ /* function exit code */ __Pyx_RefNannyFinishContext(); } /* "_glarea_ogl.pyx":496 * uidata.animation_changed = 2 * * def set_data(nblocks, vertexdata, vertexpointers, vertexinfo, transformations): # <<<<<<<<<<<<<< * pydata_postsync() * cdef int t,i,j #px+ */ /* Python wrapper */ static PyObject *__pyx_pw_11_glarea_ogl_19set_data(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static PyMethodDef __pyx_mdef_11_glarea_ogl_19set_data = {"set_data", (PyCFunction)__pyx_pw_11_glarea_ogl_19set_data, METH_VARARGS|METH_KEYWORDS, 0}; static PyObject *__pyx_pw_11_glarea_ogl_19set_data(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_nblocks = 0; PyObject *__pyx_v_vertexdata = 0; PyObject *__pyx_v_vertexpointers = 0; PyObject *__pyx_v_vertexinfo = 0; PyObject *__pyx_v_transformations = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("set_data (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_nblocks,&__pyx_n_s_vertexdata,&__pyx_n_s_vertexpointers,&__pyx_n_s_vertexinfo,&__pyx_n_s_transformations,0}; PyObject* values[5] = {0,0,0,0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_nblocks)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_vertexdata)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("set_data", 1, 5, 5, 1); __PYX_ERR(0, 496, __pyx_L3_error) } case 2: if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_vertexpointers)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("set_data", 1, 5, 5, 2); __PYX_ERR(0, 496, __pyx_L3_error) } case 3: if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_vertexinfo)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("set_data", 1, 5, 5, 3); __PYX_ERR(0, 496, __pyx_L3_error) } case 4: if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_transformations)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("set_data", 1, 5, 5, 4); __PYX_ERR(0, 496, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_data") < 0)) __PYX_ERR(0, 496, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 5) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); values[2] = PyTuple_GET_ITEM(__pyx_args, 2); values[3] = PyTuple_GET_ITEM(__pyx_args, 3); values[4] = PyTuple_GET_ITEM(__pyx_args, 4); } __pyx_v_nblocks = values[0]; __pyx_v_vertexdata = values[1]; __pyx_v_vertexpointers = values[2]; __pyx_v_vertexinfo = values[3]; __pyx_v_transformations = values[4]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("set_data", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 496, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("_glarea_ogl.set_data", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11_glarea_ogl_18set_data(__pyx_self, __pyx_v_nblocks, __pyx_v_vertexdata, __pyx_v_vertexpointers, __pyx_v_vertexinfo, __pyx_v_transformations); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11_glarea_ogl_18set_data(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_nblocks, PyObject *__pyx_v_vertexdata, PyObject *__pyx_v_vertexpointers, PyObject *__pyx_v_vertexinfo, PyObject *__pyx_v_transformations) { int __pyx_v_t; int __pyx_v_i; int __pyx_v_j; PyObject *__pyx_v_cnts_block = NULL; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; int __pyx_t_4; int __pyx_t_5; Py_ssize_t __pyx_t_6; char *__pyx_t_7; long __pyx_t_8; long __pyx_t_9; PyObject *__pyx_t_10 = NULL; PyObject *__pyx_t_11 = NULL; PyObject *(*__pyx_t_12)(PyObject *); int __pyx_t_13; int __pyx_t_14; short __pyx_t_15; Py_ssize_t __pyx_t_16; int __pyx_t_17; double __pyx_t_18; __Pyx_RefNannySetupContext("set_data", 0); /* "_glarea_ogl.pyx":497 * * def set_data(nblocks, vertexdata, vertexpointers, vertexinfo, transformations): * pydata_postsync() # <<<<<<<<<<<<<< * cdef int t,i,j #px+ * assert nblocks <= gldraw.MAX_BLOCKS, (nblocks, gldraw.MAX_BLOCKS) */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata_postsync); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 497, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } if (__pyx_t_3) { __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 497, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 497, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_glarea_ogl.pyx":499 * pydata_postsync() * cdef int t,i,j #px+ * assert nblocks <= gldraw.MAX_BLOCKS, (nblocks, gldraw.MAX_BLOCKS) # <<<<<<<<<<<<<< * uidata.nblocks = nblocks * pydata['vertexdata'] = vertexdata */ #ifndef CYTHON_WITHOUT_ASSERTIONS if (unlikely(!Py_OptimizeFlag)) { __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_e_11_gldraw_ogl_MAX_BLOCKS); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 499, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyObject_RichCompare(__pyx_v_nblocks, __pyx_t_1, Py_LE); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 499, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 499, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_4)) { __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_e_11_gldraw_ogl_MAX_BLOCKS); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 499, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 499, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_v_nblocks); __Pyx_GIVEREF(__pyx_v_nblocks); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_nblocks); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyTuple_Pack(1, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 499, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; PyErr_SetObject(PyExc_AssertionError, __pyx_t_2); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(0, 499, __pyx_L1_error) } } #endif /* "_glarea_ogl.pyx":500 * cdef int t,i,j #px+ * assert nblocks <= gldraw.MAX_BLOCKS, (nblocks, gldraw.MAX_BLOCKS) * uidata.nblocks = nblocks # <<<<<<<<<<<<<< * pydata['vertexdata'] = vertexdata * uidata.vertexdatalen = len(vertexdata) */ __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_v_nblocks); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 500, __pyx_L1_error) __pyx_v_11_glarea_ogl_uidata.nblocks = __pyx_t_5; /* "_glarea_ogl.pyx":501 * assert nblocks <= gldraw.MAX_BLOCKS, (nblocks, gldraw.MAX_BLOCKS) * uidata.nblocks = nblocks * pydata['vertexdata'] = vertexdata # <<<<<<<<<<<<<< * uidata.vertexdatalen = len(vertexdata) * uidata.vertexdata = vertexdata */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 501, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (unlikely(PyObject_SetItem(__pyx_t_2, __pyx_n_u_vertexdata, __pyx_v_vertexdata) < 0)) __PYX_ERR(0, 501, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_glarea_ogl.pyx":502 * uidata.nblocks = nblocks * pydata['vertexdata'] = vertexdata * uidata.vertexdatalen = len(vertexdata) # <<<<<<<<<<<<<< * uidata.vertexdata = vertexdata * assert len(vertexpointers) == gldraw.ATTRIB_CNT-1 */ __pyx_t_6 = PyObject_Length(__pyx_v_vertexdata); if (unlikely(__pyx_t_6 == -1)) __PYX_ERR(0, 502, __pyx_L1_error) __pyx_v_11_glarea_ogl_uidata.vertexdatalen = __pyx_t_6; /* "_glarea_ogl.pyx":503 * pydata['vertexdata'] = vertexdata * uidata.vertexdatalen = len(vertexdata) * uidata.vertexdata = vertexdata # <<<<<<<<<<<<<< * assert len(vertexpointers) == gldraw.ATTRIB_CNT-1 * for i in range(gldraw.ATTRIB_CNT-1): */ __pyx_t_7 = __Pyx_PyObject_AsString(__pyx_v_vertexdata); if (unlikely((!__pyx_t_7) && PyErr_Occurred())) __PYX_ERR(0, 503, __pyx_L1_error) __pyx_v_11_glarea_ogl_uidata.vertexdata = __pyx_t_7; /* "_glarea_ogl.pyx":504 * uidata.vertexdatalen = len(vertexdata) * uidata.vertexdata = vertexdata * assert len(vertexpointers) == gldraw.ATTRIB_CNT-1 # <<<<<<<<<<<<<< * for i in range(gldraw.ATTRIB_CNT-1): * uidata.vertexpointers[i] = vertexpointers[i] */ #ifndef CYTHON_WITHOUT_ASSERTIONS if (unlikely(!Py_OptimizeFlag)) { __pyx_t_6 = PyObject_Length(__pyx_v_vertexpointers); if (unlikely(__pyx_t_6 == -1)) __PYX_ERR(0, 504, __pyx_L1_error) if (unlikely(!((__pyx_t_6 == (__pyx_e_11_gldraw_ogl_ATTRIB_CNT - 1)) != 0))) { PyErr_SetNone(PyExc_AssertionError); __PYX_ERR(0, 504, __pyx_L1_error) } } #endif /* "_glarea_ogl.pyx":505 * uidata.vertexdata = vertexdata * assert len(vertexpointers) == gldraw.ATTRIB_CNT-1 * for i in range(gldraw.ATTRIB_CNT-1): # <<<<<<<<<<<<<< * uidata.vertexpointers[i] = vertexpointers[i] * cnts_block, uidata.idx_debug, uidata.cnt_debug, uidata.cnt_pick = vertexinfo */ __pyx_t_8 = (__pyx_e_11_gldraw_ogl_ATTRIB_CNT - 1); for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_8; __pyx_t_5+=1) { __pyx_v_i = __pyx_t_5; /* "_glarea_ogl.pyx":506 * assert len(vertexpointers) == gldraw.ATTRIB_CNT-1 * for i in range(gldraw.ATTRIB_CNT-1): * uidata.vertexpointers[i] = vertexpointers[i] # <<<<<<<<<<<<<< * cnts_block, uidata.idx_debug, uidata.cnt_debug, uidata.cnt_pick = vertexinfo * assert len(cnts_block) == nblocks */ __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_vertexpointers, __pyx_v_i, int, 1, __Pyx_PyInt_From_int, 0, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 506, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_9 = __Pyx_PyInt_As_long(__pyx_t_2); if (unlikely((__pyx_t_9 == (long)-1) && PyErr_Occurred())) __PYX_ERR(0, 506, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; (__pyx_v_11_glarea_ogl_uidata.vertexpointers[__pyx_v_i]) = __pyx_t_9; } /* "_glarea_ogl.pyx":507 * for i in range(gldraw.ATTRIB_CNT-1): * uidata.vertexpointers[i] = vertexpointers[i] * cnts_block, uidata.idx_debug, uidata.cnt_debug, uidata.cnt_pick = vertexinfo # <<<<<<<<<<<<<< * assert len(cnts_block) == nblocks * for i in range(nblocks): */ if ((likely(PyTuple_CheckExact(__pyx_v_vertexinfo))) || (PyList_CheckExact(__pyx_v_vertexinfo))) { PyObject* sequence = __pyx_v_vertexinfo; #if !CYTHON_COMPILING_IN_PYPY Py_ssize_t size = Py_SIZE(sequence); #else Py_ssize_t size = PySequence_Size(sequence); #endif if (unlikely(size != 4)) { if (size > 4) __Pyx_RaiseTooManyValuesError(4); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 507, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_1 = PyTuple_GET_ITEM(sequence, 1); __pyx_t_3 = PyTuple_GET_ITEM(sequence, 2); __pyx_t_10 = PyTuple_GET_ITEM(sequence, 3); } else { __pyx_t_2 = PyList_GET_ITEM(sequence, 0); __pyx_t_1 = PyList_GET_ITEM(sequence, 1); __pyx_t_3 = PyList_GET_ITEM(sequence, 2); __pyx_t_10 = PyList_GET_ITEM(sequence, 3); } __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(__pyx_t_10); #else { Py_ssize_t i; PyObject** temps[4] = {&__pyx_t_2,&__pyx_t_1,&__pyx_t_3,&__pyx_t_10}; for (i=0; i < 4; i++) { PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) __PYX_ERR(0, 507, __pyx_L1_error) __Pyx_GOTREF(item); *(temps[i]) = item; } } #endif } else { Py_ssize_t index = -1; PyObject** temps[4] = {&__pyx_t_2,&__pyx_t_1,&__pyx_t_3,&__pyx_t_10}; __pyx_t_11 = PyObject_GetIter(__pyx_v_vertexinfo); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 507, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_12 = Py_TYPE(__pyx_t_11)->tp_iternext; for (index=0; index < 4; index++) { PyObject* item = __pyx_t_12(__pyx_t_11); if (unlikely(!item)) goto __pyx_L5_unpacking_failed; __Pyx_GOTREF(item); *(temps[index]) = item; } if (__Pyx_IternextUnpackEndCheck(__pyx_t_12(__pyx_t_11), 4) < 0) __PYX_ERR(0, 507, __pyx_L1_error) __pyx_t_12 = NULL; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; goto __pyx_L6_unpacking_done; __pyx_L5_unpacking_failed:; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_t_12 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 507, __pyx_L1_error) __pyx_L6_unpacking_done:; } __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 507, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_13 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_13 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 507, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_14 = __Pyx_PyInt_As_int(__pyx_t_10); if (unlikely((__pyx_t_14 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 507, __pyx_L1_error) __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_v_cnts_block = __pyx_t_2; __pyx_t_2 = 0; __pyx_v_11_glarea_ogl_uidata.idx_debug = __pyx_t_5; __pyx_v_11_glarea_ogl_uidata.cnt_debug = __pyx_t_13; __pyx_v_11_glarea_ogl_uidata.cnt_pick = __pyx_t_14; /* "_glarea_ogl.pyx":508 * uidata.vertexpointers[i] = vertexpointers[i] * cnts_block, uidata.idx_debug, uidata.cnt_debug, uidata.cnt_pick = vertexinfo * assert len(cnts_block) == nblocks # <<<<<<<<<<<<<< * for i in range(nblocks): * uidata.cnts_block[i] = cnts_block[i] */ #ifndef CYTHON_WITHOUT_ASSERTIONS if (unlikely(!Py_OptimizeFlag)) { __pyx_t_6 = PyObject_Length(__pyx_v_cnts_block); if (unlikely(__pyx_t_6 == -1)) __PYX_ERR(0, 508, __pyx_L1_error) __pyx_t_10 = PyInt_FromSsize_t(__pyx_t_6); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 508, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_3 = PyObject_RichCompare(__pyx_t_10, __pyx_v_nblocks, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 508, __pyx_L1_error) __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 508, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_4)) { PyErr_SetNone(PyExc_AssertionError); __PYX_ERR(0, 508, __pyx_L1_error) } } #endif /* "_glarea_ogl.pyx":509 * cnts_block, uidata.idx_debug, uidata.cnt_debug, uidata.cnt_pick = vertexinfo * assert len(cnts_block) == nblocks * for i in range(nblocks): # <<<<<<<<<<<<<< * uidata.cnts_block[i] = cnts_block[i] * assert len(transformations) <= gldraw.MAX_TRANSFORMATIONS, len(transformations) */ __pyx_t_8 = __Pyx_PyInt_As_long(__pyx_v_nblocks); if (unlikely((__pyx_t_8 == (long)-1) && PyErr_Occurred())) __PYX_ERR(0, 509, __pyx_L1_error) for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_8; __pyx_t_14+=1) { __pyx_v_i = __pyx_t_14; /* "_glarea_ogl.pyx":510 * assert len(cnts_block) == nblocks * for i in range(nblocks): * uidata.cnts_block[i] = cnts_block[i] # <<<<<<<<<<<<<< * assert len(transformations) <= gldraw.MAX_TRANSFORMATIONS, len(transformations) * uidata.transformations_count = len(transformations) */ __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_cnts_block, __pyx_v_i, int, 1, __Pyx_PyInt_From_int, 0, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 510, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_15 = __Pyx_PyInt_As_short(__pyx_t_3); if (unlikely((__pyx_t_15 == (short)-1) && PyErr_Occurred())) __PYX_ERR(0, 510, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; (__pyx_v_11_glarea_ogl_uidata.cnts_block[__pyx_v_i]) = __pyx_t_15; } /* "_glarea_ogl.pyx":511 * for i in range(nblocks): * uidata.cnts_block[i] = cnts_block[i] * assert len(transformations) <= gldraw.MAX_TRANSFORMATIONS, len(transformations) # <<<<<<<<<<<<<< * uidata.transformations_count = len(transformations) * for t in range(uidata.transformations_count): */ #ifndef CYTHON_WITHOUT_ASSERTIONS if (unlikely(!Py_OptimizeFlag)) { __pyx_t_6 = PyObject_Length(__pyx_v_transformations); if (unlikely(__pyx_t_6 == -1)) __PYX_ERR(0, 511, __pyx_L1_error) if (unlikely(!((__pyx_t_6 <= __pyx_e_11_gldraw_ogl_MAX_TRANSFORMATIONS) != 0))) { __pyx_t_16 = PyObject_Length(__pyx_v_transformations); if (unlikely(__pyx_t_16 == -1)) __PYX_ERR(0, 511, __pyx_L1_error) __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_16); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 511, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 511, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_3); __pyx_t_3 = 0; PyErr_SetObject(PyExc_AssertionError, __pyx_t_10); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __PYX_ERR(0, 511, __pyx_L1_error) } } #endif /* "_glarea_ogl.pyx":512 * uidata.cnts_block[i] = cnts_block[i] * assert len(transformations) <= gldraw.MAX_TRANSFORMATIONS, len(transformations) * uidata.transformations_count = len(transformations) # <<<<<<<<<<<<<< * for t in range(uidata.transformations_count): * for i in range(4): */ __pyx_t_6 = PyObject_Length(__pyx_v_transformations); if (unlikely(__pyx_t_6 == -1)) __PYX_ERR(0, 512, __pyx_L1_error) __pyx_v_11_glarea_ogl_uidata.transformations_count = __pyx_t_6; /* "_glarea_ogl.pyx":513 * assert len(transformations) <= gldraw.MAX_TRANSFORMATIONS, len(transformations) * uidata.transformations_count = len(transformations) * for t in range(uidata.transformations_count): # <<<<<<<<<<<<<< * for i in range(4): * for j in range(4): */ __pyx_t_14 = __pyx_v_11_glarea_ogl_uidata.transformations_count; for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_14; __pyx_t_13+=1) { __pyx_v_t = __pyx_t_13; /* "_glarea_ogl.pyx":514 * uidata.transformations_count = len(transformations) * for t in range(uidata.transformations_count): * for i in range(4): # <<<<<<<<<<<<<< * for j in range(4): * uidata.transformations[t][i][j] = float(transformations[t][i][j]) */ for (__pyx_t_5 = 0; __pyx_t_5 < 4; __pyx_t_5+=1) { __pyx_v_i = __pyx_t_5; /* "_glarea_ogl.pyx":515 * for t in range(uidata.transformations_count): * for i in range(4): * for j in range(4): # <<<<<<<<<<<<<< * uidata.transformations[t][i][j] = float(transformations[t][i][j]) * uidata.data_changed = True */ for (__pyx_t_17 = 0; __pyx_t_17 < 4; __pyx_t_17+=1) { __pyx_v_j = __pyx_t_17; /* "_glarea_ogl.pyx":516 * for i in range(4): * for j in range(4): * uidata.transformations[t][i][j] = float(transformations[t][i][j]) # <<<<<<<<<<<<<< * uidata.data_changed = True * */ __pyx_t_10 = __Pyx_GetItemInt(__pyx_v_transformations, __pyx_v_t, int, 1, __Pyx_PyInt_From_int, 0, 1, 1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 516, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_10, __pyx_v_i, int, 1, __Pyx_PyInt_From_int, 0, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 516, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_t_10 = __Pyx_GetItemInt(__pyx_t_3, __pyx_v_j, int, 1, __Pyx_PyInt_From_int, 0, 1, 1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 516, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_18 = __Pyx_PyObject_AsDouble(__pyx_t_10); if (unlikely(__pyx_t_18 == ((double)-1) && PyErr_Occurred())) __PYX_ERR(0, 516, __pyx_L1_error) __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; (((__pyx_v_11_glarea_ogl_uidata.transformations[__pyx_v_t])[__pyx_v_i])[__pyx_v_j]) = __pyx_t_18; } } } /* "_glarea_ogl.pyx":517 * for j in range(4): * uidata.transformations[t][i][j] = float(transformations[t][i][j]) * uidata.data_changed = True # <<<<<<<<<<<<<< * * def pydata_postsync(): */ __pyx_v_11_glarea_ogl_uidata.data_changed = 1; /* "_glarea_ogl.pyx":496 * uidata.animation_changed = 2 * * def set_data(nblocks, vertexdata, vertexpointers, vertexinfo, transformations): # <<<<<<<<<<<<<< * pydata_postsync() * cdef int t,i,j #px+ */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_10); __Pyx_XDECREF(__pyx_t_11); __Pyx_AddTraceback("_glarea_ogl.set_data", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_cnts_block); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_glarea_ogl.pyx":519 * uidata.data_changed = True * * def pydata_postsync(): # <<<<<<<<<<<<<< * global pydata_backed * if uidata.synced: */ /* Python wrapper */ static PyObject *__pyx_pw_11_glarea_ogl_21pydata_postsync(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/ static PyMethodDef __pyx_mdef_11_glarea_ogl_21pydata_postsync = {"pydata_postsync", (PyCFunction)__pyx_pw_11_glarea_ogl_21pydata_postsync, METH_NOARGS, 0}; static PyObject *__pyx_pw_11_glarea_ogl_21pydata_postsync(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("pydata_postsync (wrapper)", 0); __pyx_r = __pyx_pf_11_glarea_ogl_20pydata_postsync(__pyx_self); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11_glarea_ogl_20pydata_postsync(CYTHON_UNUSED PyObject *__pyx_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; __Pyx_RefNannySetupContext("pydata_postsync", 0); /* "_glarea_ogl.pyx":521 * def pydata_postsync(): * global pydata_backed * if uidata.synced: # <<<<<<<<<<<<<< * pydata_backed = dict(pydata) * uidata.synced = False */ __pyx_t_1 = (__pyx_v_11_glarea_ogl_uidata.synced != 0); if (__pyx_t_1) { /* "_glarea_ogl.pyx":522 * global pydata_backed * if uidata.synced: * pydata_backed = dict(pydata) # <<<<<<<<<<<<<< * uidata.synced = False * */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 522, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 522, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)(&PyDict_Type)), __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 522, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (PyDict_SetItem(__pyx_d, __pyx_n_s_pydata_backed, __pyx_t_2) < 0) __PYX_ERR(0, 522, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_glarea_ogl.pyx":523 * if uidata.synced: * pydata_backed = dict(pydata) * uidata.synced = False # <<<<<<<<<<<<<< * * def update_shader_version(shader_src): */ __pyx_v_11_glarea_ogl_uidata.synced = 0; /* "_glarea_ogl.pyx":521 * def pydata_postsync(): * global pydata_backed * if uidata.synced: # <<<<<<<<<<<<<< * pydata_backed = dict(pydata) * uidata.synced = False */ } /* "_glarea_ogl.pyx":519 * uidata.data_changed = True * * def pydata_postsync(): # <<<<<<<<<<<<<< * global pydata_backed * if uidata.synced: */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("_glarea_ogl.pydata_postsync", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_glarea_ogl.pyx":525 * uidata.synced = False * * def update_shader_version(shader_src): # <<<<<<<<<<<<<< * assert shader_src.startswith(b'#version 120\n') * IF 'ogl' == 'es2': #px/ */ /* Python wrapper */ static PyObject *__pyx_pw_11_glarea_ogl_23update_shader_version(PyObject *__pyx_self, PyObject *__pyx_v_shader_src); /*proto*/ static PyMethodDef __pyx_mdef_11_glarea_ogl_23update_shader_version = {"update_shader_version", (PyCFunction)__pyx_pw_11_glarea_ogl_23update_shader_version, METH_O, 0}; static PyObject *__pyx_pw_11_glarea_ogl_23update_shader_version(PyObject *__pyx_self, PyObject *__pyx_v_shader_src) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("update_shader_version (wrapper)", 0); __pyx_r = __pyx_pf_11_glarea_ogl_22update_shader_version(__pyx_self, ((PyObject *)__pyx_v_shader_src)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11_glarea_ogl_22update_shader_version(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_shader_src) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; int __pyx_t_3; __Pyx_RefNannySetupContext("update_shader_version", 0); /* "_glarea_ogl.pyx":526 * * def update_shader_version(shader_src): * assert shader_src.startswith(b'#version 120\n') # <<<<<<<<<<<<<< * IF 'ogl' == 'es2': #px/ * #if False: */ #ifndef CYTHON_WITHOUT_ASSERTIONS if (unlikely(!Py_OptimizeFlag)) { __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_shader_src, __pyx_n_s_startswith); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 526, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 526, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 526, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_3)) { PyErr_SetNone(PyExc_AssertionError); __PYX_ERR(0, 526, __pyx_L1_error) } } #endif /* "_glarea_ogl.pyx":530 * #if False: * shader_src = b'#version 100\n' + shader_src.split(b'\n', 1)[1] * return shader_src # <<<<<<<<<<<<<< * * def set_shaders(shader_vertsrc, shader_fragsrc): */ __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_shader_src); __pyx_r = __pyx_v_shader_src; goto __pyx_L0; /* "_glarea_ogl.pyx":525 * uidata.synced = False * * def update_shader_version(shader_src): # <<<<<<<<<<<<<< * assert shader_src.startswith(b'#version 120\n') * IF 'ogl' == 'es2': #px/ */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("_glarea_ogl.update_shader_version", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_glarea_ogl.pyx":532 * return shader_src * * def set_shaders(shader_vertsrc, shader_fragsrc): # <<<<<<<<<<<<<< * pydata_postsync() * shader_vertsrc = update_shader_version(shader_vertsrc) */ /* Python wrapper */ static PyObject *__pyx_pw_11_glarea_ogl_25set_shaders(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static PyMethodDef __pyx_mdef_11_glarea_ogl_25set_shaders = {"set_shaders", (PyCFunction)__pyx_pw_11_glarea_ogl_25set_shaders, METH_VARARGS|METH_KEYWORDS, 0}; static PyObject *__pyx_pw_11_glarea_ogl_25set_shaders(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_shader_vertsrc = 0; PyObject *__pyx_v_shader_fragsrc = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("set_shaders (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_shader_vertsrc,&__pyx_n_s_shader_fragsrc,0}; PyObject* values[2] = {0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_shader_vertsrc)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_shader_fragsrc)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("set_shaders", 1, 2, 2, 1); __PYX_ERR(0, 532, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_shaders") < 0)) __PYX_ERR(0, 532, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); } __pyx_v_shader_vertsrc = values[0]; __pyx_v_shader_fragsrc = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("set_shaders", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 532, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("_glarea_ogl.set_shaders", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11_glarea_ogl_24set_shaders(__pyx_self, __pyx_v_shader_vertsrc, __pyx_v_shader_fragsrc); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11_glarea_ogl_24set_shaders(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_shader_vertsrc, PyObject *__pyx_v_shader_fragsrc) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; char *__pyx_t_5; __Pyx_RefNannySetupContext("set_shaders", 0); __Pyx_INCREF(__pyx_v_shader_vertsrc); __Pyx_INCREF(__pyx_v_shader_fragsrc); /* "_glarea_ogl.pyx":533 * * def set_shaders(shader_vertsrc, shader_fragsrc): * pydata_postsync() # <<<<<<<<<<<<<< * shader_vertsrc = update_shader_version(shader_vertsrc) * shader_fragsrc = update_shader_version(shader_fragsrc) */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata_postsync); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 533, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } if (__pyx_t_3) { __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 533, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 533, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_glarea_ogl.pyx":534 * def set_shaders(shader_vertsrc, shader_fragsrc): * pydata_postsync() * shader_vertsrc = update_shader_version(shader_vertsrc) # <<<<<<<<<<<<<< * shader_fragsrc = update_shader_version(shader_fragsrc) * pydata['shader_vertsrc'] = shader_vertsrc */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_update_shader_version); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 534, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } if (!__pyx_t_3) { __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_shader_vertsrc); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 534, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_shader_vertsrc}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 534, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_shader_vertsrc}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 534, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 534, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL; __Pyx_INCREF(__pyx_v_shader_vertsrc); __Pyx_GIVEREF(__pyx_v_shader_vertsrc); PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_shader_vertsrc); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 534, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF_SET(__pyx_v_shader_vertsrc, __pyx_t_1); __pyx_t_1 = 0; /* "_glarea_ogl.pyx":535 * pydata_postsync() * shader_vertsrc = update_shader_version(shader_vertsrc) * shader_fragsrc = update_shader_version(shader_fragsrc) # <<<<<<<<<<<<<< * pydata['shader_vertsrc'] = shader_vertsrc * uidata.shader_vertsrc = shader_vertsrc */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_update_shader_version); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 535, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } if (!__pyx_t_4) { __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_shader_fragsrc); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 535, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_shader_fragsrc}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 535, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_shader_fragsrc}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 535, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 535, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); __pyx_t_4 = NULL; __Pyx_INCREF(__pyx_v_shader_fragsrc); __Pyx_GIVEREF(__pyx_v_shader_fragsrc); PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_v_shader_fragsrc); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 535, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF_SET(__pyx_v_shader_fragsrc, __pyx_t_1); __pyx_t_1 = 0; /* "_glarea_ogl.pyx":536 * shader_vertsrc = update_shader_version(shader_vertsrc) * shader_fragsrc = update_shader_version(shader_fragsrc) * pydata['shader_vertsrc'] = shader_vertsrc # <<<<<<<<<<<<<< * uidata.shader_vertsrc = shader_vertsrc * pydata['shader_fragsrc'] = shader_fragsrc */ __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 536, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (unlikely(PyObject_SetItem(__pyx_t_1, __pyx_n_u_shader_vertsrc, __pyx_v_shader_vertsrc) < 0)) __PYX_ERR(0, 536, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_glarea_ogl.pyx":537 * shader_fragsrc = update_shader_version(shader_fragsrc) * pydata['shader_vertsrc'] = shader_vertsrc * uidata.shader_vertsrc = shader_vertsrc # <<<<<<<<<<<<<< * pydata['shader_fragsrc'] = shader_fragsrc * uidata.shader_fragsrc = shader_fragsrc */ __pyx_t_5 = __Pyx_PyObject_AsString(__pyx_v_shader_vertsrc); if (unlikely((!__pyx_t_5) && PyErr_Occurred())) __PYX_ERR(0, 537, __pyx_L1_error) __pyx_v_11_glarea_ogl_uidata.shader_vertsrc = __pyx_t_5; /* "_glarea_ogl.pyx":538 * pydata['shader_vertsrc'] = shader_vertsrc * uidata.shader_vertsrc = shader_vertsrc * pydata['shader_fragsrc'] = shader_fragsrc # <<<<<<<<<<<<<< * uidata.shader_fragsrc = shader_fragsrc * uidata.shaders_changed = True */ __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 538, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (unlikely(PyObject_SetItem(__pyx_t_1, __pyx_n_u_shader_fragsrc, __pyx_v_shader_fragsrc) < 0)) __PYX_ERR(0, 538, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_glarea_ogl.pyx":539 * uidata.shader_vertsrc = shader_vertsrc * pydata['shader_fragsrc'] = shader_fragsrc * uidata.shader_fragsrc = shader_fragsrc # <<<<<<<<<<<<<< * uidata.shaders_changed = True * */ __pyx_t_5 = __Pyx_PyObject_AsString(__pyx_v_shader_fragsrc); if (unlikely((!__pyx_t_5) && PyErr_Occurred())) __PYX_ERR(0, 539, __pyx_L1_error) __pyx_v_11_glarea_ogl_uidata.shader_fragsrc = __pyx_t_5; /* "_glarea_ogl.pyx":540 * pydata['shader_fragsrc'] = shader_fragsrc * uidata.shader_fragsrc = shader_fragsrc * uidata.shaders_changed = True # <<<<<<<<<<<<<< * * def set_fixedshaders(fixedshaders): */ __pyx_v_11_glarea_ogl_uidata.shaders_changed = 1; /* "_glarea_ogl.pyx":532 * return shader_src * * def set_shaders(shader_vertsrc, shader_fragsrc): # <<<<<<<<<<<<<< * pydata_postsync() * shader_vertsrc = update_shader_version(shader_vertsrc) */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("_glarea_ogl.set_shaders", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_shader_vertsrc); __Pyx_XDECREF(__pyx_v_shader_fragsrc); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_glarea_ogl.pyx":542 * uidata.shaders_changed = True * * def set_fixedshaders(fixedshaders): # <<<<<<<<<<<<<< * pydata_postsync() * fixedshaders = [update_shader_version(s) for s in fixedshaders] */ /* Python wrapper */ static PyObject *__pyx_pw_11_glarea_ogl_27set_fixedshaders(PyObject *__pyx_self, PyObject *__pyx_v_fixedshaders); /*proto*/ static PyMethodDef __pyx_mdef_11_glarea_ogl_27set_fixedshaders = {"set_fixedshaders", (PyCFunction)__pyx_pw_11_glarea_ogl_27set_fixedshaders, METH_O, 0}; static PyObject *__pyx_pw_11_glarea_ogl_27set_fixedshaders(PyObject *__pyx_self, PyObject *__pyx_v_fixedshaders) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("set_fixedshaders (wrapper)", 0); __pyx_r = __pyx_pf_11_glarea_ogl_26set_fixedshaders(__pyx_self, ((PyObject *)__pyx_v_fixedshaders)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11_glarea_ogl_26set_fixedshaders(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_fixedshaders) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; Py_ssize_t __pyx_t_4; PyObject *(*__pyx_t_5)(PyObject *); PyObject *__pyx_t_6 = NULL; PyObject *__pyx_t_7 = NULL; PyObject *__pyx_t_8 = NULL; char *__pyx_t_9; int __pyx_t_10; __Pyx_RefNannySetupContext("set_fixedshaders", 0); __Pyx_INCREF(__pyx_v_fixedshaders); /* "_glarea_ogl.pyx":543 * * def set_fixedshaders(fixedshaders): * pydata_postsync() # <<<<<<<<<<<<<< * fixedshaders = [update_shader_version(s) for s in fixedshaders] * pydata['fixedshaders'] = fixedshaders */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata_postsync); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 543, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } if (__pyx_t_3) { __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 543, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 543, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_glarea_ogl.pyx":544 * def set_fixedshaders(fixedshaders): * pydata_postsync() * fixedshaders = [update_shader_version(s) for s in fixedshaders] # <<<<<<<<<<<<<< * pydata['fixedshaders'] = fixedshaders * uidata.pick_vertsrc = fixedshaders[0] */ { /* enter inner scope */ PyObject *__pyx_7genexpr__pyx_v_s = NULL; __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 544, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_1); if (likely(PyList_CheckExact(__pyx_v_fixedshaders)) || PyTuple_CheckExact(__pyx_v_fixedshaders)) { __pyx_t_2 = __pyx_v_fixedshaders; __Pyx_INCREF(__pyx_t_2); __pyx_t_4 = 0; __pyx_t_5 = NULL; } else { __pyx_t_4 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_fixedshaders); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 544, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 544, __pyx_L5_error) } for (;;) { if (likely(!__pyx_t_5)) { if (likely(PyList_CheckExact(__pyx_t_2))) { if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_2)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_3 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 544, __pyx_L5_error) #else __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 544, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_3); #endif } else { if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_2)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 544, __pyx_L5_error) #else __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 544, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_3); #endif } } else { __pyx_t_3 = __pyx_t_5(__pyx_t_2); if (unlikely(!__pyx_t_3)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 544, __pyx_L5_error) } break; } __Pyx_GOTREF(__pyx_t_3); } __Pyx_XDECREF_SET(__pyx_7genexpr__pyx_v_s, __pyx_t_3); __pyx_t_3 = 0; __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_update_shader_version); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 544, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); } } if (!__pyx_t_7) { __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_7genexpr__pyx_v_s); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 544, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_3); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_7genexpr__pyx_v_s}; __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 544, __pyx_L5_error) __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_3); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[2] = {__pyx_t_7, __pyx_7genexpr__pyx_v_s}; __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 544, __pyx_L5_error) __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_3); } else #endif { __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 544, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7); __pyx_t_7 = NULL; __Pyx_INCREF(__pyx_7genexpr__pyx_v_s); __Pyx_GIVEREF(__pyx_7genexpr__pyx_v_s); PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_7genexpr__pyx_v_s); __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 544, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_3))) __PYX_ERR(0, 544, __pyx_L5_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF(__pyx_7genexpr__pyx_v_s); goto __pyx_L8_exit_scope; __pyx_L5_error:; __Pyx_XDECREF(__pyx_7genexpr__pyx_v_s); goto __pyx_L1_error; __pyx_L8_exit_scope:; } /* exit inner scope */ __Pyx_DECREF_SET(__pyx_v_fixedshaders, __pyx_t_1); __pyx_t_1 = 0; /* "_glarea_ogl.pyx":545 * pydata_postsync() * fixedshaders = [update_shader_version(s) for s in fixedshaders] * pydata['fixedshaders'] = fixedshaders # <<<<<<<<<<<<<< * uidata.pick_vertsrc = fixedshaders[0] * uidata.pick_fragsrc = fixedshaders[1] */ __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 545, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (unlikely(PyObject_SetItem(__pyx_t_1, __pyx_n_u_fixedshaders, __pyx_v_fixedshaders) < 0)) __PYX_ERR(0, 545, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_glarea_ogl.pyx":546 * fixedshaders = [update_shader_version(s) for s in fixedshaders] * pydata['fixedshaders'] = fixedshaders * uidata.pick_vertsrc = fixedshaders[0] # <<<<<<<<<<<<<< * uidata.pick_fragsrc = fixedshaders[1] * if debug & DEBUG_DRAW: */ __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_fixedshaders, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 546, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_9 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_9) && PyErr_Occurred())) __PYX_ERR(0, 546, __pyx_L1_error) __pyx_v_11_glarea_ogl_uidata.pick_vertsrc = __pyx_t_9; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_glarea_ogl.pyx":547 * pydata['fixedshaders'] = fixedshaders * uidata.pick_vertsrc = fixedshaders[0] * uidata.pick_fragsrc = fixedshaders[1] # <<<<<<<<<<<<<< * if debug & DEBUG_DRAW: * uidata.hud_vertsrc = fixedshaders[2] */ __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_fixedshaders, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 547, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_9 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_9) && PyErr_Occurred())) __PYX_ERR(0, 547, __pyx_L1_error) __pyx_v_11_glarea_ogl_uidata.pick_fragsrc = __pyx_t_9; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_glarea_ogl.pyx":548 * uidata.pick_vertsrc = fixedshaders[0] * uidata.pick_fragsrc = fixedshaders[1] * if debug & DEBUG_DRAW: # <<<<<<<<<<<<<< * uidata.hud_vertsrc = fixedshaders[2] * uidata.hud_fragsrc = fixedshaders[1] */ __pyx_t_10 = ((__pyx_v_11_glarea_ogl_debug & __pyx_e_11_glarea_ogl_DEBUG_DRAW) != 0); if (__pyx_t_10) { /* "_glarea_ogl.pyx":549 * uidata.pick_fragsrc = fixedshaders[1] * if debug & DEBUG_DRAW: * uidata.hud_vertsrc = fixedshaders[2] # <<<<<<<<<<<<<< * uidata.hud_fragsrc = fixedshaders[1] * */ __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_fixedshaders, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 549, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_9 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_9) && PyErr_Occurred())) __PYX_ERR(0, 549, __pyx_L1_error) __pyx_v_11_glarea_ogl_uidata.hud_vertsrc = __pyx_t_9; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_glarea_ogl.pyx":550 * if debug & DEBUG_DRAW: * uidata.hud_vertsrc = fixedshaders[2] * uidata.hud_fragsrc = fixedshaders[1] # <<<<<<<<<<<<<< * * ##pxm-FUNC PD nogil */ __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_fixedshaders, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 550, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_9 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_9) && PyErr_Occurred())) __PYX_ERR(0, 550, __pyx_L1_error) __pyx_v_11_glarea_ogl_uidata.hud_fragsrc = __pyx_t_9; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_glarea_ogl.pyx":548 * uidata.pick_vertsrc = fixedshaders[0] * uidata.pick_fragsrc = fixedshaders[1] * if debug & DEBUG_DRAW: # <<<<<<<<<<<<<< * uidata.hud_vertsrc = fixedshaders[2] * uidata.hud_fragsrc = fixedshaders[1] */ } /* "_glarea_ogl.pyx":542 * uidata.shaders_changed = True * * def set_fixedshaders(fixedshaders): # <<<<<<<<<<<<<< * pydata_postsync() * fixedshaders = [update_shader_version(s) for s in fixedshaders] */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_8); __Pyx_AddTraceback("_glarea_ogl.set_fixedshaders", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_fixedshaders); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_glarea_ogl.pyx":553 * * ##pxm-FUNC PD nogil * cdef void sync_set_fixedshaders() nogil: # <<<<<<<<<<<<<< * renderdata.pick_vertsrc = uidata.pick_vertsrc * renderdata.pick_fragsrc = uidata.pick_fragsrc */ static void __pyx_f_11_glarea_ogl_sync_set_fixedshaders(void) { char *__pyx_t_1; int __pyx_t_2; /* "_glarea_ogl.pyx":554 * ##pxm-FUNC PD nogil * cdef void sync_set_fixedshaders() nogil: * renderdata.pick_vertsrc = uidata.pick_vertsrc # <<<<<<<<<<<<<< * renderdata.pick_fragsrc = uidata.pick_fragsrc * if debug & DEBUG_DRAW: */ __pyx_t_1 = __pyx_v_11_glarea_ogl_uidata.pick_vertsrc; __pyx_v_11_glarea_ogl_renderdata.pick_vertsrc = __pyx_t_1; /* "_glarea_ogl.pyx":555 * cdef void sync_set_fixedshaders() nogil: * renderdata.pick_vertsrc = uidata.pick_vertsrc * renderdata.pick_fragsrc = uidata.pick_fragsrc # <<<<<<<<<<<<<< * if debug & DEBUG_DRAW: * renderdata.hud_vertsrc = uidata.hud_vertsrc */ __pyx_t_1 = __pyx_v_11_glarea_ogl_uidata.pick_fragsrc; __pyx_v_11_glarea_ogl_renderdata.pick_fragsrc = __pyx_t_1; /* "_glarea_ogl.pyx":556 * renderdata.pick_vertsrc = uidata.pick_vertsrc * renderdata.pick_fragsrc = uidata.pick_fragsrc * if debug & DEBUG_DRAW: # <<<<<<<<<<<<<< * renderdata.hud_vertsrc = uidata.hud_vertsrc * renderdata.hud_fragsrc = uidata.hud_fragsrc */ __pyx_t_2 = ((__pyx_v_11_glarea_ogl_debug & __pyx_e_11_glarea_ogl_DEBUG_DRAW) != 0); if (__pyx_t_2) { /* "_glarea_ogl.pyx":557 * renderdata.pick_fragsrc = uidata.pick_fragsrc * if debug & DEBUG_DRAW: * renderdata.hud_vertsrc = uidata.hud_vertsrc # <<<<<<<<<<<<<< * renderdata.hud_fragsrc = uidata.hud_fragsrc * */ __pyx_t_1 = __pyx_v_11_glarea_ogl_uidata.hud_vertsrc; __pyx_v_11_glarea_ogl_renderdata.hud_vertsrc = __pyx_t_1; /* "_glarea_ogl.pyx":558 * if debug & DEBUG_DRAW: * renderdata.hud_vertsrc = uidata.hud_vertsrc * renderdata.hud_fragsrc = uidata.hud_fragsrc # <<<<<<<<<<<<<< * * def set_pick_position(x, y): */ __pyx_t_1 = __pyx_v_11_glarea_ogl_uidata.hud_fragsrc; __pyx_v_11_glarea_ogl_renderdata.hud_fragsrc = __pyx_t_1; /* "_glarea_ogl.pyx":556 * renderdata.pick_vertsrc = uidata.pick_vertsrc * renderdata.pick_fragsrc = uidata.pick_fragsrc * if debug & DEBUG_DRAW: # <<<<<<<<<<<<<< * renderdata.hud_vertsrc = uidata.hud_vertsrc * renderdata.hud_fragsrc = uidata.hud_fragsrc */ } /* "_glarea_ogl.pyx":553 * * ##pxm-FUNC PD nogil * cdef void sync_set_fixedshaders() nogil: # <<<<<<<<<<<<<< * renderdata.pick_vertsrc = uidata.pick_vertsrc * renderdata.pick_fragsrc = uidata.pick_fragsrc */ /* function exit code */ } /* "_glarea_ogl.pyx":560 * renderdata.hud_fragsrc = uidata.hud_fragsrc * * def set_pick_position(x, y): # <<<<<<<<<<<<<< * uidata.pick_x = x * uidata.pick_y = y */ /* Python wrapper */ static PyObject *__pyx_pw_11_glarea_ogl_29set_pick_position(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static PyMethodDef __pyx_mdef_11_glarea_ogl_29set_pick_position = {"set_pick_position", (PyCFunction)__pyx_pw_11_glarea_ogl_29set_pick_position, METH_VARARGS|METH_KEYWORDS, 0}; static PyObject *__pyx_pw_11_glarea_ogl_29set_pick_position(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_x = 0; PyObject *__pyx_v_y = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("set_pick_position (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_y,0}; PyObject* values[2] = {0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("set_pick_position", 1, 2, 2, 1); __PYX_ERR(0, 560, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_pick_position") < 0)) __PYX_ERR(0, 560, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); } __pyx_v_x = values[0]; __pyx_v_y = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("set_pick_position", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 560, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("_glarea_ogl.set_pick_position", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_11_glarea_ogl_28set_pick_position(__pyx_self, __pyx_v_x, __pyx_v_y); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11_glarea_ogl_28set_pick_position(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_x, PyObject *__pyx_v_y) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; __Pyx_RefNannySetupContext("set_pick_position", 0); /* "_glarea_ogl.pyx":561 * * def set_pick_position(x, y): * uidata.pick_x = x # <<<<<<<<<<<<<< * uidata.pick_y = y * */ __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_x); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 561, __pyx_L1_error) __pyx_v_11_glarea_ogl_uidata.pick_x = __pyx_t_1; /* "_glarea_ogl.pyx":562 * def set_pick_position(x, y): * uidata.pick_x = x * uidata.pick_y = y # <<<<<<<<<<<<<< * * ##pxm-FUNC PD nogil */ __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_y); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 562, __pyx_L1_error) __pyx_v_11_glarea_ogl_uidata.pick_y = __pyx_t_1; /* "_glarea_ogl.pyx":560 * renderdata.hud_fragsrc = uidata.hud_fragsrc * * def set_pick_position(x, y): # <<<<<<<<<<<<<< * uidata.pick_x = x * uidata.pick_y = y */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("_glarea_ogl.set_pick_position", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_glarea_ogl.pyx":565 * * ##pxm-FUNC PD nogil * cdef void sync_set_pick_position() nogil: # <<<<<<<<<<<<<< * renderdata.pick_x = uidata.pick_x * renderdata.pick_y = uidata.pick_y */ static void __pyx_f_11_glarea_ogl_sync_set_pick_position(void) { int __pyx_t_1; /* "_glarea_ogl.pyx":566 * ##pxm-FUNC PD nogil * cdef void sync_set_pick_position() nogil: * renderdata.pick_x = uidata.pick_x # <<<<<<<<<<<<<< * renderdata.pick_y = uidata.pick_y * */ __pyx_t_1 = __pyx_v_11_glarea_ogl_uidata.pick_x; __pyx_v_11_glarea_ogl_renderdata.pick_x = __pyx_t_1; /* "_glarea_ogl.pyx":567 * cdef void sync_set_pick_position() nogil: * renderdata.pick_x = uidata.pick_x * renderdata.pick_y = uidata.pick_y # <<<<<<<<<<<<<< * * ##pxm-FUNC P */ __pyx_t_1 = __pyx_v_11_glarea_ogl_uidata.pick_y; __pyx_v_11_glarea_ogl_renderdata.pick_y = __pyx_t_1; /* "_glarea_ogl.pyx":565 * * ##pxm-FUNC PD nogil * cdef void sync_set_pick_position() nogil: # <<<<<<<<<<<<<< * renderdata.pick_x = uidata.pick_x * renderdata.pick_y = uidata.pick_y */ /* function exit code */ } /* "_glarea_ogl.pyx":570 * * ##pxm-FUNC P * cpdef set_atlas_data(int i, bytes data, int x, int w, int h): # <<<<<<<<<<<<<< * assert i < gldraw.MAX_FACES, (i, gldraw.MAX_FACES) * if i == 0: */ static PyObject *__pyx_pw_11_glarea_ogl_31set_atlas_data(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static PyObject *__pyx_f_11_glarea_ogl_set_atlas_data(int __pyx_v_i, PyObject *__pyx_v_data, int __pyx_v_x, int __pyx_v_w, int __pyx_v_h, CYTHON_UNUSED int __pyx_skip_dispatch) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; int __pyx_t_4; int __pyx_t_5; char *__pyx_t_6; __Pyx_RefNannySetupContext("set_atlas_data", 0); /* "_glarea_ogl.pyx":571 * ##pxm-FUNC P * cpdef set_atlas_data(int i, bytes data, int x, int w, int h): * assert i < gldraw.MAX_FACES, (i, gldraw.MAX_FACES) # <<<<<<<<<<<<<< * if i == 0: * uipydata.atlasdata = [] */ #ifndef CYTHON_WITHOUT_ASSERTIONS if (unlikely(!Py_OptimizeFlag)) { if (unlikely(!((__pyx_v_i < __pyx_e_11_gldraw_ogl_MAX_FACES) != 0))) { __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_i); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 571, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_e_11_gldraw_ogl_MAX_FACES); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 571, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 571, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2); __pyx_t_1 = 0; __pyx_t_2 = 0; __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 571, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3); __pyx_t_3 = 0; PyErr_SetObject(PyExc_AssertionError, __pyx_t_2); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_ERR(0, 571, __pyx_L1_error) } } #endif /* "_glarea_ogl.pyx":572 * cpdef set_atlas_data(int i, bytes data, int x, int w, int h): * assert i < gldraw.MAX_FACES, (i, gldraw.MAX_FACES) * if i == 0: # <<<<<<<<<<<<<< * uipydata.atlasdata = [] * uipydata.atlasdata.append(data) */ __pyx_t_4 = ((__pyx_v_i == 0) != 0); if (__pyx_t_4) { /* "_glarea_ogl.pyx":573 * assert i < gldraw.MAX_FACES, (i, gldraw.MAX_FACES) * if i == 0: * uipydata.atlasdata = [] # <<<<<<<<<<<<<< * uipydata.atlasdata.append(data) * uidata.atlasdata[i].x = x */ __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 573, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_uipydata); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 573, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (__Pyx_PyObject_SetAttrStr(__pyx_t_3, __pyx_n_s_atlasdata, __pyx_t_2) < 0) __PYX_ERR(0, 573, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "_glarea_ogl.pyx":572 * cpdef set_atlas_data(int i, bytes data, int x, int w, int h): * assert i < gldraw.MAX_FACES, (i, gldraw.MAX_FACES) * if i == 0: # <<<<<<<<<<<<<< * uipydata.atlasdata = [] * uipydata.atlasdata.append(data) */ } /* "_glarea_ogl.pyx":574 * if i == 0: * uipydata.atlasdata = [] * uipydata.atlasdata.append(data) # <<<<<<<<<<<<<< * uidata.atlasdata[i].x = x * uidata.atlasdata[i].w = w */ __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_uipydata); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 574, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_atlasdata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 574, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_5 = __Pyx_PyObject_Append(__pyx_t_2, __pyx_v_data); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(0, 574, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_glarea_ogl.pyx":575 * uipydata.atlasdata = [] * uipydata.atlasdata.append(data) * uidata.atlasdata[i].x = x # <<<<<<<<<<<<<< * uidata.atlasdata[i].w = w * uidata.atlasdata[i].h = h */ (__pyx_v_11_glarea_ogl_uidata.atlasdata[__pyx_v_i]).x = __pyx_v_x; /* "_glarea_ogl.pyx":576 * uipydata.atlasdata.append(data) * uidata.atlasdata[i].x = x * uidata.atlasdata[i].w = w # <<<<<<<<<<<<<< * uidata.atlasdata[i].h = h * uidata.atlasdata[i].data = data */ (__pyx_v_11_glarea_ogl_uidata.atlasdata[__pyx_v_i]).w = __pyx_v_w; /* "_glarea_ogl.pyx":577 * uidata.atlasdata[i].x = x * uidata.atlasdata[i].w = w * uidata.atlasdata[i].h = h # <<<<<<<<<<<<<< * uidata.atlasdata[i].data = data * uidata.atlaslen = i+1 */ (__pyx_v_11_glarea_ogl_uidata.atlasdata[__pyx_v_i]).h = __pyx_v_h; /* "_glarea_ogl.pyx":578 * uidata.atlasdata[i].w = w * uidata.atlasdata[i].h = h * uidata.atlasdata[i].data = data # <<<<<<<<<<<<<< * uidata.atlaslen = i+1 * */ __pyx_t_6 = __Pyx_PyObject_AsString(__pyx_v_data); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(0, 578, __pyx_L1_error) (__pyx_v_11_glarea_ogl_uidata.atlasdata[__pyx_v_i]).data = __pyx_t_6; /* "_glarea_ogl.pyx":579 * uidata.atlasdata[i].h = h * uidata.atlasdata[i].data = data * uidata.atlaslen = i+1 # <<<<<<<<<<<<<< * * ##pxm-FUNC PD nogil */ __pyx_v_11_glarea_ogl_uidata.atlaslen = (__pyx_v_i + 1); /* "_glarea_ogl.pyx":570 * * ##pxm-FUNC P * cpdef set_atlas_data(int i, bytes data, int x, int w, int h): # <<<<<<<<<<<<<< * assert i < gldraw.MAX_FACES, (i, gldraw.MAX_FACES) * if i == 0: */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("_glarea_ogl.set_atlas_data", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* Python wrapper */ static PyObject *__pyx_pw_11_glarea_ogl_31set_atlas_data(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static PyObject *__pyx_pw_11_glarea_ogl_31set_atlas_data(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { int __pyx_v_i; PyObject *__pyx_v_data = 0; int __pyx_v_x; int __pyx_v_w; int __pyx_v_h; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("set_atlas_data (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,&__pyx_n_s_data,&__pyx_n_s_x,&__pyx_n_s_w,&__pyx_n_s_h,0}; PyObject* values[5] = {0,0,0,0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_i)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_data)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("set_atlas_data", 1, 5, 5, 1); __PYX_ERR(0, 570, __pyx_L3_error) } case 2: if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("set_atlas_data", 1, 5, 5, 2); __PYX_ERR(0, 570, __pyx_L3_error) } case 3: if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_w)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("set_atlas_data", 1, 5, 5, 3); __PYX_ERR(0, 570, __pyx_L3_error) } case 4: if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_h)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("set_atlas_data", 1, 5, 5, 4); __PYX_ERR(0, 570, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_atlas_data") < 0)) __PYX_ERR(0, 570, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 5) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); values[2] = PyTuple_GET_ITEM(__pyx_args, 2); values[3] = PyTuple_GET_ITEM(__pyx_args, 3); values[4] = PyTuple_GET_ITEM(__pyx_args, 4); } __pyx_v_i = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_i == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 570, __pyx_L3_error) __pyx_v_data = ((PyObject*)values[1]); __pyx_v_x = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_x == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 570, __pyx_L3_error) __pyx_v_w = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_w == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 570, __pyx_L3_error) __pyx_v_h = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_h == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 570, __pyx_L3_error) } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("set_atlas_data", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 570, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("_glarea_ogl.set_atlas_data", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_data), (&PyBytes_Type), 1, "data", 1))) __PYX_ERR(0, 570, __pyx_L1_error) __pyx_r = __pyx_pf_11_glarea_ogl_30set_atlas_data(__pyx_self, __pyx_v_i, __pyx_v_data, __pyx_v_x, __pyx_v_w, __pyx_v_h); /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __pyx_r = NULL; __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11_glarea_ogl_30set_atlas_data(CYTHON_UNUSED PyObject *__pyx_self, int __pyx_v_i, PyObject *__pyx_v_data, int __pyx_v_x, int __pyx_v_w, int __pyx_v_h) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("set_atlas_data", 0); __Pyx_XDECREF(__pyx_r); __pyx_t_1 = __pyx_f_11_glarea_ogl_set_atlas_data(__pyx_v_i, __pyx_v_data, __pyx_v_x, __pyx_v_w, __pyx_v_h, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 570, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("_glarea_ogl.set_atlas_data", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_glarea_ogl.pyx":582 * * ##pxm-FUNC PD nogil * cdef void sync_set_atlas_data() nogil: # <<<<<<<<<<<<<< * cdef int i #px+ * for i in range(uidata.atlaslen): */ static void __pyx_f_11_glarea_ogl_sync_set_atlas_data(void) { int __pyx_v_i; int __pyx_t_1; int __pyx_t_2; int __pyx_t_3; char *__pyx_t_4; /* "_glarea_ogl.pyx":584 * cdef void sync_set_atlas_data() nogil: * cdef int i #px+ * for i in range(uidata.atlaslen): # <<<<<<<<<<<<<< * renderdata.atlasdata[i].x = uidata.atlasdata[i].x * renderdata.atlasdata[i].w = uidata.atlasdata[i].w */ __pyx_t_1 = __pyx_v_11_glarea_ogl_uidata.atlaslen; for (__pyx_t_2 = 0; __pyx_t_2 < __pyx_t_1; __pyx_t_2+=1) { __pyx_v_i = __pyx_t_2; /* "_glarea_ogl.pyx":585 * cdef int i #px+ * for i in range(uidata.atlaslen): * renderdata.atlasdata[i].x = uidata.atlasdata[i].x # <<<<<<<<<<<<<< * renderdata.atlasdata[i].w = uidata.atlasdata[i].w * renderdata.atlasdata[i].h = uidata.atlasdata[i].h */ __pyx_t_3 = (__pyx_v_11_glarea_ogl_uidata.atlasdata[__pyx_v_i]).x; (__pyx_v_11_glarea_ogl_renderdata.atlasdata[__pyx_v_i]).x = __pyx_t_3; /* "_glarea_ogl.pyx":586 * for i in range(uidata.atlaslen): * renderdata.atlasdata[i].x = uidata.atlasdata[i].x * renderdata.atlasdata[i].w = uidata.atlasdata[i].w # <<<<<<<<<<<<<< * renderdata.atlasdata[i].h = uidata.atlasdata[i].h * renderdata.atlasdata[i].data = uidata.atlasdata[i].data */ __pyx_t_3 = (__pyx_v_11_glarea_ogl_uidata.atlasdata[__pyx_v_i]).w; (__pyx_v_11_glarea_ogl_renderdata.atlasdata[__pyx_v_i]).w = __pyx_t_3; /* "_glarea_ogl.pyx":587 * renderdata.atlasdata[i].x = uidata.atlasdata[i].x * renderdata.atlasdata[i].w = uidata.atlasdata[i].w * renderdata.atlasdata[i].h = uidata.atlasdata[i].h # <<<<<<<<<<<<<< * renderdata.atlasdata[i].data = uidata.atlasdata[i].data * renderdata.atlaslen = uidata.atlaslen */ __pyx_t_3 = (__pyx_v_11_glarea_ogl_uidata.atlasdata[__pyx_v_i]).h; (__pyx_v_11_glarea_ogl_renderdata.atlasdata[__pyx_v_i]).h = __pyx_t_3; /* "_glarea_ogl.pyx":588 * renderdata.atlasdata[i].w = uidata.atlasdata[i].w * renderdata.atlasdata[i].h = uidata.atlasdata[i].h * renderdata.atlasdata[i].data = uidata.atlasdata[i].data # <<<<<<<<<<<<<< * renderdata.atlaslen = uidata.atlaslen * */ __pyx_t_4 = (__pyx_v_11_glarea_ogl_uidata.atlasdata[__pyx_v_i]).data; (__pyx_v_11_glarea_ogl_renderdata.atlasdata[__pyx_v_i]).data = __pyx_t_4; } /* "_glarea_ogl.pyx":589 * renderdata.atlasdata[i].h = uidata.atlasdata[i].h * renderdata.atlasdata[i].data = uidata.atlasdata[i].data * renderdata.atlaslen = uidata.atlaslen # <<<<<<<<<<<<<< * * ##pxm-FUNC PD nogil */ __pyx_t_1 = __pyx_v_11_glarea_ogl_uidata.atlaslen; __pyx_v_11_glarea_ogl_renderdata.atlaslen = __pyx_t_1; /* "_glarea_ogl.pyx":582 * * ##pxm-FUNC PD nogil * cdef void sync_set_atlas_data() nogil: # <<<<<<<<<<<<<< * cdef int i #px+ * for i in range(uidata.atlaslen): */ /* function exit code */ } /* "_glarea_ogl.pyx":592 * * ##pxm-FUNC PD nogil * cdef void sync() nogil: # <<<<<<<<<<<<<< * uidata.synced = True * if uidata.background_changed: */ static void __pyx_f_11_glarea_ogl_sync(void) { int __pyx_t_1; float __pyx_t_2; char *__pyx_t_3; /* "_glarea_ogl.pyx":593 * ##pxm-FUNC PD nogil * cdef void sync() nogil: * uidata.synced = True # <<<<<<<<<<<<<< * if uidata.background_changed: * renderdata.bg_red = uidata.bg_red */ __pyx_v_11_glarea_ogl_uidata.synced = 1; /* "_glarea_ogl.pyx":594 * cdef void sync() nogil: * uidata.synced = True * if uidata.background_changed: # <<<<<<<<<<<<<< * renderdata.bg_red = uidata.bg_red * renderdata.bg_green = uidata.bg_green */ __pyx_t_1 = (__pyx_v_11_glarea_ogl_uidata.background_changed != 0); if (__pyx_t_1) { /* "_glarea_ogl.pyx":595 * uidata.synced = True * if uidata.background_changed: * renderdata.bg_red = uidata.bg_red # <<<<<<<<<<<<<< * renderdata.bg_green = uidata.bg_green * renderdata.bg_blue = uidata.bg_blue */ __pyx_t_2 = __pyx_v_11_glarea_ogl_uidata.bg_red; __pyx_v_11_glarea_ogl_renderdata.bg_red = __pyx_t_2; /* "_glarea_ogl.pyx":596 * if uidata.background_changed: * renderdata.bg_red = uidata.bg_red * renderdata.bg_green = uidata.bg_green # <<<<<<<<<<<<<< * renderdata.bg_blue = uidata.bg_blue * uidata.background_changed = False */ __pyx_t_2 = __pyx_v_11_glarea_ogl_uidata.bg_green; __pyx_v_11_glarea_ogl_renderdata.bg_green = __pyx_t_2; /* "_glarea_ogl.pyx":597 * renderdata.bg_red = uidata.bg_red * renderdata.bg_green = uidata.bg_green * renderdata.bg_blue = uidata.bg_blue # <<<<<<<<<<<<<< * uidata.background_changed = False * if uidata.viewport_changed: */ __pyx_t_2 = __pyx_v_11_glarea_ogl_uidata.bg_blue; __pyx_v_11_glarea_ogl_renderdata.bg_blue = __pyx_t_2; /* "_glarea_ogl.pyx":598 * renderdata.bg_green = uidata.bg_green * renderdata.bg_blue = uidata.bg_blue * uidata.background_changed = False # <<<<<<<<<<<<<< * if uidata.viewport_changed: * _sync_projection_matrix() */ __pyx_v_11_glarea_ogl_uidata.background_changed = 0; /* "_glarea_ogl.pyx":594 * cdef void sync() nogil: * uidata.synced = True * if uidata.background_changed: # <<<<<<<<<<<<<< * renderdata.bg_red = uidata.bg_red * renderdata.bg_green = uidata.bg_green */ } /* "_glarea_ogl.pyx":599 * renderdata.bg_blue = uidata.bg_blue * uidata.background_changed = False * if uidata.viewport_changed: # <<<<<<<<<<<<<< * _sync_projection_matrix() * uidata.viewport_changed = False */ __pyx_t_1 = (__pyx_v_11_glarea_ogl_uidata.viewport_changed != 0); if (__pyx_t_1) { /* "_glarea_ogl.pyx":600 * uidata.background_changed = False * if uidata.viewport_changed: * _sync_projection_matrix() # <<<<<<<<<<<<<< * uidata.viewport_changed = False * if uidata.rotation_changed: */ __pyx_f_11_glarea_ogl__sync_projection_matrix(); /* "_glarea_ogl.pyx":601 * if uidata.viewport_changed: * _sync_projection_matrix() * uidata.viewport_changed = False # <<<<<<<<<<<<<< * if uidata.rotation_changed: * _sync_modelview_matrix_rotation() */ __pyx_v_11_glarea_ogl_uidata.viewport_changed = 0; /* "_glarea_ogl.pyx":599 * renderdata.bg_blue = uidata.bg_blue * uidata.background_changed = False * if uidata.viewport_changed: # <<<<<<<<<<<<<< * _sync_projection_matrix() * uidata.viewport_changed = False */ } /* "_glarea_ogl.pyx":602 * _sync_projection_matrix() * uidata.viewport_changed = False * if uidata.rotation_changed: # <<<<<<<<<<<<<< * _sync_modelview_matrix_rotation() * uidata.rotation_changed = False */ __pyx_t_1 = (__pyx_v_11_glarea_ogl_uidata.rotation_changed != 0); if (__pyx_t_1) { /* "_glarea_ogl.pyx":603 * uidata.viewport_changed = False * if uidata.rotation_changed: * _sync_modelview_matrix_rotation() # <<<<<<<<<<<<<< * uidata.rotation_changed = False * if uidata.rotation_quat_changed: */ __pyx_f_11_glarea_ogl__sync_modelview_matrix_rotation(); /* "_glarea_ogl.pyx":604 * if uidata.rotation_changed: * _sync_modelview_matrix_rotation() * uidata.rotation_changed = False # <<<<<<<<<<<<<< * if uidata.rotation_quat_changed: * quat_to_matrix(renderdata.modelview_matrix, uidata.rotation_quat) */ __pyx_v_11_glarea_ogl_uidata.rotation_changed = 0; /* "_glarea_ogl.pyx":602 * _sync_projection_matrix() * uidata.viewport_changed = False * if uidata.rotation_changed: # <<<<<<<<<<<<<< * _sync_modelview_matrix_rotation() * uidata.rotation_changed = False */ } /* "_glarea_ogl.pyx":605 * _sync_modelview_matrix_rotation() * uidata.rotation_changed = False * if uidata.rotation_quat_changed: # <<<<<<<<<<<<<< * quat_to_matrix(renderdata.modelview_matrix, uidata.rotation_quat) * uidata.rotation_quat_changed = False */ __pyx_t_1 = (__pyx_v_11_glarea_ogl_uidata.rotation_quat_changed != 0); if (__pyx_t_1) { /* "_glarea_ogl.pyx":606 * uidata.rotation_changed = False * if uidata.rotation_quat_changed: * quat_to_matrix(renderdata.modelview_matrix, uidata.rotation_quat) # <<<<<<<<<<<<<< * uidata.rotation_quat_changed = False * if uidata.frustum_changed: */ __pyx_f_11_glarea_ogl_quat_to_matrix(__pyx_v_11_glarea_ogl_renderdata.modelview_matrix, __pyx_v_11_glarea_ogl_uidata.rotation_quat); /* "_glarea_ogl.pyx":607 * if uidata.rotation_quat_changed: * quat_to_matrix(renderdata.modelview_matrix, uidata.rotation_quat) * uidata.rotation_quat_changed = False # <<<<<<<<<<<<<< * if uidata.frustum_changed: * _sync_modelview_matrix_translation() */ __pyx_v_11_glarea_ogl_uidata.rotation_quat_changed = 0; /* "_glarea_ogl.pyx":605 * _sync_modelview_matrix_rotation() * uidata.rotation_changed = False * if uidata.rotation_quat_changed: # <<<<<<<<<<<<<< * quat_to_matrix(renderdata.modelview_matrix, uidata.rotation_quat) * uidata.rotation_quat_changed = False */ } /* "_glarea_ogl.pyx":608 * quat_to_matrix(renderdata.modelview_matrix, uidata.rotation_quat) * uidata.rotation_quat_changed = False * if uidata.frustum_changed: # <<<<<<<<<<<<<< * _sync_modelview_matrix_translation() * _sync_projection_matrix() */ __pyx_t_1 = (__pyx_v_11_glarea_ogl_uidata.frustum_changed != 0); if (__pyx_t_1) { /* "_glarea_ogl.pyx":609 * uidata.rotation_quat_changed = False * if uidata.frustum_changed: * _sync_modelview_matrix_translation() # <<<<<<<<<<<<<< * _sync_projection_matrix() * uidata.frustum_changed = False */ __pyx_f_11_glarea_ogl__sync_modelview_matrix_translation(); /* "_glarea_ogl.pyx":610 * if uidata.frustum_changed: * _sync_modelview_matrix_translation() * _sync_projection_matrix() # <<<<<<<<<<<<<< * uidata.frustum_changed = False * if uidata.multisample_changed: */ __pyx_f_11_glarea_ogl__sync_projection_matrix(); /* "_glarea_ogl.pyx":611 * _sync_modelview_matrix_translation() * _sync_projection_matrix() * uidata.frustum_changed = False # <<<<<<<<<<<<<< * if uidata.multisample_changed: * renderdata.multisample = uidata.multisample_changed - 1 */ __pyx_v_11_glarea_ogl_uidata.frustum_changed = 0; /* "_glarea_ogl.pyx":608 * quat_to_matrix(renderdata.modelview_matrix, uidata.rotation_quat) * uidata.rotation_quat_changed = False * if uidata.frustum_changed: # <<<<<<<<<<<<<< * _sync_modelview_matrix_translation() * _sync_projection_matrix() */ } /* "_glarea_ogl.pyx":612 * _sync_projection_matrix() * uidata.frustum_changed = False * if uidata.multisample_changed: # <<<<<<<<<<<<<< * renderdata.multisample = uidata.multisample_changed - 1 * uidata.multisample_changed = 0 */ __pyx_t_1 = (__pyx_v_11_glarea_ogl_uidata.multisample_changed != 0); if (__pyx_t_1) { /* "_glarea_ogl.pyx":613 * uidata.frustum_changed = False * if uidata.multisample_changed: * renderdata.multisample = uidata.multisample_changed - 1 # <<<<<<<<<<<<<< * uidata.multisample_changed = 0 * if uidata.data_changed: */ __pyx_v_11_glarea_ogl_renderdata.multisample = (__pyx_v_11_glarea_ogl_uidata.multisample_changed - 1); /* "_glarea_ogl.pyx":614 * if uidata.multisample_changed: * renderdata.multisample = uidata.multisample_changed - 1 * uidata.multisample_changed = 0 # <<<<<<<<<<<<<< * if uidata.data_changed: * gldraw.sync_vertexdata(uidata.vertexdatalen, uidata.vertexdata, uidata.vertexpointers) */ __pyx_v_11_glarea_ogl_uidata.multisample_changed = 0; /* "_glarea_ogl.pyx":612 * _sync_projection_matrix() * uidata.frustum_changed = False * if uidata.multisample_changed: # <<<<<<<<<<<<<< * renderdata.multisample = uidata.multisample_changed - 1 * uidata.multisample_changed = 0 */ } /* "_glarea_ogl.pyx":615 * renderdata.multisample = uidata.multisample_changed - 1 * uidata.multisample_changed = 0 * if uidata.data_changed: # <<<<<<<<<<<<<< * gldraw.sync_vertexdata(uidata.vertexdatalen, uidata.vertexdata, uidata.vertexpointers) * gldraw.sync_blocks(uidata.nblocks, uidata.cnts_block, uidata.idx_debug, uidata.cnt_debug, uidata.cnt_pick) */ __pyx_t_1 = (__pyx_v_11_glarea_ogl_uidata.data_changed != 0); if (__pyx_t_1) { /* "_glarea_ogl.pyx":616 * uidata.multisample_changed = 0 * if uidata.data_changed: * gldraw.sync_vertexdata(uidata.vertexdatalen, uidata.vertexdata, uidata.vertexpointers) # <<<<<<<<<<<<<< * gldraw.sync_blocks(uidata.nblocks, uidata.cnts_block, uidata.idx_debug, uidata.cnt_debug, uidata.cnt_pick) * gldraw.sync_transformations(uidata.transformations_count, uidata.transformations) */ __pyx_f_11_gldraw_ogl_sync_vertexdata(__pyx_v_11_glarea_ogl_uidata.vertexdatalen, __pyx_v_11_glarea_ogl_uidata.vertexdata, __pyx_v_11_glarea_ogl_uidata.vertexpointers); /* "_glarea_ogl.pyx":617 * if uidata.data_changed: * gldraw.sync_vertexdata(uidata.vertexdatalen, uidata.vertexdata, uidata.vertexpointers) * gldraw.sync_blocks(uidata.nblocks, uidata.cnts_block, uidata.idx_debug, uidata.cnt_debug, uidata.cnt_pick) # <<<<<<<<<<<<<< * gldraw.sync_transformations(uidata.transformations_count, uidata.transformations) * uidata.data_changed = False */ __pyx_f_11_gldraw_ogl_sync_blocks(__pyx_v_11_glarea_ogl_uidata.nblocks, __pyx_v_11_glarea_ogl_uidata.cnts_block, __pyx_v_11_glarea_ogl_uidata.idx_debug, __pyx_v_11_glarea_ogl_uidata.cnt_debug, __pyx_v_11_glarea_ogl_uidata.cnt_pick); /* "_glarea_ogl.pyx":618 * gldraw.sync_vertexdata(uidata.vertexdatalen, uidata.vertexdata, uidata.vertexpointers) * gldraw.sync_blocks(uidata.nblocks, uidata.cnts_block, uidata.idx_debug, uidata.cnt_debug, uidata.cnt_pick) * gldraw.sync_transformations(uidata.transformations_count, uidata.transformations) # <<<<<<<<<<<<<< * uidata.data_changed = False * if uidata.transformation_changed: */ __pyx_f_11_gldraw_ogl_sync_transformations(__pyx_v_11_glarea_ogl_uidata.transformations_count, __pyx_v_11_glarea_ogl_uidata.transformations); /* "_glarea_ogl.pyx":619 * gldraw.sync_blocks(uidata.nblocks, uidata.cnts_block, uidata.idx_debug, uidata.cnt_debug, uidata.cnt_pick) * gldraw.sync_transformations(uidata.transformations_count, uidata.transformations) * uidata.data_changed = False # <<<<<<<<<<<<<< * if uidata.transformation_changed: * gldraw.sync_block_transformations(uidata.transformation_blocks) */ __pyx_v_11_glarea_ogl_uidata.data_changed = 0; /* "_glarea_ogl.pyx":615 * renderdata.multisample = uidata.multisample_changed - 1 * uidata.multisample_changed = 0 * if uidata.data_changed: # <<<<<<<<<<<<<< * gldraw.sync_vertexdata(uidata.vertexdatalen, uidata.vertexdata, uidata.vertexpointers) * gldraw.sync_blocks(uidata.nblocks, uidata.cnts_block, uidata.idx_debug, uidata.cnt_debug, uidata.cnt_pick) */ } /* "_glarea_ogl.pyx":620 * gldraw.sync_transformations(uidata.transformations_count, uidata.transformations) * uidata.data_changed = False * if uidata.transformation_changed: # <<<<<<<<<<<<<< * gldraw.sync_block_transformations(uidata.transformation_blocks) * uidata.transformation_changed = False */ __pyx_t_1 = (__pyx_v_11_glarea_ogl_uidata.transformation_changed != 0); if (__pyx_t_1) { /* "_glarea_ogl.pyx":621 * uidata.data_changed = False * if uidata.transformation_changed: * gldraw.sync_block_transformations(uidata.transformation_blocks) # <<<<<<<<<<<<<< * uidata.transformation_changed = False * if uidata.animation_changed == 2: */ __pyx_f_11_gldraw_ogl_sync_block_transformations(__pyx_v_11_glarea_ogl_uidata.transformation_blocks); /* "_glarea_ogl.pyx":622 * if uidata.transformation_changed: * gldraw.sync_block_transformations(uidata.transformation_blocks) * uidata.transformation_changed = False # <<<<<<<<<<<<<< * if uidata.animation_changed == 2: * gldraw.sync_animation_next(uidata.angle, uidata.rotation_x, uidata.rotation_y, uidata.rotation_z) */ __pyx_v_11_glarea_ogl_uidata.transformation_changed = 0; /* "_glarea_ogl.pyx":620 * gldraw.sync_transformations(uidata.transformations_count, uidata.transformations) * uidata.data_changed = False * if uidata.transformation_changed: # <<<<<<<<<<<<<< * gldraw.sync_block_transformations(uidata.transformation_blocks) * uidata.transformation_changed = False */ } /* "_glarea_ogl.pyx":623 * gldraw.sync_block_transformations(uidata.transformation_blocks) * uidata.transformation_changed = False * if uidata.animation_changed == 2: # <<<<<<<<<<<<<< * gldraw.sync_animation_next(uidata.angle, uidata.rotation_x, uidata.rotation_y, uidata.rotation_z) * uidata.animation_changed = 0 */ switch (__pyx_v_11_glarea_ogl_uidata.animation_changed) { case 2: /* "_glarea_ogl.pyx":624 * uidata.transformation_changed = False * if uidata.animation_changed == 2: * gldraw.sync_animation_next(uidata.angle, uidata.rotation_x, uidata.rotation_y, uidata.rotation_z) # <<<<<<<<<<<<<< * uidata.animation_changed = 0 * elif uidata.animation_changed == 1: */ __pyx_f_11_gldraw_ogl_sync_animation_next(__pyx_v_11_glarea_ogl_uidata.angle, __pyx_v_11_glarea_ogl_uidata.rotation_x, __pyx_v_11_glarea_ogl_uidata.rotation_y, __pyx_v_11_glarea_ogl_uidata.rotation_z); /* "_glarea_ogl.pyx":625 * if uidata.animation_changed == 2: * gldraw.sync_animation_next(uidata.angle, uidata.rotation_x, uidata.rotation_y, uidata.rotation_z) * uidata.animation_changed = 0 # <<<<<<<<<<<<<< * elif uidata.animation_changed == 1: * gldraw.sync_animation_start(uidata.animation_blocks_count, uidata.animation_blocks) */ __pyx_v_11_glarea_ogl_uidata.animation_changed = 0; /* "_glarea_ogl.pyx":623 * gldraw.sync_block_transformations(uidata.transformation_blocks) * uidata.transformation_changed = False * if uidata.animation_changed == 2: # <<<<<<<<<<<<<< * gldraw.sync_animation_next(uidata.angle, uidata.rotation_x, uidata.rotation_y, uidata.rotation_z) * uidata.animation_changed = 0 */ break; /* "_glarea_ogl.pyx":626 * gldraw.sync_animation_next(uidata.angle, uidata.rotation_x, uidata.rotation_y, uidata.rotation_z) * uidata.animation_changed = 0 * elif uidata.animation_changed == 1: # <<<<<<<<<<<<<< * gldraw.sync_animation_start(uidata.animation_blocks_count, uidata.animation_blocks) * uidata.animation_changed = 0 */ case 1: /* "_glarea_ogl.pyx":627 * uidata.animation_changed = 0 * elif uidata.animation_changed == 1: * gldraw.sync_animation_start(uidata.animation_blocks_count, uidata.animation_blocks) # <<<<<<<<<<<<<< * uidata.animation_changed = 0 * if uidata.shaders_changed: */ __pyx_f_11_gldraw_ogl_sync_animation_start(__pyx_v_11_glarea_ogl_uidata.animation_blocks_count, __pyx_v_11_glarea_ogl_uidata.animation_blocks); /* "_glarea_ogl.pyx":628 * elif uidata.animation_changed == 1: * gldraw.sync_animation_start(uidata.animation_blocks_count, uidata.animation_blocks) * uidata.animation_changed = 0 # <<<<<<<<<<<<<< * if uidata.shaders_changed: * renderdata.shader_changed = True */ __pyx_v_11_glarea_ogl_uidata.animation_changed = 0; /* "_glarea_ogl.pyx":626 * gldraw.sync_animation_next(uidata.angle, uidata.rotation_x, uidata.rotation_y, uidata.rotation_z) * uidata.animation_changed = 0 * elif uidata.animation_changed == 1: # <<<<<<<<<<<<<< * gldraw.sync_animation_start(uidata.animation_blocks_count, uidata.animation_blocks) * uidata.animation_changed = 0 */ break; default: break; } /* "_glarea_ogl.pyx":629 * gldraw.sync_animation_start(uidata.animation_blocks_count, uidata.animation_blocks) * uidata.animation_changed = 0 * if uidata.shaders_changed: # <<<<<<<<<<<<<< * renderdata.shader_changed = True * renderdata.shader_vertsrc = uidata.shader_vertsrc */ __pyx_t_1 = (__pyx_v_11_glarea_ogl_uidata.shaders_changed != 0); if (__pyx_t_1) { /* "_glarea_ogl.pyx":630 * uidata.animation_changed = 0 * if uidata.shaders_changed: * renderdata.shader_changed = True # <<<<<<<<<<<<<< * renderdata.shader_vertsrc = uidata.shader_vertsrc * renderdata.shader_fragsrc = uidata.shader_fragsrc */ __pyx_v_11_glarea_ogl_renderdata.shader_changed = 1; /* "_glarea_ogl.pyx":631 * if uidata.shaders_changed: * renderdata.shader_changed = True * renderdata.shader_vertsrc = uidata.shader_vertsrc # <<<<<<<<<<<<<< * renderdata.shader_fragsrc = uidata.shader_fragsrc * uidata.shaders_changed = False */ __pyx_t_3 = __pyx_v_11_glarea_ogl_uidata.shader_vertsrc; __pyx_v_11_glarea_ogl_renderdata.shader_vertsrc = __pyx_t_3; /* "_glarea_ogl.pyx":632 * renderdata.shader_changed = True * renderdata.shader_vertsrc = uidata.shader_vertsrc * renderdata.shader_fragsrc = uidata.shader_fragsrc # <<<<<<<<<<<<<< * uidata.shaders_changed = False * */ __pyx_t_3 = __pyx_v_11_glarea_ogl_uidata.shader_fragsrc; __pyx_v_11_glarea_ogl_renderdata.shader_fragsrc = __pyx_t_3; /* "_glarea_ogl.pyx":633 * renderdata.shader_vertsrc = uidata.shader_vertsrc * renderdata.shader_fragsrc = uidata.shader_fragsrc * uidata.shaders_changed = False # <<<<<<<<<<<<<< * * ### GL state */ __pyx_v_11_glarea_ogl_uidata.shaders_changed = 0; /* "_glarea_ogl.pyx":629 * gldraw.sync_animation_start(uidata.animation_blocks_count, uidata.animation_blocks) * uidata.animation_changed = 0 * if uidata.shaders_changed: # <<<<<<<<<<<<<< * renderdata.shader_changed = True * renderdata.shader_vertsrc = uidata.shader_vertsrc */ } /* "_glarea_ogl.pyx":592 * * ##pxm-FUNC PD nogil * cdef void sync() nogil: # <<<<<<<<<<<<<< * uidata.synced = True * if uidata.background_changed: */ /* function exit code */ } /* "_glarea_ogl.pyx":638 * * ##pxm-FUNC P nogil * cdef void _gl_print_string(char *msg, GLenum name) nogil: # <<<<<<<<<<<<<< * printf('%s %s\n', msg, glGetString(name)) #px/ * #printf('%s %s\n', msg, glGetString(name)) */ static void __pyx_f_11_glarea_ogl__gl_print_string(char *__pyx_v_msg, GLenum __pyx_v_name) { /* "_glarea_ogl.pyx":639 * ##pxm-FUNC P nogil * cdef void _gl_print_string(char *msg, GLenum name) nogil: * printf('%s %s\n', msg, glGetString(name)) #px/ # <<<<<<<<<<<<<< * #printf('%s %s\n', msg, glGetString(name)) * */ printf(((char const *)"%s %s\n"), __pyx_v_msg, ((char *)glGetString(__pyx_v_name))); /* "_glarea_ogl.pyx":638 * * ##pxm-FUNC P nogil * cdef void _gl_print_string(char *msg, GLenum name) nogil: # <<<<<<<<<<<<<< * printf('%s %s\n', msg, glGetString(name)) #px/ * #printf('%s %s\n', msg, glGetString(name)) */ /* function exit code */ } /* "_glarea_ogl.pyx":643 * * ##pxm-FUNC P nogil * cdef void _gl_print_float(char *msg, GLenum name) nogil: # <<<<<<<<<<<<<< * cdef GLfloat i #px+ * glGetFloatv(name, &i) #px/ */ static void __pyx_f_11_glarea_ogl__gl_print_float(char *__pyx_v_msg, GLenum __pyx_v_name) { GLfloat __pyx_v_i; /* "_glarea_ogl.pyx":645 * cdef void _gl_print_float(char *msg, GLenum name) nogil: * cdef GLfloat i #px+ * glGetFloatv(name, &i) #px/ # <<<<<<<<<<<<<< * #i = glGetFloatv(name) * printf('%s %f\n', msg, i) */ glGetFloatv(__pyx_v_name, (&__pyx_v_i)); /* "_glarea_ogl.pyx":647 * glGetFloatv(name, &i) #px/ * #i = glGetFloatv(name) * printf('%s %f\n', msg, i) # <<<<<<<<<<<<<< * * ##pxm-FUNC P nogil */ printf(((char const *)"%s %f\n"), __pyx_v_msg, __pyx_v_i); /* "_glarea_ogl.pyx":643 * * ##pxm-FUNC P nogil * cdef void _gl_print_float(char *msg, GLenum name) nogil: # <<<<<<<<<<<<<< * cdef GLfloat i #px+ * glGetFloatv(name, &i) #px/ */ /* function exit code */ } /* "_glarea_ogl.pyx":650 * * ##pxm-FUNC P nogil * cdef void _gl_print_integer(char *msg, GLenum name) nogil: # <<<<<<<<<<<<<< * cdef GLint i #px+ * glGetIntegerv(name, &i) #px/ */ static void __pyx_f_11_glarea_ogl__gl_print_integer(char *__pyx_v_msg, GLenum __pyx_v_name) { GLint __pyx_v_i; /* "_glarea_ogl.pyx":652 * cdef void _gl_print_integer(char *msg, GLenum name) nogil: * cdef GLint i #px+ * glGetIntegerv(name, &i) #px/ # <<<<<<<<<<<<<< * #i = glGetIntegerv(name) * printf('%s %d\n', msg, i) */ glGetIntegerv(__pyx_v_name, (&__pyx_v_i)); /* "_glarea_ogl.pyx":654 * glGetIntegerv(name, &i) #px/ * #i = glGetIntegerv(name) * printf('%s %d\n', msg, i) # <<<<<<<<<<<<<< * * ##pxm-FUNC P nogil */ printf(((char const *)"%s %d\n"), __pyx_v_msg, __pyx_v_i); /* "_glarea_ogl.pyx":650 * * ##pxm-FUNC P nogil * cdef void _gl_print_integer(char *msg, GLenum name) nogil: # <<<<<<<<<<<<<< * cdef GLint i #px+ * glGetIntegerv(name, &i) #px/ */ /* function exit code */ } /* "_glarea_ogl.pyx":657 * * ##pxm-FUNC P nogil * cdef void _gl_print_bool(char *msg, GLenum name) nogil: # <<<<<<<<<<<<<< * cdef GLboolean i #px+ * glGetBooleanv(name, &i) #px+ */ static void __pyx_f_11_glarea_ogl__gl_print_bool(char *__pyx_v_msg, GLenum __pyx_v_name) { GLboolean __pyx_v_i; /* "_glarea_ogl.pyx":659 * cdef void _gl_print_bool(char *msg, GLenum name) nogil: * cdef GLboolean i #px+ * glGetBooleanv(name, &i) #px+ # <<<<<<<<<<<<<< * printf('%s %d\n', msg, i) #px/ * #printf('%s %d\n', msg, glGetBooleanv(name)) */ glGetBooleanv(__pyx_v_name, (&__pyx_v_i)); /* "_glarea_ogl.pyx":660 * cdef GLboolean i #px+ * glGetBooleanv(name, &i) #px+ * printf('%s %d\n', msg, i) #px/ # <<<<<<<<<<<<<< * #printf('%s %d\n', msg, glGetBooleanv(name)) * */ printf(((char const *)"%s %d\n"), __pyx_v_msg, ((int)__pyx_v_i)); /* "_glarea_ogl.pyx":657 * * ##pxm-FUNC P nogil * cdef void _gl_print_bool(char *msg, GLenum name) nogil: # <<<<<<<<<<<<<< * cdef GLboolean i #px+ * glGetBooleanv(name, &i) #px+ */ /* function exit code */ } /* "_glarea_ogl.pyx":664 * * ##pxm-FUNC PD nogil * cdef void gl_init() nogil: # <<<<<<<<<<<<<< * if debug & DEBUG_MSGGL: * puts('GL Strings:') */ static void __pyx_f_11_glarea_ogl_gl_init(void) { int __pyx_t_1; /* "_glarea_ogl.pyx":665 * ##pxm-FUNC PD nogil * cdef void gl_init() nogil: * if debug & DEBUG_MSGGL: # <<<<<<<<<<<<<< * puts('GL Strings:') * _gl_print_string(' GL Vendor:', GL_VENDOR) */ __pyx_t_1 = ((__pyx_v_11_glarea_ogl_debug & __pyx_e_11_glarea_ogl_DEBUG_MSGGL) != 0); if (__pyx_t_1) { /* "_glarea_ogl.pyx":666 * cdef void gl_init() nogil: * if debug & DEBUG_MSGGL: * puts('GL Strings:') # <<<<<<<<<<<<<< * _gl_print_string(' GL Vendor:', GL_VENDOR) * _gl_print_string(' GL Renderer:', GL_RENDERER) */ puts(((char const *)"GL Strings:")); /* "_glarea_ogl.pyx":667 * if debug & DEBUG_MSGGL: * puts('GL Strings:') * _gl_print_string(' GL Vendor:', GL_VENDOR) # <<<<<<<<<<<<<< * _gl_print_string(' GL Renderer:', GL_RENDERER) * _gl_print_string(' GL Version:', GL_VERSION) */ __pyx_f_11_glarea_ogl__gl_print_string(((char *)" GL Vendor:"), GL_VENDOR); /* "_glarea_ogl.pyx":668 * puts('GL Strings:') * _gl_print_string(' GL Vendor:', GL_VENDOR) * _gl_print_string(' GL Renderer:', GL_RENDERER) # <<<<<<<<<<<<<< * _gl_print_string(' GL Version:', GL_VERSION) * _gl_print_string(' GL Shading Language Version:', GL_SHADING_LANGUAGE_VERSION) */ __pyx_f_11_glarea_ogl__gl_print_string(((char *)" GL Renderer:"), GL_RENDERER); /* "_glarea_ogl.pyx":669 * _gl_print_string(' GL Vendor:', GL_VENDOR) * _gl_print_string(' GL Renderer:', GL_RENDERER) * _gl_print_string(' GL Version:', GL_VERSION) # <<<<<<<<<<<<<< * _gl_print_string(' GL Shading Language Version:', GL_SHADING_LANGUAGE_VERSION) * #_gl_print_string(' GL Extensions:', GL_EXTENSIONS) */ __pyx_f_11_glarea_ogl__gl_print_string(((char *)" GL Version:"), GL_VERSION); /* "_glarea_ogl.pyx":670 * _gl_print_string(' GL Renderer:', GL_RENDERER) * _gl_print_string(' GL Version:', GL_VERSION) * _gl_print_string(' GL Shading Language Version:', GL_SHADING_LANGUAGE_VERSION) # <<<<<<<<<<<<<< * #_gl_print_string(' GL Extensions:', GL_EXTENSIONS) * _gl_print_integer(' GL_SAMPLE_BUFFERS:', GL_SAMPLE_BUFFERS) */ __pyx_f_11_glarea_ogl__gl_print_string(((char *)" GL Shading Language Version:"), GL_SHADING_LANGUAGE_VERSION); /* "_glarea_ogl.pyx":672 * _gl_print_string(' GL Shading Language Version:', GL_SHADING_LANGUAGE_VERSION) * #_gl_print_string(' GL Extensions:', GL_EXTENSIONS) * _gl_print_integer(' GL_SAMPLE_BUFFERS:', GL_SAMPLE_BUFFERS) # <<<<<<<<<<<<<< * _gl_print_float(' GL_SAMPLE_COVERAGE_VALUE:', GL_SAMPLE_COVERAGE_VALUE) * _gl_print_bool(' GL_SAMPLE_COVERAGE_INVERT:', GL_SAMPLE_COVERAGE_INVERT) */ __pyx_f_11_glarea_ogl__gl_print_integer(((char *)" GL_SAMPLE_BUFFERS:"), GL_SAMPLE_BUFFERS); /* "_glarea_ogl.pyx":673 * #_gl_print_string(' GL Extensions:', GL_EXTENSIONS) * _gl_print_integer(' GL_SAMPLE_BUFFERS:', GL_SAMPLE_BUFFERS) * _gl_print_float(' GL_SAMPLE_COVERAGE_VALUE:', GL_SAMPLE_COVERAGE_VALUE) # <<<<<<<<<<<<<< * _gl_print_bool(' GL_SAMPLE_COVERAGE_INVERT:', GL_SAMPLE_COVERAGE_INVERT) * _gl_print_integer(' GL_SAMPLES:', GL_SAMPLES) */ __pyx_f_11_glarea_ogl__gl_print_float(((char *)" GL_SAMPLE_COVERAGE_VALUE:"), GL_SAMPLE_COVERAGE_VALUE); /* "_glarea_ogl.pyx":674 * _gl_print_integer(' GL_SAMPLE_BUFFERS:', GL_SAMPLE_BUFFERS) * _gl_print_float(' GL_SAMPLE_COVERAGE_VALUE:', GL_SAMPLE_COVERAGE_VALUE) * _gl_print_bool(' GL_SAMPLE_COVERAGE_INVERT:', GL_SAMPLE_COVERAGE_INVERT) # <<<<<<<<<<<<<< * _gl_print_integer(' GL_SAMPLES:', GL_SAMPLES) * IF 'ogl' == 'ogl': #px/ */ __pyx_f_11_glarea_ogl__gl_print_bool(((char *)" GL_SAMPLE_COVERAGE_INVERT:"), GL_SAMPLE_COVERAGE_INVERT); /* "_glarea_ogl.pyx":675 * _gl_print_float(' GL_SAMPLE_COVERAGE_VALUE:', GL_SAMPLE_COVERAGE_VALUE) * _gl_print_bool(' GL_SAMPLE_COVERAGE_INVERT:', GL_SAMPLE_COVERAGE_INVERT) * _gl_print_integer(' GL_SAMPLES:', GL_SAMPLES) # <<<<<<<<<<<<<< * IF 'ogl' == 'ogl': #px/ * #if True: */ __pyx_f_11_glarea_ogl__gl_print_integer(((char *)" GL_SAMPLES:"), GL_SAMPLES); /* "_glarea_ogl.pyx":678 * IF 'ogl' == 'ogl': #px/ * #if True: * printf(' GL_MULTISAMPLE: %d\n', glIsEnabled(GL_MULTISAMPLE)) # <<<<<<<<<<<<<< * #print(' GL_SAMPLE_ALPHA_TO_COVERAGE:', glIsEnabled(GL_SAMPLE_ALPHA_TO_COVERAGE)) * #print(' GL_SAMPLE_COVERAGE:', glIsEnabled(GL_SAMPLE_COVERAGE)) */ printf(((char const *)" GL_MULTISAMPLE: %d\n"), glIsEnabled(GL_MULTISAMPLE)); /* "_glarea_ogl.pyx":681 * #print(' GL_SAMPLE_ALPHA_TO_COVERAGE:', glIsEnabled(GL_SAMPLE_ALPHA_TO_COVERAGE)) * #print(' GL_SAMPLE_COVERAGE:', glIsEnabled(GL_SAMPLE_COVERAGE)) * _gl_print_integer(' GL_MAX_VERTEX_ATTRIBS:', GL_MAX_VERTEX_ATTRIBS) # <<<<<<<<<<<<<< * _gl_print_integer(' GL_MAX_TEXTURE_SIZE:', GL_MAX_TEXTURE_SIZE) * gldraw.gl_init_buffers() */ __pyx_f_11_glarea_ogl__gl_print_integer(((char *)" GL_MAX_VERTEX_ATTRIBS:"), GL_MAX_VERTEX_ATTRIBS); /* "_glarea_ogl.pyx":682 * #print(' GL_SAMPLE_COVERAGE:', glIsEnabled(GL_SAMPLE_COVERAGE)) * _gl_print_integer(' GL_MAX_VERTEX_ATTRIBS:', GL_MAX_VERTEX_ATTRIBS) * _gl_print_integer(' GL_MAX_TEXTURE_SIZE:', GL_MAX_TEXTURE_SIZE) # <<<<<<<<<<<<<< * gldraw.gl_init_buffers() * if debug & DEBUG_DRAW: */ __pyx_f_11_glarea_ogl__gl_print_integer(((char *)" GL_MAX_TEXTURE_SIZE:"), GL_MAX_TEXTURE_SIZE); /* "_glarea_ogl.pyx":665 * ##pxm-FUNC PD nogil * cdef void gl_init() nogil: * if debug & DEBUG_MSGGL: # <<<<<<<<<<<<<< * puts('GL Strings:') * _gl_print_string(' GL Vendor:', GL_VENDOR) */ } /* "_glarea_ogl.pyx":683 * _gl_print_integer(' GL_MAX_VERTEX_ATTRIBS:', GL_MAX_VERTEX_ATTRIBS) * _gl_print_integer(' GL_MAX_TEXTURE_SIZE:', GL_MAX_TEXTURE_SIZE) * gldraw.gl_init_buffers() # <<<<<<<<<<<<<< * if debug & DEBUG_DRAW: * gl_create_hud_program() */ __pyx_f_11_gldraw_ogl_gl_init_buffers(); /* "_glarea_ogl.pyx":684 * _gl_print_integer(' GL_MAX_TEXTURE_SIZE:', GL_MAX_TEXTURE_SIZE) * gldraw.gl_init_buffers() * if debug & DEBUG_DRAW: # <<<<<<<<<<<<<< * gl_create_hud_program() * gl_create_pick_program() */ __pyx_t_1 = ((__pyx_v_11_glarea_ogl_debug & __pyx_e_11_glarea_ogl_DEBUG_DRAW) != 0); if (__pyx_t_1) { /* "_glarea_ogl.pyx":685 * gldraw.gl_init_buffers() * if debug & DEBUG_DRAW: * gl_create_hud_program() # <<<<<<<<<<<<<< * gl_create_pick_program() * */ __pyx_f_11_glarea_ogl_gl_create_hud_program(); /* "_glarea_ogl.pyx":684 * _gl_print_integer(' GL_MAX_TEXTURE_SIZE:', GL_MAX_TEXTURE_SIZE) * gldraw.gl_init_buffers() * if debug & DEBUG_DRAW: # <<<<<<<<<<<<<< * gl_create_hud_program() * gl_create_pick_program() */ } /* "_glarea_ogl.pyx":686 * if debug & DEBUG_DRAW: * gl_create_hud_program() * gl_create_pick_program() # <<<<<<<<<<<<<< * * ##pxm-FUNC PD nogil */ __pyx_f_11_glarea_ogl_gl_create_pick_program(); /* "_glarea_ogl.pyx":664 * * ##pxm-FUNC PD nogil * cdef void gl_init() nogil: # <<<<<<<<<<<<<< * if debug & DEBUG_MSGGL: * puts('GL Strings:') */ /* function exit code */ } /* "_glarea_ogl.pyx":689 * * ##pxm-FUNC PD nogil * cdef void gl_exit() nogil: # <<<<<<<<<<<<<< * gldraw.gl_delete_buffers() * if renderdata.prog_render > 0: glDeleteProgram(renderdata.prog_render) */ static void __pyx_f_11_glarea_ogl_gl_exit(void) { int __pyx_t_1; /* "_glarea_ogl.pyx":690 * ##pxm-FUNC PD nogil * cdef void gl_exit() nogil: * gldraw.gl_delete_buffers() # <<<<<<<<<<<<<< * if renderdata.prog_render > 0: glDeleteProgram(renderdata.prog_render) * if renderdata.prog_hud > 0: glDeleteProgram(renderdata.prog_hud) */ __pyx_f_11_gldraw_ogl_gl_delete_buffers(); /* "_glarea_ogl.pyx":691 * cdef void gl_exit() nogil: * gldraw.gl_delete_buffers() * if renderdata.prog_render > 0: glDeleteProgram(renderdata.prog_render) # <<<<<<<<<<<<<< * if renderdata.prog_hud > 0: glDeleteProgram(renderdata.prog_hud) * if renderdata.prog_pick > 0: glDeleteProgram(renderdata.prog_pick) */ __pyx_t_1 = ((__pyx_v_11_glarea_ogl_renderdata.prog_render > 0) != 0); if (__pyx_t_1) { glDeleteProgram(__pyx_v_11_glarea_ogl_renderdata.prog_render); } /* "_glarea_ogl.pyx":692 * gldraw.gl_delete_buffers() * if renderdata.prog_render > 0: glDeleteProgram(renderdata.prog_render) * if renderdata.prog_hud > 0: glDeleteProgram(renderdata.prog_hud) # <<<<<<<<<<<<<< * if renderdata.prog_pick > 0: glDeleteProgram(renderdata.prog_pick) * renderdata.prog_render = 0 */ __pyx_t_1 = ((__pyx_v_11_glarea_ogl_renderdata.prog_hud > 0) != 0); if (__pyx_t_1) { glDeleteProgram(__pyx_v_11_glarea_ogl_renderdata.prog_hud); } /* "_glarea_ogl.pyx":693 * if renderdata.prog_render > 0: glDeleteProgram(renderdata.prog_render) * if renderdata.prog_hud > 0: glDeleteProgram(renderdata.prog_hud) * if renderdata.prog_pick > 0: glDeleteProgram(renderdata.prog_pick) # <<<<<<<<<<<<<< * renderdata.prog_render = 0 * renderdata.prog_hud = 0 */ __pyx_t_1 = ((__pyx_v_11_glarea_ogl_renderdata.prog_pick > 0) != 0); if (__pyx_t_1) { glDeleteProgram(__pyx_v_11_glarea_ogl_renderdata.prog_pick); } /* "_glarea_ogl.pyx":694 * if renderdata.prog_hud > 0: glDeleteProgram(renderdata.prog_hud) * if renderdata.prog_pick > 0: glDeleteProgram(renderdata.prog_pick) * renderdata.prog_render = 0 # <<<<<<<<<<<<<< * renderdata.prog_hud = 0 * renderdata.prog_pick = 0 */ __pyx_v_11_glarea_ogl_renderdata.prog_render = 0; /* "_glarea_ogl.pyx":695 * if renderdata.prog_pick > 0: glDeleteProgram(renderdata.prog_pick) * renderdata.prog_render = 0 * renderdata.prog_hud = 0 # <<<<<<<<<<<<<< * renderdata.prog_pick = 0 * */ __pyx_v_11_glarea_ogl_renderdata.prog_hud = 0; /* "_glarea_ogl.pyx":696 * renderdata.prog_render = 0 * renderdata.prog_hud = 0 * renderdata.prog_pick = 0 # <<<<<<<<<<<<<< * * ### render functions */ __pyx_v_11_glarea_ogl_renderdata.prog_pick = 0; /* "_glarea_ogl.pyx":689 * * ##pxm-FUNC PD nogil * cdef void gl_exit() nogil: # <<<<<<<<<<<<<< * gldraw.gl_delete_buffers() * if renderdata.prog_render > 0: glDeleteProgram(renderdata.prog_render) */ /* function exit code */ } /* "_glarea_ogl.pyx":701 * * ##pxm-FUNC PD nogil * cdef void gl_set_atlas_texture(int width, int height) nogil: # <<<<<<<<<<<<<< * cdef int i, x, w, h #px+ * cdef char *data = malloc(width*height*4) #px+ */ static void __pyx_f_11_glarea_ogl_gl_set_atlas_texture(int __pyx_v_width, int __pyx_v_height) { int __pyx_v_i; int __pyx_v_x; int __pyx_v_w; int __pyx_v_h; char *__pyx_v_data; int __pyx_t_1; int __pyx_t_2; int __pyx_t_3; int __pyx_t_4; int __pyx_t_5; char *__pyx_t_6; /* "_glarea_ogl.pyx":703 * cdef void gl_set_atlas_texture(int width, int height) nogil: * cdef int i, x, w, h #px+ * cdef char *data = malloc(width*height*4) #px+ # <<<<<<<<<<<<<< * memset(data, 0, width*height*4) #px+ * #FIXME: GL_INVALID_OPERATION, but it works, at least on the phone a call to glTexImage2D is needed before glTexSubImage2D */ __pyx_v_data = ((char *)malloc(((__pyx_v_width * __pyx_v_height) * 4))); /* "_glarea_ogl.pyx":704 * cdef int i, x, w, h #px+ * cdef char *data = malloc(width*height*4) #px+ * memset(data, 0, width*height*4) #px+ # <<<<<<<<<<<<<< * #FIXME: GL_INVALID_OPERATION, but it works, at least on the phone a call to glTexImage2D is needed before glTexSubImage2D * glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, data) #px+ */ memset(__pyx_v_data, 0, ((__pyx_v_width * __pyx_v_height) * 4)); /* "_glarea_ogl.pyx":706 * memset(data, 0, width*height*4) #px+ * #FIXME: GL_INVALID_OPERATION, but it works, at least on the phone a call to glTexImage2D is needed before glTexSubImage2D * glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, data) #px+ # <<<<<<<<<<<<<< * free(data) #px+ * for i in range(renderdata.atlaslen): */ glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, __pyx_v_width, __pyx_v_height, 0, GL_RGBA, GL_UNSIGNED_BYTE, __pyx_v_data); /* "_glarea_ogl.pyx":707 * #FIXME: GL_INVALID_OPERATION, but it works, at least on the phone a call to glTexImage2D is needed before glTexSubImage2D * glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, data) #px+ * free(data) #px+ # <<<<<<<<<<<<<< * for i in range(renderdata.atlaslen): * x, w, h = renderdata.atlasdata[i].x, renderdata.atlasdata[i].w, renderdata.atlasdata[i].h */ free(__pyx_v_data); /* "_glarea_ogl.pyx":708 * glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, data) #px+ * free(data) #px+ * for i in range(renderdata.atlaslen): # <<<<<<<<<<<<<< * x, w, h = renderdata.atlasdata[i].x, renderdata.atlasdata[i].w, renderdata.atlasdata[i].h * data = renderdata.atlasdata[i].data */ __pyx_t_1 = __pyx_v_11_glarea_ogl_renderdata.atlaslen; for (__pyx_t_2 = 0; __pyx_t_2 < __pyx_t_1; __pyx_t_2+=1) { __pyx_v_i = __pyx_t_2; /* "_glarea_ogl.pyx":709 * free(data) #px+ * for i in range(renderdata.atlaslen): * x, w, h = renderdata.atlasdata[i].x, renderdata.atlasdata[i].w, renderdata.atlasdata[i].h # <<<<<<<<<<<<<< * data = renderdata.atlasdata[i].data * glTexSubImage2D(GL_TEXTURE_2D, 0, x, 0, w, h, GL_RGBA, GL_UNSIGNED_BYTE, data) */ __pyx_t_3 = (__pyx_v_11_glarea_ogl_renderdata.atlasdata[__pyx_v_i]).x; __pyx_t_4 = (__pyx_v_11_glarea_ogl_renderdata.atlasdata[__pyx_v_i]).w; __pyx_t_5 = (__pyx_v_11_glarea_ogl_renderdata.atlasdata[__pyx_v_i]).h; __pyx_v_x = __pyx_t_3; __pyx_v_w = __pyx_t_4; __pyx_v_h = __pyx_t_5; /* "_glarea_ogl.pyx":710 * for i in range(renderdata.atlaslen): * x, w, h = renderdata.atlasdata[i].x, renderdata.atlasdata[i].w, renderdata.atlasdata[i].h * data = renderdata.atlasdata[i].data # <<<<<<<<<<<<<< * glTexSubImage2D(GL_TEXTURE_2D, 0, x, 0, w, h, GL_RGBA, GL_UNSIGNED_BYTE, data) * */ __pyx_t_6 = (__pyx_v_11_glarea_ogl_renderdata.atlasdata[__pyx_v_i]).data; __pyx_v_data = __pyx_t_6; /* "_glarea_ogl.pyx":711 * x, w, h = renderdata.atlasdata[i].x, renderdata.atlasdata[i].w, renderdata.atlasdata[i].h * data = renderdata.atlasdata[i].data * glTexSubImage2D(GL_TEXTURE_2D, 0, x, 0, w, h, GL_RGBA, GL_UNSIGNED_BYTE, data) # <<<<<<<<<<<<<< * * ##pxm-FUNC P nogil */ glTexSubImage2D(GL_TEXTURE_2D, 0, __pyx_v_x, 0, __pyx_v_w, __pyx_v_h, GL_RGBA, GL_UNSIGNED_BYTE, __pyx_v_data); } /* "_glarea_ogl.pyx":701 * * ##pxm-FUNC PD nogil * cdef void gl_set_atlas_texture(int width, int height) nogil: # <<<<<<<<<<<<<< * cdef int i, x, w, h #px+ * cdef char *data = malloc(width*height*4) #px+ */ /* function exit code */ } /* "_glarea_ogl.pyx":714 * * ##pxm-FUNC P nogil * cdef void _gl_set_matrix(GLint location, gldraw.mat4 &matrix) nogil: # <<<<<<<<<<<<<< * glUniformMatrix4fv(location, 1, GL_FALSE, &matrix[0][0]) #px/ * #glUniformMatrix4fv(location, 1, GL_FALSE, matrix) */ static void __pyx_f_11_glarea_ogl__gl_set_matrix(GLint __pyx_v_location, __pyx_t_11_gldraw_ogl_vec4 *__pyx_v_matrix) { /* "_glarea_ogl.pyx":715 * ##pxm-FUNC P nogil * cdef void _gl_set_matrix(GLint location, gldraw.mat4 &matrix) nogil: * glUniformMatrix4fv(location, 1, GL_FALSE, &matrix[0][0]) #px/ # <<<<<<<<<<<<<< * #glUniformMatrix4fv(location, 1, GL_FALSE, matrix) * */ glUniformMatrix4fv(__pyx_v_location, 1, GL_FALSE, (&((__pyx_v_matrix[0])[0]))); /* "_glarea_ogl.pyx":714 * * ##pxm-FUNC P nogil * cdef void _gl_set_matrix(GLint location, gldraw.mat4 &matrix) nogil: # <<<<<<<<<<<<<< * glUniformMatrix4fv(location, 1, GL_FALSE, &matrix[0][0]) #px/ * #glUniformMatrix4fv(location, 1, GL_FALSE, matrix) */ /* function exit code */ } /* "_glarea_ogl.pyx":719 * * ##pxm-FUNC PD nogil * cdef void gl_render() nogil: # <<<<<<<<<<<<<< * if renderdata.shader_changed: * gl_create_render_program() */ static void __pyx_f_11_glarea_ogl_gl_render(void) { int __pyx_t_1; /* "_glarea_ogl.pyx":720 * ##pxm-FUNC PD nogil * cdef void gl_render() nogil: * if renderdata.shader_changed: # <<<<<<<<<<<<<< * gl_create_render_program() * renderdata.shader_changed = False */ __pyx_t_1 = (__pyx_v_11_glarea_ogl_renderdata.shader_changed != 0); if (__pyx_t_1) { /* "_glarea_ogl.pyx":721 * cdef void gl_render() nogil: * if renderdata.shader_changed: * gl_create_render_program() # <<<<<<<<<<<<<< * renderdata.shader_changed = False * glEnable(GL_DEPTH_TEST) */ __pyx_f_11_glarea_ogl_gl_create_render_program(); /* "_glarea_ogl.pyx":722 * if renderdata.shader_changed: * gl_create_render_program() * renderdata.shader_changed = False # <<<<<<<<<<<<<< * glEnable(GL_DEPTH_TEST) * glEnable(GL_CULL_FACE) */ __pyx_v_11_glarea_ogl_renderdata.shader_changed = 0; /* "_glarea_ogl.pyx":720 * ##pxm-FUNC PD nogil * cdef void gl_render() nogil: * if renderdata.shader_changed: # <<<<<<<<<<<<<< * gl_create_render_program() * renderdata.shader_changed = False */ } /* "_glarea_ogl.pyx":723 * gl_create_render_program() * renderdata.shader_changed = False * glEnable(GL_DEPTH_TEST) # <<<<<<<<<<<<<< * glEnable(GL_CULL_FACE) * glCullFace(GL_BACK) */ glEnable(GL_DEPTH_TEST); /* "_glarea_ogl.pyx":724 * renderdata.shader_changed = False * glEnable(GL_DEPTH_TEST) * glEnable(GL_CULL_FACE) # <<<<<<<<<<<<<< * glCullFace(GL_BACK) * glFrontFace(GL_CCW) */ glEnable(GL_CULL_FACE); /* "_glarea_ogl.pyx":725 * glEnable(GL_DEPTH_TEST) * glEnable(GL_CULL_FACE) * glCullFace(GL_BACK) # <<<<<<<<<<<<<< * glFrontFace(GL_CCW) * gldraw.gl_enable_data() */ glCullFace(GL_BACK); /* "_glarea_ogl.pyx":726 * glEnable(GL_CULL_FACE) * glCullFace(GL_BACK) * glFrontFace(GL_CCW) # <<<<<<<<<<<<<< * gldraw.gl_enable_data() * glViewport(0, renderdata.y, renderdata.width, renderdata.height) */ glFrontFace(GL_CCW); /* "_glarea_ogl.pyx":727 * glCullFace(GL_BACK) * glFrontFace(GL_CCW) * gldraw.gl_enable_data() # <<<<<<<<<<<<<< * glViewport(0, renderdata.y, renderdata.width, renderdata.height) * if debug & DEBUG_PICK: */ __pyx_f_11_gldraw_ogl_gl_enable_data(); /* "_glarea_ogl.pyx":728 * glFrontFace(GL_CCW) * gldraw.gl_enable_data() * glViewport(0, renderdata.y, renderdata.width, renderdata.height) # <<<<<<<<<<<<<< * if debug & DEBUG_PICK: * _set_picking_matrix_identity() */ glViewport(0, __pyx_v_11_glarea_ogl_renderdata.y, __pyx_v_11_glarea_ogl_renderdata.width, __pyx_v_11_glarea_ogl_renderdata.height); /* "_glarea_ogl.pyx":729 * gldraw.gl_enable_data() * glViewport(0, renderdata.y, renderdata.width, renderdata.height) * if debug & DEBUG_PICK: # <<<<<<<<<<<<<< * _set_picking_matrix_identity() * _gl_render_pick() */ __pyx_t_1 = ((__pyx_v_11_glarea_ogl_debug & __pyx_e_11_glarea_ogl_DEBUG_PICK) != 0); if (__pyx_t_1) { /* "_glarea_ogl.pyx":730 * glViewport(0, renderdata.y, renderdata.width, renderdata.height) * if debug & DEBUG_PICK: * _set_picking_matrix_identity() # <<<<<<<<<<<<<< * _gl_render_pick() * else: */ __pyx_f_11_glarea_ogl__set_picking_matrix_identity(); /* "_glarea_ogl.pyx":731 * if debug & DEBUG_PICK: * _set_picking_matrix_identity() * _gl_render_pick() # <<<<<<<<<<<<<< * else: * glUseProgram(renderdata.prog_render) */ __pyx_f_11_glarea_ogl__gl_render_pick(); /* "_glarea_ogl.pyx":729 * gldraw.gl_enable_data() * glViewport(0, renderdata.y, renderdata.width, renderdata.height) * if debug & DEBUG_PICK: # <<<<<<<<<<<<<< * _set_picking_matrix_identity() * _gl_render_pick() */ goto __pyx_L4; } /* "_glarea_ogl.pyx":733 * _gl_render_pick() * else: * glUseProgram(renderdata.prog_render) # <<<<<<<<<<<<<< * IF 'ogl' == 'ogl': #px/ * #if True: */ /*else*/ { glUseProgram(__pyx_v_11_glarea_ogl_renderdata.prog_render); /* "_glarea_ogl.pyx":736 * IF 'ogl' == 'ogl': #px/ * #if True: * if renderdata.multisample: # <<<<<<<<<<<<<< * glEnable(GL_MULTISAMPLE) * else: */ __pyx_t_1 = (__pyx_v_11_glarea_ogl_renderdata.multisample != 0); if (__pyx_t_1) { /* "_glarea_ogl.pyx":737 * #if True: * if renderdata.multisample: * glEnable(GL_MULTISAMPLE) # <<<<<<<<<<<<<< * else: * glDisable(GL_MULTISAMPLE) */ glEnable(GL_MULTISAMPLE); /* "_glarea_ogl.pyx":736 * IF 'ogl' == 'ogl': #px/ * #if True: * if renderdata.multisample: # <<<<<<<<<<<<<< * glEnable(GL_MULTISAMPLE) * else: */ goto __pyx_L5; } /* "_glarea_ogl.pyx":739 * glEnable(GL_MULTISAMPLE) * else: * glDisable(GL_MULTISAMPLE) # <<<<<<<<<<<<<< * IF OFFSCREEN: #px+ * glClearColor(renderdata.bg_red, renderdata.bg_green, renderdata.bg_blue, 0.) #px+ */ /*else*/ { glDisable(GL_MULTISAMPLE); } __pyx_L5:; /* "_glarea_ogl.pyx":744 * ELSE: #px/ * #if True: * glClearColor(renderdata.bg_red, renderdata.bg_green, renderdata.bg_blue, 1.) # <<<<<<<<<<<<<< * _gl_set_matrix(renderdata.projection_location, renderdata.projection_matrix) * _gl_set_matrix(renderdata.modelview_location, renderdata.modelview_matrix) */ glClearColor(__pyx_v_11_glarea_ogl_renderdata.bg_red, __pyx_v_11_glarea_ogl_renderdata.bg_green, __pyx_v_11_glarea_ogl_renderdata.bg_blue, 1.); /* "_glarea_ogl.pyx":745 * #if True: * glClearColor(renderdata.bg_red, renderdata.bg_green, renderdata.bg_blue, 1.) * _gl_set_matrix(renderdata.projection_location, renderdata.projection_matrix) # <<<<<<<<<<<<<< * _gl_set_matrix(renderdata.modelview_location, renderdata.modelview_matrix) * glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) */ __pyx_f_11_glarea_ogl__gl_set_matrix(__pyx_v_11_glarea_ogl_renderdata.projection_location, __pyx_v_11_glarea_ogl_renderdata.projection_matrix); /* "_glarea_ogl.pyx":746 * glClearColor(renderdata.bg_red, renderdata.bg_green, renderdata.bg_blue, 1.) * _gl_set_matrix(renderdata.projection_location, renderdata.projection_matrix) * _gl_set_matrix(renderdata.modelview_location, renderdata.modelview_matrix) # <<<<<<<<<<<<<< * glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) * gldraw.gl_draw_cube() */ __pyx_f_11_glarea_ogl__gl_set_matrix(__pyx_v_11_glarea_ogl_renderdata.modelview_location, __pyx_v_11_glarea_ogl_renderdata.modelview_matrix); /* "_glarea_ogl.pyx":747 * _gl_set_matrix(renderdata.projection_location, renderdata.projection_matrix) * _gl_set_matrix(renderdata.modelview_location, renderdata.modelview_matrix) * glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) # <<<<<<<<<<<<<< * gldraw.gl_draw_cube() * if debug & DEBUG_DRAW: */ glClear((GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)); /* "_glarea_ogl.pyx":748 * _gl_set_matrix(renderdata.modelview_location, renderdata.modelview_matrix) * glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) * gldraw.gl_draw_cube() # <<<<<<<<<<<<<< * if debug & DEBUG_DRAW: * gldraw.gl_draw_cube_debug() */ __pyx_f_11_gldraw_ogl_gl_draw_cube(); } __pyx_L4:; /* "_glarea_ogl.pyx":749 * glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) * gldraw.gl_draw_cube() * if debug & DEBUG_DRAW: # <<<<<<<<<<<<<< * gldraw.gl_draw_cube_debug() * glClearColor(0, 0, 0, 0) */ __pyx_t_1 = ((__pyx_v_11_glarea_ogl_debug & __pyx_e_11_glarea_ogl_DEBUG_DRAW) != 0); if (__pyx_t_1) { /* "_glarea_ogl.pyx":750 * gldraw.gl_draw_cube() * if debug & DEBUG_DRAW: * gldraw.gl_draw_cube_debug() # <<<<<<<<<<<<<< * glClearColor(0, 0, 0, 0) * glUseProgram(0) */ __pyx_f_11_gldraw_ogl_gl_draw_cube_debug(); /* "_glarea_ogl.pyx":749 * glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) * gldraw.gl_draw_cube() * if debug & DEBUG_DRAW: # <<<<<<<<<<<<<< * gldraw.gl_draw_cube_debug() * glClearColor(0, 0, 0, 0) */ } /* "_glarea_ogl.pyx":751 * if debug & DEBUG_DRAW: * gldraw.gl_draw_cube_debug() * glClearColor(0, 0, 0, 0) # <<<<<<<<<<<<<< * glUseProgram(0) * gldraw.gl_disable_data() */ glClearColor(0.0, 0.0, 0.0, 0.0); /* "_glarea_ogl.pyx":752 * gldraw.gl_draw_cube_debug() * glClearColor(0, 0, 0, 0) * glUseProgram(0) # <<<<<<<<<<<<<< * gldraw.gl_disable_data() * glDisable(GL_CULL_FACE) */ glUseProgram(0); /* "_glarea_ogl.pyx":753 * glClearColor(0, 0, 0, 0) * glUseProgram(0) * gldraw.gl_disable_data() # <<<<<<<<<<<<<< * glDisable(GL_CULL_FACE) * glDisable(GL_DEPTH_TEST) */ __pyx_f_11_gldraw_ogl_gl_disable_data(); /* "_glarea_ogl.pyx":754 * glUseProgram(0) * gldraw.gl_disable_data() * glDisable(GL_CULL_FACE) # <<<<<<<<<<<<<< * glDisable(GL_DEPTH_TEST) * */ glDisable(GL_CULL_FACE); /* "_glarea_ogl.pyx":755 * gldraw.gl_disable_data() * glDisable(GL_CULL_FACE) * glDisable(GL_DEPTH_TEST) # <<<<<<<<<<<<<< * * ##pxm-FUNC PD nogil */ glDisable(GL_DEPTH_TEST); /* "_glarea_ogl.pyx":719 * * ##pxm-FUNC PD nogil * cdef void gl_render() nogil: # <<<<<<<<<<<<<< * if renderdata.shader_changed: * gl_create_render_program() */ /* function exit code */ } /* "_glarea_ogl.pyx":758 * * ##pxm-FUNC PD nogil * cdef void gl_render_select_debug() nogil: # <<<<<<<<<<<<<< * cdef GLfloat selectdata[12] #px/ * #selectdata = [0.] * 12 */ static void __pyx_f_11_glarea_ogl_gl_render_select_debug(void) { GLfloat __pyx_v_selectdata[12]; /* "_glarea_ogl.pyx":761 * cdef GLfloat selectdata[12] #px/ * #selectdata = [0.] * 12 * selectdata[0] = renderdata.debug_modelview1[0] # <<<<<<<<<<<<<< * selectdata[1] = renderdata.debug_modelview1[1] * selectdata[2] = renderdata.debug_modelview1[2] */ (__pyx_v_selectdata[0]) = (__pyx_v_11_glarea_ogl_renderdata.debug_modelview1[0]); /* "_glarea_ogl.pyx":762 * #selectdata = [0.] * 12 * selectdata[0] = renderdata.debug_modelview1[0] * selectdata[1] = renderdata.debug_modelview1[1] # <<<<<<<<<<<<<< * selectdata[2] = renderdata.debug_modelview1[2] * selectdata[3] = renderdata.debug_modelview2[0] */ (__pyx_v_selectdata[1]) = (__pyx_v_11_glarea_ogl_renderdata.debug_modelview1[1]); /* "_glarea_ogl.pyx":763 * selectdata[0] = renderdata.debug_modelview1[0] * selectdata[1] = renderdata.debug_modelview1[1] * selectdata[2] = renderdata.debug_modelview1[2] # <<<<<<<<<<<<<< * selectdata[3] = renderdata.debug_modelview2[0] * selectdata[4] = renderdata.debug_modelview2[1] */ (__pyx_v_selectdata[2]) = (__pyx_v_11_glarea_ogl_renderdata.debug_modelview1[2]); /* "_glarea_ogl.pyx":764 * selectdata[1] = renderdata.debug_modelview1[1] * selectdata[2] = renderdata.debug_modelview1[2] * selectdata[3] = renderdata.debug_modelview2[0] # <<<<<<<<<<<<<< * selectdata[4] = renderdata.debug_modelview2[1] * selectdata[5] = renderdata.debug_modelview2[2] */ (__pyx_v_selectdata[3]) = (__pyx_v_11_glarea_ogl_renderdata.debug_modelview2[0]); /* "_glarea_ogl.pyx":765 * selectdata[2] = renderdata.debug_modelview1[2] * selectdata[3] = renderdata.debug_modelview2[0] * selectdata[4] = renderdata.debug_modelview2[1] # <<<<<<<<<<<<<< * selectdata[5] = renderdata.debug_modelview2[2] * selectdata[6] = renderdata.debug_viewport1[0] / renderdata.width * 2 - 1 */ (__pyx_v_selectdata[4]) = (__pyx_v_11_glarea_ogl_renderdata.debug_modelview2[1]); /* "_glarea_ogl.pyx":766 * selectdata[3] = renderdata.debug_modelview2[0] * selectdata[4] = renderdata.debug_modelview2[1] * selectdata[5] = renderdata.debug_modelview2[2] # <<<<<<<<<<<<<< * selectdata[6] = renderdata.debug_viewport1[0] / renderdata.width * 2 - 1 * selectdata[7] = renderdata.debug_viewport1[1] / renderdata.height * 2 - 1 */ (__pyx_v_selectdata[5]) = (__pyx_v_11_glarea_ogl_renderdata.debug_modelview2[2]); /* "_glarea_ogl.pyx":767 * selectdata[4] = renderdata.debug_modelview2[1] * selectdata[5] = renderdata.debug_modelview2[2] * selectdata[6] = renderdata.debug_viewport1[0] / renderdata.width * 2 - 1 # <<<<<<<<<<<<<< * selectdata[7] = renderdata.debug_viewport1[1] / renderdata.height * 2 - 1 * selectdata[8] = 0 */ if (unlikely(__pyx_v_11_glarea_ogl_renderdata.width == 0)) { #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif PyErr_SetString(PyExc_ZeroDivisionError, "float division"); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif __PYX_ERR(0, 767, __pyx_L1_error) } (__pyx_v_selectdata[6]) = (((((double)(__pyx_v_11_glarea_ogl_renderdata.debug_viewport1[0])) / ((double)__pyx_v_11_glarea_ogl_renderdata.width)) * 2.0) - 1.0); /* "_glarea_ogl.pyx":768 * selectdata[5] = renderdata.debug_modelview2[2] * selectdata[6] = renderdata.debug_viewport1[0] / renderdata.width * 2 - 1 * selectdata[7] = renderdata.debug_viewport1[1] / renderdata.height * 2 - 1 # <<<<<<<<<<<<<< * selectdata[8] = 0 * selectdata[9] = renderdata.debug_viewport2[0] / renderdata.width * 2 - 1 */ if (unlikely(__pyx_v_11_glarea_ogl_renderdata.height == 0)) { #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif PyErr_SetString(PyExc_ZeroDivisionError, "float division"); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif __PYX_ERR(0, 768, __pyx_L1_error) } (__pyx_v_selectdata[7]) = (((((double)(__pyx_v_11_glarea_ogl_renderdata.debug_viewport1[1])) / ((double)__pyx_v_11_glarea_ogl_renderdata.height)) * 2.0) - 1.0); /* "_glarea_ogl.pyx":769 * selectdata[6] = renderdata.debug_viewport1[0] / renderdata.width * 2 - 1 * selectdata[7] = renderdata.debug_viewport1[1] / renderdata.height * 2 - 1 * selectdata[8] = 0 # <<<<<<<<<<<<<< * selectdata[9] = renderdata.debug_viewport2[0] / renderdata.width * 2 - 1 * selectdata[10] = renderdata.debug_viewport2[1] / renderdata.height * 2 - 1 */ (__pyx_v_selectdata[8]) = 0.0; /* "_glarea_ogl.pyx":770 * selectdata[7] = renderdata.debug_viewport1[1] / renderdata.height * 2 - 1 * selectdata[8] = 0 * selectdata[9] = renderdata.debug_viewport2[0] / renderdata.width * 2 - 1 # <<<<<<<<<<<<<< * selectdata[10] = renderdata.debug_viewport2[1] / renderdata.height * 2 - 1 * selectdata[11] = 0 */ if (unlikely(__pyx_v_11_glarea_ogl_renderdata.width == 0)) { #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif PyErr_SetString(PyExc_ZeroDivisionError, "float division"); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif __PYX_ERR(0, 770, __pyx_L1_error) } (__pyx_v_selectdata[9]) = (((((double)(__pyx_v_11_glarea_ogl_renderdata.debug_viewport2[0])) / ((double)__pyx_v_11_glarea_ogl_renderdata.width)) * 2.0) - 1.0); /* "_glarea_ogl.pyx":771 * selectdata[8] = 0 * selectdata[9] = renderdata.debug_viewport2[0] / renderdata.width * 2 - 1 * selectdata[10] = renderdata.debug_viewport2[1] / renderdata.height * 2 - 1 # <<<<<<<<<<<<<< * selectdata[11] = 0 * gldraw.gl_enable_data() */ if (unlikely(__pyx_v_11_glarea_ogl_renderdata.height == 0)) { #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif PyErr_SetString(PyExc_ZeroDivisionError, "float division"); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif __PYX_ERR(0, 771, __pyx_L1_error) } (__pyx_v_selectdata[10]) = (((((double)(__pyx_v_11_glarea_ogl_renderdata.debug_viewport2[1])) / ((double)__pyx_v_11_glarea_ogl_renderdata.height)) * 2.0) - 1.0); /* "_glarea_ogl.pyx":772 * selectdata[9] = renderdata.debug_viewport2[0] / renderdata.width * 2 - 1 * selectdata[10] = renderdata.debug_viewport2[1] / renderdata.height * 2 - 1 * selectdata[11] = 0 # <<<<<<<<<<<<<< * gldraw.gl_enable_data() * glUseProgram(renderdata.prog_render) */ (__pyx_v_selectdata[11]) = 0.0; /* "_glarea_ogl.pyx":773 * selectdata[10] = renderdata.debug_viewport2[1] / renderdata.height * 2 - 1 * selectdata[11] = 0 * gldraw.gl_enable_data() # <<<<<<<<<<<<<< * glUseProgram(renderdata.prog_render) * glViewport(0, renderdata.y, renderdata.width, renderdata.height) */ __pyx_f_11_gldraw_ogl_gl_enable_data(); /* "_glarea_ogl.pyx":774 * selectdata[11] = 0 * gldraw.gl_enable_data() * glUseProgram(renderdata.prog_render) # <<<<<<<<<<<<<< * glViewport(0, renderdata.y, renderdata.width, renderdata.height) * gldraw.gl_draw_select_debug(&selectdata[0], sizeof(selectdata), renderdata.prog_hud) #px/ */ glUseProgram(__pyx_v_11_glarea_ogl_renderdata.prog_render); /* "_glarea_ogl.pyx":775 * gldraw.gl_enable_data() * glUseProgram(renderdata.prog_render) * glViewport(0, renderdata.y, renderdata.width, renderdata.height) # <<<<<<<<<<<<<< * gldraw.gl_draw_select_debug(&selectdata[0], sizeof(selectdata), renderdata.prog_hud) #px/ * #gldraw.gl_draw_select_debug(selectdata, 0, renderdata.prog_hud) */ glViewport(0, __pyx_v_11_glarea_ogl_renderdata.y, __pyx_v_11_glarea_ogl_renderdata.width, __pyx_v_11_glarea_ogl_renderdata.height); /* "_glarea_ogl.pyx":776 * glUseProgram(renderdata.prog_render) * glViewport(0, renderdata.y, renderdata.width, renderdata.height) * gldraw.gl_draw_select_debug(&selectdata[0], sizeof(selectdata), renderdata.prog_hud) #px/ # <<<<<<<<<<<<<< * #gldraw.gl_draw_select_debug(selectdata, 0, renderdata.prog_hud) * glUseProgram(0) */ __pyx_f_11_gldraw_ogl_gl_draw_select_debug((&(__pyx_v_selectdata[0])), (sizeof(__pyx_v_selectdata)), __pyx_v_11_glarea_ogl_renderdata.prog_hud); /* "_glarea_ogl.pyx":778 * gldraw.gl_draw_select_debug(&selectdata[0], sizeof(selectdata), renderdata.prog_hud) #px/ * #gldraw.gl_draw_select_debug(selectdata, 0, renderdata.prog_hud) * glUseProgram(0) # <<<<<<<<<<<<<< * gldraw.gl_disable_data() * */ glUseProgram(0); /* "_glarea_ogl.pyx":779 * #gldraw.gl_draw_select_debug(selectdata, 0, renderdata.prog_hud) * glUseProgram(0) * gldraw.gl_disable_data() # <<<<<<<<<<<<<< * * */ __pyx_f_11_gldraw_ogl_gl_disable_data(); /* "_glarea_ogl.pyx":758 * * ##pxm-FUNC PD nogil * cdef void gl_render_select_debug() nogil: # <<<<<<<<<<<<<< * cdef GLfloat selectdata[12] #px/ * #selectdata = [0.] * 12 */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_WriteUnraisable("_glarea_ogl.gl_render_select_debug", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 1); __pyx_L0:; } /* "_glarea_ogl.pyx":785 * * ##pxm-FUNC P nogil * cdef void _gl_render_pick() nogil: # <<<<<<<<<<<<<< * glUseProgram(renderdata.prog_pick) * IF 'ogl' == 'ogl': #px/ */ static void __pyx_f_11_glarea_ogl__gl_render_pick(void) { /* "_glarea_ogl.pyx":786 * ##pxm-FUNC P nogil * cdef void _gl_render_pick() nogil: * glUseProgram(renderdata.prog_pick) # <<<<<<<<<<<<<< * IF 'ogl' == 'ogl': #px/ * #if True: */ glUseProgram(__pyx_v_11_glarea_ogl_renderdata.prog_pick); /* "_glarea_ogl.pyx":789 * IF 'ogl' == 'ogl': #px/ * #if True: * glDisable(GL_MULTISAMPLE) # <<<<<<<<<<<<<< * glClearColor(0., 0., 0., 1.) * _gl_set_matrix(renderdata.picking_location, renderdata.picking_matrix) */ glDisable(GL_MULTISAMPLE); /* "_glarea_ogl.pyx":790 * #if True: * glDisable(GL_MULTISAMPLE) * glClearColor(0., 0., 0., 1.) # <<<<<<<<<<<<<< * _gl_set_matrix(renderdata.picking_location, renderdata.picking_matrix) * _gl_set_matrix(renderdata.projection_pick_location, renderdata.projection_matrix) */ glClearColor(0., 0., 0., 1.); /* "_glarea_ogl.pyx":791 * glDisable(GL_MULTISAMPLE) * glClearColor(0., 0., 0., 1.) * _gl_set_matrix(renderdata.picking_location, renderdata.picking_matrix) # <<<<<<<<<<<<<< * _gl_set_matrix(renderdata.projection_pick_location, renderdata.projection_matrix) * _gl_set_matrix(renderdata.modelview_pick_location, renderdata.modelview_matrix) */ __pyx_f_11_glarea_ogl__gl_set_matrix(__pyx_v_11_glarea_ogl_renderdata.picking_location, __pyx_v_11_glarea_ogl_renderdata.picking_matrix); /* "_glarea_ogl.pyx":792 * glClearColor(0., 0., 0., 1.) * _gl_set_matrix(renderdata.picking_location, renderdata.picking_matrix) * _gl_set_matrix(renderdata.projection_pick_location, renderdata.projection_matrix) # <<<<<<<<<<<<<< * _gl_set_matrix(renderdata.modelview_pick_location, renderdata.modelview_matrix) * glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) */ __pyx_f_11_glarea_ogl__gl_set_matrix(__pyx_v_11_glarea_ogl_renderdata.projection_pick_location, __pyx_v_11_glarea_ogl_renderdata.projection_matrix); /* "_glarea_ogl.pyx":793 * _gl_set_matrix(renderdata.picking_location, renderdata.picking_matrix) * _gl_set_matrix(renderdata.projection_pick_location, renderdata.projection_matrix) * _gl_set_matrix(renderdata.modelview_pick_location, renderdata.modelview_matrix) # <<<<<<<<<<<<<< * glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) * gldraw.gl_pick_cube() */ __pyx_f_11_glarea_ogl__gl_set_matrix(__pyx_v_11_glarea_ogl_renderdata.modelview_pick_location, __pyx_v_11_glarea_ogl_renderdata.modelview_matrix); /* "_glarea_ogl.pyx":794 * _gl_set_matrix(renderdata.projection_pick_location, renderdata.projection_matrix) * _gl_set_matrix(renderdata.modelview_pick_location, renderdata.modelview_matrix) * glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) # <<<<<<<<<<<<<< * gldraw.gl_pick_cube() * */ glClear((GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)); /* "_glarea_ogl.pyx":795 * _gl_set_matrix(renderdata.modelview_pick_location, renderdata.modelview_matrix) * glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) * gldraw.gl_pick_cube() # <<<<<<<<<<<<<< * * ##pxm-FUNC PD nogil */ __pyx_f_11_gldraw_ogl_gl_pick_cube(); /* "_glarea_ogl.pyx":785 * * ##pxm-FUNC P nogil * cdef void _gl_render_pick() nogil: # <<<<<<<<<<<<<< * glUseProgram(renderdata.prog_pick) * IF 'ogl' == 'ogl': #px/ */ /* function exit code */ } /* "_glarea_ogl.pyx":798 * * ##pxm-FUNC PD nogil * cdef int gl_pick_polygons() nogil: # <<<<<<<<<<<<<< * cdef unsigned char pixel[4] #px+ * cdef int index #px+ */ static int __pyx_f_11_glarea_ogl_gl_pick_polygons(void) { unsigned char __pyx_v_pixel[4]; int __pyx_r; int __pyx_t_1; int __pyx_t_2; int __pyx_t_3; /* "_glarea_ogl.pyx":802 * cdef int index #px+ * * if not (0 <= renderdata.pick_x < renderdata.width and 0 <= renderdata.pick_y < renderdata.height): # <<<<<<<<<<<<<< * return 0 * _set_picking_matrix(renderdata.pick_x, renderdata.pick_y) */ __pyx_t_2 = (0 <= __pyx_v_11_glarea_ogl_renderdata.pick_x); if (__pyx_t_2) { __pyx_t_2 = (__pyx_v_11_glarea_ogl_renderdata.pick_x < __pyx_v_11_glarea_ogl_renderdata.width); } __pyx_t_3 = (__pyx_t_2 != 0); if (__pyx_t_3) { } else { __pyx_t_1 = __pyx_t_3; goto __pyx_L4_bool_binop_done; } __pyx_t_3 = (0 <= __pyx_v_11_glarea_ogl_renderdata.pick_y); if (__pyx_t_3) { __pyx_t_3 = (__pyx_v_11_glarea_ogl_renderdata.pick_y < __pyx_v_11_glarea_ogl_renderdata.height); } __pyx_t_2 = (__pyx_t_3 != 0); __pyx_t_1 = __pyx_t_2; __pyx_L4_bool_binop_done:; __pyx_t_2 = ((!__pyx_t_1) != 0); if (__pyx_t_2) { /* "_glarea_ogl.pyx":803 * * if not (0 <= renderdata.pick_x < renderdata.width and 0 <= renderdata.pick_y < renderdata.height): * return 0 # <<<<<<<<<<<<<< * _set_picking_matrix(renderdata.pick_x, renderdata.pick_y) * glEnable(GL_DEPTH_TEST) */ __pyx_r = 0; goto __pyx_L0; /* "_glarea_ogl.pyx":802 * cdef int index #px+ * * if not (0 <= renderdata.pick_x < renderdata.width and 0 <= renderdata.pick_y < renderdata.height): # <<<<<<<<<<<<<< * return 0 * _set_picking_matrix(renderdata.pick_x, renderdata.pick_y) */ } /* "_glarea_ogl.pyx":804 * if not (0 <= renderdata.pick_x < renderdata.width and 0 <= renderdata.pick_y < renderdata.height): * return 0 * _set_picking_matrix(renderdata.pick_x, renderdata.pick_y) # <<<<<<<<<<<<<< * glEnable(GL_DEPTH_TEST) * glEnable(GL_CULL_FACE) */ __pyx_f_11_glarea_ogl__set_picking_matrix(__pyx_v_11_glarea_ogl_renderdata.pick_x, __pyx_v_11_glarea_ogl_renderdata.pick_y); /* "_glarea_ogl.pyx":805 * return 0 * _set_picking_matrix(renderdata.pick_x, renderdata.pick_y) * glEnable(GL_DEPTH_TEST) # <<<<<<<<<<<<<< * glEnable(GL_CULL_FACE) * glCullFace(GL_BACK) */ glEnable(GL_DEPTH_TEST); /* "_glarea_ogl.pyx":806 * _set_picking_matrix(renderdata.pick_x, renderdata.pick_y) * glEnable(GL_DEPTH_TEST) * glEnable(GL_CULL_FACE) # <<<<<<<<<<<<<< * glCullFace(GL_BACK) * glFrontFace(GL_CCW) */ glEnable(GL_CULL_FACE); /* "_glarea_ogl.pyx":807 * glEnable(GL_DEPTH_TEST) * glEnable(GL_CULL_FACE) * glCullFace(GL_BACK) # <<<<<<<<<<<<<< * glFrontFace(GL_CCW) * gldraw.gl_enable_data() */ glCullFace(GL_BACK); /* "_glarea_ogl.pyx":808 * glEnable(GL_CULL_FACE) * glCullFace(GL_BACK) * glFrontFace(GL_CCW) # <<<<<<<<<<<<<< * gldraw.gl_enable_data() * glViewport(0, 0, 1, 1) */ glFrontFace(GL_CCW); /* "_glarea_ogl.pyx":809 * glCullFace(GL_BACK) * glFrontFace(GL_CCW) * gldraw.gl_enable_data() # <<<<<<<<<<<<<< * glViewport(0, 0, 1, 1) * _gl_render_pick() */ __pyx_f_11_gldraw_ogl_gl_enable_data(); /* "_glarea_ogl.pyx":810 * glFrontFace(GL_CCW) * gldraw.gl_enable_data() * glViewport(0, 0, 1, 1) # <<<<<<<<<<<<<< * _gl_render_pick() * gldraw.gl_disable_data() */ glViewport(0, 0, 1, 1); /* "_glarea_ogl.pyx":811 * gldraw.gl_enable_data() * glViewport(0, 0, 1, 1) * _gl_render_pick() # <<<<<<<<<<<<<< * gldraw.gl_disable_data() * glDisable(GL_CULL_FACE) */ __pyx_f_11_glarea_ogl__gl_render_pick(); /* "_glarea_ogl.pyx":812 * glViewport(0, 0, 1, 1) * _gl_render_pick() * gldraw.gl_disable_data() # <<<<<<<<<<<<<< * glDisable(GL_CULL_FACE) * glDisable(GL_DEPTH_TEST) */ __pyx_f_11_gldraw_ogl_gl_disable_data(); /* "_glarea_ogl.pyx":813 * _gl_render_pick() * gldraw.gl_disable_data() * glDisable(GL_CULL_FACE) # <<<<<<<<<<<<<< * glDisable(GL_DEPTH_TEST) * glReadPixels(0, 0, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, pixel) #px/ */ glDisable(GL_CULL_FACE); /* "_glarea_ogl.pyx":814 * gldraw.gl_disable_data() * glDisable(GL_CULL_FACE) * glDisable(GL_DEPTH_TEST) # <<<<<<<<<<<<<< * glReadPixels(0, 0, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, pixel) #px/ * #pixel = glReadPixels(0, 0, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, [[[0, 0, 0, 0]]])[0][0] */ glDisable(GL_DEPTH_TEST); /* "_glarea_ogl.pyx":815 * glDisable(GL_CULL_FACE) * glDisable(GL_DEPTH_TEST) * glReadPixels(0, 0, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, pixel) #px/ # <<<<<<<<<<<<<< * #pixel = glReadPixels(0, 0, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, [[[0, 0, 0, 0]]])[0][0] * return pixel[0]<<4 | pixel[1] | pixel[2]>>4 */ glReadPixels(0, 0, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, __pyx_v_pixel); /* "_glarea_ogl.pyx":817 * glReadPixels(0, 0, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, pixel) #px/ * #pixel = glReadPixels(0, 0, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, [[[0, 0, 0, 0]]])[0][0] * return pixel[0]<<4 | pixel[1] | pixel[2]>>4 # <<<<<<<<<<<<<< * * ##pxm-FUNC P nogil */ __pyx_r = ((((__pyx_v_pixel[0]) << 4) | (__pyx_v_pixel[1])) | ((__pyx_v_pixel[2]) >> 4)); goto __pyx_L0; /* "_glarea_ogl.pyx":798 * * ##pxm-FUNC PD nogil * cdef int gl_pick_polygons() nogil: # <<<<<<<<<<<<<< * cdef unsigned char pixel[4] #px+ * cdef int index #px+ */ /* function exit code */ __pyx_L0:; return __pyx_r; } /* "_glarea_ogl.pyx":820 * * ##pxm-FUNC P nogil * cdef void _modelview_to_viewport(float *vvect, int *mvect) nogil: # <<<<<<<<<<<<<< * cdef gldraw.vec4 *M #px+ * cdef gldraw.vec4 *P #px+ */ static void __pyx_f_11_glarea_ogl__modelview_to_viewport(float *__pyx_v_vvect, int *__pyx_v_mvect) { __pyx_t_11_gldraw_ogl_vec4 *__pyx_v_M; __pyx_t_11_gldraw_ogl_vec4 *__pyx_v_P; float __pyx_v_u0; float __pyx_v_u1; float __pyx_v_u2; float __pyx_v_v0; float __pyx_v_v1; float __pyx_v_v3; /* "_glarea_ogl.pyx":825 * cdef float u0, u1, u2, v0, v1, v3 #px+ * * M = &renderdata.modelview_matrix[0][0] #px/ # <<<<<<<<<<<<<< * #M = renderdata.modelview_matrix * P = &renderdata.projection_matrix[0][0] #px/ */ __pyx_v_M = ((__pyx_t_11_gldraw_ogl_vec4 *)(&((__pyx_v_11_glarea_ogl_renderdata.modelview_matrix[0])[0]))); /* "_glarea_ogl.pyx":827 * M = &renderdata.modelview_matrix[0][0] #px/ * #M = renderdata.modelview_matrix * P = &renderdata.projection_matrix[0][0] #px/ # <<<<<<<<<<<<<< * #P = renderdata.projection_matrix * */ __pyx_v_P = ((__pyx_t_11_gldraw_ogl_vec4 *)(&((__pyx_v_11_glarea_ogl_renderdata.projection_matrix[0])[0]))); /* "_glarea_ogl.pyx":832 * # u = M^T * vvect * #assert M[1][0] == 0 * u0 = M[0][0]*vvect[0] + M[1][0]*vvect[1] + M[2][0]*vvect[2] + M[3][0] # <<<<<<<<<<<<<< * u1 = M[0][1]*vvect[0] + M[1][1]*vvect[1] + M[2][1]*vvect[2] + M[3][1] * u2 = M[0][2]*vvect[0] + M[1][2]*vvect[1] + M[2][2]*vvect[2] + M[3][2] */ __pyx_v_u0 = ((((((__pyx_v_M[0])[0]) * (__pyx_v_vvect[0])) + (((__pyx_v_M[1])[0]) * (__pyx_v_vvect[1]))) + (((__pyx_v_M[2])[0]) * (__pyx_v_vvect[2]))) + ((__pyx_v_M[3])[0])); /* "_glarea_ogl.pyx":833 * #assert M[1][0] == 0 * u0 = M[0][0]*vvect[0] + M[1][0]*vvect[1] + M[2][0]*vvect[2] + M[3][0] * u1 = M[0][1]*vvect[0] + M[1][1]*vvect[1] + M[2][1]*vvect[2] + M[3][1] # <<<<<<<<<<<<<< * u2 = M[0][2]*vvect[0] + M[1][2]*vvect[1] + M[2][2]*vvect[2] + M[3][2] * #u3 = 1. */ __pyx_v_u1 = ((((((__pyx_v_M[0])[1]) * (__pyx_v_vvect[0])) + (((__pyx_v_M[1])[1]) * (__pyx_v_vvect[1]))) + (((__pyx_v_M[2])[1]) * (__pyx_v_vvect[2]))) + ((__pyx_v_M[3])[1])); /* "_glarea_ogl.pyx":834 * u0 = M[0][0]*vvect[0] + M[1][0]*vvect[1] + M[2][0]*vvect[2] + M[3][0] * u1 = M[0][1]*vvect[0] + M[1][1]*vvect[1] + M[2][1]*vvect[2] + M[3][1] * u2 = M[0][2]*vvect[0] + M[1][2]*vvect[1] + M[2][2]*vvect[2] + M[3][2] # <<<<<<<<<<<<<< * #u3 = 1. * */ __pyx_v_u2 = ((((((__pyx_v_M[0])[2]) * (__pyx_v_vvect[0])) + (((__pyx_v_M[1])[2]) * (__pyx_v_vvect[1]))) + (((__pyx_v_M[2])[2]) * (__pyx_v_vvect[2]))) + ((__pyx_v_M[3])[2])); /* "_glarea_ogl.pyx":838 * * # v = P * u * v0 = P[0][0] * u0 + P[1][0] * u1 + P[2][0] * u2 + P[3][0] #* u3 # <<<<<<<<<<<<<< * v1 = P[0][1] * u0 + P[1][1] * u1 + P[2][1] * u2 + P[3][1] #* u3 * #v2 = P[0][2] * u0 + P[1][2] * u1 + P[2][2] * u2 + P[3][2] * u3 */ __pyx_v_v0 = ((((((__pyx_v_P[0])[0]) * __pyx_v_u0) + (((__pyx_v_P[1])[0]) * __pyx_v_u1)) + (((__pyx_v_P[2])[0]) * __pyx_v_u2)) + ((__pyx_v_P[3])[0])); /* "_glarea_ogl.pyx":839 * # v = P * u * v0 = P[0][0] * u0 + P[1][0] * u1 + P[2][0] * u2 + P[3][0] #* u3 * v1 = P[0][1] * u0 + P[1][1] * u1 + P[2][1] * u2 + P[3][1] #* u3 # <<<<<<<<<<<<<< * #v2 = P[0][2] * u0 + P[1][2] * u1 + P[2][2] * u2 + P[3][2] * u3 * v3 = P[0][3] * u0 + P[1][3] * u1 + P[2][3] * u2 + P[3][3] #* u3 */ __pyx_v_v1 = ((((((__pyx_v_P[0])[1]) * __pyx_v_u0) + (((__pyx_v_P[1])[1]) * __pyx_v_u1)) + (((__pyx_v_P[2])[1]) * __pyx_v_u2)) + ((__pyx_v_P[3])[1])); /* "_glarea_ogl.pyx":841 * v1 = P[0][1] * u0 + P[1][1] * u1 + P[2][1] * u2 + P[3][1] #* u3 * #v2 = P[0][2] * u0 + P[1][2] * u1 + P[2][2] * u2 + P[3][2] * u3 * v3 = P[0][3] * u0 + P[1][3] * u1 + P[2][3] * u2 + P[3][3] #* u3 # <<<<<<<<<<<<<< * * mvect[0] = int((v0 / v3 + 1) / 2 * renderdata.width) */ __pyx_v_v3 = ((((((__pyx_v_P[0])[3]) * __pyx_v_u0) + (((__pyx_v_P[1])[3]) * __pyx_v_u1)) + (((__pyx_v_P[2])[3]) * __pyx_v_u2)) + ((__pyx_v_P[3])[3])); /* "_glarea_ogl.pyx":843 * v3 = P[0][3] * u0 + P[1][3] * u1 + P[2][3] * u2 + P[3][3] #* u3 * * mvect[0] = int((v0 / v3 + 1) / 2 * renderdata.width) # <<<<<<<<<<<<<< * mvect[1] = int((v1 / v3 + 1) / 2 * renderdata.height) * */ if (unlikely(__pyx_v_v3 == 0)) { #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif PyErr_SetString(PyExc_ZeroDivisionError, "float division"); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif __PYX_ERR(0, 843, __pyx_L1_error) } (__pyx_v_mvect[0]) = ((int)((((__pyx_v_v0 / __pyx_v_v3) + 1.0) / 2.0) * __pyx_v_11_glarea_ogl_renderdata.width)); /* "_glarea_ogl.pyx":844 * * mvect[0] = int((v0 / v3 + 1) / 2 * renderdata.width) * mvect[1] = int((v1 / v3 + 1) / 2 * renderdata.height) # <<<<<<<<<<<<<< * * ##pxm-FUNC P nogil */ if (unlikely(__pyx_v_v3 == 0)) { #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif PyErr_SetString(PyExc_ZeroDivisionError, "float division"); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif __PYX_ERR(0, 844, __pyx_L1_error) } (__pyx_v_mvect[1]) = ((int)((((__pyx_v_v1 / __pyx_v_v3) + 1.0) / 2.0) * __pyx_v_11_glarea_ogl_renderdata.height)); /* "_glarea_ogl.pyx":820 * * ##pxm-FUNC P nogil * cdef void _modelview_to_viewport(float *vvect, int *mvect) nogil: # <<<<<<<<<<<<<< * cdef gldraw.vec4 *M #px+ * cdef gldraw.vec4 *P #px+ */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_WriteUnraisable("_glarea_ogl._modelview_to_viewport", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 1); __pyx_L0:; } /* "_glarea_ogl.pyx":847 * * ##pxm-FUNC P nogil * cdef void _viewport_to_modelview(int *vvect, float *mvect) nogil: # <<<<<<<<<<<<<< * cdef gldraw.vec4 *MT #px+ * cdef gldraw.vec4 *P #px+ */ static void __pyx_f_11_glarea_ogl__viewport_to_modelview(int *__pyx_v_vvect, float *__pyx_v_mvect) { __pyx_t_11_gldraw_ogl_vec4 *__pyx_v_MT; __pyx_t_11_gldraw_ogl_vec4 *__pyx_v_P; float __pyx_v_u0; float __pyx_v_u1; float __pyx_v_u2; float __pyx_v_u3; float __pyx_v_v0; float __pyx_v_v1; float __pyx_v_v2; float __pyx_t_1; float __pyx_t_2; /* "_glarea_ogl.pyx":852 * cdef float u0, u1, u2, u3, v0, v1, v2 #px+ * * v0 = vvect[0] / renderdata.width * 2 - 1 # <<<<<<<<<<<<<< * v1 = vvect[1] / renderdata.height * 2 - 1 * v2 = 0 */ if (unlikely(__pyx_v_11_glarea_ogl_renderdata.width == 0)) { #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif PyErr_SetString(PyExc_ZeroDivisionError, "float division"); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif __PYX_ERR(0, 852, __pyx_L1_error) } __pyx_v_v0 = (((((double)(__pyx_v_vvect[0])) / ((double)__pyx_v_11_glarea_ogl_renderdata.width)) * 2.0) - 1.0); /* "_glarea_ogl.pyx":853 * * v0 = vvect[0] / renderdata.width * 2 - 1 * v1 = vvect[1] / renderdata.height * 2 - 1 # <<<<<<<<<<<<<< * v2 = 0 * #v3 = 1 */ if (unlikely(__pyx_v_11_glarea_ogl_renderdata.height == 0)) { #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif PyErr_SetString(PyExc_ZeroDivisionError, "float division"); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif __PYX_ERR(0, 853, __pyx_L1_error) } __pyx_v_v1 = (((((double)(__pyx_v_vvect[1])) / ((double)__pyx_v_11_glarea_ogl_renderdata.height)) * 2.0) - 1.0); /* "_glarea_ogl.pyx":854 * v0 = vvect[0] / renderdata.width * 2 - 1 * v1 = vvect[1] / renderdata.height * 2 - 1 * v2 = 0 # <<<<<<<<<<<<<< * #v3 = 1 * */ __pyx_v_v2 = 0.0; /* "_glarea_ogl.pyx":862 * # 0 0 e c 0 0 0 D 0 0 cC 0 * # 0 0 d 0 0 0 C E 0 0 0 dD * P = &renderdata.projection_matrix[0][0] #px/ # <<<<<<<<<<<<<< * #P = renderdata.projection_matrix * # u = P^-1 * v */ __pyx_v_P = ((__pyx_t_11_gldraw_ogl_vec4 *)(&((__pyx_v_11_glarea_ogl_renderdata.projection_matrix[0])[0]))); /* "_glarea_ogl.pyx":865 * #P = renderdata.projection_matrix * # u = P^-1 * v * u0 = 1 / P[0][0] * v0 # <<<<<<<<<<<<<< * u1 = 1 / P[1][1] * v1 * u2 = 1 / P[2][3] */ if (unlikely(((__pyx_v_P[0])[0]) == 0)) { #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif PyErr_SetString(PyExc_ZeroDivisionError, "float division"); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif __PYX_ERR(0, 865, __pyx_L1_error) } __pyx_v_u0 = ((1.0 / ((__pyx_v_P[0])[0])) * __pyx_v_v0); /* "_glarea_ogl.pyx":866 * # u = P^-1 * v * u0 = 1 / P[0][0] * v0 * u1 = 1 / P[1][1] * v1 # <<<<<<<<<<<<<< * u2 = 1 / P[2][3] * #assert u2 == -1 */ if (unlikely(((__pyx_v_P[1])[1]) == 0)) { #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif PyErr_SetString(PyExc_ZeroDivisionError, "float division"); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif __PYX_ERR(0, 866, __pyx_L1_error) } __pyx_v_u1 = ((1.0 / ((__pyx_v_P[1])[1])) * __pyx_v_v1); /* "_glarea_ogl.pyx":867 * u0 = 1 / P[0][0] * v0 * u1 = 1 / P[1][1] * v1 * u2 = 1 / P[2][3] # <<<<<<<<<<<<<< * #assert u2 == -1 * u3 = - P[2][2] / P[3][2] / P[2][3] */ if (unlikely(((__pyx_v_P[2])[3]) == 0)) { #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif PyErr_SetString(PyExc_ZeroDivisionError, "float division"); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif __PYX_ERR(0, 867, __pyx_L1_error) } __pyx_v_u2 = (1.0 / ((__pyx_v_P[2])[3])); /* "_glarea_ogl.pyx":869 * u2 = 1 / P[2][3] * #assert u2 == -1 * u3 = - P[2][2] / P[3][2] / P[2][3] # <<<<<<<<<<<<<< * * # MT * MT^-1 = I */ __pyx_t_1 = (-((__pyx_v_P[2])[2])); if (unlikely(((__pyx_v_P[3])[2]) == 0)) { #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif PyErr_SetString(PyExc_ZeroDivisionError, "float division"); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif __PYX_ERR(0, 869, __pyx_L1_error) } __pyx_t_2 = (__pyx_t_1 / ((__pyx_v_P[3])[2])); if (unlikely(((__pyx_v_P[2])[3]) == 0)) { #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif PyErr_SetString(PyExc_ZeroDivisionError, "float division"); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif __PYX_ERR(0, 869, __pyx_L1_error) } __pyx_v_u3 = (__pyx_t_2 / ((__pyx_v_P[2])[3])); /* "_glarea_ogl.pyx":876 * # f g h 0 c e h 0 0 0 1 0 W = -hz * # 0 0 z 1 U V W 1 0 0 0 1 * MT = &renderdata.modelview_matrix[0][0] #px/ # <<<<<<<<<<<<<< * #MT = renderdata.modelview_matrix * # v = M^-1 * u */ __pyx_v_MT = ((__pyx_t_11_gldraw_ogl_vec4 *)(&((__pyx_v_11_glarea_ogl_renderdata.modelview_matrix[0])[0]))); /* "_glarea_ogl.pyx":879 * #MT = renderdata.modelview_matrix * # v = M^-1 * u * v0 = MT[0][0]*u0 + MT[0][1]*u1 + MT[0][2]*u2 - MT[0][2] * MT[3][2]*u3 # <<<<<<<<<<<<<< * v1 = MT[1][0]*u0 + MT[1][1]*u1 + MT[1][2]*u2 - MT[1][2] * MT[3][2]*u3 * v2 = MT[2][0]*u0 + MT[2][1]*u1 + MT[2][2]*u2 - MT[2][2] * MT[3][2]*u3 */ __pyx_v_v0 = ((((((__pyx_v_MT[0])[0]) * __pyx_v_u0) + (((__pyx_v_MT[0])[1]) * __pyx_v_u1)) + (((__pyx_v_MT[0])[2]) * __pyx_v_u2)) - ((((__pyx_v_MT[0])[2]) * ((__pyx_v_MT[3])[2])) * __pyx_v_u3)); /* "_glarea_ogl.pyx":880 * # v = M^-1 * u * v0 = MT[0][0]*u0 + MT[0][1]*u1 + MT[0][2]*u2 - MT[0][2] * MT[3][2]*u3 * v1 = MT[1][0]*u0 + MT[1][1]*u1 + MT[1][2]*u2 - MT[1][2] * MT[3][2]*u3 # <<<<<<<<<<<<<< * v2 = MT[2][0]*u0 + MT[2][1]*u1 + MT[2][2]*u2 - MT[2][2] * MT[3][2]*u3 * #v3 = u3 */ __pyx_v_v1 = ((((((__pyx_v_MT[1])[0]) * __pyx_v_u0) + (((__pyx_v_MT[1])[1]) * __pyx_v_u1)) + (((__pyx_v_MT[1])[2]) * __pyx_v_u2)) - ((((__pyx_v_MT[1])[2]) * ((__pyx_v_MT[3])[2])) * __pyx_v_u3)); /* "_glarea_ogl.pyx":881 * v0 = MT[0][0]*u0 + MT[0][1]*u1 + MT[0][2]*u2 - MT[0][2] * MT[3][2]*u3 * v1 = MT[1][0]*u0 + MT[1][1]*u1 + MT[1][2]*u2 - MT[1][2] * MT[3][2]*u3 * v2 = MT[2][0]*u0 + MT[2][1]*u1 + MT[2][2]*u2 - MT[2][2] * MT[3][2]*u3 # <<<<<<<<<<<<<< * #v3 = u3 * */ __pyx_v_v2 = ((((((__pyx_v_MT[2])[0]) * __pyx_v_u0) + (((__pyx_v_MT[2])[1]) * __pyx_v_u1)) + (((__pyx_v_MT[2])[2]) * __pyx_v_u2)) - ((((__pyx_v_MT[2])[2]) * ((__pyx_v_MT[3])[2])) * __pyx_v_u3)); /* "_glarea_ogl.pyx":884 * #v3 = u3 * * mvect[0] = v0 / u3 # <<<<<<<<<<<<<< * mvect[1] = v1 / u3 * mvect[2] = v2 / u3 */ if (unlikely(__pyx_v_u3 == 0)) { #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif PyErr_SetString(PyExc_ZeroDivisionError, "float division"); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif __PYX_ERR(0, 884, __pyx_L1_error) } (__pyx_v_mvect[0]) = (__pyx_v_v0 / __pyx_v_u3); /* "_glarea_ogl.pyx":885 * * mvect[0] = v0 / u3 * mvect[1] = v1 / u3 # <<<<<<<<<<<<<< * mvect[2] = v2 / u3 * */ if (unlikely(__pyx_v_u3 == 0)) { #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif PyErr_SetString(PyExc_ZeroDivisionError, "float division"); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif __PYX_ERR(0, 885, __pyx_L1_error) } (__pyx_v_mvect[1]) = (__pyx_v_v1 / __pyx_v_u3); /* "_glarea_ogl.pyx":886 * mvect[0] = v0 / u3 * mvect[1] = v1 / u3 * mvect[2] = v2 / u3 # <<<<<<<<<<<<<< * * def get_cursor_angle(d): */ if (unlikely(__pyx_v_u3 == 0)) { #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif PyErr_SetString(PyExc_ZeroDivisionError, "float division"); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif __PYX_ERR(0, 886, __pyx_L1_error) } (__pyx_v_mvect[2]) = (__pyx_v_v2 / __pyx_v_u3); /* "_glarea_ogl.pyx":847 * * ##pxm-FUNC P nogil * cdef void _viewport_to_modelview(int *vvect, float *mvect) nogil: # <<<<<<<<<<<<<< * cdef gldraw.vec4 *MT #px+ * cdef gldraw.vec4 *P #px+ */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_WriteUnraisable("_glarea_ogl._viewport_to_modelview", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 1); __pyx_L0:; } /* "_glarea_ogl.pyx":888 * mvect[2] = v2 / u3 * * def get_cursor_angle(d): # <<<<<<<<<<<<<< * cdef float angle #px+ * cdef int i #px+ */ /* Python wrapper */ static PyObject *__pyx_pw_11_glarea_ogl_33get_cursor_angle(PyObject *__pyx_self, PyObject *__pyx_v_d); /*proto*/ static PyMethodDef __pyx_mdef_11_glarea_ogl_33get_cursor_angle = {"get_cursor_angle", (PyCFunction)__pyx_pw_11_glarea_ogl_33get_cursor_angle, METH_O, 0}; static PyObject *__pyx_pw_11_glarea_ogl_33get_cursor_angle(PyObject *__pyx_self, PyObject *__pyx_v_d) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("get_cursor_angle (wrapper)", 0); __pyx_r = __pyx_pf_11_glarea_ogl_32get_cursor_angle(__pyx_self, ((PyObject *)__pyx_v_d)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_11_glarea_ogl_32get_cursor_angle(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_d) { float __pyx_v_angle; int __pyx_v_i; float __pyx_v_x; float __pyx_v_y; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; float __pyx_t_5; double __pyx_t_6; __Pyx_RefNannySetupContext("get_cursor_angle", 0); /* "_glarea_ogl.pyx":892 * cdef int i #px+ * cdef float x, y #px+ * renderdata.debug_viewport1[0] = uidata.pick_x # <<<<<<<<<<<<<< * renderdata.debug_viewport1[1] = uidata.pick_y * _viewport_to_modelview(renderdata.debug_viewport1, renderdata.debug_modelview1) */ __pyx_t_1 = __pyx_v_11_glarea_ogl_uidata.pick_x; (__pyx_v_11_glarea_ogl_renderdata.debug_viewport1[0]) = __pyx_t_1; /* "_glarea_ogl.pyx":893 * cdef float x, y #px+ * renderdata.debug_viewport1[0] = uidata.pick_x * renderdata.debug_viewport1[1] = uidata.pick_y # <<<<<<<<<<<<<< * _viewport_to_modelview(renderdata.debug_viewport1, renderdata.debug_modelview1) * for i in range(3): */ __pyx_t_1 = __pyx_v_11_glarea_ogl_uidata.pick_y; (__pyx_v_11_glarea_ogl_renderdata.debug_viewport1[1]) = __pyx_t_1; /* "_glarea_ogl.pyx":894 * renderdata.debug_viewport1[0] = uidata.pick_x * renderdata.debug_viewport1[1] = uidata.pick_y * _viewport_to_modelview(renderdata.debug_viewport1, renderdata.debug_modelview1) # <<<<<<<<<<<<<< * for i in range(3): * renderdata.debug_modelview2[i] = d[i] + renderdata.debug_modelview1[i] */ __pyx_f_11_glarea_ogl__viewport_to_modelview(__pyx_v_11_glarea_ogl_renderdata.debug_viewport1, __pyx_v_11_glarea_ogl_renderdata.debug_modelview1); /* "_glarea_ogl.pyx":895 * renderdata.debug_viewport1[1] = uidata.pick_y * _viewport_to_modelview(renderdata.debug_viewport1, renderdata.debug_modelview1) * for i in range(3): # <<<<<<<<<<<<<< * renderdata.debug_modelview2[i] = d[i] + renderdata.debug_modelview1[i] * _modelview_to_viewport(renderdata.debug_modelview2, renderdata.debug_viewport2) */ for (__pyx_t_1 = 0; __pyx_t_1 < 3; __pyx_t_1+=1) { __pyx_v_i = __pyx_t_1; /* "_glarea_ogl.pyx":896 * _viewport_to_modelview(renderdata.debug_viewport1, renderdata.debug_modelview1) * for i in range(3): * renderdata.debug_modelview2[i] = d[i] + renderdata.debug_modelview1[i] # <<<<<<<<<<<<<< * _modelview_to_viewport(renderdata.debug_modelview2, renderdata.debug_viewport2) * x = renderdata.debug_viewport1[0] - renderdata.debug_viewport2[0] */ __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_d, __pyx_v_i, int, 1, __Pyx_PyInt_From_int, 0, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 896, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyFloat_FromDouble((__pyx_v_11_glarea_ogl_renderdata.debug_modelview1[__pyx_v_i])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 896, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyNumber_Add(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 896, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_5 = __pyx_PyFloat_AsFloat(__pyx_t_4); if (unlikely((__pyx_t_5 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 896, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; (__pyx_v_11_glarea_ogl_renderdata.debug_modelview2[__pyx_v_i]) = __pyx_t_5; } /* "_glarea_ogl.pyx":897 * for i in range(3): * renderdata.debug_modelview2[i] = d[i] + renderdata.debug_modelview1[i] * _modelview_to_viewport(renderdata.debug_modelview2, renderdata.debug_viewport2) # <<<<<<<<<<<<<< * x = renderdata.debug_viewport1[0] - renderdata.debug_viewport2[0] * y = renderdata.debug_viewport1[1] - renderdata.debug_viewport2[1] */ __pyx_f_11_glarea_ogl__modelview_to_viewport(__pyx_v_11_glarea_ogl_renderdata.debug_modelview2, __pyx_v_11_glarea_ogl_renderdata.debug_viewport2); /* "_glarea_ogl.pyx":898 * renderdata.debug_modelview2[i] = d[i] + renderdata.debug_modelview1[i] * _modelview_to_viewport(renderdata.debug_modelview2, renderdata.debug_viewport2) * x = renderdata.debug_viewport1[0] - renderdata.debug_viewport2[0] # <<<<<<<<<<<<<< * y = renderdata.debug_viewport1[1] - renderdata.debug_viewport2[1] * angle = atan2(x, y) * 180.0 / M_PI */ __pyx_v_x = ((__pyx_v_11_glarea_ogl_renderdata.debug_viewport1[0]) - (__pyx_v_11_glarea_ogl_renderdata.debug_viewport2[0])); /* "_glarea_ogl.pyx":899 * _modelview_to_viewport(renderdata.debug_modelview2, renderdata.debug_viewport2) * x = renderdata.debug_viewport1[0] - renderdata.debug_viewport2[0] * y = renderdata.debug_viewport1[1] - renderdata.debug_viewport2[1] # <<<<<<<<<<<<<< * angle = atan2(x, y) * 180.0 / M_PI * return angle */ __pyx_v_y = ((__pyx_v_11_glarea_ogl_renderdata.debug_viewport1[1]) - (__pyx_v_11_glarea_ogl_renderdata.debug_viewport2[1])); /* "_glarea_ogl.pyx":900 * x = renderdata.debug_viewport1[0] - renderdata.debug_viewport2[0] * y = renderdata.debug_viewport1[1] - renderdata.debug_viewport2[1] * angle = atan2(x, y) * 180.0 / M_PI # <<<<<<<<<<<<<< * return angle * */ __pyx_t_6 = (atan2(__pyx_v_x, __pyx_v_y) * 180.0); if (unlikely(M_PI == 0)) { PyErr_SetString(PyExc_ZeroDivisionError, "float division"); __PYX_ERR(0, 900, __pyx_L1_error) } __pyx_v_angle = (__pyx_t_6 / M_PI); /* "_glarea_ogl.pyx":901 * y = renderdata.debug_viewport1[1] - renderdata.debug_viewport2[1] * angle = atan2(x, y) * 180.0 / M_PI * return angle # <<<<<<<<<<<<<< * * */ __Pyx_XDECREF(__pyx_r); __pyx_t_4 = PyFloat_FromDouble(__pyx_v_angle); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 901, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_r = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L0; /* "_glarea_ogl.pyx":888 * mvect[2] = v2 / u3 * * def get_cursor_angle(d): # <<<<<<<<<<<<<< * cdef float angle #px+ * cdef int i #px+ */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("_glarea_ogl.get_cursor_angle", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_glarea_ogl.pyx":907 * * ##pxm-FUNC P nogil * cdef void _gl_print_shader_log(GLuint shader) nogil: # <<<<<<<<<<<<<< * cdef GLint log_len #px+ * cdef GLsizei length #px+ */ static void __pyx_f_11_glarea_ogl__gl_print_shader_log(GLuint __pyx_v_shader) { GLint __pyx_v_log_len; GLsizei __pyx_v_length; char __pyx_v_log[0x400]; int __pyx_t_1; /* "_glarea_ogl.pyx":911 * cdef GLsizei length #px+ * cdef char log[1024] #px+ * glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &log_len) #px/ # <<<<<<<<<<<<<< * #log_len = glGetShaderiv(shader, GL_INFO_LOG_LENGTH) * if log_len > 0: */ glGetShaderiv(__pyx_v_shader, GL_INFO_LOG_LENGTH, (&__pyx_v_log_len)); /* "_glarea_ogl.pyx":913 * glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &log_len) #px/ * #log_len = glGetShaderiv(shader, GL_INFO_LOG_LENGTH) * if log_len > 0: # <<<<<<<<<<<<<< * puts('==== shader info log:') * glGetShaderInfoLog(shader, 1023, &length, log) #px/ */ __pyx_t_1 = ((__pyx_v_log_len > 0) != 0); if (__pyx_t_1) { /* "_glarea_ogl.pyx":914 * #log_len = glGetShaderiv(shader, GL_INFO_LOG_LENGTH) * if log_len > 0: * puts('==== shader info log:') # <<<<<<<<<<<<<< * glGetShaderInfoLog(shader, 1023, &length, log) #px/ * #log = glGetShaderInfoLog(shader).decode('utf-8') */ puts(((char const *)"==== shader info log:")); /* "_glarea_ogl.pyx":915 * if log_len > 0: * puts('==== shader info log:') * glGetShaderInfoLog(shader, 1023, &length, log) #px/ # <<<<<<<<<<<<<< * #log = glGetShaderInfoLog(shader).decode('utf-8') * printf('%s', log) */ glGetShaderInfoLog(__pyx_v_shader, 0x3FF, (&__pyx_v_length), __pyx_v_log); /* "_glarea_ogl.pyx":917 * glGetShaderInfoLog(shader, 1023, &length, log) #px/ * #log = glGetShaderInfoLog(shader).decode('utf-8') * printf('%s', log) # <<<<<<<<<<<<<< * puts('====') * else: */ printf(((char const *)"%s"), __pyx_v_log); /* "_glarea_ogl.pyx":918 * #log = glGetShaderInfoLog(shader).decode('utf-8') * printf('%s', log) * puts('====') # <<<<<<<<<<<<<< * else: * puts('==== empty shader info log') */ puts(((char const *)"====")); /* "_glarea_ogl.pyx":913 * glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &log_len) #px/ * #log_len = glGetShaderiv(shader, GL_INFO_LOG_LENGTH) * if log_len > 0: # <<<<<<<<<<<<<< * puts('==== shader info log:') * glGetShaderInfoLog(shader, 1023, &length, log) #px/ */ goto __pyx_L3; } /* "_glarea_ogl.pyx":920 * puts('====') * else: * puts('==== empty shader info log') # <<<<<<<<<<<<<< * * ##pxm-FUNC P nogil */ /*else*/ { puts(((char const *)"==== empty shader info log")); } __pyx_L3:; /* "_glarea_ogl.pyx":907 * * ##pxm-FUNC P nogil * cdef void _gl_print_shader_log(GLuint shader) nogil: # <<<<<<<<<<<<<< * cdef GLint log_len #px+ * cdef GLsizei length #px+ */ /* function exit code */ } /* "_glarea_ogl.pyx":923 * * ##pxm-FUNC P nogil * cdef void _gl_print_program_log(GLuint program) nogil: # <<<<<<<<<<<<<< * cdef GLint log_len #px+ * cdef GLsizei length #px+ */ static void __pyx_f_11_glarea_ogl__gl_print_program_log(GLuint __pyx_v_program) { GLint __pyx_v_log_len; GLsizei __pyx_v_length; char __pyx_v_log[0x400]; int __pyx_t_1; /* "_glarea_ogl.pyx":927 * cdef GLsizei length #px+ * cdef char log[1024] #px+ * glGetProgramiv(program, GL_INFO_LOG_LENGTH, &log_len) #px/ # <<<<<<<<<<<<<< * #log_len = glGetProgramiv(program, GL_INFO_LOG_LENGTH) * if log_len > 0: */ glGetProgramiv(__pyx_v_program, GL_INFO_LOG_LENGTH, (&__pyx_v_log_len)); /* "_glarea_ogl.pyx":929 * glGetProgramiv(program, GL_INFO_LOG_LENGTH, &log_len) #px/ * #log_len = glGetProgramiv(program, GL_INFO_LOG_LENGTH) * if log_len > 0: # <<<<<<<<<<<<<< * puts('==== program info log:') * glGetProgramInfoLog(program, 1023, &length, log) #px/ */ __pyx_t_1 = ((__pyx_v_log_len > 0) != 0); if (__pyx_t_1) { /* "_glarea_ogl.pyx":930 * #log_len = glGetProgramiv(program, GL_INFO_LOG_LENGTH) * if log_len > 0: * puts('==== program info log:') # <<<<<<<<<<<<<< * glGetProgramInfoLog(program, 1023, &length, log) #px/ * #log = glGetProgramInfoLog(program).decode('utf-8') */ puts(((char const *)"==== program info log:")); /* "_glarea_ogl.pyx":931 * if log_len > 0: * puts('==== program info log:') * glGetProgramInfoLog(program, 1023, &length, log) #px/ # <<<<<<<<<<<<<< * #log = glGetProgramInfoLog(program).decode('utf-8') * printf('%s', log) */ glGetProgramInfoLog(__pyx_v_program, 0x3FF, (&__pyx_v_length), __pyx_v_log); /* "_glarea_ogl.pyx":933 * glGetProgramInfoLog(program, 1023, &length, log) #px/ * #log = glGetProgramInfoLog(program).decode('utf-8') * printf('%s', log) # <<<<<<<<<<<<<< * puts('====') * else: */ printf(((char const *)"%s"), __pyx_v_log); /* "_glarea_ogl.pyx":934 * #log = glGetProgramInfoLog(program).decode('utf-8') * printf('%s', log) * puts('====') # <<<<<<<<<<<<<< * else: * puts('==== empty program info log') */ puts(((char const *)"====")); /* "_glarea_ogl.pyx":929 * glGetProgramiv(program, GL_INFO_LOG_LENGTH, &log_len) #px/ * #log_len = glGetProgramiv(program, GL_INFO_LOG_LENGTH) * if log_len > 0: # <<<<<<<<<<<<<< * puts('==== program info log:') * glGetProgramInfoLog(program, 1023, &length, log) #px/ */ goto __pyx_L3; } /* "_glarea_ogl.pyx":936 * puts('====') * else: * puts('==== empty program info log') # <<<<<<<<<<<<<< * * ##pxm-FUNC P nogil */ /*else*/ { puts(((char const *)"==== empty program info log")); } __pyx_L3:; /* "_glarea_ogl.pyx":923 * * ##pxm-FUNC P nogil * cdef void _gl_print_program_log(GLuint program) nogil: # <<<<<<<<<<<<<< * cdef GLint log_len #px+ * cdef GLsizei length #px+ */ /* function exit code */ } /* "_glarea_ogl.pyx":939 * * ##pxm-FUNC P nogil * cdef GLuint _gl_create_compiled_shader(GLenum shadertype, char *source) nogil: # <<<<<<<<<<<<<< * cdef GLuint shader #px+ * cdef const_GLchar_ptr pchar #px+ */ static GLuint __pyx_f_11_glarea_ogl__gl_create_compiled_shader(GLenum __pyx_v_shadertype, char *__pyx_v_source) { GLuint __pyx_v_shader; const GLchar* __pyx_v_pchar; GLint __pyx_v_compile_status; GLuint __pyx_r; int __pyx_t_1; /* "_glarea_ogl.pyx":944 * cdef GLint compile_status #px+ * * shader = glCreateShader(shadertype) # <<<<<<<<<<<<<< * if shader == 0: * puts('Failed to create shader') */ __pyx_v_shader = glCreateShader(__pyx_v_shadertype); /* "_glarea_ogl.pyx":945 * * shader = glCreateShader(shadertype) * if shader == 0: # <<<<<<<<<<<<<< * puts('Failed to create shader') * return 0 */ __pyx_t_1 = ((__pyx_v_shader == 0) != 0); if (__pyx_t_1) { /* "_glarea_ogl.pyx":946 * shader = glCreateShader(shadertype) * if shader == 0: * puts('Failed to create shader') # <<<<<<<<<<<<<< * return 0 * pchar = source #px+ */ puts(((char const *)"Failed to create shader")); /* "_glarea_ogl.pyx":947 * if shader == 0: * puts('Failed to create shader') * return 0 # <<<<<<<<<<<<<< * pchar = source #px+ * glShaderSource(shader, 1, &pchar, NULL) #px/ */ __pyx_r = 0; goto __pyx_L0; /* "_glarea_ogl.pyx":945 * * shader = glCreateShader(shadertype) * if shader == 0: # <<<<<<<<<<<<<< * puts('Failed to create shader') * return 0 */ } /* "_glarea_ogl.pyx":948 * puts('Failed to create shader') * return 0 * pchar = source #px+ # <<<<<<<<<<<<<< * glShaderSource(shader, 1, &pchar, NULL) #px/ * #glShaderSource(shader, source.decode('utf-8')) # PyOpenGL needs str currently */ __pyx_v_pchar = ((const GLchar*)((char *)__pyx_v_source)); /* "_glarea_ogl.pyx":949 * return 0 * pchar = source #px+ * glShaderSource(shader, 1, &pchar, NULL) #px/ # <<<<<<<<<<<<<< * #glShaderSource(shader, source.decode('utf-8')) # PyOpenGL needs str currently * glCompileShader(shader) */ glShaderSource(__pyx_v_shader, 1, (&__pyx_v_pchar), NULL); /* "_glarea_ogl.pyx":951 * glShaderSource(shader, 1, &pchar, NULL) #px/ * #glShaderSource(shader, source.decode('utf-8')) # PyOpenGL needs str currently * glCompileShader(shader) # <<<<<<<<<<<<<< * if debug & DEBUG_MSGGL: * glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &compile_status) #px/ */ glCompileShader(__pyx_v_shader); /* "_glarea_ogl.pyx":952 * #glShaderSource(shader, source.decode('utf-8')) # PyOpenGL needs str currently * glCompileShader(shader) * if debug & DEBUG_MSGGL: # <<<<<<<<<<<<<< * glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &compile_status) #px/ * #compile_status = glGetShaderiv(shader, GL_INFO_LOG_LENGTH) */ __pyx_t_1 = ((__pyx_v_11_glarea_ogl_debug & __pyx_e_11_glarea_ogl_DEBUG_MSGGL) != 0); if (__pyx_t_1) { /* "_glarea_ogl.pyx":953 * glCompileShader(shader) * if debug & DEBUG_MSGGL: * glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &compile_status) #px/ # <<<<<<<<<<<<<< * #compile_status = glGetShaderiv(shader, GL_INFO_LOG_LENGTH) * printf('GL_INFO_LOG_LENGTH %d\n', compile_status) */ glGetShaderiv(__pyx_v_shader, GL_INFO_LOG_LENGTH, (&__pyx_v_compile_status)); /* "_glarea_ogl.pyx":955 * glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &compile_status) #px/ * #compile_status = glGetShaderiv(shader, GL_INFO_LOG_LENGTH) * printf('GL_INFO_LOG_LENGTH %d\n', compile_status) # <<<<<<<<<<<<<< * compile_status = compile_status <= 1 * if compile_status: */ printf(((char const *)"GL_INFO_LOG_LENGTH %d\n"), __pyx_v_compile_status); /* "_glarea_ogl.pyx":956 * #compile_status = glGetShaderiv(shader, GL_INFO_LOG_LENGTH) * printf('GL_INFO_LOG_LENGTH %d\n', compile_status) * compile_status = compile_status <= 1 # <<<<<<<<<<<<<< * if compile_status: * glGetShaderiv(shader, GL_COMPILE_STATUS, &compile_status) #px/ */ __pyx_v_compile_status = (__pyx_v_compile_status <= 1); /* "_glarea_ogl.pyx":957 * printf('GL_INFO_LOG_LENGTH %d\n', compile_status) * compile_status = compile_status <= 1 * if compile_status: # <<<<<<<<<<<<<< * glGetShaderiv(shader, GL_COMPILE_STATUS, &compile_status) #px/ * #compile_status = glGetShaderiv(shader, GL_COMPILE_STATUS) */ __pyx_t_1 = (__pyx_v_compile_status != 0); if (__pyx_t_1) { /* "_glarea_ogl.pyx":958 * compile_status = compile_status <= 1 * if compile_status: * glGetShaderiv(shader, GL_COMPILE_STATUS, &compile_status) #px/ # <<<<<<<<<<<<<< * #compile_status = glGetShaderiv(shader, GL_COMPILE_STATUS) * else: */ glGetShaderiv(__pyx_v_shader, GL_COMPILE_STATUS, (&__pyx_v_compile_status)); /* "_glarea_ogl.pyx":957 * printf('GL_INFO_LOG_LENGTH %d\n', compile_status) * compile_status = compile_status <= 1 * if compile_status: # <<<<<<<<<<<<<< * glGetShaderiv(shader, GL_COMPILE_STATUS, &compile_status) #px/ * #compile_status = glGetShaderiv(shader, GL_COMPILE_STATUS) */ } /* "_glarea_ogl.pyx":952 * #glShaderSource(shader, source.decode('utf-8')) # PyOpenGL needs str currently * glCompileShader(shader) * if debug & DEBUG_MSGGL: # <<<<<<<<<<<<<< * glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &compile_status) #px/ * #compile_status = glGetShaderiv(shader, GL_INFO_LOG_LENGTH) */ goto __pyx_L4; } /* "_glarea_ogl.pyx":961 * #compile_status = glGetShaderiv(shader, GL_COMPILE_STATUS) * else: * glGetShaderiv(shader, GL_COMPILE_STATUS, &compile_status) #px/ # <<<<<<<<<<<<<< * #compile_status = glGetShaderiv(shader, GL_COMPILE_STATUS) * if not compile_status: */ /*else*/ { glGetShaderiv(__pyx_v_shader, GL_COMPILE_STATUS, (&__pyx_v_compile_status)); } __pyx_L4:; /* "_glarea_ogl.pyx":963 * glGetShaderiv(shader, GL_COMPILE_STATUS, &compile_status) #px/ * #compile_status = glGetShaderiv(shader, GL_COMPILE_STATUS) * if not compile_status: # <<<<<<<<<<<<<< * _gl_print_shader_log(shader) * return shader */ __pyx_t_1 = ((!(__pyx_v_compile_status != 0)) != 0); if (__pyx_t_1) { /* "_glarea_ogl.pyx":964 * #compile_status = glGetShaderiv(shader, GL_COMPILE_STATUS) * if not compile_status: * _gl_print_shader_log(shader) # <<<<<<<<<<<<<< * return shader * */ __pyx_f_11_glarea_ogl__gl_print_shader_log(__pyx_v_shader); /* "_glarea_ogl.pyx":963 * glGetShaderiv(shader, GL_COMPILE_STATUS, &compile_status) #px/ * #compile_status = glGetShaderiv(shader, GL_COMPILE_STATUS) * if not compile_status: # <<<<<<<<<<<<<< * _gl_print_shader_log(shader) * return shader */ } /* "_glarea_ogl.pyx":965 * if not compile_status: * _gl_print_shader_log(shader) * return shader # <<<<<<<<<<<<<< * * ##pxm-FUNC P nogil */ __pyx_r = __pyx_v_shader; goto __pyx_L0; /* "_glarea_ogl.pyx":939 * * ##pxm-FUNC P nogil * cdef GLuint _gl_create_compiled_shader(GLenum shadertype, char *source) nogil: # <<<<<<<<<<<<<< * cdef GLuint shader #px+ * cdef const_GLchar_ptr pchar #px+ */ /* function exit code */ __pyx_L0:; return __pyx_r; } /* "_glarea_ogl.pyx":968 * * ##pxm-FUNC P nogil * cdef GLint _get_program_iv(GLuint program, GLenum pname) nogil: # <<<<<<<<<<<<<< * cdef GLint param #px+ * glGetProgramiv(program, pname, ¶m) #px/ */ static GLint __pyx_f_11_glarea_ogl__get_program_iv(GLuint __pyx_v_program, GLenum __pyx_v_pname) { GLint __pyx_v_param; GLint __pyx_r; /* "_glarea_ogl.pyx":970 * cdef GLint _get_program_iv(GLuint program, GLenum pname) nogil: * cdef GLint param #px+ * glGetProgramiv(program, pname, ¶m) #px/ # <<<<<<<<<<<<<< * #param = int(glGetProgramiv(program, pname)) * return param */ glGetProgramiv(__pyx_v_program, __pyx_v_pname, (&__pyx_v_param)); /* "_glarea_ogl.pyx":972 * glGetProgramiv(program, pname, ¶m) #px/ * #param = int(glGetProgramiv(program, pname)) * return param # <<<<<<<<<<<<<< * * ##pxm-FUNC P nogil */ __pyx_r = __pyx_v_param; goto __pyx_L0; /* "_glarea_ogl.pyx":968 * * ##pxm-FUNC P nogil * cdef GLint _get_program_iv(GLuint program, GLenum pname) nogil: # <<<<<<<<<<<<<< * cdef GLint param #px+ * glGetProgramiv(program, pname, ¶m) #px/ */ /* function exit code */ __pyx_L0:; return __pyx_r; } /* "_glarea_ogl.pyx":975 * * ##pxm-FUNC P nogil * cdef GLint _gl_print_program_info(GLuint program) nogil: # <<<<<<<<<<<<<< * cdef GLint link_status, info_log_length, param, aaml, auml #px+ * cdef int i #px+ */ static GLint __pyx_f_11_glarea_ogl__gl_print_program_info(GLuint __pyx_v_program) { GLint __pyx_v_link_status; GLint __pyx_v_info_log_length; GLint __pyx_v_param; GLint __pyx_v_aaml; GLint __pyx_v_auml; int __pyx_v_i; GLsizei __pyx_v_alength; GLint __pyx_v_asize; GLint __pyx_v_location; GLenum __pyx_v_atype; char __pyx_v_aname[0x400]; GLint __pyx_r; GLint __pyx_t_1; int __pyx_t_2; int __pyx_t_3; /* "_glarea_ogl.pyx":983 * cdef char aname[1024] #px+ * * printf('shader program info %d\n', program) # <<<<<<<<<<<<<< * glValidateProgram(program) * printf(' delete status %d\n', _get_program_iv(program, GL_DELETE_STATUS)) */ printf(((char const *)"shader program info %d\n"), __pyx_v_program); /* "_glarea_ogl.pyx":984 * * printf('shader program info %d\n', program) * glValidateProgram(program) # <<<<<<<<<<<<<< * printf(' delete status %d\n', _get_program_iv(program, GL_DELETE_STATUS)) * link_status = _get_program_iv(program, GL_LINK_STATUS) */ glValidateProgram(__pyx_v_program); /* "_glarea_ogl.pyx":985 * printf('shader program info %d\n', program) * glValidateProgram(program) * printf(' delete status %d\n', _get_program_iv(program, GL_DELETE_STATUS)) # <<<<<<<<<<<<<< * link_status = _get_program_iv(program, GL_LINK_STATUS) * printf(' link status %d\n', link_status) */ printf(((char const *)" delete status %d\n"), __pyx_f_11_glarea_ogl__get_program_iv(__pyx_v_program, GL_DELETE_STATUS)); /* "_glarea_ogl.pyx":986 * glValidateProgram(program) * printf(' delete status %d\n', _get_program_iv(program, GL_DELETE_STATUS)) * link_status = _get_program_iv(program, GL_LINK_STATUS) # <<<<<<<<<<<<<< * printf(' link status %d\n', link_status) * printf(' validate status %d\n', _get_program_iv(program, GL_VALIDATE_STATUS)) */ __pyx_v_link_status = __pyx_f_11_glarea_ogl__get_program_iv(__pyx_v_program, GL_LINK_STATUS); /* "_glarea_ogl.pyx":987 * printf(' delete status %d\n', _get_program_iv(program, GL_DELETE_STATUS)) * link_status = _get_program_iv(program, GL_LINK_STATUS) * printf(' link status %d\n', link_status) # <<<<<<<<<<<<<< * printf(' validate status %d\n', _get_program_iv(program, GL_VALIDATE_STATUS)) * info_log_length = _get_program_iv(program, GL_INFO_LOG_LENGTH) */ printf(((char const *)" link status %d\n"), __pyx_v_link_status); /* "_glarea_ogl.pyx":988 * link_status = _get_program_iv(program, GL_LINK_STATUS) * printf(' link status %d\n', link_status) * printf(' validate status %d\n', _get_program_iv(program, GL_VALIDATE_STATUS)) # <<<<<<<<<<<<<< * info_log_length = _get_program_iv(program, GL_INFO_LOG_LENGTH) * printf(' info log length %d\n', info_log_length) */ printf(((char const *)" validate status %d\n"), __pyx_f_11_glarea_ogl__get_program_iv(__pyx_v_program, GL_VALIDATE_STATUS)); /* "_glarea_ogl.pyx":989 * printf(' link status %d\n', link_status) * printf(' validate status %d\n', _get_program_iv(program, GL_VALIDATE_STATUS)) * info_log_length = _get_program_iv(program, GL_INFO_LOG_LENGTH) # <<<<<<<<<<<<<< * printf(' info log length %d\n', info_log_length) * printf(' attached shaders %d\n',_get_program_iv(program, GL_ATTACHED_SHADERS)) */ __pyx_v_info_log_length = __pyx_f_11_glarea_ogl__get_program_iv(__pyx_v_program, GL_INFO_LOG_LENGTH); /* "_glarea_ogl.pyx":990 * printf(' validate status %d\n', _get_program_iv(program, GL_VALIDATE_STATUS)) * info_log_length = _get_program_iv(program, GL_INFO_LOG_LENGTH) * printf(' info log length %d\n', info_log_length) # <<<<<<<<<<<<<< * printf(' attached shaders %d\n',_get_program_iv(program, GL_ATTACHED_SHADERS)) * aaml = _get_program_iv(program, GL_ACTIVE_ATTRIBUTE_MAX_LENGTH) */ printf(((char const *)" info log length %d\n"), __pyx_v_info_log_length); /* "_glarea_ogl.pyx":991 * info_log_length = _get_program_iv(program, GL_INFO_LOG_LENGTH) * printf(' info log length %d\n', info_log_length) * printf(' attached shaders %d\n',_get_program_iv(program, GL_ATTACHED_SHADERS)) # <<<<<<<<<<<<<< * aaml = _get_program_iv(program, GL_ACTIVE_ATTRIBUTE_MAX_LENGTH) * printf(' active attribute max length %d\n', aaml) */ printf(((char const *)" attached shaders %d\n"), __pyx_f_11_glarea_ogl__get_program_iv(__pyx_v_program, GL_ATTACHED_SHADERS)); /* "_glarea_ogl.pyx":992 * printf(' info log length %d\n', info_log_length) * printf(' attached shaders %d\n',_get_program_iv(program, GL_ATTACHED_SHADERS)) * aaml = _get_program_iv(program, GL_ACTIVE_ATTRIBUTE_MAX_LENGTH) # <<<<<<<<<<<<<< * printf(' active attribute max length %d\n', aaml) * auml = _get_program_iv(program, GL_ACTIVE_UNIFORM_MAX_LENGTH) */ __pyx_v_aaml = __pyx_f_11_glarea_ogl__get_program_iv(__pyx_v_program, GL_ACTIVE_ATTRIBUTE_MAX_LENGTH); /* "_glarea_ogl.pyx":993 * printf(' attached shaders %d\n',_get_program_iv(program, GL_ATTACHED_SHADERS)) * aaml = _get_program_iv(program, GL_ACTIVE_ATTRIBUTE_MAX_LENGTH) * printf(' active attribute max length %d\n', aaml) # <<<<<<<<<<<<<< * auml = _get_program_iv(program, GL_ACTIVE_UNIFORM_MAX_LENGTH) * printf(' active uniform max length %d\n', auml) */ printf(((char const *)" active attribute max length %d\n"), __pyx_v_aaml); /* "_glarea_ogl.pyx":994 * aaml = _get_program_iv(program, GL_ACTIVE_ATTRIBUTE_MAX_LENGTH) * printf(' active attribute max length %d\n', aaml) * auml = _get_program_iv(program, GL_ACTIVE_UNIFORM_MAX_LENGTH) # <<<<<<<<<<<<<< * printf(' active uniform max length %d\n', auml) * */ __pyx_v_auml = __pyx_f_11_glarea_ogl__get_program_iv(__pyx_v_program, GL_ACTIVE_UNIFORM_MAX_LENGTH); /* "_glarea_ogl.pyx":995 * printf(' active attribute max length %d\n', aaml) * auml = _get_program_iv(program, GL_ACTIVE_UNIFORM_MAX_LENGTH) * printf(' active uniform max length %d\n', auml) # <<<<<<<<<<<<<< * * glGetProgramiv(program, GL_ACTIVE_ATTRIBUTES, ¶m) #px/ */ printf(((char const *)" active uniform max length %d\n"), __pyx_v_auml); /* "_glarea_ogl.pyx":997 * printf(' active uniform max length %d\n', auml) * * glGetProgramiv(program, GL_ACTIVE_ATTRIBUTES, ¶m) #px/ # <<<<<<<<<<<<<< * #param = glGetProgramiv(program, GL_ACTIVE_ATTRIBUTES) * printf('active attributes %d:\n', param) */ glGetProgramiv(__pyx_v_program, GL_ACTIVE_ATTRIBUTES, (&__pyx_v_param)); /* "_glarea_ogl.pyx":999 * glGetProgramiv(program, GL_ACTIVE_ATTRIBUTES, ¶m) #px/ * #param = glGetProgramiv(program, GL_ACTIVE_ATTRIBUTES) * printf('active attributes %d:\n', param) # <<<<<<<<<<<<<< * for i in range(param): * glGetActiveAttrib(program, i, 1023, &alength, &asize, &atype, aname) #px/ */ printf(((char const *)"active attributes %d:\n"), __pyx_v_param); /* "_glarea_ogl.pyx":1000 * #param = glGetProgramiv(program, GL_ACTIVE_ATTRIBUTES) * printf('active attributes %d:\n', param) * for i in range(param): # <<<<<<<<<<<<<< * glGetActiveAttrib(program, i, 1023, &alength, &asize, &atype, aname) #px/ * #aname, asize, atype = glGetActiveAttrib(program, i); alength = len(aname) */ __pyx_t_1 = __pyx_v_param; for (__pyx_t_2 = 0; __pyx_t_2 < __pyx_t_1; __pyx_t_2+=1) { __pyx_v_i = __pyx_t_2; /* "_glarea_ogl.pyx":1001 * printf('active attributes %d:\n', param) * for i in range(param): * glGetActiveAttrib(program, i, 1023, &alength, &asize, &atype, aname) #px/ # <<<<<<<<<<<<<< * #aname, asize, atype = glGetActiveAttrib(program, i); alength = len(aname) * location = glGetAttribLocation(program, aname) */ glGetActiveAttrib(__pyx_v_program, __pyx_v_i, 0x3FF, (&__pyx_v_alength), (&__pyx_v_asize), (&__pyx_v_atype), __pyx_v_aname); /* "_glarea_ogl.pyx":1003 * glGetActiveAttrib(program, i, 1023, &alength, &asize, &atype, aname) #px/ * #aname, asize, atype = glGetActiveAttrib(program, i); alength = len(aname) * location = glGetAttribLocation(program, aname) # <<<<<<<<<<<<<< * printf(' %d %-*s length=%d size=%d type=%d location=%d\n', i, aaml+3, aname, alength, asize, atype, location) * */ __pyx_v_location = glGetAttribLocation(__pyx_v_program, __pyx_v_aname); /* "_glarea_ogl.pyx":1004 * #aname, asize, atype = glGetActiveAttrib(program, i); alength = len(aname) * location = glGetAttribLocation(program, aname) * printf(' %d %-*s length=%d size=%d type=%d location=%d\n', i, aaml+3, aname, alength, asize, atype, location) # <<<<<<<<<<<<<< * * glGetProgramiv(program, GL_ACTIVE_UNIFORMS, ¶m) #px/ */ printf(((char const *)" %d %-*s length=%d size=%d type=%d location=%d\n"), __pyx_v_i, (__pyx_v_aaml + 3), __pyx_v_aname, __pyx_v_alength, __pyx_v_asize, __pyx_v_atype, __pyx_v_location); } /* "_glarea_ogl.pyx":1006 * printf(' %d %-*s length=%d size=%d type=%d location=%d\n', i, aaml+3, aname, alength, asize, atype, location) * * glGetProgramiv(program, GL_ACTIVE_UNIFORMS, ¶m) #px/ # <<<<<<<<<<<<<< * #param = glGetProgramiv(program, GL_ACTIVE_UNIFORMS) * printf('active uniforms %d:\n', param) */ glGetProgramiv(__pyx_v_program, GL_ACTIVE_UNIFORMS, (&__pyx_v_param)); /* "_glarea_ogl.pyx":1008 * glGetProgramiv(program, GL_ACTIVE_UNIFORMS, ¶m) #px/ * #param = glGetProgramiv(program, GL_ACTIVE_UNIFORMS) * printf('active uniforms %d:\n', param) # <<<<<<<<<<<<<< * for i in range(param): * glGetActiveUniform(program, i, 1023, &alength, &asize, &atype, aname) #px/ */ printf(((char const *)"active uniforms %d:\n"), __pyx_v_param); /* "_glarea_ogl.pyx":1009 * #param = glGetProgramiv(program, GL_ACTIVE_UNIFORMS) * printf('active uniforms %d:\n', param) * for i in range(param): # <<<<<<<<<<<<<< * glGetActiveUniform(program, i, 1023, &alength, &asize, &atype, aname) #px/ * #aname, asize, atype = glGetActiveUniform(program, i); alength = len(aname) */ __pyx_t_1 = __pyx_v_param; for (__pyx_t_2 = 0; __pyx_t_2 < __pyx_t_1; __pyx_t_2+=1) { __pyx_v_i = __pyx_t_2; /* "_glarea_ogl.pyx":1010 * printf('active uniforms %d:\n', param) * for i in range(param): * glGetActiveUniform(program, i, 1023, &alength, &asize, &atype, aname) #px/ # <<<<<<<<<<<<<< * #aname, asize, atype = glGetActiveUniform(program, i); alength = len(aname) * location = glGetUniformLocation(program, aname) */ glGetActiveUniform(__pyx_v_program, __pyx_v_i, 0x3FF, (&__pyx_v_alength), (&__pyx_v_asize), (&__pyx_v_atype), __pyx_v_aname); /* "_glarea_ogl.pyx":1012 * glGetActiveUniform(program, i, 1023, &alength, &asize, &atype, aname) #px/ * #aname, asize, atype = glGetActiveUniform(program, i); alength = len(aname) * location = glGetUniformLocation(program, aname) # <<<<<<<<<<<<<< * printf(' %d %-*s length=%d size=%d type=%d location=%d\n', i, auml+3, aname, alength, asize, atype, location) * return link_status and info_log_length <= 1 */ __pyx_v_location = glGetUniformLocation(__pyx_v_program, __pyx_v_aname); /* "_glarea_ogl.pyx":1013 * #aname, asize, atype = glGetActiveUniform(program, i); alength = len(aname) * location = glGetUniformLocation(program, aname) * printf(' %d %-*s length=%d size=%d type=%d location=%d\n', i, auml+3, aname, alength, asize, atype, location) # <<<<<<<<<<<<<< * return link_status and info_log_length <= 1 * */ printf(((char const *)" %d %-*s length=%d size=%d type=%d location=%d\n"), __pyx_v_i, (__pyx_v_auml + 3), __pyx_v_aname, __pyx_v_alength, __pyx_v_asize, __pyx_v_atype, __pyx_v_location); } /* "_glarea_ogl.pyx":1014 * location = glGetUniformLocation(program, aname) * printf(' %d %-*s length=%d size=%d type=%d location=%d\n', i, auml+3, aname, alength, asize, atype, location) * return link_status and info_log_length <= 1 # <<<<<<<<<<<<<< * * ##pxm-FUNC P nogil */ if (__pyx_v_link_status) { } else { __pyx_t_1 = __pyx_v_link_status; goto __pyx_L7_bool_binop_done; } __pyx_t_3 = (__pyx_v_info_log_length <= 1); __pyx_t_1 = __pyx_t_3; __pyx_L7_bool_binop_done:; __pyx_r = __pyx_t_1; goto __pyx_L0; /* "_glarea_ogl.pyx":975 * * ##pxm-FUNC P nogil * cdef GLint _gl_print_program_info(GLuint program) nogil: # <<<<<<<<<<<<<< * cdef GLint link_status, info_log_length, param, aaml, auml #px+ * cdef int i #px+ */ /* function exit code */ __pyx_L0:; return __pyx_r; } /* "_glarea_ogl.pyx":1017 * * ##pxm-FUNC P nogil * cdef void _gl_program_add_shaders(GLuint program, char *vertex_source, char *fragment_source) nogil: # <<<<<<<<<<<<<< * cdef GLuint vertex_shader = 0, fragment_shader = 0 #px+ * cdef GLint link_status #px+ */ static void __pyx_f_11_glarea_ogl__gl_program_add_shaders(GLuint __pyx_v_program, char *__pyx_v_vertex_source, char *__pyx_v_fragment_source) { GLuint __pyx_v_vertex_shader; GLuint __pyx_v_fragment_shader; GLint __pyx_v_link_status; int __pyx_t_1; /* "_glarea_ogl.pyx":1018 * ##pxm-FUNC P nogil * cdef void _gl_program_add_shaders(GLuint program, char *vertex_source, char *fragment_source) nogil: * cdef GLuint vertex_shader = 0, fragment_shader = 0 #px+ # <<<<<<<<<<<<<< * cdef GLint link_status #px+ * */ __pyx_v_vertex_shader = 0; __pyx_v_fragment_shader = 0; /* "_glarea_ogl.pyx":1021 * cdef GLint link_status #px+ * * if debug & DEBUG_MSGGL: puts(' creating vertex shader') # <<<<<<<<<<<<<< * vertex_shader = _gl_create_compiled_shader(GL_VERTEX_SHADER, vertex_source) * if vertex_shader: */ __pyx_t_1 = ((__pyx_v_11_glarea_ogl_debug & __pyx_e_11_glarea_ogl_DEBUG_MSGGL) != 0); if (__pyx_t_1) { puts(((char const *)" creating vertex shader")); } /* "_glarea_ogl.pyx":1022 * * if debug & DEBUG_MSGGL: puts(' creating vertex shader') * vertex_shader = _gl_create_compiled_shader(GL_VERTEX_SHADER, vertex_source) # <<<<<<<<<<<<<< * if vertex_shader: * glAttachShader(program, vertex_shader) */ __pyx_v_vertex_shader = __pyx_f_11_glarea_ogl__gl_create_compiled_shader(GL_VERTEX_SHADER, __pyx_v_vertex_source); /* "_glarea_ogl.pyx":1023 * if debug & DEBUG_MSGGL: puts(' creating vertex shader') * vertex_shader = _gl_create_compiled_shader(GL_VERTEX_SHADER, vertex_source) * if vertex_shader: # <<<<<<<<<<<<<< * glAttachShader(program, vertex_shader) * else: */ __pyx_t_1 = (__pyx_v_vertex_shader != 0); if (__pyx_t_1) { /* "_glarea_ogl.pyx":1024 * vertex_shader = _gl_create_compiled_shader(GL_VERTEX_SHADER, vertex_source) * if vertex_shader: * glAttachShader(program, vertex_shader) # <<<<<<<<<<<<<< * else: * puts('error: no vertex shader') */ glAttachShader(__pyx_v_program, __pyx_v_vertex_shader); /* "_glarea_ogl.pyx":1023 * if debug & DEBUG_MSGGL: puts(' creating vertex shader') * vertex_shader = _gl_create_compiled_shader(GL_VERTEX_SHADER, vertex_source) * if vertex_shader: # <<<<<<<<<<<<<< * glAttachShader(program, vertex_shader) * else: */ goto __pyx_L4; } /* "_glarea_ogl.pyx":1026 * glAttachShader(program, vertex_shader) * else: * puts('error: no vertex shader') # <<<<<<<<<<<<<< * * if debug & DEBUG_MSGGL: puts(' creating fragment shader') */ /*else*/ { puts(((char const *)"error: no vertex shader")); } __pyx_L4:; /* "_glarea_ogl.pyx":1028 * puts('error: no vertex shader') * * if debug & DEBUG_MSGGL: puts(' creating fragment shader') # <<<<<<<<<<<<<< * fragment_shader = _gl_create_compiled_shader(GL_FRAGMENT_SHADER, fragment_source) * if fragment_shader: */ __pyx_t_1 = ((__pyx_v_11_glarea_ogl_debug & __pyx_e_11_glarea_ogl_DEBUG_MSGGL) != 0); if (__pyx_t_1) { puts(((char const *)" creating fragment shader")); } /* "_glarea_ogl.pyx":1029 * * if debug & DEBUG_MSGGL: puts(' creating fragment shader') * fragment_shader = _gl_create_compiled_shader(GL_FRAGMENT_SHADER, fragment_source) # <<<<<<<<<<<<<< * if fragment_shader: * glAttachShader(program, fragment_shader) */ __pyx_v_fragment_shader = __pyx_f_11_glarea_ogl__gl_create_compiled_shader(GL_FRAGMENT_SHADER, __pyx_v_fragment_source); /* "_glarea_ogl.pyx":1030 * if debug & DEBUG_MSGGL: puts(' creating fragment shader') * fragment_shader = _gl_create_compiled_shader(GL_FRAGMENT_SHADER, fragment_source) * if fragment_shader: # <<<<<<<<<<<<<< * glAttachShader(program, fragment_shader) * else: */ __pyx_t_1 = (__pyx_v_fragment_shader != 0); if (__pyx_t_1) { /* "_glarea_ogl.pyx":1031 * fragment_shader = _gl_create_compiled_shader(GL_FRAGMENT_SHADER, fragment_source) * if fragment_shader: * glAttachShader(program, fragment_shader) # <<<<<<<<<<<<<< * else: * puts('error: no fragment shader') */ glAttachShader(__pyx_v_program, __pyx_v_fragment_shader); /* "_glarea_ogl.pyx":1030 * if debug & DEBUG_MSGGL: puts(' creating fragment shader') * fragment_shader = _gl_create_compiled_shader(GL_FRAGMENT_SHADER, fragment_source) * if fragment_shader: # <<<<<<<<<<<<<< * glAttachShader(program, fragment_shader) * else: */ goto __pyx_L6; } /* "_glarea_ogl.pyx":1033 * glAttachShader(program, fragment_shader) * else: * puts('error: no fragment shader') # <<<<<<<<<<<<<< * * glLinkProgram(program) */ /*else*/ { puts(((char const *)"error: no fragment shader")); } __pyx_L6:; /* "_glarea_ogl.pyx":1035 * puts('error: no fragment shader') * * glLinkProgram(program) # <<<<<<<<<<<<<< * if debug & DEBUG_MSGGL: * link_status = _gl_print_program_info(program) */ glLinkProgram(__pyx_v_program); /* "_glarea_ogl.pyx":1036 * * glLinkProgram(program) * if debug & DEBUG_MSGGL: # <<<<<<<<<<<<<< * link_status = _gl_print_program_info(program) * else: */ __pyx_t_1 = ((__pyx_v_11_glarea_ogl_debug & __pyx_e_11_glarea_ogl_DEBUG_MSGGL) != 0); if (__pyx_t_1) { /* "_glarea_ogl.pyx":1037 * glLinkProgram(program) * if debug & DEBUG_MSGGL: * link_status = _gl_print_program_info(program) # <<<<<<<<<<<<<< * else: * glGetProgramiv(program, GL_LINK_STATUS, &link_status) #px/ */ __pyx_v_link_status = __pyx_f_11_glarea_ogl__gl_print_program_info(__pyx_v_program); /* "_glarea_ogl.pyx":1036 * * glLinkProgram(program) * if debug & DEBUG_MSGGL: # <<<<<<<<<<<<<< * link_status = _gl_print_program_info(program) * else: */ goto __pyx_L7; } /* "_glarea_ogl.pyx":1039 * link_status = _gl_print_program_info(program) * else: * glGetProgramiv(program, GL_LINK_STATUS, &link_status) #px/ # <<<<<<<<<<<<<< * #link_status = glGetProgramiv(program, GL_LINK_STATUS) * if not link_status: */ /*else*/ { glGetProgramiv(__pyx_v_program, GL_LINK_STATUS, (&__pyx_v_link_status)); } __pyx_L7:; /* "_glarea_ogl.pyx":1041 * glGetProgramiv(program, GL_LINK_STATUS, &link_status) #px/ * #link_status = glGetProgramiv(program, GL_LINK_STATUS) * if not link_status: # <<<<<<<<<<<<<< * printf('link status %d\n', link_status) * _gl_print_program_log(program) */ __pyx_t_1 = ((!(__pyx_v_link_status != 0)) != 0); if (__pyx_t_1) { /* "_glarea_ogl.pyx":1042 * #link_status = glGetProgramiv(program, GL_LINK_STATUS) * if not link_status: * printf('link status %d\n', link_status) # <<<<<<<<<<<<<< * _gl_print_program_log(program) * if vertex_shader: */ printf(((char const *)"link status %d\n"), __pyx_v_link_status); /* "_glarea_ogl.pyx":1043 * if not link_status: * printf('link status %d\n', link_status) * _gl_print_program_log(program) # <<<<<<<<<<<<<< * if vertex_shader: * glDetachShader(program, vertex_shader) */ __pyx_f_11_glarea_ogl__gl_print_program_log(__pyx_v_program); /* "_glarea_ogl.pyx":1041 * glGetProgramiv(program, GL_LINK_STATUS, &link_status) #px/ * #link_status = glGetProgramiv(program, GL_LINK_STATUS) * if not link_status: # <<<<<<<<<<<<<< * printf('link status %d\n', link_status) * _gl_print_program_log(program) */ } /* "_glarea_ogl.pyx":1044 * printf('link status %d\n', link_status) * _gl_print_program_log(program) * if vertex_shader: # <<<<<<<<<<<<<< * glDetachShader(program, vertex_shader) * glDeleteShader(vertex_shader) */ __pyx_t_1 = (__pyx_v_vertex_shader != 0); if (__pyx_t_1) { /* "_glarea_ogl.pyx":1045 * _gl_print_program_log(program) * if vertex_shader: * glDetachShader(program, vertex_shader) # <<<<<<<<<<<<<< * glDeleteShader(vertex_shader) * if fragment_shader: */ glDetachShader(__pyx_v_program, __pyx_v_vertex_shader); /* "_glarea_ogl.pyx":1046 * if vertex_shader: * glDetachShader(program, vertex_shader) * glDeleteShader(vertex_shader) # <<<<<<<<<<<<<< * if fragment_shader: * glDetachShader(program, fragment_shader) */ glDeleteShader(__pyx_v_vertex_shader); /* "_glarea_ogl.pyx":1044 * printf('link status %d\n', link_status) * _gl_print_program_log(program) * if vertex_shader: # <<<<<<<<<<<<<< * glDetachShader(program, vertex_shader) * glDeleteShader(vertex_shader) */ } /* "_glarea_ogl.pyx":1047 * glDetachShader(program, vertex_shader) * glDeleteShader(vertex_shader) * if fragment_shader: # <<<<<<<<<<<<<< * glDetachShader(program, fragment_shader) * glDeleteShader(fragment_shader) */ __pyx_t_1 = (__pyx_v_fragment_shader != 0); if (__pyx_t_1) { /* "_glarea_ogl.pyx":1048 * glDeleteShader(vertex_shader) * if fragment_shader: * glDetachShader(program, fragment_shader) # <<<<<<<<<<<<<< * glDeleteShader(fragment_shader) * */ glDetachShader(__pyx_v_program, __pyx_v_fragment_shader); /* "_glarea_ogl.pyx":1049 * if fragment_shader: * glDetachShader(program, fragment_shader) * glDeleteShader(fragment_shader) # <<<<<<<<<<<<<< * * ##pxm-FUNC PD nogil */ glDeleteShader(__pyx_v_fragment_shader); /* "_glarea_ogl.pyx":1047 * glDetachShader(program, vertex_shader) * glDeleteShader(vertex_shader) * if fragment_shader: # <<<<<<<<<<<<<< * glDetachShader(program, fragment_shader) * glDeleteShader(fragment_shader) */ } /* "_glarea_ogl.pyx":1017 * * ##pxm-FUNC P nogil * cdef void _gl_program_add_shaders(GLuint program, char *vertex_source, char *fragment_source) nogil: # <<<<<<<<<<<<<< * cdef GLuint vertex_shader = 0, fragment_shader = 0 #px+ * cdef GLint link_status #px+ */ /* function exit code */ } /* "_glarea_ogl.pyx":1052 * * ##pxm-FUNC PD nogil * cdef void gl_create_render_program() nogil: # <<<<<<<<<<<<<< * cdef GLint location #px+ * if debug & DEBUG_MSGGL: puts('Creating render shaders:') */ static void __pyx_f_11_glarea_ogl_gl_create_render_program(void) { GLint __pyx_v_location; int __pyx_t_1; /* "_glarea_ogl.pyx":1054 * cdef void gl_create_render_program() nogil: * cdef GLint location #px+ * if debug & DEBUG_MSGGL: puts('Creating render shaders:') # <<<<<<<<<<<<<< * if renderdata.prog_render > 0: * glDeleteProgram(renderdata.prog_render) */ __pyx_t_1 = ((__pyx_v_11_glarea_ogl_debug & __pyx_e_11_glarea_ogl_DEBUG_MSGGL) != 0); if (__pyx_t_1) { puts(((char const *)"Creating render shaders:")); } /* "_glarea_ogl.pyx":1055 * cdef GLint location #px+ * if debug & DEBUG_MSGGL: puts('Creating render shaders:') * if renderdata.prog_render > 0: # <<<<<<<<<<<<<< * glDeleteProgram(renderdata.prog_render) * renderdata.prog_render = glCreateProgram() */ __pyx_t_1 = ((__pyx_v_11_glarea_ogl_renderdata.prog_render > 0) != 0); if (__pyx_t_1) { /* "_glarea_ogl.pyx":1056 * if debug & DEBUG_MSGGL: puts('Creating render shaders:') * if renderdata.prog_render > 0: * glDeleteProgram(renderdata.prog_render) # <<<<<<<<<<<<<< * renderdata.prog_render = glCreateProgram() * glBindAttribLocation(renderdata.prog_render, gldraw.ATTRIB_LOCATION+0, b'vertex_attr') */ glDeleteProgram(__pyx_v_11_glarea_ogl_renderdata.prog_render); /* "_glarea_ogl.pyx":1055 * cdef GLint location #px+ * if debug & DEBUG_MSGGL: puts('Creating render shaders:') * if renderdata.prog_render > 0: # <<<<<<<<<<<<<< * glDeleteProgram(renderdata.prog_render) * renderdata.prog_render = glCreateProgram() */ } /* "_glarea_ogl.pyx":1057 * if renderdata.prog_render > 0: * glDeleteProgram(renderdata.prog_render) * renderdata.prog_render = glCreateProgram() # <<<<<<<<<<<<<< * glBindAttribLocation(renderdata.prog_render, gldraw.ATTRIB_LOCATION+0, b'vertex_attr') * glBindAttribLocation(renderdata.prog_render, gldraw.ATTRIB_LOCATION+1, b'normal_attr') */ __pyx_v_11_glarea_ogl_renderdata.prog_render = glCreateProgram(); /* "_glarea_ogl.pyx":1058 * glDeleteProgram(renderdata.prog_render) * renderdata.prog_render = glCreateProgram() * glBindAttribLocation(renderdata.prog_render, gldraw.ATTRIB_LOCATION+0, b'vertex_attr') # <<<<<<<<<<<<<< * glBindAttribLocation(renderdata.prog_render, gldraw.ATTRIB_LOCATION+1, b'normal_attr') * glBindAttribLocation(renderdata.prog_render, gldraw.ATTRIB_LOCATION+2, b'color_attr') */ glBindAttribLocation(__pyx_v_11_glarea_ogl_renderdata.prog_render, (__pyx_e_11_gldraw_ogl_ATTRIB_LOCATION + 0), ((GLchar *)"vertex_attr")); /* "_glarea_ogl.pyx":1059 * renderdata.prog_render = glCreateProgram() * glBindAttribLocation(renderdata.prog_render, gldraw.ATTRIB_LOCATION+0, b'vertex_attr') * glBindAttribLocation(renderdata.prog_render, gldraw.ATTRIB_LOCATION+1, b'normal_attr') # <<<<<<<<<<<<<< * glBindAttribLocation(renderdata.prog_render, gldraw.ATTRIB_LOCATION+2, b'color_attr') * glBindAttribLocation(renderdata.prog_render, gldraw.ATTRIB_LOCATION+3, b'texcoord_attr') */ glBindAttribLocation(__pyx_v_11_glarea_ogl_renderdata.prog_render, (__pyx_e_11_gldraw_ogl_ATTRIB_LOCATION + 1), ((GLchar *)"normal_attr")); /* "_glarea_ogl.pyx":1060 * glBindAttribLocation(renderdata.prog_render, gldraw.ATTRIB_LOCATION+0, b'vertex_attr') * glBindAttribLocation(renderdata.prog_render, gldraw.ATTRIB_LOCATION+1, b'normal_attr') * glBindAttribLocation(renderdata.prog_render, gldraw.ATTRIB_LOCATION+2, b'color_attr') # <<<<<<<<<<<<<< * glBindAttribLocation(renderdata.prog_render, gldraw.ATTRIB_LOCATION+3, b'texcoord_attr') * glBindAttribLocation(renderdata.prog_render, gldraw.ATTRIB_LOCATION+4, b'barycentric_attr') */ glBindAttribLocation(__pyx_v_11_glarea_ogl_renderdata.prog_render, (__pyx_e_11_gldraw_ogl_ATTRIB_LOCATION + 2), ((GLchar *)"color_attr")); /* "_glarea_ogl.pyx":1061 * glBindAttribLocation(renderdata.prog_render, gldraw.ATTRIB_LOCATION+1, b'normal_attr') * glBindAttribLocation(renderdata.prog_render, gldraw.ATTRIB_LOCATION+2, b'color_attr') * glBindAttribLocation(renderdata.prog_render, gldraw.ATTRIB_LOCATION+3, b'texcoord_attr') # <<<<<<<<<<<<<< * glBindAttribLocation(renderdata.prog_render, gldraw.ATTRIB_LOCATION+4, b'barycentric_attr') * _gl_program_add_shaders(renderdata.prog_render, renderdata.shader_vertsrc, renderdata.shader_fragsrc) */ glBindAttribLocation(__pyx_v_11_glarea_ogl_renderdata.prog_render, (__pyx_e_11_gldraw_ogl_ATTRIB_LOCATION + 3), ((GLchar *)"texcoord_attr")); /* "_glarea_ogl.pyx":1062 * glBindAttribLocation(renderdata.prog_render, gldraw.ATTRIB_LOCATION+2, b'color_attr') * glBindAttribLocation(renderdata.prog_render, gldraw.ATTRIB_LOCATION+3, b'texcoord_attr') * glBindAttribLocation(renderdata.prog_render, gldraw.ATTRIB_LOCATION+4, b'barycentric_attr') # <<<<<<<<<<<<<< * _gl_program_add_shaders(renderdata.prog_render, renderdata.shader_vertsrc, renderdata.shader_fragsrc) * if renderdata.prog_render > 0: */ glBindAttribLocation(__pyx_v_11_glarea_ogl_renderdata.prog_render, (__pyx_e_11_gldraw_ogl_ATTRIB_LOCATION + 4), ((GLchar *)"barycentric_attr")); /* "_glarea_ogl.pyx":1063 * glBindAttribLocation(renderdata.prog_render, gldraw.ATTRIB_LOCATION+3, b'texcoord_attr') * glBindAttribLocation(renderdata.prog_render, gldraw.ATTRIB_LOCATION+4, b'barycentric_attr') * _gl_program_add_shaders(renderdata.prog_render, renderdata.shader_vertsrc, renderdata.shader_fragsrc) # <<<<<<<<<<<<<< * if renderdata.prog_render > 0: * glUseProgram(renderdata.prog_render) */ __pyx_f_11_glarea_ogl__gl_program_add_shaders(__pyx_v_11_glarea_ogl_renderdata.prog_render, __pyx_v_11_glarea_ogl_renderdata.shader_vertsrc, __pyx_v_11_glarea_ogl_renderdata.shader_fragsrc); /* "_glarea_ogl.pyx":1064 * glBindAttribLocation(renderdata.prog_render, gldraw.ATTRIB_LOCATION+4, b'barycentric_attr') * _gl_program_add_shaders(renderdata.prog_render, renderdata.shader_vertsrc, renderdata.shader_fragsrc) * if renderdata.prog_render > 0: # <<<<<<<<<<<<<< * glUseProgram(renderdata.prog_render) * location = glGetUniformLocation(renderdata.prog_render, b'tex') */ __pyx_t_1 = ((__pyx_v_11_glarea_ogl_renderdata.prog_render > 0) != 0); if (__pyx_t_1) { /* "_glarea_ogl.pyx":1065 * _gl_program_add_shaders(renderdata.prog_render, renderdata.shader_vertsrc, renderdata.shader_fragsrc) * if renderdata.prog_render > 0: * glUseProgram(renderdata.prog_render) # <<<<<<<<<<<<<< * location = glGetUniformLocation(renderdata.prog_render, b'tex') * glUniform1i(location, 0) # 0 is the texture unit (-> glActiveTexture) */ glUseProgram(__pyx_v_11_glarea_ogl_renderdata.prog_render); /* "_glarea_ogl.pyx":1066 * if renderdata.prog_render > 0: * glUseProgram(renderdata.prog_render) * location = glGetUniformLocation(renderdata.prog_render, b'tex') # <<<<<<<<<<<<<< * glUniform1i(location, 0) # 0 is the texture unit (-> glActiveTexture) * renderdata.modelview_location = glGetUniformLocation(renderdata.prog_render, b'modelview') */ __pyx_v_location = glGetUniformLocation(__pyx_v_11_glarea_ogl_renderdata.prog_render, ((GLchar *)"tex")); /* "_glarea_ogl.pyx":1067 * glUseProgram(renderdata.prog_render) * location = glGetUniformLocation(renderdata.prog_render, b'tex') * glUniform1i(location, 0) # 0 is the texture unit (-> glActiveTexture) # <<<<<<<<<<<<<< * renderdata.modelview_location = glGetUniformLocation(renderdata.prog_render, b'modelview') * renderdata.projection_location = glGetUniformLocation(renderdata.prog_render, b'projection') */ glUniform1i(__pyx_v_location, 0); /* "_glarea_ogl.pyx":1068 * location = glGetUniformLocation(renderdata.prog_render, b'tex') * glUniform1i(location, 0) # 0 is the texture unit (-> glActiveTexture) * renderdata.modelview_location = glGetUniformLocation(renderdata.prog_render, b'modelview') # <<<<<<<<<<<<<< * renderdata.projection_location = glGetUniformLocation(renderdata.prog_render, b'projection') * location = glGetUniformLocation(renderdata.prog_render, b'object') */ __pyx_v_11_glarea_ogl_renderdata.modelview_location = glGetUniformLocation(__pyx_v_11_glarea_ogl_renderdata.prog_render, ((GLchar *)"modelview")); /* "_glarea_ogl.pyx":1069 * glUniform1i(location, 0) # 0 is the texture unit (-> glActiveTexture) * renderdata.modelview_location = glGetUniformLocation(renderdata.prog_render, b'modelview') * renderdata.projection_location = glGetUniformLocation(renderdata.prog_render, b'projection') # <<<<<<<<<<<<<< * location = glGetUniformLocation(renderdata.prog_render, b'object') * gldraw.gl_init_object_location(location) */ __pyx_v_11_glarea_ogl_renderdata.projection_location = glGetUniformLocation(__pyx_v_11_glarea_ogl_renderdata.prog_render, ((GLchar *)"projection")); /* "_glarea_ogl.pyx":1070 * renderdata.modelview_location = glGetUniformLocation(renderdata.prog_render, b'modelview') * renderdata.projection_location = glGetUniformLocation(renderdata.prog_render, b'projection') * location = glGetUniformLocation(renderdata.prog_render, b'object') # <<<<<<<<<<<<<< * gldraw.gl_init_object_location(location) * */ __pyx_v_location = glGetUniformLocation(__pyx_v_11_glarea_ogl_renderdata.prog_render, ((GLchar *)"object")); /* "_glarea_ogl.pyx":1071 * renderdata.projection_location = glGetUniformLocation(renderdata.prog_render, b'projection') * location = glGetUniformLocation(renderdata.prog_render, b'object') * gldraw.gl_init_object_location(location) # <<<<<<<<<<<<<< * * ##pxm-FUNC P nogil */ __pyx_f_11_gldraw_ogl_gl_init_object_location(__pyx_v_location); /* "_glarea_ogl.pyx":1064 * glBindAttribLocation(renderdata.prog_render, gldraw.ATTRIB_LOCATION+4, b'barycentric_attr') * _gl_program_add_shaders(renderdata.prog_render, renderdata.shader_vertsrc, renderdata.shader_fragsrc) * if renderdata.prog_render > 0: # <<<<<<<<<<<<<< * glUseProgram(renderdata.prog_render) * location = glGetUniformLocation(renderdata.prog_render, b'tex') */ } /* "_glarea_ogl.pyx":1052 * * ##pxm-FUNC PD nogil * cdef void gl_create_render_program() nogil: # <<<<<<<<<<<<<< * cdef GLint location #px+ * if debug & DEBUG_MSGGL: puts('Creating render shaders:') */ /* function exit code */ } /* "_glarea_ogl.pyx":1074 * * ##pxm-FUNC P nogil * cdef void gl_create_hud_program() nogil: # <<<<<<<<<<<<<< * cdef GLint location #px+ * if debug & DEBUG_MSGGL: puts('Creating "hud" shaders:') */ static void __pyx_f_11_glarea_ogl_gl_create_hud_program(void) { int __pyx_t_1; /* "_glarea_ogl.pyx":1076 * cdef void gl_create_hud_program() nogil: * cdef GLint location #px+ * if debug & DEBUG_MSGGL: puts('Creating "hud" shaders:') # <<<<<<<<<<<<<< * if renderdata.prog_hud > 0: * glDeleteProgram(renderdata.prog_hud) */ __pyx_t_1 = ((__pyx_v_11_glarea_ogl_debug & __pyx_e_11_glarea_ogl_DEBUG_MSGGL) != 0); if (__pyx_t_1) { puts(((char const *)"Creating \"hud\" shaders:")); } /* "_glarea_ogl.pyx":1077 * cdef GLint location #px+ * if debug & DEBUG_MSGGL: puts('Creating "hud" shaders:') * if renderdata.prog_hud > 0: # <<<<<<<<<<<<<< * glDeleteProgram(renderdata.prog_hud) * renderdata.prog_hud = glCreateProgram() */ __pyx_t_1 = ((__pyx_v_11_glarea_ogl_renderdata.prog_hud > 0) != 0); if (__pyx_t_1) { /* "_glarea_ogl.pyx":1078 * if debug & DEBUG_MSGGL: puts('Creating "hud" shaders:') * if renderdata.prog_hud > 0: * glDeleteProgram(renderdata.prog_hud) # <<<<<<<<<<<<<< * renderdata.prog_hud = glCreateProgram() * glBindAttribLocation(renderdata.prog_hud, gldraw.ATTRIB_LOCATION+0, b'vertex_attr') */ glDeleteProgram(__pyx_v_11_glarea_ogl_renderdata.prog_hud); /* "_glarea_ogl.pyx":1077 * cdef GLint location #px+ * if debug & DEBUG_MSGGL: puts('Creating "hud" shaders:') * if renderdata.prog_hud > 0: # <<<<<<<<<<<<<< * glDeleteProgram(renderdata.prog_hud) * renderdata.prog_hud = glCreateProgram() */ } /* "_glarea_ogl.pyx":1079 * if renderdata.prog_hud > 0: * glDeleteProgram(renderdata.prog_hud) * renderdata.prog_hud = glCreateProgram() # <<<<<<<<<<<<<< * glBindAttribLocation(renderdata.prog_hud, gldraw.ATTRIB_LOCATION+0, b'vertex_attr') * glBindAttribLocation(renderdata.prog_hud, gldraw.ATTRIB_LOCATION+2, b'color_attr') */ __pyx_v_11_glarea_ogl_renderdata.prog_hud = glCreateProgram(); /* "_glarea_ogl.pyx":1080 * glDeleteProgram(renderdata.prog_hud) * renderdata.prog_hud = glCreateProgram() * glBindAttribLocation(renderdata.prog_hud, gldraw.ATTRIB_LOCATION+0, b'vertex_attr') # <<<<<<<<<<<<<< * glBindAttribLocation(renderdata.prog_hud, gldraw.ATTRIB_LOCATION+2, b'color_attr') * _gl_program_add_shaders(renderdata.prog_hud, renderdata.hud_vertsrc, renderdata.hud_fragsrc) */ glBindAttribLocation(__pyx_v_11_glarea_ogl_renderdata.prog_hud, (__pyx_e_11_gldraw_ogl_ATTRIB_LOCATION + 0), ((GLchar *)"vertex_attr")); /* "_glarea_ogl.pyx":1081 * renderdata.prog_hud = glCreateProgram() * glBindAttribLocation(renderdata.prog_hud, gldraw.ATTRIB_LOCATION+0, b'vertex_attr') * glBindAttribLocation(renderdata.prog_hud, gldraw.ATTRIB_LOCATION+2, b'color_attr') # <<<<<<<<<<<<<< * _gl_program_add_shaders(renderdata.prog_hud, renderdata.hud_vertsrc, renderdata.hud_fragsrc) * if renderdata.prog_hud > 0: */ glBindAttribLocation(__pyx_v_11_glarea_ogl_renderdata.prog_hud, (__pyx_e_11_gldraw_ogl_ATTRIB_LOCATION + 2), ((GLchar *)"color_attr")); /* "_glarea_ogl.pyx":1082 * glBindAttribLocation(renderdata.prog_hud, gldraw.ATTRIB_LOCATION+0, b'vertex_attr') * glBindAttribLocation(renderdata.prog_hud, gldraw.ATTRIB_LOCATION+2, b'color_attr') * _gl_program_add_shaders(renderdata.prog_hud, renderdata.hud_vertsrc, renderdata.hud_fragsrc) # <<<<<<<<<<<<<< * if renderdata.prog_hud > 0: * glUseProgram(renderdata.prog_hud) */ __pyx_f_11_glarea_ogl__gl_program_add_shaders(__pyx_v_11_glarea_ogl_renderdata.prog_hud, __pyx_v_11_glarea_ogl_renderdata.hud_vertsrc, __pyx_v_11_glarea_ogl_renderdata.hud_fragsrc); /* "_glarea_ogl.pyx":1083 * glBindAttribLocation(renderdata.prog_hud, gldraw.ATTRIB_LOCATION+2, b'color_attr') * _gl_program_add_shaders(renderdata.prog_hud, renderdata.hud_vertsrc, renderdata.hud_fragsrc) * if renderdata.prog_hud > 0: # <<<<<<<<<<<<<< * glUseProgram(renderdata.prog_hud) * */ __pyx_t_1 = ((__pyx_v_11_glarea_ogl_renderdata.prog_hud > 0) != 0); if (__pyx_t_1) { /* "_glarea_ogl.pyx":1084 * _gl_program_add_shaders(renderdata.prog_hud, renderdata.hud_vertsrc, renderdata.hud_fragsrc) * if renderdata.prog_hud > 0: * glUseProgram(renderdata.prog_hud) # <<<<<<<<<<<<<< * * ##pxm-FUNC P nogil */ glUseProgram(__pyx_v_11_glarea_ogl_renderdata.prog_hud); /* "_glarea_ogl.pyx":1083 * glBindAttribLocation(renderdata.prog_hud, gldraw.ATTRIB_LOCATION+2, b'color_attr') * _gl_program_add_shaders(renderdata.prog_hud, renderdata.hud_vertsrc, renderdata.hud_fragsrc) * if renderdata.prog_hud > 0: # <<<<<<<<<<<<<< * glUseProgram(renderdata.prog_hud) * */ } /* "_glarea_ogl.pyx":1074 * * ##pxm-FUNC P nogil * cdef void gl_create_hud_program() nogil: # <<<<<<<<<<<<<< * cdef GLint location #px+ * if debug & DEBUG_MSGGL: puts('Creating "hud" shaders:') */ /* function exit code */ } /* "_glarea_ogl.pyx":1087 * * ##pxm-FUNC P nogil * cdef void gl_create_pick_program() nogil: # <<<<<<<<<<<<<< * if debug & DEBUG_MSGGL: puts('Creating "pick" shaders:') * if renderdata.prog_pick > 0: */ static void __pyx_f_11_glarea_ogl_gl_create_pick_program(void) { int __pyx_t_1; /* "_glarea_ogl.pyx":1088 * ##pxm-FUNC P nogil * cdef void gl_create_pick_program() nogil: * if debug & DEBUG_MSGGL: puts('Creating "pick" shaders:') # <<<<<<<<<<<<<< * if renderdata.prog_pick > 0: * glDeleteProgram(renderdata.prog_pick) */ __pyx_t_1 = ((__pyx_v_11_glarea_ogl_debug & __pyx_e_11_glarea_ogl_DEBUG_MSGGL) != 0); if (__pyx_t_1) { puts(((char const *)"Creating \"pick\" shaders:")); } /* "_glarea_ogl.pyx":1089 * cdef void gl_create_pick_program() nogil: * if debug & DEBUG_MSGGL: puts('Creating "pick" shaders:') * if renderdata.prog_pick > 0: # <<<<<<<<<<<<<< * glDeleteProgram(renderdata.prog_pick) * renderdata.prog_pick = glCreateProgram() */ __pyx_t_1 = ((__pyx_v_11_glarea_ogl_renderdata.prog_pick > 0) != 0); if (__pyx_t_1) { /* "_glarea_ogl.pyx":1090 * if debug & DEBUG_MSGGL: puts('Creating "pick" shaders:') * if renderdata.prog_pick > 0: * glDeleteProgram(renderdata.prog_pick) # <<<<<<<<<<<<<< * renderdata.prog_pick = glCreateProgram() * glBindAttribLocation(renderdata.prog_pick, gldraw.PICKATTRIB_LOCATION+0, b'vertex_attr') */ glDeleteProgram(__pyx_v_11_glarea_ogl_renderdata.prog_pick); /* "_glarea_ogl.pyx":1089 * cdef void gl_create_pick_program() nogil: * if debug & DEBUG_MSGGL: puts('Creating "pick" shaders:') * if renderdata.prog_pick > 0: # <<<<<<<<<<<<<< * glDeleteProgram(renderdata.prog_pick) * renderdata.prog_pick = glCreateProgram() */ } /* "_glarea_ogl.pyx":1091 * if renderdata.prog_pick > 0: * glDeleteProgram(renderdata.prog_pick) * renderdata.prog_pick = glCreateProgram() # <<<<<<<<<<<<<< * glBindAttribLocation(renderdata.prog_pick, gldraw.PICKATTRIB_LOCATION+0, b'vertex_attr') * glBindAttribLocation(renderdata.prog_pick, gldraw.PICKATTRIB_LOCATION+1, b'color_attr') */ __pyx_v_11_glarea_ogl_renderdata.prog_pick = glCreateProgram(); /* "_glarea_ogl.pyx":1092 * glDeleteProgram(renderdata.prog_pick) * renderdata.prog_pick = glCreateProgram() * glBindAttribLocation(renderdata.prog_pick, gldraw.PICKATTRIB_LOCATION+0, b'vertex_attr') # <<<<<<<<<<<<<< * glBindAttribLocation(renderdata.prog_pick, gldraw.PICKATTRIB_LOCATION+1, b'color_attr') * _gl_program_add_shaders(renderdata.prog_pick, renderdata.pick_vertsrc, renderdata.pick_fragsrc) */ glBindAttribLocation(__pyx_v_11_glarea_ogl_renderdata.prog_pick, (__pyx_e_11_gldraw_ogl_PICKATTRIB_LOCATION + 0), ((GLchar *)"vertex_attr")); /* "_glarea_ogl.pyx":1093 * renderdata.prog_pick = glCreateProgram() * glBindAttribLocation(renderdata.prog_pick, gldraw.PICKATTRIB_LOCATION+0, b'vertex_attr') * glBindAttribLocation(renderdata.prog_pick, gldraw.PICKATTRIB_LOCATION+1, b'color_attr') # <<<<<<<<<<<<<< * _gl_program_add_shaders(renderdata.prog_pick, renderdata.pick_vertsrc, renderdata.pick_fragsrc) * if renderdata.prog_pick > 0: */ glBindAttribLocation(__pyx_v_11_glarea_ogl_renderdata.prog_pick, (__pyx_e_11_gldraw_ogl_PICKATTRIB_LOCATION + 1), ((GLchar *)"color_attr")); /* "_glarea_ogl.pyx":1094 * glBindAttribLocation(renderdata.prog_pick, gldraw.PICKATTRIB_LOCATION+0, b'vertex_attr') * glBindAttribLocation(renderdata.prog_pick, gldraw.PICKATTRIB_LOCATION+1, b'color_attr') * _gl_program_add_shaders(renderdata.prog_pick, renderdata.pick_vertsrc, renderdata.pick_fragsrc) # <<<<<<<<<<<<<< * if renderdata.prog_pick > 0: * glUseProgram(renderdata.prog_pick) */ __pyx_f_11_glarea_ogl__gl_program_add_shaders(__pyx_v_11_glarea_ogl_renderdata.prog_pick, __pyx_v_11_glarea_ogl_renderdata.pick_vertsrc, __pyx_v_11_glarea_ogl_renderdata.pick_fragsrc); /* "_glarea_ogl.pyx":1095 * glBindAttribLocation(renderdata.prog_pick, gldraw.PICKATTRIB_LOCATION+1, b'color_attr') * _gl_program_add_shaders(renderdata.prog_pick, renderdata.pick_vertsrc, renderdata.pick_fragsrc) * if renderdata.prog_pick > 0: # <<<<<<<<<<<<<< * glUseProgram(renderdata.prog_pick) * renderdata.picking_location = glGetUniformLocation(renderdata.prog_pick, b'picking') */ __pyx_t_1 = ((__pyx_v_11_glarea_ogl_renderdata.prog_pick > 0) != 0); if (__pyx_t_1) { /* "_glarea_ogl.pyx":1096 * _gl_program_add_shaders(renderdata.prog_pick, renderdata.pick_vertsrc, renderdata.pick_fragsrc) * if renderdata.prog_pick > 0: * glUseProgram(renderdata.prog_pick) # <<<<<<<<<<<<<< * renderdata.picking_location = glGetUniformLocation(renderdata.prog_pick, b'picking') * renderdata.projection_pick_location = glGetUniformLocation(renderdata.prog_pick, b'projection') */ glUseProgram(__pyx_v_11_glarea_ogl_renderdata.prog_pick); /* "_glarea_ogl.pyx":1097 * if renderdata.prog_pick > 0: * glUseProgram(renderdata.prog_pick) * renderdata.picking_location = glGetUniformLocation(renderdata.prog_pick, b'picking') # <<<<<<<<<<<<<< * renderdata.projection_pick_location = glGetUniformLocation(renderdata.prog_pick, b'projection') * renderdata.modelview_pick_location = glGetUniformLocation(renderdata.prog_pick, b'modelview') */ __pyx_v_11_glarea_ogl_renderdata.picking_location = glGetUniformLocation(__pyx_v_11_glarea_ogl_renderdata.prog_pick, ((GLchar *)"picking")); /* "_glarea_ogl.pyx":1098 * glUseProgram(renderdata.prog_pick) * renderdata.picking_location = glGetUniformLocation(renderdata.prog_pick, b'picking') * renderdata.projection_pick_location = glGetUniformLocation(renderdata.prog_pick, b'projection') # <<<<<<<<<<<<<< * renderdata.modelview_pick_location = glGetUniformLocation(renderdata.prog_pick, b'modelview') * */ __pyx_v_11_glarea_ogl_renderdata.projection_pick_location = glGetUniformLocation(__pyx_v_11_glarea_ogl_renderdata.prog_pick, ((GLchar *)"projection")); /* "_glarea_ogl.pyx":1099 * renderdata.picking_location = glGetUniformLocation(renderdata.prog_pick, b'picking') * renderdata.projection_pick_location = glGetUniformLocation(renderdata.prog_pick, b'projection') * renderdata.modelview_pick_location = glGetUniformLocation(renderdata.prog_pick, b'modelview') # <<<<<<<<<<<<<< * * */ __pyx_v_11_glarea_ogl_renderdata.modelview_pick_location = glGetUniformLocation(__pyx_v_11_glarea_ogl_renderdata.prog_pick, ((GLchar *)"modelview")); /* "_glarea_ogl.pyx":1095 * glBindAttribLocation(renderdata.prog_pick, gldraw.PICKATTRIB_LOCATION+1, b'color_attr') * _gl_program_add_shaders(renderdata.prog_pick, renderdata.pick_vertsrc, renderdata.pick_fragsrc) * if renderdata.prog_pick > 0: # <<<<<<<<<<<<<< * glUseProgram(renderdata.prog_pick) * renderdata.picking_location = glGetUniformLocation(renderdata.prog_pick, b'picking') */ } /* "_glarea_ogl.pyx":1087 * * ##pxm-FUNC P nogil * cdef void gl_create_pick_program() nogil: # <<<<<<<<<<<<<< * if debug & DEBUG_MSGGL: puts('Creating "pick" shaders:') * if renderdata.prog_pick > 0: */ /* function exit code */ } static PyMethodDef __pyx_methods[] = { {"set_animation_start", (PyCFunction)__pyx_pw_11_glarea_ogl_17set_animation_start, METH_VARARGS|METH_KEYWORDS, 0}, {"set_atlas_data", (PyCFunction)__pyx_pw_11_glarea_ogl_31set_atlas_data, METH_VARARGS|METH_KEYWORDS, 0}, {0, 0, 0, 0} }; #if PY_MAJOR_VERSION >= 3 static struct PyModuleDef __pyx_moduledef = { #if PY_VERSION_HEX < 0x03020000 { PyObject_HEAD_INIT(NULL) NULL, 0, NULL }, #else PyModuleDef_HEAD_INIT, #endif "_glarea_ogl", 0, /* m_doc */ -1, /* m_size */ __pyx_methods /* m_methods */, NULL, /* m_reload */ NULL, /* m_traverse */ NULL, /* m_clear */ NULL /* m_free */ }; #endif static __Pyx_StringTabEntry __pyx_string_tab[] = { {&__pyx_n_s_DEBUG_DRAW, __pyx_k_DEBUG_DRAW, sizeof(__pyx_k_DEBUG_DRAW), 0, 0, 1, 1}, {&__pyx_n_s_DEBUG_MSGEXT, __pyx_k_DEBUG_MSGEXT, sizeof(__pyx_k_DEBUG_MSGEXT), 0, 0, 1, 1}, {&__pyx_n_s_DEBUG_MSGGL, __pyx_k_DEBUG_MSGGL, sizeof(__pyx_k_DEBUG_MSGGL), 0, 0, 1, 1}, {&__pyx_n_s_DEBUG_PICK, __pyx_k_DEBUG_PICK, sizeof(__pyx_k_DEBUG_PICK), 0, 0, 1, 1}, {&__pyx_kp_u_GL_type_ogl, __pyx_k_GL_type_ogl, sizeof(__pyx_k_GL_type_ogl), 0, 1, 0, 0}, {&__pyx_kp_u_OFFSCREEN, __pyx_k_OFFSCREEN, sizeof(__pyx_k_OFFSCREEN), 0, 1, 0, 0}, {&__pyx_n_s_angle, __pyx_k_angle, sizeof(__pyx_k_angle), 0, 0, 1, 1}, {&__pyx_n_s_append, __pyx_k_append, sizeof(__pyx_k_append), 0, 0, 1, 1}, {&__pyx_n_s_atlasdata, __pyx_k_atlasdata, sizeof(__pyx_k_atlasdata), 0, 0, 1, 1}, {&__pyx_n_s_axisx, __pyx_k_axisx, sizeof(__pyx_k_axisx), 0, 0, 1, 1}, {&__pyx_n_s_axisy, __pyx_k_axisy, sizeof(__pyx_k_axisy), 0, 0, 1, 1}, {&__pyx_n_s_axisz, __pyx_k_axisz, sizeof(__pyx_k_axisz), 0, 0, 1, 1}, {&__pyx_n_s_b, __pyx_k_b, sizeof(__pyx_k_b), 0, 0, 1, 1}, {&__pyx_n_s_blocks, __pyx_k_blocks, sizeof(__pyx_k_blocks), 0, 0, 1, 1}, {&__pyx_n_s_blue, __pyx_k_blue, sizeof(__pyx_k_blue), 0, 0, 1, 1}, {&__pyx_n_s_bounding_sphere_radius, __pyx_k_bounding_sphere_radius, sizeof(__pyx_k_bounding_sphere_radius), 0, 0, 1, 1}, {&__pyx_n_s_cnts_block, __pyx_k_cnts_block, sizeof(__pyx_k_cnts_block), 0, 0, 1, 1}, {&__pyx_kp_u_compiled, __pyx_k_compiled, sizeof(__pyx_k_compiled), 0, 1, 0, 0}, {&__pyx_n_s_compiled_2, __pyx_k_compiled_2, sizeof(__pyx_k_compiled_2), 0, 0, 1, 1}, {&__pyx_n_s_d, __pyx_k_d, sizeof(__pyx_k_d), 0, 0, 1, 1}, {&__pyx_n_s_data, __pyx_k_data, sizeof(__pyx_k_data), 0, 0, 1, 1}, {&__pyx_n_s_doc, __pyx_k_doc, sizeof(__pyx_k_doc), 0, 0, 1, 1}, {&__pyx_n_s_enumerate, __pyx_k_enumerate, sizeof(__pyx_k_enumerate), 0, 0, 1, 1}, {&__pyx_n_s_fixedshaders, __pyx_k_fixedshaders, sizeof(__pyx_k_fixedshaders), 0, 0, 1, 1}, {&__pyx_n_u_fixedshaders, __pyx_k_fixedshaders, sizeof(__pyx_k_fixedshaders), 0, 1, 0, 1}, {&__pyx_n_s_fovy_angle, __pyx_k_fovy_angle, sizeof(__pyx_k_fovy_angle), 0, 0, 1, 1}, {&__pyx_kp_u_from_package, __pyx_k_from_package, sizeof(__pyx_k_from_package), 0, 1, 0, 0}, {&__pyx_n_s_get_cursor_angle, __pyx_k_get_cursor_angle, sizeof(__pyx_k_get_cursor_angle), 0, 0, 1, 1}, {&__pyx_n_s_glarea_ogl, __pyx_k_glarea_ogl, sizeof(__pyx_k_glarea_ogl), 0, 0, 1, 1}, {&__pyx_n_s_green, __pyx_k_green, sizeof(__pyx_k_green), 0, 0, 1, 1}, {&__pyx_n_s_h, __pyx_k_h, sizeof(__pyx_k_h), 0, 0, 1, 1}, {&__pyx_kp_s_tmp, __pyx_k_tmp, sizeof(__pyx_k_tmp), 0, 0, 1, 0}, {&__pyx_n_s_i, __pyx_k_i, sizeof(__pyx_k_i), 0, 0, 1, 1}, {&__pyx_n_s_init_engine, __pyx_k_init_engine, sizeof(__pyx_k_init_engine), 0, 0, 1, 1}, {&__pyx_kp_u_init_module, __pyx_k_init_module, sizeof(__pyx_k_init_module), 0, 1, 0, 0}, {&__pyx_n_s_j, __pyx_k_j, sizeof(__pyx_k_j), 0, 0, 1, 1}, {&__pyx_n_s_main, __pyx_k_main, sizeof(__pyx_k_main), 0, 0, 1, 1}, {&__pyx_n_s_metaclass, __pyx_k_metaclass, sizeof(__pyx_k_metaclass), 0, 0, 1, 1}, {&__pyx_n_s_module, __pyx_k_module, sizeof(__pyx_k_module), 0, 0, 1, 1}, {&__pyx_n_s_module_2, __pyx_k_module_2, sizeof(__pyx_k_module_2), 0, 0, 1, 1}, {&__pyx_n_s_multisample, __pyx_k_multisample, sizeof(__pyx_k_multisample), 0, 0, 1, 1}, {&__pyx_n_s_name, __pyx_k_name, sizeof(__pyx_k_name), 0, 0, 1, 1}, {&__pyx_n_s_nblocks, __pyx_k_nblocks, sizeof(__pyx_k_nblocks), 0, 0, 1, 1}, {&__pyx_n_s_nxy, __pyx_k_nxy, sizeof(__pyx_k_nxy), 0, 0, 1, 1}, {&__pyx_n_s_package, __pyx_k_package, sizeof(__pyx_k_package), 0, 0, 1, 1}, {&__pyx_n_s_prepare, __pyx_k_prepare, sizeof(__pyx_k_prepare), 0, 0, 1, 1}, {&__pyx_n_s_print, __pyx_k_print, sizeof(__pyx_k_print), 0, 0, 1, 1}, {&__pyx_n_s_pydata, __pyx_k_pydata, sizeof(__pyx_k_pydata), 0, 0, 1, 1}, {&__pyx_n_s_pydata_backed, __pyx_k_pydata_backed, sizeof(__pyx_k_pydata_backed), 0, 0, 1, 1}, {&__pyx_n_s_pydata_postsync, __pyx_k_pydata_postsync, sizeof(__pyx_k_pydata_postsync), 0, 0, 1, 1}, {&__pyx_n_s_qualname, __pyx_k_qualname, sizeof(__pyx_k_qualname), 0, 0, 1, 1}, {&__pyx_n_s_quat, __pyx_k_quat, sizeof(__pyx_k_quat), 0, 0, 1, 1}, {&__pyx_n_s_range, __pyx_k_range, sizeof(__pyx_k_range), 0, 0, 1, 1}, {&__pyx_n_s_red, __pyx_k_red, sizeof(__pyx_k_red), 0, 0, 1, 1}, {&__pyx_n_s_set_antialiasing, __pyx_k_set_antialiasing, sizeof(__pyx_k_set_antialiasing), 0, 0, 1, 1}, {&__pyx_n_s_set_background_color, __pyx_k_set_background_color, sizeof(__pyx_k_set_background_color), 0, 0, 1, 1}, {&__pyx_n_s_set_data, __pyx_k_set_data, sizeof(__pyx_k_set_data), 0, 0, 1, 1}, {&__pyx_n_s_set_debug_flags, __pyx_k_set_debug_flags, sizeof(__pyx_k_set_debug_flags), 0, 0, 1, 1}, {&__pyx_n_s_set_fixedshaders, __pyx_k_set_fixedshaders, sizeof(__pyx_k_set_fixedshaders), 0, 0, 1, 1}, {&__pyx_n_s_set_frustum, __pyx_k_set_frustum, sizeof(__pyx_k_set_frustum), 0, 0, 1, 1}, {&__pyx_n_s_set_pick_position, __pyx_k_set_pick_position, sizeof(__pyx_k_set_pick_position), 0, 0, 1, 1}, {&__pyx_n_s_set_rotation_rel, __pyx_k_set_rotation_rel, sizeof(__pyx_k_set_rotation_rel), 0, 0, 1, 1}, {&__pyx_n_s_set_rotation_xy, __pyx_k_set_rotation_xy, sizeof(__pyx_k_set_rotation_xy), 0, 0, 1, 1}, {&__pyx_n_s_set_shaders, __pyx_k_set_shaders, sizeof(__pyx_k_set_shaders), 0, 0, 1, 1}, {&__pyx_n_s_set_transformations, __pyx_k_set_transformations, sizeof(__pyx_k_set_transformations), 0, 0, 1, 1}, {&__pyx_n_s_shader_fragsrc, __pyx_k_shader_fragsrc, sizeof(__pyx_k_shader_fragsrc), 0, 0, 1, 1}, {&__pyx_n_u_shader_fragsrc, __pyx_k_shader_fragsrc, sizeof(__pyx_k_shader_fragsrc), 0, 1, 0, 1}, {&__pyx_n_s_shader_src, __pyx_k_shader_src, sizeof(__pyx_k_shader_src), 0, 0, 1, 1}, {&__pyx_n_s_shader_vertsrc, __pyx_k_shader_vertsrc, sizeof(__pyx_k_shader_vertsrc), 0, 0, 1, 1}, {&__pyx_n_u_shader_vertsrc, __pyx_k_shader_vertsrc, sizeof(__pyx_k_shader_vertsrc), 0, 1, 0, 1}, {&__pyx_n_s_startswith, __pyx_k_startswith, sizeof(__pyx_k_startswith), 0, 0, 1, 1}, {&__pyx_n_s_syncpydata, __pyx_k_syncpydata, sizeof(__pyx_k_syncpydata), 0, 0, 1, 1}, {&__pyx_n_s_t, __pyx_k_t, sizeof(__pyx_k_t), 0, 0, 1, 1}, {&__pyx_n_s_test, __pyx_k_test, sizeof(__pyx_k_test), 0, 0, 1, 1}, {&__pyx_n_s_transformations, __pyx_k_transformations, sizeof(__pyx_k_transformations), 0, 0, 1, 1}, {&__pyx_n_s_uipydata, __pyx_k_uipydata, sizeof(__pyx_k_uipydata), 0, 0, 1, 1}, {&__pyx_n_s_unused, __pyx_k_unused, sizeof(__pyx_k_unused), 0, 0, 1, 1}, {&__pyx_n_s_update_shader_version, __pyx_k_update_shader_version, sizeof(__pyx_k_update_shader_version), 0, 0, 1, 1}, {&__pyx_kp_b_version_120, __pyx_k_version_120, sizeof(__pyx_k_version_120), 0, 0, 0, 0}, {&__pyx_n_s_vertexdata, __pyx_k_vertexdata, sizeof(__pyx_k_vertexdata), 0, 0, 1, 1}, {&__pyx_n_u_vertexdata, __pyx_k_vertexdata, sizeof(__pyx_k_vertexdata), 0, 1, 0, 1}, {&__pyx_n_s_vertexinfo, __pyx_k_vertexinfo, sizeof(__pyx_k_vertexinfo), 0, 0, 1, 1}, {&__pyx_n_s_vertexpointers, __pyx_k_vertexpointers, sizeof(__pyx_k_vertexpointers), 0, 0, 1, 1}, {&__pyx_n_s_w, __pyx_k_w, sizeof(__pyx_k_w), 0, 0, 1, 1}, {&__pyx_n_s_x, __pyx_k_x, sizeof(__pyx_k_x), 0, 0, 1, 1}, {&__pyx_n_s_y, __pyx_k_y, sizeof(__pyx_k_y), 0, 0, 1, 1}, {&__pyx_n_s_zoom, __pyx_k_zoom, sizeof(__pyx_k_zoom), 0, 0, 1, 1}, {0, 0, 0, 0, 0, 0, 0} }; static int __Pyx_InitCachedBuiltins(void) { __pyx_builtin_print = __Pyx_GetBuiltinName(__pyx_n_s_print); if (!__pyx_builtin_print) __PYX_ERR(0, 272, __pyx_L1_error) __pyx_builtin_enumerate = __Pyx_GetBuiltinName(__pyx_n_s_enumerate); if (!__pyx_builtin_enumerate) __PYX_ERR(0, 482, __pyx_L1_error) __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) __PYX_ERR(0, 505, __pyx_L1_error) return 0; __pyx_L1_error:; return -1; } static int __Pyx_InitCachedConstants(void) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0); /* "_glarea_ogl.pyx":275 * print(' from package:', __package__) * print(' compiled:', __compiled) * print(' GL-type: ogl') #px+ # <<<<<<<<<<<<<< * print(' OFFSCREEN:', OFFSCREEN) * */ __pyx_tuple_ = PyTuple_Pack(1, __pyx_kp_u_GL_type_ogl); if (unlikely(!__pyx_tuple_)) __PYX_ERR(0, 275, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple_); __Pyx_GIVEREF(__pyx_tuple_); /* "_glarea_ogl.pyx":276 * print(' compiled:', __compiled) * print(' GL-type: ogl') #px+ * print(' OFFSCREEN:', OFFSCREEN) # <<<<<<<<<<<<<< * * uidata.synced = False */ __pyx_tuple__2 = PyTuple_Pack(2, __pyx_kp_u_OFFSCREEN, Py_False); if (unlikely(!__pyx_tuple__2)) __PYX_ERR(0, 276, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__2); __Pyx_GIVEREF(__pyx_tuple__2); /* "_glarea_ogl.pyx":526 * * def update_shader_version(shader_src): * assert shader_src.startswith(b'#version 120\n') # <<<<<<<<<<<<<< * IF 'ogl' == 'es2': #px/ * #if False: */ __pyx_tuple__3 = PyTuple_Pack(1, __pyx_kp_b_version_120); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(0, 526, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__3); __Pyx_GIVEREF(__pyx_tuple__3); /* "_glarea_ogl.pyx":64 * debug = 0 * * def set_debug_flags(module): # <<<<<<<<<<<<<< * global debug * if module.DEBUG_MSGGL: debug |= DEBUG_MSGGL */ __pyx_tuple__4 = PyTuple_Pack(1, __pyx_n_s_module); if (unlikely(!__pyx_tuple__4)) __PYX_ERR(0, 64, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__4); __Pyx_GIVEREF(__pyx_tuple__4); __pyx_codeobj__5 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__4, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_set_debug_flags, 64, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__5)) __PYX_ERR(0, 64, __pyx_L1_error) /* "_glarea_ogl.pyx":269 * ### module state * * def init_engine(): # <<<<<<<<<<<<<< * gldraw.init_gldraw() * if debug & DEBUG_MSGEXT: */ __pyx_tuple__6 = PyTuple_Pack(1, __pyx_n_s_fovy_angle); if (unlikely(!__pyx_tuple__6)) __PYX_ERR(0, 269, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__6); __Pyx_GIVEREF(__pyx_tuple__6); __pyx_codeobj__7 = (PyObject*)__Pyx_PyCode_New(0, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__6, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_init_engine, 269, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__7)) __PYX_ERR(0, 269, __pyx_L1_error) /* "_glarea_ogl.pyx":352 * M[0][2] = -m11 * m20; M[1][2] = m12; M[2][2] = m00 * m11 * * def set_rotation_rel(x, y): # <<<<<<<<<<<<<< * cdef gldraw.vec4 quat #px+ * cdef float nxy #px+ */ __pyx_tuple__8 = PyTuple_Pack(4, __pyx_n_s_x, __pyx_n_s_y, __pyx_n_s_quat, __pyx_n_s_nxy); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(0, 352, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__8); __Pyx_GIVEREF(__pyx_tuple__8); __pyx_codeobj__9 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__8, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_set_rotation_rel, 352, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__9)) __PYX_ERR(0, 352, __pyx_L1_error) /* "_glarea_ogl.pyx":440 * renderdata.picking_matrix[1][1] = 1. * * def set_frustum(bounding_sphere_radius, zoom): # <<<<<<<<<<<<<< * uidata.frustum_changed = True * if bounding_sphere_radius > 0: */ __pyx_tuple__10 = PyTuple_Pack(2, __pyx_n_s_bounding_sphere_radius, __pyx_n_s_zoom); if (unlikely(!__pyx_tuple__10)) __PYX_ERR(0, 440, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__10); __Pyx_GIVEREF(__pyx_tuple__10); __pyx_codeobj__11 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__10, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_set_frustum, 440, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__11)) __PYX_ERR(0, 440, __pyx_L1_error) /* "_glarea_ogl.pyx":446 * uidata.fovy_radius_zoom = uidata.fovy_radius / zoom * * def set_background_color(red, green, blue): # <<<<<<<<<<<<<< * uidata.background_changed = True * uidata.bg_red = red */ __pyx_tuple__12 = PyTuple_Pack(3, __pyx_n_s_red, __pyx_n_s_green, __pyx_n_s_blue); if (unlikely(!__pyx_tuple__12)) __PYX_ERR(0, 446, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__12); __Pyx_GIVEREF(__pyx_tuple__12); __pyx_codeobj__13 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__12, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_set_background_color, 446, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__13)) __PYX_ERR(0, 446, __pyx_L1_error) /* "_glarea_ogl.pyx":452 * uidata.bg_blue = blue * * def set_antialiasing(multisample): # <<<<<<<<<<<<<< * uidata.multisample_changed = 2 if multisample else 1 * */ __pyx_tuple__14 = PyTuple_Pack(1, __pyx_n_s_multisample); if (unlikely(!__pyx_tuple__14)) __PYX_ERR(0, 452, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__14); __Pyx_GIVEREF(__pyx_tuple__14); __pyx_codeobj__15 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__14, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_set_antialiasing, 452, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__15)) __PYX_ERR(0, 452, __pyx_L1_error) /* "_glarea_ogl.pyx":455 * uidata.multisample_changed = 2 if multisample else 1 * * def set_rotation_xy(x, y): # <<<<<<<<<<<<<< * x %= 360 * # pylint: disable=C0321 */ __pyx_tuple__16 = PyTuple_Pack(2, __pyx_n_s_x, __pyx_n_s_y); if (unlikely(!__pyx_tuple__16)) __PYX_ERR(0, 455, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__16); __Pyx_GIVEREF(__pyx_tuple__16); __pyx_codeobj__17 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__16, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_set_rotation_xy, 455, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__17)) __PYX_ERR(0, 455, __pyx_L1_error) /* "_glarea_ogl.pyx":472 * uidata.viewport_changed = True * * def set_transformations(blocks): # <<<<<<<<<<<<<< * assert uidata.nblocks == len(blocks) * cdef int i #px+ */ __pyx_tuple__18 = PyTuple_Pack(4, __pyx_n_s_blocks, __pyx_n_s_i, __pyx_n_s_b, __pyx_n_s_unused); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(0, 472, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__18); __Pyx_GIVEREF(__pyx_tuple__18); __pyx_codeobj__19 = (PyObject*)__Pyx_PyCode_New(1, 0, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_set_transformations, 472, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__19)) __PYX_ERR(0, 472, __pyx_L1_error) /* "_glarea_ogl.pyx":496 * uidata.animation_changed = 2 * * def set_data(nblocks, vertexdata, vertexpointers, vertexinfo, transformations): # <<<<<<<<<<<<<< * pydata_postsync() * cdef int t,i,j #px+ */ __pyx_tuple__20 = PyTuple_Pack(9, __pyx_n_s_nblocks, __pyx_n_s_vertexdata, __pyx_n_s_vertexpointers, __pyx_n_s_vertexinfo, __pyx_n_s_transformations, __pyx_n_s_t, __pyx_n_s_i, __pyx_n_s_j, __pyx_n_s_cnts_block); if (unlikely(!__pyx_tuple__20)) __PYX_ERR(0, 496, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__20); __Pyx_GIVEREF(__pyx_tuple__20); __pyx_codeobj__21 = (PyObject*)__Pyx_PyCode_New(5, 0, 9, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__20, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_set_data, 496, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__21)) __PYX_ERR(0, 496, __pyx_L1_error) /* "_glarea_ogl.pyx":519 * uidata.data_changed = True * * def pydata_postsync(): # <<<<<<<<<<<<<< * global pydata_backed * if uidata.synced: */ __pyx_codeobj__22 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_pydata_postsync, 519, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__22)) __PYX_ERR(0, 519, __pyx_L1_error) /* "_glarea_ogl.pyx":525 * uidata.synced = False * * def update_shader_version(shader_src): # <<<<<<<<<<<<<< * assert shader_src.startswith(b'#version 120\n') * IF 'ogl' == 'es2': #px/ */ __pyx_tuple__23 = PyTuple_Pack(1, __pyx_n_s_shader_src); if (unlikely(!__pyx_tuple__23)) __PYX_ERR(0, 525, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__23); __Pyx_GIVEREF(__pyx_tuple__23); __pyx_codeobj__24 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__23, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_update_shader_version, 525, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__24)) __PYX_ERR(0, 525, __pyx_L1_error) /* "_glarea_ogl.pyx":532 * return shader_src * * def set_shaders(shader_vertsrc, shader_fragsrc): # <<<<<<<<<<<<<< * pydata_postsync() * shader_vertsrc = update_shader_version(shader_vertsrc) */ __pyx_tuple__25 = PyTuple_Pack(2, __pyx_n_s_shader_vertsrc, __pyx_n_s_shader_fragsrc); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(0, 532, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__25); __Pyx_GIVEREF(__pyx_tuple__25); __pyx_codeobj__26 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__25, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_set_shaders, 532, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__26)) __PYX_ERR(0, 532, __pyx_L1_error) /* "_glarea_ogl.pyx":542 * uidata.shaders_changed = True * * def set_fixedshaders(fixedshaders): # <<<<<<<<<<<<<< * pydata_postsync() * fixedshaders = [update_shader_version(s) for s in fixedshaders] */ __pyx_tuple__27 = PyTuple_Pack(1, __pyx_n_s_fixedshaders); if (unlikely(!__pyx_tuple__27)) __PYX_ERR(0, 542, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__27); __Pyx_GIVEREF(__pyx_tuple__27); __pyx_codeobj__28 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__27, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_set_fixedshaders, 542, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__28)) __PYX_ERR(0, 542, __pyx_L1_error) /* "_glarea_ogl.pyx":560 * renderdata.hud_fragsrc = uidata.hud_fragsrc * * def set_pick_position(x, y): # <<<<<<<<<<<<<< * uidata.pick_x = x * uidata.pick_y = y */ __pyx_tuple__29 = PyTuple_Pack(2, __pyx_n_s_x, __pyx_n_s_y); if (unlikely(!__pyx_tuple__29)) __PYX_ERR(0, 560, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__29); __Pyx_GIVEREF(__pyx_tuple__29); __pyx_codeobj__30 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__29, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_set_pick_position, 560, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__30)) __PYX_ERR(0, 560, __pyx_L1_error) /* "_glarea_ogl.pyx":888 * mvect[2] = v2 / u3 * * def get_cursor_angle(d): # <<<<<<<<<<<<<< * cdef float angle #px+ * cdef int i #px+ */ __pyx_tuple__31 = PyTuple_Pack(5, __pyx_n_s_d, __pyx_n_s_angle, __pyx_n_s_i, __pyx_n_s_x, __pyx_n_s_y); if (unlikely(!__pyx_tuple__31)) __PYX_ERR(0, 888, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__31); __Pyx_GIVEREF(__pyx_tuple__31); __pyx_codeobj__32 = (PyObject*)__Pyx_PyCode_New(1, 0, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__31, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_get_cursor_angle, 888, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__32)) __PYX_ERR(0, 888, __pyx_L1_error) __Pyx_RefNannyFinishContext(); return 0; __pyx_L1_error:; __Pyx_RefNannyFinishContext(); return -1; } static int __Pyx_InitGlobals(void) { if (__Pyx_InitStrings(__pyx_string_tab) < 0) __PYX_ERR(0, 1, __pyx_L1_error); __pyx_float_360_0 = PyFloat_FromDouble(360.0); if (unlikely(!__pyx_float_360_0)) __PYX_ERR(0, 1, __pyx_L1_error) __pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) __PYX_ERR(0, 1, __pyx_L1_error) __pyx_int_1 = PyInt_FromLong(1); if (unlikely(!__pyx_int_1)) __PYX_ERR(0, 1, __pyx_L1_error) __pyx_int_120 = PyInt_FromLong(120); if (unlikely(!__pyx_int_120)) __PYX_ERR(0, 1, __pyx_L1_error) __pyx_int_360 = PyInt_FromLong(360); if (unlikely(!__pyx_int_360)) __PYX_ERR(0, 1, __pyx_L1_error) __pyx_int_neg_120 = PyInt_FromLong(-120); if (unlikely(!__pyx_int_neg_120)) __PYX_ERR(0, 1, __pyx_L1_error) return 0; __pyx_L1_error:; return -1; } #if PY_MAJOR_VERSION < 3 PyMODINIT_FUNC init_glarea_ogl(void); /*proto*/ PyMODINIT_FUNC init_glarea_ogl(void) #else PyMODINIT_FUNC PyInit__glarea_ogl(void); /*proto*/ PyMODINIT_FUNC PyInit__glarea_ogl(void) #endif { PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; __Pyx_RefNannyDeclarations #if CYTHON_REFNANNY __Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny"); if (!__Pyx_RefNanny) { PyErr_Clear(); __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny"); if (!__Pyx_RefNanny) Py_FatalError("failed to import 'refnanny' module"); } #endif __Pyx_RefNannySetupContext("PyMODINIT_FUNC PyInit__glarea_ogl(void)", 0); if (__Pyx_check_binary_version() < 0) __PYX_ERR(0, 1, __pyx_L1_error) __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(0, 1, __pyx_L1_error) __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(0, 1, __pyx_L1_error) __pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(0, 1, __pyx_L1_error) #ifdef __Pyx_CyFunction_USED if (__pyx_CyFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #endif #ifdef __Pyx_FusedFunction_USED if (__pyx_FusedFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #endif #ifdef __Pyx_Coroutine_USED if (__pyx_Coroutine_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #endif #ifdef __Pyx_Generator_USED if (__pyx_Generator_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #endif #ifdef __Pyx_StopAsyncIteration_USED if (__pyx_StopAsyncIteration_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #endif /*--- Library function declarations ---*/ /*--- Threads initialization code ---*/ #if defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS #ifdef WITH_THREAD /* Python build with threading support? */ PyEval_InitThreads(); #endif #endif /*--- Module creation code ---*/ #if PY_MAJOR_VERSION < 3 __pyx_m = Py_InitModule4("_glarea_ogl", __pyx_methods, 0, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m); #else __pyx_m = PyModule_Create(&__pyx_moduledef); #endif if (unlikely(!__pyx_m)) __PYX_ERR(0, 1, __pyx_L1_error) __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) __PYX_ERR(0, 1, __pyx_L1_error) Py_INCREF(__pyx_d); __pyx_b = PyImport_AddModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_b)) __PYX_ERR(0, 1, __pyx_L1_error) #if CYTHON_COMPILING_IN_PYPY Py_INCREF(__pyx_b); #endif if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) __PYX_ERR(0, 1, __pyx_L1_error); /*--- Initialize various global constants etc. ---*/ if (__Pyx_InitGlobals() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #if PY_MAJOR_VERSION < 3 && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT) if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #endif if (__pyx_module_is_main__glarea_ogl) { if (PyObject_SetAttrString(__pyx_m, "__name__", __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error) } #if PY_MAJOR_VERSION >= 3 { PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(0, 1, __pyx_L1_error) if (!PyDict_GetItemString(modules, "_glarea_ogl")) { if (unlikely(PyDict_SetItemString(modules, "_glarea_ogl", __pyx_m) < 0)) __PYX_ERR(0, 1, __pyx_L1_error) } } #endif /*--- Builtin init code ---*/ if (__Pyx_InitCachedBuiltins() < 0) __PYX_ERR(0, 1, __pyx_L1_error) /*--- Constants init code ---*/ if (__Pyx_InitCachedConstants() < 0) __PYX_ERR(0, 1, __pyx_L1_error) /*--- Global init code ---*/ /*--- Variable export code ---*/ /*--- Function export code ---*/ if (__Pyx_ExportFunction("render_resize", (void (*)(void))__pyx_f_11_glarea_ogl_render_resize, "void (int, int, int)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("set_animation_next", (void (*)(void))__pyx_f_11_glarea_ogl_set_animation_next, "void (float)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("sync_set_fixedshaders", (void (*)(void))__pyx_f_11_glarea_ogl_sync_set_fixedshaders, "void (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("sync_set_pick_position", (void (*)(void))__pyx_f_11_glarea_ogl_sync_set_pick_position, "void (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("sync_set_atlas_data", (void (*)(void))__pyx_f_11_glarea_ogl_sync_set_atlas_data, "void (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("sync", (void (*)(void))__pyx_f_11_glarea_ogl_sync, "void (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("gl_init", (void (*)(void))__pyx_f_11_glarea_ogl_gl_init, "void (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("gl_exit", (void (*)(void))__pyx_f_11_glarea_ogl_gl_exit, "void (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("gl_set_atlas_texture", (void (*)(void))__pyx_f_11_glarea_ogl_gl_set_atlas_texture, "void (int, int)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("gl_render", (void (*)(void))__pyx_f_11_glarea_ogl_gl_render, "void (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("gl_render_select_debug", (void (*)(void))__pyx_f_11_glarea_ogl_gl_render_select_debug, "void (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("gl_pick_polygons", (void (*)(void))__pyx_f_11_glarea_ogl_gl_pick_polygons, "int (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ExportFunction("gl_create_render_program", (void (*)(void))__pyx_f_11_glarea_ogl_gl_create_render_program, "void (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) /*--- Type init code ---*/ /*--- Type import code ---*/ /*--- Variable import code ---*/ /*--- Function import code ---*/ __pyx_t_1 = __Pyx_ImportModule("_gldraw_ogl"); if (!__pyx_t_1) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_1, "matrix_set_identity", (void (**)(void))&__pyx_f_11_gldraw_ogl_matrix_set_identity, "void (__pyx_t_11_gldraw_ogl_vec4 *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_1, "init_gldraw", (void (**)(void))&__pyx_f_11_gldraw_ogl_init_gldraw, "void (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_1, "sync_block_transformations", (void (**)(void))&__pyx_f_11_gldraw_ogl_sync_block_transformations, "void (short *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_1, "sync_animation_start", (void (**)(void))&__pyx_f_11_gldraw_ogl_sync_animation_start, "void (int, short *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_1, "sync_animation_next", (void (**)(void))&__pyx_f_11_gldraw_ogl_sync_animation_next, "void (float, float, float, float)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_1, "gl_draw_cube", (void (**)(void))&__pyx_f_11_gldraw_ogl_gl_draw_cube, "void (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_1, "gl_pick_cube", (void (**)(void))&__pyx_f_11_gldraw_ogl_gl_pick_cube, "void (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_1, "gl_init_buffers", (void (**)(void))&__pyx_f_11_gldraw_ogl_gl_init_buffers, "void (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_1, "gl_delete_buffers", (void (**)(void))&__pyx_f_11_gldraw_ogl_gl_delete_buffers, "void (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_1, "sync_blocks", (void (**)(void))&__pyx_f_11_gldraw_ogl_sync_blocks, "void (int, short *, int, int, int)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_1, "sync_vertexdata", (void (**)(void))&__pyx_f_11_gldraw_ogl_sync_vertexdata, "void (int, char *, long *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_1, "sync_transformations", (void (**)(void))&__pyx_f_11_gldraw_ogl_sync_transformations, "void (int, __pyx_t_11_gldraw_ogl_mat4 *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_1, "gl_enable_data", (void (**)(void))&__pyx_f_11_gldraw_ogl_gl_enable_data, "void (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_1, "gl_disable_data", (void (**)(void))&__pyx_f_11_gldraw_ogl_gl_disable_data, "void (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_1, "gl_draw_cube_debug", (void (**)(void))&__pyx_f_11_gldraw_ogl_gl_draw_cube_debug, "void (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_1, "gl_draw_select_debug", (void (**)(void))&__pyx_f_11_gldraw_ogl_gl_draw_select_debug, "void (GLfloat *, GLsizeiptr, GLuint)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_1, "gl_init_object_location", (void (**)(void))&__pyx_f_11_gldraw_ogl_gl_init_object_location, "void (GLuint)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) Py_DECREF(__pyx_t_1); __pyx_t_1 = 0; /*--- Execution code ---*/ #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) if (__Pyx_patch_abc() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #endif /* "_glarea_ogl.pyx":25 * # This line makes cython happy * global __name__, __package__ # pylint: disable=W0604 * __compiled = True #px/ # <<<<<<<<<<<<<< * #__compiled = False * DEF OFFSCREEN = False #px/ */ if (PyDict_SetItem(__pyx_d, __pyx_n_s_compiled_2, Py_True) < 0) __PYX_ERR(0, 25, __pyx_L1_error) /* "_glarea_ogl.pyx":62 * DEBUG_PICK = 0x20 * cdef long debug #px+ * debug = 0 # <<<<<<<<<<<<<< * * def set_debug_flags(module): */ __pyx_v_11_glarea_ogl_debug = 0; /* "_glarea_ogl.pyx":64 * debug = 0 * * def set_debug_flags(module): # <<<<<<<<<<<<<< * global debug * if module.DEBUG_MSGGL: debug |= DEBUG_MSGGL */ __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_11_glarea_ogl_1set_debug_flags, NULL, __pyx_n_s_glarea_ogl); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 64, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_set_debug_flags, __pyx_t_2) < 0) __PYX_ERR(0, 64, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_glarea_ogl.pyx":195 * cdef UIData uidata #px+ * * class syncpydata: pass # <<<<<<<<<<<<<< * class uipydata: pass * pydata = {} */ __pyx_t_2 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_syncpydata, __pyx_n_s_syncpydata, (PyObject *) NULL, __pyx_n_s_glarea_ogl, (PyObject *) NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 195, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_Py3ClassCreate(((PyObject*)&__Pyx_DefaultClassType), __pyx_n_s_syncpydata, __pyx_empty_tuple, __pyx_t_2, NULL, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 195, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_d, __pyx_n_s_syncpydata, __pyx_t_3) < 0) __PYX_ERR(0, 195, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_glarea_ogl.pyx":196 * * class syncpydata: pass * class uipydata: pass # <<<<<<<<<<<<<< * pydata = {} * */ __pyx_t_2 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_uipydata, __pyx_n_s_uipydata, (PyObject *) NULL, __pyx_n_s_glarea_ogl, (PyObject *) NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 196, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_Py3ClassCreate(((PyObject*)&__Pyx_DefaultClassType), __pyx_n_s_uipydata, __pyx_empty_tuple, __pyx_t_2, NULL, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 196, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_d, __pyx_n_s_uipydata, __pyx_t_3) < 0) __PYX_ERR(0, 196, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_glarea_ogl.pyx":197 * class syncpydata: pass * class uipydata: pass * pydata = {} # <<<<<<<<<<<<<< * * */ __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 197, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_pydata, __pyx_t_2) < 0) __PYX_ERR(0, 197, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_glarea_ogl.pyx":269 * ### module state * * def init_engine(): # <<<<<<<<<<<<<< * gldraw.init_gldraw() * if debug & DEBUG_MSGEXT: */ __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_11_glarea_ogl_3init_engine, NULL, __pyx_n_s_glarea_ogl); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 269, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_init_engine, __pyx_t_2) < 0) __PYX_ERR(0, 269, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_glarea_ogl.pyx":352 * M[0][2] = -m11 * m20; M[1][2] = m12; M[2][2] = m00 * m11 * * def set_rotation_rel(x, y): # <<<<<<<<<<<<<< * cdef gldraw.vec4 quat #px+ * cdef float nxy #px+ */ __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_11_glarea_ogl_5set_rotation_rel, NULL, __pyx_n_s_glarea_ogl); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 352, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_set_rotation_rel, __pyx_t_2) < 0) __PYX_ERR(0, 352, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_glarea_ogl.pyx":440 * renderdata.picking_matrix[1][1] = 1. * * def set_frustum(bounding_sphere_radius, zoom): # <<<<<<<<<<<<<< * uidata.frustum_changed = True * if bounding_sphere_radius > 0: */ __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_11_glarea_ogl_7set_frustum, NULL, __pyx_n_s_glarea_ogl); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 440, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_set_frustum, __pyx_t_2) < 0) __PYX_ERR(0, 440, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_glarea_ogl.pyx":446 * uidata.fovy_radius_zoom = uidata.fovy_radius / zoom * * def set_background_color(red, green, blue): # <<<<<<<<<<<<<< * uidata.background_changed = True * uidata.bg_red = red */ __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_11_glarea_ogl_9set_background_color, NULL, __pyx_n_s_glarea_ogl); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 446, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_set_background_color, __pyx_t_2) < 0) __PYX_ERR(0, 446, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_glarea_ogl.pyx":452 * uidata.bg_blue = blue * * def set_antialiasing(multisample): # <<<<<<<<<<<<<< * uidata.multisample_changed = 2 if multisample else 1 * */ __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_11_glarea_ogl_11set_antialiasing, NULL, __pyx_n_s_glarea_ogl); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 452, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_set_antialiasing, __pyx_t_2) < 0) __PYX_ERR(0, 452, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_glarea_ogl.pyx":455 * uidata.multisample_changed = 2 if multisample else 1 * * def set_rotation_xy(x, y): # <<<<<<<<<<<<<< * x %= 360 * # pylint: disable=C0321 */ __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_11_glarea_ogl_13set_rotation_xy, NULL, __pyx_n_s_glarea_ogl); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 455, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_set_rotation_xy, __pyx_t_2) < 0) __PYX_ERR(0, 455, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_glarea_ogl.pyx":472 * uidata.viewport_changed = True * * def set_transformations(blocks): # <<<<<<<<<<<<<< * assert uidata.nblocks == len(blocks) * cdef int i #px+ */ __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_11_glarea_ogl_15set_transformations, NULL, __pyx_n_s_glarea_ogl); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 472, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_set_transformations, __pyx_t_2) < 0) __PYX_ERR(0, 472, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_glarea_ogl.pyx":496 * uidata.animation_changed = 2 * * def set_data(nblocks, vertexdata, vertexpointers, vertexinfo, transformations): # <<<<<<<<<<<<<< * pydata_postsync() * cdef int t,i,j #px+ */ __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_11_glarea_ogl_19set_data, NULL, __pyx_n_s_glarea_ogl); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 496, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_set_data, __pyx_t_2) < 0) __PYX_ERR(0, 496, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_glarea_ogl.pyx":519 * uidata.data_changed = True * * def pydata_postsync(): # <<<<<<<<<<<<<< * global pydata_backed * if uidata.synced: */ __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_11_glarea_ogl_21pydata_postsync, NULL, __pyx_n_s_glarea_ogl); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 519, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_pydata_postsync, __pyx_t_2) < 0) __PYX_ERR(0, 519, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_glarea_ogl.pyx":525 * uidata.synced = False * * def update_shader_version(shader_src): # <<<<<<<<<<<<<< * assert shader_src.startswith(b'#version 120\n') * IF 'ogl' == 'es2': #px/ */ __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_11_glarea_ogl_23update_shader_version, NULL, __pyx_n_s_glarea_ogl); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 525, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_update_shader_version, __pyx_t_2) < 0) __PYX_ERR(0, 525, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_glarea_ogl.pyx":532 * return shader_src * * def set_shaders(shader_vertsrc, shader_fragsrc): # <<<<<<<<<<<<<< * pydata_postsync() * shader_vertsrc = update_shader_version(shader_vertsrc) */ __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_11_glarea_ogl_25set_shaders, NULL, __pyx_n_s_glarea_ogl); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 532, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_set_shaders, __pyx_t_2) < 0) __PYX_ERR(0, 532, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_glarea_ogl.pyx":542 * uidata.shaders_changed = True * * def set_fixedshaders(fixedshaders): # <<<<<<<<<<<<<< * pydata_postsync() * fixedshaders = [update_shader_version(s) for s in fixedshaders] */ __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_11_glarea_ogl_27set_fixedshaders, NULL, __pyx_n_s_glarea_ogl); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 542, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_set_fixedshaders, __pyx_t_2) < 0) __PYX_ERR(0, 542, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_glarea_ogl.pyx":560 * renderdata.hud_fragsrc = uidata.hud_fragsrc * * def set_pick_position(x, y): # <<<<<<<<<<<<<< * uidata.pick_x = x * uidata.pick_y = y */ __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_11_glarea_ogl_29set_pick_position, NULL, __pyx_n_s_glarea_ogl); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 560, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_set_pick_position, __pyx_t_2) < 0) __PYX_ERR(0, 560, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_glarea_ogl.pyx":888 * mvect[2] = v2 / u3 * * def get_cursor_angle(d): # <<<<<<<<<<<<<< * cdef float angle #px+ * cdef int i #px+ */ __pyx_t_2 = PyCFunction_NewEx(&__pyx_mdef_11_glarea_ogl_33get_cursor_angle, NULL, __pyx_n_s_glarea_ogl); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 888, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_cursor_angle, __pyx_t_2) < 0) __PYX_ERR(0, 888, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_glarea_ogl.pyx":1 * #-*- coding:utf-8 -*- # <<<<<<<<<<<<<< * # cython: profile=False * */ __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /*--- Wrapped vars code ---*/ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); if (__pyx_m) { if (__pyx_d) { __Pyx_AddTraceback("init _glarea_ogl", __pyx_clineno, __pyx_lineno, __pyx_filename); } Py_DECREF(__pyx_m); __pyx_m = 0; } else if (!PyErr_Occurred()) { PyErr_SetString(PyExc_ImportError, "init _glarea_ogl"); } __pyx_L0:; __Pyx_RefNannyFinishContext(); #if PY_MAJOR_VERSION < 3 return; #else return __pyx_m; #endif } /* --- Runtime support code --- */ /* Refnanny */ #if CYTHON_REFNANNY static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) { PyObject *m = NULL, *p = NULL; void *r = NULL; m = PyImport_ImportModule((char *)modname); if (!m) goto end; p = PyObject_GetAttrString(m, (char *)"RefNannyAPI"); if (!p) goto end; r = PyLong_AsVoidPtr(p); end: Py_XDECREF(p); Py_XDECREF(m); return (__Pyx_RefNannyAPIStruct *)r; } #endif /* GetBuiltinName */ static PyObject *__Pyx_GetBuiltinName(PyObject *name) { PyObject* result = __Pyx_PyObject_GetAttrStr(__pyx_b, name); if (unlikely(!result)) { PyErr_Format(PyExc_NameError, #if PY_MAJOR_VERSION >= 3 "name '%U' is not defined", name); #else "name '%.200s' is not defined", PyString_AS_STRING(name)); #endif } return result; } /* PyErrFetchRestore */ #if CYTHON_FAST_THREAD_STATE static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { PyObject *tmp_type, *tmp_value, *tmp_tb; tmp_type = tstate->curexc_type; tmp_value = tstate->curexc_value; tmp_tb = tstate->curexc_traceback; tstate->curexc_type = type; tstate->curexc_value = value; tstate->curexc_traceback = tb; Py_XDECREF(tmp_type); Py_XDECREF(tmp_value); Py_XDECREF(tmp_tb); } static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { *type = tstate->curexc_type; *value = tstate->curexc_value; *tb = tstate->curexc_traceback; tstate->curexc_type = 0; tstate->curexc_value = 0; tstate->curexc_traceback = 0; } #endif /* WriteUnraisableException */ static void __Pyx_WriteUnraisable(const char *name, CYTHON_UNUSED int clineno, CYTHON_UNUSED int lineno, CYTHON_UNUSED const char *filename, int full_traceback, CYTHON_UNUSED int nogil) { PyObject *old_exc, *old_val, *old_tb; PyObject *ctx; __Pyx_PyThreadState_declare #ifdef WITH_THREAD PyGILState_STATE state; if (nogil) state = PyGILState_Ensure(); #ifdef _MSC_VER else state = (PyGILState_STATE)-1; #endif #endif __Pyx_PyThreadState_assign __Pyx_ErrFetch(&old_exc, &old_val, &old_tb); if (full_traceback) { Py_XINCREF(old_exc); Py_XINCREF(old_val); Py_XINCREF(old_tb); __Pyx_ErrRestore(old_exc, old_val, old_tb); PyErr_PrintEx(1); } #if PY_MAJOR_VERSION < 3 ctx = PyString_FromString(name); #else ctx = PyUnicode_FromString(name); #endif __Pyx_ErrRestore(old_exc, old_val, old_tb); if (!ctx) { PyErr_WriteUnraisable(Py_None); } else { PyErr_WriteUnraisable(ctx); Py_DECREF(ctx); } #ifdef WITH_THREAD if (nogil) PyGILState_Release(state); #endif } /* GetModuleGlobalName */ static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name) { PyObject *result; #if !CYTHON_AVOID_BORROWED_REFS result = PyDict_GetItem(__pyx_d, name); if (likely(result)) { Py_INCREF(result); } else { #else result = PyObject_GetItem(__pyx_d, name); if (!result) { PyErr_Clear(); #endif result = __Pyx_GetBuiltinName(name); } return result; } /* PyObjectCall */ #if CYTHON_COMPILING_IN_CPYTHON static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) { PyObject *result; ternaryfunc call = func->ob_type->tp_call; if (unlikely(!call)) return PyObject_Call(func, arg, kw); if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) return NULL; result = (*call)(func, arg, kw); Py_LeaveRecursiveCall(); if (unlikely(!result) && unlikely(!PyErr_Occurred())) { PyErr_SetString( PyExc_SystemError, "NULL result without error in PyObject_Call"); } return result; } #endif /* RaiseArgTupleInvalid */ static void __Pyx_RaiseArgtupleInvalid( const char* func_name, int exact, Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found) { Py_ssize_t num_expected; const char *more_or_less; if (num_found < num_min) { num_expected = num_min; more_or_less = "at least"; } else { num_expected = num_max; more_or_less = "at most"; } if (exact) { more_or_less = "exactly"; } PyErr_Format(PyExc_TypeError, "%.200s() takes %.8s %" CYTHON_FORMAT_SSIZE_T "d positional argument%.1s (%" CYTHON_FORMAT_SSIZE_T "d given)", func_name, more_or_less, num_expected, (num_expected == 1) ? "" : "s", num_found); } /* RaiseDoubleKeywords */ static void __Pyx_RaiseDoubleKeywordsError( const char* func_name, PyObject* kw_name) { PyErr_Format(PyExc_TypeError, #if PY_MAJOR_VERSION >= 3 "%s() got multiple values for keyword argument '%U'", func_name, kw_name); #else "%s() got multiple values for keyword argument '%s'", func_name, PyString_AsString(kw_name)); #endif } /* ParseKeywords */ static int __Pyx_ParseOptionalKeywords( PyObject *kwds, PyObject **argnames[], PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args, const char* function_name) { PyObject *key = 0, *value = 0; Py_ssize_t pos = 0; PyObject*** name; PyObject*** first_kw_arg = argnames + num_pos_args; while (PyDict_Next(kwds, &pos, &key, &value)) { name = first_kw_arg; while (*name && (**name != key)) name++; if (*name) { values[name-argnames] = value; continue; } name = first_kw_arg; #if PY_MAJOR_VERSION < 3 if (likely(PyString_CheckExact(key)) || likely(PyString_Check(key))) { while (*name) { if ((CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**name) == PyString_GET_SIZE(key)) && _PyString_Eq(**name, key)) { values[name-argnames] = value; break; } name++; } if (*name) continue; else { PyObject*** argname = argnames; while (argname != first_kw_arg) { if ((**argname == key) || ( (CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**argname) == PyString_GET_SIZE(key)) && _PyString_Eq(**argname, key))) { goto arg_passed_twice; } argname++; } } } else #endif if (likely(PyUnicode_Check(key))) { while (*name) { int cmp = (**name == key) ? 0 : #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 (PyUnicode_GET_SIZE(**name) != PyUnicode_GET_SIZE(key)) ? 1 : #endif PyUnicode_Compare(**name, key); if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; if (cmp == 0) { values[name-argnames] = value; break; } name++; } if (*name) continue; else { PyObject*** argname = argnames; while (argname != first_kw_arg) { int cmp = (**argname == key) ? 0 : #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 (PyUnicode_GET_SIZE(**argname) != PyUnicode_GET_SIZE(key)) ? 1 : #endif PyUnicode_Compare(**argname, key); if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; if (cmp == 0) goto arg_passed_twice; argname++; } } } else goto invalid_keyword_type; if (kwds2) { if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad; } else { goto invalid_keyword; } } return 0; arg_passed_twice: __Pyx_RaiseDoubleKeywordsError(function_name, key); goto bad; invalid_keyword_type: PyErr_Format(PyExc_TypeError, "%.200s() keywords must be strings", function_name); goto bad; invalid_keyword: PyErr_Format(PyExc_TypeError, #if PY_MAJOR_VERSION < 3 "%.200s() got an unexpected keyword argument '%.200s'", function_name, PyString_AsString(key)); #else "%s() got an unexpected keyword argument '%U'", function_name, key); #endif bad: return -1; } /* PyIntBinop */ #if !CYTHON_COMPILING_IN_PYPY static PyObject* __Pyx_PyInt_RemainderObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED int inplace) { #if PY_MAJOR_VERSION < 3 if (likely(PyInt_CheckExact(op1))) { const long b = intval; long x; long a = PyInt_AS_LONG(op1); x = a % b; x += ((x != 0) & ((x ^ b) < 0)) * b; return PyInt_FromLong(x); } #endif #if CYTHON_USE_PYLONG_INTERNALS if (likely(PyLong_CheckExact(op1))) { const long b = intval; long a, x; #ifdef HAVE_LONG_LONG const PY_LONG_LONG llb = intval; PY_LONG_LONG lla, llx; #endif const digit* digits = ((PyLongObject*)op1)->ob_digit; const Py_ssize_t size = Py_SIZE(op1); if (likely(__Pyx_sst_abs(size) <= 1)) { a = likely(size) ? digits[0] : 0; if (size == -1) a = -a; } else { switch (size) { case -2: if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; #ifdef HAVE_LONG_LONG } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) { lla = -(PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); goto long_long; #endif } case 2: if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; #ifdef HAVE_LONG_LONG } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) { lla = (PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); goto long_long; #endif } case -3: if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; #ifdef HAVE_LONG_LONG } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) { lla = -(PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); goto long_long; #endif } case 3: if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; #ifdef HAVE_LONG_LONG } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) { lla = (PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); goto long_long; #endif } case -4: if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; #ifdef HAVE_LONG_LONG } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) { lla = -(PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); goto long_long; #endif } case 4: if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; #ifdef HAVE_LONG_LONG } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) { lla = (PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); goto long_long; #endif } default: return PyLong_Type.tp_as_number->nb_remainder(op1, op2); } } x = a % b; x += ((x != 0) & ((x ^ b) < 0)) * b; return PyLong_FromLong(x); #ifdef HAVE_LONG_LONG long_long: llx = lla % llb; llx += ((llx != 0) & ((llx ^ llb) < 0)) * llb; return PyLong_FromLongLong(llx); #endif } #endif return (inplace ? PyNumber_InPlaceRemainder : PyNumber_Remainder)(op1, op2); } #endif /* PyFloatBinop */ #if !CYTHON_COMPILING_IN_PYPY static PyObject* __Pyx_PyFloat_TrueDivideObjC(PyObject *op1, PyObject *op2, double floatval, CYTHON_UNUSED int inplace) { const double b = floatval; double a, result; if (likely(PyFloat_CheckExact(op1))) { a = PyFloat_AS_DOUBLE(op1); } else #if PY_MAJOR_VERSION < 3 if (likely(PyInt_CheckExact(op1))) { a = (double) PyInt_AS_LONG(op1); } else #endif if (likely(PyLong_CheckExact(op1))) { #if CYTHON_USE_PYLONG_INTERNALS const digit* digits = ((PyLongObject*)op1)->ob_digit; const Py_ssize_t size = Py_SIZE(op1); switch (size) { case 0: a = 0.0; break; case -1: a = -(double) digits[0]; break; case 1: a = (double) digits[0]; break; case -2: case 2: if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT && ((8 * sizeof(unsigned long) < 53) || (1 * PyLong_SHIFT < 53))) { a = (double) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); if ((8 * sizeof(unsigned long) < 53) || (2 * PyLong_SHIFT < 53) || (a < (double) (1L<<53))) { if (size == -2) a = -a; break; } } case -3: case 3: if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT && ((8 * sizeof(unsigned long) < 53) || (2 * PyLong_SHIFT < 53))) { a = (double) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); if ((8 * sizeof(unsigned long) < 53) || (3 * PyLong_SHIFT < 53) || (a < (double) (1L<<53))) { if (size == -3) a = -a; break; } } case -4: case 4: if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT && ((8 * sizeof(unsigned long) < 53) || (3 * PyLong_SHIFT < 53))) { a = (double) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); if ((8 * sizeof(unsigned long) < 53) || (4 * PyLong_SHIFT < 53) || (a < (double) (1L<<53))) { if (size == -4) a = -a; break; } } default: #else { #endif a = PyLong_AsDouble(op1); if (unlikely(a == -1.0 && PyErr_Occurred())) return NULL; } } else { return (inplace ? PyNumber_InPlaceTrueDivide : PyNumber_TrueDivide)(op1, op2); } PyFPE_START_PROTECT("divide", return NULL) result = a / b; PyFPE_END_PROTECT(result) return PyFloat_FromDouble(result); } #endif /* RaiseTooManyValuesToUnpack */ static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) { PyErr_Format(PyExc_ValueError, "too many values to unpack (expected %" CYTHON_FORMAT_SSIZE_T "d)", expected); } /* RaiseNeedMoreValuesToUnpack */ static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) { PyErr_Format(PyExc_ValueError, "need more than %" CYTHON_FORMAT_SSIZE_T "d value%.1s to unpack", index, (index == 1) ? "" : "s"); } /* IterFinish */ static CYTHON_INLINE int __Pyx_IterFinish(void) { #if CYTHON_FAST_THREAD_STATE PyThreadState *tstate = PyThreadState_GET(); PyObject* exc_type = tstate->curexc_type; if (unlikely(exc_type)) { if (likely(exc_type == PyExc_StopIteration) || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)) { PyObject *exc_value, *exc_tb; exc_value = tstate->curexc_value; exc_tb = tstate->curexc_traceback; tstate->curexc_type = 0; tstate->curexc_value = 0; tstate->curexc_traceback = 0; Py_DECREF(exc_type); Py_XDECREF(exc_value); Py_XDECREF(exc_tb); return 0; } else { return -1; } } return 0; #else if (unlikely(PyErr_Occurred())) { if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) { PyErr_Clear(); return 0; } else { return -1; } } return 0; #endif } /* UnpackItemEndCheck */ static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected) { if (unlikely(retval)) { Py_DECREF(retval); __Pyx_RaiseTooManyValuesError(expected); return -1; } else { return __Pyx_IterFinish(); } return 0; } /* PyIntBinop */ #if !CYTHON_COMPILING_IN_PYPY static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED int inplace) { #if PY_MAJOR_VERSION < 3 if (likely(PyInt_CheckExact(op1))) { const long b = intval; long x; long a = PyInt_AS_LONG(op1); x = (long)((unsigned long)a + b); if (likely((x^a) >= 0 || (x^b) >= 0)) return PyInt_FromLong(x); return PyLong_Type.tp_as_number->nb_add(op1, op2); } #endif #if CYTHON_USE_PYLONG_INTERNALS if (likely(PyLong_CheckExact(op1))) { const long b = intval; long a, x; #ifdef HAVE_LONG_LONG const PY_LONG_LONG llb = intval; PY_LONG_LONG lla, llx; #endif const digit* digits = ((PyLongObject*)op1)->ob_digit; const Py_ssize_t size = Py_SIZE(op1); if (likely(__Pyx_sst_abs(size) <= 1)) { a = likely(size) ? digits[0] : 0; if (size == -1) a = -a; } else { switch (size) { case -2: if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; #ifdef HAVE_LONG_LONG } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) { lla = -(PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); goto long_long; #endif } case 2: if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; #ifdef HAVE_LONG_LONG } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) { lla = (PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); goto long_long; #endif } case -3: if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; #ifdef HAVE_LONG_LONG } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) { lla = -(PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); goto long_long; #endif } case 3: if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; #ifdef HAVE_LONG_LONG } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) { lla = (PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); goto long_long; #endif } case -4: if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; #ifdef HAVE_LONG_LONG } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) { lla = -(PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); goto long_long; #endif } case 4: if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; #ifdef HAVE_LONG_LONG } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) { lla = (PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); goto long_long; #endif } default: return PyLong_Type.tp_as_number->nb_add(op1, op2); } } x = a + b; return PyLong_FromLong(x); #ifdef HAVE_LONG_LONG long_long: llx = lla + llb; return PyLong_FromLongLong(llx); #endif } #endif if (PyFloat_CheckExact(op1)) { const long b = intval; double a = PyFloat_AS_DOUBLE(op1); double result; PyFPE_START_PROTECT("add", return NULL) result = ((double)a) + (double)b; PyFPE_END_PROTECT(result) return PyFloat_FromDouble(result); } return (inplace ? PyNumber_InPlaceAdd : PyNumber_Add)(op1, op2); } #endif /* None */ static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname) { PyErr_Format(PyExc_UnboundLocalError, "local variable '%s' referenced before assignment", varname); } /* PyCFunctionFastCall */ #if CYTHON_FAST_PYCCALL static CYTHON_INLINE PyObject * __Pyx_PyCFunction_FastCall(PyObject *func_obj, PyObject **args, Py_ssize_t nargs) { PyCFunctionObject *func = (PyCFunctionObject*)func_obj; PyCFunction meth = PyCFunction_GET_FUNCTION(func); PyObject *self = PyCFunction_GET_SELF(func); assert(PyCFunction_Check(func)); assert(METH_FASTCALL == (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST))); assert(nargs >= 0); assert(nargs == 0 || args != NULL); /* _PyCFunction_FastCallDict() must not be called with an exception set, because it may clear it (directly or indirectly) and so the caller loses its exception */ assert(!PyErr_Occurred()); return (*((__Pyx_PyCFunctionFast)meth)) (self, args, nargs, NULL); } #endif // CYTHON_FAST_PYCCALL /* PyFunctionFastCall */ #if CYTHON_FAST_PYCALL #include "frameobject.h" static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args, Py_ssize_t na, PyObject *globals) { PyFrameObject *f; PyThreadState *tstate = PyThreadState_GET(); PyObject **fastlocals; Py_ssize_t i; PyObject *result; assert(globals != NULL); /* XXX Perhaps we should create a specialized PyFrame_New() that doesn't take locals, but does take builtins without sanity checking them. */ assert(tstate != NULL); f = PyFrame_New(tstate, co, globals, NULL); if (f == NULL) { return NULL; } fastlocals = f->f_localsplus; for (i = 0; i < na; i++) { Py_INCREF(*args); fastlocals[i] = *args++; } result = PyEval_EvalFrameEx(f,0); ++tstate->recursion_depth; Py_DECREF(f); --tstate->recursion_depth; return result; } #if 1 || PY_VERSION_HEX < 0x030600B1 static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, int nargs, PyObject *kwargs) { PyCodeObject *co = (PyCodeObject *)PyFunction_GET_CODE(func); PyObject *globals = PyFunction_GET_GLOBALS(func); PyObject *argdefs = PyFunction_GET_DEFAULTS(func); PyObject *closure; #if PY_MAJOR_VERSION >= 3 PyObject *kwdefs; #endif PyObject *kwtuple, **k; PyObject **d; Py_ssize_t nd; Py_ssize_t nk; PyObject *result; assert(kwargs == NULL || PyDict_Check(kwargs)); nk = kwargs ? PyDict_Size(kwargs) : 0; if (Py_EnterRecursiveCall((char*)" while calling a Python object")) { return NULL; } if ( #if PY_MAJOR_VERSION >= 3 co->co_kwonlyargcount == 0 && #endif likely(kwargs == NULL || nk == 0) && co->co_flags == (CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE)) { if (argdefs == NULL && co->co_argcount == nargs) { result = __Pyx_PyFunction_FastCallNoKw(co, args, nargs, globals); goto done; } else if (nargs == 0 && argdefs != NULL && co->co_argcount == Py_SIZE(argdefs)) { /* function called with no arguments, but all parameters have a default value: use default values as arguments .*/ args = &PyTuple_GET_ITEM(argdefs, 0); result =__Pyx_PyFunction_FastCallNoKw(co, args, Py_SIZE(argdefs), globals); goto done; } } if (kwargs != NULL) { Py_ssize_t pos, i; kwtuple = PyTuple_New(2 * nk); if (kwtuple == NULL) { result = NULL; goto done; } k = &PyTuple_GET_ITEM(kwtuple, 0); pos = i = 0; while (PyDict_Next(kwargs, &pos, &k[i], &k[i+1])) { Py_INCREF(k[i]); Py_INCREF(k[i+1]); i += 2; } nk = i / 2; } else { kwtuple = NULL; k = NULL; } closure = PyFunction_GET_CLOSURE(func); #if PY_MAJOR_VERSION >= 3 kwdefs = PyFunction_GET_KW_DEFAULTS(func); #endif if (argdefs != NULL) { d = &PyTuple_GET_ITEM(argdefs, 0); nd = Py_SIZE(argdefs); } else { d = NULL; nd = 0; } #if PY_MAJOR_VERSION >= 3 result = PyEval_EvalCodeEx((PyObject*)co, globals, (PyObject *)NULL, args, nargs, k, (int)nk, d, (int)nd, kwdefs, closure); #else result = PyEval_EvalCodeEx(co, globals, (PyObject *)NULL, args, nargs, k, (int)nk, d, (int)nd, closure); #endif Py_XDECREF(kwtuple); done: Py_LeaveRecursiveCall(); return result; } #endif // CPython < 3.6 #endif // CYTHON_FAST_PYCALL /* PyObjectCallMethO */ #if CYTHON_COMPILING_IN_CPYTHON static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) { PyObject *self, *result; PyCFunction cfunc; cfunc = PyCFunction_GET_FUNCTION(func); self = PyCFunction_GET_SELF(func); if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) return NULL; result = cfunc(self, arg); Py_LeaveRecursiveCall(); if (unlikely(!result) && unlikely(!PyErr_Occurred())) { PyErr_SetString( PyExc_SystemError, "NULL result without error in PyObject_Call"); } return result; } #endif /* PyObjectCallOneArg */ #if CYTHON_COMPILING_IN_CPYTHON static PyObject* __Pyx__PyObject_CallOneArg(PyObject *func, PyObject *arg) { PyObject *result; PyObject *args = PyTuple_New(1); if (unlikely(!args)) return NULL; Py_INCREF(arg); PyTuple_SET_ITEM(args, 0, arg); result = __Pyx_PyObject_Call(func, args, NULL); Py_DECREF(args); return result; } static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { #if CYTHON_FAST_PYCALL if (PyFunction_Check(func)) { return __Pyx_PyFunction_FastCall(func, &arg, 1); } #endif #ifdef __Pyx_CyFunction_USED if (likely(PyCFunction_Check(func) || PyObject_TypeCheck(func, __pyx_CyFunctionType))) { #else if (likely(PyCFunction_Check(func))) { #endif if (likely(PyCFunction_GET_FLAGS(func) & METH_O)) { return __Pyx_PyObject_CallMethO(func, arg); #if CYTHON_FAST_PYCCALL } else if (PyCFunction_GET_FLAGS(func) & METH_FASTCALL) { return __Pyx_PyCFunction_FastCall(func, &arg, 1); #endif } } return __Pyx__PyObject_CallOneArg(func, arg); } #else static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { PyObject *result; PyObject *args = PyTuple_Pack(1, arg); if (unlikely(!args)) return NULL; result = __Pyx_PyObject_Call(func, args, NULL); Py_DECREF(args); return result; } #endif /* PyObjectCallNoArg */ #if CYTHON_COMPILING_IN_CPYTHON static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) { #if CYTHON_FAST_PYCALL if (PyFunction_Check(func)) { return __Pyx_PyFunction_FastCall(func, NULL, 0); } #endif #ifdef __Pyx_CyFunction_USED if (likely(PyCFunction_Check(func) || PyObject_TypeCheck(func, __pyx_CyFunctionType))) { #else if (likely(PyCFunction_Check(func))) { #endif if (likely(PyCFunction_GET_FLAGS(func) & METH_NOARGS)) { return __Pyx_PyObject_CallMethO(func, NULL); } } return __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL); } #endif /* GetItemInt */ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) { PyObject *r; if (!j) return NULL; r = PyObject_GetItem(o, j); Py_DECREF(j); return r; } static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, CYTHON_NCP_UNUSED int wraparound, CYTHON_NCP_UNUSED int boundscheck) { #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (wraparound & unlikely(i < 0)) i += PyList_GET_SIZE(o); if ((!boundscheck) || likely((0 <= i) & (i < PyList_GET_SIZE(o)))) { PyObject *r = PyList_GET_ITEM(o, i); Py_INCREF(r); return r; } return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); #else return PySequence_GetItem(o, i); #endif } static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, CYTHON_NCP_UNUSED int wraparound, CYTHON_NCP_UNUSED int boundscheck) { #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (wraparound & unlikely(i < 0)) i += PyTuple_GET_SIZE(o); if ((!boundscheck) || likely((0 <= i) & (i < PyTuple_GET_SIZE(o)))) { PyObject *r = PyTuple_GET_ITEM(o, i); Py_INCREF(r); return r; } return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); #else return PySequence_GetItem(o, i); #endif } static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, int is_list, CYTHON_NCP_UNUSED int wraparound, CYTHON_NCP_UNUSED int boundscheck) { #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS if (is_list || PyList_CheckExact(o)) { Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyList_GET_SIZE(o); if ((!boundscheck) || (likely((n >= 0) & (n < PyList_GET_SIZE(o))))) { PyObject *r = PyList_GET_ITEM(o, n); Py_INCREF(r); return r; } } else if (PyTuple_CheckExact(o)) { Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o); if ((!boundscheck) || likely((n >= 0) & (n < PyTuple_GET_SIZE(o)))) { PyObject *r = PyTuple_GET_ITEM(o, n); Py_INCREF(r); return r; } } else { PySequenceMethods *m = Py_TYPE(o)->tp_as_sequence; if (likely(m && m->sq_item)) { if (wraparound && unlikely(i < 0) && likely(m->sq_length)) { Py_ssize_t l = m->sq_length(o); if (likely(l >= 0)) { i += l; } else { if (!PyErr_ExceptionMatches(PyExc_OverflowError)) return NULL; PyErr_Clear(); } } return m->sq_item(o, i); } } #else if (is_list || PySequence_Check(o)) { return PySequence_GetItem(o, i); } #endif return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); } /* pyobject_as_double */ static double __Pyx__PyObject_AsDouble(PyObject* obj) { PyObject* float_value; #if !CYTHON_USE_TYPE_SLOTS float_value = PyNumber_Float(obj); if (0) goto bad; #else PyNumberMethods *nb = Py_TYPE(obj)->tp_as_number; if (likely(nb) && likely(nb->nb_float)) { float_value = nb->nb_float(obj); if (likely(float_value) && unlikely(!PyFloat_Check(float_value))) { PyErr_Format(PyExc_TypeError, "__float__ returned non-float (type %.200s)", Py_TYPE(float_value)->tp_name); Py_DECREF(float_value); goto bad; } } else if (PyUnicode_CheckExact(obj) || PyBytes_CheckExact(obj)) { #if PY_MAJOR_VERSION >= 3 float_value = PyFloat_FromString(obj); #else float_value = PyFloat_FromString(obj, 0); #endif } else { PyObject* args = PyTuple_New(1); if (unlikely(!args)) goto bad; PyTuple_SET_ITEM(args, 0, obj); float_value = PyObject_Call((PyObject*)&PyFloat_Type, args, 0); PyTuple_SET_ITEM(args, 0, 0); Py_DECREF(args); } #endif if (likely(float_value)) { double value = PyFloat_AS_DOUBLE(float_value); Py_DECREF(float_value); return value; } bad: return (double)-1; } /* PyObjectCallMethod1 */ static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg) { PyObject *method, *result = NULL; method = __Pyx_PyObject_GetAttrStr(obj, method_name); if (unlikely(!method)) goto done; #if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(method))) { PyObject *self = PyMethod_GET_SELF(method); if (likely(self)) { PyObject *args; PyObject *function = PyMethod_GET_FUNCTION(method); #if CYTHON_FAST_PYCALL if (PyFunction_Check(function)) { PyObject *args[2] = {self, arg}; result = __Pyx_PyFunction_FastCall(function, args, 2); goto done; } #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(function)) { PyObject *args[2] = {self, arg}; result = __Pyx_PyCFunction_FastCall(function, args, 2); goto done; } #endif args = PyTuple_New(2); if (unlikely(!args)) goto done; Py_INCREF(self); PyTuple_SET_ITEM(args, 0, self); Py_INCREF(arg); PyTuple_SET_ITEM(args, 1, arg); Py_INCREF(function); Py_DECREF(method); method = NULL; result = __Pyx_PyObject_Call(function, args, NULL); Py_DECREF(args); Py_DECREF(function); return result; } } #endif result = __Pyx_PyObject_CallOneArg(method, arg); done: Py_XDECREF(method); return result; } /* append */ static CYTHON_INLINE int __Pyx_PyObject_Append(PyObject* L, PyObject* x) { if (likely(PyList_CheckExact(L))) { if (unlikely(__Pyx_PyList_Append(L, x) < 0)) return -1; } else { PyObject* retval = __Pyx_PyObject_CallMethod1(L, __pyx_n_s_append, x); if (unlikely(!retval)) return -1; Py_DECREF(retval); } return 0; } /* ArgTypeTest */ static void __Pyx_RaiseArgumentTypeInvalid(const char* name, PyObject *obj, PyTypeObject *type) { PyErr_Format(PyExc_TypeError, "Argument '%.200s' has incorrect type (expected %.200s, got %.200s)", name, type->tp_name, Py_TYPE(obj)->tp_name); } static CYTHON_INLINE int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *type, int none_allowed, const char *name, int exact) { if (unlikely(!type)) { PyErr_SetString(PyExc_SystemError, "Missing type object"); return 0; } if (none_allowed && obj == Py_None) return 1; else if (exact) { if (likely(Py_TYPE(obj) == type)) return 1; #if PY_MAJOR_VERSION == 2 else if ((type == &PyBaseString_Type) && likely(__Pyx_PyBaseString_CheckExact(obj))) return 1; #endif } else { if (likely(PyObject_TypeCheck(obj, type))) return 1; } __Pyx_RaiseArgumentTypeInvalid(name, obj, type); return 0; } /* CalculateMetaclass */ static PyObject *__Pyx_CalculateMetaclass(PyTypeObject *metaclass, PyObject *bases) { Py_ssize_t i, nbases = PyTuple_GET_SIZE(bases); for (i=0; i < nbases; i++) { PyTypeObject *tmptype; PyObject *tmp = PyTuple_GET_ITEM(bases, i); tmptype = Py_TYPE(tmp); #if PY_MAJOR_VERSION < 3 if (tmptype == &PyClass_Type) continue; #endif if (!metaclass) { metaclass = tmptype; continue; } if (PyType_IsSubtype(metaclass, tmptype)) continue; if (PyType_IsSubtype(tmptype, metaclass)) { metaclass = tmptype; continue; } PyErr_SetString(PyExc_TypeError, "metaclass conflict: " "the metaclass of a derived class " "must be a (non-strict) subclass " "of the metaclasses of all its bases"); return NULL; } if (!metaclass) { #if PY_MAJOR_VERSION < 3 metaclass = &PyClass_Type; #else metaclass = &PyType_Type; #endif } Py_INCREF((PyObject*) metaclass); return (PyObject*) metaclass; } /* Py3ClassCreate */ static PyObject *__Pyx_Py3MetaclassPrepare(PyObject *metaclass, PyObject *bases, PyObject *name, PyObject *qualname, PyObject *mkw, PyObject *modname, PyObject *doc) { PyObject *ns; if (metaclass) { PyObject *prep = __Pyx_PyObject_GetAttrStr(metaclass, __pyx_n_s_prepare); if (prep) { PyObject *pargs = PyTuple_Pack(2, name, bases); if (unlikely(!pargs)) { Py_DECREF(prep); return NULL; } ns = PyObject_Call(prep, pargs, mkw); Py_DECREF(prep); Py_DECREF(pargs); } else { if (unlikely(!PyErr_ExceptionMatches(PyExc_AttributeError))) return NULL; PyErr_Clear(); ns = PyDict_New(); } } else { ns = PyDict_New(); } if (unlikely(!ns)) return NULL; if (unlikely(PyObject_SetItem(ns, __pyx_n_s_module_2, modname) < 0)) goto bad; if (unlikely(PyObject_SetItem(ns, __pyx_n_s_qualname, qualname) < 0)) goto bad; if (unlikely(doc && PyObject_SetItem(ns, __pyx_n_s_doc, doc) < 0)) goto bad; return ns; bad: Py_DECREF(ns); return NULL; } static PyObject *__Pyx_Py3ClassCreate(PyObject *metaclass, PyObject *name, PyObject *bases, PyObject *dict, PyObject *mkw, int calculate_metaclass, int allow_py2_metaclass) { PyObject *result, *margs; PyObject *owned_metaclass = NULL; if (allow_py2_metaclass) { owned_metaclass = PyObject_GetItem(dict, __pyx_n_s_metaclass); if (owned_metaclass) { metaclass = owned_metaclass; } else if (likely(PyErr_ExceptionMatches(PyExc_KeyError))) { PyErr_Clear(); } else { return NULL; } } if (calculate_metaclass && (!metaclass || PyType_Check(metaclass))) { metaclass = __Pyx_CalculateMetaclass((PyTypeObject*) metaclass, bases); Py_XDECREF(owned_metaclass); if (unlikely(!metaclass)) return NULL; owned_metaclass = metaclass; } margs = PyTuple_Pack(3, name, bases, dict); if (unlikely(!margs)) { result = NULL; } else { result = PyObject_Call(metaclass, margs, mkw); Py_DECREF(margs); } Py_XDECREF(owned_metaclass); return result; } /* CodeObjectCache */ static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) { int start = 0, mid = 0, end = count - 1; if (end >= 0 && code_line > entries[end].code_line) { return count; } while (start < end) { mid = start + (end - start) / 2; if (code_line < entries[mid].code_line) { end = mid; } else if (code_line > entries[mid].code_line) { start = mid + 1; } else { return mid; } } if (code_line <= entries[mid].code_line) { return mid; } else { return mid + 1; } } static PyCodeObject *__pyx_find_code_object(int code_line) { PyCodeObject* code_object; int pos; if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) { return NULL; } pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) { return NULL; } code_object = __pyx_code_cache.entries[pos].code_object; Py_INCREF(code_object); return code_object; } static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) { int pos, i; __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries; if (unlikely(!code_line)) { return; } if (unlikely(!entries)) { entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry)); if (likely(entries)) { __pyx_code_cache.entries = entries; __pyx_code_cache.max_count = 64; __pyx_code_cache.count = 1; entries[0].code_line = code_line; entries[0].code_object = code_object; Py_INCREF(code_object); } return; } pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) { PyCodeObject* tmp = entries[pos].code_object; entries[pos].code_object = code_object; Py_DECREF(tmp); return; } if (__pyx_code_cache.count == __pyx_code_cache.max_count) { int new_max = __pyx_code_cache.max_count + 64; entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc( __pyx_code_cache.entries, (size_t)new_max*sizeof(__Pyx_CodeObjectCacheEntry)); if (unlikely(!entries)) { return; } __pyx_code_cache.entries = entries; __pyx_code_cache.max_count = new_max; } for (i=__pyx_code_cache.count; i>pos; i--) { entries[i] = entries[i-1]; } entries[pos].code_line = code_line; entries[pos].code_object = code_object; __pyx_code_cache.count++; Py_INCREF(code_object); } /* AddTraceback */ #include "compile.h" #include "frameobject.h" #include "traceback.h" static PyCodeObject* __Pyx_CreateCodeObjectForTraceback( const char *funcname, int c_line, int py_line, const char *filename) { PyCodeObject *py_code = 0; PyObject *py_srcfile = 0; PyObject *py_funcname = 0; #if PY_MAJOR_VERSION < 3 py_srcfile = PyString_FromString(filename); #else py_srcfile = PyUnicode_FromString(filename); #endif if (!py_srcfile) goto bad; if (c_line) { #if PY_MAJOR_VERSION < 3 py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); #else py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); #endif } else { #if PY_MAJOR_VERSION < 3 py_funcname = PyString_FromString(funcname); #else py_funcname = PyUnicode_FromString(funcname); #endif } if (!py_funcname) goto bad; py_code = __Pyx_PyCode_New( 0, 0, 0, 0, 0, __pyx_empty_bytes, /*PyObject *code,*/ __pyx_empty_tuple, /*PyObject *consts,*/ __pyx_empty_tuple, /*PyObject *names,*/ __pyx_empty_tuple, /*PyObject *varnames,*/ __pyx_empty_tuple, /*PyObject *freevars,*/ __pyx_empty_tuple, /*PyObject *cellvars,*/ py_srcfile, /*PyObject *filename,*/ py_funcname, /*PyObject *name,*/ py_line, __pyx_empty_bytes /*PyObject *lnotab*/ ); Py_DECREF(py_srcfile); Py_DECREF(py_funcname); return py_code; bad: Py_XDECREF(py_srcfile); Py_XDECREF(py_funcname); return NULL; } static void __Pyx_AddTraceback(const char *funcname, int c_line, int py_line, const char *filename) { PyCodeObject *py_code = 0; PyFrameObject *py_frame = 0; py_code = __pyx_find_code_object(c_line ? c_line : py_line); if (!py_code) { py_code = __Pyx_CreateCodeObjectForTraceback( funcname, c_line, py_line, filename); if (!py_code) goto bad; __pyx_insert_code_object(c_line ? c_line : py_line, py_code); } py_frame = PyFrame_New( PyThreadState_GET(), /*PyThreadState *tstate,*/ py_code, /*PyCodeObject *code,*/ __pyx_d, /*PyObject *globals,*/ 0 /*PyObject *locals*/ ); if (!py_frame) goto bad; __Pyx_PyFrame_SetLineNumber(py_frame, py_line); PyTraceBack_Here(py_frame); bad: Py_XDECREF(py_code); Py_XDECREF(py_frame); } /* CIntFromPyVerify */ #define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\ __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0) #define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\ __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1) #define __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, exc)\ {\ func_type value = func_value;\ if (sizeof(target_type) < sizeof(func_type)) {\ if (unlikely(value != (func_type) (target_type) value)) {\ func_type zero = 0;\ if (exc && unlikely(value == (func_type)-1 && PyErr_Occurred()))\ return (target_type) -1;\ if (is_unsigned && unlikely(value < zero))\ goto raise_neg_overflow;\ else\ goto raise_overflow;\ }\ }\ return (target_type) value;\ } /* CIntToPy */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) { const int neg_one = (int) -1, const_zero = (int) 0; const int is_unsigned = neg_one > const_zero; if (is_unsigned) { if (sizeof(int) < sizeof(long)) { return PyInt_FromLong((long) value); } else if (sizeof(int) <= sizeof(unsigned long)) { return PyLong_FromUnsignedLong((unsigned long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) { return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); #endif } } else { if (sizeof(int) <= sizeof(long)) { return PyInt_FromLong((long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) { return PyLong_FromLongLong((PY_LONG_LONG) value); #endif } } { int one = 1; int little = (int)*(unsigned char *)&one; unsigned char *bytes = (unsigned char *)&value; return _PyLong_FromByteArray(bytes, sizeof(int), little, !is_unsigned); } } /* CIntToPy */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) { const long neg_one = (long) -1, const_zero = (long) 0; const int is_unsigned = neg_one > const_zero; if (is_unsigned) { if (sizeof(long) < sizeof(long)) { return PyInt_FromLong((long) value); } else if (sizeof(long) <= sizeof(unsigned long)) { return PyLong_FromUnsignedLong((unsigned long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); #endif } } else { if (sizeof(long) <= sizeof(long)) { return PyInt_FromLong((long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { return PyLong_FromLongLong((PY_LONG_LONG) value); #endif } } { int one = 1; int little = (int)*(unsigned char *)&one; unsigned char *bytes = (unsigned char *)&value; return _PyLong_FromByteArray(bytes, sizeof(long), little, !is_unsigned); } } /* CIntToPy */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_GLint(GLint value) { const GLint neg_one = (GLint) -1, const_zero = (GLint) 0; const int is_unsigned = neg_one > const_zero; if (is_unsigned) { if (sizeof(GLint) < sizeof(long)) { return PyInt_FromLong((long) value); } else if (sizeof(GLint) <= sizeof(unsigned long)) { return PyLong_FromUnsignedLong((unsigned long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(GLint) <= sizeof(unsigned PY_LONG_LONG)) { return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); #endif } } else { if (sizeof(GLint) <= sizeof(long)) { return PyInt_FromLong((long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(GLint) <= sizeof(PY_LONG_LONG)) { return PyLong_FromLongLong((PY_LONG_LONG) value); #endif } } { int one = 1; int little = (int)*(unsigned char *)&one; unsigned char *bytes = (unsigned char *)&value; return _PyLong_FromByteArray(bytes, sizeof(GLint), little, !is_unsigned); } } /* CIntFromPy */ static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) { const int neg_one = (int) -1, const_zero = (int) 0; const int is_unsigned = neg_one > const_zero; #if PY_MAJOR_VERSION < 3 if (likely(PyInt_Check(x))) { if (sizeof(int) < sizeof(long)) { __PYX_VERIFY_RETURN_INT(int, long, PyInt_AS_LONG(x)) } else { long val = PyInt_AS_LONG(x); if (is_unsigned && unlikely(val < 0)) { goto raise_neg_overflow; } return (int) val; } } else #endif if (likely(PyLong_Check(x))) { if (is_unsigned) { #if CYTHON_USE_PYLONG_INTERNALS const digit* digits = ((PyLongObject*)x)->ob_digit; switch (Py_SIZE(x)) { case 0: return (int) 0; case 1: __PYX_VERIFY_RETURN_INT(int, digit, digits[0]) case 2: if (8 * sizeof(int) > 1 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(int) >= 2 * PyLong_SHIFT) { return (int) (((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); } } break; case 3: if (8 * sizeof(int) > 2 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(int) >= 3 * PyLong_SHIFT) { return (int) (((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); } } break; case 4: if (8 * sizeof(int) > 3 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(int) >= 4 * PyLong_SHIFT) { return (int) (((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); } } break; } #endif #if CYTHON_COMPILING_IN_CPYTHON if (unlikely(Py_SIZE(x) < 0)) { goto raise_neg_overflow; } #else { int result = PyObject_RichCompareBool(x, Py_False, Py_LT); if (unlikely(result < 0)) return (int) -1; if (unlikely(result == 1)) goto raise_neg_overflow; } #endif if (sizeof(int) <= sizeof(unsigned long)) { __PYX_VERIFY_RETURN_INT_EXC(int, unsigned long, PyLong_AsUnsignedLong(x)) #ifdef HAVE_LONG_LONG } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) { __PYX_VERIFY_RETURN_INT_EXC(int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) #endif } } else { #if CYTHON_USE_PYLONG_INTERNALS const digit* digits = ((PyLongObject*)x)->ob_digit; switch (Py_SIZE(x)) { case 0: return (int) 0; case -1: __PYX_VERIFY_RETURN_INT(int, sdigit, (sdigit) (-(sdigit)digits[0])) case 1: __PYX_VERIFY_RETURN_INT(int, digit, +digits[0]) case -2: if (8 * sizeof(int) - 1 > 1 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { return (int) (((int)-1)*(((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); } } break; case 2: if (8 * sizeof(int) > 1 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { return (int) ((((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); } } break; case -3: if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { return (int) (((int)-1)*(((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); } } break; case 3: if (8 * sizeof(int) > 2 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { return (int) ((((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); } } break; case -4: if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) { return (int) (((int)-1)*(((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); } } break; case 4: if (8 * sizeof(int) > 3 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) { return (int) ((((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); } } break; } #endif if (sizeof(int) <= sizeof(long)) { __PYX_VERIFY_RETURN_INT_EXC(int, long, PyLong_AsLong(x)) #ifdef HAVE_LONG_LONG } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) { __PYX_VERIFY_RETURN_INT_EXC(int, PY_LONG_LONG, PyLong_AsLongLong(x)) #endif } } { #if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray) PyErr_SetString(PyExc_RuntimeError, "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"); #else int val; PyObject *v = __Pyx_PyNumber_IntOrLong(x); #if PY_MAJOR_VERSION < 3 if (likely(v) && !PyLong_Check(v)) { PyObject *tmp = v; v = PyNumber_Long(tmp); Py_DECREF(tmp); } #endif if (likely(v)) { int one = 1; int is_little = (int)*(unsigned char *)&one; unsigned char *bytes = (unsigned char *)&val; int ret = _PyLong_AsByteArray((PyLongObject *)v, bytes, sizeof(val), is_little, !is_unsigned); Py_DECREF(v); if (likely(!ret)) return val; } #endif return (int) -1; } } else { int val; PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); if (!tmp) return (int) -1; val = __Pyx_PyInt_As_int(tmp); Py_DECREF(tmp); return val; } raise_overflow: PyErr_SetString(PyExc_OverflowError, "value too large to convert to int"); return (int) -1; raise_neg_overflow: PyErr_SetString(PyExc_OverflowError, "can't convert negative value to int"); return (int) -1; } /* CIntFromPy */ static CYTHON_INLINE short __Pyx_PyInt_As_short(PyObject *x) { const short neg_one = (short) -1, const_zero = (short) 0; const int is_unsigned = neg_one > const_zero; #if PY_MAJOR_VERSION < 3 if (likely(PyInt_Check(x))) { if (sizeof(short) < sizeof(long)) { __PYX_VERIFY_RETURN_INT(short, long, PyInt_AS_LONG(x)) } else { long val = PyInt_AS_LONG(x); if (is_unsigned && unlikely(val < 0)) { goto raise_neg_overflow; } return (short) val; } } else #endif if (likely(PyLong_Check(x))) { if (is_unsigned) { #if CYTHON_USE_PYLONG_INTERNALS const digit* digits = ((PyLongObject*)x)->ob_digit; switch (Py_SIZE(x)) { case 0: return (short) 0; case 1: __PYX_VERIFY_RETURN_INT(short, digit, digits[0]) case 2: if (8 * sizeof(short) > 1 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(short, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(short) >= 2 * PyLong_SHIFT) { return (short) (((((short)digits[1]) << PyLong_SHIFT) | (short)digits[0])); } } break; case 3: if (8 * sizeof(short) > 2 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(short, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(short) >= 3 * PyLong_SHIFT) { return (short) (((((((short)digits[2]) << PyLong_SHIFT) | (short)digits[1]) << PyLong_SHIFT) | (short)digits[0])); } } break; case 4: if (8 * sizeof(short) > 3 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(short, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(short) >= 4 * PyLong_SHIFT) { return (short) (((((((((short)digits[3]) << PyLong_SHIFT) | (short)digits[2]) << PyLong_SHIFT) | (short)digits[1]) << PyLong_SHIFT) | (short)digits[0])); } } break; } #endif #if CYTHON_COMPILING_IN_CPYTHON if (unlikely(Py_SIZE(x) < 0)) { goto raise_neg_overflow; } #else { int result = PyObject_RichCompareBool(x, Py_False, Py_LT); if (unlikely(result < 0)) return (short) -1; if (unlikely(result == 1)) goto raise_neg_overflow; } #endif if (sizeof(short) <= sizeof(unsigned long)) { __PYX_VERIFY_RETURN_INT_EXC(short, unsigned long, PyLong_AsUnsignedLong(x)) #ifdef HAVE_LONG_LONG } else if (sizeof(short) <= sizeof(unsigned PY_LONG_LONG)) { __PYX_VERIFY_RETURN_INT_EXC(short, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) #endif } } else { #if CYTHON_USE_PYLONG_INTERNALS const digit* digits = ((PyLongObject*)x)->ob_digit; switch (Py_SIZE(x)) { case 0: return (short) 0; case -1: __PYX_VERIFY_RETURN_INT(short, sdigit, (sdigit) (-(sdigit)digits[0])) case 1: __PYX_VERIFY_RETURN_INT(short, digit, +digits[0]) case -2: if (8 * sizeof(short) - 1 > 1 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(short, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(short) - 1 > 2 * PyLong_SHIFT) { return (short) (((short)-1)*(((((short)digits[1]) << PyLong_SHIFT) | (short)digits[0]))); } } break; case 2: if (8 * sizeof(short) > 1 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(short, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(short) - 1 > 2 * PyLong_SHIFT) { return (short) ((((((short)digits[1]) << PyLong_SHIFT) | (short)digits[0]))); } } break; case -3: if (8 * sizeof(short) - 1 > 2 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(short, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(short) - 1 > 3 * PyLong_SHIFT) { return (short) (((short)-1)*(((((((short)digits[2]) << PyLong_SHIFT) | (short)digits[1]) << PyLong_SHIFT) | (short)digits[0]))); } } break; case 3: if (8 * sizeof(short) > 2 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(short, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(short) - 1 > 3 * PyLong_SHIFT) { return (short) ((((((((short)digits[2]) << PyLong_SHIFT) | (short)digits[1]) << PyLong_SHIFT) | (short)digits[0]))); } } break; case -4: if (8 * sizeof(short) - 1 > 3 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(short, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(short) - 1 > 4 * PyLong_SHIFT) { return (short) (((short)-1)*(((((((((short)digits[3]) << PyLong_SHIFT) | (short)digits[2]) << PyLong_SHIFT) | (short)digits[1]) << PyLong_SHIFT) | (short)digits[0]))); } } break; case 4: if (8 * sizeof(short) > 3 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(short, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(short) - 1 > 4 * PyLong_SHIFT) { return (short) ((((((((((short)digits[3]) << PyLong_SHIFT) | (short)digits[2]) << PyLong_SHIFT) | (short)digits[1]) << PyLong_SHIFT) | (short)digits[0]))); } } break; } #endif if (sizeof(short) <= sizeof(long)) { __PYX_VERIFY_RETURN_INT_EXC(short, long, PyLong_AsLong(x)) #ifdef HAVE_LONG_LONG } else if (sizeof(short) <= sizeof(PY_LONG_LONG)) { __PYX_VERIFY_RETURN_INT_EXC(short, PY_LONG_LONG, PyLong_AsLongLong(x)) #endif } } { #if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray) PyErr_SetString(PyExc_RuntimeError, "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"); #else short val; PyObject *v = __Pyx_PyNumber_IntOrLong(x); #if PY_MAJOR_VERSION < 3 if (likely(v) && !PyLong_Check(v)) { PyObject *tmp = v; v = PyNumber_Long(tmp); Py_DECREF(tmp); } #endif if (likely(v)) { int one = 1; int is_little = (int)*(unsigned char *)&one; unsigned char *bytes = (unsigned char *)&val; int ret = _PyLong_AsByteArray((PyLongObject *)v, bytes, sizeof(val), is_little, !is_unsigned); Py_DECREF(v); if (likely(!ret)) return val; } #endif return (short) -1; } } else { short val; PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); if (!tmp) return (short) -1; val = __Pyx_PyInt_As_short(tmp); Py_DECREF(tmp); return val; } raise_overflow: PyErr_SetString(PyExc_OverflowError, "value too large to convert to short"); return (short) -1; raise_neg_overflow: PyErr_SetString(PyExc_OverflowError, "can't convert negative value to short"); return (short) -1; } /* CIntFromPy */ static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) { const long neg_one = (long) -1, const_zero = (long) 0; const int is_unsigned = neg_one > const_zero; #if PY_MAJOR_VERSION < 3 if (likely(PyInt_Check(x))) { if (sizeof(long) < sizeof(long)) { __PYX_VERIFY_RETURN_INT(long, long, PyInt_AS_LONG(x)) } else { long val = PyInt_AS_LONG(x); if (is_unsigned && unlikely(val < 0)) { goto raise_neg_overflow; } return (long) val; } } else #endif if (likely(PyLong_Check(x))) { if (is_unsigned) { #if CYTHON_USE_PYLONG_INTERNALS const digit* digits = ((PyLongObject*)x)->ob_digit; switch (Py_SIZE(x)) { case 0: return (long) 0; case 1: __PYX_VERIFY_RETURN_INT(long, digit, digits[0]) case 2: if (8 * sizeof(long) > 1 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(long) >= 2 * PyLong_SHIFT) { return (long) (((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); } } break; case 3: if (8 * sizeof(long) > 2 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(long) >= 3 * PyLong_SHIFT) { return (long) (((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); } } break; case 4: if (8 * sizeof(long) > 3 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(long) >= 4 * PyLong_SHIFT) { return (long) (((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); } } break; } #endif #if CYTHON_COMPILING_IN_CPYTHON if (unlikely(Py_SIZE(x) < 0)) { goto raise_neg_overflow; } #else { int result = PyObject_RichCompareBool(x, Py_False, Py_LT); if (unlikely(result < 0)) return (long) -1; if (unlikely(result == 1)) goto raise_neg_overflow; } #endif if (sizeof(long) <= sizeof(unsigned long)) { __PYX_VERIFY_RETURN_INT_EXC(long, unsigned long, PyLong_AsUnsignedLong(x)) #ifdef HAVE_LONG_LONG } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { __PYX_VERIFY_RETURN_INT_EXC(long, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) #endif } } else { #if CYTHON_USE_PYLONG_INTERNALS const digit* digits = ((PyLongObject*)x)->ob_digit; switch (Py_SIZE(x)) { case 0: return (long) 0; case -1: __PYX_VERIFY_RETURN_INT(long, sdigit, (sdigit) (-(sdigit)digits[0])) case 1: __PYX_VERIFY_RETURN_INT(long, digit, +digits[0]) case -2: if (8 * sizeof(long) - 1 > 1 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { return (long) (((long)-1)*(((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); } } break; case 2: if (8 * sizeof(long) > 1 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { return (long) ((((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); } } break; case -3: if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { return (long) (((long)-1)*(((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); } } break; case 3: if (8 * sizeof(long) > 2 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { return (long) ((((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); } } break; case -4: if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { return (long) (((long)-1)*(((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); } } break; case 4: if (8 * sizeof(long) > 3 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { return (long) ((((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); } } break; } #endif if (sizeof(long) <= sizeof(long)) { __PYX_VERIFY_RETURN_INT_EXC(long, long, PyLong_AsLong(x)) #ifdef HAVE_LONG_LONG } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { __PYX_VERIFY_RETURN_INT_EXC(long, PY_LONG_LONG, PyLong_AsLongLong(x)) #endif } } { #if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray) PyErr_SetString(PyExc_RuntimeError, "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"); #else long val; PyObject *v = __Pyx_PyNumber_IntOrLong(x); #if PY_MAJOR_VERSION < 3 if (likely(v) && !PyLong_Check(v)) { PyObject *tmp = v; v = PyNumber_Long(tmp); Py_DECREF(tmp); } #endif if (likely(v)) { int one = 1; int is_little = (int)*(unsigned char *)&one; unsigned char *bytes = (unsigned char *)&val; int ret = _PyLong_AsByteArray((PyLongObject *)v, bytes, sizeof(val), is_little, !is_unsigned); Py_DECREF(v); if (likely(!ret)) return val; } #endif return (long) -1; } } else { long val; PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); if (!tmp) return (long) -1; val = __Pyx_PyInt_As_long(tmp); Py_DECREF(tmp); return val; } raise_overflow: PyErr_SetString(PyExc_OverflowError, "value too large to convert to long"); return (long) -1; raise_neg_overflow: PyErr_SetString(PyExc_OverflowError, "can't convert negative value to long"); return (long) -1; } /* CheckBinaryVersion */ static int __Pyx_check_binary_version(void) { char ctversion[4], rtversion[4]; PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION); PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion()); if (ctversion[0] != rtversion[0] || ctversion[2] != rtversion[2]) { char message[200]; PyOS_snprintf(message, sizeof(message), "compiletime version %s of module '%.100s' " "does not match runtime version %s", ctversion, __Pyx_MODULE_NAME, rtversion); return PyErr_WarnEx(NULL, message, 1); } return 0; } /* FunctionExport */ static int __Pyx_ExportFunction(const char *name, void (*f)(void), const char *sig) { PyObject *d = 0; PyObject *cobj = 0; union { void (*fp)(void); void *p; } tmp; d = PyObject_GetAttrString(__pyx_m, (char *)"__pyx_capi__"); if (!d) { PyErr_Clear(); d = PyDict_New(); if (!d) goto bad; Py_INCREF(d); if (PyModule_AddObject(__pyx_m, (char *)"__pyx_capi__", d) < 0) goto bad; } tmp.fp = f; #if PY_VERSION_HEX >= 0x02070000 cobj = PyCapsule_New(tmp.p, sig, 0); #else cobj = PyCObject_FromVoidPtrAndDesc(tmp.p, (void *)sig, 0); #endif if (!cobj) goto bad; if (PyDict_SetItemString(d, name, cobj) < 0) goto bad; Py_DECREF(cobj); Py_DECREF(d); return 0; bad: Py_XDECREF(cobj); Py_XDECREF(d); return -1; } /* ModuleImport */ #ifndef __PYX_HAVE_RT_ImportModule #define __PYX_HAVE_RT_ImportModule static PyObject *__Pyx_ImportModule(const char *name) { PyObject *py_name = 0; PyObject *py_module = 0; py_name = __Pyx_PyIdentifier_FromString(name); if (!py_name) goto bad; py_module = PyImport_Import(py_name); Py_DECREF(py_name); return py_module; bad: Py_XDECREF(py_name); return 0; } #endif /* FunctionImport */ #ifndef __PYX_HAVE_RT_ImportFunction #define __PYX_HAVE_RT_ImportFunction static int __Pyx_ImportFunction(PyObject *module, const char *funcname, void (**f)(void), const char *sig) { PyObject *d = 0; PyObject *cobj = 0; union { void (*fp)(void); void *p; } tmp; d = PyObject_GetAttrString(module, (char *)"__pyx_capi__"); if (!d) goto bad; cobj = PyDict_GetItemString(d, funcname); if (!cobj) { PyErr_Format(PyExc_ImportError, "%.200s does not export expected C function %.200s", PyModule_GetName(module), funcname); goto bad; } #if PY_VERSION_HEX >= 0x02070000 if (!PyCapsule_IsValid(cobj, sig)) { PyErr_Format(PyExc_TypeError, "C function %.200s.%.200s has wrong signature (expected %.500s, got %.500s)", PyModule_GetName(module), funcname, sig, PyCapsule_GetName(cobj)); goto bad; } tmp.p = PyCapsule_GetPointer(cobj, sig); #else {const char *desc, *s1, *s2; desc = (const char *)PyCObject_GetDesc(cobj); if (!desc) goto bad; s1 = desc; s2 = sig; while (*s1 != '\0' && *s1 == *s2) { s1++; s2++; } if (*s1 != *s2) { PyErr_Format(PyExc_TypeError, "C function %.200s.%.200s has wrong signature (expected %.500s, got %.500s)", PyModule_GetName(module), funcname, sig, desc); goto bad; } tmp.p = PyCObject_AsVoidPtr(cobj);} #endif *f = tmp.fp; if (!(*f)) goto bad; Py_DECREF(d); return 0; bad: Py_XDECREF(d); return -1; } #endif /* InitStrings */ static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) { while (t->p) { #if PY_MAJOR_VERSION < 3 if (t->is_unicode) { *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL); } else if (t->intern) { *t->p = PyString_InternFromString(t->s); } else { *t->p = PyString_FromStringAndSize(t->s, t->n - 1); } #else if (t->is_unicode | t->is_str) { if (t->intern) { *t->p = PyUnicode_InternFromString(t->s); } else if (t->encoding) { *t->p = PyUnicode_Decode(t->s, t->n - 1, t->encoding, NULL); } else { *t->p = PyUnicode_FromStringAndSize(t->s, t->n - 1); } } else { *t->p = PyBytes_FromStringAndSize(t->s, t->n - 1); } #endif if (!*t->p) return -1; ++t; } return 0; } static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char* c_str) { return __Pyx_PyUnicode_FromStringAndSize(c_str, (Py_ssize_t)strlen(c_str)); } static CYTHON_INLINE char* __Pyx_PyObject_AsString(PyObject* o) { Py_ssize_t ignore; return __Pyx_PyObject_AsStringAndSize(o, &ignore); } static CYTHON_INLINE char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_t *length) { #if CYTHON_COMPILING_IN_CPYTHON && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT) if ( #if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII __Pyx_sys_getdefaultencoding_not_ascii && #endif PyUnicode_Check(o)) { #if PY_VERSION_HEX < 0x03030000 char* defenc_c; PyObject* defenc = _PyUnicode_AsDefaultEncodedString(o, NULL); if (!defenc) return NULL; defenc_c = PyBytes_AS_STRING(defenc); #if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII { char* end = defenc_c + PyBytes_GET_SIZE(defenc); char* c; for (c = defenc_c; c < end; c++) { if ((unsigned char) (*c) >= 128) { PyUnicode_AsASCIIString(o); return NULL; } } } #endif *length = PyBytes_GET_SIZE(defenc); return defenc_c; #else if (__Pyx_PyUnicode_READY(o) == -1) return NULL; #if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII if (PyUnicode_IS_ASCII(o)) { *length = PyUnicode_GET_LENGTH(o); return PyUnicode_AsUTF8(o); } else { PyUnicode_AsASCIIString(o); return NULL; } #else return PyUnicode_AsUTF8AndSize(o, length); #endif #endif } else #endif #if (!CYTHON_COMPILING_IN_PYPY) || (defined(PyByteArray_AS_STRING) && defined(PyByteArray_GET_SIZE)) if (PyByteArray_Check(o)) { *length = PyByteArray_GET_SIZE(o); return PyByteArray_AS_STRING(o); } else #endif { char* result; int r = PyBytes_AsStringAndSize(o, &result, length); if (unlikely(r < 0)) { return NULL; } else { return result; } } } static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) { int is_true = x == Py_True; if (is_true | (x == Py_False) | (x == Py_None)) return is_true; else return PyObject_IsTrue(x); } static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x) { #if CYTHON_USE_TYPE_SLOTS PyNumberMethods *m; #endif const char *name = NULL; PyObject *res = NULL; #if PY_MAJOR_VERSION < 3 if (PyInt_Check(x) || PyLong_Check(x)) #else if (PyLong_Check(x)) #endif return __Pyx_NewRef(x); #if CYTHON_USE_TYPE_SLOTS m = Py_TYPE(x)->tp_as_number; #if PY_MAJOR_VERSION < 3 if (m && m->nb_int) { name = "int"; res = PyNumber_Int(x); } else if (m && m->nb_long) { name = "long"; res = PyNumber_Long(x); } #else if (m && m->nb_int) { name = "int"; res = PyNumber_Long(x); } #endif #else res = PyNumber_Int(x); #endif if (res) { #if PY_MAJOR_VERSION < 3 if (!PyInt_Check(res) && !PyLong_Check(res)) { #else if (!PyLong_Check(res)) { #endif PyErr_Format(PyExc_TypeError, "__%.4s__ returned non-%.4s (type %.200s)", name, name, Py_TYPE(res)->tp_name); Py_DECREF(res); return NULL; } } else if (!PyErr_Occurred()) { PyErr_SetString(PyExc_TypeError, "an integer is required"); } return res; } static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) { Py_ssize_t ival; PyObject *x; #if PY_MAJOR_VERSION < 3 if (likely(PyInt_CheckExact(b))) { if (sizeof(Py_ssize_t) >= sizeof(long)) return PyInt_AS_LONG(b); else return PyInt_AsSsize_t(x); } #endif if (likely(PyLong_CheckExact(b))) { #if CYTHON_USE_PYLONG_INTERNALS const digit* digits = ((PyLongObject*)b)->ob_digit; const Py_ssize_t size = Py_SIZE(b); if (likely(__Pyx_sst_abs(size) <= 1)) { ival = likely(size) ? digits[0] : 0; if (size == -1) ival = -ival; return ival; } else { switch (size) { case 2: if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { return (Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); } break; case -2: if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { return -(Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); } break; case 3: if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { return (Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); } break; case -3: if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { return -(Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); } break; case 4: if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { return (Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); } break; case -4: if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { return -(Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); } break; } } #endif return PyLong_AsSsize_t(b); } x = PyNumber_Index(b); if (!x) return -1; ival = PyInt_AsSsize_t(x); Py_DECREF(x); return ival; } static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) { return PyInt_FromSize_t(ival); } #endif /* Py_PYTHON_H */ pybik-3.0/csrc/_qt_qtwogl_moc.h0000644000175000017500000002704213173054541016771 0ustar barccbarcc00000000000000//generated from: build/temp.linux-x86_64-3.5/pybiklib/ext/qt_qtwogl.py #include "Python.h" //line 51 #include //line 53 #include //line 54 #include //line 55 #include //line 56 #include //line 58 #include //line 59 #include //line 60 #include //line 61 #include //line 62 #include //line 63 #include //line 64 #include //line 65 #include //line 66 #include //line 67 #include //line 68 #include //line 69 class Renderer : public QObject //line 326 { //line 326 Q_OBJECT //line 326 public: //line 326 Renderer() //line 328 : QObject() {} //line 329 void connect_gldebuglogger(QOpenGLDebugLogger *gldebuglogger) //line 331 { //line 332 QObject::connect(gldebuglogger, SIGNAL(messageLogged(const QOpenGLDebugMessage &)), this, //line 333 SLOT(on_messageLogged(const QOpenGLDebugMessage &)), Qt::DirectConnection); //line 334 } //line 336 Q_INVOKABLE void on_beforeRendering(); //line 339 Q_INVOKABLE void on_messageLogged(const QOpenGLDebugMessage &msg); //line 366 Q_SIGNAL void picking_result(int); //line 371 Q_SIGNAL void debug_fps(int); //line 372 Q_SIGNAL void offscreen_image(QImage); //line 374 }; //line 380 class SectionNameIndexItem : public QObject //line 607 { //line 607 Q_OBJECT //line 607 public: //line 607 QString m_section; //line 609 Q_SIGNAL void section_changed(); //line 609 Q_PROPERTY (QString section MEMBER m_section NOTIFY section_changed) //line 609 QString m_name; //line 610 Q_SIGNAL void name_changed(); //line 610 Q_PROPERTY (QString name MEMBER m_name NOTIFY name_changed) //line 610 int m_index; //line 611 Q_PROPERTY (int index MEMBER m_index) //line 611 SectionNameIndexItem(const QString §ion, const QString &name, int index) //line 614 { m_section = section; m_name = name; m_index = index; } //line 615 }; //line 616 class TextKeyItem : public QObject //line 619 { //line 619 Q_OBJECT //line 619 public: //line 619 QString m_text; //line 621 Q_SIGNAL void text_changed(); //line 621 Q_PROPERTY (QString text MEMBER m_text NOTIFY text_changed) //line 621 QString m_key; //line 622 Q_SIGNAL void key_changed(); //line 622 Q_PROPERTY (QString key MEMBER m_key NOTIFY key_changed) //line 622 TextKeyItem(const QString &text, const QString &key) //line 625 { m_text = text; m_key = key; } //line 626 }; //line 627 class FacePrefsItem : public QObject //line 630 { //line 630 Q_OBJECT //line 630 public: //line 630 QString m_color; //line 632 Q_SIGNAL void color_changed(); //line 632 Q_PROPERTY (QString color MEMBER m_color NOTIFY color_changed) //line 632 QString m_folder; //line 633 Q_SIGNAL void folder_changed(); //line 633 Q_PROPERTY (QString folder MEMBER m_folder NOTIFY folder_changed) //line 633 QString m_image; //line 634 Q_SIGNAL void image_changed(); //line 634 Q_PROPERTY (QString image MEMBER m_image NOTIFY image_changed) //line 634 QString m_imagemode; //line 635 Q_SIGNAL void imagemode_changed(); //line 635 Q_PROPERTY (QString imagemode MEMBER m_imagemode NOTIFY imagemode_changed) //line 635 FacePrefsItem(const QString &color, const QString &folder, const QString &image, const QString &imagemode) //line 638 { m_color = color; m_folder = folder; m_image = image; m_imagemode = imagemode; } //line 639 }; //line 640 class MainView : public QMainWindow //line 1168 { //line 1168 Q_OBJECT //line 1168 public: //line 1168 MainView() //line 1170 : QMainWindow() {} //line 1171 void connect_renderer(Renderer *renderer); //line 1181 void connect_renderer_offscreen(Renderer *renderer); //line 1194 void connect_view(); //line 1202 void connect_sidepane(QPushButton *button, QTreeView *treeview); //line 1212 Q_INVOKABLE void _on_picking_result(int index); //line 1224 Q_INVOKABLE void _on_debug_fps(int fps); //line 1228 Q_INVOKABLE void _on_offscreen_image(QImage image); //line 1236 Q_INVOKABLE void on_beforeSynchronizing(); //line 1243 Q_INVOKABLE void on_sceneGraphInvalidated(); //line 1263 void resizeEvent(QResizeEvent *event); //line 1272 void closeEvent(QCloseEvent *event); //line 1280 void keyPressEvent(QKeyEvent *event); //line 1288 Q_INVOKABLE void on_action_challenge_triggered(); //line 1295 Q_INVOKABLE void on_action_new_solved_triggered(); //line 1296 Q_INVOKABLE void on_action_preferences_triggered(); //line 1297 Q_INVOKABLE void on_action_reset_rotation_triggered(); //line 1298 Q_INVOKABLE void on_action_rewind_triggered(); //line 1299 Q_INVOKABLE void on_action_previous_triggered(); //line 1300 Q_INVOKABLE void on_action_stop_triggered(); //line 1301 Q_INVOKABLE void on_action_play_triggered(); //line 1302 Q_INVOKABLE void on_action_next_triggered(); //line 1303 Q_INVOKABLE void on_action_forward_triggered(); //line 1304 Q_INVOKABLE void on_action_mark_set_triggered(); //line 1305 Q_INVOKABLE void on_action_mark_remove_triggered(); //line 1306 Q_INVOKABLE void on_action_initial_state_triggered(); //line 1307 Q_INVOKABLE void on_action_edit_cube_triggered(); //line 1308 Q_INVOKABLE void on_action_selectmodel_triggered(); //line 1312 Q_INVOKABLE void on_action_selectmodel_back_triggered(); //line 1320 void _listwidget_itemActivated(QListWidgetItem *item); //line 1329 Q_INVOKABLE void on_listwidget_itemActivated(QListWidgetItem *item); //line 1342 Q_INVOKABLE void on_listwidget_itemClicked(QListWidgetItem *item); //line 1345 Q_INVOKABLE void on_action_quit_triggered(); //line 1348 Q_INVOKABLE void on_action_editbar_toggled(bool checked); //line 1351 Q_INVOKABLE void on_action_statusbar_toggled(bool checked); //line 1355 Q_INVOKABLE void on_action_help_triggered(); //line 1359 Q_INVOKABLE void on_action_info_triggered(); //line 1364 Q_INVOKABLE void on_splitter_splitterMoved(int pos, int index); //line 1367 Q_INVOKABLE void on_button_edit_clear_clicked(); //line 1372 Q_INVOKABLE void on_button_edit_exec_clicked(); //line 1376 Q_INVOKABLE void on_action_jump_to_editbar_triggered(); //line 1379 Q_INVOKABLE void _on_button_sidepane_clicked(); //line 1383 Q_INVOKABLE void _on_treeview_activated(const QModelIndex &index); //line 1386 }; //line 1392 class MoveEdit : public QLineEdit //line 1397 { //line 1397 Q_OBJECT //line 1397 public: //line 1397 MoveEdit(); //line 1400 void keyPressEvent(QKeyEvent *event); //line 1406 Q_INVOKABLE void on_returnpressed() const; //line 1421 }; //line 1423 class DrawingArea : public QOpenGLWidget //line 1427 { //line 1427 Q_OBJECT //line 1427 public: //line 1427 DrawingArea() //line 1429 : QOpenGLWidget() {} //line 1430 void init(); //line 1432 void paintGL(); //line 1441 void resizeGL(int width, int height); //line 1445 void keyPressEvent(QKeyEvent *event); //line 1449 void mousePressEvent(QMouseEvent *event); //line 1454 void mouseReleaseEvent(QMouseEvent *event); //line 1457 void mouseMoveEvent(QMouseEvent *event); //line 1460 void wheelEvent(QWheelEvent *event); //line 1463 void dragEnterEvent(QDragEnterEvent *event); //line 1466 void dropEvent(QDropEvent *event); //line 1477 }; //line 1490 class PreferencesDialog : public QDialog //line 1494 { //line 1494 Q_OBJECT //line 1494 public: //line 1494 QStandardItemModel *liststore_movekeys; //line 1495 bool liststore_blocked; //line 1497 QString current_facekey; //line 1499 QString image_dirname; //line 1501 PreferencesDialog(QWidget *parent) //line 1505 : QDialog(parent), liststore_blocked(false) {} //line 1506 void init(); //line 1508 Q_INVOKABLE void on_slider_animspeed_valueChanged(int value); //line 1518 Q_INVOKABLE void on_button_animspeed_reset_clicked(); //line 1521 Q_INVOKABLE void on_combobox_shader_currentIndexChanged(int value); //line 1525 Q_INVOKABLE void on_button_shader_reset_clicked(); //line 1528 Q_INVOKABLE void on_combobox_samples_currentIndexChanged(int value); //line 1532 Q_INVOKABLE void on_button_antialiasing_reset_clicked(); //line 1537 Q_INVOKABLE void on_checkbox_mirror_faces_toggled(bool checked); //line 1541 Q_INVOKABLE void on_spinbox_mirror_faces_valueChanged(double value); //line 1545 Q_INVOKABLE void on_button_mirror_faces_reset_clicked(); //line 1548 Q_INVOKABLE void on_button_mousemode_quad_toggled(bool checked); //line 1554 Q_INVOKABLE void on_button_mousemode_ext_toggled(bool checked); //line 1558 Q_INVOKABLE void on_button_mousemode_gesture_toggled(bool checked); //line 1562 void fill_move_key_list(); //line 1567 PyObject *get_move_key_list(); //line 1586 Q_INVOKABLE void on_liststore_movekeys_itemChanged(QStandardItem *unused_item); //line 1596 Q_INVOKABLE void on_button_movekey_add_clicked(); //line 1601 Q_INVOKABLE void on_button_movekey_remove_clicked(); //line 1607 Q_INVOKABLE void on_button_movekey_reset_clicked(); //line 1612 Q_INVOKABLE void _on_listview_faces_currentRowChanged(const QModelIndex ¤t); //line 1617 Q_INVOKABLE void on_button_color_clicked(); //line 1622 Q_INVOKABLE void on_button_color_reset_clicked(); //line 1632 Q_INVOKABLE void on_combobox_image_activated(int index); //line 1638 Q_INVOKABLE void on_button_image_reset_clicked(); //line 1642 Q_INVOKABLE void on_radiobutton_tiled_toggled(bool checked); //line 1646 Q_INVOKABLE void on_radiobutton_mosaic_toggled(bool checked); //line 1650 Q_INVOKABLE void on_button_background_color_clicked(); //line 1655 Q_INVOKABLE void on_button_background_color_reset_clicked(); //line 1664 }; //line 1667 class HelpDialog : public QDialog //line 1753 { //line 1753 Q_OBJECT //line 1753 public: //line 1753 HelpDialog(QWidget *parent) //line 1755 : QDialog(parent) {} //line 1756 void init(const QString &helptext); //line 1758 }; //line 1760 class AboutDialog : public QDialog //line 1774 { //line 1774 Q_OBJECT //line 1774 public: //line 1774 AboutDialog(QWidget *parent) //line 1776 : QDialog(parent) {} //line 1777 void init(); //line 1779 void showEvent(QShowEvent *unused_event); //line 1783 void resizeEvent(QResizeEvent *unused_event); //line 1787 bool eventFilter(QObject *unused_watched, QEvent *event); //line 1791 Q_INVOKABLE void on_text_translators_anchorClicked(const QUrl &link) //line 1796 { QDesktopServices::openUrl(link); } //line 1797 Q_INVOKABLE void on_tab_widget_currentChanged(int index); //line 1800 Q_INVOKABLE void on_text_license_short_anchorClicked(const QUrl &url); //line 1804 }; //line 1806 pybik-3.0/csrc/_qt_qtwogl.cpp0000644000175000017500000463661513173167601016510 0ustar barccbarcc00000000000000/* Generated by Cython 0.25.2 */ #define PY_SSIZE_T_CLEAN #include "Python.h" #ifndef Py_PYTHON_H #error Python headers needed to compile C extensions, please install development version of Python. #elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03020000) #error Cython requires Python 2.6+ or Python 3.2+. #else #define CYTHON_ABI "0_25_2" #include #ifndef offsetof #define offsetof(type, member) ( (size_t) & ((type*)0) -> member ) #endif #if !defined(WIN32) && !defined(MS_WINDOWS) #ifndef __stdcall #define __stdcall #endif #ifndef __cdecl #define __cdecl #endif #ifndef __fastcall #define __fastcall #endif #endif #ifndef DL_IMPORT #define DL_IMPORT(t) t #endif #ifndef DL_EXPORT #define DL_EXPORT(t) t #endif #ifndef HAVE_LONG_LONG #if PY_VERSION_HEX >= 0x03030000 || (PY_MAJOR_VERSION == 2 && PY_VERSION_HEX >= 0x02070000) #define HAVE_LONG_LONG #endif #endif #ifndef PY_LONG_LONG #define PY_LONG_LONG LONG_LONG #endif #ifndef Py_HUGE_VAL #define Py_HUGE_VAL HUGE_VAL #endif #ifdef PYPY_VERSION #define CYTHON_COMPILING_IN_PYPY 1 #define CYTHON_COMPILING_IN_PYSTON 0 #define CYTHON_COMPILING_IN_CPYTHON 0 #undef CYTHON_USE_TYPE_SLOTS #define CYTHON_USE_TYPE_SLOTS 0 #undef CYTHON_USE_ASYNC_SLOTS #define CYTHON_USE_ASYNC_SLOTS 0 #undef CYTHON_USE_PYLIST_INTERNALS #define CYTHON_USE_PYLIST_INTERNALS 0 #undef CYTHON_USE_UNICODE_INTERNALS #define CYTHON_USE_UNICODE_INTERNALS 0 #undef CYTHON_USE_UNICODE_WRITER #define CYTHON_USE_UNICODE_WRITER 0 #undef CYTHON_USE_PYLONG_INTERNALS #define CYTHON_USE_PYLONG_INTERNALS 0 #undef CYTHON_AVOID_BORROWED_REFS #define CYTHON_AVOID_BORROWED_REFS 1 #undef CYTHON_ASSUME_SAFE_MACROS #define CYTHON_ASSUME_SAFE_MACROS 0 #undef CYTHON_UNPACK_METHODS #define CYTHON_UNPACK_METHODS 0 #undef CYTHON_FAST_THREAD_STATE #define CYTHON_FAST_THREAD_STATE 0 #undef CYTHON_FAST_PYCALL #define CYTHON_FAST_PYCALL 0 #elif defined(PYSTON_VERSION) #define CYTHON_COMPILING_IN_PYPY 0 #define CYTHON_COMPILING_IN_PYSTON 1 #define CYTHON_COMPILING_IN_CPYTHON 0 #ifndef CYTHON_USE_TYPE_SLOTS #define CYTHON_USE_TYPE_SLOTS 1 #endif #undef CYTHON_USE_ASYNC_SLOTS #define CYTHON_USE_ASYNC_SLOTS 0 #undef CYTHON_USE_PYLIST_INTERNALS #define CYTHON_USE_PYLIST_INTERNALS 0 #ifndef CYTHON_USE_UNICODE_INTERNALS #define CYTHON_USE_UNICODE_INTERNALS 1 #endif #undef CYTHON_USE_UNICODE_WRITER #define CYTHON_USE_UNICODE_WRITER 0 #undef CYTHON_USE_PYLONG_INTERNALS #define CYTHON_USE_PYLONG_INTERNALS 0 #ifndef CYTHON_AVOID_BORROWED_REFS #define CYTHON_AVOID_BORROWED_REFS 0 #endif #ifndef CYTHON_ASSUME_SAFE_MACROS #define CYTHON_ASSUME_SAFE_MACROS 1 #endif #ifndef CYTHON_UNPACK_METHODS #define CYTHON_UNPACK_METHODS 1 #endif #undef CYTHON_FAST_THREAD_STATE #define CYTHON_FAST_THREAD_STATE 0 #undef CYTHON_FAST_PYCALL #define CYTHON_FAST_PYCALL 0 #else #define CYTHON_COMPILING_IN_PYPY 0 #define CYTHON_COMPILING_IN_PYSTON 0 #define CYTHON_COMPILING_IN_CPYTHON 1 #ifndef CYTHON_USE_TYPE_SLOTS #define CYTHON_USE_TYPE_SLOTS 1 #endif #if PY_MAJOR_VERSION < 3 #undef CYTHON_USE_ASYNC_SLOTS #define CYTHON_USE_ASYNC_SLOTS 0 #elif !defined(CYTHON_USE_ASYNC_SLOTS) #define CYTHON_USE_ASYNC_SLOTS 1 #endif #if PY_VERSION_HEX < 0x02070000 #undef CYTHON_USE_PYLONG_INTERNALS #define CYTHON_USE_PYLONG_INTERNALS 0 #elif !defined(CYTHON_USE_PYLONG_INTERNALS) #define CYTHON_USE_PYLONG_INTERNALS 1 #endif #ifndef CYTHON_USE_PYLIST_INTERNALS #define CYTHON_USE_PYLIST_INTERNALS 1 #endif #ifndef CYTHON_USE_UNICODE_INTERNALS #define CYTHON_USE_UNICODE_INTERNALS 1 #endif #if PY_VERSION_HEX < 0x030300F0 #undef CYTHON_USE_UNICODE_WRITER #define CYTHON_USE_UNICODE_WRITER 0 #elif !defined(CYTHON_USE_UNICODE_WRITER) #define CYTHON_USE_UNICODE_WRITER 1 #endif #ifndef CYTHON_AVOID_BORROWED_REFS #define CYTHON_AVOID_BORROWED_REFS 0 #endif #ifndef CYTHON_ASSUME_SAFE_MACROS #define CYTHON_ASSUME_SAFE_MACROS 1 #endif #ifndef CYTHON_UNPACK_METHODS #define CYTHON_UNPACK_METHODS 1 #endif #ifndef CYTHON_FAST_THREAD_STATE #define CYTHON_FAST_THREAD_STATE 1 #endif #ifndef CYTHON_FAST_PYCALL #define CYTHON_FAST_PYCALL 1 #endif #endif #if !defined(CYTHON_FAST_PYCCALL) #define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1) #endif #if CYTHON_USE_PYLONG_INTERNALS #include "longintrepr.h" #undef SHIFT #undef BASE #undef MASK #endif #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x02070600 && !defined(Py_OptimizeFlag) #define Py_OptimizeFlag 0 #endif #define __PYX_BUILD_PY_SSIZE_T "n" #define CYTHON_FORMAT_SSIZE_T "z" #if PY_MAJOR_VERSION < 3 #define __Pyx_BUILTIN_MODULE_NAME "__builtin__" #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ PyCode_New(a+k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) #define __Pyx_DefaultClassType PyClass_Type #else #define __Pyx_BUILTIN_MODULE_NAME "builtins" #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) #define __Pyx_DefaultClassType PyType_Type #endif #ifndef Py_TPFLAGS_CHECKTYPES #define Py_TPFLAGS_CHECKTYPES 0 #endif #ifndef Py_TPFLAGS_HAVE_INDEX #define Py_TPFLAGS_HAVE_INDEX 0 #endif #ifndef Py_TPFLAGS_HAVE_NEWBUFFER #define Py_TPFLAGS_HAVE_NEWBUFFER 0 #endif #ifndef Py_TPFLAGS_HAVE_FINALIZE #define Py_TPFLAGS_HAVE_FINALIZE 0 #endif #ifndef METH_FASTCALL #define METH_FASTCALL 0x80 typedef PyObject *(*__Pyx_PyCFunctionFast) (PyObject *self, PyObject **args, Py_ssize_t nargs, PyObject *kwnames); #else #define __Pyx_PyCFunctionFast _PyCFunctionFast #endif #if CYTHON_FAST_PYCCALL #define __Pyx_PyFastCFunction_Check(func)\ ((PyCFunction_Check(func) && (METH_FASTCALL == (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST))))) #else #define __Pyx_PyFastCFunction_Check(func) 0 #endif #if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND) #define CYTHON_PEP393_ENABLED 1 #define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ?\ 0 : _PyUnicode_Ready((PyObject *)(op))) #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_LENGTH(u) #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i) #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) PyUnicode_MAX_CHAR_VALUE(u) #define __Pyx_PyUnicode_KIND(u) PyUnicode_KIND(u) #define __Pyx_PyUnicode_DATA(u) PyUnicode_DATA(u) #define __Pyx_PyUnicode_READ(k, d, i) PyUnicode_READ(k, d, i) #define __Pyx_PyUnicode_WRITE(k, d, i, ch) PyUnicode_WRITE(k, d, i, ch) #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u))) #else #define CYTHON_PEP393_ENABLED 0 #define PyUnicode_1BYTE_KIND 1 #define PyUnicode_2BYTE_KIND 2 #define PyUnicode_4BYTE_KIND 4 #define __Pyx_PyUnicode_READY(op) (0) #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_SIZE(u) #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i])) #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) ((sizeof(Py_UNICODE) == 2) ? 65535 : 1114111) #define __Pyx_PyUnicode_KIND(u) (sizeof(Py_UNICODE)) #define __Pyx_PyUnicode_DATA(u) ((void*)PyUnicode_AS_UNICODE(u)) #define __Pyx_PyUnicode_READ(k, d, i) ((void)(k), (Py_UCS4)(((Py_UNICODE*)d)[i])) #define __Pyx_PyUnicode_WRITE(k, d, i, ch) (((void)(k)), ((Py_UNICODE*)d)[i] = ch) #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_SIZE(u)) #endif #if CYTHON_COMPILING_IN_PYPY #define __Pyx_PyUnicode_Concat(a, b) PyNumber_Add(a, b) #define __Pyx_PyUnicode_ConcatSafe(a, b) PyNumber_Add(a, b) #else #define __Pyx_PyUnicode_Concat(a, b) PyUnicode_Concat(a, b) #define __Pyx_PyUnicode_ConcatSafe(a, b) ((unlikely((a) == Py_None) || unlikely((b) == Py_None)) ?\ PyNumber_Add(a, b) : __Pyx_PyUnicode_Concat(a, b)) #endif #if CYTHON_COMPILING_IN_PYPY && !defined(PyUnicode_Contains) #define PyUnicode_Contains(u, s) PySequence_Contains(u, s) #endif #if CYTHON_COMPILING_IN_PYPY && !defined(PyByteArray_Check) #define PyByteArray_Check(obj) PyObject_TypeCheck(obj, &PyByteArray_Type) #endif #if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Format) #define PyObject_Format(obj, fmt) PyObject_CallMethod(obj, "__format__", "O", fmt) #endif #if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc) #define PyObject_Malloc(s) PyMem_Malloc(s) #define PyObject_Free(p) PyMem_Free(p) #define PyObject_Realloc(p) PyMem_Realloc(p) #endif #if CYTHON_COMPILING_IN_PYSTON #define __Pyx_PyCode_HasFreeVars(co) PyCode_HasFreeVars(co) #define __Pyx_PyFrame_SetLineNumber(frame, lineno) PyFrame_SetLineNumber(frame, lineno) #else #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0) #define __Pyx_PyFrame_SetLineNumber(frame, lineno) (frame)->f_lineno = (lineno) #endif #define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b)) #define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b)) #if PY_MAJOR_VERSION >= 3 #define __Pyx_PyString_Format(a, b) PyUnicode_Format(a, b) #else #define __Pyx_PyString_Format(a, b) PyString_Format(a, b) #endif #if PY_MAJOR_VERSION < 3 && !defined(PyObject_ASCII) #define PyObject_ASCII(o) PyObject_Repr(o) #endif #if PY_MAJOR_VERSION >= 3 #define PyBaseString_Type PyUnicode_Type #define PyStringObject PyUnicodeObject #define PyString_Type PyUnicode_Type #define PyString_Check PyUnicode_Check #define PyString_CheckExact PyUnicode_CheckExact #endif #if PY_MAJOR_VERSION >= 3 #define __Pyx_PyBaseString_Check(obj) PyUnicode_Check(obj) #define __Pyx_PyBaseString_CheckExact(obj) PyUnicode_CheckExact(obj) #else #define __Pyx_PyBaseString_Check(obj) (PyString_Check(obj) || PyUnicode_Check(obj)) #define __Pyx_PyBaseString_CheckExact(obj) (PyString_CheckExact(obj) || PyUnicode_CheckExact(obj)) #endif #ifndef PySet_CheckExact #define PySet_CheckExact(obj) (Py_TYPE(obj) == &PySet_Type) #endif #define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type) #define __Pyx_PyException_Check(obj) __Pyx_TypeCheck(obj, PyExc_Exception) #if PY_MAJOR_VERSION >= 3 #define PyIntObject PyLongObject #define PyInt_Type PyLong_Type #define PyInt_Check(op) PyLong_Check(op) #define PyInt_CheckExact(op) PyLong_CheckExact(op) #define PyInt_FromString PyLong_FromString #define PyInt_FromUnicode PyLong_FromUnicode #define PyInt_FromLong PyLong_FromLong #define PyInt_FromSize_t PyLong_FromSize_t #define PyInt_FromSsize_t PyLong_FromSsize_t #define PyInt_AsLong PyLong_AsLong #define PyInt_AS_LONG PyLong_AS_LONG #define PyInt_AsSsize_t PyLong_AsSsize_t #define PyInt_AsUnsignedLongMask PyLong_AsUnsignedLongMask #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask #define PyNumber_Int PyNumber_Long #endif #if PY_MAJOR_VERSION >= 3 #define PyBoolObject PyLongObject #endif #if PY_MAJOR_VERSION >= 3 && CYTHON_COMPILING_IN_PYPY #ifndef PyUnicode_InternFromString #define PyUnicode_InternFromString(s) PyUnicode_FromString(s) #endif #endif #if PY_VERSION_HEX < 0x030200A4 typedef long Py_hash_t; #define __Pyx_PyInt_FromHash_t PyInt_FromLong #define __Pyx_PyInt_AsHash_t PyInt_AsLong #else #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t #define __Pyx_PyInt_AsHash_t PyInt_AsSsize_t #endif #if PY_MAJOR_VERSION >= 3 #define __Pyx_PyMethod_New(func, self, klass) ((self) ? PyMethod_New(func, self) : PyInstanceMethod_New(func)) #else #define __Pyx_PyMethod_New(func, self, klass) PyMethod_New(func, self, klass) #endif #if CYTHON_USE_ASYNC_SLOTS #if PY_VERSION_HEX >= 0x030500B1 #define __Pyx_PyAsyncMethodsStruct PyAsyncMethods #define __Pyx_PyType_AsAsync(obj) (Py_TYPE(obj)->tp_as_async) #else typedef struct { unaryfunc am_await; unaryfunc am_aiter; unaryfunc am_anext; } __Pyx_PyAsyncMethodsStruct; #define __Pyx_PyType_AsAsync(obj) ((__Pyx_PyAsyncMethodsStruct*) (Py_TYPE(obj)->tp_reserved)) #endif #else #define __Pyx_PyType_AsAsync(obj) NULL #endif #ifndef CYTHON_RESTRICT #if defined(__GNUC__) #define CYTHON_RESTRICT __restrict__ #elif defined(_MSC_VER) && _MSC_VER >= 1400 #define CYTHON_RESTRICT __restrict #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L #define CYTHON_RESTRICT restrict #else #define CYTHON_RESTRICT #endif #endif #ifndef CYTHON_UNUSED # if defined(__GNUC__) # if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) # define CYTHON_UNUSED __attribute__ ((__unused__)) # else # define CYTHON_UNUSED # endif # elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER)) # define CYTHON_UNUSED __attribute__ ((__unused__)) # else # define CYTHON_UNUSED # endif #endif #ifndef CYTHON_MAYBE_UNUSED_VAR # if defined(__cplusplus) template void CYTHON_MAYBE_UNUSED_VAR( const T& ) { } # else # define CYTHON_MAYBE_UNUSED_VAR(x) (void)(x) # endif #endif #ifndef CYTHON_NCP_UNUSED # if CYTHON_COMPILING_IN_CPYTHON # define CYTHON_NCP_UNUSED # else # define CYTHON_NCP_UNUSED CYTHON_UNUSED # endif #endif #define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None) #ifndef __cplusplus #error "Cython files generated with the C++ option must be compiled with a C++ compiler." #endif #ifndef CYTHON_INLINE #if defined(__clang__) #define CYTHON_INLINE __inline__ __attribute__ ((__unused__)) #else #define CYTHON_INLINE inline #endif #endif template void __Pyx_call_destructor(T& x) { x.~T(); } template class __Pyx_FakeReference { public: __Pyx_FakeReference() : ptr(NULL) { } __Pyx_FakeReference(const T& ref) : ptr(const_cast(&ref)) { } T *operator->() { return ptr; } T *operator&() { return ptr; } operator T&() { return *ptr; } template bool operator ==(U other) { return *ptr == other; } template bool operator !=(U other) { return *ptr != other; } private: T *ptr; }; #if defined(WIN32) || defined(MS_WINDOWS) #define _USE_MATH_DEFINES #endif #include #ifdef NAN #define __PYX_NAN() ((float) NAN) #else static CYTHON_INLINE float __PYX_NAN() { float value; memset(&value, 0xFF, sizeof(value)); return value; } #endif #if defined(__CYGWIN__) && defined(_LDBL_EQ_DBL) #define __Pyx_truncl trunc #else #define __Pyx_truncl truncl #endif #define __PYX_ERR(f_index, lineno, Ln_error) \ { \ __pyx_filename = __pyx_f[f_index]; __pyx_lineno = lineno; __pyx_clineno = __LINE__; goto Ln_error; \ } #if PY_MAJOR_VERSION >= 3 #define __Pyx_PyNumber_Divide(x,y) PyNumber_TrueDivide(x,y) #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceTrueDivide(x,y) #else #define __Pyx_PyNumber_Divide(x,y) PyNumber_TrueDivide(x,y) #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceTrueDivide(x,y) #endif #ifndef __PYX_EXTERN_C #ifdef __cplusplus #define __PYX_EXTERN_C extern "C" #else #define __PYX_EXTERN_C extern #endif #endif #define __PYX_HAVE___qt_qtwogl #define __PYX_HAVE_API___qt_qtwogl #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "_qt_qtwogl_moc.h" #include #include "GL/gl.h" #include "GL/glext.h" #include #include #ifdef _OPENMP #include #endif /* _OPENMP */ #ifdef PYREX_WITHOUT_ASSERTIONS #define CYTHON_WITHOUT_ASSERTIONS #endif typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* encoding; const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry; #define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0 #define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT 0 #define __PYX_DEFAULT_STRING_ENCODING "" #define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString #define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize #define __Pyx_uchar_cast(c) ((unsigned char)c) #define __Pyx_long_cast(x) ((long)x) #define __Pyx_fits_Py_ssize_t(v, type, is_signed) (\ (sizeof(type) < sizeof(Py_ssize_t)) ||\ (sizeof(type) > sizeof(Py_ssize_t) &&\ likely(v < (type)PY_SSIZE_T_MAX ||\ v == (type)PY_SSIZE_T_MAX) &&\ (!is_signed || likely(v > (type)PY_SSIZE_T_MIN ||\ v == (type)PY_SSIZE_T_MIN))) ||\ (sizeof(type) == sizeof(Py_ssize_t) &&\ (is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\ v == (type)PY_SSIZE_T_MAX))) ) #if defined (__cplusplus) && __cplusplus >= 201103L #include #define __Pyx_sst_abs(value) std::abs(value) #elif SIZEOF_INT >= SIZEOF_SIZE_T #define __Pyx_sst_abs(value) abs(value) #elif SIZEOF_LONG >= SIZEOF_SIZE_T #define __Pyx_sst_abs(value) labs(value) #elif defined (_MSC_VER) && defined (_M_X64) #define __Pyx_sst_abs(value) _abs64(value) #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L #define __Pyx_sst_abs(value) llabs(value) #elif defined (__GNUC__) #define __Pyx_sst_abs(value) __builtin_llabs(value) #else #define __Pyx_sst_abs(value) ((value<0) ? -value : value) #endif static CYTHON_INLINE char* __Pyx_PyObject_AsString(PyObject*); static CYTHON_INLINE char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length); #define __Pyx_PyByteArray_FromString(s) PyByteArray_FromStringAndSize((const char*)s, strlen((const char*)s)) #define __Pyx_PyByteArray_FromStringAndSize(s, l) PyByteArray_FromStringAndSize((const char*)s, l) #define __Pyx_PyBytes_FromString PyBytes_FromString #define __Pyx_PyBytes_FromStringAndSize PyBytes_FromStringAndSize static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char*); #if PY_MAJOR_VERSION < 3 #define __Pyx_PyStr_FromString __Pyx_PyBytes_FromString #define __Pyx_PyStr_FromStringAndSize __Pyx_PyBytes_FromStringAndSize #else #define __Pyx_PyStr_FromString __Pyx_PyUnicode_FromString #define __Pyx_PyStr_FromStringAndSize __Pyx_PyUnicode_FromStringAndSize #endif #define __Pyx_PyObject_AsSString(s) ((signed char*) __Pyx_PyObject_AsString(s)) #define __Pyx_PyObject_AsUString(s) ((unsigned char*) __Pyx_PyObject_AsString(s)) #define __Pyx_PyObject_FromCString(s) __Pyx_PyObject_FromString((const char*)s) #define __Pyx_PyBytes_FromCString(s) __Pyx_PyBytes_FromString((const char*)s) #define __Pyx_PyByteArray_FromCString(s) __Pyx_PyByteArray_FromString((const char*)s) #define __Pyx_PyStr_FromCString(s) __Pyx_PyStr_FromString((const char*)s) #define __Pyx_PyUnicode_FromCString(s) __Pyx_PyUnicode_FromString((const char*)s) #if PY_MAJOR_VERSION < 3 static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u) { const Py_UNICODE *u_end = u; while (*u_end++) ; return (size_t)(u_end - u - 1); } #else #define __Pyx_Py_UNICODE_strlen Py_UNICODE_strlen #endif #define __Pyx_PyUnicode_FromUnicode(u) PyUnicode_FromUnicode(u, __Pyx_Py_UNICODE_strlen(u)) #define __Pyx_PyUnicode_FromUnicodeAndLength PyUnicode_FromUnicode #define __Pyx_PyUnicode_AsUnicode PyUnicode_AsUnicode #define __Pyx_NewRef(obj) (Py_INCREF(obj), obj) #define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None) #define __Pyx_PyBool_FromLong(b) ((b) ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False)) static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*); static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x); static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*); static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t); #if CYTHON_ASSUME_SAFE_MACROS #define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x)) #else #define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x) #endif #define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x)) #if PY_MAJOR_VERSION >= 3 #define __Pyx_PyNumber_Int(x) (PyLong_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Long(x)) #else #define __Pyx_PyNumber_Int(x) (PyInt_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Int(x)) #endif #define __Pyx_PyNumber_Float(x) (PyFloat_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Float(x)) #if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII static int __Pyx_sys_getdefaultencoding_not_ascii; static int __Pyx_init_sys_getdefaultencoding_params(void) { PyObject* sys; PyObject* default_encoding = NULL; PyObject* ascii_chars_u = NULL; PyObject* ascii_chars_b = NULL; const char* default_encoding_c; sys = PyImport_ImportModule("sys"); if (!sys) goto bad; default_encoding = PyObject_CallMethod(sys, (char*) "getdefaultencoding", NULL); Py_DECREF(sys); if (!default_encoding) goto bad; default_encoding_c = PyBytes_AsString(default_encoding); if (!default_encoding_c) goto bad; if (strcmp(default_encoding_c, "ascii") == 0) { __Pyx_sys_getdefaultencoding_not_ascii = 0; } else { char ascii_chars[128]; int c; for (c = 0; c < 128; c++) { ascii_chars[c] = c; } __Pyx_sys_getdefaultencoding_not_ascii = 1; ascii_chars_u = PyUnicode_DecodeASCII(ascii_chars, 128, NULL); if (!ascii_chars_u) goto bad; ascii_chars_b = PyUnicode_AsEncodedString(ascii_chars_u, default_encoding_c, NULL); if (!ascii_chars_b || !PyBytes_Check(ascii_chars_b) || memcmp(ascii_chars, PyBytes_AS_STRING(ascii_chars_b), 128) != 0) { PyErr_Format( PyExc_ValueError, "This module compiled with c_string_encoding=ascii, but default encoding '%.200s' is not a superset of ascii.", default_encoding_c); goto bad; } Py_DECREF(ascii_chars_u); Py_DECREF(ascii_chars_b); } Py_DECREF(default_encoding); return 0; bad: Py_XDECREF(default_encoding); Py_XDECREF(ascii_chars_u); Py_XDECREF(ascii_chars_b); return -1; } #endif #if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT && PY_MAJOR_VERSION >= 3 #define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeUTF8(c_str, size, NULL) #else #define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_Decode(c_str, size, __PYX_DEFAULT_STRING_ENCODING, NULL) #if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT static char* __PYX_DEFAULT_STRING_ENCODING; static int __Pyx_init_sys_getdefaultencoding_params(void) { PyObject* sys; PyObject* default_encoding = NULL; char* default_encoding_c; sys = PyImport_ImportModule("sys"); if (!sys) goto bad; default_encoding = PyObject_CallMethod(sys, (char*) (const char*) "getdefaultencoding", NULL); Py_DECREF(sys); if (!default_encoding) goto bad; default_encoding_c = PyBytes_AsString(default_encoding); if (!default_encoding_c) goto bad; __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c)); if (!__PYX_DEFAULT_STRING_ENCODING) goto bad; strcpy(__PYX_DEFAULT_STRING_ENCODING, default_encoding_c); Py_DECREF(default_encoding); return 0; bad: Py_XDECREF(default_encoding); return -1; } #endif #endif /* Test for GCC > 2.95 */ #if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))) #define likely(x) __builtin_expect(!!(x), 1) #define unlikely(x) __builtin_expect(!!(x), 0) #else /* !__GNUC__ or GCC < 2.95 */ #define likely(x) (x) #define unlikely(x) (x) #endif /* __GNUC__ */ static PyObject *__pyx_m; static PyObject *__pyx_d; static PyObject *__pyx_b; static PyObject *__pyx_empty_tuple; static PyObject *__pyx_empty_bytes; static PyObject *__pyx_empty_unicode; static int __pyx_lineno; static int __pyx_clineno = 0; static const char * __pyx_cfilenm= __FILE__; static const char *__pyx_filename; static const char *__pyx_f[] = { "build/temp.linux-x86_64-3.5/pybiklib/ext/_qt_qtwogl.pyx", }; /*--- Type declarations ---*/ struct __pyx_obj_10_qt_qtwogl___pyx_scope_struct__keyval_from_name; struct __pyx_obj_10_qt_qtwogl___pyx_scope_struct_1_genexpr; /* "qt.pxd":23 * * * ctypedef void CallbackVoid() nogil # <<<<<<<<<<<<<< * ctypedef void CallbackInt(int) nogil * ctypedef void CallbackString(const QString &) nogil */ typedef void __pyx_t_2qt_CallbackVoid(void); /* "qt.pxd":24 * * ctypedef void CallbackVoid() nogil * ctypedef void CallbackInt(int) nogil # <<<<<<<<<<<<<< * ctypedef void CallbackString(const QString &) nogil * ctypedef void CallbackDebugMessage(const QOpenGLDebugMessage &) nogil */ typedef void __pyx_t_2qt_CallbackInt(int); /* "qt.pxd":25 * ctypedef void CallbackVoid() nogil * ctypedef void CallbackInt(int) nogil * ctypedef void CallbackString(const QString &) nogil # <<<<<<<<<<<<<< * ctypedef void CallbackDebugMessage(const QOpenGLDebugMessage &) nogil * */ typedef void __pyx_t_2qt_CallbackString(QString const &); /* "qt.pxd":26 * ctypedef void CallbackInt(int) nogil * ctypedef void CallbackString(const QString &) nogil * ctypedef void CallbackDebugMessage(const QOpenGLDebugMessage &) nogil # <<<<<<<<<<<<<< * * */ typedef void __pyx_t_2qt_CallbackDebugMessage(QOpenGLDebugMessage const &); struct __pyx_t_10_qt_qtwogl_RenderData; struct __pyx_t_10_qt_qtwogl_UIData; /* "_qt_qtwogl.pyx":86 * #puts = print * * cdef enum: # #px/ # <<<<<<<<<<<<<< * #if True: * DEBUG_MSG = 0x0002 */ enum { __pyx_e_10_qt_qtwogl_DEBUG_MSG = 0x0002, __pyx_e_10_qt_qtwogl_DEBUG_MSGGL = 0x0004, __pyx_e_10_qt_qtwogl_DEBUG_MSGEXT = 0x0020, __pyx_e_10_qt_qtwogl_DEBUG_DRAW = 0x0040, __pyx_e_10_qt_qtwogl_DEBUG_FPS = 0x0080, __pyx_e_10_qt_qtwogl_DEBUG_VFPS = 0x0100, __pyx_e_10_qt_qtwogl_DEBUG_QML = 0x0200, __pyx_e_10_qt_qtwogl_DEBUG_GLDEBUG = 0x0400, __pyx_e_10_qt_qtwogl_DEBUG_PHONE = 0x0800, __pyx_e_10_qt_qtwogl_DEBUG_SIM = 0x1000, __pyx_e_10_qt_qtwogl_DEBUG_NOCONTROLS = 0x2000 }; /* "_qt_qtwogl.pyx":122 * # #px+cdef enum: * # #px/SAFE_MODIFIER_MASK = Qt.ShiftModifier | Qt.ControlModifier | Qt.KeypadModifier * cdef enum: #px+ # <<<<<<<<<<<<<< * SHIFTMODIFIER = Qt.ShiftModifier #px+ * CONTROLMODIFIER = Qt.ControlModifier #px+ */ enum { /* "_qt_qtwogl.pyx":125 * SHIFTMODIFIER = Qt.ShiftModifier #px+ * CONTROLMODIFIER = Qt.ControlModifier #px+ * KEYPADMODIFIER = Qt.KeypadModifier #px+ # <<<<<<<<<<<<<< * cdef enum: #px+ * SAFE_MODIFIER_MASK = SHIFTMODIFIER | CONTROLMODIFIER | KEYPADMODIFIER #px/ */ __pyx_e_10_qt_qtwogl_SHIFTMODIFIER = Qt::ShiftModifier, __pyx_e_10_qt_qtwogl_CONTROLMODIFIER = Qt::ControlModifier, __pyx_e_10_qt_qtwogl_KEYPADMODIFIER = Qt::KeypadModifier }; /* "_qt_qtwogl.pyx":126 * CONTROLMODIFIER = Qt.ControlModifier #px+ * KEYPADMODIFIER = Qt.KeypadModifier #px+ * cdef enum: #px+ # <<<<<<<<<<<<<< * SAFE_MODIFIER_MASK = SHIFTMODIFIER | CONTROLMODIFIER | KEYPADMODIFIER #px/ * #SAFE_MODIFIER_MASK = int(Qt.ShiftModifier | Qt.ControlModifier | Qt.KeypadModifier) */ enum { /* "_qt_qtwogl.pyx":127 * KEYPADMODIFIER = Qt.KeypadModifier #px+ * cdef enum: #px+ * SAFE_MODIFIER_MASK = SHIFTMODIFIER | CONTROLMODIFIER | KEYPADMODIFIER #px/ # <<<<<<<<<<<<<< * #SAFE_MODIFIER_MASK = int(Qt.ShiftModifier | Qt.ControlModifier | Qt.KeypadModifier) * ##pxm>IF 'qtw' == 'qtq' */ __pyx_e_10_qt_qtwogl_SAFE_MODIFIER_MASK = ((__pyx_e_10_qt_qtwogl_SHIFTMODIFIER | __pyx_e_10_qt_qtwogl_CONTROLMODIFIER) | __pyx_e_10_qt_qtwogl_KEYPADMODIFIER) }; /* "_qt_qtwogl.pyx":148 * #### Data #### * * ctypedef QObject *pQObject #px+ # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtq' * #~ ctypedef QQuickItem *pQQuickItem */ typedef QObject *__pyx_t_10_qt_qtwogl_pQObject; /* "_qt_qtwogl.pyx":153 * #~ ##pxm>IF_END * * cdef struct RenderData: #px/ # <<<<<<<<<<<<<< * #class renderdata: pass * QOpenGLTexture* texture #px+ */ struct __pyx_t_10_qt_qtwogl_RenderData { QOpenGLTexture *texture; int atlas_width; int atlas_height; QOpenGLFramebufferObject *pickbuffer; QOpenGLFramebufferObject *offscreenbuffer; QElapsedTimer *fps_monotonic_time; int fps_count; bool initialized; Renderer *renderer; bool atlas_changed; bool pickxy_changed; QOpenGLDebugLogger *gldebuglogger; }; /* "_qt_qtwogl.pyx":172 * DEF maxproxy = 21 #px+ * * cdef struct UIData: #px/ # <<<<<<<<<<<<<< * #class uidata: * cbool atlas_changed #px+ */ struct __pyx_t_10_qt_qtwogl_UIData { bool atlas_changed; int atlas_width; int atlas_height; bool pick_requested; float grid_unit_px; int width; int height; int gl_y; QFileSystemWatcher *filesystemwatcher; QTimer *settings_timer; QSurfaceFormat default_format; QCursor *cursors[18]; QImage offscreen_image; MainView *mainwindow; int modelselect_currentpage; float speed; float animation_angle; float angle_max; QTimer *animate_timer; QStandardItemModel *treestore; MoveEdit *move_edit; QLabel *statuslabel; DrawingArea *drawingarea; PreferencesDialog *preferences; HelpDialog *help; }; /* "_qt_qtwogl.pyx":1988 * ##pxm>IF_END * * def keyval_from_name(keystr): # <<<<<<<<<<<<<< * keystr = '+'.join(('Num' if k == 'KP' else k) for k in keystr.split('+')) * cdef QKeySequence keyseq = fromString(str2q(keystr), PortableText) #px/ */ struct __pyx_obj_10_qt_qtwogl___pyx_scope_struct__keyval_from_name { PyObject_HEAD PyObject *__pyx_v_keystr; }; /* "_qt_qtwogl.pyx":1989 * * def keyval_from_name(keystr): * keystr = '+'.join(('Num' if k == 'KP' else k) for k in keystr.split('+')) # <<<<<<<<<<<<<< * cdef QKeySequence keyseq = fromString(str2q(keystr), PortableText) #px/ * #keyseq = fromString(keystr, PortableText) */ struct __pyx_obj_10_qt_qtwogl___pyx_scope_struct_1_genexpr { PyObject_HEAD struct __pyx_obj_10_qt_qtwogl___pyx_scope_struct__keyval_from_name *__pyx_outer_scope; PyObject *__pyx_v_k; }; /* --- Runtime support code (head) --- */ /* Refnanny.proto */ #ifndef CYTHON_REFNANNY #define CYTHON_REFNANNY 0 #endif #if CYTHON_REFNANNY typedef struct { void (*INCREF)(void*, PyObject*, int); void (*DECREF)(void*, PyObject*, int); void (*GOTREF)(void*, PyObject*, int); void (*GIVEREF)(void*, PyObject*, int); void* (*SetupContext)(const char*, int, const char*); void (*FinishContext)(void**); } __Pyx_RefNannyAPIStruct; static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL; static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname); #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL; #ifdef WITH_THREAD #define __Pyx_RefNannySetupContext(name, acquire_gil)\ if (acquire_gil) {\ PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\ __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\ PyGILState_Release(__pyx_gilstate_save);\ } else {\ __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\ } #else #define __Pyx_RefNannySetupContext(name, acquire_gil)\ __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__) #endif #define __Pyx_RefNannyFinishContext()\ __Pyx_RefNanny->FinishContext(&__pyx_refnanny) #define __Pyx_INCREF(r) __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__) #define __Pyx_DECREF(r) __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__) #define __Pyx_GOTREF(r) __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), __LINE__) #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), __LINE__) #define __Pyx_XINCREF(r) do { if((r) != NULL) {__Pyx_INCREF(r); }} while(0) #define __Pyx_XDECREF(r) do { if((r) != NULL) {__Pyx_DECREF(r); }} while(0) #define __Pyx_XGOTREF(r) do { if((r) != NULL) {__Pyx_GOTREF(r); }} while(0) #define __Pyx_XGIVEREF(r) do { if((r) != NULL) {__Pyx_GIVEREF(r);}} while(0) #else #define __Pyx_RefNannyDeclarations #define __Pyx_RefNannySetupContext(name, acquire_gil) #define __Pyx_RefNannyFinishContext() #define __Pyx_INCREF(r) Py_INCREF(r) #define __Pyx_DECREF(r) Py_DECREF(r) #define __Pyx_GOTREF(r) #define __Pyx_GIVEREF(r) #define __Pyx_XINCREF(r) Py_XINCREF(r) #define __Pyx_XDECREF(r) Py_XDECREF(r) #define __Pyx_XGOTREF(r) #define __Pyx_XGIVEREF(r) #endif #define __Pyx_XDECREF_SET(r, v) do {\ PyObject *tmp = (PyObject *) r;\ r = v; __Pyx_XDECREF(tmp);\ } while (0) #define __Pyx_DECREF_SET(r, v) do {\ PyObject *tmp = (PyObject *) r;\ r = v; __Pyx_DECREF(tmp);\ } while (0) #define __Pyx_CLEAR(r) do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0) #define __Pyx_XCLEAR(r) do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0) /* PyObjectGetAttrStr.proto */ #if CYTHON_USE_TYPE_SLOTS static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) { PyTypeObject* tp = Py_TYPE(obj); if (likely(tp->tp_getattro)) return tp->tp_getattro(obj, attr_name); #if PY_MAJOR_VERSION < 3 if (likely(tp->tp_getattr)) return tp->tp_getattr(obj, PyString_AS_STRING(attr_name)); #endif return PyObject_GetAttr(obj, attr_name); } #else #define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n) #endif /* GetBuiltinName.proto */ static PyObject *__Pyx_GetBuiltinName(PyObject *name); /* GetModuleGlobalName.proto */ static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name); /* PyObjectCall.proto */ #if CYTHON_COMPILING_IN_CPYTHON static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw); #else #define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw) #endif /* PyThreadStateGet.proto */ #if CYTHON_FAST_THREAD_STATE #define __Pyx_PyThreadState_declare PyThreadState *__pyx_tstate; #define __Pyx_PyThreadState_assign __pyx_tstate = PyThreadState_GET(); #else #define __Pyx_PyThreadState_declare #define __Pyx_PyThreadState_assign #endif /* PyErrFetchRestore.proto */ #if CYTHON_FAST_THREAD_STATE #define __Pyx_ErrRestoreWithState(type, value, tb) __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb) #define __Pyx_ErrFetchWithState(type, value, tb) __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb) #define __Pyx_ErrRestore(type, value, tb) __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb) #define __Pyx_ErrFetch(type, value, tb) __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb) static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); #else #define __Pyx_ErrRestoreWithState(type, value, tb) PyErr_Restore(type, value, tb) #define __Pyx_ErrFetchWithState(type, value, tb) PyErr_Fetch(type, value, tb) #define __Pyx_ErrRestore(type, value, tb) PyErr_Restore(type, value, tb) #define __Pyx_ErrFetch(type, value, tb) PyErr_Fetch(type, value, tb) #endif /* WriteUnraisableException.proto */ static void __Pyx_WriteUnraisable(const char *name, int clineno, int lineno, const char *filename, int full_traceback, int nogil); /* IncludeStringH.proto */ #include /* decode_c_string.proto */ static CYTHON_INLINE PyObject* __Pyx_decode_c_string( const char* cstring, Py_ssize_t start, Py_ssize_t stop, const char* encoding, const char* errors, PyObject* (*decode_func)(const char *s, Py_ssize_t size, const char *errors)); /* GetItemInt.proto */ #define __Pyx_GetItemInt(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ __Pyx_GetItemInt_Fast(o, (Py_ssize_t)i, is_list, wraparound, boundscheck) :\ (is_list ? (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL) :\ __Pyx_GetItemInt_Generic(o, to_py_func(i)))) #define __Pyx_GetItemInt_List(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ __Pyx_GetItemInt_List_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\ (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL)) static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, int wraparound, int boundscheck); #define __Pyx_GetItemInt_Tuple(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\ (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\ __Pyx_GetItemInt_Tuple_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\ (PyErr_SetString(PyExc_IndexError, "tuple index out of range"), (PyObject*)NULL)) static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, int wraparound, int boundscheck); static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j); static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, int is_list, int wraparound, int boundscheck); /* ListCompAppend.proto */ #if CYTHON_USE_PYLIST_INTERNALS && CYTHON_ASSUME_SAFE_MACROS static CYTHON_INLINE int __Pyx_ListComp_Append(PyObject* list, PyObject* x) { PyListObject* L = (PyListObject*) list; Py_ssize_t len = Py_SIZE(list); if (likely(L->allocated > len)) { Py_INCREF(x); PyList_SET_ITEM(list, len, x); Py_SIZE(list) = len+1; return 0; } return PyList_Append(list, x); } #else #define __Pyx_ListComp_Append(L,x) PyList_Append(L,x) #endif /* RaiseTooManyValuesToUnpack.proto */ static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected); /* RaiseNeedMoreValuesToUnpack.proto */ static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index); /* IterFinish.proto */ static CYTHON_INLINE int __Pyx_IterFinish(void); /* UnpackItemEndCheck.proto */ static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected); /* BytesEquals.proto */ static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals); /* PyIntBinop.proto */ #if !CYTHON_COMPILING_IN_PYPY static PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, long intval, int inplace); #else #define __Pyx_PyInt_EqObjC(op1, op2, intval, inplace)\ PyObject_RichCompare(op1, op2, Py_EQ) #endif /* PyCFunctionFastCall.proto */ #if CYTHON_FAST_PYCCALL static CYTHON_INLINE PyObject *__Pyx_PyCFunction_FastCall(PyObject *func, PyObject **args, Py_ssize_t nargs); #else #define __Pyx_PyCFunction_FastCall(func, args, nargs) (assert(0), NULL) #endif /* PyFunctionFastCall.proto */ #if CYTHON_FAST_PYCALL #define __Pyx_PyFunction_FastCall(func, args, nargs)\ __Pyx_PyFunction_FastCallDict((func), (args), (nargs), NULL) #if 1 || PY_VERSION_HEX < 0x030600B1 static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, int nargs, PyObject *kwargs); #else #define __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs) _PyFunction_FastCallDict(func, args, nargs, kwargs) #endif #endif /* PyObjectCallMethO.proto */ #if CYTHON_COMPILING_IN_CPYTHON static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg); #endif /* PyObjectCallOneArg.proto */ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg); /* None.proto */ static CYTHON_INLINE qint64 __Pyx_div_qint64(qint64, qint64); /* ForceInitThreads.proto */ #ifndef __PYX_FORCE_INIT_THREADS #define __PYX_FORCE_INIT_THREADS 0 #endif /* UnaryNegOverflows.proto */ #define UNARY_NEG_WOULD_OVERFLOW(x)\ (((x) < 0) & ((unsigned long)(x) == 0-(unsigned long)(x))) /* RaiseArgTupleInvalid.proto */ static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact, Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found); /* RaiseDoubleKeywords.proto */ static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name); /* ParseKeywords.proto */ static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[],\ PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args,\ const char* function_name); /* PyIntBinop.proto */ #if !CYTHON_COMPILING_IN_PYPY static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, long intval, int inplace); #else #define __Pyx_PyInt_AddObjC(op1, op2, intval, inplace)\ (inplace ? PyNumber_InPlaceAdd(op1, op2) : PyNumber_Add(op1, op2)) #endif /* PyObjectCallNoArg.proto */ #if CYTHON_COMPILING_IN_CPYTHON static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func); #else #define __Pyx_PyObject_CallNoArg(func) __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL) #endif /* GetException.proto */ #if CYTHON_FAST_THREAD_STATE #define __Pyx_GetException(type, value, tb) __Pyx__GetException(__pyx_tstate, type, value, tb) static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); #else static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb); #endif /* SwapException.proto */ #if CYTHON_FAST_THREAD_STATE #define __Pyx_ExceptionSwap(type, value, tb) __Pyx__ExceptionSwap(__pyx_tstate, type, value, tb) static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); #else static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb); #endif /* SaveResetException.proto */ #if CYTHON_FAST_THREAD_STATE #define __Pyx_ExceptionSave(type, value, tb) __Pyx__ExceptionSave(__pyx_tstate, type, value, tb) static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb); #define __Pyx_ExceptionReset(type, value, tb) __Pyx__ExceptionReset(__pyx_tstate, type, value, tb) static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb); #else #define __Pyx_ExceptionSave(type, value, tb) PyErr_GetExcInfo(type, value, tb) #define __Pyx_ExceptionReset(type, value, tb) PyErr_SetExcInfo(type, value, tb) #endif /* PyObjectSetAttrStr.proto */ #if CYTHON_USE_TYPE_SLOTS #define __Pyx_PyObject_DelAttrStr(o,n) __Pyx_PyObject_SetAttrStr(o,n,NULL) static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr_name, PyObject* value) { PyTypeObject* tp = Py_TYPE(obj); if (likely(tp->tp_setattro)) return tp->tp_setattro(obj, attr_name, value); #if PY_MAJOR_VERSION < 3 if (likely(tp->tp_setattr)) return tp->tp_setattr(obj, PyString_AS_STRING(attr_name), value); #endif return PyObject_SetAttr(obj, attr_name, value); } #else #define __Pyx_PyObject_DelAttrStr(o,n) PyObject_DelAttr(o,n) #define __Pyx_PyObject_SetAttrStr(o,n,v) PyObject_SetAttr(o,n,v) #endif /* ListAppend.proto */ #if CYTHON_USE_PYLIST_INTERNALS && CYTHON_ASSUME_SAFE_MACROS static CYTHON_INLINE int __Pyx_PyList_Append(PyObject* list, PyObject* x) { PyListObject* L = (PyListObject*) list; Py_ssize_t len = Py_SIZE(list); if (likely(L->allocated > len) & likely(len > (L->allocated >> 1))) { Py_INCREF(x); PyList_SET_ITEM(list, len, x); Py_SIZE(list) = len+1; return 0; } return PyList_Append(list, x); } #else #define __Pyx_PyList_Append(L,x) PyList_Append(L,x) #endif /* UnicodeEquals.proto */ static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals); /* None.proto */ static CYTHON_INLINE long __Pyx_div_long(long, long); /* Import.proto */ static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level); /* ImportFrom.proto */ static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name); /* None.proto */ static CYTHON_INLINE void __Pyx_RaiseClosureNameError(const char *varname); /* PyObjectCallMethod1.proto */ static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg); /* pop_index.proto */ static PyObject* __Pyx__PyObject_PopNewIndex(PyObject* L, PyObject* py_ix); static PyObject* __Pyx__PyObject_PopIndex(PyObject* L, PyObject* py_ix); #if CYTHON_USE_PYLIST_INTERNALS && CYTHON_ASSUME_SAFE_MACROS static PyObject* __Pyx__PyList_PopIndex(PyObject* L, PyObject* py_ix, Py_ssize_t ix); #define __Pyx_PyObject_PopIndex(L, py_ix, ix, is_signed, type, to_py_func) (\ (likely(PyList_CheckExact(L) && __Pyx_fits_Py_ssize_t(ix, type, is_signed))) ?\ __Pyx__PyList_PopIndex(L, py_ix, ix) : (\ (unlikely(py_ix == Py_None)) ? __Pyx__PyObject_PopNewIndex(L, to_py_func(ix)) :\ __Pyx__PyObject_PopIndex(L, py_ix))) #define __Pyx_PyList_PopIndex(L, py_ix, ix, is_signed, type, to_py_func) (\ __Pyx_fits_Py_ssize_t(ix, type, is_signed) ?\ __Pyx__PyList_PopIndex(L, py_ix, ix) : (\ (unlikely(py_ix == Py_None)) ? __Pyx__PyObject_PopNewIndex(L, to_py_func(ix)) :\ __Pyx__PyObject_PopIndex(L, py_ix))) #else #define __Pyx_PyList_PopIndex(L, py_ix, ix, is_signed, type, to_py_func)\ __Pyx_PyObject_PopIndex(L, py_ix, ix, is_signed, type, to_py_func) #define __Pyx_PyObject_PopIndex(L, py_ix, ix, is_signed, type, to_py_func) (\ (unlikely(py_ix == Py_None)) ? __Pyx__PyObject_PopNewIndex(L, to_py_func(ix)) :\ __Pyx__PyObject_PopIndex(L, py_ix)) #endif /* append.proto */ static CYTHON_INLINE int __Pyx_PyObject_Append(PyObject* L, PyObject* x); /* PyIntBinop.proto */ #if !CYTHON_COMPILING_IN_PYPY static PyObject* __Pyx_PyInt_SubtractCObj(PyObject *op1, PyObject *op2, long intval, int inplace); #else #define __Pyx_PyInt_SubtractCObj(op1, op2, intval, inplace)\ (inplace ? PyNumber_InPlaceSubtract(op1, op2) : PyNumber_Subtract(op1, op2)) #endif /* PyIntBinop.proto */ #if !CYTHON_COMPILING_IN_PYPY static PyObject* __Pyx_PyInt_SubtractObjC(PyObject *op1, PyObject *op2, long intval, int inplace); #else #define __Pyx_PyInt_SubtractObjC(op1, op2, intval, inplace)\ (inplace ? PyNumber_InPlaceSubtract(op1, op2) : PyNumber_Subtract(op1, op2)) #endif /* pyobject_as_double.proto */ static double __Pyx__PyObject_AsDouble(PyObject* obj); #if CYTHON_COMPILING_IN_PYPY #define __Pyx_PyObject_AsDouble(obj)\ (likely(PyFloat_CheckExact(obj)) ? PyFloat_AS_DOUBLE(obj) :\ likely(PyInt_CheckExact(obj)) ?\ PyFloat_AsDouble(obj) : __Pyx__PyObject_AsDouble(obj)) #else #define __Pyx_PyObject_AsDouble(obj)\ ((likely(PyFloat_CheckExact(obj))) ?\ PyFloat_AS_DOUBLE(obj) : __Pyx__PyObject_AsDouble(obj)) #endif /* PyErrExceptionMatches.proto */ #if CYTHON_FAST_THREAD_STATE #define __Pyx_PyErr_ExceptionMatches(err) __Pyx_PyErr_ExceptionMatchesInState(__pyx_tstate, err) static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err); #else #define __Pyx_PyErr_ExceptionMatches(err) PyErr_ExceptionMatches(err) #endif /* CalculateMetaclass.proto */ static PyObject *__Pyx_CalculateMetaclass(PyTypeObject *metaclass, PyObject *bases); /* Py3ClassCreate.proto */ static PyObject *__Pyx_Py3MetaclassPrepare(PyObject *metaclass, PyObject *bases, PyObject *name, PyObject *qualname, PyObject *mkw, PyObject *modname, PyObject *doc); static PyObject *__Pyx_Py3ClassCreate(PyObject *metaclass, PyObject *name, PyObject *bases, PyObject *dict, PyObject *mkw, int calculate_metaclass, int allow_py2_metaclass); /* CodeObjectCache.proto */ typedef struct { PyCodeObject* code_object; int code_line; } __Pyx_CodeObjectCacheEntry; struct __Pyx_CodeObjectCache { int count; int max_count; __Pyx_CodeObjectCacheEntry* entries; }; static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL}; static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line); static PyCodeObject *__pyx_find_code_object(int code_line); static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object); /* AddTraceback.proto */ static void __Pyx_AddTraceback(const char *funcname, int c_line, int py_line, const char *filename); /* CIntToPy.proto */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__Qt_3a__3a_Key(enum Qt::Key value); /* CIntToPy.proto */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__Qt_3a__3a_KeyboardModifier(enum Qt::KeyboardModifier value); /* CIntToPy.proto */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__Qt_3a__3a_MouseButton(enum Qt::MouseButton value); /* CIntToPy.proto */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value); /* None.proto */ static CYTHON_INLINE long __Pyx_pow_long(long, long); /* CIntToPy.proto */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value); /* CIntToPy.proto */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_Qt_3a__3a_KeyboardModifiers(Qt::KeyboardModifiers value); /* CppExceptionConversion.proto */ #ifndef __Pyx_CppExn2PyErr #include #include #include #include static void __Pyx_CppExn2PyErr() { try { if (PyErr_Occurred()) ; // let the latest Python exn pass through and ignore the current one else throw; } catch (const std::bad_alloc& exn) { PyErr_SetString(PyExc_MemoryError, exn.what()); } catch (const std::bad_cast& exn) { PyErr_SetString(PyExc_TypeError, exn.what()); } catch (const std::bad_typeid& exn) { PyErr_SetString(PyExc_TypeError, exn.what()); } catch (const std::domain_error& exn) { PyErr_SetString(PyExc_ValueError, exn.what()); } catch (const std::invalid_argument& exn) { PyErr_SetString(PyExc_ValueError, exn.what()); } catch (const std::ios_base::failure& exn) { PyErr_SetString(PyExc_IOError, exn.what()); } catch (const std::out_of_range& exn) { PyErr_SetString(PyExc_IndexError, exn.what()); } catch (const std::overflow_error& exn) { PyErr_SetString(PyExc_OverflowError, exn.what()); } catch (const std::range_error& exn) { PyErr_SetString(PyExc_ArithmeticError, exn.what()); } catch (const std::underflow_error& exn) { PyErr_SetString(PyExc_ArithmeticError, exn.what()); } catch (const std::exception& exn) { PyErr_SetString(PyExc_RuntimeError, exn.what()); } catch (...) { PyErr_SetString(PyExc_RuntimeError, "Unknown exception"); } } #endif /* CIntFromPy.proto */ static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *); /* CIntFromPy.proto */ static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *); /* FetchCommonType.proto */ static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type); /* RaiseException.proto */ static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause); /* CoroutineBase.proto */ typedef PyObject *(*__pyx_coroutine_body_t)(PyObject *, PyObject *); typedef struct { PyObject_HEAD __pyx_coroutine_body_t body; PyObject *closure; PyObject *exc_type; PyObject *exc_value; PyObject *exc_traceback; PyObject *gi_weakreflist; PyObject *classobj; PyObject *yieldfrom; PyObject *gi_name; PyObject *gi_qualname; PyObject *gi_modulename; int resume_label; char is_running; } __pyx_CoroutineObject; static __pyx_CoroutineObject *__Pyx__Coroutine_New( PyTypeObject *type, __pyx_coroutine_body_t body, PyObject *closure, PyObject *name, PyObject *qualname, PyObject *module_name); static int __Pyx_Coroutine_clear(PyObject *self); #if 1 || PY_VERSION_HEX < 0x030300B0 static int __Pyx_PyGen_FetchStopIterationValue(PyObject **pvalue); #else #define __Pyx_PyGen_FetchStopIterationValue(pvalue) PyGen_FetchStopIterationValue(pvalue) #endif /* PatchModuleWithCoroutine.proto */ static PyObject* __Pyx_Coroutine_patch_module(PyObject* module, const char* py_code); /* PatchGeneratorABC.proto */ static int __Pyx_patch_abc(void); /* Generator.proto */ #define __Pyx_Generator_USED static PyTypeObject *__pyx_GeneratorType = 0; #define __Pyx_Generator_CheckExact(obj) (Py_TYPE(obj) == __pyx_GeneratorType) #define __Pyx_Generator_New(body, closure, name, qualname, module_name)\ __Pyx__Coroutine_New(__pyx_GeneratorType, body, closure, name, qualname, module_name) static PyObject *__Pyx_Generator_Next(PyObject *self); static int __pyx_Generator_init(void); /* CheckBinaryVersion.proto */ static int __Pyx_check_binary_version(void); /* PyIdentifierFromString.proto */ #if !defined(__Pyx_PyIdentifier_FromString) #if PY_MAJOR_VERSION < 3 #define __Pyx_PyIdentifier_FromString(s) PyString_FromString(s) #else #define __Pyx_PyIdentifier_FromString(s) PyUnicode_FromString(s) #endif #endif /* ModuleImport.proto */ static PyObject *__Pyx_ImportModule(const char *name); /* FunctionImport.proto */ static int __Pyx_ImportFunction(PyObject *module, const char *funcname, void (**f)(void), const char *sig); /* InitStrings.proto */ static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); /* Module declarations from 'libc.stdint' */ /* Module declarations from 'libcpp' */ /* Module declarations from 'qt' */ /* Module declarations from 'libc.stddef' */ /* Module declarations from 'gl_ogl' */ /* Module declarations from '_glarea_ogl' */ static void (*__pyx_f_11_glarea_ogl_render_resize)(int, int, int); /*proto*/ static void (*__pyx_f_11_glarea_ogl_set_animation_next)(float); /*proto*/ static void (*__pyx_f_11_glarea_ogl_sync_set_fixedshaders)(void); /*proto*/ static void (*__pyx_f_11_glarea_ogl_sync_set_pick_position)(void); /*proto*/ static void (*__pyx_f_11_glarea_ogl_sync_set_atlas_data)(void); /*proto*/ static void (*__pyx_f_11_glarea_ogl_sync)(void); /*proto*/ static void (*__pyx_f_11_glarea_ogl_gl_init)(void); /*proto*/ static void (*__pyx_f_11_glarea_ogl_gl_exit)(void); /*proto*/ static void (*__pyx_f_11_glarea_ogl_gl_set_atlas_texture)(int, int); /*proto*/ static void (*__pyx_f_11_glarea_ogl_gl_render)(void); /*proto*/ static void (*__pyx_f_11_glarea_ogl_gl_render_select_debug)(void); /*proto*/ static int (*__pyx_f_11_glarea_ogl_gl_pick_polygons)(void); /*proto*/ /* Module declarations from '_qtui_' */ static void (*__pyx_f_6_qtui__init_module)(void); /*proto*/ static void (*__pyx_f_6_qtui__init_gettext)(PyObject *); /*proto*/ static void (*__pyx_f_6_qtui__setupUi_main)(QMainWindow *, QIcon const &, QIcon const &, QIcon const &, QKeySequence const &, QKeySequence const &, bool, bool); /*proto*/ static void (*__pyx_f_6_qtui__setupUi_pref)(QDialog *, int, int, int, int, int, QStandardItemModel *); /*proto*/ static void (*__pyx_f_6_qtui__setupUi_help)(QDialog *, QString const &); /*proto*/ static void (*__pyx_f_6_qtui__setupUi_about)(QDialog *); /*proto*/ static void (*__pyx_f_6_qtui__set_shortcuts)(QKeySequence const &, QKeySequence const &, QKeySequence const &, QKeySequence const &); /*proto*/ static void (*__pyx_f_6_qtui__add_widgets)(QMainWindow *, QLineEdit *, QOpenGLWidget *); /*proto*/ static void (*__pyx_f_6_qtui__set_frame_editbar_visible)(bool); /*proto*/ static void (*__pyx_f_6_qtui__set_statusbar_visible)(bool); /*proto*/ static void (*__pyx_f_6_qtui__hide_controls)(void); /*proto*/ static void (*__pyx_f_6_qtui__get_splitter_sizes)(int &, int &); /*proto*/ static void (*__pyx_f_6_qtui__set_splitter_sizes)(int, int); /*proto*/ static void (*__pyx_f_6_qtui__splitter_update_minimumsize)(void); /*proto*/ static void (*__pyx_f_6_qtui__set_debug_text)(QString const &); /*proto*/ static void (*__pyx_f_6_qtui__set_toolbar_state)(int, int, int, int, int); /*proto*/ static void (*__pyx_f_6_qtui__clear_sidepane)(void); /*proto*/ static QPushButton *(*__pyx_f_6_qtui__create_sidepane_button)(QString const &); /*proto*/ static QTreeView *(*__pyx_f_6_qtui__create_sidepane_treeview)(QStandardItemModel *, int); /*proto*/ static void (*__pyx_f_6_qtui__set_active_plugin_group)(int); /*proto*/ static void (*__pyx_f_6_qtui__set_active_plugin_group_by_obj)(QObject *); /*proto*/ static int (*__pyx_f_6_qtui__get_plugin_group_count)(void); /*proto*/ static QModelIndex (*__pyx_f_6_qtui__root_index)(int); /*proto*/ static void (*__pyx_f_6_qtui__hide_row)(int, bool); /*proto*/ static void (*__pyx_f_6_qtui__set_row_hidden)(int, int, QModelIndex const &, bool); /*proto*/ static int (*__pyx_f_6_qtui__splitter_pos)(void); /*proto*/ static void (*__pyx_f_6_qtui__preferences_block_signals)(bool); /*proto*/ static void (*__pyx_f_6_qtui__combobox_add_shaderitem)(QString const &, QString const &); /*proto*/ static void (*__pyx_f_6_qtui__combobox_add_samplesitem)(QString const &, QString const &); /*proto*/ static void (*__pyx_f_6_qtui__add_movekey_row)(void); /*proto*/ static void (*__pyx_f_6_qtui__remove_movekey_row)(void); /*proto*/ static void (*__pyx_f_6_qtui__add_liststore_faces_row)(QString const &, QString const &); /*proto*/ static void (*__pyx_f_6_qtui__finalize_liststore_faces)(QWidget *); /*proto*/ static QString (*__pyx_f_6_qtui__get_liststore_faces_facekey)(QModelIndex const &); /*proto*/ static void (*__pyx_f_6_qtui__set_button_color)(QString const &); /*proto*/ static QString (*__pyx_f_6_qtui__color_dialog)(QWidget *, QString const &); /*proto*/ static void (*__pyx_f_6_qtui__set_imagemode)(int); /*proto*/ static void (*__pyx_f_6_qtui__add_combobox_image_item)(QIcon const &, QString const &, QString const &); /*proto*/ static void (*__pyx_f_6_qtui__set_combobox_image)(int, QIcon const &, int); /*proto*/ static void (*__pyx_f_6_qtui__set_button_background_color)(QString const &); /*proto*/ static void (*__pyx_f_6_qtui__fill_page)(QVariant, QString const &); /*proto*/ static void (*__pyx_f_6_qtui__set_page)(int); /*proto*/ static void (*__pyx_f_6_qtui__fill_header)(QString const &, QString const &, QString const &, QString const &); /*proto*/ static void (*__pyx_f_6_qtui__fill_about_tab)(QString const &, QString const &, QString const &); /*proto*/ static void (*__pyx_f_6_qtui__fill_contribute_tab)(QString const &); /*proto*/ static void (*__pyx_f_6_qtui__fill_license_tab)(QString const &, bool, QString const &); /*proto*/ static void (*__pyx_f_6_qtui__tab_widget_currentChanged)(int); /*proto*/ static void (*__pyx_f_6_qtui__update_animation)(bool); /*proto*/ static void (*__pyx_f_6_qtui__event_filter_stop_animation)(QEvent *); /*proto*/ static void (*__pyx_f_6_qtui__show_full_license)(bool, QUrl const &); /*proto*/ /* Module declarations from 'libc.string' */ /* Module declarations from 'libc.stdio' */ /* Module declarations from '_qt_qtwogl' */ static PyTypeObject *__pyx_ptype_10_qt_qtwogl___pyx_scope_struct__keyval_from_name = 0; static PyTypeObject *__pyx_ptype_10_qt_qtwogl___pyx_scope_struct_1_genexpr = 0; static long __pyx_v_10_qt_qtwogl_debug; static struct __pyx_t_10_qt_qtwogl_RenderData __pyx_v_10_qt_qtwogl_renderdata; static struct __pyx_t_10_qt_qtwogl_UIData __pyx_v_10_qt_qtwogl_uidata; static void __pyx_f_10_qt_qtwogl_init_module(void); /*proto*/ static PyObject *__pyx_f_10_qt_qtwogl_q2str(QString const &); /*proto*/ static QString __pyx_f_10_qt_qtwogl_str2q(PyObject *); /*proto*/ static QList __pyx_f_10_qt_qtwogl__list2q(PyObject *); /*proto*/ static QVariant __pyx_f_10_qt_qtwogl_tovariant(PyObject *); /*proto*/ static PyObject *__pyx_f_10_qt_qtwogl__q2list(QList const &); /*proto*/ static PyObject *__pyx_f_10_qt_qtwogl__qs2list(QStringList const &); /*proto*/ static PyObject *__pyx_f_10_qt_qtwogl__q2dict(QMap const &); /*proto*/ static PyObject *__pyx_f_10_qt_qtwogl_fromvariant(QVariant const &); /*proto*/ static void __pyx_f_10_qt_qtwogl_render_update_atlas(void); /*proto*/ static void __pyx_f_10_qt_qtwogl_render_fps(void); /*proto*/ static void __pyx_f_10_qt_qtwogl_render_pick(void); /*proto*/ static void __pyx_f_10_qt_qtwogl_render_init(void); /*proto*/ static void __pyx_f_10_qt_qtwogl_render_destroy_texture(void); /*proto*/ static void __pyx_f_10_qt_qtwogl_render_destroy(void); /*proto*/ static void __pyx_f_10_qt_qtwogl_render_init_gldebuglogger(void); /*proto*/ static void __pyx_f_10_qt_qtwogl__pfmt(char *, int, int, int); /*proto*/ static void __pyx_f_10_qt_qtwogl__pfmt2(char *, int, int, int, int, int, int); /*proto*/ static void __pyx_f_10_qt_qtwogl_print_surface_info(void); /*proto*/ static PyObject *__pyx_f_10_qt_qtwogl_set_atlas_size(int, int, int __pyx_skip_dispatch); /*proto*/ static void __pyx_f_10_qt_qtwogl_set_default_surface_format(void); /*proto*/ static void __pyx_f_10_qt_qtwogl_dump_info(char const *, QObject const *); /*proto*/ static void __pyx_f_10_qt_qtwogl_show_message_cb(void); /*proto*/ static void __pyx_f_10_qt_qtwogl__fill_treestore(QStandardItem *, PyObject *); /*proto*/ static bool __pyx_f_10_qt_qtwogl__hide_row(int, QModelIndex const &); /*proto*/ static QVariant __pyx_f_10_qt_qtwogl_create_stdmodel(PyObject *); /*proto*/ static void __pyx_f_10_qt_qtwogl_help_dialog(void); /*proto*/ static void __pyx_f_10_qt_qtwogl_help_dialog_show(void); /*proto*/ static void __pyx_f_10_qt_qtwogl_about_dialog(void); /*proto*/ static QIcon __pyx_f_10_qt_qtwogl_get_icon(PyObject *); /*proto*/ static void __pyx_f_10_qt_qtwogl__on_filesystemwatcher_changed_1(QString const &); /*proto*/ static void __pyx_f_10_qt_qtwogl__on_filesystemwatcher_changed_2(void); /*proto*/ static void __pyx_f_10_qt_qtwogl__on_singleShot(void); /*proto*/ static void __pyx_f_10_qt_qtwogl__on_settings_timer_timeout(void); /*proto*/ static void __pyx_f_10_qt_qtwogl_settings_timer_create(void); /*proto*/ static PyObject *__pyx_f_10_qt_qtwogl_settings_timer_start(int __pyx_skip_dispatch); /*proto*/ static void __pyx_f_10_qt_qtwogl_settings_timer_destroy(void); /*proto*/ static void __pyx_f_10_qt_qtwogl_animation_init(void); /*proto*/ static void __pyx_f_10_qt_qtwogl__on_animate_timer_timeout(void); /*proto*/ static PyObject *__pyx_f_10_qt_qtwogl_animate_timer_start(PyObject *, PyObject *, int __pyx_skip_dispatch); /*proto*/ static void __pyx_f_10_qt_qtwogl_animate_timer_destroy(void); /*proto*/ static void __pyx_f_10_qt_qtwogl_load_cursors(PyObject *); /*proto*/ static void __pyx_f_10_qt_qtwogl_destroy_cursors(void); /*proto*/ static void __pyx_f_10_qt_qtwogl_destroy_resources(void); /*proto*/ static void __pyx_f_10_qt_qtwogl__on_init_finalize(void); /*proto*/ #define __Pyx_MODULE_NAME "_qt_qtwogl" int __pyx_module_is_main__qt_qtwogl = 0; /* Implementation of '_qt_qtwogl' */ static PyObject *__pyx_builtin_print; static PyObject *__pyx_builtin_range; static PyObject *__pyx_builtin_zip; static PyObject *__pyx_builtin_RuntimeWarning; static PyObject *__pyx_builtin_enumerate; static PyObject *__pyx_builtin_KeyError; static PyObject *__pyx_builtin_ValueError; static const char __pyx_k_i[] = "i"; static const char __pyx_k_KP[] = "KP"; static const char __pyx_k__4[] = "_"; static const char __pyx_k__6[] = ""; static const char __pyx_k__7[] = " "; static const char __pyx_k_os[] = "os"; static const char __pyx_k_qt[] = "qt"; static const char __pyx_k_s1[] = "s1"; static const char __pyx_k_s2[] = "s2"; static const char __pyx_k_Key[] = "Key"; static const char __pyx_k_Num[] = "Num"; static const char __pyx_k__13[] = "/"; static const char __pyx_k__22[] = "+"; static const char __pyx_k_app[] = "app"; static const char __pyx_k_ccw[] = "ccw"; static const char __pyx_k_doc[] = "__doc__"; static const char __pyx_k_get[] = "get"; static const char __pyx_k_int[] = "int"; static const char __pyx_k_pop[] = "pop"; static const char __pyx_k_pos[] = "pos"; static const char __pyx_k_sys[] = "sys"; static const char __pyx_k_zip[] = "zip"; static const char __pyx_k_Move[] = "Move"; static const char __pyx_k_args[] = "args"; static const char __pyx_k_bool[] = "bool"; static const char __pyx_k_code[] = "code"; static const char __pyx_k_data[] = "data"; static const char __pyx_k_font[] = "font"; static const char __pyx_k_func[] = "func"; static const char __pyx_k_icon[] = "icon"; static const char __pyx_k_item[] = "item"; static const char __pyx_k_join[] = "join"; static const char __pyx_k_main[] = "__main__"; static const char __pyx_k_msec[] = "msec"; static const char __pyx_k_name[] = "__name__"; static const char __pyx_k_nick[] = "nick"; static const char __pyx_k_path[] = "path"; static const char __pyx_k_send[] = "send"; static const char __pyx_k_test[] = "__test__"; static const char __pyx_k_text[] = "text"; static const char __pyx_k_void[] = "void*"; static const char __pyx_k_warn[] = "warn"; static const char __pyx_k_Theme[] = "Theme"; static const char __pyx_k_close[] = "close"; static const char __pyx_k_color[] = "color"; static const char __pyx_k_image[] = "image"; static const char __pyx_k_index[] = "index"; static const char __pyx_k_plain[] = "plain"; static const char __pyx_k_print[] = "print"; static const char __pyx_k_pyapp[] = "pyapp"; static const char __pyx_k_qpath[] = "qpath"; static const char __pyx_k_range[] = "range"; static const char __pyx_k_split[] = "split"; static const char __pyx_k_state[] = "state"; static const char __pyx_k_theme[] = "theme"; static const char __pyx_k_throw[] = "throw"; static const char __pyx_k_tiled[] = "tiled"; static const char __pyx_k_title[] = "title"; static const char __pyx_k_utf_8[] = "utf-8"; static const char __pyx_k_width[] = "width"; static const char __pyx_k_Key_Up[] = "Key_Up"; static const char __pyx_k_PyData[] = "PyData"; static const char __pyx_k_QtKeys[] = "QtKeys"; static const char __pyx_k_UI_DIR[] = "UI_DIR"; static const char __pyx_k_Ubuntu[] = "Ubuntu"; static const char __pyx_k_append[] = "append"; static const char __pyx_k_button[] = "button"; static const char __pyx_k_config[] = "config_"; static const char __pyx_k_double[] = "double"; static const char __pyx_k_encode[] = "encode"; static const char __pyx_k_format[] = "format"; static const char __pyx_k_height[] = "height"; static const char __pyx_k_images[] = "images"; static const char __pyx_k_import[] = "__import__"; static const char __pyx_k_isfile[] = "isfile"; static const char __pyx_k_keyseq[] = "keyseq"; static const char __pyx_k_keystr[] = "keystr"; static const char __pyx_k_module[] = "module"; static const char __pyx_k_mosaic[] = "mosaic"; static const char __pyx_k_name_2[] = "name"; static const char __pyx_k_pydata[] = "pydata"; static const char __pyx_k_select[] = "select \342\200\246"; static const char __pyx_k_simple[] = "simple"; static const char __pyx_k_transl[] = "transl"; static const char __pyx_k_void_2[] = "({})"; static const char __pyx_k_APPNAME[] = "APPNAME"; static const char __pyx_k_QObject[] = "QObject({})"; static const char __pyx_k_QString[] = "QString"; static const char __pyx_k_VERSION[] = "VERSION"; static const char __pyx_k_cursors[] = "cursors"; static const char __pyx_k_dirname[] = "dirname"; static const char __pyx_k_environ[] = "environ"; static const char __pyx_k_facekey[] = "facekey"; static const char __pyx_k_genexpr[] = "genexpr"; static const char __pyx_k_gesture[] = "gesture"; static const char __pyx_k_gettext[] = "gettext"; static const char __pyx_k_load_ui[] = "load_ui"; static const char __pyx_k_maxsize[] = "maxsize"; static const char __pyx_k_message[] = "message"; static const char __pyx_k_package[] = "__package__"; static const char __pyx_k_prepare[] = "__prepare__"; static const char __pyx_k_subtree[] = "subtree"; static const char __pyx_k_KeyError[] = "KeyError"; static const char __pyx_k_Key_Down[] = "Key_Down"; static const char __pyx_k_Key_Left[] = "Key_Left"; static const char __pyx_k_callback[] = "callback"; static const char __pyx_k_compiled[] = " compiled:"; static const char __pyx_k_config_2[] = "config"; static const char __pyx_k_facename[] = "facename"; static const char __pyx_k_filename[] = "filename"; static const char __pyx_k_module_2[] = "__module__"; static const char __pyx_k_pybiklib[] = "pybiklib"; static const char __pyx_k_quadrant[] = "quadrant"; static const char __pyx_k_qualname[] = "__qualname__"; static const char __pyx_k_settings[] = "settings"; static const char __pyx_k_textures[] = "textures"; static const char __pyx_k_treeview[] = "treeview"; static const char __pyx_k_warnings[] = "warnings"; static const char __pyx_k_COPYRIGHT[] = "COPYRIGHT"; static const char __pyx_k_DEBUG_FPS[] = "DEBUG_FPS"; static const char __pyx_k_DEBUG_MSG[] = "DEBUG_MSG"; static const char __pyx_k_DEBUG_QML[] = "DEBUG_QML"; static const char __pyx_k_DEBUG_SIM[] = "DEBUG_SIM"; static const char __pyx_k_Key_Right[] = "Key_Right"; static const char __pyx_k_OFFSCREEN[] = " OFFSCREEN:"; static const char __pyx_k_angle_max[] = "angle_max"; static const char __pyx_k_enumerate[] = "enumerate"; static const char __pyx_k_facenames[] = "facenames"; static const char __pyx_k_help_text[] = "help_text"; static const char __pyx_k_imagefile[] = "imagefile"; static const char __pyx_k_imagemode[] = "imagemode"; static const char __pyx_k_locations[] = "locations"; static const char __pyx_k_metaclass[] = "__metaclass__"; static const char __pyx_k_mode_nick[] = "mode_nick"; static const char __pyx_k_qt_qtwogl[] = "_qt_qtwogl"; static const char __pyx_k_set_title[] = "set_title"; static const char __pyx_k_DEBUG_DRAW[] = "DEBUG_DRAW"; static const char __pyx_k_DEBUG_VFPS[] = "DEBUG_VFPS"; static const char __pyx_k_Key_Escape[] = "Key_Escape"; static const char __pyx_k_Key_Period[] = "Key_Period"; static const char __pyx_k_LeftButton[] = "LeftButton"; static const char __pyx_k_Open_Image[] = "Open Image"; static const char __pyx_k_ValueError[] = "ValueError"; static const char __pyx_k_compiled_2[] = "__compiled"; static const char __pyx_k_drag_enter[] = "drag enter:"; static const char __pyx_k_draw_speed[] = "draw.speed"; static const char __pyx_k_imageindex[] = "imageindex"; static const char __pyx_k_index_icon[] = "index_icon"; static const char __pyx_k_mouse__png[] = "mouse_{}.png"; static const char __pyx_k_on_closing[] = "on_closing"; static const char __pyx_k_set_cursor[] = "set_cursor"; static const char __pyx_k_sizepolicy[] = "sizepolicy"; static const char __pyx_k_startswith[] = "startswith"; static const char __pyx_k_stockicons[] = "stockicons"; static const char __pyx_k_DEBUG_MSGGL[] = "DEBUG_MSGGL"; static const char __pyx_k_DEBUG_PHONE[] = "DEBUG_PHONE"; static const char __pyx_k_GL_type_ogl[] = " GL-type: ogl"; static const char __pyx_k_RightButton[] = "RightButton"; static const char __pyx_k_divider_pos[] = "divider_pos"; static const char __pyx_k_draw_accels[] = "draw.accels"; static const char __pyx_k_draw_shader[] = "draw.shader"; static const char __pyx_k_get_samples[] = "get_samples"; static const char __pyx_k_init_module[] = "init module:"; static const char __pyx_k_modelselect[] = "modelselect"; static const char __pyx_k_parse_color[] = "parse_color"; static const char __pyx_k_plugin_data[] = "plugin_data"; static const char __pyx_k_theme_faces[] = "theme.faces"; static const char __pyx_k_window_size[] = "window.size"; static const char __pyx_k_APPICON_FILE[] = "APPICON_FILE"; static const char __pyx_k_DEBUG_MSGEXT[] = "DEBUG_MSGEXT"; static const char __pyx_k_GRID_UNIT_PX[] = "GRID_UNIT_PX"; static const char __pyx_k_divider_pos2[] = "divider_pos2"; static const char __pyx_k_draw_samples[] = "draw.samples"; static const char __pyx_k_from_package[] = " from package:"; static const char __pyx_k_scaled_width[] = "scaled_width"; static const char __pyx_k_shader_names[] = "shader_names"; static const char __pyx_k_show_message[] = "show_message"; static const char __pyx_k_text_to_html[] = "text_to_html"; static const char __pyx_k_unset_cursor[] = "unset_cursor"; static const char __pyx_k_DEBUG_GLDEBUG[] = "DEBUG_GLDEBUG"; static const char __pyx_k_ShiftModifier[] = "ShiftModifier"; static const char __pyx_k_about_website[] = "about_website"; static const char __pyx_k_create_window[] = "create_window"; static const char __pyx_k_currentfolder[] = "currentfolder"; static const char __pyx_k_fill_sidepane[] = "fill_sidepane"; static const char __pyx_k_fontpixelsize[] = "fontpixelsize"; static const char __pyx_k_get_imagefile[] = "get_imagefile"; static const char __pyx_k_on_model_back[] = "on_model_back"; static const char __pyx_k_on_mouse_zoom[] = "on_mouse_zoom"; static const char __pyx_k_parse_color_f[] = "parse_color_f"; static const char __pyx_k_scaled_height[] = "scaled_height"; static const char __pyx_k_theme_bgcolor[] = "theme.bgcolor"; static const char __pyx_k_warn_explicit[] = "warn_explicit"; static const char __pyx_k_RuntimeWarning[] = "RuntimeWarning"; static const char __pyx_k_Skip_mime_type[] = "Skip mime type:"; static const char __pyx_k_destroy_window[] = "destroy_window"; static const char __pyx_k_initial_resize[] = "initial_resize"; static const char __pyx_k_new_random_png[] = "new-random.png"; static const char __pyx_k_new_solved_png[] = "new-solved.png"; static const char __pyx_k_on_dialog_text[] = "on_dialog_text"; static const char __pyx_k_on_key_pressed[] = "on_key_pressed"; static const char __pyx_k_on_mouse_moved[] = "on_mouse_moved"; static const char __pyx_k_pick_requested[] = "pick_requested"; static const char __pyx_k_sample_buffers[] = "sample_buffers"; static const char __pyx_k_selection_nick[] = "selection_nick"; static const char __pyx_k_set_debug_text[] = "set_debug_text"; static const char __pyx_k_set_edit_moves[] = "set_edit_moves"; static const char __pyx_k_window_divider[] = "window.divider"; static const char __pyx_k_window_editbar[] = "window.editbar"; static const char __pyx_k_ControlModifier[] = "ControlModifier"; static const char __pyx_k_app_post_create[] = "app_post_create"; static const char __pyx_k_combobox_shader[] = "combobox_shader"; static const char __pyx_k_gl_delete_atlas[] = "gl_delete_atlas"; static const char __pyx_k_image_from_file[] = "image_from_file"; static const char __pyx_k_imageindex_icon[] = "imageindex_icon"; static const char __pyx_k_save_screenshot[] = "save_screenshot"; static const char __pyx_k_set_debug_flags[] = "set_debug_flags"; static const char __pyx_k_set_status_text[] = "set_status_text"; static const char __pyx_k_update_sidepane[] = "update_sidepane"; static const char __pyx_k_DEBUG_NOCONTROLS[] = "DEBUG_NOCONTROLS"; static const char __pyx_k_about_contribute[] = "about_contribute"; static const char __pyx_k_action_edit_cube[] = "action.edit_cube"; static const char __pyx_k_close_mainwindow[] = "close_mainwindow"; static const char __pyx_k_combobox_samples[] = "combobox_samples"; static const char __pyx_k_draw_speed_range[] = "draw.speed_range"; static const char __pyx_k_keyval_from_name[] = "keyval_from_name"; static const char __pyx_k_on_edit_finished[] = "on_edit_finished"; static const char __pyx_k_on_init_finalize[] = "on_init_finalize"; static const char __pyx_k_on_mouse_pressed[] = "on_mouse_pressed"; static const char __pyx_k_select_model_png[] = "select-model.png"; static const char __pyx_k_show_preferences[] = "show_preferences"; static const char __pyx_k_singleshot_queue[] = "singleshot_queue"; static const char __pyx_k_slider_animspeed[] = "slider_animspeed"; static const char __pyx_k_timer_singleShot[] = "timer_singleShot"; static const char __pyx_k_window_statusbar[] = "window.statusbar"; static const char __pyx_k_SHORT_DESCRIPTION[] = "SHORT_DESCRIPTION"; static const char __pyx_k_about_translators[] = "about_translators"; static const char __pyx_k_action_edit_moves[] = "action.edit_moves"; static const char __pyx_k_draw_mirror_faces[] = "draw.mirror_faces"; static const char __pyx_k_draw_shader_range[] = "draw.shader_range"; static const char __pyx_k_on_mouse_drop_url[] = "on_mouse_drop_url"; static const char __pyx_k_on_mouse_released[] = "on_mouse_released"; static const char __pyx_k_on_picking_result[] = "on_picking_result"; static const char __pyx_k_pybiklib_settings[] = "pybiklib.settings"; static const char __pyx_k_set_toolbar_state[] = "set_toolbar_state"; static const char __pyx_k_show_message_text[] = "show_message_text"; static const char __pyx_k_about_license_full[] = "about_license_full"; static const char __pyx_k_action_preferences[] = "action.preferences"; static const char __pyx_k_action_selectmodel[] = "action.selectmodel"; static const char __pyx_k_animate_timer_step[] = "animate_timer_step"; static const char __pyx_k_animate_timer_stop[] = "animate_timer_stop"; static const char __pyx_k_draw_samples_range[] = "draw.samples_range"; static const char __pyx_k_draw_speed_default[] = "draw.speed_default"; static const char __pyx_k_on_load_other_game[] = "on_load_other_game"; static const char __pyx_k_on_plugin_test_idx[] = "on_plugin_test_idx"; static const char __pyx_k_preferences_dialog[] = "preferences_dialog"; static const char __pyx_k_set_pick_requested[] = "set_pick_requested"; static const char __pyx_k_singleshot_handler[] = "singleshot_handler"; static const char __pyx_k_unknown_typename_s[] = "unknown typename %s"; static const char __pyx_k_update_drawingarea[] = "update_drawingarea"; static const char __pyx_k_about_license_short[] = "about_license_short"; static const char __pyx_k_draw_selection_nick[] = "draw.selection_nick"; static const char __pyx_k_draw_shader_default[] = "draw.shader_default"; static const char __pyx_k_get_pictures_folder[] = "get_pictures_folder"; static const char __pyx_k_on_animation_ending[] = "on_animation_ending"; static const char __pyx_k_on_mouse_drop_color[] = "on_mouse_drop_color"; static const char __pyx_k_on_plugin_activated[] = "on_plugin_activated"; static const char __pyx_k_set_animation_speed[] = "set_animation_speed"; static const char __pyx_k_value_has_wrong_typ[] = "value has wrong typ "; static const char __pyx_k_action_initial_state[] = "action.initial_state"; static const char __pyx_k_button_mousemode_ext[] = "button_mousemode_ext"; static const char __pyx_k_draw_mirror_distance[] = "draw.mirror_distance"; static const char __pyx_k_draw_samples_default[] = "draw.samples_default"; static const char __pyx_k_load_image_from_file[] = "load_image_from_file"; static const char __pyx_k_spinbox_mirror_faces[] = "spinbox_mirror_faces"; static const char __pyx_k_action_reset_rotation[] = "action.reset_rotation"; static const char __pyx_k_button_mousemode_quad[] = "button_mousemode_quad"; static const char __pyx_k_checkbox_mirror_faces[] = "checkbox_mirror_faces"; static const char __pyx_k_label_needs_restarted[] = "label_needs_restarted"; static const char __pyx_k_about_license_notfound[] = "about_license_notfound"; static const char __pyx_k_filesystemwatcher_path[] = "filesystemwatcher_path"; static const char __pyx_k_on_edit_moves_nextword[] = "on_edit_moves_nextword"; static const char __pyx_k_on_edit_moves_prevword[] = "on_edit_moves_prevword"; static const char __pyx_k_on_edit_moves_swapnext[] = "on_edit_moves_swapnext"; static const char __pyx_k_on_edit_moves_swapprev[] = "on_edit_moves_swapprev"; static const char __pyx_k_on_model_get_modeldata[] = "on_model_get_modeldata"; static const char __pyx_k_text_FULL_LICENSE_TEXT[] = "text:FULL_LICENSE_TEXT"; static const char __pyx_k_button_mousemode_gesture[] = "button_mousemode_gesture"; static const char __pyx_k_create_filesystemwatcher[] = "create_filesystemwatcher"; static const char __pyx_k_get_filedialog_imagefile[] = "get_filedialog_imagefile"; static const char __pyx_k_on_action_next_triggered[] = "on_action_next_triggered"; static const char __pyx_k_on_action_play_triggered[] = "on_action_play_triggered"; static const char __pyx_k_on_action_stop_triggered[] = "on_action_stop_triggered"; static const char __pyx_k_on_convert_to_mtype_size[] = "on_convert_to_mtype_size"; static const char __pyx_k_draw_mirror_faces_default[] = "draw.mirror_faces_default"; static const char __pyx_k_on_settings_timer_timeout[] = "on_settings_timer_timeout"; static const char __pyx_k_draw_mirror_distance_range[] = "draw.mirror_distance_range"; static const char __pyx_k_filesystemwatcher_handlers[] = "filesystemwatcher_handlers"; static const char __pyx_k_on_action_rewind_triggered[] = "on_action_rewind_triggered"; static const char __pyx_k_set_combobox_current_image[] = "set_combobox_current_image"; static const char __pyx_k_on_action_forward_triggered[] = "on_action_forward_triggered"; static const char __pyx_k_draw_mirror_distance_default[] = "draw.mirror_distance_default"; static const char __pyx_k_on_action_mark_set_triggered[] = "on_action_mark_set_triggered"; static const char __pyx_k_on_action_previous_triggered[] = "on_action_previous_triggered"; static const char __pyx_k_on_action_challenge_triggered[] = "on_action_challenge_triggered"; static const char __pyx_k_on_action_edit_cube_triggered[] = "on_action_edit_cube_triggered"; static const char __pyx_k_on_dialog_change_current_face[] = "on_dialog_change_current_face"; static const char __pyx_k_on_dialog_reset_current_image[] = "on_dialog_reset_current_image"; static const char __pyx_k_on_action_new_solved_triggered[] = "on_action_new_solved_triggered"; static const char __pyx_k_on_dialog_change_current_image[] = "on_dialog_change_current_image"; static const char __pyx_k_tmp[] = "/tmp/build/temp.linux-x86_64-3.5/pybiklib/ext/_qt_qtwogl.pyx"; static const char __pyx_k_keyval_from_name_locals_genexpr[] = "keyval_from_name..genexpr"; static const char __pyx_k_on_action_mark_remove_triggered[] = "on_action_mark_remove_triggered"; static const char __pyx_k_on_action_preferences_triggered[] = "on_action_preferences_triggered"; static const char __pyx_k_on_action_selectmodel_triggered[] = "on_action_selectmodel_triggered"; static const char __pyx_k_on_action_initial_state_triggere[] = "on_action_initial_state_triggered"; static const char __pyx_k_on_action_reset_rotation_trigger[] = "on_action_reset_rotation_triggered"; static const char __pyx_k_set_preferences_current_face_the[] = "set_preferences_current_face_theme"; static PyObject *__pyx_n_s_APPICON_FILE; static PyObject *__pyx_n_s_APPNAME; static PyObject *__pyx_n_s_COPYRIGHT; static PyObject *__pyx_n_s_ControlModifier; static PyObject *__pyx_n_s_DEBUG_DRAW; static PyObject *__pyx_n_s_DEBUG_FPS; static PyObject *__pyx_n_s_DEBUG_GLDEBUG; static PyObject *__pyx_n_s_DEBUG_MSG; static PyObject *__pyx_n_s_DEBUG_MSGEXT; static PyObject *__pyx_n_s_DEBUG_MSGGL; static PyObject *__pyx_n_s_DEBUG_NOCONTROLS; static PyObject *__pyx_n_s_DEBUG_PHONE; static PyObject *__pyx_n_s_DEBUG_QML; static PyObject *__pyx_n_s_DEBUG_SIM; static PyObject *__pyx_n_s_DEBUG_VFPS; static PyObject *__pyx_kp_u_GL_type_ogl; static PyObject *__pyx_n_u_GRID_UNIT_PX; static PyObject *__pyx_n_u_KP; static PyObject *__pyx_n_u_Key; static PyObject *__pyx_n_s_KeyError; static PyObject *__pyx_n_s_Key_Down; static PyObject *__pyx_n_s_Key_Escape; static PyObject *__pyx_n_s_Key_Left; static PyObject *__pyx_n_s_Key_Period; static PyObject *__pyx_n_s_Key_Right; static PyObject *__pyx_n_s_Key_Up; static PyObject *__pyx_n_s_LeftButton; static PyObject *__pyx_n_u_Move; static PyObject *__pyx_n_u_Num; static PyObject *__pyx_kp_u_OFFSCREEN; static PyObject *__pyx_kp_u_Open_Image; static PyObject *__pyx_n_s_PyData; static PyObject *__pyx_kp_u_QObject; static PyObject *__pyx_n_b_QString; static PyObject *__pyx_n_s_QtKeys; static PyObject *__pyx_n_s_RightButton; static PyObject *__pyx_n_s_RuntimeWarning; static PyObject *__pyx_n_s_SHORT_DESCRIPTION; static PyObject *__pyx_n_s_ShiftModifier; static PyObject *__pyx_kp_u_Skip_mime_type; static PyObject *__pyx_n_s_Theme; static PyObject *__pyx_n_s_UI_DIR; static PyObject *__pyx_n_u_Ubuntu; static PyObject *__pyx_n_s_VERSION; static PyObject *__pyx_n_s_ValueError; static PyObject *__pyx_kp_u__13; static PyObject *__pyx_kp_u__22; static PyObject *__pyx_n_s__4; static PyObject *__pyx_kp_u__6; static PyObject *__pyx_kp_u__7; static PyObject *__pyx_n_u_about_contribute; static PyObject *__pyx_n_u_about_license_full; static PyObject *__pyx_n_u_about_license_notfound; static PyObject *__pyx_n_u_about_license_short; static PyObject *__pyx_n_u_about_translators; static PyObject *__pyx_n_u_about_website; static PyObject *__pyx_kp_u_action_edit_cube; static PyObject *__pyx_kp_u_action_edit_moves; static PyObject *__pyx_kp_u_action_initial_state; static PyObject *__pyx_kp_u_action_preferences; static PyObject *__pyx_kp_u_action_reset_rotation; static PyObject *__pyx_kp_u_action_selectmodel; static PyObject *__pyx_n_s_angle_max; static PyObject *__pyx_n_s_animate_timer_step; static PyObject *__pyx_n_s_animate_timer_stop; static PyObject *__pyx_n_s_app; static PyObject *__pyx_n_s_app_post_create; static PyObject *__pyx_n_s_append; static PyObject *__pyx_n_s_args; static PyObject *__pyx_n_b_bool; static PyObject *__pyx_n_s_button; static PyObject *__pyx_n_u_button_mousemode_ext; static PyObject *__pyx_n_u_button_mousemode_gesture; static PyObject *__pyx_n_u_button_mousemode_quad; static PyObject *__pyx_n_s_callback; static PyObject *__pyx_n_u_ccw; static PyObject *__pyx_n_u_checkbox_mirror_faces; static PyObject *__pyx_n_s_close; static PyObject *__pyx_n_s_close_mainwindow; static PyObject *__pyx_n_s_code; static PyObject *__pyx_n_s_color; static PyObject *__pyx_n_u_color; static PyObject *__pyx_n_u_combobox_samples; static PyObject *__pyx_n_u_combobox_shader; static PyObject *__pyx_kp_u_compiled; static PyObject *__pyx_n_s_compiled_2; static PyObject *__pyx_n_s_config; static PyObject *__pyx_n_s_config_2; static PyObject *__pyx_n_s_create_filesystemwatcher; static PyObject *__pyx_n_s_create_window; static PyObject *__pyx_n_s_currentfolder; static PyObject *__pyx_n_u_cursors; static PyObject *__pyx_n_s_data; static PyObject *__pyx_n_s_destroy_window; static PyObject *__pyx_n_s_dirname; static PyObject *__pyx_n_s_divider_pos; static PyObject *__pyx_n_s_divider_pos2; static PyObject *__pyx_n_s_doc; static PyObject *__pyx_n_b_double; static PyObject *__pyx_kp_u_drag_enter; static PyObject *__pyx_kp_u_draw_accels; static PyObject *__pyx_kp_u_draw_mirror_distance; static PyObject *__pyx_kp_u_draw_mirror_distance_default; static PyObject *__pyx_kp_u_draw_mirror_distance_range; static PyObject *__pyx_kp_u_draw_mirror_faces; static PyObject *__pyx_kp_u_draw_mirror_faces_default; static PyObject *__pyx_kp_u_draw_samples; static PyObject *__pyx_kp_u_draw_samples_default; static PyObject *__pyx_kp_u_draw_samples_range; static PyObject *__pyx_kp_u_draw_selection_nick; static PyObject *__pyx_kp_u_draw_shader; static PyObject *__pyx_kp_u_draw_shader_default; static PyObject *__pyx_kp_u_draw_shader_range; static PyObject *__pyx_kp_u_draw_speed; static PyObject *__pyx_kp_u_draw_speed_default; static PyObject *__pyx_kp_u_draw_speed_range; static PyObject *__pyx_n_s_encode; static PyObject *__pyx_n_s_enumerate; static PyObject *__pyx_n_s_environ; static PyObject *__pyx_n_s_facekey; static PyObject *__pyx_n_s_facename; static PyObject *__pyx_n_s_facenames; static PyObject *__pyx_n_s_filename; static PyObject *__pyx_n_s_filesystemwatcher_handlers; static PyObject *__pyx_n_s_filesystemwatcher_path; static PyObject *__pyx_n_s_fill_sidepane; static PyObject *__pyx_n_s_font; static PyObject *__pyx_n_s_fontpixelsize; static PyObject *__pyx_n_s_format; static PyObject *__pyx_kp_u_from_package; static PyObject *__pyx_n_s_func; static PyObject *__pyx_n_s_genexpr; static PyObject *__pyx_n_u_gesture; static PyObject *__pyx_n_s_get; static PyObject *__pyx_n_s_get_filedialog_imagefile; static PyObject *__pyx_n_s_get_imagefile; static PyObject *__pyx_n_s_get_pictures_folder; static PyObject *__pyx_n_s_get_samples; static PyObject *__pyx_n_s_gettext; static PyObject *__pyx_n_s_gl_delete_atlas; static PyObject *__pyx_n_s_height; static PyObject *__pyx_n_u_help_text; static PyObject *__pyx_kp_s_tmp; static PyObject *__pyx_n_s_i; static PyObject *__pyx_n_s_icon; static PyObject *__pyx_n_s_image; static PyObject *__pyx_n_u_image; static PyObject *__pyx_n_s_image_from_file; static PyObject *__pyx_n_s_imagefile; static PyObject *__pyx_n_s_imageindex; static PyObject *__pyx_n_s_imageindex_icon; static PyObject *__pyx_n_s_imagemode; static PyObject *__pyx_n_u_images; static PyObject *__pyx_n_s_import; static PyObject *__pyx_n_s_index; static PyObject *__pyx_n_s_index_icon; static PyObject *__pyx_kp_u_init_module; static PyObject *__pyx_n_s_initial_resize; static PyObject *__pyx_n_b_int; static PyObject *__pyx_n_s_isfile; static PyObject *__pyx_n_s_item; static PyObject *__pyx_n_s_join; static PyObject *__pyx_n_s_keyseq; static PyObject *__pyx_n_s_keystr; static PyObject *__pyx_n_s_keyval_from_name; static PyObject *__pyx_n_s_keyval_from_name_locals_genexpr; static PyObject *__pyx_n_u_label_needs_restarted; static PyObject *__pyx_n_s_load_image_from_file; static PyObject *__pyx_n_s_load_ui; static PyObject *__pyx_n_s_locations; static PyObject *__pyx_n_s_main; static PyObject *__pyx_n_s_maxsize; static PyObject *__pyx_n_s_message; static PyObject *__pyx_n_s_metaclass; static PyObject *__pyx_n_u_mode_nick; static PyObject *__pyx_n_s_modelselect; static PyObject *__pyx_n_s_module; static PyObject *__pyx_n_s_module_2; static PyObject *__pyx_n_u_mosaic; static PyObject *__pyx_kp_u_mouse__png; static PyObject *__pyx_n_s_msec; static PyObject *__pyx_n_s_name; static PyObject *__pyx_n_s_name_2; static PyObject *__pyx_kp_u_new_random_png; static PyObject *__pyx_kp_u_new_solved_png; static PyObject *__pyx_n_s_nick; static PyObject *__pyx_n_s_on_action_challenge_triggered; static PyObject *__pyx_n_s_on_action_edit_cube_triggered; static PyObject *__pyx_n_s_on_action_forward_triggered; static PyObject *__pyx_n_s_on_action_initial_state_triggere; static PyObject *__pyx_n_s_on_action_mark_remove_triggered; static PyObject *__pyx_n_s_on_action_mark_set_triggered; static PyObject *__pyx_n_s_on_action_new_solved_triggered; static PyObject *__pyx_n_s_on_action_next_triggered; static PyObject *__pyx_n_s_on_action_play_triggered; static PyObject *__pyx_n_s_on_action_preferences_triggered; static PyObject *__pyx_n_s_on_action_previous_triggered; static PyObject *__pyx_n_s_on_action_reset_rotation_trigger; static PyObject *__pyx_n_s_on_action_rewind_triggered; static PyObject *__pyx_n_s_on_action_selectmodel_triggered; static PyObject *__pyx_n_s_on_action_stop_triggered; static PyObject *__pyx_n_s_on_animation_ending; static PyObject *__pyx_n_s_on_closing; static PyObject *__pyx_n_s_on_convert_to_mtype_size; static PyObject *__pyx_n_s_on_dialog_change_current_face; static PyObject *__pyx_n_s_on_dialog_change_current_image; static PyObject *__pyx_n_s_on_dialog_reset_current_image; static PyObject *__pyx_n_s_on_dialog_text; static PyObject *__pyx_n_s_on_edit_finished; static PyObject *__pyx_n_s_on_edit_moves_nextword; static PyObject *__pyx_n_s_on_edit_moves_prevword; static PyObject *__pyx_n_s_on_edit_moves_swapnext; static PyObject *__pyx_n_s_on_edit_moves_swapprev; static PyObject *__pyx_n_s_on_init_finalize; static PyObject *__pyx_n_s_on_key_pressed; static PyObject *__pyx_n_s_on_load_other_game; static PyObject *__pyx_n_s_on_model_back; static PyObject *__pyx_n_s_on_model_get_modeldata; static PyObject *__pyx_n_s_on_mouse_drop_color; static PyObject *__pyx_n_s_on_mouse_drop_url; static PyObject *__pyx_n_s_on_mouse_moved; static PyObject *__pyx_n_s_on_mouse_pressed; static PyObject *__pyx_n_s_on_mouse_released; static PyObject *__pyx_n_s_on_mouse_zoom; static PyObject *__pyx_n_s_on_picking_result; static PyObject *__pyx_n_s_on_plugin_activated; static PyObject *__pyx_n_s_on_plugin_test_idx; static PyObject *__pyx_n_s_on_settings_timer_timeout; static PyObject *__pyx_n_s_os; static PyObject *__pyx_n_s_package; static PyObject *__pyx_n_s_parse_color; static PyObject *__pyx_n_s_parse_color_f; static PyObject *__pyx_n_s_path; static PyObject *__pyx_n_s_pick_requested; static PyObject *__pyx_n_u_plain; static PyObject *__pyx_n_s_plugin_data; static PyObject *__pyx_n_s_pop; static PyObject *__pyx_n_s_pos; static PyObject *__pyx_n_s_preferences_dialog; static PyObject *__pyx_n_s_prepare; static PyObject *__pyx_n_s_print; static PyObject *__pyx_n_s_pyapp; static PyObject *__pyx_n_s_pybiklib; static PyObject *__pyx_n_s_pybiklib_settings; static PyObject *__pyx_n_s_pydata; static PyObject *__pyx_n_s_qpath; static PyObject *__pyx_n_u_qt; static PyObject *__pyx_n_s_qt_qtwogl; static PyObject *__pyx_n_u_quadrant; static PyObject *__pyx_n_s_qualname; static PyObject *__pyx_n_s_range; static PyObject *__pyx_n_s_s1; static PyObject *__pyx_n_s_s2; static PyObject *__pyx_n_s_sample_buffers; static PyObject *__pyx_n_s_save_screenshot; static PyObject *__pyx_n_s_scaled_height; static PyObject *__pyx_n_s_scaled_width; static PyObject *__pyx_kp_u_select; static PyObject *__pyx_kp_u_select_model_png; static PyObject *__pyx_n_s_selection_nick; static PyObject *__pyx_n_s_send; static PyObject *__pyx_n_s_set_animation_speed; static PyObject *__pyx_n_s_set_combobox_current_image; static PyObject *__pyx_n_s_set_cursor; static PyObject *__pyx_n_s_set_debug_flags; static PyObject *__pyx_n_s_set_debug_text; static PyObject *__pyx_n_s_set_edit_moves; static PyObject *__pyx_n_s_set_pick_requested; static PyObject *__pyx_n_s_set_preferences_current_face_the; static PyObject *__pyx_n_s_set_status_text; static PyObject *__pyx_n_s_set_title; static PyObject *__pyx_n_s_set_toolbar_state; static PyObject *__pyx_n_s_settings; static PyObject *__pyx_n_s_shader_names; static PyObject *__pyx_n_s_show_message; static PyObject *__pyx_n_s_show_message_text; static PyObject *__pyx_n_s_show_preferences; static PyObject *__pyx_n_u_simple; static PyObject *__pyx_n_s_singleshot_handler; static PyObject *__pyx_n_s_singleshot_queue; static PyObject *__pyx_n_s_sizepolicy; static PyObject *__pyx_n_u_slider_animspeed; static PyObject *__pyx_n_u_spinbox_mirror_faces; static PyObject *__pyx_n_s_split; static PyObject *__pyx_n_s_startswith; static PyObject *__pyx_n_s_state; static PyObject *__pyx_n_s_stockicons; static PyObject *__pyx_n_s_subtree; static PyObject *__pyx_n_s_sys; static PyObject *__pyx_n_s_test; static PyObject *__pyx_n_s_text; static PyObject *__pyx_kp_u_text_FULL_LICENSE_TEXT; static PyObject *__pyx_n_s_text_to_html; static PyObject *__pyx_n_s_textures; static PyObject *__pyx_n_s_theme; static PyObject *__pyx_kp_u_theme_bgcolor; static PyObject *__pyx_kp_u_theme_faces; static PyObject *__pyx_n_s_throw; static PyObject *__pyx_n_u_tiled; static PyObject *__pyx_n_s_timer_singleShot; static PyObject *__pyx_n_s_title; static PyObject *__pyx_n_s_transl; static PyObject *__pyx_n_s_treeview; static PyObject *__pyx_kp_u_unknown_typename_s; static PyObject *__pyx_n_s_unset_cursor; static PyObject *__pyx_n_s_update_drawingarea; static PyObject *__pyx_n_s_update_sidepane; static PyObject *__pyx_kp_u_utf_8; static PyObject *__pyx_kp_u_value_has_wrong_typ; static PyObject *__pyx_kp_b_void; static PyObject *__pyx_kp_u_void_2; static PyObject *__pyx_n_s_warn; static PyObject *__pyx_n_s_warn_explicit; static PyObject *__pyx_n_s_warnings; static PyObject *__pyx_n_s_width; static PyObject *__pyx_kp_u_window_divider; static PyObject *__pyx_kp_u_window_editbar; static PyObject *__pyx_kp_u_window_size; static PyObject *__pyx_kp_u_window_statusbar; static PyObject *__pyx_n_s_zip; static PyObject *__pyx_pf_10_qt_qtwogl_set_debug_flags(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_module); /* proto */ static PyObject *__pyx_pf_10_qt_qtwogl_2gl_delete_atlas(CYTHON_UNUSED PyObject *__pyx_self); /* proto */ static PyObject *__pyx_pf_10_qt_qtwogl_4set_pick_requested(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_pick_requested); /* proto */ static PyObject *__pyx_pf_10_qt_qtwogl_6set_atlas_size(CYTHON_UNUSED PyObject *__pyx_self, int __pyx_v_width, int __pyx_v_height); /* proto */ static PyObject *__pyx_pf_10_qt_qtwogl_8set_debug_text(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_text); /* proto */ static PyObject *__pyx_pf_10_qt_qtwogl_10set_edit_moves(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_code, PyObject *__pyx_v_pos); /* proto */ static PyObject *__pyx_pf_10_qt_qtwogl_12set_status_text(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_text); /* proto */ static PyObject *__pyx_pf_10_qt_qtwogl_14show_message(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_message); /* proto */ static PyObject *__pyx_pf_10_qt_qtwogl_16fill_sidepane(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_plugin_data); /* proto */ static PyObject *__pyx_pf_10_qt_qtwogl_18update_sidepane(CYTHON_UNUSED PyObject *__pyx_self); /* proto */ static PyObject *__pyx_pf_10_qt_qtwogl_20set_toolbar_state(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_state); /* proto */ static PyObject *__pyx_pf_10_qt_qtwogl_22set_combobox_current_image(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_index_icon, PyObject *__pyx_v_imagefile, PyObject *__pyx_v_index); /* proto */ static PyObject *__pyx_pf_10_qt_qtwogl_24set_preferences_current_face_theme(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_color, PyObject *__pyx_v_imageindex_icon, PyObject *__pyx_v_imagefile, PyObject *__pyx_v_imageindex, PyObject *__pyx_v_imagemode); /* proto */ static PyObject *__pyx_pf_10_qt_qtwogl_26get_filedialog_imagefile(CYTHON_UNUSED PyObject *__pyx_self); /* proto */ static PyObject *__pyx_pf_10_qt_qtwogl_28preferences_dialog(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_shader_names, CYTHON_UNUSED PyObject *__pyx_v_sample_buffers, PyObject *__pyx_v_facenames, PyObject *__pyx_v_stockicons); /* proto */ static PyObject *__pyx_pf_10_qt_qtwogl_30show_preferences(CYTHON_UNUSED PyObject *__pyx_self); /* proto */ static PyObject *__pyx_pf_10_qt_qtwogl_32initial_resize(CYTHON_UNUSED PyObject *__pyx_self); /* proto */ static PyObject *__pyx_pf_10_qt_qtwogl_34set_title(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_title); /* proto */ static PyObject *__pyx_pf_10_qt_qtwogl_36load_ui(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_path); /* proto */ static PyObject *__pyx_pf_10_qt_qtwogl_38close_mainwindow(CYTHON_UNUSED PyObject *__pyx_self); /* proto */ static PyObject *__pyx_pf_10_qt_qtwogl_40get_samples(CYTHON_UNUSED PyObject *__pyx_self); /* proto */ static PyObject *__pyx_pf_10_qt_qtwogl_42update_drawingarea(CYTHON_UNUSED PyObject *__pyx_self); /* proto */ static PyObject *__pyx_pf_10_qt_qtwogl_44set_cursor(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_index); /* proto */ static PyObject *__pyx_pf_10_qt_qtwogl_46unset_cursor(CYTHON_UNUSED PyObject *__pyx_self); /* proto */ static PyObject *__pyx_pf_10_qt_qtwogl_48save_screenshot(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_filename); /* proto */ static PyObject *__pyx_pf_10_qt_qtwogl_50parse_color(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_name); /* proto */ static PyObject *__pyx_pf_10_qt_qtwogl_52parse_color_f(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_name); /* proto */ static PyObject *__pyx_pf_10_qt_qtwogl_54load_image_from_file(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_filename, PyObject *__pyx_v_maxsize); /* proto */ static PyObject *__pyx_pf_10_qt_qtwogl_16keyval_from_name_genexpr(PyObject *__pyx_self); /* proto */ static PyObject *__pyx_pf_10_qt_qtwogl_56keyval_from_name(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_keystr); /* proto */ static PyObject *__pyx_pf_10_qt_qtwogl_58get_pictures_folder(CYTHON_UNUSED PyObject *__pyx_self); /* proto */ static PyObject *__pyx_pf_10_qt_qtwogl_60get_imagefile(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_facekey); /* proto */ static PyObject *__pyx_pf_10_qt_qtwogl_62text_to_html(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_text); /* proto */ static PyObject *__pyx_pf_10_qt_qtwogl_64create_filesystemwatcher(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_path, PyObject *__pyx_v_callback); /* proto */ static PyObject *__pyx_pf_10_qt_qtwogl_66timer_singleShot(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_msec, PyObject *__pyx_v_func); /* proto */ static PyObject *__pyx_pf_10_qt_qtwogl_68settings_timer_start(CYTHON_UNUSED PyObject *__pyx_self); /* proto */ static PyObject *__pyx_pf_10_qt_qtwogl_70set_animation_speed(CYTHON_UNUSED PyObject *__pyx_self); /* proto */ static PyObject *__pyx_pf_10_qt_qtwogl_72animate_timer_start(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_msec, PyObject *__pyx_v_angle_max); /* proto */ static PyObject *__pyx_pf_10_qt_qtwogl_74animate_timer_step(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_angle_max); /* proto */ static PyObject *__pyx_pf_10_qt_qtwogl_76animate_timer_stop(CYTHON_UNUSED PyObject *__pyx_self); /* proto */ static PyObject *__pyx_pf_10_qt_qtwogl_78create_window(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_pyapp); /* proto */ static PyObject *__pyx_pf_10_qt_qtwogl_80destroy_window(CYTHON_UNUSED PyObject *__pyx_self); /* proto */ static PyObject *__pyx_pf_10_qt_qtwogl_82app_post_create(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_gettext); /* proto */ static PyObject *__pyx_tp_new_10_qt_qtwogl___pyx_scope_struct__keyval_from_name(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ static PyObject *__pyx_tp_new_10_qt_qtwogl___pyx_scope_struct_1_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/ static PyObject *__pyx_float_14_0; static PyObject *__pyx_int_0; static PyObject *__pyx_int_1; static PyObject *__pyx_int_4; static PyObject *__pyx_int_8; static PyObject *__pyx_int_15; static PyObject *__pyx_int_16; static PyObject *__pyx_int_18; static PyObject *__pyx_tuple_; static PyObject *__pyx_tuple__2; static PyObject *__pyx_tuple__3; static PyObject *__pyx_tuple__5; static PyObject *__pyx_tuple__8; static PyObject *__pyx_tuple__9; static PyObject *__pyx_tuple__10; static PyObject *__pyx_tuple__11; static PyObject *__pyx_tuple__12; static PyObject *__pyx_tuple__14; static PyObject *__pyx_tuple__15; static PyObject *__pyx_tuple__16; static PyObject *__pyx_tuple__17; static PyObject *__pyx_tuple__18; static PyObject *__pyx_tuple__19; static PyObject *__pyx_tuple__20; static PyObject *__pyx_tuple__21; static PyObject *__pyx_tuple__23; static PyObject *__pyx_tuple__24; static PyObject *__pyx_tuple__25; static PyObject *__pyx_tuple__26; static PyObject *__pyx_tuple__27; static PyObject *__pyx_tuple__28; static PyObject *__pyx_tuple__29; static PyObject *__pyx_tuple__30; static PyObject *__pyx_tuple__31; static PyObject *__pyx_tuple__34; static PyObject *__pyx_tuple__36; static PyObject *__pyx_tuple__38; static PyObject *__pyx_tuple__40; static PyObject *__pyx_tuple__42; static PyObject *__pyx_tuple__44; static PyObject *__pyx_tuple__46; static PyObject *__pyx_tuple__48; static PyObject *__pyx_tuple__50; static PyObject *__pyx_tuple__52; static PyObject *__pyx_tuple__54; static PyObject *__pyx_tuple__56; static PyObject *__pyx_tuple__59; static PyObject *__pyx_tuple__61; static PyObject *__pyx_tuple__63; static PyObject *__pyx_tuple__68; static PyObject *__pyx_tuple__71; static PyObject *__pyx_tuple__73; static PyObject *__pyx_tuple__75; static PyObject *__pyx_tuple__77; static PyObject *__pyx_tuple__79; static PyObject *__pyx_tuple__81; static PyObject *__pyx_tuple__83; static PyObject *__pyx_tuple__85; static PyObject *__pyx_tuple__87; static PyObject *__pyx_tuple__89; static PyObject *__pyx_tuple__92; static PyObject *__pyx_tuple__95; static PyObject *__pyx_tuple__98; static PyObject *__pyx_codeobj__32; static PyObject *__pyx_codeobj__33; static PyObject *__pyx_codeobj__35; static PyObject *__pyx_codeobj__37; static PyObject *__pyx_codeobj__39; static PyObject *__pyx_codeobj__41; static PyObject *__pyx_codeobj__43; static PyObject *__pyx_codeobj__45; static PyObject *__pyx_codeobj__47; static PyObject *__pyx_codeobj__49; static PyObject *__pyx_codeobj__51; static PyObject *__pyx_codeobj__53; static PyObject *__pyx_codeobj__55; static PyObject *__pyx_codeobj__57; static PyObject *__pyx_codeobj__58; static PyObject *__pyx_codeobj__60; static PyObject *__pyx_codeobj__62; static PyObject *__pyx_codeobj__64; static PyObject *__pyx_codeobj__65; static PyObject *__pyx_codeobj__66; static PyObject *__pyx_codeobj__67; static PyObject *__pyx_codeobj__69; static PyObject *__pyx_codeobj__70; static PyObject *__pyx_codeobj__72; static PyObject *__pyx_codeobj__74; static PyObject *__pyx_codeobj__76; static PyObject *__pyx_codeobj__78; static PyObject *__pyx_codeobj__80; static PyObject *__pyx_codeobj__82; static PyObject *__pyx_codeobj__84; static PyObject *__pyx_codeobj__86; static PyObject *__pyx_codeobj__88; static PyObject *__pyx_codeobj__90; static PyObject *__pyx_codeobj__91; static PyObject *__pyx_codeobj__93; static PyObject *__pyx_codeobj__94; static PyObject *__pyx_codeobj__96; static PyObject *__pyx_codeobj__97; static PyObject *__pyx_codeobj__99; /* "_qt_qtwogl.pyx":102 * debug = 0 * * def set_debug_flags(module): # <<<<<<<<<<<<<< * global debug * if module.DEBUG_MSG: debug |= DEBUG_MSG */ /* Python wrapper */ static PyObject *__pyx_pw_10_qt_qtwogl_1set_debug_flags(PyObject *__pyx_self, PyObject *__pyx_v_module); /*proto*/ static PyMethodDef __pyx_mdef_10_qt_qtwogl_1set_debug_flags = {"set_debug_flags", (PyCFunction)__pyx_pw_10_qt_qtwogl_1set_debug_flags, METH_O, 0}; static PyObject *__pyx_pw_10_qt_qtwogl_1set_debug_flags(PyObject *__pyx_self, PyObject *__pyx_v_module) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("set_debug_flags (wrapper)", 0); __pyx_r = __pyx_pf_10_qt_qtwogl_set_debug_flags(__pyx_self, ((PyObject *)__pyx_v_module)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_10_qt_qtwogl_set_debug_flags(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_module) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_t_2; __Pyx_RefNannySetupContext("set_debug_flags", 0); /* "_qt_qtwogl.pyx":104 * def set_debug_flags(module): * global debug * if module.DEBUG_MSG: debug |= DEBUG_MSG # <<<<<<<<<<<<<< * if module.DEBUG_MSGGL: debug |= DEBUG_MSGGL * if module.DEBUG_MSGEXT: debug |= DEBUG_MSGEXT */ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_module, __pyx_n_s_DEBUG_MSG); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 104, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 104, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_2) { __pyx_v_10_qt_qtwogl_debug = (__pyx_v_10_qt_qtwogl_debug | __pyx_e_10_qt_qtwogl_DEBUG_MSG); } /* "_qt_qtwogl.pyx":105 * global debug * if module.DEBUG_MSG: debug |= DEBUG_MSG * if module.DEBUG_MSGGL: debug |= DEBUG_MSGGL # <<<<<<<<<<<<<< * if module.DEBUG_MSGEXT: debug |= DEBUG_MSGEXT * if module.DEBUG_DRAW: debug |= DEBUG_DRAW */ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_module, __pyx_n_s_DEBUG_MSGGL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 105, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 105, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_2) { __pyx_v_10_qt_qtwogl_debug = (__pyx_v_10_qt_qtwogl_debug | __pyx_e_10_qt_qtwogl_DEBUG_MSGGL); } /* "_qt_qtwogl.pyx":106 * if module.DEBUG_MSG: debug |= DEBUG_MSG * if module.DEBUG_MSGGL: debug |= DEBUG_MSGGL * if module.DEBUG_MSGEXT: debug |= DEBUG_MSGEXT # <<<<<<<<<<<<<< * if module.DEBUG_DRAW: debug |= DEBUG_DRAW * if module.DEBUG_FPS: debug |= DEBUG_FPS */ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_module, __pyx_n_s_DEBUG_MSGEXT); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 106, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 106, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_2) { __pyx_v_10_qt_qtwogl_debug = (__pyx_v_10_qt_qtwogl_debug | __pyx_e_10_qt_qtwogl_DEBUG_MSGEXT); } /* "_qt_qtwogl.pyx":107 * if module.DEBUG_MSGGL: debug |= DEBUG_MSGGL * if module.DEBUG_MSGEXT: debug |= DEBUG_MSGEXT * if module.DEBUG_DRAW: debug |= DEBUG_DRAW # <<<<<<<<<<<<<< * if module.DEBUG_FPS: debug |= DEBUG_FPS * if module.DEBUG_VFPS: debug |= DEBUG_VFPS */ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_module, __pyx_n_s_DEBUG_DRAW); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 107, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 107, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_2) { __pyx_v_10_qt_qtwogl_debug = (__pyx_v_10_qt_qtwogl_debug | __pyx_e_10_qt_qtwogl_DEBUG_DRAW); } /* "_qt_qtwogl.pyx":108 * if module.DEBUG_MSGEXT: debug |= DEBUG_MSGEXT * if module.DEBUG_DRAW: debug |= DEBUG_DRAW * if module.DEBUG_FPS: debug |= DEBUG_FPS # <<<<<<<<<<<<<< * if module.DEBUG_VFPS: debug |= DEBUG_VFPS * if module.DEBUG_QML: debug |= DEBUG_QML */ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_module, __pyx_n_s_DEBUG_FPS); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 108, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 108, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_2) { __pyx_v_10_qt_qtwogl_debug = (__pyx_v_10_qt_qtwogl_debug | __pyx_e_10_qt_qtwogl_DEBUG_FPS); } /* "_qt_qtwogl.pyx":109 * if module.DEBUG_DRAW: debug |= DEBUG_DRAW * if module.DEBUG_FPS: debug |= DEBUG_FPS * if module.DEBUG_VFPS: debug |= DEBUG_VFPS # <<<<<<<<<<<<<< * if module.DEBUG_QML: debug |= DEBUG_QML * if module.DEBUG_GLDEBUG: debug |= DEBUG_GLDEBUG */ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_module, __pyx_n_s_DEBUG_VFPS); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 109, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 109, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_2) { __pyx_v_10_qt_qtwogl_debug = (__pyx_v_10_qt_qtwogl_debug | __pyx_e_10_qt_qtwogl_DEBUG_VFPS); } /* "_qt_qtwogl.pyx":110 * if module.DEBUG_FPS: debug |= DEBUG_FPS * if module.DEBUG_VFPS: debug |= DEBUG_VFPS * if module.DEBUG_QML: debug |= DEBUG_QML # <<<<<<<<<<<<<< * if module.DEBUG_GLDEBUG: debug |= DEBUG_GLDEBUG * if module.DEBUG_PHONE: debug |= DEBUG_PHONE */ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_module, __pyx_n_s_DEBUG_QML); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 110, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 110, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_2) { __pyx_v_10_qt_qtwogl_debug = (__pyx_v_10_qt_qtwogl_debug | __pyx_e_10_qt_qtwogl_DEBUG_QML); } /* "_qt_qtwogl.pyx":111 * if module.DEBUG_VFPS: debug |= DEBUG_VFPS * if module.DEBUG_QML: debug |= DEBUG_QML * if module.DEBUG_GLDEBUG: debug |= DEBUG_GLDEBUG # <<<<<<<<<<<<<< * if module.DEBUG_PHONE: debug |= DEBUG_PHONE * if module.DEBUG_SIM: debug |= DEBUG_SIM */ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_module, __pyx_n_s_DEBUG_GLDEBUG); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 111, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 111, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_2) { __pyx_v_10_qt_qtwogl_debug = (__pyx_v_10_qt_qtwogl_debug | __pyx_e_10_qt_qtwogl_DEBUG_GLDEBUG); } /* "_qt_qtwogl.pyx":112 * if module.DEBUG_QML: debug |= DEBUG_QML * if module.DEBUG_GLDEBUG: debug |= DEBUG_GLDEBUG * if module.DEBUG_PHONE: debug |= DEBUG_PHONE # <<<<<<<<<<<<<< * if module.DEBUG_SIM: debug |= DEBUG_SIM * if module.DEBUG_NOCONTROLS: debug |= DEBUG_NOCONTROLS */ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_module, __pyx_n_s_DEBUG_PHONE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 112, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 112, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_2) { __pyx_v_10_qt_qtwogl_debug = (__pyx_v_10_qt_qtwogl_debug | __pyx_e_10_qt_qtwogl_DEBUG_PHONE); } /* "_qt_qtwogl.pyx":113 * if module.DEBUG_GLDEBUG: debug |= DEBUG_GLDEBUG * if module.DEBUG_PHONE: debug |= DEBUG_PHONE * if module.DEBUG_SIM: debug |= DEBUG_SIM # <<<<<<<<<<<<<< * if module.DEBUG_NOCONTROLS: debug |= DEBUG_NOCONTROLS * */ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_module, __pyx_n_s_DEBUG_SIM); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 113, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 113, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_2) { __pyx_v_10_qt_qtwogl_debug = (__pyx_v_10_qt_qtwogl_debug | __pyx_e_10_qt_qtwogl_DEBUG_SIM); } /* "_qt_qtwogl.pyx":114 * if module.DEBUG_PHONE: debug |= DEBUG_PHONE * if module.DEBUG_SIM: debug |= DEBUG_SIM * if module.DEBUG_NOCONTROLS: debug |= DEBUG_NOCONTROLS # <<<<<<<<<<<<<< * * */ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_module, __pyx_n_s_DEBUG_NOCONTROLS); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 114, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 114, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_2) { __pyx_v_10_qt_qtwogl_debug = (__pyx_v_10_qt_qtwogl_debug | __pyx_e_10_qt_qtwogl_DEBUG_NOCONTROLS); } /* "_qt_qtwogl.pyx":102 * debug = 0 * * def set_debug_flags(module): # <<<<<<<<<<<<<< * global debug * if module.DEBUG_MSG: debug |= DEBUG_MSG */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("_qt_qtwogl.set_debug_flags", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwogl.pyx":222 * * ##pxm-FUNC P * cdef void init_module(): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * qtui.init_module() */ static void __pyx_f_10_qt_qtwogl_init_module(void) { __Pyx_RefNannyDeclarations int __pyx_t_1; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; __Pyx_RefNannySetupContext("init_module", 0); /* "_qt_qtwogl.pyx":224 * cdef void init_module(): * ##pxm>IF 'qtw' == 'qtw' * qtui.init_module() # <<<<<<<<<<<<<< * ##pxm>IF_END * if debug & DEBUG_MSGEXT: */ __pyx_f_6_qtui__init_module(); /* "_qt_qtwogl.pyx":226 * qtui.init_module() * ##pxm>IF_END * if debug & DEBUG_MSGEXT: # <<<<<<<<<<<<<< * print('init module:', __name__) * print(' from package:', __package__) */ __pyx_t_1 = ((__pyx_v_10_qt_qtwogl_debug & __pyx_e_10_qt_qtwogl_DEBUG_MSGEXT) != 0); if (__pyx_t_1) { /* "_qt_qtwogl.pyx":227 * ##pxm>IF_END * if debug & DEBUG_MSGEXT: * print('init module:', __name__) # <<<<<<<<<<<<<< * print(' from package:', __package__) * print(' compiled:', __compiled) */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 227, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 227, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_kp_u_init_module); __Pyx_GIVEREF(__pyx_kp_u_init_module); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_kp_u_init_module); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 227, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwogl.pyx":228 * if debug & DEBUG_MSGEXT: * print('init module:', __name__) * print(' from package:', __package__) # <<<<<<<<<<<<<< * print(' compiled:', __compiled) * print(' GL-type: ogl') #px+ */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_package); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 228, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 228, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_kp_u_from_package); __Pyx_GIVEREF(__pyx_kp_u_from_package); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_kp_u_from_package); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 228, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwogl.pyx":229 * print('init module:', __name__) * print(' from package:', __package__) * print(' compiled:', __compiled) # <<<<<<<<<<<<<< * print(' GL-type: ogl') #px+ * print(' OFFSCREEN:', OFFSCREEN) */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_compiled_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 229, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 229, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_kp_u_compiled); __Pyx_GIVEREF(__pyx_kp_u_compiled); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_kp_u_compiled); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 229, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwogl.pyx":230 * print(' from package:', __package__) * print(' compiled:', __compiled) * print(' GL-type: ogl') #px+ # <<<<<<<<<<<<<< * print(' OFFSCREEN:', OFFSCREEN) * */ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_tuple_, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 230, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwogl.pyx":231 * print(' compiled:', __compiled) * print(' GL-type: ogl') #px+ * print(' OFFSCREEN:', OFFSCREEN) # <<<<<<<<<<<<<< * * renderdata.renderer = NULL */ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_tuple__2, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 231, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwogl.pyx":226 * qtui.init_module() * ##pxm>IF_END * if debug & DEBUG_MSGEXT: # <<<<<<<<<<<<<< * print('init module:', __name__) * print(' from package:', __package__) */ } /* "_qt_qtwogl.pyx":233 * print(' OFFSCREEN:', OFFSCREEN) * * renderdata.renderer = NULL # <<<<<<<<<<<<<< * uidata.atlas_changed = False * uidata.pick_requested = False */ __pyx_v_10_qt_qtwogl_renderdata.renderer = NULL; /* "_qt_qtwogl.pyx":234 * * renderdata.renderer = NULL * uidata.atlas_changed = False # <<<<<<<<<<<<<< * uidata.pick_requested = False * uidata.filesystemwatcher = NULL */ __pyx_v_10_qt_qtwogl_uidata.atlas_changed = 0; /* "_qt_qtwogl.pyx":235 * renderdata.renderer = NULL * uidata.atlas_changed = False * uidata.pick_requested = False # <<<<<<<<<<<<<< * uidata.filesystemwatcher = NULL * uidata.width = 0 */ __pyx_v_10_qt_qtwogl_uidata.pick_requested = 0; /* "_qt_qtwogl.pyx":236 * uidata.atlas_changed = False * uidata.pick_requested = False * uidata.filesystemwatcher = NULL # <<<<<<<<<<<<<< * uidata.width = 0 * uidata.height = 0 */ __pyx_v_10_qt_qtwogl_uidata.filesystemwatcher = NULL; /* "_qt_qtwogl.pyx":237 * uidata.pick_requested = False * uidata.filesystemwatcher = NULL * uidata.width = 0 # <<<<<<<<<<<<<< * uidata.height = 0 * uidata.gl_y = 0 */ __pyx_v_10_qt_qtwogl_uidata.width = 0; /* "_qt_qtwogl.pyx":238 * uidata.filesystemwatcher = NULL * uidata.width = 0 * uidata.height = 0 # <<<<<<<<<<<<<< * uidata.gl_y = 0 * ##pxm>IF 'qtw' == 'qtw' */ __pyx_v_10_qt_qtwogl_uidata.height = 0; /* "_qt_qtwogl.pyx":239 * uidata.width = 0 * uidata.height = 0 * uidata.gl_y = 0 # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * uidata.help = NULL */ __pyx_v_10_qt_qtwogl_uidata.gl_y = 0; /* "_qt_qtwogl.pyx":241 * uidata.gl_y = 0 * ##pxm>IF 'qtw' == 'qtw' * uidata.help = NULL # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtq' * #~ uidata.model_pagevisible = False */ __pyx_v_10_qt_qtwogl_uidata.help = NULL; /* "_qt_qtwogl.pyx":222 * * ##pxm-FUNC P * cdef void init_module(): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * qtui.init_module() */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_WriteUnraisable("_qt_qtwogl.init_module", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); } /* "_qt_qtwogl.pyx":251 * * ##pxm-FUNC P * cdef q2str(const QString &qstr): # <<<<<<<<<<<<<< * cdef QByteArray data = qstr.toUtf8() #px+ * return data.data()[:data.size()].decode('utf-8') #px+ */ static PyObject *__pyx_f_10_qt_qtwogl_q2str(QString const &__pyx_v_qstr) { QByteArray __pyx_v_data; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("q2str", 0); /* "_qt_qtwogl.pyx":252 * ##pxm-FUNC P * cdef q2str(const QString &qstr): * cdef QByteArray data = qstr.toUtf8() #px+ # <<<<<<<<<<<<<< * return data.data()[:data.size()].decode('utf-8') #px+ * ##pxm-FUNC P */ __pyx_v_data = __pyx_v_qstr.toUtf8(); /* "_qt_qtwogl.pyx":253 * cdef q2str(const QString &qstr): * cdef QByteArray data = qstr.toUtf8() #px+ * return data.data()[:data.size()].decode('utf-8') #px+ # <<<<<<<<<<<<<< * ##pxm-FUNC P * cdef QString str2q(pstr): */ __Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_decode_c_string(__pyx_v_data.data(), 0, __pyx_v_data.size(), NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 253, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; /* "_qt_qtwogl.pyx":251 * * ##pxm-FUNC P * cdef q2str(const QString &qstr): # <<<<<<<<<<<<<< * cdef QByteArray data = qstr.toUtf8() #px+ * return data.data()[:data.size()].decode('utf-8') #px+ */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("_qt_qtwogl.q2str", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwogl.pyx":255 * return data.data()[:data.size()].decode('utf-8') #px+ * ##pxm-FUNC P * cdef QString str2q(pstr): # <<<<<<<<<<<<<< * data = pstr.encode('utf-8') #px+ * return fromUtf8(data, len(data)) #px+ */ static QString __pyx_f_10_qt_qtwogl_str2q(PyObject *__pyx_v_pstr) { PyObject *__pyx_v_data = NULL; QString __pyx_r; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; char *__pyx_t_3; Py_ssize_t __pyx_t_4; __Pyx_RefNannySetupContext("str2q", 0); /* "_qt_qtwogl.pyx":256 * ##pxm-FUNC P * cdef QString str2q(pstr): * data = pstr.encode('utf-8') #px+ # <<<<<<<<<<<<<< * return fromUtf8(data, len(data)) #px+ * */ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_pstr, __pyx_n_s_encode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 256, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 256, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_data = __pyx_t_2; __pyx_t_2 = 0; /* "_qt_qtwogl.pyx":257 * cdef QString str2q(pstr): * data = pstr.encode('utf-8') #px+ * return fromUtf8(data, len(data)) #px+ # <<<<<<<<<<<<<< * * cdef QVariantList _list2q(value): #px+ */ __pyx_t_3 = __Pyx_PyObject_AsString(__pyx_v_data); if (unlikely((!__pyx_t_3) && PyErr_Occurred())) __PYX_ERR(0, 257, __pyx_L1_error) __pyx_t_4 = PyObject_Length(__pyx_v_data); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(0, 257, __pyx_L1_error) __pyx_r = QString::fromUtf8(((char *)__pyx_t_3), __pyx_t_4); goto __pyx_L0; /* "_qt_qtwogl.pyx":255 * return data.data()[:data.size()].decode('utf-8') #px+ * ##pxm-FUNC P * cdef QString str2q(pstr): # <<<<<<<<<<<<<< * data = pstr.encode('utf-8') #px+ * return fromUtf8(data, len(data)) #px+ */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_WriteUnraisable("_qt_qtwogl.str2q", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_XDECREF(__pyx_v_data); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwogl.pyx":259 * return fromUtf8(data, len(data)) #px+ * * cdef QVariantList _list2q(value): #px+ # <<<<<<<<<<<<<< * cdef QVariantList qlist #px+ * cdef QVariant qvalue #px+ */ static QList __pyx_f_10_qt_qtwogl__list2q(PyObject *__pyx_v_value) { QList __pyx_v_qlist; QVariant __pyx_v_qvalue; int __pyx_v_i; QList __pyx_r; __Pyx_RefNannyDeclarations Py_ssize_t __pyx_t_1; int __pyx_t_2; PyObject *__pyx_t_3 = NULL; __Pyx_RefNannySetupContext("_list2q", 0); /* "_qt_qtwogl.pyx":263 * cdef QVariant qvalue #px+ * cdef int i #px+ * qlist.reserve(len(value)) #px+ # <<<<<<<<<<<<<< * for i in range(len(value)): #px+ * qvalue = tovariant(value[i]) #px+ */ __pyx_t_1 = PyObject_Length(__pyx_v_value); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(0, 263, __pyx_L1_error) __pyx_v_qlist.reserve(__pyx_t_1); /* "_qt_qtwogl.pyx":264 * cdef int i #px+ * qlist.reserve(len(value)) #px+ * for i in range(len(value)): #px+ # <<<<<<<<<<<<<< * qvalue = tovariant(value[i]) #px+ * qlist.append(qvalue) #px+ */ __pyx_t_1 = PyObject_Length(__pyx_v_value); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(0, 264, __pyx_L1_error) for (__pyx_t_2 = 0; __pyx_t_2 < __pyx_t_1; __pyx_t_2+=1) { __pyx_v_i = __pyx_t_2; /* "_qt_qtwogl.pyx":265 * qlist.reserve(len(value)) #px+ * for i in range(len(value)): #px+ * qvalue = tovariant(value[i]) #px+ # <<<<<<<<<<<<<< * qlist.append(qvalue) #px+ * return qlist #px+ */ __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_value, __pyx_v_i, int, 1, __Pyx_PyInt_From_int, 0, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 265, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_v_qvalue = __pyx_f_10_qt_qtwogl_tovariant(__pyx_t_3); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "_qt_qtwogl.pyx":266 * for i in range(len(value)): #px+ * qvalue = tovariant(value[i]) #px+ * qlist.append(qvalue) #px+ # <<<<<<<<<<<<<< * return qlist #px+ * */ __pyx_v_qlist.append(__pyx_v_qvalue); } /* "_qt_qtwogl.pyx":267 * qvalue = tovariant(value[i]) #px+ * qlist.append(qvalue) #px+ * return qlist #px+ # <<<<<<<<<<<<<< * * ##pxm-FUNC P */ __pyx_r = __pyx_v_qlist; goto __pyx_L0; /* "_qt_qtwogl.pyx":259 * return fromUtf8(data, len(data)) #px+ * * cdef QVariantList _list2q(value): #px+ # <<<<<<<<<<<<<< * cdef QVariantList qlist #px+ * cdef QVariant qvalue #px+ */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_3); __Pyx_WriteUnraisable("_qt_qtwogl._list2q", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwogl.pyx":270 * * ##pxm-FUNC P * cdef QVariant tovariant(value): # <<<<<<<<<<<<<< * cdef QVariant qvalue #px/ * #qvalue = list(value) if type(value) == tuple else value */ static QVariant __pyx_f_10_qt_qtwogl_tovariant(PyObject *__pyx_v_value) { QVariant __pyx_v_qvalue; QVariant __pyx_r; __Pyx_RefNannyDeclarations int __pyx_t_1; int __pyx_t_2; bool __pyx_t_3; int __pyx_t_4; double __pyx_t_5; int __pyx_t_6; PyObject *__pyx_t_7 = NULL; PyObject *__pyx_t_8 = NULL; __Pyx_RefNannySetupContext("tovariant", 0); /* "_qt_qtwogl.pyx":273 * cdef QVariant qvalue #px/ * #qvalue = list(value) if type(value) == tuple else value * if type(value) is bool: #px+ # <<<<<<<<<<<<<< * qvalue.setValue[cbool](value) #px+ * elif type(value) is int: #px+ */ __pyx_t_1 = (((PyObject *)Py_TYPE(__pyx_v_value)) == ((PyObject*)&PyBool_Type)); __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { /* "_qt_qtwogl.pyx":274 * #qvalue = list(value) if type(value) == tuple else value * if type(value) is bool: #px+ * qvalue.setValue[cbool](value) #px+ # <<<<<<<<<<<<<< * elif type(value) is int: #px+ * qvalue.setValue[int](value) #px+ */ __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_value); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(0, 274, __pyx_L1_error) __pyx_v_qvalue.setValue(__pyx_t_3); /* "_qt_qtwogl.pyx":273 * cdef QVariant qvalue #px/ * #qvalue = list(value) if type(value) == tuple else value * if type(value) is bool: #px+ # <<<<<<<<<<<<<< * qvalue.setValue[cbool](value) #px+ * elif type(value) is int: #px+ */ goto __pyx_L3; } /* "_qt_qtwogl.pyx":275 * if type(value) is bool: #px+ * qvalue.setValue[cbool](value) #px+ * elif type(value) is int: #px+ # <<<<<<<<<<<<<< * qvalue.setValue[int](value) #px+ * elif type(value) is float: #px+ */ __pyx_t_2 = (((PyObject *)Py_TYPE(__pyx_v_value)) == ((PyObject *)(&PyInt_Type))); __pyx_t_1 = (__pyx_t_2 != 0); if (__pyx_t_1) { /* "_qt_qtwogl.pyx":276 * qvalue.setValue[cbool](value) #px+ * elif type(value) is int: #px+ * qvalue.setValue[int](value) #px+ # <<<<<<<<<<<<<< * elif type(value) is float: #px+ * qvalue.setValue[double](value) #px+ */ __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 276, __pyx_L1_error) __pyx_v_qvalue.setValue(__pyx_t_4); /* "_qt_qtwogl.pyx":275 * if type(value) is bool: #px+ * qvalue.setValue[cbool](value) #px+ * elif type(value) is int: #px+ # <<<<<<<<<<<<<< * qvalue.setValue[int](value) #px+ * elif type(value) is float: #px+ */ goto __pyx_L3; } /* "_qt_qtwogl.pyx":277 * elif type(value) is int: #px+ * qvalue.setValue[int](value) #px+ * elif type(value) is float: #px+ # <<<<<<<<<<<<<< * qvalue.setValue[double](value) #px+ * elif type(value) is str: #px+ */ __pyx_t_1 = (((PyObject *)Py_TYPE(__pyx_v_value)) == ((PyObject *)(&PyFloat_Type))); __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { /* "_qt_qtwogl.pyx":278 * qvalue.setValue[int](value) #px+ * elif type(value) is float: #px+ * qvalue.setValue[double](value) #px+ # <<<<<<<<<<<<<< * elif type(value) is str: #px+ * qvalue.setValue[QString](str2q(value)) #px+ */ __pyx_t_5 = __pyx_PyFloat_AsDouble(__pyx_v_value); if (unlikely((__pyx_t_5 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 278, __pyx_L1_error) __pyx_v_qvalue.setValue(__pyx_t_5); /* "_qt_qtwogl.pyx":277 * elif type(value) is int: #px+ * qvalue.setValue[int](value) #px+ * elif type(value) is float: #px+ # <<<<<<<<<<<<<< * qvalue.setValue[double](value) #px+ * elif type(value) is str: #px+ */ goto __pyx_L3; } /* "_qt_qtwogl.pyx":279 * elif type(value) is float: #px+ * qvalue.setValue[double](value) #px+ * elif type(value) is str: #px+ # <<<<<<<<<<<<<< * qvalue.setValue[QString](str2q(value)) #px+ * elif type(value) is list or type(value) is tuple: #px+ */ __pyx_t_2 = (((PyObject *)Py_TYPE(__pyx_v_value)) == ((PyObject *)(&PyUnicode_Type))); __pyx_t_1 = (__pyx_t_2 != 0); if (__pyx_t_1) { /* "_qt_qtwogl.pyx":280 * qvalue.setValue[double](value) #px+ * elif type(value) is str: #px+ * qvalue.setValue[QString](str2q(value)) #px+ # <<<<<<<<<<<<<< * elif type(value) is list or type(value) is tuple: #px+ * qvalue.setValue[QVariantList](_list2q(value)) #px+ */ __pyx_v_qvalue.setValue(__pyx_f_10_qt_qtwogl_str2q(__pyx_v_value)); /* "_qt_qtwogl.pyx":279 * elif type(value) is float: #px+ * qvalue.setValue[double](value) #px+ * elif type(value) is str: #px+ # <<<<<<<<<<<<<< * qvalue.setValue[QString](str2q(value)) #px+ * elif type(value) is list or type(value) is tuple: #px+ */ goto __pyx_L3; } /* "_qt_qtwogl.pyx":281 * elif type(value) is str: #px+ * qvalue.setValue[QString](str2q(value)) #px+ * elif type(value) is list or type(value) is tuple: #px+ # <<<<<<<<<<<<<< * qvalue.setValue[QVariantList](_list2q(value)) #px+ * else: #px+ */ __pyx_t_2 = (((PyObject *)Py_TYPE(__pyx_v_value)) == ((PyObject *)(&PyList_Type))); __pyx_t_6 = (__pyx_t_2 != 0); if (!__pyx_t_6) { } else { __pyx_t_1 = __pyx_t_6; goto __pyx_L4_bool_binop_done; } __pyx_t_6 = (((PyObject *)Py_TYPE(__pyx_v_value)) == ((PyObject *)(&PyTuple_Type))); __pyx_t_2 = (__pyx_t_6 != 0); __pyx_t_1 = __pyx_t_2; __pyx_L4_bool_binop_done:; if (__pyx_t_1) { /* "_qt_qtwogl.pyx":282 * qvalue.setValue[QString](str2q(value)) #px+ * elif type(value) is list or type(value) is tuple: #px+ * qvalue.setValue[QVariantList](_list2q(value)) #px+ # <<<<<<<<<<<<<< * else: #px+ * print('value has wrong typ ' + repr(type(value))) #px+ */ __pyx_v_qvalue.setValue >(__pyx_f_10_qt_qtwogl__list2q(__pyx_v_value)); /* "_qt_qtwogl.pyx":281 * elif type(value) is str: #px+ * qvalue.setValue[QString](str2q(value)) #px+ * elif type(value) is list or type(value) is tuple: #px+ # <<<<<<<<<<<<<< * qvalue.setValue[QVariantList](_list2q(value)) #px+ * else: #px+ */ goto __pyx_L3; } /* "_qt_qtwogl.pyx":284 * qvalue.setValue[QVariantList](_list2q(value)) #px+ * else: #px+ * print('value has wrong typ ' + repr(type(value))) #px+ # <<<<<<<<<<<<<< * return qvalue * */ /*else*/ { __pyx_t_7 = PyObject_Repr(((PyObject *)Py_TYPE(__pyx_v_value))); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 284, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_8 = __Pyx_PyUnicode_ConcatSafe(__pyx_kp_u_value_has_wrong_typ, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 284, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 284, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_7, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 284, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } __pyx_L3:; /* "_qt_qtwogl.pyx":285 * else: #px+ * print('value has wrong typ ' + repr(type(value))) #px+ * return qvalue # <<<<<<<<<<<<<< * * cdef _q2list(const QVariantList &ql): #px+ */ __pyx_r = __pyx_v_qvalue; goto __pyx_L0; /* "_qt_qtwogl.pyx":270 * * ##pxm-FUNC P * cdef QVariant tovariant(value): # <<<<<<<<<<<<<< * cdef QVariant qvalue #px/ * #qvalue = list(value) if type(value) == tuple else value */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_8); __Pyx_WriteUnraisable("_qt_qtwogl.tovariant", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwogl.pyx":287 * return qvalue * * cdef _q2list(const QVariantList &ql): #px+ # <<<<<<<<<<<<<< * return [fromvariant(ql.at(i)) for i in range(ql.size())] #px+ * cdef _qs2list(const QStringList &ql): #px+ */ static PyObject *__pyx_f_10_qt_qtwogl__q2list(QList const &__pyx_v_ql) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_t_2; int __pyx_t_3; PyObject *__pyx_t_4 = NULL; __Pyx_RefNannySetupContext("_q2list", 0); /* "_qt_qtwogl.pyx":288 * * cdef _q2list(const QVariantList &ql): #px+ * return [fromvariant(ql.at(i)) for i in range(ql.size())] #px+ # <<<<<<<<<<<<<< * cdef _qs2list(const QStringList &ql): #px+ * return [q2str(ql[i]) for i in range(ql.size())] #px+ */ __Pyx_XDECREF(__pyx_r); { /* enter inner scope */ int __pyx_7genexpr__pyx_v_i; __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 288, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __pyx_v_ql.size(); for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) { __pyx_7genexpr__pyx_v_i = __pyx_t_3; __pyx_t_4 = __pyx_f_10_qt_qtwogl_fromvariant(__pyx_v_ql.at(__pyx_7genexpr__pyx_v_i)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 288, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_4))) __PYX_ERR(0, 288, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } } /* exit inner scope */ __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; /* "_qt_qtwogl.pyx":287 * return qvalue * * cdef _q2list(const QVariantList &ql): #px+ # <<<<<<<<<<<<<< * return [fromvariant(ql.at(i)) for i in range(ql.size())] #px+ * cdef _qs2list(const QStringList &ql): #px+ */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("_qt_qtwogl._q2list", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwogl.pyx":289 * cdef _q2list(const QVariantList &ql): #px+ * return [fromvariant(ql.at(i)) for i in range(ql.size())] #px+ * cdef _qs2list(const QStringList &ql): #px+ # <<<<<<<<<<<<<< * return [q2str(ql[i]) for i in range(ql.size())] #px+ * cdef _q2dict(const QVariantMap &qm): #px+ */ static PyObject *__pyx_f_10_qt_qtwogl__qs2list(QStringList const &__pyx_v_ql) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_t_2; int __pyx_t_3; PyObject *__pyx_t_4 = NULL; __Pyx_RefNannySetupContext("_qs2list", 0); /* "_qt_qtwogl.pyx":290 * return [fromvariant(ql.at(i)) for i in range(ql.size())] #px+ * cdef _qs2list(const QStringList &ql): #px+ * return [q2str(ql[i]) for i in range(ql.size())] #px+ # <<<<<<<<<<<<<< * cdef _q2dict(const QVariantMap &qm): #px+ * cdef QStringList qkeys = qm.keys() #px+ */ __Pyx_XDECREF(__pyx_r); { /* enter inner scope */ int __pyx_8genexpr1__pyx_v_i; __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 290, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __pyx_v_ql.size(); for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) { __pyx_8genexpr1__pyx_v_i = __pyx_t_3; __pyx_t_4 = __pyx_f_10_qt_qtwogl_q2str((__pyx_v_ql[__pyx_8genexpr1__pyx_v_i])); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 290, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_4))) __PYX_ERR(0, 290, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } } /* exit inner scope */ __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; /* "_qt_qtwogl.pyx":289 * cdef _q2list(const QVariantList &ql): #px+ * return [fromvariant(ql.at(i)) for i in range(ql.size())] #px+ * cdef _qs2list(const QStringList &ql): #px+ # <<<<<<<<<<<<<< * return [q2str(ql[i]) for i in range(ql.size())] #px+ * cdef _q2dict(const QVariantMap &qm): #px+ */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("_qt_qtwogl._qs2list", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwogl.pyx":291 * cdef _qs2list(const QStringList &ql): #px+ * return [q2str(ql[i]) for i in range(ql.size())] #px+ * cdef _q2dict(const QVariantMap &qm): #px+ # <<<<<<<<<<<<<< * cdef QStringList qkeys = qm.keys() #px+ * cdef QVariantList qvals = qm.values() #px+ */ static PyObject *__pyx_f_10_qt_qtwogl__q2dict(QMap const &__pyx_v_qm) { QStringList __pyx_v_qkeys; QList __pyx_v_qvals; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; Py_ssize_t __pyx_t_5; PyObject *(*__pyx_t_6)(PyObject *); PyObject *__pyx_t_7 = NULL; PyObject *__pyx_t_8 = NULL; PyObject *(*__pyx_t_9)(PyObject *); __Pyx_RefNannySetupContext("_q2dict", 0); /* "_qt_qtwogl.pyx":292 * return [q2str(ql[i]) for i in range(ql.size())] #px+ * cdef _q2dict(const QVariantMap &qm): #px+ * cdef QStringList qkeys = qm.keys() #px+ # <<<<<<<<<<<<<< * cdef QVariantList qvals = qm.values() #px+ * return {k:v for k,v in zip(_qs2list(qkeys), _q2list(qvals))} #px+ */ __pyx_v_qkeys = __pyx_v_qm.keys(); /* "_qt_qtwogl.pyx":293 * cdef _q2dict(const QVariantMap &qm): #px+ * cdef QStringList qkeys = qm.keys() #px+ * cdef QVariantList qvals = qm.values() #px+ # <<<<<<<<<<<<<< * return {k:v for k,v in zip(_qs2list(qkeys), _q2list(qvals))} #px+ * */ __pyx_v_qvals = __pyx_v_qm.values(); /* "_qt_qtwogl.pyx":294 * cdef QStringList qkeys = qm.keys() #px+ * cdef QVariantList qvals = qm.values() #px+ * return {k:v for k,v in zip(_qs2list(qkeys), _q2list(qvals))} #px+ # <<<<<<<<<<<<<< * * ##pxm-FUNC P */ __Pyx_XDECREF(__pyx_r); { /* enter inner scope */ PyObject *__pyx_8genexpr2__pyx_v_k = NULL; PyObject *__pyx_8genexpr2__pyx_v_v = NULL; __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 294, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __pyx_f_10_qt_qtwogl__qs2list(__pyx_v_qkeys); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 294, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __pyx_f_10_qt_qtwogl__q2list(__pyx_v_qvals); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 294, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 294, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_3); __pyx_t_2 = 0; __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_zip, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 294, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) { __pyx_t_4 = __pyx_t_3; __Pyx_INCREF(__pyx_t_4); __pyx_t_5 = 0; __pyx_t_6 = NULL; } else { __pyx_t_5 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 294, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_6 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 294, __pyx_L5_error) } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; for (;;) { if (likely(!__pyx_t_6)) { if (likely(PyList_CheckExact(__pyx_t_4))) { if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_4)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_3 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_3); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 294, __pyx_L5_error) #else __pyx_t_3 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 294, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_3); #endif } else { if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_4)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_3); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 294, __pyx_L5_error) #else __pyx_t_3 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 294, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_3); #endif } } else { __pyx_t_3 = __pyx_t_6(__pyx_t_4); if (unlikely(!__pyx_t_3)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 294, __pyx_L5_error) } break; } __Pyx_GOTREF(__pyx_t_3); } if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) { PyObject* sequence = __pyx_t_3; #if !CYTHON_COMPILING_IN_PYPY Py_ssize_t size = Py_SIZE(sequence); #else Py_ssize_t size = PySequence_Size(sequence); #endif if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 294, __pyx_L5_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_7 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_2 = PyList_GET_ITEM(sequence, 0); __pyx_t_7 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx_t_7); #else __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 294, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 294, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_7); #endif __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { Py_ssize_t index = -1; __pyx_t_8 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 294, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_9 = Py_TYPE(__pyx_t_8)->tp_iternext; index = 0; __pyx_t_2 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_2)) goto __pyx_L8_unpacking_failed; __Pyx_GOTREF(__pyx_t_2); index = 1; __pyx_t_7 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_7)) goto __pyx_L8_unpacking_failed; __Pyx_GOTREF(__pyx_t_7); if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_8), 2) < 0) __PYX_ERR(0, 294, __pyx_L5_error) __pyx_t_9 = NULL; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; goto __pyx_L9_unpacking_done; __pyx_L8_unpacking_failed:; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_9 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 294, __pyx_L5_error) __pyx_L9_unpacking_done:; } __Pyx_XDECREF_SET(__pyx_8genexpr2__pyx_v_k, __pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF_SET(__pyx_8genexpr2__pyx_v_v, __pyx_t_7); __pyx_t_7 = 0; if (unlikely(PyDict_SetItem(__pyx_t_1, (PyObject*)__pyx_8genexpr2__pyx_v_k, (PyObject*)__pyx_8genexpr2__pyx_v_v))) __PYX_ERR(0, 294, __pyx_L5_error) } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_XDECREF(__pyx_8genexpr2__pyx_v_k); __Pyx_XDECREF(__pyx_8genexpr2__pyx_v_v); goto __pyx_L10_exit_scope; __pyx_L5_error:; __Pyx_XDECREF(__pyx_8genexpr2__pyx_v_k); __Pyx_XDECREF(__pyx_8genexpr2__pyx_v_v); goto __pyx_L1_error; __pyx_L10_exit_scope:; } /* exit inner scope */ __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; /* "_qt_qtwogl.pyx":291 * cdef _qs2list(const QStringList &ql): #px+ * return [q2str(ql[i]) for i in range(ql.size())] #px+ * cdef _q2dict(const QVariantMap &qm): #px+ # <<<<<<<<<<<<<< * cdef QStringList qkeys = qm.keys() #px+ * cdef QVariantList qvals = qm.values() #px+ */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_8); __Pyx_AddTraceback("_qt_qtwogl._q2dict", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwogl.pyx":297 * * ##pxm-FUNC P * cdef fromvariant(const QVariant &qvalue): # <<<<<<<<<<<<<< * cdef const char* typename = qvalue.typeName() #px+ * if typename == NULL: #px+ */ static PyObject *__pyx_f_10_qt_qtwogl_fromvariant(QVariant const &__pyx_v_qvalue) { char const *__pyx_v_typename; PyObject *__pyx_v_res = NULL; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; __Pyx_RefNannySetupContext("fromvariant", 0); /* "_qt_qtwogl.pyx":298 * ##pxm-FUNC P * cdef fromvariant(const QVariant &qvalue): * cdef const char* typename = qvalue.typeName() #px+ # <<<<<<<<<<<<<< * if typename == NULL: #px+ * return None #px+ */ __pyx_v_typename = __pyx_v_qvalue.typeName(); /* "_qt_qtwogl.pyx":299 * cdef fromvariant(const QVariant &qvalue): * cdef const char* typename = qvalue.typeName() #px+ * if typename == NULL: #px+ # <<<<<<<<<<<<<< * return None #px+ * if typename == b'bool': #px+ */ __pyx_t_1 = ((__pyx_v_typename == NULL) != 0); if (__pyx_t_1) { /* "_qt_qtwogl.pyx":300 * cdef const char* typename = qvalue.typeName() #px+ * if typename == NULL: #px+ * return None #px+ # <<<<<<<<<<<<<< * if typename == b'bool': #px+ * return qvalue.value[cbool]() #px+ */ __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(Py_None); __pyx_r = Py_None; goto __pyx_L0; /* "_qt_qtwogl.pyx":299 * cdef fromvariant(const QVariant &qvalue): * cdef const char* typename = qvalue.typeName() #px+ * if typename == NULL: #px+ # <<<<<<<<<<<<<< * return None #px+ * if typename == b'bool': #px+ */ } /* "_qt_qtwogl.pyx":301 * if typename == NULL: #px+ * return None #px+ * if typename == b'bool': #px+ # <<<<<<<<<<<<<< * return qvalue.value[cbool]() #px+ * elif typename == b'int': #px+ */ __pyx_t_2 = __Pyx_PyBytes_FromString(__pyx_v_typename); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 301, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = (__Pyx_PyBytes_Equals(__pyx_t_2, __pyx_n_b_bool, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 301, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (__pyx_t_1) { /* "_qt_qtwogl.pyx":302 * return None #px+ * if typename == b'bool': #px+ * return qvalue.value[cbool]() #px+ # <<<<<<<<<<<<<< * elif typename == b'int': #px+ * return qvalue.value[int]() #px+ */ __Pyx_XDECREF(__pyx_r); __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_v_qvalue.value()); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 302, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; /* "_qt_qtwogl.pyx":301 * if typename == NULL: #px+ * return None #px+ * if typename == b'bool': #px+ # <<<<<<<<<<<<<< * return qvalue.value[cbool]() #px+ * elif typename == b'int': #px+ */ } /* "_qt_qtwogl.pyx":303 * if typename == b'bool': #px+ * return qvalue.value[cbool]() #px+ * elif typename == b'int': #px+ # <<<<<<<<<<<<<< * return qvalue.value[int]() #px+ * elif typename == b'double': #px+ */ __pyx_t_2 = __Pyx_PyBytes_FromString(__pyx_v_typename); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 303, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = (__Pyx_PyBytes_Equals(__pyx_t_2, __pyx_n_b_int, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 303, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (__pyx_t_1) { /* "_qt_qtwogl.pyx":304 * return qvalue.value[cbool]() #px+ * elif typename == b'int': #px+ * return qvalue.value[int]() #px+ # <<<<<<<<<<<<<< * elif typename == b'double': #px+ * return qvalue.value[double]() #px+ */ __Pyx_XDECREF(__pyx_r); __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_qvalue.value()); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 304, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; /* "_qt_qtwogl.pyx":303 * if typename == b'bool': #px+ * return qvalue.value[cbool]() #px+ * elif typename == b'int': #px+ # <<<<<<<<<<<<<< * return qvalue.value[int]() #px+ * elif typename == b'double': #px+ */ } /* "_qt_qtwogl.pyx":305 * elif typename == b'int': #px+ * return qvalue.value[int]() #px+ * elif typename == b'double': #px+ # <<<<<<<<<<<<<< * return qvalue.value[double]() #px+ * elif typename == b'QString': #px+ */ __pyx_t_2 = __Pyx_PyBytes_FromString(__pyx_v_typename); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 305, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = (__Pyx_PyBytes_Equals(__pyx_t_2, __pyx_n_b_double, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 305, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (__pyx_t_1) { /* "_qt_qtwogl.pyx":306 * return qvalue.value[int]() #px+ * elif typename == b'double': #px+ * return qvalue.value[double]() #px+ # <<<<<<<<<<<<<< * elif typename == b'QString': #px+ * return q2str(qvalue.value[QString]()) #px+ */ __Pyx_XDECREF(__pyx_r); __pyx_t_2 = PyFloat_FromDouble(__pyx_v_qvalue.value()); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 306, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; /* "_qt_qtwogl.pyx":305 * elif typename == b'int': #px+ * return qvalue.value[int]() #px+ * elif typename == b'double': #px+ # <<<<<<<<<<<<<< * return qvalue.value[double]() #px+ * elif typename == b'QString': #px+ */ } /* "_qt_qtwogl.pyx":307 * elif typename == b'double': #px+ * return qvalue.value[double]() #px+ * elif typename == b'QString': #px+ # <<<<<<<<<<<<<< * return q2str(qvalue.value[QString]()) #px+ * elif typename == b'void*': #px+ */ __pyx_t_2 = __Pyx_PyBytes_FromString(__pyx_v_typename); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 307, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = (__Pyx_PyBytes_Equals(__pyx_t_2, __pyx_n_b_QString, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 307, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (__pyx_t_1) { /* "_qt_qtwogl.pyx":308 * return qvalue.value[double]() #px+ * elif typename == b'QString': #px+ * return q2str(qvalue.value[QString]()) #px+ # <<<<<<<<<<<<<< * elif typename == b'void*': #px+ * res = qvalue.value[int]() #px+ */ __Pyx_XDECREF(__pyx_r); __pyx_t_2 = __pyx_f_10_qt_qtwogl_q2str(__pyx_v_qvalue.value()); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 308, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; /* "_qt_qtwogl.pyx":307 * elif typename == b'double': #px+ * return qvalue.value[double]() #px+ * elif typename == b'QString': #px+ # <<<<<<<<<<<<<< * return q2str(qvalue.value[QString]()) #px+ * elif typename == b'void*': #px+ */ } /* "_qt_qtwogl.pyx":309 * elif typename == b'QString': #px+ * return q2str(qvalue.value[QString]()) #px+ * elif typename == b'void*': #px+ # <<<<<<<<<<<<<< * res = qvalue.value[int]() #px+ * return None if res == 0 else '({})'.format(res) #px+ */ __pyx_t_2 = __Pyx_PyBytes_FromString(__pyx_v_typename); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 309, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = (__Pyx_PyBytes_Equals(__pyx_t_2, __pyx_kp_b_void, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 309, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (__pyx_t_1) { /* "_qt_qtwogl.pyx":310 * return q2str(qvalue.value[QString]()) #px+ * elif typename == b'void*': #px+ * res = qvalue.value[int]() #px+ # <<<<<<<<<<<<<< * return None if res == 0 else '({})'.format(res) #px+ * elif qvalue.canConvert[QVariantMap](): #px+ */ __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_qvalue.value()); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 310, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_v_res = __pyx_t_2; __pyx_t_2 = 0; /* "_qt_qtwogl.pyx":311 * elif typename == b'void*': #px+ * res = qvalue.value[int]() #px+ * return None if res == 0 else '({})'.format(res) #px+ # <<<<<<<<<<<<<< * elif qvalue.canConvert[QVariantMap](): #px+ * return _q2dict(qvalue.value[QVariantMap]()) #px+ */ __Pyx_XDECREF(__pyx_r); __pyx_t_3 = __Pyx_PyInt_EqObjC(__pyx_v_res, __pyx_int_0, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 311, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 311, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (__pyx_t_1) { __Pyx_INCREF(Py_None); __pyx_t_2 = Py_None; } else { __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_void_2, __pyx_n_s_format); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 311, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); } } if (!__pyx_t_5) { __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_res); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 311, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_v_res}; __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 311, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_3); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_v_res}; __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 311, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_3); } else #endif { __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 311, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL; __Pyx_INCREF(__pyx_v_res); __Pyx_GIVEREF(__pyx_v_res); PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_v_res); __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 311, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_2 = __pyx_t_3; __pyx_t_3 = 0; } __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; /* "_qt_qtwogl.pyx":309 * elif typename == b'QString': #px+ * return q2str(qvalue.value[QString]()) #px+ * elif typename == b'void*': #px+ # <<<<<<<<<<<<<< * res = qvalue.value[int]() #px+ * return None if res == 0 else '({})'.format(res) #px+ */ } /* "_qt_qtwogl.pyx":312 * res = qvalue.value[int]() #px+ * return None if res == 0 else '({})'.format(res) #px+ * elif qvalue.canConvert[QVariantMap](): #px+ # <<<<<<<<<<<<<< * return _q2dict(qvalue.value[QVariantMap]()) #px+ * elif qvalue.canConvert[QVariantList](): #px+ */ __pyx_t_1 = (__pyx_v_qvalue.canConvert >() != 0); if (__pyx_t_1) { /* "_qt_qtwogl.pyx":313 * return None if res == 0 else '({})'.format(res) #px+ * elif qvalue.canConvert[QVariantMap](): #px+ * return _q2dict(qvalue.value[QVariantMap]()) #px+ # <<<<<<<<<<<<<< * elif qvalue.canConvert[QVariantList](): #px+ * return _q2list(qvalue.value[QVariantList]()) #px+ */ __Pyx_XDECREF(__pyx_r); __pyx_t_2 = __pyx_f_10_qt_qtwogl__q2dict(__pyx_v_qvalue.value >()); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 313, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; /* "_qt_qtwogl.pyx":312 * res = qvalue.value[int]() #px+ * return None if res == 0 else '({})'.format(res) #px+ * elif qvalue.canConvert[QVariantMap](): #px+ # <<<<<<<<<<<<<< * return _q2dict(qvalue.value[QVariantMap]()) #px+ * elif qvalue.canConvert[QVariantList](): #px+ */ } /* "_qt_qtwogl.pyx":314 * elif qvalue.canConvert[QVariantMap](): #px+ * return _q2dict(qvalue.value[QVariantMap]()) #px+ * elif qvalue.canConvert[QVariantList](): #px+ # <<<<<<<<<<<<<< * return _q2list(qvalue.value[QVariantList]()) #px+ * elif qvalue.canConvert[pQObject](): #px+ */ __pyx_t_1 = (__pyx_v_qvalue.canConvert >() != 0); if (__pyx_t_1) { /* "_qt_qtwogl.pyx":315 * return _q2dict(qvalue.value[QVariantMap]()) #px+ * elif qvalue.canConvert[QVariantList](): #px+ * return _q2list(qvalue.value[QVariantList]()) #px+ # <<<<<<<<<<<<<< * elif qvalue.canConvert[pQObject](): #px+ * return 'QObject({})'.format(q2str(qvalue.value[pQObject]().objectName())) #px+ */ __Pyx_XDECREF(__pyx_r); __pyx_t_2 = __pyx_f_10_qt_qtwogl__q2list(__pyx_v_qvalue.value >()); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 315, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; /* "_qt_qtwogl.pyx":314 * elif qvalue.canConvert[QVariantMap](): #px+ * return _q2dict(qvalue.value[QVariantMap]()) #px+ * elif qvalue.canConvert[QVariantList](): #px+ # <<<<<<<<<<<<<< * return _q2list(qvalue.value[QVariantList]()) #px+ * elif qvalue.canConvert[pQObject](): #px+ */ } /* "_qt_qtwogl.pyx":316 * elif qvalue.canConvert[QVariantList](): #px+ * return _q2list(qvalue.value[QVariantList]()) #px+ * elif qvalue.canConvert[pQObject](): #px+ # <<<<<<<<<<<<<< * return 'QObject({})'.format(q2str(qvalue.value[pQObject]().objectName())) #px+ * else: #px+ */ __pyx_t_1 = (__pyx_v_qvalue.canConvert<__pyx_t_10_qt_qtwogl_pQObject>() != 0); if (__pyx_t_1) { /* "_qt_qtwogl.pyx":317 * return _q2list(qvalue.value[QVariantList]()) #px+ * elif qvalue.canConvert[pQObject](): #px+ * return 'QObject({})'.format(q2str(qvalue.value[pQObject]().objectName())) #px+ # <<<<<<<<<<<<<< * else: #px+ * warn(RuntimeWarning('unknown typename %s' % typename[:])) #px+ */ __Pyx_XDECREF(__pyx_r); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_QObject, __pyx_n_s_format); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 317, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __pyx_f_10_qt_qtwogl_q2str(__pyx_v_qvalue.value<__pyx_t_10_qt_qtwogl_pQObject>()->objectName()); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 317, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_6 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } if (!__pyx_t_6) { __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 317, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_2); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_4}; __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 317, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[2] = {__pyx_t_6, __pyx_t_4}; __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 317, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 317, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6); __pyx_t_6 = NULL; __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_4); __pyx_t_4 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 317, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; /* "_qt_qtwogl.pyx":316 * elif qvalue.canConvert[QVariantList](): #px+ * return _q2list(qvalue.value[QVariantList]()) #px+ * elif qvalue.canConvert[pQObject](): #px+ # <<<<<<<<<<<<<< * return 'QObject({})'.format(q2str(qvalue.value[pQObject]().objectName())) #px+ * else: #px+ */ } /* "_qt_qtwogl.pyx":319 * return 'QObject({})'.format(q2str(qvalue.value[pQObject]().objectName())) #px+ * else: #px+ * warn(RuntimeWarning('unknown typename %s' % typename[:])) #px+ # <<<<<<<<<<<<<< * return None #px+ * */ /*else*/ { __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_warn); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 319, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = __Pyx_PyBytes_FromString(__pyx_v_typename + 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 319, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_4 = PyUnicode_Format(__pyx_kp_u_unknown_typename_s, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 319, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 319, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeWarning, __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 319, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } if (!__pyx_t_5) { __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 319, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_2); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_4}; __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 319, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_4}; __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 319, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 319, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL; __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_4); __pyx_t_4 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 319, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwogl.pyx":320 * else: #px+ * warn(RuntimeWarning('unknown typename %s' % typename[:])) #px+ * return None #px+ # <<<<<<<<<<<<<< * * */ __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(Py_None); __pyx_r = Py_None; goto __pyx_L0; } /* "_qt_qtwogl.pyx":297 * * ##pxm-FUNC P * cdef fromvariant(const QVariant &qvalue): # <<<<<<<<<<<<<< * cdef const char* typename = qvalue.typeName() #px+ * if typename == NULL: #px+ */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_AddTraceback("_qt_qtwogl.fromvariant", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XDECREF(__pyx_v_res); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwogl.pyx":339 * ##pxh> * ##pxm-FUNC PH nogil * void on_beforeRendering() nogil: # <<<<<<<<<<<<<< * if not renderdata.initialized: * glarea.gl_init() */ void Renderer::on_beforeRendering(void) { int __pyx_t_1; /* "_qt_qtwogl.pyx":340 * ##pxm-FUNC PH nogil * void on_beforeRendering() nogil: * if not renderdata.initialized: # <<<<<<<<<<<<<< * glarea.gl_init() * IF OFFSCREEN: #px+ */ __pyx_t_1 = ((!(__pyx_v_10_qt_qtwogl_renderdata.initialized != 0)) != 0); if (__pyx_t_1) { /* "_qt_qtwogl.pyx":341 * void on_beforeRendering() nogil: * if not renderdata.initialized: * glarea.gl_init() # <<<<<<<<<<<<<< * IF OFFSCREEN: #px+ * render_offscreen_init() #px+ */ __pyx_f_11_glarea_ogl_gl_init(); /* "_qt_qtwogl.pyx":344 * IF OFFSCREEN: #px+ * render_offscreen_init() #px+ * renderdata.initialized = True # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * IF OFFSCREEN: #px+ */ __pyx_v_10_qt_qtwogl_renderdata.initialized = 1; /* "_qt_qtwogl.pyx":340 * ##pxm-FUNC PH nogil * void on_beforeRendering() nogil: * if not renderdata.initialized: # <<<<<<<<<<<<<< * glarea.gl_init() * IF OFFSCREEN: #px+ */ } /* "_qt_qtwogl.pyx":349 * renderdata.offscreenbuffer.bind() #px+ * ##pxm>IF_END * if renderdata.atlas_changed: # <<<<<<<<<<<<<< * render_update_atlas() * renderdata.atlas_changed = False */ __pyx_t_1 = (__pyx_v_10_qt_qtwogl_renderdata.atlas_changed != 0); if (__pyx_t_1) { /* "_qt_qtwogl.pyx":350 * ##pxm>IF_END * if renderdata.atlas_changed: * render_update_atlas() # <<<<<<<<<<<<<< * renderdata.atlas_changed = False * else: */ __pyx_f_10_qt_qtwogl_render_update_atlas(); /* "_qt_qtwogl.pyx":351 * if renderdata.atlas_changed: * render_update_atlas() * renderdata.atlas_changed = False # <<<<<<<<<<<<<< * else: * renderdata.texture.bind() */ __pyx_v_10_qt_qtwogl_renderdata.atlas_changed = 0; /* "_qt_qtwogl.pyx":349 * renderdata.offscreenbuffer.bind() #px+ * ##pxm>IF_END * if renderdata.atlas_changed: # <<<<<<<<<<<<<< * render_update_atlas() * renderdata.atlas_changed = False */ goto __pyx_L4; } /* "_qt_qtwogl.pyx":353 * renderdata.atlas_changed = False * else: * renderdata.texture.bind() # <<<<<<<<<<<<<< * glarea.gl_render() * renderdata.texture.release() */ /*else*/ { __pyx_v_10_qt_qtwogl_renderdata.texture->bind(); } __pyx_L4:; /* "_qt_qtwogl.pyx":354 * else: * renderdata.texture.bind() * glarea.gl_render() # <<<<<<<<<<<<<< * renderdata.texture.release() * if debug & DEBUG_DRAW: */ __pyx_f_11_glarea_ogl_gl_render(); /* "_qt_qtwogl.pyx":355 * renderdata.texture.bind() * glarea.gl_render() * renderdata.texture.release() # <<<<<<<<<<<<<< * if debug & DEBUG_DRAW: * glarea.gl_render_select_debug() */ __pyx_v_10_qt_qtwogl_renderdata.texture->release(); /* "_qt_qtwogl.pyx":356 * glarea.gl_render() * renderdata.texture.release() * if debug & DEBUG_DRAW: # <<<<<<<<<<<<<< * glarea.gl_render_select_debug() * if debug & DEBUG_FPS: */ __pyx_t_1 = ((__pyx_v_10_qt_qtwogl_debug & __pyx_e_10_qt_qtwogl_DEBUG_DRAW) != 0); if (__pyx_t_1) { /* "_qt_qtwogl.pyx":357 * renderdata.texture.release() * if debug & DEBUG_DRAW: * glarea.gl_render_select_debug() # <<<<<<<<<<<<<< * if debug & DEBUG_FPS: * render_fps() */ __pyx_f_11_glarea_ogl_gl_render_select_debug(); /* "_qt_qtwogl.pyx":356 * glarea.gl_render() * renderdata.texture.release() * if debug & DEBUG_DRAW: # <<<<<<<<<<<<<< * glarea.gl_render_select_debug() * if debug & DEBUG_FPS: */ } /* "_qt_qtwogl.pyx":358 * if debug & DEBUG_DRAW: * glarea.gl_render_select_debug() * if debug & DEBUG_FPS: # <<<<<<<<<<<<<< * render_fps() * if renderdata.pickxy_changed: */ __pyx_t_1 = ((__pyx_v_10_qt_qtwogl_debug & __pyx_e_10_qt_qtwogl_DEBUG_FPS) != 0); if (__pyx_t_1) { /* "_qt_qtwogl.pyx":359 * glarea.gl_render_select_debug() * if debug & DEBUG_FPS: * render_fps() # <<<<<<<<<<<<<< * if renderdata.pickxy_changed: * render_pick() */ __pyx_f_10_qt_qtwogl_render_fps(); /* "_qt_qtwogl.pyx":358 * if debug & DEBUG_DRAW: * glarea.gl_render_select_debug() * if debug & DEBUG_FPS: # <<<<<<<<<<<<<< * render_fps() * if renderdata.pickxy_changed: */ } /* "_qt_qtwogl.pyx":360 * if debug & DEBUG_FPS: * render_fps() * if renderdata.pickxy_changed: # <<<<<<<<<<<<<< * render_pick() * renderdata.pickxy_changed = False */ __pyx_t_1 = (__pyx_v_10_qt_qtwogl_renderdata.pickxy_changed != 0); if (__pyx_t_1) { /* "_qt_qtwogl.pyx":361 * render_fps() * if renderdata.pickxy_changed: * render_pick() # <<<<<<<<<<<<<< * renderdata.pickxy_changed = False * IF OFFSCREEN: #px+ */ __pyx_f_10_qt_qtwogl_render_pick(); /* "_qt_qtwogl.pyx":362 * if renderdata.pickxy_changed: * render_pick() * renderdata.pickxy_changed = False # <<<<<<<<<<<<<< * IF OFFSCREEN: #px+ * this.offscreen_image(renderdata.offscreenbuffer.toImage()) #px+ */ __pyx_v_10_qt_qtwogl_renderdata.pickxy_changed = 0; /* "_qt_qtwogl.pyx":360 * if debug & DEBUG_FPS: * render_fps() * if renderdata.pickxy_changed: # <<<<<<<<<<<<<< * render_pick() * renderdata.pickxy_changed = False */ } /* "_qt_qtwogl.pyx":339 * ##pxh> * ##pxm-FUNC PH nogil * void on_beforeRendering() nogil: # <<<<<<<<<<<<<< * if not renderdata.initialized: * glarea.gl_init() */ /* function exit code */ } /* "_qt_qtwogl.pyx":366 * this.offscreen_image(renderdata.offscreenbuffer.toImage()) #px+ * ##pxm-FUNC PHD nogil * void on_messageLogged(const QOpenGLDebugMessage &msg) nogil: # <<<<<<<<<<<<<< * printf('GL%05x: %s\n', msg.id(), msg.message().toUtf8().data()) #px/ * #printf('GL%05x: %s\n', msg.id(), msg.message()) */ void Renderer::on_messageLogged(QOpenGLDebugMessage const &__pyx_v_msg) { /* "_qt_qtwogl.pyx":367 * ##pxm-FUNC PHD nogil * void on_messageLogged(const QOpenGLDebugMessage &msg) nogil: * printf('GL%05x: %s\n', msg.id(), msg.message().toUtf8().data()) #px/ # <<<<<<<<<<<<<< * #printf('GL%05x: %s\n', msg.id(), msg.message()) * ##pxh> */ printf(((char const *)"GL%05x: %s\n"), __pyx_v_msg.id(), __pyx_v_msg.message().toUtf8().data()); /* "_qt_qtwogl.pyx":366 * this.offscreen_image(renderdata.offscreenbuffer.toImage()) #px+ * ##pxm-FUNC PHD nogil * void on_messageLogged(const QOpenGLDebugMessage &msg) nogil: # <<<<<<<<<<<<<< * printf('GL%05x: %s\n', msg.id(), msg.message().toUtf8().data()) #px/ * #printf('GL%05x: %s\n', msg.id(), msg.message()) */ /* function exit code */ } /* "_qt_qtwogl.pyx":384 * * ##pxm-FUNC P nogil * cdef void render_update_atlas() nogil: # <<<<<<<<<<<<<< * render_destroy_texture() * renderdata.texture = new QOpenGLTexture(Target2D) #px/ */ static void __pyx_f_10_qt_qtwogl_render_update_atlas(void) { /* "_qt_qtwogl.pyx":385 * ##pxm-FUNC P nogil * cdef void render_update_atlas() nogil: * render_destroy_texture() # <<<<<<<<<<<<<< * renderdata.texture = new QOpenGLTexture(Target2D) #px/ * #renderdata.texture = QOpenGLTexture(Target2D) */ __pyx_f_10_qt_qtwogl_render_destroy_texture(); /* "_qt_qtwogl.pyx":386 * cdef void render_update_atlas() nogil: * render_destroy_texture() * renderdata.texture = new QOpenGLTexture(Target2D) #px/ # <<<<<<<<<<<<<< * #renderdata.texture = QOpenGLTexture(Target2D) * renderdata.texture.setFormat(RGBA32F) */ __pyx_v_10_qt_qtwogl_renderdata.texture = new QOpenGLTexture(QOpenGLTexture::Target2D); /* "_qt_qtwogl.pyx":388 * renderdata.texture = new QOpenGLTexture(Target2D) #px/ * #renderdata.texture = QOpenGLTexture(Target2D) * renderdata.texture.setFormat(RGBA32F) # <<<<<<<<<<<<<< * renderdata.texture.setSize(renderdata.atlas_width, renderdata.atlas_height, 1) * renderdata.texture.setMinMagFilters(Linear, Linear) */ __pyx_v_10_qt_qtwogl_renderdata.texture->setFormat(QOpenGLTexture::RGBA32F); /* "_qt_qtwogl.pyx":389 * #renderdata.texture = QOpenGLTexture(Target2D) * renderdata.texture.setFormat(RGBA32F) * renderdata.texture.setSize(renderdata.atlas_width, renderdata.atlas_height, 1) # <<<<<<<<<<<<<< * renderdata.texture.setMinMagFilters(Linear, Linear) * renderdata.texture.allocateStorage() */ __pyx_v_10_qt_qtwogl_renderdata.texture->setSize(__pyx_v_10_qt_qtwogl_renderdata.atlas_width, __pyx_v_10_qt_qtwogl_renderdata.atlas_height, 1); /* "_qt_qtwogl.pyx":390 * renderdata.texture.setFormat(RGBA32F) * renderdata.texture.setSize(renderdata.atlas_width, renderdata.atlas_height, 1) * renderdata.texture.setMinMagFilters(Linear, Linear) # <<<<<<<<<<<<<< * renderdata.texture.allocateStorage() * renderdata.texture.bind() */ __pyx_v_10_qt_qtwogl_renderdata.texture->setMinMagFilters(QOpenGLTexture::Linear, QOpenGLTexture::Linear); /* "_qt_qtwogl.pyx":391 * renderdata.texture.setSize(renderdata.atlas_width, renderdata.atlas_height, 1) * renderdata.texture.setMinMagFilters(Linear, Linear) * renderdata.texture.allocateStorage() # <<<<<<<<<<<<<< * renderdata.texture.bind() * glarea.gl_set_atlas_texture(renderdata.atlas_width, renderdata.atlas_height) */ __pyx_v_10_qt_qtwogl_renderdata.texture->allocateStorage(); /* "_qt_qtwogl.pyx":392 * renderdata.texture.setMinMagFilters(Linear, Linear) * renderdata.texture.allocateStorage() * renderdata.texture.bind() # <<<<<<<<<<<<<< * glarea.gl_set_atlas_texture(renderdata.atlas_width, renderdata.atlas_height) * */ __pyx_v_10_qt_qtwogl_renderdata.texture->bind(); /* "_qt_qtwogl.pyx":393 * renderdata.texture.allocateStorage() * renderdata.texture.bind() * glarea.gl_set_atlas_texture(renderdata.atlas_width, renderdata.atlas_height) # <<<<<<<<<<<<<< * * ##pxm>IF 'qtw' == 'qtw' */ __pyx_f_11_glarea_ogl_gl_set_atlas_texture(__pyx_v_10_qt_qtwogl_renderdata.atlas_width, __pyx_v_10_qt_qtwogl_renderdata.atlas_height); /* "_qt_qtwogl.pyx":384 * * ##pxm-FUNC P nogil * cdef void render_update_atlas() nogil: # <<<<<<<<<<<<<< * render_destroy_texture() * renderdata.texture = new QOpenGLTexture(Target2D) #px/ */ /* function exit code */ } /* "_qt_qtwogl.pyx":396 * * ##pxm>IF 'qtw' == 'qtw' * def gl_delete_atlas(): # <<<<<<<<<<<<<< * if renderdata.texture is not NULL: * renderdata.texture.destroy() */ /* Python wrapper */ static PyObject *__pyx_pw_10_qt_qtwogl_3gl_delete_atlas(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/ static PyMethodDef __pyx_mdef_10_qt_qtwogl_3gl_delete_atlas = {"gl_delete_atlas", (PyCFunction)__pyx_pw_10_qt_qtwogl_3gl_delete_atlas, METH_NOARGS, 0}; static PyObject *__pyx_pw_10_qt_qtwogl_3gl_delete_atlas(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("gl_delete_atlas (wrapper)", 0); __pyx_r = __pyx_pf_10_qt_qtwogl_2gl_delete_atlas(__pyx_self); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_10_qt_qtwogl_2gl_delete_atlas(CYTHON_UNUSED PyObject *__pyx_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; __Pyx_RefNannySetupContext("gl_delete_atlas", 0); /* "_qt_qtwogl.pyx":397 * ##pxm>IF 'qtw' == 'qtw' * def gl_delete_atlas(): * if renderdata.texture is not NULL: # <<<<<<<<<<<<<< * renderdata.texture.destroy() * renderdata.texture = NULL */ __pyx_t_1 = ((__pyx_v_10_qt_qtwogl_renderdata.texture != NULL) != 0); if (__pyx_t_1) { /* "_qt_qtwogl.pyx":398 * def gl_delete_atlas(): * if renderdata.texture is not NULL: * renderdata.texture.destroy() # <<<<<<<<<<<<<< * renderdata.texture = NULL * ##pxm>IF_END */ __pyx_v_10_qt_qtwogl_renderdata.texture->destroy(); /* "_qt_qtwogl.pyx":399 * if renderdata.texture is not NULL: * renderdata.texture.destroy() * renderdata.texture = NULL # <<<<<<<<<<<<<< * ##pxm>IF_END * */ __pyx_v_10_qt_qtwogl_renderdata.texture = NULL; /* "_qt_qtwogl.pyx":397 * ##pxm>IF 'qtw' == 'qtw' * def gl_delete_atlas(): * if renderdata.texture is not NULL: # <<<<<<<<<<<<<< * renderdata.texture.destroy() * renderdata.texture = NULL */ } /* "_qt_qtwogl.pyx":396 * * ##pxm>IF 'qtw' == 'qtw' * def gl_delete_atlas(): # <<<<<<<<<<<<<< * if renderdata.texture is not NULL: * renderdata.texture.destroy() */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwogl.pyx":403 * * ##pxm-FUNC P nogil * cdef void render_fps() nogil: # <<<<<<<<<<<<<< * cdef int fps #px+ * renderdata.fps_count += 1 */ static void __pyx_f_10_qt_qtwogl_render_fps(void) { int __pyx_v_fps; int __pyx_t_1; long __pyx_t_2; qint64 __pyx_t_3; /* "_qt_qtwogl.pyx":405 * cdef void render_fps() nogil: * cdef int fps #px+ * renderdata.fps_count += 1 # <<<<<<<<<<<<<< * if not renderdata.fps_monotonic_time.hasExpired(1000): * return */ __pyx_v_10_qt_qtwogl_renderdata.fps_count = (__pyx_v_10_qt_qtwogl_renderdata.fps_count + 1); /* "_qt_qtwogl.pyx":406 * cdef int fps #px+ * renderdata.fps_count += 1 * if not renderdata.fps_monotonic_time.hasExpired(1000): # <<<<<<<<<<<<<< * return * fps = 1000 * renderdata.fps_count // renderdata.fps_monotonic_time.restart() */ __pyx_t_1 = ((!(__pyx_v_10_qt_qtwogl_renderdata.fps_monotonic_time->hasExpired(0x3E8) != 0)) != 0); if (__pyx_t_1) { /* "_qt_qtwogl.pyx":407 * renderdata.fps_count += 1 * if not renderdata.fps_monotonic_time.hasExpired(1000): * return # <<<<<<<<<<<<<< * fps = 1000 * renderdata.fps_count // renderdata.fps_monotonic_time.restart() * renderdata.fps_count = 0 */ goto __pyx_L0; /* "_qt_qtwogl.pyx":406 * cdef int fps #px+ * renderdata.fps_count += 1 * if not renderdata.fps_monotonic_time.hasExpired(1000): # <<<<<<<<<<<<<< * return * fps = 1000 * renderdata.fps_count // renderdata.fps_monotonic_time.restart() */ } /* "_qt_qtwogl.pyx":408 * if not renderdata.fps_monotonic_time.hasExpired(1000): * return * fps = 1000 * renderdata.fps_count // renderdata.fps_monotonic_time.restart() # <<<<<<<<<<<<<< * renderdata.fps_count = 0 * renderdata.renderer.debug_fps(fps) #px/ */ __pyx_t_2 = (0x3E8 * __pyx_v_10_qt_qtwogl_renderdata.fps_count); __pyx_t_3 = __pyx_v_10_qt_qtwogl_renderdata.fps_monotonic_time->restart(); if (unlikely(__pyx_t_3 == 0)) { #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero"); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif __PYX_ERR(0, 408, __pyx_L1_error) } else if (sizeof(qint64) == sizeof(long) && (!(((qint64)-1) > 0)) && unlikely(__pyx_t_3 == (qint64)-1) && unlikely(UNARY_NEG_WOULD_OVERFLOW(__pyx_t_2))) { #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif PyErr_SetString(PyExc_OverflowError, "value too large to perform division"); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif __PYX_ERR(0, 408, __pyx_L1_error) } __pyx_v_fps = __Pyx_div_qint64(__pyx_t_2, __pyx_t_3); /* "_qt_qtwogl.pyx":409 * return * fps = 1000 * renderdata.fps_count // renderdata.fps_monotonic_time.restart() * renderdata.fps_count = 0 # <<<<<<<<<<<<<< * renderdata.renderer.debug_fps(fps) #px/ * #renderdata.renderer.debug_fps.emit(fps) */ __pyx_v_10_qt_qtwogl_renderdata.fps_count = 0; /* "_qt_qtwogl.pyx":410 * fps = 1000 * renderdata.fps_count // renderdata.fps_monotonic_time.restart() * renderdata.fps_count = 0 * renderdata.renderer.debug_fps(fps) #px/ # <<<<<<<<<<<<<< * #renderdata.renderer.debug_fps.emit(fps) * */ __pyx_v_10_qt_qtwogl_renderdata.renderer->debug_fps(__pyx_v_fps); /* "_qt_qtwogl.pyx":403 * * ##pxm-FUNC P nogil * cdef void render_fps() nogil: # <<<<<<<<<<<<<< * cdef int fps #px+ * renderdata.fps_count += 1 */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_WriteUnraisable("_qt_qtwogl.render_fps", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 1); __pyx_L0:; } /* "_qt_qtwogl.pyx":414 * * ##pxm-FUNC P nogil * cdef void render_pick() nogil: # <<<<<<<<<<<<<< * if renderdata.pickbuffer is NULL: * renderdata.pickbuffer = new QOpenGLFramebufferObject(1, 1, GL_TEXTURE_2D) #px/ */ static void __pyx_f_10_qt_qtwogl_render_pick(void) { int __pyx_v_index; int __pyx_t_1; /* "_qt_qtwogl.pyx":415 * ##pxm-FUNC P nogil * cdef void render_pick() nogil: * if renderdata.pickbuffer is NULL: # <<<<<<<<<<<<<< * renderdata.pickbuffer = new QOpenGLFramebufferObject(1, 1, GL_TEXTURE_2D) #px/ * #renderdata.pickbuffer = QOpenGLFramebufferObject(1, 1, GL_TEXTURE_2D) */ __pyx_t_1 = ((__pyx_v_10_qt_qtwogl_renderdata.pickbuffer == NULL) != 0); if (__pyx_t_1) { /* "_qt_qtwogl.pyx":416 * cdef void render_pick() nogil: * if renderdata.pickbuffer is NULL: * renderdata.pickbuffer = new QOpenGLFramebufferObject(1, 1, GL_TEXTURE_2D) #px/ # <<<<<<<<<<<<<< * #renderdata.pickbuffer = QOpenGLFramebufferObject(1, 1, GL_TEXTURE_2D) * renderdata.pickbuffer.setAttachment(Depth) */ __pyx_v_10_qt_qtwogl_renderdata.pickbuffer = new QOpenGLFramebufferObject(1, 1, GL_TEXTURE_2D); /* "_qt_qtwogl.pyx":418 * renderdata.pickbuffer = new QOpenGLFramebufferObject(1, 1, GL_TEXTURE_2D) #px/ * #renderdata.pickbuffer = QOpenGLFramebufferObject(1, 1, GL_TEXTURE_2D) * renderdata.pickbuffer.setAttachment(Depth) # <<<<<<<<<<<<<< * renderdata.pickbuffer.bind() * index = glarea.gl_pick_polygons() */ __pyx_v_10_qt_qtwogl_renderdata.pickbuffer->setAttachment(QOpenGLFramebufferObject::Depth); /* "_qt_qtwogl.pyx":415 * ##pxm-FUNC P nogil * cdef void render_pick() nogil: * if renderdata.pickbuffer is NULL: # <<<<<<<<<<<<<< * renderdata.pickbuffer = new QOpenGLFramebufferObject(1, 1, GL_TEXTURE_2D) #px/ * #renderdata.pickbuffer = QOpenGLFramebufferObject(1, 1, GL_TEXTURE_2D) */ } /* "_qt_qtwogl.pyx":419 * #renderdata.pickbuffer = QOpenGLFramebufferObject(1, 1, GL_TEXTURE_2D) * renderdata.pickbuffer.setAttachment(Depth) * renderdata.pickbuffer.bind() # <<<<<<<<<<<<<< * index = glarea.gl_pick_polygons() * renderdata.pickbuffer.release() */ __pyx_v_10_qt_qtwogl_renderdata.pickbuffer->bind(); /* "_qt_qtwogl.pyx":420 * renderdata.pickbuffer.setAttachment(Depth) * renderdata.pickbuffer.bind() * index = glarea.gl_pick_polygons() # <<<<<<<<<<<<<< * renderdata.pickbuffer.release() * renderdata.renderer.picking_result(index) #px/ */ __pyx_v_index = __pyx_f_11_glarea_ogl_gl_pick_polygons(); /* "_qt_qtwogl.pyx":421 * renderdata.pickbuffer.bind() * index = glarea.gl_pick_polygons() * renderdata.pickbuffer.release() # <<<<<<<<<<<<<< * renderdata.renderer.picking_result(index) #px/ * #renderdata.renderer.picking_result.emit(index) */ __pyx_v_10_qt_qtwogl_renderdata.pickbuffer->release(); /* "_qt_qtwogl.pyx":422 * index = glarea.gl_pick_polygons() * renderdata.pickbuffer.release() * renderdata.renderer.picking_result(index) #px/ # <<<<<<<<<<<<<< * #renderdata.renderer.picking_result.emit(index) * */ __pyx_v_10_qt_qtwogl_renderdata.renderer->picking_result(__pyx_v_index); /* "_qt_qtwogl.pyx":414 * * ##pxm-FUNC P nogil * cdef void render_pick() nogil: # <<<<<<<<<<<<<< * if renderdata.pickbuffer is NULL: * renderdata.pickbuffer = new QOpenGLFramebufferObject(1, 1, GL_TEXTURE_2D) #px/ */ /* function exit code */ } /* "_qt_qtwogl.pyx":442 * * ##pxm-FUNC P nogil * cdef void render_init() nogil: # <<<<<<<<<<<<<< * renderdata.texture = NULL * renderdata.pickbuffer = NULL */ static void __pyx_f_10_qt_qtwogl_render_init(void) { int __pyx_t_1; /* "_qt_qtwogl.pyx":443 * ##pxm-FUNC P nogil * cdef void render_init() nogil: * renderdata.texture = NULL # <<<<<<<<<<<<<< * renderdata.pickbuffer = NULL * renderdata.fps_monotonic_time = NULL */ __pyx_v_10_qt_qtwogl_renderdata.texture = NULL; /* "_qt_qtwogl.pyx":444 * cdef void render_init() nogil: * renderdata.texture = NULL * renderdata.pickbuffer = NULL # <<<<<<<<<<<<<< * renderdata.fps_monotonic_time = NULL * renderdata.fps_count = 0 */ __pyx_v_10_qt_qtwogl_renderdata.pickbuffer = NULL; /* "_qt_qtwogl.pyx":445 * renderdata.texture = NULL * renderdata.pickbuffer = NULL * renderdata.fps_monotonic_time = NULL # <<<<<<<<<<<<<< * renderdata.fps_count = 0 * renderdata.atlas_width = 0 */ __pyx_v_10_qt_qtwogl_renderdata.fps_monotonic_time = NULL; /* "_qt_qtwogl.pyx":446 * renderdata.pickbuffer = NULL * renderdata.fps_monotonic_time = NULL * renderdata.fps_count = 0 # <<<<<<<<<<<<<< * renderdata.atlas_width = 0 * renderdata.atlas_height = 0 */ __pyx_v_10_qt_qtwogl_renderdata.fps_count = 0; /* "_qt_qtwogl.pyx":447 * renderdata.fps_monotonic_time = NULL * renderdata.fps_count = 0 * renderdata.atlas_width = 0 # <<<<<<<<<<<<<< * renderdata.atlas_height = 0 * */ __pyx_v_10_qt_qtwogl_renderdata.atlas_width = 0; /* "_qt_qtwogl.pyx":448 * renderdata.fps_count = 0 * renderdata.atlas_width = 0 * renderdata.atlas_height = 0 # <<<<<<<<<<<<<< * * renderdata.initialized = False */ __pyx_v_10_qt_qtwogl_renderdata.atlas_height = 0; /* "_qt_qtwogl.pyx":450 * renderdata.atlas_height = 0 * * renderdata.initialized = False # <<<<<<<<<<<<<< * renderdata.atlas_changed = False * renderdata.pickxy_changed = False */ __pyx_v_10_qt_qtwogl_renderdata.initialized = 0; /* "_qt_qtwogl.pyx":451 * * renderdata.initialized = False * renderdata.atlas_changed = False # <<<<<<<<<<<<<< * renderdata.pickxy_changed = False * renderdata.renderer = new Renderer() #px/ */ __pyx_v_10_qt_qtwogl_renderdata.atlas_changed = 0; /* "_qt_qtwogl.pyx":452 * renderdata.initialized = False * renderdata.atlas_changed = False * renderdata.pickxy_changed = False # <<<<<<<<<<<<<< * renderdata.renderer = new Renderer() #px/ * #renderdata.renderer = Renderer() */ __pyx_v_10_qt_qtwogl_renderdata.pickxy_changed = 0; /* "_qt_qtwogl.pyx":453 * renderdata.atlas_changed = False * renderdata.pickxy_changed = False * renderdata.renderer = new Renderer() #px/ # <<<<<<<<<<<<<< * #renderdata.renderer = Renderer() * renderdata.gldebuglogger = NULL */ __pyx_v_10_qt_qtwogl_renderdata.renderer = new Renderer(); /* "_qt_qtwogl.pyx":455 * renderdata.renderer = new Renderer() #px/ * #renderdata.renderer = Renderer() * renderdata.gldebuglogger = NULL # <<<<<<<<<<<<<< * * glarea.sync_set_fixedshaders() */ __pyx_v_10_qt_qtwogl_renderdata.gldebuglogger = NULL; /* "_qt_qtwogl.pyx":457 * renderdata.gldebuglogger = NULL * * glarea.sync_set_fixedshaders() # <<<<<<<<<<<<<< * if debug & DEBUG_GLDEBUG: * render_init_gldebuglogger() */ __pyx_f_11_glarea_ogl_sync_set_fixedshaders(); /* "_qt_qtwogl.pyx":458 * * glarea.sync_set_fixedshaders() * if debug & DEBUG_GLDEBUG: # <<<<<<<<<<<<<< * render_init_gldebuglogger() * if debug & DEBUG_FPS: */ __pyx_t_1 = ((__pyx_v_10_qt_qtwogl_debug & __pyx_e_10_qt_qtwogl_DEBUG_GLDEBUG) != 0); if (__pyx_t_1) { /* "_qt_qtwogl.pyx":459 * glarea.sync_set_fixedshaders() * if debug & DEBUG_GLDEBUG: * render_init_gldebuglogger() # <<<<<<<<<<<<<< * if debug & DEBUG_FPS: * renderdata.fps_monotonic_time = new QElapsedTimer() #px/ */ __pyx_f_10_qt_qtwogl_render_init_gldebuglogger(); /* "_qt_qtwogl.pyx":458 * * glarea.sync_set_fixedshaders() * if debug & DEBUG_GLDEBUG: # <<<<<<<<<<<<<< * render_init_gldebuglogger() * if debug & DEBUG_FPS: */ } /* "_qt_qtwogl.pyx":460 * if debug & DEBUG_GLDEBUG: * render_init_gldebuglogger() * if debug & DEBUG_FPS: # <<<<<<<<<<<<<< * renderdata.fps_monotonic_time = new QElapsedTimer() #px/ * #renderdata.fps_monotonic_time = QElapsedTimer() */ __pyx_t_1 = ((__pyx_v_10_qt_qtwogl_debug & __pyx_e_10_qt_qtwogl_DEBUG_FPS) != 0); if (__pyx_t_1) { /* "_qt_qtwogl.pyx":461 * render_init_gldebuglogger() * if debug & DEBUG_FPS: * renderdata.fps_monotonic_time = new QElapsedTimer() #px/ # <<<<<<<<<<<<<< * #renderdata.fps_monotonic_time = QElapsedTimer() * renderdata.fps_count = 0 */ __pyx_v_10_qt_qtwogl_renderdata.fps_monotonic_time = new QElapsedTimer(); /* "_qt_qtwogl.pyx":463 * renderdata.fps_monotonic_time = new QElapsedTimer() #px/ * #renderdata.fps_monotonic_time = QElapsedTimer() * renderdata.fps_count = 0 # <<<<<<<<<<<<<< * renderdata.fps_monotonic_time.start() * if debug & DEBUG_QML: */ __pyx_v_10_qt_qtwogl_renderdata.fps_count = 0; /* "_qt_qtwogl.pyx":464 * #renderdata.fps_monotonic_time = QElapsedTimer() * renderdata.fps_count = 0 * renderdata.fps_monotonic_time.start() # <<<<<<<<<<<<<< * if debug & DEBUG_QML: * dump_info('Renderer', renderdata.renderer) #px/ */ __pyx_v_10_qt_qtwogl_renderdata.fps_monotonic_time->start(); /* "_qt_qtwogl.pyx":460 * if debug & DEBUG_GLDEBUG: * render_init_gldebuglogger() * if debug & DEBUG_FPS: # <<<<<<<<<<<<<< * renderdata.fps_monotonic_time = new QElapsedTimer() #px/ * #renderdata.fps_monotonic_time = QElapsedTimer() */ } /* "_qt_qtwogl.pyx":465 * renderdata.fps_count = 0 * renderdata.fps_monotonic_time.start() * if debug & DEBUG_QML: # <<<<<<<<<<<<<< * dump_info('Renderer', renderdata.renderer) #px/ * #dump_info('Renderer', renderdata.renderer) */ __pyx_t_1 = ((__pyx_v_10_qt_qtwogl_debug & __pyx_e_10_qt_qtwogl_DEBUG_QML) != 0); if (__pyx_t_1) { /* "_qt_qtwogl.pyx":466 * renderdata.fps_monotonic_time.start() * if debug & DEBUG_QML: * dump_info('Renderer', renderdata.renderer) #px/ # <<<<<<<<<<<<<< * #dump_info('Renderer', renderdata.renderer) * if debug & DEBUG_MSGGL: */ __pyx_f_10_qt_qtwogl_dump_info(((char const *)"Renderer"), ((QObject *)__pyx_v_10_qt_qtwogl_renderdata.renderer)); /* "_qt_qtwogl.pyx":465 * renderdata.fps_count = 0 * renderdata.fps_monotonic_time.start() * if debug & DEBUG_QML: # <<<<<<<<<<<<<< * dump_info('Renderer', renderdata.renderer) #px/ * #dump_info('Renderer', renderdata.renderer) */ } /* "_qt_qtwogl.pyx":468 * dump_info('Renderer', renderdata.renderer) #px/ * #dump_info('Renderer', renderdata.renderer) * if debug & DEBUG_MSGGL: # <<<<<<<<<<<<<< * print_surface_info() * */ __pyx_t_1 = ((__pyx_v_10_qt_qtwogl_debug & __pyx_e_10_qt_qtwogl_DEBUG_MSGGL) != 0); if (__pyx_t_1) { /* "_qt_qtwogl.pyx":469 * #dump_info('Renderer', renderdata.renderer) * if debug & DEBUG_MSGGL: * print_surface_info() # <<<<<<<<<<<<<< * * ##pxm-FUNC P nogil */ __pyx_f_10_qt_qtwogl_print_surface_info(); /* "_qt_qtwogl.pyx":468 * dump_info('Renderer', renderdata.renderer) #px/ * #dump_info('Renderer', renderdata.renderer) * if debug & DEBUG_MSGGL: # <<<<<<<<<<<<<< * print_surface_info() * */ } /* "_qt_qtwogl.pyx":442 * * ##pxm-FUNC P nogil * cdef void render_init() nogil: # <<<<<<<<<<<<<< * renderdata.texture = NULL * renderdata.pickbuffer = NULL */ /* function exit code */ } /* "_qt_qtwogl.pyx":472 * * ##pxm-FUNC P nogil * cdef void render_destroy_texture() nogil: # <<<<<<<<<<<<<< * if renderdata.texture is not NULL: * renderdata.texture.destroy() */ static void __pyx_f_10_qt_qtwogl_render_destroy_texture(void) { int __pyx_t_1; /* "_qt_qtwogl.pyx":473 * ##pxm-FUNC P nogil * cdef void render_destroy_texture() nogil: * if renderdata.texture is not NULL: # <<<<<<<<<<<<<< * renderdata.texture.destroy() * del renderdata.texture */ __pyx_t_1 = ((__pyx_v_10_qt_qtwogl_renderdata.texture != NULL) != 0); if (__pyx_t_1) { /* "_qt_qtwogl.pyx":474 * cdef void render_destroy_texture() nogil: * if renderdata.texture is not NULL: * renderdata.texture.destroy() # <<<<<<<<<<<<<< * del renderdata.texture * renderdata.texture = NULL */ __pyx_v_10_qt_qtwogl_renderdata.texture->destroy(); /* "_qt_qtwogl.pyx":475 * if renderdata.texture is not NULL: * renderdata.texture.destroy() * del renderdata.texture # <<<<<<<<<<<<<< * renderdata.texture = NULL * */ delete __pyx_v_10_qt_qtwogl_renderdata.texture; /* "_qt_qtwogl.pyx":476 * renderdata.texture.destroy() * del renderdata.texture * renderdata.texture = NULL # <<<<<<<<<<<<<< * * ##pxm-FUNC P nogil */ __pyx_v_10_qt_qtwogl_renderdata.texture = NULL; /* "_qt_qtwogl.pyx":473 * ##pxm-FUNC P nogil * cdef void render_destroy_texture() nogil: * if renderdata.texture is not NULL: # <<<<<<<<<<<<<< * renderdata.texture.destroy() * del renderdata.texture */ } /* "_qt_qtwogl.pyx":472 * * ##pxm-FUNC P nogil * cdef void render_destroy_texture() nogil: # <<<<<<<<<<<<<< * if renderdata.texture is not NULL: * renderdata.texture.destroy() */ /* function exit code */ } /* "_qt_qtwogl.pyx":479 * * ##pxm-FUNC P nogil * cdef void render_destroy() nogil: # <<<<<<<<<<<<<< * render_destroy_texture() * if renderdata.pickbuffer is not NULL: */ static void __pyx_f_10_qt_qtwogl_render_destroy(void) { int __pyx_t_1; /* "_qt_qtwogl.pyx":480 * ##pxm-FUNC P nogil * cdef void render_destroy() nogil: * render_destroy_texture() # <<<<<<<<<<<<<< * if renderdata.pickbuffer is not NULL: * del renderdata.pickbuffer */ __pyx_f_10_qt_qtwogl_render_destroy_texture(); /* "_qt_qtwogl.pyx":481 * cdef void render_destroy() nogil: * render_destroy_texture() * if renderdata.pickbuffer is not NULL: # <<<<<<<<<<<<<< * del renderdata.pickbuffer * renderdata.pickbuffer = NULL */ __pyx_t_1 = ((__pyx_v_10_qt_qtwogl_renderdata.pickbuffer != NULL) != 0); if (__pyx_t_1) { /* "_qt_qtwogl.pyx":482 * render_destroy_texture() * if renderdata.pickbuffer is not NULL: * del renderdata.pickbuffer # <<<<<<<<<<<<<< * renderdata.pickbuffer = NULL * if renderdata.fps_monotonic_time is not NULL: */ delete __pyx_v_10_qt_qtwogl_renderdata.pickbuffer; /* "_qt_qtwogl.pyx":483 * if renderdata.pickbuffer is not NULL: * del renderdata.pickbuffer * renderdata.pickbuffer = NULL # <<<<<<<<<<<<<< * if renderdata.fps_monotonic_time is not NULL: * del renderdata.fps_monotonic_time */ __pyx_v_10_qt_qtwogl_renderdata.pickbuffer = NULL; /* "_qt_qtwogl.pyx":481 * cdef void render_destroy() nogil: * render_destroy_texture() * if renderdata.pickbuffer is not NULL: # <<<<<<<<<<<<<< * del renderdata.pickbuffer * renderdata.pickbuffer = NULL */ } /* "_qt_qtwogl.pyx":484 * del renderdata.pickbuffer * renderdata.pickbuffer = NULL * if renderdata.fps_monotonic_time is not NULL: # <<<<<<<<<<<<<< * del renderdata.fps_monotonic_time * renderdata.fps_monotonic_time = NULL */ __pyx_t_1 = ((__pyx_v_10_qt_qtwogl_renderdata.fps_monotonic_time != NULL) != 0); if (__pyx_t_1) { /* "_qt_qtwogl.pyx":485 * renderdata.pickbuffer = NULL * if renderdata.fps_monotonic_time is not NULL: * del renderdata.fps_monotonic_time # <<<<<<<<<<<<<< * renderdata.fps_monotonic_time = NULL * if renderdata.gldebuglogger is not NULL: */ delete __pyx_v_10_qt_qtwogl_renderdata.fps_monotonic_time; /* "_qt_qtwogl.pyx":486 * if renderdata.fps_monotonic_time is not NULL: * del renderdata.fps_monotonic_time * renderdata.fps_monotonic_time = NULL # <<<<<<<<<<<<<< * if renderdata.gldebuglogger is not NULL: * del renderdata.gldebuglogger */ __pyx_v_10_qt_qtwogl_renderdata.fps_monotonic_time = NULL; /* "_qt_qtwogl.pyx":484 * del renderdata.pickbuffer * renderdata.pickbuffer = NULL * if renderdata.fps_monotonic_time is not NULL: # <<<<<<<<<<<<<< * del renderdata.fps_monotonic_time * renderdata.fps_monotonic_time = NULL */ } /* "_qt_qtwogl.pyx":487 * del renderdata.fps_monotonic_time * renderdata.fps_monotonic_time = NULL * if renderdata.gldebuglogger is not NULL: # <<<<<<<<<<<<<< * del renderdata.gldebuglogger * renderdata.gldebuglogger = NULL */ __pyx_t_1 = ((__pyx_v_10_qt_qtwogl_renderdata.gldebuglogger != NULL) != 0); if (__pyx_t_1) { /* "_qt_qtwogl.pyx":488 * renderdata.fps_monotonic_time = NULL * if renderdata.gldebuglogger is not NULL: * del renderdata.gldebuglogger # <<<<<<<<<<<<<< * renderdata.gldebuglogger = NULL * */ delete __pyx_v_10_qt_qtwogl_renderdata.gldebuglogger; /* "_qt_qtwogl.pyx":489 * if renderdata.gldebuglogger is not NULL: * del renderdata.gldebuglogger * renderdata.gldebuglogger = NULL # <<<<<<<<<<<<<< * * ##pxm-FUNC P nogil */ __pyx_v_10_qt_qtwogl_renderdata.gldebuglogger = NULL; /* "_qt_qtwogl.pyx":487 * del renderdata.fps_monotonic_time * renderdata.fps_monotonic_time = NULL * if renderdata.gldebuglogger is not NULL: # <<<<<<<<<<<<<< * del renderdata.gldebuglogger * renderdata.gldebuglogger = NULL */ } /* "_qt_qtwogl.pyx":479 * * ##pxm-FUNC P nogil * cdef void render_destroy() nogil: # <<<<<<<<<<<<<< * render_destroy_texture() * if renderdata.pickbuffer is not NULL: */ /* function exit code */ } /* "_qt_qtwogl.pyx":492 * * ##pxm-FUNC P nogil * cdef void render_init_gldebuglogger() nogil: # <<<<<<<<<<<<<< * cdef OpenGLDebugMessageList messages #px+ * cdef QOpenGLDebugMessage message #px+ */ static void __pyx_f_10_qt_qtwogl_render_init_gldebuglogger(void) { QList __pyx_v_messages; QOpenGLDebugMessage __pyx_v_message; int __pyx_v_i; int __pyx_t_1; int __pyx_t_2; int __pyx_t_3; /* "_qt_qtwogl.pyx":496 * cdef QOpenGLDebugMessage message #px+ * cdef int i #px+ * renderdata.gldebuglogger = new QOpenGLDebugLogger(renderdata.renderer) #px/ # <<<<<<<<<<<<<< * #renderdata.gldebuglogger = QOpenGLDebugLogger(renderdata.renderer) * if not renderdata.gldebuglogger.initialize(): */ __pyx_v_10_qt_qtwogl_renderdata.gldebuglogger = new QOpenGLDebugLogger(((QObject *)__pyx_v_10_qt_qtwogl_renderdata.renderer)); /* "_qt_qtwogl.pyx":498 * renderdata.gldebuglogger = new QOpenGLDebugLogger(renderdata.renderer) #px/ * #renderdata.gldebuglogger = QOpenGLDebugLogger(renderdata.renderer) * if not renderdata.gldebuglogger.initialize(): # <<<<<<<<<<<<<< * puts('QOpenGLDebugLogger not successfully initialized') * return */ __pyx_t_1 = ((!(__pyx_v_10_qt_qtwogl_renderdata.gldebuglogger->initialize() != 0)) != 0); if (__pyx_t_1) { /* "_qt_qtwogl.pyx":499 * #renderdata.gldebuglogger = QOpenGLDebugLogger(renderdata.renderer) * if not renderdata.gldebuglogger.initialize(): * puts('QOpenGLDebugLogger not successfully initialized') # <<<<<<<<<<<<<< * return * renderdata.gldebuglogger.enableMessages() */ puts(((char const *)"QOpenGLDebugLogger not successfully initialized")); /* "_qt_qtwogl.pyx":500 * if not renderdata.gldebuglogger.initialize(): * puts('QOpenGLDebugLogger not successfully initialized') * return # <<<<<<<<<<<<<< * renderdata.gldebuglogger.enableMessages() * renderdata.renderer.connect_gldebuglogger(renderdata.gldebuglogger) */ goto __pyx_L0; /* "_qt_qtwogl.pyx":498 * renderdata.gldebuglogger = new QOpenGLDebugLogger(renderdata.renderer) #px/ * #renderdata.gldebuglogger = QOpenGLDebugLogger(renderdata.renderer) * if not renderdata.gldebuglogger.initialize(): # <<<<<<<<<<<<<< * puts('QOpenGLDebugLogger not successfully initialized') * return */ } /* "_qt_qtwogl.pyx":501 * puts('QOpenGLDebugLogger not successfully initialized') * return * renderdata.gldebuglogger.enableMessages() # <<<<<<<<<<<<<< * renderdata.renderer.connect_gldebuglogger(renderdata.gldebuglogger) * renderdata.gldebuglogger.startLogging(SynchronousLogging) */ __pyx_v_10_qt_qtwogl_renderdata.gldebuglogger->enableMessages(); /* "_qt_qtwogl.pyx":502 * return * renderdata.gldebuglogger.enableMessages() * renderdata.renderer.connect_gldebuglogger(renderdata.gldebuglogger) # <<<<<<<<<<<<<< * renderdata.gldebuglogger.startLogging(SynchronousLogging) * messages = renderdata.gldebuglogger.loggedMessages() */ __pyx_v_10_qt_qtwogl_renderdata.renderer->connect_gldebuglogger(__pyx_v_10_qt_qtwogl_renderdata.gldebuglogger); /* "_qt_qtwogl.pyx":503 * renderdata.gldebuglogger.enableMessages() * renderdata.renderer.connect_gldebuglogger(renderdata.gldebuglogger) * renderdata.gldebuglogger.startLogging(SynchronousLogging) # <<<<<<<<<<<<<< * messages = renderdata.gldebuglogger.loggedMessages() * printf('QOpenGLDebugLogger successfully initialized and started (%d initial messages)\n', messages.size()) #px/ */ __pyx_v_10_qt_qtwogl_renderdata.gldebuglogger->startLogging(QOpenGLDebugLogger::SynchronousLogging); /* "_qt_qtwogl.pyx":504 * renderdata.renderer.connect_gldebuglogger(renderdata.gldebuglogger) * renderdata.gldebuglogger.startLogging(SynchronousLogging) * messages = renderdata.gldebuglogger.loggedMessages() # <<<<<<<<<<<<<< * printf('QOpenGLDebugLogger successfully initialized and started (%d initial messages)\n', messages.size()) #px/ * #printf('QOpenGLDebugLogger successfully initialized and started (%d initial messages)\n', len(messages)) */ __pyx_v_messages = __pyx_v_10_qt_qtwogl_renderdata.gldebuglogger->loggedMessages(); /* "_qt_qtwogl.pyx":505 * renderdata.gldebuglogger.startLogging(SynchronousLogging) * messages = renderdata.gldebuglogger.loggedMessages() * printf('QOpenGLDebugLogger successfully initialized and started (%d initial messages)\n', messages.size()) #px/ # <<<<<<<<<<<<<< * #printf('QOpenGLDebugLogger successfully initialized and started (%d initial messages)\n', len(messages)) * for i in range(messages.size()): #px/ */ printf(((char const *)"QOpenGLDebugLogger successfully initialized and started (%d initial messages)\n"), __pyx_v_messages.size()); /* "_qt_qtwogl.pyx":507 * printf('QOpenGLDebugLogger successfully initialized and started (%d initial messages)\n', messages.size()) #px/ * #printf('QOpenGLDebugLogger successfully initialized and started (%d initial messages)\n', len(messages)) * for i in range(messages.size()): #px/ # <<<<<<<<<<<<<< * #for message in messages: * message = messages.at(i) #px+ */ __pyx_t_2 = __pyx_v_messages.size(); for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) { __pyx_v_i = __pyx_t_3; /* "_qt_qtwogl.pyx":509 * for i in range(messages.size()): #px/ * #for message in messages: * message = messages.at(i) #px+ # <<<<<<<<<<<<<< * renderdata.renderer.on_messageLogged(message) * */ __pyx_v_message = __pyx_v_messages.at(__pyx_v_i); /* "_qt_qtwogl.pyx":510 * #for message in messages: * message = messages.at(i) #px+ * renderdata.renderer.on_messageLogged(message) # <<<<<<<<<<<<<< * * ##pxm-FUNC P nogil */ __pyx_v_10_qt_qtwogl_renderdata.renderer->on_messageLogged(__pyx_v_message); } /* "_qt_qtwogl.pyx":492 * * ##pxm-FUNC P nogil * cdef void render_init_gldebuglogger() nogil: # <<<<<<<<<<<<<< * cdef OpenGLDebugMessageList messages #px+ * cdef QOpenGLDebugMessage message #px+ */ /* function exit code */ __pyx_L0:; } /* "_qt_qtwogl.pyx":513 * * ##pxm-FUNC P nogil * cdef void _pfmt(char *name, int f, int rf, int df) nogil: # <<<<<<<<<<<<<< * printf(' %s: %d', name, f) * if f != rf: printf(' (%d)', rf) */ static void __pyx_f_10_qt_qtwogl__pfmt(char *__pyx_v_name, int __pyx_v_f, int __pyx_v_rf, int __pyx_v_df) { int __pyx_t_1; /* "_qt_qtwogl.pyx":514 * ##pxm-FUNC P nogil * cdef void _pfmt(char *name, int f, int rf, int df) nogil: * printf(' %s: %d', name, f) # <<<<<<<<<<<<<< * if f != rf: printf(' (%d)', rf) * if rf != df: printf(' [%d]', df) */ printf(((char const *)" %s: %d"), __pyx_v_name, __pyx_v_f); /* "_qt_qtwogl.pyx":515 * cdef void _pfmt(char *name, int f, int rf, int df) nogil: * printf(' %s: %d', name, f) * if f != rf: printf(' (%d)', rf) # <<<<<<<<<<<<<< * if rf != df: printf(' [%d]', df) * puts('') */ __pyx_t_1 = ((__pyx_v_f != __pyx_v_rf) != 0); if (__pyx_t_1) { printf(((char const *)" (%d)"), __pyx_v_rf); } /* "_qt_qtwogl.pyx":516 * printf(' %s: %d', name, f) * if f != rf: printf(' (%d)', rf) * if rf != df: printf(' [%d]', df) # <<<<<<<<<<<<<< * puts('') * ##pxm-FUNC P nogil */ __pyx_t_1 = ((__pyx_v_rf != __pyx_v_df) != 0); if (__pyx_t_1) { printf(((char const *)" [%d]"), __pyx_v_df); } /* "_qt_qtwogl.pyx":517 * if f != rf: printf(' (%d)', rf) * if rf != df: printf(' [%d]', df) * puts('') # <<<<<<<<<<<<<< * ##pxm-FUNC P nogil * cdef void _pfmt2(char *name, int f1, int f2, int rf1, int rf2, int df1, int df2) nogil: */ puts(((char const *)"")); /* "_qt_qtwogl.pyx":513 * * ##pxm-FUNC P nogil * cdef void _pfmt(char *name, int f, int rf, int df) nogil: # <<<<<<<<<<<<<< * printf(' %s: %d', name, f) * if f != rf: printf(' (%d)', rf) */ /* function exit code */ } /* "_qt_qtwogl.pyx":519 * puts('') * ##pxm-FUNC P nogil * cdef void _pfmt2(char *name, int f1, int f2, int rf1, int rf2, int df1, int df2) nogil: # <<<<<<<<<<<<<< * printf(' %s: %d.%d', name, f1, f2) * if f1 != rf1 or f2 != rf2: printf(' (%d.%d)', rf1, rf2) */ static void __pyx_f_10_qt_qtwogl__pfmt2(char *__pyx_v_name, int __pyx_v_f1, int __pyx_v_f2, int __pyx_v_rf1, int __pyx_v_rf2, int __pyx_v_df1, int __pyx_v_df2) { int __pyx_t_1; int __pyx_t_2; /* "_qt_qtwogl.pyx":520 * ##pxm-FUNC P nogil * cdef void _pfmt2(char *name, int f1, int f2, int rf1, int rf2, int df1, int df2) nogil: * printf(' %s: %d.%d', name, f1, f2) # <<<<<<<<<<<<<< * if f1 != rf1 or f2 != rf2: printf(' (%d.%d)', rf1, rf2) * if rf1 != df1 or rf2 != df2: printf(' [%d.%d]', df1, df2) */ printf(((char const *)" %s: %d.%d"), __pyx_v_name, __pyx_v_f1, __pyx_v_f2); /* "_qt_qtwogl.pyx":521 * cdef void _pfmt2(char *name, int f1, int f2, int rf1, int rf2, int df1, int df2) nogil: * printf(' %s: %d.%d', name, f1, f2) * if f1 != rf1 or f2 != rf2: printf(' (%d.%d)', rf1, rf2) # <<<<<<<<<<<<<< * if rf1 != df1 or rf2 != df2: printf(' [%d.%d]', df1, df2) * puts('') */ __pyx_t_2 = ((__pyx_v_f1 != __pyx_v_rf1) != 0); if (!__pyx_t_2) { } else { __pyx_t_1 = __pyx_t_2; goto __pyx_L4_bool_binop_done; } __pyx_t_2 = ((__pyx_v_f2 != __pyx_v_rf2) != 0); __pyx_t_1 = __pyx_t_2; __pyx_L4_bool_binop_done:; if (__pyx_t_1) { printf(((char const *)" (%d.%d)"), __pyx_v_rf1, __pyx_v_rf2); } /* "_qt_qtwogl.pyx":522 * printf(' %s: %d.%d', name, f1, f2) * if f1 != rf1 or f2 != rf2: printf(' (%d.%d)', rf1, rf2) * if rf1 != df1 or rf2 != df2: printf(' [%d.%d]', df1, df2) # <<<<<<<<<<<<<< * puts('') * */ __pyx_t_2 = ((__pyx_v_rf1 != __pyx_v_df1) != 0); if (!__pyx_t_2) { } else { __pyx_t_1 = __pyx_t_2; goto __pyx_L7_bool_binop_done; } __pyx_t_2 = ((__pyx_v_rf2 != __pyx_v_df2) != 0); __pyx_t_1 = __pyx_t_2; __pyx_L7_bool_binop_done:; if (__pyx_t_1) { printf(((char const *)" [%d.%d]"), __pyx_v_df1, __pyx_v_df2); } /* "_qt_qtwogl.pyx":523 * if f1 != rf1 or f2 != rf2: printf(' (%d.%d)', rf1, rf2) * if rf1 != df1 or rf2 != df2: printf(' [%d.%d]', df1, df2) * puts('') # <<<<<<<<<<<<<< * * ##pxm-FUNC P nogil */ puts(((char const *)"")); /* "_qt_qtwogl.pyx":519 * puts('') * ##pxm-FUNC P nogil * cdef void _pfmt2(char *name, int f1, int f2, int rf1, int rf2, int df1, int df2) nogil: # <<<<<<<<<<<<<< * printf(' %s: %d.%d', name, f1, f2) * if f1 != rf1 or f2 != rf2: printf(' (%d.%d)', rf1, rf2) */ /* function exit code */ } /* "_qt_qtwogl.pyx":526 * * ##pxm-FUNC P nogil * cdef void print_surface_info() nogil: # <<<<<<<<<<<<<< * cdef QOpenGLContext *glcontext #px+ * glcontext = currentContext() */ static void __pyx_f_10_qt_qtwogl_print_surface_info(void) { QOpenGLContext *__pyx_v_glcontext; QSurfaceFormat __pyx_v_glformat; QSurfaceFormat __pyx_v_glrformat; QSurfaceFormat __pyx_v_gldformat; int __pyx_v_i; QOpenGLFunctions *__pyx_v_glFuncs; int __pyx_v_features; QSurfaceFormat __pyx_t_1; int __pyx_t_2; /* "_qt_qtwogl.pyx":528 * cdef void print_surface_info() nogil: * cdef QOpenGLContext *glcontext #px+ * glcontext = currentContext() # <<<<<<<<<<<<<< * glformat = glcontext.format() * glrformat = defaultFormat() # requested format */ __pyx_v_glcontext = QOpenGLContext::currentContext(); /* "_qt_qtwogl.pyx":529 * cdef QOpenGLContext *glcontext #px+ * glcontext = currentContext() * glformat = glcontext.format() # <<<<<<<<<<<<<< * glrformat = defaultFormat() # requested format * gldformat = uidata.default_format */ __pyx_v_glformat = __pyx_v_glcontext->format(); /* "_qt_qtwogl.pyx":530 * glcontext = currentContext() * glformat = glcontext.format() * glrformat = defaultFormat() # requested format # <<<<<<<<<<<<<< * gldformat = uidata.default_format * puts('Surface format (requested (), default []):') */ __pyx_v_glrformat = QSurfaceFormat::defaultFormat(); /* "_qt_qtwogl.pyx":531 * glformat = glcontext.format() * glrformat = defaultFormat() # requested format * gldformat = uidata.default_format # <<<<<<<<<<<<<< * puts('Surface format (requested (), default []):') * _pfmt('red', glformat.redBufferSize(), glrformat.redBufferSize(), gldformat.redBufferSize()) */ __pyx_t_1 = __pyx_v_10_qt_qtwogl_uidata.default_format; __pyx_v_gldformat = __pyx_t_1; /* "_qt_qtwogl.pyx":532 * glrformat = defaultFormat() # requested format * gldformat = uidata.default_format * puts('Surface format (requested (), default []):') # <<<<<<<<<<<<<< * _pfmt('red', glformat.redBufferSize(), glrformat.redBufferSize(), gldformat.redBufferSize()) * _pfmt('green', glformat.greenBufferSize(), glrformat.greenBufferSize(), gldformat.greenBufferSize()) */ puts(((char const *)"Surface format (requested (), default []):")); /* "_qt_qtwogl.pyx":533 * gldformat = uidata.default_format * puts('Surface format (requested (), default []):') * _pfmt('red', glformat.redBufferSize(), glrformat.redBufferSize(), gldformat.redBufferSize()) # <<<<<<<<<<<<<< * _pfmt('green', glformat.greenBufferSize(), glrformat.greenBufferSize(), gldformat.greenBufferSize()) * _pfmt('blue', glformat.blueBufferSize(), glrformat.blueBufferSize(), gldformat.blueBufferSize()) */ __pyx_f_10_qt_qtwogl__pfmt(((char *)"red"), __pyx_v_glformat.redBufferSize(), __pyx_v_glrformat.redBufferSize(), __pyx_v_gldformat.redBufferSize()); /* "_qt_qtwogl.pyx":534 * puts('Surface format (requested (), default []):') * _pfmt('red', glformat.redBufferSize(), glrformat.redBufferSize(), gldformat.redBufferSize()) * _pfmt('green', glformat.greenBufferSize(), glrformat.greenBufferSize(), gldformat.greenBufferSize()) # <<<<<<<<<<<<<< * _pfmt('blue', glformat.blueBufferSize(), glrformat.blueBufferSize(), gldformat.blueBufferSize()) * _pfmt('alpha', glformat.alphaBufferSize(), glrformat.alphaBufferSize(), gldformat.alphaBufferSize()) */ __pyx_f_10_qt_qtwogl__pfmt(((char *)"green"), __pyx_v_glformat.greenBufferSize(), __pyx_v_glrformat.greenBufferSize(), __pyx_v_gldformat.greenBufferSize()); /* "_qt_qtwogl.pyx":535 * _pfmt('red', glformat.redBufferSize(), glrformat.redBufferSize(), gldformat.redBufferSize()) * _pfmt('green', glformat.greenBufferSize(), glrformat.greenBufferSize(), gldformat.greenBufferSize()) * _pfmt('blue', glformat.blueBufferSize(), glrformat.blueBufferSize(), gldformat.blueBufferSize()) # <<<<<<<<<<<<<< * _pfmt('alpha', glformat.alphaBufferSize(), glrformat.alphaBufferSize(), gldformat.alphaBufferSize()) * _pfmt('depth', glformat.depthBufferSize(), glrformat.depthBufferSize(), gldformat.depthBufferSize()) */ __pyx_f_10_qt_qtwogl__pfmt(((char *)"blue"), __pyx_v_glformat.blueBufferSize(), __pyx_v_glrformat.blueBufferSize(), __pyx_v_gldformat.blueBufferSize()); /* "_qt_qtwogl.pyx":536 * _pfmt('green', glformat.greenBufferSize(), glrformat.greenBufferSize(), gldformat.greenBufferSize()) * _pfmt('blue', glformat.blueBufferSize(), glrformat.blueBufferSize(), gldformat.blueBufferSize()) * _pfmt('alpha', glformat.alphaBufferSize(), glrformat.alphaBufferSize(), gldformat.alphaBufferSize()) # <<<<<<<<<<<<<< * _pfmt('depth', glformat.depthBufferSize(), glrformat.depthBufferSize(), gldformat.depthBufferSize()) * _pfmt('options', glformat.options(), glrformat.options(), gldformat.options()) */ __pyx_f_10_qt_qtwogl__pfmt(((char *)"alpha"), __pyx_v_glformat.alphaBufferSize(), __pyx_v_glrformat.alphaBufferSize(), __pyx_v_gldformat.alphaBufferSize()); /* "_qt_qtwogl.pyx":537 * _pfmt('blue', glformat.blueBufferSize(), glrformat.blueBufferSize(), gldformat.blueBufferSize()) * _pfmt('alpha', glformat.alphaBufferSize(), glrformat.alphaBufferSize(), gldformat.alphaBufferSize()) * _pfmt('depth', glformat.depthBufferSize(), glrformat.depthBufferSize(), gldformat.depthBufferSize()) # <<<<<<<<<<<<<< * _pfmt('options', glformat.options(), glrformat.options(), gldformat.options()) * _pfmt('profile', glformat.profile(), glrformat.profile(), gldformat.profile()) */ __pyx_f_10_qt_qtwogl__pfmt(((char *)"depth"), __pyx_v_glformat.depthBufferSize(), __pyx_v_glrformat.depthBufferSize(), __pyx_v_gldformat.depthBufferSize()); /* "_qt_qtwogl.pyx":538 * _pfmt('alpha', glformat.alphaBufferSize(), glrformat.alphaBufferSize(), gldformat.alphaBufferSize()) * _pfmt('depth', glformat.depthBufferSize(), glrformat.depthBufferSize(), gldformat.depthBufferSize()) * _pfmt('options', glformat.options(), glrformat.options(), gldformat.options()) # <<<<<<<<<<<<<< * _pfmt('profile', glformat.profile(), glrformat.profile(), gldformat.profile()) * _pfmt('renderableType', glformat.renderableType(), glrformat.renderableType(), gldformat.renderableType()) */ __pyx_f_10_qt_qtwogl__pfmt(((char *)"options"), __pyx_v_glformat.options(), __pyx_v_glrformat.options(), __pyx_v_gldformat.options()); /* "_qt_qtwogl.pyx":539 * _pfmt('depth', glformat.depthBufferSize(), glrformat.depthBufferSize(), gldformat.depthBufferSize()) * _pfmt('options', glformat.options(), glrformat.options(), gldformat.options()) * _pfmt('profile', glformat.profile(), glrformat.profile(), gldformat.profile()) # <<<<<<<<<<<<<< * _pfmt('renderableType', glformat.renderableType(), glrformat.renderableType(), gldformat.renderableType()) * _pfmt('samples', glformat.samples(), glrformat.samples(), gldformat.samples()) */ __pyx_f_10_qt_qtwogl__pfmt(((char *)"profile"), __pyx_v_glformat.profile(), __pyx_v_glrformat.profile(), __pyx_v_gldformat.profile()); /* "_qt_qtwogl.pyx":540 * _pfmt('options', glformat.options(), glrformat.options(), gldformat.options()) * _pfmt('profile', glformat.profile(), glrformat.profile(), gldformat.profile()) * _pfmt('renderableType', glformat.renderableType(), glrformat.renderableType(), gldformat.renderableType()) # <<<<<<<<<<<<<< * _pfmt('samples', glformat.samples(), glrformat.samples(), gldformat.samples()) * _pfmt('stencil', glformat.stencilBufferSize(), glrformat.stencilBufferSize(), gldformat.stencilBufferSize()) */ __pyx_f_10_qt_qtwogl__pfmt(((char *)"renderableType"), __pyx_v_glformat.renderableType(), __pyx_v_glrformat.renderableType(), __pyx_v_gldformat.renderableType()); /* "_qt_qtwogl.pyx":541 * _pfmt('profile', glformat.profile(), glrformat.profile(), gldformat.profile()) * _pfmt('renderableType', glformat.renderableType(), glrformat.renderableType(), gldformat.renderableType()) * _pfmt('samples', glformat.samples(), glrformat.samples(), gldformat.samples()) # <<<<<<<<<<<<<< * _pfmt('stencil', glformat.stencilBufferSize(), glrformat.stencilBufferSize(), gldformat.stencilBufferSize()) * _pfmt('stereo', glformat.stereo(), glrformat.stereo(), gldformat.stereo()) */ __pyx_f_10_qt_qtwogl__pfmt(((char *)"samples"), __pyx_v_glformat.samples(), __pyx_v_glrformat.samples(), __pyx_v_gldformat.samples()); /* "_qt_qtwogl.pyx":542 * _pfmt('renderableType', glformat.renderableType(), glrformat.renderableType(), gldformat.renderableType()) * _pfmt('samples', glformat.samples(), glrformat.samples(), gldformat.samples()) * _pfmt('stencil', glformat.stencilBufferSize(), glrformat.stencilBufferSize(), gldformat.stencilBufferSize()) # <<<<<<<<<<<<<< * _pfmt('stereo', glformat.stereo(), glrformat.stereo(), gldformat.stereo()) * _pfmt('swapBehavior', glformat.swapBehavior(), glrformat.swapBehavior(), gldformat.swapBehavior()) */ __pyx_f_10_qt_qtwogl__pfmt(((char *)"stencil"), __pyx_v_glformat.stencilBufferSize(), __pyx_v_glrformat.stencilBufferSize(), __pyx_v_gldformat.stencilBufferSize()); /* "_qt_qtwogl.pyx":543 * _pfmt('samples', glformat.samples(), glrformat.samples(), gldformat.samples()) * _pfmt('stencil', glformat.stencilBufferSize(), glrformat.stencilBufferSize(), gldformat.stencilBufferSize()) * _pfmt('stereo', glformat.stereo(), glrformat.stereo(), gldformat.stereo()) # <<<<<<<<<<<<<< * _pfmt('swapBehavior', glformat.swapBehavior(), glrformat.swapBehavior(), gldformat.swapBehavior()) * _pfmt('swapInterval', glformat.swapInterval(), glrformat.swapInterval(), gldformat.swapInterval()) */ __pyx_f_10_qt_qtwogl__pfmt(((char *)"stereo"), __pyx_v_glformat.stereo(), __pyx_v_glrformat.stereo(), __pyx_v_gldformat.stereo()); /* "_qt_qtwogl.pyx":544 * _pfmt('stencil', glformat.stencilBufferSize(), glrformat.stencilBufferSize(), gldformat.stencilBufferSize()) * _pfmt('stereo', glformat.stereo(), glrformat.stereo(), gldformat.stereo()) * _pfmt('swapBehavior', glformat.swapBehavior(), glrformat.swapBehavior(), gldformat.swapBehavior()) # <<<<<<<<<<<<<< * _pfmt('swapInterval', glformat.swapInterval(), glrformat.swapInterval(), gldformat.swapInterval()) * _pfmt2('version', glformat.majorVersion(), glformat.minorVersion(), */ __pyx_f_10_qt_qtwogl__pfmt(((char *)"swapBehavior"), __pyx_v_glformat.swapBehavior(), __pyx_v_glrformat.swapBehavior(), __pyx_v_gldformat.swapBehavior()); /* "_qt_qtwogl.pyx":545 * _pfmt('stereo', glformat.stereo(), glrformat.stereo(), gldformat.stereo()) * _pfmt('swapBehavior', glformat.swapBehavior(), glrformat.swapBehavior(), gldformat.swapBehavior()) * _pfmt('swapInterval', glformat.swapInterval(), glrformat.swapInterval(), gldformat.swapInterval()) # <<<<<<<<<<<<<< * _pfmt2('version', glformat.majorVersion(), glformat.minorVersion(), * glrformat.majorVersion(), glrformat.minorVersion(), */ __pyx_f_10_qt_qtwogl__pfmt(((char *)"swapInterval"), __pyx_v_glformat.swapInterval(), __pyx_v_glrformat.swapInterval(), __pyx_v_gldformat.swapInterval()); /* "_qt_qtwogl.pyx":546 * _pfmt('swapBehavior', glformat.swapBehavior(), glrformat.swapBehavior(), gldformat.swapBehavior()) * _pfmt('swapInterval', glformat.swapInterval(), glrformat.swapInterval(), gldformat.swapInterval()) * _pfmt2('version', glformat.majorVersion(), glformat.minorVersion(), # <<<<<<<<<<<<<< * glrformat.majorVersion(), glrformat.minorVersion(), * gldformat.majorVersion(), gldformat.minorVersion()) */ __pyx_f_10_qt_qtwogl__pfmt2(((char *)"version"), __pyx_v_glformat.majorVersion(), __pyx_v_glformat.minorVersion(), __pyx_v_glrformat.majorVersion(), __pyx_v_glrformat.minorVersion(), __pyx_v_gldformat.majorVersion(), __pyx_v_gldformat.minorVersion()); /* "_qt_qtwogl.pyx":549 * glrformat.majorVersion(), glrformat.minorVersion(), * gldformat.majorVersion(), gldformat.minorVersion()) * puts('OpenGL context:') # <<<<<<<<<<<<<< * cdef int i #px+ * i = openGLModuleType() */ puts(((char const *)"OpenGL context:")); /* "_qt_qtwogl.pyx":551 * puts('OpenGL context:') * cdef int i #px+ * i = openGLModuleType() # <<<<<<<<<<<<<< * if i == LibGL: * puts(' module type: libGL') */ __pyx_v_i = QOpenGLContext::openGLModuleType(); /* "_qt_qtwogl.pyx":552 * cdef int i #px+ * i = openGLModuleType() * if i == LibGL: # <<<<<<<<<<<<<< * puts(' module type: libGL') * elif i == LibGLES: */ switch (__pyx_v_i) { case QOpenGLContext::LibGL: /* "_qt_qtwogl.pyx":553 * i = openGLModuleType() * if i == LibGL: * puts(' module type: libGL') # <<<<<<<<<<<<<< * elif i == LibGLES: * puts(' module type: LibGLES') */ puts(((char const *)" module type: libGL")); /* "_qt_qtwogl.pyx":552 * cdef int i #px+ * i = openGLModuleType() * if i == LibGL: # <<<<<<<<<<<<<< * puts(' module type: libGL') * elif i == LibGLES: */ break; /* "_qt_qtwogl.pyx":554 * if i == LibGL: * puts(' module type: libGL') * elif i == LibGLES: # <<<<<<<<<<<<<< * puts(' module type: LibGLES') * else: */ case QOpenGLContext::LibGLES: /* "_qt_qtwogl.pyx":555 * puts(' module type: libGL') * elif i == LibGLES: * puts(' module type: LibGLES') # <<<<<<<<<<<<<< * else: * printf(' unknown module type: %d\n', i) */ puts(((char const *)" module type: LibGLES")); /* "_qt_qtwogl.pyx":554 * if i == LibGL: * puts(' module type: libGL') * elif i == LibGLES: # <<<<<<<<<<<<<< * puts(' module type: LibGLES') * else: */ break; default: /* "_qt_qtwogl.pyx":557 * puts(' module type: LibGLES') * else: * printf(' unknown module type: %d\n', i) # <<<<<<<<<<<<<< * i = glcontext.isOpenGLES() * if glcontext.isOpenGLES(): */ printf(((char const *)" unknown module type: %d\n"), __pyx_v_i); break; } /* "_qt_qtwogl.pyx":558 * else: * printf(' unknown module type: %d\n', i) * i = glcontext.isOpenGLES() # <<<<<<<<<<<<<< * if glcontext.isOpenGLES(): * puts(' isOpenGLES: True') */ __pyx_v_i = __pyx_v_glcontext->isOpenGLES(); /* "_qt_qtwogl.pyx":559 * printf(' unknown module type: %d\n', i) * i = glcontext.isOpenGLES() * if glcontext.isOpenGLES(): # <<<<<<<<<<<<<< * puts(' isOpenGLES: True') * else: */ __pyx_t_2 = (__pyx_v_glcontext->isOpenGLES() != 0); if (__pyx_t_2) { /* "_qt_qtwogl.pyx":560 * i = glcontext.isOpenGLES() * if glcontext.isOpenGLES(): * puts(' isOpenGLES: True') # <<<<<<<<<<<<<< * else: * puts(' isOpenGLES: False') */ puts(((char const *)" isOpenGLES: True")); /* "_qt_qtwogl.pyx":559 * printf(' unknown module type: %d\n', i) * i = glcontext.isOpenGLES() * if glcontext.isOpenGLES(): # <<<<<<<<<<<<<< * puts(' isOpenGLES: True') * else: */ goto __pyx_L3; } /* "_qt_qtwogl.pyx":562 * puts(' isOpenGLES: True') * else: * puts(' isOpenGLES: False') # <<<<<<<<<<<<<< * if glcontext.hasExtension(QByteArray(b"GL_KHR_debug")): * puts(' hasExtension GL_KHR_debug: True') */ /*else*/ { puts(((char const *)" isOpenGLES: False")); } __pyx_L3:; /* "_qt_qtwogl.pyx":563 * else: * puts(' isOpenGLES: False') * if glcontext.hasExtension(QByteArray(b"GL_KHR_debug")): # <<<<<<<<<<<<<< * puts(' hasExtension GL_KHR_debug: True') * else: */ __pyx_t_2 = (__pyx_v_glcontext->hasExtension(QByteArray(((char const *)"GL_KHR_debug"))) != 0); if (__pyx_t_2) { /* "_qt_qtwogl.pyx":564 * puts(' isOpenGLES: False') * if glcontext.hasExtension(QByteArray(b"GL_KHR_debug")): * puts(' hasExtension GL_KHR_debug: True') # <<<<<<<<<<<<<< * else: * puts(' hasExtension GL_KHR_debug: False') */ puts(((char const *)" hasExtension GL_KHR_debug: True")); /* "_qt_qtwogl.pyx":563 * else: * puts(' isOpenGLES: False') * if glcontext.hasExtension(QByteArray(b"GL_KHR_debug")): # <<<<<<<<<<<<<< * puts(' hasExtension GL_KHR_debug: True') * else: */ goto __pyx_L4; } /* "_qt_qtwogl.pyx":566 * puts(' hasExtension GL_KHR_debug: True') * else: * puts(' hasExtension GL_KHR_debug: False') # <<<<<<<<<<<<<< * #XXX: not available in PyQt * #puts('OpenGL functions:') */ /*else*/ { puts(((char const *)" hasExtension GL_KHR_debug: False")); } __pyx_L4:; /* "_qt_qtwogl.pyx":569 * #XXX: not available in PyQt * #puts('OpenGL functions:') * cdef QOpenGLFunctions *glFuncs = glcontext.functions() #px+ # <<<<<<<<<<<<<< * # needed for clang * cdef int features = glFuncs.openGLFeatures() #px+ */ __pyx_v_glFuncs = __pyx_v_glcontext->functions(); /* "_qt_qtwogl.pyx":571 * cdef QOpenGLFunctions *glFuncs = glcontext.functions() #px+ * # needed for clang * cdef int features = glFuncs.openGLFeatures() #px+ # <<<<<<<<<<<<<< * printf(' features: 0x%0x\n', features) #px+ * */ __pyx_v_features = __pyx_v_glFuncs->openGLFeatures(); /* "_qt_qtwogl.pyx":572 * # needed for clang * cdef int features = glFuncs.openGLFeatures() #px+ * printf(' features: 0x%0x\n', features) #px+ # <<<<<<<<<<<<<< * * */ printf(((char const *)" features: 0x%0x\n"), __pyx_v_features); /* "_qt_qtwogl.pyx":526 * * ##pxm-FUNC P nogil * cdef void print_surface_info() nogil: # <<<<<<<<<<<<<< * cdef QOpenGLContext *glcontext #px+ * glcontext = currentContext() */ /* function exit code */ } /* "_qt_qtwogl.pyx":577 * #### ui: communicate with render-thread #### * * def set_pick_requested(pick_requested): # <<<<<<<<<<<<<< * uidata.pick_requested = pick_requested * */ /* Python wrapper */ static PyObject *__pyx_pw_10_qt_qtwogl_5set_pick_requested(PyObject *__pyx_self, PyObject *__pyx_v_pick_requested); /*proto*/ static PyMethodDef __pyx_mdef_10_qt_qtwogl_5set_pick_requested = {"set_pick_requested", (PyCFunction)__pyx_pw_10_qt_qtwogl_5set_pick_requested, METH_O, 0}; static PyObject *__pyx_pw_10_qt_qtwogl_5set_pick_requested(PyObject *__pyx_self, PyObject *__pyx_v_pick_requested) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("set_pick_requested (wrapper)", 0); __pyx_r = __pyx_pf_10_qt_qtwogl_4set_pick_requested(__pyx_self, ((PyObject *)__pyx_v_pick_requested)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_10_qt_qtwogl_4set_pick_requested(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_pick_requested) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations bool __pyx_t_1; __Pyx_RefNannySetupContext("set_pick_requested", 0); /* "_qt_qtwogl.pyx":578 * * def set_pick_requested(pick_requested): * uidata.pick_requested = pick_requested # <<<<<<<<<<<<<< * * ##pxm-FUNC P */ __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_pick_requested); if (unlikely((__pyx_t_1 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(0, 578, __pyx_L1_error) __pyx_v_10_qt_qtwogl_uidata.pick_requested = __pyx_t_1; /* "_qt_qtwogl.pyx":577 * #### ui: communicate with render-thread #### * * def set_pick_requested(pick_requested): # <<<<<<<<<<<<<< * uidata.pick_requested = pick_requested * */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("_qt_qtwogl.set_pick_requested", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwogl.pyx":581 * * ##pxm-FUNC P * cpdef set_atlas_size(int width, int height): # <<<<<<<<<<<<<< * uidata.atlas_changed = True * uidata.atlas_width = width */ static PyObject *__pyx_pw_10_qt_qtwogl_7set_atlas_size(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static PyObject *__pyx_f_10_qt_qtwogl_set_atlas_size(int __pyx_v_width, int __pyx_v_height, CYTHON_UNUSED int __pyx_skip_dispatch) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("set_atlas_size", 0); /* "_qt_qtwogl.pyx":582 * ##pxm-FUNC P * cpdef set_atlas_size(int width, int height): * uidata.atlas_changed = True # <<<<<<<<<<<<<< * uidata.atlas_width = width * uidata.atlas_height = height */ __pyx_v_10_qt_qtwogl_uidata.atlas_changed = 1; /* "_qt_qtwogl.pyx":583 * cpdef set_atlas_size(int width, int height): * uidata.atlas_changed = True * uidata.atlas_width = width # <<<<<<<<<<<<<< * uidata.atlas_height = height * */ __pyx_v_10_qt_qtwogl_uidata.atlas_width = __pyx_v_width; /* "_qt_qtwogl.pyx":584 * uidata.atlas_changed = True * uidata.atlas_width = width * uidata.atlas_height = height # <<<<<<<<<<<<<< * * ##pxm-FUNC P */ __pyx_v_10_qt_qtwogl_uidata.atlas_height = __pyx_v_height; /* "_qt_qtwogl.pyx":581 * * ##pxm-FUNC P * cpdef set_atlas_size(int width, int height): # <<<<<<<<<<<<<< * uidata.atlas_changed = True * uidata.atlas_width = width */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* Python wrapper */ static PyObject *__pyx_pw_10_qt_qtwogl_7set_atlas_size(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static PyObject *__pyx_pw_10_qt_qtwogl_7set_atlas_size(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { int __pyx_v_width; int __pyx_v_height; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("set_atlas_size (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_width,&__pyx_n_s_height,0}; PyObject* values[2] = {0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_width)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_height)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("set_atlas_size", 1, 2, 2, 1); __PYX_ERR(0, 581, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_atlas_size") < 0)) __PYX_ERR(0, 581, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); } __pyx_v_width = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_width == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 581, __pyx_L3_error) __pyx_v_height = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_height == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 581, __pyx_L3_error) } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("set_atlas_size", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 581, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("_qt_qtwogl.set_atlas_size", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_10_qt_qtwogl_6set_atlas_size(__pyx_self, __pyx_v_width, __pyx_v_height); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_10_qt_qtwogl_6set_atlas_size(CYTHON_UNUSED PyObject *__pyx_self, int __pyx_v_width, int __pyx_v_height) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("set_atlas_size", 0); __Pyx_XDECREF(__pyx_r); __pyx_t_1 = __pyx_f_10_qt_qtwogl_set_atlas_size(__pyx_v_width, __pyx_v_height, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 581, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("_qt_qtwogl.set_atlas_size", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwogl.pyx":587 * * ##pxm-FUNC P * cdef void set_default_surface_format(): # <<<<<<<<<<<<<< * cdef QSurfaceFormat glformat #px/ * #glformat = QSurfaceFormat() */ static void __pyx_f_10_qt_qtwogl_set_default_surface_format(void) { QSurfaceFormat __pyx_v_glformat; int __pyx_v_samples; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; int __pyx_t_3; int __pyx_t_4; __Pyx_RefNannySetupContext("set_default_surface_format", 0); /* "_qt_qtwogl.pyx":591 * #glformat = QSurfaceFormat() * cdef int samples #px+ * samples = settings['draw.samples'] # <<<<<<<<<<<<<< * if samples > 0: * glformat.setSamples(2**samples) */ __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 591, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyObject_GetItem(__pyx_t_1, __pyx_kp_u_draw_samples); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 591, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 591, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_samples = __pyx_t_3; /* "_qt_qtwogl.pyx":592 * cdef int samples #px+ * samples = settings['draw.samples'] * if samples > 0: # <<<<<<<<<<<<<< * glformat.setSamples(2**samples) * if debug & DEBUG_VFPS: */ __pyx_t_4 = ((__pyx_v_samples > 0) != 0); if (__pyx_t_4) { /* "_qt_qtwogl.pyx":593 * samples = settings['draw.samples'] * if samples > 0: * glformat.setSamples(2**samples) # <<<<<<<<<<<<<< * if debug & DEBUG_VFPS: * glformat.setSwapInterval(0) */ __pyx_v_glformat.setSamples(__Pyx_pow_long(2, ((long)__pyx_v_samples))); /* "_qt_qtwogl.pyx":592 * cdef int samples #px+ * samples = settings['draw.samples'] * if samples > 0: # <<<<<<<<<<<<<< * glformat.setSamples(2**samples) * if debug & DEBUG_VFPS: */ } /* "_qt_qtwogl.pyx":594 * if samples > 0: * glformat.setSamples(2**samples) * if debug & DEBUG_VFPS: # <<<<<<<<<<<<<< * glformat.setSwapInterval(0) * IF 'ogl' != 'ogl': #px+ */ __pyx_t_4 = ((__pyx_v_10_qt_qtwogl_debug & __pyx_e_10_qt_qtwogl_DEBUG_VFPS) != 0); if (__pyx_t_4) { /* "_qt_qtwogl.pyx":595 * glformat.setSamples(2**samples) * if debug & DEBUG_VFPS: * glformat.setSwapInterval(0) # <<<<<<<<<<<<<< * IF 'ogl' != 'ogl': #px+ * glformat.setRenderableType(OpenGLES) #px+ */ __pyx_v_glformat.setSwapInterval(0); /* "_qt_qtwogl.pyx":594 * if samples > 0: * glformat.setSamples(2**samples) * if debug & DEBUG_VFPS: # <<<<<<<<<<<<<< * glformat.setSwapInterval(0) * IF 'ogl' != 'ogl': #px+ */ } /* "_qt_qtwogl.pyx":598 * IF 'ogl' != 'ogl': #px+ * glformat.setRenderableType(OpenGLES) #px+ * if debug & DEBUG_GLDEBUG: # <<<<<<<<<<<<<< * glformat.setOption(DebugContext) * uidata.default_format = defaultFormat() */ __pyx_t_4 = ((__pyx_v_10_qt_qtwogl_debug & __pyx_e_10_qt_qtwogl_DEBUG_GLDEBUG) != 0); if (__pyx_t_4) { /* "_qt_qtwogl.pyx":599 * glformat.setRenderableType(OpenGLES) #px+ * if debug & DEBUG_GLDEBUG: * glformat.setOption(DebugContext) # <<<<<<<<<<<<<< * uidata.default_format = defaultFormat() * setDefaultFormat(glformat) */ __pyx_v_glformat.setOption(QSurfaceFormat::DebugContext); /* "_qt_qtwogl.pyx":598 * IF 'ogl' != 'ogl': #px+ * glformat.setRenderableType(OpenGLES) #px+ * if debug & DEBUG_GLDEBUG: # <<<<<<<<<<<<<< * glformat.setOption(DebugContext) * uidata.default_format = defaultFormat() */ } /* "_qt_qtwogl.pyx":600 * if debug & DEBUG_GLDEBUG: * glformat.setOption(DebugContext) * uidata.default_format = defaultFormat() # <<<<<<<<<<<<<< * setDefaultFormat(glformat) * */ __pyx_v_10_qt_qtwogl_uidata.default_format = QSurfaceFormat::defaultFormat(); /* "_qt_qtwogl.pyx":601 * glformat.setOption(DebugContext) * uidata.default_format = defaultFormat() * setDefaultFormat(glformat) # <<<<<<<<<<<<<< * * */ QSurfaceFormat::setDefaultFormat(__pyx_v_glformat); /* "_qt_qtwogl.pyx":587 * * ##pxm-FUNC P * cdef void set_default_surface_format(): # <<<<<<<<<<<<<< * cdef QSurfaceFormat glformat #px/ * #glformat = QSurfaceFormat() */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_WriteUnraisable("_qt_qtwogl.set_default_surface_format", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); } /* "_qt_qtwogl.pyx":945 * # also used in beforeSynchronizing * ##pxm-FUNC P nogil * cdef void dump_info(const char *msg, const QObject *qtobj) nogil: # <<<<<<<<<<<<<< * cdef const QMetaObject *mo #px+ * cdef QMetaProperty p #px+ */ static void __pyx_f_10_qt_qtwogl_dump_info(char const *__pyx_v_msg, QObject const *__pyx_v_qtobj) { QMetaObject const *__pyx_v_mo; QMetaProperty __pyx_v_p; QMetaMethod __pyx_v_m; int __pyx_v_i; int __pyx_t_1; int __pyx_t_2; int __pyx_t_3; /* "_qt_qtwogl.pyx":951 * cdef int i #px+ * * mo = qtobj.metaObject() # <<<<<<<<<<<<<< * * printf('==== %s\n', msg) */ __pyx_v_mo = __pyx_v_qtobj->metaObject(); /* "_qt_qtwogl.pyx":953 * mo = qtobj.metaObject() * * printf('==== %s\n', msg) # <<<<<<<<<<<<<< * #printf('Object-Name: %s\n', q2charp(qtobj.objectName())) * printf('Class-Name: %s\n', mo.className()) */ printf(((char const *)"==== %s\n"), __pyx_v_msg); /* "_qt_qtwogl.pyx":955 * printf('==== %s\n', msg) * #printf('Object-Name: %s\n', q2charp(qtobj.objectName())) * printf('Class-Name: %s\n', mo.className()) # <<<<<<<<<<<<<< * if 0 < mo.propertyCount(): * printf('Properties: %d (%d inherited)\n', mo.propertyCount(), mo.propertyOffset()) */ printf(((char const *)"Class-Name: %s\n"), __pyx_v_mo->className()); /* "_qt_qtwogl.pyx":956 * #printf('Object-Name: %s\n', q2charp(qtobj.objectName())) * printf('Class-Name: %s\n', mo.className()) * if 0 < mo.propertyCount(): # <<<<<<<<<<<<<< * printf('Properties: %d (%d inherited)\n', mo.propertyCount(), mo.propertyOffset()) * for i in range(mo.propertyCount()): */ __pyx_t_1 = ((0 < __pyx_v_mo->propertyCount()) != 0); if (__pyx_t_1) { /* "_qt_qtwogl.pyx":957 * printf('Class-Name: %s\n', mo.className()) * if 0 < mo.propertyCount(): * printf('Properties: %d (%d inherited)\n', mo.propertyCount(), mo.propertyOffset()) # <<<<<<<<<<<<<< * for i in range(mo.propertyCount()): * p = mo.property(i) */ printf(((char const *)"Properties: %d (%d inherited)\n"), __pyx_v_mo->propertyCount(), __pyx_v_mo->propertyOffset()); /* "_qt_qtwogl.pyx":958 * if 0 < mo.propertyCount(): * printf('Properties: %d (%d inherited)\n', mo.propertyCount(), mo.propertyOffset()) * for i in range(mo.propertyCount()): # <<<<<<<<<<<<<< * p = mo.property(i) * printf(' %d %s %s\n', i, p.typeName(), p.name()) */ __pyx_t_2 = __pyx_v_mo->propertyCount(); for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) { __pyx_v_i = __pyx_t_3; /* "_qt_qtwogl.pyx":959 * printf('Properties: %d (%d inherited)\n', mo.propertyCount(), mo.propertyOffset()) * for i in range(mo.propertyCount()): * p = mo.property(i) # <<<<<<<<<<<<<< * printf(' %d %s %s\n', i, p.typeName(), p.name()) * if 0 < mo.methodCount(): */ __pyx_v_p = __pyx_v_mo->property(__pyx_v_i); /* "_qt_qtwogl.pyx":960 * for i in range(mo.propertyCount()): * p = mo.property(i) * printf(' %d %s %s\n', i, p.typeName(), p.name()) # <<<<<<<<<<<<<< * if 0 < mo.methodCount(): * printf('Methods: %d (%d inherited)\n', mo.methodCount(), mo.methodOffset()) */ printf(((char const *)" %d %s %s\n"), __pyx_v_i, __pyx_v_p.typeName(), __pyx_v_p.name()); } /* "_qt_qtwogl.pyx":956 * #printf('Object-Name: %s\n', q2charp(qtobj.objectName())) * printf('Class-Name: %s\n', mo.className()) * if 0 < mo.propertyCount(): # <<<<<<<<<<<<<< * printf('Properties: %d (%d inherited)\n', mo.propertyCount(), mo.propertyOffset()) * for i in range(mo.propertyCount()): */ } /* "_qt_qtwogl.pyx":961 * p = mo.property(i) * printf(' %d %s %s\n', i, p.typeName(), p.name()) * if 0 < mo.methodCount(): # <<<<<<<<<<<<<< * printf('Methods: %d (%d inherited)\n', mo.methodCount(), mo.methodOffset()) * for i in range(mo.methodCount()): */ __pyx_t_1 = ((0 < __pyx_v_mo->methodCount()) != 0); if (__pyx_t_1) { /* "_qt_qtwogl.pyx":962 * printf(' %d %s %s\n', i, p.typeName(), p.name()) * if 0 < mo.methodCount(): * printf('Methods: %d (%d inherited)\n', mo.methodCount(), mo.methodOffset()) # <<<<<<<<<<<<<< * for i in range(mo.methodCount()): * m = mo.method(i) */ printf(((char const *)"Methods: %d (%d inherited)\n"), __pyx_v_mo->methodCount(), __pyx_v_mo->methodOffset()); /* "_qt_qtwogl.pyx":963 * if 0 < mo.methodCount(): * printf('Methods: %d (%d inherited)\n', mo.methodCount(), mo.methodOffset()) * for i in range(mo.methodCount()): # <<<<<<<<<<<<<< * m = mo.method(i) * printf(' %d %s %s\n', i, m.typeName(), m.methodSignature().data()) */ __pyx_t_2 = __pyx_v_mo->methodCount(); for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) { __pyx_v_i = __pyx_t_3; /* "_qt_qtwogl.pyx":964 * printf('Methods: %d (%d inherited)\n', mo.methodCount(), mo.methodOffset()) * for i in range(mo.methodCount()): * m = mo.method(i) # <<<<<<<<<<<<<< * printf(' %d %s %s\n', i, m.typeName(), m.methodSignature().data()) * */ __pyx_v_m = __pyx_v_mo->method(__pyx_v_i); /* "_qt_qtwogl.pyx":965 * for i in range(mo.methodCount()): * m = mo.method(i) * printf(' %d %s %s\n', i, m.typeName(), m.methodSignature().data()) # <<<<<<<<<<<<<< * * ##pxm>IF 'qtw' == 'qtq' */ printf(((char const *)" %d %s %s\n"), __pyx_v_i, __pyx_v_m.typeName(), __pyx_v_m.methodSignature().data()); } /* "_qt_qtwogl.pyx":961 * p = mo.property(i) * printf(' %d %s %s\n', i, p.typeName(), p.name()) * if 0 < mo.methodCount(): # <<<<<<<<<<<<<< * printf('Methods: %d (%d inherited)\n', mo.methodCount(), mo.methodOffset()) * for i in range(mo.methodCount()): */ } /* "_qt_qtwogl.pyx":945 * # also used in beforeSynchronizing * ##pxm-FUNC P nogil * cdef void dump_info(const char *msg, const QObject *qtobj) nogil: # <<<<<<<<<<<<<< * cdef const QMetaObject *mo #px+ * cdef QMetaProperty p #px+ */ /* function exit code */ } /* "_qt_qtwogl.pyx":981 * #~ ##pxm>IF_END * * def set_debug_text(text): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * qtui.set_debug_text(str2q(text)) */ /* Python wrapper */ static PyObject *__pyx_pw_10_qt_qtwogl_9set_debug_text(PyObject *__pyx_self, PyObject *__pyx_v_text); /*proto*/ static PyMethodDef __pyx_mdef_10_qt_qtwogl_9set_debug_text = {"set_debug_text", (PyCFunction)__pyx_pw_10_qt_qtwogl_9set_debug_text, METH_O, 0}; static PyObject *__pyx_pw_10_qt_qtwogl_9set_debug_text(PyObject *__pyx_self, PyObject *__pyx_v_text) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("set_debug_text (wrapper)", 0); __pyx_r = __pyx_pf_10_qt_qtwogl_8set_debug_text(__pyx_self, ((PyObject *)__pyx_v_text)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_10_qt_qtwogl_8set_debug_text(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_text) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("set_debug_text", 0); /* "_qt_qtwogl.pyx":983 * def set_debug_text(text): * ##pxm>IF 'qtw' == 'qtw' * qtui.set_debug_text(str2q(text)) # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtq' * #~ ctx_set(b'debugmsg', text) */ __pyx_f_6_qtui__set_debug_text(__pyx_f_10_qt_qtwogl_str2q(__pyx_v_text)); /* "_qt_qtwogl.pyx":981 * #~ ##pxm>IF_END * * def set_debug_text(text): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * qtui.set_debug_text(str2q(text)) */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwogl.pyx":988 * #~ ##pxm>IF_END * * def set_edit_moves(code, pos): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * uidata.move_edit.setText(str2q(code)) */ /* Python wrapper */ static PyObject *__pyx_pw_10_qt_qtwogl_11set_edit_moves(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static PyMethodDef __pyx_mdef_10_qt_qtwogl_11set_edit_moves = {"set_edit_moves", (PyCFunction)__pyx_pw_10_qt_qtwogl_11set_edit_moves, METH_VARARGS|METH_KEYWORDS, 0}; static PyObject *__pyx_pw_10_qt_qtwogl_11set_edit_moves(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_code = 0; PyObject *__pyx_v_pos = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("set_edit_moves (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_code,&__pyx_n_s_pos,0}; PyObject* values[2] = {0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_code)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_pos)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("set_edit_moves", 1, 2, 2, 1); __PYX_ERR(0, 988, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_edit_moves") < 0)) __PYX_ERR(0, 988, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); } __pyx_v_code = values[0]; __pyx_v_pos = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("set_edit_moves", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 988, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("_qt_qtwogl.set_edit_moves", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_10_qt_qtwogl_10set_edit_moves(__pyx_self, __pyx_v_code, __pyx_v_pos); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_10_qt_qtwogl_10set_edit_moves(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_code, PyObject *__pyx_v_pos) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; __Pyx_RefNannySetupContext("set_edit_moves", 0); /* "_qt_qtwogl.pyx":990 * def set_edit_moves(code, pos): * ##pxm>IF 'qtw' == 'qtw' * uidata.move_edit.setText(str2q(code)) # <<<<<<<<<<<<<< * uidata.move_edit.setCursorPosition(pos) * ##pxm>IF 'qtw' == 'qtq' */ __pyx_v_10_qt_qtwogl_uidata.move_edit->setText(__pyx_f_10_qt_qtwogl_str2q(__pyx_v_code)); /* "_qt_qtwogl.pyx":991 * ##pxm>IF 'qtw' == 'qtw' * uidata.move_edit.setText(str2q(code)) * uidata.move_edit.setCursorPosition(pos) # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtq' * #~ ctx_set(b'edittext', code) */ __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_pos); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 991, __pyx_L1_error) __pyx_v_10_qt_qtwogl_uidata.move_edit->setCursorPosition(__pyx_t_1); /* "_qt_qtwogl.pyx":988 * #~ ##pxm>IF_END * * def set_edit_moves(code, pos): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * uidata.move_edit.setText(str2q(code)) */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("_qt_qtwogl.set_edit_moves", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwogl.pyx":997 * #~ ##pxm>IF_END * * def set_status_text(text): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * uidata.statuslabel.setText(str2q(text)) */ /* Python wrapper */ static PyObject *__pyx_pw_10_qt_qtwogl_13set_status_text(PyObject *__pyx_self, PyObject *__pyx_v_text); /*proto*/ static PyMethodDef __pyx_mdef_10_qt_qtwogl_13set_status_text = {"set_status_text", (PyCFunction)__pyx_pw_10_qt_qtwogl_13set_status_text, METH_O, 0}; static PyObject *__pyx_pw_10_qt_qtwogl_13set_status_text(PyObject *__pyx_self, PyObject *__pyx_v_text) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("set_status_text (wrapper)", 0); __pyx_r = __pyx_pf_10_qt_qtwogl_12set_status_text(__pyx_self, ((PyObject *)__pyx_v_text)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_10_qt_qtwogl_12set_status_text(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_text) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("set_status_text", 0); /* "_qt_qtwogl.pyx":999 * def set_status_text(text): * ##pxm>IF 'qtw' == 'qtw' * uidata.statuslabel.setText(str2q(text)) # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtq' * #~ ctx_set(b'status', text) */ __pyx_v_10_qt_qtwogl_uidata.statuslabel->setText(__pyx_f_10_qt_qtwogl_str2q(__pyx_v_text)); /* "_qt_qtwogl.pyx":997 * #~ ##pxm>IF_END * * def set_status_text(text): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * uidata.statuslabel.setText(str2q(text)) */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwogl.pyx":1006 * show_message_text = None * ##pxm-FUNC P with gil * cdef void show_message_cb() with gil: # <<<<<<<<<<<<<< * global show_message_text * ##pxm>IF 'qtw' == 'qtw' */ static void __pyx_f_10_qt_qtwogl_show_message_cb(void) { QMessageBox *__pyx_v_dialog; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("show_message_cb", 0); /* "_qt_qtwogl.pyx":1009 * global show_message_text * ##pxm>IF 'qtw' == 'qtw' * cdef QMessageBox *dialog = new QMessageBox(uidata.mainwindow) #px/ # <<<<<<<<<<<<<< * #dialog = QMessageBox(uidata.mainwindow) * dialog.setWindowTitle(str2q(_(config_.APPNAME))) */ __pyx_v_dialog = new QMessageBox(__pyx_v_10_qt_qtwogl_uidata.mainwindow); /* "_qt_qtwogl.pyx":1011 * cdef QMessageBox *dialog = new QMessageBox(uidata.mainwindow) #px/ * #dialog = QMessageBox(uidata.mainwindow) * dialog.setWindowTitle(str2q(_(config_.APPNAME))) # <<<<<<<<<<<<<< * dialog.setText(str2q(show_message_text)) * dialog.setIcon(QMessageBox_Information) */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s__4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1011, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_config); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1011, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_APPNAME); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1011, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } if (!__pyx_t_3) { __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1011, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_1); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_4}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1011, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_4}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1011, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1011, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_4); __pyx_t_4 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1011, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_dialog->setWindowTitle(__pyx_f_10_qt_qtwogl_str2q(__pyx_t_1)); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwogl.pyx":1012 * #dialog = QMessageBox(uidata.mainwindow) * dialog.setWindowTitle(str2q(_(config_.APPNAME))) * dialog.setText(str2q(show_message_text)) # <<<<<<<<<<<<<< * dialog.setIcon(QMessageBox_Information) * dialog.setStandardButtons(QMessageBox_Close) */ __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_show_message_text); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1012, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_dialog->setText(__pyx_f_10_qt_qtwogl_str2q(__pyx_t_1)); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwogl.pyx":1013 * dialog.setWindowTitle(str2q(_(config_.APPNAME))) * dialog.setText(str2q(show_message_text)) * dialog.setIcon(QMessageBox_Information) # <<<<<<<<<<<<<< * dialog.setStandardButtons(QMessageBox_Close) * dialog.exec() */ __pyx_v_dialog->setIcon(QMessageBox::Information); /* "_qt_qtwogl.pyx":1014 * dialog.setText(str2q(show_message_text)) * dialog.setIcon(QMessageBox_Information) * dialog.setStandardButtons(QMessageBox_Close) # <<<<<<<<<<<<<< * dialog.exec() * del dialog #px+ */ __pyx_v_dialog->setStandardButtons(QMessageBox::Close); /* "_qt_qtwogl.pyx":1015 * dialog.setIcon(QMessageBox_Information) * dialog.setStandardButtons(QMessageBox_Close) * dialog.exec() # <<<<<<<<<<<<<< * del dialog #px+ * ##pxm>IF 'qtw' == 'qtq' */ __pyx_v_dialog->exec(); /* "_qt_qtwogl.pyx":1016 * dialog.setStandardButtons(QMessageBox_Close) * dialog.exec() * del dialog #px+ # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtq' * #~ ctx_set(b'messagetext', show_message_text) */ delete __pyx_v_dialog; /* "_qt_qtwogl.pyx":1021 * #~ ctx_set(b'messagebox_visible', True) * #~ ##pxm>IF_END * show_message_text = None # <<<<<<<<<<<<<< * def show_message(message): * global show_message_text */ if (PyDict_SetItem(__pyx_d, __pyx_n_s_show_message_text, Py_None) < 0) __PYX_ERR(0, 1021, __pyx_L1_error) /* "_qt_qtwogl.pyx":1006 * show_message_text = None * ##pxm-FUNC P with gil * cdef void show_message_cb() with gil: # <<<<<<<<<<<<<< * global show_message_text * ##pxm>IF 'qtw' == 'qtw' */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_WriteUnraisable("_qt_qtwogl.show_message_cb", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwogl.pyx":1022 * #~ ##pxm>IF_END * show_message_text = None * def show_message(message): # <<<<<<<<<<<<<< * global show_message_text * show_message_text = message */ /* Python wrapper */ static PyObject *__pyx_pw_10_qt_qtwogl_15show_message(PyObject *__pyx_self, PyObject *__pyx_v_message); /*proto*/ static PyMethodDef __pyx_mdef_10_qt_qtwogl_15show_message = {"show_message", (PyCFunction)__pyx_pw_10_qt_qtwogl_15show_message, METH_O, 0}; static PyObject *__pyx_pw_10_qt_qtwogl_15show_message(PyObject *__pyx_self, PyObject *__pyx_v_message) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("show_message (wrapper)", 0); __pyx_r = __pyx_pf_10_qt_qtwogl_14show_message(__pyx_self, ((PyObject *)__pyx_v_message)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_10_qt_qtwogl_14show_message(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_message) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("show_message", 0); /* "_qt_qtwogl.pyx":1024 * def show_message(message): * global show_message_text * show_message_text = message # <<<<<<<<<<<<<< * singleShot(100, show_message_cb) #px/ * #QTimer.singleShot(100, show_message_cb) */ if (PyDict_SetItem(__pyx_d, __pyx_n_s_show_message_text, __pyx_v_message) < 0) __PYX_ERR(0, 1024, __pyx_L1_error) /* "_qt_qtwogl.pyx":1025 * global show_message_text * show_message_text = message * singleShot(100, show_message_cb) #px/ # <<<<<<<<<<<<<< * #QTimer.singleShot(100, show_message_cb) * */ QTimer::singleShot(0x64, __pyx_f_10_qt_qtwogl_show_message_cb); /* "_qt_qtwogl.pyx":1022 * #~ ##pxm>IF_END * show_message_text = None * def show_message(message): # <<<<<<<<<<<<<< * global show_message_text * show_message_text = message */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("_qt_qtwogl.show_message", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwogl.pyx":1030 * ##pxm>IF 'qtw' == 'qtw' * ##pxm-FUNC P * cdef void _fill_treestore(QStandardItem *parent, tree): # <<<<<<<<<<<<<< * cdef QStandardItem *item #px+ * for transl, func, subtree in tree: */ static void __pyx_f_10_qt_qtwogl__fill_treestore(QStandardItem *__pyx_v_parent, PyObject *__pyx_v_tree) { QStandardItem *__pyx_v_item; PyObject *__pyx_v_transl = NULL; PyObject *__pyx_v_func = NULL; PyObject *__pyx_v_subtree = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; Py_ssize_t __pyx_t_2; PyObject *(*__pyx_t_3)(PyObject *); PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; PyObject *__pyx_t_7 = NULL; PyObject *__pyx_t_8 = NULL; PyObject *(*__pyx_t_9)(PyObject *); int __pyx_t_10; int __pyx_t_11; __Pyx_RefNannySetupContext("_fill_treestore", 0); /* "_qt_qtwogl.pyx":1032 * cdef void _fill_treestore(QStandardItem *parent, tree): * cdef QStandardItem *item #px+ * for transl, func, subtree in tree: # <<<<<<<<<<<<<< * item = new QStandardItem(str2q(transl)) #px/ * #item = QStandardItem(str2q(transl)) */ if (likely(PyList_CheckExact(__pyx_v_tree)) || PyTuple_CheckExact(__pyx_v_tree)) { __pyx_t_1 = __pyx_v_tree; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0; __pyx_t_3 = NULL; } else { __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_tree); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1032, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1032, __pyx_L1_error) } for (;;) { if (likely(!__pyx_t_3)) { if (likely(PyList_CheckExact(__pyx_t_1))) { if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(0, 1032, __pyx_L1_error) #else __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1032, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); #endif } else { if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(0, 1032, __pyx_L1_error) #else __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1032, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); #endif } } else { __pyx_t_4 = __pyx_t_3(__pyx_t_1); if (unlikely(!__pyx_t_4)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 1032, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_4); } if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) { PyObject* sequence = __pyx_t_4; #if !CYTHON_COMPILING_IN_PYPY Py_ssize_t size = Py_SIZE(sequence); #else Py_ssize_t size = PySequence_Size(sequence); #endif if (unlikely(size != 3)) { if (size > 3) __Pyx_RaiseTooManyValuesError(3); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 1032, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_5 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1); __pyx_t_7 = PyTuple_GET_ITEM(sequence, 2); } else { __pyx_t_5 = PyList_GET_ITEM(sequence, 0); __pyx_t_6 = PyList_GET_ITEM(sequence, 1); __pyx_t_7 = PyList_GET_ITEM(sequence, 2); } __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(__pyx_t_7); #else __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1032, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1032, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1032, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); #endif __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else { Py_ssize_t index = -1; __pyx_t_8 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1032, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_9 = Py_TYPE(__pyx_t_8)->tp_iternext; index = 0; __pyx_t_5 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_5)) goto __pyx_L5_unpacking_failed; __Pyx_GOTREF(__pyx_t_5); index = 1; __pyx_t_6 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_6)) goto __pyx_L5_unpacking_failed; __Pyx_GOTREF(__pyx_t_6); index = 2; __pyx_t_7 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_7)) goto __pyx_L5_unpacking_failed; __Pyx_GOTREF(__pyx_t_7); if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_8), 3) < 0) __PYX_ERR(0, 1032, __pyx_L1_error) __pyx_t_9 = NULL; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; goto __pyx_L6_unpacking_done; __pyx_L5_unpacking_failed:; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_9 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 1032, __pyx_L1_error) __pyx_L6_unpacking_done:; } __Pyx_XDECREF_SET(__pyx_v_transl, __pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF_SET(__pyx_v_func, __pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF_SET(__pyx_v_subtree, __pyx_t_7); __pyx_t_7 = 0; /* "_qt_qtwogl.pyx":1033 * cdef QStandardItem *item #px+ * for transl, func, subtree in tree: * item = new QStandardItem(str2q(transl)) #px/ # <<<<<<<<<<<<<< * #item = QStandardItem(str2q(transl)) * if func is not None: */ __pyx_v_item = new QStandardItem(__pyx_f_10_qt_qtwogl_str2q(__pyx_v_transl)); /* "_qt_qtwogl.pyx":1035 * item = new QStandardItem(str2q(transl)) #px/ * #item = QStandardItem(str2q(transl)) * if func is not None: # <<<<<<<<<<<<<< * item.setData(tovariant(func)) * parent.appendRow(item) */ __pyx_t_10 = (__pyx_v_func != Py_None); __pyx_t_11 = (__pyx_t_10 != 0); if (__pyx_t_11) { /* "_qt_qtwogl.pyx":1036 * #item = QStandardItem(str2q(transl)) * if func is not None: * item.setData(tovariant(func)) # <<<<<<<<<<<<<< * parent.appendRow(item) * _fill_treestore(item, subtree) */ __pyx_v_item->setData(__pyx_f_10_qt_qtwogl_tovariant(__pyx_v_func)); /* "_qt_qtwogl.pyx":1035 * item = new QStandardItem(str2q(transl)) #px/ * #item = QStandardItem(str2q(transl)) * if func is not None: # <<<<<<<<<<<<<< * item.setData(tovariant(func)) * parent.appendRow(item) */ } /* "_qt_qtwogl.pyx":1037 * if func is not None: * item.setData(tovariant(func)) * parent.appendRow(item) # <<<<<<<<<<<<<< * _fill_treestore(item, subtree) * ##pxm>IF_END */ __pyx_v_parent->appendRow(__pyx_v_item); /* "_qt_qtwogl.pyx":1038 * item.setData(tovariant(func)) * parent.appendRow(item) * _fill_treestore(item, subtree) # <<<<<<<<<<<<<< * ##pxm>IF_END * */ __pyx_f_10_qt_qtwogl__fill_treestore(__pyx_v_item, __pyx_v_subtree); /* "_qt_qtwogl.pyx":1032 * cdef void _fill_treestore(QStandardItem *parent, tree): * cdef QStandardItem *item #px+ * for transl, func, subtree in tree: # <<<<<<<<<<<<<< * item = new QStandardItem(str2q(transl)) #px/ * #item = QStandardItem(str2q(transl)) */ } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwogl.pyx":1030 * ##pxm>IF 'qtw' == 'qtw' * ##pxm-FUNC P * cdef void _fill_treestore(QStandardItem *parent, tree): # <<<<<<<<<<<<<< * cdef QStandardItem *item #px+ * for transl, func, subtree in tree: */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_8); __Pyx_WriteUnraisable("_qt_qtwogl._fill_treestore", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_XDECREF(__pyx_v_transl); __Pyx_XDECREF(__pyx_v_func); __Pyx_XDECREF(__pyx_v_subtree); __Pyx_RefNannyFinishContext(); } /* "_qt_qtwogl.pyx":1041 * ##pxm>IF_END * * def fill_sidepane(plugin_data): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * # remove old plugins */ /* Python wrapper */ static PyObject *__pyx_pw_10_qt_qtwogl_17fill_sidepane(PyObject *__pyx_self, PyObject *__pyx_v_plugin_data); /*proto*/ static PyMethodDef __pyx_mdef_10_qt_qtwogl_17fill_sidepane = {"fill_sidepane", (PyCFunction)__pyx_pw_10_qt_qtwogl_17fill_sidepane, METH_O, 0}; static PyObject *__pyx_pw_10_qt_qtwogl_17fill_sidepane(PyObject *__pyx_self, PyObject *__pyx_v_plugin_data) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("fill_sidepane (wrapper)", 0); __pyx_r = __pyx_pf_10_qt_qtwogl_16fill_sidepane(__pyx_self, ((PyObject *)__pyx_v_plugin_data)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_10_qt_qtwogl_16fill_sidepane(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_plugin_data) { QStandardItem *__pyx_v_item; PyObject *__pyx_v_transl = NULL; PyObject *__pyx_v_func = NULL; PyObject *__pyx_v_subtree = NULL; QPushButton *__pyx_v_button; QTreeView *__pyx_v_treeview; PyObject *__pyx_v_i = NULL; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; Py_ssize_t __pyx_t_2; PyObject *(*__pyx_t_3)(PyObject *); PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; PyObject *__pyx_t_7 = NULL; PyObject *__pyx_t_8 = NULL; PyObject *(*__pyx_t_9)(PyObject *); int __pyx_t_10; int __pyx_t_11; PyObject *__pyx_t_12 = NULL; int __pyx_t_13; __Pyx_RefNannySetupContext("fill_sidepane", 0); /* "_qt_qtwogl.pyx":1044 * ##pxm>IF 'qtw' == 'qtw' * # remove old plugins * uidata.treestore.clear() # <<<<<<<<<<<<<< * qtui.clear_sidepane() * #self.plugin_group_widgets.clear() */ __pyx_v_10_qt_qtwogl_uidata.treestore->clear(); /* "_qt_qtwogl.pyx":1045 * # remove old plugins * uidata.treestore.clear() * qtui.clear_sidepane() # <<<<<<<<<<<<<< * #self.plugin_group_widgets.clear() * # fill treestore with plugins */ __pyx_f_6_qtui__clear_sidepane(); /* "_qt_qtwogl.pyx":1049 * # fill treestore with plugins * cdef QStandardItem *item #px+ * for transl, func, subtree in plugin_data: # <<<<<<<<<<<<<< * item = new QStandardItem(str2q(transl)) #px/ * #item = QStandardItem(str2q(transl)) */ if (likely(PyList_CheckExact(__pyx_v_plugin_data)) || PyTuple_CheckExact(__pyx_v_plugin_data)) { __pyx_t_1 = __pyx_v_plugin_data; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0; __pyx_t_3 = NULL; } else { __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_plugin_data); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1049, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1049, __pyx_L1_error) } for (;;) { if (likely(!__pyx_t_3)) { if (likely(PyList_CheckExact(__pyx_t_1))) { if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(0, 1049, __pyx_L1_error) #else __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1049, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); #endif } else { if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(0, 1049, __pyx_L1_error) #else __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1049, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); #endif } } else { __pyx_t_4 = __pyx_t_3(__pyx_t_1); if (unlikely(!__pyx_t_4)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 1049, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_4); } if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) { PyObject* sequence = __pyx_t_4; #if !CYTHON_COMPILING_IN_PYPY Py_ssize_t size = Py_SIZE(sequence); #else Py_ssize_t size = PySequence_Size(sequence); #endif if (unlikely(size != 3)) { if (size > 3) __Pyx_RaiseTooManyValuesError(3); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 1049, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_5 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1); __pyx_t_7 = PyTuple_GET_ITEM(sequence, 2); } else { __pyx_t_5 = PyList_GET_ITEM(sequence, 0); __pyx_t_6 = PyList_GET_ITEM(sequence, 1); __pyx_t_7 = PyList_GET_ITEM(sequence, 2); } __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(__pyx_t_7); #else __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1049, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1049, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1049, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); #endif __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else { Py_ssize_t index = -1; __pyx_t_8 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1049, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_9 = Py_TYPE(__pyx_t_8)->tp_iternext; index = 0; __pyx_t_5 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_5)) goto __pyx_L5_unpacking_failed; __Pyx_GOTREF(__pyx_t_5); index = 1; __pyx_t_6 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_6)) goto __pyx_L5_unpacking_failed; __Pyx_GOTREF(__pyx_t_6); index = 2; __pyx_t_7 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_7)) goto __pyx_L5_unpacking_failed; __Pyx_GOTREF(__pyx_t_7); if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_8), 3) < 0) __PYX_ERR(0, 1049, __pyx_L1_error) __pyx_t_9 = NULL; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; goto __pyx_L6_unpacking_done; __pyx_L5_unpacking_failed:; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_9 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 1049, __pyx_L1_error) __pyx_L6_unpacking_done:; } __Pyx_XDECREF_SET(__pyx_v_transl, __pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF_SET(__pyx_v_func, __pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF_SET(__pyx_v_subtree, __pyx_t_7); __pyx_t_7 = 0; /* "_qt_qtwogl.pyx":1050 * cdef QStandardItem *item #px+ * for transl, func, subtree in plugin_data: * item = new QStandardItem(str2q(transl)) #px/ # <<<<<<<<<<<<<< * #item = QStandardItem(str2q(transl)) * if func is not None: */ __pyx_v_item = new QStandardItem(__pyx_f_10_qt_qtwogl_str2q(__pyx_v_transl)); /* "_qt_qtwogl.pyx":1052 * item = new QStandardItem(str2q(transl)) #px/ * #item = QStandardItem(str2q(transl)) * if func is not None: # <<<<<<<<<<<<<< * item.setData(tovariant(func)) * uidata.treestore.appendRow(item) */ __pyx_t_10 = (__pyx_v_func != Py_None); __pyx_t_11 = (__pyx_t_10 != 0); if (__pyx_t_11) { /* "_qt_qtwogl.pyx":1053 * #item = QStandardItem(str2q(transl)) * if func is not None: * item.setData(tovariant(func)) # <<<<<<<<<<<<<< * uidata.treestore.appendRow(item) * _fill_treestore(item, subtree) */ __pyx_v_item->setData(__pyx_f_10_qt_qtwogl_tovariant(__pyx_v_func)); /* "_qt_qtwogl.pyx":1052 * item = new QStandardItem(str2q(transl)) #px/ * #item = QStandardItem(str2q(transl)) * if func is not None: # <<<<<<<<<<<<<< * item.setData(tovariant(func)) * uidata.treestore.appendRow(item) */ } /* "_qt_qtwogl.pyx":1054 * if func is not None: * item.setData(tovariant(func)) * uidata.treestore.appendRow(item) # <<<<<<<<<<<<<< * _fill_treestore(item, subtree) * # create widgets in the sidepane to display the plugins */ __pyx_v_10_qt_qtwogl_uidata.treestore->appendRow(__pyx_v_item); /* "_qt_qtwogl.pyx":1055 * item.setData(tovariant(func)) * uidata.treestore.appendRow(item) * _fill_treestore(item, subtree) # <<<<<<<<<<<<<< * # create widgets in the sidepane to display the plugins * cdef QPushButton *button #px+ */ __pyx_f_10_qt_qtwogl__fill_treestore(__pyx_v_item, __pyx_v_subtree); /* "_qt_qtwogl.pyx":1049 * # fill treestore with plugins * cdef QStandardItem *item #px+ * for transl, func, subtree in plugin_data: # <<<<<<<<<<<<<< * item = new QStandardItem(str2q(transl)) #px/ * #item = QStandardItem(str2q(transl)) */ } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwogl.pyx":1059 * cdef QPushButton *button #px+ * cdef QTreeView *treeview #px+ * for i, [transl, func, subtree] in enumerate(plugin_data): # <<<<<<<<<<<<<< * button = qtui.create_sidepane_button(str2q(transl)) * treeview = qtui.create_sidepane_treeview(uidata.treestore, i) */ __Pyx_INCREF(__pyx_int_0); __pyx_t_1 = __pyx_int_0; if (likely(PyList_CheckExact(__pyx_v_plugin_data)) || PyTuple_CheckExact(__pyx_v_plugin_data)) { __pyx_t_4 = __pyx_v_plugin_data; __Pyx_INCREF(__pyx_t_4); __pyx_t_2 = 0; __pyx_t_3 = NULL; } else { __pyx_t_2 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_v_plugin_data); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1059, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1059, __pyx_L1_error) } for (;;) { if (likely(!__pyx_t_3)) { if (likely(PyList_CheckExact(__pyx_t_4))) { if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_4)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_7 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_2); __Pyx_INCREF(__pyx_t_7); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(0, 1059, __pyx_L1_error) #else __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1059, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); #endif } else { if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_4)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_2); __Pyx_INCREF(__pyx_t_7); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(0, 1059, __pyx_L1_error) #else __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1059, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); #endif } } else { __pyx_t_7 = __pyx_t_3(__pyx_t_4); if (unlikely(!__pyx_t_7)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 1059, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_7); } if ((likely(PyTuple_CheckExact(__pyx_t_7))) || (PyList_CheckExact(__pyx_t_7))) { PyObject* sequence = __pyx_t_7; #if !CYTHON_COMPILING_IN_PYPY Py_ssize_t size = Py_SIZE(sequence); #else Py_ssize_t size = PySequence_Size(sequence); #endif if (unlikely(size != 3)) { if (size > 3) __Pyx_RaiseTooManyValuesError(3); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 1059, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_6 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); __pyx_t_8 = PyTuple_GET_ITEM(sequence, 2); } else { __pyx_t_6 = PyList_GET_ITEM(sequence, 0); __pyx_t_5 = PyList_GET_ITEM(sequence, 1); __pyx_t_8 = PyList_GET_ITEM(sequence, 2); } __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(__pyx_t_8); #else __pyx_t_6 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1059, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1059, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_8 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1059, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); #endif __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } else { Py_ssize_t index = -1; __pyx_t_12 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1059, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_9 = Py_TYPE(__pyx_t_12)->tp_iternext; index = 0; __pyx_t_6 = __pyx_t_9(__pyx_t_12); if (unlikely(!__pyx_t_6)) goto __pyx_L10_unpacking_failed; __Pyx_GOTREF(__pyx_t_6); index = 1; __pyx_t_5 = __pyx_t_9(__pyx_t_12); if (unlikely(!__pyx_t_5)) goto __pyx_L10_unpacking_failed; __Pyx_GOTREF(__pyx_t_5); index = 2; __pyx_t_8 = __pyx_t_9(__pyx_t_12); if (unlikely(!__pyx_t_8)) goto __pyx_L10_unpacking_failed; __Pyx_GOTREF(__pyx_t_8); if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_12), 3) < 0) __PYX_ERR(0, 1059, __pyx_L1_error) __pyx_t_9 = NULL; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; goto __pyx_L11_unpacking_done; __pyx_L10_unpacking_failed:; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __pyx_t_9 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 1059, __pyx_L1_error) __pyx_L11_unpacking_done:; } __Pyx_XDECREF_SET(__pyx_v_transl, __pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF_SET(__pyx_v_func, __pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF_SET(__pyx_v_subtree, __pyx_t_8); __pyx_t_8 = 0; __Pyx_INCREF(__pyx_t_1); __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_1); __pyx_t_7 = __Pyx_PyInt_AddObjC(__pyx_t_1, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1059, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = __pyx_t_7; __pyx_t_7 = 0; /* "_qt_qtwogl.pyx":1060 * cdef QTreeView *treeview #px+ * for i, [transl, func, subtree] in enumerate(plugin_data): * button = qtui.create_sidepane_button(str2q(transl)) # <<<<<<<<<<<<<< * treeview = qtui.create_sidepane_treeview(uidata.treestore, i) * uidata.mainwindow.connect_sidepane(button, treeview) */ __pyx_v_button = __pyx_f_6_qtui__create_sidepane_button(__pyx_f_10_qt_qtwogl_str2q(__pyx_v_transl)); /* "_qt_qtwogl.pyx":1061 * for i, [transl, func, subtree] in enumerate(plugin_data): * button = qtui.create_sidepane_button(str2q(transl)) * treeview = qtui.create_sidepane_treeview(uidata.treestore, i) # <<<<<<<<<<<<<< * uidata.mainwindow.connect_sidepane(button, treeview) * qtui.set_active_plugin_group(-1) */ __pyx_t_13 = __Pyx_PyInt_As_int(__pyx_v_i); if (unlikely((__pyx_t_13 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1061, __pyx_L1_error) __pyx_v_treeview = __pyx_f_6_qtui__create_sidepane_treeview(__pyx_v_10_qt_qtwogl_uidata.treestore, __pyx_t_13); /* "_qt_qtwogl.pyx":1062 * button = qtui.create_sidepane_button(str2q(transl)) * treeview = qtui.create_sidepane_treeview(uidata.treestore, i) * uidata.mainwindow.connect_sidepane(button, treeview) # <<<<<<<<<<<<<< * qtui.set_active_plugin_group(-1) * ##pxm>IF 'qtw' == 'qtq' */ __pyx_v_10_qt_qtwogl_uidata.mainwindow->connect_sidepane(__pyx_v_button, __pyx_v_treeview); /* "_qt_qtwogl.pyx":1063 * treeview = qtui.create_sidepane_treeview(uidata.treestore, i) * uidata.mainwindow.connect_sidepane(button, treeview) * qtui.set_active_plugin_group(-1) # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtq' * #~ pydata.plugin_data = plugin_data */ __pyx_f_6_qtui__set_active_plugin_group(-1); /* "_qt_qtwogl.pyx":1059 * cdef QPushButton *button #px+ * cdef QTreeView *treeview #px+ * for i, [transl, func, subtree] in enumerate(plugin_data): # <<<<<<<<<<<<<< * button = qtui.create_sidepane_button(str2q(transl)) * treeview = qtui.create_sidepane_treeview(uidata.treestore, i) */ } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwogl.pyx":1041 * ##pxm>IF_END * * def fill_sidepane(plugin_data): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * # remove old plugins */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_8); __Pyx_XDECREF(__pyx_t_12); __Pyx_AddTraceback("_qt_qtwogl.fill_sidepane", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_transl); __Pyx_XDECREF(__pyx_v_func); __Pyx_XDECREF(__pyx_v_subtree); __Pyx_XDECREF(__pyx_v_i); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwogl.pyx":1070 * ##pxm>IF 'qtw' == 'qtw' * ##pxm-FUNC P * cdef cbool _hide_row(int treeview, const QModelIndex &index): # <<<<<<<<<<<<<< * funcidx = fromvariant(index.data(Qt.UserRole + 1)) * if not pydata.app.on_plugin_test_idx(funcidx): */ static bool __pyx_f_10_qt_qtwogl__hide_row(int __pyx_v_treeview, QModelIndex const &__pyx_v_index) { PyObject *__pyx_v_funcidx = NULL; PyObject *__pyx_v_hide_all = NULL; int __pyx_v_rows; int __pyx_v_r; bool __pyx_v_hide; bool __pyx_r; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; int __pyx_t_5; int __pyx_t_6; int __pyx_t_7; int __pyx_t_8; bool __pyx_t_9; __Pyx_RefNannySetupContext("_hide_row", 0); /* "_qt_qtwogl.pyx":1071 * ##pxm-FUNC P * cdef cbool _hide_row(int treeview, const QModelIndex &index): * funcidx = fromvariant(index.data(Qt.UserRole + 1)) # <<<<<<<<<<<<<< * if not pydata.app.on_plugin_test_idx(funcidx): * return True */ __pyx_t_1 = __pyx_f_10_qt_qtwogl_fromvariant(__pyx_v_index.data((Qt::UserRole + 1))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1071, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_funcidx = __pyx_t_1; __pyx_t_1 = 0; /* "_qt_qtwogl.pyx":1072 * cdef cbool _hide_row(int treeview, const QModelIndex &index): * funcidx = fromvariant(index.data(Qt.UserRole + 1)) * if not pydata.app.on_plugin_test_idx(funcidx): # <<<<<<<<<<<<<< * return True * hide_all = funcidx is None */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1072, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_app); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1072, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_on_plugin_test_idx); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1072, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } if (!__pyx_t_3) { __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_funcidx); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1072, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_funcidx}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1072, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_funcidx}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1072, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1072, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL; __Pyx_INCREF(__pyx_v_funcidx); __Pyx_GIVEREF(__pyx_v_funcidx); PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_funcidx); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1072, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 1072, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_6 = ((!__pyx_t_5) != 0); if (__pyx_t_6) { /* "_qt_qtwogl.pyx":1073 * funcidx = fromvariant(index.data(Qt.UserRole + 1)) * if not pydata.app.on_plugin_test_idx(funcidx): * return True # <<<<<<<<<<<<<< * hide_all = funcidx is None * rows = uidata.treestore.rowCount(index) */ __pyx_r = 1; goto __pyx_L0; /* "_qt_qtwogl.pyx":1072 * cdef cbool _hide_row(int treeview, const QModelIndex &index): * funcidx = fromvariant(index.data(Qt.UserRole + 1)) * if not pydata.app.on_plugin_test_idx(funcidx): # <<<<<<<<<<<<<< * return True * hide_all = funcidx is None */ } /* "_qt_qtwogl.pyx":1074 * if not pydata.app.on_plugin_test_idx(funcidx): * return True * hide_all = funcidx is None # <<<<<<<<<<<<<< * rows = uidata.treestore.rowCount(index) * for r in range(rows): */ __pyx_t_6 = (__pyx_v_funcidx == Py_None); __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1074, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_hide_all = __pyx_t_1; __pyx_t_1 = 0; /* "_qt_qtwogl.pyx":1075 * return True * hide_all = funcidx is None * rows = uidata.treestore.rowCount(index) # <<<<<<<<<<<<<< * for r in range(rows): * hide = _hide_row(treeview, uidata.treestore.index(r, 0, index)) */ __pyx_v_rows = __pyx_v_10_qt_qtwogl_uidata.treestore->rowCount(__pyx_v_index); /* "_qt_qtwogl.pyx":1076 * hide_all = funcidx is None * rows = uidata.treestore.rowCount(index) * for r in range(rows): # <<<<<<<<<<<<<< * hide = _hide_row(treeview, uidata.treestore.index(r, 0, index)) * qtui.set_row_hidden(treeview, r, index, hide) */ __pyx_t_7 = __pyx_v_rows; for (__pyx_t_8 = 0; __pyx_t_8 < __pyx_t_7; __pyx_t_8+=1) { __pyx_v_r = __pyx_t_8; /* "_qt_qtwogl.pyx":1077 * rows = uidata.treestore.rowCount(index) * for r in range(rows): * hide = _hide_row(treeview, uidata.treestore.index(r, 0, index)) # <<<<<<<<<<<<<< * qtui.set_row_hidden(treeview, r, index, hide) * hide_all = hide_all and hide */ __pyx_v_hide = __pyx_f_10_qt_qtwogl__hide_row(__pyx_v_treeview, __pyx_v_10_qt_qtwogl_uidata.treestore->index(__pyx_v_r, 0, __pyx_v_index)); /* "_qt_qtwogl.pyx":1078 * for r in range(rows): * hide = _hide_row(treeview, uidata.treestore.index(r, 0, index)) * qtui.set_row_hidden(treeview, r, index, hide) # <<<<<<<<<<<<<< * hide_all = hide_all and hide * return hide_all */ __pyx_f_6_qtui__set_row_hidden(__pyx_v_treeview, __pyx_v_r, __pyx_v_index, __pyx_v_hide); /* "_qt_qtwogl.pyx":1079 * hide = _hide_row(treeview, uidata.treestore.index(r, 0, index)) * qtui.set_row_hidden(treeview, r, index, hide) * hide_all = hide_all and hide # <<<<<<<<<<<<<< * return hide_all * ##pxm>IF_END */ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_hide_all); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 1079, __pyx_L1_error) if (__pyx_t_6) { } else { __Pyx_INCREF(__pyx_v_hide_all); __pyx_t_1 = __pyx_v_hide_all; goto __pyx_L6_bool_binop_done; } __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_v_hide); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1079, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = __pyx_t_2; __pyx_t_2 = 0; __pyx_L6_bool_binop_done:; __Pyx_DECREF_SET(__pyx_v_hide_all, __pyx_t_1); __pyx_t_1 = 0; } /* "_qt_qtwogl.pyx":1080 * qtui.set_row_hidden(treeview, r, index, hide) * hide_all = hide_all and hide * return hide_all # <<<<<<<<<<<<<< * ##pxm>IF_END * def update_sidepane(): */ __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_hide_all); if (unlikely((__pyx_t_9 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1080, __pyx_L1_error) __pyx_r = __pyx_t_9; goto __pyx_L0; /* "_qt_qtwogl.pyx":1070 * ##pxm>IF 'qtw' == 'qtw' * ##pxm-FUNC P * cdef cbool _hide_row(int treeview, const QModelIndex &index): # <<<<<<<<<<<<<< * funcidx = fromvariant(index.data(Qt.UserRole + 1)) * if not pydata.app.on_plugin_test_idx(funcidx): */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_WriteUnraisable("_qt_qtwogl._hide_row", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_r = 0; __pyx_L0:; __Pyx_XDECREF(__pyx_v_funcidx); __Pyx_XDECREF(__pyx_v_hide_all); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwogl.pyx":1082 * return hide_all * ##pxm>IF_END * def update_sidepane(): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * cdef QModelIndex index #px+ */ /* Python wrapper */ static PyObject *__pyx_pw_10_qt_qtwogl_19update_sidepane(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/ static PyMethodDef __pyx_mdef_10_qt_qtwogl_19update_sidepane = {"update_sidepane", (PyCFunction)__pyx_pw_10_qt_qtwogl_19update_sidepane, METH_NOARGS, 0}; static PyObject *__pyx_pw_10_qt_qtwogl_19update_sidepane(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("update_sidepane (wrapper)", 0); __pyx_r = __pyx_pf_10_qt_qtwogl_18update_sidepane(__pyx_self); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_10_qt_qtwogl_18update_sidepane(CYTHON_UNUSED PyObject *__pyx_self) { QModelIndex __pyx_v_index; int __pyx_v_i; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; int __pyx_t_2; __Pyx_RefNannySetupContext("update_sidepane", 0); /* "_qt_qtwogl.pyx":1085 * ##pxm>IF 'qtw' == 'qtw' * cdef QModelIndex index #px+ * for i in range(qtui.get_plugin_group_count()): # <<<<<<<<<<<<<< * index = qtui.root_index(i) * qtui.hide_row(i, _hide_row(i, index)) */ __pyx_t_1 = __pyx_f_6_qtui__get_plugin_group_count(); for (__pyx_t_2 = 0; __pyx_t_2 < __pyx_t_1; __pyx_t_2+=1) { __pyx_v_i = __pyx_t_2; /* "_qt_qtwogl.pyx":1086 * cdef QModelIndex index #px+ * for i in range(qtui.get_plugin_group_count()): * index = qtui.root_index(i) # <<<<<<<<<<<<<< * qtui.hide_row(i, _hide_row(i, index)) * ##pxm>IF 'qtw' == 'qtq' */ __pyx_v_index = __pyx_f_6_qtui__root_index(__pyx_v_i); /* "_qt_qtwogl.pyx":1087 * for i in range(qtui.get_plugin_group_count()): * index = qtui.root_index(i) * qtui.hide_row(i, _hide_row(i, index)) # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtq' * #~ def filter_plugin_data(tree): */ __pyx_f_6_qtui__hide_row(__pyx_v_i, __pyx_f_10_qt_qtwogl__hide_row(__pyx_v_i, __pyx_v_index)); } /* "_qt_qtwogl.pyx":1082 * return hide_all * ##pxm>IF_END * def update_sidepane(): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * cdef QModelIndex index #px+ */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwogl.pyx":1108 * #~ ##pxm>IF_END * * def set_toolbar_state(state): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * qtui.set_toolbar_state(state[0], state[1], state[2], state[3], state[4]) */ /* Python wrapper */ static PyObject *__pyx_pw_10_qt_qtwogl_21set_toolbar_state(PyObject *__pyx_self, PyObject *__pyx_v_state); /*proto*/ static PyMethodDef __pyx_mdef_10_qt_qtwogl_21set_toolbar_state = {"set_toolbar_state", (PyCFunction)__pyx_pw_10_qt_qtwogl_21set_toolbar_state, METH_O, 0}; static PyObject *__pyx_pw_10_qt_qtwogl_21set_toolbar_state(PyObject *__pyx_self, PyObject *__pyx_v_state) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("set_toolbar_state (wrapper)", 0); __pyx_r = __pyx_pf_10_qt_qtwogl_20set_toolbar_state(__pyx_self, ((PyObject *)__pyx_v_state)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_10_qt_qtwogl_20set_toolbar_state(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_state) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_t_2; int __pyx_t_3; int __pyx_t_4; int __pyx_t_5; int __pyx_t_6; __Pyx_RefNannySetupContext("set_toolbar_state", 0); /* "_qt_qtwogl.pyx":1110 * def set_toolbar_state(state): * ##pxm>IF 'qtw' == 'qtw' * qtui.set_toolbar_state(state[0], state[1], state[2], state[3], state[4]) # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtq' * #~ ctx_set(b'toolbarstate', state) */ __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_state, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1110, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1110, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_state, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1110, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1110, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_state, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1110, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1110, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_state, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1110, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1110, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_state, 4, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1110, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_6 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1110, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_f_6_qtui__set_toolbar_state(__pyx_t_2, __pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_t_6); /* "_qt_qtwogl.pyx":1108 * #~ ##pxm>IF_END * * def set_toolbar_state(state): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * qtui.set_toolbar_state(state[0], state[1], state[2], state[3], state[4]) */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("_qt_qtwogl.set_toolbar_state", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwogl.pyx":1148 * * ##pxm-FUNC P * cdef QVariant create_stdmodel(values): # <<<<<<<<<<<<<< * cdef QObjectList qlist #px/ * #items = [] */ static QVariant __pyx_f_10_qt_qtwogl_create_stdmodel(PyObject *__pyx_v_values) { QList __pyx_v_qlist; PyObject *__pyx_v_text = NULL; PyObject *__pyx_v_key = NULL; CYTHON_UNUSED PyObject *__pyx_v_unused = NULL; QVariant __pyx_v_items; QVariant __pyx_r; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; Py_ssize_t __pyx_t_2; PyObject *(*__pyx_t_3)(PyObject *); PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; PyObject *__pyx_t_7 = NULL; PyObject *(*__pyx_t_8)(PyObject *); PyObject *__pyx_t_9 = NULL; __Pyx_RefNannySetupContext("create_stdmodel", 0); /* "_qt_qtwogl.pyx":1151 * cdef QObjectList qlist #px/ * #items = [] * for text, key, *unused in values: # <<<<<<<<<<<<<< * qlist.append(new TextKeyItem(str2q(text), str2q(key))) #px/ * #items.append({'text': text, 'key': key}) */ if (likely(PyList_CheckExact(__pyx_v_values)) || PyTuple_CheckExact(__pyx_v_values)) { __pyx_t_1 = __pyx_v_values; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0; __pyx_t_3 = NULL; } else { __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_values); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1151, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1151, __pyx_L1_error) } for (;;) { if (likely(!__pyx_t_3)) { if (likely(PyList_CheckExact(__pyx_t_1))) { if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(0, 1151, __pyx_L1_error) #else __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1151, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); #endif } else { if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(0, 1151, __pyx_L1_error) #else __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1151, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); #endif } } else { __pyx_t_4 = __pyx_t_3(__pyx_t_1); if (unlikely(!__pyx_t_4)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 1151, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_4); } { Py_ssize_t index = -1; PyObject** temps[3] = {&__pyx_t_5,&__pyx_t_6}; __pyx_t_7 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1151, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_8 = Py_TYPE(__pyx_t_7)->tp_iternext; for (index=0; index < 2; index++) { PyObject* item = __pyx_t_8(__pyx_t_7); if (unlikely(!item)) goto __pyx_L5_unpacking_failed; __Pyx_GOTREF(item); *(temps[index]) = item; } goto __pyx_L6_unpacking_done; __pyx_L5_unpacking_failed:; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_8 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 1151, __pyx_L1_error) __pyx_L6_unpacking_done:; } __pyx_t_9 = PySequence_List(__pyx_t_7); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1151, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_XDECREF_SET(__pyx_v_text, __pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF_SET(__pyx_v_unused, ((PyObject*)__pyx_t_9)); __pyx_t_9 = 0; /* "_qt_qtwogl.pyx":1152 * #items = [] * for text, key, *unused in values: * qlist.append(new TextKeyItem(str2q(text), str2q(key))) #px/ # <<<<<<<<<<<<<< * #items.append({'text': text, 'key': key}) * cdef QVariant items #px+ */ __pyx_v_qlist.append(((QObject *)new TextKeyItem(__pyx_f_10_qt_qtwogl_str2q(__pyx_v_text), __pyx_f_10_qt_qtwogl_str2q(__pyx_v_key)))); /* "_qt_qtwogl.pyx":1151 * cdef QObjectList qlist #px/ * #items = [] * for text, key, *unused in values: # <<<<<<<<<<<<<< * qlist.append(new TextKeyItem(str2q(text), str2q(key))) #px/ * #items.append({'text': text, 'key': key}) */ } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwogl.pyx":1155 * #items.append({'text': text, 'key': key}) * cdef QVariant items #px+ * items.setValue[QObjectList](qlist) #px+ # <<<<<<<<<<<<<< * return items * */ __pyx_v_items.setValue >(__pyx_v_qlist); /* "_qt_qtwogl.pyx":1156 * cdef QVariant items #px+ * items.setValue[QObjectList](qlist) #px+ * return items # <<<<<<<<<<<<<< * * ##pxm>IF 'qtw' == 'qtq' */ __pyx_r = __pyx_v_items; goto __pyx_L0; /* "_qt_qtwogl.pyx":1148 * * ##pxm-FUNC P * cdef QVariant create_stdmodel(values): # <<<<<<<<<<<<<< * cdef QObjectList qlist #px/ * #items = [] */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_9); __Pyx_WriteUnraisable("_qt_qtwogl.create_stdmodel", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_XDECREF(__pyx_v_text); __Pyx_XDECREF(__pyx_v_key); __Pyx_XDECREF(__pyx_v_unused); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwogl.pyx":1224 * ##pxh> * ##pxm-FUNC PH with gil * void _on_picking_result(int index) with gil: # <<<<<<<<<<<<<< * pydata.app.on_picking_result(index) * */ void MainView::_on_picking_result(int __pyx_v_index) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("_on_picking_result", 0); /* "_qt_qtwogl.pyx":1225 * ##pxm-FUNC PH with gil * void _on_picking_result(int index) with gil: * pydata.app.on_picking_result(index) # <<<<<<<<<<<<<< * * ##pxm-FUNC PH nogil */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1225, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_app); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1225, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_on_picking_result); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1225, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1225, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } if (!__pyx_t_4) { __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1225, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_3}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1225, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_3}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1225, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif { __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1225, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL; __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_3); __pyx_t_3 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1225, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwogl.pyx":1224 * ##pxh> * ##pxm-FUNC PH with gil * void _on_picking_result(int index) with gil: # <<<<<<<<<<<<<< * pydata.app.on_picking_result(index) * */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_WriteUnraisable("MainView._on_picking_result", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwogl.pyx":1228 * * ##pxm-FUNC PH nogil * void _on_debug_fps(int fps) nogil: # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * qtui.set_debug_text(QString_number(fps)) */ void MainView::_on_debug_fps(int __pyx_v_fps) { /* "_qt_qtwogl.pyx":1230 * void _on_debug_fps(int fps) nogil: * ##pxm>IF 'qtw' == 'qtw' * qtui.set_debug_text(QString_number(fps)) # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtq' * #~ uidata.ctx.setProperty(b'debugmsg', QVariant(fps)) */ __pyx_f_6_qtui__set_debug_text(QString::number(__pyx_v_fps)); /* "_qt_qtwogl.pyx":1228 * * ##pxm-FUNC PH nogil * void _on_debug_fps(int fps) nogil: # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * qtui.set_debug_text(QString_number(fps)) */ /* function exit code */ } /* "_qt_qtwogl.pyx":1236 * * ##pxm-FUNC PH nogil * void _on_offscreen_image(QImage image) nogil: # <<<<<<<<<<<<<< * uidata.offscreen_image = image * */ void MainView::_on_offscreen_image(QImage __pyx_v_image) { /* "_qt_qtwogl.pyx":1237 * ##pxm-FUNC PH nogil * void _on_offscreen_image(QImage image) nogil: * uidata.offscreen_image = image # <<<<<<<<<<<<<< * * ##pxm>IF 'qtw' == 'qtw' */ __pyx_v_10_qt_qtwogl_uidata.offscreen_image = __pyx_v_image; /* "_qt_qtwogl.pyx":1236 * * ##pxm-FUNC PH nogil * void _on_offscreen_image(QImage image) nogil: # <<<<<<<<<<<<<< * uidata.offscreen_image = image * */ /* function exit code */ } /* "_qt_qtwogl.pyx":1243 * ##pxm>IF_END * ##pxm-FUNC PH nogil * void on_beforeSynchronizing() nogil: # <<<<<<<<<<<<<< * if renderdata.renderer is NULL: * render_init() */ void MainView::on_beforeSynchronizing(void) { int __pyx_t_1; int __pyx_t_2; /* "_qt_qtwogl.pyx":1244 * ##pxm-FUNC PH nogil * void on_beforeSynchronizing() nogil: * if renderdata.renderer is NULL: # <<<<<<<<<<<<<< * render_init() * this.connect_renderer(renderdata.renderer) */ __pyx_t_1 = ((__pyx_v_10_qt_qtwogl_renderdata.renderer == NULL) != 0); if (__pyx_t_1) { /* "_qt_qtwogl.pyx":1245 * void on_beforeSynchronizing() nogil: * if renderdata.renderer is NULL: * render_init() # <<<<<<<<<<<<<< * this.connect_renderer(renderdata.renderer) * IF OFFSCREEN: #px+ */ __pyx_f_10_qt_qtwogl_render_init(); /* "_qt_qtwogl.pyx":1246 * if renderdata.renderer is NULL: * render_init() * this.connect_renderer(renderdata.renderer) # <<<<<<<<<<<<<< * IF OFFSCREEN: #px+ * this.connect_renderer_offscreen(renderdata.renderer) #px+ */ this->connect_renderer(__pyx_v_10_qt_qtwogl_renderdata.renderer); /* "_qt_qtwogl.pyx":1244 * ##pxm-FUNC PH nogil * void on_beforeSynchronizing() nogil: * if renderdata.renderer is NULL: # <<<<<<<<<<<<<< * render_init() * this.connect_renderer(renderdata.renderer) */ } /* "_qt_qtwogl.pyx":1249 * IF OFFSCREEN: #px+ * this.connect_renderer_offscreen(renderdata.renderer) #px+ * glarea.render_resize(uidata.gl_y, uidata.width, uidata.height) # <<<<<<<<<<<<<< * glarea.sync() * */ __pyx_f_11_glarea_ogl_render_resize(__pyx_v_10_qt_qtwogl_uidata.gl_y, __pyx_v_10_qt_qtwogl_uidata.width, __pyx_v_10_qt_qtwogl_uidata.height); /* "_qt_qtwogl.pyx":1250 * this.connect_renderer_offscreen(renderdata.renderer) #px+ * glarea.render_resize(uidata.gl_y, uidata.width, uidata.height) * glarea.sync() # <<<<<<<<<<<<<< * * if uidata.atlas_changed: */ __pyx_f_11_glarea_ogl_sync(); /* "_qt_qtwogl.pyx":1252 * glarea.sync() * * if uidata.atlas_changed: # <<<<<<<<<<<<<< * renderdata.atlas_changed = True * renderdata.atlas_width = uidata.atlas_width */ __pyx_t_1 = (__pyx_v_10_qt_qtwogl_uidata.atlas_changed != 0); if (__pyx_t_1) { /* "_qt_qtwogl.pyx":1253 * * if uidata.atlas_changed: * renderdata.atlas_changed = True # <<<<<<<<<<<<<< * renderdata.atlas_width = uidata.atlas_width * renderdata.atlas_height = uidata.atlas_height */ __pyx_v_10_qt_qtwogl_renderdata.atlas_changed = 1; /* "_qt_qtwogl.pyx":1254 * if uidata.atlas_changed: * renderdata.atlas_changed = True * renderdata.atlas_width = uidata.atlas_width # <<<<<<<<<<<<<< * renderdata.atlas_height = uidata.atlas_height * glarea.sync_set_atlas_data() */ __pyx_t_2 = __pyx_v_10_qt_qtwogl_uidata.atlas_width; __pyx_v_10_qt_qtwogl_renderdata.atlas_width = __pyx_t_2; /* "_qt_qtwogl.pyx":1255 * renderdata.atlas_changed = True * renderdata.atlas_width = uidata.atlas_width * renderdata.atlas_height = uidata.atlas_height # <<<<<<<<<<<<<< * glarea.sync_set_atlas_data() * uidata.atlas_changed = False */ __pyx_t_2 = __pyx_v_10_qt_qtwogl_uidata.atlas_height; __pyx_v_10_qt_qtwogl_renderdata.atlas_height = __pyx_t_2; /* "_qt_qtwogl.pyx":1256 * renderdata.atlas_width = uidata.atlas_width * renderdata.atlas_height = uidata.atlas_height * glarea.sync_set_atlas_data() # <<<<<<<<<<<<<< * uidata.atlas_changed = False * if uidata.pick_requested: */ __pyx_f_11_glarea_ogl_sync_set_atlas_data(); /* "_qt_qtwogl.pyx":1257 * renderdata.atlas_height = uidata.atlas_height * glarea.sync_set_atlas_data() * uidata.atlas_changed = False # <<<<<<<<<<<<<< * if uidata.pick_requested: * renderdata.pickxy_changed = True */ __pyx_v_10_qt_qtwogl_uidata.atlas_changed = 0; /* "_qt_qtwogl.pyx":1252 * glarea.sync() * * if uidata.atlas_changed: # <<<<<<<<<<<<<< * renderdata.atlas_changed = True * renderdata.atlas_width = uidata.atlas_width */ } /* "_qt_qtwogl.pyx":1258 * glarea.sync_set_atlas_data() * uidata.atlas_changed = False * if uidata.pick_requested: # <<<<<<<<<<<<<< * renderdata.pickxy_changed = True * glarea.sync_set_pick_position() */ __pyx_t_1 = (__pyx_v_10_qt_qtwogl_uidata.pick_requested != 0); if (__pyx_t_1) { /* "_qt_qtwogl.pyx":1259 * uidata.atlas_changed = False * if uidata.pick_requested: * renderdata.pickxy_changed = True # <<<<<<<<<<<<<< * glarea.sync_set_pick_position() * */ __pyx_v_10_qt_qtwogl_renderdata.pickxy_changed = 1; /* "_qt_qtwogl.pyx":1260 * if uidata.pick_requested: * renderdata.pickxy_changed = True * glarea.sync_set_pick_position() # <<<<<<<<<<<<<< * * ##pxm-FUNC PH nogil */ __pyx_f_11_glarea_ogl_sync_set_pick_position(); /* "_qt_qtwogl.pyx":1258 * glarea.sync_set_atlas_data() * uidata.atlas_changed = False * if uidata.pick_requested: # <<<<<<<<<<<<<< * renderdata.pickxy_changed = True * glarea.sync_set_pick_position() */ } /* "_qt_qtwogl.pyx":1243 * ##pxm>IF_END * ##pxm-FUNC PH nogil * void on_beforeSynchronizing() nogil: # <<<<<<<<<<<<<< * if renderdata.renderer is NULL: * render_init() */ /* function exit code */ } /* "_qt_qtwogl.pyx":1263 * * ##pxm-FUNC PH nogil * void on_sceneGraphInvalidated() nogil: # <<<<<<<<<<<<<< * if renderdata.renderer is not NULL: * render_destroy() */ void MainView::on_sceneGraphInvalidated(void) { int __pyx_t_1; /* "_qt_qtwogl.pyx":1264 * ##pxm-FUNC PH nogil * void on_sceneGraphInvalidated() nogil: * if renderdata.renderer is not NULL: # <<<<<<<<<<<<<< * render_destroy() * del renderdata.renderer */ __pyx_t_1 = ((__pyx_v_10_qt_qtwogl_renderdata.renderer != NULL) != 0); if (__pyx_t_1) { /* "_qt_qtwogl.pyx":1265 * void on_sceneGraphInvalidated() nogil: * if renderdata.renderer is not NULL: * render_destroy() # <<<<<<<<<<<<<< * del renderdata.renderer * renderdata.renderer = NULL */ __pyx_f_10_qt_qtwogl_render_destroy(); /* "_qt_qtwogl.pyx":1266 * if renderdata.renderer is not NULL: * render_destroy() * del renderdata.renderer # <<<<<<<<<<<<<< * renderdata.renderer = NULL * */ delete __pyx_v_10_qt_qtwogl_renderdata.renderer; /* "_qt_qtwogl.pyx":1267 * render_destroy() * del renderdata.renderer * renderdata.renderer = NULL # <<<<<<<<<<<<<< * * ##pxm>IF 'qtw' == 'qtw' */ __pyx_v_10_qt_qtwogl_renderdata.renderer = NULL; /* "_qt_qtwogl.pyx":1264 * ##pxm-FUNC PH nogil * void on_sceneGraphInvalidated() nogil: * if renderdata.renderer is not NULL: # <<<<<<<<<<<<<< * render_destroy() * del renderdata.renderer */ } /* "_qt_qtwogl.pyx":1263 * * ##pxm-FUNC PH nogil * void on_sceneGraphInvalidated() nogil: # <<<<<<<<<<<<<< * if renderdata.renderer is not NULL: * render_destroy() */ /* function exit code */ } /* "_qt_qtwogl.pyx":1272 * ##pxh> * ##pxm-FUNC PH with gil * void resizeEvent(QResizeEvent *event) with gil: # <<<<<<<<<<<<<< * settings['window.size'] = event.size().width(), event.size().height() * pos = qtui.splitter_pos() */ void MainView::resizeEvent(QResizeEvent *__pyx_v_event) { int __pyx_v_pos; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; int __pyx_t_4; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("resizeEvent", 0); /* "_qt_qtwogl.pyx":1273 * ##pxm-FUNC PH with gil * void resizeEvent(QResizeEvent *event) with gil: * settings['window.size'] = event.size().width(), event.size().height() # <<<<<<<<<<<<<< * pos = qtui.splitter_pos() * if pos > 0: # ignore the first resize event where sizes==[0,0] */ __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_event->size().width()); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1273, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_event->size().height()); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1273, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1273, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2); __pyx_t_1 = 0; __pyx_t_2 = 0; __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1273, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (unlikely(PyObject_SetItem(__pyx_t_2, __pyx_kp_u_window_size, __pyx_t_3) < 0)) __PYX_ERR(0, 1273, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "_qt_qtwogl.pyx":1274 * void resizeEvent(QResizeEvent *event) with gil: * settings['window.size'] = event.size().width(), event.size().height() * pos = qtui.splitter_pos() # <<<<<<<<<<<<<< * if pos > 0: # ignore the first resize event where sizes==[0,0] * settings['window.divider'] = pos */ __pyx_v_pos = __pyx_f_6_qtui__splitter_pos(); /* "_qt_qtwogl.pyx":1275 * settings['window.size'] = event.size().width(), event.size().height() * pos = qtui.splitter_pos() * if pos > 0: # ignore the first resize event where sizes==[0,0] # <<<<<<<<<<<<<< * settings['window.divider'] = pos * this.QWidget_resizeEvent(event) #px/ */ __pyx_t_4 = ((__pyx_v_pos > 0) != 0); if (__pyx_t_4) { /* "_qt_qtwogl.pyx":1276 * pos = qtui.splitter_pos() * if pos > 0: # ignore the first resize event where sizes==[0,0] * settings['window.divider'] = pos # <<<<<<<<<<<<<< * this.QWidget_resizeEvent(event) #px/ * #QWidget.resizeEvent(this, event) */ __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_pos); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1276, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1276, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (unlikely(PyObject_SetItem(__pyx_t_2, __pyx_kp_u_window_divider, __pyx_t_3) < 0)) __PYX_ERR(0, 1276, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "_qt_qtwogl.pyx":1275 * settings['window.size'] = event.size().width(), event.size().height() * pos = qtui.splitter_pos() * if pos > 0: # ignore the first resize event where sizes==[0,0] # <<<<<<<<<<<<<< * settings['window.divider'] = pos * this.QWidget_resizeEvent(event) #px/ */ } /* "_qt_qtwogl.pyx":1277 * if pos > 0: # ignore the first resize event where sizes==[0,0] * settings['window.divider'] = pos * this.QWidget_resizeEvent(event) #px/ # <<<<<<<<<<<<<< * #QWidget.resizeEvent(this, event) * ##pxm-FUNC PH with gil */ this->QWidget::resizeEvent(__pyx_v_event); /* "_qt_qtwogl.pyx":1272 * ##pxh> * ##pxm-FUNC PH with gil * void resizeEvent(QResizeEvent *event) with gil: # <<<<<<<<<<<<<< * settings['window.size'] = event.size().width(), event.size().height() * pos = qtui.splitter_pos() */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_WriteUnraisable("MainView.resizeEvent", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwogl.pyx":1280 * #QWidget.resizeEvent(this, event) * ##pxm-FUNC PH with gil * void closeEvent(QCloseEvent *event) with gil: # <<<<<<<<<<<<<< * destroy_resources() * try: */ void MainView::closeEvent(QCloseEvent *__pyx_v_event) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; int __pyx_t_4; int __pyx_t_5; char const *__pyx_t_6; PyObject *__pyx_t_7 = NULL; PyObject *__pyx_t_8 = NULL; PyObject *__pyx_t_9 = NULL; PyObject *__pyx_t_10 = NULL; PyObject *__pyx_t_11 = NULL; PyObject *__pyx_t_12 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("closeEvent", 0); /* "_qt_qtwogl.pyx":1281 * ##pxm-FUNC PH with gil * void closeEvent(QCloseEvent *event) with gil: * destroy_resources() # <<<<<<<<<<<<<< * try: * pydata.app.on_closing() */ __pyx_f_10_qt_qtwogl_destroy_resources(); /* "_qt_qtwogl.pyx":1282 * void closeEvent(QCloseEvent *event) with gil: * destroy_resources() * try: # <<<<<<<<<<<<<< * pydata.app.on_closing() * finally: */ /*try:*/ { /* "_qt_qtwogl.pyx":1283 * destroy_resources() * try: * pydata.app.on_closing() # <<<<<<<<<<<<<< * finally: * this.QWidget_closeEvent(event) #px/ */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1283, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_app); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1283, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_on_closing); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1283, __pyx_L4_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } if (__pyx_t_3) { __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1283, __pyx_L4_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1283, __pyx_L4_error) } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } /* "_qt_qtwogl.pyx":1285 * pydata.app.on_closing() * finally: * this.QWidget_closeEvent(event) #px/ # <<<<<<<<<<<<<< * #QWidget.closeEvent(this, event) * ##pxm-FUNC PH with gil */ /*finally:*/ { /*normal exit:*/{ this->QWidget::closeEvent(__pyx_v_event); goto __pyx_L5; } /*exception exit:*/{ __Pyx_PyThreadState_declare __pyx_L4_error:; __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __Pyx_PyThreadState_assign __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12); if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9) < 0)) __Pyx_ErrFetch(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9); __Pyx_XGOTREF(__pyx_t_7); __Pyx_XGOTREF(__pyx_t_8); __Pyx_XGOTREF(__pyx_t_9); __Pyx_XGOTREF(__pyx_t_10); __Pyx_XGOTREF(__pyx_t_11); __Pyx_XGOTREF(__pyx_t_12); __pyx_t_4 = __pyx_lineno; __pyx_t_5 = __pyx_clineno; __pyx_t_6 = __pyx_filename; { this->QWidget::closeEvent(__pyx_v_event); } __Pyx_PyThreadState_assign if (PY_MAJOR_VERSION >= 3) { __Pyx_XGIVEREF(__pyx_t_10); __Pyx_XGIVEREF(__pyx_t_11); __Pyx_XGIVEREF(__pyx_t_12); __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12); } __Pyx_XGIVEREF(__pyx_t_7); __Pyx_XGIVEREF(__pyx_t_8); __Pyx_XGIVEREF(__pyx_t_9); __Pyx_ErrRestore(__pyx_t_7, __pyx_t_8, __pyx_t_9); __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_lineno = __pyx_t_4; __pyx_clineno = __pyx_t_5; __pyx_filename = __pyx_t_6; goto __pyx_L1_error; } __pyx_L5:; } /* "_qt_qtwogl.pyx":1280 * #QWidget.resizeEvent(this, event) * ##pxm-FUNC PH with gil * void closeEvent(QCloseEvent *event) with gil: # <<<<<<<<<<<<<< * destroy_resources() * try: */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_WriteUnraisable("MainView.closeEvent", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwogl.pyx":1288 * #QWidget.closeEvent(this, event) * ##pxm-FUNC PH with gil * void keyPressEvent(QKeyEvent *event) with gil: # <<<<<<<<<<<<<< * if not pydata.app.on_key_pressed(event.key(), int(event.modifiers()) & SAFE_MODIFIER_MASK, False): * event.ignore() */ void MainView::keyPressEvent(QKeyEvent *__pyx_v_event) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; int __pyx_t_7; int __pyx_t_8; int __pyx_t_9; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("keyPressEvent", 0); /* "_qt_qtwogl.pyx":1289 * ##pxm-FUNC PH with gil * void keyPressEvent(QKeyEvent *event) with gil: * if not pydata.app.on_key_pressed(event.key(), int(event.modifiers()) & SAFE_MODIFIER_MASK, False): # <<<<<<<<<<<<<< * event.ignore() * this.QWidget_keyPressEvent(event) #px/ */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1289, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_app); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1289, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_on_key_pressed); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1289, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_event->key()); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1289, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyInt_From_Qt_3a__3a_KeyboardModifiers(__pyx_v_event->modifiers()); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1289, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1289, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)(&PyInt_Type)), __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1289, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_e_10_qt_qtwogl_SAFE_MODIFIER_MASK); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1289, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = PyNumber_And(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1289, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = NULL; __pyx_t_7 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_7 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_5, __pyx_t_3, __pyx_t_6, Py_False}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_7, 3+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1289, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_5, __pyx_t_3, __pyx_t_6, Py_False}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_7, 3+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1289, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else #endif { __pyx_t_4 = PyTuple_New(3+__pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1289, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_7, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_7, __pyx_t_6); __Pyx_INCREF(Py_False); __Pyx_GIVEREF(Py_False); PyTuple_SET_ITEM(__pyx_t_4, 2+__pyx_t_7, Py_False); __pyx_t_3 = 0; __pyx_t_6 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1289, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 1289, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_9 = ((!__pyx_t_8) != 0); if (__pyx_t_9) { /* "_qt_qtwogl.pyx":1290 * void keyPressEvent(QKeyEvent *event) with gil: * if not pydata.app.on_key_pressed(event.key(), int(event.modifiers()) & SAFE_MODIFIER_MASK, False): * event.ignore() # <<<<<<<<<<<<<< * this.QWidget_keyPressEvent(event) #px/ * #QWidget.keyPressEvent(this, event) */ __pyx_v_event->ignore(); /* "_qt_qtwogl.pyx":1291 * if not pydata.app.on_key_pressed(event.key(), int(event.modifiers()) & SAFE_MODIFIER_MASK, False): * event.ignore() * this.QWidget_keyPressEvent(event) #px/ # <<<<<<<<<<<<<< * #QWidget.keyPressEvent(this, event) * ##pxh> */ this->QWidget::keyPressEvent(__pyx_v_event); /* "_qt_qtwogl.pyx":1289 * ##pxm-FUNC PH with gil * void keyPressEvent(QKeyEvent *event) with gil: * if not pydata.app.on_key_pressed(event.key(), int(event.modifiers()) & SAFE_MODIFIER_MASK, False): # <<<<<<<<<<<<<< * event.ignore() * this.QWidget_keyPressEvent(event) #px/ */ } /* "_qt_qtwogl.pyx":1288 * #QWidget.closeEvent(this, event) * ##pxm-FUNC PH with gil * void keyPressEvent(QKeyEvent *event) with gil: # <<<<<<<<<<<<<< * if not pydata.app.on_key_pressed(event.key(), int(event.modifiers()) & SAFE_MODIFIER_MASK, False): * event.ignore() */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_WriteUnraisable("MainView.keyPressEvent", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwogl.pyx":1295 * ##pxh> * ##pxm:ACTION * void on_action_challenge_triggered() with gil: pydata.app.on_action_challenge_triggered() # <<<<<<<<<<<<<< * void on_action_new_solved_triggered() with gil: pydata.app.on_action_new_solved_triggered() * void on_action_preferences_triggered() with gil: pydata.app.on_action_preferences_triggered() */ void MainView::on_action_challenge_triggered(void) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_action_challenge_triggered", 0); __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1295, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_app); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1295, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_on_action_challenge_triggered); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1295, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } if (__pyx_t_3) { __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1295, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1295, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_WriteUnraisable("MainView.on_action_challenge_triggered", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwogl.pyx":1296 * ##pxm:ACTION * void on_action_challenge_triggered() with gil: pydata.app.on_action_challenge_triggered() * void on_action_new_solved_triggered() with gil: pydata.app.on_action_new_solved_triggered() # <<<<<<<<<<<<<< * void on_action_preferences_triggered() with gil: pydata.app.on_action_preferences_triggered() * void on_action_reset_rotation_triggered() with gil: pydata.app.on_action_reset_rotation_triggered() */ void MainView::on_action_new_solved_triggered(void) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_action_new_solved_triggered", 0); __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1296, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_app); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1296, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_on_action_new_solved_triggered); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1296, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } if (__pyx_t_3) { __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1296, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1296, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_WriteUnraisable("MainView.on_action_new_solved_triggered", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwogl.pyx":1297 * void on_action_challenge_triggered() with gil: pydata.app.on_action_challenge_triggered() * void on_action_new_solved_triggered() with gil: pydata.app.on_action_new_solved_triggered() * void on_action_preferences_triggered() with gil: pydata.app.on_action_preferences_triggered() # <<<<<<<<<<<<<< * void on_action_reset_rotation_triggered() with gil: pydata.app.on_action_reset_rotation_triggered() * void on_action_rewind_triggered() with gil: pydata.app.on_action_rewind_triggered() */ void MainView::on_action_preferences_triggered(void) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_action_preferences_triggered", 0); __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1297, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_app); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1297, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_on_action_preferences_triggered); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1297, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } if (__pyx_t_3) { __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1297, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1297, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_WriteUnraisable("MainView.on_action_preferences_triggered", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwogl.pyx":1298 * void on_action_new_solved_triggered() with gil: pydata.app.on_action_new_solved_triggered() * void on_action_preferences_triggered() with gil: pydata.app.on_action_preferences_triggered() * void on_action_reset_rotation_triggered() with gil: pydata.app.on_action_reset_rotation_triggered() # <<<<<<<<<<<<<< * void on_action_rewind_triggered() with gil: pydata.app.on_action_rewind_triggered() * void on_action_previous_triggered() with gil: pydata.app.on_action_previous_triggered() */ void MainView::on_action_reset_rotation_triggered(void) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_action_reset_rotation_triggered", 0); __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1298, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_app); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1298, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_on_action_reset_rotation_trigger); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1298, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } if (__pyx_t_3) { __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1298, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1298, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_WriteUnraisable("MainView.on_action_reset_rotation_triggered", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwogl.pyx":1299 * void on_action_preferences_triggered() with gil: pydata.app.on_action_preferences_triggered() * void on_action_reset_rotation_triggered() with gil: pydata.app.on_action_reset_rotation_triggered() * void on_action_rewind_triggered() with gil: pydata.app.on_action_rewind_triggered() # <<<<<<<<<<<<<< * void on_action_previous_triggered() with gil: pydata.app.on_action_previous_triggered() * void on_action_stop_triggered() with gil: pydata.app.on_action_stop_triggered() */ void MainView::on_action_rewind_triggered(void) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_action_rewind_triggered", 0); __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1299, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_app); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1299, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_on_action_rewind_triggered); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1299, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } if (__pyx_t_3) { __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1299, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1299, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_WriteUnraisable("MainView.on_action_rewind_triggered", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwogl.pyx":1300 * void on_action_reset_rotation_triggered() with gil: pydata.app.on_action_reset_rotation_triggered() * void on_action_rewind_triggered() with gil: pydata.app.on_action_rewind_triggered() * void on_action_previous_triggered() with gil: pydata.app.on_action_previous_triggered() # <<<<<<<<<<<<<< * void on_action_stop_triggered() with gil: pydata.app.on_action_stop_triggered() * void on_action_play_triggered() with gil: pydata.app.on_action_play_triggered() */ void MainView::on_action_previous_triggered(void) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_action_previous_triggered", 0); __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1300, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_app); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1300, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_on_action_previous_triggered); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1300, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } if (__pyx_t_3) { __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1300, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1300, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_WriteUnraisable("MainView.on_action_previous_triggered", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwogl.pyx":1301 * void on_action_rewind_triggered() with gil: pydata.app.on_action_rewind_triggered() * void on_action_previous_triggered() with gil: pydata.app.on_action_previous_triggered() * void on_action_stop_triggered() with gil: pydata.app.on_action_stop_triggered() # <<<<<<<<<<<<<< * void on_action_play_triggered() with gil: pydata.app.on_action_play_triggered() * void on_action_next_triggered() with gil: pydata.app.on_action_next_triggered() */ void MainView::on_action_stop_triggered(void) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_action_stop_triggered", 0); __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1301, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_app); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1301, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_on_action_stop_triggered); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1301, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } if (__pyx_t_3) { __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1301, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1301, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_WriteUnraisable("MainView.on_action_stop_triggered", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwogl.pyx":1302 * void on_action_previous_triggered() with gil: pydata.app.on_action_previous_triggered() * void on_action_stop_triggered() with gil: pydata.app.on_action_stop_triggered() * void on_action_play_triggered() with gil: pydata.app.on_action_play_triggered() # <<<<<<<<<<<<<< * void on_action_next_triggered() with gil: pydata.app.on_action_next_triggered() * void on_action_forward_triggered() with gil: pydata.app.on_action_forward_triggered() */ void MainView::on_action_play_triggered(void) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_action_play_triggered", 0); __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1302, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_app); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1302, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_on_action_play_triggered); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1302, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } if (__pyx_t_3) { __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1302, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1302, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_WriteUnraisable("MainView.on_action_play_triggered", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwogl.pyx":1303 * void on_action_stop_triggered() with gil: pydata.app.on_action_stop_triggered() * void on_action_play_triggered() with gil: pydata.app.on_action_play_triggered() * void on_action_next_triggered() with gil: pydata.app.on_action_next_triggered() # <<<<<<<<<<<<<< * void on_action_forward_triggered() with gil: pydata.app.on_action_forward_triggered() * void on_action_mark_set_triggered() with gil: pydata.app.on_action_mark_set_triggered() */ void MainView::on_action_next_triggered(void) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_action_next_triggered", 0); __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1303, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_app); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1303, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_on_action_next_triggered); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1303, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } if (__pyx_t_3) { __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1303, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1303, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_WriteUnraisable("MainView.on_action_next_triggered", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwogl.pyx":1304 * void on_action_play_triggered() with gil: pydata.app.on_action_play_triggered() * void on_action_next_triggered() with gil: pydata.app.on_action_next_triggered() * void on_action_forward_triggered() with gil: pydata.app.on_action_forward_triggered() # <<<<<<<<<<<<<< * void on_action_mark_set_triggered() with gil: pydata.app.on_action_mark_set_triggered() * void on_action_mark_remove_triggered() with gil: pydata.app.on_action_mark_remove_triggered() */ void MainView::on_action_forward_triggered(void) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_action_forward_triggered", 0); __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1304, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_app); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1304, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_on_action_forward_triggered); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1304, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } if (__pyx_t_3) { __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1304, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1304, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_WriteUnraisable("MainView.on_action_forward_triggered", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwogl.pyx":1305 * void on_action_next_triggered() with gil: pydata.app.on_action_next_triggered() * void on_action_forward_triggered() with gil: pydata.app.on_action_forward_triggered() * void on_action_mark_set_triggered() with gil: pydata.app.on_action_mark_set_triggered() # <<<<<<<<<<<<<< * void on_action_mark_remove_triggered() with gil: pydata.app.on_action_mark_remove_triggered() * void on_action_initial_state_triggered() with gil: pydata.app.on_action_initial_state_triggered() */ void MainView::on_action_mark_set_triggered(void) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_action_mark_set_triggered", 0); __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1305, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_app); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1305, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_on_action_mark_set_triggered); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1305, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } if (__pyx_t_3) { __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1305, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1305, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_WriteUnraisable("MainView.on_action_mark_set_triggered", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwogl.pyx":1306 * void on_action_forward_triggered() with gil: pydata.app.on_action_forward_triggered() * void on_action_mark_set_triggered() with gil: pydata.app.on_action_mark_set_triggered() * void on_action_mark_remove_triggered() with gil: pydata.app.on_action_mark_remove_triggered() # <<<<<<<<<<<<<< * void on_action_initial_state_triggered() with gil: pydata.app.on_action_initial_state_triggered() * void on_action_edit_cube_triggered() with gil: pydata.app.on_action_edit_cube_triggered() */ void MainView::on_action_mark_remove_triggered(void) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_action_mark_remove_triggered", 0); __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1306, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_app); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1306, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_on_action_mark_remove_triggered); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1306, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } if (__pyx_t_3) { __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1306, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1306, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_WriteUnraisable("MainView.on_action_mark_remove_triggered", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwogl.pyx":1307 * void on_action_mark_set_triggered() with gil: pydata.app.on_action_mark_set_triggered() * void on_action_mark_remove_triggered() with gil: pydata.app.on_action_mark_remove_triggered() * void on_action_initial_state_triggered() with gil: pydata.app.on_action_initial_state_triggered() # <<<<<<<<<<<<<< * void on_action_edit_cube_triggered() with gil: pydata.app.on_action_edit_cube_triggered() * ##px. */ void MainView::on_action_initial_state_triggered(void) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_action_initial_state_triggered", 0); __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1307, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_app); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1307, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_on_action_initial_state_triggere); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1307, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } if (__pyx_t_3) { __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1307, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1307, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_WriteUnraisable("MainView.on_action_initial_state_triggered", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwogl.pyx":1308 * void on_action_mark_remove_triggered() with gil: pydata.app.on_action_mark_remove_triggered() * void on_action_initial_state_triggered() with gil: pydata.app.on_action_initial_state_triggered() * void on_action_edit_cube_triggered() with gil: pydata.app.on_action_edit_cube_triggered() # <<<<<<<<<<<<<< * ##px. * */ void MainView::on_action_edit_cube_triggered(void) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_action_edit_cube_triggered", 0); __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1308, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_app); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1308, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_on_action_edit_cube_triggered); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1308, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } if (__pyx_t_3) { __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1308, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1308, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_WriteUnraisable("MainView.on_action_edit_cube_triggered", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwogl.pyx":1312 * * ##pxm-FUNC PH with gil * void on_action_selectmodel_triggered() with gil: # <<<<<<<<<<<<<< * if pydata.modelselect is None: * pydata.modelselect = pydata.app.on_action_selectmodel_triggered() */ void MainView::on_action_selectmodel_triggered(void) { PyObject *__pyx_v_items = NULL; CYTHON_UNUSED PyObject *__pyx_v_index = NULL; PyObject *__pyx_v_title = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; int __pyx_t_3; int __pyx_t_4; PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; PyObject *__pyx_t_7 = NULL; PyObject *(*__pyx_t_8)(PyObject *); #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_action_selectmodel_triggered", 0); /* "_qt_qtwogl.pyx":1313 * ##pxm-FUNC PH with gil * void on_action_selectmodel_triggered() with gil: * if pydata.modelselect is None: # <<<<<<<<<<<<<< * pydata.modelselect = pydata.app.on_action_selectmodel_triggered() * uidata.modelselect_currentpage = 1 */ __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1313, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_modelselect); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1313, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_3 = (__pyx_t_2 == Py_None); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_4 = (__pyx_t_3 != 0); if (__pyx_t_4) { /* "_qt_qtwogl.pyx":1314 * void on_action_selectmodel_triggered() with gil: * if pydata.modelselect is None: * pydata.modelselect = pydata.app.on_action_selectmodel_triggered() # <<<<<<<<<<<<<< * uidata.modelselect_currentpage = 1 * items, index, title = pydata.modelselect.on_model_get_modeldata(1) */ __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1314, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_app); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1314, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_on_action_selectmodel_triggered); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1314, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); } } if (__pyx_t_5) { __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1314, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else { __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1314, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1314, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (__Pyx_PyObject_SetAttrStr(__pyx_t_1, __pyx_n_s_modelselect, __pyx_t_2) < 0) __PYX_ERR(0, 1314, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwogl.pyx":1313 * ##pxm-FUNC PH with gil * void on_action_selectmodel_triggered() with gil: * if pydata.modelselect is None: # <<<<<<<<<<<<<< * pydata.modelselect = pydata.app.on_action_selectmodel_triggered() * uidata.modelselect_currentpage = 1 */ } /* "_qt_qtwogl.pyx":1315 * if pydata.modelselect is None: * pydata.modelselect = pydata.app.on_action_selectmodel_triggered() * uidata.modelselect_currentpage = 1 # <<<<<<<<<<<<<< * items, index, title = pydata.modelselect.on_model_get_modeldata(1) * qtui.fill_page(create_stdmodel(items), str2q(title)) */ __pyx_v_10_qt_qtwogl_uidata.modelselect_currentpage = 1; /* "_qt_qtwogl.pyx":1316 * pydata.modelselect = pydata.app.on_action_selectmodel_triggered() * uidata.modelselect_currentpage = 1 * items, index, title = pydata.modelselect.on_model_get_modeldata(1) # <<<<<<<<<<<<<< * qtui.fill_page(create_stdmodel(items), str2q(title)) * qtui.set_page(1) */ __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1316, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_modelselect); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1316, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_on_model_get_modeldata); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1316, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1316, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_2))) || (PyList_CheckExact(__pyx_t_2))) { PyObject* sequence = __pyx_t_2; #if !CYTHON_COMPILING_IN_PYPY Py_ssize_t size = Py_SIZE(sequence); #else Py_ssize_t size = PySequence_Size(sequence); #endif if (unlikely(size != 3)) { if (size > 3) __Pyx_RaiseTooManyValuesError(3); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 1316, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_1 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); __pyx_t_6 = PyTuple_GET_ITEM(sequence, 2); } else { __pyx_t_1 = PyList_GET_ITEM(sequence, 0); __pyx_t_5 = PyList_GET_ITEM(sequence, 1); __pyx_t_6 = PyList_GET_ITEM(sequence, 2); } __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(__pyx_t_6); #else __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1316, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1316, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1316, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); #endif __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else { Py_ssize_t index = -1; __pyx_t_7 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1316, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_8 = Py_TYPE(__pyx_t_7)->tp_iternext; index = 0; __pyx_t_1 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_1)) goto __pyx_L4_unpacking_failed; __Pyx_GOTREF(__pyx_t_1); index = 1; __pyx_t_5 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_5)) goto __pyx_L4_unpacking_failed; __Pyx_GOTREF(__pyx_t_5); index = 2; __pyx_t_6 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_6)) goto __pyx_L4_unpacking_failed; __Pyx_GOTREF(__pyx_t_6); if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 3) < 0) __PYX_ERR(0, 1316, __pyx_L1_error) __pyx_t_8 = NULL; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; goto __pyx_L5_unpacking_done; __pyx_L4_unpacking_failed:; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_8 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 1316, __pyx_L1_error) __pyx_L5_unpacking_done:; } __pyx_v_items = __pyx_t_1; __pyx_t_1 = 0; __pyx_v_index = __pyx_t_5; __pyx_t_5 = 0; __pyx_v_title = __pyx_t_6; __pyx_t_6 = 0; /* "_qt_qtwogl.pyx":1317 * uidata.modelselect_currentpage = 1 * items, index, title = pydata.modelselect.on_model_get_modeldata(1) * qtui.fill_page(create_stdmodel(items), str2q(title)) # <<<<<<<<<<<<<< * qtui.set_page(1) * ##pxm-FUNC PH with gil */ __pyx_f_6_qtui__fill_page(__pyx_f_10_qt_qtwogl_create_stdmodel(__pyx_v_items), __pyx_f_10_qt_qtwogl_str2q(__pyx_v_title)); /* "_qt_qtwogl.pyx":1318 * items, index, title = pydata.modelselect.on_model_get_modeldata(1) * qtui.fill_page(create_stdmodel(items), str2q(title)) * qtui.set_page(1) # <<<<<<<<<<<<<< * ##pxm-FUNC PH with gil * void on_action_selectmodel_back_triggered() with gil: */ __pyx_f_6_qtui__set_page(1); /* "_qt_qtwogl.pyx":1312 * * ##pxm-FUNC PH with gil * void on_action_selectmodel_triggered() with gil: # <<<<<<<<<<<<<< * if pydata.modelselect is None: * pydata.modelselect = pydata.app.on_action_selectmodel_triggered() */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_WriteUnraisable("MainView.on_action_selectmodel_triggered", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_XDECREF(__pyx_v_items); __Pyx_XDECREF(__pyx_v_index); __Pyx_XDECREF(__pyx_v_title); __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwogl.pyx":1320 * qtui.set_page(1) * ##pxm-FUNC PH with gil * void on_action_selectmodel_back_triggered() with gil: # <<<<<<<<<<<<<< * if pydata.modelselect.on_model_back(): * uidata.modelselect_currentpage -= 1 */ void MainView::on_action_selectmodel_back_triggered(void) { PyObject *__pyx_v_items = NULL; CYTHON_UNUSED PyObject *__pyx_v_index = NULL; PyObject *__pyx_v_title = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; int __pyx_t_4; PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; PyObject *(*__pyx_t_7)(PyObject *); #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_action_selectmodel_back_triggered", 0); /* "_qt_qtwogl.pyx":1321 * ##pxm-FUNC PH with gil * void on_action_selectmodel_back_triggered() with gil: * if pydata.modelselect.on_model_back(): # <<<<<<<<<<<<<< * uidata.modelselect_currentpage -= 1 * items, index, title = pydata.modelselect.on_model_get_modeldata(uidata.modelselect_currentpage) */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1321, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_modelselect); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1321, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_on_model_back); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1321, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } if (__pyx_t_3) { __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1321, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1321, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 1321, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_4) { /* "_qt_qtwogl.pyx":1322 * void on_action_selectmodel_back_triggered() with gil: * if pydata.modelselect.on_model_back(): * uidata.modelselect_currentpage -= 1 # <<<<<<<<<<<<<< * items, index, title = pydata.modelselect.on_model_get_modeldata(uidata.modelselect_currentpage) * qtui.fill_page(create_stdmodel(items), str2q(title)) */ __pyx_v_10_qt_qtwogl_uidata.modelselect_currentpage = (__pyx_v_10_qt_qtwogl_uidata.modelselect_currentpage - 1); /* "_qt_qtwogl.pyx":1323 * if pydata.modelselect.on_model_back(): * uidata.modelselect_currentpage -= 1 * items, index, title = pydata.modelselect.on_model_get_modeldata(uidata.modelselect_currentpage) # <<<<<<<<<<<<<< * qtui.fill_page(create_stdmodel(items), str2q(title)) * qtui.set_page(1) */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1323, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_modelselect); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1323, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_on_model_get_modeldata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1323, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_10_qt_qtwogl_uidata.modelselect_currentpage); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1323, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } if (!__pyx_t_5) { __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1323, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_3}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1323, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_t_3}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1323, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif { __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1323, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL; __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_3); __pyx_t_3 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1323, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; #if !CYTHON_COMPILING_IN_PYPY Py_ssize_t size = Py_SIZE(sequence); #else Py_ssize_t size = PySequence_Size(sequence); #endif if (unlikely(size != 3)) { if (size > 3) __Pyx_RaiseTooManyValuesError(3); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 1323, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1); __pyx_t_3 = PyTuple_GET_ITEM(sequence, 2); } else { __pyx_t_2 = PyList_GET_ITEM(sequence, 0); __pyx_t_6 = PyList_GET_ITEM(sequence, 1); __pyx_t_3 = PyList_GET_ITEM(sequence, 2); } __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(__pyx_t_3); #else __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1323, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1323, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_3 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1323, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1323, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_7 = Py_TYPE(__pyx_t_5)->tp_iternext; index = 0; __pyx_t_2 = __pyx_t_7(__pyx_t_5); if (unlikely(!__pyx_t_2)) goto __pyx_L4_unpacking_failed; __Pyx_GOTREF(__pyx_t_2); index = 1; __pyx_t_6 = __pyx_t_7(__pyx_t_5); if (unlikely(!__pyx_t_6)) goto __pyx_L4_unpacking_failed; __Pyx_GOTREF(__pyx_t_6); index = 2; __pyx_t_3 = __pyx_t_7(__pyx_t_5); if (unlikely(!__pyx_t_3)) goto __pyx_L4_unpacking_failed; __Pyx_GOTREF(__pyx_t_3); if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_5), 3) < 0) __PYX_ERR(0, 1323, __pyx_L1_error) __pyx_t_7 = NULL; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; goto __pyx_L5_unpacking_done; __pyx_L4_unpacking_failed:; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_7 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 1323, __pyx_L1_error) __pyx_L5_unpacking_done:; } __pyx_v_items = __pyx_t_2; __pyx_t_2 = 0; __pyx_v_index = __pyx_t_6; __pyx_t_6 = 0; __pyx_v_title = __pyx_t_3; __pyx_t_3 = 0; /* "_qt_qtwogl.pyx":1324 * uidata.modelselect_currentpage -= 1 * items, index, title = pydata.modelselect.on_model_get_modeldata(uidata.modelselect_currentpage) * qtui.fill_page(create_stdmodel(items), str2q(title)) # <<<<<<<<<<<<<< * qtui.set_page(1) * else: */ __pyx_f_6_qtui__fill_page(__pyx_f_10_qt_qtwogl_create_stdmodel(__pyx_v_items), __pyx_f_10_qt_qtwogl_str2q(__pyx_v_title)); /* "_qt_qtwogl.pyx":1325 * items, index, title = pydata.modelselect.on_model_get_modeldata(uidata.modelselect_currentpage) * qtui.fill_page(create_stdmodel(items), str2q(title)) * qtui.set_page(1) # <<<<<<<<<<<<<< * else: * qtui.set_page(0) */ __pyx_f_6_qtui__set_page(1); /* "_qt_qtwogl.pyx":1321 * ##pxm-FUNC PH with gil * void on_action_selectmodel_back_triggered() with gil: * if pydata.modelselect.on_model_back(): # <<<<<<<<<<<<<< * uidata.modelselect_currentpage -= 1 * items, index, title = pydata.modelselect.on_model_get_modeldata(uidata.modelselect_currentpage) */ goto __pyx_L3; } /* "_qt_qtwogl.pyx":1327 * qtui.set_page(1) * else: * qtui.set_page(0) # <<<<<<<<<<<<<< * ##pxm-FUNC PHD with gil * void _listwidget_itemActivated(QListWidgetItem *item) with gil: */ /*else*/ { __pyx_f_6_qtui__set_page(0); } __pyx_L3:; /* "_qt_qtwogl.pyx":1320 * qtui.set_page(1) * ##pxm-FUNC PH with gil * void on_action_selectmodel_back_triggered() with gil: # <<<<<<<<<<<<<< * if pydata.modelselect.on_model_back(): * uidata.modelselect_currentpage -= 1 */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_WriteUnraisable("MainView.on_action_selectmodel_back_triggered", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_XDECREF(__pyx_v_items); __Pyx_XDECREF(__pyx_v_index); __Pyx_XDECREF(__pyx_v_title); __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwogl.pyx":1329 * qtui.set_page(0) * ##pxm-FUNC PHD with gil * void _listwidget_itemActivated(QListWidgetItem *item) with gil: # <<<<<<<<<<<<<< * index = item.listWidget().currentRow() #TODO: store index in item * mtype_size = pydata.modelselect.on_convert_to_mtype_size(uidata.modelselect_currentpage, index) */ void MainView::_listwidget_itemActivated(QListWidgetItem *__pyx_v_item) { PyObject *__pyx_v_index = NULL; PyObject *__pyx_v_mtype_size = NULL; PyObject *__pyx_v_items = NULL; PyObject *__pyx_v_title = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; int __pyx_t_5; PyObject *__pyx_t_6 = NULL; int __pyx_t_7; int __pyx_t_8; PyObject *(*__pyx_t_9)(PyObject *); #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("_listwidget_itemActivated", 0); /* "_qt_qtwogl.pyx":1330 * ##pxm-FUNC PHD with gil * void _listwidget_itemActivated(QListWidgetItem *item) with gil: * index = item.listWidget().currentRow() #TODO: store index in item # <<<<<<<<<<<<<< * mtype_size = pydata.modelselect.on_convert_to_mtype_size(uidata.modelselect_currentpage, index) * if mtype_size is None: */ __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_item->listWidget()->currentRow()); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1330, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_index = __pyx_t_1; __pyx_t_1 = 0; /* "_qt_qtwogl.pyx":1331 * void _listwidget_itemActivated(QListWidgetItem *item) with gil: * index = item.listWidget().currentRow() #TODO: store index in item * mtype_size = pydata.modelselect.on_convert_to_mtype_size(uidata.modelselect_currentpage, index) # <<<<<<<<<<<<<< * if mtype_size is None: * uidata.modelselect_currentpage += 1 */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1331, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_modelselect); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1331, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_on_convert_to_mtype_size); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1331, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_10_qt_qtwogl_uidata.modelselect_currentpage); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1331, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = NULL; __pyx_t_5 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_5 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_3, __pyx_v_index}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1331, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_3, __pyx_v_index}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1331, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif { __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1331, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (__pyx_t_4) { __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL; } __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_t_3); __Pyx_INCREF(__pyx_v_index); __Pyx_GIVEREF(__pyx_v_index); PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_v_index); __pyx_t_3 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1331, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_mtype_size = __pyx_t_1; __pyx_t_1 = 0; /* "_qt_qtwogl.pyx":1332 * index = item.listWidget().currentRow() #TODO: store index in item * mtype_size = pydata.modelselect.on_convert_to_mtype_size(uidata.modelselect_currentpage, index) * if mtype_size is None: # <<<<<<<<<<<<<< * uidata.modelselect_currentpage += 1 * items, index, title = pydata.modelselect.on_model_get_modeldata(uidata.modelselect_currentpage) */ __pyx_t_7 = (__pyx_v_mtype_size == Py_None); __pyx_t_8 = (__pyx_t_7 != 0); if (__pyx_t_8) { /* "_qt_qtwogl.pyx":1333 * mtype_size = pydata.modelselect.on_convert_to_mtype_size(uidata.modelselect_currentpage, index) * if mtype_size is None: * uidata.modelselect_currentpage += 1 # <<<<<<<<<<<<<< * items, index, title = pydata.modelselect.on_model_get_modeldata(uidata.modelselect_currentpage) * qtui.fill_page(create_stdmodel(items), str2q(title)) */ __pyx_v_10_qt_qtwogl_uidata.modelselect_currentpage = (__pyx_v_10_qt_qtwogl_uidata.modelselect_currentpage + 1); /* "_qt_qtwogl.pyx":1334 * if mtype_size is None: * uidata.modelselect_currentpage += 1 * items, index, title = pydata.modelselect.on_model_get_modeldata(uidata.modelselect_currentpage) # <<<<<<<<<<<<<< * qtui.fill_page(create_stdmodel(items), str2q(title)) * else: */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1334, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_modelselect); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1334, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_on_model_get_modeldata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1334, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_10_qt_qtwogl_uidata.modelselect_currentpage); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1334, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } if (!__pyx_t_3) { __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1334, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_1); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_6}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1334, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_t_6}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1334, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else #endif { __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1334, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL; __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_6); __pyx_t_6 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1334, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; #if !CYTHON_COMPILING_IN_PYPY Py_ssize_t size = Py_SIZE(sequence); #else Py_ssize_t size = PySequence_Size(sequence); #endif if (unlikely(size != 3)) { if (size > 3) __Pyx_RaiseTooManyValuesError(3); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 1334, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1); __pyx_t_6 = PyTuple_GET_ITEM(sequence, 2); } else { __pyx_t_2 = PyList_GET_ITEM(sequence, 0); __pyx_t_4 = PyList_GET_ITEM(sequence, 1); __pyx_t_6 = PyList_GET_ITEM(sequence, 2); } __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(__pyx_t_6); #else __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1334, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1334, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_6 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1334, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1334, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_9 = Py_TYPE(__pyx_t_3)->tp_iternext; index = 0; __pyx_t_2 = __pyx_t_9(__pyx_t_3); if (unlikely(!__pyx_t_2)) goto __pyx_L4_unpacking_failed; __Pyx_GOTREF(__pyx_t_2); index = 1; __pyx_t_4 = __pyx_t_9(__pyx_t_3); if (unlikely(!__pyx_t_4)) goto __pyx_L4_unpacking_failed; __Pyx_GOTREF(__pyx_t_4); index = 2; __pyx_t_6 = __pyx_t_9(__pyx_t_3); if (unlikely(!__pyx_t_6)) goto __pyx_L4_unpacking_failed; __Pyx_GOTREF(__pyx_t_6); if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_3), 3) < 0) __PYX_ERR(0, 1334, __pyx_L1_error) __pyx_t_9 = NULL; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L5_unpacking_done; __pyx_L4_unpacking_failed:; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_9 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 1334, __pyx_L1_error) __pyx_L5_unpacking_done:; } __pyx_v_items = __pyx_t_2; __pyx_t_2 = 0; __Pyx_DECREF_SET(__pyx_v_index, __pyx_t_4); __pyx_t_4 = 0; __pyx_v_title = __pyx_t_6; __pyx_t_6 = 0; /* "_qt_qtwogl.pyx":1335 * uidata.modelselect_currentpage += 1 * items, index, title = pydata.modelselect.on_model_get_modeldata(uidata.modelselect_currentpage) * qtui.fill_page(create_stdmodel(items), str2q(title)) # <<<<<<<<<<<<<< * else: * pydata.app.on_load_other_game(*mtype_size) */ __pyx_f_6_qtui__fill_page(__pyx_f_10_qt_qtwogl_create_stdmodel(__pyx_v_items), __pyx_f_10_qt_qtwogl_str2q(__pyx_v_title)); /* "_qt_qtwogl.pyx":1332 * index = item.listWidget().currentRow() #TODO: store index in item * mtype_size = pydata.modelselect.on_convert_to_mtype_size(uidata.modelselect_currentpage, index) * if mtype_size is None: # <<<<<<<<<<<<<< * uidata.modelselect_currentpage += 1 * items, index, title = pydata.modelselect.on_model_get_modeldata(uidata.modelselect_currentpage) */ goto __pyx_L3; } /* "_qt_qtwogl.pyx":1337 * qtui.fill_page(create_stdmodel(items), str2q(title)) * else: * pydata.app.on_load_other_game(*mtype_size) # <<<<<<<<<<<<<< * qtui.set_page(0) * while pydata.modelselect.on_model_back(): */ /*else*/ { __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1337, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_app); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1337, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_on_load_other_game); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1337, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = PySequence_Tuple(__pyx_v_mtype_size); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1337, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1337, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwogl.pyx":1338 * else: * pydata.app.on_load_other_game(*mtype_size) * qtui.set_page(0) # <<<<<<<<<<<<<< * while pydata.modelselect.on_model_back(): * pass */ __pyx_f_6_qtui__set_page(0); /* "_qt_qtwogl.pyx":1339 * pydata.app.on_load_other_game(*mtype_size) * qtui.set_page(0) * while pydata.modelselect.on_model_back(): # <<<<<<<<<<<<<< * pass * ##pxm-FUNC PH with gil */ while (1) { __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1339, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_modelselect); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1339, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_on_model_back); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1339, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) { __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_1)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); } } if (__pyx_t_1) { __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1339, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1339, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 1339, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (!__pyx_t_8) break; } } __pyx_L3:; /* "_qt_qtwogl.pyx":1329 * qtui.set_page(0) * ##pxm-FUNC PHD with gil * void _listwidget_itemActivated(QListWidgetItem *item) with gil: # <<<<<<<<<<<<<< * index = item.listWidget().currentRow() #TODO: store index in item * mtype_size = pydata.modelselect.on_convert_to_mtype_size(uidata.modelselect_currentpage, index) */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_6); __Pyx_WriteUnraisable("MainView._listwidget_itemActivated", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_XDECREF(__pyx_v_index); __Pyx_XDECREF(__pyx_v_mtype_size); __Pyx_XDECREF(__pyx_v_items); __Pyx_XDECREF(__pyx_v_title); __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwogl.pyx":1342 * pass * ##pxm-FUNC PH with gil * void on_listwidget_itemActivated(QListWidgetItem *item) with gil: # <<<<<<<<<<<<<< * this._listwidget_itemActivated(item) * ##pxm-FUNC PH with gil */ void MainView::on_listwidget_itemActivated(QListWidgetItem *__pyx_v_item) { __Pyx_RefNannyDeclarations #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_listwidget_itemActivated", 0); /* "_qt_qtwogl.pyx":1343 * ##pxm-FUNC PH with gil * void on_listwidget_itemActivated(QListWidgetItem *item) with gil: * this._listwidget_itemActivated(item) # <<<<<<<<<<<<<< * ##pxm-FUNC PH with gil * void on_listwidget_itemClicked(QListWidgetItem *item) with gil: */ this->_listwidget_itemActivated(__pyx_v_item); /* "_qt_qtwogl.pyx":1342 * pass * ##pxm-FUNC PH with gil * void on_listwidget_itemActivated(QListWidgetItem *item) with gil: # <<<<<<<<<<<<<< * this._listwidget_itemActivated(item) * ##pxm-FUNC PH with gil */ /* function exit code */ __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwogl.pyx":1345 * this._listwidget_itemActivated(item) * ##pxm-FUNC PH with gil * void on_listwidget_itemClicked(QListWidgetItem *item) with gil: # <<<<<<<<<<<<<< * this._listwidget_itemActivated(item) * ##pxm-FUNC PH with gil */ void MainView::on_listwidget_itemClicked(QListWidgetItem *__pyx_v_item) { __Pyx_RefNannyDeclarations #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_listwidget_itemClicked", 0); /* "_qt_qtwogl.pyx":1346 * ##pxm-FUNC PH with gil * void on_listwidget_itemClicked(QListWidgetItem *item) with gil: * this._listwidget_itemActivated(item) # <<<<<<<<<<<<<< * ##pxm-FUNC PH with gil * void on_action_quit_triggered() with gil: */ this->_listwidget_itemActivated(__pyx_v_item); /* "_qt_qtwogl.pyx":1345 * this._listwidget_itemActivated(item) * ##pxm-FUNC PH with gil * void on_listwidget_itemClicked(QListWidgetItem *item) with gil: # <<<<<<<<<<<<<< * this._listwidget_itemActivated(item) * ##pxm-FUNC PH with gil */ /* function exit code */ __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwogl.pyx":1348 * this._listwidget_itemActivated(item) * ##pxm-FUNC PH with gil * void on_action_quit_triggered() with gil: # <<<<<<<<<<<<<< * this.close() * ##pxm-FUNC PH with gil */ void MainView::on_action_quit_triggered(void) { __Pyx_RefNannyDeclarations #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_action_quit_triggered", 0); /* "_qt_qtwogl.pyx":1349 * ##pxm-FUNC PH with gil * void on_action_quit_triggered() with gil: * this.close() # <<<<<<<<<<<<<< * ##pxm-FUNC PH with gil * void on_action_editbar_toggled(cbool checked) with gil: */ this->close(); /* "_qt_qtwogl.pyx":1348 * this._listwidget_itemActivated(item) * ##pxm-FUNC PH with gil * void on_action_quit_triggered() with gil: # <<<<<<<<<<<<<< * this.close() * ##pxm-FUNC PH with gil */ /* function exit code */ __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwogl.pyx":1351 * this.close() * ##pxm-FUNC PH with gil * void on_action_editbar_toggled(cbool checked) with gil: # <<<<<<<<<<<<<< * qtui.set_frame_editbar_visible(checked) * settings['window.editbar'] = checked */ void MainView::on_action_editbar_toggled(bool __pyx_v_checked) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_action_editbar_toggled", 0); /* "_qt_qtwogl.pyx":1352 * ##pxm-FUNC PH with gil * void on_action_editbar_toggled(cbool checked) with gil: * qtui.set_frame_editbar_visible(checked) # <<<<<<<<<<<<<< * settings['window.editbar'] = checked * ##pxm-FUNC PH with gil */ __pyx_f_6_qtui__set_frame_editbar_visible(__pyx_v_checked); /* "_qt_qtwogl.pyx":1353 * void on_action_editbar_toggled(cbool checked) with gil: * qtui.set_frame_editbar_visible(checked) * settings['window.editbar'] = checked # <<<<<<<<<<<<<< * ##pxm-FUNC PH with gil * void on_action_statusbar_toggled(cbool checked) with gil: */ __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_checked); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1353, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1353, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (unlikely(PyObject_SetItem(__pyx_t_2, __pyx_kp_u_window_editbar, __pyx_t_1) < 0)) __PYX_ERR(0, 1353, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwogl.pyx":1351 * this.close() * ##pxm-FUNC PH with gil * void on_action_editbar_toggled(cbool checked) with gil: # <<<<<<<<<<<<<< * qtui.set_frame_editbar_visible(checked) * settings['window.editbar'] = checked */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_WriteUnraisable("MainView.on_action_editbar_toggled", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwogl.pyx":1355 * settings['window.editbar'] = checked * ##pxm-FUNC PH with gil * void on_action_statusbar_toggled(cbool checked) with gil: # <<<<<<<<<<<<<< * qtui.set_statusbar_visible(checked) * settings['window.statusbar'] = checked */ void MainView::on_action_statusbar_toggled(bool __pyx_v_checked) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_action_statusbar_toggled", 0); /* "_qt_qtwogl.pyx":1356 * ##pxm-FUNC PH with gil * void on_action_statusbar_toggled(cbool checked) with gil: * qtui.set_statusbar_visible(checked) # <<<<<<<<<<<<<< * settings['window.statusbar'] = checked * ##pxm-FUNC PH nogil */ __pyx_f_6_qtui__set_statusbar_visible(__pyx_v_checked); /* "_qt_qtwogl.pyx":1357 * void on_action_statusbar_toggled(cbool checked) with gil: * qtui.set_statusbar_visible(checked) * settings['window.statusbar'] = checked # <<<<<<<<<<<<<< * ##pxm-FUNC PH nogil * void on_action_help_triggered() nogil: */ __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_checked); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1357, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1357, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (unlikely(PyObject_SetItem(__pyx_t_2, __pyx_kp_u_window_statusbar, __pyx_t_1) < 0)) __PYX_ERR(0, 1357, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwogl.pyx":1355 * settings['window.editbar'] = checked * ##pxm-FUNC PH with gil * void on_action_statusbar_toggled(cbool checked) with gil: # <<<<<<<<<<<<<< * qtui.set_statusbar_visible(checked) * settings['window.statusbar'] = checked */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_WriteUnraisable("MainView.on_action_statusbar_toggled", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwogl.pyx":1359 * settings['window.statusbar'] = checked * ##pxm-FUNC PH nogil * void on_action_help_triggered() nogil: # <<<<<<<<<<<<<< * if uidata.help == NULL: * help_dialog() */ void MainView::on_action_help_triggered(void) { int __pyx_t_1; /* "_qt_qtwogl.pyx":1360 * ##pxm-FUNC PH nogil * void on_action_help_triggered() nogil: * if uidata.help == NULL: # <<<<<<<<<<<<<< * help_dialog() * help_dialog_show() */ __pyx_t_1 = ((__pyx_v_10_qt_qtwogl_uidata.help == NULL) != 0); if (__pyx_t_1) { /* "_qt_qtwogl.pyx":1361 * void on_action_help_triggered() nogil: * if uidata.help == NULL: * help_dialog() # <<<<<<<<<<<<<< * help_dialog_show() * ##pxm-FUNC PH nogil */ __pyx_f_10_qt_qtwogl_help_dialog(); /* "_qt_qtwogl.pyx":1360 * ##pxm-FUNC PH nogil * void on_action_help_triggered() nogil: * if uidata.help == NULL: # <<<<<<<<<<<<<< * help_dialog() * help_dialog_show() */ } /* "_qt_qtwogl.pyx":1362 * if uidata.help == NULL: * help_dialog() * help_dialog_show() # <<<<<<<<<<<<<< * ##pxm-FUNC PH nogil * void on_action_info_triggered() nogil: */ __pyx_f_10_qt_qtwogl_help_dialog_show(); /* "_qt_qtwogl.pyx":1359 * settings['window.statusbar'] = checked * ##pxm-FUNC PH nogil * void on_action_help_triggered() nogil: # <<<<<<<<<<<<<< * if uidata.help == NULL: * help_dialog() */ /* function exit code */ } /* "_qt_qtwogl.pyx":1364 * help_dialog_show() * ##pxm-FUNC PH nogil * void on_action_info_triggered() nogil: # <<<<<<<<<<<<<< * about_dialog() * ##pxm-FUNC PH with gil */ void MainView::on_action_info_triggered(void) { /* "_qt_qtwogl.pyx":1365 * ##pxm-FUNC PH nogil * void on_action_info_triggered() nogil: * about_dialog() # <<<<<<<<<<<<<< * ##pxm-FUNC PH with gil * void on_splitter_splitterMoved(int pos, int index) with gil: */ __pyx_f_10_qt_qtwogl_about_dialog(); /* "_qt_qtwogl.pyx":1364 * help_dialog_show() * ##pxm-FUNC PH nogil * void on_action_info_triggered() nogil: # <<<<<<<<<<<<<< * about_dialog() * ##pxm-FUNC PH with gil */ /* function exit code */ } /* "_qt_qtwogl.pyx":1367 * about_dialog() * ##pxm-FUNC PH with gil * void on_splitter_splitterMoved(int pos, int index) with gil: # <<<<<<<<<<<<<< * if index == 1: * settings['window.divider'] = pos */ void MainView::on_splitter_splitterMoved(int __pyx_v_pos, int __pyx_v_index) { __Pyx_RefNannyDeclarations int __pyx_t_1; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_splitter_splitterMoved", 0); /* "_qt_qtwogl.pyx":1368 * ##pxm-FUNC PH with gil * void on_splitter_splitterMoved(int pos, int index) with gil: * if index == 1: # <<<<<<<<<<<<<< * settings['window.divider'] = pos * qtui.splitter_update_minimumsize() */ __pyx_t_1 = ((__pyx_v_index == 1) != 0); if (__pyx_t_1) { /* "_qt_qtwogl.pyx":1369 * void on_splitter_splitterMoved(int pos, int index) with gil: * if index == 1: * settings['window.divider'] = pos # <<<<<<<<<<<<<< * qtui.splitter_update_minimumsize() * ##pxm-FUNC PH with gil */ __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_pos); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1369, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1369, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (unlikely(PyObject_SetItem(__pyx_t_3, __pyx_kp_u_window_divider, __pyx_t_2) < 0)) __PYX_ERR(0, 1369, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwogl.pyx":1370 * if index == 1: * settings['window.divider'] = pos * qtui.splitter_update_minimumsize() # <<<<<<<<<<<<<< * ##pxm-FUNC PH with gil * void on_button_edit_clear_clicked() with gil: */ __pyx_f_6_qtui__splitter_update_minimumsize(); /* "_qt_qtwogl.pyx":1368 * ##pxm-FUNC PH with gil * void on_splitter_splitterMoved(int pos, int index) with gil: * if index == 1: # <<<<<<<<<<<<<< * settings['window.divider'] = pos * qtui.splitter_update_minimumsize() */ } /* "_qt_qtwogl.pyx":1367 * about_dialog() * ##pxm-FUNC PH with gil * void on_splitter_splitterMoved(int pos, int index) with gil: # <<<<<<<<<<<<<< * if index == 1: * settings['window.divider'] = pos */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_WriteUnraisable("MainView.on_splitter_splitterMoved", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwogl.pyx":1372 * qtui.splitter_update_minimumsize() * ##pxm-FUNC PH with gil * void on_button_edit_clear_clicked() with gil: # <<<<<<<<<<<<<< * uidata.move_edit.setText(str2q('')) * pydata.app.on_edit_finished(q2str(uidata.move_edit.text()), uidata.move_edit.cursorPosition()) */ void MainView::on_button_edit_clear_clicked(void) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; int __pyx_t_6; PyObject *__pyx_t_7 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_button_edit_clear_clicked", 0); /* "_qt_qtwogl.pyx":1373 * ##pxm-FUNC PH with gil * void on_button_edit_clear_clicked() with gil: * uidata.move_edit.setText(str2q('')) # <<<<<<<<<<<<<< * pydata.app.on_edit_finished(q2str(uidata.move_edit.text()), uidata.move_edit.cursorPosition()) * ##pxm-FUNC PH with gil */ __pyx_v_10_qt_qtwogl_uidata.move_edit->setText(__pyx_f_10_qt_qtwogl_str2q(__pyx_kp_u__6)); /* "_qt_qtwogl.pyx":1374 * void on_button_edit_clear_clicked() with gil: * uidata.move_edit.setText(str2q('')) * pydata.app.on_edit_finished(q2str(uidata.move_edit.text()), uidata.move_edit.cursorPosition()) # <<<<<<<<<<<<<< * ##pxm-FUNC PH with gil * void on_button_edit_exec_clicked() with gil: */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1374, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_app); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1374, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_on_edit_finished); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1374, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __pyx_f_10_qt_qtwogl_q2str(__pyx_v_10_qt_qtwogl_uidata.move_edit->text()); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1374, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_10_qt_qtwogl_uidata.move_edit->cursorPosition()); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1374, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_3, __pyx_t_4}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1374, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_3, __pyx_t_4}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1374, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1374, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_t_4); __pyx_t_3 = 0; __pyx_t_4 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1374, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwogl.pyx":1372 * qtui.splitter_update_minimumsize() * ##pxm-FUNC PH with gil * void on_button_edit_clear_clicked() with gil: # <<<<<<<<<<<<<< * uidata.move_edit.setText(str2q('')) * pydata.app.on_edit_finished(q2str(uidata.move_edit.text()), uidata.move_edit.cursorPosition()) */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_7); __Pyx_WriteUnraisable("MainView.on_button_edit_clear_clicked", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwogl.pyx":1376 * pydata.app.on_edit_finished(q2str(uidata.move_edit.text()), uidata.move_edit.cursorPosition()) * ##pxm-FUNC PH with gil * void on_button_edit_exec_clicked() with gil: # <<<<<<<<<<<<<< * pydata.app.on_edit_finished(q2str(uidata.move_edit.text()), uidata.move_edit.cursorPosition()) * ##pxm-FUNC PH with gil */ void MainView::on_button_edit_exec_clicked(void) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; int __pyx_t_6; PyObject *__pyx_t_7 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_button_edit_exec_clicked", 0); /* "_qt_qtwogl.pyx":1377 * ##pxm-FUNC PH with gil * void on_button_edit_exec_clicked() with gil: * pydata.app.on_edit_finished(q2str(uidata.move_edit.text()), uidata.move_edit.cursorPosition()) # <<<<<<<<<<<<<< * ##pxm-FUNC PH with gil * void on_action_jump_to_editbar_triggered() with gil: */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1377, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_app); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1377, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_on_edit_finished); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1377, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __pyx_f_10_qt_qtwogl_q2str(__pyx_v_10_qt_qtwogl_uidata.move_edit->text()); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1377, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_10_qt_qtwogl_uidata.move_edit->cursorPosition()); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1377, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_3, __pyx_t_4}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1377, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_3, __pyx_t_4}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1377, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1377, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_t_4); __pyx_t_3 = 0; __pyx_t_4 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1377, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwogl.pyx":1376 * pydata.app.on_edit_finished(q2str(uidata.move_edit.text()), uidata.move_edit.cursorPosition()) * ##pxm-FUNC PH with gil * void on_button_edit_exec_clicked() with gil: # <<<<<<<<<<<<<< * pydata.app.on_edit_finished(q2str(uidata.move_edit.text()), uidata.move_edit.cursorPosition()) * ##pxm-FUNC PH with gil */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_7); __Pyx_WriteUnraisable("MainView.on_button_edit_exec_clicked", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwogl.pyx":1379 * pydata.app.on_edit_finished(q2str(uidata.move_edit.text()), uidata.move_edit.cursorPosition()) * ##pxm-FUNC PH with gil * void on_action_jump_to_editbar_triggered() with gil: # <<<<<<<<<<<<<< * uidata.move_edit.setFocus() * */ void MainView::on_action_jump_to_editbar_triggered(void) { __Pyx_RefNannyDeclarations #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_action_jump_to_editbar_triggered", 0); /* "_qt_qtwogl.pyx":1380 * ##pxm-FUNC PH with gil * void on_action_jump_to_editbar_triggered() with gil: * uidata.move_edit.setFocus() # <<<<<<<<<<<<<< * * ##pxm-FUNC PH with gil */ __pyx_v_10_qt_qtwogl_uidata.move_edit->setFocus(); /* "_qt_qtwogl.pyx":1379 * pydata.app.on_edit_finished(q2str(uidata.move_edit.text()), uidata.move_edit.cursorPosition()) * ##pxm-FUNC PH with gil * void on_action_jump_to_editbar_triggered() with gil: # <<<<<<<<<<<<<< * uidata.move_edit.setFocus() * */ /* function exit code */ __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwogl.pyx":1383 * * ##pxm-FUNC PH with gil * void _on_button_sidepane_clicked() with gil: # <<<<<<<<<<<<<< * qtui.set_active_plugin_group_by_obj(this.sender()) * ##pxm-FUNC PH with gil */ void MainView::_on_button_sidepane_clicked(void) { __Pyx_RefNannyDeclarations #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("_on_button_sidepane_clicked", 0); /* "_qt_qtwogl.pyx":1384 * ##pxm-FUNC PH with gil * void _on_button_sidepane_clicked() with gil: * qtui.set_active_plugin_group_by_obj(this.sender()) # <<<<<<<<<<<<<< * ##pxm-FUNC PH with gil * void _on_treeview_activated(const QModelIndex &index) with gil: */ __pyx_f_6_qtui__set_active_plugin_group_by_obj(this->sender()); /* "_qt_qtwogl.pyx":1383 * * ##pxm-FUNC PH with gil * void _on_button_sidepane_clicked() with gil: # <<<<<<<<<<<<<< * qtui.set_active_plugin_group_by_obj(this.sender()) * ##pxm-FUNC PH with gil */ /* function exit code */ __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwogl.pyx":1386 * qtui.set_active_plugin_group_by_obj(this.sender()) * ##pxm-FUNC PH with gil * void _on_treeview_activated(const QModelIndex &index) with gil: # <<<<<<<<<<<<<< * func_idx = fromvariant(index.data(Qt.UserRole + 1)) * if func_idx is None: */ void MainView::_on_treeview_activated(QModelIndex const &__pyx_v_index) { PyObject *__pyx_v_func_idx = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_t_2; int __pyx_t_3; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("_on_treeview_activated", 0); /* "_qt_qtwogl.pyx":1387 * ##pxm-FUNC PH with gil * void _on_treeview_activated(const QModelIndex &index) with gil: * func_idx = fromvariant(index.data(Qt.UserRole + 1)) # <<<<<<<<<<<<<< * if func_idx is None: * return */ __pyx_t_1 = __pyx_f_10_qt_qtwogl_fromvariant(__pyx_v_index.data((Qt::UserRole + 1))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1387, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_func_idx = __pyx_t_1; __pyx_t_1 = 0; /* "_qt_qtwogl.pyx":1388 * void _on_treeview_activated(const QModelIndex &index) with gil: * func_idx = fromvariant(index.data(Qt.UserRole + 1)) * if func_idx is None: # <<<<<<<<<<<<<< * return * pydata.app.on_plugin_activated(func_idx) */ __pyx_t_2 = (__pyx_v_func_idx == Py_None); __pyx_t_3 = (__pyx_t_2 != 0); if (__pyx_t_3) { /* "_qt_qtwogl.pyx":1389 * func_idx = fromvariant(index.data(Qt.UserRole + 1)) * if func_idx is None: * return # <<<<<<<<<<<<<< * pydata.app.on_plugin_activated(func_idx) * ##pxm>IF_END */ goto __pyx_L0; /* "_qt_qtwogl.pyx":1388 * void _on_treeview_activated(const QModelIndex &index) with gil: * func_idx = fromvariant(index.data(Qt.UserRole + 1)) * if func_idx is None: # <<<<<<<<<<<<<< * return * pydata.app.on_plugin_activated(func_idx) */ } /* "_qt_qtwogl.pyx":1390 * if func_idx is None: * return * pydata.app.on_plugin_activated(func_idx) # <<<<<<<<<<<<<< * ##pxm>IF_END * ##pxm>CPPCLASS_END */ __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1390, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_app); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1390, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_on_plugin_activated); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1390, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); } } if (!__pyx_t_5) { __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_func_idx); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1390, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_v_func_idx}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1390, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_v_func_idx}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1390, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1390, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL; __Pyx_INCREF(__pyx_v_func_idx); __Pyx_GIVEREF(__pyx_v_func_idx); PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_v_func_idx); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1390, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwogl.pyx":1386 * qtui.set_active_plugin_group_by_obj(this.sender()) * ##pxm-FUNC PH with gil * void _on_treeview_activated(const QModelIndex &index) with gil: # <<<<<<<<<<<<<< * func_idx = fromvariant(index.data(Qt.UserRole + 1)) * if func_idx is None: */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_WriteUnraisable("MainView._on_treeview_activated", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_XDECREF(__pyx_v_func_idx); __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwogl.pyx":1406 * ##pxc>} * ##pxm-FUNC PH with gil * void keyPressEvent(QKeyEvent *event) with gil: # <<<<<<<<<<<<<< * if event.matches(MoveToNextWord): * pos = pydata.app.on_edit_moves_nextword(q2str(this.text()), this.cursorPosition()) */ void MoveEdit::keyPressEvent(QKeyEvent *__pyx_v_event) { PyObject *__pyx_v_pos = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; int __pyx_t_7; PyObject *__pyx_t_8 = NULL; int __pyx_t_9; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("keyPressEvent", 0); /* "_qt_qtwogl.pyx":1407 * ##pxm-FUNC PH with gil * void keyPressEvent(QKeyEvent *event) with gil: * if event.matches(MoveToNextWord): # <<<<<<<<<<<<<< * pos = pydata.app.on_edit_moves_nextword(q2str(this.text()), this.cursorPosition()) * this.setCursorPosition(pos) */ __pyx_t_1 = (__pyx_v_event->matches(QKeySequence::MoveToNextWord) != 0); if (__pyx_t_1) { /* "_qt_qtwogl.pyx":1408 * void keyPressEvent(QKeyEvent *event) with gil: * if event.matches(MoveToNextWord): * pos = pydata.app.on_edit_moves_nextword(q2str(this.text()), this.cursorPosition()) # <<<<<<<<<<<<<< * this.setCursorPosition(pos) * elif event.matches(MoveToPreviousWord): */ __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1408, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_app); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1408, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_on_edit_moves_nextword); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1408, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __pyx_f_10_qt_qtwogl_q2str(this->text()); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1408, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyInt_From_int(this->cursorPosition()); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1408, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = NULL; __pyx_t_7 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_7 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_t_4, __pyx_t_5}; __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1408, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_t_4, __pyx_t_5}; __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1408, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif { __pyx_t_8 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1408, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); if (__pyx_t_6) { __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = NULL; } __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_7, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, __pyx_t_5); __pyx_t_4 = 0; __pyx_t_5 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_8, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1408, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_pos = __pyx_t_2; __pyx_t_2 = 0; /* "_qt_qtwogl.pyx":1409 * if event.matches(MoveToNextWord): * pos = pydata.app.on_edit_moves_nextword(q2str(this.text()), this.cursorPosition()) * this.setCursorPosition(pos) # <<<<<<<<<<<<<< * elif event.matches(MoveToPreviousWord): * pos = pydata.app.on_edit_moves_prevword(q2str(this.text()), this.cursorPosition()) */ __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_v_pos); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1409, __pyx_L1_error) this->setCursorPosition(__pyx_t_7); /* "_qt_qtwogl.pyx":1407 * ##pxm-FUNC PH with gil * void keyPressEvent(QKeyEvent *event) with gil: * if event.matches(MoveToNextWord): # <<<<<<<<<<<<<< * pos = pydata.app.on_edit_moves_nextword(q2str(this.text()), this.cursorPosition()) * this.setCursorPosition(pos) */ goto __pyx_L3; } /* "_qt_qtwogl.pyx":1410 * pos = pydata.app.on_edit_moves_nextword(q2str(this.text()), this.cursorPosition()) * this.setCursorPosition(pos) * elif event.matches(MoveToPreviousWord): # <<<<<<<<<<<<<< * pos = pydata.app.on_edit_moves_prevword(q2str(this.text()), this.cursorPosition()) * this.setCursorPosition(pos) */ __pyx_t_1 = (__pyx_v_event->matches(QKeySequence::MoveToPreviousWord) != 0); if (__pyx_t_1) { /* "_qt_qtwogl.pyx":1411 * this.setCursorPosition(pos) * elif event.matches(MoveToPreviousWord): * pos = pydata.app.on_edit_moves_prevword(q2str(this.text()), this.cursorPosition()) # <<<<<<<<<<<<<< * this.setCursorPosition(pos) * elif event.key() == Qt.Key_Right and event.modifiers() == Qt.AltModifier: */ __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1411, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_app); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1411, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_on_edit_moves_prevword); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1411, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = __pyx_f_10_qt_qtwogl_q2str(this->text()); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1411, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_5 = __Pyx_PyInt_From_int(this->cursorPosition()); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1411, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_4 = NULL; __pyx_t_7 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_7 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_8, __pyx_t_5}; __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1411, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_8, __pyx_t_5}; __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1411, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif { __pyx_t_6 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1411, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (__pyx_t_4) { __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL; } __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_7, __pyx_t_8); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_7, __pyx_t_5); __pyx_t_8 = 0; __pyx_t_5 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1411, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_pos = __pyx_t_2; __pyx_t_2 = 0; /* "_qt_qtwogl.pyx":1412 * elif event.matches(MoveToPreviousWord): * pos = pydata.app.on_edit_moves_prevword(q2str(this.text()), this.cursorPosition()) * this.setCursorPosition(pos) # <<<<<<<<<<<<<< * elif event.key() == Qt.Key_Right and event.modifiers() == Qt.AltModifier: * pydata.app.on_edit_moves_swapnext(q2str(this.text()), this.cursorPosition()) */ __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_v_pos); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1412, __pyx_L1_error) this->setCursorPosition(__pyx_t_7); /* "_qt_qtwogl.pyx":1410 * pos = pydata.app.on_edit_moves_nextword(q2str(this.text()), this.cursorPosition()) * this.setCursorPosition(pos) * elif event.matches(MoveToPreviousWord): # <<<<<<<<<<<<<< * pos = pydata.app.on_edit_moves_prevword(q2str(this.text()), this.cursorPosition()) * this.setCursorPosition(pos) */ goto __pyx_L3; } /* "_qt_qtwogl.pyx":1413 * pos = pydata.app.on_edit_moves_prevword(q2str(this.text()), this.cursorPosition()) * this.setCursorPosition(pos) * elif event.key() == Qt.Key_Right and event.modifiers() == Qt.AltModifier: # <<<<<<<<<<<<<< * pydata.app.on_edit_moves_swapnext(q2str(this.text()), this.cursorPosition()) * elif event.key() == Qt.Key_Left and event.modifiers() == Qt.AltModifier: */ __pyx_t_9 = ((__pyx_v_event->key() == Qt::Key_Right) != 0); if (__pyx_t_9) { } else { __pyx_t_1 = __pyx_t_9; goto __pyx_L4_bool_binop_done; } __pyx_t_9 = ((__pyx_v_event->modifiers() == Qt::AltModifier) != 0); __pyx_t_1 = __pyx_t_9; __pyx_L4_bool_binop_done:; if (__pyx_t_1) { /* "_qt_qtwogl.pyx":1414 * this.setCursorPosition(pos) * elif event.key() == Qt.Key_Right and event.modifiers() == Qt.AltModifier: * pydata.app.on_edit_moves_swapnext(q2str(this.text()), this.cursorPosition()) # <<<<<<<<<<<<<< * elif event.key() == Qt.Key_Left and event.modifiers() == Qt.AltModifier: * pydata.app.on_edit_moves_swapprev(q2str(this.text()), this.cursorPosition()) */ __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1414, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_app); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1414, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_on_edit_moves_swapnext); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1414, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __pyx_f_10_qt_qtwogl_q2str(this->text()); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1414, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_5 = __Pyx_PyInt_From_int(this->cursorPosition()); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1414, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_8 = NULL; __pyx_t_7 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_8)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_7 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_8, __pyx_t_6, __pyx_t_5}; __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1414, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_8, __pyx_t_6, __pyx_t_5}; __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1414, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif { __pyx_t_4 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1414, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (__pyx_t_8) { __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_8); __pyx_t_8 = NULL; } __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_7, __pyx_t_6); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_7, __pyx_t_5); __pyx_t_6 = 0; __pyx_t_5 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1414, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwogl.pyx":1413 * pos = pydata.app.on_edit_moves_prevword(q2str(this.text()), this.cursorPosition()) * this.setCursorPosition(pos) * elif event.key() == Qt.Key_Right and event.modifiers() == Qt.AltModifier: # <<<<<<<<<<<<<< * pydata.app.on_edit_moves_swapnext(q2str(this.text()), this.cursorPosition()) * elif event.key() == Qt.Key_Left and event.modifiers() == Qt.AltModifier: */ goto __pyx_L3; } /* "_qt_qtwogl.pyx":1415 * elif event.key() == Qt.Key_Right and event.modifiers() == Qt.AltModifier: * pydata.app.on_edit_moves_swapnext(q2str(this.text()), this.cursorPosition()) * elif event.key() == Qt.Key_Left and event.modifiers() == Qt.AltModifier: # <<<<<<<<<<<<<< * pydata.app.on_edit_moves_swapprev(q2str(this.text()), this.cursorPosition()) * else: */ __pyx_t_9 = ((__pyx_v_event->key() == Qt::Key_Left) != 0); if (__pyx_t_9) { } else { __pyx_t_1 = __pyx_t_9; goto __pyx_L6_bool_binop_done; } __pyx_t_9 = ((__pyx_v_event->modifiers() == Qt::AltModifier) != 0); __pyx_t_1 = __pyx_t_9; __pyx_L6_bool_binop_done:; if (__pyx_t_1) { /* "_qt_qtwogl.pyx":1416 * pydata.app.on_edit_moves_swapnext(q2str(this.text()), this.cursorPosition()) * elif event.key() == Qt.Key_Left and event.modifiers() == Qt.AltModifier: * pydata.app.on_edit_moves_swapprev(q2str(this.text()), this.cursorPosition()) # <<<<<<<<<<<<<< * else: * this.QLineEdit_keyPressEvent(event) #px/ */ __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1416, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_app); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1416, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_on_edit_moves_swapprev); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1416, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __pyx_f_10_qt_qtwogl_q2str(this->text()); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1416, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyInt_From_int(this->cursorPosition()); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1416, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = NULL; __pyx_t_7 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_7 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_t_4, __pyx_t_5}; __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1416, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_t_4, __pyx_t_5}; __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1416, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif { __pyx_t_8 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1416, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); if (__pyx_t_6) { __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = NULL; } __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_7, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, __pyx_t_5); __pyx_t_4 = 0; __pyx_t_5 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_8, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1416, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwogl.pyx":1415 * elif event.key() == Qt.Key_Right and event.modifiers() == Qt.AltModifier: * pydata.app.on_edit_moves_swapnext(q2str(this.text()), this.cursorPosition()) * elif event.key() == Qt.Key_Left and event.modifiers() == Qt.AltModifier: # <<<<<<<<<<<<<< * pydata.app.on_edit_moves_swapprev(q2str(this.text()), this.cursorPosition()) * else: */ goto __pyx_L3; } /* "_qt_qtwogl.pyx":1418 * pydata.app.on_edit_moves_swapprev(q2str(this.text()), this.cursorPosition()) * else: * this.QLineEdit_keyPressEvent(event) #px/ # <<<<<<<<<<<<<< * #QLineEdit.keyPressEvent(self, event) * ##pxm-FUNC PH with gil const */ /*else*/ { this->QLineEdit::keyPressEvent(__pyx_v_event); } __pyx_L3:; /* "_qt_qtwogl.pyx":1406 * ##pxc>} * ##pxm-FUNC PH with gil * void keyPressEvent(QKeyEvent *event) with gil: # <<<<<<<<<<<<<< * if event.matches(MoveToNextWord): * pos = pydata.app.on_edit_moves_nextword(q2str(this.text()), this.cursorPosition()) */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_8); __Pyx_WriteUnraisable("MoveEdit.keyPressEvent", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_XDECREF(__pyx_v_pos); __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwogl.pyx":1421 * #QLineEdit.keyPressEvent(self, event) * ##pxm-FUNC PH with gil const * void on_returnpressed() with gil const: # <<<<<<<<<<<<<< * pydata.app.on_edit_finished(q2str(this.text()), this.cursorPosition()) * ##pxm>CPPCLASS_END */ void MoveEdit::on_returnpressed(void) const { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; int __pyx_t_6; PyObject *__pyx_t_7 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_returnpressed", 0); /* "_qt_qtwogl.pyx":1422 * ##pxm-FUNC PH with gil const * void on_returnpressed() with gil const: * pydata.app.on_edit_finished(q2str(this.text()), this.cursorPosition()) # <<<<<<<<<<<<<< * ##pxm>CPPCLASS_END * */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1422, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_app); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1422, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_on_edit_finished); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1422, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __pyx_f_10_qt_qtwogl_q2str(this->text()); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1422, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyInt_From_int(this->cursorPosition()); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1422, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_3, __pyx_t_4}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1422, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_3, __pyx_t_4}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1422, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1422, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_t_4); __pyx_t_3 = 0; __pyx_t_4 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1422, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwogl.pyx":1421 * #QLineEdit.keyPressEvent(self, event) * ##pxm-FUNC PH with gil const * void on_returnpressed() with gil const: # <<<<<<<<<<<<<< * pydata.app.on_edit_finished(q2str(this.text()), this.cursorPosition()) * ##pxm>CPPCLASS_END */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_7); __Pyx_WriteUnraisable("MoveEdit.on_returnpressed", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwogl.pyx":1432 * ##pxh> : QOpenGLWidget() {} * ##pxm-FUNC PHD with gil * void init() with gil: # <<<<<<<<<<<<<< * this.setAcceptDrops(True) * this.setFocusPolicy(Qt.StrongFocus) */ void DrawingArea::init(void) { __Pyx_RefNannyDeclarations int __pyx_t_1; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("init", 0); /* "_qt_qtwogl.pyx":1433 * ##pxm-FUNC PHD with gil * void init() with gil: * this.setAcceptDrops(True) # <<<<<<<<<<<<<< * this.setFocusPolicy(Qt.StrongFocus) * if debug & DEBUG_NOCONTROLS: */ this->setAcceptDrops(1); /* "_qt_qtwogl.pyx":1434 * void init() with gil: * this.setAcceptDrops(True) * this.setFocusPolicy(Qt.StrongFocus) # <<<<<<<<<<<<<< * if debug & DEBUG_NOCONTROLS: * this.setMinimumSize(128, 128) # for thumbnail generation */ this->setFocusPolicy(Qt::StrongFocus); /* "_qt_qtwogl.pyx":1435 * this.setAcceptDrops(True) * this.setFocusPolicy(Qt.StrongFocus) * if debug & DEBUG_NOCONTROLS: # <<<<<<<<<<<<<< * this.setMinimumSize(128, 128) # for thumbnail generation * else: */ __pyx_t_1 = ((__pyx_v_10_qt_qtwogl_debug & __pyx_e_10_qt_qtwogl_DEBUG_NOCONTROLS) != 0); if (__pyx_t_1) { /* "_qt_qtwogl.pyx":1436 * this.setFocusPolicy(Qt.StrongFocus) * if debug & DEBUG_NOCONTROLS: * this.setMinimumSize(128, 128) # for thumbnail generation # <<<<<<<<<<<<<< * else: * this.setMinimumSize(300, 300) */ this->setMinimumSize(0x80, 0x80); /* "_qt_qtwogl.pyx":1435 * this.setAcceptDrops(True) * this.setFocusPolicy(Qt.StrongFocus) * if debug & DEBUG_NOCONTROLS: # <<<<<<<<<<<<<< * this.setMinimumSize(128, 128) # for thumbnail generation * else: */ goto __pyx_L3; } /* "_qt_qtwogl.pyx":1438 * this.setMinimumSize(128, 128) # for thumbnail generation * else: * this.setMinimumSize(300, 300) # <<<<<<<<<<<<<< * this.setMouseTracking(True) * ##pxm-FUNC PH nogil */ /*else*/ { this->setMinimumSize(0x12C, 0x12C); } __pyx_L3:; /* "_qt_qtwogl.pyx":1439 * else: * this.setMinimumSize(300, 300) * this.setMouseTracking(True) # <<<<<<<<<<<<<< * ##pxm-FUNC PH nogil * void paintGL() nogil: */ this->setMouseTracking(1); /* "_qt_qtwogl.pyx":1432 * ##pxh> : QOpenGLWidget() {} * ##pxm-FUNC PHD with gil * void init() with gil: # <<<<<<<<<<<<<< * this.setAcceptDrops(True) * this.setFocusPolicy(Qt.StrongFocus) */ /* function exit code */ __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwogl.pyx":1441 * this.setMouseTracking(True) * ##pxm-FUNC PH nogil * void paintGL() nogil: # <<<<<<<<<<<<<< * uidata.mainwindow.on_beforeSynchronizing() * renderdata.renderer.on_beforeRendering() */ void DrawingArea::paintGL(void) { /* "_qt_qtwogl.pyx":1442 * ##pxm-FUNC PH nogil * void paintGL() nogil: * uidata.mainwindow.on_beforeSynchronizing() # <<<<<<<<<<<<<< * renderdata.renderer.on_beforeRendering() * ##pxm-FUNC PH with gil */ __pyx_v_10_qt_qtwogl_uidata.mainwindow->on_beforeSynchronizing(); /* "_qt_qtwogl.pyx":1443 * void paintGL() nogil: * uidata.mainwindow.on_beforeSynchronizing() * renderdata.renderer.on_beforeRendering() # <<<<<<<<<<<<<< * ##pxm-FUNC PH with gil * void resizeGL(int width, int height) with gil: */ __pyx_v_10_qt_qtwogl_renderdata.renderer->on_beforeRendering(); /* "_qt_qtwogl.pyx":1441 * this.setMouseTracking(True) * ##pxm-FUNC PH nogil * void paintGL() nogil: # <<<<<<<<<<<<<< * uidata.mainwindow.on_beforeSynchronizing() * renderdata.renderer.on_beforeRendering() */ /* function exit code */ } /* "_qt_qtwogl.pyx":1445 * renderdata.renderer.on_beforeRendering() * ##pxm-FUNC PH with gil * void resizeGL(int width, int height) with gil: # <<<<<<<<<<<<<< * uidata.width = width * uidata.height = height */ void DrawingArea::resizeGL(int __pyx_v_width, int __pyx_v_height) { __Pyx_RefNannyDeclarations #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("resizeGL", 0); /* "_qt_qtwogl.pyx":1446 * ##pxm-FUNC PH with gil * void resizeGL(int width, int height) with gil: * uidata.width = width # <<<<<<<<<<<<<< * uidata.height = height * ##pxm-FUNC PH with gil */ __pyx_v_10_qt_qtwogl_uidata.width = __pyx_v_width; /* "_qt_qtwogl.pyx":1447 * void resizeGL(int width, int height) with gil: * uidata.width = width * uidata.height = height # <<<<<<<<<<<<<< * ##pxm-FUNC PH with gil * void keyPressEvent(QKeyEvent *event) with gil: */ __pyx_v_10_qt_qtwogl_uidata.height = __pyx_v_height; /* "_qt_qtwogl.pyx":1445 * renderdata.renderer.on_beforeRendering() * ##pxm-FUNC PH with gil * void resizeGL(int width, int height) with gil: # <<<<<<<<<<<<<< * uidata.width = width * uidata.height = height */ /* function exit code */ __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwogl.pyx":1449 * uidata.height = height * ##pxm-FUNC PH with gil * void keyPressEvent(QKeyEvent *event) with gil: # <<<<<<<<<<<<<< * if not pydata.app.on_key_pressed(event.key(), event.modifiers() & SAFE_MODIFIER_MASK, True): * this.QWidget_keyPressEvent(event) #px/ */ void DrawingArea::keyPressEvent(QKeyEvent *__pyx_v_event) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; int __pyx_t_6; PyObject *__pyx_t_7 = NULL; int __pyx_t_8; int __pyx_t_9; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("keyPressEvent", 0); /* "_qt_qtwogl.pyx":1450 * ##pxm-FUNC PH with gil * void keyPressEvent(QKeyEvent *event) with gil: * if not pydata.app.on_key_pressed(event.key(), event.modifiers() & SAFE_MODIFIER_MASK, True): # <<<<<<<<<<<<<< * this.QWidget_keyPressEvent(event) #px/ * #QWidget.keyPressEvent(this, event) */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1450, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_app); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1450, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_on_key_pressed); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1450, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_event->key()); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1450, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyInt_From_Qt_3a__3a_KeyboardModifiers((__pyx_v_event->modifiers() & __pyx_e_10_qt_qtwogl_SAFE_MODIFIER_MASK)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1450, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_5, __pyx_t_3, __pyx_t_4, Py_True}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1450, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_5, __pyx_t_3, __pyx_t_4, Py_True}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1450, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_7 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1450, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_t_4); __Pyx_INCREF(Py_True); __Pyx_GIVEREF(Py_True); PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_6, Py_True); __pyx_t_3 = 0; __pyx_t_4 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1450, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 1450, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_9 = ((!__pyx_t_8) != 0); if (__pyx_t_9) { /* "_qt_qtwogl.pyx":1451 * void keyPressEvent(QKeyEvent *event) with gil: * if not pydata.app.on_key_pressed(event.key(), event.modifiers() & SAFE_MODIFIER_MASK, True): * this.QWidget_keyPressEvent(event) #px/ # <<<<<<<<<<<<<< * #QWidget.keyPressEvent(this, event) * ##pxm-FUNC PH with gil */ this->QWidget::keyPressEvent(__pyx_v_event); /* "_qt_qtwogl.pyx":1450 * ##pxm-FUNC PH with gil * void keyPressEvent(QKeyEvent *event) with gil: * if not pydata.app.on_key_pressed(event.key(), event.modifiers() & SAFE_MODIFIER_MASK, True): # <<<<<<<<<<<<<< * this.QWidget_keyPressEvent(event) #px/ * #QWidget.keyPressEvent(this, event) */ } /* "_qt_qtwogl.pyx":1449 * uidata.height = height * ##pxm-FUNC PH with gil * void keyPressEvent(QKeyEvent *event) with gil: # <<<<<<<<<<<<<< * if not pydata.app.on_key_pressed(event.key(), event.modifiers() & SAFE_MODIFIER_MASK, True): * this.QWidget_keyPressEvent(event) #px/ */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_7); __Pyx_WriteUnraisable("DrawingArea.keyPressEvent", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwogl.pyx":1454 * #QWidget.keyPressEvent(this, event) * ##pxm-FUNC PH with gil * void mousePressEvent(QMouseEvent *event) with gil: # <<<<<<<<<<<<<< * pydata.app.on_mouse_pressed(event.modifiers(), event.button(), event.x(), event.y(), this.height()) * ##pxm-FUNC PH with gil */ void DrawingArea::mousePressEvent(QMouseEvent *__pyx_v_event) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; PyObject *__pyx_t_7 = NULL; PyObject *__pyx_t_8 = NULL; int __pyx_t_9; PyObject *__pyx_t_10 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("mousePressEvent", 0); /* "_qt_qtwogl.pyx":1455 * ##pxm-FUNC PH with gil * void mousePressEvent(QMouseEvent *event) with gil: * pydata.app.on_mouse_pressed(event.modifiers(), event.button(), event.x(), event.y(), this.height()) # <<<<<<<<<<<<<< * ##pxm-FUNC PH with gil * void mouseReleaseEvent(QMouseEvent *event) with gil: */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1455, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_app); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1455, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_on_mouse_pressed); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1455, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyInt_From_Qt_3a__3a_KeyboardModifiers(__pyx_v_event->modifiers()); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1455, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyInt_From_enum__Qt_3a__3a_MouseButton(__pyx_v_event->button()); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1455, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_event->x()); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1455, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_event->y()); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1455, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = __Pyx_PyInt_From_int(this->height()); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1455, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_8 = NULL; __pyx_t_9 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_8)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_9 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[6] = {__pyx_t_8, __pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_t_6, __pyx_t_7}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_9, 5+__pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1455, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[6] = {__pyx_t_8, __pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_t_6, __pyx_t_7}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_9, 5+__pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1455, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } else #endif { __pyx_t_10 = PyTuple_New(5+__pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1455, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); if (__pyx_t_8) { __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_8); __pyx_t_8 = NULL; } __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_10, 0+__pyx_t_9, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_9, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_10, 2+__pyx_t_9, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_10, 3+__pyx_t_9, __pyx_t_6); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_10, 4+__pyx_t_9, __pyx_t_7); __pyx_t_3 = 0; __pyx_t_4 = 0; __pyx_t_5 = 0; __pyx_t_6 = 0; __pyx_t_7 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_10, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1455, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwogl.pyx":1454 * #QWidget.keyPressEvent(this, event) * ##pxm-FUNC PH with gil * void mousePressEvent(QMouseEvent *event) with gil: # <<<<<<<<<<<<<< * pydata.app.on_mouse_pressed(event.modifiers(), event.button(), event.x(), event.y(), this.height()) * ##pxm-FUNC PH with gil */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_8); __Pyx_XDECREF(__pyx_t_10); __Pyx_WriteUnraisable("DrawingArea.mousePressEvent", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwogl.pyx":1457 * pydata.app.on_mouse_pressed(event.modifiers(), event.button(), event.x(), event.y(), this.height()) * ##pxm-FUNC PH with gil * void mouseReleaseEvent(QMouseEvent *event) with gil: # <<<<<<<<<<<<<< * pydata.app.on_mouse_released(event.x(), event.y()) * ##pxm-FUNC PH with gil */ void DrawingArea::mouseReleaseEvent(QMouseEvent *__pyx_v_event) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; int __pyx_t_6; PyObject *__pyx_t_7 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("mouseReleaseEvent", 0); /* "_qt_qtwogl.pyx":1458 * ##pxm-FUNC PH with gil * void mouseReleaseEvent(QMouseEvent *event) with gil: * pydata.app.on_mouse_released(event.x(), event.y()) # <<<<<<<<<<<<<< * ##pxm-FUNC PH with gil * void mouseMoveEvent(QMouseEvent *event) with gil: */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1458, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_app); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1458, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_on_mouse_released); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1458, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_event->x()); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1458, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_event->y()); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1458, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_3, __pyx_t_4}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1458, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_3, __pyx_t_4}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1458, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1458, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_t_4); __pyx_t_3 = 0; __pyx_t_4 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1458, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwogl.pyx":1457 * pydata.app.on_mouse_pressed(event.modifiers(), event.button(), event.x(), event.y(), this.height()) * ##pxm-FUNC PH with gil * void mouseReleaseEvent(QMouseEvent *event) with gil: # <<<<<<<<<<<<<< * pydata.app.on_mouse_released(event.x(), event.y()) * ##pxm-FUNC PH with gil */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_7); __Pyx_WriteUnraisable("DrawingArea.mouseReleaseEvent", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwogl.pyx":1460 * pydata.app.on_mouse_released(event.x(), event.y()) * ##pxm-FUNC PH with gil * void mouseMoveEvent(QMouseEvent *event) with gil: # <<<<<<<<<<<<<< * pydata.app.on_mouse_moved(True, event.x(), event.y(), this.height(), 4) * ##pxm-FUNC PH with gil */ void DrawingArea::mouseMoveEvent(QMouseEvent *__pyx_v_event) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; int __pyx_t_7; PyObject *__pyx_t_8 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("mouseMoveEvent", 0); /* "_qt_qtwogl.pyx":1461 * ##pxm-FUNC PH with gil * void mouseMoveEvent(QMouseEvent *event) with gil: * pydata.app.on_mouse_moved(True, event.x(), event.y(), this.height(), 4) # <<<<<<<<<<<<<< * ##pxm-FUNC PH with gil * void wheelEvent(QWheelEvent *event) with gil: */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1461, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_app); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1461, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_on_mouse_moved); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1461, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_event->x()); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1461, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_event->y()); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1461, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyInt_From_int(this->height()); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1461, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = NULL; __pyx_t_7 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_7 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[6] = {__pyx_t_6, Py_True, __pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_int_4}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_7, 5+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1461, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[6] = {__pyx_t_6, Py_True, __pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_int_4}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_7, 5+__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1461, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif { __pyx_t_8 = PyTuple_New(5+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1461, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); if (__pyx_t_6) { __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = NULL; } __Pyx_INCREF(Py_True); __Pyx_GIVEREF(Py_True); PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_7, Py_True); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_8, 2+__pyx_t_7, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_8, 3+__pyx_t_7, __pyx_t_5); __Pyx_INCREF(__pyx_int_4); __Pyx_GIVEREF(__pyx_int_4); PyTuple_SET_ITEM(__pyx_t_8, 4+__pyx_t_7, __pyx_int_4); __pyx_t_3 = 0; __pyx_t_4 = 0; __pyx_t_5 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1461, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwogl.pyx":1460 * pydata.app.on_mouse_released(event.x(), event.y()) * ##pxm-FUNC PH with gil * void mouseMoveEvent(QMouseEvent *event) with gil: # <<<<<<<<<<<<<< * pydata.app.on_mouse_moved(True, event.x(), event.y(), this.height(), 4) * ##pxm-FUNC PH with gil */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_8); __Pyx_WriteUnraisable("DrawingArea.mouseMoveEvent", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwogl.pyx":1463 * pydata.app.on_mouse_moved(True, event.x(), event.y(), this.height(), 4) * ##pxm-FUNC PH with gil * void wheelEvent(QWheelEvent *event) with gil: # <<<<<<<<<<<<<< * pydata.app.on_mouse_zoom(event.angleDelta().y() / 120) * ##pxm-FUNC PH with gil */ void DrawingArea::wheelEvent(QWheelEvent *__pyx_v_event) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("wheelEvent", 0); /* "_qt_qtwogl.pyx":1464 * ##pxm-FUNC PH with gil * void wheelEvent(QWheelEvent *event) with gil: * pydata.app.on_mouse_zoom(event.angleDelta().y() / 120) # <<<<<<<<<<<<<< * ##pxm-FUNC PH with gil * void dragEnterEvent(QDragEnterEvent *event) with gil: */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1464, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_app); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1464, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_on_mouse_zoom); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1464, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyFloat_FromDouble((((double)__pyx_v_event->angleDelta().y()) / 120.0)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1464, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } if (!__pyx_t_4) { __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1464, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_3}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1464, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_3}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1464, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif { __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1464, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL; __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_3); __pyx_t_3 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1464, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwogl.pyx":1463 * pydata.app.on_mouse_moved(True, event.x(), event.y(), this.height(), 4) * ##pxm-FUNC PH with gil * void wheelEvent(QWheelEvent *event) with gil: # <<<<<<<<<<<<<< * pydata.app.on_mouse_zoom(event.angleDelta().y() / 120) * ##pxm-FUNC PH with gil */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_WriteUnraisable("DrawingArea.wheelEvent", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwogl.pyx":1466 * pydata.app.on_mouse_zoom(event.angleDelta().y() / 120) * ##pxm-FUNC PH with gil * void dragEnterEvent(QDragEnterEvent *event) with gil: # <<<<<<<<<<<<<< * cdef const QMimeData *mime_data #px+ * mime_data = event.mimeData() */ void DrawingArea::dragEnterEvent(QDragEnterEvent *__pyx_v_event) { QMimeData const *__pyx_v_mime_data; __Pyx_RefNannyDeclarations int __pyx_t_1; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; int __pyx_t_4; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("dragEnterEvent", 0); /* "_qt_qtwogl.pyx":1468 * void dragEnterEvent(QDragEnterEvent *event) with gil: * cdef const QMimeData *mime_data #px+ * mime_data = event.mimeData() # <<<<<<<<<<<<<< * if debug & DEBUG_MSG: * print('drag enter:', _qs2list(mime_data.formats())) #px/ */ __pyx_v_mime_data = __pyx_v_event->mimeData(); /* "_qt_qtwogl.pyx":1469 * cdef const QMimeData *mime_data #px+ * mime_data = event.mimeData() * if debug & DEBUG_MSG: # <<<<<<<<<<<<<< * print('drag enter:', _qs2list(mime_data.formats())) #px/ * #print('drag enter:', mime_data.formats()) */ __pyx_t_1 = ((__pyx_v_10_qt_qtwogl_debug & __pyx_e_10_qt_qtwogl_DEBUG_MSG) != 0); if (__pyx_t_1) { /* "_qt_qtwogl.pyx":1470 * mime_data = event.mimeData() * if debug & DEBUG_MSG: * print('drag enter:', _qs2list(mime_data.formats())) #px/ # <<<<<<<<<<<<<< * #print('drag enter:', mime_data.formats()) * if mime_data.hasColor(): */ __pyx_t_2 = __pyx_f_10_qt_qtwogl__qs2list(__pyx_v_mime_data->formats()); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1470, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1470, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_kp_u_drag_enter); __Pyx_GIVEREF(__pyx_kp_u_drag_enter); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_kp_u_drag_enter); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1470, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwogl.pyx":1469 * cdef const QMimeData *mime_data #px+ * mime_data = event.mimeData() * if debug & DEBUG_MSG: # <<<<<<<<<<<<<< * print('drag enter:', _qs2list(mime_data.formats())) #px/ * #print('drag enter:', mime_data.formats()) */ } /* "_qt_qtwogl.pyx":1472 * print('drag enter:', _qs2list(mime_data.formats())) #px/ * #print('drag enter:', mime_data.formats()) * if mime_data.hasColor(): # <<<<<<<<<<<<<< * event.acceptProposedAction() * elif mime_data.hasUrls() and mime_data.urls().at(0).isLocalFile(): */ __pyx_t_1 = (__pyx_v_mime_data->hasColor() != 0); if (__pyx_t_1) { /* "_qt_qtwogl.pyx":1473 * #print('drag enter:', mime_data.formats()) * if mime_data.hasColor(): * event.acceptProposedAction() # <<<<<<<<<<<<<< * elif mime_data.hasUrls() and mime_data.urls().at(0).isLocalFile(): * event.acceptProposedAction() */ __pyx_v_event->acceptProposedAction(); /* "_qt_qtwogl.pyx":1472 * print('drag enter:', _qs2list(mime_data.formats())) #px/ * #print('drag enter:', mime_data.formats()) * if mime_data.hasColor(): # <<<<<<<<<<<<<< * event.acceptProposedAction() * elif mime_data.hasUrls() and mime_data.urls().at(0).isLocalFile(): */ goto __pyx_L4; } /* "_qt_qtwogl.pyx":1474 * if mime_data.hasColor(): * event.acceptProposedAction() * elif mime_data.hasUrls() and mime_data.urls().at(0).isLocalFile(): # <<<<<<<<<<<<<< * event.acceptProposedAction() * ##pxm-FUNC PH with gil */ __pyx_t_4 = (__pyx_v_mime_data->hasUrls() != 0); if (__pyx_t_4) { } else { __pyx_t_1 = __pyx_t_4; goto __pyx_L5_bool_binop_done; } __pyx_t_4 = (__pyx_v_mime_data->urls().at(0).isLocalFile() != 0); __pyx_t_1 = __pyx_t_4; __pyx_L5_bool_binop_done:; if (__pyx_t_1) { /* "_qt_qtwogl.pyx":1475 * event.acceptProposedAction() * elif mime_data.hasUrls() and mime_data.urls().at(0).isLocalFile(): * event.acceptProposedAction() # <<<<<<<<<<<<<< * ##pxm-FUNC PH with gil * void dropEvent(QDropEvent *event) with gil: */ __pyx_v_event->acceptProposedAction(); /* "_qt_qtwogl.pyx":1474 * if mime_data.hasColor(): * event.acceptProposedAction() * elif mime_data.hasUrls() and mime_data.urls().at(0).isLocalFile(): # <<<<<<<<<<<<<< * event.acceptProposedAction() * ##pxm-FUNC PH with gil */ } __pyx_L4:; /* "_qt_qtwogl.pyx":1466 * pydata.app.on_mouse_zoom(event.angleDelta().y() / 120) * ##pxm-FUNC PH with gil * void dragEnterEvent(QDragEnterEvent *event) with gil: # <<<<<<<<<<<<<< * cdef const QMimeData *mime_data #px+ * mime_data = event.mimeData() */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_WriteUnraisable("DrawingArea.dragEnterEvent", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwogl.pyx":1477 * event.acceptProposedAction() * ##pxm-FUNC PH with gil * void dropEvent(QDropEvent *event) with gil: # <<<<<<<<<<<<<< * cdef const QMimeData *mime_data #px+ * mime_data = event.mimeData() */ void DrawingArea::dropEvent(QDropEvent *__pyx_v_event) { QMimeData const *__pyx_v_mime_data; __Pyx_RefNannyDeclarations int __pyx_t_1; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; PyObject *__pyx_t_7 = NULL; int __pyx_t_8; PyObject *__pyx_t_9 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("dropEvent", 0); /* "_qt_qtwogl.pyx":1479 * void dropEvent(QDropEvent *event) with gil: * cdef const QMimeData *mime_data #px+ * mime_data = event.mimeData() # <<<<<<<<<<<<<< * if mime_data.hasColor(): * pydata.app.on_mouse_drop_color(event.pos().x(), this.height() - event.pos().y(), */ __pyx_v_mime_data = __pyx_v_event->mimeData(); /* "_qt_qtwogl.pyx":1480 * cdef const QMimeData *mime_data #px+ * mime_data = event.mimeData() * if mime_data.hasColor(): # <<<<<<<<<<<<<< * pydata.app.on_mouse_drop_color(event.pos().x(), this.height() - event.pos().y(), * q2str(mime_data.colorData().toString())) */ __pyx_t_1 = (__pyx_v_mime_data->hasColor() != 0); if (__pyx_t_1) { /* "_qt_qtwogl.pyx":1481 * mime_data = event.mimeData() * if mime_data.hasColor(): * pydata.app.on_mouse_drop_color(event.pos().x(), this.height() - event.pos().y(), # <<<<<<<<<<<<<< * q2str(mime_data.colorData().toString())) * elif mime_data.hasUrls(): */ __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1481, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_app); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1481, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_on_mouse_drop_color); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1481, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_event->pos().x()); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1481, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyInt_From_int((this->height() - __pyx_v_event->pos().y())); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1481, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); /* "_qt_qtwogl.pyx":1482 * if mime_data.hasColor(): * pydata.app.on_mouse_drop_color(event.pos().x(), this.height() - event.pos().y(), * q2str(mime_data.colorData().toString())) # <<<<<<<<<<<<<< * elif mime_data.hasUrls(): * pydata.app.on_mouse_drop_url(event.pos().x(), this.height() - event.pos().y(), */ __pyx_t_6 = __pyx_f_10_qt_qtwogl_q2str(__pyx_v_mime_data->colorData().toString()); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1482, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = NULL; __pyx_t_8 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_8 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[4] = {__pyx_t_7, __pyx_t_4, __pyx_t_5, __pyx_t_6}; __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_8, 3+__pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1481, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[4] = {__pyx_t_7, __pyx_t_4, __pyx_t_5, __pyx_t_6}; __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_8, 3+__pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1481, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else #endif { __pyx_t_9 = PyTuple_New(3+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1481, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); if (__pyx_t_7) { __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7); __pyx_t_7 = NULL; } __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_8, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_8, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_9, 2+__pyx_t_8, __pyx_t_6); __pyx_t_4 = 0; __pyx_t_5 = 0; __pyx_t_6 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_9, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1481, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwogl.pyx":1480 * cdef const QMimeData *mime_data #px+ * mime_data = event.mimeData() * if mime_data.hasColor(): # <<<<<<<<<<<<<< * pydata.app.on_mouse_drop_color(event.pos().x(), this.height() - event.pos().y(), * q2str(mime_data.colorData().toString())) */ goto __pyx_L3; } /* "_qt_qtwogl.pyx":1483 * pydata.app.on_mouse_drop_color(event.pos().x(), this.height() - event.pos().y(), * q2str(mime_data.colorData().toString())) * elif mime_data.hasUrls(): # <<<<<<<<<<<<<< * pydata.app.on_mouse_drop_url(event.pos().x(), this.height() - event.pos().y(), * q2str(mime_data.urls().at(0).toString())) */ __pyx_t_1 = (__pyx_v_mime_data->hasUrls() != 0); if (__pyx_t_1) { /* "_qt_qtwogl.pyx":1484 * q2str(mime_data.colorData().toString())) * elif mime_data.hasUrls(): * pydata.app.on_mouse_drop_url(event.pos().x(), this.height() - event.pos().y(), # <<<<<<<<<<<<<< * q2str(mime_data.urls().at(0).toString())) * else: */ __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1484, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_app); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1484, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_on_mouse_drop_url); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1484, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = __Pyx_PyInt_From_int(__pyx_v_event->pos().x()); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1484, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_6 = __Pyx_PyInt_From_int((this->height() - __pyx_v_event->pos().y())); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1484, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); /* "_qt_qtwogl.pyx":1485 * elif mime_data.hasUrls(): * pydata.app.on_mouse_drop_url(event.pos().x(), this.height() - event.pos().y(), * q2str(mime_data.urls().at(0).toString())) # <<<<<<<<<<<<<< * else: * if debug & DEBUG_MSG: */ __pyx_t_5 = __pyx_f_10_qt_qtwogl_q2str(__pyx_v_mime_data->urls().at(0).toString()); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1485, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_4 = NULL; __pyx_t_8 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_8 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[4] = {__pyx_t_4, __pyx_t_9, __pyx_t_6, __pyx_t_5}; __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_8, 3+__pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1484, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[4] = {__pyx_t_4, __pyx_t_9, __pyx_t_6, __pyx_t_5}; __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_8, 3+__pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1484, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif { __pyx_t_7 = PyTuple_New(3+__pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1484, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (__pyx_t_4) { __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_4); __pyx_t_4 = NULL; } __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_8, __pyx_t_9); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_8, __pyx_t_6); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_8, __pyx_t_5); __pyx_t_9 = 0; __pyx_t_6 = 0; __pyx_t_5 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1484, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwogl.pyx":1483 * pydata.app.on_mouse_drop_color(event.pos().x(), this.height() - event.pos().y(), * q2str(mime_data.colorData().toString())) * elif mime_data.hasUrls(): # <<<<<<<<<<<<<< * pydata.app.on_mouse_drop_url(event.pos().x(), this.height() - event.pos().y(), * q2str(mime_data.urls().at(0).toString())) */ goto __pyx_L3; } /* "_qt_qtwogl.pyx":1487 * q2str(mime_data.urls().at(0).toString())) * else: * if debug & DEBUG_MSG: # <<<<<<<<<<<<<< * print('Skip mime type:', ' '.join(_qs2list(mime_data.formats()))) #px/ * #print('Skip mime type:', ' '.join(mime_data.formats())) */ /*else*/ { __pyx_t_1 = ((__pyx_v_10_qt_qtwogl_debug & __pyx_e_10_qt_qtwogl_DEBUG_MSG) != 0); if (__pyx_t_1) { /* "_qt_qtwogl.pyx":1488 * else: * if debug & DEBUG_MSG: * print('Skip mime type:', ' '.join(_qs2list(mime_data.formats()))) #px/ # <<<<<<<<<<<<<< * #print('Skip mime type:', ' '.join(mime_data.formats())) * ##pxm>CPPCLASS_END */ __pyx_t_2 = __pyx_f_10_qt_qtwogl__qs2list(__pyx_v_mime_data->formats()); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1488, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyUnicode_Join(__pyx_kp_u__7, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1488, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1488, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_kp_u_Skip_mime_type); __Pyx_GIVEREF(__pyx_kp_u_Skip_mime_type); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_kp_u_Skip_mime_type); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1488, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "_qt_qtwogl.pyx":1487 * q2str(mime_data.urls().at(0).toString())) * else: * if debug & DEBUG_MSG: # <<<<<<<<<<<<<< * print('Skip mime type:', ' '.join(_qs2list(mime_data.formats()))) #px/ * #print('Skip mime type:', ' '.join(mime_data.formats())) */ } } __pyx_L3:; /* "_qt_qtwogl.pyx":1477 * event.acceptProposedAction() * ##pxm-FUNC PH with gil * void dropEvent(QDropEvent *event) with gil: # <<<<<<<<<<<<<< * cdef const QMimeData *mime_data #px+ * mime_data = event.mimeData() */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_9); __Pyx_WriteUnraisable("DrawingArea.dropEvent", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwogl.pyx":1508 * ##pxh> : QDialog(parent), liststore_blocked(false) {} * ##pxm-FUNC PHD * void init(): # <<<<<<<<<<<<<< * speed_min, speed_max = settings['draw.speed_range'] * mirror_min, mirror_max = settings['draw.mirror_distance_range'] */ void PreferencesDialog::init(void) { PyObject *__pyx_v_speed_min = NULL; PyObject *__pyx_v_speed_max = NULL; PyObject *__pyx_v_mirror_min = NULL; PyObject *__pyx_v_mirror_max = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *(*__pyx_t_5)(PyObject *); int __pyx_t_6; int __pyx_t_7; int __pyx_t_8; int __pyx_t_9; int __pyx_t_10; __Pyx_RefNannySetupContext("init", 0); /* "_qt_qtwogl.pyx":1509 * ##pxm-FUNC PHD * void init(): * speed_min, speed_max = settings['draw.speed_range'] # <<<<<<<<<<<<<< * mirror_min, mirror_max = settings['draw.mirror_distance_range'] * this.liststore_movekeys = new QStandardItemModel(this) #px/ */ __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1509, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyObject_GetItem(__pyx_t_1, __pyx_kp_u_draw_speed_range); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1509, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_2))) || (PyList_CheckExact(__pyx_t_2))) { PyObject* sequence = __pyx_t_2; #if !CYTHON_COMPILING_IN_PYPY Py_ssize_t size = Py_SIZE(sequence); #else Py_ssize_t size = PySequence_Size(sequence); #endif if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 1509, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_1 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_1 = PyList_GET_ITEM(sequence, 0); __pyx_t_3 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(__pyx_t_3); #else __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1509, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1509, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); #endif __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else { Py_ssize_t index = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1509, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_5 = Py_TYPE(__pyx_t_4)->tp_iternext; index = 0; __pyx_t_1 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_1)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_1); index = 1; __pyx_t_3 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_3)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_3); if (__Pyx_IternextUnpackEndCheck(__pyx_t_5(__pyx_t_4), 2) < 0) __PYX_ERR(0, 1509, __pyx_L1_error) __pyx_t_5 = NULL; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; goto __pyx_L4_unpacking_done; __pyx_L3_unpacking_failed:; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_5 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 1509, __pyx_L1_error) __pyx_L4_unpacking_done:; } __pyx_v_speed_min = __pyx_t_1; __pyx_t_1 = 0; __pyx_v_speed_max = __pyx_t_3; __pyx_t_3 = 0; /* "_qt_qtwogl.pyx":1510 * void init(): * speed_min, speed_max = settings['draw.speed_range'] * mirror_min, mirror_max = settings['draw.mirror_distance_range'] # <<<<<<<<<<<<<< * this.liststore_movekeys = new QStandardItemModel(this) #px/ * #this.liststore_movekeys = QStandardItemModel(this) */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1510, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyObject_GetItem(__pyx_t_2, __pyx_kp_u_draw_mirror_distance_range); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1510, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) { PyObject* sequence = __pyx_t_3; #if !CYTHON_COMPILING_IN_PYPY Py_ssize_t size = Py_SIZE(sequence); #else Py_ssize_t size = PySequence_Size(sequence); #endif if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 1510, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_1 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_2 = PyList_GET_ITEM(sequence, 0); __pyx_t_1 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx_t_1); #else __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1510, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1510, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); #endif __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { Py_ssize_t index = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1510, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_5 = Py_TYPE(__pyx_t_4)->tp_iternext; index = 0; __pyx_t_2 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_2)) goto __pyx_L5_unpacking_failed; __Pyx_GOTREF(__pyx_t_2); index = 1; __pyx_t_1 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_1)) goto __pyx_L5_unpacking_failed; __Pyx_GOTREF(__pyx_t_1); if (__Pyx_IternextUnpackEndCheck(__pyx_t_5(__pyx_t_4), 2) < 0) __PYX_ERR(0, 1510, __pyx_L1_error) __pyx_t_5 = NULL; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; goto __pyx_L6_unpacking_done; __pyx_L5_unpacking_failed:; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_5 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 1510, __pyx_L1_error) __pyx_L6_unpacking_done:; } __pyx_v_mirror_min = __pyx_t_2; __pyx_t_2 = 0; __pyx_v_mirror_max = __pyx_t_1; __pyx_t_1 = 0; /* "_qt_qtwogl.pyx":1511 * speed_min, speed_max = settings['draw.speed_range'] * mirror_min, mirror_max = settings['draw.mirror_distance_range'] * this.liststore_movekeys = new QStandardItemModel(this) #px/ # <<<<<<<<<<<<<< * #this.liststore_movekeys = QStandardItemModel(this) * qtui.setupUi_pref(this, */ this->liststore_movekeys = new QStandardItemModel(((QObject *)this)); /* "_qt_qtwogl.pyx":1514 * #this.liststore_movekeys = QStandardItemModel(this) * qtui.setupUi_pref(this, * settings['draw.speed'], speed_min, speed_max, # <<<<<<<<<<<<<< * mirror_min, mirror_max, this.liststore_movekeys) * ##pxh> */ __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1514, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_1 = PyObject_GetItem(__pyx_t_3, __pyx_kp_u_draw_speed); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1514, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_6 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1514, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_v_speed_min); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1514, __pyx_L1_error) __pyx_t_8 = __Pyx_PyInt_As_int(__pyx_v_speed_max); if (unlikely((__pyx_t_8 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1514, __pyx_L1_error) /* "_qt_qtwogl.pyx":1515 * qtui.setupUi_pref(this, * settings['draw.speed'], speed_min, speed_max, * mirror_min, mirror_max, this.liststore_movekeys) # <<<<<<<<<<<<<< * ##pxh> * ##pxm-FUNC PH with gil */ __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_v_mirror_min); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1515, __pyx_L1_error) __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_v_mirror_max); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1515, __pyx_L1_error) /* "_qt_qtwogl.pyx":1513 * this.liststore_movekeys = new QStandardItemModel(this) #px/ * #this.liststore_movekeys = QStandardItemModel(this) * qtui.setupUi_pref(this, # <<<<<<<<<<<<<< * settings['draw.speed'], speed_min, speed_max, * mirror_min, mirror_max, this.liststore_movekeys) */ __pyx_f_6_qtui__setupUi_pref(this, __pyx_t_6, __pyx_t_7, __pyx_t_8, __pyx_t_9, __pyx_t_10, this->liststore_movekeys); /* "_qt_qtwogl.pyx":1508 * ##pxh> : QDialog(parent), liststore_blocked(false) {} * ##pxm-FUNC PHD * void init(): # <<<<<<<<<<<<<< * speed_min, speed_max = settings['draw.speed_range'] * mirror_min, mirror_max = settings['draw.mirror_distance_range'] */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_WriteUnraisable("PreferencesDialog.init", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_XDECREF(__pyx_v_speed_min); __Pyx_XDECREF(__pyx_v_speed_max); __Pyx_XDECREF(__pyx_v_mirror_min); __Pyx_XDECREF(__pyx_v_mirror_max); __Pyx_RefNannyFinishContext(); } /* "_qt_qtwogl.pyx":1518 * ##pxh> * ##pxm-FUNC PH with gil * void on_slider_animspeed_valueChanged(int value) with gil: # <<<<<<<<<<<<<< * settings['draw.speed'] = value * ##pxm-FUNC PH with gil */ void PreferencesDialog::on_slider_animspeed_valueChanged(int __pyx_v_value) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_slider_animspeed_valueChanged", 0); /* "_qt_qtwogl.pyx":1519 * ##pxm-FUNC PH with gil * void on_slider_animspeed_valueChanged(int value) with gil: * settings['draw.speed'] = value # <<<<<<<<<<<<<< * ##pxm-FUNC PH with gil * void on_button_animspeed_reset_clicked() with gil: */ __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_value); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1519, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1519, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (unlikely(PyObject_SetItem(__pyx_t_2, __pyx_kp_u_draw_speed, __pyx_t_1) < 0)) __PYX_ERR(0, 1519, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwogl.pyx":1518 * ##pxh> * ##pxm-FUNC PH with gil * void on_slider_animspeed_valueChanged(int value) with gil: # <<<<<<<<<<<<<< * settings['draw.speed'] = value * ##pxm-FUNC PH with gil */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_WriteUnraisable("PreferencesDialog.on_slider_animspeed_valueChanged", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwogl.pyx":1521 * settings['draw.speed'] = value * ##pxm-FUNC PH with gil * void on_button_animspeed_reset_clicked() with gil: # <<<<<<<<<<<<<< * this.findChild(str2q('slider_animspeed')).setProperty(b'value', tovariant(settings['draw.speed_default'])) * del settings['draw.speed'] */ void PreferencesDialog::on_button_animspeed_reset_clicked(void) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_button_animspeed_reset_clicked", 0); /* "_qt_qtwogl.pyx":1522 * ##pxm-FUNC PH with gil * void on_button_animspeed_reset_clicked() with gil: * this.findChild(str2q('slider_animspeed')).setProperty(b'value', tovariant(settings['draw.speed_default'])) # <<<<<<<<<<<<<< * del settings['draw.speed'] * ##pxm-FUNC PH with gil */ __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1522, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyObject_GetItem(__pyx_t_1, __pyx_kp_u_draw_speed_default); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1522, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; this->findChild(__pyx_f_10_qt_qtwogl_str2q(__pyx_n_u_slider_animspeed))->setProperty(((char const *)"value"), __pyx_f_10_qt_qtwogl_tovariant(__pyx_t_2)); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwogl.pyx":1523 * void on_button_animspeed_reset_clicked() with gil: * this.findChild(str2q('slider_animspeed')).setProperty(b'value', tovariant(settings['draw.speed_default'])) * del settings['draw.speed'] # <<<<<<<<<<<<<< * ##pxm-FUNC PH with gil * void on_combobox_shader_currentIndexChanged(int value) with gil: */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1523, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (unlikely(PyObject_DelItem(__pyx_t_2, __pyx_kp_u_draw_speed) < 0)) __PYX_ERR(0, 1523, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwogl.pyx":1521 * settings['draw.speed'] = value * ##pxm-FUNC PH with gil * void on_button_animspeed_reset_clicked() with gil: # <<<<<<<<<<<<<< * this.findChild(str2q('slider_animspeed')).setProperty(b'value', tovariant(settings['draw.speed_default'])) * del settings['draw.speed'] */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_WriteUnraisable("PreferencesDialog.on_button_animspeed_reset_clicked", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwogl.pyx":1525 * del settings['draw.speed'] * ##pxm-FUNC PH with gil * void on_combobox_shader_currentIndexChanged(int value) with gil: # <<<<<<<<<<<<<< * settings['draw.shader'] = value * ##pxm-FUNC PH with gil */ void PreferencesDialog::on_combobox_shader_currentIndexChanged(int __pyx_v_value) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_combobox_shader_currentIndexChanged", 0); /* "_qt_qtwogl.pyx":1526 * ##pxm-FUNC PH with gil * void on_combobox_shader_currentIndexChanged(int value) with gil: * settings['draw.shader'] = value # <<<<<<<<<<<<<< * ##pxm-FUNC PH with gil * void on_button_shader_reset_clicked() with gil: */ __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_value); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1526, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1526, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (unlikely(PyObject_SetItem(__pyx_t_2, __pyx_kp_u_draw_shader, __pyx_t_1) < 0)) __PYX_ERR(0, 1526, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwogl.pyx":1525 * del settings['draw.speed'] * ##pxm-FUNC PH with gil * void on_combobox_shader_currentIndexChanged(int value) with gil: # <<<<<<<<<<<<<< * settings['draw.shader'] = value * ##pxm-FUNC PH with gil */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_WriteUnraisable("PreferencesDialog.on_combobox_shader_currentIndexChanged", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwogl.pyx":1528 * settings['draw.shader'] = value * ##pxm-FUNC PH with gil * void on_button_shader_reset_clicked() with gil: # <<<<<<<<<<<<<< * this.findChild(str2q('combobox_shader')).setProperty(b'currentIndex', tovariant(settings['draw.shader_default'])) * del settings['draw.shader'] */ void PreferencesDialog::on_button_shader_reset_clicked(void) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_button_shader_reset_clicked", 0); /* "_qt_qtwogl.pyx":1529 * ##pxm-FUNC PH with gil * void on_button_shader_reset_clicked() with gil: * this.findChild(str2q('combobox_shader')).setProperty(b'currentIndex', tovariant(settings['draw.shader_default'])) # <<<<<<<<<<<<<< * del settings['draw.shader'] * ##pxm-FUNC PH with gil */ __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1529, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyObject_GetItem(__pyx_t_1, __pyx_kp_u_draw_shader_default); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1529, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; this->findChild(__pyx_f_10_qt_qtwogl_str2q(__pyx_n_u_combobox_shader))->setProperty(((char const *)"currentIndex"), __pyx_f_10_qt_qtwogl_tovariant(__pyx_t_2)); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwogl.pyx":1530 * void on_button_shader_reset_clicked() with gil: * this.findChild(str2q('combobox_shader')).setProperty(b'currentIndex', tovariant(settings['draw.shader_default'])) * del settings['draw.shader'] # <<<<<<<<<<<<<< * ##pxm-FUNC PH with gil * void on_combobox_samples_currentIndexChanged(int value) with gil: */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1530, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (unlikely(PyObject_DelItem(__pyx_t_2, __pyx_kp_u_draw_shader) < 0)) __PYX_ERR(0, 1530, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwogl.pyx":1528 * settings['draw.shader'] = value * ##pxm-FUNC PH with gil * void on_button_shader_reset_clicked() with gil: # <<<<<<<<<<<<<< * this.findChild(str2q('combobox_shader')).setProperty(b'currentIndex', tovariant(settings['draw.shader_default'])) * del settings['draw.shader'] */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_WriteUnraisable("PreferencesDialog.on_button_shader_reset_clicked", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwogl.pyx":1532 * del settings['draw.shader'] * ##pxm-FUNC PH with gil * void on_combobox_samples_currentIndexChanged(int value) with gil: # <<<<<<<<<<<<<< * settings['draw.samples'] = value * #visible = (this.sample_buffers != 2**settings['draw.samples']) */ void PreferencesDialog::on_combobox_samples_currentIndexChanged(int __pyx_v_value) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_combobox_samples_currentIndexChanged", 0); /* "_qt_qtwogl.pyx":1533 * ##pxm-FUNC PH with gil * void on_combobox_samples_currentIndexChanged(int value) with gil: * settings['draw.samples'] = value # <<<<<<<<<<<<<< * #visible = (this.sample_buffers != 2**settings['draw.samples']) * this.findChild(str2q('label_needs_restarted')).setProperty(b'visible', tovariant(True)) */ __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_value); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1533, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1533, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (unlikely(PyObject_SetItem(__pyx_t_2, __pyx_kp_u_draw_samples, __pyx_t_1) < 0)) __PYX_ERR(0, 1533, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwogl.pyx":1535 * settings['draw.samples'] = value * #visible = (this.sample_buffers != 2**settings['draw.samples']) * this.findChild(str2q('label_needs_restarted')).setProperty(b'visible', tovariant(True)) # <<<<<<<<<<<<<< * ##pxm-FUNC PH with gil * void on_button_antialiasing_reset_clicked() with gil: */ this->findChild(__pyx_f_10_qt_qtwogl_str2q(__pyx_n_u_label_needs_restarted))->setProperty(((char const *)"visible"), __pyx_f_10_qt_qtwogl_tovariant(Py_True)); /* "_qt_qtwogl.pyx":1532 * del settings['draw.shader'] * ##pxm-FUNC PH with gil * void on_combobox_samples_currentIndexChanged(int value) with gil: # <<<<<<<<<<<<<< * settings['draw.samples'] = value * #visible = (this.sample_buffers != 2**settings['draw.samples']) */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_WriteUnraisable("PreferencesDialog.on_combobox_samples_currentIndexChanged", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwogl.pyx":1537 * this.findChild(str2q('label_needs_restarted')).setProperty(b'visible', tovariant(True)) * ##pxm-FUNC PH with gil * void on_button_antialiasing_reset_clicked() with gil: # <<<<<<<<<<<<<< * this.findChild(str2q('combobox_samples')).setProperty(b'currentIndex', tovariant(settings['draw.samples_default'])) * del settings['draw.samples'] */ void PreferencesDialog::on_button_antialiasing_reset_clicked(void) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_button_antialiasing_reset_clicked", 0); /* "_qt_qtwogl.pyx":1538 * ##pxm-FUNC PH with gil * void on_button_antialiasing_reset_clicked() with gil: * this.findChild(str2q('combobox_samples')).setProperty(b'currentIndex', tovariant(settings['draw.samples_default'])) # <<<<<<<<<<<<<< * del settings['draw.samples'] * ##pxm-FUNC PH with gil */ __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1538, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyObject_GetItem(__pyx_t_1, __pyx_kp_u_draw_samples_default); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1538, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; this->findChild(__pyx_f_10_qt_qtwogl_str2q(__pyx_n_u_combobox_samples))->setProperty(((char const *)"currentIndex"), __pyx_f_10_qt_qtwogl_tovariant(__pyx_t_2)); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwogl.pyx":1539 * void on_button_antialiasing_reset_clicked() with gil: * this.findChild(str2q('combobox_samples')).setProperty(b'currentIndex', tovariant(settings['draw.samples_default'])) * del settings['draw.samples'] # <<<<<<<<<<<<<< * ##pxm-FUNC PH with gil * void on_checkbox_mirror_faces_toggled(cbool checked) with gil: */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1539, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (unlikely(PyObject_DelItem(__pyx_t_2, __pyx_kp_u_draw_samples) < 0)) __PYX_ERR(0, 1539, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwogl.pyx":1537 * this.findChild(str2q('label_needs_restarted')).setProperty(b'visible', tovariant(True)) * ##pxm-FUNC PH with gil * void on_button_antialiasing_reset_clicked() with gil: # <<<<<<<<<<<<<< * this.findChild(str2q('combobox_samples')).setProperty(b'currentIndex', tovariant(settings['draw.samples_default'])) * del settings['draw.samples'] */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_WriteUnraisable("PreferencesDialog.on_button_antialiasing_reset_clicked", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwogl.pyx":1541 * del settings['draw.samples'] * ##pxm-FUNC PH with gil * void on_checkbox_mirror_faces_toggled(cbool checked) with gil: # <<<<<<<<<<<<<< * uidata.preferences.findChild(str2q('spinbox_mirror_faces')).setProperty(b'enabled', tovariant(checked)) * settings['draw.mirror_faces'] = checked */ void PreferencesDialog::on_checkbox_mirror_faces_toggled(bool __pyx_v_checked) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_checkbox_mirror_faces_toggled", 0); /* "_qt_qtwogl.pyx":1542 * ##pxm-FUNC PH with gil * void on_checkbox_mirror_faces_toggled(cbool checked) with gil: * uidata.preferences.findChild(str2q('spinbox_mirror_faces')).setProperty(b'enabled', tovariant(checked)) # <<<<<<<<<<<<<< * settings['draw.mirror_faces'] = checked * ##pxm-FUNC PH with gil */ __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_checked); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1542, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_10_qt_qtwogl_uidata.preferences->findChild(__pyx_f_10_qt_qtwogl_str2q(__pyx_n_u_spinbox_mirror_faces))->setProperty(((char const *)"enabled"), __pyx_f_10_qt_qtwogl_tovariant(__pyx_t_1)); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwogl.pyx":1543 * void on_checkbox_mirror_faces_toggled(cbool checked) with gil: * uidata.preferences.findChild(str2q('spinbox_mirror_faces')).setProperty(b'enabled', tovariant(checked)) * settings['draw.mirror_faces'] = checked # <<<<<<<<<<<<<< * ##pxm-FUNC PH with gil * void on_spinbox_mirror_faces_valueChanged(double value) with gil: */ __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_checked); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1543, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1543, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (unlikely(PyObject_SetItem(__pyx_t_2, __pyx_kp_u_draw_mirror_faces, __pyx_t_1) < 0)) __PYX_ERR(0, 1543, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwogl.pyx":1541 * del settings['draw.samples'] * ##pxm-FUNC PH with gil * void on_checkbox_mirror_faces_toggled(cbool checked) with gil: # <<<<<<<<<<<<<< * uidata.preferences.findChild(str2q('spinbox_mirror_faces')).setProperty(b'enabled', tovariant(checked)) * settings['draw.mirror_faces'] = checked */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_WriteUnraisable("PreferencesDialog.on_checkbox_mirror_faces_toggled", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwogl.pyx":1545 * settings['draw.mirror_faces'] = checked * ##pxm-FUNC PH with gil * void on_spinbox_mirror_faces_valueChanged(double value) with gil: # <<<<<<<<<<<<<< * settings['draw.mirror_distance'] = value * ##pxm-FUNC PH with gil */ void PreferencesDialog::on_spinbox_mirror_faces_valueChanged(double __pyx_v_value) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_spinbox_mirror_faces_valueChanged", 0); /* "_qt_qtwogl.pyx":1546 * ##pxm-FUNC PH with gil * void on_spinbox_mirror_faces_valueChanged(double value) with gil: * settings['draw.mirror_distance'] = value # <<<<<<<<<<<<<< * ##pxm-FUNC PH with gil * void on_button_mirror_faces_reset_clicked() with gil: */ __pyx_t_1 = PyFloat_FromDouble(__pyx_v_value); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1546, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1546, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (unlikely(PyObject_SetItem(__pyx_t_2, __pyx_kp_u_draw_mirror_distance, __pyx_t_1) < 0)) __PYX_ERR(0, 1546, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwogl.pyx":1545 * settings['draw.mirror_faces'] = checked * ##pxm-FUNC PH with gil * void on_spinbox_mirror_faces_valueChanged(double value) with gil: # <<<<<<<<<<<<<< * settings['draw.mirror_distance'] = value * ##pxm-FUNC PH with gil */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_WriteUnraisable("PreferencesDialog.on_spinbox_mirror_faces_valueChanged", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwogl.pyx":1548 * settings['draw.mirror_distance'] = value * ##pxm-FUNC PH with gil * void on_button_mirror_faces_reset_clicked() with gil: # <<<<<<<<<<<<<< * this.findChild(str2q('checkbox_mirror_faces')).setProperty(b'checked', tovariant(settings['draw.mirror_faces_default'])) * del settings['draw.mirror_faces'] */ void PreferencesDialog::on_button_mirror_faces_reset_clicked(void) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_button_mirror_faces_reset_clicked", 0); /* "_qt_qtwogl.pyx":1549 * ##pxm-FUNC PH with gil * void on_button_mirror_faces_reset_clicked() with gil: * this.findChild(str2q('checkbox_mirror_faces')).setProperty(b'checked', tovariant(settings['draw.mirror_faces_default'])) # <<<<<<<<<<<<<< * del settings['draw.mirror_faces'] * this.findChild(str2q('spinbox_mirror_faces')).setProperty(b'value', tovariant(settings['draw.mirror_distance_default'])) */ __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1549, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyObject_GetItem(__pyx_t_1, __pyx_kp_u_draw_mirror_faces_default); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1549, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; this->findChild(__pyx_f_10_qt_qtwogl_str2q(__pyx_n_u_checkbox_mirror_faces))->setProperty(((char const *)"checked"), __pyx_f_10_qt_qtwogl_tovariant(__pyx_t_2)); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwogl.pyx":1550 * void on_button_mirror_faces_reset_clicked() with gil: * this.findChild(str2q('checkbox_mirror_faces')).setProperty(b'checked', tovariant(settings['draw.mirror_faces_default'])) * del settings['draw.mirror_faces'] # <<<<<<<<<<<<<< * this.findChild(str2q('spinbox_mirror_faces')).setProperty(b'value', tovariant(settings['draw.mirror_distance_default'])) * del settings['draw.mirror_distance'] */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1550, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (unlikely(PyObject_DelItem(__pyx_t_2, __pyx_kp_u_draw_mirror_faces) < 0)) __PYX_ERR(0, 1550, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwogl.pyx":1551 * this.findChild(str2q('checkbox_mirror_faces')).setProperty(b'checked', tovariant(settings['draw.mirror_faces_default'])) * del settings['draw.mirror_faces'] * this.findChild(str2q('spinbox_mirror_faces')).setProperty(b'value', tovariant(settings['draw.mirror_distance_default'])) # <<<<<<<<<<<<<< * del settings['draw.mirror_distance'] * ##pxm-FUNC PH with gil */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1551, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = PyObject_GetItem(__pyx_t_2, __pyx_kp_u_draw_mirror_distance_default); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1551, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; this->findChild(__pyx_f_10_qt_qtwogl_str2q(__pyx_n_u_spinbox_mirror_faces))->setProperty(((char const *)"value"), __pyx_f_10_qt_qtwogl_tovariant(__pyx_t_1)); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwogl.pyx":1552 * del settings['draw.mirror_faces'] * this.findChild(str2q('spinbox_mirror_faces')).setProperty(b'value', tovariant(settings['draw.mirror_distance_default'])) * del settings['draw.mirror_distance'] # <<<<<<<<<<<<<< * ##pxm-FUNC PH with gil * void on_button_mousemode_quad_toggled(cbool checked) with gil: */ __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1552, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (unlikely(PyObject_DelItem(__pyx_t_1, __pyx_kp_u_draw_mirror_distance) < 0)) __PYX_ERR(0, 1552, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwogl.pyx":1548 * settings['draw.mirror_distance'] = value * ##pxm-FUNC PH with gil * void on_button_mirror_faces_reset_clicked() with gil: # <<<<<<<<<<<<<< * this.findChild(str2q('checkbox_mirror_faces')).setProperty(b'checked', tovariant(settings['draw.mirror_faces_default'])) * del settings['draw.mirror_faces'] */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_WriteUnraisable("PreferencesDialog.on_button_mirror_faces_reset_clicked", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwogl.pyx":1554 * del settings['draw.mirror_distance'] * ##pxm-FUNC PH with gil * void on_button_mousemode_quad_toggled(cbool checked) with gil: # <<<<<<<<<<<<<< * if checked: * settings['draw.selection_nick'] = 'quadrant' */ void PreferencesDialog::on_button_mousemode_quad_toggled(bool __pyx_v_checked) { __Pyx_RefNannyDeclarations int __pyx_t_1; PyObject *__pyx_t_2 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_button_mousemode_quad_toggled", 0); /* "_qt_qtwogl.pyx":1555 * ##pxm-FUNC PH with gil * void on_button_mousemode_quad_toggled(cbool checked) with gil: * if checked: # <<<<<<<<<<<<<< * settings['draw.selection_nick'] = 'quadrant' * ##pxm-FUNC PH with gil */ __pyx_t_1 = (__pyx_v_checked != 0); if (__pyx_t_1) { /* "_qt_qtwogl.pyx":1556 * void on_button_mousemode_quad_toggled(cbool checked) with gil: * if checked: * settings['draw.selection_nick'] = 'quadrant' # <<<<<<<<<<<<<< * ##pxm-FUNC PH with gil * void on_button_mousemode_ext_toggled(cbool checked) with gil: */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1556, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (unlikely(PyObject_SetItem(__pyx_t_2, __pyx_kp_u_draw_selection_nick, __pyx_n_u_quadrant) < 0)) __PYX_ERR(0, 1556, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwogl.pyx":1555 * ##pxm-FUNC PH with gil * void on_button_mousemode_quad_toggled(cbool checked) with gil: * if checked: # <<<<<<<<<<<<<< * settings['draw.selection_nick'] = 'quadrant' * ##pxm-FUNC PH with gil */ } /* "_qt_qtwogl.pyx":1554 * del settings['draw.mirror_distance'] * ##pxm-FUNC PH with gil * void on_button_mousemode_quad_toggled(cbool checked) with gil: # <<<<<<<<<<<<<< * if checked: * settings['draw.selection_nick'] = 'quadrant' */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_WriteUnraisable("PreferencesDialog.on_button_mousemode_quad_toggled", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwogl.pyx":1558 * settings['draw.selection_nick'] = 'quadrant' * ##pxm-FUNC PH with gil * void on_button_mousemode_ext_toggled(cbool checked) with gil: # <<<<<<<<<<<<<< * if checked: * settings['draw.selection_nick'] = 'simple' */ void PreferencesDialog::on_button_mousemode_ext_toggled(bool __pyx_v_checked) { __Pyx_RefNannyDeclarations int __pyx_t_1; PyObject *__pyx_t_2 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_button_mousemode_ext_toggled", 0); /* "_qt_qtwogl.pyx":1559 * ##pxm-FUNC PH with gil * void on_button_mousemode_ext_toggled(cbool checked) with gil: * if checked: # <<<<<<<<<<<<<< * settings['draw.selection_nick'] = 'simple' * ##pxm-FUNC PH with gil */ __pyx_t_1 = (__pyx_v_checked != 0); if (__pyx_t_1) { /* "_qt_qtwogl.pyx":1560 * void on_button_mousemode_ext_toggled(cbool checked) with gil: * if checked: * settings['draw.selection_nick'] = 'simple' # <<<<<<<<<<<<<< * ##pxm-FUNC PH with gil * void on_button_mousemode_gesture_toggled(cbool checked) with gil: */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1560, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (unlikely(PyObject_SetItem(__pyx_t_2, __pyx_kp_u_draw_selection_nick, __pyx_n_u_simple) < 0)) __PYX_ERR(0, 1560, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwogl.pyx":1559 * ##pxm-FUNC PH with gil * void on_button_mousemode_ext_toggled(cbool checked) with gil: * if checked: # <<<<<<<<<<<<<< * settings['draw.selection_nick'] = 'simple' * ##pxm-FUNC PH with gil */ } /* "_qt_qtwogl.pyx":1558 * settings['draw.selection_nick'] = 'quadrant' * ##pxm-FUNC PH with gil * void on_button_mousemode_ext_toggled(cbool checked) with gil: # <<<<<<<<<<<<<< * if checked: * settings['draw.selection_nick'] = 'simple' */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_WriteUnraisable("PreferencesDialog.on_button_mousemode_ext_toggled", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwogl.pyx":1562 * settings['draw.selection_nick'] = 'simple' * ##pxm-FUNC PH with gil * void on_button_mousemode_gesture_toggled(cbool checked) with gil: # <<<<<<<<<<<<<< * if checked: * settings['draw.selection_nick'] = 'gesture' */ void PreferencesDialog::on_button_mousemode_gesture_toggled(bool __pyx_v_checked) { __Pyx_RefNannyDeclarations int __pyx_t_1; PyObject *__pyx_t_2 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_button_mousemode_gesture_toggled", 0); /* "_qt_qtwogl.pyx":1563 * ##pxm-FUNC PH with gil * void on_button_mousemode_gesture_toggled(cbool checked) with gil: * if checked: # <<<<<<<<<<<<<< * settings['draw.selection_nick'] = 'gesture' * */ __pyx_t_1 = (__pyx_v_checked != 0); if (__pyx_t_1) { /* "_qt_qtwogl.pyx":1564 * void on_button_mousemode_gesture_toggled(cbool checked) with gil: * if checked: * settings['draw.selection_nick'] = 'gesture' # <<<<<<<<<<<<<< * * ##pxm-FUNC PHD */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1564, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (unlikely(PyObject_SetItem(__pyx_t_2, __pyx_kp_u_draw_selection_nick, __pyx_n_u_gesture) < 0)) __PYX_ERR(0, 1564, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwogl.pyx":1563 * ##pxm-FUNC PH with gil * void on_button_mousemode_gesture_toggled(cbool checked) with gil: * if checked: # <<<<<<<<<<<<<< * settings['draw.selection_nick'] = 'gesture' * */ } /* "_qt_qtwogl.pyx":1562 * settings['draw.selection_nick'] = 'simple' * ##pxm-FUNC PH with gil * void on_button_mousemode_gesture_toggled(cbool checked) with gil: # <<<<<<<<<<<<<< * if checked: * settings['draw.selection_nick'] = 'gesture' */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_WriteUnraisable("PreferencesDialog.on_button_mousemode_gesture_toggled", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwogl.pyx":1567 * * ##pxm-FUNC PHD * void fill_move_key_list(): # <<<<<<<<<<<<<< * this.liststore_blocked = True * cdef QStandardItem *item #px+ */ void PreferencesDialog::fill_move_key_list(void) { QStandardItem *__pyx_v_item; PyObject *__pyx_v_i = NULL; PyObject *__pyx_v_move = NULL; PyObject *__pyx_v_key = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; Py_ssize_t __pyx_t_4; PyObject *(*__pyx_t_5)(PyObject *); PyObject *__pyx_t_6 = NULL; PyObject *__pyx_t_7 = NULL; PyObject *__pyx_t_8 = NULL; PyObject *(*__pyx_t_9)(PyObject *); int __pyx_t_10; __Pyx_RefNannySetupContext("fill_move_key_list", 0); /* "_qt_qtwogl.pyx":1568 * ##pxm-FUNC PHD * void fill_move_key_list(): * this.liststore_blocked = True # <<<<<<<<<<<<<< * cdef QStandardItem *item #px+ * for i, (move, key) in enumerate(settings['draw.accels']): */ this->liststore_blocked = 1; /* "_qt_qtwogl.pyx":1570 * this.liststore_blocked = True * cdef QStandardItem *item #px+ * for i, (move, key) in enumerate(settings['draw.accels']): # <<<<<<<<<<<<<< * item = new QStandardItem(str2q(move)) #px/ * #item = QStandardItem(str2q(move)) */ __Pyx_INCREF(__pyx_int_0); __pyx_t_1 = __pyx_int_0; __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1570, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyObject_GetItem(__pyx_t_2, __pyx_kp_u_draw_accels); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1570, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) { __pyx_t_2 = __pyx_t_3; __Pyx_INCREF(__pyx_t_2); __pyx_t_4 = 0; __pyx_t_5 = NULL; } else { __pyx_t_4 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1570, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1570, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; for (;;) { if (likely(!__pyx_t_5)) { if (likely(PyList_CheckExact(__pyx_t_2))) { if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_2)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_3 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1570, __pyx_L1_error) #else __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1570, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); #endif } else { if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_2)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1570, __pyx_L1_error) #else __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1570, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); #endif } } else { __pyx_t_3 = __pyx_t_5(__pyx_t_2); if (unlikely(!__pyx_t_3)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 1570, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_3); } if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) { PyObject* sequence = __pyx_t_3; #if !CYTHON_COMPILING_IN_PYPY Py_ssize_t size = Py_SIZE(sequence); #else Py_ssize_t size = PySequence_Size(sequence); #endif if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 1570, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_6 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_7 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_6 = PyList_GET_ITEM(sequence, 0); __pyx_t_7 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(__pyx_t_7); #else __pyx_t_6 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1570, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1570, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); #endif __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { Py_ssize_t index = -1; __pyx_t_8 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1570, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_9 = Py_TYPE(__pyx_t_8)->tp_iternext; index = 0; __pyx_t_6 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_6)) goto __pyx_L5_unpacking_failed; __Pyx_GOTREF(__pyx_t_6); index = 1; __pyx_t_7 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_7)) goto __pyx_L5_unpacking_failed; __Pyx_GOTREF(__pyx_t_7); if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_8), 2) < 0) __PYX_ERR(0, 1570, __pyx_L1_error) __pyx_t_9 = NULL; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; goto __pyx_L6_unpacking_done; __pyx_L5_unpacking_failed:; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_9 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 1570, __pyx_L1_error) __pyx_L6_unpacking_done:; } __Pyx_XDECREF_SET(__pyx_v_move, __pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_7); __pyx_t_7 = 0; __Pyx_INCREF(__pyx_t_1); __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_1); __pyx_t_3 = __Pyx_PyInt_AddObjC(__pyx_t_1, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1570, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = __pyx_t_3; __pyx_t_3 = 0; /* "_qt_qtwogl.pyx":1571 * cdef QStandardItem *item #px+ * for i, (move, key) in enumerate(settings['draw.accels']): * item = new QStandardItem(str2q(move)) #px/ # <<<<<<<<<<<<<< * #item = QStandardItem(str2q(move)) * this.liststore_movekeys.setItem(i, 0, item) */ __pyx_v_item = new QStandardItem(__pyx_f_10_qt_qtwogl_str2q(__pyx_v_move)); /* "_qt_qtwogl.pyx":1573 * item = new QStandardItem(str2q(move)) #px/ * #item = QStandardItem(str2q(move)) * this.liststore_movekeys.setItem(i, 0, item) # <<<<<<<<<<<<<< * item = new QStandardItem(str2q(key)) #px/ * #item = QStandardItem(str2q(key)) */ __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_v_i); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1573, __pyx_L1_error) this->liststore_movekeys->setItem(__pyx_t_10, 0, __pyx_v_item); /* "_qt_qtwogl.pyx":1574 * #item = QStandardItem(str2q(move)) * this.liststore_movekeys.setItem(i, 0, item) * item = new QStandardItem(str2q(key)) #px/ # <<<<<<<<<<<<<< * #item = QStandardItem(str2q(key)) * this.liststore_movekeys.setItem(i, 1, item) */ __pyx_v_item = new QStandardItem(__pyx_f_10_qt_qtwogl_str2q(__pyx_v_key)); /* "_qt_qtwogl.pyx":1576 * item = new QStandardItem(str2q(key)) #px/ * #item = QStandardItem(str2q(key)) * this.liststore_movekeys.setItem(i, 1, item) # <<<<<<<<<<<<<< * item = new QStandardItem(str2q(_('Move'))) #px/ * #item = QStandardItem(str2q(_('Move'))) */ __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_v_i); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1576, __pyx_L1_error) this->liststore_movekeys->setItem(__pyx_t_10, 1, __pyx_v_item); /* "_qt_qtwogl.pyx":1570 * this.liststore_blocked = True * cdef QStandardItem *item #px+ * for i, (move, key) in enumerate(settings['draw.accels']): # <<<<<<<<<<<<<< * item = new QStandardItem(str2q(move)) #px/ * #item = QStandardItem(str2q(move)) */ } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwogl.pyx":1577 * #item = QStandardItem(str2q(key)) * this.liststore_movekeys.setItem(i, 1, item) * item = new QStandardItem(str2q(_('Move'))) #px/ # <<<<<<<<<<<<<< * #item = QStandardItem(str2q(_('Move'))) * this.liststore_movekeys.setHorizontalHeaderItem(0, item) */ __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1577, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__8, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1577, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_item = new QStandardItem(__pyx_f_10_qt_qtwogl_str2q(__pyx_t_2)); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwogl.pyx":1579 * item = new QStandardItem(str2q(_('Move'))) #px/ * #item = QStandardItem(str2q(_('Move'))) * this.liststore_movekeys.setHorizontalHeaderItem(0, item) # <<<<<<<<<<<<<< * item = new QStandardItem(str2q(_('Key'))) #px/ * #item = QStandardItem(str2q(_('Key'))) */ this->liststore_movekeys->setHorizontalHeaderItem(0, __pyx_v_item); /* "_qt_qtwogl.pyx":1580 * #item = QStandardItem(str2q(_('Move'))) * this.liststore_movekeys.setHorizontalHeaderItem(0, item) * item = new QStandardItem(str2q(_('Key'))) #px/ # <<<<<<<<<<<<<< * #item = QStandardItem(str2q(_('Key'))) * this.liststore_movekeys.setHorizontalHeaderItem(1, item) */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s__4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1580, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1580, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_item = new QStandardItem(__pyx_f_10_qt_qtwogl_str2q(__pyx_t_1)); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwogl.pyx":1582 * item = new QStandardItem(str2q(_('Key'))) #px/ * #item = QStandardItem(str2q(_('Key'))) * this.liststore_movekeys.setHorizontalHeaderItem(1, item) # <<<<<<<<<<<<<< * this.liststore_blocked = False * */ this->liststore_movekeys->setHorizontalHeaderItem(1, __pyx_v_item); /* "_qt_qtwogl.pyx":1583 * #item = QStandardItem(str2q(_('Key'))) * this.liststore_movekeys.setHorizontalHeaderItem(1, item) * this.liststore_blocked = False # <<<<<<<<<<<<<< * * ##pxm-FUNC PHD */ this->liststore_blocked = 0; /* "_qt_qtwogl.pyx":1567 * * ##pxm-FUNC PHD * void fill_move_key_list(): # <<<<<<<<<<<<<< * this.liststore_blocked = True * cdef QStandardItem *item #px+ */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_8); __Pyx_WriteUnraisable("PreferencesDialog.fill_move_key_list", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_XDECREF(__pyx_v_i); __Pyx_XDECREF(__pyx_v_move); __Pyx_XDECREF(__pyx_v_key); __Pyx_RefNannyFinishContext(); } /* "_qt_qtwogl.pyx":1586 * * ##pxm-FUNC PHD * object get_move_key_list(): # <<<<<<<<<<<<<< * move_keys = [] * row_count = this.liststore_movekeys.rowCount() */ PyObject *PreferencesDialog::get_move_key_list(void) { PyObject *__pyx_v_move_keys = NULL; int __pyx_v_row_count; int __pyx_v_i; PyObject *__pyx_v_move = NULL; PyObject *__pyx_v_key = NULL; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_t_2; int __pyx_t_3; int __pyx_t_4; __Pyx_RefNannySetupContext("get_move_key_list", 0); /* "_qt_qtwogl.pyx":1587 * ##pxm-FUNC PHD * object get_move_key_list(): * move_keys = [] # <<<<<<<<<<<<<< * row_count = this.liststore_movekeys.rowCount() * for i in range(row_count): */ __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1587, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_move_keys = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwogl.pyx":1588 * object get_move_key_list(): * move_keys = [] * row_count = this.liststore_movekeys.rowCount() # <<<<<<<<<<<<<< * for i in range(row_count): * move = fromvariant(this.liststore_movekeys.item(i, 0).data(Qt.DisplayRole)) */ __pyx_v_row_count = this->liststore_movekeys->rowCount(); /* "_qt_qtwogl.pyx":1589 * move_keys = [] * row_count = this.liststore_movekeys.rowCount() * for i in range(row_count): # <<<<<<<<<<<<<< * move = fromvariant(this.liststore_movekeys.item(i, 0).data(Qt.DisplayRole)) * key = fromvariant(this.liststore_movekeys.item(i, 1).data(Qt.DisplayRole)) */ __pyx_t_2 = __pyx_v_row_count; for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) { __pyx_v_i = __pyx_t_3; /* "_qt_qtwogl.pyx":1590 * row_count = this.liststore_movekeys.rowCount() * for i in range(row_count): * move = fromvariant(this.liststore_movekeys.item(i, 0).data(Qt.DisplayRole)) # <<<<<<<<<<<<<< * key = fromvariant(this.liststore_movekeys.item(i, 1).data(Qt.DisplayRole)) * move_keys.append((move, key)) */ __pyx_t_1 = __pyx_f_10_qt_qtwogl_fromvariant(this->liststore_movekeys->item(__pyx_v_i, 0)->data(Qt::DisplayRole)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1590, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_XDECREF_SET(__pyx_v_move, __pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwogl.pyx":1591 * for i in range(row_count): * move = fromvariant(this.liststore_movekeys.item(i, 0).data(Qt.DisplayRole)) * key = fromvariant(this.liststore_movekeys.item(i, 1).data(Qt.DisplayRole)) # <<<<<<<<<<<<<< * move_keys.append((move, key)) * return move_keys */ __pyx_t_1 = __pyx_f_10_qt_qtwogl_fromvariant(this->liststore_movekeys->item(__pyx_v_i, 1)->data(Qt::DisplayRole)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1591, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwogl.pyx":1592 * move = fromvariant(this.liststore_movekeys.item(i, 0).data(Qt.DisplayRole)) * key = fromvariant(this.liststore_movekeys.item(i, 1).data(Qt.DisplayRole)) * move_keys.append((move, key)) # <<<<<<<<<<<<<< * return move_keys * */ __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1592, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_v_move); __Pyx_GIVEREF(__pyx_v_move); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_move); __Pyx_INCREF(__pyx_v_key); __Pyx_GIVEREF(__pyx_v_key); PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_key); __pyx_t_4 = __Pyx_PyList_Append(__pyx_v_move_keys, __pyx_t_1); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(0, 1592, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } /* "_qt_qtwogl.pyx":1593 * key = fromvariant(this.liststore_movekeys.item(i, 1).data(Qt.DisplayRole)) * move_keys.append((move, key)) * return move_keys # <<<<<<<<<<<<<< * * ##pxm-FUNC PH with gil */ __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_move_keys); __pyx_r = __pyx_v_move_keys; goto __pyx_L0; /* "_qt_qtwogl.pyx":1586 * * ##pxm-FUNC PHD * object get_move_key_list(): # <<<<<<<<<<<<<< * move_keys = [] * row_count = this.liststore_movekeys.rowCount() */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("PreferencesDialog.get_move_key_list", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XDECREF(__pyx_v_move_keys); __Pyx_XDECREF(__pyx_v_move); __Pyx_XDECREF(__pyx_v_key); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwogl.pyx":1596 * * ##pxm-FUNC PH with gil * void on_liststore_movekeys_itemChanged(QStandardItem *unused_item) with gil: # <<<<<<<<<<<<<< * if this.liststore_blocked: return * settings['draw.accels'] = this.get_move_key_list() */ void PreferencesDialog::on_liststore_movekeys_itemChanged(CYTHON_UNUSED QStandardItem *__pyx_v_unused_item) { __Pyx_RefNannyDeclarations int __pyx_t_1; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_liststore_movekeys_itemChanged", 0); /* "_qt_qtwogl.pyx":1597 * ##pxm-FUNC PH with gil * void on_liststore_movekeys_itemChanged(QStandardItem *unused_item) with gil: * if this.liststore_blocked: return # <<<<<<<<<<<<<< * settings['draw.accels'] = this.get_move_key_list() * */ __pyx_t_1 = (this->liststore_blocked != 0); if (__pyx_t_1) { goto __pyx_L0; } /* "_qt_qtwogl.pyx":1598 * void on_liststore_movekeys_itemChanged(QStandardItem *unused_item) with gil: * if this.liststore_blocked: return * settings['draw.accels'] = this.get_move_key_list() # <<<<<<<<<<<<<< * * ##pxm-FUNC PH with gil */ __pyx_t_2 = this->get_move_key_list(); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1598, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1598, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (unlikely(PyObject_SetItem(__pyx_t_3, __pyx_kp_u_draw_accels, __pyx_t_2) < 0)) __PYX_ERR(0, 1598, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwogl.pyx":1596 * * ##pxm-FUNC PH with gil * void on_liststore_movekeys_itemChanged(QStandardItem *unused_item) with gil: # <<<<<<<<<<<<<< * if this.liststore_blocked: return * settings['draw.accels'] = this.get_move_key_list() */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_WriteUnraisable("PreferencesDialog.on_liststore_movekeys_itemChanged", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwogl.pyx":1601 * * ##pxm-FUNC PH with gil * void on_button_movekey_add_clicked() with gil: # <<<<<<<<<<<<<< * this.liststore_blocked = True * qtui.add_movekey_row() */ void PreferencesDialog::on_button_movekey_add_clicked(void) { __Pyx_RefNannyDeclarations #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_button_movekey_add_clicked", 0); /* "_qt_qtwogl.pyx":1602 * ##pxm-FUNC PH with gil * void on_button_movekey_add_clicked() with gil: * this.liststore_blocked = True # <<<<<<<<<<<<<< * qtui.add_movekey_row() * this.liststore_blocked = False */ this->liststore_blocked = 1; /* "_qt_qtwogl.pyx":1603 * void on_button_movekey_add_clicked() with gil: * this.liststore_blocked = True * qtui.add_movekey_row() # <<<<<<<<<<<<<< * this.liststore_blocked = False * */ __pyx_f_6_qtui__add_movekey_row(); /* "_qt_qtwogl.pyx":1604 * this.liststore_blocked = True * qtui.add_movekey_row() * this.liststore_blocked = False # <<<<<<<<<<<<<< * * ##pxm-FUNC PH with gil */ this->liststore_blocked = 0; /* "_qt_qtwogl.pyx":1601 * * ##pxm-FUNC PH with gil * void on_button_movekey_add_clicked() with gil: # <<<<<<<<<<<<<< * this.liststore_blocked = True * qtui.add_movekey_row() */ /* function exit code */ __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwogl.pyx":1607 * * ##pxm-FUNC PH with gil * void on_button_movekey_remove_clicked() with gil: # <<<<<<<<<<<<<< * qtui.remove_movekey_row() * settings['draw.accels'] = this.get_move_key_list() */ void PreferencesDialog::on_button_movekey_remove_clicked(void) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_button_movekey_remove_clicked", 0); /* "_qt_qtwogl.pyx":1608 * ##pxm-FUNC PH with gil * void on_button_movekey_remove_clicked() with gil: * qtui.remove_movekey_row() # <<<<<<<<<<<<<< * settings['draw.accels'] = this.get_move_key_list() * */ __pyx_f_6_qtui__remove_movekey_row(); /* "_qt_qtwogl.pyx":1609 * void on_button_movekey_remove_clicked() with gil: * qtui.remove_movekey_row() * settings['draw.accels'] = this.get_move_key_list() # <<<<<<<<<<<<<< * * ##pxm-FUNC PH with gil */ __pyx_t_1 = this->get_move_key_list(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1609, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1609, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (unlikely(PyObject_SetItem(__pyx_t_2, __pyx_kp_u_draw_accels, __pyx_t_1) < 0)) __PYX_ERR(0, 1609, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwogl.pyx":1607 * * ##pxm-FUNC PH with gil * void on_button_movekey_remove_clicked() with gil: # <<<<<<<<<<<<<< * qtui.remove_movekey_row() * settings['draw.accels'] = this.get_move_key_list() */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_WriteUnraisable("PreferencesDialog.on_button_movekey_remove_clicked", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwogl.pyx":1612 * * ##pxm-FUNC PH with gil * void on_button_movekey_reset_clicked() with gil: # <<<<<<<<<<<<<< * del settings['draw.accels'] * this.fill_move_key_list() */ void PreferencesDialog::on_button_movekey_reset_clicked(void) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_button_movekey_reset_clicked", 0); /* "_qt_qtwogl.pyx":1613 * ##pxm-FUNC PH with gil * void on_button_movekey_reset_clicked() with gil: * del settings['draw.accels'] # <<<<<<<<<<<<<< * this.fill_move_key_list() * */ __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1613, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (unlikely(PyObject_DelItem(__pyx_t_1, __pyx_kp_u_draw_accels) < 0)) __PYX_ERR(0, 1613, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwogl.pyx":1614 * void on_button_movekey_reset_clicked() with gil: * del settings['draw.accels'] * this.fill_move_key_list() # <<<<<<<<<<<<<< * * ##pxm-FUNC PH with gil */ this->fill_move_key_list(); /* "_qt_qtwogl.pyx":1612 * * ##pxm-FUNC PH with gil * void on_button_movekey_reset_clicked() with gil: # <<<<<<<<<<<<<< * del settings['draw.accels'] * this.fill_move_key_list() */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_WriteUnraisable("PreferencesDialog.on_button_movekey_reset_clicked", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwogl.pyx":1617 * * ##pxm-FUNC PH with gil * void _on_listview_faces_currentRowChanged(const QModelIndex ¤t) with gil: # <<<<<<<<<<<<<< * this.current_facekey = qtui.get_liststore_faces_facekey(current) * pydata.app.on_dialog_change_current_face(q2str(this.current_facekey)) */ void PreferencesDialog::_on_listview_faces_currentRowChanged(QModelIndex const &__pyx_v_current) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("_on_listview_faces_currentRowChanged", 0); /* "_qt_qtwogl.pyx":1618 * ##pxm-FUNC PH with gil * void _on_listview_faces_currentRowChanged(const QModelIndex ¤t) with gil: * this.current_facekey = qtui.get_liststore_faces_facekey(current) # <<<<<<<<<<<<<< * pydata.app.on_dialog_change_current_face(q2str(this.current_facekey)) * */ this->current_facekey = __pyx_f_6_qtui__get_liststore_faces_facekey(__pyx_v_current); /* "_qt_qtwogl.pyx":1619 * void _on_listview_faces_currentRowChanged(const QModelIndex ¤t) with gil: * this.current_facekey = qtui.get_liststore_faces_facekey(current) * pydata.app.on_dialog_change_current_face(q2str(this.current_facekey)) # <<<<<<<<<<<<<< * * ##pxm-FUNC PH with gil */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1619, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_app); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1619, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_on_dialog_change_current_face); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1619, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __pyx_f_10_qt_qtwogl_q2str(this->current_facekey); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1619, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } if (!__pyx_t_4) { __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1619, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_3}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1619, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_3}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1619, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif { __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1619, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL; __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_3); __pyx_t_3 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1619, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwogl.pyx":1617 * * ##pxm-FUNC PH with gil * void _on_listview_faces_currentRowChanged(const QModelIndex ¤t) with gil: # <<<<<<<<<<<<<< * this.current_facekey = qtui.get_liststore_faces_facekey(current) * pydata.app.on_dialog_change_current_face(q2str(this.current_facekey)) */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_WriteUnraisable("PreferencesDialog._on_listview_faces_currentRowChanged", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwogl.pyx":1622 * * ##pxm-FUNC PH with gil * void on_button_color_clicked() with gil: # <<<<<<<<<<<<<< * cdef QString color #px+ * current_facekey = q2str(this.current_facekey) */ void PreferencesDialog::on_button_color_clicked(void) { QString __pyx_v_color; PyObject *__pyx_v_current_facekey = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; int __pyx_t_4; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_button_color_clicked", 0); /* "_qt_qtwogl.pyx":1624 * void on_button_color_clicked() with gil: * cdef QString color #px+ * current_facekey = q2str(this.current_facekey) # <<<<<<<<<<<<<< * color = str2q(settings['theme.faces',current_facekey,'color']) * color = qtui.color_dialog(this, color) */ __pyx_t_1 = __pyx_f_10_qt_qtwogl_q2str(this->current_facekey); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1624, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_current_facekey = __pyx_t_1; __pyx_t_1 = 0; /* "_qt_qtwogl.pyx":1625 * cdef QString color #px+ * current_facekey = q2str(this.current_facekey) * color = str2q(settings['theme.faces',current_facekey,'color']) # <<<<<<<<<<<<<< * color = qtui.color_dialog(this, color) * if q2str(color): */ __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1625, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1625, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_kp_u_theme_faces); __Pyx_GIVEREF(__pyx_kp_u_theme_faces); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_kp_u_theme_faces); __Pyx_INCREF(__pyx_v_current_facekey); __Pyx_GIVEREF(__pyx_v_current_facekey); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_current_facekey); __Pyx_INCREF(__pyx_n_u_color); __Pyx_GIVEREF(__pyx_n_u_color); PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_n_u_color); __pyx_t_3 = PyObject_GetItem(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1625, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_color = __pyx_f_10_qt_qtwogl_str2q(__pyx_t_3); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "_qt_qtwogl.pyx":1626 * current_facekey = q2str(this.current_facekey) * color = str2q(settings['theme.faces',current_facekey,'color']) * color = qtui.color_dialog(this, color) # <<<<<<<<<<<<<< * if q2str(color): * qtui.set_button_color(color) */ __pyx_v_color = __pyx_f_6_qtui__color_dialog(this, __pyx_v_color); /* "_qt_qtwogl.pyx":1627 * color = str2q(settings['theme.faces',current_facekey,'color']) * color = qtui.color_dialog(this, color) * if q2str(color): # <<<<<<<<<<<<<< * qtui.set_button_color(color) * settings['theme.faces',current_facekey,'color'] = q2str(color) */ __pyx_t_3 = __pyx_f_10_qt_qtwogl_q2str(__pyx_v_color); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1627, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 1627, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (__pyx_t_4) { /* "_qt_qtwogl.pyx":1628 * color = qtui.color_dialog(this, color) * if q2str(color): * qtui.set_button_color(color) # <<<<<<<<<<<<<< * settings['theme.faces',current_facekey,'color'] = q2str(color) * */ __pyx_f_6_qtui__set_button_color(__pyx_v_color); /* "_qt_qtwogl.pyx":1629 * if q2str(color): * qtui.set_button_color(color) * settings['theme.faces',current_facekey,'color'] = q2str(color) # <<<<<<<<<<<<<< * * ##pxm-FUNC PH with gil */ __pyx_t_3 = __pyx_f_10_qt_qtwogl_q2str(__pyx_v_color); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1629, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1629, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1629, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_kp_u_theme_faces); __Pyx_GIVEREF(__pyx_kp_u_theme_faces); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_kp_u_theme_faces); __Pyx_INCREF(__pyx_v_current_facekey); __Pyx_GIVEREF(__pyx_v_current_facekey); PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_current_facekey); __Pyx_INCREF(__pyx_n_u_color); __Pyx_GIVEREF(__pyx_n_u_color); PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_n_u_color); if (unlikely(PyObject_SetItem(__pyx_t_2, __pyx_t_1, __pyx_t_3) < 0)) __PYX_ERR(0, 1629, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "_qt_qtwogl.pyx":1627 * color = str2q(settings['theme.faces',current_facekey,'color']) * color = qtui.color_dialog(this, color) * if q2str(color): # <<<<<<<<<<<<<< * qtui.set_button_color(color) * settings['theme.faces',current_facekey,'color'] = q2str(color) */ } /* "_qt_qtwogl.pyx":1622 * * ##pxm-FUNC PH with gil * void on_button_color_clicked() with gil: # <<<<<<<<<<<<<< * cdef QString color #px+ * current_facekey = q2str(this.current_facekey) */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_WriteUnraisable("PreferencesDialog.on_button_color_clicked", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_XDECREF(__pyx_v_current_facekey); __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwogl.pyx":1632 * * ##pxm-FUNC PH with gil * void on_button_color_reset_clicked() with gil: # <<<<<<<<<<<<<< * current_facekey = q2str(this.current_facekey) * del settings['theme.faces',current_facekey,'color'] */ void PreferencesDialog::on_button_color_reset_clicked(void) { PyObject *__pyx_v_current_facekey = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_button_color_reset_clicked", 0); /* "_qt_qtwogl.pyx":1633 * ##pxm-FUNC PH with gil * void on_button_color_reset_clicked() with gil: * current_facekey = q2str(this.current_facekey) # <<<<<<<<<<<<<< * del settings['theme.faces',current_facekey,'color'] * qtui.set_button_color(str2q(settings['theme.faces',current_facekey,'color'])) */ __pyx_t_1 = __pyx_f_10_qt_qtwogl_q2str(this->current_facekey); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1633, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_current_facekey = __pyx_t_1; __pyx_t_1 = 0; /* "_qt_qtwogl.pyx":1634 * void on_button_color_reset_clicked() with gil: * current_facekey = q2str(this.current_facekey) * del settings['theme.faces',current_facekey,'color'] # <<<<<<<<<<<<<< * qtui.set_button_color(str2q(settings['theme.faces',current_facekey,'color'])) * */ __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1634, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1634, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_kp_u_theme_faces); __Pyx_GIVEREF(__pyx_kp_u_theme_faces); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_kp_u_theme_faces); __Pyx_INCREF(__pyx_v_current_facekey); __Pyx_GIVEREF(__pyx_v_current_facekey); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_current_facekey); __Pyx_INCREF(__pyx_n_u_color); __Pyx_GIVEREF(__pyx_n_u_color); PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_n_u_color); if (unlikely(PyObject_DelItem(__pyx_t_1, __pyx_t_2) < 0)) __PYX_ERR(0, 1634, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwogl.pyx":1635 * current_facekey = q2str(this.current_facekey) * del settings['theme.faces',current_facekey,'color'] * qtui.set_button_color(str2q(settings['theme.faces',current_facekey,'color'])) # <<<<<<<<<<<<<< * * ##pxm-FUNC PH with gil */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1635, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1635, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_kp_u_theme_faces); __Pyx_GIVEREF(__pyx_kp_u_theme_faces); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_kp_u_theme_faces); __Pyx_INCREF(__pyx_v_current_facekey); __Pyx_GIVEREF(__pyx_v_current_facekey); PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_current_facekey); __Pyx_INCREF(__pyx_n_u_color); __Pyx_GIVEREF(__pyx_n_u_color); PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_n_u_color); __pyx_t_3 = PyObject_GetItem(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1635, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_f_6_qtui__set_button_color(__pyx_f_10_qt_qtwogl_str2q(__pyx_t_3)); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "_qt_qtwogl.pyx":1632 * * ##pxm-FUNC PH with gil * void on_button_color_reset_clicked() with gil: # <<<<<<<<<<<<<< * current_facekey = q2str(this.current_facekey) * del settings['theme.faces',current_facekey,'color'] */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_WriteUnraisable("PreferencesDialog.on_button_color_reset_clicked", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_XDECREF(__pyx_v_current_facekey); __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwogl.pyx":1638 * * ##pxm-FUNC PH with gil * void on_combobox_image_activated(int index) with gil: # <<<<<<<<<<<<<< * pydata.app.on_dialog_change_current_image(q2str(this.current_facekey), index) * */ void PreferencesDialog::on_combobox_image_activated(int __pyx_v_index) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; int __pyx_t_6; PyObject *__pyx_t_7 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_combobox_image_activated", 0); /* "_qt_qtwogl.pyx":1639 * ##pxm-FUNC PH with gil * void on_combobox_image_activated(int index) with gil: * pydata.app.on_dialog_change_current_image(q2str(this.current_facekey), index) # <<<<<<<<<<<<<< * * ##pxm-FUNC PH with gil */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1639, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_app); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1639, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_on_dialog_change_current_image); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1639, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __pyx_f_10_qt_qtwogl_q2str(this->current_facekey); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1639, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1639, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_3, __pyx_t_4}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1639, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_3, __pyx_t_4}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1639, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1639, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_t_4); __pyx_t_3 = 0; __pyx_t_4 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1639, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwogl.pyx":1638 * * ##pxm-FUNC PH with gil * void on_combobox_image_activated(int index) with gil: # <<<<<<<<<<<<<< * pydata.app.on_dialog_change_current_image(q2str(this.current_facekey), index) * */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_7); __Pyx_WriteUnraisable("PreferencesDialog.on_combobox_image_activated", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwogl.pyx":1642 * * ##pxm-FUNC PH with gil * void on_button_image_reset_clicked() with gil: # <<<<<<<<<<<<<< * pydata.app.on_dialog_reset_current_image(q2str(this.current_facekey)) * */ void PreferencesDialog::on_button_image_reset_clicked(void) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_button_image_reset_clicked", 0); /* "_qt_qtwogl.pyx":1643 * ##pxm-FUNC PH with gil * void on_button_image_reset_clicked() with gil: * pydata.app.on_dialog_reset_current_image(q2str(this.current_facekey)) # <<<<<<<<<<<<<< * * ##pxm-FUNC PH with gil */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1643, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_app); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1643, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_on_dialog_reset_current_image); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1643, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __pyx_f_10_qt_qtwogl_q2str(this->current_facekey); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1643, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } if (!__pyx_t_4) { __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1643, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_3}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1643, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_3}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1643, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif { __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1643, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL; __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_3); __pyx_t_3 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1643, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwogl.pyx":1642 * * ##pxm-FUNC PH with gil * void on_button_image_reset_clicked() with gil: # <<<<<<<<<<<<<< * pydata.app.on_dialog_reset_current_image(q2str(this.current_facekey)) * */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_WriteUnraisable("PreferencesDialog.on_button_image_reset_clicked", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwogl.pyx":1646 * * ##pxm-FUNC PH with gil * void on_radiobutton_tiled_toggled(cbool checked) with gil: # <<<<<<<<<<<<<< * if checked: * settings['theme.faces',q2str(this.current_facekey),'mode_nick'] = 'tiled' */ void PreferencesDialog::on_radiobutton_tiled_toggled(bool __pyx_v_checked) { __Pyx_RefNannyDeclarations int __pyx_t_1; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_radiobutton_tiled_toggled", 0); /* "_qt_qtwogl.pyx":1647 * ##pxm-FUNC PH with gil * void on_radiobutton_tiled_toggled(cbool checked) with gil: * if checked: # <<<<<<<<<<<<<< * settings['theme.faces',q2str(this.current_facekey),'mode_nick'] = 'tiled' * ##pxm-FUNC PH with gil */ __pyx_t_1 = (__pyx_v_checked != 0); if (__pyx_t_1) { /* "_qt_qtwogl.pyx":1648 * void on_radiobutton_tiled_toggled(cbool checked) with gil: * if checked: * settings['theme.faces',q2str(this.current_facekey),'mode_nick'] = 'tiled' # <<<<<<<<<<<<<< * ##pxm-FUNC PH with gil * void on_radiobutton_mosaic_toggled(cbool checked) with gil: */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1648, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __pyx_f_10_qt_qtwogl_q2str(this->current_facekey); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1648, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1648, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_INCREF(__pyx_kp_u_theme_faces); __Pyx_GIVEREF(__pyx_kp_u_theme_faces); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_kp_u_theme_faces); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_3); __Pyx_INCREF(__pyx_n_u_mode_nick); __Pyx_GIVEREF(__pyx_n_u_mode_nick); PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_n_u_mode_nick); __pyx_t_3 = 0; if (unlikely(PyObject_SetItem(__pyx_t_2, __pyx_t_4, __pyx_n_u_tiled) < 0)) __PYX_ERR(0, 1648, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwogl.pyx":1647 * ##pxm-FUNC PH with gil * void on_radiobutton_tiled_toggled(cbool checked) with gil: * if checked: # <<<<<<<<<<<<<< * settings['theme.faces',q2str(this.current_facekey),'mode_nick'] = 'tiled' * ##pxm-FUNC PH with gil */ } /* "_qt_qtwogl.pyx":1646 * * ##pxm-FUNC PH with gil * void on_radiobutton_tiled_toggled(cbool checked) with gil: # <<<<<<<<<<<<<< * if checked: * settings['theme.faces',q2str(this.current_facekey),'mode_nick'] = 'tiled' */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_WriteUnraisable("PreferencesDialog.on_radiobutton_tiled_toggled", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwogl.pyx":1650 * settings['theme.faces',q2str(this.current_facekey),'mode_nick'] = 'tiled' * ##pxm-FUNC PH with gil * void on_radiobutton_mosaic_toggled(cbool checked) with gil: # <<<<<<<<<<<<<< * if checked: * settings['theme.faces',q2str(this.current_facekey),'mode_nick'] = 'mosaic' */ void PreferencesDialog::on_radiobutton_mosaic_toggled(bool __pyx_v_checked) { __Pyx_RefNannyDeclarations int __pyx_t_1; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_radiobutton_mosaic_toggled", 0); /* "_qt_qtwogl.pyx":1651 * ##pxm-FUNC PH with gil * void on_radiobutton_mosaic_toggled(cbool checked) with gil: * if checked: # <<<<<<<<<<<<<< * settings['theme.faces',q2str(this.current_facekey),'mode_nick'] = 'mosaic' * */ __pyx_t_1 = (__pyx_v_checked != 0); if (__pyx_t_1) { /* "_qt_qtwogl.pyx":1652 * void on_radiobutton_mosaic_toggled(cbool checked) with gil: * if checked: * settings['theme.faces',q2str(this.current_facekey),'mode_nick'] = 'mosaic' # <<<<<<<<<<<<<< * * ##pxm-FUNC PH with gil */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1652, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __pyx_f_10_qt_qtwogl_q2str(this->current_facekey); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1652, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1652, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_INCREF(__pyx_kp_u_theme_faces); __Pyx_GIVEREF(__pyx_kp_u_theme_faces); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_kp_u_theme_faces); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_3); __Pyx_INCREF(__pyx_n_u_mode_nick); __Pyx_GIVEREF(__pyx_n_u_mode_nick); PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_n_u_mode_nick); __pyx_t_3 = 0; if (unlikely(PyObject_SetItem(__pyx_t_2, __pyx_t_4, __pyx_n_u_mosaic) < 0)) __PYX_ERR(0, 1652, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwogl.pyx":1651 * ##pxm-FUNC PH with gil * void on_radiobutton_mosaic_toggled(cbool checked) with gil: * if checked: # <<<<<<<<<<<<<< * settings['theme.faces',q2str(this.current_facekey),'mode_nick'] = 'mosaic' * */ } /* "_qt_qtwogl.pyx":1650 * settings['theme.faces',q2str(this.current_facekey),'mode_nick'] = 'tiled' * ##pxm-FUNC PH with gil * void on_radiobutton_mosaic_toggled(cbool checked) with gil: # <<<<<<<<<<<<<< * if checked: * settings['theme.faces',q2str(this.current_facekey),'mode_nick'] = 'mosaic' */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_WriteUnraisable("PreferencesDialog.on_radiobutton_mosaic_toggled", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwogl.pyx":1655 * * ##pxm-FUNC PH with gil * void on_button_background_color_clicked() with gil: # <<<<<<<<<<<<<< * cdef QString color #px+ * color = str2q(settings['theme.bgcolor']) */ void PreferencesDialog::on_button_background_color_clicked(void) { QString __pyx_v_color; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; int __pyx_t_3; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_button_background_color_clicked", 0); /* "_qt_qtwogl.pyx":1657 * void on_button_background_color_clicked() with gil: * cdef QString color #px+ * color = str2q(settings['theme.bgcolor']) # <<<<<<<<<<<<<< * color = qtui.color_dialog(this, color) * if q2str(color): */ __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1657, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyObject_GetItem(__pyx_t_1, __pyx_kp_u_theme_bgcolor); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1657, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_color = __pyx_f_10_qt_qtwogl_str2q(__pyx_t_2); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwogl.pyx":1658 * cdef QString color #px+ * color = str2q(settings['theme.bgcolor']) * color = qtui.color_dialog(this, color) # <<<<<<<<<<<<<< * if q2str(color): * qtui.set_button_background_color(color) */ __pyx_v_color = __pyx_f_6_qtui__color_dialog(this, __pyx_v_color); /* "_qt_qtwogl.pyx":1659 * color = str2q(settings['theme.bgcolor']) * color = qtui.color_dialog(this, color) * if q2str(color): # <<<<<<<<<<<<<< * qtui.set_button_background_color(color) * settings['theme.bgcolor'] = q2str(color) */ __pyx_t_2 = __pyx_f_10_qt_qtwogl_q2str(__pyx_v_color); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1659, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1659, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (__pyx_t_3) { /* "_qt_qtwogl.pyx":1660 * color = qtui.color_dialog(this, color) * if q2str(color): * qtui.set_button_background_color(color) # <<<<<<<<<<<<<< * settings['theme.bgcolor'] = q2str(color) * */ __pyx_f_6_qtui__set_button_background_color(__pyx_v_color); /* "_qt_qtwogl.pyx":1661 * if q2str(color): * qtui.set_button_background_color(color) * settings['theme.bgcolor'] = q2str(color) # <<<<<<<<<<<<<< * * ##pxm-FUNC PH with gil */ __pyx_t_2 = __pyx_f_10_qt_qtwogl_q2str(__pyx_v_color); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1661, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1661, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (unlikely(PyObject_SetItem(__pyx_t_1, __pyx_kp_u_theme_bgcolor, __pyx_t_2) < 0)) __PYX_ERR(0, 1661, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwogl.pyx":1659 * color = str2q(settings['theme.bgcolor']) * color = qtui.color_dialog(this, color) * if q2str(color): # <<<<<<<<<<<<<< * qtui.set_button_background_color(color) * settings['theme.bgcolor'] = q2str(color) */ } /* "_qt_qtwogl.pyx":1655 * * ##pxm-FUNC PH with gil * void on_button_background_color_clicked() with gil: # <<<<<<<<<<<<<< * cdef QString color #px+ * color = str2q(settings['theme.bgcolor']) */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_WriteUnraisable("PreferencesDialog.on_button_background_color_clicked", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwogl.pyx":1664 * * ##pxm-FUNC PH with gil * void on_button_background_color_reset_clicked() with gil: # <<<<<<<<<<<<<< * del settings['theme.bgcolor'] * qtui.set_button_background_color(str2q(settings['theme.bgcolor'])) */ void PreferencesDialog::on_button_background_color_reset_clicked(void) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_button_background_color_reset_clicked", 0); /* "_qt_qtwogl.pyx":1665 * ##pxm-FUNC PH with gil * void on_button_background_color_reset_clicked() with gil: * del settings['theme.bgcolor'] # <<<<<<<<<<<<<< * qtui.set_button_background_color(str2q(settings['theme.bgcolor'])) * ##pxm>CPPCLASS_END */ __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1665, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (unlikely(PyObject_DelItem(__pyx_t_1, __pyx_kp_u_theme_bgcolor) < 0)) __PYX_ERR(0, 1665, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwogl.pyx":1666 * void on_button_background_color_reset_clicked() with gil: * del settings['theme.bgcolor'] * qtui.set_button_background_color(str2q(settings['theme.bgcolor'])) # <<<<<<<<<<<<<< * ##pxm>CPPCLASS_END * */ __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1666, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyObject_GetItem(__pyx_t_1, __pyx_kp_u_theme_bgcolor); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1666, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_f_6_qtui__set_button_background_color(__pyx_f_10_qt_qtwogl_str2q(__pyx_t_2)); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwogl.pyx":1664 * * ##pxm-FUNC PH with gil * void on_button_background_color_reset_clicked() with gil: # <<<<<<<<<<<<<< * del settings['theme.bgcolor'] * qtui.set_button_background_color(str2q(settings['theme.bgcolor'])) */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_WriteUnraisable("PreferencesDialog.on_button_background_color_reset_clicked", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwogl.pyx":1669 * ##pxm>CPPCLASS_END * * def set_combobox_current_image(index_icon, imagefile, index): # <<<<<<<<<<<<<< * cdef QIcon icon #px/ * #icon = QIcon() */ /* Python wrapper */ static PyObject *__pyx_pw_10_qt_qtwogl_23set_combobox_current_image(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static PyMethodDef __pyx_mdef_10_qt_qtwogl_23set_combobox_current_image = {"set_combobox_current_image", (PyCFunction)__pyx_pw_10_qt_qtwogl_23set_combobox_current_image, METH_VARARGS|METH_KEYWORDS, 0}; static PyObject *__pyx_pw_10_qt_qtwogl_23set_combobox_current_image(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_index_icon = 0; PyObject *__pyx_v_imagefile = 0; PyObject *__pyx_v_index = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("set_combobox_current_image (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_index_icon,&__pyx_n_s_imagefile,&__pyx_n_s_index,0}; PyObject* values[3] = {0,0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_index_icon)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_imagefile)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("set_combobox_current_image", 1, 3, 3, 1); __PYX_ERR(0, 1669, __pyx_L3_error) } case 2: if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_index)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("set_combobox_current_image", 1, 3, 3, 2); __PYX_ERR(0, 1669, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_combobox_current_image") < 0)) __PYX_ERR(0, 1669, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); values[2] = PyTuple_GET_ITEM(__pyx_args, 2); } __pyx_v_index_icon = values[0]; __pyx_v_imagefile = values[1]; __pyx_v_index = values[2]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("set_combobox_current_image", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1669, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("_qt_qtwogl.set_combobox_current_image", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_10_qt_qtwogl_22set_combobox_current_image(__pyx_self, __pyx_v_index_icon, __pyx_v_imagefile, __pyx_v_index); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_10_qt_qtwogl_22set_combobox_current_image(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_index_icon, PyObject *__pyx_v_imagefile, PyObject *__pyx_v_index) { QIcon __pyx_v_icon; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; int __pyx_t_2; int __pyx_t_3; int __pyx_t_4; __Pyx_RefNannySetupContext("set_combobox_current_image", 0); /* "_qt_qtwogl.pyx":1672 * cdef QIcon icon #px/ * #icon = QIcon() * if imagefile is not None: # <<<<<<<<<<<<<< * icon.addFile(str2q(imagefile)) * qtui.set_combobox_image(index_icon, icon, index) */ __pyx_t_1 = (__pyx_v_imagefile != Py_None); __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { /* "_qt_qtwogl.pyx":1673 * #icon = QIcon() * if imagefile is not None: * icon.addFile(str2q(imagefile)) # <<<<<<<<<<<<<< * qtui.set_combobox_image(index_icon, icon, index) * */ __pyx_v_icon.addFile(__pyx_f_10_qt_qtwogl_str2q(__pyx_v_imagefile)); /* "_qt_qtwogl.pyx":1672 * cdef QIcon icon #px/ * #icon = QIcon() * if imagefile is not None: # <<<<<<<<<<<<<< * icon.addFile(str2q(imagefile)) * qtui.set_combobox_image(index_icon, icon, index) */ } /* "_qt_qtwogl.pyx":1674 * if imagefile is not None: * icon.addFile(str2q(imagefile)) * qtui.set_combobox_image(index_icon, icon, index) # <<<<<<<<<<<<<< * * def set_preferences_current_face_theme(color, imageindex_icon, imagefile, imageindex, imagemode): */ __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_v_index_icon); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1674, __pyx_L1_error) __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_v_index); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1674, __pyx_L1_error) __pyx_f_6_qtui__set_combobox_image(__pyx_t_3, __pyx_v_icon, __pyx_t_4); /* "_qt_qtwogl.pyx":1669 * ##pxm>CPPCLASS_END * * def set_combobox_current_image(index_icon, imagefile, index): # <<<<<<<<<<<<<< * cdef QIcon icon #px/ * #icon = QIcon() */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("_qt_qtwogl.set_combobox_current_image", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwogl.pyx":1676 * qtui.set_combobox_image(index_icon, icon, index) * * def set_preferences_current_face_theme(color, imageindex_icon, imagefile, imageindex, imagemode): # <<<<<<<<<<<<<< * qtui.set_button_color(str2q(color)) * set_combobox_current_image(imageindex_icon, imagefile, imageindex) */ /* Python wrapper */ static PyObject *__pyx_pw_10_qt_qtwogl_25set_preferences_current_face_theme(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static PyMethodDef __pyx_mdef_10_qt_qtwogl_25set_preferences_current_face_theme = {"set_preferences_current_face_theme", (PyCFunction)__pyx_pw_10_qt_qtwogl_25set_preferences_current_face_theme, METH_VARARGS|METH_KEYWORDS, 0}; static PyObject *__pyx_pw_10_qt_qtwogl_25set_preferences_current_face_theme(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_color = 0; PyObject *__pyx_v_imageindex_icon = 0; PyObject *__pyx_v_imagefile = 0; PyObject *__pyx_v_imageindex = 0; PyObject *__pyx_v_imagemode = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("set_preferences_current_face_theme (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_color,&__pyx_n_s_imageindex_icon,&__pyx_n_s_imagefile,&__pyx_n_s_imageindex,&__pyx_n_s_imagemode,0}; PyObject* values[5] = {0,0,0,0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_color)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_imageindex_icon)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("set_preferences_current_face_theme", 1, 5, 5, 1); __PYX_ERR(0, 1676, __pyx_L3_error) } case 2: if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_imagefile)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("set_preferences_current_face_theme", 1, 5, 5, 2); __PYX_ERR(0, 1676, __pyx_L3_error) } case 3: if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_imageindex)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("set_preferences_current_face_theme", 1, 5, 5, 3); __PYX_ERR(0, 1676, __pyx_L3_error) } case 4: if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_imagemode)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("set_preferences_current_face_theme", 1, 5, 5, 4); __PYX_ERR(0, 1676, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_preferences_current_face_theme") < 0)) __PYX_ERR(0, 1676, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 5) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); values[2] = PyTuple_GET_ITEM(__pyx_args, 2); values[3] = PyTuple_GET_ITEM(__pyx_args, 3); values[4] = PyTuple_GET_ITEM(__pyx_args, 4); } __pyx_v_color = values[0]; __pyx_v_imageindex_icon = values[1]; __pyx_v_imagefile = values[2]; __pyx_v_imageindex = values[3]; __pyx_v_imagemode = values[4]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("set_preferences_current_face_theme", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1676, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("_qt_qtwogl.set_preferences_current_face_theme", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_10_qt_qtwogl_24set_preferences_current_face_theme(__pyx_self, __pyx_v_color, __pyx_v_imageindex_icon, __pyx_v_imagefile, __pyx_v_imageindex, __pyx_v_imagemode); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_10_qt_qtwogl_24set_preferences_current_face_theme(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_color, PyObject *__pyx_v_imageindex_icon, PyObject *__pyx_v_imagefile, PyObject *__pyx_v_imageindex, PyObject *__pyx_v_imagemode) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; int __pyx_t_4; PyObject *__pyx_t_5 = NULL; __Pyx_RefNannySetupContext("set_preferences_current_face_theme", 0); /* "_qt_qtwogl.pyx":1677 * * def set_preferences_current_face_theme(color, imageindex_icon, imagefile, imageindex, imagemode): * qtui.set_button_color(str2q(color)) # <<<<<<<<<<<<<< * set_combobox_current_image(imageindex_icon, imagefile, imageindex) * qtui.set_imagemode(imagemode) */ __pyx_f_6_qtui__set_button_color(__pyx_f_10_qt_qtwogl_str2q(__pyx_v_color)); /* "_qt_qtwogl.pyx":1678 * def set_preferences_current_face_theme(color, imageindex_icon, imagefile, imageindex, imagemode): * qtui.set_button_color(str2q(color)) * set_combobox_current_image(imageindex_icon, imagefile, imageindex) # <<<<<<<<<<<<<< * qtui.set_imagemode(imagemode) * */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_set_combobox_current_image); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1678, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_3, __pyx_v_imageindex_icon, __pyx_v_imagefile, __pyx_v_imageindex}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 3+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1678, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_3, __pyx_v_imageindex_icon, __pyx_v_imagefile, __pyx_v_imageindex}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 3+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1678, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_5 = PyTuple_New(3+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1678, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_INCREF(__pyx_v_imageindex_icon); __Pyx_GIVEREF(__pyx_v_imageindex_icon); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_imageindex_icon); __Pyx_INCREF(__pyx_v_imagefile); __Pyx_GIVEREF(__pyx_v_imagefile); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_v_imagefile); __Pyx_INCREF(__pyx_v_imageindex); __Pyx_GIVEREF(__pyx_v_imageindex); PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_4, __pyx_v_imageindex); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1678, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwogl.pyx":1679 * qtui.set_button_color(str2q(color)) * set_combobox_current_image(imageindex_icon, imagefile, imageindex) * qtui.set_imagemode(imagemode) # <<<<<<<<<<<<<< * * def get_filedialog_imagefile(): */ __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_v_imagemode); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1679, __pyx_L1_error) __pyx_f_6_qtui__set_imagemode(__pyx_t_4); /* "_qt_qtwogl.pyx":1676 * qtui.set_combobox_image(index_icon, icon, index) * * def set_preferences_current_face_theme(color, imageindex_icon, imagefile, imageindex, imagemode): # <<<<<<<<<<<<<< * qtui.set_button_color(str2q(color)) * set_combobox_current_image(imageindex_icon, imagefile, imageindex) */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("_qt_qtwogl.set_preferences_current_face_theme", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwogl.pyx":1681 * qtui.set_imagemode(imagemode) * * def get_filedialog_imagefile(): # <<<<<<<<<<<<<< * filename = q2str(getOpenFileName(uidata.preferences, str2q(_("Open Image")), uidata.preferences.image_dirname)) * if filename: */ /* Python wrapper */ static PyObject *__pyx_pw_10_qt_qtwogl_27get_filedialog_imagefile(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/ static PyMethodDef __pyx_mdef_10_qt_qtwogl_27get_filedialog_imagefile = {"get_filedialog_imagefile", (PyCFunction)__pyx_pw_10_qt_qtwogl_27get_filedialog_imagefile, METH_NOARGS, 0}; static PyObject *__pyx_pw_10_qt_qtwogl_27get_filedialog_imagefile(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("get_filedialog_imagefile (wrapper)", 0); __pyx_r = __pyx_pf_10_qt_qtwogl_26get_filedialog_imagefile(__pyx_self); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_10_qt_qtwogl_26get_filedialog_imagefile(CYTHON_UNUSED PyObject *__pyx_self) { PyObject *__pyx_v_filename = NULL; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; int __pyx_t_3; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; __Pyx_RefNannySetupContext("get_filedialog_imagefile", 0); /* "_qt_qtwogl.pyx":1682 * * def get_filedialog_imagefile(): * filename = q2str(getOpenFileName(uidata.preferences, str2q(_("Open Image")), uidata.preferences.image_dirname)) # <<<<<<<<<<<<<< * if filename: * uidata.preferences.image_dirname = str2q(os.path.dirname(filename)) */ __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1682, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__10, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1682, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __pyx_f_10_qt_qtwogl_q2str(QFileDialog::getOpenFileName(__pyx_v_10_qt_qtwogl_uidata.preferences, __pyx_f_10_qt_qtwogl_str2q(__pyx_t_2), __pyx_v_10_qt_qtwogl_uidata.preferences->image_dirname)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1682, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_filename = __pyx_t_1; __pyx_t_1 = 0; /* "_qt_qtwogl.pyx":1683 * def get_filedialog_imagefile(): * filename = q2str(getOpenFileName(uidata.preferences, str2q(_("Open Image")), uidata.preferences.image_dirname)) * if filename: # <<<<<<<<<<<<<< * uidata.preferences.image_dirname = str2q(os.path.dirname(filename)) * return filename */ __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_filename); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1683, __pyx_L1_error) if (__pyx_t_3) { /* "_qt_qtwogl.pyx":1684 * filename = q2str(getOpenFileName(uidata.preferences, str2q(_("Open Image")), uidata.preferences.image_dirname)) * if filename: * uidata.preferences.image_dirname = str2q(os.path.dirname(filename)) # <<<<<<<<<<<<<< * return filename * ##pxm>IF_END */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_os); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1684, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_path); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1684, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_dirname); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1684, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } if (!__pyx_t_4) { __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_filename); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1684, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_filename}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1684, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_v_filename}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1684, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1684, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL; __Pyx_INCREF(__pyx_v_filename); __Pyx_GIVEREF(__pyx_v_filename); PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_filename); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1684, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_10_qt_qtwogl_uidata.preferences->image_dirname = __pyx_f_10_qt_qtwogl_str2q(__pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwogl.pyx":1683 * def get_filedialog_imagefile(): * filename = q2str(getOpenFileName(uidata.preferences, str2q(_("Open Image")), uidata.preferences.image_dirname)) * if filename: # <<<<<<<<<<<<<< * uidata.preferences.image_dirname = str2q(os.path.dirname(filename)) * return filename */ } /* "_qt_qtwogl.pyx":1685 * if filename: * uidata.preferences.image_dirname = str2q(os.path.dirname(filename)) * return filename # <<<<<<<<<<<<<< * ##pxm>IF_END * */ __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_filename); __pyx_r = __pyx_v_filename; goto __pyx_L0; /* "_qt_qtwogl.pyx":1681 * qtui.set_imagemode(imagemode) * * def get_filedialog_imagefile(): # <<<<<<<<<<<<<< * filename = q2str(getOpenFileName(uidata.preferences, str2q(_("Open Image")), uidata.preferences.image_dirname)) * if filename: */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_AddTraceback("_qt_qtwogl.get_filedialog_imagefile", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_filename); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwogl.pyx":1688 * ##pxm>IF_END * * def preferences_dialog(shader_names, sample_buffers, facenames, stockicons): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * uidata.preferences = new PreferencesDialog(uidata.mainwindow) #px/ */ /* Python wrapper */ static PyObject *__pyx_pw_10_qt_qtwogl_29preferences_dialog(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static PyMethodDef __pyx_mdef_10_qt_qtwogl_29preferences_dialog = {"preferences_dialog", (PyCFunction)__pyx_pw_10_qt_qtwogl_29preferences_dialog, METH_VARARGS|METH_KEYWORDS, 0}; static PyObject *__pyx_pw_10_qt_qtwogl_29preferences_dialog(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_shader_names = 0; CYTHON_UNUSED PyObject *__pyx_v_sample_buffers = 0; PyObject *__pyx_v_facenames = 0; PyObject *__pyx_v_stockicons = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("preferences_dialog (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_shader_names,&__pyx_n_s_sample_buffers,&__pyx_n_s_facenames,&__pyx_n_s_stockicons,0}; PyObject* values[4] = {0,0,0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_shader_names)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_sample_buffers)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("preferences_dialog", 1, 4, 4, 1); __PYX_ERR(0, 1688, __pyx_L3_error) } case 2: if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_facenames)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("preferences_dialog", 1, 4, 4, 2); __PYX_ERR(0, 1688, __pyx_L3_error) } case 3: if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_stockicons)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("preferences_dialog", 1, 4, 4, 3); __PYX_ERR(0, 1688, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "preferences_dialog") < 0)) __PYX_ERR(0, 1688, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 4) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); values[2] = PyTuple_GET_ITEM(__pyx_args, 2); values[3] = PyTuple_GET_ITEM(__pyx_args, 3); } __pyx_v_shader_names = values[0]; __pyx_v_sample_buffers = values[1]; __pyx_v_facenames = values[2]; __pyx_v_stockicons = values[3]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("preferences_dialog", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1688, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("_qt_qtwogl.preferences_dialog", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_10_qt_qtwogl_28preferences_dialog(__pyx_self, __pyx_v_shader_names, __pyx_v_sample_buffers, __pyx_v_facenames, __pyx_v_stockicons); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_10_qt_qtwogl_28preferences_dialog(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_shader_names, CYTHON_UNUSED PyObject *__pyx_v_sample_buffers, PyObject *__pyx_v_facenames, PyObject *__pyx_v_stockicons) { PyObject *__pyx_v_nick = NULL; PyObject *__pyx_v_text = NULL; PyObject *__pyx_v_selection_nick = NULL; PyObject *__pyx_v_facename = NULL; PyObject *__pyx_v_facekey = NULL; PyObject *__pyx_v_filename = NULL; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; Py_ssize_t __pyx_t_3; PyObject *(*__pyx_t_4)(PyObject *); PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; int __pyx_t_7; PyObject *__pyx_t_8 = NULL; int __pyx_t_9; PyObject *(*__pyx_t_10)(PyObject *); __Pyx_RefNannySetupContext("preferences_dialog", 0); /* "_qt_qtwogl.pyx":1690 * def preferences_dialog(shader_names, sample_buffers, facenames, stockicons): * ##pxm>IF 'qtw' == 'qtw' * uidata.preferences = new PreferencesDialog(uidata.mainwindow) #px/ # <<<<<<<<<<<<<< * #uidata.preferences = PreferencesDialog(uidata.mainwindow) * uidata.preferences.init() */ __pyx_v_10_qt_qtwogl_uidata.preferences = new PreferencesDialog(__pyx_v_10_qt_qtwogl_uidata.mainwindow); /* "_qt_qtwogl.pyx":1692 * uidata.preferences = new PreferencesDialog(uidata.mainwindow) #px/ * #uidata.preferences = PreferencesDialog(uidata.mainwindow) * uidata.preferences.init() # <<<<<<<<<<<<<< * qtui.preferences_block_signals(True) * */ __pyx_v_10_qt_qtwogl_uidata.preferences->init(); /* "_qt_qtwogl.pyx":1693 * #uidata.preferences = PreferencesDialog(uidata.mainwindow) * uidata.preferences.init() * qtui.preferences_block_signals(True) # <<<<<<<<<<<<<< * * # graphic tab */ __pyx_f_6_qtui__preferences_block_signals(1); /* "_qt_qtwogl.pyx":1696 * * # graphic tab * for nick in settings['draw.shader_range']: # <<<<<<<<<<<<<< * qtui.combobox_add_shaderitem(str2q(shader_names.get(nick, nick)), str2q(nick)) * uidata.preferences.findChild(str2q('combobox_shader')).setProperty(b'currentIndex', tovariant(settings['draw.shader'])) */ __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1696, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyObject_GetItem(__pyx_t_1, __pyx_kp_u_draw_shader_range); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1696, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (likely(PyList_CheckExact(__pyx_t_2)) || PyTuple_CheckExact(__pyx_t_2)) { __pyx_t_1 = __pyx_t_2; __Pyx_INCREF(__pyx_t_1); __pyx_t_3 = 0; __pyx_t_4 = NULL; } else { __pyx_t_3 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1696, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1696, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; for (;;) { if (likely(!__pyx_t_4)) { if (likely(PyList_CheckExact(__pyx_t_1))) { if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_1)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_2); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 1696, __pyx_L1_error) #else __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1696, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); #endif } else { if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_1)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_2); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 1696, __pyx_L1_error) #else __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1696, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); #endif } } else { __pyx_t_2 = __pyx_t_4(__pyx_t_1); if (unlikely(!__pyx_t_2)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 1696, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_2); } __Pyx_XDECREF_SET(__pyx_v_nick, __pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwogl.pyx":1697 * # graphic tab * for nick in settings['draw.shader_range']: * qtui.combobox_add_shaderitem(str2q(shader_names.get(nick, nick)), str2q(nick)) # <<<<<<<<<<<<<< * uidata.preferences.findChild(str2q('combobox_shader')).setProperty(b'currentIndex', tovariant(settings['draw.shader'])) * for text in settings['draw.samples_range']: */ __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_shader_names, __pyx_n_s_get); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1697, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = NULL; __pyx_t_7 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); __pyx_t_7 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_nick, __pyx_v_nick}; __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1697, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_2); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_nick, __pyx_v_nick}; __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1697, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_2); } else #endif { __pyx_t_8 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1697, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); if (__pyx_t_6) { __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = NULL; } __Pyx_INCREF(__pyx_v_nick); __Pyx_GIVEREF(__pyx_v_nick); PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_7, __pyx_v_nick); __Pyx_INCREF(__pyx_v_nick); __Pyx_GIVEREF(__pyx_v_nick); PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, __pyx_v_nick); __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_8, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1697, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_f_6_qtui__combobox_add_shaderitem(__pyx_f_10_qt_qtwogl_str2q(__pyx_t_2), __pyx_f_10_qt_qtwogl_str2q(__pyx_v_nick)); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwogl.pyx":1696 * * # graphic tab * for nick in settings['draw.shader_range']: # <<<<<<<<<<<<<< * qtui.combobox_add_shaderitem(str2q(shader_names.get(nick, nick)), str2q(nick)) * uidata.preferences.findChild(str2q('combobox_shader')).setProperty(b'currentIndex', tovariant(settings['draw.shader'])) */ } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwogl.pyx":1698 * for nick in settings['draw.shader_range']: * qtui.combobox_add_shaderitem(str2q(shader_names.get(nick, nick)), str2q(nick)) * uidata.preferences.findChild(str2q('combobox_shader')).setProperty(b'currentIndex', tovariant(settings['draw.shader'])) # <<<<<<<<<<<<<< * for text in settings['draw.samples_range']: * qtui.combobox_add_samplesitem(str2q(_(text)), str2q(text)) */ __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1698, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyObject_GetItem(__pyx_t_1, __pyx_kp_u_draw_shader); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1698, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_10_qt_qtwogl_uidata.preferences->findChild(__pyx_f_10_qt_qtwogl_str2q(__pyx_n_u_combobox_shader))->setProperty(((char const *)"currentIndex"), __pyx_f_10_qt_qtwogl_tovariant(__pyx_t_2)); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwogl.pyx":1699 * qtui.combobox_add_shaderitem(str2q(shader_names.get(nick, nick)), str2q(nick)) * uidata.preferences.findChild(str2q('combobox_shader')).setProperty(b'currentIndex', tovariant(settings['draw.shader'])) * for text in settings['draw.samples_range']: # <<<<<<<<<<<<<< * qtui.combobox_add_samplesitem(str2q(_(text)), str2q(text)) * uidata.preferences.findChild(str2q('combobox_samples')).setProperty(b'currentIndex', tovariant(settings['draw.samples'])) */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1699, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = PyObject_GetItem(__pyx_t_2, __pyx_kp_u_draw_samples_range); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1699, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) { __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0; __pyx_t_4 = NULL; } else { __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1699, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1699, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; for (;;) { if (likely(!__pyx_t_4)) { if (likely(PyList_CheckExact(__pyx_t_2))) { if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 1699, __pyx_L1_error) #else __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1699, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); #endif } else { if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_2)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 1699, __pyx_L1_error) #else __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1699, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); #endif } } else { __pyx_t_1 = __pyx_t_4(__pyx_t_2); if (unlikely(!__pyx_t_1)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 1699, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_1); } __Pyx_XDECREF_SET(__pyx_v_text, __pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwogl.pyx":1700 * uidata.preferences.findChild(str2q('combobox_shader')).setProperty(b'currentIndex', tovariant(settings['draw.shader'])) * for text in settings['draw.samples_range']: * qtui.combobox_add_samplesitem(str2q(_(text)), str2q(text)) # <<<<<<<<<<<<<< * uidata.preferences.findChild(str2q('combobox_samples')).setProperty(b'currentIndex', tovariant(settings['draw.samples'])) * uidata.preferences.findChild(str2q('checkbox_mirror_faces')).setProperty(b'checked', tovariant(settings['draw.mirror_faces'])) */ __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s__4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1700, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_8 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_8)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); } } if (!__pyx_t_8) { __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_text); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1700, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_v_text}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1700, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_v_text}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1700, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1700, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_8); __pyx_t_8 = NULL; __Pyx_INCREF(__pyx_v_text); __Pyx_GIVEREF(__pyx_v_text); PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_v_text); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1700, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_f_6_qtui__combobox_add_samplesitem(__pyx_f_10_qt_qtwogl_str2q(__pyx_t_1), __pyx_f_10_qt_qtwogl_str2q(__pyx_v_text)); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwogl.pyx":1699 * qtui.combobox_add_shaderitem(str2q(shader_names.get(nick, nick)), str2q(nick)) * uidata.preferences.findChild(str2q('combobox_shader')).setProperty(b'currentIndex', tovariant(settings['draw.shader'])) * for text in settings['draw.samples_range']: # <<<<<<<<<<<<<< * qtui.combobox_add_samplesitem(str2q(_(text)), str2q(text)) * uidata.preferences.findChild(str2q('combobox_samples')).setProperty(b'currentIndex', tovariant(settings['draw.samples'])) */ } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwogl.pyx":1701 * for text in settings['draw.samples_range']: * qtui.combobox_add_samplesitem(str2q(_(text)), str2q(text)) * uidata.preferences.findChild(str2q('combobox_samples')).setProperty(b'currentIndex', tovariant(settings['draw.samples'])) # <<<<<<<<<<<<<< * uidata.preferences.findChild(str2q('checkbox_mirror_faces')).setProperty(b'checked', tovariant(settings['draw.mirror_faces'])) * uidata.preferences.findChild(str2q('spinbox_mirror_faces')).setProperty(b'value', tovariant(settings['draw.mirror_distance'])) */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1701, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = PyObject_GetItem(__pyx_t_2, __pyx_kp_u_draw_samples); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1701, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_10_qt_qtwogl_uidata.preferences->findChild(__pyx_f_10_qt_qtwogl_str2q(__pyx_n_u_combobox_samples))->setProperty(((char const *)"currentIndex"), __pyx_f_10_qt_qtwogl_tovariant(__pyx_t_1)); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwogl.pyx":1702 * qtui.combobox_add_samplesitem(str2q(_(text)), str2q(text)) * uidata.preferences.findChild(str2q('combobox_samples')).setProperty(b'currentIndex', tovariant(settings['draw.samples'])) * uidata.preferences.findChild(str2q('checkbox_mirror_faces')).setProperty(b'checked', tovariant(settings['draw.mirror_faces'])) # <<<<<<<<<<<<<< * uidata.preferences.findChild(str2q('spinbox_mirror_faces')).setProperty(b'value', tovariant(settings['draw.mirror_distance'])) * */ __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1702, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyObject_GetItem(__pyx_t_1, __pyx_kp_u_draw_mirror_faces); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1702, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_10_qt_qtwogl_uidata.preferences->findChild(__pyx_f_10_qt_qtwogl_str2q(__pyx_n_u_checkbox_mirror_faces))->setProperty(((char const *)"checked"), __pyx_f_10_qt_qtwogl_tovariant(__pyx_t_2)); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwogl.pyx":1703 * uidata.preferences.findChild(str2q('combobox_samples')).setProperty(b'currentIndex', tovariant(settings['draw.samples'])) * uidata.preferences.findChild(str2q('checkbox_mirror_faces')).setProperty(b'checked', tovariant(settings['draw.mirror_faces'])) * uidata.preferences.findChild(str2q('spinbox_mirror_faces')).setProperty(b'value', tovariant(settings['draw.mirror_distance'])) # <<<<<<<<<<<<<< * * # mouse tab */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1703, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = PyObject_GetItem(__pyx_t_2, __pyx_kp_u_draw_mirror_distance); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1703, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_10_qt_qtwogl_uidata.preferences->findChild(__pyx_f_10_qt_qtwogl_str2q(__pyx_n_u_spinbox_mirror_faces))->setProperty(((char const *)"value"), __pyx_f_10_qt_qtwogl_tovariant(__pyx_t_1)); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwogl.pyx":1706 * * # mouse tab * selection_nick = settings['draw.selection_nick'] # <<<<<<<<<<<<<< * if selection_nick == 'quadrant': * uidata.preferences.findChild(str2q('button_mousemode_quad')).setProperty(b'checked', tovariant(True)) */ __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1706, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyObject_GetItem(__pyx_t_1, __pyx_kp_u_draw_selection_nick); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1706, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_selection_nick = __pyx_t_2; __pyx_t_2 = 0; /* "_qt_qtwogl.pyx":1707 * # mouse tab * selection_nick = settings['draw.selection_nick'] * if selection_nick == 'quadrant': # <<<<<<<<<<<<<< * uidata.preferences.findChild(str2q('button_mousemode_quad')).setProperty(b'checked', tovariant(True)) * elif selection_nick == 'simple': */ __pyx_t_9 = (__Pyx_PyUnicode_Equals(__pyx_v_selection_nick, __pyx_n_u_quadrant, Py_EQ)); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 1707, __pyx_L1_error) if (__pyx_t_9) { /* "_qt_qtwogl.pyx":1708 * selection_nick = settings['draw.selection_nick'] * if selection_nick == 'quadrant': * uidata.preferences.findChild(str2q('button_mousemode_quad')).setProperty(b'checked', tovariant(True)) # <<<<<<<<<<<<<< * elif selection_nick == 'simple': * uidata.preferences.findChild(str2q('button_mousemode_ext')).setProperty(b'checked', tovariant(True)) */ __pyx_v_10_qt_qtwogl_uidata.preferences->findChild(__pyx_f_10_qt_qtwogl_str2q(__pyx_n_u_button_mousemode_quad))->setProperty(((char const *)"checked"), __pyx_f_10_qt_qtwogl_tovariant(Py_True)); /* "_qt_qtwogl.pyx":1707 * # mouse tab * selection_nick = settings['draw.selection_nick'] * if selection_nick == 'quadrant': # <<<<<<<<<<<<<< * uidata.preferences.findChild(str2q('button_mousemode_quad')).setProperty(b'checked', tovariant(True)) * elif selection_nick == 'simple': */ goto __pyx_L7; } /* "_qt_qtwogl.pyx":1709 * if selection_nick == 'quadrant': * uidata.preferences.findChild(str2q('button_mousemode_quad')).setProperty(b'checked', tovariant(True)) * elif selection_nick == 'simple': # <<<<<<<<<<<<<< * uidata.preferences.findChild(str2q('button_mousemode_ext')).setProperty(b'checked', tovariant(True)) * elif selection_nick == 'gesture': */ __pyx_t_9 = (__Pyx_PyUnicode_Equals(__pyx_v_selection_nick, __pyx_n_u_simple, Py_EQ)); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 1709, __pyx_L1_error) if (__pyx_t_9) { /* "_qt_qtwogl.pyx":1710 * uidata.preferences.findChild(str2q('button_mousemode_quad')).setProperty(b'checked', tovariant(True)) * elif selection_nick == 'simple': * uidata.preferences.findChild(str2q('button_mousemode_ext')).setProperty(b'checked', tovariant(True)) # <<<<<<<<<<<<<< * elif selection_nick == 'gesture': * uidata.preferences.findChild(str2q('button_mousemode_gesture')).setProperty(b'checked', tovariant(True)) */ __pyx_v_10_qt_qtwogl_uidata.preferences->findChild(__pyx_f_10_qt_qtwogl_str2q(__pyx_n_u_button_mousemode_ext))->setProperty(((char const *)"checked"), __pyx_f_10_qt_qtwogl_tovariant(Py_True)); /* "_qt_qtwogl.pyx":1709 * if selection_nick == 'quadrant': * uidata.preferences.findChild(str2q('button_mousemode_quad')).setProperty(b'checked', tovariant(True)) * elif selection_nick == 'simple': # <<<<<<<<<<<<<< * uidata.preferences.findChild(str2q('button_mousemode_ext')).setProperty(b'checked', tovariant(True)) * elif selection_nick == 'gesture': */ goto __pyx_L7; } /* "_qt_qtwogl.pyx":1711 * elif selection_nick == 'simple': * uidata.preferences.findChild(str2q('button_mousemode_ext')).setProperty(b'checked', tovariant(True)) * elif selection_nick == 'gesture': # <<<<<<<<<<<<<< * uidata.preferences.findChild(str2q('button_mousemode_gesture')).setProperty(b'checked', tovariant(True)) * */ __pyx_t_9 = (__Pyx_PyUnicode_Equals(__pyx_v_selection_nick, __pyx_n_u_gesture, Py_EQ)); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 1711, __pyx_L1_error) if (__pyx_t_9) { /* "_qt_qtwogl.pyx":1712 * uidata.preferences.findChild(str2q('button_mousemode_ext')).setProperty(b'checked', tovariant(True)) * elif selection_nick == 'gesture': * uidata.preferences.findChild(str2q('button_mousemode_gesture')).setProperty(b'checked', tovariant(True)) # <<<<<<<<<<<<<< * * # keys tab */ __pyx_v_10_qt_qtwogl_uidata.preferences->findChild(__pyx_f_10_qt_qtwogl_str2q(__pyx_n_u_button_mousemode_gesture))->setProperty(((char const *)"checked"), __pyx_f_10_qt_qtwogl_tovariant(Py_True)); /* "_qt_qtwogl.pyx":1711 * elif selection_nick == 'simple': * uidata.preferences.findChild(str2q('button_mousemode_ext')).setProperty(b'checked', tovariant(True)) * elif selection_nick == 'gesture': # <<<<<<<<<<<<<< * uidata.preferences.findChild(str2q('button_mousemode_gesture')).setProperty(b'checked', tovariant(True)) * */ } __pyx_L7:; /* "_qt_qtwogl.pyx":1715 * * # keys tab * uidata.preferences.fill_move_key_list() # <<<<<<<<<<<<<< * * # theme tab */ __pyx_v_10_qt_qtwogl_uidata.preferences->fill_move_key_list(); /* "_qt_qtwogl.pyx":1718 * * # theme tab * for facename, facekey in facenames: # <<<<<<<<<<<<<< * qtui.add_liststore_faces_row(str2q(facename), str2q(facekey)) * qtui.add_combobox_image_item(QIcon(), str2q(_('plain')), str2q('')) */ if (likely(PyList_CheckExact(__pyx_v_facenames)) || PyTuple_CheckExact(__pyx_v_facenames)) { __pyx_t_2 = __pyx_v_facenames; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0; __pyx_t_4 = NULL; } else { __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_facenames); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1718, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1718, __pyx_L1_error) } for (;;) { if (likely(!__pyx_t_4)) { if (likely(PyList_CheckExact(__pyx_t_2))) { if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 1718, __pyx_L1_error) #else __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1718, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); #endif } else { if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_2)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 1718, __pyx_L1_error) #else __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1718, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); #endif } } else { __pyx_t_1 = __pyx_t_4(__pyx_t_2); if (unlikely(!__pyx_t_1)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 1718, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_1); } if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; #if !CYTHON_COMPILING_IN_PYPY Py_ssize_t size = Py_SIZE(sequence); #else Py_ssize_t size = PySequence_Size(sequence); #endif if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 1718, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_5 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_5 = PyList_GET_ITEM(sequence, 0); __pyx_t_6 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(__pyx_t_6); #else __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1718, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1718, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; __pyx_t_8 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1718, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_10 = Py_TYPE(__pyx_t_8)->tp_iternext; index = 0; __pyx_t_5 = __pyx_t_10(__pyx_t_8); if (unlikely(!__pyx_t_5)) goto __pyx_L10_unpacking_failed; __Pyx_GOTREF(__pyx_t_5); index = 1; __pyx_t_6 = __pyx_t_10(__pyx_t_8); if (unlikely(!__pyx_t_6)) goto __pyx_L10_unpacking_failed; __Pyx_GOTREF(__pyx_t_6); if (__Pyx_IternextUnpackEndCheck(__pyx_t_10(__pyx_t_8), 2) < 0) __PYX_ERR(0, 1718, __pyx_L1_error) __pyx_t_10 = NULL; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; goto __pyx_L11_unpacking_done; __pyx_L10_unpacking_failed:; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_10 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 1718, __pyx_L1_error) __pyx_L11_unpacking_done:; } __Pyx_XDECREF_SET(__pyx_v_facename, __pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF_SET(__pyx_v_facekey, __pyx_t_6); __pyx_t_6 = 0; /* "_qt_qtwogl.pyx":1719 * # theme tab * for facename, facekey in facenames: * qtui.add_liststore_faces_row(str2q(facename), str2q(facekey)) # <<<<<<<<<<<<<< * qtui.add_combobox_image_item(QIcon(), str2q(_('plain')), str2q('')) * for filename in stockicons: */ __pyx_f_6_qtui__add_liststore_faces_row(__pyx_f_10_qt_qtwogl_str2q(__pyx_v_facename), __pyx_f_10_qt_qtwogl_str2q(__pyx_v_facekey)); /* "_qt_qtwogl.pyx":1718 * * # theme tab * for facename, facekey in facenames: # <<<<<<<<<<<<<< * qtui.add_liststore_faces_row(str2q(facename), str2q(facekey)) * qtui.add_combobox_image_item(QIcon(), str2q(_('plain')), str2q('')) */ } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwogl.pyx":1720 * for facename, facekey in facenames: * qtui.add_liststore_faces_row(str2q(facename), str2q(facekey)) * qtui.add_combobox_image_item(QIcon(), str2q(_('plain')), str2q('')) # <<<<<<<<<<<<<< * for filename in stockicons: * qtui.add_combobox_image_item(get_icon(filename), str2q(''), str2q(filename)) */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s__4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1720, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__11, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1720, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_f_6_qtui__add_combobox_image_item(QIcon(), __pyx_f_10_qt_qtwogl_str2q(__pyx_t_1), __pyx_f_10_qt_qtwogl_str2q(__pyx_kp_u__6)); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwogl.pyx":1721 * qtui.add_liststore_faces_row(str2q(facename), str2q(facekey)) * qtui.add_combobox_image_item(QIcon(), str2q(_('plain')), str2q('')) * for filename in stockicons: # <<<<<<<<<<<<<< * qtui.add_combobox_image_item(get_icon(filename), str2q(''), str2q(filename)) * qtui.add_combobox_image_item(QIcon(), str2q(_('select ')), str2q('/')) */ if (likely(PyList_CheckExact(__pyx_v_stockicons)) || PyTuple_CheckExact(__pyx_v_stockicons)) { __pyx_t_1 = __pyx_v_stockicons; __Pyx_INCREF(__pyx_t_1); __pyx_t_3 = 0; __pyx_t_4 = NULL; } else { __pyx_t_3 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_stockicons); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1721, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1721, __pyx_L1_error) } for (;;) { if (likely(!__pyx_t_4)) { if (likely(PyList_CheckExact(__pyx_t_1))) { if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_1)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_2); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 1721, __pyx_L1_error) #else __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1721, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); #endif } else { if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_1)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_2); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 1721, __pyx_L1_error) #else __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1721, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); #endif } } else { __pyx_t_2 = __pyx_t_4(__pyx_t_1); if (unlikely(!__pyx_t_2)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 1721, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_2); } __Pyx_XDECREF_SET(__pyx_v_filename, __pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwogl.pyx":1722 * qtui.add_combobox_image_item(QIcon(), str2q(_('plain')), str2q('')) * for filename in stockicons: * qtui.add_combobox_image_item(get_icon(filename), str2q(''), str2q(filename)) # <<<<<<<<<<<<<< * qtui.add_combobox_image_item(QIcon(), str2q(_('select ')), str2q('/')) * uidata.preferences.image_dirname = str2q(get_pictures_folder()) */ __pyx_f_6_qtui__add_combobox_image_item(__pyx_f_10_qt_qtwogl_get_icon(__pyx_v_filename), __pyx_f_10_qt_qtwogl_str2q(__pyx_kp_u__6), __pyx_f_10_qt_qtwogl_str2q(__pyx_v_filename)); /* "_qt_qtwogl.pyx":1721 * qtui.add_liststore_faces_row(str2q(facename), str2q(facekey)) * qtui.add_combobox_image_item(QIcon(), str2q(_('plain')), str2q('')) * for filename in stockicons: # <<<<<<<<<<<<<< * qtui.add_combobox_image_item(get_icon(filename), str2q(''), str2q(filename)) * qtui.add_combobox_image_item(QIcon(), str2q(_('select ')), str2q('/')) */ } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwogl.pyx":1723 * for filename in stockicons: * qtui.add_combobox_image_item(get_icon(filename), str2q(''), str2q(filename)) * qtui.add_combobox_image_item(QIcon(), str2q(_('select ')), str2q('/')) # <<<<<<<<<<<<<< * uidata.preferences.image_dirname = str2q(get_pictures_folder()) * qtui.finalize_liststore_faces(uidata.preferences) */ __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s__4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1723, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__12, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1723, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_f_6_qtui__add_combobox_image_item(QIcon(), __pyx_f_10_qt_qtwogl_str2q(__pyx_t_2), __pyx_f_10_qt_qtwogl_str2q(__pyx_kp_u__13)); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwogl.pyx":1724 * qtui.add_combobox_image_item(get_icon(filename), str2q(''), str2q(filename)) * qtui.add_combobox_image_item(QIcon(), str2q(_('select ')), str2q('/')) * uidata.preferences.image_dirname = str2q(get_pictures_folder()) # <<<<<<<<<<<<<< * qtui.finalize_liststore_faces(uidata.preferences) * */ __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_get_pictures_folder); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1724, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_6 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); } } if (__pyx_t_6) { __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1724, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else { __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1724, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_10_qt_qtwogl_uidata.preferences->image_dirname = __pyx_f_10_qt_qtwogl_str2q(__pyx_t_2); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwogl.pyx":1725 * qtui.add_combobox_image_item(QIcon(), str2q(_('select ')), str2q('/')) * uidata.preferences.image_dirname = str2q(get_pictures_folder()) * qtui.finalize_liststore_faces(uidata.preferences) # <<<<<<<<<<<<<< * * qtui.set_button_background_color(str2q(settings['theme.bgcolor'])) */ __pyx_f_6_qtui__finalize_liststore_faces(__pyx_v_10_qt_qtwogl_uidata.preferences); /* "_qt_qtwogl.pyx":1727 * qtui.finalize_liststore_faces(uidata.preferences) * * qtui.set_button_background_color(str2q(settings['theme.bgcolor'])) # <<<<<<<<<<<<<< * * qtui.preferences_block_signals(False) */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1727, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = PyObject_GetItem(__pyx_t_2, __pyx_kp_u_theme_bgcolor); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1727, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_f_6_qtui__set_button_background_color(__pyx_f_10_qt_qtwogl_str2q(__pyx_t_1)); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwogl.pyx":1729 * qtui.set_button_background_color(str2q(settings['theme.bgcolor'])) * * qtui.preferences_block_signals(False) # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtq' * #~ ctx_set_stdmodel(b'shadermodel', ([shader_names.get(nick, nick), nick] for nick in settings['draw.shader_range'])) */ __pyx_f_6_qtui__preferences_block_signals(0); /* "_qt_qtwogl.pyx":1688 * ##pxm>IF_END * * def preferences_dialog(shader_names, sample_buffers, facenames, stockicons): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * uidata.preferences = new PreferencesDialog(uidata.mainwindow) #px/ */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_8); __Pyx_AddTraceback("_qt_qtwogl.preferences_dialog", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_nick); __Pyx_XDECREF(__pyx_v_text); __Pyx_XDECREF(__pyx_v_selection_nick); __Pyx_XDECREF(__pyx_v_facename); __Pyx_XDECREF(__pyx_v_facekey); __Pyx_XDECREF(__pyx_v_filename); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwogl.pyx":1743 * #~ ##pxm>IF_END * * def show_preferences(): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * uidata.preferences.show() */ /* Python wrapper */ static PyObject *__pyx_pw_10_qt_qtwogl_31show_preferences(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/ static PyMethodDef __pyx_mdef_10_qt_qtwogl_31show_preferences = {"show_preferences", (PyCFunction)__pyx_pw_10_qt_qtwogl_31show_preferences, METH_NOARGS, 0}; static PyObject *__pyx_pw_10_qt_qtwogl_31show_preferences(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("show_preferences (wrapper)", 0); __pyx_r = __pyx_pf_10_qt_qtwogl_30show_preferences(__pyx_self); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_10_qt_qtwogl_30show_preferences(CYTHON_UNUSED PyObject *__pyx_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("show_preferences", 0); /* "_qt_qtwogl.pyx":1745 * def show_preferences(): * ##pxm>IF 'qtw' == 'qtw' * uidata.preferences.show() # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtq' * #~ ctx_set(b'preferences_visible', True) */ __pyx_v_10_qt_qtwogl_uidata.preferences->show(); /* "_qt_qtwogl.pyx":1743 * #~ ##pxm>IF_END * * def show_preferences(): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * uidata.preferences.show() */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwogl.pyx":1758 * ##pxh> : QDialog(parent) {} * ##pxm-FUNC PHD * void init(const QString &helptext): # <<<<<<<<<<<<<< * qtui.setupUi_help(this, helptext) * ##pxm>CPPCLASS_END */ void HelpDialog::init(QString const &__pyx_v_helptext) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("init", 0); /* "_qt_qtwogl.pyx":1759 * ##pxm-FUNC PHD * void init(const QString &helptext): * qtui.setupUi_help(this, helptext) # <<<<<<<<<<<<<< * ##pxm>CPPCLASS_END * */ __pyx_f_6_qtui__setupUi_help(this, __pyx_v_helptext); /* "_qt_qtwogl.pyx":1758 * ##pxh> : QDialog(parent) {} * ##pxm-FUNC PHD * void init(const QString &helptext): # <<<<<<<<<<<<<< * qtui.setupUi_help(this, helptext) * ##pxm>CPPCLASS_END */ /* function exit code */ __Pyx_RefNannyFinishContext(); } /* "_qt_qtwogl.pyx":1763 * * ##pxm-FUNC P with gil * cdef void help_dialog() with gil: # <<<<<<<<<<<<<< * uidata.help = new HelpDialog(uidata.mainwindow) #px/ * #uidata.help = HelpDialog(uidata.mainwindow) */ static void __pyx_f_10_qt_qtwogl_help_dialog(void) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("help_dialog", 0); /* "_qt_qtwogl.pyx":1764 * ##pxm-FUNC P with gil * cdef void help_dialog() with gil: * uidata.help = new HelpDialog(uidata.mainwindow) #px/ # <<<<<<<<<<<<<< * #uidata.help = HelpDialog(uidata.mainwindow) * uidata.help.init(str2q(pydata.app.on_dialog_text('help_text'))) */ __pyx_v_10_qt_qtwogl_uidata.help = new HelpDialog(__pyx_v_10_qt_qtwogl_uidata.mainwindow); /* "_qt_qtwogl.pyx":1766 * uidata.help = new HelpDialog(uidata.mainwindow) #px/ * #uidata.help = HelpDialog(uidata.mainwindow) * uidata.help.init(str2q(pydata.app.on_dialog_text('help_text'))) # <<<<<<<<<<<<<< * * ##pxm-FUNC P nogil */ __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1766, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_app); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1766, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_on_dialog_text); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1766, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__14, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1766, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_10_qt_qtwogl_uidata.help->init(__pyx_f_10_qt_qtwogl_str2q(__pyx_t_2)); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwogl.pyx":1763 * * ##pxm-FUNC P with gil * cdef void help_dialog() with gil: # <<<<<<<<<<<<<< * uidata.help = new HelpDialog(uidata.mainwindow) #px/ * #uidata.help = HelpDialog(uidata.mainwindow) */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_WriteUnraisable("_qt_qtwogl.help_dialog", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwogl.pyx":1769 * * ##pxm-FUNC P nogil * cdef void help_dialog_show() nogil: # <<<<<<<<<<<<<< * uidata.help.show() * */ static void __pyx_f_10_qt_qtwogl_help_dialog_show(void) { /* "_qt_qtwogl.pyx":1770 * ##pxm-FUNC P nogil * cdef void help_dialog_show() nogil: * uidata.help.show() # <<<<<<<<<<<<<< * * */ __pyx_v_10_qt_qtwogl_uidata.help->show(); /* "_qt_qtwogl.pyx":1769 * * ##pxm-FUNC P nogil * cdef void help_dialog_show() nogil: # <<<<<<<<<<<<<< * uidata.help.show() * */ /* function exit code */ } /* "_qt_qtwogl.pyx":1779 * ##pxh> : QDialog(parent) {} * ##pxm-FUNC PHD * void init(): # <<<<<<<<<<<<<< * qtui.setupUi_about(this) * */ void AboutDialog::init(void) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("init", 0); /* "_qt_qtwogl.pyx":1780 * ##pxm-FUNC PHD * void init(): * qtui.setupUi_about(this) # <<<<<<<<<<<<<< * * ##pxm-FUNC PH nogil */ __pyx_f_6_qtui__setupUi_about(this); /* "_qt_qtwogl.pyx":1779 * ##pxh> : QDialog(parent) {} * ##pxm-FUNC PHD * void init(): # <<<<<<<<<<<<<< * qtui.setupUi_about(this) * */ /* function exit code */ __Pyx_RefNannyFinishContext(); } /* "_qt_qtwogl.pyx":1783 * * ##pxm-FUNC PH nogil * void showEvent(QShowEvent *unused_event) nogil: # <<<<<<<<<<<<<< * qtui.update_animation(True) * */ void AboutDialog::showEvent(CYTHON_UNUSED QShowEvent *__pyx_v_unused_event) { /* "_qt_qtwogl.pyx":1784 * ##pxm-FUNC PH nogil * void showEvent(QShowEvent *unused_event) nogil: * qtui.update_animation(True) # <<<<<<<<<<<<<< * * ##pxm-FUNC PH nogil */ __pyx_f_6_qtui__update_animation(1); /* "_qt_qtwogl.pyx":1783 * * ##pxm-FUNC PH nogil * void showEvent(QShowEvent *unused_event) nogil: # <<<<<<<<<<<<<< * qtui.update_animation(True) * */ /* function exit code */ } /* "_qt_qtwogl.pyx":1787 * * ##pxm-FUNC PH nogil * void resizeEvent(QResizeEvent *unused_event) nogil: # <<<<<<<<<<<<<< * qtui.update_animation(False) * */ void AboutDialog::resizeEvent(CYTHON_UNUSED QResizeEvent *__pyx_v_unused_event) { /* "_qt_qtwogl.pyx":1788 * ##pxm-FUNC PH nogil * void resizeEvent(QResizeEvent *unused_event) nogil: * qtui.update_animation(False) # <<<<<<<<<<<<<< * * ##pxm-FUNC PH nogil */ __pyx_f_6_qtui__update_animation(0); /* "_qt_qtwogl.pyx":1787 * * ##pxm-FUNC PH nogil * void resizeEvent(QResizeEvent *unused_event) nogil: # <<<<<<<<<<<<<< * qtui.update_animation(False) * */ /* function exit code */ } /* "_qt_qtwogl.pyx":1791 * * ##pxm-FUNC PH nogil * cbool eventFilter(QObject *unused_watched, QEvent *event) nogil: # <<<<<<<<<<<<<< * qtui.event_filter_stop_animation(event) * return False */ bool AboutDialog::eventFilter(CYTHON_UNUSED QObject *__pyx_v_unused_watched, QEvent *__pyx_v_event) { bool __pyx_r; /* "_qt_qtwogl.pyx":1792 * ##pxm-FUNC PH nogil * cbool eventFilter(QObject *unused_watched, QEvent *event) nogil: * qtui.event_filter_stop_animation(event) # <<<<<<<<<<<<<< * return False * ##pxh> */ __pyx_f_6_qtui__event_filter_stop_animation(__pyx_v_event); /* "_qt_qtwogl.pyx":1793 * cbool eventFilter(QObject *unused_watched, QEvent *event) nogil: * qtui.event_filter_stop_animation(event) * return False # <<<<<<<<<<<<<< * ##pxh> * ##pxm-FUNC HD nogil */ __pyx_r = 0; goto __pyx_L0; /* "_qt_qtwogl.pyx":1791 * * ##pxm-FUNC PH nogil * cbool eventFilter(QObject *unused_watched, QEvent *event) nogil: # <<<<<<<<<<<<<< * qtui.event_filter_stop_animation(event) * return False */ /* function exit code */ __pyx_L0:; return __pyx_r; } /* "_qt_qtwogl.pyx":1800 * * ##pxm-FUNC PH nogil * void on_tab_widget_currentChanged(int index) nogil: # <<<<<<<<<<<<<< * qtui.tab_widget_currentChanged(index) * */ void AboutDialog::on_tab_widget_currentChanged(int __pyx_v_index) { /* "_qt_qtwogl.pyx":1801 * ##pxm-FUNC PH nogil * void on_tab_widget_currentChanged(int index) nogil: * qtui.tab_widget_currentChanged(index) # <<<<<<<<<<<<<< * * ##pxm-FUNC PH with gil */ __pyx_f_6_qtui__tab_widget_currentChanged(__pyx_v_index); /* "_qt_qtwogl.pyx":1800 * * ##pxm-FUNC PH nogil * void on_tab_widget_currentChanged(int index) nogil: # <<<<<<<<<<<<<< * qtui.tab_widget_currentChanged(index) * */ /* function exit code */ } /* "_qt_qtwogl.pyx":1804 * * ##pxm-FUNC PH with gil * void on_text_license_short_anchorClicked(const QUrl &url) with gil: # <<<<<<<<<<<<<< * qtui.show_full_license(q2str(url.toString()) == 'text:FULL_LICENSE_TEXT', url) * ##pxm>CPPCLASS_END */ void AboutDialog::on_text_license_short_anchorClicked(QUrl const &__pyx_v_url) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; bool __pyx_t_3; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("on_text_license_short_anchorClicked", 0); /* "_qt_qtwogl.pyx":1805 * ##pxm-FUNC PH with gil * void on_text_license_short_anchorClicked(const QUrl &url) with gil: * qtui.show_full_license(q2str(url.toString()) == 'text:FULL_LICENSE_TEXT', url) # <<<<<<<<<<<<<< * ##pxm>CPPCLASS_END * */ __pyx_t_1 = __pyx_f_10_qt_qtwogl_q2str(__pyx_v_url.toString()); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1805, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyObject_RichCompare(__pyx_t_1, __pyx_kp_u_text_FULL_LICENSE_TEXT, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1805, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1805, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_f_6_qtui__show_full_license(__pyx_t_3, __pyx_v_url); /* "_qt_qtwogl.pyx":1804 * * ##pxm-FUNC PH with gil * void on_text_license_short_anchorClicked(const QUrl &url) with gil: # <<<<<<<<<<<<<< * qtui.show_full_license(q2str(url.toString()) == 'text:FULL_LICENSE_TEXT', url) * ##pxm>CPPCLASS_END */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_WriteUnraisable("AboutDialog.on_text_license_short_anchorClicked", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwogl.pyx":1809 * * ##pxm-FUNC P with gil * cdef void about_dialog() with gil: # <<<<<<<<<<<<<< * cdef AboutDialog *about = new AboutDialog(uidata.mainwindow) #px/ * #about = AboutDialog(uidata.mainwindow) */ static void __pyx_f_10_qt_qtwogl_about_dialog(void) { AboutDialog *__pyx_v_about; PyObject *__pyx_v_license_full = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; PyObject *__pyx_t_7 = NULL; PyObject *__pyx_t_8 = NULL; int __pyx_t_9; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("about_dialog", 0); /* "_qt_qtwogl.pyx":1810 * ##pxm-FUNC P with gil * cdef void about_dialog() with gil: * cdef AboutDialog *about = new AboutDialog(uidata.mainwindow) #px/ # <<<<<<<<<<<<<< * #about = AboutDialog(uidata.mainwindow) * about.init() */ __pyx_v_about = new AboutDialog(__pyx_v_10_qt_qtwogl_uidata.mainwindow); /* "_qt_qtwogl.pyx":1812 * cdef AboutDialog *about = new AboutDialog(uidata.mainwindow) #px/ * #about = AboutDialog(uidata.mainwindow) * about.init() # <<<<<<<<<<<<<< * * qtui.fill_header(str2q(config_.APPICON_FILE), str2q(_(config_.APPNAME)), */ __pyx_v_about->init(); /* "_qt_qtwogl.pyx":1814 * about.init() * * qtui.fill_header(str2q(config_.APPICON_FILE), str2q(_(config_.APPNAME)), # <<<<<<<<<<<<<< * str2q(config_.VERSION), str2q(_(config_.SHORT_DESCRIPTION))) * qtui.fill_about_tab(str2q(config_.COPYRIGHT), */ __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_config); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1814, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_APPICON_FILE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1814, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s__4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1814, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_config); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1814, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_APPNAME); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1814, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } if (!__pyx_t_4) { __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1814, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_5}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1814, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_5}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1814, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif { __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1814, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL; __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_5); __pyx_t_5 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1814, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "_qt_qtwogl.pyx":1815 * * qtui.fill_header(str2q(config_.APPICON_FILE), str2q(_(config_.APPNAME)), * str2q(config_.VERSION), str2q(_(config_.SHORT_DESCRIPTION))) # <<<<<<<<<<<<<< * qtui.fill_about_tab(str2q(config_.COPYRIGHT), * str2q(pydata.app.on_dialog_text('about_website')), */ __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_config); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1815, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_VERSION); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1815, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s__4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1815, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_config); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1815, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_SHORT_DESCRIPTION); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1815, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); } } if (!__pyx_t_4) { __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1815, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_3); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_7}; __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1815, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[2] = {__pyx_t_4, __pyx_t_7}; __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1815, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } else #endif { __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1815, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_4); __pyx_t_4 = NULL; __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_7); __pyx_t_7 = 0; __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1815, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; /* "_qt_qtwogl.pyx":1814 * about.init() * * qtui.fill_header(str2q(config_.APPICON_FILE), str2q(_(config_.APPNAME)), # <<<<<<<<<<<<<< * str2q(config_.VERSION), str2q(_(config_.SHORT_DESCRIPTION))) * qtui.fill_about_tab(str2q(config_.COPYRIGHT), */ __pyx_f_6_qtui__fill_header(__pyx_f_10_qt_qtwogl_str2q(__pyx_t_2), __pyx_f_10_qt_qtwogl_str2q(__pyx_t_1), __pyx_f_10_qt_qtwogl_str2q(__pyx_t_6), __pyx_f_10_qt_qtwogl_str2q(__pyx_t_3)); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "_qt_qtwogl.pyx":1816 * qtui.fill_header(str2q(config_.APPICON_FILE), str2q(_(config_.APPNAME)), * str2q(config_.VERSION), str2q(_(config_.SHORT_DESCRIPTION))) * qtui.fill_about_tab(str2q(config_.COPYRIGHT), # <<<<<<<<<<<<<< * str2q(pydata.app.on_dialog_text('about_website')), * str2q(pydata.app.on_dialog_text('about_translators'))) */ __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_config); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1816, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_COPYRIGHT); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1816, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "_qt_qtwogl.pyx":1817 * str2q(config_.VERSION), str2q(_(config_.SHORT_DESCRIPTION))) * qtui.fill_about_tab(str2q(config_.COPYRIGHT), * str2q(pydata.app.on_dialog_text('about_website')), # <<<<<<<<<<<<<< * str2q(pydata.app.on_dialog_text('about_translators'))) * qtui.fill_contribute_tab(str2q(pydata.app.on_dialog_text('about_contribute'))) */ __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1817, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_app); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1817, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_on_dialog_text); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1817, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__15, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1817, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "_qt_qtwogl.pyx":1818 * qtui.fill_about_tab(str2q(config_.COPYRIGHT), * str2q(pydata.app.on_dialog_text('about_website')), * str2q(pydata.app.on_dialog_text('about_translators'))) # <<<<<<<<<<<<<< * qtui.fill_contribute_tab(str2q(pydata.app.on_dialog_text('about_contribute'))) * license_full = pydata.app.on_dialog_text('about_license_full') */ __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1818, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_app); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1818, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_on_dialog_text); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1818, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__16, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1818, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "_qt_qtwogl.pyx":1816 * qtui.fill_header(str2q(config_.APPICON_FILE), str2q(_(config_.APPNAME)), * str2q(config_.VERSION), str2q(_(config_.SHORT_DESCRIPTION))) * qtui.fill_about_tab(str2q(config_.COPYRIGHT), # <<<<<<<<<<<<<< * str2q(pydata.app.on_dialog_text('about_website')), * str2q(pydata.app.on_dialog_text('about_translators'))) */ __pyx_f_6_qtui__fill_about_tab(__pyx_f_10_qt_qtwogl_str2q(__pyx_t_6), __pyx_f_10_qt_qtwogl_str2q(__pyx_t_1), __pyx_f_10_qt_qtwogl_str2q(__pyx_t_2)); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwogl.pyx":1819 * str2q(pydata.app.on_dialog_text('about_website')), * str2q(pydata.app.on_dialog_text('about_translators'))) * qtui.fill_contribute_tab(str2q(pydata.app.on_dialog_text('about_contribute'))) # <<<<<<<<<<<<<< * license_full = pydata.app.on_dialog_text('about_license_full') * if license_full: */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1819, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_app); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1819, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_on_dialog_text); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1819, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__17, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1819, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_f_6_qtui__fill_contribute_tab(__pyx_f_10_qt_qtwogl_str2q(__pyx_t_1)); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwogl.pyx":1820 * str2q(pydata.app.on_dialog_text('about_translators'))) * qtui.fill_contribute_tab(str2q(pydata.app.on_dialog_text('about_contribute'))) * license_full = pydata.app.on_dialog_text('about_license_full') # <<<<<<<<<<<<<< * if license_full: * qtui.fill_license_tab(str2q(pydata.app.on_dialog_text('about_license_short')), */ __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1820, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_app); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1820, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_on_dialog_text); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1820, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__18, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1820, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_license_full = __pyx_t_2; __pyx_t_2 = 0; /* "_qt_qtwogl.pyx":1821 * qtui.fill_contribute_tab(str2q(pydata.app.on_dialog_text('about_contribute'))) * license_full = pydata.app.on_dialog_text('about_license_full') * if license_full: # <<<<<<<<<<<<<< * qtui.fill_license_tab(str2q(pydata.app.on_dialog_text('about_license_short')), * False, str2q(license_full)) */ __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_license_full); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 1821, __pyx_L1_error) if (__pyx_t_9) { /* "_qt_qtwogl.pyx":1822 * license_full = pydata.app.on_dialog_text('about_license_full') * if license_full: * qtui.fill_license_tab(str2q(pydata.app.on_dialog_text('about_license_short')), # <<<<<<<<<<<<<< * False, str2q(license_full)) * else: */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1822, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_app); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1822, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_on_dialog_text); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1822, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__19, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1822, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwogl.pyx":1823 * if license_full: * qtui.fill_license_tab(str2q(pydata.app.on_dialog_text('about_license_short')), * False, str2q(license_full)) # <<<<<<<<<<<<<< * else: * qtui.fill_license_tab(str2q(pydata.app.on_dialog_text('about_license_short')), */ __pyx_f_6_qtui__fill_license_tab(__pyx_f_10_qt_qtwogl_str2q(__pyx_t_1), 0, __pyx_f_10_qt_qtwogl_str2q(__pyx_v_license_full)); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwogl.pyx":1821 * qtui.fill_contribute_tab(str2q(pydata.app.on_dialog_text('about_contribute'))) * license_full = pydata.app.on_dialog_text('about_license_full') * if license_full: # <<<<<<<<<<<<<< * qtui.fill_license_tab(str2q(pydata.app.on_dialog_text('about_license_short')), * False, str2q(license_full)) */ goto __pyx_L3; } /* "_qt_qtwogl.pyx":1825 * False, str2q(license_full)) * else: * qtui.fill_license_tab(str2q(pydata.app.on_dialog_text('about_license_short')), # <<<<<<<<<<<<<< * True, str2q(pydata.app.on_dialog_text('about_license_notfound'))) * about.exec() */ /*else*/ { __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1825, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_app); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1825, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_on_dialog_text); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1825, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__20, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1825, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwogl.pyx":1826 * else: * qtui.fill_license_tab(str2q(pydata.app.on_dialog_text('about_license_short')), * True, str2q(pydata.app.on_dialog_text('about_license_notfound'))) # <<<<<<<<<<<<<< * about.exec() * about.deleteLater() */ __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1826, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_app); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1826, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_on_dialog_text); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1826, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__21, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1826, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwogl.pyx":1825 * False, str2q(license_full)) * else: * qtui.fill_license_tab(str2q(pydata.app.on_dialog_text('about_license_short')), # <<<<<<<<<<<<<< * True, str2q(pydata.app.on_dialog_text('about_license_notfound'))) * about.exec() */ __pyx_f_6_qtui__fill_license_tab(__pyx_f_10_qt_qtwogl_str2q(__pyx_t_2), 1, __pyx_f_10_qt_qtwogl_str2q(__pyx_t_6)); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } __pyx_L3:; /* "_qt_qtwogl.pyx":1827 * qtui.fill_license_tab(str2q(pydata.app.on_dialog_text('about_license_short')), * True, str2q(pydata.app.on_dialog_text('about_license_notfound'))) * about.exec() # <<<<<<<<<<<<<< * about.deleteLater() * ##pxm>IF_END */ __pyx_v_about->exec(); /* "_qt_qtwogl.pyx":1828 * True, str2q(pydata.app.on_dialog_text('about_license_notfound'))) * about.exec() * about.deleteLater() # <<<<<<<<<<<<<< * ##pxm>IF_END * */ __pyx_v_about->deleteLater(); /* "_qt_qtwogl.pyx":1809 * * ##pxm-FUNC P with gil * cdef void about_dialog() with gil: # <<<<<<<<<<<<<< * cdef AboutDialog *about = new AboutDialog(uidata.mainwindow) #px/ * #about = AboutDialog(uidata.mainwindow) */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_8); __Pyx_WriteUnraisable("_qt_qtwogl.about_dialog", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_XDECREF(__pyx_v_license_full); __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwogl.pyx":1832 * * * def initial_resize(): # <<<<<<<<<<<<<< * uidata.width, uidata.height = settings['window.size'] * uidata.mainwindow.resize(uidata.width, uidata.height) */ /* Python wrapper */ static PyObject *__pyx_pw_10_qt_qtwogl_33initial_resize(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/ static PyMethodDef __pyx_mdef_10_qt_qtwogl_33initial_resize = {"initial_resize", (PyCFunction)__pyx_pw_10_qt_qtwogl_33initial_resize, METH_NOARGS, 0}; static PyObject *__pyx_pw_10_qt_qtwogl_33initial_resize(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("initial_resize (wrapper)", 0); __pyx_r = __pyx_pf_10_qt_qtwogl_32initial_resize(__pyx_self); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_10_qt_qtwogl_32initial_resize(CYTHON_UNUSED PyObject *__pyx_self) { int __pyx_v_s1; int __pyx_v_s2; int __pyx_v_divider_pos; int __pyx_v_divider_pos2; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *(*__pyx_t_5)(PyObject *); int __pyx_t_6; int __pyx_t_7; __Pyx_RefNannySetupContext("initial_resize", 0); /* "_qt_qtwogl.pyx":1833 * * def initial_resize(): * uidata.width, uidata.height = settings['window.size'] # <<<<<<<<<<<<<< * uidata.mainwindow.resize(uidata.width, uidata.height) * ##pxm>IF 'qtw' == 'qtw' */ __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1833, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyObject_GetItem(__pyx_t_1, __pyx_kp_u_window_size); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1833, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_2))) || (PyList_CheckExact(__pyx_t_2))) { PyObject* sequence = __pyx_t_2; #if !CYTHON_COMPILING_IN_PYPY Py_ssize_t size = Py_SIZE(sequence); #else Py_ssize_t size = PySequence_Size(sequence); #endif if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 1833, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_1 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_1 = PyList_GET_ITEM(sequence, 0); __pyx_t_3 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(__pyx_t_3); #else __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1833, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1833, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); #endif __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else { Py_ssize_t index = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1833, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_5 = Py_TYPE(__pyx_t_4)->tp_iternext; index = 0; __pyx_t_1 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_1)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_1); index = 1; __pyx_t_3 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_3)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_3); if (__Pyx_IternextUnpackEndCheck(__pyx_t_5(__pyx_t_4), 2) < 0) __PYX_ERR(0, 1833, __pyx_L1_error) __pyx_t_5 = NULL; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; goto __pyx_L4_unpacking_done; __pyx_L3_unpacking_failed:; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_5 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 1833, __pyx_L1_error) __pyx_L4_unpacking_done:; } __pyx_t_6 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1833, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1833, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_10_qt_qtwogl_uidata.width = __pyx_t_6; __pyx_v_10_qt_qtwogl_uidata.height = __pyx_t_7; /* "_qt_qtwogl.pyx":1834 * def initial_resize(): * uidata.width, uidata.height = settings['window.size'] * uidata.mainwindow.resize(uidata.width, uidata.height) # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * cdef int s1=0, s2=0, divider_pos, divider_pos2 #px+ */ __pyx_v_10_qt_qtwogl_uidata.mainwindow->resize(__pyx_v_10_qt_qtwogl_uidata.width, __pyx_v_10_qt_qtwogl_uidata.height); /* "_qt_qtwogl.pyx":1836 * uidata.mainwindow.resize(uidata.width, uidata.height) * ##pxm>IF 'qtw' == 'qtw' * cdef int s1=0, s2=0, divider_pos, divider_pos2 #px+ # <<<<<<<<<<<<<< * divider_pos = settings['window.divider'] * uidata.mainwindow.show() */ __pyx_v_s1 = 0; __pyx_v_s2 = 0; /* "_qt_qtwogl.pyx":1837 * ##pxm>IF 'qtw' == 'qtw' * cdef int s1=0, s2=0, divider_pos, divider_pos2 #px+ * divider_pos = settings['window.divider'] # <<<<<<<<<<<<<< * uidata.mainwindow.show() * qtui.get_splitter_sizes(s1, s2) #px/ */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1837, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyObject_GetItem(__pyx_t_2, __pyx_kp_u_window_divider); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1837, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1837, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_divider_pos = __pyx_t_7; /* "_qt_qtwogl.pyx":1838 * cdef int s1=0, s2=0, divider_pos, divider_pos2 #px+ * divider_pos = settings['window.divider'] * uidata.mainwindow.show() # <<<<<<<<<<<<<< * qtui.get_splitter_sizes(s1, s2) #px/ * #s1, s2 = qtui.get_splitter_sizes() */ __pyx_v_10_qt_qtwogl_uidata.mainwindow->show(); /* "_qt_qtwogl.pyx":1839 * divider_pos = settings['window.divider'] * uidata.mainwindow.show() * qtui.get_splitter_sizes(s1, s2) #px/ # <<<<<<<<<<<<<< * #s1, s2 = qtui.get_splitter_sizes() * divider_pos2 = s1 + s2 - divider_pos */ __pyx_f_6_qtui__get_splitter_sizes(__pyx_v_s1, __pyx_v_s2); /* "_qt_qtwogl.pyx":1841 * qtui.get_splitter_sizes(s1, s2) #px/ * #s1, s2 = qtui.get_splitter_sizes() * divider_pos2 = s1 + s2 - divider_pos # <<<<<<<<<<<<<< * qtui.set_splitter_sizes(divider_pos, divider_pos2) * ##pxm>IF 'qtw' == 'qtq' */ __pyx_v_divider_pos2 = ((__pyx_v_s1 + __pyx_v_s2) - __pyx_v_divider_pos); /* "_qt_qtwogl.pyx":1842 * #s1, s2 = qtui.get_splitter_sizes() * divider_pos2 = s1 + s2 - divider_pos * qtui.set_splitter_sizes(divider_pos, divider_pos2) # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtq' * #~ uidata.mainwindow.show() */ __pyx_f_6_qtui__set_splitter_sizes(__pyx_v_divider_pos, __pyx_v_divider_pos2); /* "_qt_qtwogl.pyx":1846 * #~ uidata.mainwindow.show() * #~ ##pxm>IF_END * singleShot(20, _on_init_finalize) #px/ # <<<<<<<<<<<<<< * #QTimer.singleShot(20, _on_init_finalize) * */ QTimer::singleShot(20, __pyx_f_10_qt_qtwogl__on_init_finalize); /* "_qt_qtwogl.pyx":1832 * * * def initial_resize(): # <<<<<<<<<<<<<< * uidata.width, uidata.height = settings['window.size'] * uidata.mainwindow.resize(uidata.width, uidata.height) */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("_qt_qtwogl.initial_resize", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwogl.pyx":1849 * #QTimer.singleShot(20, _on_init_finalize) * * def set_title(title): # <<<<<<<<<<<<<< * uidata.mainwindow.setTitle(str2q(title)) * */ /* Python wrapper */ static PyObject *__pyx_pw_10_qt_qtwogl_35set_title(PyObject *__pyx_self, PyObject *__pyx_v_title); /*proto*/ static PyMethodDef __pyx_mdef_10_qt_qtwogl_35set_title = {"set_title", (PyCFunction)__pyx_pw_10_qt_qtwogl_35set_title, METH_O, 0}; static PyObject *__pyx_pw_10_qt_qtwogl_35set_title(PyObject *__pyx_self, PyObject *__pyx_v_title) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("set_title (wrapper)", 0); __pyx_r = __pyx_pf_10_qt_qtwogl_34set_title(__pyx_self, ((PyObject *)__pyx_v_title)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_10_qt_qtwogl_34set_title(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_title) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("set_title", 0); /* "_qt_qtwogl.pyx":1850 * * def set_title(title): * uidata.mainwindow.setTitle(str2q(title)) # <<<<<<<<<<<<<< * * def load_ui(path): */ __pyx_v_10_qt_qtwogl_uidata.mainwindow->setWindowTitle(__pyx_f_10_qt_qtwogl_str2q(__pyx_v_title)); /* "_qt_qtwogl.pyx":1849 * #QTimer.singleShot(20, _on_init_finalize) * * def set_title(title): # <<<<<<<<<<<<<< * uidata.mainwindow.setTitle(str2q(title)) * */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwogl.pyx":1852 * uidata.mainwindow.setTitle(str2q(title)) * * def load_ui(path): # <<<<<<<<<<<<<< * pass * ##pxm>IF 'qtw' == 'qtq' */ /* Python wrapper */ static PyObject *__pyx_pw_10_qt_qtwogl_37load_ui(PyObject *__pyx_self, PyObject *__pyx_v_path); /*proto*/ static PyMethodDef __pyx_mdef_10_qt_qtwogl_37load_ui = {"load_ui", (PyCFunction)__pyx_pw_10_qt_qtwogl_37load_ui, METH_O, 0}; static PyObject *__pyx_pw_10_qt_qtwogl_37load_ui(PyObject *__pyx_self, PyObject *__pyx_v_path) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("load_ui (wrapper)", 0); __pyx_r = __pyx_pf_10_qt_qtwogl_36load_ui(__pyx_self, ((PyObject *)__pyx_v_path)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_10_qt_qtwogl_36load_ui(CYTHON_UNUSED PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_path) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("load_ui", 0); /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwogl.pyx":1865 * #~ ##pxm>IF_END * * def close_mainwindow(): # <<<<<<<<<<<<<< * uidata.mainwindow.close() * */ /* Python wrapper */ static PyObject *__pyx_pw_10_qt_qtwogl_39close_mainwindow(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/ static PyMethodDef __pyx_mdef_10_qt_qtwogl_39close_mainwindow = {"close_mainwindow", (PyCFunction)__pyx_pw_10_qt_qtwogl_39close_mainwindow, METH_NOARGS, 0}; static PyObject *__pyx_pw_10_qt_qtwogl_39close_mainwindow(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("close_mainwindow (wrapper)", 0); __pyx_r = __pyx_pf_10_qt_qtwogl_38close_mainwindow(__pyx_self); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_10_qt_qtwogl_38close_mainwindow(CYTHON_UNUSED PyObject *__pyx_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("close_mainwindow", 0); /* "_qt_qtwogl.pyx":1866 * * def close_mainwindow(): * uidata.mainwindow.close() # <<<<<<<<<<<<<< * * def get_samples(): */ __pyx_v_10_qt_qtwogl_uidata.mainwindow->close(); /* "_qt_qtwogl.pyx":1865 * #~ ##pxm>IF_END * * def close_mainwindow(): # <<<<<<<<<<<<<< * uidata.mainwindow.close() * */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwogl.pyx":1868 * uidata.mainwindow.close() * * def get_samples(): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * #TODO: uidata.drawingarea.format().samples() returns only 0 here */ /* Python wrapper */ static PyObject *__pyx_pw_10_qt_qtwogl_41get_samples(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/ static PyMethodDef __pyx_mdef_10_qt_qtwogl_41get_samples = {"get_samples", (PyCFunction)__pyx_pw_10_qt_qtwogl_41get_samples, METH_NOARGS, 0}; static PyObject *__pyx_pw_10_qt_qtwogl_41get_samples(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("get_samples (wrapper)", 0); __pyx_r = __pyx_pf_10_qt_qtwogl_40get_samples(__pyx_self); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_10_qt_qtwogl_40get_samples(CYTHON_UNUSED PyObject *__pyx_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("get_samples", 0); /* "_qt_qtwogl.pyx":1871 * ##pxm>IF 'qtw' == 'qtw' * #TODO: uidata.drawingarea.format().samples() returns only 0 here * return defaultFormat().samples() # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtq' * #~ return uidata.mainwindow.format().samples() */ __Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_PyInt_From_int(QSurfaceFormat::defaultFormat().samples()); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1871, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; /* "_qt_qtwogl.pyx":1868 * uidata.mainwindow.close() * * def get_samples(): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * #TODO: uidata.drawingarea.format().samples() returns only 0 here */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("_qt_qtwogl.get_samples", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwogl.pyx":1876 * #~ ##pxm>IF_END * * def update_drawingarea(): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * uidata.drawingarea.update() */ /* Python wrapper */ static PyObject *__pyx_pw_10_qt_qtwogl_43update_drawingarea(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/ static PyMethodDef __pyx_mdef_10_qt_qtwogl_43update_drawingarea = {"update_drawingarea", (PyCFunction)__pyx_pw_10_qt_qtwogl_43update_drawingarea, METH_NOARGS, 0}; static PyObject *__pyx_pw_10_qt_qtwogl_43update_drawingarea(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("update_drawingarea (wrapper)", 0); __pyx_r = __pyx_pf_10_qt_qtwogl_42update_drawingarea(__pyx_self); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_10_qt_qtwogl_42update_drawingarea(CYTHON_UNUSED PyObject *__pyx_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("update_drawingarea", 0); /* "_qt_qtwogl.pyx":1878 * def update_drawingarea(): * ##pxm>IF 'qtw' == 'qtw' * uidata.drawingarea.update() # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtq' * #~ uidata.mainwindow.update() */ __pyx_v_10_qt_qtwogl_uidata.drawingarea->update(); /* "_qt_qtwogl.pyx":1876 * #~ ##pxm>IF_END * * def update_drawingarea(): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * uidata.drawingarea.update() */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwogl.pyx":1883 * #~ ##pxm>IF_END * * def set_cursor(index): # <<<<<<<<<<<<<< * if index < 0: * index += 18 */ /* Python wrapper */ static PyObject *__pyx_pw_10_qt_qtwogl_45set_cursor(PyObject *__pyx_self, PyObject *__pyx_v_index); /*proto*/ static PyMethodDef __pyx_mdef_10_qt_qtwogl_45set_cursor = {"set_cursor", (PyCFunction)__pyx_pw_10_qt_qtwogl_45set_cursor, METH_O, 0}; static PyObject *__pyx_pw_10_qt_qtwogl_45set_cursor(PyObject *__pyx_self, PyObject *__pyx_v_index) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("set_cursor (wrapper)", 0); __pyx_r = __pyx_pf_10_qt_qtwogl_44set_cursor(__pyx_self, ((PyObject *)__pyx_v_index)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_10_qt_qtwogl_44set_cursor(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_index) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; int __pyx_t_2; Py_ssize_t __pyx_t_3; __Pyx_RefNannySetupContext("set_cursor", 0); __Pyx_INCREF(__pyx_v_index); /* "_qt_qtwogl.pyx":1884 * * def set_cursor(index): * if index < 0: # <<<<<<<<<<<<<< * index += 18 * ##pxm>IF 'qtw' == 'qtw' */ __pyx_t_1 = PyObject_RichCompare(__pyx_v_index, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1884, __pyx_L1_error) __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1884, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_2) { /* "_qt_qtwogl.pyx":1885 * def set_cursor(index): * if index < 0: * index += 18 # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * uidata.drawingarea.setCursor(uidata.cursors[index][0]) #px/ */ __pyx_t_1 = __Pyx_PyInt_AddObjC(__pyx_v_index, __pyx_int_18, 18, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1885, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF_SET(__pyx_v_index, __pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwogl.pyx":1884 * * def set_cursor(index): * if index < 0: # <<<<<<<<<<<<<< * index += 18 * ##pxm>IF 'qtw' == 'qtw' */ } /* "_qt_qtwogl.pyx":1887 * index += 18 * ##pxm>IF 'qtw' == 'qtw' * uidata.drawingarea.setCursor(uidata.cursors[index][0]) #px/ # <<<<<<<<<<<<<< * #uidata.drawingarea.setCursor(uidata.cursors[index]) * ##pxm>IF 'qtw' == 'qtq' */ __pyx_t_3 = __Pyx_PyIndex_AsSsize_t(__pyx_v_index); if (unlikely((__pyx_t_3 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1887, __pyx_L1_error) __pyx_v_10_qt_qtwogl_uidata.drawingarea->setCursor(((__pyx_v_10_qt_qtwogl_uidata.cursors[__pyx_t_3])[0])); /* "_qt_qtwogl.pyx":1883 * #~ ##pxm>IF_END * * def set_cursor(index): # <<<<<<<<<<<<<< * if index < 0: * index += 18 */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("_qt_qtwogl.set_cursor", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_index); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwogl.pyx":1895 * #~ ##pxm>IF_END * * def unset_cursor(): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * uidata.drawingarea.unsetCursor() */ /* Python wrapper */ static PyObject *__pyx_pw_10_qt_qtwogl_47unset_cursor(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/ static PyMethodDef __pyx_mdef_10_qt_qtwogl_47unset_cursor = {"unset_cursor", (PyCFunction)__pyx_pw_10_qt_qtwogl_47unset_cursor, METH_NOARGS, 0}; static PyObject *__pyx_pw_10_qt_qtwogl_47unset_cursor(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("unset_cursor (wrapper)", 0); __pyx_r = __pyx_pf_10_qt_qtwogl_46unset_cursor(__pyx_self); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_10_qt_qtwogl_46unset_cursor(CYTHON_UNUSED PyObject *__pyx_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("unset_cursor", 0); /* "_qt_qtwogl.pyx":1897 * def unset_cursor(): * ##pxm>IF 'qtw' == 'qtw' * uidata.drawingarea.unsetCursor() # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtq' * #~ if uidata.entered: */ __pyx_v_10_qt_qtwogl_uidata.drawingarea->unsetCursor(); /* "_qt_qtwogl.pyx":1895 * #~ ##pxm>IF_END * * def unset_cursor(): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * uidata.drawingarea.unsetCursor() */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwogl.pyx":1913 * #~ ##pxm>IF_END * * def save_screenshot(filename): # <<<<<<<<<<<<<< * IF OFFSCREEN: #px+ * cdef QImage image #px+ */ /* Python wrapper */ static PyObject *__pyx_pw_10_qt_qtwogl_49save_screenshot(PyObject *__pyx_self, PyObject *__pyx_v_filename); /*proto*/ static PyMethodDef __pyx_mdef_10_qt_qtwogl_49save_screenshot = {"save_screenshot", (PyCFunction)__pyx_pw_10_qt_qtwogl_49save_screenshot, METH_O, 0}; static PyObject *__pyx_pw_10_qt_qtwogl_49save_screenshot(PyObject *__pyx_self, PyObject *__pyx_v_filename) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("save_screenshot (wrapper)", 0); __pyx_r = __pyx_pf_10_qt_qtwogl_48save_screenshot(__pyx_self, ((PyObject *)__pyx_v_filename)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_10_qt_qtwogl_48save_screenshot(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_filename) { QPixmap __pyx_v_image; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; __Pyx_RefNannySetupContext("save_screenshot", 0); /* "_qt_qtwogl.pyx":1921 * ##pxm>IF 'qtw' == 'qtw' * cdef QPixmap image #px+ * image = uidata.mainwindow.grab() # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtq' * #~ cdef QImage image */ __pyx_v_image = __pyx_v_10_qt_qtwogl_uidata.mainwindow->grab(); /* "_qt_qtwogl.pyx":1926 * #~ image = uidata.mainwindow.grabWindow() * #~ ##pxm>IF_END * if not (debug & DEBUG_SIM): # <<<<<<<<<<<<<< * image.save(str2q(filename), NULL, -1) * */ __pyx_t_1 = ((!((__pyx_v_10_qt_qtwogl_debug & __pyx_e_10_qt_qtwogl_DEBUG_SIM) != 0)) != 0); if (__pyx_t_1) { /* "_qt_qtwogl.pyx":1927 * #~ ##pxm>IF_END * if not (debug & DEBUG_SIM): * image.save(str2q(filename), NULL, -1) # <<<<<<<<<<<<<< * * */ __pyx_v_image.save(__pyx_f_10_qt_qtwogl_str2q(__pyx_v_filename), NULL, -1); /* "_qt_qtwogl.pyx":1926 * #~ image = uidata.mainwindow.grabWindow() * #~ ##pxm>IF_END * if not (debug & DEBUG_SIM): # <<<<<<<<<<<<<< * image.save(str2q(filename), NULL, -1) * */ } /* "_qt_qtwogl.pyx":1913 * #~ ##pxm>IF_END * * def save_screenshot(filename): # <<<<<<<<<<<<<< * IF OFFSCREEN: #px+ * cdef QImage image #px+ */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwogl.pyx":1932 * #### misc qt #### * * def parse_color(name): # <<<<<<<<<<<<<< * cdef QColor color #px/ * #color = QColor() */ /* Python wrapper */ static PyObject *__pyx_pw_10_qt_qtwogl_51parse_color(PyObject *__pyx_self, PyObject *__pyx_v_name); /*proto*/ static PyMethodDef __pyx_mdef_10_qt_qtwogl_51parse_color = {"parse_color", (PyCFunction)__pyx_pw_10_qt_qtwogl_51parse_color, METH_O, 0}; static PyObject *__pyx_pw_10_qt_qtwogl_51parse_color(PyObject *__pyx_self, PyObject *__pyx_v_name) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("parse_color (wrapper)", 0); __pyx_r = __pyx_pf_10_qt_qtwogl_50parse_color(__pyx_self, ((PyObject *)__pyx_v_name)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_10_qt_qtwogl_50parse_color(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_name) { QColor __pyx_v_color; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; __Pyx_RefNannySetupContext("parse_color", 0); /* "_qt_qtwogl.pyx":1935 * cdef QColor color #px/ * #color = QColor() * color.setNamedColor(str2q(name)) # <<<<<<<<<<<<<< * return color.red(), color.green(), color.blue() * */ __pyx_v_color.setNamedColor(__pyx_f_10_qt_qtwogl_str2q(__pyx_v_name)); /* "_qt_qtwogl.pyx":1936 * #color = QColor() * color.setNamedColor(str2q(name)) * return color.red(), color.green(), color.blue() # <<<<<<<<<<<<<< * * def parse_color_f(name): */ __Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_color.red()); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1936, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_color.green()); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1936, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_color.blue()); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1936, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1936, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_3); __pyx_t_1 = 0; __pyx_t_2 = 0; __pyx_t_3 = 0; __pyx_r = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L0; /* "_qt_qtwogl.pyx":1932 * #### misc qt #### * * def parse_color(name): # <<<<<<<<<<<<<< * cdef QColor color #px/ * #color = QColor() */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("_qt_qtwogl.parse_color", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwogl.pyx":1938 * return color.red(), color.green(), color.blue() * * def parse_color_f(name): # <<<<<<<<<<<<<< * cdef QColor color #px/ * #color = QColor() */ /* Python wrapper */ static PyObject *__pyx_pw_10_qt_qtwogl_53parse_color_f(PyObject *__pyx_self, PyObject *__pyx_v_name); /*proto*/ static PyMethodDef __pyx_mdef_10_qt_qtwogl_53parse_color_f = {"parse_color_f", (PyCFunction)__pyx_pw_10_qt_qtwogl_53parse_color_f, METH_O, 0}; static PyObject *__pyx_pw_10_qt_qtwogl_53parse_color_f(PyObject *__pyx_self, PyObject *__pyx_v_name) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("parse_color_f (wrapper)", 0); __pyx_r = __pyx_pf_10_qt_qtwogl_52parse_color_f(__pyx_self, ((PyObject *)__pyx_v_name)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_10_qt_qtwogl_52parse_color_f(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_name) { QColor __pyx_v_color; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; __Pyx_RefNannySetupContext("parse_color_f", 0); /* "_qt_qtwogl.pyx":1941 * cdef QColor color #px/ * #color = QColor() * color.setNamedColor(str2q(name)) # <<<<<<<<<<<<<< * return color.redF(), color.greenF(), color.blueF() * */ __pyx_v_color.setNamedColor(__pyx_f_10_qt_qtwogl_str2q(__pyx_v_name)); /* "_qt_qtwogl.pyx":1942 * #color = QColor() * color.setNamedColor(str2q(name)) * return color.redF(), color.greenF(), color.blueF() # <<<<<<<<<<<<<< * * def load_image_from_file(filename, maxsize): */ __Pyx_XDECREF(__pyx_r); __pyx_t_1 = PyFloat_FromDouble(__pyx_v_color.redF()); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1942, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyFloat_FromDouble(__pyx_v_color.greenF()); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1942, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyFloat_FromDouble(__pyx_v_color.blueF()); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1942, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1942, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_3); __pyx_t_1 = 0; __pyx_t_2 = 0; __pyx_t_3 = 0; __pyx_r = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L0; /* "_qt_qtwogl.pyx":1938 * return color.red(), color.green(), color.blue() * * def parse_color_f(name): # <<<<<<<<<<<<<< * cdef QColor color #px/ * #color = QColor() */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_AddTraceback("_qt_qtwogl.parse_color_f", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwogl.pyx":1944 * return color.redF(), color.greenF(), color.blueF() * * def load_image_from_file(filename, maxsize): # <<<<<<<<<<<<<< * cdef int width, height, scaled_width, scaled_height #px+ * cdef bytes data #px+ */ /* Python wrapper */ static PyObject *__pyx_pw_10_qt_qtwogl_55load_image_from_file(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static PyMethodDef __pyx_mdef_10_qt_qtwogl_55load_image_from_file = {"load_image_from_file", (PyCFunction)__pyx_pw_10_qt_qtwogl_55load_image_from_file, METH_VARARGS|METH_KEYWORDS, 0}; static PyObject *__pyx_pw_10_qt_qtwogl_55load_image_from_file(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_filename = 0; PyObject *__pyx_v_maxsize = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("load_image_from_file (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_filename,&__pyx_n_s_maxsize,0}; PyObject* values[2] = {0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_filename)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_maxsize)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("load_image_from_file", 1, 2, 2, 1); __PYX_ERR(0, 1944, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "load_image_from_file") < 0)) __PYX_ERR(0, 1944, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); } __pyx_v_filename = values[0]; __pyx_v_maxsize = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("load_image_from_file", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1944, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("_qt_qtwogl.load_image_from_file", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_10_qt_qtwogl_54load_image_from_file(__pyx_self, __pyx_v_filename, __pyx_v_maxsize); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_10_qt_qtwogl_54load_image_from_file(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_filename, PyObject *__pyx_v_maxsize) { int __pyx_v_width; int __pyx_v_height; int __pyx_v_scaled_width; int __pyx_v_scaled_height; PyObject *__pyx_v_data = 0; QImage __pyx_v_image; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; int __pyx_t_2; int __pyx_t_3; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; __Pyx_RefNannySetupContext("load_image_from_file", 0); /* "_qt_qtwogl.pyx":1949 * cdef QImage image #px/ * #image = QImage() * image.load(str2q(filename), NULL) # <<<<<<<<<<<<<< * if image.isNull(): * return None */ __pyx_v_image.load(__pyx_f_10_qt_qtwogl_str2q(__pyx_v_filename), NULL); /* "_qt_qtwogl.pyx":1950 * #image = QImage() * image.load(str2q(filename), NULL) * if image.isNull(): # <<<<<<<<<<<<<< * return None * # scale the image to size 2^n for OpenGL */ __pyx_t_1 = (__pyx_v_image.isNull() != 0); if (__pyx_t_1) { /* "_qt_qtwogl.pyx":1951 * image.load(str2q(filename), NULL) * if image.isNull(): * return None # <<<<<<<<<<<<<< * # scale the image to size 2^n for OpenGL * width = image.width() */ __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(Py_None); __pyx_r = Py_None; goto __pyx_L0; /* "_qt_qtwogl.pyx":1950 * #image = QImage() * image.load(str2q(filename), NULL) * if image.isNull(): # <<<<<<<<<<<<<< * return None * # scale the image to size 2^n for OpenGL */ } /* "_qt_qtwogl.pyx":1953 * return None * # scale the image to size 2^n for OpenGL * width = image.width() # <<<<<<<<<<<<<< * height = image.height() * if width < 1 or height < 1: */ __pyx_v_width = __pyx_v_image.width(); /* "_qt_qtwogl.pyx":1954 * # scale the image to size 2^n for OpenGL * width = image.width() * height = image.height() # <<<<<<<<<<<<<< * if width < 1 or height < 1: * return None */ __pyx_v_height = __pyx_v_image.height(); /* "_qt_qtwogl.pyx":1955 * width = image.width() * height = image.height() * if width < 1 or height < 1: # <<<<<<<<<<<<<< * return None * scaled_width = maxsize */ __pyx_t_2 = ((__pyx_v_width < 1) != 0); if (!__pyx_t_2) { } else { __pyx_t_1 = __pyx_t_2; goto __pyx_L5_bool_binop_done; } __pyx_t_2 = ((__pyx_v_height < 1) != 0); __pyx_t_1 = __pyx_t_2; __pyx_L5_bool_binop_done:; if (__pyx_t_1) { /* "_qt_qtwogl.pyx":1956 * height = image.height() * if width < 1 or height < 1: * return None # <<<<<<<<<<<<<< * scaled_width = maxsize * while scaled_width > width: */ __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(Py_None); __pyx_r = Py_None; goto __pyx_L0; /* "_qt_qtwogl.pyx":1955 * width = image.width() * height = image.height() * if width < 1 or height < 1: # <<<<<<<<<<<<<< * return None * scaled_width = maxsize */ } /* "_qt_qtwogl.pyx":1957 * if width < 1 or height < 1: * return None * scaled_width = maxsize # <<<<<<<<<<<<<< * while scaled_width > width: * scaled_width //= 2 */ __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_v_maxsize); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1957, __pyx_L1_error) __pyx_v_scaled_width = __pyx_t_3; /* "_qt_qtwogl.pyx":1958 * return None * scaled_width = maxsize * while scaled_width > width: # <<<<<<<<<<<<<< * scaled_width //= 2 * scaled_height = maxsize */ while (1) { __pyx_t_1 = ((__pyx_v_scaled_width > __pyx_v_width) != 0); if (!__pyx_t_1) break; /* "_qt_qtwogl.pyx":1959 * scaled_width = maxsize * while scaled_width > width: * scaled_width //= 2 # <<<<<<<<<<<<<< * scaled_height = maxsize * while scaled_height > height: */ __pyx_v_scaled_width = __Pyx_div_long(__pyx_v_scaled_width, 2); } /* "_qt_qtwogl.pyx":1960 * while scaled_width > width: * scaled_width //= 2 * scaled_height = maxsize # <<<<<<<<<<<<<< * while scaled_height > height: * scaled_height //= 2 */ __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_v_maxsize); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1960, __pyx_L1_error) __pyx_v_scaled_height = __pyx_t_3; /* "_qt_qtwogl.pyx":1961 * scaled_width //= 2 * scaled_height = maxsize * while scaled_height > height: # <<<<<<<<<<<<<< * scaled_height //= 2 * image = image.scaled(scaled_width, scaled_height, Qt.IgnoreAspectRatio, Qt.SmoothTransformation) */ while (1) { __pyx_t_1 = ((__pyx_v_scaled_height > __pyx_v_height) != 0); if (!__pyx_t_1) break; /* "_qt_qtwogl.pyx":1962 * scaled_height = maxsize * while scaled_height > height: * scaled_height //= 2 # <<<<<<<<<<<<<< * image = image.scaled(scaled_width, scaled_height, Qt.IgnoreAspectRatio, Qt.SmoothTransformation) * image = image.convertToFormat(Format_RGBA8888, Qt.AutoColor) */ __pyx_v_scaled_height = __Pyx_div_long(__pyx_v_scaled_height, 2); } /* "_qt_qtwogl.pyx":1963 * while scaled_height > height: * scaled_height //= 2 * image = image.scaled(scaled_width, scaled_height, Qt.IgnoreAspectRatio, Qt.SmoothTransformation) # <<<<<<<<<<<<<< * image = image.convertToFormat(Format_RGBA8888, Qt.AutoColor) * data = image.bits()[:image.byteCount()] #px+ */ __pyx_v_image = __pyx_v_image.scaled(__pyx_v_scaled_width, __pyx_v_scaled_height, Qt::IgnoreAspectRatio, Qt::SmoothTransformation); /* "_qt_qtwogl.pyx":1964 * scaled_height //= 2 * image = image.scaled(scaled_width, scaled_height, Qt.IgnoreAspectRatio, Qt.SmoothTransformation) * image = image.convertToFormat(Format_RGBA8888, Qt.AutoColor) # <<<<<<<<<<<<<< * data = image.bits()[:image.byteCount()] #px+ * ##px: */ __pyx_v_image = __pyx_v_image.convertToFormat(QImage::Format_RGBA8888, Qt::AutoColor); /* "_qt_qtwogl.pyx":1965 * image = image.scaled(scaled_width, scaled_height, Qt.IgnoreAspectRatio, Qt.SmoothTransformation) * image = image.convertToFormat(Format_RGBA8888, Qt.AutoColor) * data = image.bits()[:image.byteCount()] #px+ # <<<<<<<<<<<<<< * ##px: * #data = image.bits() */ __pyx_t_4 = __Pyx_PyBytes_FromStringAndSize(((const char*)__pyx_v_image.bits()) + 0, __pyx_v_image.byteCount() - 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1965, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_v_data = ((PyObject*)__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwogl.pyx":1971 * #data = bytes(data) * ##px. * return image.width(), image.height(), data # <<<<<<<<<<<<<< * * ##pxm>IF 'qtw' == 'qtw' */ __Pyx_XDECREF(__pyx_r); __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_image.width()); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1971, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_image.height()); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1971, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1971, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_5); __Pyx_INCREF(__pyx_v_data); __Pyx_GIVEREF(__pyx_v_data); PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_v_data); __pyx_t_4 = 0; __pyx_t_5 = 0; __pyx_r = __pyx_t_6; __pyx_t_6 = 0; goto __pyx_L0; /* "_qt_qtwogl.pyx":1944 * return color.redF(), color.greenF(), color.blueF() * * def load_image_from_file(filename, maxsize): # <<<<<<<<<<<<<< * cdef int width, height, scaled_width, scaled_height #px+ * cdef bytes data #px+ */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_AddTraceback("_qt_qtwogl.load_image_from_file", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_data); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwogl.pyx":1975 * ##pxm>IF 'qtw' == 'qtw' * ##pxm-FUNC P * cdef QIcon get_icon(filename): # <<<<<<<<<<<<<< * cdef QPixmap pixmap #px+ * from ..theme import Theme */ static QIcon __pyx_f_10_qt_qtwogl_get_icon(PyObject *__pyx_v_filename) { QPixmap __pyx_v_pixmap; PyObject *__pyx_v_Theme = NULL; PyObject *__pyx_v_image = NULL; PyObject *__pyx_v_width = NULL; PyObject *__pyx_v_height = NULL; PyObject *__pyx_v_data = NULL; QIcon __pyx_r; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; int __pyx_t_5; int __pyx_t_6; PyObject *(*__pyx_t_7)(PyObject *); int __pyx_t_8; int __pyx_t_9; uchar const *__pyx_t_10; __Pyx_RefNannySetupContext("get_icon", 0); /* "_qt_qtwogl.pyx":1977 * cdef QIcon get_icon(filename): * cdef QPixmap pixmap #px+ * from ..theme import Theme # <<<<<<<<<<<<<< * image = Theme.textures.image_from_file(filename) * if image is None: */ __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1977, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_n_s_Theme); __Pyx_GIVEREF(__pyx_n_s_Theme); PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_Theme); __pyx_t_2 = __Pyx_Import(__pyx_n_s_theme, __pyx_t_1, 2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1977, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_Theme); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1977, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_t_1); __pyx_v_Theme = __pyx_t_1; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwogl.pyx":1978 * cdef QPixmap pixmap #px+ * from ..theme import Theme * image = Theme.textures.image_from_file(filename) # <<<<<<<<<<<<<< * if image is None: * return QIcon() */ __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_Theme, __pyx_n_s_textures); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1978, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_image_from_file); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1978, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_1)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } if (!__pyx_t_1) { __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_filename); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1978, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_v_filename}; __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1978, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_GOTREF(__pyx_t_2); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_v_filename}; __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1978, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_GOTREF(__pyx_t_2); } else #endif { __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1978, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1); __pyx_t_1 = NULL; __Pyx_INCREF(__pyx_v_filename); __Pyx_GIVEREF(__pyx_v_filename); PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_filename); __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1978, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_image = __pyx_t_2; __pyx_t_2 = 0; /* "_qt_qtwogl.pyx":1979 * from ..theme import Theme * image = Theme.textures.image_from_file(filename) * if image is None: # <<<<<<<<<<<<<< * return QIcon() * else: */ __pyx_t_5 = (__pyx_v_image == Py_None); __pyx_t_6 = (__pyx_t_5 != 0); if (__pyx_t_6) { /* "_qt_qtwogl.pyx":1980 * image = Theme.textures.image_from_file(filename) * if image is None: * return QIcon() # <<<<<<<<<<<<<< * else: * width, height, data = image */ __pyx_r = QIcon(); goto __pyx_L0; /* "_qt_qtwogl.pyx":1979 * from ..theme import Theme * image = Theme.textures.image_from_file(filename) * if image is None: # <<<<<<<<<<<<<< * return QIcon() * else: */ } /* "_qt_qtwogl.pyx":1982 * return QIcon() * else: * width, height, data = image # <<<<<<<<<<<<<< * pixmap = QPixmap(width, height) * pixmap.convertFromImage(QImage(data, width, height, Format_RGBA8888)) */ /*else*/ { if ((likely(PyTuple_CheckExact(__pyx_v_image))) || (PyList_CheckExact(__pyx_v_image))) { PyObject* sequence = __pyx_v_image; #if !CYTHON_COMPILING_IN_PYPY Py_ssize_t size = Py_SIZE(sequence); #else Py_ssize_t size = PySequence_Size(sequence); #endif if (unlikely(size != 3)) { if (size > 3) __Pyx_RaiseTooManyValuesError(3); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 1982, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); __pyx_t_4 = PyTuple_GET_ITEM(sequence, 2); } else { __pyx_t_2 = PyList_GET_ITEM(sequence, 0); __pyx_t_3 = PyList_GET_ITEM(sequence, 1); __pyx_t_4 = PyList_GET_ITEM(sequence, 2); } __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(__pyx_t_4); #else __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1982, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1982, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1982, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); #endif } else { Py_ssize_t index = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_image); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1982, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_7 = Py_TYPE(__pyx_t_1)->tp_iternext; index = 0; __pyx_t_2 = __pyx_t_7(__pyx_t_1); if (unlikely(!__pyx_t_2)) goto __pyx_L4_unpacking_failed; __Pyx_GOTREF(__pyx_t_2); index = 1; __pyx_t_3 = __pyx_t_7(__pyx_t_1); if (unlikely(!__pyx_t_3)) goto __pyx_L4_unpacking_failed; __Pyx_GOTREF(__pyx_t_3); index = 2; __pyx_t_4 = __pyx_t_7(__pyx_t_1); if (unlikely(!__pyx_t_4)) goto __pyx_L4_unpacking_failed; __Pyx_GOTREF(__pyx_t_4); if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_1), 3) < 0) __PYX_ERR(0, 1982, __pyx_L1_error) __pyx_t_7 = NULL; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; goto __pyx_L5_unpacking_done; __pyx_L4_unpacking_failed:; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_7 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 1982, __pyx_L1_error) __pyx_L5_unpacking_done:; } __pyx_v_width = __pyx_t_2; __pyx_t_2 = 0; __pyx_v_height = __pyx_t_3; __pyx_t_3 = 0; __pyx_v_data = __pyx_t_4; __pyx_t_4 = 0; /* "_qt_qtwogl.pyx":1983 * else: * width, height, data = image * pixmap = QPixmap(width, height) # <<<<<<<<<<<<<< * pixmap.convertFromImage(QImage(data, width, height, Format_RGBA8888)) * return QIcon(pixmap) */ __pyx_t_8 = __Pyx_PyInt_As_int(__pyx_v_width); if (unlikely((__pyx_t_8 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1983, __pyx_L1_error) __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_v_height); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1983, __pyx_L1_error) __pyx_v_pixmap = QPixmap(__pyx_t_8, __pyx_t_9); /* "_qt_qtwogl.pyx":1984 * width, height, data = image * pixmap = QPixmap(width, height) * pixmap.convertFromImage(QImage(data, width, height, Format_RGBA8888)) # <<<<<<<<<<<<<< * return QIcon(pixmap) * ##pxm>IF_END */ __pyx_t_10 = __Pyx_PyObject_AsUString(__pyx_v_data); if (unlikely((!__pyx_t_10) && PyErr_Occurred())) __PYX_ERR(0, 1984, __pyx_L1_error) __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_v_width); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1984, __pyx_L1_error) __pyx_t_8 = __Pyx_PyInt_As_int(__pyx_v_height); if (unlikely((__pyx_t_8 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1984, __pyx_L1_error) __pyx_v_pixmap.convertFromImage(QImage(__pyx_t_10, __pyx_t_9, __pyx_t_8, QImage::Format_RGBA8888)); /* "_qt_qtwogl.pyx":1985 * pixmap = QPixmap(width, height) * pixmap.convertFromImage(QImage(data, width, height, Format_RGBA8888)) * return QIcon(pixmap) # <<<<<<<<<<<<<< * ##pxm>IF_END * */ __pyx_r = QIcon(__pyx_v_pixmap); goto __pyx_L0; } /* "_qt_qtwogl.pyx":1975 * ##pxm>IF 'qtw' == 'qtw' * ##pxm-FUNC P * cdef QIcon get_icon(filename): # <<<<<<<<<<<<<< * cdef QPixmap pixmap #px+ * from ..theme import Theme */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_WriteUnraisable("_qt_qtwogl.get_icon", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_XDECREF(__pyx_v_Theme); __Pyx_XDECREF(__pyx_v_image); __Pyx_XDECREF(__pyx_v_width); __Pyx_XDECREF(__pyx_v_height); __Pyx_XDECREF(__pyx_v_data); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwogl.pyx":1988 * ##pxm>IF_END * * def keyval_from_name(keystr): # <<<<<<<<<<<<<< * keystr = '+'.join(('Num' if k == 'KP' else k) for k in keystr.split('+')) * cdef QKeySequence keyseq = fromString(str2q(keystr), PortableText) #px/ */ /* Python wrapper */ static PyObject *__pyx_pw_10_qt_qtwogl_57keyval_from_name(PyObject *__pyx_self, PyObject *__pyx_v_keystr); /*proto*/ static PyMethodDef __pyx_mdef_10_qt_qtwogl_57keyval_from_name = {"keyval_from_name", (PyCFunction)__pyx_pw_10_qt_qtwogl_57keyval_from_name, METH_O, 0}; static PyObject *__pyx_pw_10_qt_qtwogl_57keyval_from_name(PyObject *__pyx_self, PyObject *__pyx_v_keystr) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("keyval_from_name (wrapper)", 0); __pyx_r = __pyx_pf_10_qt_qtwogl_56keyval_from_name(__pyx_self, ((PyObject *)__pyx_v_keystr)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_gb_10_qt_qtwogl_16keyval_from_name_2generator(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */ /* "_qt_qtwogl.pyx":1989 * * def keyval_from_name(keystr): * keystr = '+'.join(('Num' if k == 'KP' else k) for k in keystr.split('+')) # <<<<<<<<<<<<<< * cdef QKeySequence keyseq = fromString(str2q(keystr), PortableText) #px/ * #keyseq = fromString(keystr, PortableText) */ static PyObject *__pyx_pf_10_qt_qtwogl_16keyval_from_name_genexpr(PyObject *__pyx_self) { struct __pyx_obj_10_qt_qtwogl___pyx_scope_struct_1_genexpr *__pyx_cur_scope; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("genexpr", 0); __pyx_cur_scope = (struct __pyx_obj_10_qt_qtwogl___pyx_scope_struct_1_genexpr *)__pyx_tp_new_10_qt_qtwogl___pyx_scope_struct_1_genexpr(__pyx_ptype_10_qt_qtwogl___pyx_scope_struct_1_genexpr, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_cur_scope)) { __pyx_cur_scope = ((struct __pyx_obj_10_qt_qtwogl___pyx_scope_struct_1_genexpr *)Py_None); __Pyx_INCREF(Py_None); __PYX_ERR(0, 1989, __pyx_L1_error) } else { __Pyx_GOTREF(__pyx_cur_scope); } __pyx_cur_scope->__pyx_outer_scope = (struct __pyx_obj_10_qt_qtwogl___pyx_scope_struct__keyval_from_name *) __pyx_self; __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_outer_scope)); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_outer_scope); { __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_10_qt_qtwogl_16keyval_from_name_2generator, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_keyval_from_name_locals_genexpr, __pyx_n_s_qt_qtwogl); if (unlikely(!gen)) __PYX_ERR(0, 1989, __pyx_L1_error) __Pyx_DECREF(__pyx_cur_scope); __Pyx_RefNannyFinishContext(); return (PyObject *) gen; } /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("_qt_qtwogl.keyval_from_name.genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __Pyx_DECREF(((PyObject *)__pyx_cur_scope)); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_gb_10_qt_qtwogl_16keyval_from_name_2generator(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */ { struct __pyx_obj_10_qt_qtwogl___pyx_scope_struct_1_genexpr *__pyx_cur_scope = ((struct __pyx_obj_10_qt_qtwogl___pyx_scope_struct_1_genexpr *)__pyx_generator->closure); PyObject *__pyx_r = NULL; PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; Py_ssize_t __pyx_t_3; PyObject *(*__pyx_t_4)(PyObject *); int __pyx_t_5; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("None", 0); switch (__pyx_generator->resume_label) { case 0: goto __pyx_L3_first_run; default: /* CPython raises the right error here */ __Pyx_RefNannyFinishContext(); return NULL; } __pyx_L3_first_run:; if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 1989, __pyx_L1_error) __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(0, 1989, __pyx_L1_error) __Pyx_GOTREF(__pyx_r); if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_keystr)) { __Pyx_RaiseClosureNameError("keystr"); __PYX_ERR(0, 1989, __pyx_L1_error) } __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_keystr, __pyx_n_s_split); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1989, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__23, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1989, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (likely(PyList_CheckExact(__pyx_t_2)) || PyTuple_CheckExact(__pyx_t_2)) { __pyx_t_1 = __pyx_t_2; __Pyx_INCREF(__pyx_t_1); __pyx_t_3 = 0; __pyx_t_4 = NULL; } else { __pyx_t_3 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1989, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1989, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; for (;;) { if (likely(!__pyx_t_4)) { if (likely(PyList_CheckExact(__pyx_t_1))) { if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_1)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_2); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 1989, __pyx_L1_error) #else __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1989, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); #endif } else { if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_1)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_2); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 1989, __pyx_L1_error) #else __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1989, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); #endif } } else { __pyx_t_2 = __pyx_t_4(__pyx_t_1); if (unlikely(!__pyx_t_2)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 1989, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_2); } __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_k); __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_k, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_5 = (__Pyx_PyUnicode_Equals(__pyx_cur_scope->__pyx_v_k, __pyx_n_u_KP, Py_EQ)); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 1989, __pyx_L1_error) if (__pyx_t_5) { __Pyx_INCREF(__pyx_n_u_Num); __pyx_t_2 = __pyx_n_u_Num; } else { __Pyx_INCREF(__pyx_cur_scope->__pyx_v_k); __pyx_t_2 = __pyx_cur_scope->__pyx_v_k; } if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_2))) __PYX_ERR(0, 1989, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope); /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_r); __pyx_r = 0; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __pyx_generator->resume_label = -1; __Pyx_Coroutine_clear((PyObject*)__pyx_generator); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwogl.pyx":1988 * ##pxm>IF_END * * def keyval_from_name(keystr): # <<<<<<<<<<<<<< * keystr = '+'.join(('Num' if k == 'KP' else k) for k in keystr.split('+')) * cdef QKeySequence keyseq = fromString(str2q(keystr), PortableText) #px/ */ static PyObject *__pyx_pf_10_qt_qtwogl_56keyval_from_name(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_keystr) { struct __pyx_obj_10_qt_qtwogl___pyx_scope_struct__keyval_from_name *__pyx_cur_scope; QKeySequence __pyx_v_keyseq; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; int __pyx_t_3; __Pyx_RefNannySetupContext("keyval_from_name", 0); __pyx_cur_scope = (struct __pyx_obj_10_qt_qtwogl___pyx_scope_struct__keyval_from_name *)__pyx_tp_new_10_qt_qtwogl___pyx_scope_struct__keyval_from_name(__pyx_ptype_10_qt_qtwogl___pyx_scope_struct__keyval_from_name, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_cur_scope)) { __pyx_cur_scope = ((struct __pyx_obj_10_qt_qtwogl___pyx_scope_struct__keyval_from_name *)Py_None); __Pyx_INCREF(Py_None); __PYX_ERR(0, 1988, __pyx_L1_error) } else { __Pyx_GOTREF(__pyx_cur_scope); } __pyx_cur_scope->__pyx_v_keystr = __pyx_v_keystr; __Pyx_INCREF(__pyx_cur_scope->__pyx_v_keystr); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_keystr); /* "_qt_qtwogl.pyx":1989 * * def keyval_from_name(keystr): * keystr = '+'.join(('Num' if k == 'KP' else k) for k in keystr.split('+')) # <<<<<<<<<<<<<< * cdef QKeySequence keyseq = fromString(str2q(keystr), PortableText) #px/ * #keyseq = fromString(keystr, PortableText) */ __pyx_t_1 = __pyx_pf_10_qt_qtwogl_16keyval_from_name_genexpr(((PyObject*)__pyx_cur_scope)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1989, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_Generator_Next(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1989, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyUnicode_Join(__pyx_kp_u__22, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1989, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_keystr); __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_keystr, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwogl.pyx":1990 * def keyval_from_name(keystr): * keystr = '+'.join(('Num' if k == 'KP' else k) for k in keystr.split('+')) * cdef QKeySequence keyseq = fromString(str2q(keystr), PortableText) #px/ # <<<<<<<<<<<<<< * #keyseq = fromString(keystr, PortableText) * if keyseq.count() == 0: */ __pyx_t_1 = __pyx_cur_scope->__pyx_v_keystr; __Pyx_INCREF(__pyx_t_1); __pyx_v_keyseq = QKeySequence::fromString(__pyx_f_10_qt_qtwogl_str2q(__pyx_t_1), QKeySequence::PortableText); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwogl.pyx":1992 * cdef QKeySequence keyseq = fromString(str2q(keystr), PortableText) #px/ * #keyseq = fromString(keystr, PortableText) * if keyseq.count() == 0: # <<<<<<<<<<<<<< * return 0 * return keyseq[0] */ __pyx_t_3 = ((__pyx_v_keyseq.count() == 0) != 0); if (__pyx_t_3) { /* "_qt_qtwogl.pyx":1993 * #keyseq = fromString(keystr, PortableText) * if keyseq.count() == 0: * return 0 # <<<<<<<<<<<<<< * return keyseq[0] * */ __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_int_0); __pyx_r = __pyx_int_0; goto __pyx_L0; /* "_qt_qtwogl.pyx":1992 * cdef QKeySequence keyseq = fromString(str2q(keystr), PortableText) #px/ * #keyseq = fromString(keystr, PortableText) * if keyseq.count() == 0: # <<<<<<<<<<<<<< * return 0 * return keyseq[0] */ } /* "_qt_qtwogl.pyx":1994 * if keyseq.count() == 0: * return 0 * return keyseq[0] # <<<<<<<<<<<<<< * * def get_pictures_folder(): */ __Pyx_XDECREF(__pyx_r); __pyx_t_1 = __Pyx_PyInt_From_int((__pyx_v_keyseq[0])); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1994, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; /* "_qt_qtwogl.pyx":1988 * ##pxm>IF_END * * def keyval_from_name(keystr): # <<<<<<<<<<<<<< * keystr = '+'.join(('Num' if k == 'KP' else k) for k in keystr.split('+')) * cdef QKeySequence keyseq = fromString(str2q(keystr), PortableText) #px/ */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("_qt_qtwogl.keyval_from_name", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_DECREF(((PyObject *)__pyx_cur_scope)); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwogl.pyx":1996 * return keyseq[0] * * def get_pictures_folder(): # <<<<<<<<<<<<<< * cdef QStringList locations = standardLocations(PicturesLocation) #px/ * #locations = standardLocations(PicturesLocation) */ /* Python wrapper */ static PyObject *__pyx_pw_10_qt_qtwogl_59get_pictures_folder(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/ static PyMethodDef __pyx_mdef_10_qt_qtwogl_59get_pictures_folder = {"get_pictures_folder", (PyCFunction)__pyx_pw_10_qt_qtwogl_59get_pictures_folder, METH_NOARGS, 0}; static PyObject *__pyx_pw_10_qt_qtwogl_59get_pictures_folder(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("get_pictures_folder (wrapper)", 0); __pyx_r = __pyx_pf_10_qt_qtwogl_58get_pictures_folder(__pyx_self); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_10_qt_qtwogl_58get_pictures_folder(CYTHON_UNUSED PyObject *__pyx_self) { QStringList __pyx_v_locations; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; PyObject *__pyx_t_2 = NULL; __Pyx_RefNannySetupContext("get_pictures_folder", 0); /* "_qt_qtwogl.pyx":1997 * * def get_pictures_folder(): * cdef QStringList locations = standardLocations(PicturesLocation) #px/ # <<<<<<<<<<<<<< * #locations = standardLocations(PicturesLocation) * if locations.size() <= 0: #px/ */ __pyx_v_locations = QStandardPaths::standardLocations(QStandardPaths::PicturesLocation); /* "_qt_qtwogl.pyx":1999 * cdef QStringList locations = standardLocations(PicturesLocation) #px/ * #locations = standardLocations(PicturesLocation) * if locations.size() <= 0: #px/ # <<<<<<<<<<<<<< * #if not locations: * locations = standardLocations(HomeLocation) */ __pyx_t_1 = ((__pyx_v_locations.size() <= 0) != 0); if (__pyx_t_1) { /* "_qt_qtwogl.pyx":2001 * if locations.size() <= 0: #px/ * #if not locations: * locations = standardLocations(HomeLocation) # <<<<<<<<<<<<<< * if locations.size() <= 0: #px/ * #if not locations: */ __pyx_v_locations = QStandardPaths::standardLocations(QStandardPaths::HomeLocation); /* "_qt_qtwogl.pyx":2002 * #if not locations: * locations = standardLocations(HomeLocation) * if locations.size() <= 0: #px/ # <<<<<<<<<<<<<< * #if not locations: * return '' */ __pyx_t_1 = ((__pyx_v_locations.size() <= 0) != 0); if (__pyx_t_1) { /* "_qt_qtwogl.pyx":2004 * if locations.size() <= 0: #px/ * #if not locations: * return '' # <<<<<<<<<<<<<< * return q2str(locations[0]) * */ __Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_kp_u__6); __pyx_r = __pyx_kp_u__6; goto __pyx_L0; /* "_qt_qtwogl.pyx":2002 * #if not locations: * locations = standardLocations(HomeLocation) * if locations.size() <= 0: #px/ # <<<<<<<<<<<<<< * #if not locations: * return '' */ } /* "_qt_qtwogl.pyx":1999 * cdef QStringList locations = standardLocations(PicturesLocation) #px/ * #locations = standardLocations(PicturesLocation) * if locations.size() <= 0: #px/ # <<<<<<<<<<<<<< * #if not locations: * locations = standardLocations(HomeLocation) */ } /* "_qt_qtwogl.pyx":2005 * #if not locations: * return '' * return q2str(locations[0]) # <<<<<<<<<<<<<< * * def get_imagefile(facekey): */ __Pyx_XDECREF(__pyx_r); __pyx_t_2 = __pyx_f_10_qt_qtwogl_q2str((__pyx_v_locations[0])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2005, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; /* "_qt_qtwogl.pyx":1996 * return keyseq[0] * * def get_pictures_folder(): # <<<<<<<<<<<<<< * cdef QStringList locations = standardLocations(PicturesLocation) #px/ * #locations = standardLocations(PicturesLocation) */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("_qt_qtwogl.get_pictures_folder", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwogl.pyx":2007 * return q2str(locations[0]) * * def get_imagefile(facekey): # <<<<<<<<<<<<<< * imagefile = settings['theme.faces',facekey,'image'] * currentfolder = get_pictures_folder() */ /* Python wrapper */ static PyObject *__pyx_pw_10_qt_qtwogl_61get_imagefile(PyObject *__pyx_self, PyObject *__pyx_v_facekey); /*proto*/ static PyMethodDef __pyx_mdef_10_qt_qtwogl_61get_imagefile = {"get_imagefile", (PyCFunction)__pyx_pw_10_qt_qtwogl_61get_imagefile, METH_O, 0}; static PyObject *__pyx_pw_10_qt_qtwogl_61get_imagefile(PyObject *__pyx_self, PyObject *__pyx_v_facekey) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("get_imagefile (wrapper)", 0); __pyx_r = __pyx_pf_10_qt_qtwogl_60get_imagefile(__pyx_self, ((PyObject *)__pyx_v_facekey)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_10_qt_qtwogl_60get_imagefile(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_facekey) { PyObject *__pyx_v_imagefile = NULL; PyObject *__pyx_v_currentfolder = NULL; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; int __pyx_t_4; PyObject *__pyx_t_5 = NULL; int __pyx_t_6; PyObject *__pyx_t_7 = NULL; __Pyx_RefNannySetupContext("get_imagefile", 0); /* "_qt_qtwogl.pyx":2008 * * def get_imagefile(facekey): * imagefile = settings['theme.faces',facekey,'image'] # <<<<<<<<<<<<<< * currentfolder = get_pictures_folder() * if imagefile.startswith('/'): */ __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2008, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2008, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_kp_u_theme_faces); __Pyx_GIVEREF(__pyx_kp_u_theme_faces); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_kp_u_theme_faces); __Pyx_INCREF(__pyx_v_facekey); __Pyx_GIVEREF(__pyx_v_facekey); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_facekey); __Pyx_INCREF(__pyx_n_u_image); __Pyx_GIVEREF(__pyx_n_u_image); PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_n_u_image); __pyx_t_3 = PyObject_GetItem(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2008, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_imagefile = __pyx_t_3; __pyx_t_3 = 0; /* "_qt_qtwogl.pyx":2009 * def get_imagefile(facekey): * imagefile = settings['theme.faces',facekey,'image'] * currentfolder = get_pictures_folder() # <<<<<<<<<<<<<< * if imagefile.startswith('/'): * currentfolder = os.path.dirname(imagefile) */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_get_pictures_folder); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2009, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_1)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } if (__pyx_t_1) { __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2009, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2009, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_currentfolder = __pyx_t_3; __pyx_t_3 = 0; /* "_qt_qtwogl.pyx":2010 * imagefile = settings['theme.faces',facekey,'image'] * currentfolder = get_pictures_folder() * if imagefile.startswith('/'): # <<<<<<<<<<<<<< * currentfolder = os.path.dirname(imagefile) * elif imagefile: */ __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_imagefile, __pyx_n_s_startswith); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2010, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__24, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2010, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 2010, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (__pyx_t_4) { /* "_qt_qtwogl.pyx":2011 * currentfolder = get_pictures_folder() * if imagefile.startswith('/'): * currentfolder = os.path.dirname(imagefile) # <<<<<<<<<<<<<< * elif imagefile: * imagefile = os.path.join(config_.UI_DIR, 'images', imagefile) */ __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_os); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2011, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_path); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2011, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_dirname); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2011, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_1)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } if (!__pyx_t_1) { __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_imagefile); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2011, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_v_imagefile}; __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2011, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_GOTREF(__pyx_t_2); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[2] = {__pyx_t_1, __pyx_v_imagefile}; __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2011, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_GOTREF(__pyx_t_2); } else #endif { __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2011, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1); __pyx_t_1 = NULL; __Pyx_INCREF(__pyx_v_imagefile); __Pyx_GIVEREF(__pyx_v_imagefile); PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_imagefile); __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2011, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF_SET(__pyx_v_currentfolder, __pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwogl.pyx":2010 * imagefile = settings['theme.faces',facekey,'image'] * currentfolder = get_pictures_folder() * if imagefile.startswith('/'): # <<<<<<<<<<<<<< * currentfolder = os.path.dirname(imagefile) * elif imagefile: */ goto __pyx_L3; } /* "_qt_qtwogl.pyx":2012 * if imagefile.startswith('/'): * currentfolder = os.path.dirname(imagefile) * elif imagefile: # <<<<<<<<<<<<<< * imagefile = os.path.join(config_.UI_DIR, 'images', imagefile) * return currentfolder, imagefile */ __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_imagefile); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 2012, __pyx_L1_error) if (__pyx_t_4) { /* "_qt_qtwogl.pyx":2013 * currentfolder = os.path.dirname(imagefile) * elif imagefile: * imagefile = os.path.join(config_.UI_DIR, 'images', imagefile) # <<<<<<<<<<<<<< * return currentfolder, imagefile * */ __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_os); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2013, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_path); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2013, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_join); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2013, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_config); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2013, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_UI_DIR); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2013, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[4] = {__pyx_t_5, __pyx_t_1, __pyx_n_u_images, __pyx_v_imagefile}; __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2013, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[4] = {__pyx_t_5, __pyx_t_1, __pyx_n_u_images, __pyx_v_imagefile}; __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2013, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else #endif { __pyx_t_7 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2013, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_t_1); __Pyx_INCREF(__pyx_n_u_images); __Pyx_GIVEREF(__pyx_n_u_images); PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_n_u_images); __Pyx_INCREF(__pyx_v_imagefile); __Pyx_GIVEREF(__pyx_v_imagefile); PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_6, __pyx_v_imagefile); __pyx_t_1 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2013, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF_SET(__pyx_v_imagefile, __pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwogl.pyx":2012 * if imagefile.startswith('/'): * currentfolder = os.path.dirname(imagefile) * elif imagefile: # <<<<<<<<<<<<<< * imagefile = os.path.join(config_.UI_DIR, 'images', imagefile) * return currentfolder, imagefile */ } __pyx_L3:; /* "_qt_qtwogl.pyx":2014 * elif imagefile: * imagefile = os.path.join(config_.UI_DIR, 'images', imagefile) * return currentfolder, imagefile # <<<<<<<<<<<<<< * * def text_to_html(text): */ __Pyx_XDECREF(__pyx_r); __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2014, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_currentfolder); __Pyx_GIVEREF(__pyx_v_currentfolder); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_currentfolder); __Pyx_INCREF(__pyx_v_imagefile); __Pyx_GIVEREF(__pyx_v_imagefile); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_imagefile); __pyx_r = __pyx_t_2; __pyx_t_2 = 0; goto __pyx_L0; /* "_qt_qtwogl.pyx":2007 * return q2str(locations[0]) * * def get_imagefile(facekey): # <<<<<<<<<<<<<< * imagefile = settings['theme.faces',facekey,'image'] * currentfolder = get_pictures_folder() */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_7); __Pyx_AddTraceback("_qt_qtwogl.get_imagefile", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_imagefile); __Pyx_XDECREF(__pyx_v_currentfolder); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwogl.pyx":2016 * return currentfolder, imagefile * * def text_to_html(text): # <<<<<<<<<<<<<< * return q2str(fromPlainText(str2q(text)).toHtml()) * */ /* Python wrapper */ static PyObject *__pyx_pw_10_qt_qtwogl_63text_to_html(PyObject *__pyx_self, PyObject *__pyx_v_text); /*proto*/ static PyMethodDef __pyx_mdef_10_qt_qtwogl_63text_to_html = {"text_to_html", (PyCFunction)__pyx_pw_10_qt_qtwogl_63text_to_html, METH_O, 0}; static PyObject *__pyx_pw_10_qt_qtwogl_63text_to_html(PyObject *__pyx_self, PyObject *__pyx_v_text) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("text_to_html (wrapper)", 0); __pyx_r = __pyx_pf_10_qt_qtwogl_62text_to_html(__pyx_self, ((PyObject *)__pyx_v_text)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_10_qt_qtwogl_62text_to_html(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_text) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("text_to_html", 0); /* "_qt_qtwogl.pyx":2017 * * def text_to_html(text): * return q2str(fromPlainText(str2q(text)).toHtml()) # <<<<<<<<<<<<<< * * ##pxm-FUNC P with gil */ __Pyx_XDECREF(__pyx_r); __pyx_t_1 = __pyx_f_10_qt_qtwogl_q2str(QTextDocumentFragment::fromPlainText(__pyx_f_10_qt_qtwogl_str2q(__pyx_v_text)).toHtml()); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2017, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; /* "_qt_qtwogl.pyx":2016 * return currentfolder, imagefile * * def text_to_html(text): # <<<<<<<<<<<<<< * return q2str(fromPlainText(str2q(text)).toHtml()) * */ /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("_qt_qtwogl.text_to_html", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwogl.pyx":2020 * * ##pxm-FUNC P with gil * cdef void _on_filesystemwatcher_changed_1(const QString &qpath) with gil: # <<<<<<<<<<<<<< * if pydata.filesystemwatcher_path is not None: * return */ static void __pyx_f_10_qt_qtwogl__on_filesystemwatcher_changed_1(QString const &__pyx_v_qpath) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; int __pyx_t_3; int __pyx_t_4; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("_on_filesystemwatcher_changed_1", 0); /* "_qt_qtwogl.pyx":2021 * ##pxm-FUNC P with gil * cdef void _on_filesystemwatcher_changed_1(const QString &qpath) with gil: * if pydata.filesystemwatcher_path is not None: # <<<<<<<<<<<<<< * return * pydata.filesystemwatcher_path = q2str(qpath) */ __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2021, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_filesystemwatcher_path); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2021, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_3 = (__pyx_t_2 != Py_None); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_4 = (__pyx_t_3 != 0); if (__pyx_t_4) { /* "_qt_qtwogl.pyx":2022 * cdef void _on_filesystemwatcher_changed_1(const QString &qpath) with gil: * if pydata.filesystemwatcher_path is not None: * return # <<<<<<<<<<<<<< * pydata.filesystemwatcher_path = q2str(qpath) * singleShot(100, _on_filesystemwatcher_changed_2) #px/ */ goto __pyx_L0; /* "_qt_qtwogl.pyx":2021 * ##pxm-FUNC P with gil * cdef void _on_filesystemwatcher_changed_1(const QString &qpath) with gil: * if pydata.filesystemwatcher_path is not None: # <<<<<<<<<<<<<< * return * pydata.filesystemwatcher_path = q2str(qpath) */ } /* "_qt_qtwogl.pyx":2023 * if pydata.filesystemwatcher_path is not None: * return * pydata.filesystemwatcher_path = q2str(qpath) # <<<<<<<<<<<<<< * singleShot(100, _on_filesystemwatcher_changed_2) #px/ * #QTimer.singleShot(100, _on_filesystemwatcher_changed_2) */ __pyx_t_2 = __pyx_f_10_qt_qtwogl_q2str(__pyx_v_qpath); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2023, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2023, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (__Pyx_PyObject_SetAttrStr(__pyx_t_1, __pyx_n_s_filesystemwatcher_path, __pyx_t_2) < 0) __PYX_ERR(0, 2023, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwogl.pyx":2024 * return * pydata.filesystemwatcher_path = q2str(qpath) * singleShot(100, _on_filesystemwatcher_changed_2) #px/ # <<<<<<<<<<<<<< * #QTimer.singleShot(100, _on_filesystemwatcher_changed_2) * ##pxm-FUNC P with gil */ QTimer::singleShot(0x64, __pyx_f_10_qt_qtwogl__on_filesystemwatcher_changed_2); /* "_qt_qtwogl.pyx":2020 * * ##pxm-FUNC P with gil * cdef void _on_filesystemwatcher_changed_1(const QString &qpath) with gil: # <<<<<<<<<<<<<< * if pydata.filesystemwatcher_path is not None: * return */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_WriteUnraisable("_qt_qtwogl._on_filesystemwatcher_changed_1", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwogl.pyx":2027 * #QTimer.singleShot(100, _on_filesystemwatcher_changed_2) * ##pxm-FUNC P with gil * cdef void _on_filesystemwatcher_changed_2() with gil: # <<<<<<<<<<<<<< * path = pydata.filesystemwatcher_path * pydata.filesystemwatcher_path = None */ static void __pyx_f_10_qt_qtwogl__on_filesystemwatcher_changed_2(void) { PyObject *__pyx_v_path = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; int __pyx_t_5; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("_on_filesystemwatcher_changed_2", 0); /* "_qt_qtwogl.pyx":2028 * ##pxm-FUNC P with gil * cdef void _on_filesystemwatcher_changed_2() with gil: * path = pydata.filesystemwatcher_path # <<<<<<<<<<<<<< * pydata.filesystemwatcher_path = None * pydata.filesystemwatcher_handlers[path]() */ __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2028, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_filesystemwatcher_path); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2028, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_path = __pyx_t_2; __pyx_t_2 = 0; /* "_qt_qtwogl.pyx":2029 * cdef void _on_filesystemwatcher_changed_2() with gil: * path = pydata.filesystemwatcher_path * pydata.filesystemwatcher_path = None # <<<<<<<<<<<<<< * pydata.filesystemwatcher_handlers[path]() * if os.path.isfile(path): */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2029, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (__Pyx_PyObject_SetAttrStr(__pyx_t_2, __pyx_n_s_filesystemwatcher_path, Py_None) < 0) __PYX_ERR(0, 2029, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwogl.pyx":2030 * path = pydata.filesystemwatcher_path * pydata.filesystemwatcher_path = None * pydata.filesystemwatcher_handlers[path]() # <<<<<<<<<<<<<< * if os.path.isfile(path): * uidata.filesystemwatcher.addPath(str2q(path)) */ __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2030, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_filesystemwatcher_handlers); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2030, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyObject_GetItem(__pyx_t_3, __pyx_v_path); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2030, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); } } if (__pyx_t_3) { __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2030, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2030, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwogl.pyx":2031 * pydata.filesystemwatcher_path = None * pydata.filesystemwatcher_handlers[path]() * if os.path.isfile(path): # <<<<<<<<<<<<<< * uidata.filesystemwatcher.addPath(str2q(path)) * */ __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_os); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2031, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_path); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2031, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_isfile); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2031, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); } } if (!__pyx_t_3) { __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_path); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2031, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_1)) { PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_path}; __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2031, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_2); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) { PyObject *__pyx_temp[2] = {__pyx_t_3, __pyx_v_path}; __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2031, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_2); } else #endif { __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2031, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL; __Pyx_INCREF(__pyx_v_path); __Pyx_GIVEREF(__pyx_v_path); PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_path); __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_4, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2031, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 2031, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (__pyx_t_5) { /* "_qt_qtwogl.pyx":2032 * pydata.filesystemwatcher_handlers[path]() * if os.path.isfile(path): * uidata.filesystemwatcher.addPath(str2q(path)) # <<<<<<<<<<<<<< * * def create_filesystemwatcher(path, callback): */ __pyx_v_10_qt_qtwogl_uidata.filesystemwatcher->addPath(__pyx_f_10_qt_qtwogl_str2q(__pyx_v_path)); /* "_qt_qtwogl.pyx":2031 * pydata.filesystemwatcher_path = None * pydata.filesystemwatcher_handlers[path]() * if os.path.isfile(path): # <<<<<<<<<<<<<< * uidata.filesystemwatcher.addPath(str2q(path)) * */ } /* "_qt_qtwogl.pyx":2027 * #QTimer.singleShot(100, _on_filesystemwatcher_changed_2) * ##pxm-FUNC P with gil * cdef void _on_filesystemwatcher_changed_2() with gil: # <<<<<<<<<<<<<< * path = pydata.filesystemwatcher_path * pydata.filesystemwatcher_path = None */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_WriteUnraisable("_qt_qtwogl._on_filesystemwatcher_changed_2", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_XDECREF(__pyx_v_path); __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwogl.pyx":2034 * uidata.filesystemwatcher.addPath(str2q(path)) * * def create_filesystemwatcher(path, callback): # <<<<<<<<<<<<<< * cdef QString qpath = str2q(path) #px/ * #qpath = path */ /* Python wrapper */ static PyObject *__pyx_pw_10_qt_qtwogl_65create_filesystemwatcher(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static PyMethodDef __pyx_mdef_10_qt_qtwogl_65create_filesystemwatcher = {"create_filesystemwatcher", (PyCFunction)__pyx_pw_10_qt_qtwogl_65create_filesystemwatcher, METH_VARARGS|METH_KEYWORDS, 0}; static PyObject *__pyx_pw_10_qt_qtwogl_65create_filesystemwatcher(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_path = 0; PyObject *__pyx_v_callback = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("create_filesystemwatcher (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_path,&__pyx_n_s_callback,0}; PyObject* values[2] = {0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_path)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_callback)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("create_filesystemwatcher", 1, 2, 2, 1); __PYX_ERR(0, 2034, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "create_filesystemwatcher") < 0)) __PYX_ERR(0, 2034, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); } __pyx_v_path = values[0]; __pyx_v_callback = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("create_filesystemwatcher", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2034, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("_qt_qtwogl.create_filesystemwatcher", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_10_qt_qtwogl_64create_filesystemwatcher(__pyx_self, __pyx_v_path, __pyx_v_callback); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_10_qt_qtwogl_64create_filesystemwatcher(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_path, PyObject *__pyx_v_callback) { QString __pyx_v_qpath; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; __Pyx_RefNannySetupContext("create_filesystemwatcher", 0); /* "_qt_qtwogl.pyx":2035 * * def create_filesystemwatcher(path, callback): * cdef QString qpath = str2q(path) #px/ # <<<<<<<<<<<<<< * #qpath = path * if uidata.filesystemwatcher is NULL: */ __pyx_v_qpath = __pyx_f_10_qt_qtwogl_str2q(__pyx_v_path); /* "_qt_qtwogl.pyx":2037 * cdef QString qpath = str2q(path) #px/ * #qpath = path * if uidata.filesystemwatcher is NULL: # <<<<<<<<<<<<<< * uidata.filesystemwatcher = new QFileSystemWatcher(NULL) #px/ * #uidata.filesystemwatcher = QFileSystemWatcher(None) */ __pyx_t_1 = ((__pyx_v_10_qt_qtwogl_uidata.filesystemwatcher == NULL) != 0); if (__pyx_t_1) { /* "_qt_qtwogl.pyx":2038 * #qpath = path * if uidata.filesystemwatcher is NULL: * uidata.filesystemwatcher = new QFileSystemWatcher(NULL) #px/ # <<<<<<<<<<<<<< * #uidata.filesystemwatcher = QFileSystemWatcher(None) * connect(uidata.filesystemwatcher, &directoryChanged, _on_filesystemwatcher_changed_1) #px/ */ __pyx_v_10_qt_qtwogl_uidata.filesystemwatcher = new QFileSystemWatcher(NULL); /* "_qt_qtwogl.pyx":2040 * uidata.filesystemwatcher = new QFileSystemWatcher(NULL) #px/ * #uidata.filesystemwatcher = QFileSystemWatcher(None) * connect(uidata.filesystemwatcher, &directoryChanged, _on_filesystemwatcher_changed_1) #px/ # <<<<<<<<<<<<<< * #uidata.filesystemwatcher.directoryChanged.connect(_on_filesystemwatcher_changed_1) * connect(uidata.filesystemwatcher, &fileChanged, _on_filesystemwatcher_changed_1) #px/ */ QObject::connect(__pyx_v_10_qt_qtwogl_uidata.filesystemwatcher, (&QFileSystemWatcher::directoryChanged), __pyx_f_10_qt_qtwogl__on_filesystemwatcher_changed_1); /* "_qt_qtwogl.pyx":2042 * connect(uidata.filesystemwatcher, &directoryChanged, _on_filesystemwatcher_changed_1) #px/ * #uidata.filesystemwatcher.directoryChanged.connect(_on_filesystemwatcher_changed_1) * connect(uidata.filesystemwatcher, &fileChanged, _on_filesystemwatcher_changed_1) #px/ # <<<<<<<<<<<<<< * #uidata.filesystemwatcher.fileChanged.connect(_on_filesystemwatcher_changed_1) * pydata.filesystemwatcher_handlers[path] = callback */ QObject::connect(__pyx_v_10_qt_qtwogl_uidata.filesystemwatcher, (&QFileSystemWatcher::fileChanged), __pyx_f_10_qt_qtwogl__on_filesystemwatcher_changed_1); /* "_qt_qtwogl.pyx":2037 * cdef QString qpath = str2q(path) #px/ * #qpath = path * if uidata.filesystemwatcher is NULL: # <<<<<<<<<<<<<< * uidata.filesystemwatcher = new QFileSystemWatcher(NULL) #px/ * #uidata.filesystemwatcher = QFileSystemWatcher(None) */ } /* "_qt_qtwogl.pyx":2044 * connect(uidata.filesystemwatcher, &fileChanged, _on_filesystemwatcher_changed_1) #px/ * #uidata.filesystemwatcher.fileChanged.connect(_on_filesystemwatcher_changed_1) * pydata.filesystemwatcher_handlers[path] = callback # <<<<<<<<<<<<<< * uidata.filesystemwatcher.addPath(qpath) * */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2044, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_filesystemwatcher_handlers); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2044, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(PyObject_SetItem(__pyx_t_3, __pyx_v_path, __pyx_v_callback) < 0)) __PYX_ERR(0, 2044, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "_qt_qtwogl.pyx":2045 * #uidata.filesystemwatcher.fileChanged.connect(_on_filesystemwatcher_changed_1) * pydata.filesystemwatcher_handlers[path] = callback * uidata.filesystemwatcher.addPath(qpath) # <<<<<<<<<<<<<< * * #XXX: avoid this function, only one active singleShot-handler */ __pyx_v_10_qt_qtwogl_uidata.filesystemwatcher->addPath(__pyx_v_qpath); /* "_qt_qtwogl.pyx":2034 * uidata.filesystemwatcher.addPath(str2q(path)) * * def create_filesystemwatcher(path, callback): # <<<<<<<<<<<<<< * cdef QString qpath = str2q(path) #px/ * #qpath = path */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_AddTraceback("_qt_qtwogl.create_filesystemwatcher", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwogl.pyx":2048 * * #XXX: avoid this function, only one active singleShot-handler * cdef void _on_singleShot() with gil: #px+ # <<<<<<<<<<<<<< * pydata.singleshot_handler() #px+ * if pydata.singleshot_queue: #px+ */ static void __pyx_f_10_qt_qtwogl__on_singleShot(void) { PyObject *__pyx_v_msec = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; int __pyx_t_4; PyObject *__pyx_t_5 = NULL; PyObject *(*__pyx_t_6)(PyObject *); int __pyx_t_7; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("_on_singleShot", 0); /* "_qt_qtwogl.pyx":2049 * #XXX: avoid this function, only one active singleShot-handler * cdef void _on_singleShot() with gil: #px+ * pydata.singleshot_handler() #px+ # <<<<<<<<<<<<<< * if pydata.singleshot_queue: #px+ * msec, pydata.singleshot_handler = pydata.singleshot_queue.pop(0) #px+ */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2049, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_singleshot_handler); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2049, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } if (__pyx_t_2) { __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2049, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else { __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2049, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwogl.pyx":2050 * cdef void _on_singleShot() with gil: #px+ * pydata.singleshot_handler() #px+ * if pydata.singleshot_queue: #px+ # <<<<<<<<<<<<<< * msec, pydata.singleshot_handler = pydata.singleshot_queue.pop(0) #px+ * singleShot(msec, _on_singleShot) #px+ */ __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2050, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_singleshot_queue); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2050, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 2050, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (__pyx_t_4) { /* "_qt_qtwogl.pyx":2051 * pydata.singleshot_handler() #px+ * if pydata.singleshot_queue: #px+ * msec, pydata.singleshot_handler = pydata.singleshot_queue.pop(0) #px+ # <<<<<<<<<<<<<< * singleShot(msec, _on_singleShot) #px+ * else: #px+ */ __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2051, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_singleshot_queue); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2051, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_PopIndex(__pyx_t_1, __pyx_int_0, 0, 1, Py_ssize_t, PyInt_FromSsize_t); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2051, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) { PyObject* sequence = __pyx_t_3; #if !CYTHON_COMPILING_IN_PYPY Py_ssize_t size = Py_SIZE(sequence); #else Py_ssize_t size = PySequence_Size(sequence); #endif if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 2051, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_1 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_2 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_1 = PyList_GET_ITEM(sequence, 0); __pyx_t_2 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(__pyx_t_2); #else __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2051, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2051, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); #endif __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { Py_ssize_t index = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2051, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_6 = Py_TYPE(__pyx_t_5)->tp_iternext; index = 0; __pyx_t_1 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_1)) goto __pyx_L4_unpacking_failed; __Pyx_GOTREF(__pyx_t_1); index = 1; __pyx_t_2 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_2)) goto __pyx_L4_unpacking_failed; __Pyx_GOTREF(__pyx_t_2); if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_5), 2) < 0) __PYX_ERR(0, 2051, __pyx_L1_error) __pyx_t_6 = NULL; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; goto __pyx_L5_unpacking_done; __pyx_L4_unpacking_failed:; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_6 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 2051, __pyx_L1_error) __pyx_L5_unpacking_done:; } __pyx_v_msec = __pyx_t_1; __pyx_t_1 = 0; __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2051, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__Pyx_PyObject_SetAttrStr(__pyx_t_5, __pyx_n_s_singleshot_handler, __pyx_t_2) < 0) __PYX_ERR(0, 2051, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; /* "_qt_qtwogl.pyx":2052 * if pydata.singleshot_queue: #px+ * msec, pydata.singleshot_handler = pydata.singleshot_queue.pop(0) #px+ * singleShot(msec, _on_singleShot) #px+ # <<<<<<<<<<<<<< * else: #px+ * pydata.singleshot_handler = None #px+ */ __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_v_msec); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2052, __pyx_L1_error) QTimer::singleShot(__pyx_t_7, __pyx_f_10_qt_qtwogl__on_singleShot); /* "_qt_qtwogl.pyx":2050 * cdef void _on_singleShot() with gil: #px+ * pydata.singleshot_handler() #px+ * if pydata.singleshot_queue: #px+ # <<<<<<<<<<<<<< * msec, pydata.singleshot_handler = pydata.singleshot_queue.pop(0) #px+ * singleShot(msec, _on_singleShot) #px+ */ goto __pyx_L3; } /* "_qt_qtwogl.pyx":2054 * singleShot(msec, _on_singleShot) #px+ * else: #px+ * pydata.singleshot_handler = None #px+ # <<<<<<<<<<<<<< * def timer_singleShot(msec, func): * if pydata.singleshot_handler is None: #px+ */ /*else*/ { __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2054, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (__Pyx_PyObject_SetAttrStr(__pyx_t_3, __pyx_n_s_singleshot_handler, Py_None) < 0) __PYX_ERR(0, 2054, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __pyx_L3:; /* "_qt_qtwogl.pyx":2048 * * #XXX: avoid this function, only one active singleShot-handler * cdef void _on_singleShot() with gil: #px+ # <<<<<<<<<<<<<< * pydata.singleshot_handler() #px+ * if pydata.singleshot_queue: #px+ */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_5); __Pyx_WriteUnraisable("_qt_qtwogl._on_singleShot", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_XDECREF(__pyx_v_msec); __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwogl.pyx":2055 * else: #px+ * pydata.singleshot_handler = None #px+ * def timer_singleShot(msec, func): # <<<<<<<<<<<<<< * if pydata.singleshot_handler is None: #px+ * pydata.singleshot_handler = func #px+ */ /* Python wrapper */ static PyObject *__pyx_pw_10_qt_qtwogl_67timer_singleShot(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static PyMethodDef __pyx_mdef_10_qt_qtwogl_67timer_singleShot = {"timer_singleShot", (PyCFunction)__pyx_pw_10_qt_qtwogl_67timer_singleShot, METH_VARARGS|METH_KEYWORDS, 0}; static PyObject *__pyx_pw_10_qt_qtwogl_67timer_singleShot(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_msec = 0; PyObject *__pyx_v_func = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("timer_singleShot (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_msec,&__pyx_n_s_func,0}; PyObject* values[2] = {0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_msec)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_func)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("timer_singleShot", 1, 2, 2, 1); __PYX_ERR(0, 2055, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "timer_singleShot") < 0)) __PYX_ERR(0, 2055, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); } __pyx_v_msec = values[0]; __pyx_v_func = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("timer_singleShot", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2055, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("_qt_qtwogl.timer_singleShot", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_10_qt_qtwogl_66timer_singleShot(__pyx_self, __pyx_v_msec, __pyx_v_func); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_10_qt_qtwogl_66timer_singleShot(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_msec, PyObject *__pyx_v_func) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; int __pyx_t_3; int __pyx_t_4; int __pyx_t_5; int __pyx_t_6; __Pyx_RefNannySetupContext("timer_singleShot", 0); /* "_qt_qtwogl.pyx":2056 * pydata.singleshot_handler = None #px+ * def timer_singleShot(msec, func): * if pydata.singleshot_handler is None: #px+ # <<<<<<<<<<<<<< * pydata.singleshot_handler = func #px+ * singleShot(msec, _on_singleShot) #px+ */ __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2056, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_singleshot_handler); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2056, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_3 = (__pyx_t_2 == Py_None); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_4 = (__pyx_t_3 != 0); if (__pyx_t_4) { /* "_qt_qtwogl.pyx":2057 * def timer_singleShot(msec, func): * if pydata.singleshot_handler is None: #px+ * pydata.singleshot_handler = func #px+ # <<<<<<<<<<<<<< * singleShot(msec, _on_singleShot) #px+ * else: #px+ */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2057, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (__Pyx_PyObject_SetAttrStr(__pyx_t_2, __pyx_n_s_singleshot_handler, __pyx_v_func) < 0) __PYX_ERR(0, 2057, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwogl.pyx":2058 * if pydata.singleshot_handler is None: #px+ * pydata.singleshot_handler = func #px+ * singleShot(msec, _on_singleShot) #px+ # <<<<<<<<<<<<<< * else: #px+ * pydata.singleshot_queue.append((msec, func)) #px+ */ __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_v_msec); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2058, __pyx_L1_error) QTimer::singleShot(__pyx_t_5, __pyx_f_10_qt_qtwogl__on_singleShot); /* "_qt_qtwogl.pyx":2056 * pydata.singleshot_handler = None #px+ * def timer_singleShot(msec, func): * if pydata.singleshot_handler is None: #px+ # <<<<<<<<<<<<<< * pydata.singleshot_handler = func #px+ * singleShot(msec, _on_singleShot) #px+ */ goto __pyx_L3; } /* "_qt_qtwogl.pyx":2060 * singleShot(msec, _on_singleShot) #px+ * else: #px+ * pydata.singleshot_queue.append((msec, func)) #px+ # <<<<<<<<<<<<<< * ##px- * #QTimer.singleShot(msec, func) */ /*else*/ { __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2060, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_singleshot_queue); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2060, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2060, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_msec); __Pyx_GIVEREF(__pyx_v_msec); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_msec); __Pyx_INCREF(__pyx_v_func); __Pyx_GIVEREF(__pyx_v_func); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_func); __pyx_t_6 = __Pyx_PyObject_Append(__pyx_t_1, __pyx_t_2); if (unlikely(__pyx_t_6 == -1)) __PYX_ERR(0, 2060, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } __pyx_L3:; /* "_qt_qtwogl.pyx":2055 * else: #px+ * pydata.singleshot_handler = None #px+ * def timer_singleShot(msec, func): # <<<<<<<<<<<<<< * if pydata.singleshot_handler is None: #px+ * pydata.singleshot_handler = func #px+ */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("_qt_qtwogl.timer_singleShot", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwogl.pyx":2065 * * ##pxm-FUNC P with gil * cdef void _on_settings_timer_timeout() with gil: # <<<<<<<<<<<<<< * pydata.app.on_settings_timer_timeout() * */ static void __pyx_f_10_qt_qtwogl__on_settings_timer_timeout(void) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("_on_settings_timer_timeout", 0); /* "_qt_qtwogl.pyx":2066 * ##pxm-FUNC P with gil * cdef void _on_settings_timer_timeout() with gil: * pydata.app.on_settings_timer_timeout() # <<<<<<<<<<<<<< * * ##pxm-FUNC P */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2066, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_app); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2066, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_on_settings_timer_timeout); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2066, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } if (__pyx_t_3) { __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2066, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2066, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwogl.pyx":2065 * * ##pxm-FUNC P with gil * cdef void _on_settings_timer_timeout() with gil: # <<<<<<<<<<<<<< * pydata.app.on_settings_timer_timeout() * */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_WriteUnraisable("_qt_qtwogl._on_settings_timer_timeout", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwogl.pyx":2069 * * ##pxm-FUNC P * cdef void settings_timer_create(): # <<<<<<<<<<<<<< * uidata.settings_timer = new QTimer() #px/ * #uidata.settings_timer = QTimer() */ static void __pyx_f_10_qt_qtwogl_settings_timer_create(void) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("settings_timer_create", 0); /* "_qt_qtwogl.pyx":2070 * ##pxm-FUNC P * cdef void settings_timer_create(): * uidata.settings_timer = new QTimer() #px/ # <<<<<<<<<<<<<< * #uidata.settings_timer = QTimer() * uidata.settings_timer.setInterval(5000) */ __pyx_v_10_qt_qtwogl_uidata.settings_timer = new QTimer(); /* "_qt_qtwogl.pyx":2072 * uidata.settings_timer = new QTimer() #px/ * #uidata.settings_timer = QTimer() * uidata.settings_timer.setInterval(5000) # <<<<<<<<<<<<<< * uidata.settings_timer.setSingleShot(True) * connect(uidata.settings_timer, &timeout, _on_settings_timer_timeout) #px/ */ __pyx_v_10_qt_qtwogl_uidata.settings_timer->setInterval(0x1388); /* "_qt_qtwogl.pyx":2073 * #uidata.settings_timer = QTimer() * uidata.settings_timer.setInterval(5000) * uidata.settings_timer.setSingleShot(True) # <<<<<<<<<<<<<< * connect(uidata.settings_timer, &timeout, _on_settings_timer_timeout) #px/ * #uidata.settings_timer.timeout.connect(_on_settings_timer_timeout) */ __pyx_v_10_qt_qtwogl_uidata.settings_timer->setSingleShot(1); /* "_qt_qtwogl.pyx":2074 * uidata.settings_timer.setInterval(5000) * uidata.settings_timer.setSingleShot(True) * connect(uidata.settings_timer, &timeout, _on_settings_timer_timeout) #px/ # <<<<<<<<<<<<<< * #uidata.settings_timer.timeout.connect(_on_settings_timer_timeout) * */ QObject::connect(__pyx_v_10_qt_qtwogl_uidata.settings_timer, (&QTimer::timeout), __pyx_f_10_qt_qtwogl__on_settings_timer_timeout); /* "_qt_qtwogl.pyx":2069 * * ##pxm-FUNC P * cdef void settings_timer_create(): # <<<<<<<<<<<<<< * uidata.settings_timer = new QTimer() #px/ * #uidata.settings_timer = QTimer() */ /* function exit code */ __Pyx_RefNannyFinishContext(); } /* "_qt_qtwogl.pyx":2078 * * ##pxm-FUNC P * cpdef settings_timer_start(): # <<<<<<<<<<<<<< * if not uidata.settings_timer.isActive(): * uidata.settings_timer.start() */ static PyObject *__pyx_pw_10_qt_qtwogl_69settings_timer_start(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/ static PyObject *__pyx_f_10_qt_qtwogl_settings_timer_start(CYTHON_UNUSED int __pyx_skip_dispatch) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations int __pyx_t_1; __Pyx_RefNannySetupContext("settings_timer_start", 0); /* "_qt_qtwogl.pyx":2079 * ##pxm-FUNC P * cpdef settings_timer_start(): * if not uidata.settings_timer.isActive(): # <<<<<<<<<<<<<< * uidata.settings_timer.start() * */ __pyx_t_1 = ((!(__pyx_v_10_qt_qtwogl_uidata.settings_timer->isActive() != 0)) != 0); if (__pyx_t_1) { /* "_qt_qtwogl.pyx":2080 * cpdef settings_timer_start(): * if not uidata.settings_timer.isActive(): * uidata.settings_timer.start() # <<<<<<<<<<<<<< * * ##pxm-FUNC P */ __pyx_v_10_qt_qtwogl_uidata.settings_timer->start(); /* "_qt_qtwogl.pyx":2079 * ##pxm-FUNC P * cpdef settings_timer_start(): * if not uidata.settings_timer.isActive(): # <<<<<<<<<<<<<< * uidata.settings_timer.start() * */ } /* "_qt_qtwogl.pyx":2078 * * ##pxm-FUNC P * cpdef settings_timer_start(): # <<<<<<<<<<<<<< * if not uidata.settings_timer.isActive(): * uidata.settings_timer.start() */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* Python wrapper */ static PyObject *__pyx_pw_10_qt_qtwogl_69settings_timer_start(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/ static PyObject *__pyx_pw_10_qt_qtwogl_69settings_timer_start(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("settings_timer_start (wrapper)", 0); __pyx_r = __pyx_pf_10_qt_qtwogl_68settings_timer_start(__pyx_self); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_10_qt_qtwogl_68settings_timer_start(CYTHON_UNUSED PyObject *__pyx_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("settings_timer_start", 0); __Pyx_XDECREF(__pyx_r); __pyx_t_1 = __pyx_f_10_qt_qtwogl_settings_timer_start(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2078, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("_qt_qtwogl.settings_timer_start", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwogl.pyx":2083 * * ##pxm-FUNC P * cdef void settings_timer_destroy(): # <<<<<<<<<<<<<< * uidata.settings_timer.stop() * uidata.settings_timer.deleteLater() */ static void __pyx_f_10_qt_qtwogl_settings_timer_destroy(void) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("settings_timer_destroy", 0); /* "_qt_qtwogl.pyx":2084 * ##pxm-FUNC P * cdef void settings_timer_destroy(): * uidata.settings_timer.stop() # <<<<<<<<<<<<<< * uidata.settings_timer.deleteLater() * uidata.settings_timer = NULL */ __pyx_v_10_qt_qtwogl_uidata.settings_timer->stop(); /* "_qt_qtwogl.pyx":2085 * cdef void settings_timer_destroy(): * uidata.settings_timer.stop() * uidata.settings_timer.deleteLater() # <<<<<<<<<<<<<< * uidata.settings_timer = NULL * */ __pyx_v_10_qt_qtwogl_uidata.settings_timer->deleteLater(); /* "_qt_qtwogl.pyx":2086 * uidata.settings_timer.stop() * uidata.settings_timer.deleteLater() * uidata.settings_timer = NULL # <<<<<<<<<<<<<< * * def set_animation_speed(): */ __pyx_v_10_qt_qtwogl_uidata.settings_timer = NULL; /* "_qt_qtwogl.pyx":2083 * * ##pxm-FUNC P * cdef void settings_timer_destroy(): # <<<<<<<<<<<<<< * uidata.settings_timer.stop() * uidata.settings_timer.deleteLater() */ /* function exit code */ __Pyx_RefNannyFinishContext(); } /* "_qt_qtwogl.pyx":2088 * uidata.settings_timer = NULL * * def set_animation_speed(): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * uidata.speed = settings['draw.speed'] */ /* Python wrapper */ static PyObject *__pyx_pw_10_qt_qtwogl_71set_animation_speed(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/ static PyMethodDef __pyx_mdef_10_qt_qtwogl_71set_animation_speed = {"set_animation_speed", (PyCFunction)__pyx_pw_10_qt_qtwogl_71set_animation_speed, METH_NOARGS, 0}; static PyObject *__pyx_pw_10_qt_qtwogl_71set_animation_speed(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("set_animation_speed (wrapper)", 0); __pyx_r = __pyx_pf_10_qt_qtwogl_70set_animation_speed(__pyx_self); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_10_qt_qtwogl_70set_animation_speed(CYTHON_UNUSED PyObject *__pyx_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; float __pyx_t_3; __Pyx_RefNannySetupContext("set_animation_speed", 0); /* "_qt_qtwogl.pyx":2090 * def set_animation_speed(): * ##pxm>IF 'qtw' == 'qtw' * uidata.speed = settings['draw.speed'] # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtq' * #~ ctx_invoke(b'animation_speed_changed') */ __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2090, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyObject_GetItem(__pyx_t_1, __pyx_kp_u_draw_speed); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2090, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_3 = __pyx_PyFloat_AsFloat(__pyx_t_2); if (unlikely((__pyx_t_3 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 2090, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_10_qt_qtwogl_uidata.speed = __pyx_t_3; /* "_qt_qtwogl.pyx":2088 * uidata.settings_timer = NULL * * def set_animation_speed(): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * uidata.speed = settings['draw.speed'] */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_AddTraceback("_qt_qtwogl.set_animation_speed", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwogl.pyx":2096 * * ##pxm-FUNC P * cdef void animation_init(): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * uidata.animate_timer = new QTimer() #px/ */ static void __pyx_f_10_qt_qtwogl_animation_init(void) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; __Pyx_RefNannySetupContext("animation_init", 0); /* "_qt_qtwogl.pyx":2098 * cdef void animation_init(): * ##pxm>IF 'qtw' == 'qtw' * uidata.animate_timer = new QTimer() #px/ # <<<<<<<<<<<<<< * #uidata.animate_timer = QTimer() * #uidata.animate_timer.setInterval(5000) */ __pyx_v_10_qt_qtwogl_uidata.animate_timer = new QTimer(); /* "_qt_qtwogl.pyx":2101 * #uidata.animate_timer = QTimer() * #uidata.animate_timer.setInterval(5000) * connect(uidata.animate_timer, &timeout, _on_animate_timer_timeout) #px/ # <<<<<<<<<<<<<< * #uidata.animate_timer.timeout.connect(_on_animate_timer_timeout) * ##pxm>IF 'qtw' == 'qtq' */ QObject::connect(__pyx_v_10_qt_qtwogl_uidata.animate_timer, (&QTimer::timeout), __pyx_f_10_qt_qtwogl__on_animate_timer_timeout); /* "_qt_qtwogl.pyx":2106 * #~ ctx_set(b'animation_running', False) * #~ ##pxm>IF_END * set_animation_speed() # <<<<<<<<<<<<<< * * ##pxm>IF 'qtw' == 'qtw' */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_set_animation_speed); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2106, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } if (__pyx_t_3) { __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2106, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2106, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwogl.pyx":2096 * * ##pxm-FUNC P * cdef void animation_init(): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * uidata.animate_timer = new QTimer() #px/ */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_WriteUnraisable("_qt_qtwogl.animation_init", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); } /* "_qt_qtwogl.pyx":2110 * ##pxm>IF 'qtw' == 'qtw' * ##pxm-FUNC P with gil * cdef void _on_animate_timer_timeout() with gil: # <<<<<<<<<<<<<< * cdef float increment #px+ * increment = uidata.speed * 1e-02 * 20 */ static void __pyx_f_10_qt_qtwogl__on_animate_timer_timeout(void) { float __pyx_v_increment; __Pyx_RefNannyDeclarations long __pyx_t_1; float __pyx_t_2; float __pyx_t_3; int __pyx_t_4; PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; PyObject *__pyx_t_7 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("_on_animate_timer_timeout", 0); /* "_qt_qtwogl.pyx":2112 * cdef void _on_animate_timer_timeout() with gil: * cdef float increment #px+ * increment = uidata.speed * 1e-02 * 20 # <<<<<<<<<<<<<< * increment = min(increment, 45) * uidata.animation_angle += increment */ __pyx_v_increment = ((__pyx_v_10_qt_qtwogl_uidata.speed * 1e-02) * 20.0); /* "_qt_qtwogl.pyx":2113 * cdef float increment #px+ * increment = uidata.speed * 1e-02 * 20 * increment = min(increment, 45) # <<<<<<<<<<<<<< * uidata.animation_angle += increment * glarea.set_animation_next(uidata.animation_angle) */ __pyx_t_1 = 45; __pyx_t_2 = __pyx_v_increment; if (((__pyx_t_1 < __pyx_t_2) != 0)) { __pyx_t_3 = __pyx_t_1; } else { __pyx_t_3 = __pyx_t_2; } __pyx_v_increment = __pyx_t_3; /* "_qt_qtwogl.pyx":2114 * increment = uidata.speed * 1e-02 * 20 * increment = min(increment, 45) * uidata.animation_angle += increment # <<<<<<<<<<<<<< * glarea.set_animation_next(uidata.animation_angle) * if uidata.animation_angle < uidata.angle_max: */ __pyx_v_10_qt_qtwogl_uidata.animation_angle = (__pyx_v_10_qt_qtwogl_uidata.animation_angle + __pyx_v_increment); /* "_qt_qtwogl.pyx":2115 * increment = min(increment, 45) * uidata.animation_angle += increment * glarea.set_animation_next(uidata.animation_angle) # <<<<<<<<<<<<<< * if uidata.animation_angle < uidata.angle_max: * update_drawingarea() */ __pyx_f_11_glarea_ogl_set_animation_next(__pyx_v_10_qt_qtwogl_uidata.animation_angle); /* "_qt_qtwogl.pyx":2116 * uidata.animation_angle += increment * glarea.set_animation_next(uidata.animation_angle) * if uidata.animation_angle < uidata.angle_max: # <<<<<<<<<<<<<< * update_drawingarea() * else: */ __pyx_t_4 = ((__pyx_v_10_qt_qtwogl_uidata.animation_angle < __pyx_v_10_qt_qtwogl_uidata.angle_max) != 0); if (__pyx_t_4) { /* "_qt_qtwogl.pyx":2117 * glarea.set_animation_next(uidata.animation_angle) * if uidata.animation_angle < uidata.angle_max: * update_drawingarea() # <<<<<<<<<<<<<< * else: * pydata.app.on_animation_ending() */ __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_update_drawingarea); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2117, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); } } if (__pyx_t_7) { __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2117, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } else { __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2117, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; /* "_qt_qtwogl.pyx":2116 * uidata.animation_angle += increment * glarea.set_animation_next(uidata.animation_angle) * if uidata.animation_angle < uidata.angle_max: # <<<<<<<<<<<<<< * update_drawingarea() * else: */ goto __pyx_L3; } /* "_qt_qtwogl.pyx":2119 * update_drawingarea() * else: * pydata.app.on_animation_ending() # <<<<<<<<<<<<<< * ##pxm>IF_END * */ /*else*/ { __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2119, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_app); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2119, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_on_animation_ending); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2119, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); } } if (__pyx_t_7) { __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2119, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } else { __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2119, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __pyx_L3:; /* "_qt_qtwogl.pyx":2110 * ##pxm>IF 'qtw' == 'qtw' * ##pxm-FUNC P with gil * cdef void _on_animate_timer_timeout() with gil: # <<<<<<<<<<<<<< * cdef float increment #px+ * increment = uidata.speed * 1e-02 * 20 */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_WriteUnraisable("_qt_qtwogl._on_animate_timer_timeout", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwogl.pyx":2123 * * ##pxm-FUNC P * cpdef animate_timer_start(msec, angle_max): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * uidata.animation_angle = 0. */ static PyObject *__pyx_pw_10_qt_qtwogl_73animate_timer_start(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static PyObject *__pyx_f_10_qt_qtwogl_animate_timer_start(PyObject *__pyx_v_msec, PyObject *__pyx_v_angle_max, CYTHON_UNUSED int __pyx_skip_dispatch) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations float __pyx_t_1; int __pyx_t_2; int __pyx_t_3; __Pyx_RefNannySetupContext("animate_timer_start", 0); /* "_qt_qtwogl.pyx":2125 * cpdef animate_timer_start(msec, angle_max): * ##pxm>IF 'qtw' == 'qtw' * uidata.animation_angle = 0. # <<<<<<<<<<<<<< * uidata.angle_max = angle_max * if not uidata.animate_timer.isActive(): */ __pyx_v_10_qt_qtwogl_uidata.animation_angle = 0.; /* "_qt_qtwogl.pyx":2126 * ##pxm>IF 'qtw' == 'qtw' * uidata.animation_angle = 0. * uidata.angle_max = angle_max # <<<<<<<<<<<<<< * if not uidata.animate_timer.isActive(): * uidata.animate_timer.start(msec) */ __pyx_t_1 = __pyx_PyFloat_AsFloat(__pyx_v_angle_max); if (unlikely((__pyx_t_1 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 2126, __pyx_L1_error) __pyx_v_10_qt_qtwogl_uidata.angle_max = __pyx_t_1; /* "_qt_qtwogl.pyx":2127 * uidata.animation_angle = 0. * uidata.angle_max = angle_max * if not uidata.animate_timer.isActive(): # <<<<<<<<<<<<<< * uidata.animate_timer.start(msec) * ##pxm>IF 'qtw' == 'qtq' */ __pyx_t_2 = ((!(__pyx_v_10_qt_qtwogl_uidata.animate_timer->isActive() != 0)) != 0); if (__pyx_t_2) { /* "_qt_qtwogl.pyx":2128 * uidata.angle_max = angle_max * if not uidata.animate_timer.isActive(): * uidata.animate_timer.start(msec) # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtq' * #~ ctx_set(b'animation_maxangle', angle_max) */ __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_v_msec); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2128, __pyx_L1_error) __pyx_v_10_qt_qtwogl_uidata.animate_timer->start(__pyx_t_3); /* "_qt_qtwogl.pyx":2127 * uidata.animation_angle = 0. * uidata.angle_max = angle_max * if not uidata.animate_timer.isActive(): # <<<<<<<<<<<<<< * uidata.animate_timer.start(msec) * ##pxm>IF 'qtw' == 'qtq' */ } /* "_qt_qtwogl.pyx":2123 * * ##pxm-FUNC P * cpdef animate_timer_start(msec, angle_max): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * uidata.animation_angle = 0. */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("_qt_qtwogl.animate_timer_start", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = 0; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* Python wrapper */ static PyObject *__pyx_pw_10_qt_qtwogl_73animate_timer_start(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static PyObject *__pyx_pw_10_qt_qtwogl_73animate_timer_start(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_msec = 0; PyObject *__pyx_v_angle_max = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("animate_timer_start (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_msec,&__pyx_n_s_angle_max,0}; PyObject* values[2] = {0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_msec)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_angle_max)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("animate_timer_start", 1, 2, 2, 1); __PYX_ERR(0, 2123, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "animate_timer_start") < 0)) __PYX_ERR(0, 2123, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); } __pyx_v_msec = values[0]; __pyx_v_angle_max = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("animate_timer_start", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2123, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("_qt_qtwogl.animate_timer_start", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_10_qt_qtwogl_72animate_timer_start(__pyx_self, __pyx_v_msec, __pyx_v_angle_max); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_10_qt_qtwogl_72animate_timer_start(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_msec, PyObject *__pyx_v_angle_max) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("animate_timer_start", 0); __Pyx_XDECREF(__pyx_r); __pyx_t_1 = __pyx_f_10_qt_qtwogl_animate_timer_start(__pyx_v_msec, __pyx_v_angle_max, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2123, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0; /* function exit code */ __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("_qt_qtwogl.animate_timer_start", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwogl.pyx":2135 * * # only for demos * def animate_timer_step(angle_max): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * uidata.angle_max = angle_max */ /* Python wrapper */ static PyObject *__pyx_pw_10_qt_qtwogl_75animate_timer_step(PyObject *__pyx_self, PyObject *__pyx_v_angle_max); /*proto*/ static PyMethodDef __pyx_mdef_10_qt_qtwogl_75animate_timer_step = {"animate_timer_step", (PyCFunction)__pyx_pw_10_qt_qtwogl_75animate_timer_step, METH_O, 0}; static PyObject *__pyx_pw_10_qt_qtwogl_75animate_timer_step(PyObject *__pyx_self, PyObject *__pyx_v_angle_max) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("animate_timer_step (wrapper)", 0); __pyx_r = __pyx_pf_10_qt_qtwogl_74animate_timer_step(__pyx_self, ((PyObject *)__pyx_v_angle_max)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_10_qt_qtwogl_74animate_timer_step(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_angle_max) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations float __pyx_t_1; __Pyx_RefNannySetupContext("animate_timer_step", 0); /* "_qt_qtwogl.pyx":2137 * def animate_timer_step(angle_max): * ##pxm>IF 'qtw' == 'qtw' * uidata.angle_max = angle_max # <<<<<<<<<<<<<< * _on_animate_timer_timeout() * ##pxm>IF_END */ __pyx_t_1 = __pyx_PyFloat_AsFloat(__pyx_v_angle_max); if (unlikely((__pyx_t_1 == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 2137, __pyx_L1_error) __pyx_v_10_qt_qtwogl_uidata.angle_max = __pyx_t_1; /* "_qt_qtwogl.pyx":2138 * ##pxm>IF 'qtw' == 'qtw' * uidata.angle_max = angle_max * _on_animate_timer_timeout() # <<<<<<<<<<<<<< * ##pxm>IF_END * pass */ __pyx_f_10_qt_qtwogl__on_animate_timer_timeout(); /* "_qt_qtwogl.pyx":2135 * * # only for demos * def animate_timer_step(angle_max): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * uidata.angle_max = angle_max */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_AddTraceback("_qt_qtwogl.animate_timer_step", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwogl.pyx":2142 * pass * * def animate_timer_stop(): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * uidata.animate_timer.stop() */ /* Python wrapper */ static PyObject *__pyx_pw_10_qt_qtwogl_77animate_timer_stop(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/ static PyMethodDef __pyx_mdef_10_qt_qtwogl_77animate_timer_stop = {"animate_timer_stop", (PyCFunction)__pyx_pw_10_qt_qtwogl_77animate_timer_stop, METH_NOARGS, 0}; static PyObject *__pyx_pw_10_qt_qtwogl_77animate_timer_stop(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("animate_timer_stop (wrapper)", 0); __pyx_r = __pyx_pf_10_qt_qtwogl_76animate_timer_stop(__pyx_self); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_10_qt_qtwogl_76animate_timer_stop(CYTHON_UNUSED PyObject *__pyx_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("animate_timer_stop", 0); /* "_qt_qtwogl.pyx":2144 * def animate_timer_stop(): * ##pxm>IF 'qtw' == 'qtw' * uidata.animate_timer.stop() # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtq' * #~ ctx_set(b'animation_running', False) */ __pyx_v_10_qt_qtwogl_uidata.animate_timer->stop(); /* "_qt_qtwogl.pyx":2142 * pass * * def animate_timer_stop(): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * uidata.animate_timer.stop() */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwogl.pyx":2151 * ##pxm>IF 'qtw' == 'qtw' * ##pxm-FUNC P * cdef void animate_timer_destroy(): # <<<<<<<<<<<<<< * uidata.animate_timer.stop() * uidata.animate_timer.deleteLater() */ static void __pyx_f_10_qt_qtwogl_animate_timer_destroy(void) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("animate_timer_destroy", 0); /* "_qt_qtwogl.pyx":2152 * ##pxm-FUNC P * cdef void animate_timer_destroy(): * uidata.animate_timer.stop() # <<<<<<<<<<<<<< * uidata.animate_timer.deleteLater() * uidata.animate_timer = NULL */ __pyx_v_10_qt_qtwogl_uidata.animate_timer->stop(); /* "_qt_qtwogl.pyx":2153 * cdef void animate_timer_destroy(): * uidata.animate_timer.stop() * uidata.animate_timer.deleteLater() # <<<<<<<<<<<<<< * uidata.animate_timer = NULL * ##pxm>IF_END */ __pyx_v_10_qt_qtwogl_uidata.animate_timer->deleteLater(); /* "_qt_qtwogl.pyx":2154 * uidata.animate_timer.stop() * uidata.animate_timer.deleteLater() * uidata.animate_timer = NULL # <<<<<<<<<<<<<< * ##pxm>IF_END * */ __pyx_v_10_qt_qtwogl_uidata.animate_timer = NULL; /* "_qt_qtwogl.pyx":2151 * ##pxm>IF 'qtw' == 'qtw' * ##pxm-FUNC P * cdef void animate_timer_destroy(): # <<<<<<<<<<<<<< * uidata.animate_timer.stop() * uidata.animate_timer.deleteLater() */ /* function exit code */ __Pyx_RefNannyFinishContext(); } /* "_qt_qtwogl.pyx":2158 * * ##pxm-FUNC P * cdef void load_cursors(filepattern): # <<<<<<<<<<<<<< * cdef QImage images[17] #px/ * #images = [None]*17 */ static void __pyx_f_10_qt_qtwogl_load_cursors(PyObject *__pyx_v_filepattern) { QImage __pyx_v_images[17]; PyObject *__pyx_v_pos = NULL; PyObject *__pyx_v_i = NULL; PyObject *__pyx_v_x = NULL; PyObject *__pyx_v_y = NULL; PyObject *__pyx_v_filename = NULL; QTransform __pyx_v_transform; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; Py_ssize_t __pyx_t_4; PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; PyObject *__pyx_t_7 = NULL; PyObject *(*__pyx_t_8)(PyObject *); Py_ssize_t __pyx_t_9; int __pyx_t_10; PyObject *(*__pyx_t_11)(PyObject *); Py_ssize_t __pyx_t_12; int __pyx_t_13; int __pyx_t_14; __Pyx_RefNannySetupContext("load_cursors", 0); /* "_qt_qtwogl.pyx":2161 * cdef QImage images[17] #px/ * #images = [None]*17 * pos = [] # <<<<<<<<<<<<<< * # Load 3 cursors from file (n - ne) * for i, (x, y) in enumerate([(8, 0), (15, 0), (15, 0)]): */ __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2161, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_pos = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwogl.pyx":2163 * pos = [] * # Load 3 cursors from file (n - ne) * for i, (x, y) in enumerate([(8, 0), (15, 0), (15, 0)]): # <<<<<<<<<<<<<< * filename = filepattern.format(i) * images[i+1] = QImage(str2q(filename)) */ __Pyx_INCREF(__pyx_int_0); __pyx_t_1 = __pyx_int_0; __pyx_t_2 = PyList_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2163, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_tuple__25); __Pyx_GIVEREF(__pyx_tuple__25); PyList_SET_ITEM(__pyx_t_2, 0, __pyx_tuple__25); __Pyx_INCREF(__pyx_tuple__26); __Pyx_GIVEREF(__pyx_tuple__26); PyList_SET_ITEM(__pyx_t_2, 1, __pyx_tuple__26); __Pyx_INCREF(__pyx_tuple__27); __Pyx_GIVEREF(__pyx_tuple__27); PyList_SET_ITEM(__pyx_t_2, 2, __pyx_tuple__27); __pyx_t_3 = __pyx_t_2; __Pyx_INCREF(__pyx_t_3); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; for (;;) { if (__pyx_t_4 >= 3) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_2 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 2163, __pyx_L1_error) #else __pyx_t_2 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2163, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); #endif if ((likely(PyTuple_CheckExact(__pyx_t_2))) || (PyList_CheckExact(__pyx_t_2))) { PyObject* sequence = __pyx_t_2; #if !CYTHON_COMPILING_IN_PYPY Py_ssize_t size = Py_SIZE(sequence); #else Py_ssize_t size = PySequence_Size(sequence); #endif if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 2163, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_5 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_5 = PyList_GET_ITEM(sequence, 0); __pyx_t_6 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(__pyx_t_6); #else __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2163, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2163, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); #endif __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else { Py_ssize_t index = -1; __pyx_t_7 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2163, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_8 = Py_TYPE(__pyx_t_7)->tp_iternext; index = 0; __pyx_t_5 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_5)) goto __pyx_L5_unpacking_failed; __Pyx_GOTREF(__pyx_t_5); index = 1; __pyx_t_6 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_6)) goto __pyx_L5_unpacking_failed; __Pyx_GOTREF(__pyx_t_6); if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 2) < 0) __PYX_ERR(0, 2163, __pyx_L1_error) __pyx_t_8 = NULL; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; goto __pyx_L6_unpacking_done; __pyx_L5_unpacking_failed:; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_8 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 2163, __pyx_L1_error) __pyx_L6_unpacking_done:; } __Pyx_XDECREF_SET(__pyx_v_x, __pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF_SET(__pyx_v_y, __pyx_t_6); __pyx_t_6 = 0; __Pyx_INCREF(__pyx_t_1); __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_1); __pyx_t_2 = __Pyx_PyInt_AddObjC(__pyx_t_1, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2163, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = __pyx_t_2; __pyx_t_2 = 0; /* "_qt_qtwogl.pyx":2164 * # Load 3 cursors from file (n - ne) * for i, (x, y) in enumerate([(8, 0), (15, 0), (15, 0)]): * filename = filepattern.format(i) # <<<<<<<<<<<<<< * images[i+1] = QImage(str2q(filename)) * pos.append((x, y)) */ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_filepattern, __pyx_n_s_format); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2164, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); } } if (!__pyx_t_5) { __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_i); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2164, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_v_i}; __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2164, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_2); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[2] = {__pyx_t_5, __pyx_v_i}; __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2164, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_2); } else #endif { __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2164, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL; __Pyx_INCREF(__pyx_v_i); __Pyx_GIVEREF(__pyx_v_i); PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_v_i); __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2164, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF_SET(__pyx_v_filename, __pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwogl.pyx":2165 * for i, (x, y) in enumerate([(8, 0), (15, 0), (15, 0)]): * filename = filepattern.format(i) * images[i+1] = QImage(str2q(filename)) # <<<<<<<<<<<<<< * pos.append((x, y)) * # 1 cursor (nnw) */ __pyx_t_2 = __Pyx_PyInt_AddObjC(__pyx_v_i, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2165, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_9 = __Pyx_PyIndex_AsSsize_t(__pyx_t_2); if (unlikely((__pyx_t_9 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2165, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; (__pyx_v_images[__pyx_t_9]) = QImage(__pyx_f_10_qt_qtwogl_str2q(__pyx_v_filename)); /* "_qt_qtwogl.pyx":2166 * filename = filepattern.format(i) * images[i+1] = QImage(str2q(filename)) * pos.append((x, y)) # <<<<<<<<<<<<<< * # 1 cursor (nnw) * x, y = pos[1] */ __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2166, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_x); __Pyx_GIVEREF(__pyx_v_x); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_x); __Pyx_INCREF(__pyx_v_y); __Pyx_GIVEREF(__pyx_v_y); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_y); __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_pos, __pyx_t_2); if (unlikely(__pyx_t_10 == -1)) __PYX_ERR(0, 2166, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwogl.pyx":2163 * pos = [] * # Load 3 cursors from file (n - ne) * for i, (x, y) in enumerate([(8, 0), (15, 0), (15, 0)]): # <<<<<<<<<<<<<< * filename = filepattern.format(i) * images[i+1] = QImage(str2q(filename)) */ } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwogl.pyx":2168 * pos.append((x, y)) * # 1 cursor (nnw) * x, y = pos[1] # <<<<<<<<<<<<<< * images[0] = images[2].mirrored(True, False) * pos.insert(0, (15-x, y)) */ __pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_pos, 1, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2168, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; #if !CYTHON_COMPILING_IN_PYPY Py_ssize_t size = Py_SIZE(sequence); #else Py_ssize_t size = PySequence_Size(sequence); #endif if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 2168, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_3 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_2 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_3 = PyList_GET_ITEM(sequence, 0); __pyx_t_2 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(__pyx_t_2); #else __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2168, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2168, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2168, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_8 = Py_TYPE(__pyx_t_6)->tp_iternext; index = 0; __pyx_t_3 = __pyx_t_8(__pyx_t_6); if (unlikely(!__pyx_t_3)) goto __pyx_L7_unpacking_failed; __Pyx_GOTREF(__pyx_t_3); index = 1; __pyx_t_2 = __pyx_t_8(__pyx_t_6); if (unlikely(!__pyx_t_2)) goto __pyx_L7_unpacking_failed; __Pyx_GOTREF(__pyx_t_2); if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_6), 2) < 0) __PYX_ERR(0, 2168, __pyx_L1_error) __pyx_t_8 = NULL; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; goto __pyx_L8_unpacking_done; __pyx_L7_unpacking_failed:; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_8 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 2168, __pyx_L1_error) __pyx_L8_unpacking_done:; } __Pyx_XDECREF_SET(__pyx_v_x, __pyx_t_3); __pyx_t_3 = 0; __Pyx_XDECREF_SET(__pyx_v_y, __pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwogl.pyx":2169 * # 1 cursor (nnw) * x, y = pos[1] * images[0] = images[2].mirrored(True, False) # <<<<<<<<<<<<<< * pos.insert(0, (15-x, y)) * # 12 cursors (ene - nw) */ (__pyx_v_images[0]) = (__pyx_v_images[2]).mirrored(1, 0); /* "_qt_qtwogl.pyx":2170 * x, y = pos[1] * images[0] = images[2].mirrored(True, False) * pos.insert(0, (15-x, y)) # <<<<<<<<<<<<<< * # 12 cursors (ene - nw) * cdef QTransform transform #px/ */ __pyx_t_1 = __Pyx_PyInt_SubtractCObj(__pyx_int_15, __pyx_v_x, 15, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2170, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2170, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1); __Pyx_INCREF(__pyx_v_y); __Pyx_GIVEREF(__pyx_v_y); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_y); __pyx_t_1 = 0; __pyx_t_10 = PyList_Insert(__pyx_v_pos, 0, __pyx_t_2); if (unlikely(__pyx_t_10 == -1)) __PYX_ERR(0, 2170, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwogl.pyx":2174 * cdef QTransform transform #px/ * #transform = QTransform() * transform.rotate(90) # <<<<<<<<<<<<<< * for i in range(4, 16): * x, y = pos[i-4] */ __pyx_v_transform.rotate(90.0); /* "_qt_qtwogl.pyx":2175 * #transform = QTransform() * transform.rotate(90) * for i in range(4, 16): # <<<<<<<<<<<<<< * x, y = pos[i-4] * images[i] = images[i-4].transformed(transform) */ __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_tuple__28, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2175, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (likely(PyList_CheckExact(__pyx_t_2)) || PyTuple_CheckExact(__pyx_t_2)) { __pyx_t_1 = __pyx_t_2; __Pyx_INCREF(__pyx_t_1); __pyx_t_4 = 0; __pyx_t_11 = NULL; } else { __pyx_t_4 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2175, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_11 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2175, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; for (;;) { if (likely(!__pyx_t_11)) { if (likely(PyList_CheckExact(__pyx_t_1))) { if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_1)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 2175, __pyx_L1_error) #else __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2175, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); #endif } else { if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_1)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 2175, __pyx_L1_error) #else __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2175, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); #endif } } else { __pyx_t_2 = __pyx_t_11(__pyx_t_1); if (unlikely(!__pyx_t_2)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 2175, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_2); } __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwogl.pyx":2176 * transform.rotate(90) * for i in range(4, 16): * x, y = pos[i-4] # <<<<<<<<<<<<<< * images[i] = images[i-4].transformed(transform) * pos.append((15-y, x)) */ __pyx_t_2 = __Pyx_PyInt_SubtractObjC(__pyx_v_i, __pyx_int_4, 4, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2176, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyObject_GetItem(__pyx_v_pos, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2176, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) { PyObject* sequence = __pyx_t_3; #if !CYTHON_COMPILING_IN_PYPY Py_ssize_t size = Py_SIZE(sequence); #else Py_ssize_t size = PySequence_Size(sequence); #endif if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 2176, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_2 = PyList_GET_ITEM(sequence, 0); __pyx_t_6 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx_t_6); #else __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2176, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2176, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); #endif __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { Py_ssize_t index = -1; __pyx_t_7 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2176, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_8 = Py_TYPE(__pyx_t_7)->tp_iternext; index = 0; __pyx_t_2 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_2)) goto __pyx_L11_unpacking_failed; __Pyx_GOTREF(__pyx_t_2); index = 1; __pyx_t_6 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_6)) goto __pyx_L11_unpacking_failed; __Pyx_GOTREF(__pyx_t_6); if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 2) < 0) __PYX_ERR(0, 2176, __pyx_L1_error) __pyx_t_8 = NULL; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; goto __pyx_L12_unpacking_done; __pyx_L11_unpacking_failed:; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_8 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 2176, __pyx_L1_error) __pyx_L12_unpacking_done:; } __Pyx_DECREF_SET(__pyx_v_x, __pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF_SET(__pyx_v_y, __pyx_t_6); __pyx_t_6 = 0; /* "_qt_qtwogl.pyx":2177 * for i in range(4, 16): * x, y = pos[i-4] * images[i] = images[i-4].transformed(transform) # <<<<<<<<<<<<<< * pos.append((15-y, x)) * images[16] = images[0] */ __pyx_t_3 = __Pyx_PyInt_SubtractObjC(__pyx_v_i, __pyx_int_4, 4, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2177, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_9 = __Pyx_PyIndex_AsSsize_t(__pyx_t_3); if (unlikely((__pyx_t_9 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2177, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_12 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_12 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2177, __pyx_L1_error) (__pyx_v_images[__pyx_t_12]) = (__pyx_v_images[__pyx_t_9]).transformed(__pyx_v_transform); /* "_qt_qtwogl.pyx":2178 * x, y = pos[i-4] * images[i] = images[i-4].transformed(transform) * pos.append((15-y, x)) # <<<<<<<<<<<<<< * images[16] = images[0] * pos.append(pos[0]) */ __pyx_t_3 = __Pyx_PyInt_SubtractCObj(__pyx_int_15, __pyx_v_y, 15, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2178, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2178, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3); __Pyx_INCREF(__pyx_v_x); __Pyx_GIVEREF(__pyx_v_x); PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_v_x); __pyx_t_3 = 0; __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_pos, __pyx_t_6); if (unlikely(__pyx_t_10 == -1)) __PYX_ERR(0, 2178, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; /* "_qt_qtwogl.pyx":2175 * #transform = QTransform() * transform.rotate(90) * for i in range(4, 16): # <<<<<<<<<<<<<< * x, y = pos[i-4] * images[i] = images[i-4].transformed(transform) */ } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwogl.pyx":2179 * images[i] = images[i-4].transformed(transform) * pos.append((15-y, x)) * images[16] = images[0] # <<<<<<<<<<<<<< * pos.append(pos[0]) * for i in range(16): */ (__pyx_v_images[16]) = (__pyx_v_images[0]); /* "_qt_qtwogl.pyx":2180 * pos.append((15-y, x)) * images[16] = images[0] * pos.append(pos[0]) # <<<<<<<<<<<<<< * for i in range(16): * x, y = pos[i+1] */ __pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_pos, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2180, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_pos, __pyx_t_1); if (unlikely(__pyx_t_10 == -1)) __PYX_ERR(0, 2180, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwogl.pyx":2181 * images[16] = images[0] * pos.append(pos[0]) * for i in range(16): # <<<<<<<<<<<<<< * x, y = pos[i+1] * uidata.cursors[i] = new QCursor(fromImage(images[i+1]), x, y) #px/ */ __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_tuple__29, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2181, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) { __pyx_t_6 = __pyx_t_1; __Pyx_INCREF(__pyx_t_6); __pyx_t_4 = 0; __pyx_t_11 = NULL; } else { __pyx_t_4 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2181, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_11 = Py_TYPE(__pyx_t_6)->tp_iternext; if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2181, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; for (;;) { if (likely(!__pyx_t_11)) { if (likely(PyList_CheckExact(__pyx_t_6))) { if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_6)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_1 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 2181, __pyx_L1_error) #else __pyx_t_1 = PySequence_ITEM(__pyx_t_6, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2181, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); #endif } else { if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_6)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 2181, __pyx_L1_error) #else __pyx_t_1 = PySequence_ITEM(__pyx_t_6, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2181, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); #endif } } else { __pyx_t_1 = __pyx_t_11(__pyx_t_6); if (unlikely(!__pyx_t_1)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 2181, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_1); } __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwogl.pyx":2182 * pos.append(pos[0]) * for i in range(16): * x, y = pos[i+1] # <<<<<<<<<<<<<< * uidata.cursors[i] = new QCursor(fromImage(images[i+1]), x, y) #px/ * #uidata.cursors[i] = QCursor(fromImage(images[i+1]), x, y) */ __pyx_t_1 = __Pyx_PyInt_AddObjC(__pyx_v_i, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2182, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = PyObject_GetItem(__pyx_v_pos, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2182, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) { PyObject* sequence = __pyx_t_3; #if !CYTHON_COMPILING_IN_PYPY Py_ssize_t size = Py_SIZE(sequence); #else Py_ssize_t size = PySequence_Size(sequence); #endif if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 2182, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_1 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_2 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_1 = PyList_GET_ITEM(sequence, 0); __pyx_t_2 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(__pyx_t_2); #else __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2182, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2182, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); #endif __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { Py_ssize_t index = -1; __pyx_t_7 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2182, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_8 = Py_TYPE(__pyx_t_7)->tp_iternext; index = 0; __pyx_t_1 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_1)) goto __pyx_L15_unpacking_failed; __Pyx_GOTREF(__pyx_t_1); index = 1; __pyx_t_2 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_2)) goto __pyx_L15_unpacking_failed; __Pyx_GOTREF(__pyx_t_2); if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 2) < 0) __PYX_ERR(0, 2182, __pyx_L1_error) __pyx_t_8 = NULL; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; goto __pyx_L16_unpacking_done; __pyx_L15_unpacking_failed:; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_8 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 2182, __pyx_L1_error) __pyx_L16_unpacking_done:; } __Pyx_DECREF_SET(__pyx_v_x, __pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF_SET(__pyx_v_y, __pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwogl.pyx":2183 * for i in range(16): * x, y = pos[i+1] * uidata.cursors[i] = new QCursor(fromImage(images[i+1]), x, y) #px/ # <<<<<<<<<<<<<< * #uidata.cursors[i] = QCursor(fromImage(images[i+1]), x, y) * # cursor for center faces */ __pyx_t_3 = __Pyx_PyInt_AddObjC(__pyx_v_i, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2183, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_9 = __Pyx_PyIndex_AsSsize_t(__pyx_t_3); if (unlikely((__pyx_t_9 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2183, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_13 = __Pyx_PyInt_As_int(__pyx_v_x); if (unlikely((__pyx_t_13 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2183, __pyx_L1_error) __pyx_t_14 = __Pyx_PyInt_As_int(__pyx_v_y); if (unlikely((__pyx_t_14 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2183, __pyx_L1_error) __pyx_t_12 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_12 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2183, __pyx_L1_error) (__pyx_v_10_qt_qtwogl_uidata.cursors[__pyx_t_12]) = new QCursor(QPixmap::fromImage((__pyx_v_images[__pyx_t_9])), __pyx_t_13, __pyx_t_14); /* "_qt_qtwogl.pyx":2181 * images[16] = images[0] * pos.append(pos[0]) * for i in range(16): # <<<<<<<<<<<<<< * x, y = pos[i+1] * uidata.cursors[i] = new QCursor(fromImage(images[i+1]), x, y) #px/ */ } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; /* "_qt_qtwogl.pyx":2186 * #uidata.cursors[i] = QCursor(fromImage(images[i+1]), x, y) * # cursor for center faces * filename = filepattern.format('ccw') # <<<<<<<<<<<<<< * uidata.cursors[16] = new QCursor(QPixmap(str2q(filename)), 7, 7) #px/ * #uidata.cursors[16] = QCursor(QPixmap(str2q(filename)), 7, 7) */ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_filepattern, __pyx_n_s_format); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2186, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple__30, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2186, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF_SET(__pyx_v_filename, __pyx_t_3); __pyx_t_3 = 0; /* "_qt_qtwogl.pyx":2187 * # cursor for center faces * filename = filepattern.format('ccw') * uidata.cursors[16] = new QCursor(QPixmap(str2q(filename)), 7, 7) #px/ # <<<<<<<<<<<<<< * #uidata.cursors[16] = QCursor(QPixmap(str2q(filename)), 7, 7) * # background cursor */ (__pyx_v_10_qt_qtwogl_uidata.cursors[16]) = new QCursor(QPixmap(__pyx_f_10_qt_qtwogl_str2q(__pyx_v_filename)), 7, 7); /* "_qt_qtwogl.pyx":2190 * #uidata.cursors[16] = QCursor(QPixmap(str2q(filename)), 7, 7) * # background cursor * uidata.cursors[17] = new QCursor() #px/ # <<<<<<<<<<<<<< * #uidata.cursors[17] = QCursor() * uidata.cursors[17].setShape(Qt.CrossCursor) */ (__pyx_v_10_qt_qtwogl_uidata.cursors[17]) = new QCursor(); /* "_qt_qtwogl.pyx":2192 * uidata.cursors[17] = new QCursor() #px/ * #uidata.cursors[17] = QCursor() * uidata.cursors[17].setShape(Qt.CrossCursor) # <<<<<<<<<<<<<< * * ##pxm-FUNC P */ (__pyx_v_10_qt_qtwogl_uidata.cursors[17])->setShape(Qt::CrossCursor); /* "_qt_qtwogl.pyx":2158 * * ##pxm-FUNC P * cdef void load_cursors(filepattern): # <<<<<<<<<<<<<< * cdef QImage images[17] #px/ * #images = [None]*17 */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_WriteUnraisable("_qt_qtwogl.load_cursors", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_XDECREF(__pyx_v_pos); __Pyx_XDECREF(__pyx_v_i); __Pyx_XDECREF(__pyx_v_x); __Pyx_XDECREF(__pyx_v_y); __Pyx_XDECREF(__pyx_v_filename); __Pyx_RefNannyFinishContext(); } /* "_qt_qtwogl.pyx":2195 * * ##pxm-FUNC P * cdef void destroy_cursors(): # <<<<<<<<<<<<<< * for i in range(18): * del uidata.cursors[i] #px+ */ static void __pyx_f_10_qt_qtwogl_destroy_cursors(void) { long __pyx_v_i; __Pyx_RefNannyDeclarations long __pyx_t_1; __Pyx_RefNannySetupContext("destroy_cursors", 0); /* "_qt_qtwogl.pyx":2196 * ##pxm-FUNC P * cdef void destroy_cursors(): * for i in range(18): # <<<<<<<<<<<<<< * del uidata.cursors[i] #px+ * uidata.cursors[i] = NULL */ for (__pyx_t_1 = 0; __pyx_t_1 < 18; __pyx_t_1+=1) { __pyx_v_i = __pyx_t_1; /* "_qt_qtwogl.pyx":2197 * cdef void destroy_cursors(): * for i in range(18): * del uidata.cursors[i] #px+ # <<<<<<<<<<<<<< * uidata.cursors[i] = NULL * */ delete (__pyx_v_10_qt_qtwogl_uidata.cursors[__pyx_v_i]); /* "_qt_qtwogl.pyx":2198 * for i in range(18): * del uidata.cursors[i] #px+ * uidata.cursors[i] = NULL # <<<<<<<<<<<<<< * * ##pxm-FUNC P */ (__pyx_v_10_qt_qtwogl_uidata.cursors[__pyx_v_i]) = NULL; } /* "_qt_qtwogl.pyx":2195 * * ##pxm-FUNC P * cdef void destroy_cursors(): # <<<<<<<<<<<<<< * for i in range(18): * del uidata.cursors[i] #px+ */ /* function exit code */ __Pyx_RefNannyFinishContext(); } /* "_qt_qtwogl.pyx":2201 * * ##pxm-FUNC P * cdef void destroy_resources(): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * uidata.drawingarea.makeCurrent() */ static void __pyx_f_10_qt_qtwogl_destroy_resources(void) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; __Pyx_RefNannySetupContext("destroy_resources", 0); /* "_qt_qtwogl.pyx":2203 * cdef void destroy_resources(): * ##pxm>IF 'qtw' == 'qtw' * uidata.drawingarea.makeCurrent() # <<<<<<<<<<<<<< * gl_delete_atlas() * glarea.gl_exit() */ __pyx_v_10_qt_qtwogl_uidata.drawingarea->makeCurrent(); /* "_qt_qtwogl.pyx":2204 * ##pxm>IF 'qtw' == 'qtw' * uidata.drawingarea.makeCurrent() * gl_delete_atlas() # <<<<<<<<<<<<<< * glarea.gl_exit() * uidata.drawingarea.doneCurrent() */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_gl_delete_atlas); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2204, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } if (__pyx_t_3) { __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2204, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2204, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwogl.pyx":2205 * uidata.drawingarea.makeCurrent() * gl_delete_atlas() * glarea.gl_exit() # <<<<<<<<<<<<<< * uidata.drawingarea.doneCurrent() * uidata.drawingarea.setMouseTracking(False) */ __pyx_f_11_glarea_ogl_gl_exit(); /* "_qt_qtwogl.pyx":2206 * gl_delete_atlas() * glarea.gl_exit() * uidata.drawingarea.doneCurrent() # <<<<<<<<<<<<<< * uidata.drawingarea.setMouseTracking(False) * ##pxm>IF 'qtw' == 'qtq' */ __pyx_v_10_qt_qtwogl_uidata.drawingarea->doneCurrent(); /* "_qt_qtwogl.pyx":2207 * glarea.gl_exit() * uidata.drawingarea.doneCurrent() * uidata.drawingarea.setMouseTracking(False) # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtq' * #~ settings['window.size'] = uidata.mainwindow.width(), uidata.mainwindow.height() */ __pyx_v_10_qt_qtwogl_uidata.drawingarea->setMouseTracking(0); /* "_qt_qtwogl.pyx":2201 * * ##pxm-FUNC P * cdef void destroy_resources(): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * uidata.drawingarea.makeCurrent() */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_WriteUnraisable("_qt_qtwogl.destroy_resources", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); } /* "_qt_qtwogl.pyx":2212 * #~ ##pxm>IF_END * * def create_window(pyapp): # <<<<<<<<<<<<<< * pydata.app = pyapp * init_module() */ /* Python wrapper */ static PyObject *__pyx_pw_10_qt_qtwogl_79create_window(PyObject *__pyx_self, PyObject *__pyx_v_pyapp); /*proto*/ static PyMethodDef __pyx_mdef_10_qt_qtwogl_79create_window = {"create_window", (PyCFunction)__pyx_pw_10_qt_qtwogl_79create_window, METH_O, 0}; static PyObject *__pyx_pw_10_qt_qtwogl_79create_window(PyObject *__pyx_self, PyObject *__pyx_v_pyapp) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("create_window (wrapper)", 0); __pyx_r = __pyx_pf_10_qt_qtwogl_78create_window(__pyx_self, ((PyObject *)__pyx_v_pyapp)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_10_qt_qtwogl_78create_window(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_pyapp) { QSizePolicy __pyx_v_sizepolicy; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; int __pyx_t_5; PyObject *__pyx_t_6 = NULL; PyObject *__pyx_t_7 = NULL; PyObject *__pyx_t_8 = NULL; bool __pyx_t_9; bool __pyx_t_10; QLabel *__pyx_t_11; int __pyx_t_12; __Pyx_RefNannySetupContext("create_window", 0); /* "_qt_qtwogl.pyx":2213 * * def create_window(pyapp): * pydata.app = pyapp # <<<<<<<<<<<<<< * init_module() * # Set default format before any widget is created, so that everything uses the same format. */ __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2213, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (__Pyx_PyObject_SetAttrStr(__pyx_t_1, __pyx_n_s_app, __pyx_v_pyapp) < 0) __PYX_ERR(0, 2213, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwogl.pyx":2214 * def create_window(pyapp): * pydata.app = pyapp * init_module() # <<<<<<<<<<<<<< * # Set default format before any widget is created, so that everything uses the same format. * # To test this use DEBUG_VFPS. The framerate should be then >60. */ __pyx_f_10_qt_qtwogl_init_module(); /* "_qt_qtwogl.pyx":2217 * # Set default format before any widget is created, so that everything uses the same format. * # To test this use DEBUG_VFPS. The framerate should be then >60. * set_default_surface_format() # <<<<<<<<<<<<<< * * ##pxm>IF 'qtw' == 'qtw' */ __pyx_f_10_qt_qtwogl_set_default_surface_format(); /* "_qt_qtwogl.pyx":2220 * * ##pxm>IF 'qtw' == 'qtw' * uidata.mainwindow = new MainView() #px/ # <<<<<<<<<<<<<< * #uidata.mainwindow = MainView() * uidata.treestore = new QStandardItemModel() #px/ */ __pyx_v_10_qt_qtwogl_uidata.mainwindow = new MainView(); /* "_qt_qtwogl.pyx":2222 * uidata.mainwindow = new MainView() #px/ * #uidata.mainwindow = MainView() * uidata.treestore = new QStandardItemModel() #px/ # <<<<<<<<<<<<<< * #uidata.treestore = QStandardItemModel() * uidata.drawingarea = new DrawingArea() #px/ */ __pyx_v_10_qt_qtwogl_uidata.treestore = new QStandardItemModel(); /* "_qt_qtwogl.pyx":2224 * uidata.treestore = new QStandardItemModel() #px/ * #uidata.treestore = QStandardItemModel() * uidata.drawingarea = new DrawingArea() #px/ # <<<<<<<<<<<<<< * #uidata.drawingarea = DrawingArea() * */ __pyx_v_10_qt_qtwogl_uidata.drawingarea = new DrawingArea(); /* "_qt_qtwogl.pyx":2228 * * qtui.setupUi_main(uidata.mainwindow, * QIcon(str2q(os.path.join(config_.UI_DIR, 'qt', 'images', 'new-random.png'))), # <<<<<<<<<<<<<< * QIcon(str2q(os.path.join(config_.UI_DIR, 'qt', 'images', 'new-solved.png'))), * QIcon(str2q(os.path.join(config_.UI_DIR, 'qt', 'images', 'select-model.png'))), */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_os); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2228, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_path); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2228, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_join); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2228, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_config); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2228, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_UI_DIR); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2228, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; __pyx_t_5 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_5 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[5] = {__pyx_t_3, __pyx_t_4, __pyx_n_u_qt, __pyx_n_u_images, __pyx_kp_u_new_random_png}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 4+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2228, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[5] = {__pyx_t_3, __pyx_t_4, __pyx_n_u_qt, __pyx_n_u_images, __pyx_kp_u_new_random_png}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 4+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2228, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_6 = PyTuple_New(4+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2228, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_t_4); __Pyx_INCREF(__pyx_n_u_qt); __Pyx_GIVEREF(__pyx_n_u_qt); PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_n_u_qt); __Pyx_INCREF(__pyx_n_u_images); __Pyx_GIVEREF(__pyx_n_u_images); PyTuple_SET_ITEM(__pyx_t_6, 2+__pyx_t_5, __pyx_n_u_images); __Pyx_INCREF(__pyx_kp_u_new_random_png); __Pyx_GIVEREF(__pyx_kp_u_new_random_png); PyTuple_SET_ITEM(__pyx_t_6, 3+__pyx_t_5, __pyx_kp_u_new_random_png); __pyx_t_4 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2228, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* "_qt_qtwogl.pyx":2229 * qtui.setupUi_main(uidata.mainwindow, * QIcon(str2q(os.path.join(config_.UI_DIR, 'qt', 'images', 'new-random.png'))), * QIcon(str2q(os.path.join(config_.UI_DIR, 'qt', 'images', 'new-solved.png'))), # <<<<<<<<<<<<<< * QIcon(str2q(os.path.join(config_.UI_DIR, 'qt', 'images', 'select-model.png'))), * QKeySequence(str2q(settings['action.edit_moves'])), */ __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_os); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2229, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_path); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2229, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_join); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2229, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_config); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2229, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_UI_DIR); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2229, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = NULL; __pyx_t_5 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); __pyx_t_5 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[5] = {__pyx_t_4, __pyx_t_3, __pyx_n_u_qt, __pyx_n_u_images, __pyx_kp_u_new_solved_png}; __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_5, 4+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2229, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[5] = {__pyx_t_4, __pyx_t_3, __pyx_n_u_qt, __pyx_n_u_images, __pyx_kp_u_new_solved_png}; __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_5, 4+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2229, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif { __pyx_t_7 = PyTuple_New(4+__pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2229, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (__pyx_t_4) { __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_4); __pyx_t_4 = NULL; } __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_5, __pyx_t_3); __Pyx_INCREF(__pyx_n_u_qt); __Pyx_GIVEREF(__pyx_n_u_qt); PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_5, __pyx_n_u_qt); __Pyx_INCREF(__pyx_n_u_images); __Pyx_GIVEREF(__pyx_n_u_images); PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_5, __pyx_n_u_images); __Pyx_INCREF(__pyx_kp_u_new_solved_png); __Pyx_GIVEREF(__pyx_kp_u_new_solved_png); PyTuple_SET_ITEM(__pyx_t_7, 3+__pyx_t_5, __pyx_kp_u_new_solved_png); __pyx_t_3 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2229, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; /* "_qt_qtwogl.pyx":2230 * QIcon(str2q(os.path.join(config_.UI_DIR, 'qt', 'images', 'new-random.png'))), * QIcon(str2q(os.path.join(config_.UI_DIR, 'qt', 'images', 'new-solved.png'))), * QIcon(str2q(os.path.join(config_.UI_DIR, 'qt', 'images', 'select-model.png'))), # <<<<<<<<<<<<<< * QKeySequence(str2q(settings['action.edit_moves'])), * QKeySequence(str2q(settings['action.edit_cube'])), */ __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_os); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2230, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_path); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2230, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_join); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2230, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_config); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2230, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_UI_DIR); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2230, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; __pyx_t_5 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_7); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_7, function); __pyx_t_5 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_7)) { PyObject *__pyx_temp[5] = {__pyx_t_3, __pyx_t_4, __pyx_n_u_qt, __pyx_n_u_images, __pyx_kp_u_select_model_png}; __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_5, 4+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2230, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) { PyObject *__pyx_temp[5] = {__pyx_t_3, __pyx_t_4, __pyx_n_u_qt, __pyx_n_u_images, __pyx_kp_u_select_model_png}; __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_5, 4+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2230, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_8 = PyTuple_New(4+__pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2230, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_5, __pyx_t_4); __Pyx_INCREF(__pyx_n_u_qt); __Pyx_GIVEREF(__pyx_n_u_qt); PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_5, __pyx_n_u_qt); __Pyx_INCREF(__pyx_n_u_images); __Pyx_GIVEREF(__pyx_n_u_images); PyTuple_SET_ITEM(__pyx_t_8, 2+__pyx_t_5, __pyx_n_u_images); __Pyx_INCREF(__pyx_kp_u_select_model_png); __Pyx_GIVEREF(__pyx_kp_u_select_model_png); PyTuple_SET_ITEM(__pyx_t_8, 3+__pyx_t_5, __pyx_kp_u_select_model_png); __pyx_t_4 = 0; __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_8, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2230, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; /* "_qt_qtwogl.pyx":2231 * QIcon(str2q(os.path.join(config_.UI_DIR, 'qt', 'images', 'new-solved.png'))), * QIcon(str2q(os.path.join(config_.UI_DIR, 'qt', 'images', 'select-model.png'))), * QKeySequence(str2q(settings['action.edit_moves'])), # <<<<<<<<<<<<<< * QKeySequence(str2q(settings['action.edit_cube'])), * settings['window.editbar'], */ __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2231, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_8 = PyObject_GetItem(__pyx_t_7, __pyx_kp_u_action_edit_moves); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2231, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; /* "_qt_qtwogl.pyx":2232 * QIcon(str2q(os.path.join(config_.UI_DIR, 'qt', 'images', 'select-model.png'))), * QKeySequence(str2q(settings['action.edit_moves'])), * QKeySequence(str2q(settings['action.edit_cube'])), # <<<<<<<<<<<<<< * settings['window.editbar'], * settings['window.statusbar']) */ __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2232, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_4 = PyObject_GetItem(__pyx_t_7, __pyx_kp_u_action_edit_cube); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2232, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; /* "_qt_qtwogl.pyx":2233 * QKeySequence(str2q(settings['action.edit_moves'])), * QKeySequence(str2q(settings['action.edit_cube'])), * settings['window.editbar'], # <<<<<<<<<<<<<< * settings['window.statusbar']) * uidata.mainwindow.setWindowIcon(QIcon(str2q(config_.APPICON_FILE))) */ __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2233, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_3 = PyObject_GetItem(__pyx_t_7, __pyx_kp_u_window_editbar); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2233, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_9 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2233, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "_qt_qtwogl.pyx":2234 * QKeySequence(str2q(settings['action.edit_cube'])), * settings['window.editbar'], * settings['window.statusbar']) # <<<<<<<<<<<<<< * uidata.mainwindow.setWindowIcon(QIcon(str2q(config_.APPICON_FILE))) * qtui.set_shortcuts(QKeySequence(str2q(settings['action.selectmodel'])), */ __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2234, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_7 = PyObject_GetItem(__pyx_t_3, __pyx_kp_u_window_statusbar); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2234, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely((__pyx_t_10 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2234, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; /* "_qt_qtwogl.pyx":2227 * #uidata.drawingarea = DrawingArea() * * qtui.setupUi_main(uidata.mainwindow, # <<<<<<<<<<<<<< * QIcon(str2q(os.path.join(config_.UI_DIR, 'qt', 'images', 'new-random.png'))), * QIcon(str2q(os.path.join(config_.UI_DIR, 'qt', 'images', 'new-solved.png'))), */ __pyx_f_6_qtui__setupUi_main(__pyx_v_10_qt_qtwogl_uidata.mainwindow, QIcon(__pyx_f_10_qt_qtwogl_str2q(__pyx_t_1)), QIcon(__pyx_f_10_qt_qtwogl_str2q(__pyx_t_2)), QIcon(__pyx_f_10_qt_qtwogl_str2q(__pyx_t_6)), QKeySequence(__pyx_f_10_qt_qtwogl_str2q(__pyx_t_8)), QKeySequence(__pyx_f_10_qt_qtwogl_str2q(__pyx_t_4)), __pyx_t_9, __pyx_t_10); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwogl.pyx":2235 * settings['window.editbar'], * settings['window.statusbar']) * uidata.mainwindow.setWindowIcon(QIcon(str2q(config_.APPICON_FILE))) # <<<<<<<<<<<<<< * qtui.set_shortcuts(QKeySequence(str2q(settings['action.selectmodel'])), * QKeySequence(str2q(settings['action.initial_state'])), */ __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_config); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2235, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_APPICON_FILE); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2235, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_10_qt_qtwogl_uidata.mainwindow->setWindowIcon(QIcon(__pyx_f_10_qt_qtwogl_str2q(__pyx_t_8))); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; /* "_qt_qtwogl.pyx":2236 * settings['window.statusbar']) * uidata.mainwindow.setWindowIcon(QIcon(str2q(config_.APPICON_FILE))) * qtui.set_shortcuts(QKeySequence(str2q(settings['action.selectmodel'])), # <<<<<<<<<<<<<< * QKeySequence(str2q(settings['action.initial_state'])), * QKeySequence(str2q(settings['action.reset_rotation'])), */ __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2236, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_4 = PyObject_GetItem(__pyx_t_8, __pyx_kp_u_action_selectmodel); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2236, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; /* "_qt_qtwogl.pyx":2237 * uidata.mainwindow.setWindowIcon(QIcon(str2q(config_.APPICON_FILE))) * qtui.set_shortcuts(QKeySequence(str2q(settings['action.selectmodel'])), * QKeySequence(str2q(settings['action.initial_state'])), # <<<<<<<<<<<<<< * QKeySequence(str2q(settings['action.reset_rotation'])), * QKeySequence(str2q(settings['action.preferences'])), */ __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2237, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_6 = PyObject_GetItem(__pyx_t_8, __pyx_kp_u_action_initial_state); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2237, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; /* "_qt_qtwogl.pyx":2238 * qtui.set_shortcuts(QKeySequence(str2q(settings['action.selectmodel'])), * QKeySequence(str2q(settings['action.initial_state'])), * QKeySequence(str2q(settings['action.reset_rotation'])), # <<<<<<<<<<<<<< * QKeySequence(str2q(settings['action.preferences'])), * ) */ __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2238, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_2 = PyObject_GetItem(__pyx_t_8, __pyx_kp_u_action_reset_rotation); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2238, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; /* "_qt_qtwogl.pyx":2239 * QKeySequence(str2q(settings['action.initial_state'])), * QKeySequence(str2q(settings['action.reset_rotation'])), * QKeySequence(str2q(settings['action.preferences'])), # <<<<<<<<<<<<<< * ) * uidata.move_edit = new MoveEdit() #px/ */ __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_settings); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2239, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_1 = PyObject_GetItem(__pyx_t_8, __pyx_kp_u_action_preferences); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2239, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; /* "_qt_qtwogl.pyx":2236 * settings['window.statusbar']) * uidata.mainwindow.setWindowIcon(QIcon(str2q(config_.APPICON_FILE))) * qtui.set_shortcuts(QKeySequence(str2q(settings['action.selectmodel'])), # <<<<<<<<<<<<<< * QKeySequence(str2q(settings['action.initial_state'])), * QKeySequence(str2q(settings['action.reset_rotation'])), */ __pyx_f_6_qtui__set_shortcuts(QKeySequence(__pyx_f_10_qt_qtwogl_str2q(__pyx_t_4)), QKeySequence(__pyx_f_10_qt_qtwogl_str2q(__pyx_t_6)), QKeySequence(__pyx_f_10_qt_qtwogl_str2q(__pyx_t_2)), QKeySequence(__pyx_f_10_qt_qtwogl_str2q(__pyx_t_1))); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwogl.pyx":2241 * QKeySequence(str2q(settings['action.preferences'])), * ) * uidata.move_edit = new MoveEdit() #px/ # <<<<<<<<<<<<<< * #uidata.move_edit = MoveEdit() * uidata.drawingarea.init() */ __pyx_v_10_qt_qtwogl_uidata.move_edit = new MoveEdit(); /* "_qt_qtwogl.pyx":2243 * uidata.move_edit = new MoveEdit() #px/ * #uidata.move_edit = MoveEdit() * uidata.drawingarea.init() # <<<<<<<<<<<<<< * qtui.add_widgets(uidata.mainwindow, uidata.move_edit, uidata.drawingarea) * uidata.statuslabel = new QLabel() #px/ */ __pyx_v_10_qt_qtwogl_uidata.drawingarea->init(); /* "_qt_qtwogl.pyx":2244 * #uidata.move_edit = MoveEdit() * uidata.drawingarea.init() * qtui.add_widgets(uidata.mainwindow, uidata.move_edit, uidata.drawingarea) # <<<<<<<<<<<<<< * uidata.statuslabel = new QLabel() #px/ * #uidata.statuslabel = QLabel() */ __pyx_f_6_qtui__add_widgets(__pyx_v_10_qt_qtwogl_uidata.mainwindow, __pyx_v_10_qt_qtwogl_uidata.move_edit, __pyx_v_10_qt_qtwogl_uidata.drawingarea); /* "_qt_qtwogl.pyx":2245 * uidata.drawingarea.init() * qtui.add_widgets(uidata.mainwindow, uidata.move_edit, uidata.drawingarea) * uidata.statuslabel = new QLabel() #px/ # <<<<<<<<<<<<<< * #uidata.statuslabel = QLabel() * uidata.mainwindow.statusBar().addWidget(uidata.statuslabel, 1) */ try { __pyx_t_11 = new QLabel(); } catch(...) { __Pyx_CppExn2PyErr(); __PYX_ERR(0, 2245, __pyx_L1_error) } __pyx_v_10_qt_qtwogl_uidata.statuslabel = __pyx_t_11; /* "_qt_qtwogl.pyx":2247 * uidata.statuslabel = new QLabel() #px/ * #uidata.statuslabel = QLabel() * uidata.mainwindow.statusBar().addWidget(uidata.statuslabel, 1) # <<<<<<<<<<<<<< * if debug & DEBUG_NOCONTROLS: * qtui.hide_controls() */ __pyx_v_10_qt_qtwogl_uidata.mainwindow->statusBar()->addWidget(__pyx_v_10_qt_qtwogl_uidata.statuslabel, 1); /* "_qt_qtwogl.pyx":2248 * #uidata.statuslabel = QLabel() * uidata.mainwindow.statusBar().addWidget(uidata.statuslabel, 1) * if debug & DEBUG_NOCONTROLS: # <<<<<<<<<<<<<< * qtui.hide_controls() * */ __pyx_t_12 = ((__pyx_v_10_qt_qtwogl_debug & __pyx_e_10_qt_qtwogl_DEBUG_NOCONTROLS) != 0); if (__pyx_t_12) { /* "_qt_qtwogl.pyx":2249 * uidata.mainwindow.statusBar().addWidget(uidata.statuslabel, 1) * if debug & DEBUG_NOCONTROLS: * qtui.hide_controls() # <<<<<<<<<<<<<< * * cdef QSizePolicy sizepolicy #px+ */ __pyx_f_6_qtui__hide_controls(); /* "_qt_qtwogl.pyx":2248 * #uidata.statuslabel = QLabel() * uidata.mainwindow.statusBar().addWidget(uidata.statuslabel, 1) * if debug & DEBUG_NOCONTROLS: # <<<<<<<<<<<<<< * qtui.hide_controls() * */ } /* "_qt_qtwogl.pyx":2252 * * cdef QSizePolicy sizepolicy #px+ * sizepolicy = QSizePolicy(Expanding, Expanding) # <<<<<<<<<<<<<< * sizepolicy.setHorizontalStretch(0) * sizepolicy.setVerticalStretch(0) */ __pyx_v_sizepolicy = QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); /* "_qt_qtwogl.pyx":2253 * cdef QSizePolicy sizepolicy #px+ * sizepolicy = QSizePolicy(Expanding, Expanding) * sizepolicy.setHorizontalStretch(0) # <<<<<<<<<<<<<< * sizepolicy.setVerticalStretch(0) * uidata.drawingarea.setSizePolicy(sizepolicy) */ __pyx_v_sizepolicy.setHorizontalStretch(0); /* "_qt_qtwogl.pyx":2254 * sizepolicy = QSizePolicy(Expanding, Expanding) * sizepolicy.setHorizontalStretch(0) * sizepolicy.setVerticalStretch(0) # <<<<<<<<<<<<<< * uidata.drawingarea.setSizePolicy(sizepolicy) * ##pxm>IF 'qtw' == 'qtq' */ __pyx_v_sizepolicy.setVerticalStretch(0); /* "_qt_qtwogl.pyx":2255 * sizepolicy.setHorizontalStretch(0) * sizepolicy.setVerticalStretch(0) * uidata.drawingarea.setSizePolicy(sizepolicy) # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtq' * #~ uidata.engine = new QQmlEngine() */ __pyx_v_10_qt_qtwogl_uidata.drawingarea->setSizePolicy(__pyx_v_sizepolicy); /* "_qt_qtwogl.pyx":2278 * #~ uidata.mainwindow.setClearBeforeRendering(False) * #~ ##pxm>IF_END * animation_init() # <<<<<<<<<<<<<< * settings_timer_create() * load_cursors(os.path.join(config_.UI_DIR, 'cursors', 'mouse_{}.png')) */ __pyx_f_10_qt_qtwogl_animation_init(); /* "_qt_qtwogl.pyx":2279 * #~ ##pxm>IF_END * animation_init() * settings_timer_create() # <<<<<<<<<<<<<< * load_cursors(os.path.join(config_.UI_DIR, 'cursors', 'mouse_{}.png')) * */ __pyx_f_10_qt_qtwogl_settings_timer_create(); /* "_qt_qtwogl.pyx":2280 * animation_init() * settings_timer_create() * load_cursors(os.path.join(config_.UI_DIR, 'cursors', 'mouse_{}.png')) # <<<<<<<<<<<<<< * * def destroy_window(): */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_os); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2280, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_path); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2280, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_join); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2280, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_config); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2280, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_UI_DIR); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2280, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = NULL; __pyx_t_5 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_5 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_6, __pyx_t_4, __pyx_n_u_cursors, __pyx_kp_u_mouse__png}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 3+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2280, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_6, __pyx_t_4, __pyx_n_u_cursors, __pyx_kp_u_mouse__png}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 3+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2280, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_8 = PyTuple_New(3+__pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2280, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); if (__pyx_t_6) { __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = NULL; } __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_5, __pyx_t_4); __Pyx_INCREF(__pyx_n_u_cursors); __Pyx_GIVEREF(__pyx_n_u_cursors); PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_5, __pyx_n_u_cursors); __Pyx_INCREF(__pyx_kp_u_mouse__png); __Pyx_GIVEREF(__pyx_kp_u_mouse__png); PyTuple_SET_ITEM(__pyx_t_8, 2+__pyx_t_5, __pyx_kp_u_mouse__png); __pyx_t_4 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2280, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_f_10_qt_qtwogl_load_cursors(__pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwogl.pyx":2212 * #~ ##pxm>IF_END * * def create_window(pyapp): # <<<<<<<<<<<<<< * pydata.app = pyapp * init_module() */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __Pyx_XDECREF(__pyx_t_8); __Pyx_AddTraceback("_qt_qtwogl.create_window", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwogl.pyx":2282 * load_cursors(os.path.join(config_.UI_DIR, 'cursors', 'mouse_{}.png')) * * def destroy_window(): # <<<<<<<<<<<<<< * destroy_cursors() * settings_timer_destroy() */ /* Python wrapper */ static PyObject *__pyx_pw_10_qt_qtwogl_81destroy_window(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/ static PyMethodDef __pyx_mdef_10_qt_qtwogl_81destroy_window = {"destroy_window", (PyCFunction)__pyx_pw_10_qt_qtwogl_81destroy_window, METH_NOARGS, 0}; static PyObject *__pyx_pw_10_qt_qtwogl_81destroy_window(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("destroy_window (wrapper)", 0); __pyx_r = __pyx_pf_10_qt_qtwogl_80destroy_window(__pyx_self); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_10_qt_qtwogl_80destroy_window(CYTHON_UNUSED PyObject *__pyx_self) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("destroy_window", 0); /* "_qt_qtwogl.pyx":2283 * * def destroy_window(): * destroy_cursors() # <<<<<<<<<<<<<< * settings_timer_destroy() * ##pxm>IF 'qtw' == 'qtw' */ __pyx_f_10_qt_qtwogl_destroy_cursors(); /* "_qt_qtwogl.pyx":2284 * def destroy_window(): * destroy_cursors() * settings_timer_destroy() # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * animate_timer_destroy() */ __pyx_f_10_qt_qtwogl_settings_timer_destroy(); /* "_qt_qtwogl.pyx":2286 * settings_timer_destroy() * ##pxm>IF 'qtw' == 'qtw' * animate_timer_destroy() # <<<<<<<<<<<<<< * ##pxm>IF_END * pydata.app = None */ __pyx_f_10_qt_qtwogl_animate_timer_destroy(); /* "_qt_qtwogl.pyx":2288 * animate_timer_destroy() * ##pxm>IF_END * pydata.app = None # <<<<<<<<<<<<<< * * ##pxm-FUNC P with gil */ __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2288, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (__Pyx_PyObject_SetAttrStr(__pyx_t_1, __pyx_n_s_app, Py_None) < 0) __PYX_ERR(0, 2288, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwogl.pyx":2282 * load_cursors(os.path.join(config_.UI_DIR, 'cursors', 'mouse_{}.png')) * * def destroy_window(): # <<<<<<<<<<<<<< * destroy_cursors() * settings_timer_destroy() */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_AddTraceback("_qt_qtwogl.destroy_window", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } /* "_qt_qtwogl.pyx":2291 * * ##pxm-FUNC P with gil * cdef void _on_init_finalize() with gil: # <<<<<<<<<<<<<< * pydata.app.on_init_finalize() * */ static void __pyx_f_10_qt_qtwogl__on_init_finalize(void) { __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; #ifdef WITH_THREAD PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); #endif __Pyx_RefNannySetupContext("_on_init_finalize", 0); /* "_qt_qtwogl.pyx":2292 * ##pxm-FUNC P with gil * cdef void _on_init_finalize() with gil: * pydata.app.on_init_finalize() # <<<<<<<<<<<<<< * * ##pxm>IF 'qtw' == 'qtq' */ __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pydata); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2292, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_app); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2292, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_on_init_finalize); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2292, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } if (__pyx_t_3) { __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2292, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2292, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "_qt_qtwogl.pyx":2291 * * ##pxm-FUNC P with gil * cdef void _on_init_finalize() with gil: # <<<<<<<<<<<<<< * pydata.app.on_init_finalize() * */ /* function exit code */ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_WriteUnraisable("_qt_qtwogl._on_init_finalize", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 0); __pyx_L0:; __Pyx_RefNannyFinishContext(); #ifdef WITH_THREAD PyGILState_Release(__pyx_gilstate_save); #endif } /* "_qt_qtwogl.pyx":2302 * #~ ##pxm>IF_END * * def app_post_create(gettext): # <<<<<<<<<<<<<< * cdef QApplication *app = QCoreApplication_instance() #px/ * #app = QCoreApplication.instance() */ /* Python wrapper */ static PyObject *__pyx_pw_10_qt_qtwogl_83app_post_create(PyObject *__pyx_self, PyObject *__pyx_v_gettext); /*proto*/ static PyMethodDef __pyx_mdef_10_qt_qtwogl_83app_post_create = {"app_post_create", (PyCFunction)__pyx_pw_10_qt_qtwogl_83app_post_create, METH_O, 0}; static PyObject *__pyx_pw_10_qt_qtwogl_83app_post_create(PyObject *__pyx_self, PyObject *__pyx_v_gettext) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("app_post_create (wrapper)", 0); __pyx_r = __pyx_pf_10_qt_qtwogl_82app_post_create(__pyx_self, ((PyObject *)__pyx_v_gettext)); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r; } static PyObject *__pyx_pf_10_qt_qtwogl_82app_post_create(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_gettext) { QApplication *__pyx_v_app; QFont __pyx_v_font; PyObject *__pyx_v_fontpixelsize = NULL; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; double __pyx_t_6; qreal __pyx_t_7; int __pyx_t_8; PyObject *__pyx_t_9 = NULL; __Pyx_RefNannySetupContext("app_post_create", 0); /* "_qt_qtwogl.pyx":2303 * * def app_post_create(gettext): * cdef QApplication *app = QCoreApplication_instance() #px/ # <<<<<<<<<<<<<< * #app = QCoreApplication.instance() * */ __pyx_v_app = ((QApplication *)QCoreApplication::instance()); /* "_qt_qtwogl.pyx":2308 * # font * cdef QFont font #px+ * try: # <<<<<<<<<<<<<< * uidata.grid_unit_px = float(os.environ['GRID_UNIT_PX']) / 8 * except (KeyError, ValueError): */ { __Pyx_PyThreadState_declare __Pyx_PyThreadState_assign __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); __Pyx_XGOTREF(__pyx_t_1); __Pyx_XGOTREF(__pyx_t_2); __Pyx_XGOTREF(__pyx_t_3); /*try:*/ { /* "_qt_qtwogl.pyx":2309 * cdef QFont font #px+ * try: * uidata.grid_unit_px = float(os.environ['GRID_UNIT_PX']) / 8 # <<<<<<<<<<<<<< * except (KeyError, ValueError): * uidata.grid_unit_px = 1. */ __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_os); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2309, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_environ); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2309, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyObject_GetItem(__pyx_t_5, __pyx_n_u_GRID_UNIT_PX); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2309, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_6 = __Pyx_PyObject_AsDouble(__pyx_t_4); if (unlikely(__pyx_t_6 == ((double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2309, __pyx_L3_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_10_qt_qtwogl_uidata.grid_unit_px = (__pyx_t_6 / 8.0); /* "_qt_qtwogl.pyx":2308 * # font * cdef QFont font #px+ * try: # <<<<<<<<<<<<<< * uidata.grid_unit_px = float(os.environ['GRID_UNIT_PX']) / 8 * except (KeyError, ValueError): */ } /* "_qt_qtwogl.pyx":2315 * else: * # On the Ubuntu phone the default font is broken without Ubuntu.Components imported * font = app.font() # <<<<<<<<<<<<<< * # Default in ubuntu-ui-toolkit: fontUnits = 14.0f (to small, use 18.0), DEFAULT_GRID_UNIT_PX = 8 * #TODO: use QWindow.devicePixelRatio */ /*else:*/ { __pyx_v_font = __pyx_v_app->font(); /* "_qt_qtwogl.pyx":2318 * # Default in ubuntu-ui-toolkit: fontUnits = 14.0f (to small, use 18.0), DEFAULT_GRID_UNIT_PX = 8 * #TODO: use QWindow.devicePixelRatio * fontpixelsize = 18.0 * uidata.grid_unit_px / app.devicePixelRatio() # <<<<<<<<<<<<<< * font.setFamily(str2q("Ubuntu")) * font.setPixelSize(int(fontpixelsize)) */ __pyx_t_6 = (18.0 * __pyx_v_10_qt_qtwogl_uidata.grid_unit_px); __pyx_t_7 = __pyx_v_app->devicePixelRatio(); if (unlikely(__pyx_t_7 == 0)) { PyErr_SetString(PyExc_ZeroDivisionError, "float division"); __PYX_ERR(0, 2318, __pyx_L5_except_error) } __pyx_t_4 = PyFloat_FromDouble((((qreal)__pyx_t_6) / __pyx_t_7)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2318, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_4); __pyx_v_fontpixelsize = __pyx_t_4; __pyx_t_4 = 0; /* "_qt_qtwogl.pyx":2319 * #TODO: use QWindow.devicePixelRatio * fontpixelsize = 18.0 * uidata.grid_unit_px / app.devicePixelRatio() * font.setFamily(str2q("Ubuntu")) # <<<<<<<<<<<<<< * font.setPixelSize(int(fontpixelsize)) * font.setWeight(50) */ __pyx_v_font.setFamily(__pyx_f_10_qt_qtwogl_str2q(__pyx_n_u_Ubuntu)); /* "_qt_qtwogl.pyx":2320 * fontpixelsize = 18.0 * uidata.grid_unit_px / app.devicePixelRatio() * font.setFamily(str2q("Ubuntu")) * font.setPixelSize(int(fontpixelsize)) # <<<<<<<<<<<<<< * font.setWeight(50) * app.setFont(font) */ __pyx_t_4 = __Pyx_PyNumber_Int(__pyx_v_fontpixelsize); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2320, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_8 = __Pyx_PyInt_As_int(__pyx_t_4); if (unlikely((__pyx_t_8 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2320, __pyx_L5_except_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_font.setPixelSize(__pyx_t_8); /* "_qt_qtwogl.pyx":2321 * font.setFamily(str2q("Ubuntu")) * font.setPixelSize(int(fontpixelsize)) * font.setWeight(50) # <<<<<<<<<<<<<< * app.setFont(font) * */ __pyx_v_font.setWeight(50); /* "_qt_qtwogl.pyx":2322 * font.setPixelSize(int(fontpixelsize)) * font.setWeight(50) * app.setFont(font) # <<<<<<<<<<<<<< * * global _ */ __pyx_v_app->setFont(__pyx_v_font); } __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L10_try_end; __pyx_L3_error:; __Pyx_PyThreadState_assign __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwogl.pyx":2310 * try: * uidata.grid_unit_px = float(os.environ['GRID_UNIT_PX']) / 8 * except (KeyError, ValueError): # <<<<<<<<<<<<<< * uidata.grid_unit_px = 1. * fontpixelsize = 14.0 */ __pyx_t_8 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_KeyError) || __Pyx_PyErr_ExceptionMatches(__pyx_builtin_ValueError); if (__pyx_t_8) { __Pyx_AddTraceback("_qt_qtwogl.app_post_create", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_5, &__pyx_t_9) < 0) __PYX_ERR(0, 2310, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GOTREF(__pyx_t_5); __Pyx_GOTREF(__pyx_t_9); /* "_qt_qtwogl.pyx":2311 * uidata.grid_unit_px = float(os.environ['GRID_UNIT_PX']) / 8 * except (KeyError, ValueError): * uidata.grid_unit_px = 1. # <<<<<<<<<<<<<< * fontpixelsize = 14.0 * else: */ __pyx_v_10_qt_qtwogl_uidata.grid_unit_px = 1.; /* "_qt_qtwogl.pyx":2312 * except (KeyError, ValueError): * uidata.grid_unit_px = 1. * fontpixelsize = 14.0 # <<<<<<<<<<<<<< * else: * # On the Ubuntu phone the default font is broken without Ubuntu.Components imported */ __Pyx_INCREF(__pyx_float_14_0); __pyx_v_fontpixelsize = __pyx_float_14_0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; goto __pyx_L4_exception_handled; } goto __pyx_L5_except_error; __pyx_L5_except_error:; /* "_qt_qtwogl.pyx":2308 * # font * cdef QFont font #px+ * try: # <<<<<<<<<<<<<< * uidata.grid_unit_px = float(os.environ['GRID_UNIT_PX']) / 8 * except (KeyError, ValueError): */ __Pyx_PyThreadState_assign __Pyx_XGIVEREF(__pyx_t_1); __Pyx_XGIVEREF(__pyx_t_2); __Pyx_XGIVEREF(__pyx_t_3); __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); goto __pyx_L1_error; __pyx_L4_exception_handled:; __Pyx_PyThreadState_assign __Pyx_XGIVEREF(__pyx_t_1); __Pyx_XGIVEREF(__pyx_t_2); __Pyx_XGIVEREF(__pyx_t_3); __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); __pyx_L10_try_end:; } /* "_qt_qtwogl.pyx":2325 * * global _ * _ = gettext # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * qtui.init_gettext(_) */ if (PyDict_SetItem(__pyx_d, __pyx_n_s__4, __pyx_v_gettext) < 0) __PYX_ERR(0, 2325, __pyx_L1_error) /* "_qt_qtwogl.pyx":2327 * _ = gettext * ##pxm>IF 'qtw' == 'qtw' * qtui.init_gettext(_) # <<<<<<<<<<<<<< * ##pxm>IF_END * */ __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s__4); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2327, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_f_6_qtui__init_gettext(__pyx_t_9); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; /* "_qt_qtwogl.pyx":2302 * #~ ##pxm>IF_END * * def app_post_create(gettext): # <<<<<<<<<<<<<< * cdef QApplication *app = QCoreApplication_instance() #px/ * #app = QCoreApplication.instance() */ /* function exit code */ __pyx_r = Py_None; __Pyx_INCREF(Py_None); goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __Pyx_XDECREF(__pyx_t_9); __Pyx_AddTraceback("_qt_qtwogl.app_post_create", __pyx_clineno, __pyx_lineno, __pyx_filename); __pyx_r = NULL; __pyx_L0:; __Pyx_XDECREF(__pyx_v_fontpixelsize); __Pyx_XGIVEREF(__pyx_r); __Pyx_RefNannyFinishContext(); return __pyx_r; } static struct __pyx_obj_10_qt_qtwogl___pyx_scope_struct__keyval_from_name *__pyx_freelist_10_qt_qtwogl___pyx_scope_struct__keyval_from_name[8]; static int __pyx_freecount_10_qt_qtwogl___pyx_scope_struct__keyval_from_name = 0; static PyObject *__pyx_tp_new_10_qt_qtwogl___pyx_scope_struct__keyval_from_name(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { PyObject *o; if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_10_qt_qtwogl___pyx_scope_struct__keyval_from_name > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_10_qt_qtwogl___pyx_scope_struct__keyval_from_name)))) { o = (PyObject*)__pyx_freelist_10_qt_qtwogl___pyx_scope_struct__keyval_from_name[--__pyx_freecount_10_qt_qtwogl___pyx_scope_struct__keyval_from_name]; memset(o, 0, sizeof(struct __pyx_obj_10_qt_qtwogl___pyx_scope_struct__keyval_from_name)); (void) PyObject_INIT(o, t); PyObject_GC_Track(o); } else { o = (*t->tp_alloc)(t, 0); if (unlikely(!o)) return 0; } return o; } static void __pyx_tp_dealloc_10_qt_qtwogl___pyx_scope_struct__keyval_from_name(PyObject *o) { struct __pyx_obj_10_qt_qtwogl___pyx_scope_struct__keyval_from_name *p = (struct __pyx_obj_10_qt_qtwogl___pyx_scope_struct__keyval_from_name *)o; PyObject_GC_UnTrack(o); Py_CLEAR(p->__pyx_v_keystr); if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_10_qt_qtwogl___pyx_scope_struct__keyval_from_name < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_10_qt_qtwogl___pyx_scope_struct__keyval_from_name)))) { __pyx_freelist_10_qt_qtwogl___pyx_scope_struct__keyval_from_name[__pyx_freecount_10_qt_qtwogl___pyx_scope_struct__keyval_from_name++] = ((struct __pyx_obj_10_qt_qtwogl___pyx_scope_struct__keyval_from_name *)o); } else { (*Py_TYPE(o)->tp_free)(o); } } static int __pyx_tp_traverse_10_qt_qtwogl___pyx_scope_struct__keyval_from_name(PyObject *o, visitproc v, void *a) { int e; struct __pyx_obj_10_qt_qtwogl___pyx_scope_struct__keyval_from_name *p = (struct __pyx_obj_10_qt_qtwogl___pyx_scope_struct__keyval_from_name *)o; if (p->__pyx_v_keystr) { e = (*v)(p->__pyx_v_keystr, a); if (e) return e; } return 0; } static int __pyx_tp_clear_10_qt_qtwogl___pyx_scope_struct__keyval_from_name(PyObject *o) { PyObject* tmp; struct __pyx_obj_10_qt_qtwogl___pyx_scope_struct__keyval_from_name *p = (struct __pyx_obj_10_qt_qtwogl___pyx_scope_struct__keyval_from_name *)o; tmp = ((PyObject*)p->__pyx_v_keystr); p->__pyx_v_keystr = Py_None; Py_INCREF(Py_None); Py_XDECREF(tmp); return 0; } static PyTypeObject __pyx_type_10_qt_qtwogl___pyx_scope_struct__keyval_from_name = { PyVarObject_HEAD_INIT(0, 0) "_qt_qtwogl.__pyx_scope_struct__keyval_from_name", /*tp_name*/ sizeof(struct __pyx_obj_10_qt_qtwogl___pyx_scope_struct__keyval_from_name), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc_10_qt_qtwogl___pyx_scope_struct__keyval_from_name, /*tp_dealloc*/ 0, /*tp_print*/ 0, /*tp_getattr*/ 0, /*tp_setattr*/ #if PY_MAJOR_VERSION < 3 0, /*tp_compare*/ #endif #if PY_MAJOR_VERSION >= 3 0, /*tp_as_async*/ #endif 0, /*tp_repr*/ 0, /*tp_as_number*/ 0, /*tp_as_sequence*/ 0, /*tp_as_mapping*/ 0, /*tp_hash*/ 0, /*tp_call*/ 0, /*tp_str*/ 0, /*tp_getattro*/ 0, /*tp_setattro*/ 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ 0, /*tp_doc*/ __pyx_tp_traverse_10_qt_qtwogl___pyx_scope_struct__keyval_from_name, /*tp_traverse*/ __pyx_tp_clear_10_qt_qtwogl___pyx_scope_struct__keyval_from_name, /*tp_clear*/ 0, /*tp_richcompare*/ 0, /*tp_weaklistoffset*/ 0, /*tp_iter*/ 0, /*tp_iternext*/ 0, /*tp_methods*/ 0, /*tp_members*/ 0, /*tp_getset*/ 0, /*tp_base*/ 0, /*tp_dict*/ 0, /*tp_descr_get*/ 0, /*tp_descr_set*/ 0, /*tp_dictoffset*/ 0, /*tp_init*/ 0, /*tp_alloc*/ __pyx_tp_new_10_qt_qtwogl___pyx_scope_struct__keyval_from_name, /*tp_new*/ 0, /*tp_free*/ 0, /*tp_is_gc*/ 0, /*tp_bases*/ 0, /*tp_mro*/ 0, /*tp_cache*/ 0, /*tp_subclasses*/ 0, /*tp_weaklist*/ 0, /*tp_del*/ 0, /*tp_version_tag*/ #if PY_VERSION_HEX >= 0x030400a1 0, /*tp_finalize*/ #endif }; static struct __pyx_obj_10_qt_qtwogl___pyx_scope_struct_1_genexpr *__pyx_freelist_10_qt_qtwogl___pyx_scope_struct_1_genexpr[8]; static int __pyx_freecount_10_qt_qtwogl___pyx_scope_struct_1_genexpr = 0; static PyObject *__pyx_tp_new_10_qt_qtwogl___pyx_scope_struct_1_genexpr(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) { PyObject *o; if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_10_qt_qtwogl___pyx_scope_struct_1_genexpr > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_10_qt_qtwogl___pyx_scope_struct_1_genexpr)))) { o = (PyObject*)__pyx_freelist_10_qt_qtwogl___pyx_scope_struct_1_genexpr[--__pyx_freecount_10_qt_qtwogl___pyx_scope_struct_1_genexpr]; memset(o, 0, sizeof(struct __pyx_obj_10_qt_qtwogl___pyx_scope_struct_1_genexpr)); (void) PyObject_INIT(o, t); PyObject_GC_Track(o); } else { o = (*t->tp_alloc)(t, 0); if (unlikely(!o)) return 0; } return o; } static void __pyx_tp_dealloc_10_qt_qtwogl___pyx_scope_struct_1_genexpr(PyObject *o) { struct __pyx_obj_10_qt_qtwogl___pyx_scope_struct_1_genexpr *p = (struct __pyx_obj_10_qt_qtwogl___pyx_scope_struct_1_genexpr *)o; PyObject_GC_UnTrack(o); Py_CLEAR(p->__pyx_outer_scope); Py_CLEAR(p->__pyx_v_k); if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_10_qt_qtwogl___pyx_scope_struct_1_genexpr < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_10_qt_qtwogl___pyx_scope_struct_1_genexpr)))) { __pyx_freelist_10_qt_qtwogl___pyx_scope_struct_1_genexpr[__pyx_freecount_10_qt_qtwogl___pyx_scope_struct_1_genexpr++] = ((struct __pyx_obj_10_qt_qtwogl___pyx_scope_struct_1_genexpr *)o); } else { (*Py_TYPE(o)->tp_free)(o); } } static int __pyx_tp_traverse_10_qt_qtwogl___pyx_scope_struct_1_genexpr(PyObject *o, visitproc v, void *a) { int e; struct __pyx_obj_10_qt_qtwogl___pyx_scope_struct_1_genexpr *p = (struct __pyx_obj_10_qt_qtwogl___pyx_scope_struct_1_genexpr *)o; if (p->__pyx_outer_scope) { e = (*v)(((PyObject*)p->__pyx_outer_scope), a); if (e) return e; } if (p->__pyx_v_k) { e = (*v)(p->__pyx_v_k, a); if (e) return e; } return 0; } static int __pyx_tp_clear_10_qt_qtwogl___pyx_scope_struct_1_genexpr(PyObject *o) { PyObject* tmp; struct __pyx_obj_10_qt_qtwogl___pyx_scope_struct_1_genexpr *p = (struct __pyx_obj_10_qt_qtwogl___pyx_scope_struct_1_genexpr *)o; tmp = ((PyObject*)p->__pyx_outer_scope); p->__pyx_outer_scope = ((struct __pyx_obj_10_qt_qtwogl___pyx_scope_struct__keyval_from_name *)Py_None); Py_INCREF(Py_None); Py_XDECREF(tmp); tmp = ((PyObject*)p->__pyx_v_k); p->__pyx_v_k = Py_None; Py_INCREF(Py_None); Py_XDECREF(tmp); return 0; } static PyTypeObject __pyx_type_10_qt_qtwogl___pyx_scope_struct_1_genexpr = { PyVarObject_HEAD_INIT(0, 0) "_qt_qtwogl.__pyx_scope_struct_1_genexpr", /*tp_name*/ sizeof(struct __pyx_obj_10_qt_qtwogl___pyx_scope_struct_1_genexpr), /*tp_basicsize*/ 0, /*tp_itemsize*/ __pyx_tp_dealloc_10_qt_qtwogl___pyx_scope_struct_1_genexpr, /*tp_dealloc*/ 0, /*tp_print*/ 0, /*tp_getattr*/ 0, /*tp_setattr*/ #if PY_MAJOR_VERSION < 3 0, /*tp_compare*/ #endif #if PY_MAJOR_VERSION >= 3 0, /*tp_as_async*/ #endif 0, /*tp_repr*/ 0, /*tp_as_number*/ 0, /*tp_as_sequence*/ 0, /*tp_as_mapping*/ 0, /*tp_hash*/ 0, /*tp_call*/ 0, /*tp_str*/ 0, /*tp_getattro*/ 0, /*tp_setattro*/ 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ 0, /*tp_doc*/ __pyx_tp_traverse_10_qt_qtwogl___pyx_scope_struct_1_genexpr, /*tp_traverse*/ __pyx_tp_clear_10_qt_qtwogl___pyx_scope_struct_1_genexpr, /*tp_clear*/ 0, /*tp_richcompare*/ 0, /*tp_weaklistoffset*/ 0, /*tp_iter*/ 0, /*tp_iternext*/ 0, /*tp_methods*/ 0, /*tp_members*/ 0, /*tp_getset*/ 0, /*tp_base*/ 0, /*tp_dict*/ 0, /*tp_descr_get*/ 0, /*tp_descr_set*/ 0, /*tp_dictoffset*/ 0, /*tp_init*/ 0, /*tp_alloc*/ __pyx_tp_new_10_qt_qtwogl___pyx_scope_struct_1_genexpr, /*tp_new*/ 0, /*tp_free*/ 0, /*tp_is_gc*/ 0, /*tp_bases*/ 0, /*tp_mro*/ 0, /*tp_cache*/ 0, /*tp_subclasses*/ 0, /*tp_weaklist*/ 0, /*tp_del*/ 0, /*tp_version_tag*/ #if PY_VERSION_HEX >= 0x030400a1 0, /*tp_finalize*/ #endif }; static PyMethodDef __pyx_methods[] = { {"set_atlas_size", (PyCFunction)__pyx_pw_10_qt_qtwogl_7set_atlas_size, METH_VARARGS|METH_KEYWORDS, 0}, {"settings_timer_start", (PyCFunction)__pyx_pw_10_qt_qtwogl_69settings_timer_start, METH_NOARGS, 0}, {"animate_timer_start", (PyCFunction)__pyx_pw_10_qt_qtwogl_73animate_timer_start, METH_VARARGS|METH_KEYWORDS, 0}, {0, 0, 0, 0} }; #if PY_MAJOR_VERSION >= 3 static struct PyModuleDef __pyx_moduledef = { #if PY_VERSION_HEX < 0x03020000 { PyObject_HEAD_INIT(NULL) NULL, 0, NULL }, #else PyModuleDef_HEAD_INIT, #endif "_qt_qtwogl", 0, /* m_doc */ -1, /* m_size */ __pyx_methods /* m_methods */, NULL, /* m_reload */ NULL, /* m_traverse */ NULL, /* m_clear */ NULL /* m_free */ }; #endif static __Pyx_StringTabEntry __pyx_string_tab[] = { {&__pyx_n_s_APPICON_FILE, __pyx_k_APPICON_FILE, sizeof(__pyx_k_APPICON_FILE), 0, 0, 1, 1}, {&__pyx_n_s_APPNAME, __pyx_k_APPNAME, sizeof(__pyx_k_APPNAME), 0, 0, 1, 1}, {&__pyx_n_s_COPYRIGHT, __pyx_k_COPYRIGHT, sizeof(__pyx_k_COPYRIGHT), 0, 0, 1, 1}, {&__pyx_n_s_ControlModifier, __pyx_k_ControlModifier, sizeof(__pyx_k_ControlModifier), 0, 0, 1, 1}, {&__pyx_n_s_DEBUG_DRAW, __pyx_k_DEBUG_DRAW, sizeof(__pyx_k_DEBUG_DRAW), 0, 0, 1, 1}, {&__pyx_n_s_DEBUG_FPS, __pyx_k_DEBUG_FPS, sizeof(__pyx_k_DEBUG_FPS), 0, 0, 1, 1}, {&__pyx_n_s_DEBUG_GLDEBUG, __pyx_k_DEBUG_GLDEBUG, sizeof(__pyx_k_DEBUG_GLDEBUG), 0, 0, 1, 1}, {&__pyx_n_s_DEBUG_MSG, __pyx_k_DEBUG_MSG, sizeof(__pyx_k_DEBUG_MSG), 0, 0, 1, 1}, {&__pyx_n_s_DEBUG_MSGEXT, __pyx_k_DEBUG_MSGEXT, sizeof(__pyx_k_DEBUG_MSGEXT), 0, 0, 1, 1}, {&__pyx_n_s_DEBUG_MSGGL, __pyx_k_DEBUG_MSGGL, sizeof(__pyx_k_DEBUG_MSGGL), 0, 0, 1, 1}, {&__pyx_n_s_DEBUG_NOCONTROLS, __pyx_k_DEBUG_NOCONTROLS, sizeof(__pyx_k_DEBUG_NOCONTROLS), 0, 0, 1, 1}, {&__pyx_n_s_DEBUG_PHONE, __pyx_k_DEBUG_PHONE, sizeof(__pyx_k_DEBUG_PHONE), 0, 0, 1, 1}, {&__pyx_n_s_DEBUG_QML, __pyx_k_DEBUG_QML, sizeof(__pyx_k_DEBUG_QML), 0, 0, 1, 1}, {&__pyx_n_s_DEBUG_SIM, __pyx_k_DEBUG_SIM, sizeof(__pyx_k_DEBUG_SIM), 0, 0, 1, 1}, {&__pyx_n_s_DEBUG_VFPS, __pyx_k_DEBUG_VFPS, sizeof(__pyx_k_DEBUG_VFPS), 0, 0, 1, 1}, {&__pyx_kp_u_GL_type_ogl, __pyx_k_GL_type_ogl, sizeof(__pyx_k_GL_type_ogl), 0, 1, 0, 0}, {&__pyx_n_u_GRID_UNIT_PX, __pyx_k_GRID_UNIT_PX, sizeof(__pyx_k_GRID_UNIT_PX), 0, 1, 0, 1}, {&__pyx_n_u_KP, __pyx_k_KP, sizeof(__pyx_k_KP), 0, 1, 0, 1}, {&__pyx_n_u_Key, __pyx_k_Key, sizeof(__pyx_k_Key), 0, 1, 0, 1}, {&__pyx_n_s_KeyError, __pyx_k_KeyError, sizeof(__pyx_k_KeyError), 0, 0, 1, 1}, {&__pyx_n_s_Key_Down, __pyx_k_Key_Down, sizeof(__pyx_k_Key_Down), 0, 0, 1, 1}, {&__pyx_n_s_Key_Escape, __pyx_k_Key_Escape, sizeof(__pyx_k_Key_Escape), 0, 0, 1, 1}, {&__pyx_n_s_Key_Left, __pyx_k_Key_Left, sizeof(__pyx_k_Key_Left), 0, 0, 1, 1}, {&__pyx_n_s_Key_Period, __pyx_k_Key_Period, sizeof(__pyx_k_Key_Period), 0, 0, 1, 1}, {&__pyx_n_s_Key_Right, __pyx_k_Key_Right, sizeof(__pyx_k_Key_Right), 0, 0, 1, 1}, {&__pyx_n_s_Key_Up, __pyx_k_Key_Up, sizeof(__pyx_k_Key_Up), 0, 0, 1, 1}, {&__pyx_n_s_LeftButton, __pyx_k_LeftButton, sizeof(__pyx_k_LeftButton), 0, 0, 1, 1}, {&__pyx_n_u_Move, __pyx_k_Move, sizeof(__pyx_k_Move), 0, 1, 0, 1}, {&__pyx_n_u_Num, __pyx_k_Num, sizeof(__pyx_k_Num), 0, 1, 0, 1}, {&__pyx_kp_u_OFFSCREEN, __pyx_k_OFFSCREEN, sizeof(__pyx_k_OFFSCREEN), 0, 1, 0, 0}, {&__pyx_kp_u_Open_Image, __pyx_k_Open_Image, sizeof(__pyx_k_Open_Image), 0, 1, 0, 0}, {&__pyx_n_s_PyData, __pyx_k_PyData, sizeof(__pyx_k_PyData), 0, 0, 1, 1}, {&__pyx_kp_u_QObject, __pyx_k_QObject, sizeof(__pyx_k_QObject), 0, 1, 0, 0}, {&__pyx_n_b_QString, __pyx_k_QString, sizeof(__pyx_k_QString), 0, 0, 0, 1}, {&__pyx_n_s_QtKeys, __pyx_k_QtKeys, sizeof(__pyx_k_QtKeys), 0, 0, 1, 1}, {&__pyx_n_s_RightButton, __pyx_k_RightButton, sizeof(__pyx_k_RightButton), 0, 0, 1, 1}, {&__pyx_n_s_RuntimeWarning, __pyx_k_RuntimeWarning, sizeof(__pyx_k_RuntimeWarning), 0, 0, 1, 1}, {&__pyx_n_s_SHORT_DESCRIPTION, __pyx_k_SHORT_DESCRIPTION, sizeof(__pyx_k_SHORT_DESCRIPTION), 0, 0, 1, 1}, {&__pyx_n_s_ShiftModifier, __pyx_k_ShiftModifier, sizeof(__pyx_k_ShiftModifier), 0, 0, 1, 1}, {&__pyx_kp_u_Skip_mime_type, __pyx_k_Skip_mime_type, sizeof(__pyx_k_Skip_mime_type), 0, 1, 0, 0}, {&__pyx_n_s_Theme, __pyx_k_Theme, sizeof(__pyx_k_Theme), 0, 0, 1, 1}, {&__pyx_n_s_UI_DIR, __pyx_k_UI_DIR, sizeof(__pyx_k_UI_DIR), 0, 0, 1, 1}, {&__pyx_n_u_Ubuntu, __pyx_k_Ubuntu, sizeof(__pyx_k_Ubuntu), 0, 1, 0, 1}, {&__pyx_n_s_VERSION, __pyx_k_VERSION, sizeof(__pyx_k_VERSION), 0, 0, 1, 1}, {&__pyx_n_s_ValueError, __pyx_k_ValueError, sizeof(__pyx_k_ValueError), 0, 0, 1, 1}, {&__pyx_kp_u__13, __pyx_k__13, sizeof(__pyx_k__13), 0, 1, 0, 0}, {&__pyx_kp_u__22, __pyx_k__22, sizeof(__pyx_k__22), 0, 1, 0, 0}, {&__pyx_n_s__4, __pyx_k__4, sizeof(__pyx_k__4), 0, 0, 1, 1}, {&__pyx_kp_u__6, __pyx_k__6, sizeof(__pyx_k__6), 0, 1, 0, 0}, {&__pyx_kp_u__7, __pyx_k__7, sizeof(__pyx_k__7), 0, 1, 0, 0}, {&__pyx_n_u_about_contribute, __pyx_k_about_contribute, sizeof(__pyx_k_about_contribute), 0, 1, 0, 1}, {&__pyx_n_u_about_license_full, __pyx_k_about_license_full, sizeof(__pyx_k_about_license_full), 0, 1, 0, 1}, {&__pyx_n_u_about_license_notfound, __pyx_k_about_license_notfound, sizeof(__pyx_k_about_license_notfound), 0, 1, 0, 1}, {&__pyx_n_u_about_license_short, __pyx_k_about_license_short, sizeof(__pyx_k_about_license_short), 0, 1, 0, 1}, {&__pyx_n_u_about_translators, __pyx_k_about_translators, sizeof(__pyx_k_about_translators), 0, 1, 0, 1}, {&__pyx_n_u_about_website, __pyx_k_about_website, sizeof(__pyx_k_about_website), 0, 1, 0, 1}, {&__pyx_kp_u_action_edit_cube, __pyx_k_action_edit_cube, sizeof(__pyx_k_action_edit_cube), 0, 1, 0, 0}, {&__pyx_kp_u_action_edit_moves, __pyx_k_action_edit_moves, sizeof(__pyx_k_action_edit_moves), 0, 1, 0, 0}, {&__pyx_kp_u_action_initial_state, __pyx_k_action_initial_state, sizeof(__pyx_k_action_initial_state), 0, 1, 0, 0}, {&__pyx_kp_u_action_preferences, __pyx_k_action_preferences, sizeof(__pyx_k_action_preferences), 0, 1, 0, 0}, {&__pyx_kp_u_action_reset_rotation, __pyx_k_action_reset_rotation, sizeof(__pyx_k_action_reset_rotation), 0, 1, 0, 0}, {&__pyx_kp_u_action_selectmodel, __pyx_k_action_selectmodel, sizeof(__pyx_k_action_selectmodel), 0, 1, 0, 0}, {&__pyx_n_s_angle_max, __pyx_k_angle_max, sizeof(__pyx_k_angle_max), 0, 0, 1, 1}, {&__pyx_n_s_animate_timer_step, __pyx_k_animate_timer_step, sizeof(__pyx_k_animate_timer_step), 0, 0, 1, 1}, {&__pyx_n_s_animate_timer_stop, __pyx_k_animate_timer_stop, sizeof(__pyx_k_animate_timer_stop), 0, 0, 1, 1}, {&__pyx_n_s_app, __pyx_k_app, sizeof(__pyx_k_app), 0, 0, 1, 1}, {&__pyx_n_s_app_post_create, __pyx_k_app_post_create, sizeof(__pyx_k_app_post_create), 0, 0, 1, 1}, {&__pyx_n_s_append, __pyx_k_append, sizeof(__pyx_k_append), 0, 0, 1, 1}, {&__pyx_n_s_args, __pyx_k_args, sizeof(__pyx_k_args), 0, 0, 1, 1}, {&__pyx_n_b_bool, __pyx_k_bool, sizeof(__pyx_k_bool), 0, 0, 0, 1}, {&__pyx_n_s_button, __pyx_k_button, sizeof(__pyx_k_button), 0, 0, 1, 1}, {&__pyx_n_u_button_mousemode_ext, __pyx_k_button_mousemode_ext, sizeof(__pyx_k_button_mousemode_ext), 0, 1, 0, 1}, {&__pyx_n_u_button_mousemode_gesture, __pyx_k_button_mousemode_gesture, sizeof(__pyx_k_button_mousemode_gesture), 0, 1, 0, 1}, {&__pyx_n_u_button_mousemode_quad, __pyx_k_button_mousemode_quad, sizeof(__pyx_k_button_mousemode_quad), 0, 1, 0, 1}, {&__pyx_n_s_callback, __pyx_k_callback, sizeof(__pyx_k_callback), 0, 0, 1, 1}, {&__pyx_n_u_ccw, __pyx_k_ccw, sizeof(__pyx_k_ccw), 0, 1, 0, 1}, {&__pyx_n_u_checkbox_mirror_faces, __pyx_k_checkbox_mirror_faces, sizeof(__pyx_k_checkbox_mirror_faces), 0, 1, 0, 1}, {&__pyx_n_s_close, __pyx_k_close, sizeof(__pyx_k_close), 0, 0, 1, 1}, {&__pyx_n_s_close_mainwindow, __pyx_k_close_mainwindow, sizeof(__pyx_k_close_mainwindow), 0, 0, 1, 1}, {&__pyx_n_s_code, __pyx_k_code, sizeof(__pyx_k_code), 0, 0, 1, 1}, {&__pyx_n_s_color, __pyx_k_color, sizeof(__pyx_k_color), 0, 0, 1, 1}, {&__pyx_n_u_color, __pyx_k_color, sizeof(__pyx_k_color), 0, 1, 0, 1}, {&__pyx_n_u_combobox_samples, __pyx_k_combobox_samples, sizeof(__pyx_k_combobox_samples), 0, 1, 0, 1}, {&__pyx_n_u_combobox_shader, __pyx_k_combobox_shader, sizeof(__pyx_k_combobox_shader), 0, 1, 0, 1}, {&__pyx_kp_u_compiled, __pyx_k_compiled, sizeof(__pyx_k_compiled), 0, 1, 0, 0}, {&__pyx_n_s_compiled_2, __pyx_k_compiled_2, sizeof(__pyx_k_compiled_2), 0, 0, 1, 1}, {&__pyx_n_s_config, __pyx_k_config, sizeof(__pyx_k_config), 0, 0, 1, 1}, {&__pyx_n_s_config_2, __pyx_k_config_2, sizeof(__pyx_k_config_2), 0, 0, 1, 1}, {&__pyx_n_s_create_filesystemwatcher, __pyx_k_create_filesystemwatcher, sizeof(__pyx_k_create_filesystemwatcher), 0, 0, 1, 1}, {&__pyx_n_s_create_window, __pyx_k_create_window, sizeof(__pyx_k_create_window), 0, 0, 1, 1}, {&__pyx_n_s_currentfolder, __pyx_k_currentfolder, sizeof(__pyx_k_currentfolder), 0, 0, 1, 1}, {&__pyx_n_u_cursors, __pyx_k_cursors, sizeof(__pyx_k_cursors), 0, 1, 0, 1}, {&__pyx_n_s_data, __pyx_k_data, sizeof(__pyx_k_data), 0, 0, 1, 1}, {&__pyx_n_s_destroy_window, __pyx_k_destroy_window, sizeof(__pyx_k_destroy_window), 0, 0, 1, 1}, {&__pyx_n_s_dirname, __pyx_k_dirname, sizeof(__pyx_k_dirname), 0, 0, 1, 1}, {&__pyx_n_s_divider_pos, __pyx_k_divider_pos, sizeof(__pyx_k_divider_pos), 0, 0, 1, 1}, {&__pyx_n_s_divider_pos2, __pyx_k_divider_pos2, sizeof(__pyx_k_divider_pos2), 0, 0, 1, 1}, {&__pyx_n_s_doc, __pyx_k_doc, sizeof(__pyx_k_doc), 0, 0, 1, 1}, {&__pyx_n_b_double, __pyx_k_double, sizeof(__pyx_k_double), 0, 0, 0, 1}, {&__pyx_kp_u_drag_enter, __pyx_k_drag_enter, sizeof(__pyx_k_drag_enter), 0, 1, 0, 0}, {&__pyx_kp_u_draw_accels, __pyx_k_draw_accels, sizeof(__pyx_k_draw_accels), 0, 1, 0, 0}, {&__pyx_kp_u_draw_mirror_distance, __pyx_k_draw_mirror_distance, sizeof(__pyx_k_draw_mirror_distance), 0, 1, 0, 0}, {&__pyx_kp_u_draw_mirror_distance_default, __pyx_k_draw_mirror_distance_default, sizeof(__pyx_k_draw_mirror_distance_default), 0, 1, 0, 0}, {&__pyx_kp_u_draw_mirror_distance_range, __pyx_k_draw_mirror_distance_range, sizeof(__pyx_k_draw_mirror_distance_range), 0, 1, 0, 0}, {&__pyx_kp_u_draw_mirror_faces, __pyx_k_draw_mirror_faces, sizeof(__pyx_k_draw_mirror_faces), 0, 1, 0, 0}, {&__pyx_kp_u_draw_mirror_faces_default, __pyx_k_draw_mirror_faces_default, sizeof(__pyx_k_draw_mirror_faces_default), 0, 1, 0, 0}, {&__pyx_kp_u_draw_samples, __pyx_k_draw_samples, sizeof(__pyx_k_draw_samples), 0, 1, 0, 0}, {&__pyx_kp_u_draw_samples_default, __pyx_k_draw_samples_default, sizeof(__pyx_k_draw_samples_default), 0, 1, 0, 0}, {&__pyx_kp_u_draw_samples_range, __pyx_k_draw_samples_range, sizeof(__pyx_k_draw_samples_range), 0, 1, 0, 0}, {&__pyx_kp_u_draw_selection_nick, __pyx_k_draw_selection_nick, sizeof(__pyx_k_draw_selection_nick), 0, 1, 0, 0}, {&__pyx_kp_u_draw_shader, __pyx_k_draw_shader, sizeof(__pyx_k_draw_shader), 0, 1, 0, 0}, {&__pyx_kp_u_draw_shader_default, __pyx_k_draw_shader_default, sizeof(__pyx_k_draw_shader_default), 0, 1, 0, 0}, {&__pyx_kp_u_draw_shader_range, __pyx_k_draw_shader_range, sizeof(__pyx_k_draw_shader_range), 0, 1, 0, 0}, {&__pyx_kp_u_draw_speed, __pyx_k_draw_speed, sizeof(__pyx_k_draw_speed), 0, 1, 0, 0}, {&__pyx_kp_u_draw_speed_default, __pyx_k_draw_speed_default, sizeof(__pyx_k_draw_speed_default), 0, 1, 0, 0}, {&__pyx_kp_u_draw_speed_range, __pyx_k_draw_speed_range, sizeof(__pyx_k_draw_speed_range), 0, 1, 0, 0}, {&__pyx_n_s_encode, __pyx_k_encode, sizeof(__pyx_k_encode), 0, 0, 1, 1}, {&__pyx_n_s_enumerate, __pyx_k_enumerate, sizeof(__pyx_k_enumerate), 0, 0, 1, 1}, {&__pyx_n_s_environ, __pyx_k_environ, sizeof(__pyx_k_environ), 0, 0, 1, 1}, {&__pyx_n_s_facekey, __pyx_k_facekey, sizeof(__pyx_k_facekey), 0, 0, 1, 1}, {&__pyx_n_s_facename, __pyx_k_facename, sizeof(__pyx_k_facename), 0, 0, 1, 1}, {&__pyx_n_s_facenames, __pyx_k_facenames, sizeof(__pyx_k_facenames), 0, 0, 1, 1}, {&__pyx_n_s_filename, __pyx_k_filename, sizeof(__pyx_k_filename), 0, 0, 1, 1}, {&__pyx_n_s_filesystemwatcher_handlers, __pyx_k_filesystemwatcher_handlers, sizeof(__pyx_k_filesystemwatcher_handlers), 0, 0, 1, 1}, {&__pyx_n_s_filesystemwatcher_path, __pyx_k_filesystemwatcher_path, sizeof(__pyx_k_filesystemwatcher_path), 0, 0, 1, 1}, {&__pyx_n_s_fill_sidepane, __pyx_k_fill_sidepane, sizeof(__pyx_k_fill_sidepane), 0, 0, 1, 1}, {&__pyx_n_s_font, __pyx_k_font, sizeof(__pyx_k_font), 0, 0, 1, 1}, {&__pyx_n_s_fontpixelsize, __pyx_k_fontpixelsize, sizeof(__pyx_k_fontpixelsize), 0, 0, 1, 1}, {&__pyx_n_s_format, __pyx_k_format, sizeof(__pyx_k_format), 0, 0, 1, 1}, {&__pyx_kp_u_from_package, __pyx_k_from_package, sizeof(__pyx_k_from_package), 0, 1, 0, 0}, {&__pyx_n_s_func, __pyx_k_func, sizeof(__pyx_k_func), 0, 0, 1, 1}, {&__pyx_n_s_genexpr, __pyx_k_genexpr, sizeof(__pyx_k_genexpr), 0, 0, 1, 1}, {&__pyx_n_u_gesture, __pyx_k_gesture, sizeof(__pyx_k_gesture), 0, 1, 0, 1}, {&__pyx_n_s_get, __pyx_k_get, sizeof(__pyx_k_get), 0, 0, 1, 1}, {&__pyx_n_s_get_filedialog_imagefile, __pyx_k_get_filedialog_imagefile, sizeof(__pyx_k_get_filedialog_imagefile), 0, 0, 1, 1}, {&__pyx_n_s_get_imagefile, __pyx_k_get_imagefile, sizeof(__pyx_k_get_imagefile), 0, 0, 1, 1}, {&__pyx_n_s_get_pictures_folder, __pyx_k_get_pictures_folder, sizeof(__pyx_k_get_pictures_folder), 0, 0, 1, 1}, {&__pyx_n_s_get_samples, __pyx_k_get_samples, sizeof(__pyx_k_get_samples), 0, 0, 1, 1}, {&__pyx_n_s_gettext, __pyx_k_gettext, sizeof(__pyx_k_gettext), 0, 0, 1, 1}, {&__pyx_n_s_gl_delete_atlas, __pyx_k_gl_delete_atlas, sizeof(__pyx_k_gl_delete_atlas), 0, 0, 1, 1}, {&__pyx_n_s_height, __pyx_k_height, sizeof(__pyx_k_height), 0, 0, 1, 1}, {&__pyx_n_u_help_text, __pyx_k_help_text, sizeof(__pyx_k_help_text), 0, 1, 0, 1}, {&__pyx_kp_s_tmp, __pyx_k_tmp, sizeof(__pyx_k_tmp), 0, 0, 1, 0}, {&__pyx_n_s_i, __pyx_k_i, sizeof(__pyx_k_i), 0, 0, 1, 1}, {&__pyx_n_s_icon, __pyx_k_icon, sizeof(__pyx_k_icon), 0, 0, 1, 1}, {&__pyx_n_s_image, __pyx_k_image, sizeof(__pyx_k_image), 0, 0, 1, 1}, {&__pyx_n_u_image, __pyx_k_image, sizeof(__pyx_k_image), 0, 1, 0, 1}, {&__pyx_n_s_image_from_file, __pyx_k_image_from_file, sizeof(__pyx_k_image_from_file), 0, 0, 1, 1}, {&__pyx_n_s_imagefile, __pyx_k_imagefile, sizeof(__pyx_k_imagefile), 0, 0, 1, 1}, {&__pyx_n_s_imageindex, __pyx_k_imageindex, sizeof(__pyx_k_imageindex), 0, 0, 1, 1}, {&__pyx_n_s_imageindex_icon, __pyx_k_imageindex_icon, sizeof(__pyx_k_imageindex_icon), 0, 0, 1, 1}, {&__pyx_n_s_imagemode, __pyx_k_imagemode, sizeof(__pyx_k_imagemode), 0, 0, 1, 1}, {&__pyx_n_u_images, __pyx_k_images, sizeof(__pyx_k_images), 0, 1, 0, 1}, {&__pyx_n_s_import, __pyx_k_import, sizeof(__pyx_k_import), 0, 0, 1, 1}, {&__pyx_n_s_index, __pyx_k_index, sizeof(__pyx_k_index), 0, 0, 1, 1}, {&__pyx_n_s_index_icon, __pyx_k_index_icon, sizeof(__pyx_k_index_icon), 0, 0, 1, 1}, {&__pyx_kp_u_init_module, __pyx_k_init_module, sizeof(__pyx_k_init_module), 0, 1, 0, 0}, {&__pyx_n_s_initial_resize, __pyx_k_initial_resize, sizeof(__pyx_k_initial_resize), 0, 0, 1, 1}, {&__pyx_n_b_int, __pyx_k_int, sizeof(__pyx_k_int), 0, 0, 0, 1}, {&__pyx_n_s_isfile, __pyx_k_isfile, sizeof(__pyx_k_isfile), 0, 0, 1, 1}, {&__pyx_n_s_item, __pyx_k_item, sizeof(__pyx_k_item), 0, 0, 1, 1}, {&__pyx_n_s_join, __pyx_k_join, sizeof(__pyx_k_join), 0, 0, 1, 1}, {&__pyx_n_s_keyseq, __pyx_k_keyseq, sizeof(__pyx_k_keyseq), 0, 0, 1, 1}, {&__pyx_n_s_keystr, __pyx_k_keystr, sizeof(__pyx_k_keystr), 0, 0, 1, 1}, {&__pyx_n_s_keyval_from_name, __pyx_k_keyval_from_name, sizeof(__pyx_k_keyval_from_name), 0, 0, 1, 1}, {&__pyx_n_s_keyval_from_name_locals_genexpr, __pyx_k_keyval_from_name_locals_genexpr, sizeof(__pyx_k_keyval_from_name_locals_genexpr), 0, 0, 1, 1}, {&__pyx_n_u_label_needs_restarted, __pyx_k_label_needs_restarted, sizeof(__pyx_k_label_needs_restarted), 0, 1, 0, 1}, {&__pyx_n_s_load_image_from_file, __pyx_k_load_image_from_file, sizeof(__pyx_k_load_image_from_file), 0, 0, 1, 1}, {&__pyx_n_s_load_ui, __pyx_k_load_ui, sizeof(__pyx_k_load_ui), 0, 0, 1, 1}, {&__pyx_n_s_locations, __pyx_k_locations, sizeof(__pyx_k_locations), 0, 0, 1, 1}, {&__pyx_n_s_main, __pyx_k_main, sizeof(__pyx_k_main), 0, 0, 1, 1}, {&__pyx_n_s_maxsize, __pyx_k_maxsize, sizeof(__pyx_k_maxsize), 0, 0, 1, 1}, {&__pyx_n_s_message, __pyx_k_message, sizeof(__pyx_k_message), 0, 0, 1, 1}, {&__pyx_n_s_metaclass, __pyx_k_metaclass, sizeof(__pyx_k_metaclass), 0, 0, 1, 1}, {&__pyx_n_u_mode_nick, __pyx_k_mode_nick, sizeof(__pyx_k_mode_nick), 0, 1, 0, 1}, {&__pyx_n_s_modelselect, __pyx_k_modelselect, sizeof(__pyx_k_modelselect), 0, 0, 1, 1}, {&__pyx_n_s_module, __pyx_k_module, sizeof(__pyx_k_module), 0, 0, 1, 1}, {&__pyx_n_s_module_2, __pyx_k_module_2, sizeof(__pyx_k_module_2), 0, 0, 1, 1}, {&__pyx_n_u_mosaic, __pyx_k_mosaic, sizeof(__pyx_k_mosaic), 0, 1, 0, 1}, {&__pyx_kp_u_mouse__png, __pyx_k_mouse__png, sizeof(__pyx_k_mouse__png), 0, 1, 0, 0}, {&__pyx_n_s_msec, __pyx_k_msec, sizeof(__pyx_k_msec), 0, 0, 1, 1}, {&__pyx_n_s_name, __pyx_k_name, sizeof(__pyx_k_name), 0, 0, 1, 1}, {&__pyx_n_s_name_2, __pyx_k_name_2, sizeof(__pyx_k_name_2), 0, 0, 1, 1}, {&__pyx_kp_u_new_random_png, __pyx_k_new_random_png, sizeof(__pyx_k_new_random_png), 0, 1, 0, 0}, {&__pyx_kp_u_new_solved_png, __pyx_k_new_solved_png, sizeof(__pyx_k_new_solved_png), 0, 1, 0, 0}, {&__pyx_n_s_nick, __pyx_k_nick, sizeof(__pyx_k_nick), 0, 0, 1, 1}, {&__pyx_n_s_on_action_challenge_triggered, __pyx_k_on_action_challenge_triggered, sizeof(__pyx_k_on_action_challenge_triggered), 0, 0, 1, 1}, {&__pyx_n_s_on_action_edit_cube_triggered, __pyx_k_on_action_edit_cube_triggered, sizeof(__pyx_k_on_action_edit_cube_triggered), 0, 0, 1, 1}, {&__pyx_n_s_on_action_forward_triggered, __pyx_k_on_action_forward_triggered, sizeof(__pyx_k_on_action_forward_triggered), 0, 0, 1, 1}, {&__pyx_n_s_on_action_initial_state_triggere, __pyx_k_on_action_initial_state_triggere, sizeof(__pyx_k_on_action_initial_state_triggere), 0, 0, 1, 1}, {&__pyx_n_s_on_action_mark_remove_triggered, __pyx_k_on_action_mark_remove_triggered, sizeof(__pyx_k_on_action_mark_remove_triggered), 0, 0, 1, 1}, {&__pyx_n_s_on_action_mark_set_triggered, __pyx_k_on_action_mark_set_triggered, sizeof(__pyx_k_on_action_mark_set_triggered), 0, 0, 1, 1}, {&__pyx_n_s_on_action_new_solved_triggered, __pyx_k_on_action_new_solved_triggered, sizeof(__pyx_k_on_action_new_solved_triggered), 0, 0, 1, 1}, {&__pyx_n_s_on_action_next_triggered, __pyx_k_on_action_next_triggered, sizeof(__pyx_k_on_action_next_triggered), 0, 0, 1, 1}, {&__pyx_n_s_on_action_play_triggered, __pyx_k_on_action_play_triggered, sizeof(__pyx_k_on_action_play_triggered), 0, 0, 1, 1}, {&__pyx_n_s_on_action_preferences_triggered, __pyx_k_on_action_preferences_triggered, sizeof(__pyx_k_on_action_preferences_triggered), 0, 0, 1, 1}, {&__pyx_n_s_on_action_previous_triggered, __pyx_k_on_action_previous_triggered, sizeof(__pyx_k_on_action_previous_triggered), 0, 0, 1, 1}, {&__pyx_n_s_on_action_reset_rotation_trigger, __pyx_k_on_action_reset_rotation_trigger, sizeof(__pyx_k_on_action_reset_rotation_trigger), 0, 0, 1, 1}, {&__pyx_n_s_on_action_rewind_triggered, __pyx_k_on_action_rewind_triggered, sizeof(__pyx_k_on_action_rewind_triggered), 0, 0, 1, 1}, {&__pyx_n_s_on_action_selectmodel_triggered, __pyx_k_on_action_selectmodel_triggered, sizeof(__pyx_k_on_action_selectmodel_triggered), 0, 0, 1, 1}, {&__pyx_n_s_on_action_stop_triggered, __pyx_k_on_action_stop_triggered, sizeof(__pyx_k_on_action_stop_triggered), 0, 0, 1, 1}, {&__pyx_n_s_on_animation_ending, __pyx_k_on_animation_ending, sizeof(__pyx_k_on_animation_ending), 0, 0, 1, 1}, {&__pyx_n_s_on_closing, __pyx_k_on_closing, sizeof(__pyx_k_on_closing), 0, 0, 1, 1}, {&__pyx_n_s_on_convert_to_mtype_size, __pyx_k_on_convert_to_mtype_size, sizeof(__pyx_k_on_convert_to_mtype_size), 0, 0, 1, 1}, {&__pyx_n_s_on_dialog_change_current_face, __pyx_k_on_dialog_change_current_face, sizeof(__pyx_k_on_dialog_change_current_face), 0, 0, 1, 1}, {&__pyx_n_s_on_dialog_change_current_image, __pyx_k_on_dialog_change_current_image, sizeof(__pyx_k_on_dialog_change_current_image), 0, 0, 1, 1}, {&__pyx_n_s_on_dialog_reset_current_image, __pyx_k_on_dialog_reset_current_image, sizeof(__pyx_k_on_dialog_reset_current_image), 0, 0, 1, 1}, {&__pyx_n_s_on_dialog_text, __pyx_k_on_dialog_text, sizeof(__pyx_k_on_dialog_text), 0, 0, 1, 1}, {&__pyx_n_s_on_edit_finished, __pyx_k_on_edit_finished, sizeof(__pyx_k_on_edit_finished), 0, 0, 1, 1}, {&__pyx_n_s_on_edit_moves_nextword, __pyx_k_on_edit_moves_nextword, sizeof(__pyx_k_on_edit_moves_nextword), 0, 0, 1, 1}, {&__pyx_n_s_on_edit_moves_prevword, __pyx_k_on_edit_moves_prevword, sizeof(__pyx_k_on_edit_moves_prevword), 0, 0, 1, 1}, {&__pyx_n_s_on_edit_moves_swapnext, __pyx_k_on_edit_moves_swapnext, sizeof(__pyx_k_on_edit_moves_swapnext), 0, 0, 1, 1}, {&__pyx_n_s_on_edit_moves_swapprev, __pyx_k_on_edit_moves_swapprev, sizeof(__pyx_k_on_edit_moves_swapprev), 0, 0, 1, 1}, {&__pyx_n_s_on_init_finalize, __pyx_k_on_init_finalize, sizeof(__pyx_k_on_init_finalize), 0, 0, 1, 1}, {&__pyx_n_s_on_key_pressed, __pyx_k_on_key_pressed, sizeof(__pyx_k_on_key_pressed), 0, 0, 1, 1}, {&__pyx_n_s_on_load_other_game, __pyx_k_on_load_other_game, sizeof(__pyx_k_on_load_other_game), 0, 0, 1, 1}, {&__pyx_n_s_on_model_back, __pyx_k_on_model_back, sizeof(__pyx_k_on_model_back), 0, 0, 1, 1}, {&__pyx_n_s_on_model_get_modeldata, __pyx_k_on_model_get_modeldata, sizeof(__pyx_k_on_model_get_modeldata), 0, 0, 1, 1}, {&__pyx_n_s_on_mouse_drop_color, __pyx_k_on_mouse_drop_color, sizeof(__pyx_k_on_mouse_drop_color), 0, 0, 1, 1}, {&__pyx_n_s_on_mouse_drop_url, __pyx_k_on_mouse_drop_url, sizeof(__pyx_k_on_mouse_drop_url), 0, 0, 1, 1}, {&__pyx_n_s_on_mouse_moved, __pyx_k_on_mouse_moved, sizeof(__pyx_k_on_mouse_moved), 0, 0, 1, 1}, {&__pyx_n_s_on_mouse_pressed, __pyx_k_on_mouse_pressed, sizeof(__pyx_k_on_mouse_pressed), 0, 0, 1, 1}, {&__pyx_n_s_on_mouse_released, __pyx_k_on_mouse_released, sizeof(__pyx_k_on_mouse_released), 0, 0, 1, 1}, {&__pyx_n_s_on_mouse_zoom, __pyx_k_on_mouse_zoom, sizeof(__pyx_k_on_mouse_zoom), 0, 0, 1, 1}, {&__pyx_n_s_on_picking_result, __pyx_k_on_picking_result, sizeof(__pyx_k_on_picking_result), 0, 0, 1, 1}, {&__pyx_n_s_on_plugin_activated, __pyx_k_on_plugin_activated, sizeof(__pyx_k_on_plugin_activated), 0, 0, 1, 1}, {&__pyx_n_s_on_plugin_test_idx, __pyx_k_on_plugin_test_idx, sizeof(__pyx_k_on_plugin_test_idx), 0, 0, 1, 1}, {&__pyx_n_s_on_settings_timer_timeout, __pyx_k_on_settings_timer_timeout, sizeof(__pyx_k_on_settings_timer_timeout), 0, 0, 1, 1}, {&__pyx_n_s_os, __pyx_k_os, sizeof(__pyx_k_os), 0, 0, 1, 1}, {&__pyx_n_s_package, __pyx_k_package, sizeof(__pyx_k_package), 0, 0, 1, 1}, {&__pyx_n_s_parse_color, __pyx_k_parse_color, sizeof(__pyx_k_parse_color), 0, 0, 1, 1}, {&__pyx_n_s_parse_color_f, __pyx_k_parse_color_f, sizeof(__pyx_k_parse_color_f), 0, 0, 1, 1}, {&__pyx_n_s_path, __pyx_k_path, sizeof(__pyx_k_path), 0, 0, 1, 1}, {&__pyx_n_s_pick_requested, __pyx_k_pick_requested, sizeof(__pyx_k_pick_requested), 0, 0, 1, 1}, {&__pyx_n_u_plain, __pyx_k_plain, sizeof(__pyx_k_plain), 0, 1, 0, 1}, {&__pyx_n_s_plugin_data, __pyx_k_plugin_data, sizeof(__pyx_k_plugin_data), 0, 0, 1, 1}, {&__pyx_n_s_pop, __pyx_k_pop, sizeof(__pyx_k_pop), 0, 0, 1, 1}, {&__pyx_n_s_pos, __pyx_k_pos, sizeof(__pyx_k_pos), 0, 0, 1, 1}, {&__pyx_n_s_preferences_dialog, __pyx_k_preferences_dialog, sizeof(__pyx_k_preferences_dialog), 0, 0, 1, 1}, {&__pyx_n_s_prepare, __pyx_k_prepare, sizeof(__pyx_k_prepare), 0, 0, 1, 1}, {&__pyx_n_s_print, __pyx_k_print, sizeof(__pyx_k_print), 0, 0, 1, 1}, {&__pyx_n_s_pyapp, __pyx_k_pyapp, sizeof(__pyx_k_pyapp), 0, 0, 1, 1}, {&__pyx_n_s_pybiklib, __pyx_k_pybiklib, sizeof(__pyx_k_pybiklib), 0, 0, 1, 1}, {&__pyx_n_s_pybiklib_settings, __pyx_k_pybiklib_settings, sizeof(__pyx_k_pybiklib_settings), 0, 0, 1, 1}, {&__pyx_n_s_pydata, __pyx_k_pydata, sizeof(__pyx_k_pydata), 0, 0, 1, 1}, {&__pyx_n_s_qpath, __pyx_k_qpath, sizeof(__pyx_k_qpath), 0, 0, 1, 1}, {&__pyx_n_u_qt, __pyx_k_qt, sizeof(__pyx_k_qt), 0, 1, 0, 1}, {&__pyx_n_s_qt_qtwogl, __pyx_k_qt_qtwogl, sizeof(__pyx_k_qt_qtwogl), 0, 0, 1, 1}, {&__pyx_n_u_quadrant, __pyx_k_quadrant, sizeof(__pyx_k_quadrant), 0, 1, 0, 1}, {&__pyx_n_s_qualname, __pyx_k_qualname, sizeof(__pyx_k_qualname), 0, 0, 1, 1}, {&__pyx_n_s_range, __pyx_k_range, sizeof(__pyx_k_range), 0, 0, 1, 1}, {&__pyx_n_s_s1, __pyx_k_s1, sizeof(__pyx_k_s1), 0, 0, 1, 1}, {&__pyx_n_s_s2, __pyx_k_s2, sizeof(__pyx_k_s2), 0, 0, 1, 1}, {&__pyx_n_s_sample_buffers, __pyx_k_sample_buffers, sizeof(__pyx_k_sample_buffers), 0, 0, 1, 1}, {&__pyx_n_s_save_screenshot, __pyx_k_save_screenshot, sizeof(__pyx_k_save_screenshot), 0, 0, 1, 1}, {&__pyx_n_s_scaled_height, __pyx_k_scaled_height, sizeof(__pyx_k_scaled_height), 0, 0, 1, 1}, {&__pyx_n_s_scaled_width, __pyx_k_scaled_width, sizeof(__pyx_k_scaled_width), 0, 0, 1, 1}, {&__pyx_kp_u_select, __pyx_k_select, sizeof(__pyx_k_select), 0, 1, 0, 0}, {&__pyx_kp_u_select_model_png, __pyx_k_select_model_png, sizeof(__pyx_k_select_model_png), 0, 1, 0, 0}, {&__pyx_n_s_selection_nick, __pyx_k_selection_nick, sizeof(__pyx_k_selection_nick), 0, 0, 1, 1}, {&__pyx_n_s_send, __pyx_k_send, sizeof(__pyx_k_send), 0, 0, 1, 1}, {&__pyx_n_s_set_animation_speed, __pyx_k_set_animation_speed, sizeof(__pyx_k_set_animation_speed), 0, 0, 1, 1}, {&__pyx_n_s_set_combobox_current_image, __pyx_k_set_combobox_current_image, sizeof(__pyx_k_set_combobox_current_image), 0, 0, 1, 1}, {&__pyx_n_s_set_cursor, __pyx_k_set_cursor, sizeof(__pyx_k_set_cursor), 0, 0, 1, 1}, {&__pyx_n_s_set_debug_flags, __pyx_k_set_debug_flags, sizeof(__pyx_k_set_debug_flags), 0, 0, 1, 1}, {&__pyx_n_s_set_debug_text, __pyx_k_set_debug_text, sizeof(__pyx_k_set_debug_text), 0, 0, 1, 1}, {&__pyx_n_s_set_edit_moves, __pyx_k_set_edit_moves, sizeof(__pyx_k_set_edit_moves), 0, 0, 1, 1}, {&__pyx_n_s_set_pick_requested, __pyx_k_set_pick_requested, sizeof(__pyx_k_set_pick_requested), 0, 0, 1, 1}, {&__pyx_n_s_set_preferences_current_face_the, __pyx_k_set_preferences_current_face_the, sizeof(__pyx_k_set_preferences_current_face_the), 0, 0, 1, 1}, {&__pyx_n_s_set_status_text, __pyx_k_set_status_text, sizeof(__pyx_k_set_status_text), 0, 0, 1, 1}, {&__pyx_n_s_set_title, __pyx_k_set_title, sizeof(__pyx_k_set_title), 0, 0, 1, 1}, {&__pyx_n_s_set_toolbar_state, __pyx_k_set_toolbar_state, sizeof(__pyx_k_set_toolbar_state), 0, 0, 1, 1}, {&__pyx_n_s_settings, __pyx_k_settings, sizeof(__pyx_k_settings), 0, 0, 1, 1}, {&__pyx_n_s_shader_names, __pyx_k_shader_names, sizeof(__pyx_k_shader_names), 0, 0, 1, 1}, {&__pyx_n_s_show_message, __pyx_k_show_message, sizeof(__pyx_k_show_message), 0, 0, 1, 1}, {&__pyx_n_s_show_message_text, __pyx_k_show_message_text, sizeof(__pyx_k_show_message_text), 0, 0, 1, 1}, {&__pyx_n_s_show_preferences, __pyx_k_show_preferences, sizeof(__pyx_k_show_preferences), 0, 0, 1, 1}, {&__pyx_n_u_simple, __pyx_k_simple, sizeof(__pyx_k_simple), 0, 1, 0, 1}, {&__pyx_n_s_singleshot_handler, __pyx_k_singleshot_handler, sizeof(__pyx_k_singleshot_handler), 0, 0, 1, 1}, {&__pyx_n_s_singleshot_queue, __pyx_k_singleshot_queue, sizeof(__pyx_k_singleshot_queue), 0, 0, 1, 1}, {&__pyx_n_s_sizepolicy, __pyx_k_sizepolicy, sizeof(__pyx_k_sizepolicy), 0, 0, 1, 1}, {&__pyx_n_u_slider_animspeed, __pyx_k_slider_animspeed, sizeof(__pyx_k_slider_animspeed), 0, 1, 0, 1}, {&__pyx_n_u_spinbox_mirror_faces, __pyx_k_spinbox_mirror_faces, sizeof(__pyx_k_spinbox_mirror_faces), 0, 1, 0, 1}, {&__pyx_n_s_split, __pyx_k_split, sizeof(__pyx_k_split), 0, 0, 1, 1}, {&__pyx_n_s_startswith, __pyx_k_startswith, sizeof(__pyx_k_startswith), 0, 0, 1, 1}, {&__pyx_n_s_state, __pyx_k_state, sizeof(__pyx_k_state), 0, 0, 1, 1}, {&__pyx_n_s_stockicons, __pyx_k_stockicons, sizeof(__pyx_k_stockicons), 0, 0, 1, 1}, {&__pyx_n_s_subtree, __pyx_k_subtree, sizeof(__pyx_k_subtree), 0, 0, 1, 1}, {&__pyx_n_s_sys, __pyx_k_sys, sizeof(__pyx_k_sys), 0, 0, 1, 1}, {&__pyx_n_s_test, __pyx_k_test, sizeof(__pyx_k_test), 0, 0, 1, 1}, {&__pyx_n_s_text, __pyx_k_text, sizeof(__pyx_k_text), 0, 0, 1, 1}, {&__pyx_kp_u_text_FULL_LICENSE_TEXT, __pyx_k_text_FULL_LICENSE_TEXT, sizeof(__pyx_k_text_FULL_LICENSE_TEXT), 0, 1, 0, 0}, {&__pyx_n_s_text_to_html, __pyx_k_text_to_html, sizeof(__pyx_k_text_to_html), 0, 0, 1, 1}, {&__pyx_n_s_textures, __pyx_k_textures, sizeof(__pyx_k_textures), 0, 0, 1, 1}, {&__pyx_n_s_theme, __pyx_k_theme, sizeof(__pyx_k_theme), 0, 0, 1, 1}, {&__pyx_kp_u_theme_bgcolor, __pyx_k_theme_bgcolor, sizeof(__pyx_k_theme_bgcolor), 0, 1, 0, 0}, {&__pyx_kp_u_theme_faces, __pyx_k_theme_faces, sizeof(__pyx_k_theme_faces), 0, 1, 0, 0}, {&__pyx_n_s_throw, __pyx_k_throw, sizeof(__pyx_k_throw), 0, 0, 1, 1}, {&__pyx_n_u_tiled, __pyx_k_tiled, sizeof(__pyx_k_tiled), 0, 1, 0, 1}, {&__pyx_n_s_timer_singleShot, __pyx_k_timer_singleShot, sizeof(__pyx_k_timer_singleShot), 0, 0, 1, 1}, {&__pyx_n_s_title, __pyx_k_title, sizeof(__pyx_k_title), 0, 0, 1, 1}, {&__pyx_n_s_transl, __pyx_k_transl, sizeof(__pyx_k_transl), 0, 0, 1, 1}, {&__pyx_n_s_treeview, __pyx_k_treeview, sizeof(__pyx_k_treeview), 0, 0, 1, 1}, {&__pyx_kp_u_unknown_typename_s, __pyx_k_unknown_typename_s, sizeof(__pyx_k_unknown_typename_s), 0, 1, 0, 0}, {&__pyx_n_s_unset_cursor, __pyx_k_unset_cursor, sizeof(__pyx_k_unset_cursor), 0, 0, 1, 1}, {&__pyx_n_s_update_drawingarea, __pyx_k_update_drawingarea, sizeof(__pyx_k_update_drawingarea), 0, 0, 1, 1}, {&__pyx_n_s_update_sidepane, __pyx_k_update_sidepane, sizeof(__pyx_k_update_sidepane), 0, 0, 1, 1}, {&__pyx_kp_u_utf_8, __pyx_k_utf_8, sizeof(__pyx_k_utf_8), 0, 1, 0, 0}, {&__pyx_kp_u_value_has_wrong_typ, __pyx_k_value_has_wrong_typ, sizeof(__pyx_k_value_has_wrong_typ), 0, 1, 0, 0}, {&__pyx_kp_b_void, __pyx_k_void, sizeof(__pyx_k_void), 0, 0, 0, 0}, {&__pyx_kp_u_void_2, __pyx_k_void_2, sizeof(__pyx_k_void_2), 0, 1, 0, 0}, {&__pyx_n_s_warn, __pyx_k_warn, sizeof(__pyx_k_warn), 0, 0, 1, 1}, {&__pyx_n_s_warn_explicit, __pyx_k_warn_explicit, sizeof(__pyx_k_warn_explicit), 0, 0, 1, 1}, {&__pyx_n_s_warnings, __pyx_k_warnings, sizeof(__pyx_k_warnings), 0, 0, 1, 1}, {&__pyx_n_s_width, __pyx_k_width, sizeof(__pyx_k_width), 0, 0, 1, 1}, {&__pyx_kp_u_window_divider, __pyx_k_window_divider, sizeof(__pyx_k_window_divider), 0, 1, 0, 0}, {&__pyx_kp_u_window_editbar, __pyx_k_window_editbar, sizeof(__pyx_k_window_editbar), 0, 1, 0, 0}, {&__pyx_kp_u_window_size, __pyx_k_window_size, sizeof(__pyx_k_window_size), 0, 1, 0, 0}, {&__pyx_kp_u_window_statusbar, __pyx_k_window_statusbar, sizeof(__pyx_k_window_statusbar), 0, 1, 0, 0}, {&__pyx_n_s_zip, __pyx_k_zip, sizeof(__pyx_k_zip), 0, 0, 1, 1}, {0, 0, 0, 0, 0, 0, 0} }; static int __Pyx_InitCachedBuiltins(void) { __pyx_builtin_print = __Pyx_GetBuiltinName(__pyx_n_s_print); if (!__pyx_builtin_print) __PYX_ERR(0, 227, __pyx_L1_error) __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) __PYX_ERR(0, 264, __pyx_L1_error) __pyx_builtin_zip = __Pyx_GetBuiltinName(__pyx_n_s_zip); if (!__pyx_builtin_zip) __PYX_ERR(0, 294, __pyx_L1_error) __pyx_builtin_RuntimeWarning = __Pyx_GetBuiltinName(__pyx_n_s_RuntimeWarning); if (!__pyx_builtin_RuntimeWarning) __PYX_ERR(0, 319, __pyx_L1_error) __pyx_builtin_enumerate = __Pyx_GetBuiltinName(__pyx_n_s_enumerate); if (!__pyx_builtin_enumerate) __PYX_ERR(0, 1059, __pyx_L1_error) __pyx_builtin_KeyError = __Pyx_GetBuiltinName(__pyx_n_s_KeyError); if (!__pyx_builtin_KeyError) __PYX_ERR(0, 2310, __pyx_L1_error) __pyx_builtin_ValueError = __Pyx_GetBuiltinName(__pyx_n_s_ValueError); if (!__pyx_builtin_ValueError) __PYX_ERR(0, 2310, __pyx_L1_error) return 0; __pyx_L1_error:; return -1; } static int __Pyx_InitCachedConstants(void) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0); /* "_qt_qtwogl.pyx":230 * print(' from package:', __package__) * print(' compiled:', __compiled) * print(' GL-type: ogl') #px+ # <<<<<<<<<<<<<< * print(' OFFSCREEN:', OFFSCREEN) * */ __pyx_tuple_ = PyTuple_Pack(1, __pyx_kp_u_GL_type_ogl); if (unlikely(!__pyx_tuple_)) __PYX_ERR(0, 230, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple_); __Pyx_GIVEREF(__pyx_tuple_); /* "_qt_qtwogl.pyx":231 * print(' compiled:', __compiled) * print(' GL-type: ogl') #px+ * print(' OFFSCREEN:', OFFSCREEN) # <<<<<<<<<<<<<< * * renderdata.renderer = NULL */ __pyx_tuple__2 = PyTuple_Pack(2, __pyx_kp_u_OFFSCREEN, Py_False); if (unlikely(!__pyx_tuple__2)) __PYX_ERR(0, 231, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__2); __Pyx_GIVEREF(__pyx_tuple__2); /* "_qt_qtwogl.pyx":256 * ##pxm-FUNC P * cdef QString str2q(pstr): * data = pstr.encode('utf-8') #px+ # <<<<<<<<<<<<<< * return fromUtf8(data, len(data)) #px+ * */ __pyx_tuple__3 = PyTuple_Pack(1, __pyx_kp_u_utf_8); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(0, 256, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__3); __Pyx_GIVEREF(__pyx_tuple__3); /* "_qt_qtwogl.pyx":1316 * pydata.modelselect = pydata.app.on_action_selectmodel_triggered() * uidata.modelselect_currentpage = 1 * items, index, title = pydata.modelselect.on_model_get_modeldata(1) # <<<<<<<<<<<<<< * qtui.fill_page(create_stdmodel(items), str2q(title)) * qtui.set_page(1) */ __pyx_tuple__5 = PyTuple_Pack(1, __pyx_int_1); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(0, 1316, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__5); __Pyx_GIVEREF(__pyx_tuple__5); /* "_qt_qtwogl.pyx":1577 * #item = QStandardItem(str2q(key)) * this.liststore_movekeys.setItem(i, 1, item) * item = new QStandardItem(str2q(_('Move'))) #px/ # <<<<<<<<<<<<<< * #item = QStandardItem(str2q(_('Move'))) * this.liststore_movekeys.setHorizontalHeaderItem(0, item) */ __pyx_tuple__8 = PyTuple_Pack(1, __pyx_n_u_Move); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(0, 1577, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__8); __Pyx_GIVEREF(__pyx_tuple__8); /* "_qt_qtwogl.pyx":1580 * #item = QStandardItem(str2q(_('Move'))) * this.liststore_movekeys.setHorizontalHeaderItem(0, item) * item = new QStandardItem(str2q(_('Key'))) #px/ # <<<<<<<<<<<<<< * #item = QStandardItem(str2q(_('Key'))) * this.liststore_movekeys.setHorizontalHeaderItem(1, item) */ __pyx_tuple__9 = PyTuple_Pack(1, __pyx_n_u_Key); if (unlikely(!__pyx_tuple__9)) __PYX_ERR(0, 1580, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__9); __Pyx_GIVEREF(__pyx_tuple__9); /* "_qt_qtwogl.pyx":1682 * * def get_filedialog_imagefile(): * filename = q2str(getOpenFileName(uidata.preferences, str2q(_("Open Image")), uidata.preferences.image_dirname)) # <<<<<<<<<<<<<< * if filename: * uidata.preferences.image_dirname = str2q(os.path.dirname(filename)) */ __pyx_tuple__10 = PyTuple_Pack(1, __pyx_kp_u_Open_Image); if (unlikely(!__pyx_tuple__10)) __PYX_ERR(0, 1682, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__10); __Pyx_GIVEREF(__pyx_tuple__10); /* "_qt_qtwogl.pyx":1720 * for facename, facekey in facenames: * qtui.add_liststore_faces_row(str2q(facename), str2q(facekey)) * qtui.add_combobox_image_item(QIcon(), str2q(_('plain')), str2q('')) # <<<<<<<<<<<<<< * for filename in stockicons: * qtui.add_combobox_image_item(get_icon(filename), str2q(''), str2q(filename)) */ __pyx_tuple__11 = PyTuple_Pack(1, __pyx_n_u_plain); if (unlikely(!__pyx_tuple__11)) __PYX_ERR(0, 1720, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__11); __Pyx_GIVEREF(__pyx_tuple__11); /* "_qt_qtwogl.pyx":1723 * for filename in stockicons: * qtui.add_combobox_image_item(get_icon(filename), str2q(''), str2q(filename)) * qtui.add_combobox_image_item(QIcon(), str2q(_('select ')), str2q('/')) # <<<<<<<<<<<<<< * uidata.preferences.image_dirname = str2q(get_pictures_folder()) * qtui.finalize_liststore_faces(uidata.preferences) */ __pyx_tuple__12 = PyTuple_Pack(1, __pyx_kp_u_select); if (unlikely(!__pyx_tuple__12)) __PYX_ERR(0, 1723, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__12); __Pyx_GIVEREF(__pyx_tuple__12); /* "_qt_qtwogl.pyx":1766 * uidata.help = new HelpDialog(uidata.mainwindow) #px/ * #uidata.help = HelpDialog(uidata.mainwindow) * uidata.help.init(str2q(pydata.app.on_dialog_text('help_text'))) # <<<<<<<<<<<<<< * * ##pxm-FUNC P nogil */ __pyx_tuple__14 = PyTuple_Pack(1, __pyx_n_u_help_text); if (unlikely(!__pyx_tuple__14)) __PYX_ERR(0, 1766, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__14); __Pyx_GIVEREF(__pyx_tuple__14); /* "_qt_qtwogl.pyx":1817 * str2q(config_.VERSION), str2q(_(config_.SHORT_DESCRIPTION))) * qtui.fill_about_tab(str2q(config_.COPYRIGHT), * str2q(pydata.app.on_dialog_text('about_website')), # <<<<<<<<<<<<<< * str2q(pydata.app.on_dialog_text('about_translators'))) * qtui.fill_contribute_tab(str2q(pydata.app.on_dialog_text('about_contribute'))) */ __pyx_tuple__15 = PyTuple_Pack(1, __pyx_n_u_about_website); if (unlikely(!__pyx_tuple__15)) __PYX_ERR(0, 1817, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__15); __Pyx_GIVEREF(__pyx_tuple__15); /* "_qt_qtwogl.pyx":1818 * qtui.fill_about_tab(str2q(config_.COPYRIGHT), * str2q(pydata.app.on_dialog_text('about_website')), * str2q(pydata.app.on_dialog_text('about_translators'))) # <<<<<<<<<<<<<< * qtui.fill_contribute_tab(str2q(pydata.app.on_dialog_text('about_contribute'))) * license_full = pydata.app.on_dialog_text('about_license_full') */ __pyx_tuple__16 = PyTuple_Pack(1, __pyx_n_u_about_translators); if (unlikely(!__pyx_tuple__16)) __PYX_ERR(0, 1818, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__16); __Pyx_GIVEREF(__pyx_tuple__16); /* "_qt_qtwogl.pyx":1819 * str2q(pydata.app.on_dialog_text('about_website')), * str2q(pydata.app.on_dialog_text('about_translators'))) * qtui.fill_contribute_tab(str2q(pydata.app.on_dialog_text('about_contribute'))) # <<<<<<<<<<<<<< * license_full = pydata.app.on_dialog_text('about_license_full') * if license_full: */ __pyx_tuple__17 = PyTuple_Pack(1, __pyx_n_u_about_contribute); if (unlikely(!__pyx_tuple__17)) __PYX_ERR(0, 1819, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__17); __Pyx_GIVEREF(__pyx_tuple__17); /* "_qt_qtwogl.pyx":1820 * str2q(pydata.app.on_dialog_text('about_translators'))) * qtui.fill_contribute_tab(str2q(pydata.app.on_dialog_text('about_contribute'))) * license_full = pydata.app.on_dialog_text('about_license_full') # <<<<<<<<<<<<<< * if license_full: * qtui.fill_license_tab(str2q(pydata.app.on_dialog_text('about_license_short')), */ __pyx_tuple__18 = PyTuple_Pack(1, __pyx_n_u_about_license_full); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(0, 1820, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__18); __Pyx_GIVEREF(__pyx_tuple__18); /* "_qt_qtwogl.pyx":1822 * license_full = pydata.app.on_dialog_text('about_license_full') * if license_full: * qtui.fill_license_tab(str2q(pydata.app.on_dialog_text('about_license_short')), # <<<<<<<<<<<<<< * False, str2q(license_full)) * else: */ __pyx_tuple__19 = PyTuple_Pack(1, __pyx_n_u_about_license_short); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(0, 1822, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__19); __Pyx_GIVEREF(__pyx_tuple__19); /* "_qt_qtwogl.pyx":1825 * False, str2q(license_full)) * else: * qtui.fill_license_tab(str2q(pydata.app.on_dialog_text('about_license_short')), # <<<<<<<<<<<<<< * True, str2q(pydata.app.on_dialog_text('about_license_notfound'))) * about.exec() */ __pyx_tuple__20 = PyTuple_Pack(1, __pyx_n_u_about_license_short); if (unlikely(!__pyx_tuple__20)) __PYX_ERR(0, 1825, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__20); __Pyx_GIVEREF(__pyx_tuple__20); /* "_qt_qtwogl.pyx":1826 * else: * qtui.fill_license_tab(str2q(pydata.app.on_dialog_text('about_license_short')), * True, str2q(pydata.app.on_dialog_text('about_license_notfound'))) # <<<<<<<<<<<<<< * about.exec() * about.deleteLater() */ __pyx_tuple__21 = PyTuple_Pack(1, __pyx_n_u_about_license_notfound); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(0, 1826, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__21); __Pyx_GIVEREF(__pyx_tuple__21); /* "_qt_qtwogl.pyx":1989 * * def keyval_from_name(keystr): * keystr = '+'.join(('Num' if k == 'KP' else k) for k in keystr.split('+')) # <<<<<<<<<<<<<< * cdef QKeySequence keyseq = fromString(str2q(keystr), PortableText) #px/ * #keyseq = fromString(keystr, PortableText) */ __pyx_tuple__23 = PyTuple_Pack(1, __pyx_kp_u__22); if (unlikely(!__pyx_tuple__23)) __PYX_ERR(0, 1989, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__23); __Pyx_GIVEREF(__pyx_tuple__23); /* "_qt_qtwogl.pyx":2010 * imagefile = settings['theme.faces',facekey,'image'] * currentfolder = get_pictures_folder() * if imagefile.startswith('/'): # <<<<<<<<<<<<<< * currentfolder = os.path.dirname(imagefile) * elif imagefile: */ __pyx_tuple__24 = PyTuple_Pack(1, __pyx_kp_u__13); if (unlikely(!__pyx_tuple__24)) __PYX_ERR(0, 2010, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__24); __Pyx_GIVEREF(__pyx_tuple__24); /* "_qt_qtwogl.pyx":2163 * pos = [] * # Load 3 cursors from file (n - ne) * for i, (x, y) in enumerate([(8, 0), (15, 0), (15, 0)]): # <<<<<<<<<<<<<< * filename = filepattern.format(i) * images[i+1] = QImage(str2q(filename)) */ __pyx_tuple__25 = PyTuple_Pack(2, __pyx_int_8, __pyx_int_0); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(0, 2163, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__25); __Pyx_GIVEREF(__pyx_tuple__25); __pyx_tuple__26 = PyTuple_Pack(2, __pyx_int_15, __pyx_int_0); if (unlikely(!__pyx_tuple__26)) __PYX_ERR(0, 2163, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__26); __Pyx_GIVEREF(__pyx_tuple__26); __pyx_tuple__27 = PyTuple_Pack(2, __pyx_int_15, __pyx_int_0); if (unlikely(!__pyx_tuple__27)) __PYX_ERR(0, 2163, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__27); __Pyx_GIVEREF(__pyx_tuple__27); /* "_qt_qtwogl.pyx":2175 * #transform = QTransform() * transform.rotate(90) * for i in range(4, 16): # <<<<<<<<<<<<<< * x, y = pos[i-4] * images[i] = images[i-4].transformed(transform) */ __pyx_tuple__28 = PyTuple_Pack(2, __pyx_int_4, __pyx_int_16); if (unlikely(!__pyx_tuple__28)) __PYX_ERR(0, 2175, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__28); __Pyx_GIVEREF(__pyx_tuple__28); /* "_qt_qtwogl.pyx":2181 * images[16] = images[0] * pos.append(pos[0]) * for i in range(16): # <<<<<<<<<<<<<< * x, y = pos[i+1] * uidata.cursors[i] = new QCursor(fromImage(images[i+1]), x, y) #px/ */ __pyx_tuple__29 = PyTuple_Pack(1, __pyx_int_16); if (unlikely(!__pyx_tuple__29)) __PYX_ERR(0, 2181, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__29); __Pyx_GIVEREF(__pyx_tuple__29); /* "_qt_qtwogl.pyx":2186 * #uidata.cursors[i] = QCursor(fromImage(images[i+1]), x, y) * # cursor for center faces * filename = filepattern.format('ccw') # <<<<<<<<<<<<<< * uidata.cursors[16] = new QCursor(QPixmap(str2q(filename)), 7, 7) #px/ * #uidata.cursors[16] = QCursor(QPixmap(str2q(filename)), 7, 7) */ __pyx_tuple__30 = PyTuple_Pack(1, __pyx_n_u_ccw); if (unlikely(!__pyx_tuple__30)) __PYX_ERR(0, 2186, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__30); __Pyx_GIVEREF(__pyx_tuple__30); /* "_qt_qtwogl.pyx":102 * debug = 0 * * def set_debug_flags(module): # <<<<<<<<<<<<<< * global debug * if module.DEBUG_MSG: debug |= DEBUG_MSG */ __pyx_tuple__31 = PyTuple_Pack(1, __pyx_n_s_module); if (unlikely(!__pyx_tuple__31)) __PYX_ERR(0, 102, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__31); __Pyx_GIVEREF(__pyx_tuple__31); __pyx_codeobj__32 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__31, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_set_debug_flags, 102, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__32)) __PYX_ERR(0, 102, __pyx_L1_error) /* "_qt_qtwogl.pyx":396 * * ##pxm>IF 'qtw' == 'qtw' * def gl_delete_atlas(): # <<<<<<<<<<<<<< * if renderdata.texture is not NULL: * renderdata.texture.destroy() */ __pyx_codeobj__33 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_gl_delete_atlas, 396, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__33)) __PYX_ERR(0, 396, __pyx_L1_error) /* "_qt_qtwogl.pyx":577 * #### ui: communicate with render-thread #### * * def set_pick_requested(pick_requested): # <<<<<<<<<<<<<< * uidata.pick_requested = pick_requested * */ __pyx_tuple__34 = PyTuple_Pack(1, __pyx_n_s_pick_requested); if (unlikely(!__pyx_tuple__34)) __PYX_ERR(0, 577, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__34); __Pyx_GIVEREF(__pyx_tuple__34); __pyx_codeobj__35 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__34, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_set_pick_requested, 577, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__35)) __PYX_ERR(0, 577, __pyx_L1_error) /* "_qt_qtwogl.pyx":981 * #~ ##pxm>IF_END * * def set_debug_text(text): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * qtui.set_debug_text(str2q(text)) */ __pyx_tuple__36 = PyTuple_Pack(1, __pyx_n_s_text); if (unlikely(!__pyx_tuple__36)) __PYX_ERR(0, 981, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__36); __Pyx_GIVEREF(__pyx_tuple__36); __pyx_codeobj__37 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__36, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_set_debug_text, 981, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__37)) __PYX_ERR(0, 981, __pyx_L1_error) /* "_qt_qtwogl.pyx":988 * #~ ##pxm>IF_END * * def set_edit_moves(code, pos): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * uidata.move_edit.setText(str2q(code)) */ __pyx_tuple__38 = PyTuple_Pack(2, __pyx_n_s_code, __pyx_n_s_pos); if (unlikely(!__pyx_tuple__38)) __PYX_ERR(0, 988, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__38); __Pyx_GIVEREF(__pyx_tuple__38); __pyx_codeobj__39 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__38, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_set_edit_moves, 988, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__39)) __PYX_ERR(0, 988, __pyx_L1_error) /* "_qt_qtwogl.pyx":997 * #~ ##pxm>IF_END * * def set_status_text(text): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * uidata.statuslabel.setText(str2q(text)) */ __pyx_tuple__40 = PyTuple_Pack(1, __pyx_n_s_text); if (unlikely(!__pyx_tuple__40)) __PYX_ERR(0, 997, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__40); __Pyx_GIVEREF(__pyx_tuple__40); __pyx_codeobj__41 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__40, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_set_status_text, 997, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__41)) __PYX_ERR(0, 997, __pyx_L1_error) /* "_qt_qtwogl.pyx":1022 * #~ ##pxm>IF_END * show_message_text = None * def show_message(message): # <<<<<<<<<<<<<< * global show_message_text * show_message_text = message */ __pyx_tuple__42 = PyTuple_Pack(1, __pyx_n_s_message); if (unlikely(!__pyx_tuple__42)) __PYX_ERR(0, 1022, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__42); __Pyx_GIVEREF(__pyx_tuple__42); __pyx_codeobj__43 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__42, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_show_message, 1022, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__43)) __PYX_ERR(0, 1022, __pyx_L1_error) /* "_qt_qtwogl.pyx":1041 * ##pxm>IF_END * * def fill_sidepane(plugin_data): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * # remove old plugins */ __pyx_tuple__44 = PyTuple_Pack(8, __pyx_n_s_plugin_data, __pyx_n_s_item, __pyx_n_s_transl, __pyx_n_s_func, __pyx_n_s_subtree, __pyx_n_s_button, __pyx_n_s_treeview, __pyx_n_s_i); if (unlikely(!__pyx_tuple__44)) __PYX_ERR(0, 1041, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__44); __Pyx_GIVEREF(__pyx_tuple__44); __pyx_codeobj__45 = (PyObject*)__Pyx_PyCode_New(1, 0, 8, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__44, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_fill_sidepane, 1041, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__45)) __PYX_ERR(0, 1041, __pyx_L1_error) /* "_qt_qtwogl.pyx":1082 * return hide_all * ##pxm>IF_END * def update_sidepane(): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * cdef QModelIndex index #px+ */ __pyx_tuple__46 = PyTuple_Pack(2, __pyx_n_s_index, __pyx_n_s_i); if (unlikely(!__pyx_tuple__46)) __PYX_ERR(0, 1082, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__46); __Pyx_GIVEREF(__pyx_tuple__46); __pyx_codeobj__47 = (PyObject*)__Pyx_PyCode_New(0, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__46, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_update_sidepane, 1082, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__47)) __PYX_ERR(0, 1082, __pyx_L1_error) /* "_qt_qtwogl.pyx":1108 * #~ ##pxm>IF_END * * def set_toolbar_state(state): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * qtui.set_toolbar_state(state[0], state[1], state[2], state[3], state[4]) */ __pyx_tuple__48 = PyTuple_Pack(1, __pyx_n_s_state); if (unlikely(!__pyx_tuple__48)) __PYX_ERR(0, 1108, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__48); __Pyx_GIVEREF(__pyx_tuple__48); __pyx_codeobj__49 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__48, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_set_toolbar_state, 1108, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__49)) __PYX_ERR(0, 1108, __pyx_L1_error) /* "_qt_qtwogl.pyx":1669 * ##pxm>CPPCLASS_END * * def set_combobox_current_image(index_icon, imagefile, index): # <<<<<<<<<<<<<< * cdef QIcon icon #px/ * #icon = QIcon() */ __pyx_tuple__50 = PyTuple_Pack(4, __pyx_n_s_index_icon, __pyx_n_s_imagefile, __pyx_n_s_index, __pyx_n_s_icon); if (unlikely(!__pyx_tuple__50)) __PYX_ERR(0, 1669, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__50); __Pyx_GIVEREF(__pyx_tuple__50); __pyx_codeobj__51 = (PyObject*)__Pyx_PyCode_New(3, 0, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__50, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_set_combobox_current_image, 1669, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__51)) __PYX_ERR(0, 1669, __pyx_L1_error) /* "_qt_qtwogl.pyx":1676 * qtui.set_combobox_image(index_icon, icon, index) * * def set_preferences_current_face_theme(color, imageindex_icon, imagefile, imageindex, imagemode): # <<<<<<<<<<<<<< * qtui.set_button_color(str2q(color)) * set_combobox_current_image(imageindex_icon, imagefile, imageindex) */ __pyx_tuple__52 = PyTuple_Pack(5, __pyx_n_s_color, __pyx_n_s_imageindex_icon, __pyx_n_s_imagefile, __pyx_n_s_imageindex, __pyx_n_s_imagemode); if (unlikely(!__pyx_tuple__52)) __PYX_ERR(0, 1676, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__52); __Pyx_GIVEREF(__pyx_tuple__52); __pyx_codeobj__53 = (PyObject*)__Pyx_PyCode_New(5, 0, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__52, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_set_preferences_current_face_the, 1676, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__53)) __PYX_ERR(0, 1676, __pyx_L1_error) /* "_qt_qtwogl.pyx":1681 * qtui.set_imagemode(imagemode) * * def get_filedialog_imagefile(): # <<<<<<<<<<<<<< * filename = q2str(getOpenFileName(uidata.preferences, str2q(_("Open Image")), uidata.preferences.image_dirname)) * if filename: */ __pyx_tuple__54 = PyTuple_Pack(1, __pyx_n_s_filename); if (unlikely(!__pyx_tuple__54)) __PYX_ERR(0, 1681, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__54); __Pyx_GIVEREF(__pyx_tuple__54); __pyx_codeobj__55 = (PyObject*)__Pyx_PyCode_New(0, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__54, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_get_filedialog_imagefile, 1681, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__55)) __PYX_ERR(0, 1681, __pyx_L1_error) /* "_qt_qtwogl.pyx":1688 * ##pxm>IF_END * * def preferences_dialog(shader_names, sample_buffers, facenames, stockicons): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * uidata.preferences = new PreferencesDialog(uidata.mainwindow) #px/ */ __pyx_tuple__56 = PyTuple_Pack(10, __pyx_n_s_shader_names, __pyx_n_s_sample_buffers, __pyx_n_s_facenames, __pyx_n_s_stockicons, __pyx_n_s_nick, __pyx_n_s_text, __pyx_n_s_selection_nick, __pyx_n_s_facename, __pyx_n_s_facekey, __pyx_n_s_filename); if (unlikely(!__pyx_tuple__56)) __PYX_ERR(0, 1688, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__56); __Pyx_GIVEREF(__pyx_tuple__56); __pyx_codeobj__57 = (PyObject*)__Pyx_PyCode_New(4, 0, 10, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__56, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_preferences_dialog, 1688, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__57)) __PYX_ERR(0, 1688, __pyx_L1_error) /* "_qt_qtwogl.pyx":1743 * #~ ##pxm>IF_END * * def show_preferences(): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * uidata.preferences.show() */ __pyx_codeobj__58 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_show_preferences, 1743, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__58)) __PYX_ERR(0, 1743, __pyx_L1_error) /* "_qt_qtwogl.pyx":1832 * * * def initial_resize(): # <<<<<<<<<<<<<< * uidata.width, uidata.height = settings['window.size'] * uidata.mainwindow.resize(uidata.width, uidata.height) */ __pyx_tuple__59 = PyTuple_Pack(4, __pyx_n_s_s1, __pyx_n_s_s2, __pyx_n_s_divider_pos, __pyx_n_s_divider_pos2); if (unlikely(!__pyx_tuple__59)) __PYX_ERR(0, 1832, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__59); __Pyx_GIVEREF(__pyx_tuple__59); __pyx_codeobj__60 = (PyObject*)__Pyx_PyCode_New(0, 0, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__59, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_initial_resize, 1832, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__60)) __PYX_ERR(0, 1832, __pyx_L1_error) /* "_qt_qtwogl.pyx":1849 * #QTimer.singleShot(20, _on_init_finalize) * * def set_title(title): # <<<<<<<<<<<<<< * uidata.mainwindow.setTitle(str2q(title)) * */ __pyx_tuple__61 = PyTuple_Pack(1, __pyx_n_s_title); if (unlikely(!__pyx_tuple__61)) __PYX_ERR(0, 1849, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__61); __Pyx_GIVEREF(__pyx_tuple__61); __pyx_codeobj__62 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__61, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_set_title, 1849, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__62)) __PYX_ERR(0, 1849, __pyx_L1_error) /* "_qt_qtwogl.pyx":1852 * uidata.mainwindow.setTitle(str2q(title)) * * def load_ui(path): # <<<<<<<<<<<<<< * pass * ##pxm>IF 'qtw' == 'qtq' */ __pyx_tuple__63 = PyTuple_Pack(1, __pyx_n_s_path); if (unlikely(!__pyx_tuple__63)) __PYX_ERR(0, 1852, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__63); __Pyx_GIVEREF(__pyx_tuple__63); __pyx_codeobj__64 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__63, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_load_ui, 1852, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__64)) __PYX_ERR(0, 1852, __pyx_L1_error) /* "_qt_qtwogl.pyx":1865 * #~ ##pxm>IF_END * * def close_mainwindow(): # <<<<<<<<<<<<<< * uidata.mainwindow.close() * */ __pyx_codeobj__65 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_close_mainwindow, 1865, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__65)) __PYX_ERR(0, 1865, __pyx_L1_error) /* "_qt_qtwogl.pyx":1868 * uidata.mainwindow.close() * * def get_samples(): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * #TODO: uidata.drawingarea.format().samples() returns only 0 here */ __pyx_codeobj__66 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_get_samples, 1868, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__66)) __PYX_ERR(0, 1868, __pyx_L1_error) /* "_qt_qtwogl.pyx":1876 * #~ ##pxm>IF_END * * def update_drawingarea(): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * uidata.drawingarea.update() */ __pyx_codeobj__67 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_update_drawingarea, 1876, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__67)) __PYX_ERR(0, 1876, __pyx_L1_error) /* "_qt_qtwogl.pyx":1883 * #~ ##pxm>IF_END * * def set_cursor(index): # <<<<<<<<<<<<<< * if index < 0: * index += 18 */ __pyx_tuple__68 = PyTuple_Pack(1, __pyx_n_s_index); if (unlikely(!__pyx_tuple__68)) __PYX_ERR(0, 1883, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__68); __Pyx_GIVEREF(__pyx_tuple__68); __pyx_codeobj__69 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__68, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_set_cursor, 1883, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__69)) __PYX_ERR(0, 1883, __pyx_L1_error) /* "_qt_qtwogl.pyx":1895 * #~ ##pxm>IF_END * * def unset_cursor(): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * uidata.drawingarea.unsetCursor() */ __pyx_codeobj__70 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_unset_cursor, 1895, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__70)) __PYX_ERR(0, 1895, __pyx_L1_error) /* "_qt_qtwogl.pyx":1913 * #~ ##pxm>IF_END * * def save_screenshot(filename): # <<<<<<<<<<<<<< * IF OFFSCREEN: #px+ * cdef QImage image #px+ */ __pyx_tuple__71 = PyTuple_Pack(2, __pyx_n_s_filename, __pyx_n_s_image); if (unlikely(!__pyx_tuple__71)) __PYX_ERR(0, 1913, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__71); __Pyx_GIVEREF(__pyx_tuple__71); __pyx_codeobj__72 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__71, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_save_screenshot, 1913, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__72)) __PYX_ERR(0, 1913, __pyx_L1_error) /* "_qt_qtwogl.pyx":1932 * #### misc qt #### * * def parse_color(name): # <<<<<<<<<<<<<< * cdef QColor color #px/ * #color = QColor() */ __pyx_tuple__73 = PyTuple_Pack(2, __pyx_n_s_name_2, __pyx_n_s_color); if (unlikely(!__pyx_tuple__73)) __PYX_ERR(0, 1932, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__73); __Pyx_GIVEREF(__pyx_tuple__73); __pyx_codeobj__74 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__73, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_parse_color, 1932, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__74)) __PYX_ERR(0, 1932, __pyx_L1_error) /* "_qt_qtwogl.pyx":1938 * return color.red(), color.green(), color.blue() * * def parse_color_f(name): # <<<<<<<<<<<<<< * cdef QColor color #px/ * #color = QColor() */ __pyx_tuple__75 = PyTuple_Pack(2, __pyx_n_s_name_2, __pyx_n_s_color); if (unlikely(!__pyx_tuple__75)) __PYX_ERR(0, 1938, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__75); __Pyx_GIVEREF(__pyx_tuple__75); __pyx_codeobj__76 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__75, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_parse_color_f, 1938, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__76)) __PYX_ERR(0, 1938, __pyx_L1_error) /* "_qt_qtwogl.pyx":1944 * return color.redF(), color.greenF(), color.blueF() * * def load_image_from_file(filename, maxsize): # <<<<<<<<<<<<<< * cdef int width, height, scaled_width, scaled_height #px+ * cdef bytes data #px+ */ __pyx_tuple__77 = PyTuple_Pack(8, __pyx_n_s_filename, __pyx_n_s_maxsize, __pyx_n_s_width, __pyx_n_s_height, __pyx_n_s_scaled_width, __pyx_n_s_scaled_height, __pyx_n_s_data, __pyx_n_s_image); if (unlikely(!__pyx_tuple__77)) __PYX_ERR(0, 1944, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__77); __Pyx_GIVEREF(__pyx_tuple__77); __pyx_codeobj__78 = (PyObject*)__Pyx_PyCode_New(2, 0, 8, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__77, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_load_image_from_file, 1944, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__78)) __PYX_ERR(0, 1944, __pyx_L1_error) /* "_qt_qtwogl.pyx":1988 * ##pxm>IF_END * * def keyval_from_name(keystr): # <<<<<<<<<<<<<< * keystr = '+'.join(('Num' if k == 'KP' else k) for k in keystr.split('+')) * cdef QKeySequence keyseq = fromString(str2q(keystr), PortableText) #px/ */ __pyx_tuple__79 = PyTuple_Pack(4, __pyx_n_s_keystr, __pyx_n_s_keyseq, __pyx_n_s_genexpr, __pyx_n_s_genexpr); if (unlikely(!__pyx_tuple__79)) __PYX_ERR(0, 1988, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__79); __Pyx_GIVEREF(__pyx_tuple__79); __pyx_codeobj__80 = (PyObject*)__Pyx_PyCode_New(1, 0, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__79, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_keyval_from_name, 1988, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__80)) __PYX_ERR(0, 1988, __pyx_L1_error) /* "_qt_qtwogl.pyx":1996 * return keyseq[0] * * def get_pictures_folder(): # <<<<<<<<<<<<<< * cdef QStringList locations = standardLocations(PicturesLocation) #px/ * #locations = standardLocations(PicturesLocation) */ __pyx_tuple__81 = PyTuple_Pack(1, __pyx_n_s_locations); if (unlikely(!__pyx_tuple__81)) __PYX_ERR(0, 1996, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__81); __Pyx_GIVEREF(__pyx_tuple__81); __pyx_codeobj__82 = (PyObject*)__Pyx_PyCode_New(0, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__81, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_get_pictures_folder, 1996, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__82)) __PYX_ERR(0, 1996, __pyx_L1_error) /* "_qt_qtwogl.pyx":2007 * return q2str(locations[0]) * * def get_imagefile(facekey): # <<<<<<<<<<<<<< * imagefile = settings['theme.faces',facekey,'image'] * currentfolder = get_pictures_folder() */ __pyx_tuple__83 = PyTuple_Pack(3, __pyx_n_s_facekey, __pyx_n_s_imagefile, __pyx_n_s_currentfolder); if (unlikely(!__pyx_tuple__83)) __PYX_ERR(0, 2007, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__83); __Pyx_GIVEREF(__pyx_tuple__83); __pyx_codeobj__84 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__83, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_get_imagefile, 2007, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__84)) __PYX_ERR(0, 2007, __pyx_L1_error) /* "_qt_qtwogl.pyx":2016 * return currentfolder, imagefile * * def text_to_html(text): # <<<<<<<<<<<<<< * return q2str(fromPlainText(str2q(text)).toHtml()) * */ __pyx_tuple__85 = PyTuple_Pack(1, __pyx_n_s_text); if (unlikely(!__pyx_tuple__85)) __PYX_ERR(0, 2016, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__85); __Pyx_GIVEREF(__pyx_tuple__85); __pyx_codeobj__86 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__85, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_text_to_html, 2016, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__86)) __PYX_ERR(0, 2016, __pyx_L1_error) /* "_qt_qtwogl.pyx":2034 * uidata.filesystemwatcher.addPath(str2q(path)) * * def create_filesystemwatcher(path, callback): # <<<<<<<<<<<<<< * cdef QString qpath = str2q(path) #px/ * #qpath = path */ __pyx_tuple__87 = PyTuple_Pack(3, __pyx_n_s_path, __pyx_n_s_callback, __pyx_n_s_qpath); if (unlikely(!__pyx_tuple__87)) __PYX_ERR(0, 2034, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__87); __Pyx_GIVEREF(__pyx_tuple__87); __pyx_codeobj__88 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__87, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_create_filesystemwatcher, 2034, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__88)) __PYX_ERR(0, 2034, __pyx_L1_error) /* "_qt_qtwogl.pyx":2055 * else: #px+ * pydata.singleshot_handler = None #px+ * def timer_singleShot(msec, func): # <<<<<<<<<<<<<< * if pydata.singleshot_handler is None: #px+ * pydata.singleshot_handler = func #px+ */ __pyx_tuple__89 = PyTuple_Pack(2, __pyx_n_s_msec, __pyx_n_s_func); if (unlikely(!__pyx_tuple__89)) __PYX_ERR(0, 2055, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__89); __Pyx_GIVEREF(__pyx_tuple__89); __pyx_codeobj__90 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__89, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_timer_singleShot, 2055, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__90)) __PYX_ERR(0, 2055, __pyx_L1_error) /* "_qt_qtwogl.pyx":2088 * uidata.settings_timer = NULL * * def set_animation_speed(): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * uidata.speed = settings['draw.speed'] */ __pyx_codeobj__91 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_set_animation_speed, 2088, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__91)) __PYX_ERR(0, 2088, __pyx_L1_error) /* "_qt_qtwogl.pyx":2135 * * # only for demos * def animate_timer_step(angle_max): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * uidata.angle_max = angle_max */ __pyx_tuple__92 = PyTuple_Pack(1, __pyx_n_s_angle_max); if (unlikely(!__pyx_tuple__92)) __PYX_ERR(0, 2135, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__92); __Pyx_GIVEREF(__pyx_tuple__92); __pyx_codeobj__93 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__92, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_animate_timer_step, 2135, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__93)) __PYX_ERR(0, 2135, __pyx_L1_error) /* "_qt_qtwogl.pyx":2142 * pass * * def animate_timer_stop(): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * uidata.animate_timer.stop() */ __pyx_codeobj__94 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_animate_timer_stop, 2142, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__94)) __PYX_ERR(0, 2142, __pyx_L1_error) /* "_qt_qtwogl.pyx":2212 * #~ ##pxm>IF_END * * def create_window(pyapp): # <<<<<<<<<<<<<< * pydata.app = pyapp * init_module() */ __pyx_tuple__95 = PyTuple_Pack(2, __pyx_n_s_pyapp, __pyx_n_s_sizepolicy); if (unlikely(!__pyx_tuple__95)) __PYX_ERR(0, 2212, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__95); __Pyx_GIVEREF(__pyx_tuple__95); __pyx_codeobj__96 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__95, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_create_window, 2212, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__96)) __PYX_ERR(0, 2212, __pyx_L1_error) /* "_qt_qtwogl.pyx":2282 * load_cursors(os.path.join(config_.UI_DIR, 'cursors', 'mouse_{}.png')) * * def destroy_window(): # <<<<<<<<<<<<<< * destroy_cursors() * settings_timer_destroy() */ __pyx_codeobj__97 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_destroy_window, 2282, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__97)) __PYX_ERR(0, 2282, __pyx_L1_error) /* "_qt_qtwogl.pyx":2302 * #~ ##pxm>IF_END * * def app_post_create(gettext): # <<<<<<<<<<<<<< * cdef QApplication *app = QCoreApplication_instance() #px/ * #app = QCoreApplication.instance() */ __pyx_tuple__98 = PyTuple_Pack(4, __pyx_n_s_gettext, __pyx_n_s_app, __pyx_n_s_font, __pyx_n_s_fontpixelsize); if (unlikely(!__pyx_tuple__98)) __PYX_ERR(0, 2302, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__98); __Pyx_GIVEREF(__pyx_tuple__98); __pyx_codeobj__99 = (PyObject*)__Pyx_PyCode_New(1, 0, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__98, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_tmp, __pyx_n_s_app_post_create, 2302, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__99)) __PYX_ERR(0, 2302, __pyx_L1_error) __Pyx_RefNannyFinishContext(); return 0; __pyx_L1_error:; __Pyx_RefNannyFinishContext(); return -1; } static int __Pyx_InitGlobals(void) { if (__Pyx_InitStrings(__pyx_string_tab) < 0) __PYX_ERR(0, 1, __pyx_L1_error); __pyx_float_14_0 = PyFloat_FromDouble(14.0); if (unlikely(!__pyx_float_14_0)) __PYX_ERR(0, 1, __pyx_L1_error) __pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) __PYX_ERR(0, 1, __pyx_L1_error) __pyx_int_1 = PyInt_FromLong(1); if (unlikely(!__pyx_int_1)) __PYX_ERR(0, 1, __pyx_L1_error) __pyx_int_4 = PyInt_FromLong(4); if (unlikely(!__pyx_int_4)) __PYX_ERR(0, 1, __pyx_L1_error) __pyx_int_8 = PyInt_FromLong(8); if (unlikely(!__pyx_int_8)) __PYX_ERR(0, 1, __pyx_L1_error) __pyx_int_15 = PyInt_FromLong(15); if (unlikely(!__pyx_int_15)) __PYX_ERR(0, 1, __pyx_L1_error) __pyx_int_16 = PyInt_FromLong(16); if (unlikely(!__pyx_int_16)) __PYX_ERR(0, 1, __pyx_L1_error) __pyx_int_18 = PyInt_FromLong(18); if (unlikely(!__pyx_int_18)) __PYX_ERR(0, 1, __pyx_L1_error) return 0; __pyx_L1_error:; return -1; } #if PY_MAJOR_VERSION < 3 PyMODINIT_FUNC init_qt_qtwogl(void); /*proto*/ PyMODINIT_FUNC init_qt_qtwogl(void) #else PyMODINIT_FUNC PyInit__qt_qtwogl(void); /*proto*/ PyMODINIT_FUNC PyInit__qt_qtwogl(void) #endif { PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; __Pyx_RefNannyDeclarations #if CYTHON_REFNANNY __Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny"); if (!__Pyx_RefNanny) { PyErr_Clear(); __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny"); if (!__Pyx_RefNanny) Py_FatalError("failed to import 'refnanny' module"); } #endif __Pyx_RefNannySetupContext("PyMODINIT_FUNC PyInit__qt_qtwogl(void)", 0); if (__Pyx_check_binary_version() < 0) __PYX_ERR(0, 1, __pyx_L1_error) __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(0, 1, __pyx_L1_error) __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(0, 1, __pyx_L1_error) __pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(0, 1, __pyx_L1_error) #ifdef __Pyx_CyFunction_USED if (__pyx_CyFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #endif #ifdef __Pyx_FusedFunction_USED if (__pyx_FusedFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #endif #ifdef __Pyx_Coroutine_USED if (__pyx_Coroutine_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #endif #ifdef __Pyx_Generator_USED if (__pyx_Generator_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #endif #ifdef __Pyx_StopAsyncIteration_USED if (__pyx_StopAsyncIteration_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #endif /*--- Library function declarations ---*/ /*--- Threads initialization code ---*/ #if defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS #ifdef WITH_THREAD /* Python build with threading support? */ PyEval_InitThreads(); #endif #endif /*--- Module creation code ---*/ #if PY_MAJOR_VERSION < 3 __pyx_m = Py_InitModule4("_qt_qtwogl", __pyx_methods, 0, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m); #else __pyx_m = PyModule_Create(&__pyx_moduledef); #endif if (unlikely(!__pyx_m)) __PYX_ERR(0, 1, __pyx_L1_error) __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) __PYX_ERR(0, 1, __pyx_L1_error) Py_INCREF(__pyx_d); __pyx_b = PyImport_AddModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_b)) __PYX_ERR(0, 1, __pyx_L1_error) #if CYTHON_COMPILING_IN_PYPY Py_INCREF(__pyx_b); #endif if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) __PYX_ERR(0, 1, __pyx_L1_error); /*--- Initialize various global constants etc. ---*/ if (__Pyx_InitGlobals() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #if PY_MAJOR_VERSION < 3 && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT) if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #endif if (__pyx_module_is_main__qt_qtwogl) { if (PyObject_SetAttrString(__pyx_m, "__name__", __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error) } #if PY_MAJOR_VERSION >= 3 { PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(0, 1, __pyx_L1_error) if (!PyDict_GetItemString(modules, "_qt_qtwogl")) { if (unlikely(PyDict_SetItemString(modules, "_qt_qtwogl", __pyx_m) < 0)) __PYX_ERR(0, 1, __pyx_L1_error) } } #endif /*--- Builtin init code ---*/ if (__Pyx_InitCachedBuiltins() < 0) __PYX_ERR(0, 1, __pyx_L1_error) /*--- Constants init code ---*/ if (__Pyx_InitCachedConstants() < 0) __PYX_ERR(0, 1, __pyx_L1_error) /*--- Global init code ---*/ /*--- Variable export code ---*/ /*--- Function export code ---*/ /*--- Type init code ---*/ if (PyType_Ready(&__pyx_type_10_qt_qtwogl___pyx_scope_struct__keyval_from_name) < 0) __PYX_ERR(0, 1988, __pyx_L1_error) __pyx_type_10_qt_qtwogl___pyx_scope_struct__keyval_from_name.tp_print = 0; __pyx_ptype_10_qt_qtwogl___pyx_scope_struct__keyval_from_name = &__pyx_type_10_qt_qtwogl___pyx_scope_struct__keyval_from_name; if (PyType_Ready(&__pyx_type_10_qt_qtwogl___pyx_scope_struct_1_genexpr) < 0) __PYX_ERR(0, 1989, __pyx_L1_error) __pyx_type_10_qt_qtwogl___pyx_scope_struct_1_genexpr.tp_print = 0; __pyx_ptype_10_qt_qtwogl___pyx_scope_struct_1_genexpr = &__pyx_type_10_qt_qtwogl___pyx_scope_struct_1_genexpr; /*--- Type import code ---*/ /*--- Variable import code ---*/ /*--- Function import code ---*/ __pyx_t_1 = __Pyx_ImportModule("_glarea_ogl"); if (!__pyx_t_1) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_1, "render_resize", (void (**)(void))&__pyx_f_11_glarea_ogl_render_resize, "void (int, int, int)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_1, "set_animation_next", (void (**)(void))&__pyx_f_11_glarea_ogl_set_animation_next, "void (float)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_1, "sync_set_fixedshaders", (void (**)(void))&__pyx_f_11_glarea_ogl_sync_set_fixedshaders, "void (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_1, "sync_set_pick_position", (void (**)(void))&__pyx_f_11_glarea_ogl_sync_set_pick_position, "void (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_1, "sync_set_atlas_data", (void (**)(void))&__pyx_f_11_glarea_ogl_sync_set_atlas_data, "void (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_1, "sync", (void (**)(void))&__pyx_f_11_glarea_ogl_sync, "void (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_1, "gl_init", (void (**)(void))&__pyx_f_11_glarea_ogl_gl_init, "void (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_1, "gl_exit", (void (**)(void))&__pyx_f_11_glarea_ogl_gl_exit, "void (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_1, "gl_set_atlas_texture", (void (**)(void))&__pyx_f_11_glarea_ogl_gl_set_atlas_texture, "void (int, int)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_1, "gl_render", (void (**)(void))&__pyx_f_11_glarea_ogl_gl_render, "void (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_1, "gl_render_select_debug", (void (**)(void))&__pyx_f_11_glarea_ogl_gl_render_select_debug, "void (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_1, "gl_pick_polygons", (void (**)(void))&__pyx_f_11_glarea_ogl_gl_pick_polygons, "int (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) Py_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_2 = __Pyx_ImportModule("_qtui_"); if (!__pyx_t_2) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "init_module", (void (**)(void))&__pyx_f_6_qtui__init_module, "void (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "init_gettext", (void (**)(void))&__pyx_f_6_qtui__init_gettext, "void (PyObject *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "setupUi_main", (void (**)(void))&__pyx_f_6_qtui__setupUi_main, "void (QMainWindow *, QIcon const &, QIcon const &, QIcon const &, QKeySequence const &, QKeySequence const &, bool, bool)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "setupUi_pref", (void (**)(void))&__pyx_f_6_qtui__setupUi_pref, "void (QDialog *, int, int, int, int, int, QStandardItemModel *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "setupUi_help", (void (**)(void))&__pyx_f_6_qtui__setupUi_help, "void (QDialog *, QString const &)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "setupUi_about", (void (**)(void))&__pyx_f_6_qtui__setupUi_about, "void (QDialog *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "set_shortcuts", (void (**)(void))&__pyx_f_6_qtui__set_shortcuts, "void (QKeySequence const &, QKeySequence const &, QKeySequence const &, QKeySequence const &)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "add_widgets", (void (**)(void))&__pyx_f_6_qtui__add_widgets, "void (QMainWindow *, QLineEdit *, QOpenGLWidget *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "set_frame_editbar_visible", (void (**)(void))&__pyx_f_6_qtui__set_frame_editbar_visible, "void (bool)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "set_statusbar_visible", (void (**)(void))&__pyx_f_6_qtui__set_statusbar_visible, "void (bool)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "hide_controls", (void (**)(void))&__pyx_f_6_qtui__hide_controls, "void (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "get_splitter_sizes", (void (**)(void))&__pyx_f_6_qtui__get_splitter_sizes, "void (int &, int &)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "set_splitter_sizes", (void (**)(void))&__pyx_f_6_qtui__set_splitter_sizes, "void (int, int)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "splitter_update_minimumsize", (void (**)(void))&__pyx_f_6_qtui__splitter_update_minimumsize, "void (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "set_debug_text", (void (**)(void))&__pyx_f_6_qtui__set_debug_text, "void (QString const &)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "set_toolbar_state", (void (**)(void))&__pyx_f_6_qtui__set_toolbar_state, "void (int, int, int, int, int)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "clear_sidepane", (void (**)(void))&__pyx_f_6_qtui__clear_sidepane, "void (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "create_sidepane_button", (void (**)(void))&__pyx_f_6_qtui__create_sidepane_button, "QPushButton *(QString const &)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "create_sidepane_treeview", (void (**)(void))&__pyx_f_6_qtui__create_sidepane_treeview, "QTreeView *(QStandardItemModel *, int)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "set_active_plugin_group", (void (**)(void))&__pyx_f_6_qtui__set_active_plugin_group, "void (int)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "set_active_plugin_group_by_obj", (void (**)(void))&__pyx_f_6_qtui__set_active_plugin_group_by_obj, "void (QObject *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "get_plugin_group_count", (void (**)(void))&__pyx_f_6_qtui__get_plugin_group_count, "int (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "root_index", (void (**)(void))&__pyx_f_6_qtui__root_index, "QModelIndex (int)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "hide_row", (void (**)(void))&__pyx_f_6_qtui__hide_row, "void (int, bool)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "set_row_hidden", (void (**)(void))&__pyx_f_6_qtui__set_row_hidden, "void (int, int, QModelIndex const &, bool)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "splitter_pos", (void (**)(void))&__pyx_f_6_qtui__splitter_pos, "int (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "preferences_block_signals", (void (**)(void))&__pyx_f_6_qtui__preferences_block_signals, "void (bool)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "combobox_add_shaderitem", (void (**)(void))&__pyx_f_6_qtui__combobox_add_shaderitem, "void (QString const &, QString const &)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "combobox_add_samplesitem", (void (**)(void))&__pyx_f_6_qtui__combobox_add_samplesitem, "void (QString const &, QString const &)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "add_movekey_row", (void (**)(void))&__pyx_f_6_qtui__add_movekey_row, "void (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "remove_movekey_row", (void (**)(void))&__pyx_f_6_qtui__remove_movekey_row, "void (void)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "add_liststore_faces_row", (void (**)(void))&__pyx_f_6_qtui__add_liststore_faces_row, "void (QString const &, QString const &)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "finalize_liststore_faces", (void (**)(void))&__pyx_f_6_qtui__finalize_liststore_faces, "void (QWidget *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "get_liststore_faces_facekey", (void (**)(void))&__pyx_f_6_qtui__get_liststore_faces_facekey, "QString (QModelIndex const &)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "set_button_color", (void (**)(void))&__pyx_f_6_qtui__set_button_color, "void (QString const &)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "color_dialog", (void (**)(void))&__pyx_f_6_qtui__color_dialog, "QString (QWidget *, QString const &)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "set_imagemode", (void (**)(void))&__pyx_f_6_qtui__set_imagemode, "void (int)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "add_combobox_image_item", (void (**)(void))&__pyx_f_6_qtui__add_combobox_image_item, "void (QIcon const &, QString const &, QString const &)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "set_combobox_image", (void (**)(void))&__pyx_f_6_qtui__set_combobox_image, "void (int, QIcon const &, int)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "set_button_background_color", (void (**)(void))&__pyx_f_6_qtui__set_button_background_color, "void (QString const &)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "fill_page", (void (**)(void))&__pyx_f_6_qtui__fill_page, "void (QVariant, QString const &)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "set_page", (void (**)(void))&__pyx_f_6_qtui__set_page, "void (int)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "fill_header", (void (**)(void))&__pyx_f_6_qtui__fill_header, "void (QString const &, QString const &, QString const &, QString const &)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "fill_about_tab", (void (**)(void))&__pyx_f_6_qtui__fill_about_tab, "void (QString const &, QString const &, QString const &)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "fill_contribute_tab", (void (**)(void))&__pyx_f_6_qtui__fill_contribute_tab, "void (QString const &)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "fill_license_tab", (void (**)(void))&__pyx_f_6_qtui__fill_license_tab, "void (QString const &, bool, QString const &)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "tab_widget_currentChanged", (void (**)(void))&__pyx_f_6_qtui__tab_widget_currentChanged, "void (int)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "update_animation", (void (**)(void))&__pyx_f_6_qtui__update_animation, "void (bool)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "event_filter_stop_animation", (void (**)(void))&__pyx_f_6_qtui__event_filter_stop_animation, "void (QEvent *)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) if (__Pyx_ImportFunction(__pyx_t_2, "show_full_license", (void (**)(void))&__pyx_f_6_qtui__show_full_license, "void (bool, QUrl const &)") < 0) __PYX_ERR(0, 1, __pyx_L1_error) Py_DECREF(__pyx_t_2); __pyx_t_2 = 0; /*--- Execution code ---*/ #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) if (__Pyx_patch_abc() < 0) __PYX_ERR(0, 1, __pyx_L1_error) #endif /* "_qt_qtwogl.pyx":25 * # This line makes cython happy * global __name__, __package__ # pylint: disable=W0604 * __compiled = True #px/ # <<<<<<<<<<<<<< * #__compiled = False * DEF OFFSCREEN = False #px/ */ if (PyDict_SetItem(__pyx_d, __pyx_n_s_compiled_2, Py_True) < 0) __PYX_ERR(0, 25, __pyx_L1_error) /* "_qt_qtwogl.pyx":30 * #OFFSCREEN = False * * import sys, os # <<<<<<<<<<<<<< * from warnings import warn_explicit, warn * */ __pyx_t_3 = __Pyx_Import(__pyx_n_s_sys, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 30, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_d, __pyx_n_s_sys, __pyx_t_3) < 0) __PYX_ERR(0, 30, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_Import(__pyx_n_s_os, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 30, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_d, __pyx_n_s_os, __pyx_t_3) < 0) __PYX_ERR(0, 30, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "_qt_qtwogl.pyx":31 * * import sys, os * from warnings import warn_explicit, warn # <<<<<<<<<<<<<< * * cimport gl_ogl as gl #px+ */ __pyx_t_3 = PyList_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 31, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_n_s_warn_explicit); __Pyx_GIVEREF(__pyx_n_s_warn_explicit); PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_warn_explicit); __Pyx_INCREF(__pyx_n_s_warn); __Pyx_GIVEREF(__pyx_n_s_warn); PyList_SET_ITEM(__pyx_t_3, 1, __pyx_n_s_warn); __pyx_t_4 = __Pyx_Import(__pyx_n_s_warnings, __pyx_t_3, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 31, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_4, __pyx_n_s_warn_explicit); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 31, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_d, __pyx_n_s_warn_explicit, __pyx_t_3) < 0) __PYX_ERR(0, 31, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_4, __pyx_n_s_warn); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 31, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_d, __pyx_n_s_warn, __pyx_t_3) < 0) __PYX_ERR(0, 31, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwogl.pyx":35 * cimport gl_ogl as gl #px+ * * from pybiklib import config as config_ # <<<<<<<<<<<<<< * from pybiklib.settings import settings * */ __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 35, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_INCREF(__pyx_n_s_config_2); __Pyx_GIVEREF(__pyx_n_s_config_2); PyList_SET_ITEM(__pyx_t_4, 0, __pyx_n_s_config_2); __pyx_t_3 = __Pyx_Import(__pyx_n_s_pybiklib, __pyx_t_4, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 35, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_config_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 35, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_config, __pyx_t_4) < 0) __PYX_ERR(0, 35, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "_qt_qtwogl.pyx":36 * * from pybiklib import config as config_ * from pybiklib.settings import settings # <<<<<<<<<<<<<< * * cimport _glarea_ogl as glarea #px/ */ __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 36, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_n_s_settings); __Pyx_GIVEREF(__pyx_n_s_settings); PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_settings); __pyx_t_4 = __Pyx_Import(__pyx_n_s_pybiklib_settings, __pyx_t_3, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 36, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_4, __pyx_n_s_settings); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 36, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_d, __pyx_n_s_settings, __pyx_t_3) < 0) __PYX_ERR(0, 36, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwogl.pyx":100 * DEBUG_NOCONTROLS = 0x2000 * cdef long debug #px+ * debug = 0 # <<<<<<<<<<<<<< * * def set_debug_flags(module): */ __pyx_v_10_qt_qtwogl_debug = 0; /* "_qt_qtwogl.pyx":102 * debug = 0 * * def set_debug_flags(module): # <<<<<<<<<<<<<< * global debug * if module.DEBUG_MSG: debug |= DEBUG_MSG */ __pyx_t_4 = PyCFunction_NewEx(&__pyx_mdef_10_qt_qtwogl_1set_debug_flags, NULL, __pyx_n_s_qt_qtwogl); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 102, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_set_debug_flags, __pyx_t_4) < 0) __PYX_ERR(0, 102, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwogl.pyx":133 * #~ Qt.Key_CapsLock, Qt.Key_NumLock, Qt.Key_ScrollLock] * #~ ##pxm>IF_END * class QtKeys: # <<<<<<<<<<<<<< * Key_Period = Qt.Key_Period * Key_Escape = Qt.Key_Escape */ __pyx_t_4 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_QtKeys, __pyx_n_s_QtKeys, (PyObject *) NULL, __pyx_n_s_qt_qtwogl, (PyObject *) NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 133, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); /* "_qt_qtwogl.pyx":134 * #~ ##pxm>IF_END * class QtKeys: * Key_Period = Qt.Key_Period # <<<<<<<<<<<<<< * Key_Escape = Qt.Key_Escape * Key_Right = Qt.Key_Right */ __pyx_t_3 = __Pyx_PyInt_From_enum__Qt_3a__3a_Key(Qt::Key_Period); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 134, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_Key_Period, __pyx_t_3) < 0) __PYX_ERR(0, 134, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "_qt_qtwogl.pyx":135 * class QtKeys: * Key_Period = Qt.Key_Period * Key_Escape = Qt.Key_Escape # <<<<<<<<<<<<<< * Key_Right = Qt.Key_Right * Key_Left = Qt.Key_Left */ __pyx_t_3 = __Pyx_PyInt_From_enum__Qt_3a__3a_Key(Qt::Key_Escape); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 135, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_Key_Escape, __pyx_t_3) < 0) __PYX_ERR(0, 135, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "_qt_qtwogl.pyx":136 * Key_Period = Qt.Key_Period * Key_Escape = Qt.Key_Escape * Key_Right = Qt.Key_Right # <<<<<<<<<<<<<< * Key_Left = Qt.Key_Left * Key_Up = Qt.Key_Up */ __pyx_t_3 = __Pyx_PyInt_From_enum__Qt_3a__3a_Key(Qt::Key_Right); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 136, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_Key_Right, __pyx_t_3) < 0) __PYX_ERR(0, 136, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "_qt_qtwogl.pyx":137 * Key_Escape = Qt.Key_Escape * Key_Right = Qt.Key_Right * Key_Left = Qt.Key_Left # <<<<<<<<<<<<<< * Key_Up = Qt.Key_Up * Key_Down = Qt.Key_Down */ __pyx_t_3 = __Pyx_PyInt_From_enum__Qt_3a__3a_Key(Qt::Key_Left); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 137, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_Key_Left, __pyx_t_3) < 0) __PYX_ERR(0, 137, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "_qt_qtwogl.pyx":138 * Key_Right = Qt.Key_Right * Key_Left = Qt.Key_Left * Key_Up = Qt.Key_Up # <<<<<<<<<<<<<< * Key_Down = Qt.Key_Down * ShiftModifier = Qt.ShiftModifier */ __pyx_t_3 = __Pyx_PyInt_From_enum__Qt_3a__3a_Key(Qt::Key_Up); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 138, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_Key_Up, __pyx_t_3) < 0) __PYX_ERR(0, 138, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "_qt_qtwogl.pyx":139 * Key_Left = Qt.Key_Left * Key_Up = Qt.Key_Up * Key_Down = Qt.Key_Down # <<<<<<<<<<<<<< * ShiftModifier = Qt.ShiftModifier * ControlModifier = Qt.ControlModifier */ __pyx_t_3 = __Pyx_PyInt_From_enum__Qt_3a__3a_Key(Qt::Key_Down); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 139, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_Key_Down, __pyx_t_3) < 0) __PYX_ERR(0, 139, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "_qt_qtwogl.pyx":140 * Key_Up = Qt.Key_Up * Key_Down = Qt.Key_Down * ShiftModifier = Qt.ShiftModifier # <<<<<<<<<<<<<< * ControlModifier = Qt.ControlModifier * LeftButton = Qt.LeftButton */ __pyx_t_3 = __Pyx_PyInt_From_enum__Qt_3a__3a_KeyboardModifier(Qt::ShiftModifier); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 140, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_ShiftModifier, __pyx_t_3) < 0) __PYX_ERR(0, 140, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "_qt_qtwogl.pyx":141 * Key_Down = Qt.Key_Down * ShiftModifier = Qt.ShiftModifier * ControlModifier = Qt.ControlModifier # <<<<<<<<<<<<<< * LeftButton = Qt.LeftButton * RightButton = Qt.RightButton */ __pyx_t_3 = __Pyx_PyInt_From_enum__Qt_3a__3a_KeyboardModifier(Qt::ControlModifier); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 141, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_ControlModifier, __pyx_t_3) < 0) __PYX_ERR(0, 141, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "_qt_qtwogl.pyx":142 * ShiftModifier = Qt.ShiftModifier * ControlModifier = Qt.ControlModifier * LeftButton = Qt.LeftButton # <<<<<<<<<<<<<< * RightButton = Qt.RightButton * */ __pyx_t_3 = __Pyx_PyInt_From_enum__Qt_3a__3a_MouseButton(Qt::LeftButton); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 142, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_LeftButton, __pyx_t_3) < 0) __PYX_ERR(0, 142, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "_qt_qtwogl.pyx":143 * ControlModifier = Qt.ControlModifier * LeftButton = Qt.LeftButton * RightButton = Qt.RightButton # <<<<<<<<<<<<<< * * */ __pyx_t_3 = __Pyx_PyInt_From_enum__Qt_3a__3a_MouseButton(Qt::RightButton); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 143, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_RightButton, __pyx_t_3) < 0) __PYX_ERR(0, 143, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "_qt_qtwogl.pyx":133 * #~ Qt.Key_CapsLock, Qt.Key_NumLock, Qt.Key_ScrollLock] * #~ ##pxm>IF_END * class QtKeys: # <<<<<<<<<<<<<< * Key_Period = Qt.Key_Period * Key_Escape = Qt.Key_Escape */ __pyx_t_3 = __Pyx_Py3ClassCreate(((PyObject*)&__Pyx_DefaultClassType), __pyx_n_s_QtKeys, __pyx_empty_tuple, __pyx_t_4, NULL, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 133, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_d, __pyx_n_s_QtKeys, __pyx_t_3) < 0) __PYX_ERR(0, 133, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwogl.pyx":212 * cdef UIData uidata #px+ * * class PyData: # <<<<<<<<<<<<<< * filesystemwatcher_path = None * filesystemwatcher_handlers = {} */ __pyx_t_4 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_PyData, __pyx_n_s_PyData, (PyObject *) NULL, __pyx_n_s_qt_qtwogl, (PyObject *) NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 212, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); /* "_qt_qtwogl.pyx":213 * * class PyData: * filesystemwatcher_path = None # <<<<<<<<<<<<<< * filesystemwatcher_handlers = {} * singleshot_handler = None #px+ */ if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_filesystemwatcher_path, Py_None) < 0) __PYX_ERR(0, 213, __pyx_L1_error) /* "_qt_qtwogl.pyx":214 * class PyData: * filesystemwatcher_path = None * filesystemwatcher_handlers = {} # <<<<<<<<<<<<<< * singleshot_handler = None #px+ * singleshot_queue = [] #px+ */ __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 214, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_filesystemwatcher_handlers, __pyx_t_3) < 0) __PYX_ERR(0, 214, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "_qt_qtwogl.pyx":215 * filesystemwatcher_path = None * filesystemwatcher_handlers = {} * singleshot_handler = None #px+ # <<<<<<<<<<<<<< * singleshot_queue = [] #px+ * app = None */ if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_singleshot_handler, Py_None) < 0) __PYX_ERR(0, 215, __pyx_L1_error) /* "_qt_qtwogl.pyx":216 * filesystemwatcher_handlers = {} * singleshot_handler = None #px+ * singleshot_queue = [] #px+ # <<<<<<<<<<<<<< * app = None * modelselect = None */ __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 216, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_singleshot_queue, __pyx_t_3) < 0) __PYX_ERR(0, 216, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; /* "_qt_qtwogl.pyx":217 * singleshot_handler = None #px+ * singleshot_queue = [] #px+ * app = None # <<<<<<<<<<<<<< * modelselect = None * pydata = PyData() */ if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_app, Py_None) < 0) __PYX_ERR(0, 217, __pyx_L1_error) /* "_qt_qtwogl.pyx":218 * singleshot_queue = [] #px+ * app = None * modelselect = None # <<<<<<<<<<<<<< * pydata = PyData() * */ if (PyObject_SetItem(__pyx_t_4, __pyx_n_s_modelselect, Py_None) < 0) __PYX_ERR(0, 218, __pyx_L1_error) /* "_qt_qtwogl.pyx":212 * cdef UIData uidata #px+ * * class PyData: # <<<<<<<<<<<<<< * filesystemwatcher_path = None * filesystemwatcher_handlers = {} */ __pyx_t_3 = __Pyx_Py3ClassCreate(((PyObject*)&__Pyx_DefaultClassType), __pyx_n_s_PyData, __pyx_empty_tuple, __pyx_t_4, NULL, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 212, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_d, __pyx_n_s_PyData, __pyx_t_3) < 0) __PYX_ERR(0, 212, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwogl.pyx":219 * app = None * modelselect = None * pydata = PyData() # <<<<<<<<<<<<<< * * ##pxm-FUNC P */ __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_PyData); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 219, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } if (__pyx_t_5) { __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 219, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else { __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 219, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (PyDict_SetItem(__pyx_d, __pyx_n_s_pydata, __pyx_t_4) < 0) __PYX_ERR(0, 219, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwogl.pyx":396 * * ##pxm>IF 'qtw' == 'qtw' * def gl_delete_atlas(): # <<<<<<<<<<<<<< * if renderdata.texture is not NULL: * renderdata.texture.destroy() */ __pyx_t_4 = PyCFunction_NewEx(&__pyx_mdef_10_qt_qtwogl_3gl_delete_atlas, NULL, __pyx_n_s_qt_qtwogl); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 396, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_gl_delete_atlas, __pyx_t_4) < 0) __PYX_ERR(0, 396, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwogl.pyx":577 * #### ui: communicate with render-thread #### * * def set_pick_requested(pick_requested): # <<<<<<<<<<<<<< * uidata.pick_requested = pick_requested * */ __pyx_t_4 = PyCFunction_NewEx(&__pyx_mdef_10_qt_qtwogl_5set_pick_requested, NULL, __pyx_n_s_qt_qtwogl); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 577, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_set_pick_requested, __pyx_t_4) < 0) __PYX_ERR(0, 577, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwogl.pyx":981 * #~ ##pxm>IF_END * * def set_debug_text(text): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * qtui.set_debug_text(str2q(text)) */ __pyx_t_4 = PyCFunction_NewEx(&__pyx_mdef_10_qt_qtwogl_9set_debug_text, NULL, __pyx_n_s_qt_qtwogl); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 981, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_set_debug_text, __pyx_t_4) < 0) __PYX_ERR(0, 981, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwogl.pyx":988 * #~ ##pxm>IF_END * * def set_edit_moves(code, pos): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * uidata.move_edit.setText(str2q(code)) */ __pyx_t_4 = PyCFunction_NewEx(&__pyx_mdef_10_qt_qtwogl_11set_edit_moves, NULL, __pyx_n_s_qt_qtwogl); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 988, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_set_edit_moves, __pyx_t_4) < 0) __PYX_ERR(0, 988, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwogl.pyx":997 * #~ ##pxm>IF_END * * def set_status_text(text): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * uidata.statuslabel.setText(str2q(text)) */ __pyx_t_4 = PyCFunction_NewEx(&__pyx_mdef_10_qt_qtwogl_13set_status_text, NULL, __pyx_n_s_qt_qtwogl); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 997, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_set_status_text, __pyx_t_4) < 0) __PYX_ERR(0, 997, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwogl.pyx":1004 * #~ ##pxm>IF_END * * show_message_text = None # <<<<<<<<<<<<<< * ##pxm-FUNC P with gil * cdef void show_message_cb() with gil: */ if (PyDict_SetItem(__pyx_d, __pyx_n_s_show_message_text, Py_None) < 0) __PYX_ERR(0, 1004, __pyx_L1_error) /* "_qt_qtwogl.pyx":1022 * #~ ##pxm>IF_END * show_message_text = None * def show_message(message): # <<<<<<<<<<<<<< * global show_message_text * show_message_text = message */ __pyx_t_4 = PyCFunction_NewEx(&__pyx_mdef_10_qt_qtwogl_15show_message, NULL, __pyx_n_s_qt_qtwogl); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1022, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_show_message, __pyx_t_4) < 0) __PYX_ERR(0, 1022, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwogl.pyx":1041 * ##pxm>IF_END * * def fill_sidepane(plugin_data): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * # remove old plugins */ __pyx_t_4 = PyCFunction_NewEx(&__pyx_mdef_10_qt_qtwogl_17fill_sidepane, NULL, __pyx_n_s_qt_qtwogl); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1041, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_fill_sidepane, __pyx_t_4) < 0) __PYX_ERR(0, 1041, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwogl.pyx":1082 * return hide_all * ##pxm>IF_END * def update_sidepane(): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * cdef QModelIndex index #px+ */ __pyx_t_4 = PyCFunction_NewEx(&__pyx_mdef_10_qt_qtwogl_19update_sidepane, NULL, __pyx_n_s_qt_qtwogl); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1082, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_update_sidepane, __pyx_t_4) < 0) __PYX_ERR(0, 1082, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwogl.pyx":1108 * #~ ##pxm>IF_END * * def set_toolbar_state(state): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * qtui.set_toolbar_state(state[0], state[1], state[2], state[3], state[4]) */ __pyx_t_4 = PyCFunction_NewEx(&__pyx_mdef_10_qt_qtwogl_21set_toolbar_state, NULL, __pyx_n_s_qt_qtwogl); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1108, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_set_toolbar_state, __pyx_t_4) < 0) __PYX_ERR(0, 1108, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwogl.pyx":1669 * ##pxm>CPPCLASS_END * * def set_combobox_current_image(index_icon, imagefile, index): # <<<<<<<<<<<<<< * cdef QIcon icon #px/ * #icon = QIcon() */ __pyx_t_4 = PyCFunction_NewEx(&__pyx_mdef_10_qt_qtwogl_23set_combobox_current_image, NULL, __pyx_n_s_qt_qtwogl); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1669, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_set_combobox_current_image, __pyx_t_4) < 0) __PYX_ERR(0, 1669, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwogl.pyx":1676 * qtui.set_combobox_image(index_icon, icon, index) * * def set_preferences_current_face_theme(color, imageindex_icon, imagefile, imageindex, imagemode): # <<<<<<<<<<<<<< * qtui.set_button_color(str2q(color)) * set_combobox_current_image(imageindex_icon, imagefile, imageindex) */ __pyx_t_4 = PyCFunction_NewEx(&__pyx_mdef_10_qt_qtwogl_25set_preferences_current_face_theme, NULL, __pyx_n_s_qt_qtwogl); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1676, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_set_preferences_current_face_the, __pyx_t_4) < 0) __PYX_ERR(0, 1676, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwogl.pyx":1681 * qtui.set_imagemode(imagemode) * * def get_filedialog_imagefile(): # <<<<<<<<<<<<<< * filename = q2str(getOpenFileName(uidata.preferences, str2q(_("Open Image")), uidata.preferences.image_dirname)) * if filename: */ __pyx_t_4 = PyCFunction_NewEx(&__pyx_mdef_10_qt_qtwogl_27get_filedialog_imagefile, NULL, __pyx_n_s_qt_qtwogl); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1681, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_filedialog_imagefile, __pyx_t_4) < 0) __PYX_ERR(0, 1681, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwogl.pyx":1688 * ##pxm>IF_END * * def preferences_dialog(shader_names, sample_buffers, facenames, stockicons): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * uidata.preferences = new PreferencesDialog(uidata.mainwindow) #px/ */ __pyx_t_4 = PyCFunction_NewEx(&__pyx_mdef_10_qt_qtwogl_29preferences_dialog, NULL, __pyx_n_s_qt_qtwogl); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1688, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_preferences_dialog, __pyx_t_4) < 0) __PYX_ERR(0, 1688, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwogl.pyx":1743 * #~ ##pxm>IF_END * * def show_preferences(): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * uidata.preferences.show() */ __pyx_t_4 = PyCFunction_NewEx(&__pyx_mdef_10_qt_qtwogl_31show_preferences, NULL, __pyx_n_s_qt_qtwogl); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1743, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_show_preferences, __pyx_t_4) < 0) __PYX_ERR(0, 1743, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwogl.pyx":1832 * * * def initial_resize(): # <<<<<<<<<<<<<< * uidata.width, uidata.height = settings['window.size'] * uidata.mainwindow.resize(uidata.width, uidata.height) */ __pyx_t_4 = PyCFunction_NewEx(&__pyx_mdef_10_qt_qtwogl_33initial_resize, NULL, __pyx_n_s_qt_qtwogl); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1832, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_initial_resize, __pyx_t_4) < 0) __PYX_ERR(0, 1832, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwogl.pyx":1849 * #QTimer.singleShot(20, _on_init_finalize) * * def set_title(title): # <<<<<<<<<<<<<< * uidata.mainwindow.setTitle(str2q(title)) * */ __pyx_t_4 = PyCFunction_NewEx(&__pyx_mdef_10_qt_qtwogl_35set_title, NULL, __pyx_n_s_qt_qtwogl); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1849, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_set_title, __pyx_t_4) < 0) __PYX_ERR(0, 1849, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwogl.pyx":1852 * uidata.mainwindow.setTitle(str2q(title)) * * def load_ui(path): # <<<<<<<<<<<<<< * pass * ##pxm>IF 'qtw' == 'qtq' */ __pyx_t_4 = PyCFunction_NewEx(&__pyx_mdef_10_qt_qtwogl_37load_ui, NULL, __pyx_n_s_qt_qtwogl); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1852, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_load_ui, __pyx_t_4) < 0) __PYX_ERR(0, 1852, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwogl.pyx":1865 * #~ ##pxm>IF_END * * def close_mainwindow(): # <<<<<<<<<<<<<< * uidata.mainwindow.close() * */ __pyx_t_4 = PyCFunction_NewEx(&__pyx_mdef_10_qt_qtwogl_39close_mainwindow, NULL, __pyx_n_s_qt_qtwogl); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1865, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_close_mainwindow, __pyx_t_4) < 0) __PYX_ERR(0, 1865, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwogl.pyx":1868 * uidata.mainwindow.close() * * def get_samples(): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * #TODO: uidata.drawingarea.format().samples() returns only 0 here */ __pyx_t_4 = PyCFunction_NewEx(&__pyx_mdef_10_qt_qtwogl_41get_samples, NULL, __pyx_n_s_qt_qtwogl); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1868, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_samples, __pyx_t_4) < 0) __PYX_ERR(0, 1868, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwogl.pyx":1876 * #~ ##pxm>IF_END * * def update_drawingarea(): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * uidata.drawingarea.update() */ __pyx_t_4 = PyCFunction_NewEx(&__pyx_mdef_10_qt_qtwogl_43update_drawingarea, NULL, __pyx_n_s_qt_qtwogl); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1876, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_update_drawingarea, __pyx_t_4) < 0) __PYX_ERR(0, 1876, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwogl.pyx":1883 * #~ ##pxm>IF_END * * def set_cursor(index): # <<<<<<<<<<<<<< * if index < 0: * index += 18 */ __pyx_t_4 = PyCFunction_NewEx(&__pyx_mdef_10_qt_qtwogl_45set_cursor, NULL, __pyx_n_s_qt_qtwogl); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1883, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_set_cursor, __pyx_t_4) < 0) __PYX_ERR(0, 1883, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwogl.pyx":1895 * #~ ##pxm>IF_END * * def unset_cursor(): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * uidata.drawingarea.unsetCursor() */ __pyx_t_4 = PyCFunction_NewEx(&__pyx_mdef_10_qt_qtwogl_47unset_cursor, NULL, __pyx_n_s_qt_qtwogl); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1895, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_unset_cursor, __pyx_t_4) < 0) __PYX_ERR(0, 1895, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwogl.pyx":1913 * #~ ##pxm>IF_END * * def save_screenshot(filename): # <<<<<<<<<<<<<< * IF OFFSCREEN: #px+ * cdef QImage image #px+ */ __pyx_t_4 = PyCFunction_NewEx(&__pyx_mdef_10_qt_qtwogl_49save_screenshot, NULL, __pyx_n_s_qt_qtwogl); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1913, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_save_screenshot, __pyx_t_4) < 0) __PYX_ERR(0, 1913, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwogl.pyx":1932 * #### misc qt #### * * def parse_color(name): # <<<<<<<<<<<<<< * cdef QColor color #px/ * #color = QColor() */ __pyx_t_4 = PyCFunction_NewEx(&__pyx_mdef_10_qt_qtwogl_51parse_color, NULL, __pyx_n_s_qt_qtwogl); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1932, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_parse_color, __pyx_t_4) < 0) __PYX_ERR(0, 1932, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwogl.pyx":1938 * return color.red(), color.green(), color.blue() * * def parse_color_f(name): # <<<<<<<<<<<<<< * cdef QColor color #px/ * #color = QColor() */ __pyx_t_4 = PyCFunction_NewEx(&__pyx_mdef_10_qt_qtwogl_53parse_color_f, NULL, __pyx_n_s_qt_qtwogl); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1938, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_parse_color_f, __pyx_t_4) < 0) __PYX_ERR(0, 1938, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwogl.pyx":1944 * return color.redF(), color.greenF(), color.blueF() * * def load_image_from_file(filename, maxsize): # <<<<<<<<<<<<<< * cdef int width, height, scaled_width, scaled_height #px+ * cdef bytes data #px+ */ __pyx_t_4 = PyCFunction_NewEx(&__pyx_mdef_10_qt_qtwogl_55load_image_from_file, NULL, __pyx_n_s_qt_qtwogl); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1944, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_load_image_from_file, __pyx_t_4) < 0) __PYX_ERR(0, 1944, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwogl.pyx":1988 * ##pxm>IF_END * * def keyval_from_name(keystr): # <<<<<<<<<<<<<< * keystr = '+'.join(('Num' if k == 'KP' else k) for k in keystr.split('+')) * cdef QKeySequence keyseq = fromString(str2q(keystr), PortableText) #px/ */ __pyx_t_4 = PyCFunction_NewEx(&__pyx_mdef_10_qt_qtwogl_57keyval_from_name, NULL, __pyx_n_s_qt_qtwogl); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1988, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_keyval_from_name, __pyx_t_4) < 0) __PYX_ERR(0, 1988, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwogl.pyx":1996 * return keyseq[0] * * def get_pictures_folder(): # <<<<<<<<<<<<<< * cdef QStringList locations = standardLocations(PicturesLocation) #px/ * #locations = standardLocations(PicturesLocation) */ __pyx_t_4 = PyCFunction_NewEx(&__pyx_mdef_10_qt_qtwogl_59get_pictures_folder, NULL, __pyx_n_s_qt_qtwogl); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1996, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_pictures_folder, __pyx_t_4) < 0) __PYX_ERR(0, 1996, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwogl.pyx":2007 * return q2str(locations[0]) * * def get_imagefile(facekey): # <<<<<<<<<<<<<< * imagefile = settings['theme.faces',facekey,'image'] * currentfolder = get_pictures_folder() */ __pyx_t_4 = PyCFunction_NewEx(&__pyx_mdef_10_qt_qtwogl_61get_imagefile, NULL, __pyx_n_s_qt_qtwogl); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2007, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_get_imagefile, __pyx_t_4) < 0) __PYX_ERR(0, 2007, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwogl.pyx":2016 * return currentfolder, imagefile * * def text_to_html(text): # <<<<<<<<<<<<<< * return q2str(fromPlainText(str2q(text)).toHtml()) * */ __pyx_t_4 = PyCFunction_NewEx(&__pyx_mdef_10_qt_qtwogl_63text_to_html, NULL, __pyx_n_s_qt_qtwogl); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2016, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_text_to_html, __pyx_t_4) < 0) __PYX_ERR(0, 2016, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwogl.pyx":2034 * uidata.filesystemwatcher.addPath(str2q(path)) * * def create_filesystemwatcher(path, callback): # <<<<<<<<<<<<<< * cdef QString qpath = str2q(path) #px/ * #qpath = path */ __pyx_t_4 = PyCFunction_NewEx(&__pyx_mdef_10_qt_qtwogl_65create_filesystemwatcher, NULL, __pyx_n_s_qt_qtwogl); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2034, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_create_filesystemwatcher, __pyx_t_4) < 0) __PYX_ERR(0, 2034, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwogl.pyx":2055 * else: #px+ * pydata.singleshot_handler = None #px+ * def timer_singleShot(msec, func): # <<<<<<<<<<<<<< * if pydata.singleshot_handler is None: #px+ * pydata.singleshot_handler = func #px+ */ __pyx_t_4 = PyCFunction_NewEx(&__pyx_mdef_10_qt_qtwogl_67timer_singleShot, NULL, __pyx_n_s_qt_qtwogl); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2055, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_timer_singleShot, __pyx_t_4) < 0) __PYX_ERR(0, 2055, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwogl.pyx":2088 * uidata.settings_timer = NULL * * def set_animation_speed(): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * uidata.speed = settings['draw.speed'] */ __pyx_t_4 = PyCFunction_NewEx(&__pyx_mdef_10_qt_qtwogl_71set_animation_speed, NULL, __pyx_n_s_qt_qtwogl); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2088, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_set_animation_speed, __pyx_t_4) < 0) __PYX_ERR(0, 2088, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwogl.pyx":2135 * * # only for demos * def animate_timer_step(angle_max): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * uidata.angle_max = angle_max */ __pyx_t_4 = PyCFunction_NewEx(&__pyx_mdef_10_qt_qtwogl_75animate_timer_step, NULL, __pyx_n_s_qt_qtwogl); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2135, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_animate_timer_step, __pyx_t_4) < 0) __PYX_ERR(0, 2135, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwogl.pyx":2142 * pass * * def animate_timer_stop(): # <<<<<<<<<<<<<< * ##pxm>IF 'qtw' == 'qtw' * uidata.animate_timer.stop() */ __pyx_t_4 = PyCFunction_NewEx(&__pyx_mdef_10_qt_qtwogl_77animate_timer_stop, NULL, __pyx_n_s_qt_qtwogl); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2142, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_animate_timer_stop, __pyx_t_4) < 0) __PYX_ERR(0, 2142, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwogl.pyx":2212 * #~ ##pxm>IF_END * * def create_window(pyapp): # <<<<<<<<<<<<<< * pydata.app = pyapp * init_module() */ __pyx_t_4 = PyCFunction_NewEx(&__pyx_mdef_10_qt_qtwogl_79create_window, NULL, __pyx_n_s_qt_qtwogl); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2212, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_create_window, __pyx_t_4) < 0) __PYX_ERR(0, 2212, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwogl.pyx":2282 * load_cursors(os.path.join(config_.UI_DIR, 'cursors', 'mouse_{}.png')) * * def destroy_window(): # <<<<<<<<<<<<<< * destroy_cursors() * settings_timer_destroy() */ __pyx_t_4 = PyCFunction_NewEx(&__pyx_mdef_10_qt_qtwogl_81destroy_window, NULL, __pyx_n_s_qt_qtwogl); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2282, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_destroy_window, __pyx_t_4) < 0) __PYX_ERR(0, 2282, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwogl.pyx":2302 * #~ ##pxm>IF_END * * def app_post_create(gettext): # <<<<<<<<<<<<<< * cdef QApplication *app = QCoreApplication_instance() #px/ * #app = QCoreApplication.instance() */ __pyx_t_4 = PyCFunction_NewEx(&__pyx_mdef_10_qt_qtwogl_83app_post_create, NULL, __pyx_n_s_qt_qtwogl); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2302, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_app_post_create, __pyx_t_4) < 0) __PYX_ERR(0, 2302, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "_qt_qtwogl.pyx":1 * # -*- coding: utf-8 -*- # <<<<<<<<<<<<<< * # cython: profile=False * */ __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_4) < 0) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /*--- Wrapped vars code ---*/ goto __pyx_L0; __pyx_L1_error:; __Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __Pyx_XDECREF(__pyx_t_5); if (__pyx_m) { if (__pyx_d) { __Pyx_AddTraceback("init _qt_qtwogl", __pyx_clineno, __pyx_lineno, __pyx_filename); } Py_DECREF(__pyx_m); __pyx_m = 0; } else if (!PyErr_Occurred()) { PyErr_SetString(PyExc_ImportError, "init _qt_qtwogl"); } __pyx_L0:; __Pyx_RefNannyFinishContext(); #if PY_MAJOR_VERSION < 3 return; #else return __pyx_m; #endif } /* --- Runtime support code --- */ /* Refnanny */ #if CYTHON_REFNANNY static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) { PyObject *m = NULL, *p = NULL; void *r = NULL; m = PyImport_ImportModule((char *)modname); if (!m) goto end; p = PyObject_GetAttrString(m, (char *)"RefNannyAPI"); if (!p) goto end; r = PyLong_AsVoidPtr(p); end: Py_XDECREF(p); Py_XDECREF(m); return (__Pyx_RefNannyAPIStruct *)r; } #endif /* GetBuiltinName */ static PyObject *__Pyx_GetBuiltinName(PyObject *name) { PyObject* result = __Pyx_PyObject_GetAttrStr(__pyx_b, name); if (unlikely(!result)) { PyErr_Format(PyExc_NameError, #if PY_MAJOR_VERSION >= 3 "name '%U' is not defined", name); #else "name '%.200s' is not defined", PyString_AS_STRING(name)); #endif } return result; } /* GetModuleGlobalName */ static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name) { PyObject *result; #if !CYTHON_AVOID_BORROWED_REFS result = PyDict_GetItem(__pyx_d, name); if (likely(result)) { Py_INCREF(result); } else { #else result = PyObject_GetItem(__pyx_d, name); if (!result) { PyErr_Clear(); #endif result = __Pyx_GetBuiltinName(name); } return result; } /* PyObjectCall */ #if CYTHON_COMPILING_IN_CPYTHON static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) { PyObject *result; ternaryfunc call = func->ob_type->tp_call; if (unlikely(!call)) return PyObject_Call(func, arg, kw); if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) return NULL; result = (*call)(func, arg, kw); Py_LeaveRecursiveCall(); if (unlikely(!result) && unlikely(!PyErr_Occurred())) { PyErr_SetString( PyExc_SystemError, "NULL result without error in PyObject_Call"); } return result; } #endif /* PyErrFetchRestore */ #if CYTHON_FAST_THREAD_STATE static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { PyObject *tmp_type, *tmp_value, *tmp_tb; tmp_type = tstate->curexc_type; tmp_value = tstate->curexc_value; tmp_tb = tstate->curexc_traceback; tstate->curexc_type = type; tstate->curexc_value = value; tstate->curexc_traceback = tb; Py_XDECREF(tmp_type); Py_XDECREF(tmp_value); Py_XDECREF(tmp_tb); } static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { *type = tstate->curexc_type; *value = tstate->curexc_value; *tb = tstate->curexc_traceback; tstate->curexc_type = 0; tstate->curexc_value = 0; tstate->curexc_traceback = 0; } #endif /* WriteUnraisableException */ static void __Pyx_WriteUnraisable(const char *name, CYTHON_UNUSED int clineno, CYTHON_UNUSED int lineno, CYTHON_UNUSED const char *filename, int full_traceback, CYTHON_UNUSED int nogil) { PyObject *old_exc, *old_val, *old_tb; PyObject *ctx; __Pyx_PyThreadState_declare #ifdef WITH_THREAD PyGILState_STATE state; if (nogil) state = PyGILState_Ensure(); #ifdef _MSC_VER else state = (PyGILState_STATE)-1; #endif #endif __Pyx_PyThreadState_assign __Pyx_ErrFetch(&old_exc, &old_val, &old_tb); if (full_traceback) { Py_XINCREF(old_exc); Py_XINCREF(old_val); Py_XINCREF(old_tb); __Pyx_ErrRestore(old_exc, old_val, old_tb); PyErr_PrintEx(1); } #if PY_MAJOR_VERSION < 3 ctx = PyString_FromString(name); #else ctx = PyUnicode_FromString(name); #endif __Pyx_ErrRestore(old_exc, old_val, old_tb); if (!ctx) { PyErr_WriteUnraisable(Py_None); } else { PyErr_WriteUnraisable(ctx); Py_DECREF(ctx); } #ifdef WITH_THREAD if (nogil) PyGILState_Release(state); #endif } /* decode_c_string */ static CYTHON_INLINE PyObject* __Pyx_decode_c_string( const char* cstring, Py_ssize_t start, Py_ssize_t stop, const char* encoding, const char* errors, PyObject* (*decode_func)(const char *s, Py_ssize_t size, const char *errors)) { Py_ssize_t length; if (unlikely((start < 0) | (stop < 0))) { size_t slen = strlen(cstring); if (unlikely(slen > (size_t) PY_SSIZE_T_MAX)) { PyErr_SetString(PyExc_OverflowError, "c-string too long to convert to Python"); return NULL; } length = (Py_ssize_t) slen; if (start < 0) { start += length; if (start < 0) start = 0; } if (stop < 0) stop += length; } length = stop - start; if (unlikely(length <= 0)) return PyUnicode_FromUnicode(NULL, 0); cstring += start; if (decode_func) { return decode_func(cstring, length, errors); } else { return PyUnicode_Decode(cstring, length, encoding, errors); } } /* GetItemInt */ static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) { PyObject *r; if (!j) return NULL; r = PyObject_GetItem(o, j); Py_DECREF(j); return r; } static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i, CYTHON_NCP_UNUSED int wraparound, CYTHON_NCP_UNUSED int boundscheck) { #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (wraparound & unlikely(i < 0)) i += PyList_GET_SIZE(o); if ((!boundscheck) || likely((0 <= i) & (i < PyList_GET_SIZE(o)))) { PyObject *r = PyList_GET_ITEM(o, i); Py_INCREF(r); return r; } return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); #else return PySequence_GetItem(o, i); #endif } static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i, CYTHON_NCP_UNUSED int wraparound, CYTHON_NCP_UNUSED int boundscheck) { #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (wraparound & unlikely(i < 0)) i += PyTuple_GET_SIZE(o); if ((!boundscheck) || likely((0 <= i) & (i < PyTuple_GET_SIZE(o)))) { PyObject *r = PyTuple_GET_ITEM(o, i); Py_INCREF(r); return r; } return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); #else return PySequence_GetItem(o, i); #endif } static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, int is_list, CYTHON_NCP_UNUSED int wraparound, CYTHON_NCP_UNUSED int boundscheck) { #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS if (is_list || PyList_CheckExact(o)) { Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyList_GET_SIZE(o); if ((!boundscheck) || (likely((n >= 0) & (n < PyList_GET_SIZE(o))))) { PyObject *r = PyList_GET_ITEM(o, n); Py_INCREF(r); return r; } } else if (PyTuple_CheckExact(o)) { Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o); if ((!boundscheck) || likely((n >= 0) & (n < PyTuple_GET_SIZE(o)))) { PyObject *r = PyTuple_GET_ITEM(o, n); Py_INCREF(r); return r; } } else { PySequenceMethods *m = Py_TYPE(o)->tp_as_sequence; if (likely(m && m->sq_item)) { if (wraparound && unlikely(i < 0) && likely(m->sq_length)) { Py_ssize_t l = m->sq_length(o); if (likely(l >= 0)) { i += l; } else { if (!PyErr_ExceptionMatches(PyExc_OverflowError)) return NULL; PyErr_Clear(); } } return m->sq_item(o, i); } } #else if (is_list || PySequence_Check(o)) { return PySequence_GetItem(o, i); } #endif return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i)); } /* RaiseTooManyValuesToUnpack */ static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) { PyErr_Format(PyExc_ValueError, "too many values to unpack (expected %" CYTHON_FORMAT_SSIZE_T "d)", expected); } /* RaiseNeedMoreValuesToUnpack */ static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) { PyErr_Format(PyExc_ValueError, "need more than %" CYTHON_FORMAT_SSIZE_T "d value%.1s to unpack", index, (index == 1) ? "" : "s"); } /* IterFinish */ static CYTHON_INLINE int __Pyx_IterFinish(void) { #if CYTHON_FAST_THREAD_STATE PyThreadState *tstate = PyThreadState_GET(); PyObject* exc_type = tstate->curexc_type; if (unlikely(exc_type)) { if (likely(exc_type == PyExc_StopIteration) || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)) { PyObject *exc_value, *exc_tb; exc_value = tstate->curexc_value; exc_tb = tstate->curexc_traceback; tstate->curexc_type = 0; tstate->curexc_value = 0; tstate->curexc_traceback = 0; Py_DECREF(exc_type); Py_XDECREF(exc_value); Py_XDECREF(exc_tb); return 0; } else { return -1; } } return 0; #else if (unlikely(PyErr_Occurred())) { if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) { PyErr_Clear(); return 0; } else { return -1; } } return 0; #endif } /* UnpackItemEndCheck */ static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected) { if (unlikely(retval)) { Py_DECREF(retval); __Pyx_RaiseTooManyValuesError(expected); return -1; } else { return __Pyx_IterFinish(); } return 0; } /* BytesEquals */ static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) { #if CYTHON_COMPILING_IN_PYPY return PyObject_RichCompareBool(s1, s2, equals); #else if (s1 == s2) { return (equals == Py_EQ); } else if (PyBytes_CheckExact(s1) & PyBytes_CheckExact(s2)) { const char *ps1, *ps2; Py_ssize_t length = PyBytes_GET_SIZE(s1); if (length != PyBytes_GET_SIZE(s2)) return (equals == Py_NE); ps1 = PyBytes_AS_STRING(s1); ps2 = PyBytes_AS_STRING(s2); if (ps1[0] != ps2[0]) { return (equals == Py_NE); } else if (length == 1) { return (equals == Py_EQ); } else { int result = memcmp(ps1, ps2, (size_t)length); return (equals == Py_EQ) ? (result == 0) : (result != 0); } } else if ((s1 == Py_None) & PyBytes_CheckExact(s2)) { return (equals == Py_NE); } else if ((s2 == Py_None) & PyBytes_CheckExact(s1)) { return (equals == Py_NE); } else { int result; PyObject* py_result = PyObject_RichCompare(s1, s2, equals); if (!py_result) return -1; result = __Pyx_PyObject_IsTrue(py_result); Py_DECREF(py_result); return result; } #endif } /* PyIntBinop */ #if !CYTHON_COMPILING_IN_PYPY static PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED int inplace) { if (op1 == op2) { Py_RETURN_TRUE; } #if PY_MAJOR_VERSION < 3 if (likely(PyInt_CheckExact(op1))) { const long b = intval; long a = PyInt_AS_LONG(op1); if (a == b) { Py_RETURN_TRUE; } else { Py_RETURN_FALSE; } } #endif #if CYTHON_USE_PYLONG_INTERNALS if (likely(PyLong_CheckExact(op1))) { const long b = intval; long a; const digit* digits = ((PyLongObject*)op1)->ob_digit; const Py_ssize_t size = Py_SIZE(op1); if (likely(__Pyx_sst_abs(size) <= 1)) { a = likely(size) ? digits[0] : 0; if (size == -1) a = -a; } else { switch (size) { case -2: if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; } case 2: if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; } case -3: if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; } case 3: if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; } case -4: if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; } case 4: if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; } #if PyLong_SHIFT < 30 && PyLong_SHIFT != 15 default: return PyLong_Type.tp_richcompare(op1, op2, Py_EQ); #else default: Py_RETURN_FALSE; #endif } } if (a == b) { Py_RETURN_TRUE; } else { Py_RETURN_FALSE; } } #endif if (PyFloat_CheckExact(op1)) { const long b = intval; double a = PyFloat_AS_DOUBLE(op1); if ((double)a == (double)b) { Py_RETURN_TRUE; } else { Py_RETURN_FALSE; } } return PyObject_RichCompare(op1, op2, Py_EQ); } #endif /* PyCFunctionFastCall */ #if CYTHON_FAST_PYCCALL static CYTHON_INLINE PyObject * __Pyx_PyCFunction_FastCall(PyObject *func_obj, PyObject **args, Py_ssize_t nargs) { PyCFunctionObject *func = (PyCFunctionObject*)func_obj; PyCFunction meth = PyCFunction_GET_FUNCTION(func); PyObject *self = PyCFunction_GET_SELF(func); assert(PyCFunction_Check(func)); assert(METH_FASTCALL == (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST))); assert(nargs >= 0); assert(nargs == 0 || args != NULL); /* _PyCFunction_FastCallDict() must not be called with an exception set, because it may clear it (directly or indirectly) and so the caller loses its exception */ assert(!PyErr_Occurred()); return (*((__Pyx_PyCFunctionFast)meth)) (self, args, nargs, NULL); } #endif // CYTHON_FAST_PYCCALL /* PyFunctionFastCall */ #if CYTHON_FAST_PYCALL #include "frameobject.h" static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args, Py_ssize_t na, PyObject *globals) { PyFrameObject *f; PyThreadState *tstate = PyThreadState_GET(); PyObject **fastlocals; Py_ssize_t i; PyObject *result; assert(globals != NULL); /* XXX Perhaps we should create a specialized PyFrame_New() that doesn't take locals, but does take builtins without sanity checking them. */ assert(tstate != NULL); f = PyFrame_New(tstate, co, globals, NULL); if (f == NULL) { return NULL; } fastlocals = f->f_localsplus; for (i = 0; i < na; i++) { Py_INCREF(*args); fastlocals[i] = *args++; } result = PyEval_EvalFrameEx(f,0); ++tstate->recursion_depth; Py_DECREF(f); --tstate->recursion_depth; return result; } #if 1 || PY_VERSION_HEX < 0x030600B1 static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, int nargs, PyObject *kwargs) { PyCodeObject *co = (PyCodeObject *)PyFunction_GET_CODE(func); PyObject *globals = PyFunction_GET_GLOBALS(func); PyObject *argdefs = PyFunction_GET_DEFAULTS(func); PyObject *closure; #if PY_MAJOR_VERSION >= 3 PyObject *kwdefs; #endif PyObject *kwtuple, **k; PyObject **d; Py_ssize_t nd; Py_ssize_t nk; PyObject *result; assert(kwargs == NULL || PyDict_Check(kwargs)); nk = kwargs ? PyDict_Size(kwargs) : 0; if (Py_EnterRecursiveCall((char*)" while calling a Python object")) { return NULL; } if ( #if PY_MAJOR_VERSION >= 3 co->co_kwonlyargcount == 0 && #endif likely(kwargs == NULL || nk == 0) && co->co_flags == (CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE)) { if (argdefs == NULL && co->co_argcount == nargs) { result = __Pyx_PyFunction_FastCallNoKw(co, args, nargs, globals); goto done; } else if (nargs == 0 && argdefs != NULL && co->co_argcount == Py_SIZE(argdefs)) { /* function called with no arguments, but all parameters have a default value: use default values as arguments .*/ args = &PyTuple_GET_ITEM(argdefs, 0); result =__Pyx_PyFunction_FastCallNoKw(co, args, Py_SIZE(argdefs), globals); goto done; } } if (kwargs != NULL) { Py_ssize_t pos, i; kwtuple = PyTuple_New(2 * nk); if (kwtuple == NULL) { result = NULL; goto done; } k = &PyTuple_GET_ITEM(kwtuple, 0); pos = i = 0; while (PyDict_Next(kwargs, &pos, &k[i], &k[i+1])) { Py_INCREF(k[i]); Py_INCREF(k[i+1]); i += 2; } nk = i / 2; } else { kwtuple = NULL; k = NULL; } closure = PyFunction_GET_CLOSURE(func); #if PY_MAJOR_VERSION >= 3 kwdefs = PyFunction_GET_KW_DEFAULTS(func); #endif if (argdefs != NULL) { d = &PyTuple_GET_ITEM(argdefs, 0); nd = Py_SIZE(argdefs); } else { d = NULL; nd = 0; } #if PY_MAJOR_VERSION >= 3 result = PyEval_EvalCodeEx((PyObject*)co, globals, (PyObject *)NULL, args, nargs, k, (int)nk, d, (int)nd, kwdefs, closure); #else result = PyEval_EvalCodeEx(co, globals, (PyObject *)NULL, args, nargs, k, (int)nk, d, (int)nd, closure); #endif Py_XDECREF(kwtuple); done: Py_LeaveRecursiveCall(); return result; } #endif // CPython < 3.6 #endif // CYTHON_FAST_PYCALL /* PyObjectCallMethO */ #if CYTHON_COMPILING_IN_CPYTHON static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) { PyObject *self, *result; PyCFunction cfunc; cfunc = PyCFunction_GET_FUNCTION(func); self = PyCFunction_GET_SELF(func); if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) return NULL; result = cfunc(self, arg); Py_LeaveRecursiveCall(); if (unlikely(!result) && unlikely(!PyErr_Occurred())) { PyErr_SetString( PyExc_SystemError, "NULL result without error in PyObject_Call"); } return result; } #endif /* PyObjectCallOneArg */ #if CYTHON_COMPILING_IN_CPYTHON static PyObject* __Pyx__PyObject_CallOneArg(PyObject *func, PyObject *arg) { PyObject *result; PyObject *args = PyTuple_New(1); if (unlikely(!args)) return NULL; Py_INCREF(arg); PyTuple_SET_ITEM(args, 0, arg); result = __Pyx_PyObject_Call(func, args, NULL); Py_DECREF(args); return result; } static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { #if CYTHON_FAST_PYCALL if (PyFunction_Check(func)) { return __Pyx_PyFunction_FastCall(func, &arg, 1); } #endif #ifdef __Pyx_CyFunction_USED if (likely(PyCFunction_Check(func) || PyObject_TypeCheck(func, __pyx_CyFunctionType))) { #else if (likely(PyCFunction_Check(func))) { #endif if (likely(PyCFunction_GET_FLAGS(func) & METH_O)) { return __Pyx_PyObject_CallMethO(func, arg); #if CYTHON_FAST_PYCCALL } else if (PyCFunction_GET_FLAGS(func) & METH_FASTCALL) { return __Pyx_PyCFunction_FastCall(func, &arg, 1); #endif } } return __Pyx__PyObject_CallOneArg(func, arg); } #else static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { PyObject *result; PyObject *args = PyTuple_Pack(1, arg); if (unlikely(!args)) return NULL; result = __Pyx_PyObject_Call(func, args, NULL); Py_DECREF(args); return result; } #endif /* None */ static CYTHON_INLINE qint64 __Pyx_div_qint64(qint64 a, qint64 b) { qint64 q = a / b; qint64 r = a - q*b; q -= ((r != 0) & ((r ^ b) < 0)); return q; } /* RaiseArgTupleInvalid */ static void __Pyx_RaiseArgtupleInvalid( const char* func_name, int exact, Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found) { Py_ssize_t num_expected; const char *more_or_less; if (num_found < num_min) { num_expected = num_min; more_or_less = "at least"; } else { num_expected = num_max; more_or_less = "at most"; } if (exact) { more_or_less = "exactly"; } PyErr_Format(PyExc_TypeError, "%.200s() takes %.8s %" CYTHON_FORMAT_SSIZE_T "d positional argument%.1s (%" CYTHON_FORMAT_SSIZE_T "d given)", func_name, more_or_less, num_expected, (num_expected == 1) ? "" : "s", num_found); } /* RaiseDoubleKeywords */ static void __Pyx_RaiseDoubleKeywordsError( const char* func_name, PyObject* kw_name) { PyErr_Format(PyExc_TypeError, #if PY_MAJOR_VERSION >= 3 "%s() got multiple values for keyword argument '%U'", func_name, kw_name); #else "%s() got multiple values for keyword argument '%s'", func_name, PyString_AsString(kw_name)); #endif } /* ParseKeywords */ static int __Pyx_ParseOptionalKeywords( PyObject *kwds, PyObject **argnames[], PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args, const char* function_name) { PyObject *key = 0, *value = 0; Py_ssize_t pos = 0; PyObject*** name; PyObject*** first_kw_arg = argnames + num_pos_args; while (PyDict_Next(kwds, &pos, &key, &value)) { name = first_kw_arg; while (*name && (**name != key)) name++; if (*name) { values[name-argnames] = value; continue; } name = first_kw_arg; #if PY_MAJOR_VERSION < 3 if (likely(PyString_CheckExact(key)) || likely(PyString_Check(key))) { while (*name) { if ((CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**name) == PyString_GET_SIZE(key)) && _PyString_Eq(**name, key)) { values[name-argnames] = value; break; } name++; } if (*name) continue; else { PyObject*** argname = argnames; while (argname != first_kw_arg) { if ((**argname == key) || ( (CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**argname) == PyString_GET_SIZE(key)) && _PyString_Eq(**argname, key))) { goto arg_passed_twice; } argname++; } } } else #endif if (likely(PyUnicode_Check(key))) { while (*name) { int cmp = (**name == key) ? 0 : #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 (PyUnicode_GET_SIZE(**name) != PyUnicode_GET_SIZE(key)) ? 1 : #endif PyUnicode_Compare(**name, key); if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; if (cmp == 0) { values[name-argnames] = value; break; } name++; } if (*name) continue; else { PyObject*** argname = argnames; while (argname != first_kw_arg) { int cmp = (**argname == key) ? 0 : #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3 (PyUnicode_GET_SIZE(**argname) != PyUnicode_GET_SIZE(key)) ? 1 : #endif PyUnicode_Compare(**argname, key); if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad; if (cmp == 0) goto arg_passed_twice; argname++; } } } else goto invalid_keyword_type; if (kwds2) { if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad; } else { goto invalid_keyword; } } return 0; arg_passed_twice: __Pyx_RaiseDoubleKeywordsError(function_name, key); goto bad; invalid_keyword_type: PyErr_Format(PyExc_TypeError, "%.200s() keywords must be strings", function_name); goto bad; invalid_keyword: PyErr_Format(PyExc_TypeError, #if PY_MAJOR_VERSION < 3 "%.200s() got an unexpected keyword argument '%.200s'", function_name, PyString_AsString(key)); #else "%s() got an unexpected keyword argument '%U'", function_name, key); #endif bad: return -1; } /* PyIntBinop */ #if !CYTHON_COMPILING_IN_PYPY static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED int inplace) { #if PY_MAJOR_VERSION < 3 if (likely(PyInt_CheckExact(op1))) { const long b = intval; long x; long a = PyInt_AS_LONG(op1); x = (long)((unsigned long)a + b); if (likely((x^a) >= 0 || (x^b) >= 0)) return PyInt_FromLong(x); return PyLong_Type.tp_as_number->nb_add(op1, op2); } #endif #if CYTHON_USE_PYLONG_INTERNALS if (likely(PyLong_CheckExact(op1))) { const long b = intval; long a, x; #ifdef HAVE_LONG_LONG const PY_LONG_LONG llb = intval; PY_LONG_LONG lla, llx; #endif const digit* digits = ((PyLongObject*)op1)->ob_digit; const Py_ssize_t size = Py_SIZE(op1); if (likely(__Pyx_sst_abs(size) <= 1)) { a = likely(size) ? digits[0] : 0; if (size == -1) a = -a; } else { switch (size) { case -2: if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; #ifdef HAVE_LONG_LONG } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) { lla = -(PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); goto long_long; #endif } case 2: if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; #ifdef HAVE_LONG_LONG } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) { lla = (PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); goto long_long; #endif } case -3: if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; #ifdef HAVE_LONG_LONG } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) { lla = -(PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); goto long_long; #endif } case 3: if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; #ifdef HAVE_LONG_LONG } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) { lla = (PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); goto long_long; #endif } case -4: if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; #ifdef HAVE_LONG_LONG } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) { lla = -(PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); goto long_long; #endif } case 4: if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; #ifdef HAVE_LONG_LONG } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) { lla = (PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); goto long_long; #endif } default: return PyLong_Type.tp_as_number->nb_add(op1, op2); } } x = a + b; return PyLong_FromLong(x); #ifdef HAVE_LONG_LONG long_long: llx = lla + llb; return PyLong_FromLongLong(llx); #endif } #endif if (PyFloat_CheckExact(op1)) { const long b = intval; double a = PyFloat_AS_DOUBLE(op1); double result; PyFPE_START_PROTECT("add", return NULL) result = ((double)a) + (double)b; PyFPE_END_PROTECT(result) return PyFloat_FromDouble(result); } return (inplace ? PyNumber_InPlaceAdd : PyNumber_Add)(op1, op2); } #endif /* PyObjectCallNoArg */ #if CYTHON_COMPILING_IN_CPYTHON static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) { #if CYTHON_FAST_PYCALL if (PyFunction_Check(func)) { return __Pyx_PyFunction_FastCall(func, NULL, 0); } #endif #ifdef __Pyx_CyFunction_USED if (likely(PyCFunction_Check(func) || PyObject_TypeCheck(func, __pyx_CyFunctionType))) { #else if (likely(PyCFunction_Check(func))) { #endif if (likely(PyCFunction_GET_FLAGS(func) & METH_NOARGS)) { return __Pyx_PyObject_CallMethO(func, NULL); } } return __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL); } #endif /* GetException */ #if CYTHON_FAST_THREAD_STATE static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { #else static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) { #endif PyObject *local_type, *local_value, *local_tb; #if CYTHON_FAST_THREAD_STATE PyObject *tmp_type, *tmp_value, *tmp_tb; local_type = tstate->curexc_type; local_value = tstate->curexc_value; local_tb = tstate->curexc_traceback; tstate->curexc_type = 0; tstate->curexc_value = 0; tstate->curexc_traceback = 0; #else PyErr_Fetch(&local_type, &local_value, &local_tb); #endif PyErr_NormalizeException(&local_type, &local_value, &local_tb); #if CYTHON_FAST_THREAD_STATE if (unlikely(tstate->curexc_type)) #else if (unlikely(PyErr_Occurred())) #endif goto bad; #if PY_MAJOR_VERSION >= 3 if (local_tb) { if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0)) goto bad; } #endif Py_XINCREF(local_tb); Py_XINCREF(local_type); Py_XINCREF(local_value); *type = local_type; *value = local_value; *tb = local_tb; #if CYTHON_FAST_THREAD_STATE tmp_type = tstate->exc_type; tmp_value = tstate->exc_value; tmp_tb = tstate->exc_traceback; tstate->exc_type = local_type; tstate->exc_value = local_value; tstate->exc_traceback = local_tb; Py_XDECREF(tmp_type); Py_XDECREF(tmp_value); Py_XDECREF(tmp_tb); #else PyErr_SetExcInfo(local_type, local_value, local_tb); #endif return 0; bad: *type = 0; *value = 0; *tb = 0; Py_XDECREF(local_type); Py_XDECREF(local_value); Py_XDECREF(local_tb); return -1; } /* SwapException */ #if CYTHON_FAST_THREAD_STATE static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { PyObject *tmp_type, *tmp_value, *tmp_tb; tmp_type = tstate->exc_type; tmp_value = tstate->exc_value; tmp_tb = tstate->exc_traceback; tstate->exc_type = *type; tstate->exc_value = *value; tstate->exc_traceback = *tb; *type = tmp_type; *value = tmp_value; *tb = tmp_tb; } #else static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb) { PyObject *tmp_type, *tmp_value, *tmp_tb; PyErr_GetExcInfo(&tmp_type, &tmp_value, &tmp_tb); PyErr_SetExcInfo(*type, *value, *tb); *type = tmp_type; *value = tmp_value; *tb = tmp_tb; } #endif /* SaveResetException */ #if CYTHON_FAST_THREAD_STATE static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { *type = tstate->exc_type; *value = tstate->exc_value; *tb = tstate->exc_traceback; Py_XINCREF(*type); Py_XINCREF(*value); Py_XINCREF(*tb); } static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { PyObject *tmp_type, *tmp_value, *tmp_tb; tmp_type = tstate->exc_type; tmp_value = tstate->exc_value; tmp_tb = tstate->exc_traceback; tstate->exc_type = type; tstate->exc_value = value; tstate->exc_traceback = tb; Py_XDECREF(tmp_type); Py_XDECREF(tmp_value); Py_XDECREF(tmp_tb); } #endif /* UnicodeEquals */ static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals) { #if CYTHON_COMPILING_IN_PYPY return PyObject_RichCompareBool(s1, s2, equals); #else #if PY_MAJOR_VERSION < 3 PyObject* owned_ref = NULL; #endif int s1_is_unicode, s2_is_unicode; if (s1 == s2) { goto return_eq; } s1_is_unicode = PyUnicode_CheckExact(s1); s2_is_unicode = PyUnicode_CheckExact(s2); #if PY_MAJOR_VERSION < 3 if ((s1_is_unicode & (!s2_is_unicode)) && PyString_CheckExact(s2)) { owned_ref = PyUnicode_FromObject(s2); if (unlikely(!owned_ref)) return -1; s2 = owned_ref; s2_is_unicode = 1; } else if ((s2_is_unicode & (!s1_is_unicode)) && PyString_CheckExact(s1)) { owned_ref = PyUnicode_FromObject(s1); if (unlikely(!owned_ref)) return -1; s1 = owned_ref; s1_is_unicode = 1; } else if (((!s2_is_unicode) & (!s1_is_unicode))) { return __Pyx_PyBytes_Equals(s1, s2, equals); } #endif if (s1_is_unicode & s2_is_unicode) { Py_ssize_t length; int kind; void *data1, *data2; if (unlikely(__Pyx_PyUnicode_READY(s1) < 0) || unlikely(__Pyx_PyUnicode_READY(s2) < 0)) return -1; length = __Pyx_PyUnicode_GET_LENGTH(s1); if (length != __Pyx_PyUnicode_GET_LENGTH(s2)) { goto return_ne; } kind = __Pyx_PyUnicode_KIND(s1); if (kind != __Pyx_PyUnicode_KIND(s2)) { goto return_ne; } data1 = __Pyx_PyUnicode_DATA(s1); data2 = __Pyx_PyUnicode_DATA(s2); if (__Pyx_PyUnicode_READ(kind, data1, 0) != __Pyx_PyUnicode_READ(kind, data2, 0)) { goto return_ne; } else if (length == 1) { goto return_eq; } else { int result = memcmp(data1, data2, (size_t)(length * kind)); #if PY_MAJOR_VERSION < 3 Py_XDECREF(owned_ref); #endif return (equals == Py_EQ) ? (result == 0) : (result != 0); } } else if ((s1 == Py_None) & s2_is_unicode) { goto return_ne; } else if ((s2 == Py_None) & s1_is_unicode) { goto return_ne; } else { int result; PyObject* py_result = PyObject_RichCompare(s1, s2, equals); if (!py_result) return -1; result = __Pyx_PyObject_IsTrue(py_result); Py_DECREF(py_result); return result; } return_eq: #if PY_MAJOR_VERSION < 3 Py_XDECREF(owned_ref); #endif return (equals == Py_EQ); return_ne: #if PY_MAJOR_VERSION < 3 Py_XDECREF(owned_ref); #endif return (equals == Py_NE); #endif } /* None */ static CYTHON_INLINE long __Pyx_div_long(long a, long b) { long q = a / b; long r = a - q*b; q -= ((r != 0) & ((r ^ b) < 0)); return q; } /* Import */ static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) { PyObject *empty_list = 0; PyObject *module = 0; PyObject *global_dict = 0; PyObject *empty_dict = 0; PyObject *list; #if PY_VERSION_HEX < 0x03030000 PyObject *py_import; py_import = __Pyx_PyObject_GetAttrStr(__pyx_b, __pyx_n_s_import); if (!py_import) goto bad; #endif if (from_list) list = from_list; else { empty_list = PyList_New(0); if (!empty_list) goto bad; list = empty_list; } global_dict = PyModule_GetDict(__pyx_m); if (!global_dict) goto bad; empty_dict = PyDict_New(); if (!empty_dict) goto bad; { #if PY_MAJOR_VERSION >= 3 if (level == -1) { if (strchr(__Pyx_MODULE_NAME, '.')) { #if PY_VERSION_HEX < 0x03030000 PyObject *py_level = PyInt_FromLong(1); if (!py_level) goto bad; module = PyObject_CallFunctionObjArgs(py_import, name, global_dict, empty_dict, list, py_level, NULL); Py_DECREF(py_level); #else module = PyImport_ImportModuleLevelObject( name, global_dict, empty_dict, list, 1); #endif if (!module) { if (!PyErr_ExceptionMatches(PyExc_ImportError)) goto bad; PyErr_Clear(); } } level = 0; } #endif if (!module) { #if PY_VERSION_HEX < 0x03030000 PyObject *py_level = PyInt_FromLong(level); if (!py_level) goto bad; module = PyObject_CallFunctionObjArgs(py_import, name, global_dict, empty_dict, list, py_level, NULL); Py_DECREF(py_level); #else module = PyImport_ImportModuleLevelObject( name, global_dict, empty_dict, list, level); #endif } } bad: #if PY_VERSION_HEX < 0x03030000 Py_XDECREF(py_import); #endif Py_XDECREF(empty_list); Py_XDECREF(empty_dict); return module; } /* ImportFrom */ static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) { PyObject* value = __Pyx_PyObject_GetAttrStr(module, name); if (unlikely(!value) && PyErr_ExceptionMatches(PyExc_AttributeError)) { PyErr_Format(PyExc_ImportError, #if PY_MAJOR_VERSION < 3 "cannot import name %.230s", PyString_AS_STRING(name)); #else "cannot import name %S", name); #endif } return value; } /* None */ static CYTHON_INLINE void __Pyx_RaiseClosureNameError(const char *varname) { PyErr_Format(PyExc_NameError, "free variable '%s' referenced before assignment in enclosing scope", varname); } /* PyObjectCallMethod1 */ static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg) { PyObject *method, *result = NULL; method = __Pyx_PyObject_GetAttrStr(obj, method_name); if (unlikely(!method)) goto done; #if CYTHON_UNPACK_METHODS if (likely(PyMethod_Check(method))) { PyObject *self = PyMethod_GET_SELF(method); if (likely(self)) { PyObject *args; PyObject *function = PyMethod_GET_FUNCTION(method); #if CYTHON_FAST_PYCALL if (PyFunction_Check(function)) { PyObject *args[2] = {self, arg}; result = __Pyx_PyFunction_FastCall(function, args, 2); goto done; } #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(function)) { PyObject *args[2] = {self, arg}; result = __Pyx_PyCFunction_FastCall(function, args, 2); goto done; } #endif args = PyTuple_New(2); if (unlikely(!args)) goto done; Py_INCREF(self); PyTuple_SET_ITEM(args, 0, self); Py_INCREF(arg); PyTuple_SET_ITEM(args, 1, arg); Py_INCREF(function); Py_DECREF(method); method = NULL; result = __Pyx_PyObject_Call(function, args, NULL); Py_DECREF(args); Py_DECREF(function); return result; } } #endif result = __Pyx_PyObject_CallOneArg(method, arg); done: Py_XDECREF(method); return result; } /* pop_index */ static PyObject* __Pyx__PyObject_PopNewIndex(PyObject* L, PyObject* py_ix) { PyObject *r; if (unlikely(!py_ix)) return NULL; r = __Pyx__PyObject_PopIndex(L, py_ix); Py_DECREF(py_ix); return r; } static PyObject* __Pyx__PyObject_PopIndex(PyObject* L, PyObject* py_ix) { return __Pyx_PyObject_CallMethod1(L, __pyx_n_s_pop, py_ix); } #if CYTHON_USE_PYLIST_INTERNALS && CYTHON_ASSUME_SAFE_MACROS static PyObject* __Pyx__PyList_PopIndex(PyObject* L, PyObject* py_ix, Py_ssize_t ix) { Py_ssize_t size = PyList_GET_SIZE(L); if (likely(size > (((PyListObject*)L)->allocated >> 1))) { Py_ssize_t cix = ix; if (cix < 0) { cix += size; } if (likely(0 <= cix && cix < size)) { PyObject* v = PyList_GET_ITEM(L, cix); Py_SIZE(L) -= 1; size -= 1; memmove(&PyList_GET_ITEM(L, cix), &PyList_GET_ITEM(L, cix+1), (size_t)(size-cix)*sizeof(PyObject*)); return v; } } if (py_ix == Py_None) { return __Pyx__PyObject_PopNewIndex(L, PyInt_FromSsize_t(ix)); } else { return __Pyx__PyObject_PopIndex(L, py_ix); } } #endif /* append */ static CYTHON_INLINE int __Pyx_PyObject_Append(PyObject* L, PyObject* x) { if (likely(PyList_CheckExact(L))) { if (unlikely(__Pyx_PyList_Append(L, x) < 0)) return -1; } else { PyObject* retval = __Pyx_PyObject_CallMethod1(L, __pyx_n_s_append, x); if (unlikely(!retval)) return -1; Py_DECREF(retval); } return 0; } /* PyIntBinop */ #if !CYTHON_COMPILING_IN_PYPY static PyObject* __Pyx_PyInt_SubtractCObj(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED int inplace) { #if PY_MAJOR_VERSION < 3 if (likely(PyInt_CheckExact(op2))) { const long a = intval; long x; long b = PyInt_AS_LONG(op2); x = (long)((unsigned long)a - b); if (likely((x^a) >= 0 || (x^~b) >= 0)) return PyInt_FromLong(x); return PyLong_Type.tp_as_number->nb_subtract(op1, op2); } #endif #if CYTHON_USE_PYLONG_INTERNALS if (likely(PyLong_CheckExact(op2))) { const long a = intval; long b, x; #ifdef HAVE_LONG_LONG const PY_LONG_LONG lla = intval; PY_LONG_LONG llb, llx; #endif const digit* digits = ((PyLongObject*)op2)->ob_digit; const Py_ssize_t size = Py_SIZE(op2); if (likely(__Pyx_sst_abs(size) <= 1)) { b = likely(size) ? digits[0] : 0; if (size == -1) b = -b; } else { switch (size) { case -2: if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { b = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; #ifdef HAVE_LONG_LONG } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) { llb = -(PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); goto long_long; #endif } case 2: if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { b = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; #ifdef HAVE_LONG_LONG } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) { llb = (PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); goto long_long; #endif } case -3: if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { b = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; #ifdef HAVE_LONG_LONG } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) { llb = -(PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); goto long_long; #endif } case 3: if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { b = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; #ifdef HAVE_LONG_LONG } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) { llb = (PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); goto long_long; #endif } case -4: if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { b = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; #ifdef HAVE_LONG_LONG } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) { llb = -(PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); goto long_long; #endif } case 4: if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { b = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; #ifdef HAVE_LONG_LONG } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) { llb = (PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); goto long_long; #endif } default: return PyLong_Type.tp_as_number->nb_subtract(op1, op2); } } x = a - b; return PyLong_FromLong(x); #ifdef HAVE_LONG_LONG long_long: llx = lla - llb; return PyLong_FromLongLong(llx); #endif } #endif if (PyFloat_CheckExact(op2)) { const long a = intval; double b = PyFloat_AS_DOUBLE(op2); double result; PyFPE_START_PROTECT("subtract", return NULL) result = ((double)a) - (double)b; PyFPE_END_PROTECT(result) return PyFloat_FromDouble(result); } return (inplace ? PyNumber_InPlaceSubtract : PyNumber_Subtract)(op1, op2); } #endif /* PyIntBinop */ #if !CYTHON_COMPILING_IN_PYPY static PyObject* __Pyx_PyInt_SubtractObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED int inplace) { #if PY_MAJOR_VERSION < 3 if (likely(PyInt_CheckExact(op1))) { const long b = intval; long x; long a = PyInt_AS_LONG(op1); x = (long)((unsigned long)a - b); if (likely((x^a) >= 0 || (x^~b) >= 0)) return PyInt_FromLong(x); return PyLong_Type.tp_as_number->nb_subtract(op1, op2); } #endif #if CYTHON_USE_PYLONG_INTERNALS if (likely(PyLong_CheckExact(op1))) { const long b = intval; long a, x; #ifdef HAVE_LONG_LONG const PY_LONG_LONG llb = intval; PY_LONG_LONG lla, llx; #endif const digit* digits = ((PyLongObject*)op1)->ob_digit; const Py_ssize_t size = Py_SIZE(op1); if (likely(__Pyx_sst_abs(size) <= 1)) { a = likely(size) ? digits[0] : 0; if (size == -1) a = -a; } else { switch (size) { case -2: if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; #ifdef HAVE_LONG_LONG } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) { lla = -(PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); goto long_long; #endif } case 2: if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; #ifdef HAVE_LONG_LONG } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) { lla = (PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); goto long_long; #endif } case -3: if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; #ifdef HAVE_LONG_LONG } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) { lla = -(PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); goto long_long; #endif } case 3: if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; #ifdef HAVE_LONG_LONG } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) { lla = (PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); goto long_long; #endif } case -4: if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; #ifdef HAVE_LONG_LONG } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) { lla = -(PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); goto long_long; #endif } case 4: if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])); break; #ifdef HAVE_LONG_LONG } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) { lla = (PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0])); goto long_long; #endif } default: return PyLong_Type.tp_as_number->nb_subtract(op1, op2); } } x = a - b; return PyLong_FromLong(x); #ifdef HAVE_LONG_LONG long_long: llx = lla - llb; return PyLong_FromLongLong(llx); #endif } #endif if (PyFloat_CheckExact(op1)) { const long b = intval; double a = PyFloat_AS_DOUBLE(op1); double result; PyFPE_START_PROTECT("subtract", return NULL) result = ((double)a) - (double)b; PyFPE_END_PROTECT(result) return PyFloat_FromDouble(result); } return (inplace ? PyNumber_InPlaceSubtract : PyNumber_Subtract)(op1, op2); } #endif /* pyobject_as_double */ static double __Pyx__PyObject_AsDouble(PyObject* obj) { PyObject* float_value; #if !CYTHON_USE_TYPE_SLOTS float_value = PyNumber_Float(obj); if (0) goto bad; #else PyNumberMethods *nb = Py_TYPE(obj)->tp_as_number; if (likely(nb) && likely(nb->nb_float)) { float_value = nb->nb_float(obj); if (likely(float_value) && unlikely(!PyFloat_Check(float_value))) { PyErr_Format(PyExc_TypeError, "__float__ returned non-float (type %.200s)", Py_TYPE(float_value)->tp_name); Py_DECREF(float_value); goto bad; } } else if (PyUnicode_CheckExact(obj) || PyBytes_CheckExact(obj)) { #if PY_MAJOR_VERSION >= 3 float_value = PyFloat_FromString(obj); #else float_value = PyFloat_FromString(obj, 0); #endif } else { PyObject* args = PyTuple_New(1); if (unlikely(!args)) goto bad; PyTuple_SET_ITEM(args, 0, obj); float_value = PyObject_Call((PyObject*)&PyFloat_Type, args, 0); PyTuple_SET_ITEM(args, 0, 0); Py_DECREF(args); } #endif if (likely(float_value)) { double value = PyFloat_AS_DOUBLE(float_value); Py_DECREF(float_value); return value; } bad: return (double)-1; } /* PyErrExceptionMatches */ #if CYTHON_FAST_THREAD_STATE static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err) { PyObject *exc_type = tstate->curexc_type; if (exc_type == err) return 1; if (unlikely(!exc_type)) return 0; return PyErr_GivenExceptionMatches(exc_type, err); } #endif /* CalculateMetaclass */ static PyObject *__Pyx_CalculateMetaclass(PyTypeObject *metaclass, PyObject *bases) { Py_ssize_t i, nbases = PyTuple_GET_SIZE(bases); for (i=0; i < nbases; i++) { PyTypeObject *tmptype; PyObject *tmp = PyTuple_GET_ITEM(bases, i); tmptype = Py_TYPE(tmp); #if PY_MAJOR_VERSION < 3 if (tmptype == &PyClass_Type) continue; #endif if (!metaclass) { metaclass = tmptype; continue; } if (PyType_IsSubtype(metaclass, tmptype)) continue; if (PyType_IsSubtype(tmptype, metaclass)) { metaclass = tmptype; continue; } PyErr_SetString(PyExc_TypeError, "metaclass conflict: " "the metaclass of a derived class " "must be a (non-strict) subclass " "of the metaclasses of all its bases"); return NULL; } if (!metaclass) { #if PY_MAJOR_VERSION < 3 metaclass = &PyClass_Type; #else metaclass = &PyType_Type; #endif } Py_INCREF((PyObject*) metaclass); return (PyObject*) metaclass; } /* Py3ClassCreate */ static PyObject *__Pyx_Py3MetaclassPrepare(PyObject *metaclass, PyObject *bases, PyObject *name, PyObject *qualname, PyObject *mkw, PyObject *modname, PyObject *doc) { PyObject *ns; if (metaclass) { PyObject *prep = __Pyx_PyObject_GetAttrStr(metaclass, __pyx_n_s_prepare); if (prep) { PyObject *pargs = PyTuple_Pack(2, name, bases); if (unlikely(!pargs)) { Py_DECREF(prep); return NULL; } ns = PyObject_Call(prep, pargs, mkw); Py_DECREF(prep); Py_DECREF(pargs); } else { if (unlikely(!PyErr_ExceptionMatches(PyExc_AttributeError))) return NULL; PyErr_Clear(); ns = PyDict_New(); } } else { ns = PyDict_New(); } if (unlikely(!ns)) return NULL; if (unlikely(PyObject_SetItem(ns, __pyx_n_s_module_2, modname) < 0)) goto bad; if (unlikely(PyObject_SetItem(ns, __pyx_n_s_qualname, qualname) < 0)) goto bad; if (unlikely(doc && PyObject_SetItem(ns, __pyx_n_s_doc, doc) < 0)) goto bad; return ns; bad: Py_DECREF(ns); return NULL; } static PyObject *__Pyx_Py3ClassCreate(PyObject *metaclass, PyObject *name, PyObject *bases, PyObject *dict, PyObject *mkw, int calculate_metaclass, int allow_py2_metaclass) { PyObject *result, *margs; PyObject *owned_metaclass = NULL; if (allow_py2_metaclass) { owned_metaclass = PyObject_GetItem(dict, __pyx_n_s_metaclass); if (owned_metaclass) { metaclass = owned_metaclass; } else if (likely(PyErr_ExceptionMatches(PyExc_KeyError))) { PyErr_Clear(); } else { return NULL; } } if (calculate_metaclass && (!metaclass || PyType_Check(metaclass))) { metaclass = __Pyx_CalculateMetaclass((PyTypeObject*) metaclass, bases); Py_XDECREF(owned_metaclass); if (unlikely(!metaclass)) return NULL; owned_metaclass = metaclass; } margs = PyTuple_Pack(3, name, bases, dict); if (unlikely(!margs)) { result = NULL; } else { result = PyObject_Call(metaclass, margs, mkw); Py_DECREF(margs); } Py_XDECREF(owned_metaclass); return result; } /* CodeObjectCache */ static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) { int start = 0, mid = 0, end = count - 1; if (end >= 0 && code_line > entries[end].code_line) { return count; } while (start < end) { mid = start + (end - start) / 2; if (code_line < entries[mid].code_line) { end = mid; } else if (code_line > entries[mid].code_line) { start = mid + 1; } else { return mid; } } if (code_line <= entries[mid].code_line) { return mid; } else { return mid + 1; } } static PyCodeObject *__pyx_find_code_object(int code_line) { PyCodeObject* code_object; int pos; if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) { return NULL; } pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) { return NULL; } code_object = __pyx_code_cache.entries[pos].code_object; Py_INCREF(code_object); return code_object; } static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) { int pos, i; __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries; if (unlikely(!code_line)) { return; } if (unlikely(!entries)) { entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry)); if (likely(entries)) { __pyx_code_cache.entries = entries; __pyx_code_cache.max_count = 64; __pyx_code_cache.count = 1; entries[0].code_line = code_line; entries[0].code_object = code_object; Py_INCREF(code_object); } return; } pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line); if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) { PyCodeObject* tmp = entries[pos].code_object; entries[pos].code_object = code_object; Py_DECREF(tmp); return; } if (__pyx_code_cache.count == __pyx_code_cache.max_count) { int new_max = __pyx_code_cache.max_count + 64; entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc( __pyx_code_cache.entries, (size_t)new_max*sizeof(__Pyx_CodeObjectCacheEntry)); if (unlikely(!entries)) { return; } __pyx_code_cache.entries = entries; __pyx_code_cache.max_count = new_max; } for (i=__pyx_code_cache.count; i>pos; i--) { entries[i] = entries[i-1]; } entries[pos].code_line = code_line; entries[pos].code_object = code_object; __pyx_code_cache.count++; Py_INCREF(code_object); } /* AddTraceback */ #include "compile.h" #include "frameobject.h" #include "traceback.h" static PyCodeObject* __Pyx_CreateCodeObjectForTraceback( const char *funcname, int c_line, int py_line, const char *filename) { PyCodeObject *py_code = 0; PyObject *py_srcfile = 0; PyObject *py_funcname = 0; #if PY_MAJOR_VERSION < 3 py_srcfile = PyString_FromString(filename); #else py_srcfile = PyUnicode_FromString(filename); #endif if (!py_srcfile) goto bad; if (c_line) { #if PY_MAJOR_VERSION < 3 py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); #else py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line); #endif } else { #if PY_MAJOR_VERSION < 3 py_funcname = PyString_FromString(funcname); #else py_funcname = PyUnicode_FromString(funcname); #endif } if (!py_funcname) goto bad; py_code = __Pyx_PyCode_New( 0, 0, 0, 0, 0, __pyx_empty_bytes, /*PyObject *code,*/ __pyx_empty_tuple, /*PyObject *consts,*/ __pyx_empty_tuple, /*PyObject *names,*/ __pyx_empty_tuple, /*PyObject *varnames,*/ __pyx_empty_tuple, /*PyObject *freevars,*/ __pyx_empty_tuple, /*PyObject *cellvars,*/ py_srcfile, /*PyObject *filename,*/ py_funcname, /*PyObject *name,*/ py_line, __pyx_empty_bytes /*PyObject *lnotab*/ ); Py_DECREF(py_srcfile); Py_DECREF(py_funcname); return py_code; bad: Py_XDECREF(py_srcfile); Py_XDECREF(py_funcname); return NULL; } static void __Pyx_AddTraceback(const char *funcname, int c_line, int py_line, const char *filename) { PyCodeObject *py_code = 0; PyFrameObject *py_frame = 0; py_code = __pyx_find_code_object(c_line ? c_line : py_line); if (!py_code) { py_code = __Pyx_CreateCodeObjectForTraceback( funcname, c_line, py_line, filename); if (!py_code) goto bad; __pyx_insert_code_object(c_line ? c_line : py_line, py_code); } py_frame = PyFrame_New( PyThreadState_GET(), /*PyThreadState *tstate,*/ py_code, /*PyCodeObject *code,*/ __pyx_d, /*PyObject *globals,*/ 0 /*PyObject *locals*/ ); if (!py_frame) goto bad; __Pyx_PyFrame_SetLineNumber(py_frame, py_line); PyTraceBack_Here(py_frame); bad: Py_XDECREF(py_code); Py_XDECREF(py_frame); } /* CIntToPy */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__Qt_3a__3a_Key(enum Qt::Key value) { const enum Qt::Key neg_one = (enum Qt::Key) -1, const_zero = (enum Qt::Key) 0; const int is_unsigned = neg_one > const_zero; if (is_unsigned) { if (sizeof(enum Qt::Key) < sizeof(long)) { return PyInt_FromLong((long) value); } else if (sizeof(enum Qt::Key) <= sizeof(unsigned long)) { return PyLong_FromUnsignedLong((unsigned long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(enum Qt::Key) <= sizeof(unsigned PY_LONG_LONG)) { return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); #endif } } else { if (sizeof(enum Qt::Key) <= sizeof(long)) { return PyInt_FromLong((long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(enum Qt::Key) <= sizeof(PY_LONG_LONG)) { return PyLong_FromLongLong((PY_LONG_LONG) value); #endif } } { int one = 1; int little = (int)*(unsigned char *)&one; unsigned char *bytes = (unsigned char *)&value; return _PyLong_FromByteArray(bytes, sizeof(enum Qt::Key), little, !is_unsigned); } } /* CIntToPy */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__Qt_3a__3a_KeyboardModifier(enum Qt::KeyboardModifier value) { const enum Qt::KeyboardModifier neg_one = (enum Qt::KeyboardModifier) -1, const_zero = (enum Qt::KeyboardModifier) 0; const int is_unsigned = neg_one > const_zero; if (is_unsigned) { if (sizeof(enum Qt::KeyboardModifier) < sizeof(long)) { return PyInt_FromLong((long) value); } else if (sizeof(enum Qt::KeyboardModifier) <= sizeof(unsigned long)) { return PyLong_FromUnsignedLong((unsigned long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(enum Qt::KeyboardModifier) <= sizeof(unsigned PY_LONG_LONG)) { return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); #endif } } else { if (sizeof(enum Qt::KeyboardModifier) <= sizeof(long)) { return PyInt_FromLong((long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(enum Qt::KeyboardModifier) <= sizeof(PY_LONG_LONG)) { return PyLong_FromLongLong((PY_LONG_LONG) value); #endif } } { int one = 1; int little = (int)*(unsigned char *)&one; unsigned char *bytes = (unsigned char *)&value; return _PyLong_FromByteArray(bytes, sizeof(enum Qt::KeyboardModifier), little, !is_unsigned); } } /* CIntToPy */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__Qt_3a__3a_MouseButton(enum Qt::MouseButton value) { const enum Qt::MouseButton neg_one = (enum Qt::MouseButton) -1, const_zero = (enum Qt::MouseButton) 0; const int is_unsigned = neg_one > const_zero; if (is_unsigned) { if (sizeof(enum Qt::MouseButton) < sizeof(long)) { return PyInt_FromLong((long) value); } else if (sizeof(enum Qt::MouseButton) <= sizeof(unsigned long)) { return PyLong_FromUnsignedLong((unsigned long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(enum Qt::MouseButton) <= sizeof(unsigned PY_LONG_LONG)) { return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); #endif } } else { if (sizeof(enum Qt::MouseButton) <= sizeof(long)) { return PyInt_FromLong((long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(enum Qt::MouseButton) <= sizeof(PY_LONG_LONG)) { return PyLong_FromLongLong((PY_LONG_LONG) value); #endif } } { int one = 1; int little = (int)*(unsigned char *)&one; unsigned char *bytes = (unsigned char *)&value; return _PyLong_FromByteArray(bytes, sizeof(enum Qt::MouseButton), little, !is_unsigned); } } /* CIntFromPyVerify */ #define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\ __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0) #define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\ __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1) #define __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, exc)\ {\ func_type value = func_value;\ if (sizeof(target_type) < sizeof(func_type)) {\ if (unlikely(value != (func_type) (target_type) value)) {\ func_type zero = 0;\ if (exc && unlikely(value == (func_type)-1 && PyErr_Occurred()))\ return (target_type) -1;\ if (is_unsigned && unlikely(value < zero))\ goto raise_neg_overflow;\ else\ goto raise_overflow;\ }\ }\ return (target_type) value;\ } /* CIntToPy */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) { const int neg_one = (int) -1, const_zero = (int) 0; const int is_unsigned = neg_one > const_zero; if (is_unsigned) { if (sizeof(int) < sizeof(long)) { return PyInt_FromLong((long) value); } else if (sizeof(int) <= sizeof(unsigned long)) { return PyLong_FromUnsignedLong((unsigned long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) { return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); #endif } } else { if (sizeof(int) <= sizeof(long)) { return PyInt_FromLong((long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) { return PyLong_FromLongLong((PY_LONG_LONG) value); #endif } } { int one = 1; int little = (int)*(unsigned char *)&one; unsigned char *bytes = (unsigned char *)&value; return _PyLong_FromByteArray(bytes, sizeof(int), little, !is_unsigned); } } /* None */ static CYTHON_INLINE long __Pyx_pow_long(long b, long e) { long t = b; switch (e) { case 3: t *= b; case 2: t *= b; case 1: return t; case 0: return 1; } #if 1 if (unlikely(e<0)) return 0; #endif t = 1; while (likely(e)) { t *= (b * (e&1)) | ((~e)&1); b *= b; e >>= 1; } return t; } /* CIntToPy */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) { const long neg_one = (long) -1, const_zero = (long) 0; const int is_unsigned = neg_one > const_zero; if (is_unsigned) { if (sizeof(long) < sizeof(long)) { return PyInt_FromLong((long) value); } else if (sizeof(long) <= sizeof(unsigned long)) { return PyLong_FromUnsignedLong((unsigned long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); #endif } } else { if (sizeof(long) <= sizeof(long)) { return PyInt_FromLong((long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { return PyLong_FromLongLong((PY_LONG_LONG) value); #endif } } { int one = 1; int little = (int)*(unsigned char *)&one; unsigned char *bytes = (unsigned char *)&value; return _PyLong_FromByteArray(bytes, sizeof(long), little, !is_unsigned); } } /* CIntToPy */ static CYTHON_INLINE PyObject* __Pyx_PyInt_From_Qt_3a__3a_KeyboardModifiers(Qt::KeyboardModifiers value) { const Qt::KeyboardModifiers neg_one = (Qt::KeyboardModifiers) -1, const_zero = (Qt::KeyboardModifiers) 0; const int is_unsigned = neg_one > const_zero; if (is_unsigned) { if (sizeof(Qt::KeyboardModifiers) < sizeof(long)) { return PyInt_FromLong((long) value); } else if (sizeof(Qt::KeyboardModifiers) <= sizeof(unsigned long)) { return PyLong_FromUnsignedLong((unsigned long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(Qt::KeyboardModifiers) <= sizeof(unsigned PY_LONG_LONG)) { return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value); #endif } } else { if (sizeof(Qt::KeyboardModifiers) <= sizeof(long)) { return PyInt_FromLong((long) value); #ifdef HAVE_LONG_LONG } else if (sizeof(Qt::KeyboardModifiers) <= sizeof(PY_LONG_LONG)) { return PyLong_FromLongLong((PY_LONG_LONG) value); #endif } } { int one = 1; int little = (int)*(unsigned char *)&one; unsigned char *bytes = (unsigned char *)&value; return _PyLong_FromByteArray(bytes, sizeof(Qt::KeyboardModifiers), little, !is_unsigned); } } /* CIntFromPy */ static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) { const int neg_one = (int) -1, const_zero = (int) 0; const int is_unsigned = neg_one > const_zero; #if PY_MAJOR_VERSION < 3 if (likely(PyInt_Check(x))) { if (sizeof(int) < sizeof(long)) { __PYX_VERIFY_RETURN_INT(int, long, PyInt_AS_LONG(x)) } else { long val = PyInt_AS_LONG(x); if (is_unsigned && unlikely(val < 0)) { goto raise_neg_overflow; } return (int) val; } } else #endif if (likely(PyLong_Check(x))) { if (is_unsigned) { #if CYTHON_USE_PYLONG_INTERNALS const digit* digits = ((PyLongObject*)x)->ob_digit; switch (Py_SIZE(x)) { case 0: return (int) 0; case 1: __PYX_VERIFY_RETURN_INT(int, digit, digits[0]) case 2: if (8 * sizeof(int) > 1 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(int) >= 2 * PyLong_SHIFT) { return (int) (((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); } } break; case 3: if (8 * sizeof(int) > 2 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(int) >= 3 * PyLong_SHIFT) { return (int) (((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); } } break; case 4: if (8 * sizeof(int) > 3 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(int) >= 4 * PyLong_SHIFT) { return (int) (((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])); } } break; } #endif #if CYTHON_COMPILING_IN_CPYTHON if (unlikely(Py_SIZE(x) < 0)) { goto raise_neg_overflow; } #else { int result = PyObject_RichCompareBool(x, Py_False, Py_LT); if (unlikely(result < 0)) return (int) -1; if (unlikely(result == 1)) goto raise_neg_overflow; } #endif if (sizeof(int) <= sizeof(unsigned long)) { __PYX_VERIFY_RETURN_INT_EXC(int, unsigned long, PyLong_AsUnsignedLong(x)) #ifdef HAVE_LONG_LONG } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) { __PYX_VERIFY_RETURN_INT_EXC(int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) #endif } } else { #if CYTHON_USE_PYLONG_INTERNALS const digit* digits = ((PyLongObject*)x)->ob_digit; switch (Py_SIZE(x)) { case 0: return (int) 0; case -1: __PYX_VERIFY_RETURN_INT(int, sdigit, (sdigit) (-(sdigit)digits[0])) case 1: __PYX_VERIFY_RETURN_INT(int, digit, +digits[0]) case -2: if (8 * sizeof(int) - 1 > 1 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { return (int) (((int)-1)*(((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); } } break; case 2: if (8 * sizeof(int) > 1 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { return (int) ((((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); } } break; case -3: if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { return (int) (((int)-1)*(((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); } } break; case 3: if (8 * sizeof(int) > 2 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { return (int) ((((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); } } break; case -4: if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) { return (int) (((int)-1)*(((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); } } break; case 4: if (8 * sizeof(int) > 3 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) { return (int) ((((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]))); } } break; } #endif if (sizeof(int) <= sizeof(long)) { __PYX_VERIFY_RETURN_INT_EXC(int, long, PyLong_AsLong(x)) #ifdef HAVE_LONG_LONG } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) { __PYX_VERIFY_RETURN_INT_EXC(int, PY_LONG_LONG, PyLong_AsLongLong(x)) #endif } } { #if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray) PyErr_SetString(PyExc_RuntimeError, "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"); #else int val; PyObject *v = __Pyx_PyNumber_IntOrLong(x); #if PY_MAJOR_VERSION < 3 if (likely(v) && !PyLong_Check(v)) { PyObject *tmp = v; v = PyNumber_Long(tmp); Py_DECREF(tmp); } #endif if (likely(v)) { int one = 1; int is_little = (int)*(unsigned char *)&one; unsigned char *bytes = (unsigned char *)&val; int ret = _PyLong_AsByteArray((PyLongObject *)v, bytes, sizeof(val), is_little, !is_unsigned); Py_DECREF(v); if (likely(!ret)) return val; } #endif return (int) -1; } } else { int val; PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); if (!tmp) return (int) -1; val = __Pyx_PyInt_As_int(tmp); Py_DECREF(tmp); return val; } raise_overflow: PyErr_SetString(PyExc_OverflowError, "value too large to convert to int"); return (int) -1; raise_neg_overflow: PyErr_SetString(PyExc_OverflowError, "can't convert negative value to int"); return (int) -1; } /* CIntFromPy */ static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) { const long neg_one = (long) -1, const_zero = (long) 0; const int is_unsigned = neg_one > const_zero; #if PY_MAJOR_VERSION < 3 if (likely(PyInt_Check(x))) { if (sizeof(long) < sizeof(long)) { __PYX_VERIFY_RETURN_INT(long, long, PyInt_AS_LONG(x)) } else { long val = PyInt_AS_LONG(x); if (is_unsigned && unlikely(val < 0)) { goto raise_neg_overflow; } return (long) val; } } else #endif if (likely(PyLong_Check(x))) { if (is_unsigned) { #if CYTHON_USE_PYLONG_INTERNALS const digit* digits = ((PyLongObject*)x)->ob_digit; switch (Py_SIZE(x)) { case 0: return (long) 0; case 1: __PYX_VERIFY_RETURN_INT(long, digit, digits[0]) case 2: if (8 * sizeof(long) > 1 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(long) >= 2 * PyLong_SHIFT) { return (long) (((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); } } break; case 3: if (8 * sizeof(long) > 2 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(long) >= 3 * PyLong_SHIFT) { return (long) (((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); } } break; case 4: if (8 * sizeof(long) > 3 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(long) >= 4 * PyLong_SHIFT) { return (long) (((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])); } } break; } #endif #if CYTHON_COMPILING_IN_CPYTHON if (unlikely(Py_SIZE(x) < 0)) { goto raise_neg_overflow; } #else { int result = PyObject_RichCompareBool(x, Py_False, Py_LT); if (unlikely(result < 0)) return (long) -1; if (unlikely(result == 1)) goto raise_neg_overflow; } #endif if (sizeof(long) <= sizeof(unsigned long)) { __PYX_VERIFY_RETURN_INT_EXC(long, unsigned long, PyLong_AsUnsignedLong(x)) #ifdef HAVE_LONG_LONG } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) { __PYX_VERIFY_RETURN_INT_EXC(long, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x)) #endif } } else { #if CYTHON_USE_PYLONG_INTERNALS const digit* digits = ((PyLongObject*)x)->ob_digit; switch (Py_SIZE(x)) { case 0: return (long) 0; case -1: __PYX_VERIFY_RETURN_INT(long, sdigit, (sdigit) (-(sdigit)digits[0])) case 1: __PYX_VERIFY_RETURN_INT(long, digit, +digits[0]) case -2: if (8 * sizeof(long) - 1 > 1 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { return (long) (((long)-1)*(((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); } } break; case 2: if (8 * sizeof(long) > 1 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { return (long) ((((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); } } break; case -3: if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { return (long) (((long)-1)*(((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); } } break; case 3: if (8 * sizeof(long) > 2 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { return (long) ((((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); } } break; case -4: if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { return (long) (((long)-1)*(((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); } } break; case 4: if (8 * sizeof(long) > 3 * PyLong_SHIFT) { if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) { __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]))) } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) { return (long) ((((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]))); } } break; } #endif if (sizeof(long) <= sizeof(long)) { __PYX_VERIFY_RETURN_INT_EXC(long, long, PyLong_AsLong(x)) #ifdef HAVE_LONG_LONG } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) { __PYX_VERIFY_RETURN_INT_EXC(long, PY_LONG_LONG, PyLong_AsLongLong(x)) #endif } } { #if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray) PyErr_SetString(PyExc_RuntimeError, "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers"); #else long val; PyObject *v = __Pyx_PyNumber_IntOrLong(x); #if PY_MAJOR_VERSION < 3 if (likely(v) && !PyLong_Check(v)) { PyObject *tmp = v; v = PyNumber_Long(tmp); Py_DECREF(tmp); } #endif if (likely(v)) { int one = 1; int is_little = (int)*(unsigned char *)&one; unsigned char *bytes = (unsigned char *)&val; int ret = _PyLong_AsByteArray((PyLongObject *)v, bytes, sizeof(val), is_little, !is_unsigned); Py_DECREF(v); if (likely(!ret)) return val; } #endif return (long) -1; } } else { long val; PyObject *tmp = __Pyx_PyNumber_IntOrLong(x); if (!tmp) return (long) -1; val = __Pyx_PyInt_As_long(tmp); Py_DECREF(tmp); return val; } raise_overflow: PyErr_SetString(PyExc_OverflowError, "value too large to convert to long"); return (long) -1; raise_neg_overflow: PyErr_SetString(PyExc_OverflowError, "can't convert negative value to long"); return (long) -1; } /* FetchCommonType */ static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type) { PyObject* fake_module; PyTypeObject* cached_type = NULL; fake_module = PyImport_AddModule((char*) "_cython_" CYTHON_ABI); if (!fake_module) return NULL; Py_INCREF(fake_module); cached_type = (PyTypeObject*) PyObject_GetAttrString(fake_module, type->tp_name); if (cached_type) { if (!PyType_Check((PyObject*)cached_type)) { PyErr_Format(PyExc_TypeError, "Shared Cython type %.200s is not a type object", type->tp_name); goto bad; } if (cached_type->tp_basicsize != type->tp_basicsize) { PyErr_Format(PyExc_TypeError, "Shared Cython type %.200s has the wrong size, try recompiling", type->tp_name); goto bad; } } else { if (!PyErr_ExceptionMatches(PyExc_AttributeError)) goto bad; PyErr_Clear(); if (PyType_Ready(type) < 0) goto bad; if (PyObject_SetAttrString(fake_module, type->tp_name, (PyObject*) type) < 0) goto bad; Py_INCREF(type); cached_type = type; } done: Py_DECREF(fake_module); return cached_type; bad: Py_XDECREF(cached_type); cached_type = NULL; goto done; } /* RaiseException */ #if PY_MAJOR_VERSION < 3 static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, CYTHON_UNUSED PyObject *cause) { __Pyx_PyThreadState_declare Py_XINCREF(type); if (!value || value == Py_None) value = NULL; else Py_INCREF(value); if (!tb || tb == Py_None) tb = NULL; else { Py_INCREF(tb); if (!PyTraceBack_Check(tb)) { PyErr_SetString(PyExc_TypeError, "raise: arg 3 must be a traceback or None"); goto raise_error; } } if (PyType_Check(type)) { #if CYTHON_COMPILING_IN_PYPY if (!value) { Py_INCREF(Py_None); value = Py_None; } #endif PyErr_NormalizeException(&type, &value, &tb); } else { if (value) { PyErr_SetString(PyExc_TypeError, "instance exception may not have a separate value"); goto raise_error; } value = type; type = (PyObject*) Py_TYPE(type); Py_INCREF(type); if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) { PyErr_SetString(PyExc_TypeError, "raise: exception class must be a subclass of BaseException"); goto raise_error; } } __Pyx_PyThreadState_assign __Pyx_ErrRestore(type, value, tb); return; raise_error: Py_XDECREF(value); Py_XDECREF(type); Py_XDECREF(tb); return; } #else static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) { PyObject* owned_instance = NULL; if (tb == Py_None) { tb = 0; } else if (tb && !PyTraceBack_Check(tb)) { PyErr_SetString(PyExc_TypeError, "raise: arg 3 must be a traceback or None"); goto bad; } if (value == Py_None) value = 0; if (PyExceptionInstance_Check(type)) { if (value) { PyErr_SetString(PyExc_TypeError, "instance exception may not have a separate value"); goto bad; } value = type; type = (PyObject*) Py_TYPE(value); } else if (PyExceptionClass_Check(type)) { PyObject *instance_class = NULL; if (value && PyExceptionInstance_Check(value)) { instance_class = (PyObject*) Py_TYPE(value); if (instance_class != type) { int is_subclass = PyObject_IsSubclass(instance_class, type); if (!is_subclass) { instance_class = NULL; } else if (unlikely(is_subclass == -1)) { goto bad; } else { type = instance_class; } } } if (!instance_class) { PyObject *args; if (!value) args = PyTuple_New(0); else if (PyTuple_Check(value)) { Py_INCREF(value); args = value; } else args = PyTuple_Pack(1, value); if (!args) goto bad; owned_instance = PyObject_Call(type, args, NULL); Py_DECREF(args); if (!owned_instance) goto bad; value = owned_instance; if (!PyExceptionInstance_Check(value)) { PyErr_Format(PyExc_TypeError, "calling %R should have returned an instance of " "BaseException, not %R", type, Py_TYPE(value)); goto bad; } } } else { PyErr_SetString(PyExc_TypeError, "raise: exception class must be a subclass of BaseException"); goto bad; } #if PY_VERSION_HEX >= 0x03030000 if (cause) { #else if (cause && cause != Py_None) { #endif PyObject *fixed_cause; if (cause == Py_None) { fixed_cause = NULL; } else if (PyExceptionClass_Check(cause)) { fixed_cause = PyObject_CallObject(cause, NULL); if (fixed_cause == NULL) goto bad; } else if (PyExceptionInstance_Check(cause)) { fixed_cause = cause; Py_INCREF(fixed_cause); } else { PyErr_SetString(PyExc_TypeError, "exception causes must derive from " "BaseException"); goto bad; } PyException_SetCause(value, fixed_cause); } PyErr_SetObject(type, value); if (tb) { #if CYTHON_COMPILING_IN_PYPY PyObject *tmp_type, *tmp_value, *tmp_tb; PyErr_Fetch(&tmp_type, &tmp_value, &tmp_tb); Py_INCREF(tb); PyErr_Restore(tmp_type, tmp_value, tb); Py_XDECREF(tmp_tb); #else PyThreadState *tstate = PyThreadState_GET(); PyObject* tmp_tb = tstate->curexc_traceback; if (tb != tmp_tb) { Py_INCREF(tb); tstate->curexc_traceback = tb; Py_XDECREF(tmp_tb); } #endif } bad: Py_XDECREF(owned_instance); return; } #endif /* CoroutineBase */ #include #include static PyObject *__Pyx_Coroutine_Send(PyObject *self, PyObject *value); static PyObject *__Pyx_Coroutine_Close(PyObject *self); static PyObject *__Pyx_Coroutine_Throw(PyObject *gen, PyObject *args); #define __Pyx_Coroutine_Undelegate(gen) Py_CLEAR((gen)->yieldfrom) #if 1 || PY_VERSION_HEX < 0x030300B0 static int __Pyx_PyGen_FetchStopIterationValue(PyObject **pvalue) { PyObject *et, *ev, *tb; PyObject *value = NULL; __Pyx_PyThreadState_declare __Pyx_PyThreadState_assign __Pyx_ErrFetch(&et, &ev, &tb); if (!et) { Py_XDECREF(tb); Py_XDECREF(ev); Py_INCREF(Py_None); *pvalue = Py_None; return 0; } if (likely(et == PyExc_StopIteration)) { if (!ev) { Py_INCREF(Py_None); value = Py_None; } #if PY_VERSION_HEX >= 0x030300A0 else if (Py_TYPE(ev) == (PyTypeObject*)PyExc_StopIteration) { value = ((PyStopIterationObject *)ev)->value; Py_INCREF(value); Py_DECREF(ev); } #endif else if (unlikely(PyTuple_Check(ev))) { if (PyTuple_GET_SIZE(ev) >= 1) { #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS value = PyTuple_GET_ITEM(ev, 0); Py_INCREF(value); #else value = PySequence_ITEM(ev, 0); #endif } else { Py_INCREF(Py_None); value = Py_None; } Py_DECREF(ev); } else if (!PyObject_TypeCheck(ev, (PyTypeObject*)PyExc_StopIteration)) { value = ev; } if (likely(value)) { Py_XDECREF(tb); Py_DECREF(et); *pvalue = value; return 0; } } else if (!PyErr_GivenExceptionMatches(et, PyExc_StopIteration)) { __Pyx_ErrRestore(et, ev, tb); return -1; } PyErr_NormalizeException(&et, &ev, &tb); if (unlikely(!PyObject_TypeCheck(ev, (PyTypeObject*)PyExc_StopIteration))) { __Pyx_ErrRestore(et, ev, tb); return -1; } Py_XDECREF(tb); Py_DECREF(et); #if PY_VERSION_HEX >= 0x030300A0 value = ((PyStopIterationObject *)ev)->value; Py_INCREF(value); Py_DECREF(ev); #else { PyObject* args = __Pyx_PyObject_GetAttrStr(ev, __pyx_n_s_args); Py_DECREF(ev); if (likely(args)) { value = PySequence_GetItem(args, 0); Py_DECREF(args); } if (unlikely(!value)) { __Pyx_ErrRestore(NULL, NULL, NULL); Py_INCREF(Py_None); value = Py_None; } } #endif *pvalue = value; return 0; } #endif static CYTHON_INLINE void __Pyx_Coroutine_ExceptionClear(__pyx_CoroutineObject *self) { PyObject *exc_type = self->exc_type; PyObject *exc_value = self->exc_value; PyObject *exc_traceback = self->exc_traceback; self->exc_type = NULL; self->exc_value = NULL; self->exc_traceback = NULL; Py_XDECREF(exc_type); Py_XDECREF(exc_value); Py_XDECREF(exc_traceback); } static CYTHON_INLINE int __Pyx_Coroutine_CheckRunning(__pyx_CoroutineObject *gen) { if (unlikely(gen->is_running)) { PyErr_SetString(PyExc_ValueError, "generator already executing"); return 1; } return 0; } static CYTHON_INLINE PyObject *__Pyx_Coroutine_SendEx(__pyx_CoroutineObject *self, PyObject *value) { PyObject *retval; __Pyx_PyThreadState_declare assert(!self->is_running); if (unlikely(self->resume_label == 0)) { if (unlikely(value && value != Py_None)) { PyErr_SetString(PyExc_TypeError, "can't send non-None value to a " "just-started generator"); return NULL; } } if (unlikely(self->resume_label == -1)) { PyErr_SetNone(PyExc_StopIteration); return NULL; } __Pyx_PyThreadState_assign if (value) { #if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_PYSTON #else if (self->exc_traceback) { PyTracebackObject *tb = (PyTracebackObject *) self->exc_traceback; PyFrameObject *f = tb->tb_frame; Py_XINCREF(__pyx_tstate->frame); assert(f->f_back == NULL); f->f_back = __pyx_tstate->frame; } #endif __Pyx_ExceptionSwap(&self->exc_type, &self->exc_value, &self->exc_traceback); } else { __Pyx_Coroutine_ExceptionClear(self); } self->is_running = 1; retval = self->body((PyObject *) self, value); self->is_running = 0; if (retval) { __Pyx_ExceptionSwap(&self->exc_type, &self->exc_value, &self->exc_traceback); #if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_PYSTON #else if (self->exc_traceback) { PyTracebackObject *tb = (PyTracebackObject *) self->exc_traceback; PyFrameObject *f = tb->tb_frame; Py_CLEAR(f->f_back); } #endif } else { __Pyx_Coroutine_ExceptionClear(self); } return retval; } static CYTHON_INLINE PyObject *__Pyx_Coroutine_MethodReturn(PyObject *retval) { if (unlikely(!retval && !PyErr_Occurred())) { PyErr_SetNone(PyExc_StopIteration); } return retval; } static CYTHON_INLINE PyObject *__Pyx_Coroutine_FinishDelegation(__pyx_CoroutineObject *gen) { PyObject *ret; PyObject *val = NULL; __Pyx_Coroutine_Undelegate(gen); __Pyx_PyGen_FetchStopIterationValue(&val); ret = __Pyx_Coroutine_SendEx(gen, val); Py_XDECREF(val); return ret; } static PyObject *__Pyx_Coroutine_Send(PyObject *self, PyObject *value) { PyObject *retval; __pyx_CoroutineObject *gen = (__pyx_CoroutineObject*) self; PyObject *yf = gen->yieldfrom; if (unlikely(__Pyx_Coroutine_CheckRunning(gen))) return NULL; if (yf) { PyObject *ret; gen->is_running = 1; #ifdef __Pyx_Generator_USED if (__Pyx_Generator_CheckExact(yf)) { ret = __Pyx_Coroutine_Send(yf, value); } else #endif #ifdef __Pyx_Coroutine_USED if (__Pyx_Coroutine_CheckExact(yf)) { ret = __Pyx_Coroutine_Send(yf, value); } else #endif { if (value == Py_None) ret = Py_TYPE(yf)->tp_iternext(yf); else ret = __Pyx_PyObject_CallMethod1(yf, __pyx_n_s_send, value); } gen->is_running = 0; if (likely(ret)) { return ret; } retval = __Pyx_Coroutine_FinishDelegation(gen); } else { retval = __Pyx_Coroutine_SendEx(gen, value); } return __Pyx_Coroutine_MethodReturn(retval); } static int __Pyx_Coroutine_CloseIter(__pyx_CoroutineObject *gen, PyObject *yf) { PyObject *retval = NULL; int err = 0; #ifdef __Pyx_Generator_USED if (__Pyx_Generator_CheckExact(yf)) { retval = __Pyx_Coroutine_Close(yf); if (!retval) return -1; } else #endif #ifdef __Pyx_Coroutine_USED if (__Pyx_Coroutine_CheckExact(yf)) { retval = __Pyx_Coroutine_Close(yf); if (!retval) return -1; } else #endif { PyObject *meth; gen->is_running = 1; meth = __Pyx_PyObject_GetAttrStr(yf, __pyx_n_s_close); if (unlikely(!meth)) { if (!PyErr_ExceptionMatches(PyExc_AttributeError)) { PyErr_WriteUnraisable(yf); } PyErr_Clear(); } else { retval = PyObject_CallFunction(meth, NULL); Py_DECREF(meth); if (!retval) err = -1; } gen->is_running = 0; } Py_XDECREF(retval); return err; } static PyObject *__Pyx_Generator_Next(PyObject *self) { __pyx_CoroutineObject *gen = (__pyx_CoroutineObject*) self; PyObject *yf = gen->yieldfrom; if (unlikely(__Pyx_Coroutine_CheckRunning(gen))) return NULL; if (yf) { PyObject *ret; gen->is_running = 1; #ifdef __Pyx_Generator_USED if (__Pyx_Generator_CheckExact(yf)) { ret = __Pyx_Generator_Next(yf); } else #endif ret = Py_TYPE(yf)->tp_iternext(yf); gen->is_running = 0; if (likely(ret)) { return ret; } return __Pyx_Coroutine_FinishDelegation(gen); } return __Pyx_Coroutine_SendEx(gen, Py_None); } static PyObject *__Pyx_Coroutine_Close(PyObject *self) { __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self; PyObject *retval, *raised_exception; PyObject *yf = gen->yieldfrom; int err = 0; if (unlikely(__Pyx_Coroutine_CheckRunning(gen))) return NULL; if (yf) { Py_INCREF(yf); err = __Pyx_Coroutine_CloseIter(gen, yf); __Pyx_Coroutine_Undelegate(gen); Py_DECREF(yf); } if (err == 0) PyErr_SetNone(PyExc_GeneratorExit); retval = __Pyx_Coroutine_SendEx(gen, NULL); if (retval) { Py_DECREF(retval); PyErr_SetString(PyExc_RuntimeError, "generator ignored GeneratorExit"); return NULL; } raised_exception = PyErr_Occurred(); if (!raised_exception || raised_exception == PyExc_StopIteration || raised_exception == PyExc_GeneratorExit || PyErr_GivenExceptionMatches(raised_exception, PyExc_GeneratorExit) || PyErr_GivenExceptionMatches(raised_exception, PyExc_StopIteration)) { if (raised_exception) PyErr_Clear(); Py_INCREF(Py_None); return Py_None; } return NULL; } static PyObject *__Pyx_Coroutine_Throw(PyObject *self, PyObject *args) { __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self; PyObject *typ; PyObject *tb = NULL; PyObject *val = NULL; PyObject *yf = gen->yieldfrom; if (!PyArg_UnpackTuple(args, (char *)"throw", 1, 3, &typ, &val, &tb)) return NULL; if (unlikely(__Pyx_Coroutine_CheckRunning(gen))) return NULL; if (yf) { PyObject *ret; Py_INCREF(yf); if (PyErr_GivenExceptionMatches(typ, PyExc_GeneratorExit)) { int err = __Pyx_Coroutine_CloseIter(gen, yf); Py_DECREF(yf); __Pyx_Coroutine_Undelegate(gen); if (err < 0) return __Pyx_Coroutine_MethodReturn(__Pyx_Coroutine_SendEx(gen, NULL)); goto throw_here; } gen->is_running = 1; #ifdef __Pyx_Generator_USED if (__Pyx_Generator_CheckExact(yf)) { ret = __Pyx_Coroutine_Throw(yf, args); } else #endif #ifdef __Pyx_Coroutine_USED if (__Pyx_Coroutine_CheckExact(yf)) { ret = __Pyx_Coroutine_Throw(yf, args); } else #endif { PyObject *meth = __Pyx_PyObject_GetAttrStr(yf, __pyx_n_s_throw); if (unlikely(!meth)) { Py_DECREF(yf); if (!PyErr_ExceptionMatches(PyExc_AttributeError)) { gen->is_running = 0; return NULL; } PyErr_Clear(); __Pyx_Coroutine_Undelegate(gen); gen->is_running = 0; goto throw_here; } ret = PyObject_CallObject(meth, args); Py_DECREF(meth); } gen->is_running = 0; Py_DECREF(yf); if (!ret) { ret = __Pyx_Coroutine_FinishDelegation(gen); } return __Pyx_Coroutine_MethodReturn(ret); } throw_here: __Pyx_Raise(typ, val, tb, NULL); return __Pyx_Coroutine_MethodReturn(__Pyx_Coroutine_SendEx(gen, NULL)); } static int __Pyx_Coroutine_traverse(PyObject *self, visitproc visit, void *arg) { __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self; Py_VISIT(gen->closure); Py_VISIT(gen->classobj); Py_VISIT(gen->yieldfrom); Py_VISIT(gen->exc_type); Py_VISIT(gen->exc_value); Py_VISIT(gen->exc_traceback); return 0; } static int __Pyx_Coroutine_clear(PyObject *self) { __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self; Py_CLEAR(gen->closure); Py_CLEAR(gen->classobj); Py_CLEAR(gen->yieldfrom); Py_CLEAR(gen->exc_type); Py_CLEAR(gen->exc_value); Py_CLEAR(gen->exc_traceback); Py_CLEAR(gen->gi_name); Py_CLEAR(gen->gi_qualname); return 0; } static void __Pyx_Coroutine_dealloc(PyObject *self) { __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self; PyObject_GC_UnTrack(gen); if (gen->gi_weakreflist != NULL) PyObject_ClearWeakRefs(self); if (gen->resume_label > 0) { PyObject_GC_Track(self); #if PY_VERSION_HEX >= 0x030400a1 if (PyObject_CallFinalizerFromDealloc(self)) #else Py_TYPE(gen)->tp_del(self); if (self->ob_refcnt > 0) #endif { return; } PyObject_GC_UnTrack(self); } __Pyx_Coroutine_clear(self); PyObject_GC_Del(gen); } static void __Pyx_Coroutine_del(PyObject *self) { PyObject *res; PyObject *error_type, *error_value, *error_traceback; __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self; __Pyx_PyThreadState_declare if (gen->resume_label <= 0) return ; #if PY_VERSION_HEX < 0x030400a1 assert(self->ob_refcnt == 0); self->ob_refcnt = 1; #endif __Pyx_PyThreadState_assign __Pyx_ErrFetch(&error_type, &error_value, &error_traceback); res = __Pyx_Coroutine_Close(self); if (res == NULL) PyErr_WriteUnraisable(self); else Py_DECREF(res); __Pyx_ErrRestore(error_type, error_value, error_traceback); #if PY_VERSION_HEX < 0x030400a1 assert(self->ob_refcnt > 0); if (--self->ob_refcnt == 0) { return; } { Py_ssize_t refcnt = self->ob_refcnt; _Py_NewReference(self); self->ob_refcnt = refcnt; } #if CYTHON_COMPILING_IN_CPYTHON assert(PyType_IS_GC(self->ob_type) && _Py_AS_GC(self)->gc.gc_refs != _PyGC_REFS_UNTRACKED); _Py_DEC_REFTOTAL; #endif #ifdef COUNT_ALLOCS --Py_TYPE(self)->tp_frees; --Py_TYPE(self)->tp_allocs; #endif #endif } static PyObject * __Pyx_Coroutine_get_name(__pyx_CoroutineObject *self) { PyObject *name = self->gi_name; if (unlikely(!name)) name = Py_None; Py_INCREF(name); return name; } static int __Pyx_Coroutine_set_name(__pyx_CoroutineObject *self, PyObject *value) { PyObject *tmp; #if PY_MAJOR_VERSION >= 3 if (unlikely(value == NULL || !PyUnicode_Check(value))) { #else if (unlikely(value == NULL || !PyString_Check(value))) { #endif PyErr_SetString(PyExc_TypeError, "__name__ must be set to a string object"); return -1; } tmp = self->gi_name; Py_INCREF(value); self->gi_name = value; Py_XDECREF(tmp); return 0; } static PyObject * __Pyx_Coroutine_get_qualname(__pyx_CoroutineObject *self) { PyObject *name = self->gi_qualname; if (unlikely(!name)) name = Py_None; Py_INCREF(name); return name; } static int __Pyx_Coroutine_set_qualname(__pyx_CoroutineObject *self, PyObject *value) { PyObject *tmp; #if PY_MAJOR_VERSION >= 3 if (unlikely(value == NULL || !PyUnicode_Check(value))) { #else if (unlikely(value == NULL || !PyString_Check(value))) { #endif PyErr_SetString(PyExc_TypeError, "__qualname__ must be set to a string object"); return -1; } tmp = self->gi_qualname; Py_INCREF(value); self->gi_qualname = value; Py_XDECREF(tmp); return 0; } static __pyx_CoroutineObject *__Pyx__Coroutine_New( PyTypeObject* type, __pyx_coroutine_body_t body, PyObject *closure, PyObject *name, PyObject *qualname, PyObject *module_name) { __pyx_CoroutineObject *gen = PyObject_GC_New(__pyx_CoroutineObject, type); if (gen == NULL) return NULL; gen->body = body; gen->closure = closure; Py_XINCREF(closure); gen->is_running = 0; gen->resume_label = 0; gen->classobj = NULL; gen->yieldfrom = NULL; gen->exc_type = NULL; gen->exc_value = NULL; gen->exc_traceback = NULL; gen->gi_weakreflist = NULL; Py_XINCREF(qualname); gen->gi_qualname = qualname; Py_XINCREF(name); gen->gi_name = name; Py_XINCREF(module_name); gen->gi_modulename = module_name; PyObject_GC_Track(gen); return gen; } /* PatchModuleWithCoroutine */ static PyObject* __Pyx_Coroutine_patch_module(PyObject* module, const char* py_code) { #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) int result; PyObject *globals, *result_obj; globals = PyDict_New(); if (unlikely(!globals)) goto ignore; result = PyDict_SetItemString(globals, "_cython_coroutine_type", #ifdef __Pyx_Coroutine_USED (PyObject*)__pyx_CoroutineType); #else Py_None); #endif if (unlikely(result < 0)) goto ignore; result = PyDict_SetItemString(globals, "_cython_generator_type", #ifdef __Pyx_Generator_USED (PyObject*)__pyx_GeneratorType); #else Py_None); #endif if (unlikely(result < 0)) goto ignore; if (unlikely(PyDict_SetItemString(globals, "_module", module) < 0)) goto ignore; if (unlikely(PyDict_SetItemString(globals, "__builtins__", __pyx_b) < 0)) goto ignore; result_obj = PyRun_String(py_code, Py_file_input, globals, globals); if (unlikely(!result_obj)) goto ignore; Py_DECREF(result_obj); Py_DECREF(globals); return module; ignore: Py_XDECREF(globals); PyErr_WriteUnraisable(module); if (unlikely(PyErr_WarnEx(PyExc_RuntimeWarning, "Cython module failed to patch module with custom type", 1) < 0)) { Py_DECREF(module); module = NULL; } #else py_code++; #endif return module; } /* PatchGeneratorABC */ #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) static PyObject* __Pyx_patch_abc_module(PyObject *module); static PyObject* __Pyx_patch_abc_module(PyObject *module) { module = __Pyx_Coroutine_patch_module( module, "" "if _cython_generator_type is not None:\n" " try: Generator = _module.Generator\n" " except AttributeError: pass\n" " else: Generator.register(_cython_generator_type)\n" "if _cython_coroutine_type is not None:\n" " try: Coroutine = _module.Coroutine\n" " except AttributeError: pass\n" " else: Coroutine.register(_cython_coroutine_type)\n" ); return module; } #endif static int __Pyx_patch_abc(void) { #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED) static int abc_patched = 0; if (!abc_patched) { PyObject *module; module = PyImport_ImportModule((PY_VERSION_HEX >= 0x03030000) ? "collections.abc" : "collections"); if (!module) { PyErr_WriteUnraisable(NULL); if (unlikely(PyErr_WarnEx(PyExc_RuntimeWarning, ((PY_VERSION_HEX >= 0x03030000) ? "Cython module failed to register with collections.abc module" : "Cython module failed to register with collections module"), 1) < 0)) { return -1; } } else { module = __Pyx_patch_abc_module(module); abc_patched = 1; if (unlikely(!module)) return -1; Py_DECREF(module); } module = PyImport_ImportModule("backports_abc"); if (module) { module = __Pyx_patch_abc_module(module); Py_XDECREF(module); } if (!module) { PyErr_Clear(); } } #else if (0) __Pyx_Coroutine_patch_module(NULL, NULL); #endif return 0; } /* Generator */ static PyMethodDef __pyx_Generator_methods[] = { {"send", (PyCFunction) __Pyx_Coroutine_Send, METH_O, (char*) PyDoc_STR("send(arg) -> send 'arg' into generator,\nreturn next yielded value or raise StopIteration.")}, {"throw", (PyCFunction) __Pyx_Coroutine_Throw, METH_VARARGS, (char*) PyDoc_STR("throw(typ[,val[,tb]]) -> raise exception in generator,\nreturn next yielded value or raise StopIteration.")}, {"close", (PyCFunction) __Pyx_Coroutine_Close, METH_NOARGS, (char*) PyDoc_STR("close() -> raise GeneratorExit inside generator.")}, {0, 0, 0, 0} }; static PyMemberDef __pyx_Generator_memberlist[] = { {(char *) "gi_running", T_BOOL, offsetof(__pyx_CoroutineObject, is_running), READONLY, NULL}, {(char*) "gi_yieldfrom", T_OBJECT, offsetof(__pyx_CoroutineObject, yieldfrom), READONLY, (char*) PyDoc_STR("object being iterated by 'yield from', or None")}, {0, 0, 0, 0, 0} }; static PyGetSetDef __pyx_Generator_getsets[] = { {(char *) "__name__", (getter)__Pyx_Coroutine_get_name, (setter)__Pyx_Coroutine_set_name, (char*) PyDoc_STR("name of the generator"), 0}, {(char *) "__qualname__", (getter)__Pyx_Coroutine_get_qualname, (setter)__Pyx_Coroutine_set_qualname, (char*) PyDoc_STR("qualified name of the generator"), 0}, {0, 0, 0, 0, 0} }; static PyTypeObject __pyx_GeneratorType_type = { PyVarObject_HEAD_INIT(0, 0) "generator", sizeof(__pyx_CoroutineObject), 0, (destructor) __Pyx_Coroutine_dealloc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_HAVE_FINALIZE, 0, (traverseproc) __Pyx_Coroutine_traverse, 0, 0, offsetof(__pyx_CoroutineObject, gi_weakreflist), 0, (iternextfunc) __Pyx_Generator_Next, __pyx_Generator_methods, __pyx_Generator_memberlist, __pyx_Generator_getsets, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, #if PY_VERSION_HEX >= 0x030400a1 0, #else __Pyx_Coroutine_del, #endif 0, #if PY_VERSION_HEX >= 0x030400a1 __Pyx_Coroutine_del, #endif }; static int __pyx_Generator_init(void) { __pyx_GeneratorType_type.tp_getattro = PyObject_GenericGetAttr; __pyx_GeneratorType_type.tp_iter = PyObject_SelfIter; __pyx_GeneratorType = __Pyx_FetchCommonType(&__pyx_GeneratorType_type); if (unlikely(!__pyx_GeneratorType)) { return -1; } return 0; } /* CheckBinaryVersion */ static int __Pyx_check_binary_version(void) { char ctversion[4], rtversion[4]; PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION); PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion()); if (ctversion[0] != rtversion[0] || ctversion[2] != rtversion[2]) { char message[200]; PyOS_snprintf(message, sizeof(message), "compiletime version %s of module '%.100s' " "does not match runtime version %s", ctversion, __Pyx_MODULE_NAME, rtversion); return PyErr_WarnEx(NULL, message, 1); } return 0; } /* ModuleImport */ #ifndef __PYX_HAVE_RT_ImportModule #define __PYX_HAVE_RT_ImportModule static PyObject *__Pyx_ImportModule(const char *name) { PyObject *py_name = 0; PyObject *py_module = 0; py_name = __Pyx_PyIdentifier_FromString(name); if (!py_name) goto bad; py_module = PyImport_Import(py_name); Py_DECREF(py_name); return py_module; bad: Py_XDECREF(py_name); return 0; } #endif /* FunctionImport */ #ifndef __PYX_HAVE_RT_ImportFunction #define __PYX_HAVE_RT_ImportFunction static int __Pyx_ImportFunction(PyObject *module, const char *funcname, void (**f)(void), const char *sig) { PyObject *d = 0; PyObject *cobj = 0; union { void (*fp)(void); void *p; } tmp; d = PyObject_GetAttrString(module, (char *)"__pyx_capi__"); if (!d) goto bad; cobj = PyDict_GetItemString(d, funcname); if (!cobj) { PyErr_Format(PyExc_ImportError, "%.200s does not export expected C function %.200s", PyModule_GetName(module), funcname); goto bad; } #if PY_VERSION_HEX >= 0x02070000 if (!PyCapsule_IsValid(cobj, sig)) { PyErr_Format(PyExc_TypeError, "C function %.200s.%.200s has wrong signature (expected %.500s, got %.500s)", PyModule_GetName(module), funcname, sig, PyCapsule_GetName(cobj)); goto bad; } tmp.p = PyCapsule_GetPointer(cobj, sig); #else {const char *desc, *s1, *s2; desc = (const char *)PyCObject_GetDesc(cobj); if (!desc) goto bad; s1 = desc; s2 = sig; while (*s1 != '\0' && *s1 == *s2) { s1++; s2++; } if (*s1 != *s2) { PyErr_Format(PyExc_TypeError, "C function %.200s.%.200s has wrong signature (expected %.500s, got %.500s)", PyModule_GetName(module), funcname, sig, desc); goto bad; } tmp.p = PyCObject_AsVoidPtr(cobj);} #endif *f = tmp.fp; if (!(*f)) goto bad; Py_DECREF(d); return 0; bad: Py_XDECREF(d); return -1; } #endif /* InitStrings */ static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) { while (t->p) { #if PY_MAJOR_VERSION < 3 if (t->is_unicode) { *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL); } else if (t->intern) { *t->p = PyString_InternFromString(t->s); } else { *t->p = PyString_FromStringAndSize(t->s, t->n - 1); } #else if (t->is_unicode | t->is_str) { if (t->intern) { *t->p = PyUnicode_InternFromString(t->s); } else if (t->encoding) { *t->p = PyUnicode_Decode(t->s, t->n - 1, t->encoding, NULL); } else { *t->p = PyUnicode_FromStringAndSize(t->s, t->n - 1); } } else { *t->p = PyBytes_FromStringAndSize(t->s, t->n - 1); } #endif if (!*t->p) return -1; ++t; } return 0; } static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char* c_str) { return __Pyx_PyUnicode_FromStringAndSize(c_str, (Py_ssize_t)strlen(c_str)); } static CYTHON_INLINE char* __Pyx_PyObject_AsString(PyObject* o) { Py_ssize_t ignore; return __Pyx_PyObject_AsStringAndSize(o, &ignore); } static CYTHON_INLINE char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_t *length) { #if CYTHON_COMPILING_IN_CPYTHON && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT) if ( #if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII __Pyx_sys_getdefaultencoding_not_ascii && #endif PyUnicode_Check(o)) { #if PY_VERSION_HEX < 0x03030000 char* defenc_c; PyObject* defenc = _PyUnicode_AsDefaultEncodedString(o, NULL); if (!defenc) return NULL; defenc_c = PyBytes_AS_STRING(defenc); #if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII { char* end = defenc_c + PyBytes_GET_SIZE(defenc); char* c; for (c = defenc_c; c < end; c++) { if ((unsigned char) (*c) >= 128) { PyUnicode_AsASCIIString(o); return NULL; } } } #endif *length = PyBytes_GET_SIZE(defenc); return defenc_c; #else if (__Pyx_PyUnicode_READY(o) == -1) return NULL; #if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII if (PyUnicode_IS_ASCII(o)) { *length = PyUnicode_GET_LENGTH(o); return PyUnicode_AsUTF8(o); } else { PyUnicode_AsASCIIString(o); return NULL; } #else return PyUnicode_AsUTF8AndSize(o, length); #endif #endif } else #endif #if (!CYTHON_COMPILING_IN_PYPY) || (defined(PyByteArray_AS_STRING) && defined(PyByteArray_GET_SIZE)) if (PyByteArray_Check(o)) { *length = PyByteArray_GET_SIZE(o); return PyByteArray_AS_STRING(o); } else #endif { char* result; int r = PyBytes_AsStringAndSize(o, &result, length); if (unlikely(r < 0)) { return NULL; } else { return result; } } } static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) { int is_true = x == Py_True; if (is_true | (x == Py_False) | (x == Py_None)) return is_true; else return PyObject_IsTrue(x); } static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x) { #if CYTHON_USE_TYPE_SLOTS PyNumberMethods *m; #endif const char *name = NULL; PyObject *res = NULL; #if PY_MAJOR_VERSION < 3 if (PyInt_Check(x) || PyLong_Check(x)) #else if (PyLong_Check(x)) #endif return __Pyx_NewRef(x); #if CYTHON_USE_TYPE_SLOTS m = Py_TYPE(x)->tp_as_number; #if PY_MAJOR_VERSION < 3 if (m && m->nb_int) { name = "int"; res = PyNumber_Int(x); } else if (m && m->nb_long) { name = "long"; res = PyNumber_Long(x); } #else if (m && m->nb_int) { name = "int"; res = PyNumber_Long(x); } #endif #else res = PyNumber_Int(x); #endif if (res) { #if PY_MAJOR_VERSION < 3 if (!PyInt_Check(res) && !PyLong_Check(res)) { #else if (!PyLong_Check(res)) { #endif PyErr_Format(PyExc_TypeError, "__%.4s__ returned non-%.4s (type %.200s)", name, name, Py_TYPE(res)->tp_name); Py_DECREF(res); return NULL; } } else if (!PyErr_Occurred()) { PyErr_SetString(PyExc_TypeError, "an integer is required"); } return res; } static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) { Py_ssize_t ival; PyObject *x; #if PY_MAJOR_VERSION < 3 if (likely(PyInt_CheckExact(b))) { if (sizeof(Py_ssize_t) >= sizeof(long)) return PyInt_AS_LONG(b); else return PyInt_AsSsize_t(x); } #endif if (likely(PyLong_CheckExact(b))) { #if CYTHON_USE_PYLONG_INTERNALS const digit* digits = ((PyLongObject*)b)->ob_digit; const Py_ssize_t size = Py_SIZE(b); if (likely(__Pyx_sst_abs(size) <= 1)) { ival = likely(size) ? digits[0] : 0; if (size == -1) ival = -ival; return ival; } else { switch (size) { case 2: if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { return (Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); } break; case -2: if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) { return -(Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); } break; case 3: if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { return (Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); } break; case -3: if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) { return -(Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); } break; case 4: if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { return (Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); } break; case -4: if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) { return -(Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])); } break; } } #endif return PyLong_AsSsize_t(b); } x = PyNumber_Index(b); if (!x) return -1; ival = PyInt_AsSsize_t(x); Py_DECREF(x); return ival; } static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) { return PyInt_FromSize_t(ival); } #endif /* Py_PYTHON_H */ pybik-3.0/INSTALL0000644000175000017500000000365013173167575013714 0ustar barccbarcc00000000000000Installation Instructions for Pybik 3.0 ======================================= Currently Pybik is available in the official archive for Ubuntu and Debian. For Ubuntu the latest release is available in the Pybik Personal Package Archive (PPA) . Add `ppa:barcc/pybik` to your system's software sources (with the Ubuntu Software-Center). You can also do this in a terminal: sudo add-apt-repository ppa:barcc/pybik sudo apt-get update sudo apt-get install pybik If Pybik is not available for your distribution, see the following installation instructions. Run from source archive ======================= Please use the latest source from the official download site . Requirements ------------ Please make sure you satisfy Pybik's dependencies: * Python 3 * Qt5 For building: * C-compiler (gcc) * development files for Python 3 * Mesa development files * gettext (for translations) Build + Run ----------- Extract the archive, switch to the created directory in a terminal and enter: ./build_local.sh To run Pybik you can use the command in the same directory ./pybik System-wide installation ======================== This installation method is intended primarily for packagers. Pybik comes with a full featured `setup.py` installation script. To find out more, run: ./setup.py --help You may need additional software * Cython (for Python3, >= 0.17.4, to recreate files in `./csrc/`) * rst2man from the python3-docutils package to create a manpage VCS and Daily Builds ==================== Development happens with the Bazaar version control system. Location: You can get the latest revision with: bzr branch lp:pybik Daily build for Ubuntu are provided in the PPA `ppa:barcc/daily-build` pybik-3.0/data/0000755000175000017500000000000013173167603013560 5ustar barccbarcc00000000000000pybik-3.0/data/templates/0000755000175000017500000000000013173167603015556 5ustar barccbarcc00000000000000pybik-3.0/data/templates/README.in0000664000175000017500000000273413151123162017037 0ustar barccbarcc00000000000000 About {APPNAME} {VERSION} === {LONG_DESCRIPTION:join.wrap} Author: {AUTHOR} <{CONTACT_EMAIL}> License: {LICENSE_NAME} Project page: <{WEBSITE}> Installation === {#:wrap}If Pybik is available for your distribution, you should install Pybik with a package manager. Otherwise see the file INSTALL for installation instructions. Feedback === {get_filebug_text:links.wrap} {#footnotes} Translation === {TRANSLATION_TEXT:links.join.wrap} {#footnotes} License === {LICENSE_INFO:wrap} {LICENSE_NOT_FOUND:wrap} Hidden Features === You can change shortcuts for some menu items and actions: Action | Menuitem | Default --- selectmodel | Game->Select Model | Ctrl+M initial_state | Edit->Set as Initial State | None reset_rotation | Edit->Reset Rotation | Ctrl+R preferences | Edit->Preferences | Ctrl+P edit_moves | None (Select moves editor) | Ctrl+L edit_cube | None (Cube editor) | None {#:wrap}Append the following lines with the shortcuts changed as you like to your Pybik config file (~/.config/pybik/settings.conf): action.selectmodel = 'Ctrl+M' action.initial_state = '' action.reset_rotation = 'Ctrl+R' action.preferences = 'Ctrl+P' action.edit_moves = 'Ctrl+L' action.edit_cube = '' {#:wrap}The cube editor is a immature feature. To use it anyway, you must assign a shortcut to the action edit_cube. In cube editor mode swap cubies with left mouse button and rotate cubies with Ctrl and left mouse button. pybik-3.0/data/templates/copyright.in0000664000175000017500000000540413141432621020111 0ustar barccbarcc00000000000000Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Upstream-Name: {APPNAME} Upstream-Contact: {AUTHOR} <{CONTACT_EMAIL}> Source: {DOWNLOADS} Comment: Originally this package was derived from GNUbik 2.3 and ported from C to Python. Authors of GNUbik: * John Mark Darrington is the main author and maintainer of GNUbik. * Dale Mellor Files: * Copyright: 2009-2017 B. Clausius License: {LICENSE_NAME} Files: data/ui/images/BEAMED?EIGHTH?NOTES.png data/ui/images/ATOM?SYMBOL.png data/ui/images/SNOWFLAKE.png data/ui/images/WHITE?SUN?WITH?RAYS.png Copyright: 2002-2010 Free Software Foundation 2012 B. Clausius License: GPL-3.0+ Comment: Images created from font FreeSerif: U+266B BEAMED EIGHTH NOTES U+269B ATOM SYMBOL U+2744 SNOWFLAKE Image created from font FreeMono: U+263C WHITE SUN WITH RAYS Files: data/ui/images/SHAMROCK.png data/ui/images/SKULL?AND?CROSSBONES.png data/ui/images/PEACE?SYMBOL.png data/ui/images/YIN?YANG.png data/ui/images/BLACK?SMILING?FACE.png data/ui/images/WHITE?SMILING?FACE.png Copyright: DejaVu Authors 2012 B. Clausius License: public-domain The DejaVu fonts are a font family based on the Vera Fonts. License of DejaVu (http://dejavu-fonts.org/wiki/Main_Page): Fonts are © Bitstream (…). DejaVu changes are in public domain. …. Glyphs imported from Arev fonts are © Tavmjung Bah (…). . The used symbols where added in version 2.4 as stated by DejaVu in the file status.txt and therefore are in the public domain. Comment: Images were created from font DejaVu-Sans-Oblique: U+2618 SHAMROCK U+2620 SKULL AND CROSSBONES U+262E PEACE SYMBOL U+262F YIN YANG U+263A WHITE SMILING FACE U+263B BLACK SMILING FACE License: GPL-3.0+ 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 . {#mark:upstream}. The full text of the GPL is distributed in the original source archive in the file COPYING. {#mark:deb}. The full text of the GPL is distributed in /usr/share/common-licenses/GPL-3 on Debian systems. pybik-3.0/data/templates/manpage_6_pybik.rst.in0000644000175000017500000000141113151375735021750 0ustar barccbarcc00000000000000===== {APPNAME} === --- {SHORT_DESCRIPTION} --- :Date: {RELEASE_DATE} :Version: {VERSION} :Manual section: {MANPAGE_SECTION} :Manual group: Games SYNOPSIS === pybik [options] DESCRIPTION === .. line-block:: {#replace:* \*}{LONG_DESCRIPTION:join.wrap.replace.indent} OPTIONS === -h, --help Show help message and exit Pybik has a graphical user interface. The options are intended for testing and debugging. To show available options run pybik from the command line with the help option. .. Project page: <{WEBSITE}> Feedback === {get_filebug_text:links.wrap} | {#indent:| } {#footnotes} Translation === {TRANSLATION_TEXT:links.join.wrap} | {#indent:| } {#footnotes:indent} Copyright === {COPYRIGHT} {LICENSE_INFO:wrap} {LICENSE_NOT_FOUND:wrap} pybik-3.0/data/templates/net.launchpad.pybik.appdata.xml.in0000644000175000017500000000342313173070427024156 0ustar barccbarcc00000000000000 net.launchpad.pybik MIT {APPNAME} {SHORT_DESCRIPTION} {LONG_DESCRIPTION:xmlmarkup} {WEBSITE} {BUG_DATABASE} pybik.desktop {LICENSE_NAME} {AUTHOR} {CONTACT_EMAIL} pybik pybik {#news} http://bazaar.launchpad.net/~barcc/pybik/trunk/download/head:/screenshot1.png-20121214024125-u7dd7ltcyoqcdo17-1/screenshot1.png http://bazaar.launchpad.net/~barcc/pybik/trunk/download/head:/screenshot2.png-20121214024125-u7dd7ltcyoqcdo17-2/screenshot2.png http://bazaar.launchpad.net/~barcc/pybik/trunk/download/head:/screenshot3.png-20121214024125-u7dd7ltcyoqcdo17-3/screenshot3.png http://bazaar.launchpad.net/~barcc/pybik/trunk/download/head:/screenshot4.png-20121214024125-u7dd7ltcyoqcdo17-4/screenshot4.png http://bazaar.launchpad.net/~barcc/pybik/trunk/download/head:/datascreenshotsscree-20150330185647-6ugsxpe0x7zznw6c-1/screenshot5.png pybik-3.0/data/templates/net.launchpad.pybik.appdata.xml.in.in0000644000175000017500000000262413147074026024565 0ustar barccbarcc00000000000000{#delimiters:@ @} net.launchpad.pybik MIT {APPNAME} {SHORT_DESCRIPTION} {LONG_DESCRIPTION:xmlmarkup} {WEBSITE} {BUG_DATABASE} pybik.desktop {LICENSE_NAME} {AUTHOR} {CONTACT_EMAIL} pybik pybik {#news} @#data:data/screenshots/screenshot1.png lp-link@ @#data:data/screenshots/screenshot2.png lp-link@ @#data:data/screenshots/screenshot3.png lp-link@ @#data:data/screenshots/screenshot4.png lp-link@ @#data:data/screenshots/screenshot5.png lp-link@ pybik-3.0/data/templates/pybik.desktop.in0000664000175000017500000000064013152506327020673 0ustar barccbarcc00000000000000[Desktop Entry] Name={APPNAME} Comment={SHORT_DESCRIPTION} Exec=pybik Icon=pybik Type=Application Categories=Game;LogicGame; #TRANSLATORS: Add whatever keywords you want in your language, separated by semicolons, last character must be a semicolon. These keywords are used when searching for applications in Unity, GNOME Shell, etc. Keywords=rubik;cube;puzzle;magic; StartupNotify=true X-Ubuntu-Gettext-Domain=pybik pybik-3.0/data/templates/INSTALL.in0000664000175000017500000000361713173070614017220 0ustar barccbarcc00000000000000Installation Instructions for {APPNAME} {VERSION} ================================================= Currently Pybik is available in the official archive for Ubuntu and Debian. For Ubuntu the latest release is available in the Pybik Personal Package Archive (PPA) . Add `ppa:barcc/pybik` to your system's software sources (with the Ubuntu Software-Center). You can also do this in a terminal: sudo add-apt-repository ppa:barcc/pybik sudo apt-get update sudo apt-get install pybik If Pybik is not available for your distribution, see the following installation instructions. Run from source archive ======================= Please use the latest source from the official download site <{DOWNLOADS}>. Requirements ------------ Please make sure you satisfy Pybik's dependencies: * Python 3 * Qt5 For building: * C-compiler (gcc) * development files for Python 3 * Mesa development files * gettext (for translations) Build + Run ----------- Extract the archive, switch to the created directory in a terminal and enter: ./build_local.sh To run Pybik you can use the command in the same directory ./pybik System-wide installation ======================== This installation method is intended primarily for packagers. Pybik comes with a full featured `setup.py` installation script. To find out more, run: ./setup.py --help You may need additional software * Cython (for Python3, >= 0.17.4, to recreate files in `./csrc/`) * rst2man from the python3-docutils package to create a manpage VCS and Daily Builds ==================== Development happens with the Bazaar version control system. Location: <{REPOSITORY_URL}> You can get the latest revision with: bzr branch {REPOSITORY_SHORT} Daily build for Ubuntu are provided in the PPA `ppa:barcc/daily-build` pybik-3.0/data/GPL-30000777000175000017500000000000012130250057015514 2../COPYINGustar barccbarcc00000000000000pybik-3.0/data/icons/0000755000175000017500000000000013173167603014673 5ustar barccbarcc00000000000000pybik-3.0/data/icons/pybik-14.png0000644000175000017500000000204713157201136016734 0ustar barccbarcc00000000000000PNG  IHDR(gAMA a cHRMz&u0`:pQ<+PLTE'B +7'+", 2+'PP#  | "b0H         k6rn(a @'"G+b06)c+j/75LLVAuy',+, I&g+0"I(u&* 6$[Ѻ*7$d,O#%o+Ʊ)#c%o%`&g*|ȸ+η*2 ?$X'h%U)h!,x$>r&*1#E 'Z"0W#]\$!     \85Ǽ7Ѽ7210b*>(5&V;8=C?ENN%D[&_118?Y->B-l 2W$Dg']{,Zi.4<@LS9**+f#,q%/~(.b+1j.8u3Ak4+)&g'Z!*j#/~&.e(2s,81B|3-%&i%R&R!*^#)N%-](2q,=o.&Dz('}'g(k,{"*^#,a&0i*8]+((c!+o#/'@x)U*^tRNS"aƹm25(*Ǿ *RW9g/S)xbKGDH oFFs1 pHYs+tIME  4  vpAgcPIDATcd``daYr21"YXhϝĺ ⩌;9]7ed_og L_K%tEXtdate:create2017-09-16T12:52:10+02:00%tEXtdate:modify2017-09-16T12:52:10+02:00IENDB`pybik-3.0/data/icons/pybik-48.png0000644000175000017500000001020213157201177016740 0ustar barccbarcc00000000000000PNG  IHDR00WgAMA a cHRMz&u0`:pQ< oFFsuo pHYs+tIMEv^ vpAg441 EbKGDCGIDATh{gy73gڻ^ۻ^ǹmH \"I.I "IHQD**HER@  IHh $$vı۹1s5 9=gμ<7 j7ꊫ~_)T62{j}!..9CfUWdYEAs'F/&ýcSvá};/kdzaaQgڬUܙ4>XM#E jD},:XPy ].wb'ϼ$yӰƴ"c?ц͛wcՏ +9\Nw?42;J^YpHܖRJ" 0D (9TQܥ6E *ASw{XegU;G?pz/'zϚn۞Jo^v[-XoZy*^@v@.0\6dsρ}Oy;| 6;hb敹9evֱk)S YHӎɅ18$ ^kx51>j|@uh@V-ױ]}q"aTU%UW͆߀1 >Pc2'p0;똝uZZmv\F{4?Y[L1etB[+7Ȁ.OӍrʃ t+bCu |a^uQyazIԩ(L|IML9wt"Pg\e?|o&60 LՓ> 9%Jty#tj#^DdPf "L]8AFgR8ta 1RF 'g=:>g09010632Q*|&8&%:e*&h;E|~pU+xkAtr3%1$"ۀ 9=Skal,1 8cs '( K ~0 s$yZQ.[F((g'@[P XHӊ" }lɧrBAB~ф#cNmǬ̱i*d FFjqdуF)@/e !ĺX!$|BQP* "`$1H$ x,Lt<ŅMsR֮5 9aL!Om|_HvMkp MD(AOEPZ,G*j-FRrAI$2H@[-i*G8t27JM+gP7G;uƤbP#" 6:JZYCmpL%E3j 5`𲴤ctw+^`""ցů5l2|kņ򥯮d ͫZU_ƀ}hVTўHeevk*<n7.ijn`e\}VgdgfP^*2 m7_Bq= @l!OA]=r> +怮qZ P84s}mvec^fKkor:!<kiK)7,o\IFHWRlt00i%hw{k+\~IE=Oca5c .ugdeiE.[w ؑ1 &5W5x%ɛl.J.e ^@]]^"7^[af&IIܦz{[ `xd>Nm.9H $F 25?D8ٔ੏l7@Yj59 X:O ~^RN{{Z-}aaBoj5u}wMSĬh)}Eg)S1.N*E!?d&Zuuhswnd4:OrX %Ϯ~Eʔj,o%UbOPVuXK9?P WWA%- 5I|vpd'x qι8}L_s<~;p jˎ <ھ@hBAqECbxyڄk.(RTWȽPD 全m[(LG lgõ5~ry\$c2h,0j1ؘB)Y8sQk^Q65oX\~|x;|hUjh PG*+:#&{,ѯ=y]Pϡ%rR#@(@h_pie].,cA,jH,E)1KAK]Soḽ4~"ȁP&'XGnixSz)VS )iY"JoEπ , -z @z 헷l.遏5]{~e=q \:筹nGͨ%z q&(*g 2AXjiC_)~˝Gf9 ǘ9?jcȌ&S¨ 2MIJW?{*Zĝ @G7߹Gt Rԩ{W2-sgx2fFYR^dHH#5 [fQMx7K~?^lE2v%4o˽QȔe)IIrd.>qU]cke">?ͶR:Agf(1oͰl7CT8TdW)? Wlp^}eRQw]V$z!] [PLnVql3U@Zl/>7rŹ/J7@Q&L+ >3[3W#%tEXtdate:create2017-07-27T22:20:25+02:00%tEXtdate:modify2017-07-27T22:20:25+02:00nLIENDB`pybik-3.0/data/icons/pybik-64.png0000644000175000017500000001407413157201177016751 0ustar barccbarcc00000000000000PNG  IHDR@@iqgAMA a cHRMz&u0`:pQ< oFFsl. pHYs+tIMEv^ vpAgEEIbKGDCIDATxydW}?su7f}mF2h@cŅKR S(;J*v 82ec`  F`# EmF0m{{v7vqSu_s:^ckɭc۩'O,EWТGȂD1vњΖBRaٝ1|+wpՓ7suCOMԯT) ]/t^RӺ]ma޺Od0Yp"NrbLn%S~7ycO྇+gjk6.~W?[T@ D)ERP^o9U9)J.u$݀(c^얺OskϒMʴ*PB)dP]p#lϿs %5f@'N -VcFsvHPʢR%H6Wr hL@4TT;$_yoP}hѳSSSǴzIq Kc6(` 6x] •G-$ " *2 ϪE Y )tc^hX%X B;7hVKY\ϑ#ʡÞG*ZX[ ?Jx0v5Lcϴx(U)Q Z.:֊3?L.`8ng%zD%$ŵZIWj+p^XnNkTJealn ށK߸N+׭caQ9<>9|sТ%GKqUvHp} 5UjxP*!ȈIx<Qy 븰JsCZnkZMu{I%]F21) k5JeJ@uB4[ kxfj:C?&IL|Bͻ!Q)i'S=/D2@h}蛯JՎ#/A:}J`2E (4lNDh_)w;[B eX\W+Ңc3tKПIRXb@pdRuc my3&5 u{l'JQx2gI06PJ%TuL29!^z=LRCʫĎ[qd@XՖ[i?<=V<F!&TlY)338Ef3 V״ˮmT ,nOIJ Rh|@=0}=thı݄3}" Xdx .'NG\ĉfLc7l}G}$Qgҿ0%u4)/}'5o_tr?j'\$ !$.ՁU# 4߫V^ \g=1,ˉs]`ր~9exj/8'O.p6un.d 5k-SSB1F*BX7Dz@8IDr1p\隁4Mn<یZZ{9bjUafƲqcܖmBR` 3_##7u&f8 &M<ҟg*>/^Y/C`es(9:yv)&h mX>Հq H ]]w8X~5\sec0l(7J4Q ɽ1yqE$٩b) O&]4:Oˤ@G0ԥʃD^~{)6W'J N^ŁC>ȁ;e?{@P&TGJ.4TVfg *Hv0M;ECE+N{I(Tv(N͐JiL ZfyJ 0/g^H6Wd[|w>>",h4¾9Q?V8',: 8VI]  X~e.8dn{Zx ¶ӷjhX a5T "L0SCL8Ҙ毒aoKzMȍ){=;CszW2ciP 0a}&(YQvШPsH0p% K*\=} L?{T w ˒V_I $>`[L@8:+9pd5ȁtăz?bQ?~ebEJu#^ M) ̉OsyZ.,4H\l%I2.k,A`-" ɘ8 a$j22&ݞO,17}l^bXjuxh| h$E^J,M,i^?51A3LYT/)GW]ʖbjB0W4QH.Kd$ ir۝]UF(&sEkNI[Q>gɤePV$.L_cV $Gw$q]]:{ A KPH on'_jۿȢO?mX)G.xAzcSaY4M؇WEK[UI ¶%xB7a6E-G|B[3kF@0mUIMqσ=~*?wiO}9M3Ak/>z!~2F >ި7'+5Pt?9 e:QDP0뉏LO0B-C]FZ&pL7q҇bߴyUU~Hڙ.#8tHy]4/X0&tRhgjD8Z6<$Jł aR1)cЬ$^2\|48TaK|'S_zX`vŵ$3#]jDhQ{ &{ӊ5DH0*\)Xޟw ] U>v/|)3ãn0 &r4]Y7 JףU{@Tu,3kPz$est1-=#ۧ7nϞ^~{r6QHzYYzStDž3cNn;kGy*K5-?ኟԃ:O`t^˼F]R <.JuXtV e!AקCWKw h.}X8m?ݯkn*5S1Usi֙Q?od¨ɐ+EruÀMREǐO泷!r wy ᛕ߹cwd9L''H]ϒ皚ezXg$brU&.Lv51.{FC0Ыr7Gu6͏U 塄^b ZV幩m?UjS,Ƙ.s|I baƵ$* G`@/vPy[.{/6xJNg١E=Ǟ~k[g:mE=ؽ4יijhj5UBS d\PǢ'MçWh v?`ػ:N$Њ$SUm[SkL).M)3% h=УKq{>ϔdFr ,"B>xJo.]x{8yۙЎ4Y$rqə.ٺ5SbM' }}~'}W?Q$M6&ݻwswݴ@;|=<]x)ڌ]zs/hS= /sr`a{m^cU]BTz΢N݅T9*c(TnC:/O<7,{pc8U:~PösfGFc@_L#HiFϫr BCy¤}~,?XCK﷣xqW;+ f9N0cD\Ɲ9 [BL{ 6JWFEWy!6[m}՘F1O`SCk91gQF0rbx F< 1^HZi|( 1QĊw\9pWrLd9hLL+Z)$*Ex)xԧ,w- Ah/ )Jisꎴ%@T* bn} )Ahppj|7;Y$Q0Au-{tڣDijJc6X`m":y(͠>K6|7oe Ngx`(1J(K#x<ރsw+E#P")a_4Ƨo.t(t^/g!䅾gigs)"<]!b Y8JP(|12O hjsT:;)\qԃPmiYWRxN }%PgI_đ#-Ѭ)1NO i!Iiȵ[9q2ʼnF;_!z(8Cr@ATqO5 #=?Syz;~9#BwRf׍ E8[sYZ6cv!Y0[; 2+`g<h:ɺ!HOn}/N‰`{LܗLxhE,Y;ljam8SL3CQ,V$)8q8by⸽Gp‰V9odVÂHv2I; f^ᬝd CU1ط!"KʁC);o(==qu>`x JXXr 62(\1Sp.FNF%){:a>0+д) z oHiS|r ޵]Y`-*0W5{1aǶJEVP^C$k HǍdS$ip ya>bJP?cp͗yi U5wem#55 0R sDusVKid)[剛ȯlZraP3{cWmu(u2 #]2 r "$jBZuFج@EIHR6нU%i}R}}>嚗ϲ@LiRc!f{  Vli@1A!Pu('_F8OBm!qXEֲYKm"ytQvg p*h>9`kLLٝһ_abqr0V;] `\AZdO!k ,˔̫݈qFolsY&IW[wm=gP`sbb%tEXtdate:create2017-07-27T22:20:25+02:00%tEXtdate:modify2017-07-27T22:20:25+02:00nLIENDB`pybik-3.0/data/icons/pybik-24.png0000644000175000017500000000327613157201177016747 0ustar barccbarcc00000000000000PNG  IHDRw=gAMA a cHRMz&u0`:pQ< oFFsL pHYs+tIMEv^ vpAgf/bKGDCIDATkiy3gۮ:يR$Ml+\,H"f) AlFh_VPFҶ٫"ʍ]"R1s\Wgs^D?{MY iNG{9I|d[yE"<wrdl뒄jIQRi d9g̷*a;^X9'eey)W04LLrt$b]B(M %VqDQ\s6ŅGȾ~txh-+zq!{|*^S( UhT X47+XmBjCXG3=?]TBk\1.9FOY,F֖*ΞE[U:%YBxʏri`e:X @^=MZ Tl>xyx.GLHiB{Xgo&]9 Ը#hehxyH14q8:m`P򭵅e5%,,ER gCH 5C e1 ejƇr*+OGT&Bslg'GH3C00@CU(*:{rt~BLr MThijI[ə LLۑ0_ɦ*Һy!F,yOxꮬ b!l0*׀BAߗ.V$E vtMhxhw̉.>7jdzya"C7 8sHXڛ5mr>|>ݸE/M`9#3LP,a(fwG7 `¹ %[#͸z†n5[nafr)jp98~eV m `%m[baO |`& !1fukdݮe1cUm!DAAo)qɈ |QՒ ApO7@ wT/Ze1 A! 0`I#l5 O1*)%y`CX\ֿ,,o|?զ`J״hρ].Ƞ$H@hm6F>1eM/^>aK&monPAw0sߡ|'_'p ?Fxp@uuvחk%tEXtdate:create2017-07-27T22:20:25+02:00%tEXtdate:modify2017-07-27T22:20:25+02:00nLIENDB`pybik-3.0/data/icons/pybik_whitebg-572.png0000644000175000017500000024106613157201141020540 0ustar barccbarcc00000000000000PNG  IHDR<<zmgAMA a cHRMz&u0`:pQ< oFFs-SnL pHYs+tIME  4 i'r vpAgii 2bKGD@IDATxY]Wv9S1I`,EJ,U%v-? GGR?n#[*VEH$Hcoogǹ}rI g"#p=gk I888888 P888888rppppppH#-GZi988888rppppppH#-GZi9888888rpppppH#-GZi9888888rppppppH#-GZi9888888rppppppH#-w 5(DDuqppppG럞9ޛo^;~dGЅO㛶(OL mٚLg V*ϗRPHi.!鮂7JsZ얄 DH|P~t4=2%}trdtr۶M7o t:2L6N8zspppsTk?|;ՇΨb (%~BH ;ګkTk-d~tK yɑёMcr9d*N]>VsW?7^2s=ZUk~}@@`#tf2TOe|:E7mٲ5; ᱱhTJiiv6GZ$c>կN;j'\Qv&UZ+>" ]:@:es*WhetU<2e薭M3CefK##r9D#6GZw Ap/|_9vdY;[o"&44!-Hlt&Y(eSfs]JC[(Nl1299e T&/J|>ɸT#-oƘ+WIUk+T_P*$@QGR''ټTT a$$R :ZHPeuHҜ (QY1IP^%D0۔$DQMD2_B|yCC㓓|(D"H$vHfՅ |>8rҞ,kЬ)ª:OU_]h {*.&}gw-JOD0"mT*ltQ-OL oRغ5](@HKãC#ù\^bR Ur<嗧N|W9?nw&pXm @JI@U"U.H!@%7J{W( nuQ*nb4T.\6k]H^SG}W.9L{bb]a21F}NՈ}>%{R";w?^xa1.^޽h޾41^Oz^@T&I&IUi91xٙ3gH. xS@I3@YS0$ Z>S=) \>hTEARt% =Q Yc4V2-OQ5/G1ܥӿԯ>:;SJ2HC/G6oNe'D&Icc& ։d9I:rXOhGg]p9sf>`Ђ 8d` @ `GĦ#>X ¥B;|9G9d1˔JDH$g$xV[,9a[FLUpΟNp_:{E?) \ mC"-Ji亹\+B5F*]@nb09Led7KccšHKH9rXz>{N}?ux!J +W iMeڏX{JHd s@ 3 xl6prg)_Yvy^K0&T.xktu}F^I)"?Gp/p\XвMT$=HjӢXkfRCn`%udY(mڜJ:@[lX*RPpGZ5VowlGv^` Im@D ڐ:Q s ćԉYHvtb+FBy/؎X2`Br``f A Qж }r7: CF+W@#'OF" n.T)'Z]D2kůU{Ve:> IiB@GMԔNGÉQ&Hr##۶ o4dA@R!u+h_K 7.IlMGD{Yc `J`L J%$IJL{"K~ч/Q՜EYPS'Xd`HWO ;)*#wO7d:Pd7i$R]ضmMMlRdJ#cBJi.HSS'. :҆Kd_R - fo@&dhBDҀt&GG۩% % KEQk)0!X0ff rPf w%xFT'obVoJ*{&Z1FVt!&,y?3T(/9<:vcÂ;/  HF!5 i@f@+,os ~9$ 駪%FkbRNQ[c2PMߐ*|o-k#0Ұm ҙRYde#R!Z0 iA`ain]ػ.g=]6aƄϋyQuNwF5LFxG_dYGZ}Kn:}=yc]d8u< 4!?F?e"ž`(Y! tKDf=`5@A8fd hP"-ۗ=R誶 2/N1[tG:Qf3T{J?O$j?>sÇgO?r1e6d>:w߾ 9N_FyNl_j|!$ iNH6> zBێUFBH `H 0 d &JR.\tR-5`T(lC4fHZR%z H6bMۑLoFo^G?pp B* K@, eR}XJo]U)ZjWCVAݔpx?5Ym[i_hSW8\(;;WP50չU QJMLNT4Qf,d1H6bJBlD*O#4)@˚]XHCMP؏8n"nEtU@RXJ`Z`V&rP_-RZ]QN]<)T2iz^1޻FWW GGݻwoܭ&ӹ>3[o:t7^vVGb %íV5YQfUX\rL:"}*m@J(h?H0/цJ!UT! &$jA"wI(CH=A6gB(9$DP&7/oJ=JW?9b~{ɂXX|Afy*;bٳg?8|ֽؑ 7fg?oٛ|fRj5NwS|Jup5xˮ e1E/t;Ch̆t\ňͶXqM49i4*2_HĽ -qvn1\jU<"iXӂ_/}_bFv\m1)JgVʧmbU*&& i7HET"QW. >рLGeYJ֊ (J E  ]'pi^dBGʑDӟ0 #BݣUFW)`V*(8Z%SoUX}Hs;LΞ_3?ڮbUZ)UV ,p\pduܔ+I+)(D2u=HG mX&D҄ HWЊd#+2 bHZ-~d;XT)O=ۄ?VbEV2X~nո d`7;Һҥ^zW|U;N*&U4Y!(եXhBՊH§yV]&1ލeE!יX2ψZ@ RdFDflDA'tYbŵhxqPX˂4Ҡh e. y藍w WjkeH/mq{Gnte@4;iHk=ٳ|K/\~(SfmiqEbÊ@;+G/RZAteE෕yN(SdwذTu-WT#zJ3r_qnPNS4 ea㊡U@<**&N LiԀ|l>OQW̦!|&+Jݶeg>/AZ`l х&~zz׎Yrrr$*#I,ȁip8j rn6& ]N9C;Jպ| MojtR Id6d22|??:~D%CSr#%a9. %y0+ 2i Ҁ{l#V_Q>2(jBG<Sƅj}oP Qo!{z}7oΝ|rQv ?CĎɶc2j@hQ*L jpQy \U, zS6F'IZ[Y HeaL ` L 2`vX_6*,{2Ens~!K6ݑtxoR?`m*3&L0 ` jl iE IB iئx+ B/G_?'MOD` h\$ 3: TT42ڮ&r\-dL,n]TUZ0d)TFї Db? tUC|b6 תp*j"-H;jͶ'$ȢkOeSawv菕,(\ `&$Q5X~x'Iv{͔B!˹HƍO>do=^]ٿ+$}aВi d*w>w{k:р\T! `ᨋd(|mbCَl'bx 9 怲0 a s@H0ʍc-ghK\:J}ب/b+V@.|VO`Y վ;AU]2!"fyeXCR0`""6xlFiM4EVhMFY/|k6BcЧ߮t`px{ d^aĴ#oZW_ګ"[i4W-Z8'BV ]:Qf-87::SfvtN Hbي}|2ԉ}z$\#%_b3HH)YjlY!g>4UYEhy' QהyLNdqcw¬J* QAr{$[y>'m4ߡt& +1nJ?RwF:qHT[P]C[ p@?x@n:J {Zj 虶h.]zW>4;;/mȲkLni dE:TlfmJ R#f*MhT 3 UH4F$# QKF*E1"-~~O'9k! wH+0˯:t;v0`Sem*)1Ӣ}>MT! J NAiCk=-SgB]0tF8ElyNg8,Yu*kW2cb~Kߖͪ0$<68LOr9nwGB+2Pё:UW];''^_=j/"V W{^ňҤbdMHb:2\S0~Id\ pr+;c @ 0d;{Wh 3_]}BV_2;G* 6d~Mr6Ο΃cԥK]6-fͮHy#/=KZAU:t{H?P?J0XxkC\7Q?{pR!bc2t?ٸp8ND, @Fa 6_^~i*VZ=]%]b~gU0$[V~0V};I$FR,"-Rg۹GZ]ӭŌ8Һݖl49gLn:zT`rgE[y^:&)"l4$<`?bD"u"T7PBS R xN8y @&2NGY{>1E%v4Y ]%/s*wpWFlQ%g2t:]Vm+zBU{: ŒK*8ޑot>9mILƛtXwS^QG:L}i-V B6n4Οo$̷y^IaϵNu4I 5X0# sb /vyaXG%$6$+w|-yNT b.Mwx,:ѯVm2̙37og˥ҝC~LkdlEZkA|7<۳'?X d8d݁t\|bԟ5{1T*L&ԕ++W&_O`6-KDB -T nj,6]CY$)5I 'aaF;I Ddע+}ZjWT0Ҹj/Fxn."G۽pB*헞nezŤUo4^GyxTގ$pO+}m^[)wTqRN]6kvO7@j  =ReAXgU- ~bsQֱ7L3΁hTu7.F D q ]m o".x{Ѧl6Hd'9@]FZvի{x_Ə M:ĔcFͬnVbB Ϩ37;.|nQK/R,3:' 9FL%GRY&"Z;VQ`Z COSI'b >&P7 ]eM֗ pQݸurg:ZK|7z@ʅ:* =86V-kF6K m3=n @,;=oA~7(S·@D)DȞ?x~JD p92gz#Jk]4 CBwXQ#>f jc{詅kZ*(ERcwPCHZN:/~1a}A1jrY>mu֚*p'7<.dMK<Ȓ )>P4*:Ӑ6-ٺp^A=~dS'Codvu (ܩp F7zn-R "#@uX"\wpQ-W6ݾHӎ2CFnjIei/p+WN:K/?tM9 UZ]Bk ؤ,C<͑/ y@B$" ݾ-5j4Z}Z#dR ?]AYXa9.0[g-@3HuRƋ79޺4e^*Ȗi_#Ou.aYF/|6JS2LΞ9{v﫯v PLv+;3>ieV Pd|BgU=7.dRh(D"o!-H%twú N$XHDd)e?M-uK;ZF$z$bqK/N;Aսyn2=ht*ټ+8y64I2E" ]>VK(>uԨψ)RRt:40s܊ "K^EI@:)"9 /s,&Tdү2'(ޛFOC-HԤ_IM}=X|sUGuyd94THׯ__'?^ȧPg`g`JPK<8&9aL) ;K48%XW2A1j jc);@@nH$D*jW^jcbf M`҈t"OKD⟨R@#Zr6 \da\G٨ڶ+6%i.2~lǍI}JJKe:]~@gHHJ(.c6Т6m4iɟe,◹3鈞9Ѷav҈0@Vbg憔&.,]*q)Um%ץ@E+ SDwfڄ+1877W*v522RD}ղ3D~猪$) @Z8~ES}uMo{:Z1ZH+911~Ϧh EZגd$Kh 65 CzUd{ObBY,̆R(yCua+ޛ60)fdi<ʤ5aâ+[zkuRt%*xQ[$Zq&@;c:[ OTCyTH+RE8ׯx$M||rޤHeVC[F|?c* Xgw$4J&i)g1fO=A2>{OJvdB"j$8$c QJD`i_uCWɢ9YC )aȂi`DX1A_S7cn,;+dPh5)|RUKӯtef"(\ V.#D=gnu"DR4 4Ќ[?t_r@ksXDbpoVTd-7O?=wc\6קnac':؈Ҹ`-UhEj iAq8WE{Ȁ* d)y|GMN6oveU3PTpޫ`AI0%GGȸ=?þi>4kJR'n@5:2d+=+9%Skx'=im@%XHK+{JCClo6 'E*٪Z+,gիAk 3W5צjۅ1t{FD <@A6b2[FLK@zS ޯ/) 5hpu |g1!* VAmcd2f%pXjV'7yd2H$1ƘN*xTNn8й[^x*u[EZ\kZR%CAc"> i`OGfTkz-zV37ǹ6:I˜Rڢ1.YT[=ˤ{L6V YVOW<ʫF3z `YIS )fW! k+C'U*xT e5 (o$;pP YTfgg[ec~Lk{}M^aZ֐wñQVQ2g>WWh%_?6Mj[͙o̘KY^nnLFssl4Xm$[xq aje xw' !I0'HF%0'Ne!VIW7]Y2?RǕF7x[xG:nhJq~no* ^aݲ 7#? PgpH+N +UJ)ɗc>h mff+3;mf̥)33mϘ+Lg IF33k`me>Y<ő٠ܖ0j@C} H@& h}ߓZ+J-# %t-]P}mDZ;wnǎ7o VI {Z-+25MZ 3j/*-h(eui,vk > ^6s3R㵫R1Wl\Fmvj#0 Q铄m+V/ YQhIG]D"Lvz~ XKjkp^B}yYp Bt$j.d#G*xRL7~'i\ilLMM:thJ)kw%<&]KHb!y n4%6U$_yC&G(!GWwcݠa= Ye~>_xRnTvCLf'&&lbZ֛KkKDtX]?46ښ=m0)E`TKChw0&KFWQA\nnGu*X)srOP%CϴӓA^(HkLyHܣRj|b~n KTHf$9W/'Bf&+3R1SWfzSWLZ>uvMs$dj1a6àYɤVw-( B.JzA,-aO| -[EG _ CvL0g!w,~W5do/]d]΄]j"vs\i,Us""WJB`d؆n/i01XB BA?h6Vw^fҌTTRIU;1G7232#/VZݛ9/mJ/RJ Led>ܙћLɴsZ^|`5 U`4@l ͠B0C;l řn^əwO5[|!7l4Afe<7"ohI)փ 0Xk_` fNx{j>XMoC/<!L+psZZlM6% j'DFْPiQ1OXT JA9l''s}~/Z}l^zm8gqh1q5Qx%j+tvauU"w"qCZ;Zp%Lj(7u@6!K,HEˋպaS5@H0O_=K@֭!S8orTimdk#F Ҁ4(TQ?_>=86]nu}}qϚ|%yE- |qVXǜ,|99?QG}1\z0dCaH;*q =87j)fC K-MQi~ }H1F㮖Kk^ 1 i.y /uj8uE)ZdI/$%UcDHe*0ԃE$fWU0Ɩ 3³Y, _ex ĥH$G\NߒGpep?ֲ2bQpK_S|' N^+, ZyO΀@2 JmOClo3nm DcϘ wzpnfyDYHKuL" +0dF_v(C" ϱ8_Pj1C+7 uWhyM{\/JmBIF(&ۢ`HIm9gspO3>Nٶy0mqy L_8R<m%q,zJEHMqSť,ȷ /b*,cS-+,S|]m@S $)nEzH"0)Bh.(LVf7^a0$iQc{+JS8?|m>=ӧ'gRp](ǃG!y1fd1bQ$,crHcfg^6gv8g(˄0XYh[zLkU 0e3e"Ojj<O-h ʹPT66ZiRlqr1=V? ىt.o? i4Y,Ū1W?ņ#E՗_1=r l wN\>t G*,~_eouE[x|Pymؖu{떼kJ2hq1'wv3hrtaaz"W B!76D 93s\@b^`c%qA=mlq/=}q F.wzAakdxXDX|9egJYD-NJf0Oߖ/"h7/L } `Ub*qF :y9-oIhҝ$QU5hU*JE%0pq(pj6鳰L" 5#Ji^ÓE"+TU_nOϸ}}nSnwq0pડ&cb`QrrLr,+Vy^,b!uX\KTT& C+{%p .&`r3hh1m/AXVk˴f9{[1keZ~mJ=6b4*;U*ժlw7b 5iLBBXx䙯xq6/QeLXuYi6]ni9VpϚ|byP JUØ%M{FV9u|ۥ;;;~yNgl:'0*N:Ra=&g"0\mOW+D+e%.uHWyp So'Y8WI5ί%VQtK}+ME#Si(}-*>,zfVwiЃ6I3338K?1cGdFDZ0$6 9.5Q+}\w_Lnn3 ?k㏔|pW'X*w4|?HܡJ&s#kZ."0i*%& .ޥ%ْcj$¾axMೆ4 S5O]L _sV}n5}gMO7pF3[?1bym}f0r\>׬,Z*$d)Z>E0]^oiD⓭"'.~\"+ĥ0$OcFmOF+,QpK_d1B8|~o4 I%&Iz2a& xlmX6!mWB%HLlvS!I;%9h엔ySv\7e׃Tw:+R$9,mNupKtс,Zwϥ * Фu.`T˫)^ /7)/ qBZUbʴXW*YFrs[CrO3sZ! "@YehDȑ$ 2 TlP\N{]~x/θw羨eű_B)mbBhl>%:'j|yal/&4..ջľHjc}9R$4NoeG-`lK AQh: _C.]U7 ZGK)8S3Wr-![e"Ĵ.Ik4CN6>3o3-9.ؗIS/$Z߬z}5)AKgPp}84lC(8z?a5PQѷP9牫,P6~Jc ksǮ.`˴8 'յnɔDvwڃV^<#=^}8.m(嗝&'~^?fQh#`1AX `yEsc6vN&s5 5k{7Uk7vjR^?`qzqjy#czF<(\?"[ɏ1B(U. 9&.p]F!¿57rBBbl6qIHKTpPy?Ll˴>4SZ/vE3 c|-A+Wk3f3{ 2pl!0(o9'(7sO?bHXQ?1 -;Z(GF!m\;>9ӭsh{<=́o?Gg:ECeI)_|f9mk3QpK_6(BL n5imRN )eiQ319ƌI3VI+dK|+\ұ.L%1[cWpv.|rjmsἍWEUS--jBQ׋ٙRj0YOM[떱eZ0XsNiJ=(HW4Y.nJ/p=.HV MkN1L)A_1VC^y gA˽6]n3n^po}n7AzG[3 IBY(Ţ8R) m^f_Dh #L&FM6 Ŋ̥B6 7 ZBa`f623 K#[|1ݱ-p{<"[@K|lp@L2͜hy0NMnCn]`^} !aʖogÉ7K,6RnW)5=Zp{i[sP嘶/ *%8m})oZB6-t{m8wU[Хdkx2k1#°Dս?jA)67:]>=ӝ&7;8;nOS< "agj_Ų&"bL+ؗjzA  ahcsؕb=rOaMdKДuХ|k؋dksBE4h~sٱzpt}^RN2+˜Ɔ;:TҴ"-"( 8 N0gB.#@k<]mg#m^r& CHFx4b>f'b?{@E'9Zֶ(aa<8?K$͛-XM)1v9̐! vDFuZ5L6Iƒ/ IѰN sW (yWm48dZރ=5-\%\}[PʘBSȟɼy[&{ N>)Oqb%Ni Ux2zNKit|ZAN^d19l1V<":y&M?ΎR3gp^GE0-ZjÃ7T i-`4-[?,]"7ñ,(6@i!;B. cI❠] m~|e썮50W*$뭃Bm9Z i#zֵTd,|ڞ'p z4"GX3v `Kر`'캂ajտǞ-UJlmjf(H 1fi1;DX.H|7Ktˎ;lEiEwZ1Ǥm13"(vL+?8:) q#V΂ 'b5ݫk@;֜n%ْ$jc33E-C_Li,ôfMl03]}Nfe82zgl0$F "XQ봘` Yc.BᦀQ33.7i4bJ\I{ìy Nʓ`i-z*2{ɤ1- ^w>q+K7a?KּxC׶- "_-/BOzFkdGʐNe$TfUa?C$.I2Vٔ!slK7F>ylRva [P­X=ٶbCRW4;T0xv D))b$0iwr#HjaR,7&<|<}-4X Dc봘;n{zV$Ő#}S 8ZIӪTM K%"qT_HגT'1)`{}=dk3GpƮ"劌m(,g @MݧpD)k2(y7u@n+H|.f@1Pjlq}V*Dq-kY_vZz,1hF ?FAuNS Ihid83zarݶ|mz1eR41C`S[5^Y7]Z ۺk}| m7Piev<*YOi+_s@hye޼Ɛ-Ada ;.lgnJrѝ^1]c`<bz.Z$z)㦸l|_\uS<(Zj]ΗNч YRK&+^xy_7O?V*fw`lZqQҜ12y57p DFxfl'cmL9$Fx\ :f~pK^W_*oٕXdYt2[J,B8G pxMe5J$< mڟ:7 _»=-; fX)nwy-ly&hYA#oW7H0a(ddS :ijd\vdxbI0KO{7,)5ۮbdy͋O4IR<(G⧐۬$Lf`ǬbBk Į?Km6_H`T*\.w@k4߹xS@5=Z F)Ȟk'/`{Co֬/|1HnOToTI_Y~ s12Sˬ6Vvgn m[_ץ9-7N=d̔ׄ S=]u8x+9򖌫NkIR,.kDj(def!U4MѫNOuⁱ ww3gG+h}hVol yJ~`jg~%ʍIn)54̝`H{yК0!$c_U gt+oћη;2kxd/kX#Ɇa6r>"4crzPkeGzD"5֣ lLi,à͏zp-EZ$Sh>jHoZ"LS:d:S]"aħgAҗm?/JgۚbÆS7!H=Q\ħ7ϴ@O-%I/?eM*U~T%U aț Zi 1:=2r` b 5w dkmw̝Zlq0Kok  ctO/DRu͏/$\c7}O5_S\,7 #crZRZ18= #۝,]!P.fMxs݊:U&]. F@PiKD^1`z KBK*^<#Q"u+~j/XI#RvBRR2fv7Jl I~~q]E `]nJ_rK198%Pjb=ݾ:-$=/^||I]濍ZhO[kʖLWѰj[*}0"aghN+f2Xt"#Ι)봮@ún~bfzkt":$+.,apORXTJk۶yU_l~GIK ylFL+;**q(l*u-'s\ PbޗIs6jHX.eà &-rIk$ܚ䖎Y=%tNn d_kpp;pxxX,]}ɉM+3iR1o,*j^u"[ɗn̩ s}Ul1J*2t鈱Mޒ&k-c1M"jTiE+)[/Z#_N{_z|o6 }V7i5yOPe-.%,)p\e'h$#N5x1j%)$bk]giKn" .cU_n/6 EU~̾ؿ]"CyAARuZWlq8 L;"q2^ ^,dwqoi\I҃{駙Zj=%Jo^c| KBǭn}jed+_$~0]\XRg_|1h1־x|Zs Zb6/۝:l%}@IS.y Gxr==! Eޮ=OBlAaּKʂiQpqC.>| sW޽{nw\#S/{p=2\gp-ku¾j2B˘A_ G=E"ijk2]eG܄ Fڲ`8?P'Ճ4EiTE< s"ͥYf2cUiVrK;9,e0$8]MT"crbMKM ~g~ )Z7ރL2f^}&q{xkB4_T5Kã#0':3 =qS 5$Ik (KJ6x{=2MR3˓ &'~646?qJ"m/>dCbE3`JkX*ƍC)o:[e)▔ܶG̛uYVC͋GKcKeFJL>1n",tΊJJ|s0#=Rf3FNBo zl;UD9N ~z%VˈOy_PΛI[$8q /66gfνe'Ys4;ZA #_kle ;f03O2zdkryqdd)r\^ޮ~uWHqϒ&b7FA>+aֳqG fr I³9ʿBYEP,R6fRѠ۶Yff|~dDž29?Kc$< nScl#HnfpNk O Jz{{v%ޕVE.J%"b:r4Y1'`5V fσa-s\]-Zzm3t1qp]L%1@Qu" sIKVHG~R( 7y| J (`+A%Co?{/>пCة#-˽=YmBe YTs>N4(RklKVxNbz 6ux 0H)s* -!3֌77\NNd$EB;SS /BSxsNRP^D|cbig=9O͟}O~$y"C0`hO;s[;wd.ErdZ@2Ns $dHI*M 'Xo^c5}/oA7>HQdGիΑ8>wnˣCyp((4! EIarRۖ|n]k ӚO3{Uq"8~[R)( zǍxH־+ݾg B>Mfi+T_|-oy˳<Ľ1 !].7; y "KT.qH޽+oCh]Q #GC]J˶lIXVL ph&V8d)vzjf ]h~?w\ۿ$1 \zEZ z+ iRu{y DDp=:oY/.P-QBѨ#hrj5aGV Ux9!X[l@„Ii2%Y+< nشBOqA_N İLXr ^޷7h@p\3CXY q8WIioo}//~?v俑c 6̀ H)ɲhA qx cw{hRU /ɗ[`2H]rKafBkq-bEӵ~L,|R8' `k^f70{RLA´GTV, A^Ɩ}y9_x|2c+-_}紒,4nL0;B0洂o5]pLkpϒRf|k0q'$àrYXy(Wp":;;_i" cgE 9ܷ_3LT,]}(#ەQVu%v"e1wc̴|ܚBcS+R8ҲJ1H[Tj:\(M_Y~霙wb}WY|Ov&LUҼdammJm+@];mw,!`81fB ;`OcJZjE! =ҠeI..]EE2L+ V0mv[SQ:z;|_l`[̌7|w4uK nwJ7}( Pb+كV|+HC`:*4t>FH$  " `VO~`ةzMqu,ޕ{ZU*Beѡ Y9@ӝCL+f2X-QXm,K_+s(5cS*&_uZ h /\x7[.w6^VW A=ԅG8ooQX!$ 29k^팜, 6&q9OERT'ѡ},oߒe!*ME}5w]f1,D6 iq &gB@n>EdAN6V|890}V.)P-JjuѨ-y~4'5zyn[Ew\R6/]l(#Pj-7Ic"<|򛾳􎟪Eٕb[)i^5v\<R|e259HPl I"#Ew|]+$zp GL!mܺe[\N$ʆm2Up ,ՃdxG2#]wD;݉mE8_(WCY,-$ *9(۔hOĞ=,SmKvʶfЬ 7i=HNlTؔ#oi[rj],p'`%3ӴԚ\R}Ĵ!iy} pR"9P.ci!Y?aYG9tϴ`m4>myx ޞ<>0 d$eѸpk`Ҧ.XOhYBybWUj{X8.3Oȼ>v[$l(BsrZ j ZQʏ@XZuAkBD: 0#`Zp*6aAw[.8`gd-98Y0ƈY,R䋈Kq$SJ́n=sGJˢ9cPP*j5q';w[rgOjTr%kX5g'^6./֜imz_7?*Tk7Dk;\}VrU+Δ~!fwpvE֠eF^r`=@d6 {$X0 -dQB6YŴdӫ)EfvѸbT*<<g$AT˴S{{bwnˣCq<ؗՆ(\"#X³ s?3s`Lyc>~O^Z5 ˵>!TO&F>;i`w4S[۾Vq8畊CYr*7-5@'> w{#6F"%zD,$ô" "YcPJ0tI)Si~N1`H ӤE;+}[۷E!e,r4|xmT\ܖ] af-/Ӛ.E:XOH˲R ۶g!f_|g0qhjPp-J%!0~xП؋}Cr$CZ0w{6tv@4ɐJJ0 ߇+6U6+ٲ6_H+l˜y`槟t[YSG@ܹ#X52¿˶mG;7$r+=,.!F\IoUi !ޞ:<;;w^׋eqXOվ/I#5Ov{eR=j}dYx'H vRJݿooݻRضy^e_|L3jPnrsf;(jYl hM":Ari1@9 z`28`4hfLGgՐEX,dks-C,Hf2O? w*Tozn#q1yx {\ZM ~+ 0)HHK5*/]d"p=h=X L{7{?:u:z`ooT*E04^ 㽿Po,R;$Rj(ӻ^Bƭ ZQ\H')S88; q8:wʝQ|EP,{Y]%\A”q)踜V4)6?fJl>J)q\ ˙׾|;_7 ΨJY FTvlكVXj tVoFY@e P` <`5J!E `!de u/..nH _BiMt+QvQ5l ? "8:H#Q +OiR|1YAB!@4g"E""up+5$v;/ DZuZ{Qh~l襗^";wxX[}o_b XnYeR[Zhx0EZmQH={̝j %փ2(c#]`!\}/z[mGxc]WqZ p\ѽŬas穐::Ƿ8<{rv2W$iɀ#`VҐ&4Nnm8!slAgxJi.>"?w=fbf/3rz,MVݐ)7r=UwpVV.7*C ~ ȁJ;O(v=Hwx6swVCcG`yVd0dDT(J}5X&:$ EgM~>O(CH KtH;ɣC{ j52 Ci/85/5(7lJ60xUIJ'{rk߿V2ֶ9u펃2 lǶLPz]O8JhYT &}̗,H]Z'\.gv!Ҍ&43k?'D!G b_>GEDB,z(0op_֪%i8{>(NBĊ9f$&Sɤˡ\Js%VsKr[70~ՆIjC;@ )>BUP4l2Ka;ncD?hIMa00Bd4=5Cr&Y&:GG@qt$wE"Lf14q(f7 by-gU&< A (* mۢ ФHL$L&q݂_ԟПO즍?!&n=g=Wջ]iWSrJ[>zֳBUaɜdBϪs ucUبS% HnP5jZTZ]B䏛]4¤A]r6 '0"4 <ש+f0_Bˢח{Ddi n>d!n[{USlPVNSN]&z]ۓppZ]i_@˭wygH~Dl4G|,=bYۿ4P!:HKUl(`ջfVy >r[7b \Yk@ $X{t"Mi3TE+I2wL#r{IDaK0 LwY#A(H aEya` 2[$yp{mtex^o+t0Q"}|t%*ZdHFqZ~ct(l i9iL AYU>oMBDBd)k}I2/U/+ D"i'^ۄ9n u!H#)`[gBҢ4feUym/P]Fu.!BZqB Cgv[-!D׳oVRU=3IqlG ҃Ψ x̶dai=cgG<%vޤ+: 3K2NGө#QqOpo~TNOE/u78paɭMwɺn6V9)渹6cD7 &G;~gLՀ!j&{5 jq)j6GdUSKz,kٞE3rmŅމ@r H e01B,`i=|bB#YHQ#Ϥ ¤[ C5"Mj-4jT6N+vSbwG<%}HUIQ),zÕ[Sd!SpGtӻw?$ۢW{Ջz펀ၧQ"PSy!)&V_!Y:T-@Bz"" B* ]7 *2 c`,,/yEYty(k`7ų>9_,& |QJ94MB:f <ğd6Ь٤vGtZt$8..\DŽelS)l1mx+֚&3;~`+=H2?o1%5?{ ͖³Q[T<ZۦVEZ.RӧOߢ^b;q+*H4Pn-V-jiߛAiڍ,4 A2w'PGV$CIbZD470w{TPO;ⲓ)qu%N!>OIze^b } _L"5lT,yul[\޿{nX)*#bR*hEazd TDZl79,0({jZѮ.S5x g <Z`s%FgN/ύr截!ʐ{#l6K, Yvf) AhhG[۴%NNg㢻-Z-jVUè:)1vX.BY^Ҁ2uuU.&MٺVhžY2j֖C⯚_VEF"=2k~Z@UFfli~o: B,H*ŨdAj14,KSf(I)X(rUNXvt00 AU48~BS]q4moFGjA*Eg+ʊ6#&dA+ m>=,a'_g4 sPjMo LQZ'%lsQ֡[˷6i+ZAɻ ZfQg`b^z ;IF `$h³ x |aYT> dIJxi\-T3w1cx/cm&z :t?&NVOq8BCQ_eXLY+bO~  T-*:D% t\?`owbhF!ߧ36SQطLou@[kʑPe5ŒfB۸1D$+,:ΩF᭙Sϭʢ3|~:kMUtEPVm)q9& Bk)8ˆpQ,`NX6Ɵ?4HDG\[-Ȕ,]9-UE[bRhWggKa@N455\ [#R{t8uBL$x2UdO+2ҲE23VJ7$y?&4mŕA`2fz ɦ|( &bju:ܹsxҌyZaH"ɐ8?y @U MQ;-N;t=&NT}5IA(^ #OwW{ Ŝ6&weVzz֓XV M+ѾlVԵ"-Sjzfž.6"bC IJJ&9:PutDvA,WAvx,d˦ ,h+aXh%'O988, K #zv-%H|1Y>GbYJG(%nnd{w-]5lPG'){\ݡ]M6)*`,d Xeqm%]d)񴯭z"Hi"H~B:NwZ!ǻAT3؊3$N_h0 Řrl@pF2[a!+2R 3?֒%{BD%=`Uϡ!E}ZH8l u)9*T!l\iEуl6H[x œW@5Ib -簕˂hǴ)8pbNg dh4v#B} &E {|aȼ4!ۦ^[qqbgWզn:pK+u1$G}~E,fg>kzt-Qdd\4j% s].qlPUv0FUљWZFVnfWQ_vEeF*D&QExL|=Ί.E \I2MӦ)- Z986 !%M"Y,,mFa]rC].$LF|YƠ(vY@;F;;t8~\>٦FjPrIyJ(ĵEA ޤ] ˞j Om[ӣ+Nb-K1Z>4O,1%ɜ} & ^^O4F6ct8~L;.R+:T+Oם$@N=jchTW:I 1U- )OA 9BP XA -&NO0ƨC {8h|d̨h֩ѤFmct8~\;.ıby"- biU[ǔlLa>5DiŦ{A-U!Uap0Z-(%xd99-WMIWnЇsVӨ<_ Ҁ 4"ҾA# h,X k=xB2"$3fݮn!-HSh1KF>PTퟹz {aXxFZΪ qݔ\kkh_cǎ/AGzĎ#iYvMsxʩE>%PR1ZWVdna/ z7'W,+,ƪw e$B̑{2_Ytɜ8o4 5nOj[9. Hid… t<UikK}I'^m:ti刱Y7VCS]=\N> ;\hk ~t>z0(:" S% f>%Y{@Jߑ-{@ϗ.e+2j=GQ( YbL#\,Ĥ*9fI{u"w/^wUE?i@/ 68K+Aa2SϬZRrՎ@+}$zb J% 37fe I9[7po@m}GM6.DP Zxe:dUPvA ,U3X6U(G×$s=[ע|H/\!H4ŷW(of;% ET*l B:@ / 7y3_Vyia`3/_^B8WDEi%l`h0Hn:/N1C*%TAB26lw`;i!s>QƂEw@lEi=|xI|S"cBV|nU zz'Q@ds/{h~# YZv?CV֡Ђ #u'q޺yTHx6tFGk&Լab ]ae9#&zD!Y( }0IfxP* qYz_|UG=JMEUbNk<>X{;μ?{嗣bKe@z;煥~*aHXޣ#7c2fe[ٷ)$ MM)GY+[{d8|>;2㛿kumc:w&TjZшn6r9-vb?gonTrP G[Ӽj$aε7'v4GOiqsP+*э®dM`ˡZ,nj1'=C4"V.m~j^җZVAo>Vb1J7\*ZT7w5[ ~_<ꛞRj@$, JSx"1t%Đuёk=b[ rr&q)L+xArECg+E +,qXPmZz^Fв]|s-q`^*Ң"fsl:n_gwnhG7 ,[7@Ȉ\SrZ,OQIXdr+b8\Rr+ ^W~/?[`l WV{hF2v1% 9:TCe߷6tP~?CLJicLnB#G!}NW׾ֱ:Xnf{dkK:-ye?e.FPV|eᢌ4q*;qZH { s`ʓMv:`2L!Y0I[x<O& *Ѽ[g.W7X`^O!+c"%ddod׼m{Ut]7?G??xZSf,L57آ.C5N' iFPBV[17nyn[@!Qa)Iz7~|XiBs?ST|Ѥŭc"Hs/P+-H8hp9QfK'iJH#7kRDxÔҮ ͱDŽ_5,"c텄W_`u POc^} In%X2*'yLF`+4Xbaob0(p__]@$F"߾ᦽ|ɈD,ƙ/rriE-[p`.-oÓD$L$ax+ GsaVfv-E94/prgzڜ-P[+ZٜkrMneB*$s]OΞ5[n[D 6]ӞT=hbŬ"qY7ȻcξeF~'zن2IqVeh8P+'fq+ͅpxK"U =H0Mtڤ\^W4b/k~Xu /}nnVgk*$*.ʳ'Ny@?טH b94:% FZ5좌,dЩHQFY= q0ٔuJh:rb&EZXS~'fP }f?Z0(BUn?iIB)=cTN+[jj"Id" 9թrLBZgYt1a)E%B݀["NfShi X7 ĄY5/$,_\iZY#UzĞd44 $QH$a[Y䖯o& FXg^P0MrkӸ{dk ^zPn2eX]?cWs0qd@ Wj׿a6x|c]uAhlmo"-^K\~,8l;:}f<|F4`nWnluPP&E O)xC9"M}x_B ?qNcөtV-c"0e(n9IEԊ`.R8:p0d r-NwSY+[#:x&]p&jόF $3sд#n >o߻_  nu/}Ӛ{AbFZvGԵv%/\8KD]MV&P[ߨńErݏFUISis|>4!禕T e?Uuw~Qᦽ[YBf4t ?}m`!;#ЊW㸬KOj NE2E"<%EWnXETqf=bqKĭS *e .:-f&BC:n 1@iqs[1j~BZ9E!vBy[& )R+Ő0zyI)\%ErV3J μ íOJ"Hv0MϹz::-!\ʹ|WS0͍k"z׫{@ Ęl1ȆRёŠDVkJE|ERNj!&D*㊎yU>{- 'etåA4U7x,Xj𴟔xWkoxei5jG` KC=WCF2^lrk\z6Z_Lq+Zqp*YN!6[K/ OCVb7IɥbbyEb=gvʨDVƫaDݠeEbAdә'i) }u~WMk.HApǠnĎxO74<!F??!2UQQi$.i]k Ǟ~JKTbEa0 ;zoW@>lsE@P 渄⭢p˅M>\7(s1l8)y:wJ1~]8<ͫ_tE7M G8yli-="0niFXאkOelU8׍NMn2W+E_Eb鉴ZjM;bQYfJje88+ MܺI ;$i$jLZ6PO s/1~3Nä7Ek]1gjC^1s1$#TҴ,9 |ȧ&_W ZBÇ%"6;}E9q]Zd(gb`k8mGR٩xM=]F%LYʝ&j nĭIV( m5 c6Yr$^h ` ESYv^ʓɈX JMT@Kq!g:*_*%J`bHWQ-ғ|.V>oE~ӸPAeuZJy*ezRbsCzmzr Gż[K*H=춌i^\Y/].gíd[ijSv VO( (P\̊بM=@%e|?RK.v^𜎢eȮM\kl#BQ%yQ\aV!wb`ÒҖbM9<&M2W_ݺf̄F9*J' wީsi 1"Dx^cfSdV0biډS[o"# c-vNJDU %% +iF"Dceoe#rZ>!(E1ts0P/Jsk"šxJQi@o-ij0ﻞ{.l,ܲ"-0Weƚq@&ުCeWTVص~rk-VZC XrbONldf;a!~}acIR5] &`7=EUmIB/g>qQHrnx*ܢ"e`ݢMV:ܒɑulԈXxIS;S&1%YR^>xWS}L|VA̪={cIlU*\ e[sM˂N /<ܢ Fhb4$*n-7>T:(MbcJjރCͿ? (bluWшaTNAl˂,d\`ֹ[}Han:#0L r[pkze:mu[UH=Kƿݬ5(`N/}_'^Ы j뫘(5XʍEH|)krZ9lQmQf5Ȁ[Xp (App%>ARXNCoY~cͱy3/Bw0*[`+Tio<8s#>/vs6-Z phVkq%A5 U e*$T- k.yΜZi[鎦,*Ri|-ܒ!?h7*y 痜EG>6{; EjuEQ,a%K+Z5!ZuEkF vx$aĥ*aAK7[fh] GCzhЊ,\7z9ԃ}nq}+\8Q8 "ԏy e E" 7`,*.U`ϭ44([!W$rb‹#mt괜^7 x;>|Bh?\Ʃ]+NY"PѺFǮ iwREت"hHEbBHupbDLC[?"[+ yz+[-.QAݪZMld9@+~OPHŒV)[1JWR?DZ kvl&F \5F?_|.gg?W_Ub4*qhVmZB~DZ(`+'&IvIYp;bpQC­,f-J,ABIWqps_Z^/<q\PJtm ew>H'\]Wh`6% Q%(!iui^m!F2$az0 jnH_>n/ʠ܆؀(#ne/ nqpZ:0 U:YG.?yq>%CR WĆ]&yaF\ס#J ZzIS['qɭV(UJ?BpkXrMMB snRHR=^=(/w7޴O}1.abX9jT`]x"Qqq1X^PHB#F8nhr+kVց=KӠg(.X2(q+HFF ł5T%J2Wó+hpՏto;•.w-uf3>7N[vEU+|ԕWY-}D@G$a& 2/VJ;'#c<"0|&ӃA!d=wHU(Hx#mX[~_n>M0 ֪ՎrZAx _(q7qroYKPX%{M-;ZE O?FU}84B Ύ[ox dad(J'gJ*PN@[G[L'=VՃ.sMB\nYc)jި(h<G#dT5@-]>D L5nm٥`;z-s.K?ʸR2tExٷĝݦcxEIDiZc/Zl&x>Ê(o'o~W'|e <|Ft 1~UŶǏ_k^wuwy'aN<a C-6D"4WbJWZr-`!lT^bb=XVKZ5nƍǜq(J,i1Q=>E`FlGjQM~~l~׌A,fl?Q84{4aFyZٖg<˿|ݵq^@$0lڤZ,:.)=PG G Gp+MeO՜{=KbNyO&z iG+EΘ?4眈[M&XN[w KHl0ba2l'[-5_~M{SŌf^<tQ)LEa)Yuhe^iO馛O}N 0 ރƢ #чu@0ezEBX! Q"ސM=2q+[iHBa%VI9J|bn!t\ݒ/Ͻk}t.׭~Om5rasޚN@R5"|SԷm?Þ;p X00`"TA%؅hЉL[ IZ%Gx419-΄[%|i[k9p+b2P"ɰucƤEq)1x TlNKZwj*l0/wf<[~'ⅾ ޒ:ŵ-ffJ5{@VV>*(ؕ O 0-bR}P"H¸~?ӌL,NdP(#cr+(cH[}BHh~rPY ~!-$iKlYT~PUԃxbqF)ԯSjbi[=ը(|6MGU}mEn芁1  ^`ʊA );6BуJ`\1)['¹qty//b~Z A;~`2 'lJ\yzkW^YwbPm|7} p:h-\wu'- ےw߻k3D;+6O -Չ*CttVʎė$d?=`H0IFZ:QF@p>gƦp#k}m7)0|0fFU_Wn>?C,foxyrf4(EP &*T[~knvMH)Dr&* s]$:ѯA ʨCt z]QT=Eb1P ,5ONkئ8F1 >r9WKAzgEí; 6NsMg8'4`)}'wx)UTe 0BJE]a*G`vtRJ |F/(~cX410"Dw|1A& sCgb dхBt@eLafZ1ՃL,5^$炕EL8廀 p.fܒ!OA!fLi2(zN|M7x"-E@-d{ZYiU[hk"L+᠗;BǰP,ÒDw(RvvX(;H j8鳴"*9*e0qAcBe)KR< ! hXHaO|1ҵwc( YgAZEQe DR<'0́1 H惱 ,EXIZE! SjzPQNPL`f`Z|>nX-9ޢ]bo~ .͐Hp i}uQM}t S iC>*jN|٪}{ 2ј<*.zZi|>=+!C}}c`a3Y+^: 0ŢDAF`2Ƌ`A|~+uҘZ۞=6QJ0-^[o⢤b+pѼ).vI[y2iysxr$tPW6jE4Hd" !g^cz?ӄi $' {ŬVI(;X LlA- ; K 3ɏa:9E1߳ `(N ^>eGh옃gy`( g=EZԸCf_yz+2U-X n)* ~3DEMTws's=@Y2?}UD9j,Dv`nUUjZu=U@ Y// 1>}r Ʋm |(ofTL숏bԉ34%0yٚ$>{[[fJ&6^V؟ Z!A̷son6 _{_*n\qrC `3\-Zj a2|4 xXP[:$|p ; v$#-o7cC"#3{?d*D8xbψ뉢hapUoԏ@+G[QP5.@ (MRvZb<yf`0-c|Wi0̢SnJ!uD|t1,.EREhU,S(ֺhS1aZ­LL\p`fPl_-ޥ?`a(5Ġ+~gu(F?n.Yh`/ |o>g~V;,1Ld08jV c'x<뀄U"f)c[z (;|g÷oC]םLb<"aNY`b(ѳ#7IX v\UGG7Xp+/y[n1xTJ[~uft:ۛ?[/^Q{\[4VjGp,Lj1$a]$xB܃'*0,&TǘNe9$an#I$˳G4nuXI : >̳Rep+ {ؼ[yo[y۝SD V޹way;0 _̧7˜:VQ=+Sݮ׏rZ':XF=e@S(L9)gg˔!Ybtʊ9)çQLI';UOR'&SK#j꠺PQF"]FvpͷJ-NTحÇX_~\'?[[[vܹsϟ7 ů)pi5-]ĩ֙5."`,0(TBJ&h_"EYzt>cAf\sL"{' X0! CCX; ̉{A05@-6uI4A5&V>q茍y򒌹qD̹Zyq+l,1R!,b)Gz Ex-?-ޭ-MFlk}b)ocS[7UG"-uI Z'O&!YXs :@`Lċe&lh#OJg#(B7w,$,cZY1 ++F]CĨVfMbo+ rv:tqYقrg8_oV{%?|493v⺗EAvaW:hZ]e< ­p>jVANLl)>U<씘Us(1}fm8ϧө(eP̧CΊY,5@-meGVS1w r9bWQ܊zpyZuZŜ ô|*A|#ozD)j$j6)|yZUU5u b`J e`U3cKy<Sbnlp( v=;mWA a1t"IbxjC@}Pi6oiyjB^%+ru36nJP ѻ7=Rʳg:)LV3y}ЗF³)jVĉNxsRIN$@-mK:q 9ayyr1 WJ̅a89r w(f(Jպ˷ϝ;7'^+_\H6LA<˦bMKڠ:Qm$,d?<1!)Z_M.2܂D醙u1;??/]v^&mP):hVZ/^)$aٱC':Ɖ&މ4d_Z-Gbb !ZX-1CCF00 Pbцu!zdub[aQF6nŞ!THo߿A(hEWݎ#r"dvZF[GgŭǸH@ Il:m{E# m)Pbx҃uhBZBOD3HT(-3rNb3d0Ms:C];-l-4 *Dg,V,=V,h@0 &HajH)(Cf^ .*i$J;fj`S+!pnMoO,D,b]|kߍE8#ECEr3/;#5qKfdPr[,*&L3 [l맰r~O7h! }d3zא=;mcV buP #u i쑫zd&{VV>$n<  uM;aK!p|4fO5]`XjOF"Z䠳6>\upX-Pq"I3=,><hs]׃uO0c` Ŭ?;'*;bg'IҦq&1Aej.띻}QԸTEqCdEň/ TSijkӱF\fkj'/޳]U)j91Äi 54%9f^ Si4Ggjۻw}7,!FapI|%.)16/v8@xUAD0sjI R*;b`,=IdCHإ`TcjNYF-Bz;J+޺q-⌞Fk$r:C7~w4X>!i: IUP hR*TRբԃ4KRHV^Fz1Iɭ:sJJec/BQ!ab> [n,w8B1K1O`0)@EGԱC(:1Kn[N7JS)C>S|񌯫X'쀔PE%,t6̕Ì@)|a#ʷmy1KHRn$\g繳#0z*GrCNmU A |蔘`Cn3QaaN;ɕ Il CgNe%.ub`̦< -!NKUoz}d\Oxvkg>q}nWd 8M<;_ -|i#*Tjm{L@-s" Jnżs^ƂH= 2bV "˞# < _3Y(DÂ)1އdQ"|3j' 8İ5Z$q -hޭ iA/OoiwuI_:uCZ* rA`465UmE1<$ME4lUvzQe%BL #͙|e:P0Ac},Mar\U{nu q0,Ʋ-l>~mw 1fYțXX`ْlYȒshrPUGuWWwWQGivսGӰ/OՄ1͜NÌ$kd_QR\cÉ墈n,6x([1_}z-W 5ؽ+LF:]e #wqOO6˜r.ˬÃDyMĕ_|9}Rѱ-Zol5jE A~ؠPRԇh-ep jU:#װaiôpQ~X9f 'Xtt Le:H9O@ BUq$AG0vPoN-_.%tA^ʀȗg]Bٶ5@)Hk.Xe6h5 DQE17b)CA V¦Ǫuư' rqfM#âRbZs~X͔X bM; 'b-tG}ռ[j\-+ڎHN_|y/pOt:#3lԦ+V-{Кthk휖%12S*P:j6HHjGNK g0 4އ%Z' }X4iSR̎z}% '%f+ibXy8Q3lVQD"H$H*٪y5[qYbr2*"d3ԏO2.+Ndƻw{8_,j!@!mEL cƿ6|>_AWV@*}v$JO6{h0S,RKiSQI y s0V)%Vc${Cw J1Kn>'>DG\ιٍ[I:jUcߏ&8疅_(jp臨0NPkwk?o]܉NLW9nGd5z(Hh[R5*5 &(,CX)X=1+VNPDefGyr"!ab"e217w /4a0,-4V¥SKNlG-ʻ/~mmr$f=־OPpS r)h]4%9V8=X@csAB* 7^G4\"M^2Mgu:)1 8;aFWL'N4V J̎z:^Va'֤[GGb8r |D^'.(nc j _|l깗3B "Jn|9]q(#6mƶńf;vdcֿ~gޱ{U5sl 3267jU|{n5I>& r=!c\Ògr1dY.'s8. f‰%Vԍ,kƶ7D2q&J.@K@}$| 7ȥ9f} whn⊞GGJL_,OGЋW\ҐOTIg 8B]"b*IMV4~S>|WAQȕl =r1Dn+/1Z:Tꊯv).߇aH `iENi JcaM0a_3"Y٬)t/BX8 yf;H1y=ϥqX9HT BH';?~ EEM: #wsjH"Fh<9ZA?y !U?خӾx=gj4N~ܲyZd̄E,íf sV+@9k,iHb 01MLLR~NkQf(nRiS p+;@>P'tfb܂~vV*SZA?KejOXǻ#TLGTUeʟ^ZhLW+zZ^I{׬=-"Ñ[̩{c; "\%U-WoİZSpsij4X>%)s 3mRa,aI3p8Ǚ,o|ujJfcFiJX%*0;4 ` QQɾqBS"ܪCéiooG"k\]cTE,`lf rRc?מJeu5hI֖ۡ? d9[vֶ#eu8 a"h⿹by?,΀U02*0nw8&LLL蠥|!D pݦ Y+3NΕ‰BV48IAn?א 嚊` ZWkKLkR_Z.ѧ?wڪʪF[U Ae߅XwGAn5_I3':ҕjr"{})i,-Jyh+H: 5CÌFVDKgNS6&4;NqW7á(Iɇ'rȉBs5s\zIZie^u.3%|w@; [ 8MLPTJx]."j La;u_پ_{ti ZǜssIc3{ 5K2͸վsCI@>%14srp$IrD"Q!pXQJXg7*Sz QgTC(+"giiAјꝽ$1yfp0{N'Sk& ./PJ1|tgQ)UA>9퍄 3_;=kZO+ VNNF;^]"*4td@\rA]CʰV0D$sMBQ((hQJD vȲ(Ltwhئ3썴MwʈalV\ƘQEY@U` 4;$'GM$?OITEFWIr:"LN(ͩ]"ATUG>#n]iY,k}SrWkJSa>QajRړѳ/wzٺ1wΜd ]ڏ7=$HVe"e{M@DX7: TYAKH$RNEK;D4-T(V?\^ƙ,gv eC  h)1Ҙ,>%Nà;a:Z8qv4f7dOA+/JԨؤE$cOFqI ^zQ3ݤ2EcԞ~Zlk7#{[g衭3muU{(G22 L5zncuR;JM+*E].Ny7u1Dɾn,d2(֝* 'j0,8 "$"'ibIsiAK5iZ9-'Ix~E|cztJAduk &(*k@Rx-tfdFPE̞tĬ8w;hMp`CÀD Jw+.ס[xXQ 1qp:Č z0NDa\ɾ~ 2;uĜ+2C!$+ I"#≂) 6n;) $po=P*K7n] "R-)U/~W_SoIHhWLYVrFQhpyu9o\T>,p ;ǀ$XJD +%*) DӈbCuk/0oM28z1TX.|S:N>)-#Csx9ؽ0fu zR-O~s--"hJLv8ȄU\aμg}XcN2SbUhƔK+ 'T:s=͝;k˒d6!jP"2*CkN_{2~lu Vp̾VWB w⼚9 ۸FiܶT:JZJOև% NI1ipHD@\P)1XÌ: ir%XpR[֝J!AŸBTrrGH̀OGLBD}~[Akf,7e& ~@&w2Z-V O*nU jf2rR*4NS(re)1SZG :̔ 'GENV '/esݡ .lV+΃|؆N$AH x1<-:ԺNz.&[`ILRNן6ǭV0bQ0&9'$mݨ>,IhlQJf+V"ddvh: J‰%~Xs̎*XCuю/|:|q.+m](kWW- 'z_k]=(Ă sQ̃ZZ^@2Y-q@o?n&Ԇ.nuL 9@>`$M\& NEs*uQICޒN.:3K0GevԃX8l@<4x9˓M $ ȋ'k3x-7ԣ-gE 5 ]fr+ ruyq1VG $fO ;7viLr@$@UAud ‰Zs%+avh?qF ]LP7{K~WWbl-YUTSꍇ>{yZDs;,@eNIni+bTl.݂[3.l/92z'yЇP(85uh)rDSNU*̎~C?pV rKuzZU .MvP XIAr RLuݧr2fcaˍ&[ tZrR3}7)_-1nz-ŭI?1Lr> \?#y S &JMƔB`Gy8W4bվR`_!_@v*[tT{4nYU~p8irLꓱ^k>t5ԘڤRuj .]!X@ X,cUE5_E?!1A+8:#:N4G6aRߦm1LUt:DDU+<8GjbW65̙EO,QOݥ Z3oN=`Ͳ{[`zV ak爙LU{bf[ <"v"H Icؓ6GD ( *C%Yr=d2{JR%BUʼnKZ|5%ƒ6U{Lfeа^Rdnpf4E]u* m);{V gP)D0 )qiQ N3y_bVYAAwDtU)s\d2T*e᪊/, LO jcs{[؃*Yp`LSWx B[馻Ѷٲ4ݶ(pKYwqm$x2?4=%zn Ps H3yWYN,q*:tuiGc>'|G':3E|I6OK9$¦nh|>כNiEAsYul(Jys4qܚ'ոUr`ORbJ;1W˷RbIJLJ3ٚfax\_$j_*K_k$<IR[|;9ѸcN{2oVw?ACN꽥/M(F9G\h9w[MV7a7tHp cE"D^t*P28 s.%M#zZKj`:!Wz3QؠUN*} #X=Z ?\`ȨRA!e=jI?[0wtNbe[[\V=(Gtd;PVm$xmmꉟN᪗@+ 8 ֬Ѵ?6&@(F&;s]x3[m 6bgOV#ݘBKc%+u88"yk>lcUV(2XV4nKn)hPM3=\S((-4 nqc¼5ԘtM*٠Le"e$dEKo_z$UU4JقǓ[f!i%T& n[l-4DuGdY^^j}߯=gXt TZE[٭U`k/gI5&CkQN[(bXujQG4xfq=MMhw*dN$9ctEIWm2a/=m(Փ}m)mĭځ e ^;[ߪų e M2]ĭR\jc<9N\L@"!2~Q']yM7 ^-v[;9 Bkt.ovz" U'SpK)09B@ƥNI=eƽG}}z^o(yZJc;q&sqME|x1jFI][*^+p X 2NA!:de|`85_%&|%Kl|m*xZ2]Vŕ[܁Y!,vsV;̱,!iFqND!*:m22OK4~dwwꪸ=Z7Y">]u\+rZFaow,p:mQ:Fq NO0St:h1RI#9okRڠUxB2t-zd2s+,螢VvFon5!Up"8plxocjK5Q{a͵AÑ+8Qj;:&H*j7nzv݊_V= ܝv ۄ[$nB*gc-MDL۞sLZs rM$I fV3[$K<-Z*7vت7O ~'*!*"KdkMp9k8g$_#MwyAhւVL!`5;Ȑ"V:&mVл!Dhi,z 0TXFD ~?%al h 9!G m堥{yZ큠Ln L*rNpFpݭ,`&S\Wk Ύa2-~U46nJ~f9h<37imJnn@\]}h53g_uVp۸UCH5tւVZĶ* SW.9zA~ ]{5^gckSOztk3m v' 41/ j*nq1$})Oʰ,!!(4TU趑%?pƞZ.?қX>j4CH]VH_,]Ϧ>V~ϭmVՀӡ[h/ndu9SB"xM)^H>cO+K \w7lP& LNPD0 /H)Ռsdkw)ɖZ2(=676xj/gL~cnTewfl~(\5|Տ˲_kqe; B*Yhq9ˈweD]WuQ-WSO% 08qER?Ia Slf2sk] Fܪd.\M u,=j쀙ƭR[ V叩XC\p9dU&b7/Xz'$;uV8z-Zo|c޽D$ gAYRbP$) $9 Pn uZ5K(uF- q Asܪ}fJUk_00$:׹H)NGob~[-Ev?я/}U٬5 !B8 upBxIC &ܲϫz94lR][L݃/X,_?I`s]k\KV+qKXm/ .swjUDyxP?qgy7(hDgyޫrp||֮b#dYʛaB"PYI4"j:a-nnFU̕:l*ZiprT5 jp ͦ2utVKN,A*6bU-4zȭ1c<9Վ٠յvܹ]vk?t*ox_<0:foL&#(4TB8u]3aa>"#bռ8HXpl%+ R˭jq˪6 &dTf` 5'jF-f^0-aV '?\nҾA6͏[t2}=-C4t9'tF}ᑑ_}MYYf2Q. 0'" i" SLL'*!@ ZB- ]޺ wi,6n5(WT1qLtM#;4V o喛okAg|9o9 fDܟ42:~;v(\J ,!/QKԋ0 Hk@ Wq*YunMo3n5 Wnc@)4]Bt.u= YfV,~ᇯ [^5"β|ƀ$QZV _sͧ}҉' Z$!:ȣ8췼|$Ln޼yhxx>p4ѽ"Bf]/s02p+ %"Sw*~?< j R\jINvp٠5qg~{/쮥K#k[bt*F0Dir KWlBn5;IjFu7+@$!< B*z|>l:TnasKdH$295Қ5۶lپk+kLMN3L&|&,`r9tMr{5Qg {b)^OfB]pƪ:@gƒLq\N{+A5өeŽ=dcVڸa}6_FEыJiHԵDg7mڔ{A=I4)j*&/ׄzT7 ?Afװ^z)_*K{ Z]xŋ>,&v92:r7֯9xp׎dRWi{aBkj6UU5Hh~MKo=@ e-][iv\_[%z%a! jRk_WHj7{P9m}CW; Zǥ3pٻ%+ʁ7ƾ^Xjڵӑp6ՙl62"˾@G_87f5F9j'zHs^<d0V:[e)ؒ3^j/휐Iw~>)[-{lhE kR={^y饑U+Wnݼ9LF#EQ=찇>uj}-[('U!ICIxAJVcB -Ŷ﷎[hA2rQt7< Ng;C?/?db{/A˶t:N>Ofmb;w|ᑑ[se!=}̒%=g~xltT u2197|QV9&n-ŸvR-qUOKSh_xiSkOůK.|lв5E C ^)ł}}PwgyP.2 s@ C @I! awCJgnu*|q65$LO)=>=$plвb$)\wC.{BgzoꚅyaV'v&/D"1) 5IЅ e˞ B!xKoۛ ZͰI/H&&W\u;w~}dz:+ˬF #"b҅9 Iy*D}OVKBc-4* %CˈbG7P9}^nm]g>.?O05==<<|pltŊׯ74md"mENBPSP'X ]^IBHxa6a[][h'M62 +8YhTĖ׺fm]mP( /:ܱch+X~ttthh(Nk"',KD}@nY# k#9 ƭvS Ѫ0|9-.*>fy-M~/|{7A˶3̛`<|3)"^M6Fщ 5ѡ"%a7 @^}!~HD&q*X̶-J!JBƞzb7V_^3-zۄ%K[7ݔHmҋ/~];vRD"E%I*Y3aÀr0!B,I ^"' 8/ϬUWw^U-Uhߪ[&d3O{'~BA{۠e۬2 {*X$ۼe>;:>vڽw+)KVȄNN E?~D !3[Ե+_sT1s A p9h/~yc Zj'hܹs=fݲݻwtll֭Ƿmz`xX{H˄02 7"1H9>*rtA7ˈhK,r6[h7 jrT)NzVsccOD/{E۠e!6$iG/>s򖛮.Noڼyh?쳓E06Xk’In@H B A8{ӼY0M] 6£ԌT'W?T8ZW"Dկ> -?p؛ ZqOӛNӛ.{;k}cƕ??555==J&KLya !B$r\Dp(d%nJW`tZWU/mw70{ڠem vKd2X,6:>楗m߾u۶W׬Ft: i04fч\ E$#Q7n5Ze Е%\m-`=-‹kR|EjmU4500000pq㣣#\r-ٰn]"ea$ Ik"bD"᧪u0*%z:C)q(`T Rb}?}7r^6hf[~⣏>s߳{Ȋ+6o4<bOv5cO~;c$lвͶN" .eE9p͛{ѱ7֯,k"?EN~8<o"@ڑܲUTxTr"A OPFy0lвͶܒ~~0رcddd->Į;'ǑOH:!&'rc{9*<Zs}MA6ۺ.I'x҉'^|E}druw^/Z511qpd$H,aj. %'_p3xuвdڨRS\̵كGCǞݷ\k-lRss?$˩Tj:{aժwoܼyK/MOObt20"(,d2W^#>_x*܂BjZ"{]w%ģ7? sׅ Z k@C d*559926j[nݱch4r:9a$e2fVUU`(t7;Ν Gsуs{jqӸ.пQIhX3k}}E  -lIz< ,Xpi1/߶e˞}oݚJ3G/~^+ַ.[K_9K, @I 5q KGU3jj9-G?5/Go{ . Z6OH۠em !\.W|G/~Қ0͚ ,$¹fKg0U\j){rv+1gG>⣏g Zf[3zaYEQ9 5a28arB@!HAAeݏ[8ŕ>*Wb̀IBTzƍ=x)jmVdGu??ݽ{|jj=Ė͛Gb\VWHI3M p2y@~Ha<$ EY!:V…樐UJE U!b"ScO9i$A6l+7q1sYD*qƑذa415oh$Ua9 Qbr|>H$@&7Zֹ.4MuJ)\1UqTO,va Ϸg Zf[mygy&uW4Wwٳvݺ+WFɉd2iL0]#GG@A!!A~* ZU},ZT.InsOZ: {ڠem5fDr]K/@:c/={6m5xYTghVijJsˮZNy'aA{_y;OeۿwW\u˖CCvHRZLǰ"Lz&LC|  I3ZB BWEߗc[۠emѼs͝{g+w6Zr嶭[ie^%J( !$| aiڊ[h6TBV[zpW_Kpe|=lв6:mNɱ䨣un1No߹^?4;oD"HE,kgp '"aX!rg*IC 4Ԣ&AG.߉{eK96hfm3k.t~ivX,o޺^7955=5(QB o^#T1H/gu$@+bL& z#ﳟ Zfm&d2Lnܲeڵ{_z;d2`f4LA46 rR+rVG@"Z̬yZ:hw_~.6hfm6EU''&"76lxe͚cʲ( )O(PЙr !DA>!iiF٬^bmƠ ZfmMZ:ٳgk˪ܴq81 z=&m5z(u rZ̬5RUzO}Y=A6l%7l<86vZyϞ=X,W\F/D w4<#ޛnQ؁Al6,7UUeYF_yoŠhtb|\/j&I!r8,bD"!I҅^G=SmIJA6ldԪvk_}5HR)EK ToQ8v4.RH*8W 9tPZD/|hy_~ o ! 2oj$6-^:<,cq$[.b p[g|4MQUU]e.MSCh/d6{N!Zp Z Zhhh Z Z ZhhhFúdplI/m.+|s ;Tnj#GRzG挙mlol.9(Wkt =,'vUEЪ||@\|YbG/[xn ;l{@FQ+$E.#'399>yMns}olTD.B`@ 03qr>:>Ŵg@,0`PݨuNJȍ?u@2hTxe> R^{') LR{r(!.ydeXl$c7 Z>p)wٞsAe{@AP92Nh݈LGׯR?,L$f yжѸ/` d.p9L`rWllV;#aHd"yGC&q)>`p0bp^)Y[w>O$23Y ~aD7 3UG(w|$4aޭpi]K5uc6q}c+'ddԗPJ&M0md{j ~i|*Ю BAIȅq9JV0[^Ok`~͛k ccZL\ zSߪ0F #53Mam9R,W~?kOwg.j*Ls,؝eK,& v$!Zp_رA{w{՗%\h'v2lj\L|,OvWx?c? 5knZWWxݗ %tEXtdate:create2017-07-27T22:20:25+02:00%tEXtdate:modify2017-07-27T22:20:25+02:00nLIENDB`pybik-3.0/data/icons/pybik-128.png0000644000175000017500000003646313157201177017040 0ustar barccbarcc00000000000000PNG  IHDR>agAMA a cHRMz&u0`:pQ< oFFs m O pHYs+tIMEv^ vpAgkvbKGDC;IDATxy$Gu-|nDf=ݳ/ҌF#m,av 6泱fF!lcx*HB.4ZH}rU]U]~x*3Ĺ޸&pxqxqxqxAמ~gNK j4Ɨy?>Fwy!@tx+xg [gعa[ɸ^ad~!׭:4kV3V=CA΁eO?;Xy4 6ѫoKN̵/P}ڣxÀ B@I& 9yb(# 0ɄXv-4 䉱4 ǐB>P4dk,0$kt B%&56 P@UU3!V$x U| gfȨw_~?W~4h~#{a߇KL%n̳kNcFul&8 1X 42AXOsDIc8S&.200rSGbsN i8{~  UiՐQ w)zoqٟo8/4wJqR_8Mf)]Z& 8^б-g٘Q -v&CLVpq\PcB, C*c7?FK ǯ7Y%"ܯhOK|[x,f2GGyLFRԷGNpfO|wwܪUW ``#``$^1Xf;).* < T0AK™phGzfeG:hbqwxb>ͅ?ÑĀy N=X%23 Vrv,duϔD-^D:C'@ydg1Z?{'' ie y f034k 3,ceH(.>V >;mϲ8N 㛣)Df[S 2^MbT>Ul V2a]v;$na1^Pwk'XċaCցq7&kNpY?H)z0Nb/9/))r1Sa <@J3jQa XCj CkdF X`*^ΡgSE4;M7!DsD դ*IMh:GySt6 "96 f(? ֑ H\C>p 'BY+y!k vJQ.kLMibLNjLM1c &H$a rk5zi"p=f& wHI6Vm$ɉSK,18S8_(% 1O֙ (@@V\ל^mW&`N|VH~O{5l\6m?)(ݰ+ad M _ /M;kh4*\fLOkLN1&SSk058pu]LLPFeVZ+h)udvQ`.aM 1&OLjqR/A]L2 -to،zTt&4 Z q\ Q:RpB0eYh0Ze|&I6i6itꎝ,p2ppPYwD 3fto(,\Ṏk۞iABw2f !pҠc[i P"L,??Z}q2933HSӌr*UD0Z5֮]fCk*BTτ!TF B5rQ`0;X]. Y>p4q(WX |Ǯ#?_5a <4pĉeEIi:}٦H~hg) +c;e"#۟Q-{9֮5093Ih pA IA@TE(3JE薀Z e>qV(V`!;3tlZ a`a tb;vW׫ qh-Ҡ<"DSkW-6` dr61q 0Axn&Rff"-Reenu<(4tHc*/GXCh&~aܡepT߾0t"ѭHҡMJ- r, qI;YHȈ8cVC: @mݲ .봽f@&T3e\jǡHfa;Qqܑ}o3Hg: sky# {z+W{,@A%kxӠ9LBD0L0 d\(~4@~Gᩧ"W?DNb 0jb!^ X{V{k9"/ab]vQWX 3°Vc^^0 4fcpnSA"W0Ë8N0b{V/i\BZ5l}+ @4qĥ!= + dO W}X2*,ᄍ#-ݏ7|{ c؞hh78}>Ft-B#T!z-}>{MRliPB~J4%>QEaXép026\q|r|7X.ѣs|ǡ5 q`& TCv!^{IĀ45q{}w4g7U{, 4r0da_)ئGy?DYiq~r 2X%/fԪv}Nҕ+1dI8, XM@F<&}n*f١`={t^ֺ/2D1RB(Vb a>7cx鹹v 62z!眍"k40KùsMI!A#ϝA- ;okJutm@a{ =cC+./̶ˉ PU4nقZvETs| BNDP#2H=y*rdtB ҽ(%>vԿA,Eefl>JE%p:#%BFա6l[/׮O|oS!Ӻ,gm"PD+-^B<^ SnژGWk;B6H& >r(F2FFu]z;qƍ0S?Lld ^ebjWXBbbBT" E;=(4C@;L`p@E`~8uLsCrDPfygdpnG 2j j[!jfjq3h*i)PKHL,1bE518V,) VW&E|3󃚂kK;̵1a"(,J!g64.<'O|` 0q].,3eAO:tL<i2M5:.PqνL%t&8 `YDd`b&V2fuk ۣV ?q7s, $)ih_MZ`΍ B(;^>1\!p\! Y}wV&v 1R p`xHqX5E\7_7 LF4%zb| کreK  dޮ>/a{ f8Hsz}Cͩ h+H`o@? "q{FtBF\7J3N,5+`UU-bJxz*cP(Kp/;nh& a4?L&J1HaF)az=@sWۤH\%c&-rի#Z%1=1kePC)^ -@(vTsG `H)q1EԶf2e{^h_]N:gLTv3@Q$0ھ_Čpe&%Ĩ0rbn{66˳TJG̳RJXD>o4Ld\E  8'e:AfpBj ?sLg'l7 {}XFo}p4YJw&Ȩ?WUǡ`Ty.|qLobkq~rg6~T;h \־B]z+ך9A(,m_i z}C<tY@zŸt5\%2z%.A@D>4pՇ3m 2?^PQ/|. j߮_S?fPmq|@>ruCsoj& ?)}zCS4:(íWUaЏMC9/j-⼳s{ "RTen`-{[79f~؜"x/59f;zU]}&r!D!X 45ۛ)0iy=)& J!b cU! Am^?# #^xj@` -)~tCVh54 R+a{I0>]L\YQOz C".)g8fup'/C+,ˊrZF6}K D nڠ;=ù=\Y.^;&i:bfV 8щBsBa)^\_~  E=l !p,|׹qyh3W zs%PԡA8M t}4E}#&aVG .r {{twe8rg5|ll@XD0d" @Ӟze%l&KsGp@` tB 3V)cu8d'-t9@W BO_k&f)^c` tR\ aʹMeF 4 ݻCce<𨏍 Er" g9K=z|J,X5ݞ6Q vHٸIn?UAt_%l1^ LECwXD#bӱV }UV@8eyekwd<ݒ)\}NߛM$óєxyԮDe!D{ Ϗ?}fƟi(vbĨYǯ ?xx8rr:~h ²?DGA9 Y0F(Ar8J" J&1zWa]x7LDi⎝ʎFn'vMz`ȴja nOuo<4J kĵXHk9$R0JVuwǙ>  #( %vˆq6w5\tlw+:/#/kOnҥn"3;K8 EwX; o]ƫ\S5(1]! Q ε.\k DlBtATC_\[4 % E$@*bW$P>_yeŪUF8cTjv}>X6WcuA*dr c7^3gh[뀪B0碤 Diѳ :f`O!"pal #b Aѿn&h{̜NA tN/0Bw)rgC|9Lji W[+PVX5 0Rk"@*e2KU7bPT ζD+ҀبT*lD&DH0bbMwLEIP)A*:A@MQ>QmEv+%"5#X)VJz D!P%e;*(,X+ 4#FLj#Zq!ZL=l);ĹR@ZFN(J% Y"<&[$):3"q72&'a3> ~t "R Z^_GTϥ@5B֨͜rznmf$  X(Qo@a3c@xVXMG~!ܲ숼iȬ(a KM` ǂ3l%ΐ^]!NxEiR}]3/ad9AhA߮sf`q*zbdU+P04ԛ@ Id, DV-G9=r$̂iJ :l7{p> @<8!D)i׿[\3.:'}/㜁\0z)e~]#EZ|X,E `p-%zq>ƈ$`PT,2 Ȏ&_^1jUPild4" 攨l< Q}ݻB(R30zJT5ݖ oןOn*6y3aYC c%i $@4ii;zvm$ ,kBh{T#)l 71VypWiZq u{>F7aĠ0 #F-F"I9D#M٩bwY2~lNq<ͽ ҅Ϳ>g< 6첦9Z6OiYxo?Y00|@FZ( "jqx{ځ:|aI9V-JF$v3q0.Դ/㾇}2w0^}q% =gW:1O 9@&Chaͳ}TS0@=k;1֯0&QdJ ,:A#pȄLi-a|lDgu]u̒5aLfJ S1WO ]f; AGV -g$6 A8]~hD8L2af-aHV£=5o4RqYX(w`}ڟ'n=Q%6VUf ؔCe7̾;&eAx)K?J@GyyYڀ OE',IvNiu =Y/0ȈZȥ(V30R CEѷQtڌiǟm}H?m810ڱ#4¨" 9*wZ Hz*;z+ \ԲfdQ\`׬MyԢfmo_O=_MX10j@;=qP ]ŭ&@ .ڝ# z n63TF\‰PU_Զ/|c <(Vf)H} r߬ PHH sPm`٬ f*oM#W]skP9k42NzUVq4 }K@z ĝ.I?qV"k(߫n5o_by 43U<~,J%VBA1 @11 ?b{~z:{yPz}x` :=#rH ѬHPqAc n "ّoH4ꛏШ7@9zvޏouQgmˢ`^ dbѱhqs +!Fk1RuTuDk s`, x&h34r7?wVxx.Ƽ}zttmtB _$d\ in#T+?bw{2AG9`fm?j tf!_z7~jGo>_X3yիL~纟}絗s|ifK=Qjwxz+g*:1Q9)GuO&dZ 6n-H}A0C:R}QyVxaB.blgvOn+>7=g?o$^jE `)'yunqf5Tp|txr`蓐Gje##Q(y#5ڏ Aw8 g+rF7n/sb<hޔǶ?L+>K^roTM+3eH9T6Y ^" FhDB8 Hl|ӅAPUfSf/F}˖1c7i2r APT{^La$[2>* J[ȟ%{T.)EA|Kp&k+5o K=v^pwtL\~)|oS˃L[}(`a1a0ZvGǞ^JqL>$ R3XS7@g0n[Gk{^JtO}6̼}lx鏷rܳ{7B[}O9>0!G)#ǚL3w?YYE HGu ^Go=Wa %n ow?\o+33+wlKH'X-J4L&NS6H+SĿ:JÙahG ػ_?Y]+}%~KG0dxم/7vnzu#5'0VbnA., ?m+e@9y4C( U g&ff\{}>n#[~Oo+Oo.pWwӃޛ. [?"KoV cDb (#q SqO!f׼̩{A,_:sߞ=cW:)f~/]ۇ~_=,N|}UIL6<)hLiE}npX?|_~KCo^Ps_rZIiثB[dQh,QA E~XŸ ]l(qdzO^a6 \p޹8X}oDz+,XɌJn:~cCq3+_:qG6}6moqxqx?+ P%tEXtdate:create2017-07-27T22:20:25+02:00%tEXtdate:modify2017-07-27T22:20:25+02:00nLIENDB`pybik-3.0/data/icons/pybik-256.png0000644000175000017500000010704713157201177017037 0ustar barccbarcc00000000000000PNG  IHDR\rfgAMA a cHRMz&u0`:pQ< oFFso# pHYs+tIMEv^ vpAgKRbKGDCIDATxwdWy&]{:MH3  iv0y&g’ ؂{^c>I!$4AqFMު[{zp߯ԣ{o{< ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` Ʀ4gp07݂'.4vʼn3K 彷nVm)&F[ ` /1+)խ㇞y\k\7"*Th+Pr|zttr'Ԣ54{\rjKarǎ#*#k^Jg8P<+f6øͿû;-'0[ʿ|]~`?l  0 A`AAg!-GIi۞_E,VDXV ʊ-%GG\Il츋)r"UnfSgﵙ)1?%WӅɉ\;[̽|SewΛ~<FoC &>V b1eضRU+*B ;T:w"ˉPnhjj9Ow]pA㧊/ʗ]BZq?5xvcCwԛjcZzɜ[`R "0P>CՀ A4բ܇D)!c?{j>gvW [9=}Xnd\=Qzv>@26(ɷ&쏼 WulcSu\E{!0:}?&x!&0 ARf>~vGv٥sX P>+(vl'' J|bxx1W,.$rsbix;BQOϿEձڿ_xOb `wG.-ܾRmέ\>ahX=Aا?чcEpz/i1 0n\ I@Ϭ e;muJ .Bb8C,;]LO,:zlQg2=?{xTrO~PⱧ=h obgx/UQh=7fzpg{ij,D'*RA(C>ʀ *pMXJGK˶=֖UTd;E'GGs]Uũ\D3Nm'/ݻ1qܿ?|1W޶7eXm+n~*8[;cbH  87`}ZxD ,j+9G7+Ha qj9&k{ϑiBVlixd=mx\s,PfR~Q%܉\n/P,xHΜ{_S+r8/aA$ݱu K/!8΃2e\<T0d# FDabd߇#A@ Aw+ǘK|_K<&p eqP842M4p%%N3Dv_X̽ L&=fIlG)eTd*]t.\/iaN S'[=оťTz~t񜇿c|1T1ȸű91/OWT cs"0c` a #k:)6}~A50Ogv70|D'³Ha50j‚@ڋfT=f*Q2U,vr)92XVsύ*酥{ ".Jӗ^f[|;׮ko.~ۻỏW wn+/sXA^p͌^*d l* T@($js*[H4 Tܯ%dJ"`/iL>.﹙^ KvҐ}vg@ hî*UdQIXTV&ťEJrc3ϝ8b{]~0oNL<}wUKnO$̍בÀae 5~,$ 5c'%1#_HF( []`6:l@"ȑ/R b.'&&'v|{џ{~僸;es[m[]7[~5v^(ie#lyRb8J b]%r莰nrG~uG0̢HSI4#N ? pq^pΆ {ã,OG?[/4~S;pJsgKWL?ǙiCY7>ٓGqWHJv؅0 8@M ŊFTȶht$ `s=:1!W ۄ?K ?%&|U[ȁjQpdC߾kڮVK_W2<ץym˷UsڝcM}6gdY(S 0BHFqq E@×;UUabg)@<$ W(v2g^{Ё'd©ѕ;>\| 4-g%4A7wNݢyf߿ xK ;y" 6 5 (0 g8  @+o\XZ>xM2M7ԛ$zN0[¿ 6|CJݻwS z {ǭr۹#hvGĭN1@~Z`g/ &!,>g蹗@Ə?o7Wqt׹b+_I_b;MӾϳ9(0(/F_N/Ij#,Hm5p/X6=׎M &|(v7eꝭ* |+bF Nq;5R!+uGVJ*.EJ-( e7"vrPdH~iN3.,juշvOƫ\w(~`ǻ>ҫhgd2^{˗^ݩܲwۢP]&ƩdfMHlGC@A>@Rr," c(\)(X)[ԸJ`QDb mD=0f++~upN:RM߻ O]jvQBTţb0J8Y4"s&  V}k^Z\vvT0w#_Eyؖ~ꎭK3KeX=5R*R$ÏQѪPĪ|$&d0$tPc-.HG$<%j/"7XqCr--zy?/G{7,$X0BvQzwK4U6 k}Z\Km~l`io8{ ߄w׼>;ٿlӟcSuo_۷V mskod1V*Z( 8ĽZ4b "xJ}2Lё>tA.Hod;U Z=f"4#+~x9b"n>u6vpןmېdpA(e?9j"kL'sqoo?\{s_)l[jr̪jVz%m*%"ML`r| *,z0J\S"tEʑ<'|5a3@XP `BU|(H/f𿳂OG ]N<WvݗRbll |pUXq>?ů"ͤ_PjGYp "hkNfwGITۮrsi/aQ$nQY:&' dpI,-i,-1r9S5N~.h,.j,5 Ejw 0!!! @"ؚrϦ^Eddya6",1% s,p"fl2|<(&%;YU0LgU XRbrrZk,,,@kCu8˼'hݘ"Atdqd luc|u*\X3BP8}Zc!/1EJ "HZ ,aWP<̠{02ဲD̨"%*"f|En ?{l×vؾ.H]>]p _$ 0 bؽ{7~P0N* u(A|}>{g?_=Ke5 1RC-ۛE KǨV2P`,-i,,j>(Erـ&u a]Sְ, [nɓ'O@ JAQefn&ډC-"&c$*B37֣٭*OTOc zi]iy=ѣ> $#WKl @1Yu!8~@vd(1+wnYB HF'yjeo@ZaIu&V[5JH8j@&xQV199 )e[WC)UgQFP`Ɖ(Bi1DM4DG/k1e>l>#g:Ʉ/*Ӟƭ #GN^jL}5xhaY늾$ʵ7^Qr }ks۷òvJeNئeYDyY-$XKǀiP2 P1JQ*1yK^XX)y>l6~eAkR*`%ӊD3HD"&Ÿh9zDLL4 ßƋ HxȪԲ"SMQe O7@Zc`ldTgRQuߡcOz&AX12Y݇˩0~-<#511Ƹr BQRe6y`0Վ$0bE8نM&6 ݎ8 0h)lqk ?4cL[Zx *=An(+0Dw.ro>3RV\uJ$};}Ì*pc @T9BcgY4D4sMP7;%>bx6'+INz;P[: (*#GԾ!0R&!2C i:Xj)B =)B,|WKTW]-T^2>HPx" \U14*|7{sxb˷ʕ{b6}n@cT3&j24_Idj\ Eu ;*XF 8Nt%$BA"P,PkIUuRZ5e@BkT*8p@/%;da:3x͍Q9$ڮ#{:W}wFiѰ[æ+/&ɮA$JTчg]bo+e fkڀ:Xn(Qp]V97^nF0nG&KFcSVKUBh gU^j|WD{Jw"j!W/=3.WEER.v nM,͇\nup-36GJ !!MSϭy-@`?_8zLTְm5T*U3U˒5jg}u6"bFsu!ѡnGU@pU]y#m[{v|n\.qޫ hVa~NeŬbjn {58LRY(j @)V:>*@IB"f <?WV:+!h͈\xeT-$> |{CrD*C !p'p~w娿L}GTbTmu)R%])b P"jȾfEE `|ڪ/Rp.<#ka`0~W<19V:vؚg__E_pނ2*Q? [\AP x>qcet|J&e'k6.vQyF.WEFnIP`K)ܪKH)őHes&ځD l~b]rhWBv-Z b!ڼ+aY@2a*QpR>s 8}g j Rv0y $S@2%0:̵ /UX j9E~ ŒBbK%h "d±BR-!߇_ fڀDFRAPh 2X$f:Z{jea(O`c)% LatdT)2oL>E5ZOIY>ˀL{!xOãV P`QR)r,1r9`1n#rplq 1uCJT*wfT*{P,kW⓰/j2n P(y>*l37>9Y\6QQVC&<^oi["fڀ?N]]2|ꕀ^À †ٕ OTw>0:1!D/y"7.ɻ?b'@mrD]&l`ֺ6߸S ( 4kUP04_^霁 1ݑgVy'~y؁[rKe`/Y[V >"2r;"u@ĺ:}\~-7Yފ_"7H+U $I RrԻF>_xE  pֹ2~LPnӏzxDڈ}-G[mj/W*zIpbjpk[0f6kL3-zAёBݏ(l{u)(K@.8I'K{-g>ܪ]-U4\ 5{`<4'T.9-z:~=mL@^˩6Zs_Vc]23V@ dDGާħ~gFF{NRjUug,- $b ҜGXYhCn6 5uS0 |< b4Tt.nӛP6[p{8F@k0[?,N@@=$7Zh]4߉@iC}ԩ߼]wȚ?*\Qm Yx{ Քb; /܆YonhD}Xm.@j_hCk_aW}Y7X,|P;IjY@"QWe1M ,pK1 suzoٺzɄ8`~H/݇xI!$%'w2(7Y"BDFvd9 PX?.fumM ͝K^:~Zvak;Hs ADM@ӻ % HcЀuɷ}>%)љ,xSb~05ۻvIk+g#_PDtZΫ;5䍮*lI2vj݃@mS'΀Hl",/}SJ >x%>~3s?r|]XhY A$ P e֍kwieoo1!$^ЗRsLZRs7 B=}bj▚Sy? J{}=Y@=M6lg`kp%X(@kZl+t; snkj€}~}J?yoGŶ]q\qix hXաn6k]X3}E8 X"^.tM4֛dʴnl`Z0nz5~5g9>. =o bM WNԍ?xX$՝^}-}kf/.T+ϖ+UIA XJ@)@+,J7\A6-4k5@ԟ]BxaA _lv[Mc14幺B;\,]ױ+Պed)D&P,h M hiYR*0/ t\L3:Z{@î]hT%tN\fඛwcr?w^O}Ӱb1bŖ+4ٜ, 0Ӽ? `6lxSUl&ϗXJ(v\GGHe!u_Zjok"wa~h~l/d|hWOUm07XRqfp] Og@7o ]ujyk_amFZh75ZkfYq. t/eәHƩ4~=LG /Ʒt&]pWt;y@`hM.w<^sGz|~DsrNµ]x6 vU:12C8'111+T ̈'%fҿn B:ɨT6#X20n Q@*k+v'+пРRƛƭ԰ t?*A8rb,~e ##bE͉מ{:%; d`-;3n7d\a*]F&8p- TͥXxsHJ}'~"1 t>W(+EG>c\"}OL}EAOX }|8d;V@jKqmg`;k-o B`$`!+h`IB"F%c mPiSܗv`}LccyKec]Β݁su+;3U81IqsP4+H "H@* H;h.Od0>"`Y@2AkęD眾ͼ@"KתP 0T!K@"I:v;kuֽf~=G(hd-1D]TQ$j g{^C̰,B*>kE鹣ow/yq-pࠇymff$FF2B,N( s+-{23, \z=֌J]'A0>z'Js(B(@æ  #^~2F?eG\xNhZwd\pK^'gϻO|$KJx\  LLlضUb~t`ũp&, 崽F,}9pG**|T P$ᗑ?XVڮ-oW,hJ $❻J!*"\{x[ߊO~ʫ~ߎSq]B,pzԳ&Y8d3[D8L LNJ  φℊ .@( uٸ 3ionz)* z&"hvbZX;+IHh#mvJ+Ҳ6z@"ǸMTL9|_D"< 83&Uz-q )“O ,D#fIl0?/1=-19!&R"V,c BMguudD+DZXVR{.yByk$ڶ/#mj9s wޚ6ɤa%E]\&lvo/q9~g?Rڊ{6h4lP('H8 eFF$&f[u^b~^bndl%u U^|]#o@heg;NUy45`5̆@\jmp{Z|eSiJRP){cTmgs»?zw#xZC)uëSW%T|Aq}D-t $Caa s[A2nC NRe7R\|CY \>kRmts-|=d쾊ͦoҩuh: þzRJF0hA*B`)O8r,t)u,DB`hH` L ˼|W {]H\t}"z@QF:Ko w/cUW$MkP eQ4bؔʾtP(8r,-f xԢ )`I z)q?m"ʄŜBHȀ9Adǁ뺑c3^=I Ij ]o]AC7 8cVf1HF2Hd[F8>q\zq|żR\_*! :%A"Yy ޮ)gy&ff7+h}2<87(@,kiQo ĥ%@Rǁy14 )y; LM ]" lHE?\Z 2qelg$J,<Ҹ3T_psE=Z}I*I](\]Qޜ{trm .ArO&peKpIpɼN.5`0˪l@vఒKyV .  ! @*% u^bn{rJ`d4HJ$ c+)ىgк#"1ѓG8g` %aۀy cuNlՊ>0PC 弄yfb'33 /.T xA*f8%[a:߀l@W.1t% UT0kw")e93!V4O(Pʯ1(sB`)/p"p'Bp,@vH`b s5 L P&ǡz](;{37RLza_HECKqq߿Jl$~]ؾ̐5PI&:7\w~_9V6Q@1a(?!h p]aa\FŐH$5_7`6;u]LZ[izB< mY9زEbn$AILLN Ɏ #wb XpmBHB 8u2 PJ'oǨCCv\ `(ݹK5CXCE;މ~xatth15?Uh,SۉK1Їj\`'r5r\RF $ՠ7a6}њH$j|5~28*B`R²qi#pbܜ9=8ӭ PḾRtа'[W` 8u{ TL?3f Ø:r R$+,3S|d(Ta `:_MnOhp)VG 8`Pe`BS"H$H$ANA @JI_{uVDݒv: uZb$k–iYa^s&j2fڶk}l*n@$HlWXXX! djNDPJt 8q,W1svm. TpYXf: 7F|"ROK&BR0a•s6Deԝh1k0BDAJOH Mv-ssF dZezlR7Rlod+[D:wڲX`.EE2B!5fX-kB`b8zpA+ؓU|M[epDK8 WQoi*7P-)t+RTKSPd@4YR4K3kۂC, BXqyoK2j0ؘ! s$7(h@GZ/Ԍ?a Id" a(YTmua Qg V/9aiD)jW0+l^e b"p!R+AlHi]h[5Xd2#&{XE\*DC@҂[YHe-uzlL`jRbf03k*3L LLGiS݋h\w >R!Q|-wL 2 CqUd,kժ.L7v+\u\[_rY{i~uk9H8J6ߟywpeCHOu@YP\;5  8 cjj GE>X ۶mC<<9DځC=?i+Fe`v !fCp3"q d 8X쀵DSG`&(jsm uF]/Ku3M%ZFgN2E2ՕE7H4w ֺCN+i5U clp)RDXCmħ"j+t' $Iqu hS]]XCU.P333 4Z`:$ B 0]],λp- >d&ӭ8 g$srsS}W>JV*ruHy|!ͧp嗫'Ⱦj]5{;gkq a ^c++F7L ސX9ic@d .!8 /գBc WsJ!SfE!fu[H Jm7cʻ`1bc5#BDdMϺ? FL(#Y HE &X IG8}_CATw.EABZC5H$N[Bͬ!Ԭ9t"Fpڊh8N=pq|cĪ@PF.;+Fh1N?/+?_|{/+wUNs@ ;i8WCu;`1|bӲ-2Ej) ;* >`IO] j(BpH .EToh{R]E٬73~cYǨ|qꩻX6Jv'9o|gf29]ɤ\PVe# jܤJQ]6hlȉo'2/qrTW߽U{rD$ $X8f` 0ـ1&lgI69 $ $rLJ?nUuUwuwUi$~Ө+=;|Džfn@t`l93`ړR8wj*. aZ Np"^c#^rpw- "uyMg&'_@GSLLq { @fx7CT^fJn5`+. Lӥ@vIuoR< șDdr5H&b%Ձ҃#@; UtH%nU./xh @ 靃شɯ).D"lټ9 nT!H-!ކ+Pܸτ gr]C4pOȷc3$3 ]HF.Uh<7-˥PUdMSDLi7e\0!@<f#Z5T\~6l5 Qԅs|j֭Q9dwPJ3{ s5BJn PڛjOU@گ.\ܫ앲uߥVWϦKA•<KgGBo7mG EJ bſqo՚]n̹5l G"U,UY.B0k+!_l~iN*Ciy<p\+QR KTL1#?j=` ;gt#( 2[wJC>sgqip$˵ʝhgs˾+9u +܇P/q;EMc& eӇ*D9q(ttWLs!]Ǔb Err49`t â1е&@ͅЈP, XpZWxmY|@L~Ae` }M܍3f[z'1UȂ24 ,KŻ\yK?4-\  L:{CMrwuZPȆuKB//Վ,a%ءj&8JQV3͋ O3 ?Y]El.@HCT@4BuK]? eAQy%k:48@﫮2bם]O߯P jm}^,>]:~ZuX}XB2o%(}.w\"(ױuao?XTq1vDuU}gۋ m?XZ_j$=#ǍITVKYGASTVe>ȳ~rw{Ow+/a PrrfN//Xv-m΀釅qФ'@J8E'0Pr &," y6o!`jB~1`ۖ 3ƌ{6ڲ%ghM:ޔeOK2+yx]@礬*^Gz G5` X&Q n00VIw+1 -dXpb4vayY65@fA^>dqrh^xi >€hl^L$b {L1Z(N|laII0 p+Zj@-g”3p${0-gw {|ZT<#{3r_A{*g 5*0^{1f9gtE;;iaUb4=Ϟ|.~bUVTp YUg`U!t<l}r#?=o7VIܷQ TV?I!| 9)8Nem@i5ڃlhUi,o8G@3eH4H4aiؽbT4G`tx`BPRd0Հ"ɖ@]r :lt/_SBaA@;E@ ~$f6f6?W[S@Ea *ئUOL"5}ći2\Z]`º-]1DnX!E \/ ΁+/'LQaALA  ÐDϘhb<8RL|Ɋ˥l&s EE% "($0pheUqqJ/ŪG"py *pTnYSEF9SB{S籬m8,|3 ☷) @9 DjP[oů0G_iOf0QHPJL@#4F@R`H I')1)lQ]_ȻfQR*( Y3@igp)[ආ_#]!AL9fgpL]ɿSNRpNΡ` w ʾw5z۷3vf8c̎[5sbU RƉm)$@ `xe7CX\bMϥ5 L:d=FA@! /rS̓ے^W^ԍD-FӅ8Br0@әz۹dtp~F"!]a'(ۮ@3 EBȴNk&av-ӊrlZ7~{MoʯU*!}Mn87pJ F%ax<\Ɣ~&xx M'&20} ƐTv<I@%h4ꪴsoa`6d 񧔂4LM‘& .$I %\t\xM\vxܳʉ xHTn(&g 0ZHz>%\$*ac8Dc=o,رua$85' ;-PD"6V 2ܖ\ "@% jY T@.DE@7XMZ1>IAkEV㼂Űks\ܲLEϏ c0 ^ ֕ .I/(B./,a_SQ z~?9wq$TMD M!r`)65 O@$YB(v L@~`>暹y@@3d7DPG69MK+S^72 E^cq6@*` :'32-*(b`#.v_.&h#8vr~m׆Q?P(aZ8 uH:WX`ƀ=C P I6(H\ N7}0L;^7t+tx`r0 Þ, ~3 a'u  0R Oz3thYФp8{sA)ň# *4M-e)0vBDEBBH'@b$,ϝi[)-R 5 A&] PjHԧAE-[u\~,}O3BU9GG @&_``\Ͳ fc!d^yLFgY)_h *LW!04u+pW0 )fTرCD $ klA4- n`4]sJ$ 4fSt':DJ=POC@Cm@8LjGL%~9W( 6 Қ-XLVl'E5hh ,\c&Nԉ$ncrJWwM d5" H2%4(),C ^!(^f-XFƠ;)RJ]à pL..Z$@ |ed@I+4gg`R&"? j1tj i*gt!;-8spWɇF>+PuV bJaɂ}G<#F% #x88b]a(X'-@``z1NuRZ)n2cfxR7J6K Cre?`VrO8*/շ ÿ_tl[-(zoc6?!O:-U^%@Avz$ a:BlPҡA6:xRK!H.ʵ%,e[@}iph7r0-E W289vSpn7~ZIN{2ơbQsPL (1Tgsw]ۡ.q9 pp( Ƶ<|h JE PsVYvL< uW.>B`JVcJ)H |Lb(.^! ىd2Yt C<͛i&{XF'hBCGdyN)d'(B$LUQ?( ړZe9~߃xrSW~w#.kB&B4Bp5:z-~A܄V@wo/U4!TڃqipE|8,lb91DBZ(%mRUQ3"7 )dBHp$%QR?pV^ d݄@~wO q(ZCC+%)1]08TMX"Οdx)cћ+GxȈ,Ğ-1&  V/_pux&pPzq wmT%YJM::̼hFIxJ uls ؋Cetuur BY$[`]bEI…A n$)h'5-±RpU08"NCq$xi7ibL "_`[@I &c/%& #fr~K+Ix %Ǜs9H$8Lhr!Dgfpp\!WBH&eٍږ Lt2B,@t!"C^@8DҜ<~A["W_؅SNULY/(fW jFj=.b"0Z j޼?鴗oŞ-ҜiIUiJhR6z ɏ W^C:x<;u  W6yHRyBX(lp(Mf*u!RPY q.0Jg.Wq}ls:+$|RTEF̈coڬ'SKM1'"4! ZGPZXRϐ?-z#3Nx1h<׿B4-eC3j&_݁"X IA? P=xu@qC0y)`4)MT3 |CMP2@6 "`%/a#"BBP˅p0i_փɇ|h @C^<_tQH2pߌWyBco֥cJy.< x\> ݼ8b1[Z ۠P(ҒEqDIz BSP}FQd5(agխ//_m>!|L*p7k>E{0TW| )?}X7xf$*DPK*+<,|.':E3Z!DL`H&.^W@UUqD?$x`a\1q y4u.|o:{s !O{Zz)DW"|Ae噀_U@A@i%Rc A$2,yBd2H@QeX ]]]0A1\r~1X׊0!˴ h% V+a7MnJ/NUklBIttvsJgn9`vG=neoq#: VMAuڰD)ώRjhD YM^AA.OLeR)q@pY1r9D#fg߀qB=#/ƛ]u Cb@7 9rp I%7hVCp3Clnd/hqʕ{\^cN %@gmŠ%Ϧ wO7u KYǨ DWzzu ˗[6~v*@Ҝqufk\FS=  jڼt=6du&I%zLI]~" $Jl5v=}w>hҠh,m۶㆝YU'׹>9^xk~owës˟4-rYQ|E Yj 91b IWwumߎ6Z GBYJjQ9 `z &@gxjvK rnj{KsSE~ѳp?}vCZ?h4;OYPO\P%`Gp8 X3#Hd=Pg-:晹C"ܥL ɍfr!'P`x߿d{9YL+{W0GK-NVUUS,b];)2cqC?2$ˇͷ\/1 m""^ Po#@.p5M^ї׿}a{ ÚiIv=N RofJ ,[P\d X%e>{5e 4KI@ߚ^tdf3vCׇNkp_'ԩ=x<AX{e5܆ZH ֲxO&Se_ ] ⨕+ zrWGH*~yrCɳu=R8 p,OP>n P}MWC*s`Wk@jHtt)i}iOVl{sa_-ϟt ͦ_k{X(+;C|V%b@@j J6',]ʾ鴯~ڠ>AaBʸVhM~@I6!<>ÀZ0iV9 uGVS ݾtW;,~wø ^Ȫ2u%eE4恀5s8/`B,^G{ +_o PDrM(%ƞXFcl;?s&'/[_9xmq ^k Ciٗ osh8~Srڱ j.x~K̕ hƚ}-Ρn%X PLa0nhj=|$6 (CVIw0,6J%ň#Z[#VSPxm?,/Ξu᧗a_O+W$֭h|z`pEQfi:KOS~6X$#ɶĢuY  wz@`huZ5@U0T+!1PT(!غ]KoJ/c;_џ\CGRV͛?]Ybň UUgivݘ +A&! ni .a9PJ@pb~{A `sR"P P6*Kj9 ' _nޏw|lo:s{3 ]hQr-sT%zZ uò$J z9Hx[ ^Sp P4 B$ԑ2 ǝ`э<w7@03Gׁ z @@D8 -,[ \| 7aCge ̛?E_ywQ.3Baӌ$mJ(PRMipO  e4kP-yA>Af]G1bnqBD|oq󖫱 y_+a|×=ӧWڲaÄt:}x>;JSlP#AdJ%\ĩ Xj2ER<*jL46|us_~Ӑ#0/ޕ ;vD?\b|~(tEm3&--X Q$sNә2{lZ5 @JB/p番r2Þ: 骫_ s׏3]xx᢮[LS|H]g)!F(ݖ: GV(ʲ|Tpگ&k}D fZu ̝_=+٭.~N[d%pUvNtO?\lҥf235UiX1_6j̘eVOy@hپʋKh5A\*Guz5+NzjZ'@il['nǍE^i6.<<4KۯۯunZJEz(3wnڏ֎fS LP8RkS1N“JR'eY %P/.9 Ph )SY0n3pc[&)]64av|X9_{ƹ>sGK-cIlP 8H3F#DL YVBҶhP'LLg4cσ"9734]a@ (  [._l:%mhyD}oM8lݴ)n1S ܑ4rzZH@":WX $D,*ڟ<IZhdED _xU6'+zi_?'b`'k.g|o|x'>K/ ZtXΝJA9R׵#AZH \-Y H|]@#Wy9+޺e LUkoc}a'f^`/O<߷ܢ`Y_SO9,Zsڏf)BaiG9cͼPBh +q(%8\vu#R XO |`͞f>X1e߯ok2tUQ4ub QKJ& =@T% " qQ'KD08}JIYn%78bW\ `9_Od ׏ 煀JF?LKc q*BR'A (B}0qsپ=ΛN8\|qxٲe#r5U=J#aL0J cnjm7oƌN:~dݕod"5\%RLԥEG>re͛'f٩j0KӴZZ?T䣰tP@PƁVIZً% ٣QCZ$65مߎ]FM' QKxwL~Ǝ~bŨC MՎ44cSR*-%t^.N4D¦$^z]1>'k6g'ʏ'om=s/|x믿޽yÆ24UmarG J% K { H 1^. 8&Xw`*u\s5[Wgn_oym =e%<>}?w5;[ި\NȬijN覔P), +!QH7$@D3 .QpA3 ~D]kԻa'{J8pI'Io-\ӷkLfG61`1D\hq eVBe!# t=13N~Lyq}q㦟\t1?l@{o㳟^>aqLH4?_W_=ڣ=ڣ=ڣ=ڣ=ڣ=ڣ=ڣ=ڣ=ڣ=ڣ=ڣ=ڣ=ڣ=ڣ=ڣ=ڣ=ڣ=ڣ=ڣ=ڣ=ڣ=;N;%tEXtdate:create2017-07-27T22:20:25+02:00%tEXtdate:modify2017-07-27T22:20:25+02:00nLIENDB`pybik-3.0/data/plugins/0000755000175000017500000000000013173167603015241 5ustar barccbarcc00000000000000pybik-3.0/data/plugins/150-spiegel.plugins0000664000175000017500000001242013121142677020575 0ustar barccbarcc00000000000000Format: Pybik Plugins Collection - Version 2.0 Copyright: 2011-2015, 2017 B. Clausius License: GPL-3.0+ 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 . Model: Cube 3 Ref-Blocks: f l u b r d ################################ # Solution: pos=block …, moves # pos: position on the cube, e.g. "rf" for the front-right edge or "ufr" for # the uppper-front-right corner. The order does not matter, "ufr" is equal to "fur". # block: The block at the position. The order matters and depends on pos. # "fr|fl": "fr" or "fl" is allowed at the position # "!fru": every block except "fru" is allowed at the position # "*fru": a block in any rotation state of "fru" is allowed at the position (fru, ruf, ufr) # "!*fru": every block except all "fru" rotations is allowed at the position # "f?u": "?" can be every face # moves: The moves that should be applied to the cube if the conditions apply. # Spiegel is a german magazine Path: /Solvers/Spiegel Depends: /Solvers/Spiegel/Bottom corner orient Path: /Solvers/Spiegel/Top edges Solution: df=df dl=dl db=db dr=dr dfl=dfl dlb=dlb dbr=dbr drf=drf fr=fr rb=rb bl=bl lf=lf, @@solved uf=uf ur=ur ub=ub ul=ul, @@solved # rf=uf, f- df=uf, f-f- fr=uf, u2fu2- fu=uf, fu2fu2- fd=uf, dl2d-l2- # lf=uf, f fl=uf, u2-f-u2 # dr=*uf, d- dl=*uf, d db=*uf, dd # br=uf, u2f-u2- rb=uf, u2u2fu2u2 bl=uf, u2-fu2 lb=uf, u2u2f-u2u2 # ur=*uf, r ub=*uf, b ul=*uf, l # , U Path: /Solvers/Spiegel/Top corners Depends: /Solvers/Spiegel/Top edges Solution: df=df dl=dl db=db dr=dr dfl=dfl dlb=dlb dbr=dbr drf=drf fr=fr rb=rb bl=bl lf=lf, @@solved ufr=ufr urb=urb ubl=ubl ulf=ulf, @@solved # fld=ruf, r-dr fld=ufr, ddfd-f- #fld=fru, f-dffd-f- fld=fru, dr-drfd-d-f- # rfd=*fru, d- brd=*fru, dd lbd=*fru, d # fru=!fru fru=*fru, r-d-r rbu=*fru, b-d-d-b blu=*fru, bdb- lfu=*fru, f-df , U Path: /Solvers/Spiegel/Middle slice Depends: /Solvers/Spiegel/Top corners Solution: fr=fr rb=rb bl=bl lf=lf, @@solved fd=fr, d-r-drdfd-f- fd=fl, dld-l-d-f-df # rd=fr|fl, d- bd=fr|fl, dd ld=fr|fl, d # fd=*?d rd=*?d bd=*?d ld=*?d fr=!fr, d-r-drdfd-f- fd=*?d rd=*?d bd=*?d ld=*?d fl=!fl, dld-l-d-f-df , U Path: /Solvers/Spiegel/Bottom edge place Depends: /Solvers/Spiegel/Middle slice Solution: uf=uf ur=ur ub=ub ul=ul ufr=ufr urb=urb ubl=ubl ulf=ulf df=*df dl=*dl db=*db dr=*dr, @@solved uf=uf ur=ur ub=ub ul=ul ufr=ufr urb=urb ubl=ubl ulf=ulf, FF # uf=*uf ur=*ur ub=*ub ul=*ul, @@solved uf=!*uf ur=!*ur ub=!*ub ul=!*ul, u ul=*uf ur=*ur, ufrur-u-f- uf=*ul ub=*ub, ufrur-u-f- uf=*ub ub=*uf, ufrur-u-f- , U Path: /Solvers/Spiegel/Bottom edge orient Depends: /Solvers/Spiegel/Bottom edge place Solution: uf=uf ur=ur ub=ub ul=ul ufr=ufr urb=urb ubl=ubl ulf=ulf df=df dl=dl db=db dr=dr, @@solved uf=uf ur=ur ub=ub ul=ul ufr=ufr urb=urb ubl=ubl ulf=ulf, FF # uf=uf ur=ur ub=ub ul=ul, @@solved ur=?u, rd2rd2rd2rd2 # ub=?u, u uf=?u, u- ul=?u, uu # uf=ul, u uf=ur, u- uf=ub, uu Path: /Solvers/Spiegel/Bottom corner place Depends: /Solvers/Spiegel/Bottom edge orient Solution: uf=uf ur=ur ub=ub ul=ul ufr=ufr urb=urb ubl=ubl ulf=ulf df=df dl=dl db=db dr=dr dfl=*dfl dlb=*dlb dbr=*dbr drf=*drf, @@solved uf=uf ur=ur ub=ub ul=ul ufr=ufr urb=urb ubl=ubl ulf=ulf, FF # ufr=*ufr urb=*urb ubl=*ubl ulf=*ulf, @@solved ufl=!*ufl ufr=!*ufr ubl=!*ubl ubr=!*ubr, fdffddffd-f-ufdffddffd-f-u- ubl=*ubl ufl=!*ufl, fdffddffd-f-ufdffddffd-f-u- , U Path: /Solvers/Spiegel/Bottom corner orient Depends: /Solvers/Spiegel/Bottom corner place Solution: uf=uf ur=ur ub=ub ul=ul ufr=ufr urb=urb ubl=ubl ulf=ulf df=df dl=dl db=db dr=dr dfl=dfl dlb=dlb dbr=dbr drf=drf, @@solved uf=uf ur=ur ub=ub ul=ul ufr=ufr urb=urb ubl=ubl ulf=ulf, FF # ufr=ufr urb=urb ubl=ubl ulf=ulf, @@solved ufr=!ufr ufr=!urb ufr=!ubl ufr=!ulf, rf-r-frf-r-f # urb=!ufr urb=!urb urb=!ubl urb=!ulf, u ulf=!ufr ulf=!urb ulf=!ubl ulf=!ulf, u- ubl=!ufr ubl=!urb ubl=!ubl ubl=!ulf, uu # uf=ul, u uf=ur, u- uf=ub, uu pybik-3.0/data/plugins/151-spiegel-improved.plugins0000664000175000017500000001642313121142713022417 0ustar barccbarcc00000000000000Format: Pybik Plugins Collection - Version 2.0 Copyright: 2011-2015, 2017 B. Clausius License: GPL-3.0+ 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 . Model: Cube 3 Ref-Blocks: f l u b r d # Spiegel is a german magazine Path: /Solvers/Spiegel improved Depends: /Solvers/Spiegel improved/Bottom corner orient Path: /Solvers/Spiegel improved/Top edges Solution: df=df dl=dl db=db dr=dr dfl=dfl dlb=dlb dbr=dbr drf=drf fr=fr rb=rb bl=bl lf=lf, @@solved uf=uf ur=ur ub=ub ul=ul, @@solved # Initial orientation of the top slice ur=uf ub=!ub ul=!ul, u uf=!uf ub=ur ul=!ul, u uf=!uf ur=!ur ul=ub, u uf=ul ur=!ur ub=!ub, u ur=!ur ub=!ub ul=uf, u- uf=ur ub=!ub ul=!ul, u- uf=!uf ur=ub ul=!ul, u- uf=!uf ur=!ur ub=ul, u- ur=!ur ub=uf ul=!ul, uu uf=!uf ub=!ub ul=ur, uu uf=ub ur=!ur ul=!ul, uu uf=!uf ur=ul ub=!ub, uu # uf is on top slice fu=uf, fu-ru ur=*uf, r- ub=*uf, b ul=*uf, l # uf is on middle slice fr=fu, f- fr=uf, u-ru fl=fu, f fl=uf, ul-u- br=fu, uubuu br=uf, u-r-u bl=fu, uub-uu bl=uf, ulu- # uf is on bottom slice fd=fu, ff fd=uf, f-u-ru dr=uf, d-ff dr=fu, rf-r- dl=uf, dff dl=fu, l-fl db=uf, ddff db=fu, u-d-ruf- # next edge ur=!ur, U ul=!ul, U- ub=!ub, UU Path: /Solvers/Spiegel improved/Top corners Depends: /Solvers/Spiegel improved/Top edges Solution: df=df dl=dl db=db dr=dr dfl=dfl dlb=dlb dbr=dbr drf=drf fr=fr rb=rb bl=bl lf=lf, @@solved ufr=ufr urb=urb ubl=ubl ulf=ulf, @@solved # corner is one of front bottom frd=fur, r-d-r frd=rfu, fd-f-r-ddr frd=urf, fdf- fld=ruf, r-dr fld=fru, f-rfr-fd-f- fld=ufr, d # corner is one of back bottom brd=fru, d- brd=ufr, fd-f- brd=ruf, d- lbd=fru, fdf-r-d-r lbd=ufr, fddf- lbd=ruf, d # corner rotated #fru=fru, fru=ufr, r-dr fru=ruf, fd-f- # corner is one of upper front flu=rfu, ldl- flu=urf, ld-l- flu=fur, lr-dl-r # corner is one of upper back bru=rfu, b-d-b bru=urf, fb-d-f-b bru=fur, rdrrddr blu=fru, l-r-ddrl blu=ufr, l-dlr-ddr blu=ruf, l-fddf-l # Next corner bru=!bru, U flu=!flu, U- blu=!blu, UU Path: /Solvers/Spiegel improved/Middle slice Depends: /Solvers/Spiegel improved/Top corners Solution: fr=fr rb=rb bl=bl lf=lf, @@solved # Move edges from the bottom slice fd=fr, d- rd=fr, dd bd=fr, d ld=fr, r-drdfd-f- fd=fl, d rd=fl, ld-l-d-f-df bd=fl, d- ld=fl, dd # Next edge fd=rf|rb, U rd=rf|rb, U bd=rf|rb, U ld=rf|rb, U fd=lb|lf, U- rd=lb|lf, U- bd=lb|lf, U- ld=lb|lf, U- fd=br|bl, UU rd=br|bl, UU bd=br|bl, UU ld=br|bl, UU # If all above fails, move a wrong edge to the bottom slice fd=*?d rd=*?d bd=*?d ld=*?d fr=!fr, r-drdfd-f- fd=*?d rd=*?d bd=*?d ld=*?d fl=!fl, ld-l-d-f-df br=!br, U bl=!bl, U- Path: /Solvers/Spiegel improved/Bottom edge place Depends: /Solvers/Spiegel improved/Middle slice Solution: uf=uf ur=ur ub=ub ul=ul ufr=ufr urb=urb ubl=ubl ulf=ulf df=*df dl=*dl db=*db dr=*dr, @@solved uf=uf ur=ur ub=ub ul=ul ufr=ufr urb=urb ubl=ubl ulf=ulf, FF # uf=*uf ur=*ur ub=*ub ul=*ul, @@solved # Move the bottom slice is enough #uf=*uf ur=*ur ub=*ub ul=*ul, uf=*ul ur=*uf ub=*ur ul=*ub, u uf=*ub ur=*ul ub=*uf ul=*ur, uu uf=*ur ur=*ub ub=*ul ul=*uf, u- # Swap two edges is enough uf=*ul ur=*ur ub=*ub ul=*uf, ufrur-u-f- uf=*uf ur=*ul ub=*ur ul=*ub, uufrur-u-f- uf=*ub ur=*uf ub=*ul ul=*ur, u-frur-u-f- uf=*ur ur=*ub ub=*uf ul=*ul, frur-u-f- # More than two edges needs to be swapped uf=*ul ur=*ub ub=*ur ul=*uf, u-frur-u-f- uf=*uf ur=*ul ub=*ub ul=*ur, frur-u-f- uf=*ur ur=*uf ub=*ul ul=*ub, ufrur-u-f- uf=*ub ur=*ur ub=*uf ul=*ul, uufrur-u-f- # , U #TODO: Modify the previous paragraph so that this is not necessary Path: /Solvers/Spiegel improved/Bottom edge orient Depends: /Solvers/Spiegel improved/Bottom edge place Solution: uf=uf ur=ur ub=ub ul=ul ufr=ufr urb=urb ubl=ubl ulf=ulf df=df dl=dl db=db dr=dr, @@solved uf=uf ur=ur ub=ub ul=ul ufr=ufr urb=urb ubl=ubl ulf=ulf, FF # uf=uf ur=ur ub=ub ul=ul, @@solved # Turn edge ur=?u, rd2rd2rd2rd2 # Proceed to the next edge ub=?u, u uf=?u, u- ul=?u, uu # Done, only turn back the bottom slice uf=ul, u uf=ur, u- uf=ub, uu Path: /Solvers/Spiegel improved/Bottom corner place Depends: /Solvers/Spiegel improved/Bottom edge orient Solution: uf=uf ur=ur ub=ub ul=ul ufr=ufr urb=urb ubl=ubl ulf=ulf df=df dl=dl db=db dr=dr dfl=*dfl dlb=*dlb dbr=*dbr drf=*drf, @@solved uf=uf ur=ur ub=ub ul=ul ufr=ufr urb=urb ubl=ubl ulf=ulf, FF # ufr=*ufr urb=*urb ubl=*ubl ulf=*ulf, @@solved ufl=*urf urf=*ulb ulb=*ufl ubr=*ubr, fdffddffd-f-u-fdffddffd-f-u ufl=*ubr urf=*ufl ulb=*ulb ubr=*urf, fdffddffd-f-ufdffddffd-f-u- ufl=*urf urf=*ufl ulb=*ubr ubr=*ulb, fdffddffd-f-uufdffddffd-f-uu ufl=*ubr urf=*ulb ulb=*urf ubr=*ufl, fdffddffd-f-ufdffddffd-f-u- # , U Path: /Solvers/Spiegel improved/Bottom corner orient Depends: /Solvers/Spiegel improved/Bottom corner place Solution: uf=uf ur=ur ub=ub ul=ul ufr=ufr urb=urb ubl=ubl ulf=ulf df=df dl=dl db=db dr=dr dfl=dfl dlb=dlb dbr=dbr drf=drf, @@solved uf=uf ur=ur ub=ub ul=ul ufr=ufr urb=urb ubl=ubl ulf=ulf, FF # ufr=ufr urb=urb ubl=ubl ulf=ulf, @@solved # Turn corner ufr=?u?, rf-r-frf-r-f ufr=??u, f-rfr-f-rfr- # Proceed to the next corner urb=!u?? fr=!fr, u ulf=!u?? fr=!fr, u- ubl=!u?? fr=!fr, uu # Done, only turn back the bottom slice uf=ul ufr=u?? urb=u?? ulf=u?? ubl=u??, u uf=ur ufr=u?? urb=u?? ulf=u?? ubl=u??, u- uf=ub ufr=u?? urb=u?? ulf=u?? ubl=u??, uu # , U pybik-3.0/data/plugins/01-challenges.plugins0000664000175000017500000000341413121142605021157 0ustar barccbarcc00000000000000Format: Pybik Plugins Collection - Version 2.0 Copyright: 2012-2015, 2017 B. Clausius License: GPL-3.0+ 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 . Model: * Path: /Challenges/Solve random puzzle Module: challenges.random, challenge Path: /Challenges/P_/Solve in {} move/Solve in {} moves/1 Module: challenges.random1, challenge Path: /Challenges/P_/Solve in {} move/Solve in {} moves/2 Module: challenges.random2, challenge Path: /Challenges/P_/Solve in {} move/Solve in {} moves/3 Module: challenges.random3, challenge Path: /Challenges/P_/Solve in {} move/Solve in {} moves/4 Module: challenges.random4, challenge Path: /Challenges/P_/Solve in {} move/Solve in {} moves/5 Module: challenges.random5, challenge Path: /Challenges/P_/Solve in {} move/Solve in {} moves/6 Module: challenges.random6, challenge Path: /Challenges/P_/Solve in {} move/Solve in {} moves/7 Module: challenges.random7, challenge Path: /Challenges/P_/Solve in {} move/Solve in {} moves/8 Module: challenges.random8, challenge Path: /Challenges/P_/Solve in {} move/Solve in {} moves/9 Module: challenges.random9, challenge Path: /Challenges/P_/Solve in {} move/Solve in {} moves/10 Module: challenges.random10, challenge pybik-3.0/data/plugins/20-2x2x2.plugins0000664000175000017500000000522713121142731017744 0ustar barccbarcc00000000000000Format: Pybik Plugins Collection - Version 2.0 Copyright: 2011-2015, 2017 B. Clausius License: GPL-3.0+ 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 . Model: Cube 2 Path: /Solvers/2×2×2 Depends: /Solvers/2×2×2/Bottom corner orient Path: /Solvers/2×2×2/Top slice Solution: ufl=ufl ufr=ufr urb=urb ubl=ubl, @@solved ufl=ufl fld=ruf, r-dr ufl=ufl fld=ufr, ddfd-f- ufl=ufl fld=fru, dr-drfd-d-f- # ufl=ufl fdr=*ufr, d- ufl=ufl brd=*ufr, dd ufl=ufl lbd=*ufr, d # ufl=ufl ufr=!ufr ufr=*ufr, r-d-r ufl=ufl urb=*ufr, b-d-d-b ufl=ufl lub=*ufr, bdb- , U Path: /Solvers/2×2×2/Bottom corner place Depends: /Solvers/2×2×2/Top slice Solution: ufl=ufl ubr=ubr fld=*fld dlb=*dlb dbr=*dbr drf=*drf, @@solved ufl=ufl ubr=ubr fld=*rfd drf=*dfl, r-d-rfdf-r-drdd ufl=ufl ubr=ubr fld=*brd drf=*dlb, dd ufl=ufl ubr=ubr fld=*rfd drf=*dbr, d ufl=ufl ubr=ubr fld=*lbd drf=*dfl, d- ufl=ufl ubr=ubr fld=*fld dbr=*dbr, d , U Path: @Solvers/2×2×2/Bottom corner orient Depends: /Solvers/2×2×2/Bottom corner place Solution: ufl=ufl ldf=fld, lf-l-flf-l-f ufl=ufl dfl=fld, f-lfl-f-lfl- , @@solved Path: /Solvers/2×2×2/Bottom corner orient Depends: @Solvers/2×2×2/Bottom corner orient Solution: ufl=ufl dfl=dfl dlb=dlb dbr=dbr drf=drf, @@solved ufl=ufl dfl=!dfl dlb=dlb dbr=dbr drf=drf, @@unsolvable ufl=ufl dfl=dfl dlb=!dlb dbr=dbr drf=drf, @@unsolvable ufl=ufl dfl=dfl dlb=dlb dbr=!dbr drf=drf, @@unsolvable ufl=ufl dfl=dfl dlb=dlb dbr=dbr drf=!drf, @@unsolvable # rotate corner dfl=dfl dfr=frd, d-lf-l-flf-l-f dfl=dfl dfr=rdf, d-f-lfl-f-lfl- dfl=dfl dbl=bld, dlf-l-flf-l-f dfl=dfl dbl=ldb, df-lfl-f-lfl- dfl=dfl dbr=brd, ddf-lfl-f-lfl- dfl=dfl dbr=rdb, ddlf-l-flf-l-f # move solved bottom slice dfl=dfl ufl=urf, d- dfl=dfl ufl=ubr, dd dfl=dfl ufl=ulb, d pybik-3.0/data/plugins/80-pretty-patterns.plugins0000664000175000017500000001510413152511263022251 0ustar barccbarcc00000000000000Format: Pybik Plugins Collection - Version 2.0 Copyright: 2012-2015, 2017 B. Clausius License: GPL-3.0+ 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 . #Pretty: Use something that is common in the Rubik scene in your language, sometimes it's just the equivalent of "patterns". Path: /Pretty patterns/Stripes Model: Brick k m n with k % 2 == n % 2 == 1 and m % 2 == 0 Module: pretty_patterns.play_stripes_Brick_nnn_2, append Path: /Pretty patterns/Stripes Model: Brick m n 1 with m % 4 == 1 and n % 2 == 1 Module: pretty_patterns.play_stripes_Brick_nn1_4, append Path: /Pretty patterns/Stripes Model: Brick 1 n m with m % 4 == 1 and n % 2 == 1 Module: pretty_patterns.play_stripes_Brick_1nn_4, append Path: /Pretty patterns/Stripes Model: Cube n with n % 2 == 0 Module: pretty_patterns.play_stripes_Cube_nnn_2, append Path: /Pretty patterns/Stripes Model: Tower k n with k % 2 == 0 Brick k m n with k % 2 == 0 and n % 2 == 0 Module: pretty_patterns.play_stripes_TowerBrick_nnn_2, append Path: /Pretty patterns/Stripes Model: Cube 3 Moves: rrffllrrffll Path: /Pretty patterns/Stripes Model: Tower 3 n Brick 3 m 3 Moves: rflrfl Path: /Pretty patterns/Criss-Cross Model: Cube Moves: rruullrruurr Path: /Pretty patterns/Criss-Cross Model: Tower Moves: ruulruur Path: /Pretty patterns/Fried Eggs Model: Cube n with n>=3 Moves: l2-f2-l2f2 Path: /Pretty patterns/Big Fried Eggs Model: Cube Moves: rl-fb-ud-rl- Path: /Pretty patterns/4 Fried Eggs Model: Cube 3 Moves: l2l2u2l2l2u2- Path: /Pretty patterns/4 Fried Eggs Model: Cube 4 Moves: l2l2l3l3u2u3l2l2l3l3u2-u3- Path: /Pretty patterns/2 Fried Eggs Model: Cube 4 Moves: ffr2r2ffl2l2ffr2r2ffl2l2ffr2r2ffl2l2 Path: /Pretty patterns/Chessboard Model: Cube n with n % 2 == 1 Tower w h with w % 2 == 1 Brick w h d with w % 2 + h % 2 + d % 2 >= 2 Module: pretty_patterns.play_chessboard, append Path: /Pretty patterns/Cross Model: Cube Moves: u-ffuul-rffuufflr-u- Path: /Pretty patterns/Zig Zag Model: Cube Moves: rlfbrlfbrlfb # T is the shape formed by the cube labels. T-Time is a pun (Tea Time) and not suitable for literal translation. Don't translate it or use something common or whatever you think makes sense. Path: /Pretty patterns/T-Time Model: Cube n with n%2 == 1 Module: pretty_patterns.play_t_time_Cube_odd, append Path: /Pretty patterns/T-Time Model: Cube 4 Moves: l2l2l3l3du-f2f2f3f3ud-l2l2l3l3duul2l2l3l3uul2l2l3l3d-l2l2l3l3uu Path: /Pretty patterns/T-Time Model: Cube n with n%2 == 0 Module: pretty_patterns.play_t_time_Cube_even, append Path: /Pretty patterns/T-Time Model: Tower m×n with m%2 == 1 Module: pretty_patterns.play_t_time_Tower_odd, append Path: /Pretty patterns/T-Time Model: Tower m×n with n == 4 Moves: l4l5du-f4f5ud-l4l5duul4l5uul4l5d-l4l5uu Path: /Pretty patterns/T-Time Model: Tower m×n with m%2 == 0 Module: pretty_patterns.play_t_time_Tower_even, append # C is the shape formed by the cube labels Path: /Pretty patterns/C Model: Cube Moves: uullr-b-rru-r-drfflr-fdlluu Path: /Pretty patterns/Cube in a Cube Model: Cube Moves: uur-ufu-r-uflfl-u-rfu-ru- Path: /Pretty patterns/Striped Cube in a Cube Model: Cube Moves: d-fd-lbddffurb-urrfd-rfuu Path: /Pretty patterns/Six square cuboids Model: Cube Moves: ffdffddllullu-llbddrr # Superflip may be not translated, because it has a special meaning in the mathematical theory behind the Rubik's Cube. Path: /Pretty patterns/Superflip Model: Cube Moves: urrfbrbbruulbbru-d-rrfr-lbbuuff Path: /Pretty patterns/Superflip easy Model: Cube 3 Moves: l2ul2ul2ul2uLDl2ul2ul2ul2uLDl2ul2ul2ul2uLD Path: /Pretty patterns/Green Mamba Model: Cube Moves: rdrfr-f-bdr-u-b-udd Path: /Pretty patterns/Anaconda Model: Cube Moves: lbbdrb-fd-l-rd-uf-rru- Path: /Pretty patterns/Duck Feet Model: Cube Moves: rrdu-ld-llrbrrubur-f-d-fu- Path: /Pretty patterns/Plus Model: Cube n with n % 2 == 1 and n > 2 Module: pretty_patterns.play_plus_Cube_odd, append Path: /Pretty patterns/Plus Model: Cube n with n % 2 == 0 and n > 2 Module: pretty_patterns.play_plus_Cube_even, append Path: /Pretty patterns/Plus Model: Tower k n with k % 2 == 1 and k > 2 and n > 2 Module: pretty_patterns.play_plus_Tower_on, append Path: /Pretty patterns/Plus Model: Tower k n with k % 2 == 0 and k > 2 and n > 2 Module: pretty_patterns.play_plus_Tower_en, append Path: /Pretty patterns/Plus Model: Brick k m n with k % 2 == 1 and n % 2 == 1 and k > 2 and m > 2 and n > 2 Module: pretty_patterns.play_plus_Brick_ono, append Path: /Pretty patterns/Plus Model: Brick k m n with k % 2 == 1 and n % 2 == 0 and k > 2 and m > 2 and n > 2 Module: pretty_patterns.play_plus_Brick_one, append Path: /Pretty patterns/Plus Model: Brick k m n with k % 2 == 0 and n % 2 == 1 and k > 2 and m > 2 and n > 2 Module: pretty_patterns.play_plus_Brick_eno, append Path: /Pretty patterns/Plus Model: Brick k m n with k % 2 == 0 and n % 2 == 0 and k > 2 and m > 2 and n > 2 Module: pretty_patterns.play_plus_Brick_ene, append Path: /Pretty patterns/Minus Model: Cube n with n % 2 == 1 and n > 2 Tower k n with n % 2 == 1 and n > 2 Module: pretty_patterns.play_minus_CubeTower_odd, append Path: /Pretty patterns/Minus Model: Cube n with n % 2 == 0 and n > 2 Tower k n with n % 2 == 0 and n > 2 Module: pretty_patterns.play_minus_CubeTower_even, append Path: /Pretty patterns/Minus Model: Brick k m n with m % 2 == 1 and m > 2 Module: pretty_patterns.play_minus_Brick_non, append Path: /Pretty patterns/Minus Model: Brick k m n with m % 2 == 0 and m > 2 Module: pretty_patterns.play_minus_Brick_nen, append Path: /Pretty patterns/Volcano Model: Tetrahedron 3 Moves: r2-d2-r2d2-r2-d2-r2d2-d3- Path: /Pretty patterns/Checkerboard (easy) Model: Tetrahedron 3 Moves: l2b2-l2-b2D-l2b2-l2-b2D-l2b2-l2-b2D-l2b2-l2-b2D-l2b2-l2-b2D-l2b2-l2-b2D-l2b2-l2-b2D-l2b2-l2-b2D-l2b2-l2-b2D-l2b2-l2-b2D- Path: /Pretty patterns/Checkerboard (fast) Model: Tetrahedron 3 Moves: r2b2-r2-b2-l2-b2-l2d2l2-d2l2d2l2-d2l2d2- Path: /Pretty patterns/Mixed Checkerboard Model: Tetrahedron 3 Moves: d2r2b2l2d2r2b2l2d2r2b2l2d2r2b2l2 Path: /Pretty patterns/Tipi Model: Tetrahedron 3 Moves: r2b2-r2-b2-l2-b2-l2 pybik-3.0/data/plugins/10-beginners.plugins0000664000175000017500000001502213121142626021027 0ustar barccbarcc00000000000000Format: Pybik Plugins Collection - Version 2.0 Copyright: 2015, 2017 B. Clausius License: GPL-3.0+ 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 . Model: Cube 3 Ref-Blocks: f l u b r d ################################ # Solution: pos=block …, moves # pos: position on the cube, e.g. "rf" for the front-right edge or "ufr" for # the uppper-front-right corner. The order does not matter, "ufr" is equal to "fur". # block: The block at the position. The order matters and depends on pos. # "fr|fl": "fr" or "fl" is allowed at the position # "!fru": every block except "fru" is allowed at the position # "*fru": a block in any rotation state of "fru" is allowed at the position (fru, ruf, ufr) # "!*fru": every block except all "fru" rotations is allowed at the position # "f?u": "?" can be every face # moves: The moves that should be applied to the cube if the conditions apply. Path: /Solvers/Beginner's method Depends: /Solvers/Beginner's method/Bottom edge place Path: /Solvers/Beginner's method/Top edges Solution: df=df dl=dl db=db dr=dr dfl=dfl dlb=dlb dbr=dbr, @@solved uf=uf ur=ur ub=ub ul=ul, @@solved # fr=*ur, r br=*ur, r- dr=*ur, rr df=*ur, d db=*ur, d- dl=*ur, dd uf=*ur, ff ub=*ur, bb ul=*ur, ll fl=*ur uf=uf, f-df fl=*ur, f-d bl=*ur ub=ub, bd-b- bl=*ur, bd- ur=ru, r-uf-u- # , D Path: /Solvers/Beginner's method/Top corners Depends: /Solvers/Beginner's method/Top edges Solution: df=df dl=dl db=db dr=dr dfl=dfl dlb=dlb dbr=dbr drf=drf, @@solved ufr=ufr urb=urb ubl=ubl ulf=ulf, @@solved # ufr=ufr, D # fld=*ruf, d brd=*ruf, d- lbd=*ruf, dd rfd=*ruf, r-d-rd ufr=*ufr, r-d-rd ufr=*u??, r-d-r # , D Path: /Solvers/Beginner's method/Middle slice Depends: /Solvers/Beginner's method/Top corners Solution: fr=fr rb=rb bl=bl lf=lf, @@solved ufr=ufr urb=urb ubl=ubl ulf=ulf uf=uf ur=ur ub=ub ul=ul dr=!dr, RR ufr=ufr urb=urb ubl=ubl ulf=ulf uf=uf ur=ur ub=ub ul=ul db=!db, RR ufr=ufr urb=urb ubl=ubl ulf=ulf uf=uf ur=ur ub=ub ul=ul dl=!dl, RR ufr=ufr urb=urb ubl=ubl ulf=ulf uf=uf ur=ur ub=ub ul=ul df=!df, RR ufr=ufr urb=urb ubl=ubl ulf=ulf uf=uf ur=ur ub=ub ul=ul dfr=!dfr, RR ufr=ufr urb=urb ubl=ubl ulf=ulf uf=uf ur=ur ub=ub ul=ul dbr=!dbr, RR ufr=ufr urb=urb ubl=ubl ulf=ulf uf=uf ur=ur ub=ub ul=ul dbl=!dbl, RR ufr=ufr urb=urb ubl=ubl ulf=ulf uf=uf ur=ur ub=ub ul=ul dfl=!dfl, RR # fu=fr, uru-r-u-f-uf fu=fl, u-l-ulufu-f- # ru=fr|fl, u lu=fr|fl, u- bu=fr|fl, uu # fr=rf, uru-r-u-f-uf fl=lf, u-l-ulufu-f- # fu=*?u lu=*?u bu=*?u ru=*?u fr=!fr, uru-r-u-f-uf fu=*?u lu=*?u bu=*?u ru=*?u fl=!fl, u-l-ulufu-f- , D Path: /Solvers/Beginner's method/Bottom edge orient Depends: /Solvers/Beginner's method/Middle slice Solution: uf=uf ur=ur ub=ub ul=ul ufr=ufr urb=urb ubl=ubl ulf=ulf df=d? dl=d? db=d? dr=d?, @@solved uf=uf ur=ur ub=ub ul=ul ufr=ufr urb=urb ubl=ubl ulf=ulf, RR # uf=u? ur=u? ub=u? ul=u?, @@solved # uf=?u ur=?u ub=?u ul=?u, furu-r-f- # uf=u? ur=?u ub=?u ul=u?, U uf=?u ur=u? ub=u? ul=?u, U- uf=u? ur=u? ub=?u ul=?u, UU uf=?u ur=?u ub=u? ul=u?, furu-r-f- # uf=u? ur=?u ub=u? ul=?u, U- uf=?u ur=u? ub=?u ul=u?, frur-u-f- Path: /Solvers/Beginner's method/Bottom corner orient Depends: /Solvers/Beginner's method/Bottom edge orient Solution: uf=uf ur=ur ub=ub ul=ul ufr=ufr urb=urb ubl=ubl ulf=ulf df=d? dl=d? db=d? dr=d? dfl=d?? dlb=d?? dbr=d?? drf=d??, @@solved uf=uf ur=ur ub=ub ul=ul ufr=ufr urb=urb ubl=ubl ulf=ulf, RR # uf=u? ur=u? ub=u? ul=u? ufl=u?? ulb=u?? ubr=u?? urf=u??, @@solved # State 1: No Corner Cubes have upper color upside ufl=!u?? ulb=!u?? ubr=!u?? urf=??u, U ufl=?u? ulb=!u?? ubr=!u?? urf=!u??, U- ufl=??u ulb=!u?? ubr=!u?? urf=!u??, rur-uruur- # State 2: One Corner Cube has upper color upside ufl=!u?? ulb=!u?? ubr=!u?? urf=u??, U ufl=!u?? ulb=u?? ubr=!u?? urf=!u??, U- ufl=!u?? ulb=!u?? ubr=u?? urf=!u??, UU ufl=u?? ulb=!u?? ubr=!u?? urf=!u??, rur-uruur- # State 3: Two Corner Cubes have upper color upside urf=?u?, U ulb=?u?, U- ubr=?u?, UU ufl=?u?, rur-uruur- Path: /Solvers/Beginner's method/Bottom corner place Depends: /Solvers/Beginner's method/Bottom corner orient Solution: uf=uf ur=ur ub=ub ul=ul ufr=ufr urb=urb ubl=ubl ulf=ulf df=d? dl=d? db=d? dr=d? dfl=dfl dlb=dlb dbr=dbr drf=drf, @@solved uf=uf ur=ur ub=ub ul=ul ufr=ufr urb=urb ubl=ubl ulf=ulf, FF # ufr=ufr urb=urb ubl=ubl ulf=ulf, @@solved # Two adjacent corners right urb=urb ubl=ubl, r-fr-bbrf-r-bbrru- ubl=ubl ulf=ulf, U ufr=ufr urb=urb, U- ufr=ufr ulf=ulf, UU # Two diagonal corners right ufr=ufr ubl=ubl, r-fr-bbrf-r-bbrru- urb=urb ulf=ulf, r-fr-bbrf-r-bbrru- # , u Path: /Solvers/Beginner's method/Bottom edge place Depends: /Solvers/Beginner's method/Bottom corner place Solution: uf=uf ur=ur ub=ub ul=ul ufr=ufr urb=urb ubl=ubl ulf=ulf df=df dl=dl db=db dr=dr dfl=dfl dlb=dlb dbr=dbr drf=drf, @@solved uf=uf ur=ur ub=ub ul=ul ufr=ufr urb=urb ubl=ubl ulf=ulf, FF # uf=uf ur=ur ub=ub ul=ul, @@solved # rotate 3 edges clockwise ub=ub, ffulr-ffl-ruff # ul=ul, U ur=ur, U- uf=uf, UU , ffulr-ffl-ruff pybik-3.0/data/plugins/95-transformations.plugins0000664000175000017500000000204313121143033022311 0ustar barccbarcc00000000000000Format: Pybik Plugins Collection - Version 2.0 Copyright: 2015, 2017 B. Clausius License: GPL-3.0+ 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 . Model: * Path: /Move transformations/Invert move sequence Module: transformations.invert, replace Path: /Move transformations/Normalize cube rotations Module: transformations.normalize_complete_rotations, replace Path: /Move transformations/Normalize move sequence Module: transformations.normalize_moves, replace pybik-3.0/data/plugins/14-leyan-lo.plugins0000664000175000017500000001520613121142645020604 0ustar barccbarcc00000000000000Format: Pybik Plugins Collection - Version 2.0 Copyright: 2012-2015, 2017 B. Clausius License: GPL-3.0+ 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 . Model: Cube 3 Ref-Blocks: f l u b r d Depends: /Solvers/Leyan Lo/Bottom edge place # Leyan Lo is the inventor of the solution Path: /Solvers/Leyan Lo Path: /Solvers/Leyan Lo/Top edges Solution: df=df dl=dl db=db dr=dr dfl=dfl dlb=dlb dbr=dbr drf=drf fr=fr rb=rb bl=bl lf=lf, @@solved uf=uf ur=ur ub=ub ul=ul, @@solved # rf=uf, f- df=uf, f-f- fr=uf, u2fu2- fu=uf, fu2fu2- fd=uf, dl2d-l2- # lf=uf, f fl=uf, u2-f-u2 # dr=*uf, d- dl=*uf, d db=*uf, dd # br=uf, u2f-u2- rb=uf, u2u2fu2u2 bl=uf, u2-fu2 lb=uf, u2u2f-u2u2 # ur=*uf, r ub=*uf, b ul=*uf, l # , U Depends: /Solvers/Leyan Lo/Top edges Path: /Solvers/Leyan Lo/Top corners Solution: df=df dl=dl db=db dr=dr dfl=dfl dlb=dlb dbr=dbr drf=drf fr=fr rb=rb bl=bl lf=lf, @@solved ufr=ufr urb=urb ubl=ubl ulf=ulf, @@solved # fld=ruf, r-dr fld=ufr, ddfd-f- #fld=fru, f-dffd-f- fld=fru, dr-drfd-d-f- # rfd=*fru, d- brd=*fru, dd lbd=*fru, d # fru=!fru fru=*fru, r-d-r rbu=*fru, b-d-d-b blu=*fru, bdb- lfu=*fru, f-df , U Depends: /Solvers/Leyan Lo/Top corners Path: /Solvers/Leyan Lo/Middle slice Solution: fr=fr rb=rb bl=bl lf=lf, @@solved # solve front-right edge fd=fr, d-r-drdfd-f- rd=rf, dfd-f-d-r-dr # prepare front-right edge for solving fd=rf, d rd=fr, d- bd=rf|fr, d- ld=rf|fr, d # fd=*?d rd=*?d bd=*?d ld=*?d fr=!fr, d-r-drdfd-f- , U Depends: /Solvers/Leyan Lo/Middle slice Path: /Solvers/Leyan Lo/Bottom edge orient Solution: uf=uf ur=ur ub=ub ul=ul ufr=ufr urb=urb ubl=ubl ulf=ulf df=d? dl=d? db=d? dr=d?, @@solved uf=uf ur=ur ub=ub ul=ul ufr=ufr urb=urb ubl=ubl ulf=ulf, FF # uf=u? ur=u? ub=u? ul=u?, @@solved ub=u? ul=u? uf=?u ur=?u, furu-r-f- ur=u? ul=u? uf=?u ub=?u, frur-u-f- uf=?u ur=?u ub=?u ul=?u, furu-r-f- # ul=u? uf=u? ur=?u ub=?u, U uf=u? ur=u? ub=?u ul=?u, UU ur=u? ub=u? ul=?u uf=?u, U- # uf=u? ub=u? ur=?u ul=?u, U Depends: /Solvers/Leyan Lo/Bottom edge orient Path: /Solvers/Leyan Lo/Bottom corner place Solution: uf=uf ur=ur ub=ub ul=ul ufr=ufr urb=urb ubl=ubl ulf=ulf dfr=*dfr drb=*drb dbl=*dbl dlf=*dlf, @@solved uf=uf ur=ur ub=ub ul=ul ufr=ufr urb=urb ubl=ubl ulf=ulf, FF # solved (1/24) ufr=*ufr urb=*urb ubl=*ubl ulf=*ulf, @@solved # two adjacent corners need to be swapped (6/24) ulf=*ufr ufr=*ulf, U- ufr=*urb urb=*ufr, lu-r-ul-u-ruu urb=*ubl ubl=*urb, U ubl=*ulf ulf=*ubl, UU # two diagonal corners need to be swapped (3/24) ufr=*ubl ubl=*ufr, u urb=*ulf ulf=*urb, u- # rotate 3 corners ccw (4/16), four corners need to be moved ccw (1/16), rotate crosswise (2/16) ufr=*urb, u- ubl=*ulf, u- # rotate 3 corners cw (4/16), four corners need to be moved cw (1/16), rotate crosswise (2/16) ufr=*ulf, u ubl=*urb, u Depends: /Solvers/Leyan Lo/Bottom corner place Path: /Solvers/Leyan Lo/Bottom corner orient Solution: uf=uf ur=ur ub=ub ul=ul ufr=ufr urb=urb ubl=ubl ulf=ulf dfr=dfr drb=drb dbl=dbl dlf=dlf, @@solved uf=uf ur=ur ub=ub ul=ul ufr=ufr urb=urb ubl=ubl ulf=ulf, FF # ufr=ufr urb=urb ubl=ubl ulf=ulf, @@solved # lub=lub rub=bru luf=flu ruf=ufr, r-u-ru-r-uuruu ful=ful bul=lbu fur=rfu bur=urb, U bur=bur fur=rfu bul=lbu ful=ulf, U- ruf=ruf luf=flu rub=bru lub=ubl, UU # ful=ful lub=blu rub=ubr ruf=fru, rur-uruur-uu ruf=ruf ful=lfu bul=ulb bur=rbu, U lub=lub bur=rbu fur=urf ful=lfu, U- bur=bur ruf=fru luf=ufl lub=blu, UU # bul=ulb bur=urb ful=ful fur=fur, r-u-ru-r-uuruu luf=ufl lub=ubl ruf=ruf rub=rub, U rub=ubr ruf=ufr lub=lub luf=luf, U- fur=urf ful=ulf bur=bur bul=bul, UU # ful=ulf bul=ulb fur=fur bur=bur, rur-uruur-uu ruf=ufr luf=ufl rub=rub lub=lub, U lub=ubl rub=ubr luf=luf ruf=ruf, U- bur=urb fur=urf bul=bul ful=ful, UU # rub=ubr luf=flu ruf=ruf lub=lub, rur-uruur-uu bul=ulb fur=rfu bur=bur ful=ful, U fur=urf bul=lbu ful=ful bur=bur, U- luf=ufl rub=bru lub=lub ruf=ruf, UU # lub=ubl rub=bru luf=ufl ruf=fru, r-u-ru-r-uuruu ful=ulf bul=lbu fur=urf bur=rbu, U bur=urb fur=rfu bul=ulb ful=lfu, U- ruf=ufr luf=flu rub=ubr lub=blu, UU # lub=ubl rub=ubr luf=ufl ruf=ufr, r-u-ru-r-uuruu lub=blu rub=bru luf=flu ruf=fru, U Depends: /Solvers/Leyan Lo/Bottom corner orient Path: /Solvers/Leyan Lo/Bottom edge place Solution: uf=uf ur=ur ub=ub ul=ul ufr=ufr urb=urb ubl=ubl ulf=ulf df=df dr=dr db=db dl=dl, @@solved uf=uf ur=ur ub=ub ul=ul ufr=ufr urb=urb ubl=ubl ulf=ulf, FF # solved (1/12) uf=uf ur=ur ub=ub ul=ul, @@solved # rotate 3 edges clockwise (4/12) uf=ub ub=ur ru=fu ul=ul, rrufb-rrf-burr ur=ul ul=ub bu=ru uf=uf, U ul=ur ur=uf fu=lu ub=ub, U- ub=uf uf=ul lu=bu ur=ur, UU # rotate 3 edges counterclockwise (4/12) ru=bu uf=ur ub=uf ul=ul, rru-fb-rrf-bu-rr bu=lu ur=ub ul=ur uf=uf, U fu=ru ul=uf ur=ul ub=ub, U- lu=fu ub=ul uf=ub ur=ur, UU # swap pairwise opposite edges, (1/12) uf=ub ru=lu lu=ru ub=uf, rrufb-rrf-burr # swap pairwise adjacent edges, (2/12) ru=bu uf=ul ub=ur lu=fu, rrufb-rrf-burr bu=lu ur=uf ul=ub fu=ru, rrufb-rrf-burr pybik-3.0/data/plugins/90-library.plugins0000664000175000017500000000724313121142767020543 0ustar barccbarcc00000000000000Format: Pybik Plugins Collection - Version 2.0 Copyright: 2012-2015, 2017 B. Clausius License: GPL-3.0+ 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 . Path: /Library/Swap edges/3 edges ⟳, top layer Model: Cube n with n >= 3 Moves: rrufb-rrf-burr Path: /Library/Swap edges/3 edges ⟲, top layer Model: Cube n with n >= 3 Moves: rru-fb-rrf-bu-rr Path: /Library/Swap edges/3 edges, middle layer Model: Cube 3 Moves: rrd2rrd2- Path: /Library/Swap edges/4 edges, front and right Model: Cube n with n >= 3 Moves: rrffrrffrrff Path: /Library/Swap edges/4 edges, front and back Model: Cube 3 Moves: ffr2r2ffr2r2 Path: /Library/Swap 2 edges and 2 corners, top layer Model: Cube n with n >= 3 Moves: ufrur-u-f- Path: /Library/Flip edges/4 edges Model: Cube 3 Moves: rd2rd2rd2rd2 Path: /Library/Flip edges/2 edges, top layer Model: Cube 3 Moves: rd2rd2rd2rd2u-rd2rd2rd2rd2u Path: /Library/Swap corners/2 corners, top layer Model: Cube 2 Moves: lu-r-ul-u-ruu Path: /Library/Swap corners/2 corners diagonal, top layer Model: Cube 2 Moves: ufrur-u-f- Path: /Library/Swap corners/3 corners ⟳, top layer Model: Cube n with n >= 3 Moves: fdffddffd-f-ufdffddffd-f-u- Path: /Library/Swap corners/3 corners ⟲, top layer Model: Cube n with n >= 3 Moves: ufdffddffd-f-u-fdffddffd-f- Path: /Library/Swap corners/4 corners, top layer Model: Cube n with n >= 3 Moves: fdffddffd-f-uufdffddffd-f-uu Path: /Library/Swap corners/2 corners, partial sequence, top layer Model: Cube n with n >= 3 Moves: fdffddffd-f- Path: /Library/Rotate corners/2 corners, top layer Model: Cube n with n >= 2 Moves: rf-r-frf-r-fuf-rfr-f-rfr-u- Path: /Library/Rotate corners/3 corners ⟳, top layer Model: Cube n with n >= 2 Moves: rf-r-frf-r-furf-r-frf-r-furf-r-frf-r-fuu Path: /Library/Rotate corners/1 corner ⟳, partial sequence, top layer Model: Cube n with n >= 2 Moves: rf-r-frf-r-f Path: /Library/Rotate corners/1 corner ⟲, partial sequence, top layer Model: Cube n with n >= 2 Moves: f-rfr-f-rfr- # 2 rotations of the center face in the upper layer Path: /Library/Rotate center/2×Up Model: Cube n with n >= 3 Moves: urluur-l-urluur-l- # Up clockwise and front clockwise Path: /Library/Rotate center/Up ⟳ and front ⟳ Model: Cube n with n >= 3 Moves: ufu-d-ffl-rfbuf-b-lr-ffd # Up clockwise and front counterclockwise Path: /Library/Rotate center/Up ⟳ and front ⟲ Model: Cube 3 Moves: r2f2r-f2-r2-f2rf2- Path: /Library/Swap center parts, up and front Model: Cube n with n >= 4 Moves: r2f2r-f2-r2-f2rf2- # Up clockwise and down counterclockwise Path: /Library/Rotate center/Up ⟳ and down ⟲ Model: Cube 3 Moves: urlf2f2r-l-u-rlf2f2r-l- #Back: Yields in a rotated back layer, but the sequence of moves does not touch the back layer Path: /Library/Misc/Back without back Model: Cube n with n >= 3 Moves: rrllffrruurrllddllf-rrllffrruurrllddllff Path: /Library/Misc/2×Back without back Model: Cube n with n >= 3 Moves: rrdduullffrrdduull Path: /Library/Misc/Back without back Model: Tower n,h with n >= 2 and h >= 2 Moves: rdduulfrdduul Path: /Library/Misc/Back without back Model: Brick x,y,z with x >= 2 and y >= 2 and z >= 2 Moves: rdulfrdul pybik-3.0/data/app-meta/0000755000175000017500000000000013173167603015264 5ustar barccbarcc00000000000000pybik-3.0/data/app-meta/pybik.desktop0000644000175000017500000000447713173054544020010 0ustar barccbarcc00000000000000[Desktop Entry] Name[ast]=Pybik Name[bg]=Рубик Name[bs]=Pybik Name[cs]=Pybik Name[de]=Pybik Name[el]=Pybik Name[en_GB]=Pybik Name[es]=Pybik Name[fi]=Pybik Name[fr]=Pybik Name[gl]=Pybik Name[he]=Pybik Name[it]=Pybik Name[kab]=Pybik Name[ms]=Pybik Name[pl]=Pybik Name[pt_BR]=Pybik Name[ru]=Pybik Name[uk]=Pybik Name[uz]=Pybik Name[zh_TW]=Pybik Name=Pybik Comment[de]=Rubiks Zauberwürfelspiel Comment[en_GB]=Rubik's cube game Comment[es]=Juego del cubo de Rubik Comment[fi]=Rubiikin kuutio -peli Comment[fr]=Rubik’s cube Comment[gl]=Xogo do cubo de Rubik Comment[he]=משחק הקובייה ההונגרית Comment[it]=Gioco del cubo di Rubik Comment[kab]=Urar agasas n Rubik Comment[ms]=Permainan kiub Rubik Comment[ru]=Кубик Рубика Comment[uk]=Гра з кубиком Рубіка Comment[uz]=Rubik'ning kubik o‘yini Comment=Rubik's cube game Exec=pybik Icon=pybik Type=Application Categories=Game;LogicGame; #TRANSLATORS: Add whatever keywords you want in your language, separated by semicolons, last character must be a semicolon. These keywords are used when searching for applications in Unity, GNOME Shell, etc. Keywords[ast]=rubik;cubu;rompecabeces;máxicu; Keywords[bg]=Рубик;куб;пъзел;магия; Keywords[bs]=rubik;kocka;puzzle;slagalica;zagonetka; Keywords[cs]=rubik;kostka;hlavolam;kouzelný; Keywords[de]=rubik;cube;würfel;puzzle;zauberwürfel; Keywords[el]=ρούμπικ;ρουμπικ;κύβος;κυβος;γρίφος;γριφος;kybos;kivos;kyvos;kubos;kuvos;grifos; Keywords[en_GB]=rubik;cube;puzzle;magic; Keywords[es]=rubik;cubo;rompecabezas;mágico; Keywords[fi]=rubik;cube;puzzle;magic;rubikin;kuutio;pulma; Keywords[fr]=rubik;cube;casse-tête;magique;jeu;énigme; Keywords[gl]=rubik;cubo;crebacabezas;máxico; Keywords[he]=הונגרית;רוביק;תצרף;פאזל;פזל;קסם;טריק; Keywords[it]=rubik;cubo;rompicapo;magico; Keywords[ms]=rubik;kuib;teka-teki;magik; Keywords[pl]=rubik;kostka;puzzle;łamigłówka;magiczna; Keywords[ru]=Рубик;кубик;головоломка;магия; Keywords[uk]=rubik;cube;puzzle;magic;рубік;кубик;головоломка;загадка;гра; Keywords[uz]=rubik;kubik;boshqotirma;sehrli; Keywords[zh_TW]=rubik;cube;puzzle;magic;魔術;方塊;立方體;拼圖; Keywords=rubik;cube;puzzle;magic; StartupNotify=true X-Ubuntu-Gettext-Domain=pybik pybik-3.0/data/app-meta/net.launchpad.pybik.appdata.xml0000644000175000017500000003175313173167603023271 0ustar barccbarcc00000000000000 net.launchpad.pybik MIT Pybik Pybik Pybik Pybik Pybik Pybik Pybik Pybik Pybik Pybik Pybik Pybik Pybik Pybik Pybik Pybik Pybik Pybik Pybik Pybik Рубик Pybik Rubik's cube game Rubik'ning kubik o‘yini Гра з кубиком Рубіка Кубик Рубика Permainan kiub Rubik Urar agasas n Rubik Gioco del cubo di Rubik משחק הקובייה ההונגרית Xogo do cubo de Rubik Rubik’s cube Rubiikin kuutio -peli Juego del cubo de Rubik Rubik's cube game Rubiks Zauberwürfelspiel

Pybik is a 3D puzzle game about the cube invented by Ernő Rubik.

"Pybik" - 3D Ernő Rubik tomonidan kashf qilingan kubik haqidagi boshqotirma o‘yindir.

Pybik — просторова гра з кубиком, винайденим Ерно Рубіком.

Pybik — 3D-головоломка на основе куба, изобретённого Эрнё Рубиком.

Pybik merupakan permainan teka-teki 3D mengenai kiub yang direka oleh Erno Rubik.

Pybik d urar n upuzzle 3D ɣef ugasas i d-yesnulfa Ernő Rubik.

Pybik è un rompicapo in 3D basato sul cubo inventato da Ernő Rubik.

Pybik é un crebacabezas 3D baseado no cubo inventado por Ernő Rubik.

Pybik est un casse-tête 3D inspiré du cube inventé par Ernő Rubik.

Pybik on 3D-pulmapeli, joka perustuu Ernő Rubikin keksimään kuutioon.

Pybik es un juego de rompecabezas en 3D sobre el cubo inventado por Ernő Rubik.

Pybik is a 3D puzzle game about the cube invented by Ernő Rubik.

Pybik ist ein 3D-Puzzle mit dem von Ernő Rubik erfundenen Würfel.

  • Various 3D puzzles, such as cubes, towers, prisms, tetrahedra, octahedra, dodecahedra and many more
  • Різноманітні просторові головоломки, зокрема кубики, башточки, призми, тетраедри, октаедри, додекаедри тощо
  • Pelbagai teka-teki 3D, seperti kiub, menara, prisma, tetrahedra, oktahedra, dodekahedra dan banyak lagi
  • Varios crebacabezas 3D, como cubos, torres, prismas, tetraedros, octaedros, dodecaedros e moitos máis
  • Casse-têtes variés en 3D en forme de cubes, de tours, de tétraèdres, de octaèdres, de dodécaèdres et plus encore
  • Various 3D puzzles, such as cubes, towers, prisms, tetrahedra, octahedra, dodecahedra and many more
  • Verschiedene 3D-Puzzles: Würfel, Türme, Prismen, Tetraeder, Oktaeder, Dodekaeder und viele mehr
  • Solvers for some puzzles
  • Ba’zi boshqotirmalar uchun yechimlar
  • Засоби розв’язування для деяких головоломок
  • Решения для некоторых головоломок
  • Penyelesaian untuk beberapa teka-teki
  • Risolutori per alcuni rompicapo
  • Solucionadores para algúns crebacabezas
  • Solveurs pour quelques casse-têtes
  • Ratkaisumenetelmiä joihinkin pulmiin
  • Solucionadores de algunos rompecabezas
  • Solvers for some puzzles
  • Lösungen für einige Puzzles
  • Pretty patterns
  • Ajoyib namunalar
  • Чудові візерунки
  • Красивые узоры
  • Corak cantik
  • Modelli graziosi
  • תבניות יפות
  • Patróns agradábeis
  • Jolis motifs
  • Nätit kuviot
  • Bonitos modelos
  • Pretty patterns
  • Όμορφα Μοτίβα
  • Muster
  • Hezké vzory
  • Lijepi uzorci
  • Красиви модели
  • Patrones guapos
  • Editor for move sequences
  • Harakat davomiyligini tahrirlagich
  • Редактор послідовності обертань
  • Редактор последовательности ходов
  • Penyunting untuk jujukan gerakan
  • Editor sequenze di mosse
  • Editor para secuencias de movementos
  • Éditeur pour les séquences de déplacement
  • Muokkain siirtosarjoja varten
  • Editor para secuencias de movimientos
  • Editor for move sequences
  • Bearbeitbare Zugfolgen
  • Custom colors and images on the surface of the puzzles
  • Нетипові кольори і зображення на поверхнях головоломок
  • Suai warna dan imej pada permukaan teka-teki
  • Cores personalizadas e imaxes na superficie dos crebacabezas
  • Couleurs et images personnalisées à la surface des jeux
  • Omavalintaisia värejä ja kuvia pulmien pinnoissa
  • Custom colours and images on the surface of the puzzles
  • Benutzerdefinierte Farben und Bilder auf der Oberfläche der Puzzles
https://launchpad.net/pybik/ https://bugs.launchpad.net/pybik pybik.desktop GPL-3.0+ B. Clausius barcc@gmx.de pybik pybik
  • New puzzles: Octahedron and Dodecahedron
  • Improved User-Interface
  • Support for OpenGLES v2
  • Misc improvements
  • Complete translations: English (AE and BE), Galician, German, Malay, Ukrainian
  • Partial translations: French, Italian, Finnish, Russian, Spanish, Uzbek, Hebrew, Greek, Asturian, Bulgarian, Czech, Bosnian, Polish, Portuguese (Brazil), Chinese (Taiwan), Kabyle
  • New puzzles: Triangular Prisms and Pentagonal Prisms
  • For each puzzle type, the game is saved independently
  • Misc improvements
  • Updated translations
  • New puzzle: Tetrahedron
  • New solution: Beginner's method
  • Added move transformations
  • Other new and improved plugins
  • Improved rendering engine
  • Added simple help
  • New and updated translations
  • Misc bugfixes and improvements
  • Rendering engine now uses modern OpenGL
    • should be faster on most systems
    • improved lighting effect
  • New and updated translations
  • Minor improvements and bugfixes
  • Updated translations
  • Improved user interface.
  • Added Towers and Bricks (non cubic puzzles).
  • Added an option to show the back faces.
  • The cube can be manipulated with the keyboard.
  • Animation is faster and rendering more beautiful.
  • Added more pretty patterns.
  • Added a new solver.
  • Added new translations.
  • New solutions:
    • Spiegel improved
    • Solution for the 2×2×2 Cube
  • New file format for solutions
  • Improved mouse control
    • Mouse button with control key rotates the whole cube
    • Right button moves in the opposite direction
  • Changeable background color

This release does not contain many new features. Most of the changes took place under the hood. A new solution (Spiegel) has been added.

  • Text field to edit moves in a notation similar to Singmaster's
  • The state of the cube and the moves are now stored between sessions
  • Some sequences for pretty patterns in the sidebar
  • Preferences are stored with GConf
  • UI Improvements and bugfixes
  • Port from gnubik-2.3 to Python
  • Sidebar for Actions
  • Redesigned color dialog
  • Improvements in cube rendering
http://bazaar.launchpad.net/~barcc/pybik/trunk/download/head:/screenshot1.png-20121214024125-u7dd7ltcyoqcdo17-1/screenshot1.png http://bazaar.launchpad.net/~barcc/pybik/trunk/download/head:/screenshot2.png-20121214024125-u7dd7ltcyoqcdo17-2/screenshot2.png http://bazaar.launchpad.net/~barcc/pybik/trunk/download/head:/screenshot3.png-20121214024125-u7dd7ltcyoqcdo17-3/screenshot3.png http://bazaar.launchpad.net/~barcc/pybik/trunk/download/head:/screenshot4.png-20121214024125-u7dd7ltcyoqcdo17-4/screenshot4.png http://bazaar.launchpad.net/~barcc/pybik/trunk/download/head:/datascreenshotsscree-20150330185647-6ugsxpe0x7zznw6c-1/screenshot5.png
pybik-3.0/data/shaders/0000755000175000017500000000000013173167603015211 5ustar barccbarcc00000000000000pybik-3.0/data/shaders/normals.frag0000664000175000017500000000153213103254262017517 0ustar barccbarcc00000000000000#version 120 // Copyright © 2013, 2015, 2017 B. Clausius // // 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 . #ifdef GL_ES precision mediump float; #endif varying vec3 normal; void main() { gl_FragColor = vec4(normal, 1.0); } pybik-3.0/data/shaders/pick.frag0000664000175000017500000000151513103252645016776 0ustar barccbarcc00000000000000#version 120 // Copyright © 2013, 2015, 2017 B. Clausius // // 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 . #ifdef GL_ES precision mediump float; #endif varying vec4 color; void main() { gl_FragColor = color; } pybik-3.0/data/shaders/normals.vert0000664000175000017500000000226513103252623017563 0ustar barccbarcc00000000000000#version 120 // Copyright © 2013, 2015, 2017 B. Clausius // // 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 . attribute vec4 vertex_attr; attribute vec3 normal_attr; varying vec3 normal; uniform mat4 projection; uniform mat4 modelview; uniform mat4 object; void main() { gl_Position = projection * (modelview * (object * vertex_attr)); // actually we need here the inverse transpose of the matrix (modelview*object), // but the mat3 parts are pure rotations, where the inverse is equal to the transpose normal = mat3(modelview) * (mat3(object) * normal_attr); } pybik-3.0/data/shaders/outline.frag0000664000175000017500000000250413103254307017523 0ustar barccbarcc00000000000000#version 120 // Copyright © 2014-2015, 2017 B. Clausius // // 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 . //#extension GL_OES_standard_derivatives : enable #ifdef GL_ES precision mediump float; #endif varying vec3 barycentric; //float edgeFactor() //{ // vec3 d = fwidth(barycentric); // vec3 a3 = smoothstep(vec3(0.0), d*1.5, barycentric); // return min(min(a3.x, a3.y), a3.z); //} void main() { if (barycentric == vec3(0.)) discard; else if (any(lessThan(barycentric, vec3(0.04)))) gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0); else gl_FragColor = vec4(0.5, 0.5, 0.5, 1.0); //else // gl_FragColor = vec4(mix(vec3(1.0, 0.0, 0.0), vec3(0.5), edgeFactor()), 1.); } pybik-3.0/data/shaders/lighting.vert0000664000175000017500000000300513103252614017706 0ustar barccbarcc00000000000000#version 120 // Copyright © 2013-2015, 2017 B. Clausius // // 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 . attribute vec4 vertex_attr; attribute vec3 normal_attr; attribute vec3 color_attr; attribute vec2 texcoord_attr; attribute vec3 barycentric_attr; varying vec4 position; varying vec3 normal; varying vec3 color; varying vec2 texcoord; varying vec3 barycentric; uniform mat4 projection; uniform mat4 modelview; uniform mat4 object; const vec3 gamma = vec3(2.2); void main() { position = modelview * (object * vertex_attr); gl_Position = projection * position; // actually we need here the inverse transpose of the matrix (modelview*object), // but the mat3 parts are pure rotations, where the inverse is equal to the transpose normal = mat3(modelview) * (mat3(object) * normal_attr); color = pow(color_attr, gamma); texcoord = texcoord_attr; barycentric = barycentric_attr; } pybik-3.0/data/shaders/simple.vert0000664000175000017500000000227213103252670017401 0ustar barccbarcc00000000000000#version 120 // Copyright © 2013-2015, 2017 B. Clausius // // 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 . attribute vec4 vertex_attr; attribute vec3 color_attr; attribute vec2 texcoord_attr; attribute vec3 barycentric_attr; varying vec3 color; varying vec2 texcoord; varying vec3 barycentric; uniform mat4 projection; uniform mat4 modelview; uniform mat4 object; const vec3 gamma = vec3(2.2); void main() { gl_Position = projection * (modelview * (object * vertex_attr)); color = pow(color_attr, gamma); texcoord = texcoord_attr; barycentric = barycentric_attr; } pybik-3.0/data/shaders/outline.vert0000664000175000017500000000176613103252640017573 0ustar barccbarcc00000000000000#version 120 // Copyright © 2014-2015, 2017 B. Clausius // // 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 . attribute vec4 vertex_attr; attribute vec3 barycentric_attr; varying vec3 barycentric; uniform mat4 projection; uniform mat4 modelview; uniform mat4 object; void main() { gl_Position = projection * (modelview * (object * vertex_attr)); barycentric = barycentric_attr; } pybik-3.0/data/shaders/simple.frag0000664000175000017500000000244213103252660017336 0ustar barccbarcc00000000000000#version 120 // Copyright © 2013-2015, 2017 B. Clausius // // 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 . #ifdef GL_ES precision mediump float; #endif uniform sampler2D tex; varying vec3 color; varying vec2 texcoord; varying vec3 barycentric; #ifndef GL_ES const #endif vec3 bevel_color = vec3(pow(15./255., 2.2)); const vec3 invgamma = vec3(1./2.2); void main() { vec3 col_face; vec4 col_tex = texture2D(tex, texcoord); if (barycentric == vec3(0.)) { // unlabeled part col_face = bevel_color; } else { // the label col_face = mix(color.rgb, col_tex.rgb, col_tex.a); } gl_FragColor = vec4(pow(col_face, invgamma), 1.); } pybik-3.0/data/shaders/hud.frag0000777000175000017500000000000012445642424020416 2pick.fragustar barccbarcc00000000000000pybik-3.0/data/shaders/hud.vert0000664000175000017500000000156313141323412016665 0ustar barccbarcc00000000000000#version 120 // Copyright © 2013, 2015, 2017 B. Clausius // // 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 . attribute vec4 vertex_attr; attribute vec4 color_attr; varying vec4 color; void main() { gl_Position = vertex_attr; color = color_attr; } pybik-3.0/data/shaders/label.frag0000664000175000017500000000155613103252564017134 0ustar barccbarcc00000000000000#version 120 // Copyright © 2014-2017 B. Clausius // // 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 . #ifdef GL_ES precision mediump float; #endif varying vec4 color; void main() { if (color.a == 0.) discard; gl_FragColor = color; } pybik-3.0/data/shaders/pick.vert0000664000175000017500000000173513103252651017040 0ustar barccbarcc00000000000000#version 120 // Copyright © 2013, 2015, 2017 B. Clausius // // 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 . attribute vec4 vertex_attr; attribute vec4 color_attr; varying vec4 color; uniform mat4 picking; uniform mat4 projection; uniform mat4 modelview; void main() { gl_Position = picking * projection * modelview * vertex_attr; color = color_attr; } pybik-3.0/data/shaders/label.vert0000664000175000017500000000206713103252574017174 0ustar barccbarcc00000000000000#version 120 // Copyright © 2014-2017 B. Clausius // // 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 . attribute vec4 vertex_attr; attribute vec3 color_attr; attribute vec3 barycentric_attr; varying vec4 color; uniform mat4 projection; uniform mat4 modelview; uniform mat4 object; void main() { gl_Position = projection * (modelview * (object * vertex_attr)); color.rgb = color_attr; color.a = (barycentric_attr == vec3(0.)) ? 0. : 1.; } pybik-3.0/data/shaders/lighting.frag0000664000175000017500000000537013103277022017654 0ustar barccbarcc00000000000000#version 120 // Copyright © 2013-2017 B. Clausius // // 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 . #ifdef GL_OES_standard_derivatives #extension GL_OES_standard_derivatives : enable #endif #ifdef GL_ES precision mediump float; #endif uniform sampler2D tex; varying vec4 position; varying vec3 normal; varying vec3 color; varying vec2 texcoord; varying vec3 barycentric; #ifndef GL_ES const #endif vec3 bevel_color = vec3(pow(15./255., 2.2)); const vec3 pointlight = vec3(0., 0., 0.); // diffuse+ambient+specular is the maxintensity const float diffuse = 0.5; const float ambient = 1.2; const float shininess = 15.; const float attenuation = 0.001; const vec3 specular = vec3(.3); const vec3 invgamma = vec3(1./2.2); vec3 lighting(vec3 col_face) { vec3 norm = normalize(normal); vec3 lightvector = pointlight - position.xyz; vec3 dirtolight = normalize(lightvector); float cos_angle = dot(norm, dirtolight); cos_angle = clamp(cos_angle, 0., 1.); // attenuation float light_distance_sqr = dot(lightvector, lightvector); float attenfactor = 1. / (1.0 + attenuation * light_distance_sqr); // combine color components vec3 col = ambient * col_face; col += specular * attenfactor * pow(cos_angle, shininess); col += diffuse * col_face * cos_angle; return col; } void main() { vec3 col; vec4 col_tex = texture2D(tex, texcoord); float bary_min = min(min(barycentric.x, barycentric.y), barycentric.z); #ifdef GL_OES_standard_derivatives float bary_width = fwidth(bary_min); #endif if (barycentric == vec3(0.)) { // unlabeled part col = bevel_color; } else if (bary_min <= 0.02) { // frame around the label col = bevel_color; } else { // the label col = mix(color.rgb, col_tex.rgb, col_tex.a); #ifdef GL_OES_standard_derivatives bary_min = (bary_min - 0.02) / 1.1; if (bary_min < bary_width) { // smooth at the frame col = mix(bevel_color, col, bary_min / bary_width); } #endif } col = lighting(col); gl_FragColor = vec4(pow(col, invgamma), 1.); } pybik-3.0/data/ui/0000755000175000017500000000000013173167603014175 5ustar barccbarcc00000000000000pybik-3.0/data/ui/qt/0000755000175000017500000000000013173167603014621 5ustar barccbarcc00000000000000pybik-3.0/data/ui/qt/about.ui0000644000175000017500000001600213061027400016253 0ustar barccbarcc00000000000000 AboutDialog Qt::ApplicationModal About Pybik icon Qt::AlignCenter 1 0 16 75 true appname Qt::PlainText Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter 1 0 version Qt::PlainText description Qt::PlainText Qt::AlignCenter true 0 About copyright Qt::PlainText Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter website Qt::RichText true Translators: Qt::PlainText false Contribute Qt::RichText Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop true true License true false false QTextEdit::NoWrap false true QDialogButtonBox::Close buttonBox accepted() AboutDialog accept() 248 254 157 274 buttonBox rejected() AboutDialog reject() 316 260 286 274 pybik-3.0/data/ui/qt/TabKeys.qml0000664000175000017500000001514612747611244016710 0ustar barccbarcc00000000000000// Copyright © 2015-2016 B. Clausius // // 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 . import QtQuick 2.4 import QtQuick.Controls 1.3 import QtQuick.Layouts 1.1 ColumnLayout { id: verticalLayout_2 Component { id: editableDelegate Item { Text { width: parent.width anchors.margins: 4 anchors.left: parent.left anchors.verticalCenter: parent.verticalCenter visible: !styleData.selected || styleData.role == "key" elide: styleData.elideMode color: styleData.textColor text: styleData.value property bool editing: false MouseArea { anchors.fill: parent enabled: styleData.selected && !parent.editing onClicked: { parent.forceActiveFocus() parent.editing = true parent.text = ctx.tr("Press a key …") } } onActiveFocusChanged: { if (editing && !activeFocus) { text = styleData.value editing = false } } Keys.onPressed: { if (editing) { if (event.key == Qt.Key_Escape) { text = styleData.value event.accepted = true editing = false focus = false } else if (event.count == 1) { var keystring = ctx.keytostring(event.key, event.modifiers) if (keystring != '') { ctx.movekey_model[styleData.row].key = keystring ctx.movekey_item_changed() text = styleData.value event.accepted = true editing = false focus = false } } } } } Rectangle { anchors.fill: parent visible: styleData.selected && styleData.role == "text" color: "transparent" Rectangle { anchors.fill: parent anchors.margins: 1 color: textinput.activeFocus ? palette.base : "transparent" TextInput { id: textinput width: parent.width anchors.margins: 3 anchors.left: parent.left anchors.verticalCenter: parent.verticalCenter color: activeFocus ? palette.text : styleData.textColor text: styleData.value property bool editing: false onActiveFocusChanged: { if (activeFocus) editing = true } onEditingFinished: { if (editing) { ctx.movekey_model[styleData.row].text = text ctx.movekey_item_changed() editing = false focus = false } } Keys.onPressed: { if (event.key == Qt.Key_Escape) { text = styleData.value event.accepted = true editing = false focus = false } } } } } } } TableView { id: listview_movekeys Layout.fillHeight: true Layout.minimumHeight: 200 Layout.fillWidth: true Layout.minimumWidth: 100 alternatingRowColors: false model: ctx.movekey_model itemDelegate: editableDelegate TableViewColumn { role: "text" title: ctx.tr("Move") } TableViewColumn { role: "key" title: ctx.tr("Key") } } RowLayout { id: horizontalLayout Rectangle { id: horizontalSpacer Layout.fillWidth: true implicitWidth: 40 implicitHeight: 20 } ToolButton { id: button_movekey_add tooltip: ctx.tr("Add") iconName: "list-add" onClicked: { listview_movekeys.currentRow = ctx.movekey_item_added(listview_movekeys.currentRow) listview_movekeys.selection.select(listview_movekeys.currentRow) //self.ui.listview_movekeys.edit(index) } } ToolButton { id: button_movekey_remove tooltip: ctx.tr("Remove") iconName: "list-remove" onClicked: { if (listview_movekeys.currentRow >= 0) { listview_movekeys.currentRow = ctx.movekey_item_removed(listview_movekeys.currentRow) listview_movekeys.selection.select(listview_movekeys.currentRow) } } } ToolButton { id: button_movekey_reset tooltip: ctx.tr("Reset") iconName: "document-revert" onClicked: ctx.movekey_items_reset() } } } pybik-3.0/data/ui/qt/SimpleList.qml0000664000175000017500000000372312746755376017447 0ustar barccbarcc00000000000000// Copyright © 2016 B. Clausius // // 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 . import QtQuick 2.4 import QtQuick.Controls 1.3 Rectangle { id: root border.color: palette.shadow border.width: 1 radius: 3 color: "transparent" implicitHeight: combobox_shader.implicitHeight + 2 property var model property int currentIndex: 0 Column { id: combobox_shader z: -1 anchors.margins: 1 anchors.fill: parent Repeater { id: repeater_shader model: root.model Rectangle { width: combobox_shader.width height: label_shader.height+6 border.color: palette.shadow border.width: root.currentIndex==index ? 1 : 0 color: root.currentIndex==index ? palette.highlight : palette.button Label { id: label_shader x: 3 y: 3 height: implicitHeight text: modelData.text color: root.currentIndex==index ? palette.highlightedText : palette.buttonText } MouseArea { anchors.fill: parent onClicked: root.currentIndex = index } } } } } pybik-3.0/data/ui/qt/AboutDialog.qml0000664000175000017500000002422113061031260017512 0ustar barccbarcc00000000000000// Copyright © 2015-2017 B. Clausius // // 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 . import QtQuick 2.4 import QtQuick.Controls 1.3 import QtQuick.Layouts 1.1 FocusScope { id: root Item { anchors.fill: parent Rectangle { id: header width: parent.width height: headerrow.implicitHeight color: palette.window RowLayout { id: headerrow anchors.fill: parent ToolButton { id: backbutton iconName: "back" onClicked: { ctx.aboutdialog_visible = false; root.Stack.view.pop() } } Image { id: appicon fillMode: Image.Pad source: Qt.resolvedUrl(ctx.config("APPICON_FILE")) } Column { id: col_apptext Layout.fillWidth: true spacing: 10 Row { anchors.horizontalCenter: parent.horizontalCenter spacing: ctx.gu(20) Label { id: appname font.pointSize: ctx.gu(16) font.weight: Font.DemiBold font.bold: true text: ctx.config_tr("APPNAME") textFormat: Text.PlainText } Label { id: version anchors.baseline: appname.baseline text: ctx.config("VERSION") textFormat: Text.PlainText } } Label { id: description anchors.horizontalCenter: parent.horizontalCenter text: ctx.config_tr("SHORT_DESCRIPTION") textFormat: Text.PlainText wrapMode: Text.WordWrap } } } } Rectangle { id: body anchors.top: header.bottom anchors.bottom: parent.bottom anchors.left: parent.left anchors.right: parent.right implicitWidth: tabview.implicitWidth implicitHeight: tabview.implicitHeight color: palette.window TabView { id: tabview anchors.fill: parent Tab { id: tab_about title: ctx.tr("About") property bool anim_paused: false onVisibleChanged: anim_paused = false Item { anchors.fill: parent Column { id: labels_about anchors.margins: ctx.gu(6) anchors.top: parent.top anchors.left: parent.left anchors.right: parent.right spacing: 6 Label { textFormat: Text.PlainText text: ctx.config("COPYRIGHT") } Label { text: ctx.dialog_text("about_website") textFormat: Text.StyledText MouseArea { anchors.fill: parent acceptedButtons: Qt.NoButton cursorShape: Qt.PointingHandCursor } onLinkActivated: Qt.openUrlExternally(link) } Label { text: ctx.tr("Translators:") textFormat: Text.PlainText } } TextArea { id: translators width: parent.width anchors.top: labels_about.bottom anchors.bottom: parent.bottom text: ctx.dialog_text("about_translators") textFormat: Text.RichText readOnly: true verticalScrollBarPolicy: tab_about.anim_paused ? Qt.ScrollBarAlwaysOn : Qt.ScrollBarAlwaysOff property real anim_from: -50.0 property real anim_to: 50.0 + contentHeight - viewport.height property real anim_duration: (anim_to - anim_from) * 16.0 / ctx.gu(1) MouseArea { anchors.fill: parent enabled: !tab_about.anim_paused cursorShape: enabled ? Qt.ArrowCursor: parent.hoveredLink=="" ? Qt.IBeamCursor : Qt.PointingHandCursor onPressed: { mouse.accepted = true; tab_about.anim_paused = true } onWheel: { wheel.accepted = false; tab_about.anim_paused = true } } SequentialAnimation { id: animation running: root.visible paused: !tab_about.visible || tab_about.anim_paused loops: Animation.Infinite NumberAnimation { target: translators.contentItem property: "contentY" from: translators.anim_from to: translators.anim_to duration: Math.max(0, translators.anim_duration) easing.type: Easing.InOutSine } NumberAnimation { target: translators.contentItem property: "contentY" from: translators.anim_to to: translators.anim_from duration: Math.max(0, translators.anim_duration) easing.type: Easing.InOutSine } } //Animation is updated only if stopped onAnim_durationChanged: { if (animation.running) animation.restart() } onLinkActivated: Qt.openUrlExternally(link) } } } Tab { title: ctx.tr("Contribute") TextArea { anchors.fill: parent frameVisible: false text: ctx.dialog_text("about_contribute") readOnly: true textFormat: Text.RichText wrapMode: Text.WordWrap onLinkActivated: Qt.openUrlExternally(link) } } Tab { id: tab_license title: ctx.tr("License") property bool short_text: true TextArea { anchors.fill: parent frameVisible: false function get_license_text(short_text) { if (short_text) { wrapMode = TextEdit.WordWrap return ctx.dialog_text("about_license_short") } var longtext = ctx.dialog_text("about_license_full") if (longtext) { wrapMode = TextEdit.NoWrap return longtext } wrapMode = TextEdit.WordWrap return ctx.dialog_text("about_license_notfound") } text: get_license_text(tab_license.short_text) readOnly: true textFormat: Text.RichText wrapMode: TextEdit.WordWrap onLinkActivated: { if (link.indexOf("text:")===0) tab_license.short_text = false else Qt.openUrlExternally(link) } } onVisibleChanged: { if (visible) short_text = true } } } } } Keys.onPressed: { if (event.key == Qt.Key_Escape || event.key == Qt.Key_Return || event.key == Qt.Key_Enter) { //if (!event.accepted) { event.accepted = true ctx.aboutdialog_visible = false Stack.view.pop() } } //} } pybik-3.0/data/ui/qt/main.ui0000644000175000017500000002677313155642246016124 0ustar barccbarcc00000000000000 MainWindow Pybik 6 0 0 0 0 0 0 0 0 0 0 0 0 Qt::LeftToRight QFrame::StyledPanel QFrame::Raised 0 0 0 0 0 0 0 Qt::NoFocus true Qt::NoFocus true Qt::Horizontal 0 0 0 Qt::PlainText 0 0 0 0 0 0 0 0 0 0 QAbstractItemView::NoEditTriggers QAbstractItemView::NoDragDrop 128 128 QListView::Static QListView::IconMode true true false false TopToolBarArea false false false TopToolBarArea false 0 0 false false TopToolBarArea false &New Challenge Ctrl+N Ne&w Solved Ctrl+Shift+N &Quit Ctrl+Q Select Puzzle Esc &Set as Initial State &Reset Rotation &Preferences … true true &Status Bar &Info … Rewind Previous Stop Play Next Forward Add Mark Mark the current place in the sequence of moves Remove Mark Remove the mark at the current place in the sequence of moves true true &Edit Bar &Help … Help Help F1 ModelSelectionWidget QListWidget
../../../pybiklib/ext/qtui_p.h
pybik-3.0/data/ui/qt/TabGraphic.qml0000664000175000017500000001627712760504011017344 0ustar barccbarcc00000000000000// Copyright © 2015-2016 B. Clausius // // 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 . import QtQuick 2.4 import QtQuick.Controls 1.3 import QtQuick.Layouts 1.1 GridLayout { id: root property var mirrorfaces_range: ctx.get_settings("draw.mirror_distance_range") anchors.fill: parent columns: 4 Label { Layout.columnSpan: 4 text: ctx.tr("Animation Speed:") Layout.fillWidth: true Layout.minimumWidth: 100//implicitWidth //Layout.minimumHeight: implicitHeight } Slider { id: slider_animspeed Layout.columnSpan: 3 Layout.fillWidth: true Layout.minimumWidth: 50 //Layout.preferredWidth: 100 //Layout.maximumWidth: 300 //Layout.minimumHeight: implicitHeight orientation: Qt.Horizontal //tickmarksEnabled: true //stepSize: 10.0 onValueChanged: ctx.set_settings("draw.speed", value) Component.onCompleted: { // this values need to be set in correct order, so that // no spurious valueChanged signal emitted. Changing // minimumValue/maximumValue will emit such a signal if value // is not in the new range. var range = ctx.get_settings("draw.speed_range") maximumValue = range[1] // initial 1.0 value = ctx.get_settings("draw.speed") // initial 0.0 minimumValue = range[0] // initial 0.0 } } Button { id: button_animspeed_reset //Layout.minimumWidth: implicitWidth //Layout.minimumHeight: implicitHeight iconName: "edit-clear" onClicked: { slider_animspeed.value = ctx.get_settings("draw.speed_default"); ctx.del_settings("draw.speed") } } CheckBox { id: checkbox_mirrorfaces Layout.columnSpan: 2 //Layout.minimumWidth: implicitWidth //Layout.minimumHeight: implicitHeight text: ctx.tr("Mirror Distance:") checked: ctx.get_settings("draw.mirror_faces") onCheckedChanged: ctx.set_settings("draw.mirror_faces", checked) } SpinBox { id: spinbox_mirrorfaces Layout.fillWidth: true Layout.minimumWidth: 10//implicitWidth enabled: checkbox_mirrorfaces.checked //Layout.preferredWidth: implicitWidth //Layout.minimumHeight: implicitHeight decimals: 1 stepSize: 0.1 //implicitWidth: 400 //width: 400 minimumValue: root.mirrorfaces_range[0] maximumValue: root.mirrorfaces_range[1] value: ctx.get_settings("draw.mirror_distance") onValueChanged: ctx.set_settings("draw.mirror_distance", value) } Button { id: button_mirror_faces_reset //Layout.minimumWidth: implicitWidth //Layout.minimumHeight: implicitHeight iconName: "edit-clear" onClicked: { checkbox_mirrorfaces.checked = ctx.get_settings("draw.mirror_faces_default"); ctx.del_settings("draw.mirror_faces") spinbox_mirrorfaces.value = ctx.get_settings("draw.mirror_distance_default"); ctx.del_settings("draw.mirror_distance") } } Rectangle { id: line Layout.columnSpan: 4 Layout.fillWidth: true Layout.minimumWidth: 100//implicitWidth //Layout.minimumHeight: implicitHeight height: 1 color: palette.shadow } Label { id: label_6 //Layout.minimumWidth: implicitWidth //Layout.minimumHeight: implicitHeight text: ctx.tr("Quality:") } SimpleList { id: list_shader Layout.columnSpan: 2 Layout.fillWidth: true Layout.minimumWidth: 10//implicitWidth //Layout.minimumHeight: implicitHeight model: ctx.shadermodel onCurrentIndexChanged: ctx.set_settings("draw.shader", currentIndex) onModelChanged: currentIndex = ctx.get_settings("draw.shader") } Button { id: button_shader_reset //Layout.minimumWidth: implicitWidth //Layout.minimumHeight: implicitHeight iconName: "edit-clear" onClicked: { list_shader.currentIndex = ctx.get_settings("draw.shader_default"); ctx.del_settings("draw.shader") } } Label { id: label_2 //Layout.minimumWidth: implicitWidth //Layout.minimumHeight: implicitHeight text: ctx.tr("Antialiasing:") //toolTip: ctx.tr("Lower antialiasing has better performance, higher antialiasing has better quality.") } SimpleList { id: list_samples Layout.columnSpan: 2 Layout.fillWidth: true Layout.minimumWidth: 10//implicitWidth //Layout.minimumHeight: implicitHeight model: ctx.samplemodel onCurrentIndexChanged: ctx.set_settings("draw.samples", currentIndex) onModelChanged: currentIndex = ctx.sampleindex } Button { id: button_antialiasing_reset //Layout.minimumWidth: implicitWidth //Layout.minimumHeight: implicitHeight iconName: "edit-clear" onClicked: { list_samples.currentIndex = ctx.get_settings("draw.samples_default"); ctx.del_settings("draw.samples") } } Label { id: label_needs_restarted Layout.columnSpan: 4 Layout.fillWidth: true //Layout.fillHeight: true Layout.minimumWidth: 100 Layout.preferredWidth: 100 //Layout.minimumHeight: contentHeight//implicitHeight //Layout.preferredHeight: contentHeight //visible: false visible: (ctx.activesamples > 1) && (ctx.activesamples != (1< // // 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 . import QtQuick 2.4 import QtQuick.Controls 1.3 import QtQuick.Dialogs 1.2 Button { property alias color: colorDialog.color property alias currentColor: colorDialog.currentColor signal accepted() implicitWidth: 100 Rectangle { anchors.centerIn: parent height: parent.height - 10 width: parent.width - 30 color: colorDialog.color border.width : 1 border.color : "black" } ColorDialog { id: colorDialog modality: Qt.WindowModal onAccepted: color = currentColor } onClicked: colorDialog.open() } pybik-3.0/data/ui/qt/HelpDialog.qml0000664000175000017500000000303112746544726017355 0ustar barccbarcc00000000000000// Copyright © 2015-2016 B. Clausius // // 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 . import QtQuick 2.3 import QtQuick.Controls 1.3 import QtQuick.Window 2.2 Window { id: helpdialog width: 380 height: 500 flags: Qt.Dialog modality: Qt.NonModal Component.onCompleted: ctx.set_transient(helpdialog) onVisibleChanged: { if (!visible) ctx.helpdialog_visible = false } TextArea { id: textarea anchors.fill: parent focus: true text: ctx.dialog_text("help_text") textFormat: TextEdit.RichText readOnly: true Keys.onPressed: { if (event.key == Qt.Key_Escape || event.key == Qt.Key_Return || event.key == Qt.Key_Enter) { if (!event.accepted) { event.accepted = true helpdialog.close() } } } } } pybik-3.0/data/ui/qt/ModelPage.qml0000664000175000017500000001132612760306740017174 0ustar barccbarcc00000000000000// Copyright © 2015-2016 B. Clausius // // 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 . import QtQuick 2.3 import QtQuick.Controls 1.3 import QtQuick.Layouts 1.1 FocusScope { id: root focus: true Rectangle { anchors.fill: parent color: palette.window focus: true SystemPalette { id: palette } ColumnLayout { id: selectlayout anchors.fill: parent focus: true spacing: 0 ToolBar { Layout.fillWidth: true z: 1 RowLayout { anchors.fill: parent ToolButton { iconName: "back" onClicked: { ctx.model_back(); root.Stack.view.pop() } } Label { id: title Layout.fillWidth: true horizontalAlignment: Text.AlignHCenter text: '' } } } GridView { id: gridview Layout.fillWidth: true Layout.fillHeight: true focus: true keyNavigationWraps: true onModelChanged: { title.text = ctx.selectmodel_title; currentIndex = ctx.selectmodel_index } cellWidth: ctx.gu(128) cellHeight: ctx.gu(128) Component.onCompleted: { forceActiveFocus() // root.Stack.index == -1, use Timer to set model immediately afterwards setmodeltimer.running = true } onWidthChanged: { positionViewAtIndex(currentIndex, GridView.Center) cellWidth = width/Math.floor(width/ctx.gu(128)) } Timer { id: setmodeltimer interval: 0 onTriggered: gridview.model = ctx.model_get_modeldata(root.Stack.index) } delegate: Image { width: gridview.cellWidth height: ctx.gu(128) fillMode: Image.PreserveAspectFit source: modelData.key Rectangle { anchors.bottom: parent.bottom anchors.horizontalCenter: parent.horizontalCenter anchors.margins: ctx.gu(4) height: modeltext.height width: modeltext.contentWidth+6 color: "#66000000" radius: ctx.gu(4) Text { id: modeltext anchors.bottom: parent.bottom anchors.horizontalCenter: parent.horizontalCenter width: ctx.gu(128-10) text: modelData.text color: "white" wrapMode: Text.Wrap textFormat: Text.PlainText horizontalAlignment: Text.AlignHCenter } } MouseArea { hoverEnabled: true anchors.fill: parent anchors.margins: 1 //avoid spurious scroll if mouse moves to adjacent items onEntered: { if (gridview.contains(mapToItem(gridview, mouseX, mouseY))) parent.GridView.view.currentIndex = index } onClicked: { if (ctx.model_selected(root.Stack.index, index)) root.Stack.view.push(Qt.resolvedUrl("ModelPage.qml")) else root.Stack.view.pop(null) } } } highlight: Rectangle { radius: ctx.gu(8) color: "#55003070" } } } } } pybik-3.0/data/ui/qt/images/0000755000175000017500000000000013173167603016066 5ustar barccbarcc00000000000000pybik-3.0/data/ui/qt/images/select-model.png0000644000175000017500000000061713155222522021145 0ustar barccbarcc00000000000000PNG  IHDR@@PLTE$029@'5>E& ;) %S(X+`>W  ]#e/;FOVY^! b euz1 ? HLtRNS@fIDATXչ@DQFEEq}]AY_3}4ŐN'<"c^>:DۡOX@!<`*%]u/ xޏWtl] oa]xL c9м 0P(9Gybמ~nXa$yIENDB`pybik-3.0/data/ui/qt/images/new-solved.png0000644000175000017500000001435213137214760020661 0ustar barccbarcc00000000000000PNG  IHDR@@iqgAMA a cHRMz&u0`:pQ<bKGD oFFs"@ pHYs+tIME )23 vpAg01IDATxś{\U{U]H:I'0WȂ #ATVYE 3 ApƁ|DNFvguxpUVJ6$1DyVWWֽVwWUWw|{~{ 5ke*Hnژ $x;g&V.>O c$ǟe7'#_vKi漡m~>'ﶯeYs_kuwkNHT6 _>+,1sfZvMs8O>u+h9*fʥ ͥM;yBsд CBBLh6]9 !Xfq!-r `=k.y@47{P]i c.6 =~-*. 4ܧBK\g{ӛ MXwvsٽXXD֯Ys{_v^&o*sRRTH.Df<:Yp ڕϪ9Yz2{p\$ &-JE.ߢ }1AJI$4szs`Bv+II\'x$&̡!h`vSD0 Ǣ0YNTPE#lCd)v]1@K|ceuפE%>Zk5⭝iv7DAF2tBh)t# >M[[.X,,@UՔYU"~mSfUڅ]SϗxTآmNsO q5)hew!ϲ@XT-&Ȩ Qwh)0YHb+!(JbFwETC<ը IUe #|X6tϴx7Effh1=#ƫ ;Yb Q$8ȸEB*o%J48<5}Ɛhj,9YhfP\!:[*׾M%T(5-ma{d-[5S}B0z@lt 䐤ZD R!"O95O P*k9o!{1V.cZ66uLQ4;aYx)Z57D{f3L~s ^&LJ)0PU!F۶1MlN cw;7_•%Nƭ9å wG&Ցe:AEaZ/!4G? IraER 2d0`,@uc\}UP ]C{R@BhX=cɩ&K?M@aC J $8= R̢s٘AFԎyA\0ׯiézikQIe' %m~z ه#hAXMP$5P(o78?:|$5g~c=[Zu5&0EP>B5)/!/{$gpl7naA".õ.iI6[+7hwTA}ph`(ji BKRۖ9!+6C$,–:@l<|[a /!ΞVB BUcW?qC4I[fIBY9:WtÊ6t Oxt]1Ȇ:)9ev5&ͱ+v4uGCsA=jįcq1 RW+l{OHϽ;Cwd3hC*;Ah %fA )-CX/R՜:jԺu`Xkˤ~=C᯿2ORƉ~Ij͎Pg.PY3$OhGȿZ$Y[cu@m na c6fOV/9ʭ}pݖ5j"W(8sdk³+$I1ȽRD0)0[au Q A#Bm/:v7)ňiϵ80>w>I:3*I 4RJd^:+R)R!I~G'ԶjL \FqʆϜ&_mմmؼoocO>3cNi[& ZLBx B;'KQ,N¡"MB5( 2U]FȆJI{[m)nPXQ/J)S+V?r1ӌQ@>0jC+8Ru7A("jEnț#h6rF&2Rp$"#H?_Ϟ*Voxyա;< ^_ռp̡KD;6pSV%ROIBVUVf$.zאJ!ɉUS$#8@1ͬ01]T)G> ~`F,ڭT6TvTmɡB YQd7vK0AwU)izeA߶6p}qj9fI͟z"cpèO=}Ɓa[_/#ƾ A}+hfL'<yts A.??c# BlyȊ˶Ƥ(лicz+> Ϋi5wtõPwF*$$XSp )*ñiT!9&^= \yr4oP"M`SC\PNWzdGfI ?#B߳+v<ނ={W|~ui=(t+sN|\X%.)mۙ:R @l轢}'b,[nټVvt~L)z ߸inzj*l5h[]^y#KvE:Fc%A8N0rL-f?5 0@eG>w_[fmϓm{߾wU: s5Pu©aW}׎#2#z>-}λnÌ\VqbVZsne,=ƂxU>׎?Gw_v_v){@7 ;tH}f?Ddžu5s-9ևo^7##,pD]Oߠ ?b{|:h&p$w>+^m5~xQ,Ղ}/;ZiTk2qK>rw}>3irn؝Ǎ :O%K=\vYCqq1RJ2m'N/τ765-0;o5F|Z&b҆w^^.0a9ʕ+/~ p-Q[dk<|uO ̧`ŒLDl̙ >I&1gjkk4sm֭~8peVbُ]tz(Q#oOsy *f~"0_V,YPo)ลhp4ɮĵ &PSSüyhkkcʕqJJ9iIwb$O%F"g[v-63XXϿyRlckNGMQA[Bi`0H4E(%8Z\Oeqgn-HQ \* T4*^;)׵I3wiv/YӖ/w7Lm#y %)~:mnI>$#[Nb; G xGB8R+1Ks:odP `$A4>;a`b҆,rE7J4;Pܿ?']J*]˥n[ 8Zjڜ2}[G9O0, 5517~0}Ahb(TK_w֬XtђS8vaa"`\,K.-7XlP㗔!ѰT%9liG?c[*p7FgR^II3Q@c!K5"f(όS{M{ $ObgkE{>?'~|H/У%Jp@U64^סX3/ xzHhεҒ/ۑmcB$jPI`*w ǏepRRpOit*1x |V(_s L\BQ*` .d7˕QDg>?l50J0) ?W&#i{dH?P.d ọ&f[bAMO N%Ci%K4X+ uNo+(4fm#iꫯ>'O7ѣݻBH&KiBQ/h+G\n!5Pts0 RMՆDrLPhr5ҀK=vߊkVpn}pL*;ᦛnQ__ϬYZٱcamق88 Kvs󹤎j ,\ʗsA\znũㅢ,.4eTFk^Fڵk( P?۷ xxG8>ԍؖE`VWOq7wr0#A|8x6nȆ b1uTƎ˂ xꩧxMgٲe},quqw~TO k xBS fi }ȯ1 GJ I@1@8$ ~myI$!>}:^={0zhͅm&[i.42q5.v *umƖ-[ذahLPkgnٝ'P#/̛5+\2AFk7GYLq4ÃEKò8Lp0h(UVFg S%v5չ=8̉tBg޼ymCRUMgok-P3O_]uc"e5&F 9B;P=uٸ/}"`pfq|(k BȮwܴֈq*3ϝÍ7ȭފD=yK|H,1T+afq3Ws8W>\E_`[-aesTLXyuE괓iAyJ)rrЭZhֺedxU>.ی@ 8#W{"̝eX?W~<OP]-+'i@8žɱOҟUZ|=>O_NB6{ L~JΜ#TŸZ.ظfH)~`Ɣ"Ǝ7)OD]a0 R ,^ ~@rxBQYY. K¡NrLKhIɡ`iC["B W \pY6PBdH4@pT:#׀TXaۊuVUQ>"mqM0o9`?!j݆_CT'ڜt$;MK|F$'qE * <hE,/QJgI0Q7L4xKlmm|9F44D9\p'u+at1.2jPn.Bpއae7ozpu&Ѭ m,S3EG٭_7wh3iFm$:.c&HsԨX*GP/&m#izp94_!S$3;@pTZKxC⚻˵Yq5QMMM 6mG?C?;QYC@L a(`: ʷGn QjPNvD`Ut{ ˨< AӱaxxM"ARL3SQ̐*8O2\q!PlͻR]%Գ)3gP_^Y1"҄wN#H v²(A)sJ`,;2̘\7!lj *?qF QH4L`INSLL)K7${]^8^LU #w.qzu * ; Ԁs}GjNeDEʦt&k'BgGH;$$Uz@C$$' C61o Zk I"mtCևs1*A :tϻqG/\=$NWf (mڽU˖YD2Pʫ#iZn齁]_$/ltv\֋8*'UʃuӚuk\/rrWI4Z9hÌ1fӶgV @/,xE@Wf2BJ<\6e_,Kq-Z,6+ömdDvqe:95W7ƃ(H'v!ҎMLGI;.]#8`ot(nE&]o7uu?(<ᖦ7Vˮϛ\.U? oR![g;R{F(CV 4 m20LЊp /DfNm7yt˲.Y]h~;}):ɇ,6-yuCgNe9Ib($Lz?ٽh\]ӽ_3+|Ɏ75Ch@64d yN Fh_ __v ݝ׮{>l3N>,\~翽?翺Wvz<`gJs| 4m!`\ӯ/z{E#;8oG!Mi@"|gY4oIa{ղW8"?eM㿎;,-kk׬]67qk̲.'Lk) MŁԲO4 4mlm߼yEsNE?]7j»9Q|6o|Z<=:%tEXtdate:create2017-06-11T22:41:50+02:00r%tEXtdate:modify2017-06-11T22:41:50+02:00/'GIENDB`pybik-3.0/data/ui/qt/main.qml0000664000175000017500000000422012756251070016256 0ustar barccbarcc00000000000000// Copyright © 2015-2016 B. Clausius // // 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 . import QtQuick 2.4 import QtQuick.Controls 1.3 StackView { anchors.fill: parent SystemPalette { id: palette } function push_page(pagevisible, filename) { if (pagevisible) push(Qt.resolvedUrl(filename)) } Component.onCompleted: { push(Qt.resolvedUrl("GamePage.qml")) push_page(ctx.model_pagevisible(), "ModelPage.qml") if (ctx.singlewin()) { push_page(ctx.preferences_visible, "PreferencesPage.qml") push_page(ctx.helpdialog_visible, "HelpPage.qml") } push_page(ctx.aboutdialog_visible, "AboutDialog.qml") } onCurrentItemChanged: if (currentItem) currentItem.focus = true Connections { target: ctx.singlewin() ? ctx : null onPreferences_visibleChanged: push_page(ctx.preferences_visible, "PreferencesPage.qml") onHelpdialog_visibleChanged: push_page(ctx.helpdialog_visible, "HelpPage.qml") } Connections { target: ctx onAboutdialog_visibleChanged: push_page(ctx.aboutdialog_visible, "AboutDialog.qml") } Loader { source: "PreferencesDialog.qml" active: !ctx.singlewin() && ctx.preferences_visible onStatusChanged: { if (status==Loader.Ready) item.visible = true } } Loader { source: "HelpDialog.qml" active: !ctx.singlewin() && ctx.helpdialog_visible onStatusChanged: { if (status==Loader.Ready) item.visible = true } } } pybik-3.0/data/ui/qt/PreferencesDialog.qml0000664000175000017500000000444512760504133020720 0ustar barccbarcc00000000000000// Copyright © 2015-2016 B. Clausius // // 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 . import QtQuick 2.4 import QtQuick.Window 2.2 import QtQuick.Controls 1.3 import QtQuick.Layouts 1.1 Window { id: root onVisibleChanged: { if (visible==false) ctx.preferences_visible = false } Component.onCompleted: ctx.set_transient(root) title: ctx.tr("Preferences") flags: Qt.Dialog modality: Qt.NonModal minimumWidth: verticalLayout.Layout.minimumWidth + 2*verticalLayout.anchors.margins minimumHeight: verticalLayout.Layout.minimumHeight + 2*verticalLayout.anchors.margins width: Math.max(200, minimumWidth) height: Math.max(200, minimumHeight) onMinimumWidthChanged: width = Math.max(width, minimumWidth) onMinimumHeightChanged: height = Math.max(height, minimumHeight) SystemPalette { id: palette } ListModel { id: facesmodel } ColumnLayout { id: verticalLayout anchors.margins: 5 anchors.fill: parent focus: true PreferencesItem {} Rectangle { Layout.fillWidth: true Layout.fillHeight: true Layout.minimumWidth: 20 Layout.minimumHeight: 0 color: "transparent" } Button { Layout.alignment: Qt.AlignRight text: qsTranslate("QPlatformTheme", "Close") onClicked: root.close() } Keys.onPressed: { if (event.key == Qt.Key_Escape || event.key == Qt.Key_Return || event.key == Qt.Key_Enter) { if (!event.accepted) { event.accepted = true root.close() } } } } // ColumnLayout } pybik-3.0/data/ui/qt/help.ui0000644000175000017500000000210013060347671016101 0ustar barccbarcc00000000000000 DialogHelp 0 0 380 500 200 200 Help 2 2 2 2 false false pybik-3.0/data/ui/qt/GamePage.qml0000664000175000017500000005060413155313546017010 0ustar barccbarcc00000000000000// Copyright © 2015-2017 B. Clausius // // 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 . import QtQuick 2.4 import QtQuick.Controls 1.3 import QtQuick.Layouts 1.1 import QtQuick.Dialogs 1.2 import QtQuick.Window 2.2 FocusScope { id: root Component.onCompleted: drawingarea.forceActiveFocus() SystemPalette { id: palette } MouseArea { z: 10 visible: ctx.messagebox_visible anchors.fill: parent cursorShape: Qt.ArrowCursor hoverEnabled: true property var prevFocusItem onVisibleChanged: { if (visible) { prevFocusItem = Window.activeFocusItem; forceActiveFocus() } } function restorefocus() { ctx.messagebox_visible = false; ctx.messagetext = "" if (prevFocusItem) prevFocusItem.forceActiveFocus() } onClicked: restorefocus() Keys.onPressed: restorefocus() } // !! actions with shortcut are available from other pages if not disabled Action { id: action_new_solved iconSource: Qt.resolvedUrl(ctx.config("UI_DIR"))+"/qt/images/new-solved.png" text: ctx.tr_tooltip("Ne&w Solved") enabled: root.visible shortcut: "Ctrl+Shift+N" onTriggered: ctx.action("new_solved") } Action { id: action_challenge iconSource: Qt.resolvedUrl(ctx.config("UI_DIR"))+"/qt/images/new-random.png" text: ctx.tr_tooltip("&New Challenge") enabled: root.visible shortcut: "Ctrl+N" onTriggered: ctx.action("challenge") } Action { id: action_selectmodel iconName: "back" text: ctx.tr_tooltip("Select Puzzle") enabled: root.visible shortcut: ctx.get_settings("action.selectmodel") onTriggered: { ctx.model_start_selection(); push(Qt.resolvedUrl("ModelPage.qml")) } } Action { id: action_quit iconName: "application-exit" text: ctx.tr("&Quit") shortcut: "Ctrl+Q" // this action is available even if page not visible onTriggered: ctx.action("quit") } Action { id: action_initial_state text: ctx.tr("&Set as Initial State") enabled: root.visible shortcut: ctx.get_settings("action.initial_state") onTriggered: ctx.action("initial_state") } Action { id: action_reset_rotation text: ctx.tr("&Reset Rotation") enabled: root.visible shortcut: ctx.get_settings("action.reset_rotation") onTriggered: ctx.action("reset_rotation") } Action { id: action_preferences iconName: "document-properties" text: ctx.tr("&Preferences …") enabled: root.visible shortcut: ctx.get_settings("action.preferences") onTriggered: ctx.action("preferences") } Action { id: action_rewind iconName: "media-seek-backward" enabled: ctx.toolbarstate[0] onTriggered: ctx.action("rewind") } Action { id: action_previous iconName: "media-skip-backward" enabled: ctx.toolbarstate[0] onTriggered: ctx.action("previous") } Action { id: action_stop iconName: "media-playback-stop" onTriggered: ctx.action("stop") } Action { id: action_play iconName: "media-playback-start" enabled: ctx.toolbarstate[1] onTriggered: ctx.action("play") } Action { id: action_next iconName: "media-skip-forward" enabled: ctx.toolbarstate[1] onTriggered: ctx.action("next") } Action { id: action_forward iconName: "media-seek-forward" enabled: ctx.toolbarstate[1] onTriggered: ctx.action("forward") } Action { id: action_mark_set iconName: "list-add" text: ctx.tr_tooltip("Add Mark") tooltip: ctx.tr_tooltip("Mark the current place in the sequence of moves") enabled: ctx.toolbarstate[2] onTriggered: ctx.action("mark_set") } Action { id: action_mark_remove iconName: "list-remove" text: ctx.tr_tooltip("Remove Mark") tooltip: ctx.tr_tooltip("Remove the mark at the current place in the sequence of moves") enabled: ctx.toolbarstate[2] onTriggered: ctx.action("mark_remove") } Action { id: action_editbar text: ctx.tr("&Edit Bar") checkable: true checked: ctx.get_settings("window.editbar") onCheckedChanged: ctx.set_settings("window.editbar", checked) } Action { id: action_statusbar text: ctx.tr("&Status Bar") checkable: true checked: ctx.get_settings("window.statusbar") onCheckedChanged: ctx.set_settings("window.statusbar", checked) } Action { id: action_info iconName: "help-about" text: ctx.tr("&Info …") onTriggered: ctx.aboutdialog_visible = true } Action { id: action_help iconName: "help" text: ctx.tr("&Help …") enabled: root.visible shortcut: "F1" tooltip: ctx.tr("Help") onTriggered: ctx.helpdialog_visible = true } Action { id: action_edit_moves enabled: editbar.visible shortcut: ctx.get_settings("action.edit_moves") onTriggered: editbartext.forceActiveFocus() } Action { id: action_edit_cube enabled: root.visible shortcut: ctx.get_settings("action.edit_cube") onTriggered: ctx.action("edit_cube") } ToolBar { id: toolbar z: 1 anchors.left: parent.left anchors.right: parent.right anchors.top: parent.top onWidthChanged: { if (toolbar.width) { var buttonwidth = tool_forward.x - tool_next.x var minwidth1 = tool_forward.x + 2*buttonwidth if (minwidth1 < toolbar.width) { if (tool_mark_set.parent != toolbarlayout1) { toolbar_fillwidth.parent = null tool_mark_set.parent = toolbarlayout1 tool_mark_remove.parent = toolbarlayout1 toolbar_fillwidth.parent = toolbarlayout1 } tool_menu.parent = minwidth1 + buttonwidth < toolbar.width ? toolbarlayout1 : toolbarlayout2 } else { if (tool_mark_set.parent != toolbarlayout2) { tool_menu.parent = null tool_mark_set.parent = toolbarlayout2 tool_mark_remove.parent = toolbarlayout2 } tool_menu.parent = toolbarlayout2 } } } Keys.onPressed: event.accepted = ctx.key_pressed(event.key, event.modifiers, false) RowLayout { id: toolbarlayout1 anchors.fill: parent ToolButton { action: action_selectmodel } ToolButton { action: action_rewind } ToolButton { action: action_previous } ToolButton { action: action_stop; visible: ctx.toolbarstate[3] } ToolButton { action: action_play; visible: !ctx.toolbarstate[3] } ToolButton { id: tool_next; action: action_next } ToolButton { id: tool_forward; action: action_forward } ToolButton { id: tool_mark_set; action: action_mark_set; visible: ctx.toolbarstate[4] } ToolButton { id: tool_mark_remove; action: action_mark_remove; visible: !ctx.toolbarstate[4] } Item { id: toolbar_fillwidth; Layout.fillWidth: true } SimpleMenuButton { id: tool_menu model: [ action_initial_state, action_reset_rotation, action_preferences, action_editbar, action_statusbar, action_help, action_info, ] } } } Rectangle { id: editbar visible: action_editbar.checked anchors.left: parent.left anchors.right: parent.right anchors.top: toolbar.bottom height: visible ? implicitHeight : 0 implicitHeight: editbartext.implicitHeight Keys.onPressed: event.accepted = ctx.key_pressed(event.key, event.modifiers, false) RowLayout { anchors.fill: parent spacing: 0 TextField { id: editbartext Layout.fillWidth: true text: "" onEditingFinished: ctx.editing_finished(text, cursorPosition) Binding on text { value: ctx.edittext } Binding on cursorPosition { value: ctx.editposition } } ToolButton { id: editbarClear implicitWidth: editbartext.implicitHeight-4 implicitHeight: editbartext.implicitHeight-4 iconName: "edit-clear" onClicked: {editbartext.text = ""; ctx.editing_finished("", 0)} } } } SplitView { id: splitview anchors.left: parent.left anchors.right: parent.right anchors.top: editbar.bottom anchors.bottom: parent.bottom orientation: Screen.primaryOrientation==Qt.PortraitOrientation ? Qt.Vertical : Qt.Horizontal Keys.onPressed: event.accepted = ctx.key_pressed(event.key, event.modifiers, false) handleDelegate: Rectangle { width: ctx.gu(12) height: ctx.gu(12) color: palette.window Rectangle { anchors.centerIn: parent width: parent.width / 4 height: parent.height / 4 color: palette.mid } } Item { Layout.fillWidth: true Layout.fillHeight: true Layout.minimumWidth: 200 Layout.minimumHeight: 200 Text { visible: ctx.debugmsg != "" x: 4 y: 4 color: "black" text: ctx.debugmsg textFormat: Text.PlainText } DropArea { anchors.fill: drawingarea onEntered: { if (drag.hasColor) drag.acceptProposedAction() else if (drag.hasUrls && drag.urls[0].split(":")[0]=="file") drag.acceptProposedAction() } onDropped: { if (drop.hasColor) ctx.drag_dropped_color(drop.x, drawingarea.height-drop.y, drop.colorData) else if (drop.hasUrls) ctx.drag_dropped_url(drop.x, drawingarea.height-drop.y, drop.urls[0]) } } PinchArea { z: -1 anchors.fill: drawingarea onPinchUpdated: { ctx.drawingarea_zoom((pinch.previousScale - pinch.scale)*10) } MouseArea { anchors.fill: parent acceptedButtons: Qt.LeftButton | Qt.RightButton hoverEnabled: true onEntered: ctx.drawingarea_mouse_entered(true) onExited: ctx.drawingarea_mouse_entered(false) onPressed: ctx.drawingarea_mouse_pressed(mouse.modifiers, mouse.button, mouse.x, mouse.y, drawingarea.height) onReleased: ctx.drawingarea_mouse_released(mouse.x, mouse.y) onPositionChanged: ctx.drawingarea_mouse_moved(mouse.buttons, mouse.x, mouse.y, drawingarea.height, ctx.gu(4)) onWheel: ctx.drawingarea_zoom(wheel.angleDelta.y/120.0) } } // evasive toolbar Row { id: toolbarlayout2 z: 1 anchors.right: parent.right anchors.top: parent.top Keys.onPressed: event.accepted = ctx.key_pressed(event.key, event.modifiers, false) } // This is the hole where the puzzle is visible, rendered by signal beforeRendering Item { id: drawingarea anchors.fill: parent focus: true activeFocusOnTab: true onWidthChanged: ctx.drawingarea_width_changed(width) onHeightChanged: ctx.drawingarea_height_changed(height + statusbar.height) Binding { target: ctx property: "gl_y" value: root.height - toolbar.height - editbar.height - drawingarea.height } NumberAnimation { id: animation target: ctx property: "animation_angle" running: false to: ctx.animation_maxangle duration: ctx.animation_maxangle / ctx.animation_speed * 100 onStopped: ctx.animation_stopped() } Connections { target: ctx onAnimation_angleChanged: { if (animation.running) ctx.animation_step(ctx.animation_angle) } onAnimation_runningChanged: { animation.running = ctx.animation_running } } Keys.onPressed: event.accepted = ctx.key_pressed(event.key, event.modifiers, true) // solved message, etc. Rectangle { visible: ctx.messagebox_visible anchors.centerIn: parent color: palette.button width: Math.min(parent.width - ctx.gu(40), ctx.gu(320)) height: messagebox_text.paintedHeight + ctx.gu(16) border.width: 1 border.color: palette.buttonText radius: ctx.gu(6) Text { id: messagebox_text color: palette.buttonText anchors.margins: ctx.gu(12) anchors.verticalCenter: parent.verticalCenter anchors.left: parent.left anchors.right: messagebox_x.left text: ctx.messagetext textFormat: Text.PlainText wrapMode: Text.WordWrap horizontalAlignment: Text.AlignHCenter } Text { id: messagebox_x anchors.right: parent.right anchors.rightMargin: ctx.gu(4) text: "×" } } } // bottom bar, challenges, status text Rectangle { anchors.left: parent.left anchors.right: parent.right anchors.bottom: parent.bottom height: bottomlayout.implicitHeight gradient: Gradient { GradientStop { position: 0.0; color: "transparent" } GradientStop { position: 1.0; color: "white" } } RowLayout { id: bottomlayout anchors.fill: parent ToolButton { action: action_new_solved } ToolButton { action: action_challenge } Item { id: statusbar Layout.fillWidth: true visible: action_statusbar.checked anchors.bottom: parent.bottom height: statustext.height + 4 Label { id: statustext anchors.horizontalCenter: parent.horizontalCenter x: 2 y: 2 text: ctx.status textFormat: Text.PlainText elide: Text.ElideRight } } ToolButton { iconName: splitview.orientation == Qt.Horizontal ? (sidepane.visible2 ? "go-right" : "go-left") : (sidepane.visible2 ? "go-down" : "go-up") onClicked: { sidepane.state = sidepane.visible ? "hidden" : "visible" } } } } } Rectangle { id: sidepane visible: false property bool visible2: false property real size: ctx.get_settings("window.sidepane_width") Binding on width { value: sidepane.visible ? sidepane.size : 0 when: splitview.orientation == Qt.Horizontal } Binding on height { value: sidepane.visible ? sidepane.size : 0 when: splitview.orientation == Qt.Vertical } onWidthChanged: { if (visible2 && splitview.orientation == Qt.Horizontal) ctx.set_settings("window.sidepane_width", width) } onHeightChanged: { if (visible2 && splitview.orientation == Qt.Vertical) ctx.set_settings("window.sidepane_width", height) } state: "hidden" states : [ State { name: "hidden" PropertyChanges { target: sidepane; size: 0 } }, State { name: "visible" PropertyChanges { target: sidepane; size: ctx.get_settings("window.sidepane_width") } } ] transitions: [ Transition { from: "hidden" to: "visible" SequentialAnimation { PropertyAction { target: sidepane; property: "visible"; value: true } NumberAnimation { target: sidepane; property: "size"; duration: 100 } PropertyAction { target: sidepane; property: "visible2"; value: true } } }, Transition { from: "visible" to: "hidden" SequentialAnimation { PropertyAction { target: sidepane; property: "visible2"; value: false } NumberAnimation { target: sidepane; property: "size"; duration: 100 } PropertyAction { target: sidepane; property: "visible"; value: false } } } ] Component { id: sidepaneSection Rectangle { width: sidepane.width height: sidepaneSectionText.height color: palette.button Layout.minimumWidth: sidepaneSectionText.width Text { id: sidepaneSectionText text: section width: parent.width horizontalAlignment: Text.AlignHCenter elide: Text.ElideRight color: palette.buttonText font.bold: true MouseArea { anchors.fill: parent } } } } TableView { anchors.fill: parent model: ctx.sidepanemodel headerVisible: false alternatingRowColors: false section.property: "modelData.section" section.criteria: ViewSection.FullString section.delegate: sidepaneSection section.labelPositioning: ViewSection.CurrentLabelAtStart | ViewSection.InlineLabels | ViewSection.NextLabelAtEnd TableViewColumn { role: "name" } onActivated: ctx.plugin_activated(ctx.sidepanemodel[row].index) } } } } pybik-3.0/data/ui/qt/PreferencesPage.qml0000664000175000017500000000520012760506347020374 0ustar barccbarcc00000000000000// Copyright © 2016 B. Clausius // // 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 . import QtQuick 2.4 import QtQuick.Controls 1.3 import QtQuick.Layouts 1.1 FocusScope { id: root property var tabs: ["TabGraphic.qml", "TabMouse.qml", "TabKeys.qml", "TabAppearance.qml"] ToolBar { id: toolbar anchors.left: parent.left anchors.right: parent.right anchors.top: parent.top RowLayout { anchors.fill: parent ToolButton { Layout.fillHeight: true; iconName: "back" onClicked: { ctx.preferences_visible = false; root.Stack.view.pop() } } ToolButton { Layout.fillHeight: true; text: ctx.tr("Graphic") onClicked: tabloader.source = tabs[0] } ToolButton { Layout.fillHeight: true text: ctx.tr("Mouse") onClicked: tabloader.source = tabs[1] } ToolButton { Layout.fillHeight: true text: ctx.tr("Keys") onClicked: tabloader.source = tabs[2] } ToolButton { Layout.fillHeight: true text: ctx.tr("Appearance") onClicked: tabloader.source = tabs[3] } Item { Layout.fillWidth: true } } } Rectangle { anchors.left: parent.left anchors.right: parent.right anchors.top: toolbar.bottom anchors.bottom: parent.bottom color: palette.window Loader { id: tabloader active: true anchors.fill: parent anchors.margins: ctx.gu(6) source: tabs[ctx.preferences_tabindex] } } Keys.onPressed: { if (event.key == Qt.Key_Escape || event.key == Qt.Key_Return || event.key == Qt.Key_Enter) { event.accepted = true ctx.preferences_visible = false Stack.view.pop() } } } pybik-3.0/data/ui/qt/TabMouse.qml0000664000175000017500000000405613136453773017067 0ustar barccbarcc00000000000000// Copyright © 2015-2017 B. Clausius // // 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 . import QtQuick 2.4 import QtQuick.Controls 1.3 import QtQuick.Controls.Styles 1.3 import QtQuick.Layouts 1.1 GridLayout { anchors.fill: parent columns: 2 ExclusiveGroup { id: mouseGroup } RadioButton { id: button_mousemode_quad //Layout.fillWidth: true //Layout.minimumWidth: implicitWidth exclusiveGroup: mouseGroup text: ctx.tr("Point and click, all directions") checked: ctx.get_settings("draw.selection") == 0 onCheckedChanged: {if (checked) ctx.set_settings("draw.selection", 0)} } RadioButton { id: button_mousemode_ext //Layout.fillWidth: true ////Layout.minimumWidth: implicitWidth //Layout.minimumWidth: rbme_label.contentWidth exclusiveGroup: mouseGroup text: ctx.tr("Point and click, simplified") checked: ctx.get_settings("draw.selection") == 1 onCheckedChanged: {if (checked) ctx.set_settings("draw.selection", 1)} } RadioButton { id: button_mousemode_gesture exclusiveGroup: mouseGroup text: ctx.tr("Gesture") checked: ctx.get_settings("draw.selection") == 2 onCheckedChanged: {if (checked) ctx.set_settings("draw.selection", 2)} } } pybik-3.0/data/ui/qt/SimpleMenuButton.qml0000664000175000017500000000547412751411327020616 0ustar barccbarcc00000000000000// Copyright © 2016 B. Clausius // // 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 . import QtQuick 2.4 import QtQuick.Controls 1.3 ToolButton { id: root tooltip: ctx.tr_tooltip("Menu") checkable: true iconName: "format-justify-fill" //XXX: hmm property var model Rectangle { anchors.top: root.bottom anchors.right: root.right visible: root.checked border.width: 1 implicitHeight: column.implicitHeight + 2 width: column.width + 2 Column { id: column x: 1 y: 1 z: 2 width: repeater.width + ctx.gu(6) Repeater { id: repeater model: root.model Rectangle { width: column.width height: label.height + ctx.gu(6) color: mousearea.containsMouse ? palette.highlight : palette.button Label { id: label Component.onCompleted: repeater.width = Math.max(width, repeater.width) x: ctx.gu(3) y: ctx.gu(3) text: modelData.text color: mousearea.containsMouse ? palette.highlightedText : palette.buttonText } MouseArea { id: mousearea anchors.fill: parent hoverEnabled: true onClicked: { modelData.trigger(); root.checked = false } } } } } MouseArea { visible: root.checked property var rootitem: ctx.rootitem() property var pos: Qt.point(0,0) x: -pos.x y: -pos.y width: rootitem.width height: rootitem.height onVisibleChanged: if (visible && rootitem) pos = parent.mapToItem(rootitem, 0, 0) // == ctx.absolute_pos(parent, 0, 0) onClicked: root.checked = false //Rectangle { anchors.fill: parent; color: '#7700ff00' } } } } pybik-3.0/data/ui/qt/TabAppearance.qml0000664000175000017500000001215512747611335020032 0ustar barccbarcc00000000000000// Copyright © 2015-2016 B. Clausius // // 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 . import QtQuick 2.4 import QtQuick.Controls 1.3 import QtQuick.Layouts 1.1 GridLayout { columns: 4 Component.onCompleted: { listview_faces.selection.select(listview_faces.currentRow) } Connections { target: ctx onPrefupdateface: listview_faces.modelitem = ctx.facesmodelitem(listview_faces.currentkey) } TableView { id: listview_faces Layout.row: 0; Layout.column: 0; Layout.rowSpan: 4 Layout.fillHeight: true implicitWidth: 120 //TODO: width of content model: ctx.facesmodel property var currentkey property var modelitem onCurrentRowChanged: { currentkey = model[currentRow].key modelitem = ctx.facesmodelitem(currentkey) } alternatingRowColors: false headerVisible: false currentRow: 0 TableViewColumn { role: "text" } } Label { Layout.row: 0; Layout.column: 1 text: ctx.tr("Color:") } ColorButton { id: button_color Layout.row: 0; Layout.column: 2 Binding on color { value: listview_faces.modelitem.color } onColorChanged: ctx.set_settings_arg("theme.faces.{}.color", listview_faces.currentkey, color.toString()) } Button { id: button_color_reset Layout.row: 0; Layout.column: 3 iconName: "edit-clear" onClicked: { ctx.del_settings_arg("theme.faces.{}.color", listview_faces.currentkey) ctx.prefupdateface() } } Label { Layout.row: 1; Layout.column: 1 text: ctx.tr("Image File:") } ImageSelector { id: imageselector Layout.row: 1; Layout.column: 2 z: 1 selectedvalue: listview_faces.modelitem.image currentfolder: listview_faces.modelitem.folder onImage_selected: { ctx.set_settings_arg("theme.faces.{}.image", listview_faces.currentkey, name) ctx.prefupdateface() } onImagefile_selected: { ctx.set_settings_arg_url("theme.faces.{}.image", listview_faces.currentkey, url) ctx.prefupdateface() } } Button { id: button_image_reset Layout.row: 1; Layout.column: 3 iconName: "edit-clear" onClicked: { ctx.del_settings_arg("theme.faces.{}.image", listview_faces.currentkey) ctx.del_settings_arg("theme.faces.{}.mode", listview_faces.currentkey) ctx.prefupdateface() } } ExclusiveGroup { id: imagemodeGroup } RadioButton { id: radiobutton_tiled Layout.row: 2; Layout.column: 1; Layout.columnSpan: 3 exclusiveGroup: imagemodeGroup text: ctx.tr("Tiled") Binding on checked { value: listview_faces.modelitem.imagemode == "tiled" } onCheckedChanged: { if (checked) ctx.set_settings_arg("theme.faces.{}.mode_nick", listview_faces.currentkey, "tiled") } } RadioButton { id: radiobutton_mosaic Layout.row: 3; Layout.column: 1; Layout.columnSpan: 3 exclusiveGroup: imagemodeGroup text: ctx.tr("Mosaic") Binding on checked { value: listview_faces.modelitem.imagemode == "mosaic" } onCheckedChanged: { if (checked) ctx.set_settings_arg("theme.faces.{}.mode_nick", listview_faces.currentkey, "mosaic") } } Label { Layout.row: 4; Layout.column: 1 text: ctx.tr("Background:") } ColorButton { id: button_bgcolor Layout.row: 4; Layout.column: 2 color: ctx.get_settings("theme.bgcolor") onColorChanged: ctx.set_settings("theme.bgcolor", color.toString()) } Button { id: button_bgcolor_reset Layout.row: 4; Layout.column: 3 iconName: "edit-clear" onClicked: { button_bgcolor.color = ctx.get_settings("theme.bgcolor_default"); ctx.del_settings("theme.bgcolor")} } } pybik-3.0/data/ui/qt/PreferencesItem.qml0000664000175000017500000000312212760504265020414 0ustar barccbarcc00000000000000// Copyright © 2016 B. Clausius // // 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 . import QtQuick 2.4 import QtQuick.Controls 1.3 import QtQuick.Layouts 1.1 TabView { id: tabWidget Layout.fillWidth: true Layout.minimumWidth: tabs[currentIndex].implicitWidth Layout.minimumHeight: tabs[currentIndex].implicitHeight+35 //TODO: 35==tabheigth+2*framesize currentIndex: ctx.preferences_tabindex onCurrentIndexChanged: ctx.preferences_tabindex = currentIndex Tab { id: tabGraphic title: ctx.tr("Graphic") TabGraphic {} } Tab { id: tabMouse title: ctx.tr("Mouse") TabMouse {} } Tab { id: tabKeys title: ctx.tr("Keys") TabKeys {} } Tab { id: tabAppearance title: ctx.tr("Appearance") TabAppearance {} } // list of all tabs, getTab does not work (return undefined) property var tabs: [tabGraphic, tabMouse, tabKeys, tabAppearance] } pybik-3.0/data/ui/qt/HelpPage.qml0000664000175000017500000000233712746376455017044 0ustar barccbarcc00000000000000// Copyright © 2015-2016 B. Clausius // // 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 . import QtQuick 2.3 import QtQuick.Controls 1.3 FocusScope { TextArea { anchors.fill: parent focus: true text: ctx.dialog_text("help_text") textFormat: TextEdit.RichText readOnly: true } Keys.onPressed: { if (event.key == Qt.Key_Escape || event.key == Qt.Key_Return || event.key == Qt.Key_Enter) { //if (!event.accepted) { event.accepted = true ctx.helpdialog_visible = false Stack.view.pop() } } //} } pybik-3.0/data/ui/qt/ImageSelector.qml0000664000175000017500000001224212746702714020065 0ustar barccbarcc00000000000000// Copyright © 2015-2016 B. Clausius // // 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 . import QtQuick 2.4 import QtQuick.Controls 1.3 import QtQuick.Dialogs 1.2 import QtQuick.Window 2.2 Rectangle { id: root width: item.width + 6 height: item.height + 6 radius: 4 border.width: 1 border.color: palette.shadow property string currentfolder property var selectedvalue: "" property var selectedvaluev property var completed: false property var selecteditem: null property var selecteditemrect: Qt.rect(0,0,50,50) property var selectfilerect: Qt.rect(0,0,50,50) property var selectedrect: selecteditem ? selecteditemrect : selectfilerect signal image_selected(string name) signal imagefile_selected(url url) onSelectedvalueChanged: { if (completed) selectedvaluev = selectedvalue } Component.onCompleted: { completed = true selectedvaluev = selectedvalue } function set_selected(selected, item) { if (selected) { selecteditem = item selecteditemrect = item.mapToItem(root, 0, 0, item.width, item.height) } else if (selecteditem == item) { selecteditem = null } } Rectangle { x: selectedrect.x-3 y: selectedrect.y-3 z: 1 width: selectedrect.width+6 height: selectedrect.height+6 radius: 4 color: "#100000f0" border.width: 2 } Column { id: item x: 3 y: 3 spacing: -1 SystemPalette { id: palette } Loader { id: filedialogLoader sourceComponent: Component { FileDialog { title: ctx.tr("Open Image") onAccepted: { root.imagefile_selected(fileUrl); filedialogLoader.active = false } onRejected: { filedialogLoader.active = false } onVisibleChanged: { if (visible) folder = Qt.resolvedUrl(root.currentfolder) } } } } Rectangle { id: rect_no_image width: image_grid.width height: label_no_image.height+6 border.width: 1 border.color: palette.shadow color: palette.base property bool selected: selectedvaluev=="" onSelectedChanged: set_selected(selected, rect_no_image) Label { id: label_no_image anchors.horizontalCenter: parent.horizontalCenter y: 3 color: palette.text text: ctx.tr("no image") } MouseArea { anchors.fill: parent onClicked: root.image_selected("") } } Grid { id: image_grid spacing: -1 Repeater { model: ctx.imagemodel Rectangle { id: rect_grid_image width: 34; height: 34 border.width: 1 border.color: palette.shadow color: palette.base property bool selected: selectedvaluev==modelData.text onSelectedChanged: set_selected(selected, rect_grid_image) Image { id: grid_image x: 1; y: 1 source: Qt.resolvedUrl(modelData.text) sourceSize.width: 32 MouseArea { anchors.fill: parent onClicked: root.image_selected(modelData.key) } } } } } Rectangle { id: rect_file_image width: image_grid.width height: label_select_file.height+6 border.width: 1 border.color: palette.shadow color: palette.base property bool selected: selecteditem==null onSelectedChanged: selectfilerect = mapToItem(root, 0, 0, rect_file_image.width, rect_file_image.height) Label { id: label_select_file anchors.horizontalCenter: parent.horizontalCenter y: 3 color: palette.text text: ctx.tr("select file") } MouseArea { anchors.fill: parent onClicked: { filedialogLoader.active = true filedialogLoader.item.visible = true } } } } } pybik-3.0/data/ui/qt/preferences.ui0000644000175000017500000003352113153315661017462 0ustar barccbarcc00000000000000 DialogPreferences Preferences 0 Graphic Animation Speed: 1 100 Qt::Horizontal QSlider::TicksBelow 0 Mirror Distance: false false 0 0 0.100000000000000 Qt::Horizontal Quality: Lower antialiasing has better performance, higher antialiasing has better quality. Antialiasing: The program needs to be restarted for the changes to take effect. Qt::PlainText true Qt::Vertical 20 108 Mouse Point and click, all directions Point and click, simplified Gestures Qt::Vertical Keys true Qt::Horizontal 40 20 Add Add Qt::ToolButtonIconOnly Remove Remove Qt::ToolButtonIconOnly Reset Reset Qt::ToolButtonIconOnly Appearance 0 0 Qt::ScrollBarAlwaysOff QAbstractItemView::NoEditTriggers Qt::ElideNone true Color: 0 0 Color Image File: 0 0 32 32 0 0 Tiled 0 0 Mosaic Background: 0 0 Color Qt::Vertical 20 40 Qt::Horizontal QDialogButtonBox::Close buttonBox accepted() DialogPreferences accept() 248 254 157 274 buttonBox rejected() DialogPreferences reject() 316 260 286 274 pybik-3.0/data/ui/cursors/0000755000175000017500000000000013173167603015675 5ustar barccbarcc00000000000000pybik-3.0/data/ui/cursors/mouse_ccw.png0000664000175000017500000000037012130247775020372 0ustar barccbarcc00000000000000PNG  IHDRabKGD pHYs  tIMET^IDAT8˭S10 v2;q@0 Tf #*]hEd"E3WV=vU2En3ȴ.72sz%wP"Ӕ͎RΟx-|} +sSFIENDB`pybik-3.0/data/ui/cursors/mouse_2.png0000664000175000017500000000250412130247775017760 0ustar barccbarcc00000000000000PNG  IHDR(-SPLTELLLiii۶mmmIII$$$AAA666,,,!!! kkkVVV@@@+++¡aaaAAA  ZZZKKK<<<---fffLLL333xxxTTT///̨___:::jjjEEEuuuPPP[[[eeȩ^^^:::ώtttOOOҮeeeßzzzߺqqqMMM(((uuuQQQ,,,zzzUUU111~~~ZZZ555^^^999===ײiiiEEEӮeeeΪʥš|||XXX333԰gggBBBvvvQQQ```ppp~~~Ыbbb>>>Š|||WWW޺qqqӯɤ⽽tttPPP+++Ȥ[[[666Ьccc>>>nnnIII%%%ɥ\\\777```<<<ԯfffBBBkkkFFF"""xxxSSS///ֲiiiDDDȣZZZ666ݹpppKKKvvvWWW:qtRNS|;IDATAoIENDB`pybik-3.0/data/ui/cursors/mouse_0.png0000664000175000017500000000250412130247775017756 0ustar barccbarcc00000000000000PNG  IHDR(-SPLTELLLiii۶mmmIII$$$AAA666,,,!!! kkkVVV@@@+++¡aaaAAA  ZZZKKK<<<---fffLLL333xxxTTT///̨___:::jjjEEEuuuPPP[[[eeȩ^^^:::ώtttOOOҮeeeßzzzߺqqqMMM(((uuuQQQ,,,zzzUUU111~~~ZZZ555^^^999===ײiiiEEEӮeeeΪʥš|||XXX333԰gggBBBvvvQQQ```ppp~~~Ыbbb>>>Š|||WWW޺qqqӯɤ⽽tttPPP+++Ȥ[[[666Ьccc>>>nnnIII%%%ɥ\\\777```<<<ԯfffBBBkkkFFF"""xxxSSS///ֲiiiDDDȣZZZ666ݹpppKKKvvvWWW:qtRNS|;IDATO OkIENDB`pybik-3.0/data/ui/cursors/mouse_1.png0000664000175000017500000000250412130247775017757 0ustar barccbarcc00000000000000PNG  IHDR(-SPLTELLLiii۶mmmIII$$$AAA666,,,!!! kkkVVV@@@+++¡aaaAAA  ZZZKKK<<<---fffLLL333xxxTTT///̨___:::jjjEEEuuuPPP[[[eeȩ^^^:::ώtttOOOҮeeeßzzzߺqqqMMM(((uuuQQQ,,,zzzUUU111~~~ZZZ555^^^999===ײiiiEEEӮeeeΪʥš|||XXX333԰gggBBBvvvQQQ```ppp~~~Ыbbb>>>Š|||WWW޺qqqӯɤ⽽tttPPP+++Ȥ[[[666Ьccc>>>nnnIII%%%ɥ\\\777```<<<ԯfffBBBkkkFFF"""xxxSSS///ֲiiiDDDȣZZZ666ݹpppKKKvvvWWW:qtRNS|;IDAT%IENDB`pybik-3.0/data/ui/images/0000755000175000017500000000000013173167603015442 5ustar barccbarcc00000000000000pybik-3.0/data/ui/images/SHAMROCK.png0000664000175000017500000001101012552273312017345 0ustar barccbarcc00000000000000PNG  IHDR{`bKGD̿ pHYsHHFk>JIDATxyՙh@FEJB18 B$6j\3 $y1j܈(ɨAf*B*@Cwh֩:w~S|_gp8p8p8p8Ñ?I 0 zҍS6}JJYzR.;9LÚX|NwXLSF;ΥK;_ؔp }{7P~ӨZznD +YV{!Xܥ#]G1 ~^:(_OB{TӍ?Fͣ{`e ]LʥPdUHY/^,]5@oH2U"6eՓdvS?9Tr+]AM1s?E|}vߕ|fH+x| k| U12TFHW*IzwZNPfr!|+j)4|۴#|^S8(0t(-!0ZZ IyGTHj$-"\nL\aKK&) 0^Z@$.L2n}ؚYg%+e ? p gH HBw"󩛄8ŷ>9YZ@IH~48YZ@IHEKZ@IH}lRi IB$s'9O8 (-@CA%d' _ZBړ[hP#- $$@u_FQZ@IH_6H " FX.- 2.𾴀,D2=ici A$##-!J & mi p `ץDb`ݺ'&n:&-!\v'i %-@$LD$@RnP\]ӎ I򒴄P<#- 8O|u; եFr6i ȥg']UЪX^Y(Xr'o͓fGC1x٫Փax>5IUS(&j/["C9x8¹RHLx=$]% 񐷵7")Q\l| 6N* >EphhI[jyǙk  >u}b;A Jhk" pێV^=IhK7c *ʥ]v;LiwL-vEb Ҏ:Fe9MIX)b ZR&#Z },07KP+?>9Zw-|6:8XiM\Zi(Ccigla?Ka8g2JPIOJ ;vvլf3MּŸ<>[[S0RI%HGkS6T['qS!^_=w8 3'YKk wH]7\MQdx"NFsO^C^f3ȕy"9vWј1% 3gjxNghȩV%Ո1:6̀^\ǫC<ɉV_-&]}&yA 'H]÷MeANnMw8UCi"~cŏb^Evtd #}&+}!&9Dbvժ_CgOG [!*)R׭@2-g*ԫP):B}94J,)PqG[Y|ObC✙",;Q!rߪXb]J*f$X'{=b7;gM,f2C)>K \Sl^).v~)D܇%Ͼ ^1ӞB;çΩ勞&ﱌ@b>ŽRJ kh:T=vүݶ~fhq~fsmsK/nӁxڣ+:YkoJ{b_2i+-0sO]Ơ=1r  Pg qSKu؞{zѓ6^H-h[2x#dž9QAPbq&lZ@+q]\rDZok3=Bil6?Jee>մ4TsTm&F_tv{aq:6^f= \T-j2+fMW302 dlv^q.~< }&kT~e'lab3x9AeV똱՛R\5qNOb}JnQ1Cg=:r=WA6,kcr|Bj&HMJwfW2gMڶU[MߞB: ,ޮfNDo>Z o{B:m霓Ǽu[>JqO2mꟂSSF[Hr0zig2x\[VU7M|nF57" \+ ?['@icCiosaNt(](mEکvLs eb'Czr@ڱ6ОOŭ֤ ٨7q2OBZm暌=_^^z++)9y|pTP%a],fbZ;HpC{,V7"Rmynnl_I,gfrh-lY7>teҖȥM}к&@o3zy<:PN3)@7V 3s.ߊ׻Vj-4v`Fb!0x342MZ%x}ҺDNvo )ndf/4%pvn_(5LS?{m ?T?VlDuPfvx.X&c<ætHPJMajM|}L5Q bR1GdB[18dpO1Z#bI"b1wpn}h?ʽV]Fz 2߷BSjԜE̲k8V:Nkba C'lzn7>hgCr+NCcEV@qulru=r~oliڙ<{ґ{gfŪZ-cuXk7L5k60vƈl f<@6{5nCxcPch,: pyiC߶zyxl53+B,4JӤ^X8zclkrE 2~4 &Xs kDy%$d7xɹ`҃SO-[cYUq:ƪ- \0TЉԳjֳ"Tvp~hiސk_HrąW'-y`0u J_ߓ%Ia%՞. e9aҲd)[(^ eRH pHrCƗZaozҲ)[5Α切A> K s}?6^g,y `Y>7b}.z]֜^)?([ >}~_戃"672/-o9L6'JKsā LD0wvqO,-a$tii8;iiTZ+l8/|[9sry-)=ϩYf&-a?*. /Hsئs.f+ ۳_ p8p8p8p8p85ɧUN%tEXtdate:create2012-10-22T06:24:25+02:00)>%tEXtdate:modify2012-10-22T06:24:25+02:00X&IENDB`pybik-3.0/data/ui/images/squares.png0000664000175000017500000000022512552272144017631 0ustar barccbarcc00000000000000PNG  IHDR@@PLTEgtRNS@fbKGDH pHYs  IDAT(c c8  13?IENDB`pybik-3.0/data/ui/images/ATOM SYMBOL.png0000664000175000017500000002142412552273312017676 0ustar barccbarcc00000000000000PNG  IHDR{`bKGD̿ pHYsHHFk>"VIDATxy|IHN8RD$ `QZģjRJ*xkmb/Dԟ-*QA@9D9?k~E;3<1bĈ#F1bĈ#F1bĈ#F?ZdD@DhIO)g{XGT h`f)D=@GPbb-Za=P񓩄I4Za7x崕Q+# O7(Z0b_3#8)"q&U0,bCh !!5MuqbxCXoQo1@ȧMhGK!,bp&t/r lq|Rj Ì$rQ7|hiHpədQ9SM`~Wƀ.r R%4 ]R('Q;FKb?KR1jp0O)NgTpxE.ޗ)ufG][I8Qiq_ߑjI&+׌D]5Kюqp~01_R,&WE[Vؖ1*ʷ3ծeНQ1dq.;6|N&گoX&aCɾ*?-iyL.vWWcAG&mPL'KVn:ё\Znp'7)ys 塚,qk&3aMr7w1tiՐ"\hw%ڼ7d:c+mJ.l GP+J2qy)mOVŤ;_ņ;mo3]8[J߈Ըyȳ!SNp2q̾Ld/a2&u=rVco"Z?ZQb"SILJ.L rP`P OY(Rjrt,_0oa- :3C*C^`Q*gB Q*VMWB0*aOx g}k:y_{~ȳ\_oU_ h.T6WgI 1l$O.ОUEH#YypbXGOd2uU~̕X<TZw[t4V1J+.8dyM: :|RiK,:@PG0VFi;$^GNPL'TYXt$0 w~M]$/&ti2U2+'HLݲBy֛1S3|>o@ɧD*i)w;_Ty\Ep2 c;ٹ9ђ!1gSlQ,S *fl޷ȠV~9}t;BݐMdzZOc:5LI(p&eů=i3zH&'䍲iк4xxKVCgoj:8- yDP@%u!r5^B~E,S*m1E7 AϯC)IQT.j8nPY>uA=E &`g]{ӽdҐ; ;'T௖Vw6@):R' J5P^_YȮ 0ɐ#΂5`0n lK8JqS}9LzG]H3kghgjzƵr_!M$'ʽ< Or90XM-[4r[{gCnϚ,TO͓؍7#h"Tso˚گAXe41mKp?Lz6ϥӊ^7TqJ@0\m x%,nyWK?(U'8 Ktf\d)-#(r+M^: U?3:[(zKs+#Mz~:bݴ܁XNLǡkAs &|X6Kݾ #@sFbʱiDgdD K O'kkAEi` \]WV8Zpo/?Wxu~DZb旭 H:~NSC.ɼG-ǿcڵpp:˗f/Ϻ ggtCy)}qjN-623P=N;@\H-d<pE]]>W]-sn#GNԤ6Rvhj"q t U?h] -s/՜VCXix[f6"`oQЊ$809~ݻʗgN[a\%™FǍD̀z)D䃗>:+-kW_ua8D2"ّ9*Z]=su4JҔ:U`(Q~Ѣ+5RyE^7 {*@opC Jo oL-|yeb;!Q1\Wˮ% EP%}zxvdpBgBcdķ 6 1vǵW n5~,?%fK]?&6)S{4Gȩڵp6Tf2۹$tr=_MfҪҳe떣!R`UG yz5yBx8Dc=\z<"!< ;qk:.BzΖr$tH1$B54((V җna&*FEtCdG]$>?)찙;)Ŭ@K̳K!>$ä%O2bdrGty b|O?B %f0 xäq $w#_xXsa0l/G]TOL3#JF)C̻ok^ͨD =AAxBIB=O3"º Q;B}KH?p1)pd&~N{5BX x;>xpu񹏫S]q+(x:ϔ:ΰr|O t `e`5 q1x0qMKƏiZ|d;XŤ:ILREr$eV<.6ia.>%RT(|I UDFM4 S U<qR=lB*ԭVzFKɥ"VH]2Ip̅.|-2t]*eeKUK%T-Erko n-\?l*H I,^R?D߅qBqtlb%1W7eK}!rٿYBw'}K5iS.~ڧ37WI(vWkR.~NMLFh.h#ȳ< 5)g:Y2݊_ o q\.yfe;TP(˄LBim4)vM.A-\>d,gh; 6 TL@$&<&Hg0VZ' خTZ 3ESjn3\nF[t&0kL{@]e! bE'`), *wG/$f' ^D# @'Z4 q䄞`C}Vj{:^mA[i3,:JE7CH3 |kf12M"mJ}>*ټ.5 p_+=[ 3$wʄƽ&f( hlTXE# ӹN1P>gJ{ci9QX'XGMh$ݓˬpi\Dӫ)&Ӑ_v2& >7l8SY):?Ɠɓ12wU^ u-ޝn *CIY<.s9c} 3C ErUo1.GBs"}.$&ΚTKi:xSI6˙ LQe2NE$L[J\ɴG ֊;- |T2SFdD+$۲<%/Pm : 0bc'K-zZK6s#vTN8cU7%W9|E'+Xtr?ȩ#xMM<{( 3%v~i3ll&K58t<}*zwn|~2U1.1Җ623-MXFLiadL 9'Գk9?gzCa;@&Xm>e:3ޡtx123=˲xٶ+&H-jŒR 8)4%uJ 9ed]ޘt ]FהJ:s2r53sS7|jVl‫s8Ǹǥ Xa ?rH nvSA r!O>9ԵMm=2>G[~ pMZ`Vr*h@Ђ|iš =bi&tJVC# ucJpHN?["%̴UVwVfpթua8b; u+fvʽUpak9 Oi'ՉJba6~2Eoz+$,TvrhNzs/kAֲլs>BF{q(JK}HJB+#t =MW,c9XJJzg9t":RHӔ\r&JrRNզgopYuЪx\xR%!2%O 7:KGԇR&ȫJ';_ +qCb)wJi>i. \bqsrEa+(,HiV$k\ &kM&KZtX4YO}l -Q1ol݊)6TsE'hÝ6 V* L#TlL;6oqcYg{?tp XPB.hQt8%’ -.\O# Q'w r&}DZQ%?.#l1|0 LOcAdrMTiF|pB>UࡘDž2Y4H&lԤ*qCqZѝI~B Q^5+#jbĈ#F1bĈ#F1bĈ#F1bĈ#?IDATxyŵAE ƀyOƮ(.5.?]p>1nA2n("QMT@e?dfUCRԩTw:)))))))))))))))))))))))))))))))))<xO%rٴlwfͥ#iE+ZӒu+(SL1%G~;NW+e.fwSЄ^!nƇ̠wsMhH/R|1=ӂ< 2J)9њF]_lΦol4//{o[ʙ#,;ne_ߎDw^b2}|;PSe&gȷrF^qa*s6 wa-F( C{י+ 8ܜѓww2\P齳*`N2ybn[VsQ0Nw|;;is e;] V]|LWߎO#X3ىwEkF?/T%|ְJxf4ؙΞ 9O+ 0G+t2PQ_2xk=]ʾzxGCn4.s44\bo'q3-NH߳=-%i\3w3iXޖa>L@/6MS5G38/R<{tbvb#s?sO`kރ,?O|Nag1>OG(ЏC"h{o6s`u&"(E߾|7=;ݽFdWߞ q`"7&|xxgW73#8vUѺr/.ʥBĿe~dZLωnx]QF_ O, "7FEM"! WP&ut!¡i#;/s7R=BQ5ƀ4Η}x?gFǔ,gViP`r8Jz 9wvI|rI0kEm20@T*YpJ"$rkT'$>! @(9^8Vri}t}.J 7ɂ%w},2yrb{_j ʖXuG*pd.*ް pJ'-cբ(  sfuGD)@ LLՀgF&t1}D o$0o~OC쾠o3N}#e,,g4ZەoSl/2ve";j<'E 񫤿4(zoOmδk3{DsAALٟ!EBWQ ژQ[SuCɌ 4dF!r^KߞyzM^Ts{ lZJ~<Md挠$'$i#X7q i{&',* f @59;1)(iQo5_ 9Y;!}51uӶ"8`rʭ/H$BRAO{I$?gTO00Tz>CfV::cO+sʻ5oQ}j~1@Z^;2QqI16oVU:5Tv6uOk+ͻ:~ QpbS%Cy.nb0_)k -lf^5=حWDz1/1>* 9.T4/ %>ܧqwD6詎wxdݓ;ė}s5j]4* ]5ޑ315i<ɟ4jq6tp^5?)3<ӀgldȊ7|'=&_lz>X{Q1sgƼ-ք'މ%_?c0{f@OXYIaeJ@'6cFe! .5XZ1_,6R5v$U+_Rwg] EePeYoJ{\LyS8Suepa?)iܦm)aZPh}3@ie6_IR[Oʑ0ڏW8FZ:LBwB-SwK, qվru-Vv+衹&imG .azcr,IXɛWX[/^eCsǝ!UhzQ.|/Hc q~$79ZmZ^No-M*8-֋oO%8ˋ **JFd8V|)1 Fth_gh2S{j qϾG@5O_YY'J@&Cu,>,~o1'|>5珝7uL~7M7'Cekn %)7s`F,k': :~~:jn3 MD*D{Ϗ¥ۖE͌Pp6FZPVrC]66#Hp9IøY<^<љ7&k=e, tem-/:c"И"zi =2DxVSGhΫrNeYc ލq^ѼSgՠy `W樈4 51>pK2?{~@Id<>#44[JïN`udLd1)Z*h*p%D?פ]CkdpJ~єmDo9e*-XãК/Z: Q'| /, m(3ۼ뉟mR-\?[w ~ =[ְr_bK`-Z [_h[眻c;"{D;`cy޲]$?8+;&ak蝽* bd[-M+8()aŝ6^绳p(Upb\1amk%UZwP#c %s ajY' +9VtatAk C qM4( BpX94c$EF[xNҖw:.F&0TkkYXbBM3' Wb$v_ kHŢ*ș32<#ћ_N'C+U|XL&Iν̵bo2+ 4q?O3u8X,f1b)fգL7ѝ^֦aJw8*V:3?-ZҒFGGq>ĥw}Mgw\ʛLa |7=>A[ؓ9i`i6iLc }7I[h>;FyYe6sWfhHQitbwv hEkZєQ@#`luR JYbJ(OIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIóF1̂%tEXtdate:create2012-10-22T06:24:25+02:00)>%tEXtdate:modify2012-10-22T06:24:25+02:00X&IENDB`pybik-3.0/data/ui/images/BEAMED EIGHTH NOTES.png0000664000175000017500000000464612552273312020676 0ustar barccbarcc00000000000000PNG  IHDR{`bKGD̿ pHYsHHFk>IDATx}lUww>P Q22EpA48'&&:=C&#HdnmhȲIp1*vs:GKτy&(zgLx{$)^< ` ';0~3a_) oe@JR>gLP:S>dLP6J, u&(kτ.[ā3w _p~q%τvgBu"nƨ3j!,ƠYTsQjo3K"B"sP  Y@,q4S@7?"X̢H"F2"P@@LI_aD $@+ƨbI#ZD˙f:%"(2d"KDjYJ"KOu"]Z)PcLJW­( FTNJ]XF^؝:%"sR6@|HWv\7yulHV~08"X90>y Rr~. p /_J())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))M+I .8 jiVnqĿc?m?}9/R&Zyu ǽoZ iGCWiVVZ^CW*tUd_›rc[S|Hi@ձ)W7R~iy;Wv=oȬlȬFۯ2;fۯ2vWn0 X$}lc8E:әr3|x3ZLfLW̱ib@=:̴aJek0^5/*Z42NEh9Xkne{Ū^>I/]gw{)[8Qu'kb]K_uc|UAe~0]5 Ob@zf3fa|0p5V:9S+~ 0fa6z x8̙d>˛t5}<?fkk'LAzXWwllc|)I/֚ǟt)J/S \0ZzqWL0fSTQh?M&8ɧxd%NUV?9"yRf M5򃴛YC^ VV9l j L}Tϻs83VY>=`6ϴ0N.wvrX^~iOC2w}y,IDATxy|! JAvBQUȢ%`bER(~PL BVяTmŊlDe3 {^余{潙{fޜ͛{Ιfr.          >.`-r#FX@&stJ?]I^(~qKt*Ѝ[6Lo@&kތ|_XvQ3+yX@J|gsAe[Vw>>qЇ102| 2-sHqnjK.<~H0 d[X9nz Q!يLW+j%Z)2[q~ ^FwJKE6p up6 ;3+^;=@|sx'hR|4#@+nN_*{-/9},jKEq*Wd0یrnRSIRX3E/C2pK$q⸧[|x}Z-@kTX[ e^>U1a pK _[j1%zmXNnܤpHiǹ%ZM {}刕(Dn+[IJ#i}R70Sirt?Vǭ?ik67cE~EFo=i k Pއ![/؍2ҋ~>0G1/>ZN}RRxa;L QRRp'_O$^!]uG;q+pdBRxNz\L. _,$\o I0{-}Cm"5NDUq!MfJ;)m@s9 bu =Sd0\\@2y6,gH2[!``9#Ұ*1S_ ^ppX@YkCvGG/KdҗR < j63@+FSPd @φ:0R~#z!W[iJ?E%j\h[&3jns{1(0'׶4cw~ U.Hś4p2LV+C\ـ [`rTn{ V0Ɯ!Ʉ֍ƟM2,{ =Zl$EqLrq1IllbLyI.D~m\;is^),UOr~i?c _q1 !];imj8?ԘG${nw~#U5ɸ3&?x ڑbmrD't@mi9$.؇4nC[9X822z G[->#8(D>b/8Rl%?8s݃ dW'ȿźgpu?3\:t?wpuWV`X7z!nN#Qf= ?2F-)xJl 'ĜJ !RqNPC!PR㧟G_SQ]Ҿ0mR-PotWQ9pRܤ..Q7X9 9Ƈj WW>SHD<$lPY`ehVr?ҮK cEϸlh 49$s#wY̶ +8%Һ#+bEXtvb lN|zÙ;=dpj+MC/Lk"8@8G H #p$@8G H #p$@8'xhoy4[n+8*$֫>%tEXtdate:modify2012-10-22T06:24:25+02:00X&IENDB`pybik-3.0/data/ui/images/YIN YANG.png0000664000175000017500000001256012552273312017327 0ustar barccbarcc00000000000000PNG  IHDR{`bKGD̿ pHYsHHFk>IDATxyTŵ (" `H@5DDP|*桂Fܒ-&OM1ѧ]&=+ DǨȦ 38 0cP.]}۷wkSuNߥ9`X,bX,bX,bX,by [)$Оn3iG;ӖBRATPf6Q.XRB %lb+Yr~-0.b. s"EYûe.Iw?iA9 bR6{RfOMeHA  7Wjx1 /"L6=b"sD#2QIT 5};'Ж=B7:z<'CN8ihլb5Yfh1FJK_qdsC/;oaڵ8aʫlW%|%4lIlP일Tr=7v)9&&['J!Yr?Hvp)8&8CƱ&.J{)`eV[IKc(;S8"NV3%y j10 KeDec+bJI`SYp*#Zg$qw#b(T' ~aU?l㾄=j`/EF&BOMxٿ LgL`U1 F y`hGX.5Փ`>9HZ9m Nl޴/LZb\ٝ}id8&/DnLsraS%;KZ5\ȶN % N[YtV8y% ,rp$+|/WI+Lj>]_CiB}]`KfQ3rUO@gJf >$u*f|\;OX%Ҋa2oU̟S129+5>;Vpbz٧+.V$h .pb3|KD>.h-Vĸzq*V\ӱV+LCZ̸y <^ZIBZjc7?Cڮl(&OGޡZYi>etV+=#O'T*" ޛ}b_6 3<<==k&(I+e\JiyeRY->DJ1>J+< V*9,(=]Z|[JG|~iAisGJzI+dgT#$pOqJŀ@/u&'/Jń=#;;zs=J ibw3IĖx~j"Th V!%R8$Jqe_3gKH?V*RY` =\ZϳL|JpGV*jǿ)*ŘB>p @\bg0<$8RFKq$)> E졊*ֱK0f3\$)UgyBLci9M- OT#A'Oſ( O#YonuK%q]ZU|Tx,Qc0jsSU vwy&DCSLC`8S2{>cM+]^*1EЯB&,\ޔ 28l!QZ.孜 =?63'nof7~pȔp ye &-z?5}g'~cZH|uUxIwn >:7Z8&']v #5gplV5!m!q0}3\ߘJB< Q&[xJ<-q}Șf<:9y+?5I4뫀; 4 >jCu@2= ͨpl@f7k[>7<"m'LstYg?3Mݞ7tbUNi!by&]'9%v\ha_ Os 񸣟kgP||KҶ29~pgHqҶ2y r}x[M&5YxOG/JP|OѫMSRcdh2t*]"7\J[ǹ-Szjd߁u4=$cU v}^J5ph֭ *hσ 6ڙ+}ڱ~9>{r Oj3ѿ=W@Op aFeTŮxaQ=PP _b.VA3[\z`P(~2iɸGvm$ J)h6@"Wz\fIbzUDuJ9{8`g{iEW;+Q6` Ot` izd7Orc[w&2P/ dM{xt4Zs(Qc?w'/e0ϐ)^Vv pԋl>ST#%OI\VWM}F itfj8TjSS6uPRhJ|8H pJ|IM#4i;QN[_Vz8j5k_k@-2rki5@E 'V y; ܗทURq] [cguT>+M:JvSqL;?xNPRk CiԢmd& VSq:I</tYt9hN~`hl^ wVrn7Y|lҮ=E:RMr3\^vEҷPrf HOӺs[YfjPMM/C\º3[9P@6+O{HZOӰ4vhߦqXJk lw8~Wwvqg2n Z*u3^Gf:K 2ỳ@yϚS\i(9xOC%( iiEaӉ^LWZS0;?]m2X V|庭ӜZC^w}g2TQf~1Z'#%ڂ\dF$R=:azwӇL[FyO^\Zt9Xz(0KK_+~/[rj^ n\L@46FUy>#`:(3;)vi07AoeF`toʑ 0تyɦ8]\[t^.E1/}ItC-H87_jdg83i*;忁sQ DTWk AB -=<&Iqi`tCHm~cJQxl'":'0.ij%6 L,ޤ: ӽsƉ4hLHJ tn'!Qeeᔔoa¨TDވ< dOJ]e^M& [Wc6ࣾ_AaҌ& [;&ܮT7msX7Hsu3,7rk@2Շ:_22_[ZrҝQfgBJPA7Ҭ2,L3R86[dC4uҝ$% l6{3݇gM[vb7e<huL/ S԰;* >Yzi۳r^5(l[ 23DG<\0d Y*ֱdq9I/34_Z.å*biEGzE6V!%߃dRgR*n1E)'Q.EuL̟|^fzB5ߒyKVjmQa3/tf% &=9M$: )5͒RPi<bIwđl[h-2t='ܒAb9wkJ udI^cν*N\Z^w2^xͺqfݝwS'>SÑklargF1Vni2< F*|[pZ?}I2X3<[G)?0mf,-62$ʘ#it@rJF1)k4QùJ[[cĥl&q fєu6N8[=YK_|%E %}\P!7K!֊l6Mh)H0!G zew^tg1—ax:\v)ѓ Gp`GK!nRɤ!(x ky 0[XMIl61MOVpfye2U\(Po0&s+M\>a5~qo2}YYϴ '3 8rײLܼe7R`J%Paь<ҕyѹ#Or_3iٽy. g8r\6Iw=sН f0 %|.U}^petݬe+XJ5Nҍt:Ўvь"QH-a?5TQATPfH[,bX,bX,bX,bX,ŢّC%tEXtdate:create2012-10-22T06:24:25+02:00)>%tEXtdate:modify2012-10-22T06:24:25+02:00X&IENDB`pybik-3.0/data/ui/images/WHITE SMILING FACE.png0000664000175000017500000001362212552273312020573 0ustar barccbarcc00000000000000PNG  IHDR{`bKGD̿ pHYsHHFk>IDATxy|WŵYY$AUQK"ZDpJU[>wuAUqmQu V""Bʚ/#`̙{Ͻs|χr9Ν9s<x<x<x<r@Bt7;Q@#|ɥ*TR"XZiE17Crʘ,J)ak⠥u e{3.eWP'!s]GY f82o)żT>εQЃ (9}9o27(wH~@frvHW2yX>zvN&xMݴƵZ"}3K7LsvXKbϦwXv\ʼn1GNk'f.'&.%m#M'D ûΛL_fpkfy<%;qSt4UrHZkGa8odd6vf21-\j)?|lzSHOFҋSlJVVttz)RJP%ln1"O]R36ܫ:ap&PWre-3ȏY\F>P[.姮cY*&s;${ %)y'vL:dLȀO:q&l tt ҟ/"l>7׵ɵ̉*õq,6?O[y=U+9޵pu! qm@3 :sm@HhTHF~6 \-5<.շS7b\tJ> Z!]+nYrz SUe ߇p:7beuۿgk.xŜj4; տ_V[sXfJV;:B f-=fՙXjD68`kSd}'3u`W4uZ⛺.(d_f˂gi]-vߖldoM>2p=gV9aN )kV-kgfYw1u[MasZY|mqqյفuk͌ N ;oY:I'œ[{T<ByՎg d V͟Zktn\`5; S-wku7B{)`eK,2hm`l'?T- .V|nj'N׸VC3uk31Rjql= 8صp,_Rתf=zkUaZ QO߭y?1\em7"VKj.L6Coq<kaomR1\Pś]2COݨ7H)ؿCVxt\H-感 y:yՎOl Ɏ)RHzIJqu왴ɲf+|&0k,N2qbv%31/<% ɚ>BFxsu_2&c%#g MRMCE;-u앤XVWx@*|t[LoAwQ̉ 50#'SjԪ|Iw1,)|hL\!zƪ۽ٔ Иt9om;|d[!QrYEzs&$oJUǩڽ]D@l";`v5 cɂzƗ^bA*5f)Z>C#\A=' ;^4Z*PnPu6[R}Nh <H@lz:j\yόtOOFH>EKh||!̦H6wW0PG)%mS fҾQ(T_+i#hf&ʌ_kiNf(ApՀ {Zt>yeLWg&K9s1z,H]/'rV1%r)QFf/\ -x8|Yp\3e}>>7f 6i9u]hJ3%>ڇ&k^eTwYcn ] o-k詬ͯu;*sĢ=5~R]U٭_\ rV,<J1VUw媘ty%*YF,2 UY@[ғYή4'bofy_3L]\BgW1걙nNO 1pE1< ߽/&(PJ|=4*205wZ4Q5/'~\.cCF'{eT6VTlF&3U԰:p1/**$k^6ռh„ lmƖ1J)Ե'Z)fNS\{b>0-nkf" #͘#蓧)g gnS'm'āf+(ߍ$`NŜ:[=?bwcԘ%#̵7Z!k1H:@2zl1F~GsRs ;Ftzgtnr2N7=rF[N!`ɽb,[6aגP Л9]D\B1{h $Yiת՝!B.3(b=5-H!cgKy G *JMlq]J6[/x2-h՜mYgȵ2~84 #4ck6cʊǰچ$yxjG:S 6s`9:t?&ʬd䅳3"g%`){ *[q3)[v6&!jӔë /81VN֥9I K 1u'8 C0]Up+yLϸ |(m]JAPo0ibŇ΂O7Ԍ=ntelKg%29{Y9\xc@d|35*{2AŮ scaq<.TtG6LCwJ=[W$(FT͖e`˾NZ0 [*kYcR_ ,ϰpZ22 ;W9APIqX Rjr\!j++n^AKN@ BzT+9Ν\VRF||@uvbX&88nc|K݋C|> (]7WU"sPotc-\Mc;ֺnnvdɧ/DɃteN7[k5=#*$ xաqڡriT09+C(*LHC} (}2ˣszYjޒLQg&e~f$\ۈP] OU( ׆>OTWpH2:*Vrp@qllaYl_m-B~tcbQHCe!?VFi9Y6+Mɢp@]yiQ5sxdm8:.sCpZm݄ć CȌnX˨1\*PL>|E(z1.YC{&(nm,(TP \ȧ33Ywy1 TsG򖚾+,z-MRbc?Eq*If&kdY#bXo IB@6){ƴiB3۠2UߨG'B.\`šCq)Fi7Zf28ӿrɱzY>krϲ8e-yx{uu.4/7r2:,b}u8o*JFBLS ZtqK)ŷM؉b'(%~,J7}@ g*md 7~v]t" jf1:XS^gZ,[Ƴ͢<I/,n%,j-Ɇjjvry|$yNR?~q}#,}VmJhY|7q0扏=6 B&4Cde&DNi\o-/Y^ l2&$A!' oH};pumeq*;u. eNq.-'0Iƹy)V86qqG褋[:^ģe:0V4%upő,Ppah.ױRُk𫯗Etn)y%WJ&s=Ǩߝ[ȫjg Uqu7PB)%au:П"R@jWՖ@wM )TRA%lzDy3PHWzы^.ɼ¯Yc 1g,J>ofЉ{2*\iK.U Fҗ!oPi0&r4<~Ikf"2}RֱL`ae6c[2G󦴗9>5,-"jqvXK=ctvT,\˧^z{ "')}90*f*S PO?(bVW0xԸ6=*-4C0&O) բuzPDCoz)T)̢6)ZnؚN;>:~SHC*Y * SJj{<x<x<x<4r%tEXtdate:create2012-10-22T06:24:25+02:00)>%tEXtdate:modify2012-10-22T06:24:25+02:00X&IENDB`pybik-3.0/data/ui/images/BLACK SMILING FACE.png0000664000175000017500000001116212552273312020524 0ustar barccbarcc00000000000000PNG  IHDR{`bKGD̿ pHYsHHFk>IDATx{tUՙ! <&H"ASQ "2C[UTGrmgMю:S:3beR@"J*Qy$ %!@$7P@{^{{[{sgobX,bX,bX,bX4i їBKީ$, Jm1h(2I,#xO#biwxC.TvIO :i5/igȔ>񚸃/up0[ŝ?7sϟ.vM=eԚTf JSFn,XZ~q1T0@?*(݉[@)髽d(ySg`>3XN4k^o^j\g g=4:e24/"m; t4)/mr1a= ΋c/舖ɝݑ\F+T7#aHEJ9H&yFkyCe`[3ث9,̅,%K]sjPnE UUL<"Td"Z+n p)G!!P!UcL$_[bntG*RD;70 o( Лw!퍔dkB-_l ! 85 0*2= > @;w?@uK1?׃Ȯg/#i`Ei-J_rjs~O. HȤ+5.fp'9JBSjGbb=?_lF^I۩\h,g(kXR&St/1dwƫfǼ8sFc~J]X ɨq|ŌhLgO>?7꥗ͅzUl؀>GݵfhFA^8v`'}FSgW/ _c?_C\Y363Ş5M m0d@M)~5z+ y4^M`7WJy.p *է{t]/ jg3S/]ܗ[l%-WbUhP0j$@w*hSamJZX>AOV¨O|%s p"DQ'nuA os5EմdnL`jJLLss)qA/ ` bH*2w kLTXֱJ~neܺh_Rp|1K_)9J* `>pj6W>Ndn>6U`aQr9_+{+JcK34r ϝ=]Hqcm=aag1挴{p%1-,A[DNXU hym}ݗ>w oU%*!bcgmU>QѾdh! U W,b3҃iv^&:y_/\ܼݝM/\]l q Ĩr۪=MFbt=yM}wW6|7[}'>^8}\WV#5ҹ#{]2ʌ4e^UV~k_{j@|sG\>`l#W]*RuQ8WL—$u~'h:Ќ큳WUkjONЦj+ĭc1'; ]J^%I(˹s̅zVcYUJIZ*4%5uN~`ަF6ս$exbXc>& Q4XC[41K3Lxzs&3cĨft\]2jc^IXFOKjO%6yFw;U8Ѳ̳;9wA5ht'mr7B+&&o<'(~clY*m ذKǨL7wAy=JcHn j3#]@]X:]ыwe6l&h놰N 3AĈR1@}RR0HIA^wE+D=լ͊=cӘXN;ؠ9=(rb|fQH1ŌDmŀT6#p!gx]Q>&q6ډA&Y$\rE2,,wmPGd #ըz6瞖F.5ԢiVݨAl ˋ$a:pյn7Ѫ!Q_} .ZO-3Sq:Wܮ6CTj\M-0;uyݳvv2+gJ'_վF; K.2_:xj#,Q9ҁSǍ U; rAS˴(95S;61d?"jĝ~.brx]ᖵJI/<#ʯ㞟4k v9&䀇clwzxdӒLcE-ZCeT+}N"xd-m4¼4uiLJĬ_*3a1#WM dOEv#Y.$}˥GPZfJ;6qH|(2uJi2 .,Jw|:^DRˢԝUuwdbY<(Oi“͗Y7Y ]=+u/,2ixA?)]v?}2(0f%I?'Ig"eLfYCT5T6=(ɑgJOkB3`I8`)fE28B=u"԰W$$oK ) &hIDATxwևe] I@1c@E(({sFr (zU>#̊"($ $I^ 1:tίNUp 2 2 2 2 2 2 2 2 4!T%lɡJW PiLcӀTT3{v ekYݔ  86!L]]2,(FztaQ^BB?K.ye?R傺Lf< $X p6Cb#_+XšXrESp(ia4uW3xOtCX %a,9jI&qXL)gJН.ȷx(:tQfRl8?讫8 ;QϹf| AwaEu2> @3OLƃrvDVDtOc4qЋ +h+jnGJ@d~vъWgS<^$?3[@-DTVoj%_b' WiZj WYK&0"xfGMh*F+w˟J.&[tt V)=&5-fi TWrZ%]- TdsO \")do+}((|6麙{tPְ'BG{•/!(`yyIJ`t+.hA0.鎼: IdB1Y2NN`e~JF `Hw}1 d3P1ZJCsw.3Fwvz*B(J%]`[>Y+]lwV bw20 GvJ'DK_ P(/Um 2@B8 4,}ȕD_)B!ǿ`tr1ђ_cUa.}eD9H ,B< 2.˲< 6U>*D| 0jI~ i$ PVvI=N% a%]2iZIW[ Obse3ړ#U| ~28 %Y*IkG@4폐O{'KrfJ9w}8^Jd-Ӥ{ӥte&4B6~Ub{r8otepӿ\JKٱ"C:RKm|_=/qJDzN9-/ K:or 9\B:WEwt/m;qhЄ&G(Q#ҝR(cU!jkɧ iBsZxr^&+@`!pG`ᷯ7xZP ,/MhB}R:KlWd9⯧lb#Ya+qR$ Eh4^; MV)6:WhkE,g #bk|xBzkV2cvpTe.z;3/?-|/T+J.X)4LX Y1@ ư񫏦B;e I"ΒrvXI_?&ntk+-6k. [Xy _OQS ]3Ҩ6;pxmu2Ss3mSXqEj%Wꉤ lS.Tأ˦-K"bW mM$icP?6}I ſķmyC&5:,d^*Icy:u9)b+ %Nh,o<[ I󎋧0{yr KV'{+3$b0E M65j$x*XHmMI9 aNm h-I J*GU^üTïKtJ|UQ1E0P051jI{6^"ܙUܥjׯ{YzE>RATq3l9o/1ANjirUs5RQz;Oq8)=Q'GU~wk#_峛FVWdyГX msrl1/t{Ycy}t2JvQz̢ _iF]vU#3SL^eK*D8]J1MEXּOG%Bm/Nـ<[kd+໔={#Kȭ2@)LQ@jZe÷m{irX0B*RV_LnwPG QEor" xvWUf.Rn.=ȵd雾^9,X"]%څ=cMFҰn=RRJC5]ubX. mKpT׭y_zB_R6e7@_:9rNQ(X`|B-$Ey5q;8'lH BΣ&KlI d:٘6')x%R-f/xTg2 VsׄRLrՕ3C [0g^A$w7.N(MV GQ,ein--]_Z\yu s=iVʱWg<-KO؄ CzEv-1D,jhKMH["/5Ęu-ê&S6d-aȕBL0ul2Σ$x/;f/)T󗥻yy`cl.7]fBq;+XrZbKu8ӕ.I쯙 cd凘?LLAd9 F 8Nm͝I3"5J!e:L?n r^-=u'5tpv d&scn)&I(WL ʕF?޴e?}٠$&- 7-IgR. )0. MztgcS] =r6䖈ђp%&%Q%[ wpcW[ћ$9,cfU18еp̐Gw].dZj;t-&۱q՜ߖJtegJUM a 5&Cr.3-EͨqCU˴ tOICdEW*yifEf_]_3 O*.ZMKGOY1w?9 VJƘX9Ślq&GтZTcv -E*W1D}E'EfgL}23M:Ğ55d7#>sJC ߘ\IGW:UZU6>Ɏ[ @o%eϕLFH+'q4@T&&xۖQ9v,piW'e'*-YI>"Iwmˢ/߹HF ^dڬ8F9JE^zN^v\y[5^iCwjXVfr58DAY\dq:>Fd#!$=lcZCT%Zs3R2PS o$*M te)զse3)%y$zr1U(C{ I´4TR[;hA&;BΑ@Ո(z`+:^*ѼNnjI J9wL㥥N7zhMrDÄG',Kޏ蚡IO -:pyr]=mn 1| ꭤ$mR9=y2ߣR6my\gs3[4@{ yHQfBbۨ3ظIiH7Cubgao⡓Mc01C 3w`tt/, F3*(b) C1tq=SpԊg}R&2 >L@eƄf Jrf5עعCa )gB%w 2cޏs9#y{qɺ5\cILV !jGjm"~2-g1`90بlN`Sd*& k 8 @g~TGD_~|F`c'q̽dBFM'NsDآ>WHOIMMe :Q?kqoHৠ 먒D"cQQ3 f"Z)l^.£tf;?T^vV2E'hysE@obp5 e+yneiԊQlXjwitlpO-V/ֹEO  hI"߁y^LmP0HSIDtqe RfQd:"Dܞ| UV+FLh׶Uݸ) 5#y?Pw3C+?sdl<9eg9EB,WӤ<1Y\T3 ,.CZu머n)HPw#:>ױ@KB QM x$,~?Er)cg?ibN&H[aMzxX'2|ڠOQ݌R&<\GEm턽JXcP8wE9B7EQ1N<ՆEb@3M2͟ep331n5.uSN|Cus z(|BÈ?hgz1Xc?C5.eXh|Ɲx]L8Guۗ~9hf2F;ݼO6-я#?h0B/3 @.sjgTX&iFOuɧ*졈"}ݘ͡}xAV`44Ak j |e)ͼooӘ͗-Ln l-ĨKts`/Ekn#<&[4Sx!^Y\-M^~?K.o*_cR)rF1=^8d!ƠBuRaקMnJ&3<*jr "ۥ{7+Aiļ{JyDN0׵/THVt'%H۔]1s4GSGkX`B'GI4%yWjiwy*UO'짣:2Ў&\WR ˪tܑGea:)yQIUY;]ٺFMdD%tEXtdate:modify2012-10-22T06:24:25+02:00X&IENDB`pybik-3.0/data/ui/images/diagonal-lines.png0000664000175000017500000000033112552272141021027 0ustar barccbarcc00000000000000PNG  IHDR@@PLTEgtRNS@fbKGDH pHYs  tIME&`ALIDAT(α  KGpG,S$C@.kIDATxyN?g0ÑttQҭDJ4(-R)ipSߢxR[R!T(C$2s<yΰ{y~߳k-0 `0 `0 `0 `0A SNx}{.#& ]0 pDzMVDSHM I4`z$DSHM I4`z$DSHM I4`z$DSHM Ii@=Ns n f kFSAL3_ȷj̠*&Fo9S9aөʔnq{pG@w [ؐ(.biNv(PW>7&]K(ORY2`6KޝM%btD&\H(Tڼ)}?(ѡź1^m˜?I| -s~0fϦ@_&MxlbϬb  j?!bxZ)R-A7M4#cW[p0236 htDY!aYAn|6 %+Fy#͂З RK#>g49,0\ŒEb^n/3*搄n+b»ITǜtHTsr2E;$/=M7GF.'v/HHjvt>[f mEKh6'8(] %A7~ZuHpvᥝ\dW ӫt&Opô~-ksW cl[c&ÒkajbO{y,/ z#>lnõXZGaBqS O{e&B<*%'W|sr-L{9b{arzB]^Q̈z2-\a~Y `,ɑiҕA?J@,+̯H"oJ۹$]}#Zq Rd^#xQJҞ׫"!{qƭʻwY4[?6];29 o~nZWEranYk_ =?hnqWplHȢCʒa}ps{A/l,#S&:- d[-,]g@=Vag>uyx‛񋋁<9E*2Zk<u)"Յ$ph8u$Vz{!V|Y1%>+qYAq][9r0S<ʌPX)!4%|(P3Ea1m$uU<E! #S,2~bkk_bX j-[j"x4J(n'k~ZEd-YCL*"|^-MVct!1OXOPBPMTD0S6=#D6dZGy%KNY"=ȻZ 3#Qq N|鵳{)̍K!j"8/qƶd*9@=A|Uܪ"h8Lm&W2IxĉrɧsR&ᏁSqw 3)P *NQp;Ya`^~=ط['($`5>O&s5YWR+{2~2 cXI'A qs:eeE1W'?.RNen<i??As-yH: +kyƕUD-N,ti+;k%ʹIKvP}؇ ,]X(;_6h]@<#G xI%j<*=$9J`oyK?'үj3h`)AN5ۆW2~,4e,LS?qz@[ÀGe ygJ^z*J SN'nܲ>bua8 G;\(*]) *ovaZ8\ ,ܲ  &S%fm:),LCLH#'5 gbĘ'*\.޼S ~3K,C%d%A2&v=#L+Tۏ9Tr0^5=HcŽDX_bX9;l'w93at G<TVmd|#*(al!F^O6N"PY8J)VcdJy y]`C 9&L#k?EPG gOڭ+?-' ZAyRC:>mTQ`xQsRTH1C.w+䶆5U4A kLj? B44#I򻃻JԱtwծFI#x)J;E䷇Nu^.1~<"S*(UkG f,[YW";8qsKr5ci-eYu̹ΜDep g[HԌƶds# <5MϩH6m" ' Ȧ[2_ZKwqYOax&v8,zCx% p㎔j dq5KWꐥYt}\ItfN 鹵"ȠƳ#TԌyerݤq\̠. (# ݓB7g¿\ )y}hʀlT t^Yv0slʀ]dyJ)tnry7]Gzqv Z =^2_rγ0.~6鱌RE|y˩hO \@J"v^ VX]z.4cv`%uOtK%Υf%kiGxZԇ ʀ/.OފS@E!&s,*|~ ~w-ՂNY`5+qφЊJM:# z j$b?~5#h_PIUƳ܏p33ōj>\:PǏr F=}E%r cJnFtK l2*~9$ VB? 8WX~dk+UTOJ^kTa3-7Ƽ`5D[[ͬm ~mՒaƗ@ 3"3ߢ(X¾|SZ.O/6GxzA~W{EcV*,g_h+X&o^ShPSZﻝyf»+nXE?lL)K+ mmhqo&}ň񮛁"7]H eů=o9laC4d(Oш'ɗLb7s#oWqKR!jM;O I(?9/l>45DM>V뻔6wme~]r{m\3Np +~F]Y#J4R1q7My<`#rHP!f)G@jҍ^+{dRc@#&* *+͡9 b9v-pGG%0G5y69tf P^8/GC VFk0eAWw>puԲ!`ǩp0Ggk%磬MWkL:s;Wp-dJ%^vIMrS‰M}OmAmaAK^ b_MBvF-M4Bz&rYv'֞`zb8$YSGD9@^x،mg0c  za i<Yuo0=%fgGku5Y?``~$r.c pE}IOU^<b1#\ud!x> @&z /}|z%/9 n(Q V8*1iy)"p_T7}AkN{ YF+4:WSk@-48zUe*:H*S$Qlm,O`D %K҈di=-n00ΕMNR^ߠ6V;fp;lSg 8 d"oj)% o[텿c!ڏt qI9ZyЉ{ [(BEQsxf3j2]9$"ԐڪA7ARQ*qVW᝟H ox[?tx{ܙT\iZdݻzOV~.rz\:Q)eÊJ<)q$܆tricC6 cHk[AiC)Ͱ֓xmbU`_"/<Ӂ0,^iwtD lIr0F+tOW3C JQXP[s?]ͥ*4I S!lF;Ԡ$j\l-GT(C̶=mA7suQDSيӘh I)$L$0=@h I)$L$0=@h I)$L$0=@h I) `0 `0 `0 `0 A;!(%tEXtdate:create2012-10-22T06:24:25+02:00)>%tEXtdate:modify2012-10-22T06:24:25+02:00X&IENDB`pybik-3.0/data/ui/thumbnails/0000755000175000017500000000000013173167603016343 5ustar barccbarcc00000000000000pybik-3.0/data/ui/thumbnails/Brick-10x10x10.png0000644000175000017500000004767313137372642021225 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+OmIDATxw?1 ~FR{*XKTPD,("( tD7.јbL>D&ƘwyfK-s9><߹x?^B/PNѨcoKBl\)V3&Y{ZƏF/GdOO?ŮbxY/-v9Ï/ v%Mt\5{iG鸙@E!Ǐc~6-Kz\2*1Ԩ)h.5U).\.D8@acc9^^iś; _?4_9jX2wM"v!d $*ﰓH^Kxz7[BS#.c K֑g[xs< :C#DTEwsB1g$/˿^h (՝KZ7ґ wE{'>@4ʣ'V﹏KƯO^I5dlosJ&@\o*/~eo"'nȣU7ָ~& "<"H(HdC'QzMos=lH3Ⱥ_C&//vbch=vx~":p,w1㿍>[d.݋[I+z8B 8q 34I;*c~jz.7Mxs3}ǥ.^X>i6:=ßLD^ [Hd^7:Zo}D'ΦA,'whfh"L`꨻^k}G- ɖ?<+Z )ZmKv7$G.?F@? \ 0&8B/ƫ/n{dq:1%@LRj(>=v' M;uS|?v ~[1\\6_g7{1P̏E_y"cxN5,eJyR+C ƑwhC!dG_  Tq?fL^e˖wT?jִxpd ZFjt5d<2D  n^]H6&!z;4BYFpy]yIu}^ћBLqB|/<<:L~B3.vGr^2FZcT-&WJh;1 ♫΅pvP I>t;Td YrrԹ#2om/EmZA XZV6.Xs5yX/ DǔTV.^7Hn]:]9x Hfw($cդА>‰ $t2 dLc"Z2}(;}&UͧXw٬#b1I =AU1/qUߐaEc5M߅d.Dt1c wx<0ƽta3) | }労f| H?ƂԕLLRHe.z9&Z?!cXR|'@"oC8't-pܠK"ZrX I:. <.Dre4ޕE+Ūӹ  J \C␍W$N2\|I_B09GіYSM5DO P-XJU߁R~݊&Nw%Ӆ sCM*5NW%t9Pԁ sb8&nȺ5ʘ4QZ5."C; y 'PW+{%K.QNߡ}~t)2N#ߨ1z= L שTͣC7wz-Fݭ\t (xb#;?h>] *B!0(k.DηG ߍH`! We{؄Z]8d`s0  h 5x5F9bj𻶲s#c"R-SgG`wSAߡ9c6*2zùk3Zzr:'#W9Y٭.%AQq!!1\"Gg귾RWx p y?f3XFtNc4/y VRqMeVT7;s\Ki@5!~a#wwpstne("l[o}V:j!C WӏB6Џj Z9CXO.s(yEnT<%f2V6&tMwtGq XewN š{)xk0/%n1W|ٯ ‹=b1V5T>d<\|Hfߕޥ-`厦-Mc2Vպ˕NICԙ-!CB]a YE M(Uzf,|C:<{p^H_z8~*؎WB"E6{9⒥`Kժ] C`P|[6<.Z/uT1y%d@Qt1PlG6'U+ɛWj*jTB*$!d C2߶ӊyjɨ jx\BE vRJ(#t$r.r F{"Hn@qnSyD).ߊ'Sn3'Bav2{{U X}9j8Z &SJ~M(P-dΉ,io+NmN:ti~H|Nw_0fҤIB,>A%]_wj #zCjhY) V aE%ΉM .I%yM~Z)UO`uc |9w<" \0 }&?n 4ⵯ<-KĶ=|SD\?5(46_+})Ѣ~ah0^Io]$ OT"s F' `1)W*k?8sj5Lc*%*G[3,]|bHsvJ7:Y2_N|(\pw?+AG6^b}l'>x>pۜȊŶb5QuU\Tlɸ[/Gb@(tW4kYmvgPjЅ[rg(vl=Ub1e`s5/ebqCC|Fp9˾Aнӕ Qϫ]X;1rt, ;]զ'UK@H_( )`mcK/ʽgTp#b YnJ'9 rOZ"65O.|\|&چk[jεnU+JJTZ,@nVCJ {~ض9}_gy/VksvO8X] ^HOkpHi hL{!h_2 ݜOrH25 733箽 9zJ7gqdԺdV~`=nv=+py\7 >UY5ڙ,evt1U6]RNRƑdL!< QGWr(M:2"0tTƟƿ"yQ0< ( joU bHLWphA>WorqgukkNωuooaB2:>dؘp1sAm` 8@ B}D%R&P+no2x|q46u5ҥ'}*+餺y`XF (K8ս\L4*0W`(Qus )%DpV8|ѧWk9i]M"cu\d' |1q t1w]T404 \Ab`(DL AN$ym \"Q:n~0@j EC4'~ ,(^|Jg=uO\|InRߴ.vq(xk(Ӹ `\HdX06 g|ޡ3URP㿚\z3" 2M X9ISG|6=7ZݿHTȼ@Յ/w0q5Ce=fPy"}>^̓JPe:'#% B 9z%q;so! ;VzںV=\Ƹ/ @G7%EVq>Ty첃URʐÉ֘Z>ZrdBOyx(QCw;;R`^.fI'L 5';3aǹqBNHv9%_1w2e+ J@*zoa ;L~BqS UD8  A1e|yk xrߡx꺪C!22w_z}z NSihx S3.|ߗ#3kL"M)#lP 1{F`أ ռPfQ#9W[qy),k;%p#⥝k8OI."XL;{?*bo;SK>:Y >ȋ3!dP6`9 Epz! G t@#z>r|@B>6ThpB_u5J}BإD!ĪY Oߧn$)4>t2!Vܚd#?gT@eC3cO_S$]P8׀~}4<:.n9ƺ({9ä`P#*]I1wS(ƪEQ<@úW p7BN:$Ө޸l2D[ClPdȫ1"|!8R  PY$|e_*TruT,!DV^ܢ6=1qxlш3yO|| }O98Az Qrx|.hh ۹XeϿg$}O/I7GE}JWSLp@ػ62]y!!/"o,b{3H,UA}|-p02; ,z+1*b )$o-2R{CQ߅C)9ANo=70QF,;.UqT"1 i|.]˴vR8\ x%N EˆG$$}sFy!qxcXܙ?V2Gũ-I<_v= BX~T$,psHW/p1*[BꝄ"˒ʞ7z7w@XeV>DH7r*T5CM #۩^ǑV&))`0 ͻr7'p?qT śEyh^;9)R=h+ĴN#OT/ 嘭J))tbҭ;-)q`@VK i\lʐF"&4ܝ[E#7!@h<*B?D.àJdxTᄘ9R=%( u?2fSvjqT<<&v=-b? 嶤qzkBT_bBgLV//=^,5QjJb7*B#ׇ,() >04cH! 5aR R0 ,6 e<o z*nzŔ8y2L q|Rh^ <#7!O (.e|]QW 5Bbz4'qʢ @٬ KjU{Ɗ&CQrz>C;XId1E1( Uq3U&zNBD2pu@ sb%c߹0*n&<7=la A4}?&+) <5"x'>ty qE0mt (E.GS=d)EAH Wu-`˖-ʹ u'0v{44~7.f-⼟)Ɔ42/뢜ҷ/nZ%_xG~(?+ZA& @qQw SXV(Jwr,4xytnG68g,J-R+㙄vT* h$ūsg 0 _S&$vgL(UUONO&E93wMr- <&fQJOW~cy;C۽8DzhOp |~Dgu_O5<}QI%`pCdx!eR Zp/Ɲ A yI##ŧR?^դ|Ezh%`=P5_DS1.2F sdxӌZmaF)) x8K!'L&5C ü1AF}!bXzڋ~ KSݨZA\!Vb! A0@7FUO,C3(}} /ՑDx޶1MǼjAb!KmPPU`xV "]ÜAGA^.6%HGopkM\Ϋ`l݊4PbdIr$gj)88ΗE+4bsg1B.|U7FĜ#ഐ VYD$!@&ˊb(;(UkhU~oǓFu07jo|^v-I Ԃ2=d1YAq)!q`Cka~Hٔ]jg@lKhlDfC~2uVJW MH%c(fq ,p ` X?g΁lY2@+wS8'$PH1ݴ4rh@t1 "ۘ%=RjEN.p`]e0O~ϲ/@2@7CfcR]@V/! )>E%ޣ3%g.>ga*Rl:7yF\ 1ޡq)}.8ڪ4 HR6Mٻ8Vfh/wDw)/z{!w>F12O?^xA~_K2."?Sh4ӗa\*E!O΍@2wt׆e,F~b =sU +XޠKZ*3Ϲ$ ( TgsB8 |ܓ~_sU$21 Fn^&bn (B;XhPN$><&0G0Es5TC ^##.ݸ!pg*pK56jaUR'0" bO xp7G{Y0xbROo]"BŊ{rD9],V,-Ƒ/~?w%o`* ڿdl3419WHC[ Zw0~ZHWUG(]gń;,W]%z J)+ }-28 zɑE 72\ oGn>?p/*8maҊB~<19>={ ɤvrX vs<֙hsߠJbcn\WJbUroVc%0ԝq;9,a5r}Qh$P'X8JkAI7-vnǖMAh&Ь{)@IJ!C>8h|E^/quH Vt_#[(w航D>%{o!ýx2PZr{Ѐ T4P#vS 2ZH}k!B" [c+Ȱ~'4 0K"#:~3f0 Öa==q M0 p8Te6|:{`ASB8JI9`ܨQ^aaZRPf*H 1V3UEN@y5:-©s/=5v03C{XR>;9t|FCIE 0@izP`βo{szѮ^*Ooʘ(5oDuoݩpx6cU#4p Τ/RPh6Z >WuΙss9C tNB:JałH S$~K9?CױIJMV<<xtCRt o 9C@cYb ^Mc=[)XAa?Vr'Q4" @S mX Be,tp6= .)eE1XdTM;}*=qBBLT8&| !>8qݞ nD.ț=A7I}b68Nac Oaի`X3!h$t9-;"#vU,AmqP1' I-sP4,@eaZ^E0)u{Pen}vȕ- H0>rၠ|B?{N m'|` bx?:!J{A ӫcO?ݲbP6H̽~Hpߟ,]f$)Y C<;*!/ϙǾb#5|ʕiuC| XxŁ b*U@U@ ;x/xZA:*vAlaj+)!qunЋl3mli»oYgAXD^]&T|CT㪢 x!cȆz$R\l H̃k1d>h T/ZŐ-.B;w~R{ [RZq>8;.^[v`$Vx8f2f2AlYU#0L4MD^ZƎcl_ 18<@̓{ "`S T?画c .9}vnWЦxrP,[VDys("P> ytKhV)U@MfX ^1T 7׫ĴE@R7ÊY,B0)(}hӷw`ݵF0'}c!&ҫ8'fXsCPtBnEƇ(̑\|(j9 423sCмbʤѸ&&k.ivޡH%aH.3o`Yw6(L^ZT3g&X !P!+Hj f_#߈@ޞN_^1&@֟tsS"֯>fui%oZ^ А+ dCᢽZ^2V}U8Tx^-l*dx`K\wCV졧`LW;;S9&߿ϩ$Z#L)3PN05BǷ{MBV9$OH`E!L%_]|+y4}b۷'7,T?o Ͱd]zK+7DfբR PmaN ZhDe\<2L3\-xX41r=Y !]4:Wۅre6z ;b})G' )oRО #'\~ r3'ŞA7ITYA/%T"J26ZM =S^v)`8B:)"OowZ;5*wAvPnKQUqAdϛ]'Ʀn{`罽9,co М ߩG^w.%̌qqOX!vstYP.-^mXqKǁpU rH#)LR"ON͖J Ġ`TTR} X$Nޥ >g]&0}D7y P`k"o!D9KPBf,Ġot uZF)~`QMb3JE`H.#^KwVM{i$@+[9e ju7d AV/h CU%_La#bˆXIwa @i"C.^/tҧZ<ì._ B&Уr=?]A4:8=SBn4irX_u(߰2t|0}|~q3G}. lG?1ec vw/gtC C0 ?Yrl㯙 {AQ[;Y=^LyV~>(\KU"3s\Ni$>}3pe#\A2ד;Ol !lFc~|zq gϜ*O A(+&90i4t)E$QFM7ĝBR7~"mh}l0Q'1'<9X0C!Ns%P򅴋8|1C)=#b cX Dzw%bd //>UV]`B>:U^0,4"ƺ`t;Djv ׹7<^C%]= K ?LC/G b䌳ZkR=fxPYWC~N'S-&mI2;"Lamw6qy NkF|k8*]]"n5X*H^<hbeA4|dE+_r5 4`O|Q>%ߵ/ Ҁ0 vln76XiIJԜJV684q j - Y,;R)dc>y_!HU!I(҈dn؏mypa4@2#@(_a /O QIUnpq+-d`{YL,i$ l-1g5<__Yw@@]w=toP߱Hݡ Iь7ݳ3{l{~>܏}k>K+OX{f90c=V?VDޅn*RTn;/p+8J]I, Nn&:ޭ!  Ɔல}-{=׀F"T&m"nP [k"JbZ1 @VP }`=%p |ݹ0-A:?<>>mߧ^`°i"gXGGfLc&0L%_N#z&d#wQS-w3w8Nh A{N6w|w.oa<5+nvpqTm Vi ]i=XY 8j'Md#g<2w K p ` q~/Ή38a[L$[ w{|.KXy*A2s@No zyT`faRYoST$0RW1rK\O22jF=7"A֯ ﺨx}We/+XpKZ jul4MyRrF4^@oݼ2M\+L (w#c6?B=vXj傹TDjg(4) ڇZV,y痟H7ONoN Oy1R.zU L7aÔk{|^nLH^D B!X=n.j_{!%k, @Hyv/[Fd P"Bq@!J"Vu0\>vA]:]n$ƞD'U9obz |]mj~~b:>zJ%Hm ֻTl' 6:3 Wĝ b(swf_֬VP6 ܸ0D}MOK|˝ƹ^ށdc5UQI}70X}!yxAq]z??4%UC;Y~FT'+>XP|?{lIENDB`pybik-3.0/data/ui/thumbnails/Tower-7x9.png0000644000175000017500000003501513137372537020606 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+9IDATx}wUUw:LOɄ!HA !("fPT@u$W0.?uU~=VwMO=Ì383]]]S=oX?oh~h~h>|4h@ MsWdWXyI47r͛>tL'G4 ޤ' P\d$o6}CahG@yJ3A"P_ut͍:^אޡQe"r~:ACd>:׊Vp!y>v^A1"nu yEzxL" Xy:н:+"dG;4ȯGWꐽg㽘G( Y"H kADrt?d:NzW.453zb&P.k)Wxu'у>͐a:앐x ͐2:+9L#F&sە%c8WZh X;S:ӹPjD@ZBa s%]! _?N//$ܰa@mA+p^Mm@ :Ld y${Iqʕg.^ :1`1zеkUhת}^1"1 /+1^{okFEjLUM{ϸ?ĽJ4Z@b"hpH'd`5q>]kA6-s24/Mj 2¹ u١Bztb|H݅Yu-g VQ/!7ڟ;=+xz`cs(oAݩuԉW}_@ɵm*.H*Ns\r넝뉰 EG]&m?_tk@ȀуXATd+y6?Przedǀ^j@TIK.D1= t =\{ӵ:gaPq"?$=ծ:BVn[2&+/|XHV!i v.Px1={B.!>QH!"D\$`z#[!>Ne#=:VG2D2P\?WƟ}P1@r E$'iuI"thmoM. bf-%v 8[xJ,wV,J9SEkQFQ< }]šj/%oXޒ 8B-*-Ҹ^pJ}iFt67o QhYvy!C67z ?Fv[%%0Lfq$v}u%/'h!Rr2xyuz AN.~Q|*=;"?mΥǻyyRӈDP901Mq?wC4-.ít0C1`@._GeMIō 3ED 2xG?POo7tB`"UBZ<⣽=o⟏t~=<}uj)7q<QJ+$ 5HPKIeLcã4aԄW=]1nEXxYr z l+g'0 $\V~ )91]Rq\QlSXMhkA*/fȺ=D %(\AAz( ~>vE=RVgK T׵<3r*ƗQzV#|K@Zgwɘ"?|>!ZJ `̰eUݝ_/^h0xȪ:Z),ӓ\[Lx=V$ڨ&c +ydh" 5t&:VĽ7y48r0]G 9Mdd_; N~͂nIL[.Kg+ ؋@ K7LV#2ء6`f4 &Y;j@p;6OIT$@@{R`g*t/*fߒRA`2oCseT!;xV6=;' K xzC"&|ǔ~R?"1tsfRVy;F6Ȱҗ"<ӚxCX2unnL#(tOҿ h "0C!% sC½(!h ,s#^1K|Aϲ~ULJA6OEGb zX}3 S,3G˝@-psy3WjFf[MD' /3ZEޯg&Uaӓ1g0c;~0~W24 5tl!m ktK齲vpBxAy'\؎&HE&0D#lu~咈Rۼo&W%#Kg,=uGX:U?=VzfY.>O:{/`鎆GdL4h[GpY?T)x!!^Ͻ'ݕgX0!(~D/kb2uqĤaAhC+/W qqݢxلh[S£P\9Uli"G18N /@d$zJcNt Ų4 z<Ưpqmjc#$`7z oR:#Fǁ X/nK+E!E3"b=_5VuQpe[(>'Bgh5PgW t&D(= tyC L$P+X(=PR6HI0\e2U.N7#DnDX]qyBv@7(D228%Q_ٞ/>Jpкh-.nnh7a/cG*.B+!C=Hz}4UI xuT5ʕ^GƟ2~&7>nQ+ڃ)ѳ{5k|ݺD-O7ŇJE#ƃw(DrgZ28re𛷊ᝃ=z߳ I5p|Mcu8͠V%ytB0:(>Վ2\)˖dTzCV QC9"{`}mF]=_MEyxctS!9)pfWC"o|ݲ//oXz$s1=;D! 8] De,AD}#OAĥܓ(UMQ#@) %E1頳?*O켋be\څ'`UEGasrP_JdHwee͛6.*6Մ# %'Ӈŏғ 0)Xu|M{^Y*s IV+ Bg`}61Ӆd)~Ne!kĐ4.gZƝX۳_|R!s5Y";J06ݜMf_@_DFA0a=Y=+隖"!,6] 6/Aa"?j?p8̍= w?Ymzu4Ŋ9bMK'^|$s\M|fxishM [;#I*D+"Pp+f@Ǽ'$I@|) )Y+XP^P'q?)Ѕ˕R1$c>L]`XY7ŃR˒`*j} `ЙPICDzi-C9}-SΫ_/ nqo^/Oqܰx|%@zY=ǢZ~D1b@ X퉀MbIl? f"Im8kj(VTV- fSHQJt "[pcR @ll⻒k1* L~ DÆ8,Ks1I)m~)>/YgQQc?Xo( nV5bU +D!"[S.&Gk@I`V,6P{`ѓİIOR#L''"@+//^(H|p +C1J~o0B*}0Ck6{;WxP6, ?xӪ z1$ ZC8."c; w0 \=SHHώԝ)+,Z%rNǹAڐB9bl).J tC(=slM[_=T>(FE%K51R λr/thw0⭊&2qKȖD-T1gZ'_A ڲj=POZbSZ&/*mc8V~RR۸,VW/}83yXXbpOS HByCϰ($p,V@ DP,:r Qyz7Ngp|;F( =2NvN()6!C ķ?"gTJ.?Dh60lE _:[⽏0P S0&6>NøzT\M! !m杤gN9 ^ uWPf *sytn[<׊woI ԝ"Ѹ7Y#N)ICY-yΏs`, _Kŗ/7_0{p2_g'](?r^/Xj) URN BsAsB` )H =)Sf?#u⽝\rK{dq,rY&e QJ+b\0B#kZ,#F:i#'t|lK>dpY0\@Й)QȎ(: 6V=OEsY1ٹ!n >4WC|E1 b@ ::ߚEOg5EpqË]i`TN;]^ =S@rȓ.Y Xf1j)r < lRMf i^M'JA&47tJQ 9?>mD{A ~h""c6e a1~tMK7D\F\7dĠLAQbCj?e<@VHB'%uH{VGgfZP8Lt"$:}h'QL@5|d`{ :&yƏ9;䗤\9z 6psMG3) dTd{r‰V6ytB}^ĖIJ!<#&=Xd T T݀@i'dk]H)¡kŜ$7d@CXs/Fsy8, bQݢjXULJk5!^":&9w0vZDTÑީ[rJƨA! Jˎfy 8oc>zz>M!ʏ@t?qS\6}z~C4L`=@tU*@4qY C*j ?]Ï%)-`gR]Cd /@ ehV<^$2mgZzxWπ<4laDxH uw{8DP Jm!;);37*.KD8ؕ) D1y"Ac[.m9\VkŢ[;h/&ZVsF|'0iy*h(uT8DC,2 @\Bl γ42l//ݿA9}0`^.̎pgE(q 8R3w}r/tߒ-N=T%*%T_%W/Ecb;8fQBZ*S^![Ȝp#[Vgpdjq!0PKz G1ZiaѪ؟$}4VfUFJ>[ ڷйr/`W1.sX4,K|#mze1D?/ۿƽ\LV1i A09twqHȗ,{u sDmac3Vj,ml]? 9D,-7œXsQuU6k(廟pV7_Q3("ֿqM;_(>Ү`݋ }P9hei tw13z J=` >V $gêd y`\!o T[jWGCw/2Nl3̝}{[nJE\ b_\gEQJP/@7pcHEm#b;,Ds@VK?椉\6t1WȖ, -2zXEm,GFxvѷ;Al^WgΏ!}  ``閸L Q iy̨H]K=*e* FHbCwDdR3{6>q=e(ԴB܈ָԵi0sTfە%D"]!—7˟?&x樀P !EvrvYDs_@ i5T'ՎX<7)0|$zP$F@Ł5*JqDhQEvws} ޞs(]({H YBZgWW%x6#b@Obq? YR=12C5\=24 sW,$ a \r\Ru a'C&=0رhRHM<6xXJn} y;11ԡ)[??6^ܡk[W67T_>­[ @G3}5ܗR JȭQ4`5I\c { Zѽ5CTBZZ1.p% )!F° ~"Q^&x/r M!op'֑'qAvJatSU=gu :RF80iybRskmTQFKm42d$(ttoڿa9G11yh'ZߛCÔ[1.jB.}v*(`>n;I٘BD9=vp"f:>Lz,1e|yCeAi_(dBm_tnB8BDҐ! džϘ |u+t|<:\*ecz5[}Y i@7&~No&h- x ' =w S*Vn5k^ "P[g1-sIײjW"i"Vz}.X)C ꅇrvYZ2 F,nYժ_C ƺ"tѪGxpVqR(Kȱx j;OZc糃K"PJM/)bސr$rǮS S[R! 9_5Wͯ BW"L_,dyXW+L\FX@?j!2Cf cČۻK(R2T={xR@?Wex-'s_!@kԿ0~hD:= H 6Hs#%L#^EȀeCXY08> ~?ED[@ =Aމ$("Tvߟ+59y BS oy.[L`ɮwW|p kk*[y2x3)|O%td>_({!P{DI ZB(ّlmͧZsWC@ЯA oXHTQ B8ů:{ZD$^[Ā!ûhQxܩb0;v{!{f;V{ۺ^|0 B KywƐ5 B0"vɪudJW%WJ! גUArv@&Sũ .PNx; (!᛿׭!^ l.wj,)_@:OGHv-&=gTF4 H AGvF- 2HԾLCn1A[7s3xN=;DDH#!df,BiL_ᢾea|Q@nj^lXX]塊`Z:ƒJE`Wq{wAQPlE7BLHuO*ݾ &}Xakʰ`r=ܭe=O"yD6Pa+: eAkB OW kvqL&ښ9Y>;;Qn=7r+>bl<_N1q^^%[04ʕ y2+DE8o-xTJ} `@N^40(?gV5dN#~"Y~׀ry,_G&hQ!~0IcNagۼHhG߄RŎMq1slƦWpƝDFS;{@n+!_j3*Rszpz B'A=К_,*{)=& Zaa*|,3DdL ~ drRo.TLc'_Ԟq7&?{=4H@q*su "vHͼ'|8ŪՍ=;7ay pܢ3/s{YjݕΏwpQ~n )ox@'`6rvԖB5`, ?1Ŝxk*3:7ls}$}")\ iw0'N;˦QƟ36ȃäQEM.Kcba= *a-({YfiPeCg/lK IENDB`pybik-3.0/data/ui/thumbnails/Prism5-1x4.png0000644000175000017500000000656313137372665020662 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+ %IDATx{Tejk ``4,!煫/\DDTRX9aID"/kjN(֔6@l۶Ͼϋ32̅s~x <{  77PPPPPPPPPPPPCRy,k”U,,š*sEGIJ{a^ʂmVl-{TLhA,}'j0RY9!4C@6 9hj,NŸ_ j ~_{rcN1Hb+<&Dm߬gR ܌#E jW}ŷ Z4S@Ca38Y+ D"? gK_Yz߻aS䲯7}]hZ3*&||| R)zz 6sos{u8ϡkCHHOPrCH*Bd LbjٓŽ; Y~͊ BCCARqPWU o'~g0Ў 1xyyX>ִ 7aExr .%)*WKT!! …mV-W nDNhS5^sXtF?p^VCTwoW"<lp-0>6Xd,vTTDDD^ KX(;EQ|̗%P˙%+>#@-L~4cчO!.!H<'0S7>ϧh]|L #3g*L{q}t2*7T^1 Ca|r~ OIv1ԗ*5.9W-B@_R_y5.yFEq6\ui_qu+ @ZFLҾ6Z6|;]}'PQ[SF،t3-q8r 9bfnrQW[]PBU7V̇S'lo}X_x,c)ȇr`F0ͫe<&BN1.#R jH߭Rq 4  ٻvn8/BT0zI1,?m0mCsxz"üLAV3t&Paf“E YKK\=̪ῇk(hoBs0-Iᓎ[Æ ` fwB`lĵg2(rflʏa'}B{c͵8K @} CphJ/lc([ tF?@ ϼo`~BcCHt~|Ri5tvgn@~~u{'XRt 7hȑ#yLZh;d~@9{)K}hKx ]úv@m"9 lc.:3Q *<־@ho ̗Bߪ 5ݻ\t  0(NtH|<<`Tn t" /L,_=9{tOGZuâgo/kǿDu-Ll~c׬% Nx_a[[AK!nV#!yӋPߵDr>0<:~`vHKS<6&a4dn-VC39뙳o!gdzZS=y<==l%}ש3*;|OK{&:3+] ar 25cN(>晕r L1hk}8bc-b$$'f?j cʗrJ֮&_w 1W08E@ș7lg΀';E08M5-Δ@xq(8<[Q ō { >oy;b$Jx9D˯ur(\7N mG>5dOBFT*'/ qekM`|j< k>B3 H]A,82ᮠuNT?Q] %p=`  mGx ]DbjS׵c;ɘK|ZBYpZ_1{\<)!g(!B 9c8v')·AZ7 $bDu-L2V`i':\B@CR^t B6=GСC Lzfslt E؂|3_ r /t`CjMۗ]29*%2 )4}jcVNXrEgPUZl9.H._oƁ3p8TygX ?hXW&eM igg53Ϡг[Pn`+C!IJՉ%߲BŶO5 @! B(B(B(B(B(B(B(B(B(B(B(2`?o $ZIENDB`pybik-3.0/data/ui/thumbnails/Brick-9x1x9.png0000644000175000017500000002157713137372603021015 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+#1IDATx]iTյ'@5>Jzh_g+~ak>70!@ \ IdX2{RbP"0$xxm=UүoA~]Raߧ [\>@4`:(L[]t-#CQOC9<Xs>s:_2 Q^wt`1w"ۋq/tL2\m"]\a7)fy2xvoaȰ\[ -׳*k2 CX$$ {̵"{=kzh J2 | 5;q2:Bo$NTltp@%d`Aj [@PQ|ގ{ m_7m] T| H0[[nvS1WEd82lh.,xV^aEol:aFef˼<:D#?ƂO>_|:P2d:ߗ# RqK_ "g=9ǥUd߿Rc`7qf4VO\;5Ij$u镕4=/OdbLO ASZ'pꂤbs}Au`p,u!D=qcԳ/h́Ze8~xjl (ci^3H#>ec."Z<dHzPs> M22"56Ѧ^Rܬf Ϝ2DzuD$0=Rݠεr̀ '0"QJ@N; aϥr1Ge*N5DzT ,aMÖ^L\51|qU >5\S84d@2Wxi_gBL f'X 8{?EȐQT<Zv 1%E5Sš-VI G4HrmB36p5*'V&i\!}>ځpJL'!ߧ A0_՘'7V,ɘUA3Z  چ$L'c@4G0ļ];d!i/b9ɤXe9LVY`3=:w=\W£8'{mth|v@P3q 3Kb¹H() d0Kg}ֱL)Q&:#?*7mQO$|I7, ݌?F). ]QQv=$AgzB/Ø"vŹ\]ͥuPsH0`]S yB~v'!ħI_gOqa\2sWT6ՌL,iݺ4d%{ ۇ k(m OW$S9ӣc%u ~!!5+-gu2|L'\aHH6Nw~><d&U "ǭM>hF&!jm}3U9Ȑ>cүH ެ$8ͲAey_Ȑrn4=k.{ 0's D_5v$D'`",S*߇9M 91[7͝c@D͑\էM l.񀑣)W IU <e@U= _p $=DU/7\mYI0sM>hZt)9$aNUzx*)(6P@@^ bN%I9ߕ?W_Sߴ$ ,i,*#$m6R>.*| ¬hFF 29\$ ]STM@IZ#ea,bm2 t Kj^J|.OA;qf_׷vQiL@/J- Vf5&˧6]xN| =EUBCc"X ґ/:pO"ł#3򉹸hL3%,mnQhٶG~y?ѫ$ոp7@dEgtmQēE*Y};@]kZW,[/R.? 8NP4*,J0aç 0yn.Jv-[j4~E2+ F!B}fS5h^sddBt^hwTsJ.z*MowolV{ABŚ}<:&[̵,ckTo؄}zU.]? г0&O4ƈB0cWpnZ5ww@<9x#HJHзXu&ɜBQ^gȈ s 8XWW{wF~FrO/atcw#S *mIk-a&u+DtlvHIN0g(dAM~&sf@~j A>7jD(u tǥitMpȥ~;[-~q G}UW|;xcTq'gXvQ|Izi,qޑ;|#ƱS$ȧ\%]RRB:IŒ^h鲏&PLc0«g xT1g(.IEH9wX|WW-4\v axzC8nro :sL7@<]OQlnpCݭU\97 ύql;'lH1,ɽC6!19s0X6"?T P^$WKS;i`ǣ(Dt {C6{7{}VSУEk؄M~[ŧ' 1tFE}w}R/၈lЇ< GqW!w"z+Z %=UDpSuչY0nĿ#rH66r#qMdM8'-[m16|D,#4m2}|o@ dez>c[QalZU5ChۥOKbx\yzz]}>C4~BwZT;#р' ?P4EZx.DY B&RCKgTL[ƒ "Qc!/4S ˗A'$ 1n{cFYI0H";YEaUW> s7lj=6و#Sb~^d , =, fW%k0D3GX`~|r]CD%JM@z~pMn:mA7$fMr͞ =UQbC?/Ro<3.=I9iԝ)#ʗcuw*g~MZĹUߚD# OrA=pIJ&r&KG 7 H(2Q'TJ뢧QR]t?"c:% h>x́79!7/<"j}|"|"θW,ZaN%|8f:pvq}#s̻Hkz!]>ZUC?=ET͡{-nI~J%9ҖA+LA\]G H|XQ(wч2?~ %D]Bʼ9>IF$dmG !ǔ6se< ^cIx^C$»ϥi5nD^x?&r[m̓ sat+\[cLñ`De"ڀo5zrx Og#3Wjݥ' =$ ? ;IBY) JL^}Hb#ߊk}A)<Ϙ94_kݪ~i=u}ʺ5+w)_˖YD"S$w)xh'c[fo;k<Kh|OƲ7+KK-'Lc̭ (è2ߟ E`H_>Տ _~X/b |Sw2SX  0!ܥJ{#[ jz,cNskGٗs2)1':!eRx>̈́sʑDt± }?ej%MhTg\/ijͧ#b SYŚ> |%i%SOᛍsy=Gʬye?aQ$޼Y?%^O HTYI9Mb+ibcc ٚ>RrԠ|gY[ZSšETjO˶.A>^%B ;(zc6ʒ=L)9ؑ|6X&(2# Yb٘s~`EbsCd}JP5||vsI+54F4;^#hT 2f"* ZЋ ,4PqW0L% ^\y*wgH4=l6w8_0S'ҢrimmYZ4FS|AR itCJM=ًx_%otn#JH0(Q8֥E~ ϩ#|'{KX>. Esru1.r_HVl;JF6 wև[xc{\B{+FHQlP%ZIb'_}V{u{CQ-;:xWGuRƣTF\{`X&ID]4 #@@l/c|YW-]-ҧ{iKۮJ(EcDcJ0D[Vf!*,1|SMb򆋄m)a)&P)2z>9Cؘ,jjk@]XFv 4Gও&^*2ף;v< t(ߗȆ)6SLTnߪLMQk~BxzUX7z?j}O\;ضKfj&XvT hʥ;|}vZ0q#ogp >*nIDǫ^4ܒ>At`Jny{B}9O&sW'tT|'If m|ɏ&״?$u%LF5Ԯ\OD`5o>RIJ716nH a_\4XD 'W}Y;5 XU&/ 6$"((]kfp̭~qabUV{_/hj3#5*9F1' @[nnNFyCqh('|2s׿*ҏri/u$}#d.[rL 2dԭ6/ *utl; f @̥|)BRZu[(?|Wh\]YG_ š?9P.Coհ<6h/+&N8ܝYF*=nꈪ?{\I8 ;R--nWy!%%=zk/%C819p!c819p!csC819p!cJs&IENDB`pybik-3.0/data/ui/thumbnails/Brick-10x2x10.png0000644000175000017500000002502713137372622021131 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+)IDATx]iUzrﭺ{olj/Ѐ( 먃# 6(*",B!gb&tfIfLN8L}o;FySu~~KU<w\..............PJUnX?ctr׼h^NRS/תG`pb^Gר(K۰ _Y`B桵{>5 ~ 8 SsxT \K=J54W(˺@a'rP cUzE܂sLc5pE u^fav{;`|> *Ƙ^ű!=¿?8.>_7~'2c{14O7:kQ0T ks `9ne82BDqEyiaO^nxսˇzAiD?B0`>|{XcgD%f4>WiDqE/zư9 } ߧ|C;s f@Ǡ;/3 uz X 'cP$vUQ< 3Q( thD0~2 Xp 9ߢj<L50B`U:GWqG;x@zkpϯM [k@C`)4[xBaVCohy6l:l-ToXsGLe #{L~\ OX[ȶ;4BY a Ah"rBBɅu4Uʧzj a}\X)xpFmB??Z}\չn!Jzht>)6st!2j_>6{)>Rd }&2c8o6X̵#x0U({]a;" e!|WRj 4+ټجF&OǑ!'؉]x/0|j~p>] Fwub]0Vaݺ9iiGu, }3  XzK@h$kw[q ݰYO0a LT?!̑H ļY C8: '%`HU 1TsuDP1\7GX fg ` ԍpo֌֩Bfy ŧ1laޫ7ڴ="uQCdA/"}~߯+4NQ!CM$#ٛ Zuad!V2P2Rk5E Z;?PpmFKן`:welwcƃط &. {9j,M}lih{Rj[aa͟P sD 6v̡&yD>J k'Ÿ+>kD1}[묐uI8d E_rueiZDˈ -ۑyX}xl}=Nj͔ϥhEFK0-q~Xu:$Ra8z j,܎9R7A`聈`*e͜ô@uH3?k :Iq LuxN"(X]0dH͢f!88,C4zcXsh'dIlp4zf̙:|" hX='/ӱXq1gp5!`UdŸ]^ocrge4a!Dv87хMKVʽ+/ /u+E|60NQ ȹ9\ :ORιufl0hD0E ]R$!#-0@ȂfW OCzLOWrq~Wa;3r-W xvũ* ?M"FcQXKб[OX_>}6yXf_=yb C%8@kgw5 |TMs6a#CÚ4Xn=[^-:vǵa`YJ!6nf7@D:S3͕L32!o(_+kl3.t&i >3ZGgguhkR.rv 3Z?I"`x4;O')2}OV"{P 0t0|-Z#|`7j7_D2PCXMk%/BԻ41*%M  k`y%CYqMs7'Dr<.e$P/&gp6l &|EhĆVcB kؚM)"C s:F.0})Ian0G"XUˢz~uz塸:9 1~"b5_@пZ=<-B",|n4TxI*7J*y"E2L 7cA0aL+f#p$A6$fF:kkhN:J\HX[p>c^4]2Q#` iyǂ'Sh"-AkYjWƔuZPO4^Tp-<<8GjUn̼VbsƱ8i&jlm۫i^[OU2+5izT~[ 65Q 'ic;:F:tIy \u0>P!8CO-L,űtonDܒzWUosj Y~GVSSS܄da'pnl;ʃFc0$!+j܁>!.ӭ5ZH# 5b){TZ6ma$p_dZMF4k׬!u _/IW+#~GP jK̝L3.4Z1Y4ZմsFRjkiR˱11 q"$QT$uxju])|GgtZ5 i 3yŻcRs0C"^.e _ {U91֢fˆ!o/p3w;zkq??hj 9ag3#^U կ}[߰Qbi6-{&&#Ll@'<)$ibZs-U^+`WH|3_%=cϡ(4)eZ]YuL1:pXeWU>zN{`n dOj_ݙU ?{bE-[f٢䡀u1jNEJٓ-^|<#4L b >h Y: (Lk94Z{`px9,u)A {~VW9v>C(҃1˒0OlMό{A'e>; tnQ'.>?QC/BF! Bنplv'r#֛VfK-RNfKK񓾙]On!]諙 P??[mK D ĜyI=6]Bħq&6_63gEjC= XVfEԿ+v`k͚W[qqQR h%(VK8l-n_ :꥖P V9^X(}J(90͒_(լ C$=Vv:SkuX+%4RA` ?)TjhS}5S_S]{ziVhYdŧ&3yIP@?qiX:(aSh >!wZYK&BxԦɎ7~LY\±fN$ytW{#^U*5 Ma8ӼjLM=Y~LC`p\=2B6Ma?a숺P~UK}*VSt! n5|ׅps3vifO8.gU$u&Xh޹pm_T*ɧd%0B1j,0HZi2D,5H~`$w0p v/Fl%HŠ0ݿ_2#?MUgL}Y_se.ȧI]asx( ,$,iG7 K sCMbi*uDk  b˟=FNG~Co>46AD?me&B ^@=D]N"#hpp3 1>CЩ8+ ثPl5eLPPk[M."~8n݄NpDoHCOPP3; ᨝0`+?ܑ- ^R5IL͓܂Iaɉ.&GZ tF"|Z-SJt3/ ~q ¤djUWڵBDƕMz_a.j̈:B?.}T. l2>kY> X)[Sz$:Y_FCX/P-DLΰ1} uZ16X"3 _f-p};ˇ %^3"ďI%qӭ܇D{[cuG WV"h@ڪ!7ܫҦyUqwZiS̀nu{?Tzʇ.'EM4(7oB଀ly!WOV7n d^c^ث<:CkY ]-xZ$X_F:D~!u|g`xԫ~q4Wݝ 7]C QL?~WSWG5Gx$"t!WTaK,`B-s0~؊l {Bd !Pq8>q#!x+z|{ s#"ס D–@FҷWIޙS(_ZdQbƿ*7Ԁ^pƋ-Do;8B4}== `U< J~fP?s>żg$o1;RɃguo^ajnyю:J1it;9O _qO?t7U,}9b3k'dVFf yb^ u=[V!kv¤hd`(CY|$j Y>'VIB l+¿WB,htq$2!1G'6.TkHʀU*'FWLϟZYPqOEm,6  a!bLk XXòY^~]ax[D,͘!`IL0VoNnM-GEXl)ezr yP)|gsF^" ŤVk󃹓P{ԗ?-a.vªo N6#\XgOh5 >sQU+E9uj]@Y0p|_JhYTB`mtռ(,`&Ϩ!W"]DFwl~["ے;LM| J/Ż |G(8KBy  $φUKر9洴68hYq+I! }(7vnzYT |=I 8tr7*H4XVONuX'M܆뗥EU  }ul&K?/F ÷T.t?@(5biEml%Tmoo A=*464T;|{j`܁af&[d@JJl0.yUOCQA :t6!zDjQ4<[$PH=Xo wzq _Vո!~]= 0U}* jh$сY챬@z;_m8@K(9F6 rfe3t,Y}OSj#3"ٌWuH)Svj!~:0eýtFq&6 ?`zr ޟ }i68SqxZuWqå|mܷzϞ/ py `_G5 2 {AgZ\M$Z~{QQd"Q˹?[,~6s^_i %Wuh?uctZOM(fgO0"!Gؗd{mbLUS"[=+|`AT]MW,y'AdPu0ѽ=* pP)d\J32!Xh%w<*a>b)3|e.YmnZjT6\D!̻· @ݜzC切n<cͥx8tkwkO=z4xX/@&||+U( 획3$j'PwS{0,_ Y `T¯@ݍ`O7Vp|cԳ9&CcB3*]^~Ѡ@xQi!tpЫ]njh`,4XV 05cn󿅵WAPimX?*I fq!C+&`j" _}Y,MGcAE穩AկTپK]W= _Q22J|~իCBF_Uh03)9X2P54̫BM:+sZL"XNd Z]ʹ&3LO({c!K'{sւ fO-t~KX 5kJ{kVCAzx>%#`%L8Rh# s ɧ 0.F-F-|ѹr0`x"etemg4 > ˋ|O 4>aڗICk//׋"4X+RuLs0}-pZ +),(EѬ{g$N'XtndpL?p__?`gDy[[ @V!UJ`^GXpZHŇ@?hEJ,+Qas#@@ r>3TU*C_C-V;_T sU[2m_lWOEEm_ׅ%B%PlFm**p.݀&@kLe8?݋~KNb%;D-3|NV4-MpUreȑcW%S*gX =&U :AR0EKrwl\4  ǗD: ?qD@]4iGѫ`[9tN-DP PrUFúo .\H$L_7L>IginU=UЛr jdTZml:R̗BXeDv%!t_WMX|`-]-m]m^uH niHa]r)&  ~~Ht'wXZSF?U> /z\͚JfP\]?VUE(I|..HOX8F@} :pkюN왲J>PMEv^)! wp wp wp &p wp wp wp wp w\1bIENDB`pybik-3.0/data/ui/thumbnails/Prism3-5x4.png0000644000175000017500000003012313137372654020647 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+0IDATx}wxTL2! W*H" JUA:4B4#HQ"wgI5*=Z-2꒾W,X.2юf!l&@&9 j+6`ѣ鑑`kv2rML):0l6JYL…dDžNٶ'LLjٴR\ ?iP_A21,#YƗM6ɶYLL{vO4wHL[Wv+'N8@[>xHˀ2H0p-%&SQ~ ?LkDg'ꚟ0a7Ʉ7G|-|fSLilX&3^2:"J3j1LIgCkU״jdl1r=8INom+?$JL |vyswg:}4%%%f|VCլ_~ k*/fJ@AzyVP@. [ށϿZ#&$;k=s$띵T7#FF|- m`j;n ̙3"tRly ;#ZT89L '9{ˁH@k ͸^j(.мVٍ &Mi'KwJ`S6 eP}Gc2߻A, ,0Y+` oPй5-BISy@^.ScY0RطfQdGvfG<_^pK-]w_!L2E<0|ę,`ן`bdWM5=bjx`=cP} V'M6Tekn5A h$k ,;JwQF,;2Q 5+3b x%OD3m$ؽ{7+V"""(99)ʕeRZZRbb"QѢE dhh(8H6`+LY]gWkv,x92XܰKgcZkM#9EX7e&7t`Za9QLZqIT}ʥty>$g 4 opp0%Q0AFQꚚDh˕Lf+c%Qi5h*Dֶ~,|d~yQ~GC !<c(@@7,i<ࡦQhY.<h ӎa7t̟.5ѼD;h6A;4!D-EZGzϳ ¼BT0Wp >zM 8P~L…<0P݉f?F9/t6b}F­_uc.*,;4i3F 349z@]^ pa`l۶-B R֭K.1֑h$"x'fh50n~M\1fz vZ䱝~d* n߀mnBoBGrg ^ pxu,LVe{=}׮];5Ν;6]bYT~US|%X+iBW0f@bV=hQ-$f5 Z[H>WA*H%~;DcEPL;ee%Ӓw x[*6nHGԩS_uu!?CoHaL%h*͘)9Yi"iI)fI 2~v!iZh H2HQ3ᷴʁn$䅞)]¨n@\'_%ӔaY%0"%g H ,Ђ/ᦻT ';if!O56Ba42pt|W%؂`ѣG1"WDƒmD(u-FKR&$P\[TdGk"0SJD*Tptoe)<:qD~}t\ܹrkEow=o`p [0>d2Yy]d={I-[ГO>I(Aw^y!oETkc/c F*F2pruUH!>4xW4/>w0k6&K9AMXH| }$9NUBMKfI-եKR>L,g尬| *1k,笝j d'sH`ï$XЌBכ쮹2UhjE\``0J(n#:IE=F)Y^dm#>ʀ`,D@bbR׮]2pU>+*$@TAm%-WP5k%ZxI-^Q?*46mr3[0 X\o|%kF!4JSf\EI;?3 Hj_,*d/: nx/CMaMS܊ֳB0AT'OW ,4jԈ̙#غuz`IPZJq[!j31f5^C?XlG@˕ӣ{Xw RApH:$-M%Ehj5|PT4 ,|KibTҒl8~\$f>DiU/-["@ .8sU^"0||ȋτKbhٓO8uz\Au ؃ kȑ#z͛`>KTogWmfT 3 ^!1FaF./j4ƱFYdm'@QGVVT P㫯yo/W2p0"qGu8kg?]u 8v7>a)؜f5L>É^^!@ yW2~iy^SCu I5prr2c\- P`#rYl2Dd'VDzoab2RݣIR)!0M;Эv}ZJ,ڵk˚PpÆ q(={8^l5μ >>S-7iZ06AGeaқ?| ՞,6>Ro6.s`j khpgc_;#F7mÛ/U8NT t0ٳ^zzj7O>T3X`\LUϑb!&?,aSgnW b:U9VM4}>K`y<;J&X.JvKowzAw *~:6v@!F0yk9~Ñ;J,p2SJ"=b8ڈJۡJ1ɬ ."i{!MjJ!4{^.H̠)R,O>꠾m<_gp9͠铆ERRvc X-~0wlY:\5}0yP.~ _1l (faΝ4!XYWҦqZG2kר>F= {Q|Hgw, R~(z;Nhinca&MU%+8vX!J3{;e`AaƫQjAЈf|GF$=e mtm"2a 1xjZ]W @6@6Z6j g[sm= ZVT/g`O'g[?c3d,}W'0^tkzM`/.u';xnX>sf 2eQ9nxXIﭹD͛7K_*oTпN'%~/'Z[9rTbo^16jP+HUK+s333ݚ@P%dSYf"F0=,#w^ |hשI[fU1{ 'K BMЎ\4,w{,W#Z7pxb ^k7d6Ncpo^ ,!f-G0߿/j* hCW^\D 1XT2nh嘱%ڨRsQ(nH*Kp Q\42u2 E𩃏sLq7?O!b*t/z[Z&TCəj.Q|Nv4>O w+@Q߇nl y=TG˨]4%ZjR͍.?mw4˥"z*ޏLW9(k~%,#'$onHc'}W>ZSJ:?xõF9X*4q4AFFbwEIHX_.?b~w.] {b]&:|?de$=č ~VF@)@qJBO7BAF*Hհ"Iw,۠AAk!)d UlG 5M']߬@kȈ|kVm>ѓsC/FwJw_;LV^?rJ"%RUgGkI! dgUIJxf&^~$dƜ92J$($EL@U @A$Ax 7 C"|ܼQ )oFGFsc%1w#wGbՌF+3H%Iޥ]nH `eş Y_̲n @mJ`D] c楔pPRM6r᳔m$P4OoQ ԪJWd]<|v}W%"O6ؾ8O[fi^RIU_ wOk߁Y־~zkZDw76|]ʗ u?@ :z/7ЦDͻ~(ٹ\<ڽ B\uE ۆ*V=iIF{؂ >6o>.D缃/>?_@Rs5H.v vs˅7aKMϯ[ =TοC^ 0qdN~탗8튍 y>sT[.Oԭj4~|1>-ὍjK< ?4}._|{0gff$/@JF?222Х+? ^<-ڈ|R޾OKw=GAB{F!)v>"|{&I%,s$R#Y~?nBfAJ!UH PO nݜ@sGFD _G bON"UH),!>Gn2T"FZ"| Bx:z2g;@v>h,ǰ Ѥ.!]+?/v@GqFFީAظy,:h)ư;8RT2mk}Nܷv6.BqӸ' Y^8 vv} ,\py@N]u-7n p Bl/`H0W;~!,'N;gAza2K?UIENDB`pybik-3.0/data/ui/thumbnails/Brick-7x1x4.png0000644000175000017500000001304413137372564021002 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+IDATx]iTUퟣBeܳ2})ABv(DJ@Gq@6D }d)(g Fcbfb&{Ƙ's}EVVf֋*㋔̼es[^X:nIГ C@&M:4thС C@&M:4thС C@&M:4thС C@&M:4thС C@&B_ic \#ߺE5^.q-8$W 'vjNWV'n"ߑ&.M6 Y9$Z` !;-MdLLיp{UT\xxgY|M9c5jdE@We_?Ga@ 0>On#Mt!MːV4:!Hk`%n1C#wwr"(P?vq2t@x9tsGROQ!%Xْ ]b:%Ix&h% l@0:M!xq nA`E~z' 4 S OkBn+MTu2t7Y(|/:(~ 3h7 UF|>xˌ{D ?ޟ,xWAD/ޟyʰX:)pă4nqI '?v$C{Z&W!GY{%~8ezR>!KxepSk36ߥ$+@1W)'`@4wuxWH~|lU-d7b"C!ag>vk5]jA2! C&[Ksu: +Ǿ~+p4g:0|y gmUcØ/(l(g H23tIƖ35>EcHCD_Udlpcku/`񘝼 ;@pÇA.](6&yH*Rg WzP^aO$|"sm2 Ipjc5K4; QƹXs̫> [ksu} VDYRf 㜦L8c|² g2% "EG ^]/b#_ƽ"ۨE)cO;<'6 @zoD(WoZCX41⺻yEh 1N>1@rڕ&J#aI n[vMsQ{bxdX_WWKt35$Uϩr9H<}3fR/ť,ߧ{2pא 4JP<QE 0T 'U.|pX(]Y.@pL1axCC<|]˼'d&1Q,Xlnhv}h8ejldD?Ƽf3UP%l# (\ׯlX,^by'0 Ἅ%eϞ=%cdn0Bʮ1nHڵgԦlqj,{'FlMv횘J*8eJdhV,K_2$l>wy zIriu333PT)4f| ϱd8 ;'N9cU[_2:|s F-eu,`zC`X?,Ww|/.f8'.REd׏ ✸RߍFsTLV)ρhpi^JEv#@W#5N!\ crV1C>ܤyK !i_* /Čc0dwcc4<ũ(V8Ox}Ϸ2Hy´*l{U/b`7 T2)O;EI rwlfcR >Wa3rg/yo=`Mr(ReQ %8ٕjeqT[:ƺԞsx) lR#e14ս&L؏swf44'R)uL(R7lT0B{[d4$&w1 ;YXd & Ueƽ_* w%Gg*Tg4ݛb2vыL5z e6Es׎aq`kj3&pb}p #`# oȿ onRLHmͮ;TC ^LBH<W/## P6?cftaa77;[ApHYq7%hU3U ')b!ҧy#W( n_:E9~4oX$d&+2>ÓATIq{b:U1(믧q 0P_LTH}  RooHJṦ"XYXX␫U'+RrLY Дj{eHf?v)#bI\ͧ&93ٹ VM$=r%&oI- `EӆpJ@\ȳLiKdƯ骬$SLY'M4#]Agl%in^ŸKr6̼p,Wez3jp藍55iPN>a1fcJp=c< R=66\*KU/i=."pC],)iV QR<"ENDR|>V>ܩd>4|LwmnY.u_GD8b۟g5܁W͚l{:ZT-ia ?598>/!|f9_ Y+pW>N1Ϋ#rH7y.V.SbZvX񦯯,Iu90 2R~为.= ~oR-~s>_x%Mb|&0yۂ9%Ю|H\R$tR }jdϽ{UuO3QO7u,Ǫ%؆sm{"M.L߾8Y0>U T56$w%䊙EM `t6^UA dHpUA(Kr9Õϓ]Yƅoy׸zs!}p]J8 F.uYV aRd^枂ٓ`|a*/פZ:Ǧu€ fa$5|Q|8رe7z1)0 Bཱི4,oYCU6y3U!SHF tOT56z#t_)\\ tt.FXBV*IKsjh3]ⷂ-Ux򾫡YNd] 4 N#{('sfdklu& qmvX\|3"mswWOճ곦"OrCI`=u4?Y C2n3 dgi.@bFbC 16z‘okf^ /LM Io("# , T.F5v ?MnW?+iYy\mT2%HI8HU{v*fDD5VHI|KJ5^\:'56ߋ517]7*\k\Z΢ W蟚SN!c 4u<[7nx CWEg9bX_׿^a垗fN6UgIm "R y &[܀$@PG@Xt#_57y6M}x/N_tϪ~g]-uhС C@&M:4thС C@&M:4thС C@&M:4thС C@&M:J蘀͜*IENDB`pybik-3.0/data/ui/thumbnails/Prism3Complex-1x6.png0000644000175000017500000000523013137372656022200 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+ JIDATxkPmzQ`YH.%Jm t8S۱~kul6hƩ11Luĉ`K h uy"X rQًj3_x~{ysγJ5K      t[^]!. D̎@;fA7<<t;tE=*(~r_KdHyJ|!};Y/dLRRyH̗Hbwi׏;ǓyȘrJII MgO/ ?M0BEBhQ:1%%%#ڵk@'gHx0Qۺ ș+W1ڰa`"iWJ"/ 7E3w tY yɲ3_lN-Lk@Μ;wGgg'EGG'J>x'<Dԣs>pȚ*DNNjb4*!m?jF!їGVVT* wxȘy\ -r&zW伒S@dk*h?rssE!+4ȘaaHjjjr3잎4|*# M`e~…G6\ 0uGK? a|70Hi`]ڵkLk׮Aϟ!7VdF0ț2Qş={Ǐ…  E"Gmޠ[%@*d=>v`0Z[ۡciN-aPY޺ӦMOtTST|=)yD,`Ig@|wxb! fE,𢒓Eg >3--@߾\hii!V+ AZ5,pL-!tiR?+~O4XNQ<~ J ٟ͇@K5t (FܹիTTT$ToCK;~7v0n.w xЪUhѢEJ X~7D?on B!g˗/$ěOJk.CXdϸ< `?[7D Mݮ*|O;3LE!, J`__ Ѩu*LU^AX~zp4kOC 𮿿<Io/!?/r_ --|}}EXGYYKEO<ϋN9ƍE#`o !‚T0eA%099IC!w+**cMfz*C5*5.9pyF@rrPp/ɩeFK (! Gjj65*j)|| }4(A`˖-d!_ թȤuX#@ (AvqYF VWW; z7WBR?PS}BCCСCTSScpf >T^.PͶϙ3233"mo/z|fK٭F[n[n+VŶ;hP+z2Bc*p|^6A7v {:jP/K(p~RvP~0m?xJg::s2bPŴzjZn8~gAQgJ𧟿C/எ[o!)!kАQqs`b~ꞹCB6jŗFps͛7pgpb. (}kHoo}v!!+D?e{o{ "OApsn;}vz^=ZJdJC'>Itvf1+M,/*MtB#Ql fъv05WB6qb&n'B466: pWGqn|p!*HT-`n޹'4CJo ll4 `}0P|3h        P K|鸯rIENDB`pybik-3.0/data/ui/thumbnails/Tower-9x5.png0000644000175000017500000003435613137372544020611 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+8IDATx}yTՕ9.(tի}z_eAYee mT4EEA ," cɘL&,d2s~]]UU={|Ϲ{C^I 7 9rW+ܕ@ wr]9rW+ܕ@ wp^/zoiR/9~KcVv={:G >Ч7ρ ҂c ssTy^;u[=Jzѿ!17ۨrm\YmTN k?x?΅ nhBj3} j ^xq@y}CYI6ȶ!`e_g]F,tTWv [ H !`Ɓm%{xRx +VTۥʼ^5VI70|Cx:kG_O0&{cyj ;[sF{7Vtƿ~ۼ& $|PxT+O{N 2e9 "^=FVY:Tr8*m1"==n51aOU °OYu/Qv؁>, Psp](y;T۹ϊwhI&{.%V O@j]gb~16Ę^u=^ 0^s=$~{܍f8!-CEf۩R뱘`HZ{NK1*S1~'O wxC&SQ IzG?!^|7ݐb|g0Ww9U:ӳqb˭(HiXWX{3hf܃0{  ̸ frRxY 5 x=5L~v*MT93CEFx1q7eY$F`㾋q\^:|bHނ13܏3%h6o޺:39j8@] 0b%ۉQmqd3xp3a;NO 1 5Ũ>K9'n1 Y;WPqڍҩ2L'şlk$fqyLlG!AK0e4ARc@ֈC\٣:,1ΗNݖeE;rxdrR:4}7prTOg;*n[0oݩUxSڣ?ݎ $O&wɓ٨[b@+?.jEh Oa!o 6`ںe !x~H#2g#p>ߝPqZɞDq1#FA6] w!pUo9 ^"L|9R?`DCĽwtץ*q@@ Cل1UiVtS+?G$%@*c\.P4?pi2=j0^s^|g}{ ޟ"f,G|ȼgzܣFgAWpxV1/[R( vFP3aKoTqh~ ;O@VqJ+n^Oc06մh7Şf1J1V oQ1€4. $H2ݏcQԐݻ=~fAa'XaY { h4s6v8*Nd (mc|8 S a=x^V;'^6vi!{D)ZjbI|= \ly+yq=muKyT1< Uȹ}5 dؚx_gI#a;P1J cx[2c,A9S[/׬> 9y$i4Q\QC0M"b=Cb%/ X%Ors 7 U4JHک= w#/Wȴ!"#*$]6J>mD2g*9]$[W&b2iP"v_wUDDq:34~7ƟE4G" \a?,%m:&y1}:ʓ:^,+ƌ2wS2)TztJP:l+{'ʞ*kq 10au ]aFYCI6j4rXXƄcC؞g^kh^cZ(,AFgw%MN 9R|a&wl_59|L~z/dt]8VՇe߹$\;{^wR@dŔB`=W3&t汭fI^I!Pz{8,2(Nk>qHw6pZda kL?e8߻!&z`(_ .;2|k7ۦ!u); ` @;_3(Ċ`6r.JZ]=)jW=rS񾾤,%cew J;\ xLsb9yjƬwu@J{;^1lԋ^6:+̽`SU2$k TPیea\7rH~@)6*y2x SAuchLzZS:F&aCAc[͞W; Y:ʧ]S'wYg J||IkT&s%wCۭf1(ɠfXXt\+{'i]oHRj f{q/z>x&?}Sm)_g ?4`@*urϰK|kXf c a# ^橣/nj*?j{\59 G"Kyn8Dn]m SZgYuHMAÑmS' ,Dg[Kv_ٽ=A8xEFfcKg;1~r^EJ,"j-6:SıҭfXXzu$Q>~˗y 1NA [JfikKÏg(#Z'gf1vcx׻lOJw~uQ/Z{}? ݭuGOX9HlȞ0tC6I늕C``5eǪICɴ 0y!)A?`Ds%RxpN_ Kk8=JVp|ZF ͨi9stYVko'ұ}6r*$ 껋B~Du`ES/sB׊Qu 'N5/41~[ =S&mA kLJ{c;—o6s 7/5:AJ k Nih+By GBz dc Q;穣> tOc$`֪kid̐x\RcI޸xznw23Y@B 3f6s<&2yˆ9,^k!d<@V:ܧ=Qigx Ihq7 ϰw=dȨEelQjuaV2{uj8!3T (Bj}bkW7>WՏ%1K=O;-+.G@Xّ֤t`6c\9T{t6xp,q"g07$._cb"B>&qy;W IdqF ' Tg:<[c|C+-${,񾔰a3 THuܽ4*uxdgBO͟X4%.QyWJ3zaFOK=\dOI\+To<'EX:Dԙ-qe,1%ia(9ByY+_㹠YV2j*gchY͋>3gL18kuSk@2z,L`*JfVP`Q 곆*R 5įus)O\. }|7M=ЅR٢A %SJfEE繒hRȄvj%pc!%U G7Ow4+'[-:O:Fy\je6p=Mӧ6#\Ɋe$,` A1++O"WNzFP702r],5W_+U')tM,s+ʿʭ“<jZx x QHXՒ/l8`'_f$y¬ߝgV3F˰_~(u}iR:_Bª|V`xATsӆ ;oZhX?\~ĥ>J1 BrMP+ %+:8ܥ@#?P9Yc,f_IZfI9S?pc\}5EE3GlJh r$bg>ä8~:g:KCɹI򽃓/$1(JQdLR:WMdNU% D3wIO04-W{zC|RxeA-ŪKGONeKDꮗTun 6.o%bhJ,m\;ŒQe3`))g3$'fW5h4= nH/Ƹp4?PSJNo;'5>bS? !:,UQ]R^,R ղ!o&Ty~#o,Rz^wPjB<0W׃A]6?䰖?Tɚغ?e=z.O`I99Ekk>I[nij~Iao5YS׎vOy_9Ы=z;z@{ RTj 14WEdS]< 5W];+$nԂIuw"Ji3(' V[z/`x ]LcˆoZ'`Ən{+7uߡ[mþ̱0f5>ݛ%Mf%y0E#۽\~*uUkVV?=(^_W&jjjK ^f@mNGi$oR\*@SU!/-lRK^OGc$Ӥ6c1$bAcc&Y-b)+\KB󁯞f7ĀWh)^$?|$XNf i=d!|\Ӭ%;2-qӑ,dzv1hX$%o"Y܈Bk=ͳCC ꔲs8(N7[1>=D Ķ^3pd251 %9C]8j\5&]\F;G}oY/$76[?>R\dqڈ|L8]<]=[{@t"8 hvpm )ce1{줸4Ÿ[T+Fݲ}a:u0Mpe2l,pHXWnX\fOUjp2ҾϫqR! ?>C1֯ߕ/9vBCb]+zqXdrx =_KaC=OXrů^@Wy L6݀nc·U7Ȕr@vj܈Bٌd|xX;x_gSSh%8b B|gyDg E;sCj3E72URR>#R?=0}ˉ@[rTj7W3ֻj=n؊k_F. jvi; 0B MǤ^n&pt垛Q࡛`!݀YmI2Pz <0Aor_'LN\IGkƷ%d[5>Rn]R_R6~/N~? U+JY}(8F7 W͇au/2oT}qlpL)WJ=XKfFqk?8H1e* 3eay7خRe< {T @D1ejĀ4vИ W$O? "q: 57~~X /?J ^4x–nrOEf7 bC5զPvJ}Rdn{LkA.㚘1Lp FmFʦ ae1~ذ' mmjvÀ2/[yn;e0 &v."{7,T ?>y{Z1'(=kF?R1R< /f *XW  t5+4QDfNd>4 B*.OM^ !Y 04cQo< –x`\ UO%KNsʞ4/Ԃ/ DfBoBy*t>ەP+jmQ%\i^W9AY+ۋ|rGf隀2~R^ )X>hmxk]*K^"6]0(\!eޡ?L&W دU\l4vSwC @ofKb}RW< ڣ @0qW UnwWx~xI;&NBX4"V+^@`6 c7z0Jx˓gBK/q'=\( 13RetInJg*Jau| lC˗ ۴j|v O/1t^&&J.UC`/}EH-sA7:1E*I (jg<nfaA;_Wp]H>j6 2U0 /zW H'!}}0:ݹG̖ld_P\!,1 yO!+,ދE˷s'or~֮_؋}R쉱$i{|3Nā8Q!tTn5mD+ &82==GHz |@s@W4ߔ@G#H\}՚p#vioi\naqkƿl9XL Cs+ H^xH9`#xռ~dnb[zq.e9YxC@-Eic>%'A*h,RATkށSWuU?߯Pr~70"[xB½quü:goH=W"W~< `!\`5&z4] Hy^K'W`C4=@ȯр|rFÿ!XIdScOBDyz&S'zQUd<2#'u;+!aMsBjQ?Z,?,Ī!{hhc<븾76ϕBTXڽR/y_*g(dHZeO?.T=53 ŘL59)bFtW1ZuD-flJ)x1w 7.LA;bXj=oR@ ?_-~GOwi lm Nu% %]Bv1d/ZH!D I]20(6u4KO7+#$yi/j8<k}T!t<?ߞgB?{T}D \^V.zG7k=+٭>3d{\[l%c5I Li"@ANF02! \Q«c|Orzޭ d%{k $K![+D"UmxKw xˮvT syPVQ UTY/x2Ym#v=-ib;ONm+К]:CVuSƵCܮ( O7J"W8^'Z*4ѭWR`At2rt^~{#ROb?I ;GOw ,Y[)@`=R>', q5iLB*HF&Щ͗4;*T\9Gp<6zU՛<}*41Ysi1RֵWw,̜Mؤt}${|i`ǕRXi?Ш}D]3+ߖP~'!l{nX4W@~Uvq@GR0[6pRf}&חCWw2<]'ނn=XM*YɄ%HozI'e|F3O,U=i/ 6}o(7p=n`aqfEDvh<6=Nb/LW  ]/l DH%_;28Go,޸ [>' ]v< {%%[IR(;4LҖ=yjGJB▦ ꦱYtr 3 *FXCjW۞,qn-f޲dӂ7V>J f©by#NG;~@C.O1(vHf'ݳ$%I!$wp55/b? &TwDZPcцג e髊vE.Qn&}7-/OF5߉ʆN1|"q{>PԹ5S-d 7zEÃSfE 5iHCtqM͔f ip0 ,-aKdVDUϰDa^ @PԽR(za]SOw2ÍtR^(Bd}YҹxSl>E) >O2iYQt@:@dF\ŽPyv9K+ap9H|ELg/VVBϙFON7~YziGP4"H>Жg})Rxpǀ]]%5UJo[Xh=tB9T,?ʄU>.Q=;ZGOO RHde:;t ̏ '8D`Fgg'];6^,IK4Aݜz7DKt* H4s w$d)!;)3%ܹ3N=ayf!<4ǞD `iaZ{$R^9GTY4V ]YLI)<ïpC_xn c;}_|@;@4rH#Z]<?mGM > _$jW^0i%>S;V3Nd6Q_Ȕ5nS Ÿ>~ =g@Rӧ]1o3t (SSJfp.sD& C!) +w:P0ngn^X"I ԕ?}\]G{V6<@jx4rJI_Җ1ud[=C:hNEnfRJڨEI*Qʈមt?gO%ziQj8CGFNOXe;8 tpvPX$鳕F'itw]CW]VGEx||NH}zQhF~eYctDi,M䉇p`4(j!Fyȵd!GC4 @'lNh7y1קs}zzPB>|9O} 4n1UF@Y#mE7Вوuk( # ހNQӽ~$a_U[GԢgFV|ꢙMY $e[Ȣ!/Dj*-OŬdO9i_*|k, RBo=uI6ͫ;{ԫtewa g||F[d } 4 S, Ǫ#մUcˎ ?4r &4ߐFLC=/锏gj__%ܵ~e|LX0HTz?Ofw߳l9gI#/7o|ET?pn nE'@ j$}SrֹNyiޤzUϕ3y~ǣ)dTYs8AlJr]9rW+ܕ@[%vNtIENDB`pybik-3.0/data/ui/thumbnails/Brick-9x1x5.png0000644000175000017500000001330613137372603021000 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+xIDATx]ypUU?}B )AƸ0h8qCFہH Fm c $ѱzjX3VWejf)|߹熛}8*λ|m'= ?vM 4ihЦ M@&6Mm4ihЦ M@&6Mm4ihЦ M@&6Mm4ihЦ M@&6Mm4ihb.l$}{v{I[j5nw|:턷؋v ^Vy^hA],,5T{xdp} Uvq%p gmM ]C?$Hʰ dFooj'-\.dx5HP_t-@{ 90\km͞o>od  ;r3O- d+ 'P'~9kހ2ehd`=hsHy-B5T<0pXaT! g"?8!K*&7:z ]#0"8 xdȇ2A ^g"Q]VA=<2 ^2Uk~P?vLkNFX񺿼pM4/@8@C⇃ ~4bg~N; &ASE^2b``_XIB/U3LT_df5kWG;@ c%b|5<#1_ OJoiGQI @ I`?J@?nLN}I "GڟW s 12OG\z=a 6P׫@(&}>DYi9G )(ePMxQ]* hlPe[[/ >ok5v\ CAr'$geJ~7% 4Bd;.[vib֙ Ǽ'y_3~'|/*kdHgN5&CyGo( kpݙH< D bUIp^ġzՃGA~UrRi^Gq>Q$kx/ M22t'QŦPq]"Ubv4Ea8M%~PHL'ϞDf '&!,vEHL9ME} b vDk ݲu7όLUlsa+<6l x4%`M^8(0}*K6YXQGbKГ* |zΪ&>yR!`UEcE>M25~I%:\Xx!1<,U@%f|GS! '|)$\fKr(,u $7ӫ'!hLݣK3 uRA0&2ECOD/64jexVI$U ӫM*@dž& ۡ:r%\{i61[v f8%,U1zܲʣB; KTEo}$" mW7':|'껓 Wmu*2q 9 C4F2 |^Wb~_@? ࿙Z [Fb*= PBN: 8g+WkYX' ʰ32 ɸ0k9 *^DTKς  Wm u -6GrGЫ'X%bgVޖ!"uiJ|c@Zl-ױ3My* cؤ3"TSϘ؞|܄LGTΘpHV$wZӪrtޖ^uVZi]_ 2dNIv 6}NEaGey ȹe &%HDžң_6]6BO{ O4a2~np לB.vߴ.o(,7]iȍ*n3-,E_$p6`8lol}vg a =gM5 ֌s.s,$ksU7z5TfAJ+g@9Bq(EuU}"&ER5A8g8*<-כ20rPes{;y{,7sۦU*CI*B 7uwBȃ$暌c3ëV05qrd$+٨*+ $!3gOF]|Wrڣ5f`y790n"Y.ኘ^Aqlkޢ<39M9,Ot$$H13|WU0DP QTőRg kYMq|_`?N suUY+?c3@N3ru <.mџ WI#:&X"΄q'$&ìFX݊{SrCMJW]3Cf1@IdI,`dL[,"}k Pg IC5e=`o~!<% *D2!rʄUU;m%@1~ci7 U8?Ia,ӒT\6@aWeϜTNJ N<I4z} *9Մ4/MKy-*ߕ1p]""f+H/,;h,[$%\ /c[hn -DlDx7 kI>QAg ϻxXy* UV%AI챈8Nغ6,nڃ? M[m C&(3@- J%˙8, K|#Vau/YSK3,ExgTT7$fbu͞SIȴ"_(tĜJϿ+GVEw?T}{(P?ܷ)?R* ,.^/p+jkˬ*lP$oKD""0m7 ŠB}[ݙ\b_}}S>MTAX ƑSM,Cυ R>8vLpXhD{o znn˘oH)yU A+}Tc^MHqIU`x ͝$AOU8y'hP?k uAd KtO994Wk ""b<x~њ8XpMK>MH%RVٓg+B~GmϮt2 ֻ{}jz@AeMm4ihЦ M@&6Mm4ihЦ M@&6Mm4ihЦ M@&6Mm4ihЦ M@[/49pPIENDB`pybik-3.0/data/ui/thumbnails/Cube-5.png0000644000175000017500000003541313137372520020073 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+:IDATx]yյ~$z߻gQP@AM}7ܢƨkPJ\Ȉ"#;H Kl/};VuuO/= twUW9now|sW!htƨ_CUD&o:o믈L~.<J0>\u/E4Ҍߡf *,C h4*!`. :CDzU<#E:Y&)@Bwhi>8&īN@4cUO==9>ˈH{DН" 2>J62:w,.гU$ 5|d 7tflq$M6f3bɸ/Xj$RQ. {vy')QYYF Pd1 L\W$ a,Ɵ8ydWp+njjyL 5ןD;xG fε; zϸK87unHX,p 6^,)1~6@L"fE&r/~Kq݈1NhHπ;n2"u/i9fv@7d#D%@K ghRt*ƹ!p7o17k׮j.}:cdjhf>ZduqX`!̙fx<.X<]P-Ɵn "׶ q B#{;tt BJ"oLuDng>[K?M?{A i_` 0ēd& 3G}r0vKУIxj1ȵ0LazgP`@z]M3e[UϲVZ@|( !%wC l?MǡDZ*p/-Ygu,xRPv<Hl[5.>v%n7d3HZkT^GFpXޏXzn-1>< n:D#"pwhT/n;rT@$.Pir75 {ʸ\wJ2c|˜?jyx4KsT} Z L0 S!&zX?A+~Yʜ@s,v[f?O7P@U4=- #vj` wl \aB-1Ut]t.tߣX.Õ|^ǖkM7G o#|nC7,1" %b_Eggp](C+oUy @ND0AC' ޞ>"c~uXA7g0HRXs( Kyؒ'm*rq~]tkdA9Wzo )SSPseT'ma˟ܽۡ'lT?Vk"РAr0ߦv O`!0߫BKD@54i}3@z\tg'1<5W4>>ñbD~EHUoe"~ʟf8\3nD7@Qpg,#mlcEN`hP`pqq@N9 - EK$0R/ih:ac+S^HhǺvP3,dB{xdXF]n4ؓ-18Η۶!TQWw7 ƇܢBbk bJUYJ@0bJ!̨\K5-Z?\\U%nXdzY׶)`X0۟(/F·1] <\U W:1f~\a/)G[`{yz4'Ee\=WބZ`zV\MH110S鲤)sXZ3OxЃ0dI.Pnb1U򸇾;> f yJ8dt/PپW&,3F zX*8v?^ KF ?yo&Ű3ݢ"OW4bG!MB  ֕5喇Ek =`eH _[2d2Fgy%CG`{GrTEh&m #E"s/S+z4񇗫ov%=%=ŞC ݯ3*D}nوJWz>ġ۹ڦxlF[{.!p0V:/CO1{/dmX~@ @ 8sH9}?\2Ş*Xx(a&v[맋xe]4bVBS6|"PwK,ds&:$m8'f#ZÚ4>rW0~ح o@a4"i|x_?1"j*4!ޯK7Dس4 NU i>Pn4|]iU'g4b~*eB:7ZaATg w :Idex T\7ocX)3H }B4MZ(fVc\>'ĠG~VóՍnx/bMٺ Tj| F(`LG%ʈȰOfx 1z"0Dkg1fU i>0l' C=.@D}}=/5~ ͵T?w+fĬq4cUq C8t%ֲvel.ڀ@2OӅ4r!DD-V[Jsn!Ry|04:5 `Ť^e|0>DnB8Ew ÓUػ3{%Ž1;. o{4* 9Lͬ1ZQL7GD^ Tm-HpX)CmzMܱv`621׺_c[=*ECCܯShj o|7sGܴ 뼸zH#Z?S,Ĭlz*8NOoH͕ =]K.~TyzhH9x=/] >~LIۗ5҇cm (ȡ4r>7e{3<1IT75!Js Z(TdkPE,/zwX?&Ғ4c`5KUY~&I^@_Tb6lB9[ WEd)xzh2{z LgfXè^>/{B/U$[Y=Nl*o8sm*{WY~XbAjm^sX`΄ROGt.h&fxp]:(-{n2NqO Gdo/HP0>9t@U̸o^)<;(ݒt|x׬b^H,$>{N\1/Ձ#ƃõK̤avmǭ_5Dʇ+- UThYL^d1>d;a|4=%%G8X aec=/?khYyyDx=qrT @fDe^DiA9E.Τ#?X2=XÈD"؟^8atlP=-G~Zy< vd2AhhTfNq_T_'g5o%Ÿ!!(ě+ӄCh^No@! ]_=2 _E7=3i4R..̌~R԰!wITKUgX;!\=8cfo-*]2r`O*uK| MKPP䈡OxKWyU`uL]v6#p6x:بSDtɡPmqnne28y}t\Yބi?"tRo@{֕$BsH@w2xR]s@ (E9@6 %DLRw;< \M43uRŦIQG x"cIWhc,.WV_%Şw_?gc{ܚX T`ӏz(E Wh?^=B>KsOA.,F}E[H|a4yZbJC,{1#T=Z+? "e| ;J Jit2R<+ J2B׻RٿBTD5{O!}ܦ`wLm(t F`ϙV$?WR\J@`dj3,)::{jt)`t$ʣ w6?[x"+كj,%_11LY +d 4mժ'0j& o"D΢5J8`pho$8Ik.Py)/;ز,+fK`A[7+z` i}_*kxe!Y3Um/kE]lI'{+Č1^7  DO\"E,?bW-ko-XUt!oyHX~W'4s5դeU!spW^CYR;E|;). 04(e#oIQ#0fDc88˜Rr:[nA  ''0BRz,H Y}tɢld|/07R>w9KzHo>˧Ŀߓ%?_)*z{K8:ogpx&P4 sP&fx9>Ӹ%bgWx{dP<-<ܡÝDphS{z,у 1n<. wU`pUfؒFS|cėDx*S3D\,2A2/ћBz*X{cTr V lOmuOg!>S7}nqkTyX!;+NR8÷;1p\ p5HxOlpAIZljșe鵐TD#m "Ea;`n" ƈ-q<Nу?XapRPOԋaj?sǒN>̒)~. jZ6jr\sG{q@A\ Jrh,mnAsX5@O@`@rj8^M?Pa||=}4> 02jpGDCϠBID ' _C;ÛǴ@sbFQGz )A~aEʍ*(Y.u>fN"Rł `݌ȁn1sOTW\4I%847>7Zg$Dm= o Edi`[mJ l3s{yjG\!R5A%XQd! 36/*CEnஓnI(;x}z^U6 І q6ڛ v-#բԧ#hxd%Xu9+A1IsE|Zh X6p,<\0w3ӲFzV\<_Ȩ<{o, |Ґش:JaM WEGjCw:I! x^̝ ]fa[ExOL ȻY@wK lKDaYfJ^?sۇ‡xWdO?67&`!DiX97 ,]QH HGr 8)duL_Mr隌:/c rFF.1cse9)59U(/W R؂q[YI\جYoCpܾD%P,zòFx*ў ,:<c%[P2jə89UA3-E,#E !`~ TtLQØHl%헅Xpd?>SYi5Rm!?4P=O}!c0oA "5.gr{pwS!q:ب]dYW@0`Pڴl=Oa7e 픳ڲ&yFP #2@(j7=~ Į\'—^@\!+@8)Nm|`& ؐ|HeJbHT"(O Qt'LsG|'ρzqUڈ= &Í(D4}l{ql?#ϑub Z"R \4B2fx*f|ǤqWTzpQ ad.2L%V !_7[Ӌந{w΀09@w6}# 6{Fm]7߾3֪GoV|Xg೿_ \4I!CC>k;8?{H&y̒Fn92x7)ld10F6~MӋH^ u q+#3rF?;{f|YDL$-uh"lWDjx2h [R%`Mx g3DLԳ%T|D]-oXݞ\)e _|?RF6|D/ul 1iW+ `|T=|>S d#7o=#]Ic)8P7I(Q}e@Itfů'BnLEFVk0Db%"Phu+= d9wm{_)3\1%p!&f|yŕS|pz+Tv%=<X*7/](f&ݤl"`Yq VX1Ki|&hY1:j>cPyЫ_~\92+Y$`'>.FujH`u| ?)`6r4_4Oi<1lxeR;6^IGZr?RV;f܈M)KSy-NXyv@Uqp5 eFӢbP7T1$a#Bs "X<}!6ױ]bLu^$ CSf34JrG+H<< l@gՐR<psW%PySt\Z5ެ8Y0{O,zçJ}ck%'PM] o?G;6]-pS%7$+Cm?o݋`Oԣ0.>e4`7d<^CbڽҞaAfT2!Z ߅]?|EsO=_\-,x_qu˥ ^hN"j f^&p^pfj l>ܖZ58r^,C (\EĔQuBe@]*oAgZ$hV$mA5;:Y`Hؙ;X~N4'}߫WP1~<0b-G NX@`H Ns|.`JˠDr(aD-sH@eUD`Nq]I 9x0MIݪ'ngX[˾P82Q-EL ~OY+70?o ] 4Fh/ Hr c<뗗"L9 o "Yv`,OaRu]sHp%iﭵQ Y;[TDC/*'oS?hGTrFI>3$"0TՋ#:ӌ?= x3ʻX,XE߬pr.'ȕ?0Cur,"}#Ws4V !!TU[UV)Qݦp+_~B¿ޕ!7#lslX`%SolBL@!2CpzTz(^NN #1M0p&&it4 %e5ma ײ龸J1l=H\(d`Q|:Vbxֵ+c# sSP ]H@ҐJ<7ԻT0J;4oHA(c鷬:.eiz65D8v8|*r >%3`G7. 9zUE@6]<= _e467VGbjT{uH@W6>!?K7k٧)]x7a~W]\ S0꿸+HGf> yC9EnDˇq #Bۍ"#'6 s#sa߼]NzӴ}|怡@0_E +aPy=i=9t擆නXnd_94]4a`}B]:j28?o`t^?QB]\!Ö\PC j+yކ%d`!bmJeOCvX?IvHSǗq~ "F9PDe]ɍ"+d @w0?l>; kH.{weH"^ f|MOLh9\{~N$ޜJ nX2*; p)Tfw$DMΙ^Ij *5#r%; p7*$q&q+'&E5pSZzV+j9͕B/|v%p a̷; H=r TAdݲ9~BS̾2 v}WG) x'{"CO/xdp˘jA&! E/02z:k猪/@VxaETmj6&up8W_/*˹$]:?'n|yxGBH%C*FI9CTٝTq,6t@ڽ}_?w8] # KB &JnFY! I%Zgr%챛S_x3ǧJbLj! h\dʏ7H [=by^RRb+성pEQNXew. wty176ŕ7_xg_)!98)1rQ7>З>}e0 mhXve]mI,|QJ])Vݤx8f_[d*#E`yކF9Ϯ>YqQ-%et_{d.'ç BetHfC> (tВcpl;IENDB`pybik-3.0/data/ui/thumbnails/Tower-4x10.png0000644000175000017500000001716513137372527020660 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+'IDATx]ixTe?g3g?/I:K'@}IE*ʾ( KU《:.8u F`̌8VӝN9QOsN4~UoU %5G i$IH& M@4 i$IH& M@ J믹z=vtt/377nWwj mv3~6tРO`/Ё얇܆3~ 22F%TW#5ugV!Ǝwr]0T a7bKK:[0UP- xNNt`rWگ`i Aο~&'O'EWlE{tPL)-Ut(ˏ6Њ!YTaǟe0 ܣ?_(:WPObYlѡ8\ۜ՟Z\]NÕn7(ȐcPBG2n-̭*6bU ! gۆdZ,&kwsοsSZ}iJ+;Q!*`3k _292y-:7>9'j|ЫNAaz:QtqUŕ v(*Pt(E>ӗ"on`3z⳦3!Ђx]?L%ϧ9?CPA\7ΝItTkNXNѩZ:#9-éTߣI!hY0S|﹌yס |7%ڋ ٣~:wYp>T*ȑϵHSRӀ*O)uC: & o(#s1ݬTA]F2?4Un s̱K@Uy/N?4a%:4M9ȑo 5Ί&HKNο[`萇~(^xsk~egE#w:h8gթl1d;:ujë:$ٚIN!6"t/?Gݥmdbu=:c_+9W09 k|k|w:+H\.`sCx,,(Ų1 >%ݐݩ vztdhhLt3N.tH+VΫt G39 VV4E*t(\T 5ϙH=M0z%@[X^y \Q=p1KlmvRnE cG`g4+Ar@B~'>|V|N^7 aN( 9 CWIVY f7 \ Ѩ::)QLN%ލ׎|_)"x(,s8@LJyTb1*{a8?kVh XXQL U0:`6MNo_NA,~!6#.:Af/z9 `p_J8\p l1 xf 6s,@U&A(sw9^G>t;EpR%pbO&4X0 ?X6h[) 0MFPx@Ei`v@ (`G-^I\iU^{_/_qC X=?*jk$>J9r:3U١-@fv@tfw10иCΟҊFI`*Yi>'q? =\=_ $v@=n`)htS?Q- b謴 zamC0A0q=f {`4tmVl@<oLᛣ X4w5>ESlh;V=Vdp7X^ %^dGt#/ˑ(LTS񻢰rՑT 2 jUva-³^]5T 6@xʡ? W Xl,t'NC cd-@/bЭX_goK$_ \57w 1` pYOJ`d/t)Rx]s,!Ж<ToXz!rD޴ sUCtYhHR!nyK@}6\D=O/ -@Wh($߰Ok>s7Fr~ Ul H>cm?rS'@o!{09 :ǀ?g|@-_,eZX xITcNuJ*FkhJ/Tx6^†+pMuV]B2&[+&ldTi^(G5vbft`A=K@35puA" ]"‚I>p[3/9e6c'a`P\@l\*w8LfF\8~Hw VM? 3 U 9wB$pn2>߽7-Z=hp(+D@Zd Ud`0hb (wA' ~$fxh)cKrvcg/77妪:o [ܡr r^.|QZMd2ы,o>ELAQ"9e:'7F"/針[c0| &\#O?Ұ9‰bؾ\-r3@ F7Dl0?;&#FX9j* $A@^ҁ@/ SoTL2a /KplOz٘?.: ,nvhQ"dF0Y%Ny"| 0m@{<ʂ;` N͡$fJHkF^МSKKQ@ج g AxF ?1;;F(Z 諶P3Xp&Re`>p^L>k@Ff qbG7VEAa+jC1  <7bvH!n"?(pS$xt-Af uMO#4,сC,Jr2&H+@^/fא1|ȿnGrL7½7+, E7$Њ &J opTf0KHG[H|#<QRrBS{ w G<)6t^@.@oX;VX6cR v'a(m<_K\b)`@@g9 VB=0a wn[N s 5pQ~@I, V):T FŔ`;C{X|7wU+[ ?BN>8#M6>39{.: G3&&!r W?}a"Be/?v"/} bxF 8(挟_g:Й&vTQ jy˞t)qy1>۸gY y<?{7a7 o0zjW|Z՜&f@I{aT(q_ I t)ӹ`v&c5v=MD!!GZ\_f'_zp $w!,4IYi{*l3c.`4{$bz КzWn`Mn# hR0lSxT7.Bpp?Ir@= !0]=j W`TZ.*\ TY0cyQ:$k)r=Z>sYT ܰ$B.F~\>)$ ټ_iR "st!AO@*E, $TJp$ às/ºeA@ϯ0X N~صn@;[׬OPxO`:sz3G"OTz?YLk}f+$OE*kuT|,U^cp%|EpU!fFqvGjV,FH;E QH/< *1F.}ݓ < : 7ƥ~lJ *<{@5*!C3*;U? jX9X_ȻW:`Նn 'pBK@>3h7QB)ĎO!#d*䨘Qb&g%{ t?@Aݽs`,O\fmi|Rvmm:\A-bQ &G n_@= Z ׳cp?\ȏSpdWaEOb#@;2[i zgOC-b E͚DNT2VyrȓDӋFÇ`6y!``pදsiK)bO3PPNUx(h:8XQz@h;9*|Y1s kSp%>q `EN7IrVibA޿5xuoE8R'~-j:TEPh̟hC|V!\)ܲ%c D"bϠC#Raް͑#y4}FːB ~i^I䉻ЩS'x| vTPوrI7EF3KbLr4Jg_Ui\S l%* W?>"n&QWE!WxIQ!$Qb3()Q%~@Jk1s]: ]*|5kB|Gm\%q @Dv%]$(Pi1?H@J]DsQb'OcZwGS`c9!TbsXT%ӺS^{`EF&@3fZI E)ҷj^۽_W{Jl.:?pߍ$O ,dxW,M `\/ʶkyjxZg#9|PkӇ~ߖB,Y>Wݫ@{B(ԓIA!9)4 $J |l;dq k(LH}o*W?}=`8"KWFIdQH}E 0|:`V^ڲD$I4&P&B0 "50kqS y]@c,#qWaA(>u]b@B\p8M盼iO)nIT">OF @R~Rﹻ"Я\#xF@NC l4rYuB;{fa>_rc@:9ܠo QS $r^S@XTi`b/ 6 g\t̬q_iC &.W`Ӷ+>)П2B}eF;,H/)܅u?9;Dd |/W1' k|q!ZPO*g M"q/[-t.byy[t< GʞNIUss-RPO1U3i_ k:Iy3t##|DLu=Xȃ~ݵh:c# 5QOPb4RPJ$W4jW/|:q>5Xu?Iܚ GܙdpnD,n\ f@rPDQR lA it:nwZ93IFOL WZ3)h`(`y>^t4OIc ]] 4 u[֚(#R/sR8#Ý=KBog|i"МЮ}?FPoKm3̴0b0cIGOP%E3(o ?)}`H:&(H ^Qq*=^p GuQsINp90҄7y7ıw$w(>P}^zNJs8E@'TFS1j `Cgq#Zz8yzPMEѥ%%^#:^?cIGV%IY:I!=;@zT5qF Ws^} V@æAWWpM'~KCL?M$A@4 i$IH& M@4 i$IH& M@Z3p$*<IENDB`pybik-3.0/data/ui/thumbnails/Brick-8x2x7.png0000644000175000017500000002220013137372573021001 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+$2IDATx]wUյΟOަP UtTDEcCQFEBbh&&&<'e{a~09ZZ{stףȶKI `OMlf6&m6l `Mlf6&m6l `Mlf6&m6l `Ml4 !D Ϭ/d}tkwMKzʰQ2qo0]x 5}=߷%UZ#h닝W`(Tq$d ?lDFGf]#^.XBl;:g'ܭG]@2A/D^c 4{A$,seyAm"#ǻ}@ [9O@axOpl :)"2\p~G ++:S#ɺaH6αG}!P{|-@+ xt*B+7J(^,rgbKA)X AAS}.YWϜu)L| 93@:o[A"^z>};@@1 @'pALssYBR1J4QkSԝ<:b)/ҟ[T tvR7v^E~ í =<ʛMor"*XN4(2($V"Ml=!#CM/ȫ "Gڇ s&$34H~x-:|Fw5&0VGMKLX[IH4>C}׳L3,//xZyTcTG@)O5)Jƒ(Cq(<N}'s#~)Fܦ{^ &Zx1sQM|Ͻ!̓   U|'099V'&c%Dك 2 AzV7t^{3{&{/hg(8[G\RK=ժ U^^21LIGc{z𾉘 @4RD V A [zBg= Ysت&aR $:-Ι5HcѩZ7_jgP^>˦"Cӯ'09tP |XOfkH2TnSD2Eb#Kg0^Ax'i2Q;7ØL hq87je.W& .z ŗ繼l2o֌'cF]vFw/ {XF zZ&~U]bVq8;wB]?[ '1a(Pscv]Ix΁  m!i2XJd`6r䖿ɔ6pCp3߇FjbLz];9}5@%dxRPRg2 L@sʬy\w\xEc#2Ę 3ԚD9d$r\2oH8XĞ[zYf2'L,?'VLN_UY!=ƀEO927B!yzpͳ,)%ws :cE\-lkAf`'#/?IGGgr>/y[Jq.6(9⇬%c0)LfSIB'sl=I b|fKbxO.^x%oTktHnGAx5X,},3D6HȾ)(NoN)iڑ[I_'~&#bz\d BqfH8` ʎ"VY3ć1$Ce'+u\5u Z"r;_+7IJ麔d5vR 1y jPtm\۟O]0HXy;2' 1aN  6XZT zI`kg wl 9UkV"u"N-h⾤\`KP 2|_YD㖴;9BT| B'ʼiNzRn d.d* ) Ƕk.{L QnDEa: sN\sfe%<)iNs>HQ#CHa%/@2 #0>W4Qv&\OJ|y-MNW FȮ^B4* bys$DSL1rN$nl4 LA|KK)=n%@yޛ$)Oރ2!P֞E\)<=dis$ᓝS_LN_PQդ8||B bnuK֜ |Əa7SK .k 8r l>gԱMa\)fH1Ē&t{A%&q, Sc1lp$$#C[M,ddyD.n/ Qk2{<L29,9֥  d:C);m4W20J 0#. q3<,= Ѩ ;;uH$9wB ~ |Pw @g2Rhi,Y{ZB4,d]Pa`|qhΒh2e^6&ZCsᇋ!Ֆr-'s'< Wt))[⎏cZd94YG(]]df>⥺{x1;u^`( k 'gO@g3z:c,Go$h[[]$eޛir2b(`*`kz]۴g0ji9>C?ŗF/# < @ҙvb#n;C56ͦ$ L}cJ#E>~eTd;l ~ۂZ6% 'jv*ǚֽt);y,od1\+`%22gs_!܈ɦB`[ ʒi˘V#VZ^dH8&$WJp|10Jt)w'D1[E]kj Ë;KsS;g͙,:$M-t@hq")wYl\SYRM/4b f88$UZ/p]Ne$v+C/\)2]8$Zħ 2;MYwgߕY\I/8uޗPMp-̧z\d቎Гy'ߴ,m >Ձp~k\8_$ƒ"/("\{[Dn1|wāyPZ1(ۡฝAZ5NaKi(>ރ1 @ɖ6IoHBѡ%ztt8z~ty'@M2:Et _?p:%yG `kLNMzo( 3ww#7Z7Bk7c2Үq6ny24ك GR4PTިR=I9Sw~됙)ʼ?oOR-/MۧEEJ_`[$,[9CyLZIOd > QN=[TQ!cߗ&kz?ʌ TH'^aYvȓ;A1 hHdːZ 2E_ & lq>=Zm\* Y@ES4Ɏ'UWe.nHe @`D!Ggnc8cZӄ{O'!oe.*ş!7nJ@LUe"X{h4Ec]آEY (WUc8cIG`uFjPV5+$m9w䋛zF} R@<;DlSZh tBByD~]ҹ>sSO& ͠#3"snhs]oKPRғzp2QF4%4Ku@exC  ntN7QBǷ)q zݠP߶Ѧ?]7Ps Wʵ ]CY^.AFx2`nWs+Ee˸Ι;7gV<t`lXzS@ߖeCR**&Pik">SKi)"2!'•Uy=B<̏%?]BJ7M @ۛDL_ 3@|[L.S9T3iXLDzl1S5g⡥aLѮ):cq%b\m`=وO aC+(cWQn)X"1U=V-gv6Ze;t ϓ[Γu3H!wlnNDQ _"paA}ay!S)t}Y"mP{.oNWX~FH6  jS Os OWhZ<swᬣ$o+ojОջR=M4:deySv?o^j"=?*q(bETqL4d'f= ֐1Gs}Cw:x(r 5U?@dFbñ#R"jο71N y%Ew0 a|N:Acӈ˷Z>] uH=/()ۘU("}yb8\[Þ8R]EϭKt/z@֮u8T j Aj艨v1.rm 5l9O~+| 5@vq?[{ܔ)I8$&c1N;T0jQ(yyy^\f6RK|E^ +=~'w1[ `)5CjڧJTBדi% Op>%XЋ$igmRb-hXm`'mrz%1pM'ZV4هȫy{s%97|O EyK8}Q, ꂺJ<t/G3ZH5%.fo|>Wi1`n4Zo~Zih~;! B@@l7ϛou'4 Hӯ"0$S Bx/'{6T1;n޷!`(o-On J W.zL>E;A{G9S1N 3 *aX"DT ;ٖlq('TW40 ݫDh H $T z!u36^'&@t"jVH$O[!_^ț6%-RA3J p>8R xnOg֢oP lH8vHCh[ߜ,!O^\4)>۞+#n;/;O^;`+@@u 7^XzU+?ğ+VH(j̷F ZlK&9%jkW'^z1c'pT `|Bi$,B"HF'kp#HH37 UR՛ jWQ1_43A[<1ׂ^5  ="o^?_Ewj 1;cpXtɈC3҃Lܷ`+YC\|: qmX ;8>1 dz[M|$cTZ>y`D93$ t/zxv9UYu%frL۾ @8g)KLX9THRQ=Ɲof 3Ȯ q| @ RZ(+=swLhۧ#'&oē_*:$Xg,<3HP6D Sw/H5{ ,7WWǮEZc0E`I>c˲:9M!;aw}|Q]>x#[4% !J4B wb7E=(|jWjH9fCl dAlp$/\μYnЦc?H,U=me?(s'gQ0cBo'M$j )7@P{*ﱼw2'.HFF~nX(ד8ӣ'i5裞XBu eB𚞹' ^q R{7iJ/cE^5 V@a[8Y0P&fӘ!T &4S$3{ $DQ(K_p>*QD:/u]U/{'grF5DO+v10SH~݅x~Tlmo/_cF*RqB T.7"bx ]j=:&_gtd3q#[V$)Cl.yR EO৳uC,n^?^ b}n>DgkiWU]#( @pw떲܂>@Lu#@uB<mK)z8?'ŝ8ᰎ /-y1g_?(ʱy"kPs,'r,Dxi]5f'XPnƕ$#b JGȨ` EX{gDm׭- Qx۹BDQh.?zTjxs(c4(r;G0l hfQ!_by-#! rV"$`)z)Wܬ,CSͽ/uq_+b^;К0]Q4FNc“^!\]-_s1*\OMޫShE**ވSӦ.uD掇bh]sMwdqVCV$dG*`֍`p,, 74Ukj1٥\6#Poɝ=6g2?_u&nSOLPO`6A)B5&~] ud;M1c=7&\2/NZ^g(qJ͎TLM;pGeEA1!>Tߗ*jo x^n.'@%xtJA)Bi@gྃ3MĞʛBK>б%fp|n `ZpNTZ!3/&<Ndal}6&:֧c?+=h̫JL##J>gZ&04&&i$YƃUtCpC+(vYb.s$Zȇ7~zpxt=6@4fObx]8VNyv %n$'&m6l `Mlf6&m6l `Mlf6&m?n>uIENDB`pybik-3.0/data/ui/thumbnails/Brick-8x2x6.png0000644000175000017500000002036713137372573021014 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+ IDATx]gUU_9wHC,%HjDAY03 IP[PlttwFQgg'uvV9ޯ#?[_sy[nI00``! C& L00a`! C& L00a`! C& L00a`! C'1vl[a_s6 ! !9[X]"L3d8 pw ~2,Yfg5d8C =*9+%{;; !:=!(}72 J->`A`wv_8=5<yd!CUqGav#9G,uuCn!I zwGQ#&0 ]D~3hW[#EM @#NlLPxDIApۏ׀d)2T2WGSGh! ױ |>"J8Kb%sNs&Ùd"ۍ_2oNӷ>P a4`VI!4 @g:~RO\ 2dX'~Ih:X{f] y`N42L9h'Dƥx• #@ 2ߛG`:! nX]iڅl2N8i&?R+*@YY?kQ me)2b,ދ+ }ح|GV 6  MX1h0+rw^..`=}j5w cӐJ(/!6F, $(XBdp5>ehldh2a.a%Ǽ1#vb")jozUzamI5 ň%$RB?A\kF|Q>ԛPƳJ5x=x{v؅lݼV=˭X"Xϋ\M:Epҙ"$CYʐ߽^ߖQp9Hr BI ĩS(V$ށ$5쏁 S aus ZNFp?M7:q$=3q~v#<E"K(Hk>K{lJ% tӄ# V U>a&!}>]=* /A[ԓnw4bvU%b_3MӓPj*@"s-'ݦcӟ$3e`54yv<ϥ*@,Os0֞)H[s[ =O}BOdlm:iݺȦǸ"E `lQJ?>XKξx x_#W܋zdc2ulk֯]dOIѭXjۖ- PH@!-$C?L6 _++o(;& Y/+.cז9 a!dX9g)!c/mOӑԒ>ie5XAx;r F\h)0jGnR(Օ 'f&xp L~LY_1q?R2O\ڗ`y/8[:Dlw>r>$P+ptѝI k?T id}B2Y2~Χܼnu [o]w̽)$R{%~T*AOu@)ar؇- 31^_ ЭWpS4,gP 㒸ÂP6:ʲ31MuxCʕ|&C ) U 4UĴ٫%xM @ Z2|s~B[y E}EAчQk*Ty{[|~PŁz6rխ֕*{,0{%3EH CU,K0^2^13yh!~Xfl=Ʋ8)}й'ՃgS 0_țtxokdϴWG3e..6]0MБ=q1fc^%˥NL7>nRչr[2U]yl,;\$s)'@Gc]+8eM>?\&dFLu#3V('9}9߅+ISpv{xiH}P&cwEz*T6yL_;ʍq ]a8<>_O`-!@yőSN5{%bK- W;'KMp[oنlEN%Pj 9!Z1L6 kO &\L2UE7_َ.TRYG!h$C5ƌ ^R} VK%6"c˽Y n}::יN lHW["<D"JY.,7j҃X2~jW"X|?P["3t)ɻV2I% 0Av2[zȧj0/NwA( SDDo5?{z=K.}21mO_Z&>S&NW?х J, Z6VxCߗ%lBW)Bm/G1\ŃQ.kO*\ FrV2KLj!EuD5 ǒ|=:0￷%f'WSwd)HBXf&<tTɺRzVs ;$'9=h"!!j('͠d_ꥤq7x2ͣR٫[SUP6_SͤH)>qhؖ'O F?ş~R,į;Lfֻe[9) J21b-ayW-rIT82N-=RZ(^C- SDY@nXsf"l:Gxnܤ#J|n԰Y|%E̟}gKuuΖ)nmXIUBbйnMQQ^˛N6/MDv Cg;?9X=r񚮐.K]"2TgX*M/"xq"bP6K⺂qÞB>ʆ1mAڠ<+ e_jb8á"1[_Xy:Pcn.go9b#LOj V y_zVXTe-;jC%$UidzԱ,.R6_e.vcȏٵ 42ETFh0-{j3 r^ҏ AYܼ8D:L%V(/kOtF5/Vh^UAT!@; Fޒ@G @v*UX₹z:E [ĩBw^S50`2ţ1m؇C"@F8 jC5evƎ"4}Lc@ ɏdǐG5Vhx(}XFo$V$DH{ ' ~a&LDR}g7,4'j0מ_ Dr4"9٪t enAK-mPD4hĮqj떮e& W@:$Ptae9>?ϭ`[WOp!k~,@)t,q%5w)Yh_M^_gFW՗0>|<{OT%-m9Dp RꒀŠ tz gÐ#@ iЏ J}mH;D! xǻĀ.)/zYRdޏ|ձ1&%M^m,"|%U!KevR0Kn;' qpaRvgb> afaӵ(:d-\3M{{U{% c;DwkB8;.D%nX &%˭ޓ5SK_QSOifW8W7y &T{{w~UX^S/LImR!{SIɹ]9² Z=׼j#Z2 6=+,y-j/w EW%)okv\2^>nkP$P=U( *uVfAv{*TDZm{6RzDpΝ_GcMH{ +_w0ߦQV`(>~M)«O48]fP{֭jR]W UHfPu TpAP^̱Za P]o-k1!YEt͊>&xs.Q8A@ӷc}%~{H|y{ZJ.gא"aIU$fUD 4F'naO> Y>ɖvq(Sn͕?.٨V oa`|SSQ9gVWSS\A$Wej3IzBL$۪,MՁ^އc@]> 3<3+mMUmCψ?z@U '&hM]>usSM~g>`%;tK̠IjހL/ f=~7_oؒ'z?ygͶ+hUJέ^L VڳL v:*|YEQ*X<ԻK \U2ݽ1[|Iە|)L!&uDJ{@+%.S^!dv-h~z_2';CsQ=~KIVP^_QGp( N0[RrAgg4u/׸۾]}Cc$A l#%ebS$XҨ9 hWm].Tj .sVS\;/$WOgpb0z ~FIR됧}~s!@;V֮˙ LŪ\6*hs]{eN"{$O?k@< g`S{, L00a`! CC3 & L00a`! C& L00a`! CgV?kZIENDB`pybik-3.0/data/ui/thumbnails/Brick-8x1x8.png0000644000175000017500000002136013137372572021006 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+"IDATx]itTǕ `ݯEڷnI0bWYW0dxm Nl0]d$NBINə3'93I<5Wxjz-$x?߫~Vַ{oYvE`E,Xf2Y"e,`E,Xf2Y"e,`E,Xf2Y"e,`E,XfMO.TgMF:/>W񪣓xy|Rof ߐyۢOMv$궽]i$@-Y4v7߰iabא tZ񾳣%?~gSi☊|}?qfU7;EV]Q"B4v{Z` ?`l`wf($Bg 0K)_$yl]Elx.ոɂ-$͠>x];("$%f)BvT ُJNҿgKI0GWi)"p =nq' ^Ƹ"~ f;Py_@E khYzat!kEoPs1@b̃[p8@4&p bq;}y2!0) RL"oC6U=y@0zOy$̨AυϜ$'RB}.cT8Ѽ$ 5v4CL/&bEFBFtg;wL}z m!ߧ݋&En~ܡ{\tzLV;;rPN0ë{H_IU *Jp0d& HbVcSezẗyqps=N#㱘{zn3AWcG|{OdkT4y2I,ƃ 1ۦ),]ғcԠ֛Dhe?N ~lxQ ;.UE7#":eQO#2ze{: c#=ښ 22=XWI@ԤgΦ`ދNf#J p(~ޅ2=xi NO2$*[YNhN^" B6I2UM{Zv*{P^~]V/F>g._.ۺuI4]*E\;1B(cr ɏSxL͓.J"=~6X+ %!}2j82mVUN{fkz%} c .܏5\Cy٪V-˼p(|ty"Rĉ{!ҸA>nMr wL ߖ_v =N@d(&6=1 / ӹg*ʬJĭT~cշ#(&*gES}Trn S170JT[FI(Bz9ğ?+TH\WGir:I&@έXz/ mXz Ią鋸LntHYQFy1' K>=y*LJ 54prއF)2tO"qfV;SD,5 Ś~!X6O|ծ~u"Yt[S]8'/yS4No%Js --%,v]93:a{(SOG'87+)恏\Y0G2tC\4x] ^{#BA=!Wb8H$w[`/jJ$a;TC*Lһ*Ob!UϨr Ⱦ:'r35 <7 x0ݹVO侪Z|ꀥd1 d93҄TIӁVk cdynIH^6/ ۳ ėRu!1o;lۍ(Gڍ +$G7,8ywB#ǔ,);͙DbeXw[Zt؟h==};QVPMn.1>}9-56Ϊ?$2Ľ0OC|iX4+~~8O7cun]R nhv.;|*^|:_vHkp c o"{8ٳUF;خ*-Y'0+żx<L8␱vL+d /~֒Uf<%ZsxUw ^=.8I[Qdx/+-Y;]@\lF 6{fJfȧz=0zqڰ@Z Ydo\iP\ٝ-'"_/=(d, .'\+xYmtCwu6 B}LaaǦMzog-Bߎ|o7T)p5PZrGش4͑$$w;m]!JG($}xmT, e}5+Y5PفӋ{:2T~Ȇ1u`|_p^YxDs;4h$WlKeDݖw<$oP3{ M9o f^a"# ɒiɒjbgY.jT= ʖ':-Yl]U )'){  R,3 Xp4SqwU(h{@ P zլ늉Cb{UX{rD 0сqs3A էD]p,V9 $9} lpvnp>蒎=J>`j"% ̹X#jα'$*C$%_$y à֪~tz񡠸_|/GSUݻ*LvtHMO^"Qu>pnnYx Rvȫ3yNU/DO6z ذ {{Ԇ9)Tq5E.nR4z?u(SǼ 1a0SJ4"fMѝcj[/TdDjM+4"%h4y _ p,ߌ4MpT|.[dH/ƘeKO&E~߭ۯ)o(W#utjNTn{.%))$<[ȓ=U1:^iF(InH<Y\ߟΗ͞:ľ HU%lTM8mL&>F &;19Y)^lWa?0}we{Qf lrG$#î` JU'Ovz4onFBަD2G$py/D"#"g)?1P{gp&BT ͳj0@ ~)mJ{*PQ {Poqx옆BH` cw1jRq=GȐ2I0ꚹ*Pk^UDž2@# gPu "|!)⶷|b>!93?=#קuNY6m[;r.O"22܎|Fu1c 5X_H R pN Bץ @J#\B&*7h:|$\9#v pɒlHڥ̇r^ϼɺI zwGуAV q(M;n]Q,~oTgfL}^q`b s4C",">;T9Ԓ٠嵁+M@Є'BD#ތĆr|'Q_I/$^C1g 0V@g)*]3Λ~#9f^NvS5~n*-5=|9(?ܯJĝ<ѫX~~M=N6nj̜h -Qg!M$#&Pɜ FM\4.Rtxh: ?baoUψou%;;[,><MU>{l#Caf6^\Ӄ|ᅧߞ3{cv[A*Wײ$t& I ~RTz rt-ec\Ӣ%ÓE _c(ҕ&sG*Эˈ|~?H;$7 0'71)<0x9 ?C/)w`~^ ="?.G犙w^nͯSeUWfhPy/ `6F,' i,X%l![W@^㴉RŪ,sxj0넇/xxFVܙ+d}mX]<aI Œ|ډƯzM<NnwӘ*8'=x(n̼J Hs{dKi+*_ F 2枉^H;tUk?M<vA Q 2*,XCPJO gj,,w]j3%lu BW @;46*S$ZØBorC+-&x?}X1+"(M:*[v ,h,Iƚ)<2Eb |"`NG^?Nb7 ty: bc!|O@bh٠e, ͚7>^y bxz~w-؃[Ժ$D?y57Yz0ӞX[Wֳ=2)=:xnythN-]/)Yv2jx\2G!1 QQQ`q軈J>N) {ҩ39|Cqmqoo.T_^+ 0=޾arlMXiE(3$8yoHdPjdV>%G4HI4%7S"|_|h d@xsCWҼ`Sy$ |_)nx44VWfLh\ܜZrzv,)5mq Gh.lȓ=CWutm[^cS+hу`FdLݠg8Ay-//GŁ׸\r[c7͟Iq*5&%ΨkbMnOxs<0P}['[Oi^xMCBY%=.i*V(\)8&V07 wBHnS݊YYSX8.5`"@ZvlS^&9*l: 8Ql9{v| OkH[ % 35XU5|~]^=p Y3a86_D3vnIO@ue5 zn!N>c5DtM @\|p]|Nx2@# X^{O=߃Mn"X"e,`E,Xf2Y"e,`E,Xf2Y"e7?` DjpIENDB`pybik-3.0/data/ui/thumbnails/Brick-8x8x8.png0000644000175000017500000004424013137372602021011 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+HRIDATx]wTյ~M`9۝QH ҹқtMTvQ+X ``$Lї{3"Bw˜9sfoo{U{8?BVtL#QUZ 8qSq~CՏF7fdO.ŕ7o~y?z3pǷ0>vұ}(qet\G`:d_M⏀8V k0 S]?w \?!:9[u+8pzߪ}/]xfplUdȽG\1eVb51AG?ڄ+Pp=op?(;_G}!ÈqNv.4`-@iLn5ߝL.ơp QJ,*}bCiAdUGD69<͸ӛ>ޡǏ8/)+dhcgE=d̶DE{QS74MQNG^J@egڧ+/qICO-d.{fdGhϣ8t.BO8)(z;O;X<k1 ׮!o[w1@&&c@A0FL~dUL Hfso4: trـV^)Z=.QGawD׹CՑݭ {-dQ.n-ڐ t"M^O !MxWWF[>>?FnSʜ (Up/}^^q8-!e;d*&CP2umncpN_IdI۶7QD* NPh6/U!b=<R&d:{ޡ޿}[gۦIyy LR4DӀ3-&XI`W{l }J ȀH !=3DP Ğj&( =JVZTɡy_ ^I|ȔdOk22`8ţt~ ·J&Q}`UE]ϟDEoD5xH3ؘ00Wk&^D^fT sr{v`0ׯ$3y #du6s(0gzv"M8!BYcy(d7v.{1n=KEƃ5"@/ G蚵`|Wa5MQO(N4bvFZh>1ukڷsI8OYvU(o(]hL@ `"{K%jNܗHVA!YS r말[G(BUʳd 蚐Ch ٸ;ULx(+v[kdJ73Gy]tDf4,3~֔ V7ḽRlxb q}à (;;S,O\ 0њ>Hq*0N=d1y#x9\+e*a uIޯ=ש{q{Y8A xDY".R!>Hw@v3 ߞ=R=0~4_Z!򩈇lw߽CܜpT@ ئݥ64}Jbt4!Tn3264 1tURLrw2L% ፘ`P9 j񨍇{ yt!!ןSw3gOgT|oi \35KmV00"6+0Tеt%c*۽3WE* a"C$8Jnh):WPuQEC5 B4h<|l.FĻϖ2y"F~@W`@~& V ׈ D mb3wKVS=xύ !^Baܕ3pkD" ?I: Csvx$9I 񽖆IxIc/+o-zEBj l#{8_]%Nn!6v@[Oy9+i@hD#!OHר01]u\q캇ia;@$FhJ7r;$lKp](J`z n9)T,@*T g(P#*fzA|WvY#ѐ~;ֺş^)JTxvaD,5.Wul-[=hCl_WF߿Bf7&DI+ Ǘ&m͑Ysip TCvo7k C[1񻶀0`7n"ʱ9e#F1`-Ϙ?)%c]A SE$=`G!o0N@"|"SQaNim1}9+TĺР,&2pYЌW)bC:E sP MI0HeOy 7FqdC44p nGe:Ao^d /`0(8e^+7,Z/E?p*M(qh'Ȕ ၴuaѫ!D3xvC3 BIz*T?9Ū3geFNRR.S x"u2$\9owZ1t2.)57/Р^P|Y(uH!hXMT*3B 29o `|'ZBVϙ\S*&} &ŠSJeƑ.qUoyqK!b :+0N= б%$`FZ:~6cEAD>"P nhdm"{-3V<.ȘWt *g^({P0c!p`=.#ށ` oB] !>y{<_Z6(@{Q},CA]$S/RSi7b{9\@FڑwY Kai9 >[' 1[[phm(h%5=ɦ3}& "!r6{O='ܟQ#>x_{{O˿Hv7A<+JIqwH@:/3m咰ۏ`Ev R  V`Ѱ]0fN2RwvCjwԀs\ sδlJog!N wzZa:{\r#?gI_졕Sư'fUM_3-=<}Z% 0Tnd >Bt>@sVAqܮ `ވXu^ 2a>S`H DV ! V[ZמaHG C|BouI"\TiUXM`QvsgJ>PWpceiFXm&A4iN$>)խ| Mr2T&%gGk0g 5 e3'L\t(pU5D/kTTweG|dE5ȣaE%~4L9+$'!Io8!JǗ9JQ_>p,2%\"8)vC mYYe(җ-U:0 Sui phHx->t ӹHs-[o1,1_g@qt0B%3TKAHO]Ã> DOCHo8J=(5Uғ|uK9LO-UpS-u-"]?P ջ,1Պa@C?zC_ejŐ|ed  1~K"vYF6ݢb;$XNAD`:Ra?MU -YfGugRXQfp[Q`HPPzVمg!Momɍ mt;,;,Mx3"El|pOcwEQwUX9+(*Km-aaCs:R 6H/=%S\ӅR?T0*;Zɺ*GLE-dCQ^̍"hIhRB5ײrjwP پo/ϑR bŢ jt:d}cRݐ!y[+zb+gG7O)C8<|þG/\QR O"68uj1\FSwq9dŠ2|H`YB̜b `|Y'f>K@螹@C`J {3qjCUKSY񜒹Y^ r 2t,J!}"@B})5>>@hMYP*ˀE:9St,K-x19\l<f0p҄8aji \7ZʹN0Zpes>EAϷ(u!]|H+>!I+E .vn55 /i Bpo{M^ן"* %t.z.w0 aøuJ*0EJk=Ƈ+u}h0 07UOH* -ѬGͦD!,ugP*+DqɄ%"}.r)bRJԈ7/)8@$ 78E`SD`ܔ: 2Cz _75bD(oO C-o0p xR>d `p!j% J!\-*sͬf|s4s=!0CRHa* MwWe|h(>ݨZmb/+k*mi"]$(&XD"tw/\èraHBNOt wYv`vz:XY&B/e5ҿI8`aV)n>%ft UAO2E x[ V0ǕF+lpp I<$|o+5.t; `.n0".>,KAZyT|~XtioZ愉#8[ i!-nv$w43l= CCBv;k%,("3]/q3|6`LFn2o32J)U(SSܐ@F@kQ-`hoHYP0tU`hnulްM^_z0!~P2$,JM b__Unq6s!JGho!dO`>Tz x&qe 8efx`^ )fQJˎazsI> ZC6MJf+.Q}8Խ߿T.>A>uj׾Zow!E\ [tTi 򽽜-CD+Y/`f;@D>bpF M H{F 4~q}=|-1$*OK-!4c?:rT"?)uHsɨ) 4!"X/'!'*ANo& ."^t_gİK 9SP -tlfZ%yD@@E5;/$ x8 Nmwnjq Zo(3310Y >=lY6dY Ќ,߾f:.CG5z4"L F=sl 9T__TytX0s #f72.,{'BDzHLtW)=LDP_S4(`GR$SfkI/מUVVxfw# (L|K@yb|Z@e-Łn!g.\7]7 K>w3 Ok,QB O Df΋ΥTo$-e/E! d(=a@)j_!27`(=+b0wт`+{jw ,2RLqFL&y} :N>+_Ysv g*-d)ݾL b:pNgӤ'ACy%vUSYbyHȮ_G28Igz y@qܸD 9c7IprQWbÚhُ"G]ۻ9KT J‹d,OBp$2Acg( C: 2OXd&R(Pg!0'% bEN|b'dWsy w?yǫ&Nxo(ys8x<b ?swӱ%x$=H78 \Zb."f~A #004ٮKX #. .+1Zd tM er;Gޘ\>paC<6c^@8 d}753/0"3),gRGb'n&>B N&@xvI7`H*8U`dXx r6PgVL %n2Պ+}2p- e^~X4R>(~ O'?Dl jѽc%_?CX6UJHoЅ8,A832)χ2>Wϗ`2wJ?O+tJ( p}\7V h`9hqQٝX *W/$r *4 dcAk)_2]S^ga"D p0i&Z R(ھۘ&y=:$,\(uׇO: 3}Š"}@wTܷ0XdKm;yFq@] U[Apxݬ <-0[&1@ ˞*9 /4HߥDxIr߰2 hPO⡙U-~^{9a1q ުd:4ҵ<מ{uߍVnYoAH^!.{QIĵM[!'Kr2$c+␽]n*ʢLgaWA wqjC}:+x聼i ;{tP''oyo݋Ěe!QN!w'\({`w/~}p)`AEb1(* ufIn7PCv1 nGJ ģW>v郭D: &1HƜ a_i9@7P5:"@%w w|]wlq9\4/79yjm| /:? ہ$x}()/mB\?Bz!:)0cG1xF{Ks=Lh'cirpK/J5,,B`TmF"*Dhaɩt_a&0~ (B}}}fOAi 4s+wqo6"ʠoXC,E!GBAq:` Z&Z>|QFZ&NJS[1W8Mz= THp^H@X@i 6k2nu4}}xKCY,G\;P3^s0PF;[)L-҅l=.Uĥ*tr/z Xi2 ͧD+@aj3Z`[Zy.tF -jّ-' )uJr~`Asr˟?/f)UR"n: X _P1y"n8Ia2ttlRn_{E2@_PT2ٙ,.^Yd'(>B3n\ܫj\+7Wa oF~Dиm[! ;)Ep,^Q93bH} zt4GνhA'J <\PTZ"(x}*cz4n@@$env(]V0+yg$$Y% aW"#ƣg\50fNMwULB @d迫U11@W*KJJ>+CH4B>pXZ&{wpPfȊlMNuѩ"("i@b)/&,F&WsE>-bඩ.UE ,.uՀ"}GQ:"gUսh#^{<y!nn|lG) =eC =3[!i*ES,H4/se{VDoj/;yiP!5hA\\a+x="Bll!++=Jz1 cR.K,#׍?Һm\'KP 5 S<>)(%owx"ݨ]4(NGRJl b[6-a 7]& X^).`@A\ H»zy)ڢ&TK0,Kܹd ITOAfUOFn#/ 7E#h}w ߯'4],k' tTdP f`Rl hc A͇ǂNBQ319 b%fJ1P{V1DS吲n$=Ә^gU Rud(RhJz9J ]y䶶At]2V}thqaj\~FP'Yy7;Nvե.1iXj F~΢W-}K!ݔ] jl`#< 1Sh:w^K&sT*9Lrluw${w@ 7= 0x*_B}`PX5 Y7'{.?4S!B e,nH_)(cTuB\~FH6|P@BW_Wa)XAgdg+R/K&M)bHuV$F6 XQ%>؋^aEoAed W6^KKd;FzAYi~ql%ܐFl)aZV 1hԘ͇p]h?hV,-ゝJ"TdezRswf]m b$OX C܊!@]G+4č$+k5&`]ߦ-=;\ 9pC0n+彀![Ľ {Ιϛ0ڝ~/,L6F>F=N!o h~fO\jA$i="rG4Y;}HԔY>ep/T?4o?/7 m 4 ާ7?`(á(Aj׎#Gdsk1I:1@(b~ ]ޓ= 9@re”?!U!V%bZ hM ntmT}];H>z?0~?W&L-/EyjL% x gjqIOT>&+~2 t7/G1t-WGn6r&))W%B4s7ֱ o>yJ19+xSv^Fؠ85~},"ot>`<,J9 5D&OUHW/2bv.{LBB6skH3ֺE5۾J)X̹$\+P?:n,ۺYcgybwj{s,P T.&hY]I򄠒{fxHEA::jA#f۷HA8 `$ 1nWs[DŽSj6-{#{R?>h@wгu/tx ﶕsz$;j?((ܟt~MvlX2ޠ,CStwJ.!vvɓ &:P/Hcؖg%+;x+94Fe ؎ǐTNycn䀸:7~C39toǝEj>7"rDX!O^ĞgG* 0 篶A_!,~)8"( 2Zf miiŤt $ehނºyP NC/3buÏ|A ɰۑ` {/mh 2n&6j! w@vF$(H\Q)sReLA{JDD/|uF 9}^FޡҸyt8*ǸfOA }у7V.M7#}bWcG2İf"V!PUWz9V-YBuȫAڛI qPv)óWE&Ė[dS#;@z(4MJ.NʴdTOPz@r^k[?B( ^ߨ*4)Is.JyW~a(:YXCgj@iw@@YM?+?yltpV cj:q!(R2_'7:A0s@ IVmbK,[MrvX>7cr@ y"k%1\OEfɺ?naWƆf)Lo)`N;ǤxA|xR-t^^O71i×@o|LScq^ ׿c]yP^x7:Ļ~I{mhf0Þ#`:LՋ̝jwqrnb2ּe `"#!;}g:-%:ʽYHa'{e{e-Kn3/3uޭG 0B.̐[ں->VxӳXGˍ:qwN"A};cf8o ox_]0=].R-7_QhA]+a|&\RFcF0;DaCg{":mb;ڄ ,gs} Nw+{3 %i*]pJm͞xޱVn v0<@/@ 8&[tD=MȚ'[8<8 { l.A!ALȏ8Սo7 .-m%pM!'dP G"Z !WLGWZ±,"=>p}Xݿ28T*i+KNn_yڃ vru@FE!%! D3 lOw%׳(F\uVX̚ާhc-rIy\jj3wʎ%2 Pa=ăפ= e߯ߒ%G@&aDYFٲ2 x;zoO@J  eƎhkSo?-Fo ̒43QG`0LEPbL̝@z=֗ SViWxA'G5аP4;j1p%\'`Q \Y`˞'Lu2O`Yc]LlGohGgl++r+0lFljq ,jb_z!R<{poo Ej-}~H26 ىX'a pHYs+&IDATxytSם4ޓd˒my)!IXH5@ c8%$'mH gPj&daiv -fi2v2e朹$ˋd?~Njs۽O}E511aaaaaaaaaaaaaaaaaaaaaaaaaaaΆ;;c~aG2`[寱a@gM,RF+ Wُ#y4m į%߰!~]$;A04 O B! X^r!lOG%;^ ;UlWa!vTjȮaxг>6x*`Hrӌ]OI$8N / ]* Y$&e'dv (R$I~ggHdn؛Rܾl'4a)))l2 (^dk6 áHPZ(qV)~-**Pձŝ<@0Cܮ0$E?ݛxJKğN%8縃vh]vaPOlWFp4}\{䆭H(gIjq. u3(; ۡ431˲fcR*`8@Yi`@G˲.?`q!qBZn  m4?tyQ⣫zV˪8oMkl7/p=Z ]i#?۷J2<VRR w,!  (,IŇG.>΋{П$w7\$i<%$٫q9Hޡ>NyceeeaH#5:UK DwM3 wzA g o }YKi`kt*Àd(2nJa!88Z:>y+j%]HK3>d?ɶ̛UwuCiv@'ׁ*%+J|Dc#M@Ғ twO~cA4=]- idSxB9ӂXԅdAڂ>אA~z ƌƍKΣRm]'N9qhJVQ:FX&v!M2:7ᨘ =\r@?~<Pz^w7&ҨE/Ya{_}o1I(!*=dݭ4vjAou^i₪h`vSTv=t+ڵ5H .p.%Xi$7%w'MR$&qʔ)ۮy>=0ǽA75!FU=o7f Z9P 6oqq8o"sC Tӌ0UK4솸.7c-e_o$+leZb[1{XU ,Kߎ#D* t yG]JU[ЀS>.Q?N'BCiv%/G[r$Re7lc(NUGd'jp]"p-'1F+nBC ihm/]JI:VYY%z zΓ&40_ٟ.22vWO2>6 @ȚIf3%xSCY q+Ux%rJ5;-wF|)rIĀgIugн´iޯC)9pu] I'a{.53ciǹ]0g$z#jDL @akhQC*>\ S P$E*7ޣ?E3K$/J)sxo8v KvS4/N03v y~Oz "'QRAu~ h|]]!wH2m0n%^%;IӴJǙ3gr>yLq!@+ N|fjq_9Òb-`…[@D@3|%HFXg_EQH[k(['ɑ "\4(0a={6 |V^ COА }fX¾G.OĿ@YCu$EΡy:^T-g {a555o]E}]|=S@&>C2x @Z yLI&0s %U$EͶq] M? EC>g쿍q1Jv/D@O!µ$Rh2l zQxBD_J+J|~(}7LjP ]k9=Ӗ!NήpޫY{9gQQNyVEǶW콇gl R8 2#<`u|coOUsz- ZUǛI⯑Ke$@g@Qem~bnt@Yg)蹉+An0`轀AN@AHZZv< Eu|A_Ќ?ECusD{ DPo5`K~^-fLF A,)1rn !bҧS&d^aҤI<9 hAqC"#8)>L^g,ٿQWI&v{@RB{{KZ) A =AWRO˩.Uh _Om"F$'vO@FCR]Kc?2=T}"SXNp|T4Iif^0 ĺ=ޠ}=z͗w|p}ZLbv{ww@|#d9^f[MfN{j7`B:Q>)0D!!Z`ή@PΟV'8jo=\8 CcI#M£-Z}pfkc$b'(x/ٿ_ gNk %lX[KfUFеLY}UIeT[*罾.#PpΦS <wܘ3C?GޤfO!`vco=: K h<߸]F}}N1*-GxOC׵PI%xJJz%}{c 'HC]A ^d/G9/!Xf^A^.g̘l*)Dl!aOW:_[Oq]Mm`~(h$ap?[ +t#!94X %{pCwryu G$fzx6KxM'9,RtǮ}KP ^ٗ|I!QMfՑWX-Gyalj*u@~t@6CF8qW}`.yEJ*;B r8q?ʋ)>~Æ/?*a>9o- +;ZTvo^?4X@w6۸!qXz 6bv`GBM|ݛ}[jI OKل12+.) &ƒ鳂kV4o84XeM71$j~/~ YaiP߶~s30O2o9仄?1x!H_p|Br15W\l*?@jA_Ga xOWX% &v{A/~w_Oa؝}=Pj A`4~,t7,< ևKV~L{Zj\Ald&=A~w No`m=8J s$fu Nu -# '?VNM\7,= 4yO n,k|Hw)o_=/ 5Mk@zu6dKod8!@LfՒWX%Gl-]z {]e{VWG6լȚ7+e&{y;\>Wd Y!uK5CZ`   i5 MLIENDB`pybik-3.0/data/ui/thumbnails/Tower-10x10.png0000644000175000017500000004767313137372554020744 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+OmIDATxw?1 ~FR{*XKTPD,("( tD7.јbL>D&ƘwyfK-s9><߹x?^B/PNѨcoKBl\)V3&Y{ZƏF/GdOO?ŮbxY/-v9Ï/ v%Mt\5{iG鸙@E!Ǐc~6-Kz\2*1Ԩ)h.5U).\.D8@acc9^^iś; _?4_9jX2wM"v!d $*ﰓH^Kxz7[BS#.c K֑g[xs< :C#DTEwsB1g$/˿^h (՝KZ7ґ wE{'>@4ʣ'V﹏KƯO^I5dlosJ&@\o*/~eo"'nȣU7ָ~& "<"H(HdC'QzMos=lH3Ⱥ_C&//vbch=vx~":p,w1㿍>[d.݋[I+z8B 8q 34I;*c~jz.7Mxs3}ǥ.^X>i6:=ßLD^ [Hd^7:Zo}D'ΦA,'whfh"L`꨻^k}G- ɖ?<+Z )ZmKv7$G.?F@? \ 0&8B/ƫ/n{dq:1%@LRj(>=v' M;uS|?v ~[1\\6_g7{1P̏E_y"cxN5,eJyR+C ƑwhC!dG_  Tq?fL^e˖wT?jִxpd ZFjt5d<2D  n^]H6&!z;4BYFpy]yIu}^ћBLqB|/<<:L~B3.vGr^2FZcT-&WJh;1 ♫΅pvP I>t;Td YrrԹ#2om/EmZA XZV6.Xs5yX/ DǔTV.^7Hn]:]9x Hfw($cդА>‰ $t2 dLc"Z2}(;}&UͧXw٬#b1I =AU1/qUߐaEc5M߅d.Dt1c wx<0ƽta3) | }労f| H?ƂԕLLRHe.z9&Z?!cXR|'@"oC8't-pܠK"ZrX I:. <.Dre4ޕE+Ūӹ  J \C␍W$N2\|I_B09GіYSM5DO P-XJU߁R~݊&Nw%Ӆ sCM*5NW%t9Pԁ sb8&nȺ5ʘ4QZ5."C; y 'PW+{%K.QNߡ}~t)2N#ߨ1z= L שTͣC7wz-Fݭ\t (xb#;?h>] *B!0(k.DηG ߍH`! We{؄Z]8d`s0  h 5x5F9bj𻶲s#c"R-SgG`wSAߡ9c6*2zùk3Zzr:'#W9Y٭.%AQq!!1\"Gg귾RWx p y?f3XFtNc4/y VRqMeVT7;s\Ki@5!~a#wwpstne("l[o}V:j!C WӏB6Џj Z9CXO.s(yEnT<%f2V6&tMwtGq XewN š{)xk0/%n1W|ٯ ‹=b1V5T>d<\|Hfߕޥ-`厦-Mc2Vպ˕NICԙ-!CB]a YE M(Uzf,|C:<{p^H_z8~*؎WB"E6{9⒥`Kժ] C`P|[6<.Z/uT1y%d@Qt1PlG6'U+ɛWj*jTB*$!d C2߶ӊyjɨ jx\BE vRJ(#t$r.r F{"Hn@qnSyD).ߊ'Sn3'Bav2{{U X}9j8Z &SJ~M(P-dΉ,io+NmN:ti~H|Nw_0fҤIB,>A%]_wj #zCjhY) V aE%ΉM .I%yM~Z)UO`uc |9w<" \0 }&?n 4ⵯ<-KĶ=|SD\?5(46_+})Ѣ~ah0^Io]$ OT"s F' `1)W*k?8sj5Lc*%*G[3,]|bHsvJ7:Y2_N|(\pw?+AG6^b}l'>x>pۜȊŶb5QuU\Tlɸ[/Gb@(tW4kYmvgPjЅ[rg(vl=Ub1e`s5/ebqCC|Fp9˾Aнӕ Qϫ]X;1rt, ;]զ'UK@H_( )`mcK/ʽgTp#b YnJ'9 rOZ"65O.|\|&چk[jεnU+JJTZ,@nVCJ {~ض9}_gy/VksvO8X] ^HOkpHi hL{!h_2 ݜOrH25 733箽 9zJ7gqdԺdV~`=nv=+py\7 >UY5ڙ,evt1U6]RNRƑdL!< QGWr(M:2"0tTƟƿ"yQ0< ( joU bHLWphA>WorqgukkNωuooaB2:>dؘp1sAm` 8@ B}D%R&P+no2x|q46u5ҥ'}*+餺y`XF (K8ս\L4*0W`(Qus )%DpV8|ѧWk9i]M"cu\d' |1q t1w]T404 \Ab`(DL AN$ym \"Q:n~0@j EC4'~ ,(^|Jg=uO\|InRߴ.vq(xk(Ӹ `\HdX06 g|ޡ3URP㿚\z3" 2M X9ISG|6=7ZݿHTȼ@Յ/w0q5Ce=fPy"}>^̓JPe:'#% B 9z%q;so! ;VzںV=\Ƹ/ @G7%EVq>Ty첃URʐÉ֘Z>ZrdBOyx(QCw;;R`^.fI'L 5';3aǹqBNHv9%_1w2e+ J@*zoa ;L~BqS UD8  A1e|yk xrߡx꺪C!22w_z}z NSihx S3.|ߗ#3kL"M)#lP 1{F`أ ռPfQ#9W[qy),k;%p#⥝k8OI."XL;{?*bo;SK>:Y >ȋ3!dP6`9 Epz! G t@#z>r|@B>6ThpB_u5J}BإD!ĪY Oߧn$)4>t2!Vܚd#?gT@eC3cO_S$]P8׀~}4<:.n9ƺ({9ä`P#*]I1wS(ƪEQ<@úW p7BN:$Ө޸l2D[ClPdȫ1"|!8R  PY$|e_*TruT,!DV^ܢ6=1qxlш3yO|| }O98Az Qrx|.hh ۹XeϿg$}O/I7GE}JWSLp@ػ62]y!!/"o,b{3H,UA}|-p02; ,z+1*b )$o-2R{CQ߅C)9ANo=70QF,;.UqT"1 i|.]˴vR8\ x%N EˆG$$}sFy!qxcXܙ?V2Gũ-I<_v= BX~T$,psHW/p1*[BꝄ"˒ʞ7z7w@XeV>DH7r*T5CM #۩^ǑV&))`0 ͻr7'p?qT śEyh^;9)R=h+ĴN#OT/ 嘭J))tbҭ;-)q`@VK i\lʐF"&4ܝ[E#7!@h<*B?D.àJdxTᄘ9R=%( u?2fSvjqT<<&v=-b? 嶤qzkBT_bBgLV//=^,5QjJb7*B#ׇ,() >04cH! 5aR R0 ,6 e<o z*nzŔ8y2L q|Rh^ <#7!O (.e|]QW 5Bbz4'qʢ @٬ KjU{Ɗ&CQrz>C;XId1E1( Uq3U&zNBD2pu@ sb%c߹0*n&<7=la A4}?&+) <5"x'>ty qE0mt (E.GS=d)EAH Wu-`˖-ʹ u'0v{44~7.f-⼟)Ɔ42/뢜ҷ/nZ%_xG~(?+ZA& @qQw SXV(Jwr,4xytnG68g,J-R+㙄vT* h$ūsg 0 _S&$vgL(UUONO&E93wMr- <&fQJOW~cy;C۽8DzhOp |~Dgu_O5<}QI%`pCdx!eR Zp/Ɲ A yI##ŧR?^դ|Ezh%`=P5_DS1.2F sdxӌZmaF)) x8K!'L&5C ü1AF}!bXzڋ~ KSݨZA\!Vb! A0@7FUO,C3(}} /ՑDx޶1MǼjAb!KmPPU`xV "]ÜAGA^.6%HGopkM\Ϋ`l݊4PbdIr$gj)88ΗE+4bsg1B.|U7FĜ#ഐ VYD$!@&ˊb(;(UkhU~oǓFu07jo|^v-I Ԃ2=d1YAq)!q`Cka~Hٔ]jg@lKhlDfC~2uVJW MH%c(fq ,p ` X?g΁lY2@+wS8'$PH1ݴ4rh@t1 "ۘ%=RjEN.p`]e0O~ϲ/@2@7CfcR]@V/! )>E%ޣ3%g.>ga*Rl:7yF\ 1ޡq)}.8ڪ4 HR6Mٻ8Vfh/wDw)/z{!w>F12O?^xA~_K2."?Sh4ӗa\*E!O΍@2wt׆e,F~b =sU +XޠKZ*3Ϲ$ ( TgsB8 |ܓ~_sU$21 Fn^&bn (B;XhPN$><&0G0Es5TC ^##.ݸ!pg*pK56jaUR'0" bO xp7G{Y0xbROo]"BŊ{rD9],V,-Ƒ/~?w%o`* ڿdl3419WHC[ Zw0~ZHWUG(]gń;,W]%z J)+ }-28 zɑE 72\ oGn>?p/*8maҊB~<19>={ ɤvrX vs<֙hsߠJbcn\WJbUroVc%0ԝq;9,a5r}Qh$P'X8JkAI7-vnǖMAh&Ь{)@IJ!C>8h|E^/quH Vt_#[(w航D>%{o!ýx2PZr{Ѐ T4P#vS 2ZH}k!B" [c+Ȱ~'4 0K"#:~3f0 Öa==q M0 p8Te6|:{`ASB8JI9`ܨQ^aaZRPf*H 1V3UEN@y5:-©s/=5v03C{XR>;9t|FCIE 0@izP`βo{szѮ^*Ooʘ(5oDuoݩpx6cU#4p Τ/RPh6Z >WuΙss9C tNB:JałH S$~K9?CױIJMV<<xtCRt o 9C@cYb ^Mc=[)XAa?Vr'Q4" @S mX Be,tp6= .)eE1XdTM;}*=qBBLT8&| !>8qݞ nD.ț=A7I}b68Nac Oaի`X3!h$t9-;"#vU,AmqP1' I-sP4,@eaZ^E0)u{Pen}vȕ- H0>rၠ|B?{N m'|` bx?:!J{A ӫcO?ݲbP6H̽~Hpߟ,]f$)Y C<;*!/ϙǾb#5|ʕiuC| XxŁ b*U@U@ ;x/xZA:*vAlaj+)!qunЋl3mli»oYgAXD^]&T|CT㪢 x!cȆz$R\l H̃k1d>h T/ZŐ-.B;w~R{ [RZq>8;.^[v`$Vx8f2f2AlYU#0L4MD^ZƎcl_ 18<@̓{ "`S T?画c .9}vnWЦxrP,[VDys("P> ytKhV)U@MfX ^1T 7׫ĴE@R7ÊY,B0)(}hӷw`ݵF0'}c!&ҫ8'fXsCPtBnEƇ(̑\|(j9 423sCмbʤѸ&&k.ivޡH%aH.3o`Yw6(L^ZT3g&X !P!+Hj f_#߈@ޞN_^1&@֟tsS"֯>fui%oZ^ А+ dCᢽZ^2V}U8Tx^-l*dx`K\wCV졧`LW;;S9&߿ϩ$Z#L)3PN05BǷ{MBV9$OH`E!L%_]|+y4}b۷'7,T?o Ͱd]zK+7DfբR PmaN ZhDe\<2L3\-xX41r=Y !]4:Wۅre6z ;b})G' )oRО #'\~ r3'ŞA7ITYA/%T"J26ZM =S^v)`8B:)"OowZ;5*wAvPnKQUqAdϛ]'Ʀn{`罽9,co М ߩG^w.%̌qqOX!vstYP.-^mXqKǁpU rH#)LR"ON͖J Ġ`TTR} X$Nޥ >g]&0}D7y P`k"o!D9KPBf,Ġot uZF)~`QMb3JE`H.#^KwVM{i$@+[9e ju7d AV/h CU%_La#bˆXIwa @i"C.^/tҧZ<ì._ B&Уr=?]A4:8=SBn4irX_u(߰2t|0}|~q3G}. lG?1ec vw/gtC C0 ?Yrl㯙 {AQ[;Y=^LyV~>(\KU"3s\Ni$>}3pe#\A2ד;Ol !lFc~|zq gϜ*O A(+&90i4t)E$QFM7ĝBR7~"mh}l0Q'1'<9X0C!Ns%P򅴋8|1C)=#b cX Dzw%bd //>UV]`B>:U^0,4"ƺ`t;Djv ׹7<^C%]= K ?LC/G b䌳ZkR=fxPYWC~N'S-&mI2;"Lamw6qy NkF|k8*]]"n5X*H^<hbeA4|dE+_r5 4`O|Q>%ߵ/ Ҁ0 vln76XiIJԜJV684q j - Y,;R)dc>y_!HU!I(҈dn؏mypa4@2#@(_a /O QIUnpq+-d`{YL,i$ l-1g5<__Yw@@]w=toP߱Hݡ Iь7ݳ3{l{~>܏}k>K+OX{f90c=V?VDޅn*RTn;/p+8J]I, Nn&:ޭ!  Ɔல}-{=׀F"T&m"nP [k"JbZ1 @VP }`=%p |ݹ0-A:?<>>mߧ^`°i"gXGGfLc&0L%_N#z&d#wQS-w3w8Nh A{N6w|w.oa<5+nvpqTm Vi ]i=XY 8j'Md#g<2w K p ` q~/Ή38a[L$[ w{|.KXy*A2s@No zyT`faRYoST$0RW1rK\O22jF=7"A֯ ﺨx}We/+XpKZ jul4MyRrF4^@oݼ2M\+L (w#c6?B=vXj傹TDjg(4) ڇZV,y痟H7ONoN Oy1R.zU L7aÔk{|^nLH^D B!X=n.j_{!%k, @Hyv/[Fd P"Bq@!J"Vu0\>vA]:]n$ƞD'U9obz |]mj~~b:>zJ%Hm ֻTl' 6:3 Wĝ b(swf_֬VP6 ܸ0D}MOK|˝ƹ^ށdc5UQI}70X}!yxAq]z??4%UC;Y~FT'+>XP|?{lIENDB`pybik-3.0/data/ui/thumbnails/Tower-2x2.png0000644000175000017500000002227313137372523020567 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+$mIDATxyյs tU/tֳ/ þɾ >*l&EEKD"]ThG dA2h$/1їw~VWwWwWwW LOOu=w=n|ބ g8c.1ƺu U4G!{v>K_֊ q@,(_^sÎ:!g[/`Mg{A-OXןuF`r#4>9l<%%Em0ltl޶m]ԅ@<nF  B~CcCr-svy*FiXhTG! Mp|4K~3 lA9CH~RW4ԣit~AXy|AaE3MLvݫ&Tz<RͬOndr Qfj\w H0ڲI' 8&IVxA@zALfe7n]X#ZjϧwHtnShXHfɬK,Zet~׮]Y}^wwt6,J5)tMH:8MGQ_L(%Qt`SףC-*{=K[p>u>VE3M+R9 [t1zFE6{(Eq~9}q*m4RtL5Ӷna!p7J6"JѠS?;hJ _9ja@SwATs bCR<wF]je*DQQs\J?7n8ҩ(ܾg5]%kW*Kbr*ݛIFt+Rm1yE[,u0dhTFAC>F3]'t:Э[7VWWǪYaa!V7 }c/ެҮgPF/3 5GK->H[D#j_7U4+K p>"C^X=TCznhu Шq4O|fA2_Ĕt#^o&}a;XG8D$d {f={d?44 a!GDkT_Bo2V#Z\6- %voQ~/̜n*E9o߾O>| Z#K~F|1܀`f!q]njՌL=\tErQ*N4 V\d9U}S!uEݴ5Eʧda|p"AGv aYoW:qlyZ@sYzDFq Ox Ç3giBj +bDp)5e2@ cf)E8!m%C%giAf(0!T<CAAAn(=DJG}.u[ر_qNF?]}`<׊aر|@w!^J5*Q=eeT[S!m%O͈RN!璘t~aT2 DF0~x!u8@i͗ `J{#OWEwO:֩FmݬR7DP(M1O F![8 (I#"L87PЮSZ¡ɦ-ϲ|]DCU6iA=7 avf; '%j $&M hDk;87=DQ(?TEݗ$ R1 ,">ztR3|]ㆡ49?܎2 MdC a 9/knԅ=DQjBtyʨ·}mh@ՋZ:H֎$\<~>O;Z8rr|@FQS`6m*^rt?P|'JIa-Ѵ ]h9-B9ŚlTڌ3-D#`@Y_b"b@7h2'K:uS֤(*)iΣhBB DQ­t#Ku;iw9_/@n(E*腦&6o<~Y(>UاVlM!Zr/sP Cbz(--@RfQw97_٬a|T^be"n|_Mb?v{h7}a{yæ@Ͼg UV#3G$O*@pȀݮ: a`-&GDRiM%svX%bF?Z).{ZO.,q<3efA0\,בD Hu9MZ]_O8?|O{z#p_\}o0>P[@kyeHZR/΀pȁ&|O(9L#d&aԋ/9f|NvY}Uo5# l,VXbj+- 0\fI _peh 9;~ {]<M<"b,#AUlDQ歯U>cx\e) iZ)@LCzAΕ"L(@D΋׹݅I0@< ^ yslqQ K?RwebpU@/saSJXQ CR78^CEq>ʼ/ nԜ2 & jkI/,1E kpXNE@EN#wB.eS{o*vM)p׎ R ආH" `w06v~uG;MV{!ݼ]~מ,2l e%w p`{aL(f: @Y󤐅)Э  *`@ŧxHfa@}bU%q}~ea8&  >ZzFr/Iq pRIq<VKzQ+z!"j h@ `@2<H0 ؕxtu}D'Ul`/%;9' :_ojb)}Ā "Y+p-̦I@uhJ*#DA3Ơ=kF6F&t_pG3,MtO@Ȼy;*UV]z ֶ緭3 I3Q pP@V#|9` @[f5`օDIG6`v!G92Q m>ImN@~T[UxbOL|rݚ2jl5HC8Q4EB°\ I/x吅)=/۽}@ T~¦ _s$ Xߙ\U1P 3wEuOj1<Ý7_-gϴ"9P{ a+lHO.Y]OG <=À $ mlrBkc97iZD!y?|X ~5=_8aiS Y2FaMmmkR@ qE)X Nk@°zRG%|v, )b`*ۇX_ke_ :.{|x@ [}{OcBKM?)~Р@x8_ "]+4Dj#@@{<rU#OB8_DZ|du NFV(/p(D6 p1 1RΡr^H` HBb~?ZX-!J/xnkuR5|5<^hoW>ݭXZzN`>\#g%Q f BФKqH)Sz9"ߑm2o,,~)]oOWn[aߡ}62ArYi@QA^XRz1*NV.L2P:y?Krq62Y"0ȐL h.?P!^&9$ Ĕ!Ѐ"[^,:bZ&SAEF?9"hSu~VW*IpC /> 篈@z =":ꤸB0|WP4"`Y))%SL)joo_<.E<}I:`Ԁ`C̣bƎ?g>b& Еr(`>H$C&N fI j}y7x+Xe ƕZק*#J @ qS*n9{y{aR_'R+P_W%_a<*)p8  7@z!P@ȩBU\Ib}>y\Ir]ىE!B%?3!  Q(«암.,=XU{-{x[űQ>Wٸ)m, N^&)GAN?I $+΢tZW!*kI~]yCkez2f];vbyZVĂ xZkċ694 mj {(W&7ʒU%PiT#xY)aյ~<7P-1{hWSݠ佨j%c.lőc+w·-iR{} ?Sw^,f.UJ=,u*?soTYĒ5߭H zycPܴ;m YڟE!w#"^?Bьz ^OZ<9nc3!HPIT٧^"a[ң-#|rH%DBEB . ` UIU/@'%1_3/XEZG.2w*ىvK;J寒B 9`kعС Z ;e#pMMہ yCHhoq "z_!Z2p5g$pt IܠhKEdn$`@&$E]U8D2uZL\WKXYi 乽aKIRIE!FNʑAX+Q<O@: 8p#R`Zs"/e?b7?e 9Va%; <*&P>P,r F_A+\7=&CcUM?T = ޫJbtU\l/`>*>%PnTS4b#']@b`Q7XzIiݙle.Pr>jQ嗺& uUƞ}T(=- x*yXlAш( >*SD:3Dt"1~MYԻΟٓr1%'&ߝdޖzO@ D# <?!S8,X Q8tM)!N<VjU1VtGq>[G]!O;X\= I=6w筐A SV-N BYlZX,>RUK}}<5X,cͻ I פ'@q1"0=@?vY)0͊]`2KEptg.G, >cao?iy< Ho)߷ПЈ%@& ^pc;xP`#eEj/0 罭VnF7ԟ57''c!Hnr/TX-hdPS !0mN9d؂9M3:Sjm#@>Пc"`:Px21rI|I8j ۹ y1: %IBSLR7yBe|C_U=Ԙ. , N23X]B1c]?Y|oۂQ{eѕwlMOO(Ϣ+zuG?l%ǵ!53@Y޲Ap#>xEԺ}'sP@{ c mؔ.'@MVjz QR2VƓsBPr |#Q!d 0Vgc_]3H#hC`LcCw3! 'n d ȏ .DDjO)j)5x-|69ĵPnz,TxF\3!"C8цS޴2ާ t! ꍝ #X(:DLZVZjgO8J4@* G&%u<3H4H!F {ЯuhN` #S$rz:ﯜd_X{l˾ټ.?iBlxwQQ -Zcst.D8ydn+7Q`!PP7rjP П ]p~  `2+ȼM(iemhD3+j _SyI6Qkl.2'{<^C; muOQvB,]Ai؎E.T4"[@y|@T.c^̅Eb۸_qs|K6(ҽE]t. F5a֬Y<:@;iG`7Ǽ| ) MԂ|B!N8^SE,h v/OGTb.g1׾yǣ2|Sa̠{_Jq4XzNA"jnYk6__7&Uw^25 ɚQ7d+q0\INؼmۺܞvhxx/j=/G\$+c'~ug$/ Ƒ1&#0K Jb5z(!9U6θ8:a A1־CS6AJ [׵D_Q ${[X.NYIT H0%aã!Ol'1|é3 ⧐Dg)oX?+u$'+QT+TXl^qM%]#ϲ#gႱVp2v[(ڂFG U<#g%q<  fA߫ׯʚПơZPJ~Tl)-Q ?+.+w=(IJ뮤K!owYy\) C[!]IJ @KQm1B%aYN 8_Ðd&B:''@=2 k-j2A!ϟ)e۟Fǎf,C$;,YDʙNݧ{2{C @Da3C2^668@6fw?ӝ$bǑ3';/`Gq‚1 q"`ܐ+"X+M%~ y5)B-.YxsBxa pHYs+/IDATxy|T罵2ٷ$ $E`7Eְm qF(WQP 1 +*X.mSVw̙̒3#ϝ dgW @@@@@@@@@@@@@ ׄ1]S}2cK̍16;E*[Tj==cJ!um:S%3xsD/آ`5ZoNDAo-, '% d @=dP~9SIgYE# g[̐SȚܕZ)pklMea b^Rܙ {#Jr);&YA_- zQawnR51VU}bz\դ)EmOx/ka嗅lkϦH4}.Hdvփ$Bii)wE?,ľDv\z6TkC;B Iy"){<`\H {f=zfﷰ zfDv?}a=ֶ%T2$&)_FfŗuGkͣkZfAΊXEEN 1dZLe= (9'7U.ʺ3Əoq4g;Jغ 0b V3TUU2x?`@+yS,LAXx; ~R ˶t0낽Pa REẾDyFQzYIieee%DFVc!4hC*}Y(r`1i` 嗖"Ewf7댧kBt-0FgQY rz Pp!ho#QCx<$H&Sۈ"{Ms&pGDPbRLsi\G]>`ndII />ʿv=V(`Dn{kVeV#taXC>Dߚ6a30\ ℾ}rp7ׇqʇ5 HZߺwisl= | ;z;Huy^":C|CvR.H"ȏ=,kD{\5(E!Xbkx*^T?;T;P-H5 @ g l+{anw 7PNqVd?~?ҤtP ['X6ne՛Y~(BfRHp{SJ)/\1;}͛(! EܰukXW;,!.r W.&5vBONs%"-$y|K~uq"hspAS8t 0 KI~}oOUR:!{.0Q/,<0cU7<Q< &_J!T^)r%fBHPC4Fa T !Q9L(Qn`g{1@zc F<{L*٪95 ca. |SE,#Խ. ț'ba;hUW8yaJh'88U`!_ysU:Ser+`f_DZœCTEaY٠v@J!(<)O.f+5f)< |˜QlNR,FnAo-Sk0T1\q3jD?FL/!_~ 2w )k(`gs Po%'` bo-gϲs7y}v-f-ޞd%o<<^|j1Rxa;$}Z}X~;%9kb;pu|]KY @_\J>ȏw!W3>uXt^Gyyž \2co)4dzXP_ߖP IQ<]DVaRӃGg/+sb~|DZo?Q>o^3hQ,Atf~2<#^">QsQ`[0SZd|ӕܯ:^e}w勖ޢVp2Ȥ!4#M`X]IEbJ0⁣Gk$1H>p|u)'~s֟G3O1v˓+- VY"K, *"u[ LpQ 6vbVU1M'7]&y +.#psFY]?mXGr8Lw [ci9<)(Ȥ!d@M})pDO_s0jn-ŌNA@ltEA |'ĊȽ/_+qÞM pe@(h/w2#ȄɠZ_kvy‘Kg  ( }c8nidt ,D`I(*# Uϟ-Id!3}8!&@J=D/6s`ff%{ؒ<7b,\ |׆ ;Y.\ub!@;W fL#Dp62?rxV0[]f(|>Ɂbv,G~QP8HQL1+X "+,ԠPcN?pl+`l+r5-0`pE V)V?F| j ߴgN@ux$o)7p^r^:ՙplVKxx-1`n{3 X,uO`V|vngڽ@y6w!*_ x\V~=u#SR5=M=Y-HtY9L5^=YsB=+jS8 X,~{e vw@Ba /g7}:{кa pHYs+IDATx]ktTUb u{3 y(A "[h8Q[PA"iטiv5WZ{}ιMc/Soﳫm>-}7M7A@&M:4thС C@&M:4thС C@&M:4thС C@&M:4thС C "J h ~7퍏XГ`ǵA𳻷 ؟;7zAv;5 |/"nC@Ju0 2`Ǎu =_Mx0 Z` w~]ʰe4RVVq ve%@h9j6@QϏeTuP϶ld8Kގgoϧud0MF wAl@:V V' 2X]hP4&&; Hrh9,ٺzȠ?hK֗=VC"nM7{ 4 3iP=v)vS%| y~|Ft ޣ%d^%Qc(S4T:II ppq$,: 9nv9Sm[ y S.%Q r L=Io_fRhAR[Ǒ0 aXoV>ŵ3*AfrH "M~E_uD>rANVIH7ܸza_RR?x>i&CA1"Qo nM IVz(C7~*,]v=9#:"$}G$FͱJ2B\5,ҐhD sla9Rĕxq&8 d;_{)_9ޕ=2$XۓL qѫz栀 N;z)s'pcr)@'64Pk`xW>Ói~\j!Pg?qW,JpU(-SE{1~P$w!A\qLL/<%3BLHXeRrBUPB`(^JUrWp2}c=[a;x;*s eg(F=t*ӫ&(^iNva$>R>Q*v,]t!BʎI&Q ~&NsϕP(ĄAZ0͑ Ɠg+%=itM($;{xV1))lRB["7Df60V*B2 ­Pl5|P}\ĵӔ髂b1żCu ?a<飼ؤ݅j+} -MF 7t剠-Ǿ/1{ C.(2XIW& c\},PR5T7UuHHUu}<[Gx$DE3E4 9_'<ƺԦn0)FP υRұ*l1QײcfY-K Q=K ɠ$@q12N$S,*f9SN3}Jb:|DP;D;*i 1*|gJ)_g6\xuK2/ԡ\..iw(öpU<0-E,IBX],Q 0v:DlRͮ6 cDA fhHךP )Ԣ]Jm+btm}oO۪;ϙ1rz\s r mEw'Y0I4PEaaHE5 i'iexIELEPD(sUgAlЖ뇦,r-?b͵a1:>>-[ @Vv;+^cfXIhXt 4ISX4 fL {T!%RWt MX*dJA$^P.G./Y.q8]?'$\'@pT.i=!Sum=Df  ,a8'4)E)O Rb )|)$};^M5q,&*1X&q}8Lq(Ž+ŴnQrʍbo>M~ͻyUa񖭉D'0aLO>˿.oj1 hBñF4LdLz&H.`"3Ic֩J XtfӔKt(ǐshB:>C^ 0}mw:6RR>6|pٜP`d2 y#K=b$"/x}6~s؃\*d_.2SMi }}'il@C$_jZ>7V>n.*/q7p^xKVP@D U$>daS!H2Ҥe.ӷ 5mIh+_~PFKT]T)ԧ -:J'Lk`U[(jF2P(;A ģ+u+ZI݈If#=Czysr E an2&@B *q►95S 3pNar(0M"PFG4*Hg5lE"`Aۓh0}&9] [^hLսÅq P)? )W)"IOכxtf(uE߭A=~[Z( 4?IѿF ey0!7:yΩϺ U9W YP;Nj2".#,Af>%16g#YR3iKd@H6^p zb[L*~o@X_/&Bn6M?Nz%f 9j,e0(;&w eqE?Q$/*U72HM`D %iҘ -ڥ#Wՙ'.z N r 򸘍rɤh< Ԅ*نR\ HKk'׹>L BwJid8X~1O}#nײxDI(}ԪLKqFv# 9*.C [ܱf$^;Y.OP4l%_TmgZO=ߏ)N Aܝ@0@a!by5xMݥ!/* Q>$Ԁ=T}HDzekr<Vugkqsh񒘐t&1:פL">S$v#B 8o_ 3i-Zґ#đ0>/63+D2rȽ%v*觟>|*5Z\ Mb>I2Ges&,O-%d T ;uXg>\C,DX*rڸtM&b3J'cT58HT'|$oM<^9!()ZVAw'(ŮߢBG{ěj|*6'fA{/Tt/@?c5N1Tڔ9EpρaW_4&zN'Oxt_ Zl-}cvOLh=_c''PGQ F雠 C@&M:4thС C@&M:4thС C@&M:4thС C@&M:4t?P PIENDB`pybik-3.0/data/ui/thumbnails/Brick-4x4x4.png0000644000175000017500000003240613137372556021006 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+4IDATx}wT/ewf{-,MTDzK5-D5`Ol*4 !5&jĘ|s̝~gvVݝs<<ߧ[p_/"tB_SvdWLvh|K贎EQQ(..@@)$mhGud9٣te6*2y`우nSԇBQ@n"r1N6:hZx Z廠Apm8w'xXj.'IB tw/f'18HDa00K?^B.lp\U۹sg1mEB2tp2١z]{u36uOBx-1U )$@ƿVA"sdd^'2:0*2'Imf:}K&Z >O;]]Y?MM%~Ba4z\zP]I;Eii(++c`H#S1K68"YUإUe2y\uxBw HPP_FUp D2 ,+JI;&퀘$ Fh%~/wz \h.@sxMz*REc0_pA$6Y JQQQ"# ycA*qqt% i E ].CXG.R_M"ļ DUjp,@Z `EaSShL4c^6v`0'w/?vM3Em/sd.#p^']29gB 3" }XAli'jS{膭J.CB!vq9цlNކX<;k%l $_TUUgBMBNOlׇ8"|' fzڞ]=Dn.xϸO@;i@VQ BX,k_#9,u*CT0MO)ĥMbT p-|Ei\Isjqb cakJZ_nIɖ=\O' [B0(vǃ *wD{]2[h?. ) Ofҥ Y4pozWQE/׊c6_z j[T2VǩN.t˙7 XJdH (|'@=&ѽv}K DoB=X;AxwD2~bϭ5s}ԉ}OԮ 2nZRmZJc ;r?"7PR7$DsNx6C۔ܫ& 1LгgO/4\U-f5.'N{N' b=[ DYorz%; `@`e%}aEUG>BLT1Yt%p`2Z[S`"| c;g O]ݻw{fMVfHv*|y5w5owWvnnoÆIP2Ti.NV>`V,sNl !mt=666`pt=yLE`]v+v%D2^z1uhuSi!~<*|W+8`S^0ݏTʪ@d/৓ 8r hŖ<C}&d h(!T5 E m w!y,FT>}ygqZB,Ca{Xa%mPLU0T1{_C0O;i9G`S^U'<ɽl 6 SŨxBU> D5!C@D{\OTۅ7r mx*w{Ӧ&d$1]I**2HdwW[n p>]D"|X_wIb>YÛ+DAPW>R/-nZfU?6Bkt`os8D¦-7l_ú@ Qu4+\1C<ǚӿx@!lb¹g- _/@sAAp`*IQ$2}MwM\V,BuI K'xE}eͺ L U 8]o*0茞&!ڴXCy$&p"0t%O`@t ߿޷I)DN9϶&\( 8"%C\B|/GO UuuATלy7mD_NA@EB0#SBCU+W1*%|{o|E:x0rq w;OTi:B'%}g+3-NmT*-Æ_l$ʮ߭ [RdRoqŽk0\c y I)4b,󦐍U}~{*^6uוE4Es]x)|YmD c,;~H Et,/wCBI` x܄H |j{=rQ0ct9ӷkź능=+E.fnM)i`YNx%F42SO$S^ Y>ܱglK[x73 7GT〈% rjkCܼN Ǿauߺ!zu1Q%onrG|'kVBGa`÷ @ & ]< iw\3_#zk#L=25P MIǺbaH")# 2a}JȐ\`5fBǗ0I}d{T:J^q#g(;?nOm]0e/q~ _&:G5þ4wd[$*;aO%3FU @aJh3%/r58(p&Z)0Wrv;_L4>!0єv·\:T "֯C>;`d?V?bׄ?V%OW. ,˝U"_n9 0Zf5֐ P4PBt)@t=)UlB +>͒?ι Z:,E%uO6@# SV0l0~|֍+⿭%|nE3}etX?TjM͡(2˝5VdC|!(hݗW##As]hW1Ey_Ӣ܉Cı_~\Cr|Es{gH(·|VPl0 hGd] 6*3@hf~Y1loLI^eNJ;it),0rĒGؤ UԭǺM՟]'.{`0q0`l`îe ^}ZqӷjŰ.yr:ě[+ℏum@Y^ 0YCh ĚM/D'V?h3 -|t-r!`r|`IKU⃗*ℏu`7><=޳vY\;Y}M@Pt{SwM`|IJG#g(S 8ťᛪla`2qljjXOw7yeCiʕG̸Dzb #b|+Q H hqDmx{;dk?ed@C~DwO`xUnĄ/j鴣D|y, 82Zv$okXo>W.†^k]THZO_Ո6*`b$r 0|oX >&$~9<_Po.+&)ݣ:#0YX_%kD.t 's쀘v'H;]Z 2"E"278+̼@`ɚ5JO3 .'U=AO:Mi K-WTi' sO)|w_217amAB5+oY+ M:vHC/WWG,N\9EW3509 AZ0dh1XkǺG`w; _3~Iiwt^ -vXF2(9+"" *f`BDD:g kO'XOo#Z@R4' h2Q0HRJVyDrjǰ-ÿ.[}N*1ċ1l4Y&y7~,""ȉ"C5RmnxP7AFPwu'R:#ܛhLҪ~~V(tAYn}]i*Ar@ 4|t/R7"g-Yp;^K2i gD?-=2'*캋|mخ)KIL6 }Szu 2 ?63) MfrDd)IN6!. Gk4${Fkha < mo$nKvХ>> X-(N]26+m|$,jSG\ w&BG\+H|rt3`-:)t e nfХ 9Fyh5( @O'P&S: QLCG·jX /Ŭ>KXJZeçC,K>u&*EY5"d,>*^*0.&n4`Op @q`i}LWĮ:~L- !@ˮ%QA`@&p=NJ?;*ZsP|*D%ĺJCV(/!.1 QO=r,Qml eb`^o471*g3xDM2< ~ |lN0s,Ič' ?-qc,‡ҼJyſᮈ(%.<_1'YQ8tтh pǴ~PӃX!S"WM \ƙ7pM5S/B`zBb @fw5LXMp{dJ+Y  q )ԛW^CIkբ+z68eC% |Z9;i3Mv'u@н}LIB'X3+7$ hYAV ?BgpT5pݲ/o0fG> y9lgEol>ƾ͛,譪_\*mBV >N.vNiF=y@X phJpr$ U_G`(r#?x`&iܲ#OW'8M%y * ɫUqZ=t@hr K'n,Y @1Htgp'Iw*Zj& QD $\'0!hvIzEDhk@DC&I %W b- [{y*XwXE iȱ6ShI dAp 62˪ k2 Nj| T` rAT3tE# R _7dwl?w>8qG?UAF+>Mw ]` l#  RH `Z\[0L H`-O+|Z>&QV9-eh-Z>+ ${K'e'o&`p(cjGpVpjd~ɡM;;;'wEw$8:GTX0L5(wџM$t12ĭ20"]cNk،Skr˷'^ D5F2I(B_BF, 59˖JQSn!}d^F7tԴCOjjPMdDRrL3Z!zy HEI PTR-`s=^RǑ;'EKeJ+)nDh") :{[+đ+sۯnvu38Soc8/wcu[_ZuiIg =#X?t&fBhzlVT&~R0Tn*s 3UW%82VpUEyUBT0rp#ENq4oeLHkWh6llʘ@#;9C7:A}p0-f&wcru}! %J 'Tugp߫e`# lp㍨q] ` Af32@IR)l $~& 鄎^F R8|kU$,}%ы_$wGѯb%_g\%0qz۽Uys@dW< HJjⅹ7(_U7rVMCqI|pA2G^[nZ-`W%ٜ &4Nq(ZB3iwspM J얦3)220d ^7+; l^UCBG8oEz@8衮ӏ?SFxr@ 6ٜ &^&)n\)RydyL#4f:Kc@?I.|Hu S~ @P'7m1g7 :j_N4>a-չ%+wDv6~Ht5qQML1tG,^t~%+zx b&ZtC*đX92NW &ޯ+>ɣ}n!hCKen|V|AB|q(^ 38)4 pz9wgWF@n4 K'i; F RdyAt|oD /zH`#w2O$y_>#{P"wjňnZ.[+ &T wO%`gluO?Mz`bk&l5dAeN/d @"sUHhB'և;hsޯ;WC>{Kjǚ'ׄ,vbg֊w^s[hIa*JΔ-gh=YZ!!k;9.Ēa{HEڝ$& `@_* ;x#U7+>=6jמ*/[d ?lmCFrJb;s}!~c(`6WHN" b~8ɓk#EYB0 d- :sDz=U.<""W(՟3 mr\BdJ%+9M9gs>iEIC0Ȼ'] QD uҬu7)FFDžzi:~Z\/J X4rY`zU|27I DǶ ͱ' 4S@É.]N ' -Ap/#^">1=<Np(OAY$R@՟@ҸYWxCV9WaHEtB$@xT 1ߙi'`#%)5 g4Yb?#.6o } "=⢙~KS9̧{c uV :~LvW+J=2_; vU> CnPtD7PJ;q2AQc$0 hLN@%d=p`J#t۽NFG p&=I'oZZ͠׭/p4$:8-\p!UD#0 tJLIcޜK8?2Ãxy`7V2%r@` G0hX/Wr8켵ߏAo27( {T?E?x, Ǝؐ+;\ DI2 '2g 9@W,ɽ%T慊[h)$ᣬ[\$WGm(((FAWхr<@fW|a$ "iԅ$\7X/I: gg}. E?8L(bPO˸E~I6 +o8ZatUD2%(7:X"Њ4%S k3Y͎#xlFE8l{1]T^TBEPscj.\,CEsU$v c CUNY(r f^|nG"?rimb}8wh,lޭo.P)|Z۲ Q=Tc@-Qw)!TT#%\RVzB!ɍT DR dlAiyx=dHe_S ])m~׫8wW}6~2FQy`=W7\ʆ#z#C91I+qE'enQ<|Vdi[d B%nȢ삖LQ9챛ñD uH&ةQdE < Bf 6IID JmF%9i,H .\I5x4 LD82 d^KƠ'&+Fssnl> VBxֆGk8-1oخ)w;d !RI(ݤj 8Hfu@ A0JV)&gp瓝U56Wb֔c +{Q,ً ka 8~ᔥcP ..K ag!zg v>q]ggoo'L$SEc@ 41VmYc Px~(D6V* 2 i Ֆ2l\oHwZXsxx ayC[zh)r1 U([~?y.$5x~>@IUD܎҂N`xoJZv ' _| cLHK&FH5D H(,a7+D@"\5Flt;'|ﭒa琓=;~_8Xˊf 9DgTQYL~vP= \Wer&+SBޯ>^Q@zCZq8ĄR&˜QPE(guG@&e/֠9K8#/0#7ǞͪU qq^2aLBö*h wCŊ0V}"g]r6Vr<^;R<~im=T/^U`ǎ;,<7cF6}`F<XݯxQd]<RA>B_k?zL^S2}PRIa pHYs+yIDATxwTT׾/y}z3c&5M&,FEcH1%.1"2{}gs[3Z58u{>= &N@000000000000000000QlBJG{W{fSt146"ȔlDDi(捳gMJ`^WJIMJ??(ƀ,蘘B;Wm7R37ՕݩI&YouA7~qo2Ц2Kf w{y66 4f)62V1[,w6 #L8`6,HcbFHMg޵ 7^߰ oy2JaK32roN\ ܗc+4ț}{3/=iBo.h?2B'G@fVV^ZZrebAߙ]V61(,߷/p&`ņ)_wGKJi+֬_̫`>4 GOk2$_NZǍ7`0pׯO͛7f͚Q-e˖߭Zm۶6m[oEo&I&ԨQ#[.լYUF|Q^^^\x^O@6+5[$(ϟ'{E,W|6̆ fX17'+|(s=ӕ{QW/%zR ?88>Xu.uPx.{WJ_ sV=@PzbO:eSvB-dbѿRf[ʾ`L'b0&(C-Ç{~Rh,`3p~.N|Xh@Y-eTÇ5㏩^z :T ,6;cCDE_/:-BtX".$˺@)lر)ӧOG—n;^l%ߪ-Gɉ]ssW%Tv82xw^Ug沗8{, gWc[H̯j/?ߨz!< Gpd9˗/|x]]vQPP\aO|Z[C]iuZՕ^+N^.Ts͛g9u 2VMNNW$|V աٰ;}3؈oia#xC|Ykr,lwZܿ;[l˲()BC 6u/*a3'ǗGeOO E &ʡ(SLQ;w hH/F)'~F)I_UA}/5j=y.G^x6!яVNa BgW3] L_tIScǎqa0AȰ ޷^Gy},ߕkc8&IST@T___>|/^{y<ȉQ=^I Fz@<#Äڑϯ~A H;#^uw>c bFp.vZA&Y٪^xѣGS9_~%7)+jJEQΞT-fo44;Y`v횴|R K/[`2DHuN>El^O&ަU),XA ]{Ž5G4Zρ<l֜9BU|#; 0@yJVi]lI˔ RØ$Jv8*-&oJq=:PPNk' طow[&e ab@ѷo_+p^FARSSzA\MXpHs&*u;v^tvz@HU;x!~c86mʒMIIW H^֩SzUd҇BR>ck븸(υx tJ<Ž:Mhf!>l8Y/e;rr2,|< !֭2%x/Bh\KG ?EO}fD(صNQ)v6| 쉜ځ@~8 /ğ8ȗ5mel.>tt@9ŻwSl]x1>"h:^=\mwSz \hXbh6hۿ5QP^vOelEfD 7.ƏŊt3ĆF;صN}j[3}AqDRݕ/&z$9v-Sp(AA;­wԉ xc݊aX=;mpTSV#׎"1 d-pΡlY->~^ @8XK؁*eޖM#jAy??.V ޼/6#N^UGn8A-U2d jYC9s]bG|5l2jvn8@:q|9QĻ%9!x$Jb71A3W89l;C1^0Fwڮb| lpɨ-I| +p Zˍa0wwv\X\BZPfy. ^is!?c<Z u?HǼyrM {Zn4CTNxՋL 1-_+@ދWʒaH{L2F~u^?[#8}#zK,V$(g3oIrǎo! Q! amƟ& "Z =R&}ߗ;-:>s07qy۳* =U`i#WDgǯp:~].˶[ZJ!U,=.tdLćmY??Occut7>8(]Pv҅tu=r/V0J8I|gWK&>U9`)'`C)>$X;;QPvٓl͛5k֬Q'W~ {);shvpj000000000000q$ UB?ؼmeIENDB`pybik-3.0/data/ui/thumbnails/Brick-8x1x5.png0000644000175000017500000001377613137372572021017 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+IDATx]ytU?PURk*Ke  "BDDn:AVmnꨨM3 fd_ާmɴޓ3̙Ş7*(jt'P;կ޽~K?0 f L00a`! C& L00a`! C& L00a`! C& L00a`! C& L0ڞ,vwozU15!QWs}@qgw$/7d @v'# XŐ"_]~3 %A CEq]nR!.{ix}p:D!{I1V` _Nra~ bī 8/0G q YN7>~< Cr%\ 3(%0ibRB6e>tt trWPip wclLB{81@|ҍ8}n@|]"yeYb#XCĽKd x3X ِs6̾c-w^t:8&~@86 4jǥyPs႗y-h3Z@nKVY ء{ % F@Gduokp1}Z%ؽrgdh <4QmG?,k#|k(n2YN6D/s@- ~=!|Z#@I,ZG)Ʋ&溔XDjI$] Urbx6j48Zi$_Mb)_u8?/5ܞRdJq~, $H ҽ`QU 6R0YZﰹdi߷fEL9#EodUy=^cE&kϼN.AX3AZ Yt;O@P-`n?ټ/b,aD1FٙPq&k3K0N"?ҖLB܉\p0$H!$; KZ>5Ѷ43:~@RX" @ M!wA|K=Kf/źojϚdꆝڞa˰۱#Q m-~V=$T1c^4|׀dL9uO"*ss(7!x"a2TY[ ?O(Cysa:3,+XSM_;h.s'_ hК)Kl0U|@'m0{!eQyɊbxyI[  K~Y=iUyQlIu5tCuŶKbԙhO5ua=i"qeq[ls+Fz1$ #pf1+|d%r~Nd{ G{yJR?U}T*kAPsqadL%QZUyzGȶ#Ts+UħBE/n|&gEGtimn?XLeʩ eRHY|>5Iv=,k:p e=b^CL6@ ,XyTڝ'3T󴟸 sijN&j-YW'u*_Mr{b`;Տ MJw {f:txƕ$Mx4[2 Y̳s@)YPq'vgSGas~*iJƹ9f2JV:H,t:(e}4E:`)ٖ`48cqTw!,J"N$_iqZ458dSrK,wv i;HlFnWC#:Mk)d +r9i"ĺ`F`a.Q뮞}8Ik v\K=Epp'?9265TI\R8\uxCjxvX0(Ix3ǿO5A rŊb,< &6"Ax!@pS+2G inI}V2EMXhnBj%g us =6UHTzwތwnu Ò$OuZy?_ܑ- s=n 8D.9Jn~%0X@ʝ"PStl/hδSm`;Rߩ)2}m ݶB z tl*Ld೔{tӉ?lS9TPڼ!wiKFW3SDNKArѓ5` s:찓'uR*>:f9wjJT<$ 5zyŗ|6s D#`0z_uKD?gW<<$<i'ڲ6(XɻlQT;q{]'8|ዪ^=  \ nkKAx0W-ّ(yxG%̸%8:/ lGWihՕ4\,P6%Zl:Q*V?y?&^Mu@>_wL3[HNƯD P܏؛qxSwp4r;Vs54~?A,挕  ܤ*Ơ_Y24Xy: m?+}}+Nǭx`^; O"1|W:Ӫ^7Ep]<8]zn}kOH $X_v >a~ء-x+A,ZÍSIy\ xb.' Hk/*W?n.jilZ"5l]rYUKFNJDӕ,L\E.r-w'2( <_у"W]eULbb2 r*DY*7+8ME6 IJ{SN2wok7%m|'MTUb-\h)I9OqoF 9~8Oux}i<$'/VZbɍ⧻b{^+˼AKUjiXZo"&%TB pDh%??WQ^O{n٦ <ہ]RD8r$o鮣_:iXuKWz J SVԲ{cqWhbџC.%d,M%UJqYufBjU^܁Ivp<q;e*)ea#MeweǼ`+Ɔrڼ-+c?[B ?/Iߕ|Y; + )\`?p<cʚ"lNyIdKQ PO@AmqvPT/]3-_V4t}\]!Ua T)Æ$@uLNz .8+jEYfgm9Ǿim'X2KJ6s>k:;g sY)bI|u||^A6FPΎϠ - <,`&h]* T+ʼN2+CAi?㟎*bvpd;\dC! օX"w I;|LMv%T!Igz ` i1$wUw J3w!nbeAM60aV Ɠ)H]/MsMH]s[2$X\|N`G^T γdi T4PNS0_Eq\n| p"ܒXI_n$I dI9:!"@a1}[|qV!_BQ*W puY!S*N'ΰCx\1s[bz x] QYIpӈZ U_I ƒ*Q$D=D8(ayь2-O2(p9Y*~iԻ">%|b]:[R*Vgy@e*u|$WsnVT&j,Z}S|E*$$@ʒRC'A^WTc%bM:G^$^xiSQ{$g3mEAĨ^}B}C?+U*[SʭWw~s*T ~`'{`?a>m~ *,*4&/-;_&7kUZ6%a+* ply`?Œgw. @t\ M,3``! C& L00a`! C& L00a`! C& L00a`! C&.rIENDB`pybik-3.0/data/ui/thumbnails/Brick-9x3x9.png0000644000175000017500000002720313137372606021012 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+.5IDATx}gTUyAA:t Ҡ%$IИf JPPFgt8<{y΄;wfݻeݫv]~a;Og885 N.RJuqk.V wTO `H8;ځ4~؇׫]O!p@pgsHM2> /quU:W|1w#W @QK~xu5z7u?uj5A,] mDmk.2Og hG`4j:kvx\s|Gp .q[Ӹ2 \Spnppډvn\?/@7#5$B."'P=]d;n\-AWDfm݋Ņy|9 A 0`p9ja0 cחaP$24?Ua`{񧻛Y$yP/\ 0=ox]nPo:CЗ/h?"S>Ƽ ?oO盈`g 5|}+.Kjwmzr%5on*oIv0IͿaB9^#3!>*h';A.y1,09P@0_a |F<ֽu=\ I>tJvvu ia3?fj܏Ox2GGSaw hsl 9Xv{L8Bjms.n$2ɧi]0v̏t|b`/N65*͇k&b2ۋAА*E4p5 x'!21GE0(sy.`2&J LCگDq:IPU{( T7Xz2+HJ Cϰ0Gϧ tA '㯆&8ƨte U6{&@eOA&a!uC;~ѵP/7!]LR30Tsgg0*>(MbFӌQv" L c.^)gwqguU5]aLSӍt0@$n>yH>]P㏙~ Sk=.)T#)T0T<=@f]4>m^M1'wMҨ0ɵ6`.9gET^pdL&Dɧ*.?>ٰy,QoNcy2Lӏq0t|7`x5*ݚ&{Y`2 !(Lz*81ۜ4ZI&yq7 rѰ j"Eh@z5.[l%λܲe+iJx.qz'],ϬcsX$99>h0h0&1@GuKaRPHE&Wmci+]2vs) _*b֎>j,(v0Z#R1`vn3B0ht|1 ;Xbzaju34ш5Nສ_eшcﷱKǁ)m-y]^9Rvs~uSVх4N:m~ \:BPr$^,$!~t FϰHeR3}G[aC6Z~@6`(2hp0LB]Q)X1UeOgXw NwH^kWAd/K Cl-9.gaG5 ~A@gڒAd >3ֶ.54@9[b#*LXʨ O~);3 0"MX]aK$ߛXh?/::'U"cD:*d. Vp?0ΞT=o>ecX\ч@_y}c%wI|49?aRzgaH1,>)F"׽}X r7>8]DwL<`5{MW1ha G{Ky46V`j&בQdW!GaJTOJGB E7}fц¿\8K,G5 xO,кN|t'iƜ05N_` 07d.005KQc؉%A]:#dCV"H4[p-E* wϯ4辶Ӛ]j`RP?PI~8~k`>,ק#k>}1^ƀNZL^Dl|*,ɟZqqyGYňS 0/ߚv@hBF#hDaAEp:Rֈca,T%"]jm1Hݵ{J% _ip< U.FG#Dx-1`ιC萐jى /3^5LӷSٸO @qwD#}!}~t"gaMXlXLDׂs5!]j̈xO9_TP;v5)yi^0R4E\ ߒ8鐚I5.~d;K8P'64I#0PLD3)wfr`ΛM\pQ80VLsҨq:ncce\D2dMH ի+>y՞]7o:oҿ'l$CZmR_u.}KŘfdk9$ce`8ϯǥ¢s ?sP2L|3R-FG A"8y_^uweY dM[njǓ>Yvbi( apmX=&Jk&0&sO@L ܈ +^WxN4Eyi@R}<{>{/⧣r/-_p8~^E I k@:`}m`y@7(~XvIm SP{7dLgKʙǰ{/@*q~ bWS0/PԆ $ ҾMjVBn82OI[2Eq,c㬢VPU<~t!Ӏ`-Ԣ޸.>FR{".g7beOwz{ U2R5l_2#"؝ 5zRXw4¼҉ޏ>&u =?g ʛf>J|ɐ<,:Ч_̰9]2w0 ӫh&~:9ZR&vtLp%La%zیbm x- TMhۈ1]K=anٛ1aYTu+mu:ƈ9ȯ33[j0bϪY t7 aJ 0.+5M;pL;7yY yDKMNsUA/5,`ݓyZs  j1nN)# J@QVCM3УIKݫH>!mLO I  E0vQm}*W,rwИfX&e@_C2~fdRy@v+AF!s](Q'p5J|G CIb2|&42]"vH$E n@8(x})-k3ͻzVxt}66. ?;_ ?dv>Yдozy]]rH04_;Zܥ(C&1DdWR,q6tkc7/uAJ] aŎɁo;Fzٟ}yiIs-9>YXD(IRvbP&0'#b|fwƥ;bO="V]YVwzrQb kd/x@.0|ؤT ;RK;Lwe@c¢ԔYŌtTn.\ugq0,³Vb=K\ fa+X)4oO\&/ЖfxL6p.X%m|ߜOErQ 6L & >>Nu=#)nn2Y`+KtцꟵqr2x8Rr..&b{TʏvEivQ[ژ~c遵Oڹ\!$úfƠ܉6?|&1 T` 5nیFxlU-OQ/N,|90wJH#2}c׷@bF& q_؛/;&u>0[@wrLr>ty73*O`'"8ʄnc_OJoPNτ!"۲ɿs1h$g$FXt qUo.WOܕ^| _R_MWooU< *Rpo@D*8@>x'B_qܥ4)Tͦ<[4«~xxf+KGJd2+Lh?f+'Ǘ#֙t/g`B S]Zf~GW/<"2>K ׃(`#ԩ]g\;c[{NQZʼ*<ƯFhXfC"Hd q,~ܣ;} 8df=a,GxhbybdV} ߼T y(~87*^X" {#V`c Q&J }SݩE>VVN3 oUei8]ԇGoYCOڏ^ #&s v)D$h"oɭE.CSYO3ښbcg1H(x?8)um蹨=h!`4cF >CfdtsZ2ӈ>bO,*yD8tc{Doϟ Uq/w \"#pf[9]y PY7kC'jDS@_0D-u<;qbѠt)gǐ2HVhHDD_"@t#xqbVkk{!E@ЀW{vO/=w)A>w< aP8)l>AJ wyr$̜X Sl%.O `"aElB~Z_U(hxFş?[^`E4ܤ\0 aI0(ɗF%/&_JSM[&bԄO* TpsKAm2I}m j0Xp֤P[\v{ دWb߿?"jj)tPp1ovuˈ޸H 0 `MKbHh(BBb9o?t{113E`}~]OK~V0ɮn \-7چ1=)OڱQ~>[߫fN ߾S$u{>OkK zC{ E>فQ%.A@@w}Fפ@taY@g%:Y^ix0;oj[t@S?Lqj.6LsӠ y7yq9cik2!?ۭj(p g %svcǔrz J @?2 Z?LF2( q LAn&O2c4b4`Gy׿nN j/>и L? .eETC1^Ϙ6wVo/R#w$Ԗ{Ԡ]G~Z"m% Uwo\_wg'їs8R#xdynvиk .>ȯU:V11TL^Y5`HH%^1˝˅ Dwߣ샯? 9>p9Tod`R9+EIL4`±fϏ"go\Ji}'Bxh ޞ$CAϫO NAt||8BWBE&r^g*!jQE@N'7<A 1C`AHÕ,wj؈>/HH N6[gY.az7ߓ/Q/>-޳_\?4k]"d(_V2jޣKE"҅H!i3`(!CfJ#d4T$Q5VXXT=3( ;ݸ).]X#+I^7{I3ţ.p3V9T|Q.< J Մ~ G|r&F[,fJ4<F-k t(ҡ?wK19 + 뮏o.V'ß`oLQD8d*]{a#]`9Y l?L@B+= vx}V<.r[DHn<&)\_>caݲ&{BQ؉T"h|jHF3.X?8-Sʀ3 TkO6iVkQυq@[qlc7?nRȤWp=#BIAT0s_bq XeWOn1>3}OWX;s7 *9;J FiWSD(9:'`Uΐ[",(ʒl?~^&wI ;CO w>2֝/㟍 \dNs–5-uPQ@U:kO+e|9OY.F?a e:[ 㱉f|j=Ei@rBc'lJs۷ioWy,V+1!(:͈T>7=w\'mаE_a$i;+F$kp^HB# 2DZ pM<]<]Z3B8ӱY@"QW[myB@ : OeW?gO c vYm}A"ɞZn!-|%ɩ#wD- ~rIg>CJ= t+|&䩊b$|<â_Wsm1=g4 H4!\ aeƗ)p[n@wy#aa24ٷhPH_L ムi{puLoǥkaTn?_ 0;=m>_(jAX%㫴`L#vY!zigP81s`ȕ\nP7VVB;;ctB/jrbyģx2[D$/TXx!xyߵKk)䤱49X@xhf +g)%LJD'Z!ZikP!X@}( _ C|3Ohq®DM9GS9r:O̗sCV<./Ҙ*dH'rxAgzZ$JAiFr[h}Y؋>= S@"NYہ!:E 9L}{Zoğ8p3܃)=Բ`Rj|l+`b0hzUxkl@[˖Rjkta~b[ ;V.wZQ440]C:)"5 i@D& R^A*JH2J25nyCEG}@?enϯ`yhV=0~.VpZ*~IB+Hzw1 3l`IZiaws{`.dA fD.ylۧoB~~4x|'=\L4DyF0A4ZÓ;3?!i]yCR`> E@ :Fj>oj!.30xy&D'"&*_B>?kd=OW[N~ʙeiTw[ ?}V.=nᖘ5)%NΗ7k}ec{Zܲ캂^ j,S@"*TWkt ߿%W-` ΰaTG5>Ebo>Uk*< El?K4cH7e}eMTs -|G+0|f}cOl^sN1O`c4%+l ,F)I+,2v,RbaZg`{?<,[^m7 ·{W[>>ruI9߲7{8g87ܒIENDB`pybik-3.0/data/ui/thumbnails/Brick-9x3x4.png0000644000175000017500000001612313137372605021003 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+IDATx]iUՕ)}X<$<828! Z(N`Bb`b@cbq,@Emؑ&keZ{uL's_zu_ٽBa{UW8=|kv,&XXf`5 k,YXf`5 k,YXf`5 k,YXf`5 kHfuTUriqw<$T9;eǵDau {usty N O;>pg0 : A. l0 NUϿfxoDP:੍m:].wʰPPBLϐç'/b=@2nD,:Hk >TP! 8r3%,]Xi0W G,&v8ϩ{2836 HC8$I\w|0S\wqJdZ]bvl/NhXY~a.Bөét".0C-epnL_;7vNvf\n!G+Ae%D6s} κ ǡv\_+d"a0  zo^ς6OR0F>~QOPS<&0e^)s>Ar6@Ba y`$U`ba&u3ο)FXƴo?p\o7?Gr+pjHi0>*0spbHq;H(A3T Ѩr=ZRW6T M쭀U@Ѿ Uu*+p"EĠQ/};Tة;X+5 X,pVaI{s5>>`xv:äk"i.Px0 #ew)p\==Tq3S1I3֊bMV U<"hj0y}&4)xa^WwCmsՌ!^D߄MCg`c_&Q%vr}5*VӑcJ*$E`R7ԙR0#vurnzcT9_6`M/?/R|S1W8:R_|!&?4><{IDh\ƵU`^"sFw޳ BS`:a>yك{l=2"Aӈwy@kC,ʎY,`I'< 8r.?׶+6|q ٫&6O9Q{p +H׏>8#O},*% x &qzn~ |7ۺOfQ|m{ n>씐oQd|6@`o\gZD?:5{q>U5P¢Cc<&5fۋ߽FԍY0b鶾cع-RMdGv'|iDB(5YP-05bM}a~΄>opA5]f-` 3|^`8 ni߱WJt%1ǑP#1pPyLJ^fOͣ U#'#pԓJ;):CkjJx@= s١z 9ua|o2b\3\u\µ p?M!su>'p#tL&յ+x~) p Pvý$ R<^`R<}o Yknv b/{ r/;Rj#2K])^Ǘ0@/Dשn\a?f'@ 0zxhd _h8b(LMsUreeʠzGWTiŽ&iZJw\.a>P:qׄ%0J@* uڊVȕ`f6w8ۂ؝GL3|(~84DDllOjeu&J ޟ]Cq5\"*8)9n6)b5=;0mv1U\>V=͟Ɏ\Gh$/ǺN ׂF8?LPBm)0b?Ln'_0+.4}]_ſ뿆 @qZ`AĽSZ p%ӜJuco`,}cz c+yAPr80ʨ'a8xӕ< PPA"UD;%\"l}3 p|e: 6QÍ{؈D_ }.N]b66y4z0TToּC-3}. (UW(uZyrY<F\1pf+IJ=H:,1`7; tahEfM>Bnn>`9sCx.vCz^f T ?d"oIo甃SQ=HUPot P1/ `VJ <զNF&<Ռy\^TȿU @zgO DfHb>Rĵ 2Zj yx\t̮"-yȈkMYH*Vl;L7Cff0^\4RN&V7~y)WU O9- 鑐*u\}7>qN P" FWQH"E`EahnJ ~0t2ULYkYq]ϏBn N<@gۢXy\(^X|hnWWhM!&|V yܻs<0ʃQD[L@fM Ek%l`s_Pg z1>,A@y)8 k+ּAu/ڇS=kf뉩ج*ueQ| @9 jQ8M(7_|RBWBfPz8V#~H_?YR $¡Fx& p`-Ü}Wr^P2& q*%)7LX+fݻ$uQ\ȱAp+^)y)NPQ2AbFB\3/BnOhCȻ`cylѴzxӈ4DZHsF5NTM= 9(+ˑ&3 H_5{ě+_߼Q%X( B/-|4Q =chXQ&Eƒ:EB NSscpUfDFpK(؃fеPd2ʬhH0O;?3( l##3Z5D;5`WzN K>7IDU UIJ&Tjd8ب4R9\5pRQ=E3#ת`\RwFy?ܩ8$<`5Rʑ]oZ+G孶G g&;jW1@LG = f:VBOsQS !ɱ{$frtTyJ8_&G5zİ洎W;KcE2 -ˆ%!hx#_6(,_:W~wZ~ &dQ縎ItfN@QȊZ'VCj-h`. BmGҺۈ( r߯ O&\FA$lXzL?,co_{ψ(k\y2ms4[/` 6ܬ+Fnd^Sb `أ{2PXTbf"vIs,fj@d2Y ,~hp{fjLPqH Uw[F]UrY8+*V4 ,JOvp:+>Щ!IDX"Ɉ>YTz$O~n0hOA6ƕ6?O#,VNi0LxaWl*vWʵ r버|U\z㻐w $ͺԢNVm1+GfB)͞6Vڠ!X&/xqNNQ,Kj;Ē@^($71Xa0|8tu Wj⥇KK *d^?iLH^?ց"rȯdg-O=xv'+x z= "%` nvN84^*X!QU#k1 p=PR A[RNU9?=7eӪb)w/pi*uȞJOn >"Pr3 HԈH)@#''%LH(S@A2*4Ǹ^b7 %oYL9+$ej[QM52aTH~r5Y=wjC]64Ö%;*wlmF3{xq."S͹p9HeEJ t)u_9UZղxvT7ec2f+e;6ϲ3E4/&+f]:3T6eD"P1wx:23VNנHU{C,NQ}\] ( ?Y GT(0|B! DzZ >;_+̅V0Bɶ}Nq@Nju0Q dE^#0Qҧ"TQJR]M+{ 7v'#߻D> ^ޭQxxcFijpFQGor+[ک$QEg,еSD%u`m8U;cr9@ pw䖫r}Vˊ~i ?ZsX!L@ B206Uw UX]IQbTPf{Ef(m)<7ґ|V 1M!م#ήEmcNȯ>XIɢ[k6=(}R|}]J[UJ6 %J+}YKM!`<济O")ᒠWMv;kPPkɃ/UɬaVʿC,w)M"'Wl~>J 6. kZYNf*2J8&ԩ'޹Cf. (D|{?~\B>1aTPs_N/GVvm\gu Mj$S%I7ULq5]i}~9_ɸѕG7_-}TT(uA.wDq+&H( ުUmey7; +%W9G=Vv`%]ţ t\`t6|kq|jj^(./?R*^ {ǿVX8+z<0Q%8R'sI߱BҶX 岯mzO +ܻZa 7PTz UG覺<.zY2'*o<3#+,Zyն)ɎQgKKWQ>I^9iЛs~9SYY"B'QA}rd7œ .Oupf@YqxM{~Гt89$Q0Ex}ٮ^=a9w V,Ցt9Bcs_yq #;앁ެ`͇{;ZaXtq#Ht:tecX ,YXf`5 k,YXf`5 k,YXf`5 k,YXGZc$LIENDB`pybik-3.0/data/ui/thumbnails/Brick-10x5x8.png0000644000175000017500000003052613137372630021062 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+1IDATx}wUչh"9{t.H&)QB0ƂĚXPFAGPbr$811_{o—rӓ{w=rR{s}޲7oE 9F@n9F@n9F@n9F@n9F@npnڳp&qAΘ!l_wg#/ϕMyGs`MN ϑ/HuiISA!34f򖑾| o?{{:]x̰pt9B5ܖ<-9Y $PG?/́Ҙn^V7t'{{8Aw`ׯ~CO'iH#tdp U?`8?#n<'mGӈ`K`ga[W``2 !0^0O3~7 Ul~ g_?H4U#>Ch} K5_F`@.v#`2pX"H{<=gD72[6 q0,w3{v: 5M0C04Ka  dѸƿ35 8K"x4p A1bF.~,vI1s+=y9:oT8 >Sp;p,t>LSwuKbw >U ?ci:e+ h&w+U& O`8&GDfuA?ߠҒ 3b b 'Aӗ !V;G( }"2CF1/uwXajwūO, Z߇?3dB r?>]w.Gp63er޽ +BR.Hl~R020à_P @f0<}0B F!05<qhxc&Bst+Bf!6: S4M=x?,`|.3yK`4>v {w+܉[0 "nkЀG!La>䮦08Ҹ0Đ(# mDt] F7$?x _8`Eb,J|6`Xf6>,"d VX0 }4hGv# g9ޟq!^y0s;?~a?Vfւ Es;Lpwxp): #O c OǎcWc1e6,+܉CFs ,‘mL*?d4B1M>hl!431ϫY5wNS괈-a,pPz,[0| Ɠ]%ؙ} qA@J?5ƘknƂa`Dۃ}>bθHPTϹhJ\iSij X,4K2lv Zmv9UɧSn@mE6x<\qrIN` &zxd70I1CX}5Ƣuv6Y`}>C0zH3J=ޯƸ׊6 x/ $]e4fu3d'R@F#Zx0-Als].pLhuʌ֑w|LӎpXIqOkȣ ׭d`L!41߰!#}:<鋭c.Ľ#z>Ƹ/ @w2ܿIwI0 ?]{^!"15`஠ڦkPAMʹsub7^H y_ dlfoy ιVjC>D"2ߡG|v㲸s^H"7)?6(%sM >voXv 2/ AOUȵ4 cKc0B{9p3U?tb.;Hyzq2.ŵI'5H \a \ $}l2 ?͏P؇.\{\Nxk3,Qwhks܈zS'1'е1&< :AC0>v[ʹ+;$O~h. 9 s%m}0ːA}CQ4sf0 9HakY.4 A@q''#Р4,{ Hݗagw.3quJV.H1 ] gE>yEgW@8voPߏHG?TZ=7C9@C0;ĆzavݓO: b7j(hE2 K|^ C ߹5WsU jlxy=vz&{۹?+7ǸXXT=.Q0;>,}JN&JX6o3'9- ܺ`_E! քjLnOG7`}ي `b|>sMxԥM燄mo0l|edX >qWن`٤B1R7|CΞ]nܼEIED;o}S> ?$XMi# D !c$0FeM=e3P5S `bqE#I-J=F0܀ C{T!eA͵H}Oj`Ӆt\d}%!L=Ɋ>Y49"a|[ik7f'a-)t%;Df=(F(yO2֡,sq=KL) :jZjMBVΎ?Zj[O Wt|EL6nvÇiE'm_|aH&N*8q![u6`0@B|kw^WcuQU樶`؄9;]KC0naes)]jӺnlA':v5PQU҃FT6wO r8|RE0OsP:n'"0D9woJ6Γo?["[ 1JZEwXFuMLD+gbIuZ:daEGQm;tvsy=:#8 ,=Ӆ8W 0 Ce' &]17 (PG؏ z*>mfyRY )ʝ_SrVL"F ۏi +CUGo`T_СVeV/"Š(u ŝ^S b}ˋf8y8I[ueEVAC=`t-!yS3Wh rAi~X~LKbTF$fx%+9vseBI 1IP0@33vR*z컋U>GX6^cAye9ZYٟ>6Pl99A|su]@|c~ (GE9.n,,wؾ?BI0bs,`xȺ mF 6ɖ%?`wl_rWt/Il,PLY%0C#]GsSZ ن*2/╮#_diT8^禔k1tq 0垷 ECLLr*t]+QnOep\ Zr3M I1eK_7LIgi)ƵAW"CRcz56 b|4is G̎zm u \S%m ҐiM&؄si6@[v .7rm#٥4"n}]f&D^"?qCҷk@٘/EoWICO z,Tr23n^ $L#^V]3AWB<67ϕm{=Xz<_*]Xs#&Ye}O'0 4dCP,kmH{r> ` 􏘰Dg9n{?bܴ,.*9QpM \t^L_?cYvdktQGz9th]v4\Ύu} )UG*;+wF{]E2G% 0P͓7ߔ/ީ=˜qa1n@k:-`9ŸmO.0)oVPk^ ,h.,o3rh9Â;fv R(~u~{<PE"#wģz (\.d7څ0[`y:P> ?j   M0pRX~Z,=lFTCI~ʓ*vHc=~:+ys>/K݃` KR04n"ah<}GL3w.ZK]C,^`CBS:bFL>aSȵCa~SƥX&eU_5t1>j]sPvuPn'ҟ jztc+eF<.7\߃ (?[}9O^ z ƅ ӨyW+]au #:`Owb}l0%dX|yRf㥪wyvVTT\ pm#B1dw'09'd)gLlPC^ڵ&Øȫƿo]RX 7.KmOQ=y];ΛTCf7LxH$0zd sOM`_E\Ql q+m{ ˂Lt+x(=̘..l Ov43vLhU͞Iv4::9=k`^~×ɞ=+ exUɵruq7C\z6'S=^GS j~!zLULo]D|OB݌p,U'pwUu;5hu De([ dRٌo|i'8 B ֙rMDZފCB_9>aQLoP*ePǾU``K2zpPo)[N+~0Xy)#ðLHd W81=~{B~S1  UݙK)+Wn&ohY/#>L Z@OؾnC2:= rq~x>{_ ɏkhpZl[ 1 pQ;; v4:嶉'mHɪ<%&X:&fN5 ,] FL߿r- RC \!dtGǼT'N'寜[W5wJ.>~L"!<|cRtZu ߦc}_`GF.P %@nE("H{S?(^wFwR0B#jn󰑄M% ef?ux+ƆLt1E*]rوi3@@xZpW&_h] s p$b_gb'zaNGڀBۨIӷ}?yLlu)(hª TOkof 1 lafj~iqLL7w?{\ 1=R( .\$x#N#Y>5&SӼJ4B0F/\aA{@:yu¸ (3P* {yۘ rJ=VE}"]b4ʾiah0O~E'bع 0B88׆]!$cw"{e_&_wG="vRwȴ0>Xfa84 pRYe0EIjʿҗʗIF>tI2+ E؉4>`rGgRrGlJn"Kڝ͉D[b0jg"v+XeLZS,eR:TP.)Γ"lxy'jBZ㓍$:QFOw|]GwsWw^M դQd!?JILļ]p"Lⳋ:A"^9Xgr\11,#/ ʮ څҴ0lƄ?|JAx<((-9~FV+mQ7= pXk!9kbc T;̓ fS8jG⾚pEPYuΧQG*[ 𶹈ƝD#c?aVy5IB`b4CMU+g'ϳ¼[W%T-- :Vd{i3>6Ee;a2581 vBƧ%z Gֈ] Hv\^VD*8(2c."jv&+Ծ 9cpPAKs3J^Ȕwi |z  K͈D*zWG+e׃ LOfff}/yRZzF0q[caC}3z \!17u`sw-U9M1a@|{A( Aee\j'`E%f2spǀı~dr_`Z:+☶5<&ٕena G嫃'+0&"ua͓CBJ b9!pa' ۴(& 'yC"NhXv=ڹrZIv3]C\ ^L k0x\ޘjܞX5i7`vUP]<_tdž5yn#iXd1 dP҄Z `#N~ GR|[ |j%gGv.y*m^O^Esq]RS?w0uw^1'ҿjZD}qXU^-5scҖgA c,m)%u P,PW:uNuh,]Iف e`kADǏckD8&  3վg6Iq]M;-+ f$ ɄFj=8$ki*0AH7hgZCX\k0~Qr'}c^A8S4&7%GAW5q? BEM)1zqa~;8:#ZHQqXaCI%]"ƚש9j `M).>R{4_̓D+ǶwJmE@~?f"f1X *nLB$䩯/MGD~E}3Ut"/S1 } 6<`CKŸ/T&@җ4!EԔIH]`*ٓW҈f:9 xM !vp/|A`*QY^c[o(OYD[ټ=LW/@MH~= rt[ԭ#}NkmU_bhNf\U$a~1ֵQVLǂA`8ͦv)$S1ȼ@/2[H1 tXC[bN VU[2*'rUi|zkZ}~t@DV~yBC8G@pkބ~rc¥{ v?ҭzN]GM(QNo9ְy<[&%, cz#E Ahf G+Z.6) X&w (JSbnPXR`)20kY.w*kq>rT[(WNjeERo2`겸q=7~(2]˷.0 ;`=aĹGkdxz&ƒB"9gV.^eSsmU/ ?85hEl1bhD/ZdGUOkd̄VH-pwyP_9%*n){ ޭ;o8H`UpJNäl%\lG_'d9ӿ  *r.'/38'9Z0v8焞I Hc;I&h]HCʨהbS4?Z$Q"f‡?SOj'kZCHp][N?Cػ`t8"I츙AUbӨcP2Ve)w7uP$buI#M.]ldR6b;zVL1!((e!>~!yv0& SXeWPy|}zۙzN`\t:Ɇ 2<:HlEWiM$Ti_Chg:hJv0խA|QIŕ5߼2!3g|D~տ"'(WL4vb근/iSeOoUɰ~}R(w=š֘(V4 au1Tgv!p01Lb Ja[aBg2(8 %dLۉڲ0xv(ze h;Jg۝|fLP:f>/[)/|Jai-ٛr' lyvD[- 9Ġvz25Pk;@iH{oЎc<愂XiDXE.E,5SDaB|9\~'gf/% qQee\& i7q1hLOʜ?v}sVpr@ėjC<G܁S`IY!J bUrÞgP } j X~}mRO0Rm&"ÞO]N{pWRZU0h$Niz7Q[=DXE~.el8eh G(Xm_'rN מ(a°22@s#OM Ɓ7k=;'ՐL;F$Re@af0|sYTq DtW[7.s!f-C/6~xIF:YMcC:=0Qۼ:seaC C?3蟹QsmP֒Zo vCL/Nm6T5wy.s+8qjn?+1Se 'Žg=5 )F:[jLE w w{?d2҅Ǻ43K &Z#62 P %`#:CwxcjQ]"`XC| ΋t_G*乻 }!Mgb?W7/=3=0e;N ֈ݃ӃjTzs9U$8a֐x2&y yyq>]1˶cϕH}OT=x҇}[?$yV][O١.}0}0nQ;fr.+1 "y46,ː燑=AO[ǪYdMהL!G5ұ« "U~9Tɿ1 ^T0aasé4akyaj47PK0ȧ1/@.\o2s]K[ۿn[QA^@07| grm?q^SKꛙ(j-Hu7;}MEM w4Qoki`/wO"o_opgnVw+F8)H@ i}@QTEyݣkBR=_9=|pq.LM("jkHsu>݃!swkg4ۗ=44J2gHaU#i8b;^LJ0<? gw 5Ηv9ԒBRz`J=29@_0n"DK̳B]Z"~g o+)$5ϯPa pHYs+!SIDATx]wxTEYPlzo4Al(]@- H zB%@B-b"ݕ"PDygwn-I6y6ٻw}is̚M*h@hD#&4FM4h@hD#&4FM4h@hD#&4FM4pao8=ӗ陞֧WOǥfX2(W,ӂQq !@NFBHV{<͎x$<`{IrIvz>ɶl&[Gd)gT*c>gX71Q$CIDl6HFFClˌDOVLdRU#AÆ\8؂i $Յ1www3>"BFY\H<~}>D$& 'ds f(ov֐f[Lmi)rMe$S g"]/ҥ LG,;d'=ÃD8@4-B蚽> _aR^N_A{ YLDK#'}H$N20pl`"4"yDUDE$ӈl[oACu7mݺU$pY'=VoKMD@1-r |hN2-7uAh{i^v?Iq\s'n >\"&*_|M_HV\zŔA;)?CIgB8$}!! +8..Ly!y&Ut %XX> &Mfϧf8VBL&s1hwAt؊`H\)~ܾ}J:tyyyI7lo&ӓ˸XQh=Z dGɷ"h D`^ L3 5U $Y#ح1Fht5NhI&I@2 PHFU>$&0ME[2Ԡ&%[QB`; {\ J}MKIt&n.&dzCYY A{ ԩSLҍ7/ hi݌V7yܘfjS¯E*ϸ@Dty63uBU%$%e3!؂qȂ"U&?w $xU>V=ord1(ƽ[N&=|{@61|ay![E$gh#?'p,TCP+W2Ř?' ,{L0iT'&i>WmN>?H'(U!rYIKF$hlHC7Q1 |N) kׯ/PΝ;cǎ*$o/(*P`H;js/  s{;@3$~Y?QC0sm|i)e#2MNw(߲% ^$ ^0|z 0|{e D C>T/&{ z @-WPc ?UCظq@5V bC=cd@n#Q` m^z_gryn `g'dlbB_< q}6dŞyEUBCCYPPg\+`[IX1B@7WV&EPl$m $I|{V3 TaܟP rr.lm2N.j6_F+XYBgsJ/|±kԨ^}Uozwޑwe>${q[k۶-kٲ%ޏ4nܘ5hЀ <bccYdd$DY@@BOAN`#ɞW!Y"X{#:I֏" dx"=Lɰͬ 2-9]9T2H~'v@K{1m6d!k:y^;kᡬUL4k'$걆 FqR4mڔ5k֌u֬M6H &Awκv:w:u׾}{h͛71_~⋬nݺvڬzܶHIøk26$oA? bL |2f˃gΜaUʬ^ٓ$cA2>ȟ d1Y|kDZ^z%N h7| DZ.]p}H}4dHVSp5`,*I+ rta_{4 NZz`4\W 4"t*i1l A>0nI%ɚz`h5,Y@N1C۷/plbt}Іm|_X :3 GBFH:#BcAo||sppC-[࣏>@s1M6_dY"KoJ~Y|\;lIj9]1: RGN&rs':$P V%9 _|Zi>vFYBm 1+xIE]^R`'|1+#%֬پ4L,ۜ$1yr TA|ϏfpAZf\;P@6c)1񹹹̔^[vIn0LGK8ie'ˌ=b&XJX{?ԾuEe qS9I["mׯcؠ9ɠXrGj֬KܹsX(xtUM{ `ܪZ#x)_9N`~:*ne`vX b &/6f&|jBׯ؇ 6L<ܰnEUDksZI;HZ3MzDt?@iEC.;koaY:2W×C rl]hY蕤%Wc[]x ??kֆPoOTS/#}ǐ~0C[N>ZalzL߿OdYaaa!"7nk8&S9G5ܸߋh,T,cN^N3-)ݯ |/O~?фׄb˗_˕Zrt5k8F'rĉ寿k<Ʈ6@ :]F>pVv36R[HQ@-3cM{`YB +(AM]gWXAT&M {;&0 kZX:u1)bAd|`4Dڸ$~IPRf H?KaXFR6/P_FH)>ʿf 0"􀶃}';4iRm6%c)J@@FXXի_I4Ο?ϢF TUc݀40 \^OrWh)H(`() we_.AH7Q|7XP07D#{{Lb{pW7o&߽{˗/Lډ'l2`RPtωakIؗIPNF"ɫqް%َ]iFғ5ȅ!yAêЗM-0pr.tGobS S 5vIf޽V O #7GU.PPb Zу,Bbt֍(@I>UVRO&M!JnjDDVR2KnGgH+Yf|vaHvt}85ھ.5NA/ &_t̖"O]ܫ$.kI˝^f Y͐`$JDxb(u@w~ҧO^$JʢaW'XyGH]S;+&F|mg9;v,Mhն 6JDM"~X>a]H{HivZ_d3<3Tw\"X-<v:_EKyTwgFO ذ,nݒ+ 99NyW1/ PYI\ξ"Ծ uھ(<Dzr*w,\]['V5TիW-`ذa|g͚ūqODʳJ.dM~Byz"#zY'JjzvEZ^1r'|գG0_\XIPQd'XMnl~giYYD;ưൔ~%^׭΍K$`|x$Bۓn.ʬ-~g\ݢȃ2VГ#v/+*+pۉXi ?(D} 9}OZ&7{j.r( ycbРARn<>8{3TE!Wn:*fX7߿\JI˗ 'zTHB/Ham\Mpc_o*>$?;B"fW?FN_d/' #B1v-խa ą< ߕxjzTayuOغ}^^􁉖|Du&@'T8k /ڨK`!P~ʪ줿{I>?@lV<@ہ9 =|= 81.I-~ɏ6klW?0LgXPŋ#D(k=TVL3ŽZK*,g@4fKC%ca1ϖM*Ocfh~2Fz_Փ>iciQ>v8==ar_GLMȡ8D"seDny<~-^7ezD,4C֣@#g&PD,X1iEh #QO8Dwm_F^篝 >4gg`w}1OO ~=8#`n| wTii>}a:7' IQ(=8|]GMq"-t{xw?V(_ߡWqWS<:ɓ|tK+;##CRG(R0˰\gɝ|T0w=vq}_p ǏRT4ͦO/wV?| ?V˞lZg~#GET>] 6hӎ@PS{v޶Onr$^MwVm w6N"iׅ?V_) U>3P͘C"u姐Pi~NdgH%RfXz[C-hons)X,&}ŀ^:B1P@"ۦՏ~h!_+Θ3 b~0#Q,+$ |!\>Fah"(##&fwB# ̞XDs}qgiZ IDGz8ʀ8*&#9~/m8BRfOQÁ(gr}^c%wj\|!9Hr1T yt:67O$j'pCDfOHN~iX#''D{38=[ޏP t7TB n\Ej^ lJ|]gfF: NCMƒCLZ+O>1EֵaCY~-|u3ׯL>]??qٸ?V;=M^x_L 白k zZ&ӆr#dgO#TYJ޽[wRE1"&^wF𰯵 B$}>]$/^1:SB~-y<ă'שd?nr{Θ idWvP[3>l)3Ph4hT9}?^׆wa.c`CEoh76ql g+<lܸ"Hr3(uG/TD+  W/(Q+!UQaf=œ>w/Ʊi#ݫH+W֫5@Qp51]v~'2PBm_|!I8nW\_RՑ3UسH G!(>b0edFXn^+- ϜIA?ؤȜS9|JMȬs88*p\۔bip쭠5$p`4Wz@:.P|}F0OY+VhWFh@hDbOIENDB`pybik-3.0/data/ui/thumbnails/Brick-9x2x2.png0000644000175000017500000001034613137372603020777 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+IDATxip\商sM߭jI%k&ؒ-lp*lY@62`[" rF$F` ilxQyW$QHQTT$3?fNRwSIE[~ss¶|A4~%@~ H "@$ DH "@$ DH "@$ DH "@$ DH "@$0FD?91$8uԺ7.iJ`@[S_=|(zCŭ® Cp.6|HY?.v-BHv"+C`88ګ}"oBwW4 anjހO^ŲqkVD[ӿǼ$/aj 4MۀMasV\,q%8{ "<3L`8`vr_ԾBi~%U&Y&-/"?ùv7V_k1ڌbj+[%gv' sz7 b>Bű(uW]%^_`hD4F-00$wT/*DkFx߿1#}" |HXS42]⸫~Ayu#|; ~~0A| ǝhTmGfY<\C-ɡ4OS%KL.jՕk`TZP೎3>53t]9 3Ű<P^M0k{c(y~ Jə ķT;8(7A C1$V,L e$~L{K}_w!3zP7jgCrdMkJZ*3\HaArpG7r2<\JZ$Sx~Wf;ݝ<}\$&uEh)zOnN4 " CL:g?Q% [k%jl]=>W$Y:m 13TV?_PۜFaF`MЀ@ $W;YQ JYG &Ql<e]{z~w kOϑSE,$7gNzN16|D-F<8:C(T<Ya;oE?( f}0) 19BM*!78+7pWs+=ҩ LTF"}[qV`W,c"m qo@h J݁qo~(HmO?l>Bf:m(ʙ75%W6t {Oן dl(\g [ANZu\80V;A[LAԐIpGpH{z= dJD:~6Aup \J>ZJNk6?N5?')w믽T@2(»wFC D8(N!)xP ^7Ce0v$]:f-#afX:1,!ۊОZOXVtHG2m!X(zmp}2Ě@ + ӆ5%fb<@pO}I$U.~nJ9glaǜ)sI!CQ>p|y"óa 6 6 R{hʟlgoi#s~GDL?Gv]iN\9@%m.BtB%79YWPp/19#c8ǝ*y `5DujNwy6цUɌD<@3GCvCP"ZWWrn`0F2L.9gY~!>9FLU_Cp< =B^J>>PG/> _Ď09 & to 7[#>Ͷ8pO1` hSy g~[I 5W2bZl蚩:sp:PkcWKp8wDj=My0TF _W~a)b-oTݟ{A>A Q ~(5+- lƔtr,mumDښ jJ t>%0}f{F2gv$$*kJ{(wC*o& N`\r JSL!R2ܾvWx}{]=բEc %ڝ=]T#l}4Z#U+ @vwwOB7h- >n%xFDJD#;xT/ē|Jph5m]өwZ2H*[f L#aCAQ,gjn3Ukf99ݖo)KxXgP%"Jb] ADU6X4<~Ʊ`Rݒ.0)h5u ?4d7J On=O쨹9v3 7^D0i2[4fRbxԦT]\_6v_ ADžcw35mOUO8ۻ[_*~Aw$3ge{ӺVLŋ DH "@$ DH "@$ DH "@$ DH "@$ DH/a'wFIENDB`pybik-3.0/data/ui/thumbnails/Brick-10x3x6.png0000644000175000017500000002045313137372623021056 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+ IDATx]iUՙā}ᄆ&jg@AFQdAԨA j1SqpBbi3Cҝt_}ιŭWkPη7W=?ekv,"XXf`5 k,YXf`5 k,YXf`5 k,YXf`5 δ}O>lu׊%p؅ցltsOa?WVk}À:,[xMcp틟#+ $-%ǿ5pj-+ffi0 !<0^F㹮l9u-cDЋݨ\/f|py݄8'IY<.W O6:8q9:B Oap)fNAgwz8$v0GMŮ~#~N]snc8JfppVPYN1m 0q!tMΌÑ>@- Gn0zչ05'*a q_ ׹^v5[_ Ν!kq!K@0C`t+Ӛjn9f1N3`|L'|_ 0 a!;tL9M]N >:+Js~~`ݜBMn`rXT6q^;0bR5`dGnliPt @G!+boΓ㷘"cnc߯t/b8sӮq_I< Zs #"}S6޺eӭCO (7̱ñˢ0xqNDn_5;`&\;_|:l =G6Ѐk= jsWӱw kLx }+p GZ~ 3mش,!:8l+ގp|/2BL(S|$0NKṔUfݤ a `}פ}J_v#yꍭ9~<3qϽdWp{} pz~ctfO83 gރލ"s!pbH"o:a/΢H#Wߡ&sځB@ Uswd6WOma41Y> i<ڏs琑|' ˆDzI0p8%iV{u5Cy^epfz$ր,(G .>ȚAP5ߤj c@lb5`_^Ԛ$AV1{:`bO0M0 Á0TBz|"BCo<~絘B1?oB7Ϳ|C/=]b`Wo76)\ x㾂i yϪ}m^pڵMfyޅ/& ?@%)#h6fV)O™>8D0,n :LXʎP /as kQԑEQZaG5c0=a/M%FO-gզ[mXD<r bYr*$MOf)x[8ƠzW°3Se`a`2 5JiXn2S!. 9ăxF\.:W4*%:R֑BoX6YPzw//1_T- 1at#s8[*DT/ nN5 ]B?x\7cS? e蝯ס{5 @}B qXtb z續Ht( x8#չ|&@Xͽ,SPA*hVbHz=0id"ːȇLZ| K C\lGt @)3?Zn\o?S*]H طuc5r$5F"9i,@\XdL*IO*}Z`8?tXrGO;Ґ0k~,= TL q~ 70}$Χnas #sv:a*V2D߹bX'(R2W^]tRU:ޑ삨vfX,X!@lb 4sLɱQI"`E:-)y]\챦P4Xmʷt$(F9sH{!߼7s@~fj9)]T v2|!bɴў|5r-A'Eq+;2-V9:","& 2fBKCXOo;(涥qO 1ƀ>\:PD$8MZ$,0%` T fs Fpw_Sn|}VzYB:1i?aX{gd bO%ޠbQx@20{QUœqzch`c9aa2/1q% &PuCNXY`(42N>f LaSd1` v&˟_oyDveOWu}U]On QE\6@lcXxC '<*  W\ 1+\fʭaN8h-W`)U<vp<;PEckRax[f>$38hv 5`_U)O\ٿDNʏw˸}u9X7*R;?+ u@qXq:)}*{= G-g mcB%`M>WLm`=:LLc4 w _Xo2}Bc/*ڧk=C2 \E;M ?dߔs =;02fja!eH)=7NKӼ7e"P =7dqmrXGۜl} ?jvp9OgQ7Bz*X.&*㒼?Yb y!|ps=.3U5M)S,5Y%t=")z?_u:`&`RЭ ȤL(tL(..7-Ȼ;Je`+Wd֔U?@[7斃peعpPIr4~gu)Aѻ#x%qHfrM; p*:x=|\$)l;?S gב!Ne*դH4[L!fRn3oeX^` Jق4kJ*U,S]ДZw#AWY@)DT[p̍+S bS{ @@p;Q$K  5V qzW~f\D |'߆Œ5ƩWCzG:H}ᗠ+qE_;xQ?ݏ~˪Lo^7vIq34&*ʤ3߇ةo%P 9HTZpUm 1Jg +52LHIVD=LyDHUpNLDesCpزS1; 8RaGaG] `(CX -O/?5_8%c^S gC[7Oϴr  * #%! ӣP:ԸJR$ZBOtBJGQ\td :kJRJ+Lv#m=o{QqU=_*V\'7;X#3.s*y$d̐ק|6|;'eZYm7/t.V"ETDsjCH4 K$:<=r|i"%{K`  A5)^{LՌ)?)=şoGRf5c R%ϨpԒAC5 [Bj2w{IEckN=p"qXaUo%@!p8fA"Da{B'&XxFڱs=RmMƌt}pC 3 ;s'2#ҿ/#ÿt;Ať+a(~g q ('_}|8ߧg"DdYB,Y[U!q!-۽کV0/ 4tZn]E 58.#Rbb|RB~P#^A=ƒ``݁8doWV`m 5䬂SQ kʑvم -!;<3L5x ٚj{<|V|pwو)҆\6S#3^ggsGMyƎ̜qR(@wDUpAHf+\SO2iV2UqPf^./Kʮ?>&*Ǘ#YYO'tgCJֵ@DvU}ڕʬHUG:G祖,E~g?q#0bec EC@ŝ@=S V0+jHeVCLuT/j;.TJGz|bYjQWOQ 8<]AF<070ϗ_ʽ7d8?^+;:)IXai;(@s0[RHZ傈zq3zw$O~wJli  dd\ m LUZIdj E:˽:R4pg;ݽnlI6"oui"J V ٴd*j!эk**]uZgʻG\L]i%'7ƕVˠǻ N45cPb%0_m+VN8lۺeV:X}I:l80|nF嶙8R,;'t`٩lɴџz֮hN u++Rib_7tXXf`5 k,YXf`5 k,YXf`5 k,EIf.eXIENDB`pybik-3.0/data/ui/thumbnails/Tower-5x1.png0000644000175000017500000001742113137372527020574 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+IDATx]ixTUl+T*KQ`h@`* evi5*ب 6%lPѡnNO3dZ3{U7E% Cus{{=7Lz 0$i&L3 `ILf40$i&L3 `ILf40$i&L3 `ILf40$@g"‡*#A_QTд]lrFֿZ0A ܝn:)θ)d wyMu>\c $@]cc]k WK#pt('`Mtauڇĩ6f B&|~7TW3d=#RkX,jnlgc#+RD6 Up :/x hzdWүZ)2221{IثV(wζq>=axaxMy ^& vŷjaw6|5:gl#mGrݺ0QaӼ1uFP`Ƃ ْb$dx *+@T:ށx V!8z)9*0GFn⻒ V#@@n!^~~):Gzc,˔KHVasD` #@! ߁87 ( ; OOd9)٩Z$ &nP!3rs%*@83X#Y2d $8? ɩJЦG씳 W7|[oQ/c 9*T ݷXN=&//#د"$@-4/0{:c@7~~ c 6Q 2xa>.RmKӰ{ їiS)`2id_a< @Si|CLփ E5ct:t']d8<5C.u6 ɶD;m*lIŬCQˑ1 u ̷A2+DB4^ LU~w۲DB0ڙP/$) @Yԣq?CvA  ~]YclfKI"M ~f$^/@;tg ?%L|E6+<52SWd`p`3qC_y¦{=a_ƌ˥\{b3@AUf_ @f3lkcvFw!6u0?4i$3&IBg;4^?Ki~pdZl~凗xS9CIXzƃ >xlzN;Ѭ݈oHfd %\.$u<!vB"^9\dlp7 fڹm%}QCEϽcVI=L=6m?Gs.媝,\kPQ|( x-6`[PSn mxHH-pG"e /c H4ۮsO) hT\`q$6S; 8 0vO)h}SE2kJi#X rezU-c6w& _|K1 2TCgp:x ?#Ao4i* h>.e: d\~_dཿ2->=>)E?i;cbaU˵OG1B% ,CƁx/P}+Ŀ/~RBL45VU} oFGg$õIrĶ-_6 T.ҟ2pmīX3c#e^([f~<1'xc̼Q O' [y4Y{퍁#حr9UrB+ o߾vJ%S DX9n\@0Y@JuN3"X>\$|nI*M|N}# FZfzk$I"؇੘rBOK_:\ +fzB6C 9V2fUk-Ͼc ?GId@8/ J!?L+Јs㵃*mE߃JG*q82RQ/ S ?tKIHc϶nkd gv(6\]qsR/2RC;suaL(.B!y6 q=P>FVe9g?H4t'34#@BpcJ4&UCK2Ĭ)nQ&TS!Жr-O sq7?y5X!Ku_ 4'2R.<Ć8g&W/*7tɃ?BUKI^赊_~.G_URnfN,;65,U4 & 2 VyOA7.?t0dZ#d5ѪʗZ?P.,8YD?x>}H2"2Pl1o?#gg o)=Sҿ}de tv?}}?Np_IEMbȶ ~.[xPT*^*~FT*E U3 #N^D_'>>33 -yrϭy'mA@.O { $6"E䅽,wG{K&8\s( 03^#wim" 6r17X-qoG(+PDz{rExɂӁtNu:0O20BBI ٷ:7p31#]3 Ja`6'u54tϲ,\{G˱6;3^mn~ "?3]pG1;DnE|e!i/ 4]pܥ6ʲv5+<;qt{̳3A_ޖx&턋P͠6[89Qb_f 68ӷ;{Y<~zn϶npXG(OMSdTno<#&U:[ߟ'4۳u. *]aӭH0J_f<5yM*ݢ[Ng FLDZeo M).n4D5c?y^G?)bsAq ^+haxL Ҍt8P[-Hvo a7gU@7JnwZkJhT1>*i z(ڵ,<{ftw@yУ\9.D7ǸIɖ} '4پ/TdjI.W^LK(6Dgx>gь3Ug/;r''=5mJf%, 1, It#U*Z_,S xx4f3u½65کjzrt(;F̀.NST! A˸>BRbx{?MrH|^>J{@@:?<ݲBqx*&K_Vq 0տy@_DlxV`C`k1@m!VLJ, X[lvO{Ld|ۇk9}oEo8M -x'kc7 cE`JQY8݃}v/D,gc@a3?Ez.Wl>6|F'u;u wCEiq_o~[~hƏpȖ^/doXgZ$_/  }FkNxLz pYQ˽:|۱vOofmװFqaDfeIBK}E^oJcXQ~ǯ.o!+E9#3!A 58wG~nmG@"(KݭXvM5qxjZ\ވ/|`:CD K*<)|/v~P[ vn|~@4NDxXHAOX4$1ڣaYXzqH^,XvF3 |W7e %=e m6j{wܿ^&!/X=bie0v6#HB'@΢BEtؼwCa߂WӖYpWX` ]Gl̷0'zvk"Й 7N6o:0['VOC2Īy(z$†(^UUec)!Yuv_nU42 { ..H#3[3m_rUWCq Zڜ R?E2̐5xI*^!{! ATTP+4s[W4[ =_4TqȺpف,9A@E@0XnVП z^aNX^!Ae]+ Uq/S=&[jӀ8T.C4Nh\2#9}#@6h&hQս eWtp&]\hakf1疯.uM-6-{v`AXWxKB+{L)+P+s£δln|ڪybxh>_"t*Is\9,Y&w''C)D| fBE"&+lv?eCb)ЂKnI?N"+Y+nΞkK-Q^a>P+8h ʖ/~^|S5>9~*"E5A>Fr8MؤW Pm,"i3yjUCcMajS2UM 6_]<˽$@<5Ϛ +m`QA'"vE|G#{S~Mj wT|(0S[Mݕz)UMj 3'ZXlK8̚`P{ _q ]a<:)٬ŋ7Vfj6 8\|au5yU>F`$WuJR63 Oxطu-3j5i4 nIW;D |&+ܟZM3FbLGjiOMa$f c$yb+S>3 ޚG, R12<̮ ml?nb|&W`0$i&L3 `ILf40$i&L3 `ILvnoIENDB`pybik-3.0/data/ui/thumbnails/Prism5-5x3.png0000644000175000017500000004032113137372672020651 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+@IDATx}w|UUgaJB!PIz(ЋBEDP@z1"*68j޼7̛{{ "Ś?'pO]k}Wǜի~xG$~P?P?P?P?P?P?P?P?P?P?P?P?P?P?P?P?Dž[˶m^;%*;uKƌB(_=jT\O[hX/ NmZq1q>^cn;֮1й~}|V[U펏~9>zS|xKY)FQ |B@.e%HL tZ~yJ{q ^OI8ИMwxLc:{<:ިQ#OOUѳ yt w `~tg3}=^Vv͛p;hӭVɈ߼^+LKIII"..NDEE0$Gt5m Eo'i@($O,BY(%t 0 \N㕎GE N3c @JߏG܎;սg[ G ӕΚ4/֬qD,o(fDH@ }b|T'&$)$#Udee ???52B$%XN-RRRX(o&MLFZ!2CBD}`>3I[/Se%ZG졍Wg}8J‡¹ 7(6Z ?8k0AM颉dLe>ɍW5_Rǥ[x'8l6џm0p.I@M}u) |Ĵ_1%"P$9EYɉbZZ(MKhL#aEfLrD pq"55Uddd0H/954Dd,6h6x̘ $,)'i@H RC}9RJ:8Rd 9qB@L}G z rΏJ>]wYGm|6Ť`QJmR|(zD SעUjhL2Z3ɡ"\@&iJ>khlџ&c0adbGxA8 b>iLnYT7lἪ|䯧ѹ-S#e_{m>E `9,ŮtwJ ºi$ "~>Wb+BOL͚5c4Nc4,JK)ɢy|H'̲Lsbb" f`ylYnF`sإ1ї7pF pM-4* P W.u|2@[Ο_=|LL> 3Mi. +LY0ϧ&BsI`v]tz"FbmBSF)QbF|"ptKMf1Yb[FhK#3Hy 0px D8B@Qڒehn,zo~/̸* 2l bH/[ՕDڜJsf"Ai ͞zf2OzpS\cz&#cnrT' IOg lD6' 4wR?fiV%Ff5#z"i>;c]|T .Xr/9X_fo`ij[~ضp~nza$P)\G/ t:( Dž'&Ų ,M2EQ хpdv TdVar֦8''Gdgg+K3l{Q~(izE4VGb=<, dIy ++3;+xLeaד&)2䩑DY4Ag,&p]I0p'GH3*rx!%LqEK92%D.KcĤxQJf$-YLj-ƑM`$I)LuTH&,ѴiSN2!Uytgl/#d:ѳt#V6di̠Z@S12aȍ"Ĺ#lbG9fWlhAφp=tf @wVNqXc.ELq?ާib1A, hxZr`q'I"pTxdT'| \@44Vq"V'J LYjAxy`cvdXm:q8];0u6UDX"F͏g?Y (B PHS-lپm|d$%|äRc@krv%q5Ei=RX+q΃)3qsn0dc!,VSYڛ2 V`Q707<ქVv gإB3xGLMNWrډ?NOV֡)[GwߊΩ8A5&2`{0۪%=EЍ!t==[|@DѼ\Qs( ;?060c^)D@CKu@/](Yd/49O<_8Yz\e\lk)l\n8z `,Z s<0xBqqŷ ofƭS(G7W"@\I9 (:L'CQ Q҄U8')PAcń?QV@g0F@lJT j 90O2h~ѕS^|oFvSa5 &4p:gj"kszC𝺣r#H8M )̤O4x+Xk\\700Wo=]eh7_/ǔfj$8z"~FFŞXIIH+ja:=.t [*wha`2zP~gXJp6BeIp ;Abe(ZV~Z}0 U "|T~]Sʡ`M> !ߩĊ[}v=M|L;M70v1\tCHPGչMV]xm bN~eֲ Hl~P ,I5谺^dk R{+D"~Bs=@tQP< \F6]B"xWQ1YoA.Q|JjS@@o=r<^HPE ·`#6&~C0VhktJ$l _}q^фgf*Uh+X&{uI-3xLkLsp{ue qI=D[m^z @2ADcb:V K\# &Q̾Q_uy BJf]MQF5G+kK](mRg3Cb7dВ yiQN&Ko0q9&җC svl!r(zL2̫Sq 'ڟ14;ЏS0 0Jkm՚FS& #ao|aN!kф])]XZ@5,Oy]p<#|Ckeih"̓BkvUԏ,˷bhF_= PˬՁ&WB%*jn#% CK9 ? 3i69 )L7#ݝ5N|<8&h3QLldwIx3g6gt%c 7P߻ qHҙBR=vô'DJ\< QoM6XVʅ rh,J*U d<>?w@1D[`-(s縦6ʄz'ũ]L %;g*_p*Z2s]T d]S~S,srXS|їoU S)Ki-g)_$FHT)\g"} L2'IO'RiB*!V& ͉ $mO! !0ɢEXkfֺ܌\GyH d7C& HGpI=]ǻ4et-B;)k\W1%:߾ULbkEl<@T)FfJ A@p'G7crڊ }* Z0IZICˡia]~*a  ;Z;{Ch,!swKS`%4GȐH s=>h9eq/<pUy9HFD9(`e\wtu`ݷ40Һue51\+GXzA }ܴڜJ! 06Y ^>iEa!S::7& <VD'k&;uRMSZcp<~Wa&e`)p/ғLu"mNa-d}`*oo"`W] G0QW@ zLC87@m%xU!^P Q# ժ @x.<녛Zg>&+pR,)wRE ZO08u؍V|]vl6=aǟR* V4_޽m`tz[b104>`%*}UnMͣɂ0۵8myz cФL>Qi#B:+lzqD'0jK8\׃>߯^L'!;N7e#=߯`14.?8*5|` 0Mbi%CdX7d1ec`5}KDb ~Gdt0todWD``:w;j' پ|{?HQf M|)ZL,94:ai+|[]̱?e^_! &J됸Z%[H$|?L}oSI q/v_#3C&e8a ЊrBE5Yv_.#@~(F){up߾OH<ԣGaRtNBě7 X/ѳ4ƞU | fpS'x?6X+paE F55_f |&/&hr'KV[3Owkn( -Fu:SFwx l(s)T~R]d(ߦOSDx,?ݎ<}c+-Fr dyI~0JHhF ?rHt*4ػ )Ů.ֲַ1D i&:XxBtmZ4-A3ӹLC ,'@N5 Dl-}+㣄;igƳt+"_O2$$7!r_ż, vl]68sw9s;~]1_Z@kRP-DA0yiPkY[$|ިr>!2l>F/$F1*Qm $\ՇIEKl:o" HKmGο] Sdd17{X9q \ JKϠT̑${=ȭct>mvNrdC xf\ehrLvukU:5Bs5kǚœ%10_f42f(05Ѹw/# vbր'sÏs3YU0_hcb!k$&Z"AhAy3_mϛ;l87\[]Vayπ8쒶3!$MX6ezHO_˩H]]@rK}>Z{x Lb` (W3 byaAn‡ 1fvӪ܏>U,Y>⾛BPkD9Ť_<͂k @Q`l˒qb=ҕHYTI 1iD DV8FcXa0thIieU@X+%ah(BvCa96g0ߑ*L$ڔˏ c*GXC(?+œCyLq>Ǝ|Z>sT0e ?OJGbsoS"&Ӧ{[mwϟ%-۷mu[sc0"-6N{rrC~"Zy2(<|2 .͚яB@T` !~3$j$~A1Jp@=0?g~|5E(.vJLxyG ); {w֭:b7|~-^0i7 ;\)7pߏ8DRFib\l&No*dn%y]a\DG!+ry{KX,\~iJO3QF̳1o&1eL\<}Ut=yL#<^ݧfdh8w.֖`s94֚>gO=RvqF^==z:xq~W;Ipݓ(Hs{`bv#]wOQK͈0[f^ED*Ȓ(D:ĄA qB!UL29,;o 藗⼄\]fT?~olڍ f|],,斆Y9%D锷S&~]b̹3"&N3{{f}-I4e>emfԵơۚbonOSA0”RAIȥS4#r+5)6848"l=@SP7J J 78>T${6O|&Z65ꞟ(6&dxiam^VK~ +P*x^ 7llX/ &bݴ44y'҉_`@o.'SVHpiL*_# `+'RlTAZσYCW_'{` =aT@T&1Q<=@%9 Эop)fG&0?[&[?'z  Ii;cW[FӍ$f!"?h;m*U4v7,;7QB"ٟȕC0Ί@<9H`Q}10Y`@y*qs3¼/ʖĀ;27 %wmE]rWv$2+a8 HHf$ϱd+8>׆rŧOBD c0ZgN8gDƇ0' 16Y@`i_IoyNέ4ot>B"$> 3]5znC7HX@hE_ 0kf+U3"4s$,>tj^T&#Dt_%Cx~BNc/D":&E[w3L>6;pz@,kQdryix5*_s+j3X7!]17[4փ@3dg\iV-EѾL<2yf#ţܲw1[" \FS\3z%9%yB&\}v &koC.mG>-ATvܴitjZ|7.c?=,.7IK{"Yȟ܈-};'T*qG/H7a1o o_SYFxvq""T6;5T@-3Q@1 <˜1gh?#ITQi #9pH W\~(q eؘd77:+}=`қ9 `0]vA'c) t IjDV␓W^DVx!~~I?_\y q>dKZC1|\ S+ܳ&x0a|:LK':I5Jw0aeOw:qjBd HpM|6FfGZ-m)[S'@D=^UԮ]-TUL9M+JtO.W)2̛IlNph 14^BN}h6l(O6K|btS0L*FR5fI%|d94ˇ~1@ qk=:&P( {Sv J퇄Ȓ,Gmk @4v~@ɥ󒥓*^KV @n=IV2$|0gclTn$y'ċA,t-蒋!Ӌss֭[FZ`^ضVF rU  G&͜8~pszĢ@7# `^$)%ņ9kN`A.[ ic FVW&C|>Ók\Z5OEX p οRy /Ϲ"h8KpcqnHq==ж-_%fH=Q;P}L~q#];/=6kwOߎ5qORD(ѧ0 vY)uY8In7~^SuċE1 h oz'L^>-ƍ{`}9Ionv5Ow0zO7,% 0ɿ  Mφt (h3{ ydY[Tul$ylP ڂW?"}^kmK'f@F0:kFJӹHz\ӡCFu3x[+ `{o r4PW 4ƍ(=Zx& ZdX#2ϞB.+k{1B&iᾝ1"#M&XX*Lۢs#5B-EwhY͛1Rd):OIΧR7O&U2;ht|I݁-o}u&A&0q45{M-G<5C"E 1SmR\@:An-@M!gW"J^AܧnDH>qqVih=>3^Q |, -Ql|bQ%&]8-Xe8 f'/F!R-q_UM_yw3T VI1|KV~bƒɇm .Y\|W}ŭ_fNDImH+vQHkz~Fn='!"Ldž=l?:jǑX'`^qk.,R UL1sP¹ 6q`v7o?58">s,~.v˟d1ojj/H2 Fְ)ybٖ01[7#NƵ m-ws(~J.ھ. ,bXܲ^ϵ~KxN]vXyv;o%r[w}g=+ :-Z(K͚/j Ԁ17ma))<7G=@c!3ٳL z+/ 0}u+];d=ХBxDN/OCȧwbCn_Yo[X\@k3j࿳)1Lw'/h 珲i ""qD\9,:BCMC9SQeږ;W`>#8AVWBH _㊠i-L\!cXߕ@2̴˟7^omv=ʾhORDH,go}zTp/ .?;+vة ܠ5qEv P?ຂy iÜg84Cj!FK  =8eXo'z``/` ,::0(f࿳` b=f`C 267@wh^ 9O7+ŊA\Mͩ?︉<_=?'mŽNǺt`nD-;M @aaM'&HG)4llIw':B`cmbhb~J#{!KTMxXɛ 5(?st)]ĵ]1o4-vAu^A|D*)"{7Q+L?L6,Y{d}8}{! ֠ը maf ޳ф=#"b6?5oK½B9$qӼ {^EIv}+-OQ}icLI ^eڋϪ܋= 9.; $[{O?cFBg# JE9LoASlܚ}@v߂^@GGyc*kuhi- Yۉ"4,KR}ZKWsh3,dlCc9D|V%P:Hvڮ]eOɒF?(hnܑ#}6md!b=֬]ik /. Ymp 7?*Sa'z+p Xe]3~A/ltۏ=0v^,Ute[WX]TOJxvVZ7}So,ZIENDB`pybik-3.0/data/ui/thumbnails/Octahedron-7.png0000644000175000017500000004600313137372645021312 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+KIDATx}w|eLϔLL& &z N  ]*ذHEEݵelu=߹}<V%033<Ϲu}?+?mh mh mhmhmhmhmhmhmhmhmcѣuK;{p{E#u#BDCyl3@o,--w{5x)(p葺#?,le55 ڌwЮ];mA20Nsf9~}W PF7qf/mѧbU[$m"`yW , y9^.66vبs36Z6Ec' 79B| ~Jg)\45F5o:rkt^g88,9[y\^Pѡ'AZw)3͘N(e;ٶ$vP5OXóX.Φ4x8L.K^s{gjϲU|F6סFŬG"^áokcy\k#C|bqBƳ"k!-Wį0=]ˡhYBo`oj8@zk7\K+iUl?g\DqNEL>lS vy*n SX!ed0v,*0{' e`eoϭ #b織ǁ0{[g}O-ڣ WFDuSyl+}|7xtN}3xLV}Ik` 6gPK%CЬGv73Sa¬8qC Av܏~?f.ᴲN-H0{c l\sf~`8 N HP alq| <9|Mga'MgK'Nvr4K VC`'7ƵdWsrh3g/>O=fϒ;obb&xE/vNmȇAk wYhnFW}34@\cHsq"|.|5lN1vTX+588& Qגba,<>kNMt 2|u <0zȩzҡElWoŭ{Z)Y@3WQKw=J>&u0Z|Xh\`ofkF̆8 Oqm6\i 9sL.YG}ƇwϻgKGq?=]>K%%q!Xfk4XM}ߌX tg"X} FAq0cJ8Kʠjv1Gp01~Ahv.5[hfg2nc".WYcec YozkӃ *?a8Crjk4 t CH3Xj 34ڴ&~BqdGxHa;Ǐ\%|ڻFeO=gt/ -ȧ"!&`pA~ )$>f1)j jRxDn LjAj h<7|2by}M\4c%p·x6w{tPuh+0Bsp+:7c`aូp2ۮj`:aCi]wG@4ByeeM~<1$inY44;qbr1īk}""4_offRfU$+1<9;A9H$2tQs(>nxwWNn<[s?&C[PbcFSg5˅2 szE?_m Ht$394m7b1yZ!a8{US\|v 47?Z"ロ 0` (|D d@WP7nBYR7nO}fo/hn83խN'7H,BJy$Z3T:|fqO3pz1)ڤ5MZB{ZCHF0wf 3KLּPjcԫ8abP͆>=J HEoϢ dq,?}z%|9'/ }E^۝@SZ S&&nX!{bj ^W{'me݇b|ǷR{H ~\>x~RnQ#Z `t:E~M7Q JIsv,ط|S)/So:Tt}s6^2ͺ g#E+EnlQN[61 BN6 61& A.F"EѧBPFSuiXI22̤5Ռ\={n~HEpF e ?u8E wsƙu(,)*(TfeR;6]J' 8(,]1աIz噸bA法4,"!Mf6@mVu?)NYs4eDf V@0x[|}C([W9lpCcaJgPp.*6M0S@ AIv 2Nr8Z Nl?`E8"Rdih #<iaO棎J%=7 h@/5wܱoŒ:rz3bTr1{/܉;J=Uڕ )]`߼C'!Gt3iM^5W>1l4 Pq“KSlL]5%c9,ASBT6ZĄfdLЮ,c)g}M/wΙbVlO}~`ʈl:?c:P:0r+5.gQ%s0~iW)R5g6uTqS&47gxl6,"ݴ{,}6P0#MGY6QQӍ Z_4NLaÛ#CE:h'~\w;O_/ _./#gsG*p7_)?[/ɢ`C٣";tN9PsWSQpJZ8蒋ifo qD.c_H-7kzt,8ĞSq+Y"NR!9dD"p{S!?&ngU!l>yO|3NfUCKS_jqv"tlAʒ 'PU%iRNNC6iCU0v26C F@w6 ,0uaȯLD1j D)akq *( F{ {;k}=kD?+F߿O>(d ڻ{7?O=:(;ZB䫮sQ3:KGn5B{ %lrǷP*xaV {{>FP3Z>O_W?Dd`?"0  i9RN%-dq E0|g0=!eԟm$ yM:YY^ҲuG?c* )t1K{' GtB\W xm~t|Gn [ ɍfbOP}f a9wRALE Z"ңNі^<4bFoFz>Aǣ%Cx3یl<mHEAU)C7,p%Es!?v&E! Ph`Qw][bxha`yl+Po>{1nMܺJ8 X^ӗRAY|1<} % 26}Cr8>W!;TE^'6nR4ӑB0) &OUm/ym&0R]*udxg/ŨK"wra.!T `Q@Dy Uhz {ou>xgxM5Q ' g+f{_ABfxBAО*/s}5c:ELpW;\2 Sш fC(%0P23ƕF#_`ԫ{E@6&Z:tN_%-֓yo_M.ȁEwh;DeYbʈrTI쾽ϱV j#Nep잷q5tkXiH2AhN=fLAKiMj]hf>7 3Ɵ[@\" QN>I.qbD3[AF&RQxLY@<*** 8flF)o?`yi<˺EPSY!i#C *ZEQ"#8E8%ܽX]Kg?<̇.],#T$F]Q ģŋo ^qy_/ -[@P{5T>u(tUFQ~4[$u9 Ϝ`,=L,(>{efz)ó< L8q rJ!X^A >?vaӨv"cwzHl&~)~ >ON0a :&C@ R Ak%<5@fԦ W0abe.vZ]gcb/rkA(;v E}-a0jEVs7G: npߏ7.:Ή ONI{{CԯGs]&7Чg^@vp] ܫ@I&e`o! غ6+?"PW_ t,iSi1gyFώa5/il\79bxAr \SR44~ZL6R].Y[\jV'?|4Һ32yB"l Ӵ>ݹ _Y2 hG1z8?%?ΙL1> !ȥ^k5\xaW\.>;W2 'N1|/R(![:[)*YaFҝCMs;)?@\ng+Tw>ul6EWk]cybl}wb|g`}۝9dg@- [C|yC /Y ҇@ŃRqcգtyz WYp:u*Y囲Jj?qn-_^م4ZB/Ke\vFq=j||uؑ.?5$q9/^䔭a@@{Wq+؃bdboͳJųFְl\ IϨ8~-a=~qqLKK bti(^t!oeFCWVJH@`0\Ac7yp3R+J xDvxnnxI66>ƪ!In(oQy*-Ll|QHq1{hLJMI x/l6;I)k2~*L鵁e`f("ᰐ7Ih~0%C ל5PB4XjJ%CĭY'=6l L>BLTco0{#(RYr dyQ60վd덫zDmw[ ! ,X1)ıZUBFXIp?Ok ϳRC*Fju`E nYiOgxHr{^p|7:n~*]cUR"@T bC'PFуNӗ7R,?fѧ[EdifVbSyz ^i5DNJ@-bl 0垻DFecJ]{"ܔ3-`}gRA̦) !)aoB" D{ SmaA-u=fWư$/ps믲-x \G NjF~(01CZ{Yg}|yHF֥._) >`4{!@"D`V ȮZ0kW]^?Ts,`Wd DtKu]$dIJb`2dF~ ng|wl [\qC; ߫>Pf7o7oP4i=?g_n V0Gw5)cK)]CA;FR^F6#|ʳ\{AL+3ZGG??L5>ƽ(%,pv&sC20>l U:b0sSc"FR,iDRliaEE\w,A,kV-c=twH}֜Z|PuFga!bcçkoٳlLM#1{{vfPM%g EQ(20+I;m5p*ۃaYe$4v,,!FA7 4be̟V&PQ%cV H=S堬z'pE#D|cEݳTm(J}s,W T 1Q+RJi|D wkEI#r#S8cj;[Q"t8G;#(ܚD5^WPU)E50[7j?rO5@Ɇ%#޷DQ (]L^LXA0My#&YÌ]># U֌lYHtx'ΚeΤv( 5׫K]yAt8k`@\ ֒٣W2fC*fC+=P#Sv)UWõZF ͠A!H[8Iw!_rٯE5&3Νi6i#Q lA>=i|3BST ~Fc`u.CHF\7m[#8F+%gѨvդ`Su(2ry<[D)MX = VqBw/ OK1K’_/SUnP wXbD GŚJn]FbHxGOV/P>`+K׻xhfdq3fq;B/TKo4lɥD[B2Wxun[.>sRYgLJ&#^o {I|նnkWg{6GtAçf9اWCHSkDuɳާ\!n=#aY;P13gI49D9N%(6=!o;(8Le.P4 9Ӛ,G~~'x➈=1ϯ%:4t)'gP*kSCXV s2mmMm m9VM楜hT yJxhubJ cbi2!L-` 9=fP ȁܺCERD)["T\UD=C$_oFq=ay8[s2T16Q%=4rIC|Vs#ѢOFhNڔDoi/*Ne'Xqͧŝc׬,c>z")@! F A 3ufQhɜ?LN93HOKYoU6R'huB޾{V`2cVz~[TPF6_\t\uI6Qu 6*^dPSEfcy!X3jPU@5M'$\Z@>ĀH'˶PMKWz5ykErƎX>Z HȍpNa] KoV5r*h@O6/q3:dgק@.2:e no`?N>Sf=j|q|Ғ)j gM--eje>TrZeٴjvP@lmwK[Tx.ݷjbxVd`pI/3٬F?,P(#i8**}3}1fBkSHMQ ӻ +tR[̣4fHYᔍ@ AܰeE9?WK"@H/|jx D$o 1˶]mk9c0 x (;[1DT;8I!Ni];{v7b+oRIxJqQ@uMR'W<"s~SOs{˓LUn 3`)]b,pO͞=Rs+ _?eTP.v0yl gzMEz?@9;Z XQXF]<‰k7?t<,7_jL`Nqɡ.JT)dpC… b?- bcQ 8 o,wF#i20ʿ)#yZ}-dXv")#-f_;g fC%OmUv0KH?No4).qD]7!Rɞ}~> 1DpCt" ls |\YHt4Ǒ~]@>tx5kG`<۱A:bg)$]}oƷY @ ~Ic<"V^Iع/"W$l8۾;EA+E :2CzE2` g"'1詃"!CGgWʪ`Zt!KBL"Y'_9+R7H:NBӝ967)CA #f=HE L3{ 7>3G"[Pach]H}_mz !&B;sTꧪ9F6V^2uo'[p 6_*K]0%8tlIV1]RAF&3ݶHٸ E"ROp2$SYzVˉf=(Y =:]Ԟ(sHWR)ĞԓQA+@Q_1OyXV̉[?[bf>~"(AI4[¡(k+L;UpǷ]B  ˽tCK'`<Ń5Tlnv`e}Cؑ4d=R4G2ns8DMRৢ;{B l\?G~ˇܜ(骟y7%G+~3S/??:sTr9D;N_N ҄aQ*A> F$d[yU0d0>vP[K*Nzђg oÆ?.d-];-c8Z[LFA0GbW( Ԃ ;꣢*HŮ4r1f =w`t؍#\`zeU!%s$RNZ;u:*T<7no%bC~})UK>Ȼd5wk.|)M4/M@U@#TP0_CwomfrS@}sߓS<\^cNQ=:7(dlqq pX?hJX&f_ C#C={`~ʶ(g-رnG,P=KFgM>n<ܽ16 Sʗh'ƴ=ok*paLHLElH_Ìs.ʳᤠ(_%},Š|g=j`$cgIXE$}srLwAve6.[p?F6@Gq~5X-JEDS@&=p24zo[͛vrѶl&P.D Xq%7jduSAVfZ5DxEB|_3i 7n(RI AU 0YT^=y귟. =Yni}iˊ`!ʅNK]°jP0>~|^ړ׺\K GąÒ"/†<;JF f OTTB̀1}}#7X:773TP*rzfZl  YFbqRH5 p+`6NQg(#j;< GB9s>$YV""Щ`(v^H扡6^kmi'3&1=X!7>5g^V` #iVWҬ5u-!\ɩ"Ȥ$*FNzJj U} .Ȕpŝx<wqK$Ϋ;66zdOxT =C e\o7UweFŶ,a k&CH.E=c.-# {`yFp"KphIHUMwGSe0cMos,W "2s5ׯܨk\Mpޞi8#̵~WQe Li^&4s`GGS0nh^cԠu?乀v'8ut i&^<#6Ck7_tiJ͚H"WRGqd<B0 g 8h5Tױ^ϹӒ2_z*,)TX3@2J+/CGm/3+86uchT!, &`խ o)Da(͞7E@쬖. #6i@^qݣϑ\%C5 KL L9!߷0/@;D{нhH^+bK:R*rAF *b)Y9V`_ |ҐCv;n [CE?hNS@=ij-J͌P`Y'?ݎ|iS5 Al<7*㦅䫇3-)P FD)?GuxŜd*) +L^!/YyuӬz|laJOM]Puxf>~@<ҩm~[7\Ӏ-_À! 5KA2r2-&dtܽvr'!{ؘy21SMHgL:r[9ÝU9h:q4d=O|y Iځ 'T;E"mam_0>P$"M~ȦԼ&lB"ЏG<"n`r>jc'f$ޘz6Y)pRw6} wcE @$xPT20.fjsYx)1/EH_s ۗ3J uAj"Oʞ֢/aơhOWƯ. F,&K8zZm~pPSB .[2 #`-0B8V1S7{/%-FH$UœFs|^“Ces@AY“?᥼x@Vbӣ^Jk+O[Uiio[DՊjO,޿+(d;#u퇴?39p\EIB,P/i1Cax33MM pxq{dP_c1؄TcWZ^sDA!Zt/Yؿ3@Tr%*͗{ζ YeV@alVuӯye E@ZE҃iTg2i )*⥍XipC,(1~Nh[)Im}$<]Т"h| :mֹHCtq<\2ΛT{ nbiJ61I@:&ބ" %uxv@#Qj{{{\7j1/AV#e؎2wI2d@PJ ;ZЄ/T稵 DeKCxr f FEӃǛldQo(t7Rex' 0QDL @Oo@k{gFLv?p<1pT n0\vx6{L_%2^84=$}1 nx&;˫4ﶰ6݄6666666-N[IENDB`pybik-3.0/data/ui/thumbnails/Dodecahedron-1.png0000644000175000017500000001555013137372646021601 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+IDATx]w\W?7725PPHذ2"*MAD4b5M3XnDM!q7M{5 ea?ߘ0&; NwwғEi1jSݴlu}#KQ]$C[Z&K xfdymk#KU)eV-#K #K5S",:(i[ItdI{jǘaf@|}[@]jH?=x{o J3¼||dM> ||؋,l3@$ z'fdљ=*7PxPRx(0#C;&cॶ}VCA0Β]yr3$C`_zr?@1_pg+ j5*0b?8Q*MbUte^oiZ !l3A;cd"SeQvi۴0` 4͐jaaa7 }[L Pz mn~ >>4b cҨQw@*3ڣ}b‡/6$0|Q^f}|C1 @777="wMީJN ļTAaLQso6u܌$yq|OOO:t(_xTTxqAc*ʵY.`4=%s" ?/!t!>Ht8yL@Nņ=gIGMK+k*ɕ+ ` CwSn 'O77?~.$ˋ[ t"i: `F@?&Pv,')(]";zd _:l+'t "sgϞM«:e:u*7Y ގX/D\3J?\f`N `q .@VQ%~~I|tVu ^E*$@2-..zZz5-^f̘mڴixx;d_$t vnN>̠Yf3YfH5S/F;7eйcI+Mf\I e閉@E"UgUm9}v'4 H9P#/]6nHׯjG*70@t6m#7a*FKՏX=lI]Ҏ_S;o3%[m!&I]OwB@?QPތ2F0 ;zOK!P˽wtUWWsYJKKyL &!=ݔAf9 `LUy( Ǜ~!@ >f͢+VpZ,X2S3/ko8Ҋ0T*'q|h_n)S*+jXwQVɛB=;g@)u-(iAfߜ@ژ `%Teߞ[e߰H* v/zrJNZjh~?Fo>+KCؔ ojp/9k%OKp#v& l}ɺEF^0.EAO>h 8||x50?WΕ4b %P\@o~c~qq|%/< ) ں%%%h$]i}Fq԰|m UYGWTȒ׭ `CAT .RCϰm % \`I}nxXnĔ,h7WUUq. ®ӻ~{ ۯh[mQPy̠fE^`99![l'@EEE|׳;2YI ǗV7uᗎ> Ȁc䵛 <]AT_ȰP4L4mHdװ/`΍f=^ȗ( BY/X鋦@th>e__DPX*`me= K3n LsG#M L|6 7'j{mM aC0-l_~__r2-p^:X/@AT X ~l3_jK8ENZ䉱0Aݳ@|`ktaH &ݓAA1$T ^/Dph1GuK,kSRHrYFU8iG/ lp3$7"B~(|5U sOa0 ™ v~ ɿ\ 8Ӵ\ }"88~ޏ02`@ݒ yWɟjc4+_Έz6"zcgʹ{;xcr bu-@%pR61ghp`@ !hc%;x x?0hܷA'}5*|+%aGD?I!x=[O~>>O Ckp\B3Z?'80@#GM ,KJb\˲lϚ-Nܷ8Dr ni/'bX-`  м }ux}:Ź*^ pP`CAXJ$ {^0Zܷ &Oi"8gslA^P @]ŭ֊V;+VJN6>%@ !T ,U[jvZh gmj3`988{@B^g[էB&k}L`y3 u"58tޡ4f d(@ pL zMw'~ۏHao #ŎU)Xy4-B84 BHc H^C?O׿a ߰įsnokNbs4&F\C(tAසDѪ%:v ~.IcEQ}@KۙI/b7). Â؄Z_MK^oY6V/Xt[p{j!zq+JJFG҅c1t =w?=1cfk~{lAkT[ET4`F%F3}zFHzE KOC["O.d!g} KY몢~*r UӠ85-_M9ߑ/2n%}%b$Jsq]zoYOn; G|@iiyHp0xSyjr.l=1=B@1!* q 4 7%n +~?hh]< vO4MSs@<8,2DGqϠ [ҠhcQD?}rsioH{ĸzhmQ2P0|2CAyt>&@6q߮͢LM PN2 BJq?!HmoF|t"F ='tZy^eC M :!L͓ %ˊ"A,\00V'4w "Cu8=twO,Xi ,Y˒B fTiTd0U3x']DwK+:~}E4 |I~!\Lgb6+|7M%/L@a pHYs+3IDATx}wTUTUs gHA@IhA ų0: % qQqq"sM>Z}Vġ8u޳{pN_q"dY 2# 32Ȍ 2# 32Ȍ 2# 32Ȍ 2# 32Ȍ 2#m()9\GO׮\:g|_lOf8G=0[u pM%FCy5]s Rز ֛E.Uc 'F?X?sXαin7(b\`!3_ -oxuAgu8_8X^P _Lk*׫.UpW^pBU$ZMTI$|*Έ[\*qR0A<%"o^~~ a^ߕM"1O.{w~ ց7|b7|% a U?`B`ηsb.ՆD&27?(hk!oZ"|^CF$ a7Ax)U | c9/K06fߚOdӜoJ2ӯhG>0ieiҝH7ijn@ e!5s0g9YiUqv?T?vjuOk ռ6&qsI50d Ls!5`͂4z!/-Cr\s'^K%|xLt_> DԊJDRM:P[j#bew!&.ᤥu9m& -.xx` {.U{ &0O!>jv&H4¿ Vd!K\B$09,r(O)=an ip7]CwƊ-Jr=,\Ps1p70OV8$-ېWS𗃦6>m'вmI7MRv. $z`^K񀛱!,,a [!bhPa[|j>cCf~xiy^rk O4`{$)K/>.uD6Q]aM.> s2:- d/(XteA0bB0̢P%uI9\R(2atE؅ј}˸5A ~r&z1_2f00TO" b:Cɭ-ސDL,LG3,5P.u]}Qh؊ty ,`BhahҸ~5E @2QS -bF)H(K_PY;l"pM7bf TZC,d+>zF;Fѐcш!lm{`+;rcXmF_[f\轰^0!U3F?=d½kMBn {)E%#z >y&m"/ UJB+N:v\ʟiut|הziΒ Mm&柭yM2CJcN9כ&հ~1LD 1<] ! C60h"M2qo$0G(R} t>ĹQ4,>YudꢼL߳x ?Vz,6̰qvR/,9h.95B\mt;M}ZVoIMk@ Zq7\o Z"%kk[1c XA³e,iΝdYfp&V@ {j-@B9WޞP o>(U/?Kb?h{ uaISXA v>_%~_Mâ[!a[,ThnIhhY;C^'/ C 1j  Z27 L Kz&kl3=LFgCu\Z +#HXI&{pToİTv^ձW}T1$3f!ۣѻhC[FK=.& ̟X4 zz Y-Z8`7A÷i{2l05ޑ-@B |o*FY&czDJAA$f1!$VZ+vLU+Uɧ.S;W婓 {< 4wじ#·I`;ck!7 ylkUU&+a>_k+AÔf*tqf@sZeY9.:M/qԀ!xָ|̻~z (Yk{4-#CJ}Q:PJ `LJg;zk|òhAf ihjBAZIԴ䅤Y^cL;$F\ Zߌ& ?b O!*p4oHO`Xoרu\Sd?PI貸CzНֽkxxIL]9.,x\զW%g9aײ٣&Đd3/2ގ$NK̈́9.P'۪P fJLJ\)f⦾q߭q+I19S}nDm*W0+~H !!7_,\qB@h`!|̓_acv R/jC" |hshɈY>f-1D2#C/3 ->EXne !.՚.Ju-.p֠ZQx 尢}RuqziBȧzv7pÒv-'\`I/X `ıH&@י_ǭXX,UIaײw@RHv P eOy"sy jy{6e'q ZI`c1'yyGͣ]-@x )>S 3jۺ 18coE^8j |1ðȅHzCn3fݺYsrH;Ga3y̖Ywx#Y5Xu ?ѣ˩@1`0&ոאI \p_W~̊j`7Z@Ա^vܺ#UBOȾң"&@yQ8?c?-8C$,pIE!D?fa/ k8]Go C> h3﹟ҕ(o鶱+Kok!=sx\֣0{N6Ԝq!uI_ht /_PDWOT5̖GrxꀀWm2ӭ^S;n7"ߤvgFEKQ{;0OV Sog%>Ə Ouj:X O<]jjLyGRt~T{Okkpƫ/`=I nUݪI (ri0n#0DVj7X7ht2sBc=ҀS->T֝ݍ&l4T#iV)mQ{HK<`@ֱN Ɏ _>(+rMT_ ׺ҫ^y,[>/K@XMr@FbG]g|n k(=]?g @/Z:bd @{I0w'2'd:+GXTrv\U>R)s_xc\7AX:׵Wz7*I*+t[#ugJ!VYWԂ zrbf}@ Jt@[fo0v)QX;qX8]rcቡl¢'7uX,H}bL ?+N{yɯQ!uZ+.btcU.m r1 +9n!}V(}~Ge=j#٪G{gj\/[=`N >;&U|EpȚ 0\[Lq _n2Οʐ/ 0Wmp!' L,Ie;7k`ѵ"*y".j%FqXt=;~[~ru(H`@%AAI|7 WM+߾1{b:~5O>Z 32U20y:k`]H-}~2y첓k>7LH,>ܥT_ouF`6v 탅cRwK6Uee󝅪ta>ۭoIMղEq:Ru7挌8c"`?NkUȾV|͓VNvHhajM& _m`l'O-sˌ t tv_QLgPѯ3nQ'! X3ZEM"TW 6y,[ScW{(XcKt;B[$`R,v*+ WI#7N8Bp!L2uW\MzH>vٝ`Ƅ/i_^Brjs cMTGڛb7aeizGÒ_HyUT0ՠ0Z],a#j]ǾYi9d NbFC>*`3N$QPk+\\&0osYD 2rv9.$02&~ 'Lz7.lP}ďnH`ED;.3osMRl u q?5/I/Cۛyդ!${ y<+zXeG?t}\UOnUpn} =!DGI7Ž ӡ`Mxhz1%> &i㽡! l!6#I&Z;iD,D*6 >АY`gڤ~qA&R{H{J7Y$砤Dv(_-u|`P?XV6.R\qLLgӤMZ,ձ t- hu+9 X> ^Z[".63q<}O71ݛn|ym-;XMPiQe>-ai&X. YWg}}ߜ)_<_r{^ ./pdЂD%!zsP`="ty:5XuȾʫ"hsuV%͆+X!00&nb$.4q , =@|{*oo )-*eSSgr 4R߿ M_<%vSfp$wIOAȑN)aghD &~-e=TB&r2-LЉXj(>oWvjh-x$`zE`.٭6Ap晞hr_NRNBspocXu+rxMH'|35.L\3-"''D~yO;;*"@ پwNA/pYS*VPrAQ$(1?EQk"DXr9ItnGlPQ@v/e3t dR_?? &0,zt\ĕy=zBRw☊EՕZQ~WݡIhrH]356ޝ=g$,Dep?Xmy W+kbY E0 U+*2X!4h@=+|5e^h~10ԃɛR$= [.-}kGr\JUD. nS; /V'ۺ$b$QKBԬj`/BHbsg@/py[\ԃ28 j. @V i-4u؅]=44Ak!q9q5 q$/&íb玏W͕(BŪX۲}Na^ꢜc4J_d_BԆх4#(9!$.F!:Ux=wꄚ* r 6Xl0L V+B5v m _+|caIʯ$h5ZHúYءg\|/-ϒ >)&>xe'(ouQDgUf>C'׸naEs<C~ $4ГEpЅx]*D:0Ys~X'{(k+Sց ` j?DBmUЧ70v5` 3K_gt@P=|}\XU+nK$M>>پ A ߐ @OB[8e_6${:}s  kJ X·Cf~GZ: NL0&w%?/$aSyR(y~7riGoJHDpQKzc:N [ $@2{_f6V@ tBl c* r2SOhi:j061$QHZ d- |}xp%"[۴>fm՟-TYGj_}li㦏CoXGFC` $|,?O[K$d`]GRKI# % %YrUA0RpB] 7 ` Z8"Ǣj"- 3Mrhc9dH?$䒍۹Oa.V\U?&k}dQɤPl-j;\)wE@O -txk(ASA2UH67 8~f=.r2W#4ӴS26v&+I&rDNB6ztBuO'{Ggc'ṡ=E͎+. kSz_CXd~~yɱ}ցl_䲂d5d+̏ZHuV(*cKͼql5=EAq/pv( D[x4Ftk_ R$ꄓF. J<W|PKj=wCŒc/-ljcHRΘ5%)Pp"Eu-%1s%c]~p&|B:BIvY^ʃ,Dp 1I$NgtGa ߾6O^;G; S\G91Aqլĭ^zm})yRh/=I# wIXD|Rk,K2+r2T'$(<)t#n^f cZCM}V*N1Ca;gPLxr;u+b5{;/;v*j3C1YnvcK`0 BPZHN̳*˧CI rXaTvE`~\=~Vtl)o(YxԱ Rqs A d%' JLpVBzCA+HscU- ' 4|]*@2 ѷ{mwL޳(.h<| vnUɪ_NOWt^eyl@0yqnDBYfya44"HظhVDEMP2=t1]=Q!^s euj^ÚMV_ٷ;$B`ŤcUˣJ'[={ 2L?RNf!#A H!5*Dt2͔vT1τ i3f#XF9DAAuە1Lly2GRW &E5uhi_lő:OV]Pe/0H{(= kX~!d5{|+(oKi՝pf;Y Eq$e7p]v_H!+z{Xy0/˥uNOfasZ`VʙfiH{@n ꕔid*#9:lh}s\+0<ʉ{ϫk@:jk3n |\S~O{[#Zͷ=, 0,zLC*, g!=4VʸnP@\` 1k%5nŹAWp>;Cz?SH_3m `xm50JTp`fH&,V:rywfWo~q= emcg '?wF{8zt%ͪm@ 2XFfDe-̔r-<xaLBI̬{Y?YS8w.ys}g4@CUt;쪳(f!i`9EHрw2 (oj_aaնO=}OÑբܣvsG PDF@,uhl?paXy\ұwA0cYSDt R$WiZ=̟gc\y!uxϼZ{ ` tIZ5AZrB*ĖV>KלJ]f[k?PyyyrlX`V-J78TzF#dC ~(@j<=/!"3S3 ^9'd0ïTgg=C+U3`E.gu (Yund{$y (|~;GN}=lP[؜"m$J9wqKH8V֞Kic9fϸD.GNWz= XHI5p8a)Y1ָ+E8!_-E7{lH67niL Zj2 Դ[)U'TK|dVLSOro_ iYNAT{=5+AP22XӺ=^_[.>SS lmK:Z]J91Y}>puMnپ {{s5%%GFX&=wF@pnlu~TL{ތӸϡ͉GL/L{=QvUc˓Ouo_'=M6\>n)åg{E"zt):#M g3dy"dY 2# 32Ȍ 2# 3Β;^*aIENDB`pybik-3.0/data/ui/thumbnails/Brick-3x2x2.png0000644000175000017500000001647313137372555021006 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+IDATxy#虁GD!(Y&TԸDkEcUl&q${ꞾgU>z+7n+b. &b` )&b` )&b` )&b` )&(ZSqg!u'Ϯq{X}<g춞ˎ ö_gk[_z3z;GĞT~{ȟ|'" fLtҸa@,@|IWe0($3,IB "ɭTxZs )zom9]Eu'ҝw4tB#?A:,'tø3Я/.-GJ袻y,).X3tܧ(?RY[Dm0H#fZJJYE0-qkN9_Lq7AXN a8 pUUU]vchaN~N O' 5|e١4˩kW M)n↛ոaFy<:'.\.w]8ZG(I4EʯP>~c3.WQܰ↬=c" PoVT"jkkBF ?BC)l74?f^ޢ AH'n7(0RJI Q~[xi/{)5>ob`[)ۑ;gҮ(P^h*4slAz/*7]Uʟ.L V+3ׇ1Hgs|g8Y&q@=^T(|>^baQQxDS>B1 `@'ZDcc#"qX ^̑ه78]7z{'m?i"1* eZ &5k2_#^+w8 ]vkaرt,>8'X |0sT]Yuʿv)?{B/Y3V(`mWQ):yh.~2:Z_hudҬ=phd[i-eQ^ypX  f [HYFEu\Zd~릛6z_pVg-C )("ʆ/uL#n;iZh K=T~lBXt6wknbfƍǃHsR6N׹I!FPHbo>QʕyzW{_DzepϓYp!_wX Q) nᰦX h"pKQӬ9[ƛIzkp>e[7rH6aGa:z"C͉T>䭗Wv 5*_cO4&N{`=~&bZ'֕.=!ޯfu@mp`̜efT]*@>?\X ,.J]JHe"dCx QF6***5 ? Dp'O?vMU2`Pް$hd/ 6@YzNQovd[ҢD(nMArTab)SV?w&ӵ"eъ0C>>^2fT vw@ +IxA [[{`GnժrF+m u`Ӵi .,G(,= 05[L!,R1qgEfDּF0>bSyw^6M n'T`ԩS:o.`5Qx*@NN8x`oR"p=~I ZnRb:Y"+5)&WQ^t:X;\.NuTQ^ X"1 v* Hxc, EjJcMM #sKO+6%Z4OgH î}m'd ':]s p%(+ ̘ X(T`2 Dv-~*FߏBDB ȵGCEqȴ`<@sra9( +̅Pryj N%6k4Ţ|X]Xs! ۺ6goxMW# Z@ sEBPlZBU(@!F/FLmŞD,v; H)H&GY{<(L[np%?x<&|a 0[} @Pl@v!PȽZ10|H':|o:/w,½k3%0 /q")#u6BgAj$uH W#^xNha "Rp,'Y0V7ʇS_sW^[BĊZԱE^9]b gPIxF@JE`en u]%gdR0Ly% ?Rf")J޵~-ao*وZ @ˡ'QT"y;^_ uNXJ|.)dkK@ Cf*A0l%%N}8f^U| y=+;ljlev)`D aZR0kv W,"kC2b $bovShC hR Sڪ qq y+~Ƶ{^ fH b>cpzG`U.uWeAm|15(k))\#s;&IL) M2ud.?3>vjf)Vr @IAU/\AHrwn5PB110Vr/GU>d,ыO"u>ϋ98F ) ?GPrXx~V*LHK ]"[ 'H1 و284FX0:.B*ϯUUsۿWO_bG[Ϸu"0bPx-`YU4L7P / +C.)(oPIB!$c$ @ EVEYf*ػˢ+_@ Q#S(ogcQ 20-۷,""0V.ƾP%`/f 1 `Od  6]leN\JН}w+?Pxm,p<|sTלhD"b`` Gb@(Ġa R ڸʕ5 V$PMn@B:{@<:#nU@4l\Bħys(0s@qF  7 x癲m7.q[|jjFP7*B*SQ7b!G1C_$9!=0d<֯U>c%CW_A5CKlP:Bܚb/aP*Ȕ Do5XıN{W=' ^EIX@5C(m.d\~6?&QPEz%6aZ+$'d p|$ :kp?TGFxkh, M5ٽ2-AQS~Zx{]Zr%=g(tGˇUCe';ϔkcFoU!]/@jg(Ֆ0Y6蘠+V0UR>{m|&p/Rfm3f#wt]n}9)?2%mǧ M*q͖x FJy|\u~QSL&MksY3 xbU_Pq9uLRC_wD/Tݮ'<p &a V){FZ4Ka5`?\~NyQXC îR5ئ^ex`JC*e񱊨[.icn-?{>;љ  /[m[Wu_)1E!,N 6m*ǽ7/WyV |x(120Fam~[ Wk?>45 p:{`H R0)Xe2a0ǽaFfUº?\RzFأwH"wa!eic M@ SF*E ΐUx^0DV_W]ue!Pg aAm/|z]zCBҜľ6 aw{j%O4A@ )ΞjK9sDߋj+$`X#Y'9SSFkS q BO]> o4VVr޼~crWLbIBh ܟuЧ<'UEFϓI J8M{q&O-18%sk]'UKΛ޶vXyKtg @ xIw}wX6{&eX;b50q|&+rY{&) [$P2-lN ?3 n$I?|t/j߮M6}o#leS9PTj+]߈16աby{/3TAclןm|y@䲦55=1Gp\E00SLL10SLL10SLL9FV`IENDB`pybik-3.0/data/ui/thumbnails/Tetrahedron-10.png0000644000175000017500000002741313137372644021560 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+.IDATx흇wIzٔM^ "EҤ"E: AA`@ ^BoV:H M,sϼn=sϹ )lv73|yc)K#G999999999@1E$%/ԫn$]: {!kf:%kR9@ 7L}4kL ݩxa,7n[/E%ܲL?g˓gyF~9ޜ ;rgڭ̔?SΝ;'D{@ndȜw( J(,)WΝUTUɓ'~(;"J˅ҶQ*UJ֮]RD8}{,|hBJ.-۷o]R4)'FEʋ]ʊ%<,?~Zkפo߾c R^=iQ?L*UߦQߑhA5x^ wakŚ 0|YS9]SS)''˯dv+}PDSݏ=R7mT^Ν /`}IT?E Pލ!5:5?֭[%<<\*U$+Jl:9߻$"ON'fk6lv\ҥK)[ܿ_󒚚*C͛Cl@IK j>㻖I K9r9G^q:8~:uȅ 5J7n,*T˽{$::Z.$ɵ=IR>-@ʧDʠ3\5C jijL9@!yY\YYYjuY~,4 <[.Pta2b$Il%{R\U+w޽j]v } TWܷ:^jwX_[JCV͍SY劍&-ZawZqz5<,g=\'Dë@0Sa;wrrocvs1>O? j^?ʾ˷~,nXF8u}ѵ|xgTY跐Ei;ȸq$==]u&7n:ukjFI͚5ߖ!]"V2_V~?u^A{ wEX`odVf2͋'M$nݒ2eH||ɛo)077W=|i(DV}r`<0F}>7>J޺Q,T㻷&ȋQ:%Ho]sN:97ސ/R7W˖-L8 fv1XR5N#ԫ&6qQgeXi0EE&>xw%&iPKjujǕQ7F޻%1yn9ă iҪAv quq^k*yG- e"II w׮]uAh$@ћ9s:)kŊ341Kf[d/Dթq4IOE<,z4we[oI>}aÆ/ˇ~F?s}Zs>F3f(0zh}L+00P1ܶB3_{DKWdΘ9\ZEyscΚ5KAߝ;wbŊҡC?~rڵks8N}bܷOxP? úIfoZ1éMqI4t /z훥~^|Wv9]x2rH^xDǎSg֭5=lڴIҶm[Y`Ǐ+852 qYV|" lnFd~u`pS# 1`̉)-B7'#X~xjyV5+7o#GHNNF A  4HF>50xX:KIE7 s™"6sNhAnQx[ȅSϬZZC1bV\6>[ FT3jpDǗCb_ܩnYFxo|9%A&V1TVtQҩNr`QqPi,z*NPhռnB=d9YٰvT8,0a5>xg[3eWV g{Kr3CI=`C[ LE1op"!L:[vP}}W8,/k5r|ymߞ /(ǀt~')G S@˖-p >TpHƈwOOCpSGNb zL٧}䗟RA -pf7L:h$IK;'L9׮[G9a'9\X_)=a>_F pժUK w*&y`9C(ʪǐZzf!᧠W-gR-pшT`)"ߤ$y IrP9@^=mۦõyf5"qU۲eҥK{_O|T Y43i!HeX`|muthjR![z4igۙ);ۏL΅ڷocÇNۀ ΁ԋ@=?ן':@~VU |}x> Cdp$}؛nyL}áǙZ@+_Ip{Z.ARzF{ov=ȼ16:|aٳg{I%t BH/ Hsyy=c!m%Z@;"dh7E6 R.+FƘww=IҤ&F!ԭe8W;HΧM.iw%$xz-Jv= j^>~Zx[ #0Ô'Nʕ+D/@z r[NW7,}",z0x~:~:*P׼K~dvS\ڙ(ujI׏2}ky&]TH׎5SZZ.-]9*>IzI|)1ס#^ Ak8/ұcNyh=.V1+>m\r!p(aV <$kgO~8c"uJ \fQĀ)ãd`ZQ1R&Ք|Ҥ[?kL;JӟR&@`'B~⠯aFy3 KyFس}}\;M;c OD AV:΃98 <Dž3 b{& < ]&vXBz&^C5HvYA^R0=Y0wp4yt9D=v@{+L!QZ(g0S,u=}мq;*IaYjpcUêTCGjJI8*`1Lê8W4P@Ku Tt `8YLxyT4<}^(Lxܾ)Jy&HnhC u"螟{iqQ ~P ))y? z?8 9vVO5J $Ori1{|DyLgd/=Fw0 nORwp'7rcg˅e0\?=|-^q&MԀdţ!҇rNꦬ"{A}?QڽD8'EdZJŠuExi`:w7sbs9U oY?M5B,]ArҤA_"MR\a?iBU^K Adke0G&#yFCOXg N3P1dvg86 ؿs> HJWV1M&|O# .!+}m*:jl|53$M5΁c ! &FIxh)Rj>ajQ)BuRUD`xJ>\ SΑYͰu'N΍raYD!< дd0g-6mO|t /sM(vMBeh/ )PFN!f#)!7 [4h䒞m\Ͳ#S&X+\jV -~2N͜7r0Fa }zɓm҇%S`X`Π$Q FjH38gyG@0#̊l Ewy`U0s::W$KP) /{:~ !0.fk+f[JbWw'Gn"A \j;'SġBdFuǗVS/cH636F˘;׵*\8j Tj^UON{ bZF3 vʛg_E&P7\YɄqȬzt~D=Xr…@c\G.ϨyL Uq\pT}A(VW7cBx8Mtr=#;4Xŀ;*.r@ NY 6a=FMV8&3j?&S2F9B֛ M G=u܄j.q!zq0(<< p>  \idŚ΀AY3C#`@{Yu}{B:Ar{t{ y[= &ps0+7`oSwGX) .sD&eR л]0e!i蔳!ARMw0B'3Ŵ/:?`:2BgЮ`04BUm8'5LoWp;) .r9Jݸql(+7?V:%(G &"â<, B脏3]&#AɜZ$8OA{C"Wch6 f-CuZy`,]!kf;<#[T=ePPxWLZh)k]9,/T QQ)k= dP2#ey>BO]J o A7n<'Ѓ!  ~D4\ B3C!v$*QI Bm;dU5(>a6S%߬Z[ ) ϫ?u*)͋Aiy[S faZV0dhtjoqTBNy7AO]<~D7a` ^#!`E H$t4I%)97 (&7jDOIym;`{D!vFPVN8t 2Kw!W>at>V- e%рT [zBH)!ADiDyoP, #`u*=Ơ%\o~)]&jtP}Aļx{ba6D\^2GaiGO?o@I7`?xU1#A }Ys8>?hKzq? ?14 =XyjC\R!#P'sJJ "H deҀE9R 1թw{g-&pka&aC teE|%Kr>_ ݀=lX;@W|?cBᇗ^|!vY$)+uFkh_;䐽mΝ;ax=v@zUc L͏>{Fdtp 8hqw4;A֋j=_  KHjqk~ÕOB1V>RLXԽ~a"0EB@0J;&ۖ &|*fʈ>=ϠΠ8[d˗M`S=v~ jûbd~'{2 tZe~"P UL#̔P{H%(~ޛ}~trmߕ8=|GFYɤ: ED*,]ݛ$>kp?{fmUogsf7 e`ȿ{:|Lt1;`ZFNa7P, 2OE*GC@G@|j [zDL+@RMՋ?[f@kQ^:ܡݿCdhWvsɖW%+iKi/ زr@ trn% A2m(dkGәc:6أ% HDI#{W&31#spPw _vGIg*A Sޑ2= 2qEE\&Hr7d÷ <ǁP~~w۽HaGah2۽FB`D6m@[N2P l#r]_IT6C 6 vȉ4g?">/6ySv,*- abK )H!W菌:fdG@DOS %ꫯ8 !='խj1hapw*0@'MdJ]ƾfeW.+i@M49c@[ p1EШn>?0< 3(2.-xp>+Đ|-@GI Tu:԰=!ZnsX?3ؾJ߹1?_˲"'$" `PpIy>8d߼|߰VgfoM:d$[уFw1]8Mdu@:6! ?0ơ)ZDq`=`oL#A)=F>:-! g!DX1#dīċ?tҥnF-_2|Oy!nL6z Օ- eC$)_;0-:84VGf+d`8874/N4LǭWCCo ^Fb+QW6Z#ͦ-KX=#FJ0:\A"0o8 =xS|Na?X/V?:XBARݛd^=UhZP>fO3TYCƾ3l,ࢩEEd!(@Fl6cc, Y|{E\cd/*z ZdIe#b4|t 9FCpgO j?O9gowi* 9uFepqp ʘ$dagT410U@\t5QmP=:B7o~zlˆr;̛R-(!U>16!J>"dxxђ?n) iX'A}۾FEɡWKn˖lX>{>SaQ,Y.Q[41 |U=Evuv b0}ay_  @L1h, |j]ċtȒi-1>6,pnѭpoXBlUVl~CCVG$(rpQ1AFcsI.l]A+dxv(gRU*}ܓLѣgVf-b>Eːsb$)>HV 6+?LG͓RLZ =,'};&%UW`#Y>DgaR!#/>mCu7=3pK{ ꦖ(yXL D9EoPLGeO5 1+!fϞ%^h<} RN7yT%>6cwJNVtN`6@ uv f+2Kp׭_L ٻ{$Y `jzܫjNZ[r&U=Zkl5GV8-e/ʟ_=d v(5~qesдbmȬ*)R(~ǎ,{"bc9T:Uܺy>x$/#8 H𢡊˕D9+W4 xY@<_=ALgC kf ]B{nTtmY%(Wg|5~tGd;9999999o؊TIENDB`pybik-3.0/data/ui/thumbnails/Prism3-3x3.png0000644000175000017500000002510513137372652020646 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+)IDATx]gxTE~~B&!iJP)tލ|t !!(MAT" "7gOْlM\s%sv{fyϧfOR (rK9ʥRNr)'@\ P.(rK9ʥV !?wk@ tŘ\'''2-Do2M% AH*|ƄGRRҨ^v;-ʜ~}\vʔYT$"zUTzr`*UD@tcn[(9J$J=a7p/oa':04TK_ҋ;l 2J\n*%4JpN[A 7ʚISQ!\=,WN~3f !Nz M#(ŅAƹ"_}f8Hh|Ke .Vtý##rݰa&1,X?r_QM&JՔlYnr7v۷*U Ԧi7Noj^Ѱjp?) "@ ~zPi&y @Eg£f}L*wMe; d4JTΠ]V`hE (ΟwI'Лt}Nh'R0ѩZsْn2ɔ{H w26> ;]zossKVRBD:k`HD 7++̞=/ #!QSQގD312T#s, p\l2GcJA1>bGP$l^:~<x)MollDIF=@zqs ;=J.GX^8W4GJ%HCk% ״o ׆V"}K7Ag$..N|ȺtfX@G;JC?_~~ J^OLЉi# @2>ck! $`s ,|܏!9'(};ŋ$33>i<|WCei謱-]*Zq-|:FabͰrM?Le|$AV"..aAК BŐ/G'(W ?)S UA4~Q~b XP ,\ Z0ٔr[KÒ3O+`'8Wk}s(}>.|CRG.Y4O7?~(f~* -dK;Y'`eXdQqV$F _ yxL|IA56ֱX彼qK_ׅ͝vR#ҦM-[͛ƍ 2BժUTVǓIBCCIPP# 8 M`ը 4kI*0u$B;hè`I6 KF N-`LrJo̕y ܻ=9!Ts믿o8L_>0`4BzhI+I$ACp N:Œ6I* Iiڴ)iѢہ@@,}$11Y*A #K.&kݺ5l5k$UV%+W&:DDDȾIUg5.䏋QZ4ٴgeC5t&:N: % %^5H|Lq8 wFxgpD.4$ǑIUH:u@ F|<|&LֵkWңGF<vЁgóHx?D[w&6c@a$$$Zt$l.$+s'Wuoڅ8Kew3 T`ׅ}H |*%l:5pg/{nAUv9LL;w#ٔbg\R b%hl E T1J Nx,yZ >IaDMSN%@rr23g,zoHpY$z}3@LSn(25VtVxYpHaW4M?8LT0dסCi01cưŋ?dks>`SOXZy,,3? E<b鹳.2O%8_pJmEBT/U |r6?~}MQ#w2hPNRc@l@srCre& ,R9VOupQx< "Ç80p%9>Ռ>χ"Ep,+8hBY@i.5$w[ a//Y]Jw .$84T_<!={F.\ȾPڵ4Rɓ' (7|c4VVK{O7p$KJ,R^%e;u4"N>${sFE8SXg|T2(ap1޽{,:V?1HCµpw}ԯ_meWnvy8$O@:#C"6z*ZM1"]! % V@`nڴ*6-|d#nXoji~6s= A뤭D:iH[7Iz&aX(Fgq93 ȀKN.sm$ ?;]?Fr#I#+r[g>'9 ^5o >RheddQ[' )ܾ t@t oBpbšg# 8>yF:UMVki G="!AX;lz9p 3Xj0'S {'@K=INB,eK'r3;\\1h/[?u15]|Y7n//sN>8pg?hE >8V)3ԭ;TPNNu~K^Tz۹LǎSLA5l#1M4!HA8q~X ݮB| { ioы cmI^1>|~/`AbvZBBtRR#Z{.dhP.g ] > D v"bKFAK$ QM'T]4c7y)~LMuhLOA3U !:{zNV9Qj6aV Rwضr4K6mף-O 9M((zk:;Qj2:4tժU&Kv*pID:CL~=D%Y=R !^>^a_r)LAb#@>}ҐR2dڽ{w0 }LIgJÇM%)(iZ1d 9#466 pgPc^&ú{è!a0\*DAb#S z%PǍ: " `͚5ދuyy~F,ד:hLKA6 W+ _E\́ѽA7<ۗZMi)r#G/J=t?^n k:DyC2 29 Po)9TkdI2̱W#FuԝjMA<[c W!(~9A 64"L_gqk ti۰a{/ܾR;t"1KI0  s1>iQF@@_aOwJ࿠;C7{[K5F>.B<gZ;9 "6oG;|mc7 /" CR)@o@#@Пs+rSSѤV {?~ >g^Sar~!BHK}/؏"ʦ?/E%]HgѐIR@/]L6u2-w#[Po/cADgӧvϢ'j |3xAb࿼CfCTߔ p]b pD\a B+v/F=zrQR !JmƍQ[O?u6~Zj@"C࿯$rS{g[ >ϋF 6+k[l Uܱ4=BCgýE $uJd(r;|(]NC"xPGfٺ5Yx1lԨQV`g7@~Ƀ}(RWȟPM%|s H0%-Y0WX4c,v9胦ȓ>slj OLQ7x`bm)&|)RC^ܲ|C:seX8W$¸m.|_AAdKn +w,}N߂+Q4Yn0x$5(SgmQG<:y1[ADŽBW7sȒI~"ľ^U8>"2W/60{ !B(R?YCjCyB8mi @:\fW˗#Ex-#&ܗu^B"] ]}-+Zd&S2bu{FtZRvaq@Yrn_c+ORA(ZJ~!2&Bfa϶C11̙36ѣ"&r~ s<UCjVFͬ0R-Vy=`)@3~~b9;R6yg͚eUD Q)zBO \- "ęZj`sjĹGE(O右Qv V[cgGQl4 aNn50 q={a@6?xyz`՘?5l$Epe_^Bw 钱}RKȲU gzN^C@b$@4h !tZ5BTJ&'(]m M$*i 1k'7c;zTO/n HiY+cyC6'@uQ5O8:r{FC#zxY >v1x_ 6^^(h~LB3~/̀nM# 9~\T6l'L@ FtW> ,~J f|O5(#(LnLjk}RgO,Mj-ND HJyn:nΥUKL!D CCp$օȂNDZJFP= 0cO[hw1F.^z{ mpR5V,BT;ܥt|K*v/ʳ!{;2`VWܞO'7o '+ e؎"ɋ<כOD: ;4>|btw"+, >-kFdZE;piBi?+H>k.q)سg ^) '5iZItFag\OZ%q//h[rK!tE; +6mLCu̹r#:ط**tl197Qs˼ A]%]ױ0mDƏgwc lW;k֩W F5r*!R yDw!/2/0}1T Ybd/J2%/sPz;UW_c&OV QR۽{Ǐ i`ɚmL{Z1Z$${}0 FtjǢIBI=:'L_ *{*oY22E}H> ͘1Zy^3qZA!:H@ (XIF/!O";nt^i_>]8 $8mD8"X(%!7v6y\r2GLXU*0d(eϪ5Gdխ*D =8(9Z#pd gx{:PÖ6&CG2CziRE[G6ҕ"< RLq ; H^ ԕo}7p-V"_Wɴ11zGpIp!wފk= M6%R"{jik"EG-Wwbvc7ϋ;_ 0 @B 3g:?$!Y>2~fGH!@=Eོ߶)(VUj"nJ! 5X)r/FE'BP_t=QK(1M7S Grr{飷t4?|,;j\u!$'=DHWUAȼҸ+>f)`R9}6w<ۿT8x^+`4nܴ)PqH72~VvBkEȉ+WR, @Wt6;Iŵ)e 2CVk`2ѣG@fkG?j-V/SxBe(AxyY'~Y39-PNBH3ijyia#T֗%`* gq<|(tuu޾T+4-< "ˈ#7s!ӫ2y8gu~$ rH f\R*rde˖\~dNi@!_^$둂:M՗kGȼxyVY]1=a pHYs+ IDATx[lw -i3;3{\ivDRɭq4nq7Ms1MHD%6Mq\(1,D>}g6ޮg`''^s;cw@+ o @ @ @ @ @r>~N7Ô2 k.>N̏OwQfʡa0h 656_cu?'yHF2ydN4?m\4v;[Nai~ja GrNBvw _t9`B 1α[4tXu`}_* ̜!tobN6BM,3Hv(Dk?ߤHg{bB$CFD9R0I]I #ߥSxFfBah 005M*C2GEnI4`SSA4YU!2 g+y?8$D_Q`(cZ 6B4 u: )]ya1}9RX/2D$J @3t+"X}/0 M:YaKU1[l[3Xp9|]}BUkyM&&`nd{Y"ktuu/r=_3o805$` cĮv;o58ӿB؛s{AXQK5MI;82$:6Eϟ$ڽ~B& $/IbI[쭮bF=>Sn`rIE rNApG|$46kn3)Ÿp~\&DɼyOgzGuJ` |)P8zy!g,FY= 5M?dySϼ_!Ӄf| \Q۠jȲ,D ~> (8&.1?'!o-+l$Jɛ[9"DPFD7aDuO/HX/Dêyt9 ՠ2fvx1?^}sM3慪6.\8y?"DFGŚ~!HU fsE8[/zj1!=׎3f0Es#b-*a?iH#)s>FisK6D#?I`Bv-Ig3:*7nf N'ZWݸ>.5fl+ 6N%%Ek:8"s\T(Srˤn *H װQ66yJ!zOe22I-W."Ewi Ѡ &y"f,wwzT upg*z NfQz8?GIn8:MDYIDȢ)#bD+5ߡTe+{ ,:[5cmb3 Cng ᎓MY< N;=725OCQTy@E"Bc]KH3wB&FeKPHX @T/8"t-5{tOS JzB"P[NJ 1B1@Jmi\4ɳ7"O'(4C#+f*jIu UAl>@_`/(=ҊIrT-0qZφ~AB'7N#O#C.]=(E?dbk㐤 $F#T}ªAo?I^0(8t_]?9Ļ\+ncƅ4UChVɍ|eBP n:Qػ4U[BH<ھq2Ba pHYs+bIDATxyxTgEА==3 YHH5$-%H})w׺$ (Էb6jz'9fr̝;wf$&39s_W/?~b{-mom(DX(0:.0_UT43Z@LLJSQ`e`e/PFQQ fe!kn1mBM*)tl Q8xuu-1̰!TϝIcaWL3 @/3t jz VtӝLQC5i!u LhS*&0f3,LL IMQu~̷Wl0l`{i7S C pw3ma߳E5Ho؁wU4,mmwCr r괏J ;YTb1CU-|cTo?i~67]'B:SADÓmWo߭],DwuE%%m}Ғ6|5,oD%SGͯ[ւ/wo~/a`DW* OoT f4㓒. `~|GZT1]gK%J13oSy8M|yAhk=kE*Xi6@?@qRF̈{ iUyI*лp]$`e-@_?6oB4+=j~)EXєTWU7!b~3Ű&YEs*p|+@Tc*p|Ŋ[UD%ŵ:vͿ/7AS%edNctfЁ~S,&~i}o!%P0rTf֠q8>_.曙t0_BKfRCA_ϗr j@Xns![]b{#.c7d=~L35%pBpp0AAAA=@á` RAJk{}d2(<l`nl!hz-~Y'O A:ЗL? VVT3xstJu^i":6vOQ&tvp{` +w$ 0CXr-ύjGh 0}С9;~g/&"#)d]&{6Mֹ3vذe˶E +n'XDCx*a7XK+c6ڧ1DGNṹ?#|Pj-Aԑi|~JQ&;[՘ I!c7HfRۈtu B5|ۈɚUlJFRGHHx 6K_td __X{.՗2kV0yD1m`Y#hb  SpP0DDC8i0`+AG86?giwPqn=9û\,\jK*͛x8B>V^;! ӚA 5u,ħ(t" 삂*,,R.tz.'}%CLPZukdP Ah2a>=/"${:x0  vLGh o3nsrrEEEx6GS*r2B7O'[:%CVDjUVp'$hŒ䭷Rtzb} $£ۖ90PwӑjddMP`Ӳ"#b.bPUU*ZBq}#0}1$A6:@hgƹ"ͬ+ 5ڥ-->|nȑ##r<^a޶w[ӂh-6ڿrxQ#`>@%c᳧u3 @b[`? !WS{:.6ګX sAdB(Gۆ^RR…x T5#D'lݩ+ٺ#b|!7ɞ:E @~Tۭ,zeG &A7^ '"ģ EG6|pnѣ#~Fwr0C4fdCO} I iwB!sZ"@^B\E 2c pa1a6ڇȄxi@.5j; ;ѻK:e̞|7RUjb_lS]Z ŊͷB1M>m>E?-A.zo`#}-Sd߈.hאa#ü\Qםi͂(T͖7 C/謩]!w+ Q(1ֲB1n} { t&x1cPYY#ў*EhRi3}htj7W|bO'* ^{ X!T8C(KVEx񥥥r>=`jEЏ8mrPCP5h'( t-<2'ڭ0JтaE\4xD r &ФIaEnLa=zku\bPc>Z aNv,Ssv&HtSuo=В t-(:-M>hGqp@[nfcQQg 6_/tzkẇ:.hc$aX>}切Q@ߧ'k(">N>@G 6˩GEjy&~ɘ0{CuxUN: ÇhX<ٶ&H 'dm1]^a+ѩЩM .;ro ,4eN,= )&:'>d>U-Z@@+8ow<^NR LZRD]JũЪ"kIК7 @P;5Bx3jFYG7{l,`9VAJ:%||IqεN7.ZR h<NvH5f>_ih +.'O7 tBv'lvA󡏏^y`~_w;< V1Gt-I^&i&7:x-$͗E>/*LxEvS E||hi be*<*@ o{CkGiS`א`T ]Ud0ЬpMq \*6l\ ƅ T۽L7y+O9!H:@ऐ|  'ÙsL_@VJm( R^|s  ?jgP:DBUY*{W|S-%`.KŖ ƪpY+p{{C^:@!Xa@[kF1Z-^ {ތ!ȟ3 ||fR;: Z9F`TP YdjOO_X)ӬZ #CP(-`'F~' X-^nQuϚ}r*Ms Xh[(z@%#.ݾ+xxcѧ@+g0b*YL\=󡻚b4b]o QE[@R1`)(mX %3Le *ٳzT`hv/0-`nfJpMcQş.|oZ@ @))/VT+~f`OOiZ2\QMf=:f||3ɪ7ҶEWT$.mɵ%pөՃŢ _` 2i=wwO {T0.jJX&9|{x٧Y&4Jdp?v-u?;,yYٛ2-D6[ɘ͗\T` `R2[:o>Е;b C|7ll)=' }< #\_` _J+$6x$j=Af&lA{XvDM~J&mh4#FOs7_ەH%n1ޣhP[_kҼ={v`>$&t@z*9*6tJZuUG+ܑ@Fxx U jaɫόWY @5c:45gO ; бS P Xf~\> h|N~@50HA\ZZ&Z·`7[i@lg~OaFѣf]f%!5&k$ 4gfv&\p> ۘi4?&x r=el @5#|FZvS DZo }KE-SAqX^<3ާ.:4ǢGas#5?XNf7I'rf|] eb> 4T~߽]`i[;> m4͢Xo?fG9}>4DNygkwy[5` /^a:`^d/[eE'1TNn&c|@dd8`em$=5ӃB.k%qIENDB`pybik-3.0/data/ui/thumbnails/Brick-10x7x7.png0000644000175000017500000003265613137372634021075 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+5`IDATx}yTՕ9njyj}Dw" wɂ5E0 -:YL1=8I:ɘI=W[4 ~{={[rK~|qG!yG@~yG@~yG@~yGi{pRjF@ 1d@%s=C7}Q7?1hV57RMlj;tF; o"| w?9qKj'f߃U;KkwƬ,5*>ؿu°_RY^e{j߫ck1E8H [JE:*>?8q܎]0c̃^@ | 0-KMvP^u{;+xHdc؎խV>T,~oxaI'[UJ˯:;֚c.^Ka3n@*JE g̮,k0Wf~}0*K08{9S~_Uy=jByAy8߃,¿\f[։;U4P!v-߃YaQa'JG~923^!/A8ᘫqRjX>0Wx`Z`w=- T7,0N6c0~UcF1:OL6P·q\ AG c|gK @}:|iQ|~?!9:uF3\OAW'V3ud %aZxPP'5w;\LR#c(t2xK"ٓ= S\;Zj,Ax8Cp1 5C ȃ:[xA]u71 pCFL7.1ރ^d>fv`@ٸ }LC9Ͼ˺$sJЯ=ja5߈<#f=DGYi mcH43F;$kt_?e0a xzJ!0D>^'z8 /5v7z-[E. @.4\y5|K3;B$|#g2ކa/n>i̎*ڶce7̙Hᆚb̨gXpؗ[ uv=cM nC3ygx@+qGrw6"BӘ-ZA/\Rmxעb䄚1 (z'MVCסN,F:dS1 o_7\)m[FlthgF09<8M0{Y")Bp3Wa(dgͩ,0I_yIR%ަh G&=(@o VŨ3q !CaQ2mu>cG?r=dq%;' )|u_|mE++ ZC)q\ A ?òn5Ɵ4}N T0}7YIbIIy3F6117 z%>};aRG’ލURQW6nlWPdI6,3\|Զ_0vh3309;@L˵:=a:B܇&ˍӯcmBPPq)6YH)~ոi51q2 ^8no+ƿ|=.Ri2C*HQW}\n\Fa'f0kŘEN.gLvuQVWlSqA@x('mE9;ǘ !(g]q8Az"P!1 zok&SAӾS45!;6'VwF.3h10F!`F+1~42A0L d}.3d,A֧ ף Qۥc=faZhҩc888 `t1x3.>ԨVZO?apUOE;Kfďק>x6feNp⌛#Ј9yÏPX1R3 1=NJ6! aF0L1]7e~!~\ߑ5騻-VhTdds3ٛ6^4R.`):×gMu*>e*@3xl&}Y¥QtSE ^0&g(? yfc)#Wٺ)4 s9& U>oA _7:u<ߔb{!/wu'I?=]e%#f}6^cIFtSH 9ڟ[pS]ܞ[zvÆ2`!Z ht /uPY>lD&*/@Aԣ~T2v^DqUL ~ (\gxUW:|^}+t1J˿Dx.1n0)ȄIИn G]9;+mӘP>~hzTf3 p x!@.rw4{~0ףe*5.:o-3-Dȝ"uVWh@}2kRA`D8WU ]0T𜉜 pTX#xJ`] 0čü<޸գYFq/"#(hMqfkޜFL-3qw1* CMql,lxnfrx''уj5q1ՀP$ֵ':D9hApWK|b@Jʿ4+wGMh-xոwF.\00\&J;FN3lVo#ka G%?Gb 9==C=X}e)ETybVxSp[XF&zQLXjpOK=@Y5ϬtxWfzUbAd2<3<=^-fJN)Y_ٱ:Sssa%CPQ=$Dp.Vk^n.$;_XAq_g1 =f[ aM _(sIyrnK1>l%9\:#σj#K^_ީgK7j( 0\.X `_ ^c?9 TdXŌf*"wr]i꠫vG?,aBai|%1=8xѧJd_:>@ cC-k{/iIL'a> `?1C#*$GAxf.p:|^eh#vY= C_ /IgVE LhrCq>ޯd> ~>Հ~-om[Wڗtѩ:uce-hJzXiL=F ` jV*)w?n u,gqzw3ؘt s3zi27`s ^c 9My_h43|5 #jH/KթǫT,U}3~oUj7;~ҡck#X x($~v= @lTp/fx,Ee.yX$IbMM>m@R@NuM6^%%(d=`+>o3Dp\300diAS56`JṔ uza}- clK*XNe6Iv(Rms@/!>Wicw O{ pE)|Uސ,È qnRóF:]|#}F!R0Sr o }fҧ>|\C纸wA@-5T B8?>z@v(ӐV'%at/iLƘp- iHw}vV5sYCma<|Vn QQ|wU&-' N%BD) 逊aG[}vn*T:c%j< t\5 ߫VX9)u%F ]gU0p#cz;pkaŇ˰~< Rsze-s>uƤe\/ug?,$<es*F*wc+Y 7q0~C2{[ UqGDm-usZ=7,ߛkOJ8)tpU3@=|'Kt0j!$R*B"+2׽!}MBE*7 o9BīSr{';UCºe+V=LmNY16"\=Т!5gbPpӻ5jrMLkuKb9 ,pjHU; .D'^9I2{CAY86۫>ܿݛP)$hXGvo<>v ^UǬb/SR!qⒿz:a Xt!rL4K`@ xh+)Lj6X tD$5شڳ_*ur?_Ue>_>+P#XުR{.K'ٲhk: /0` *_!g9죍T12v 6KqLǐ`, %k2zkg8oJ~ﶯJW_^F ԇuFXsvNԓ]'LR)驪 vn۶"3\ 0}_S&`# H3|"gud?] `D,ro%vb N=\>_e5EԱ]רAgiImշ+"}tB WG:|r"ŝ@|tb3[W?1TKdR. =Tj@-' : cB8_b>FзOi{U:X@t LB]#ڈ2W!2k"?~&2߾Y%cmI>ݽeajpKOA333@7e4:v%}bH $yRBma.(ѵKBeD[X@/RO+ @@;$GK"RO М%qM2vB=`z<bHhmubеc  ވ(p^*Kj|! R'*Rk/u~ބO~RM  0C^B!1Hw,oN7(`xZB%͢T ~N \/Z$5G◭D#EAMB•A-vH.4P$CE^@0toXu~Ɵ[ DXO! 2[. 46+7 \ EtZ1-zU tdH2Q+Qtrw[҆\^DYy2>2?)_:DD*Х“AFc=$ 7ϗCH(8CO(;G56> ̺fVr7u.cR Ҥox4= h2t1rM^x@\4!Qs \:5?\ʮ&C6K:0,.!TO`o>SBG? z+Gn@NrVH=%^ZBxǫPmUog:{f\ HqF ?LWli+0/lZ# I`Uv0]H_(BtQvgh/'?D)t@5 ֆe;XyTVQO<q_1'"dobp|%_~[\ oQ5 =3Hg3  jfY:!*/V7Ec"]]&q*OAjULJ*7kǙjI"Z=~I 9YBk$fc`@ɖ OY* @X2 / w>|£SO`!"4.N;1߳u~W$սE'9Ֆ1rpl}T5;ƒ)a^6Veb)'NT0x$`ewଧESYp~Z \xa""2cS "H0i|]j;uoJ27p^ [F`4bweL~4%; q>&%6 ^A$ͩ챩$;HO@#dKB- N9#j.ro@iY,Qs!*IŚD"bv@n;qGWmK&@@;!~5wPjߦkjg+SCh" n@v8i@whSDRm;[E򝑅k^!Њ#-øS$m!DOw¨1e$u,8J\tƼG/?~Z>TL`*gMme6Wi#g?CtYx8%>iL kt8qqs_if 'tw% B~.WpDX˪:!;E=t:"NR%0Q\/b?v30Γ PյƝ7YQ K#|D[<]\d/5J}T}X铵yRD.+|Y(9giF8O+L,=guqrӊtH՛[0 'B*\&Q|rt#EBXuD aeĘ)?_mXEXo.Po*P٢ rÇsBR`tMAn-zO ;f;]9+esqDt t~-#(,mУl﯐O/?V(QŅ~I f߾@jSqShZˌ#>3Hdjgiy ;sXR0ْƤ[b?AdB6^`4"5D}IҭG2,;jGiۻˤc; e^ 9dZu 1H}duhe/l8$`rMd8՛zBMDe y7"!)0](B]WHۤb%a}CBfߌϞ~OEog}FBx[u?.;%B,Ĭj`wҝD$~2V$yYf9}3ZUE- z sxP9Tϓ15f(X9?!F 5ߺacYl/o&µw Ay c@Wa—u D2+=H42= q8X}ָdWc?w_B}Odz\=lً0>5 -k c Q+Y8ڀ " $k2k\ˮ`.;1(>ucNs@FxhdAw䑳B"!l-l*H~  P@rQJ|R=*{TCL =J]w7߰jbysbYL­ 4xEpIB7ra$Vڈlgu,2}DFj:oRP7>ԴwZxxaljxF9{Y IkXo٘kll7ekU0>c/WT)S4) \Y7{xe*d!eazY%>p3^ܶ|xڃӸ*T\ʪ_R2"pR?i ~jlbM S^ˆT {7?.Ex\ΞW wto>Xm!Ɩ#v,!E"<^3)`q6#o̶ Ko!pW֞Ѯ?S~kۺeg ?ȏ<?<# ?ȏ<# ?ȏ/[B6TIENDB`pybik-3.0/data/ui/thumbnails/Prism3Complex-4x2.png0000644000175000017500000002213413137372660022174 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+$IDATx]gxT~~OI'"pQl"UzU\1 (Ќtqr *}II:I~$s9sW{g̴cJL`0$)&L1 `ISLb0$)&L1 `ISLb0$)&L1 `ISLb0:t|+$ 5LFZjnP?(fyC,Yֺ}Ȳ}{iA5fb$K^xtI-}Dז.J#+Ds HjX$n'yom}TfMx4l0f#\~A*,{.6D[-eUཨ`ŋS!5ʞD[-67@ BD !,+B\ "CIV?Fә H1;0#hL0,׷`(xgD[ D[m1B~LwB왇:~\Fc}:axsNkMwhMׯSÆ E65N>??>ܹyw p7Iwxu4 u {Q@&l/?n`X6gW,a&2xFW"@+W ?wti;#nw~"w: d<@WO;˸s{H0҉~3C$ykXɥCџISL#̗BTPRA8wVyweFՀQ$hF O2!ѭOҲiIv"@]l3ψ/Z̪l6wBšjb~x}Yk$c75rI6߻  q/Ɩ(԰r\x@7lALit4Om5R]yѣFGQQQ5Fy{S'CPFYkRKVS'A]8L)ciJnQ%!>P:6xTx&O>$y9@" Txx8y1a7nL?N4ڵkS|||!m&xzP&pS׍ɢH"b %>Kّ?dn1 gM)?[@~ BNd)ۋ:xP@oKÂ)&&wx=9F])}NӧO /Ծ}{^}bsW0 5,@(l/\mu Io9"-[) a)76OЌG_o?-BN#w_~N˗/@۾}nd[֫" x$Gh$Q"W=D$1S<;: e訃{0 UwЌD>d- 0 (;FfAM=%,?N;]xw̌3:wL'N<N۶mCȷ~Eq&{6KYڠADD^C d߿?4rHZ>e鸹QZ0Iio4WkۘdL"Љ<p&,<Ӄ 8ZdSn 믿!ܖ-[ {!sч~(oD}iF. Q14y-0;dV0@/'QβPtxhr 2xvx#t”n␻E* `P%ԺukzǎExX={SpVni0zh< ^ #> ejh\?H!prChP{uwg"3sd\<#,<`#W&@/\vډp(Bh}Cy&|ClVz;Ս`Peia!6-Hb !1݌c(0|ux1Q0-KfԷ (~m]P|Ȕa9>.þѣ6ښB>^2|zLƥW+P^vMp¹A+ *%j="]<:eF VTF-C^wX G:#5GMzӦ11%56jiqSߙͳ>+D ouAsEfxnGؗ_# tw6eX1[AZK`= \|CCC !R[!Mǀ'9.|0^Q:c `drG\?̠;h@b @rVh#̏򡇬L6wFUJj],|q=wugelbP+xuwil6@ƌ#"!(SVY_m!o 򴚃@-+3z5(iWL%|MLZZJC: >s^ԡ AA9?Pדt A:_n߂ @BX|gѦO.*sBO=c^?"Sŝ'!VCLW.TVOocfe +My~tnW$KL GȆK !4p@fs+F<E޽[d ~=.֡bA,ATFo?Tu)lOU N oٕwx b ePD؍S(&@ t D À۷O^(QNkÝz;@Jxګ] V8yrG0]Lraw2,D񯉌D>=עr/>)+txֆKuLGlٯqgdHW @_ԎB:uD},!WCAK [ADggieui+?+[OWh;#?Q׺ mC7>#&D3*&a>N8!F>|X/駟sP9ꫯAlG\tIڶm+ݸq蘩SK.ՋH0M(XX$Xq_AsMn!árzq>!PlEc2x'ew{M'G:6񾷗]_-&X7|(Q~IQX{"@Є a׮]u/ā@5`z'\{n+Xb )dJr3T2'g/HHqcukC~nBq. {;XP竨bC#i8+DG+/zcgH=&O 8$6ӆxA\AE~V`ܺU$AH6|ql5 @$V ( l &W #}  !68|3 | @+dBl@q|HֲPށu:^|ғZ[%1JgE^k@ Y vv0Zv\j R/_ٳ4{lyhl #n-V cmWkLuTLJ'=ݩ,z $Ha`2I^kR;&P'fkhCOaYD=d||1 \L#>"~jv\'X̙d%6,ܻ7+QA8 ۅh :=;Qb̢H_Iͳo$>euD -:7KY^,׎Rr^d*5w7S)՗sT DA03X]E{ʥm?&Auw6V|rE-d3jETOypvG$ˁJ!yJK;ͽ"'r(Aba a Ao޼YRVe_E XI1 0<ٶBy< h-[WQ = > o;c_wK]?{޼|BZnD 5,<=@Վt!+WN&}|n 4n]Q:~Ocz J@#__,.*CLB]FUJe#,K}S@F֪U+Y$xSOY* z__OOd `XIs߿g+_`˹Q"kZcz L/X-^Q̟1%b v" J
|u#x2-~ u9ݼ8|1_o7z"%uT tT!9sj@6mZ-`Uh8}^>-߮W!tl'},(mKd1X ".Mʏ ЙX*fl,FM!Qc*&:7L j*H4?r(%:=_QiMNX8YU-xگ4znOEgE΋M/ *\HU@ٻD!,*s:ᔔZW| 0ab~ӈ=;-Ou>vߵC݀nذڽK.Mo>~Iy1^ȿRtVK(s4W_'\&36D%W^yEsdS-|+w*nܻY]jjYoI,RrT޴+[$ !b,CG%T"@<-oC9CI^CumrZ>aK0feٝ 30ekoOSّb!8QDtJ1+#6.{ }`.\⚊ 䮾=gEihSÊ쥧=K?=UwgWKa BݻTjߍ[É8jSԶ K`"@_eхuƺ@%=Pc-JI|tW TI Dy `Il>NFnH/Lܢ5."~3"GdxXc;])=U*Y\6G51, @T۴jcU1qh,ܱ<y2:JTv+5`zM T4 5 ur_?BنRoLCZ?W@O%ZS6J";"TB/O UIˎߺ!:±͢+_e YAF>=lC:FQ \C,Q(vx36 !?_/}S'r&]ȍzfW%~ @ .a)=rhVj],~a4Yƽi^lAU@Riֶtx-'WkU `sů6F`71 P -cv 96;_IC l NܨjAhƄjP TkD܁jC--ה[(|[/y3*_ PkXT"vx{UPլjAS*bcSKȍOf5ɮWI@Vdd1b%|'^]F% B!T 5BUeL.NWY@rIG8X,x_Q/'$-b׬r׮]"}l,Pgy T[@W#W,Lc["*x=;E|EGxS(.?>~ ~ !ܴ)#̮W@ ?yҮjh*=&ʘ,zQ&$hn_ `ISLb0$)f'Tsb 3Ct9IENDB`pybik-3.0/data/ui/thumbnails/Tower-7x1.png0000644000175000017500000002055713137372534020600 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+!!IDATx]itUU-s7佗y# dN4$j ΖFAdI ,J,juTת{b+}{{O<,E`K,Xb X%,`K,Xb X%,`K,Xb X%,`K,Xbe{ӛ Gڎ}QQe){l8gS =n[k4%+ =œuLH?KWȕ5vk|]}fOU5c W(hɃJJ&;#Pr<4(ʯϏ w;{Æ4~ +ReͅU_)b@sRtly<!j3TkX/[L)Zt 1 `mOʧ?D:)M A.vy׈kA)Ƿ |'\.(z \!bbRǜ1Z WLG$b{PVeξ^t~ `8#sLxf?}O U:A;W?J ^ʡ.ۄ|?Tuzn[fq # ax *i'<ҧpnsъ.C($`xS@@xr|b#M< akWʿ9`8Ì"n߿v_swʸt,LJPʓPx6Ϥa MyOnA)I'0Tb\wCLf#۟Yy`0ъۡT'+)/ROs.vc29~q0աR۝BC.MKHQuZCS*(HxL=+̀b v4QN gE7onjN/6 Xc̖$$x6|FP Тebr m,.vrEwZ.C':DqFT`S7]s̽Io=-|"0`x* zA i脼6&ʾ"T2Y)tkU7@Gc<Gv%G"an >`(CiT-~g.-UP./Hiǩ|6` #6-Uʯ50ʳ k xۻߦrERE^T[Q QN(2!.XŀJnPσb6)iĿq^aN^#>̻Jr_oa,\ y^k:d)Vw$ Dw2WAN\aP>-,K&aU<Jƹ"``Ű s.P*%B%q܇lwq, 0~5Iól2$>0s:'byū jVvL,2ML7.wd%[UQHs~;4!kdTS\dM \#Dz;xB>l6h `kJ eU8;^yIkuXf?KWN_2:59>Ѫy\jp;ɛVtqIƼ^E . $ I j!3ۼn"G:4qCJg Yg;yI&3$eU)Q 3Vv:_Ud\+=CR=It'T-$RK+;z^%dq˙$)<̓.-TcUqzMe!a Zu3K9 d<9eGAXqnZ2ڛ b0xiE&y5[?a-UBq*Vƴ3Wy7bAcpb(VfCiZCc&E>^^` O=7)oAa9-~ʍۑ歓% Lw!t:*9FK}fNais* 2Re 2͓O!.}4@%I-4D)^Mv, mwa=ޔEQ0cJ [@H‚5w"}~ ]Ǘ3f4QGLZfH7 Z2qJcw!2I &P^n %qFk?ٝõ >U6DU,"v96P Wmf:Db~Z$pvgI{d??9U * ݒ!3aY1> 0)Bh.| J-5I[)RoŘdBP*c?c/jqJ}ѴLΚB yZUsǚ9^M4DuIIx] Ϲ+4!Sѳ)Cbi2I^x=.V/򉯎扩c<;훔?v5$*zFtḦbVAΫ=RA($nL|PYT--4b) h3D4MO+L"6Bx=\6Q-BB$ >2 dWozM|c7J,({,h삍Pڹϩlnlq'7.~jBZY Xj'*ˇZ/)8 hوkQY7k] rYc`T0v3ʊ ȼ9w$.~u0WZĪZ8pNm1ǟHou:%#CLertC쑻pmR;z]1{DnS1&D!"p#nGbu/xϽCB(|B0tF T'D"ckxeZ-r[z?靖ȐʧTV:eC紙Y#rK Zn)I.(I|0$gU1f(^ ШnkRZά'`C@e,`"σQ191tϘ Fǖ$Y;BWg yŧ{sX|S#H͹+.P!IEU9kٳYϢȫ&H4od#ub- $lmH)Y9FPE3}1aS^S&TXO,Ð|=pk3:%~}2_|s`[l cd MdaaCQ|ULY]mX 3$l)Ef.1e"Zb(.nC'=6#wlO$3l=gHnר]H3P[*]^/?,Mݚ%.tn3ӊ@dOĵ*+\0Sh,l/≶!_MRCvhr]J|QCYbf0~[ SY=1|အ }A">.D}F u㧅qokjvم;,2WYi+o,&u.jjP! I2px|#pл^ {TO|ŮYHMS)X4/50(-n^K7A&=^!d#RA&T7woi /U/t[•gNŃC fl`}S99j]n^o uJsSTboz+:`kO{`c۠€McbH/MM`kbK{Wh!rѦsq^Xm`cuJNvd z^j }1䬡ԒGknDίs|?P-e*+bZhzD010+6w0Ń>.KMH`Up= d.@WQFp4^+_Yp$|o`q6]Y PhV&r'­/};KZi[YbO۾SoOl *\a>,m*{ܰ1*,Y;) f a+ sa%1Pc{7qU ZϵR U@g`~b,NTJ,3NpqU_kYrP쪀_H}G|~u< K 6xZ*8ҽ׸便ĖhTD+q(&U}vKn'*HhyBJuXSR W|-RX-/_BDy>_U<ٵ=-$%b}]*n?_lnjb:ҡ[V*uW-EUqDPѬ; yss9gzɓqpI?yfD/C^ \Vxtv<,U<5a,MiC̛tbQwxil/jն5A, G&C@\@oQ\art-^,paaX"TOZXM<.(C V,|p,_Y' ,T䎥oXsBƬ ^lVF-u ]?lj4⼞0%B  ~ <е'qX2zz޻60D<\ysiCګV htTVHK`z-_059 >\s.߿(Kg2şuey8;kq|-x*;@؅+2x,p,9c잃d7ОLt7bb{[8ޘnW%i\yMcdM+WllB!r/^Rl -ݴS3[EQ_Yƶa˫-\Gf(p:eG^a a*2ڒ%}3 :,\bxM cbxn}")3KpwX0Ӟ> w/1#X蛐(ldev-hֿ;!@쿪90mfSI."8#b3۲EW/@ {i Hd;ÃQig UxX@ff;I)tf/ke4JznK 7._sKz |VjaN,| x {5%|.wxWZܷ`K,Xbk,X` X%,`K,Xb X%,`'1\0׉IENDB`pybik-3.0/data/ui/thumbnails/Brick-8x4x7.png0000644000175000017500000002752113137372576021021 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+/IDATx}ixTUy'j:5I*s$a,39̣Lav"8O[E9 2HDmiݦm=okS9ԩ$~RuΩS{{wkSuwWjtGjRHMB @j)F @j)F @j)F @j)F @jp/!ߗ-U허i/U٩)0pt˓O9.fÛ엊^WQw?`UZ6z{v8AFN4lebi~ [mō~-k7 )-8#;Z AvbR]k+PKCF^1;* lkLaYZ DC[B2xp&`4ϓGȧcCtt~'CE0V6~ufGsrt: C 0TH plEr\ tխ [vcY{pi±ŒG~;XIkG iȴJDi$^oUYk[ p+ ünC̈́0D.J=J! mezk۟Mj~&|.MTWr:o !̓17&c]k0WF`!".""8yL5t/~CD#';)WƇ,}f]xe_G%~u0̡@+Nq^FEyDA,R_Ebun4C_ڤ9&x'觕c);$p^1U356:3ɃDPq!?怫N7P,I;(0S`V?]Mz%c&$/RdjkFf];M~d;@,be'^:lld&UcuwQͩbW/5 6&m2XUAuqՃQ'L8>sZWе-f/])3t3m&6 ѵihg*N vʇծ];q6NKPmDaghrFE +1zB?>ڇPXH_1wCd$0qWd. BƅGOv}Tu `@\T6f{9 %/ "Y{{5t k`UB=OSqfMg `L˓t,ʳJgvNk7KՍY4Qպ՛\:,Qeǫ` BFq~Md}:ȥ)c.P*9=& zb蚳 'JQ]St ظ&$bp!0D&U(3*w%DZZga&0`TI>@:g9ډ> ": S9#Ybv[rwTfC[ 0-L `|LSa8dy$;Ad,j ҄a%>A5A>G:"׏FX{S]t>)m}&H. ҇Uڃ%Wb,"l*ͮ"cX飈уLR..kܹ&Ktip'0~@=yuy!"&) 6db?aBJ0i`3{W%ܾyєWKx°En7S'pMy/L5*&Nsu <΋99T&Yc %&)7&N*"=7/96!jgwr ZUh~aUpGFo*mx`KjpM՝?I@(_WDCqDk{a@^v0)D5xd m} 1!&şa"ح]53X?g(M*̵ W a{l˦}/M%"?OdJNdBg.Rynw˔G (H`8 Ť0LU 6PƘ𐓪 A#wgRs aπ{SWF }b~Qj/TJ`6aϰ Xv1ipxB3Z-Ĥa4Lp? {ph2nhh6 Sh5yl\G 0 2~=C{87-І,bcܶ/ vrL1WklvѬF+۞J2)D, Rg@/YI .TH&&M0)ND#kD}- COKX2?G-WۥA^.n?"%tvQg쒯!;N ̱&<] ggZ 8fHNl$Qra|t,PȞkbըorX!Zi~r\*$VX2]EX s@b{CsCFK|>HPHh)#dtyX1+=Ϋ{CRx>eӽbH/\3/)4⥅Ɍ?7훜t?BG1"(śI 0>fd2~k;(^mȸ FhH 6[+ `L}q[YF$Grȍx+Udl2>ҲWHe!hp= 0^3isπ:eb$K7V@vSRgk68JWtJW}v92 +4"ŔLA{;I"zP3ih|5 PjUc ЖuA00|=0`,"UiO_GmƠBa|ז#+gx5s='Q}wΧI"I[?R2rKÑA ȣ.|li<~;+"U/TMM\֕pKj\4>0yPd!ImͺgA.>nrq("?gWЃU8ğ[c +q΢ |ͪ*_HȱϐzL)"8@p~N1 {Arr$EZL[}qv!ŚBOrnjJ ߮],:'; x (11cy^uV>wfޕpAB|+C|F3-6ճ=lm_x'4b6=3h%V{lןXV%a,QY=dGDoq4= 3ؚ4T /=`WՋ05P]X14BuƟ!9?#?EןV78%F8G(X+LtJ| SFDqMr>O9^yV 8 +`8Nf xI oc K BIHTLӰ",4/oGMn2&ru6i&`@HT“&- R3 LY6Y >ƻEtX<-vm5sB6_ܺ'>h'o qq4+ .w2{xM TD;x`e7㺺kCádj",t# 90~ kd)t&SʎS(V0cxy. JmYtp l|}Ui!uu@lX{*ؕ\n:牒=ձK[jP%66(+ x.Khbރ4:*{lWإW(T5"s` 1 kDvqlj#i{YR+WH,a`,)ui1wCP=`hO?拧h{)P,uve@z|G{1y+L@r6
x_d(ՙ'BL7~/^K+׳~ޕCi4^cb($<#XtY7^_^KHcϷp8q,$MZ<HUlf|"zUj`T20K=^&! y _4. Xe6' Rڲzm!3XKSEsmUF2q=f C{ t `@uڞ" D)/?sK|xb3yCDz)+p <»  _F胵tۣR9sDO+1D*eb=Ղ Ax0B=@!'C@[X(g#n%c\sl>WWx3N=LJEtu;c`|P-wԝ yٵbh H Ŭ [}N) MU "q [bx`.FCm]9ə-]/YȦ{ 5&otqg)k0h"00[i $4L"R*v:UFaPPaz%. \O!'+3,IڂOMb*gieObcdc@X_})kukD ]uGHTLp(w~s:G|/"GWmי{1 :ɻRN8s@Ce╍AH(B[) Wi~,1 z&0G{,ERkSo }sW6sw7(|PPY=[޿JDv_E% Wt j[ѱg|G)\Yo`i$&6ūͫ{cHPq-^| CȻ,nxw dr \I!` 6UszCaЖ[%2-fqۺ/ ; syޘGX:#q(~EM-TzسY*h'ڂ6 =u r1@tL pv<;VJ!bp {&FTzAJ˓+ VJᆜ3dʇpDھ<.;LA}tǽd҅ge6V=Y?[FZxrtg\ b{ |l tЄ`lEy Ei#˛.͝LlXZΰ!ec. bx~sSD {3 ^x0ǖ-_Yx2Y?!@jzLn\# 9&-roQ1 B˵ԏH^LXedVXce`4g{JPwزgҫ:͡;}W6cK\7Z~DŽX>#~'2<Ѿsgͼ}:8-Wp\$yR Ag[H|Q y Dw~hS{v3 xHR7CgW̃ܦ'q!,)4^:(FpqkJ?k#ة&= =-(x{12hEų0"*U%ҽ%ȭ`ᇁؤ I*tEA3K @,ݼ!B`X> ;Eb;{A$2)Q?Y"LK zp_.{ǘս԰:@Xv9sIKL0қy2pM@G9&fF ۇ+iW,ay2( t,2DO|t|ԹBs ȌzL(p䯇A6 =lE"< Uo\1@y5H#}FY=:c냲.?wu~nhpmuo|TSq>bO p0><``߀6qݭ.Y+4"ʶ03/a<ӁxFƃc/h0t -l,I#YaUA cĢr]n_ܸOstKC> q[7˷/㟯_ YZQZUS&)^Ҋ QIz`\@m]L "5I0_:[cioc8]>WG݋In>q ?>pTLU 2j_ kw X \XLBs4 N0l  /XJ%5qo};1޷r1l E:+}kȱ4j۽.o^ EM Ĥ!fc>B2mWxBs H9{o[(7`[Rz!cX^< q;V?AQI!}t,_tO]LZ3 /`[ط?&BVcOתԾ?+J+Y7QVRIpMUed" 7|upyERK<Zڗ@j)F @j)F @j@jRHR':?%ܺeIENDB`pybik-3.0/data/ui/thumbnails/Brick-9x2x4.png0000644000175000017500000001374413137372604021007 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+IDATx\iUzQP}}F6A٥&D]q\\Y5'q$sO&IL2L{o?{&.0``! C& L00a`! C& L00a`! C& L00a`! C& L00a`! C?:DdkSZ2";6ad`H_L2#A] B2&y#(yŽG~`)%91 1*WdeX9Ieٞ[x<}} ÓS'o0ʼt { LeY*~2ʲ {"˝kdp020)vh!BZ:x6aȥNuӀ@i' 5H k%2bGO14q]_kPwxWr=\TƟ_RSiE+ ]K _\tν8žǡ;[h?X-$aHŠ;@} Rldb!^Sg_$]Jd萝 e$P\㰻Jݣ֯W\|Fw4R eCjǧgz' )$9< Csٖ2A&$\~nI(K@ڽ 4 y oweFNhp0nFj .U9<{*48硼|>9> C0Upwʐ xI<6Mw 32 J)CLzBy`ߞͫj%c{B֕asULq P `2(!QĘ ;=1́5~d?"2F?#B&3\6QX|i2L`A>m˝]2D:0gBWM@Ɂ2A#AdA_HxxS Re_ԪlBUP2$I@=[6 :Dg⫲Üt˶FϴP0gKsH.>4sɱ2G^mb?a`xaGm zǠ@AY LYos2$ 5ꖵIDpOv$e ܵvKYiKxc}>VsMJ =zv.@`z) 4UKnsޝH$RH(:(:As@T 9YT"!E_mB1&( 2iϸhIo-Z"!ED(*iN؅FG~rOv?Ŀ0?CU"Lb$d!KM$K0ŹVC!gEWwŜ' )ǓH;+uDZ Txs,YoG2 ./I >-C2Eo?ǧvKXx􂰉W87w/$TL3X}|;s\ֽM)G6B}l:B!"hL*sj8==`fZJzC+= a ["7*EC>I`G)FLX/Bݚܥy^I2MhLwN3TPV$WJ"u,9kCUzƢ*{E>ge y _]xЎ 1嶒vJNd},)b%nn&I>aD*G*}Fx iǏ9{hXC ( 7_SԮAm~mIB`hDrQnH1ɱ|>"EO_C&UnA /TK|*"7dI,H( H#\DoVR/PG3(^-{K!A  ΰ I<˭5 UItU0d `J?&{LPM'{rIu4=f`ko%ȁO)BlT&/H#Jҟ%'KŚwLjyD_r{Pn/ps76R)7)c^^MO7YLETV{0ɼOѷʑo+l!5:guJ@EgXJDb $0 )b XQx+2 q;oxȏXPd6yAx&upO)W՞ՇATYT=b1u-C%AR1ϛ%䗇+olBƺFDoJWShk2I竴)S.el 0F^5O%pݝߚL JM!i M'o\#5Q('MzJu-R0TTrcI^RvO7zOU w;;N>\&p'"$0R1.C6S%TTo`/+»:Epoɒ 4;e ׵UǑsԦ*>IO2 %H[_u~Ug(ӎ.3x:< XbX߳ܖUeAwK<-@U W(uo &%DêY) vo?NN xjY3c<e %8nO~j_!Wwɱ3= e>_)Ff*e;MT8e#hG" *H,'E8?,d̝P}P._L6L*,j}1[d3NcL)R[ҷҖ!_I-uw6gk=/NW(iT{]j]IJ@5^^9dwǔ|ʁ["Nf7jGЩ]Dq\py c,a%!w4[-^1 q oj218eh_gn5w`gpZχvl^ M^a pHYs++IDATx]wU?W{g]PwAACl$%h1b uP)hPcl&f7ͻ}߹seW``{]Ep^r.r.r.r.r.r.r.r.r.r.r["2[D.p  ZյggsX[;kͦe.>//y?B=\)z;ȓ0CgxD74H?CxƦ1wROʃ0=@NЈq|U 34 ܙuW_z>YbtAr`qGr0ΥvWZr>7_]EgCC}Y;O?d8xtx,cpP`~/q (ϗ k1|{ǕX 5q\wá!Θ+Hi,R` i XG[]0\= 4C]ZwΕS@=wsRDupF|7nhؓCs}F(¨[" !|^qOpӺE:1DGW5{PKPc`}JAY|,סIQ۷ˆ/a 'ag01'+a3_ﳍAj7}cP 2` )46M?}DdbU}`agT|ѐ4To- C 0ǭ4 e `ړc?0*SHXpsY0ܔ qlVw3\7[YN(WjNb}f;.#";E"/1 /KÓR_l)8θ\0;k?]zbZ^Q!2d„e97Fzޠh}΀s!R?03_ȳ^9&bkV~>5[M9u),Jj^0QB4Rr(|fiOʤ0\* )r0Ϟz}^`}1.퀚h~4UUgIT<[̹=9:Pa5% `Ⳕ&"z-ޓu.L3 Ѯ ] $gQ 7^/)&Sh>&Yթ\S:ɵ,گ1d#M 0Ӽ-7מ,,M bG[ CFcx(GdG$ 9C?sT+?zcv5Q#b0~KL逦SVxvR?b0`AWv;b;n|s}pG0T9"Dk{D6V$;bNxh*@ cFeX/+m R4~IYٱ@ |_b1-Z-0"ݢDG_@[)aO\`$`va𙾌mg1j (V`f` `MZx_w>3GU<Z &D0fa d BD8a*/kmw^]ƴ4HeFqOwB/qZ4|# }Ǡ=q/$u3%0Z]FEB' 9S RaOax,` z`6ՓC>x,i`*z?BR:ֵTUE`#޷O:{T%.|\`/4q#{Z=|ey %,:IBaD7h} e3Y?_yPlZ"J633NA+%2 﫪?HJ̟QW+V?޸< Hqh6:T,p( 44>=-BwjgˆjmMƧ=ad _0 N?!+yƣJ{^TYaw$ YEuWp p,DGۤnL8U^=W}:#UըmЇƛ"y*p($e]e8 4`}H)g 鑷):5tN8Ojƽz'} ̑,-Af7S``y<\_bs/)ڿzNL--WΊHϯV!`l IjOƒ,>6MaЛ5>=tk 3xG z)7}>ǛO:] ' EAJ.Dv,k/0J (d~ 078;񭙆]_T*̝u~d";׷sRx/ V$>SYd8S# d\4hmd)nYj\|n|KZ{Q<›CO 9`~Plڄ0` Fn=xzV. .Om |⏃KjZg[wڴ |ip;\x"!p`yq4.7]v3hҮ&/80dr>Ko%&C ,BzܤX( -84PpO{Qw-M($BF ʟ/ەr2wAv{Z PB\ÍS7 f񛲌xM29sâG"7|jRUK\r]5A*€QiF-E(ɧ֚;(R1OȈV뗷,ީ6X}Ɔ`5:+JCz!3(* \=y'ʑ3&2pw\=Ʒ 훚@6 [>bR`jNT,a83XfQGΡƘn wAORZqD4FLȝER[OȁuhZXϫ>֦0vt \|W|[ X >!W`]V(4`gj NdJuCk48Cp 8|o&4FZ0Nw6Nnh%V]C08c XO& XFpcf\yID.R>F];I(߼>%1A[lSTp)'2:e:Z \Sud}0d^P,:Ln^bgo_  LCIGɇs˛^(:ۺI,inoփf^wwBp KP`+R=:"{B:WoVɦUq,ɏk6X0)"%蟜m4b Pz >{ iwkp%fiP8FËث t"3[H#ELdҰu(S,b%&; zrTk]0|YzRXfW*o]T^ =. 6Q=*Q)ɟ ?oT7pRTj@ra_\g +}@p4ŭ^> gm`q"iO{*Suk  , ?j)_Glz? VW4E 0|aVJ #~b"^wCR>yOv@~ILwhZLE^M@xHT0TM+#/^"@ Gpg6.0C\/N9inR Um_PY]sdd!;:aO첅'b7 8D`Ha4Rf R[l@0 .[qŖ`'W؊AA[Pp\jJ"P< C&`5:D$.Eh6^?fדXa9d4 >KPיiX8BWJQ+OWUC [2.^(r7b-Ezku8K 8WeɌ̙k6ˍ!_A*Q`_5 @zXu@lvfi \9 /`V~Rb| \vr{M_߉nY}[R}<"P|oN`'3$!+)(j&{ oWIUW~rt31")6hXcBTGKDT'ꏶ ~iP __)ީC@jEذH"Kz}Vٯ5/A)7=5uV4)%uDQ=aJYz uV{GU}!Uqj2vHHA_qiTW*v!ʷRid>#li0L-<^S^8 * (Cи1R93_Qd8P4dI*yx #uaFb:eJ5q|czHh/BxFB*`݁!d}~0ˏD~U+)ѳu?klH{Dzu˜I9pU2wH+S )ʸ6oqyt@`K+r9 rGV=@xDJBNT(\wA 1 X\EedmmtF⍬Uϯ7!>6IOAjK5.͛0g03&7es^S%d/T7UoAQ =0vpPl߮idHvTRA;B*kXATBUF|쯵D-dIL/P 9Ok'| w{M9o-%fD8YBt0<;_Nȯ>00cAƔvH5R_{~1$ W?}C%,}\44 %V M@9e`I`X#NC#ӺR8ΦJC2e^`" {$ZY!Zb}> 7` Ni-È7ØK:JHr^\|jǢ~Y1Gs=p[G끏Cr?B@=ߎ冥q1=y Y|tROQ@u?=^}|A< 4V~ X| dh2*DDiY'+7DMX.,!Zg]XȹvALnE ~Tzꇡ9rʤl`W xo/;s8=-U,gYwWT)ObdW: nblQ X!P;|8 @8{N"T껅i@$4dm)q9XܛqlCd +fEdP IļVZ~ݢEscfnD%偯e#O\NdlNjH<=1:[Q 7ʽ bWyf b5yd@?ok؍7!Jt|W7+sDذ>u Bg^[F[0.;`;lee\ ۼ\ztq-ͧq'uvh i<uT# iCmF2 _rg aVKd]@`0 ( $J `uYE#TEՠHTRB N)T1y쎴2~EWUE!L?Cr=kwP4;̋OQe ͇+*y2r,y:']G h0{\"3d +(©6<&T B3 `.O+zo>uﳱøϼgKC<9-KgFo?V?,qH{疆eSo__9/ei Z"kȤH(@:)d22X_j聡~YL<ЉSGOL&QPvJ'p25nUð"/X.)(u妔LRExT1qc!<4նBQaB2h脴GkCg{Q -d:BEPVz 9$8/B:z<4GO("EmRu~Hz~돪ԃXb~ )p]%*|O?O i)ZȎaBU'!B!]Z{SХ]ҧ?5z\5!y=^ie .V3U=bMnDԧGU/?f7(2pp(d=j7}4~z[][Ȗmqf@ ])R8jjh%uOd T"xq2ӷF7imj-ʈ _Dts Ty卝G+\2.Q^=7*i|X\h[إ]^im74.κTæ^剪[V=RS+Z&fh"*blf9s8&4D0dT}}Ո7'zu Wz_DZ {Խ͕mf/.fbW@$BPq^,BuwAFVR41{hZbS*ԯH+•O7z0'B+IÂ6=ջBU8Kf:վ3꯬o7E4oz& C&|aZ*0NͰAcJzy|IʮT)`YP^(Sρ/S+W&徍IT长J^|tTc[_3G &B6-N%}UdLAl05N5 xY!jc_rb Q8Ť_QO~.n"!LJԽ}wz=eӲzc0Qd0VQƦ_a/5;w3"l@"B+T=y j\ !N'(a}If9վ'+ X\ߨG3 B)Hq,!RP ==aX!Ytd <|=o(mk -T"O*/ޖop*y}?pl& _,c@#wG7dN,Z_{`@U2Lx; P=SNwoM?7, oz=go]eakրZ9U4g>Ǟ'eQR>]}Qsp/Ӣ&Z AsVAUYWT34"5LR󃋏agdeBR "' ?v>P?oC#+h- } ?]^پS1 Tߛ(|r'Ɵ)GGx3ֻ0P /zoh4SM?o3}.J4^Q4sa sV!YP]h:t]"`';Tǥ?ww$ysK}I#d4@nFxPɄ %2>p$Wt#N) Qrhw63lqGR1__h= (=L8efρ'ھ@9vZV ӪT2ZjuhW8L{睿kFU à۩I4ھ`BYRjU(8* Lǵ^O:Yek~2o_{]/${W3 Ef`yA?5nM/L|X=q䈼qp3=P>ӽ X8Rxy,Rt«fY{dJ.NfufԂåa] u*Iо7m>yh’FY[ykb_RTOO}}.Nhlھ>5֬"7O]@T>9J.>%H)dJn2!6֝&,a pHYs+@NIDATx]w|UU~>!7^ %$@;"]%j@ZBPT)BDag^q,0μy3Ό>{Ϲw۾>5w/OB='Tz@=POzS=Tz@=ѧO.U)6V}/}'(PQ&Qz8L~.v{QU"}_ӫj#;p@o v)-w-Riܴ+$E׾U>Qez}U ?#DT 5%_{N_3Ui׉F(z]c3 k'wx`5rEuwPm ߿E#&[ٱWbp+wɑk p'E>ӶYaCCm +Qy1d?k*h 31okb?1IV؁ t#NY;N4q1n6Zb$}x'-M*l H7q 8ϯY४l!RRRDBB"44T ???4(p4m:(z!j@Y|b34/= W&Đt<ǏƼC++A>G@L=a1 EYعӥ+4sC4)bĸH".V4mT1bbL15(k.7}Z4M"Jtt͛7押<ѪU+߱ꏊ"11QƊH\(.> ]&q>P$&B3 $A5s‡ lD 80i 0n5V LjN7[S`o.IF ;l%a+hBiĤ7 INY9p"ُslS#ŴH15!Z&ƊYٙb^N(b͛y-DfME~vpA[0 : +X<5\.4C4w?TIu8f>$ ślvڬM&bݷN/GX8w0p!D%^ zے?1( NǸQ-'i9Y4QRtML2̇L5I~&iD {?4񯓍f5=v"|D&cMNl; 0Kůq0ؤ\@BHfjg_Zlٲ%f*mܸHOOg "u RNєdFS` !Nd4Q0GCCV#5vۯ# x9h 4Okc܋nZ~մV0)v'I&uJE.IY|( r$QbŔ1-+MLi!&fgVybJ<уlq6mx"M1{ ۢE za{M,N`SRILkOLEޏ@=`W!krX4̂ qBSœ܊1nbL-i9O:Xzl53Is܁C M:E:1 d!ZB|e!NQJԸQ%Ō&dVbFa+1 Ou m[d'Yf $h2 88w.D$i햖ؠX8[ -G:Es L-aĸjw V@:o֨!mqC[Ӈ c^|No]Cu; ݻHK8 !M6 l <@Jl[)ml|1@h/x*6+mO!_N-&IVsXh $j9L88xMNFv+-SzxE2tWm|l5_Qd~VZ=j ۫a\\$5IGULO5I%v&S'J;DH.IDԔ?@QeTgV`|aH3ۍ}”RV8qM:ۀŮ2qm !#4D}FbBC 9dS;"LQ ZeTp0YPH(kݺ(,,KQQQ",,LX[*-VH`+&vsx;zx%eVCZZmo0ہj)}LMa~FvvB܌6u M1 J+:&%W0/#!y 6]BDHqL萞& p"iTg|ڵc%''uT0ZF/;\BNߒֆ֞ QSAV\ǸS7pݸB> {PSL̇fvЄ豈SEkߝ&3*bf %m*Wֳ4<"* H; 1.&B(t-JQ2/@iLQWT hZ @@c<ڶZqq0yy?j,?r+Oݢ1!}7#oƙPJM@ivNH 'mq/fćF85Sp&qt^8nW5Mر&?'X ,/@f7ܰ>'CLC;T<w(lPduhFff2_3I &Xܓ/Зs3AS )}ThPaC7)H>LA9Ah]<;`>X$V$ΠGl@NsΨo&lat~"PjkS&\9i|!2E/q{t'q덊 wq .uIQ mDnr[խZmpkɞgGvm>$/9&-PL:4B AQr{z(z%sPg8tMLVML@I!|L7懛،YMIPKU<$FМ%Ÿ4TB 3pdp@t`E8]79Ƣ%5; &DRt< 4xʛ8|!WP8e&&<8x*~PAD *Ah,Ie&pI @[!t $(54&~"xችPiF#ioEi0 Թ;tbI% B7$LW!y#$wTcDpRq ʑ3ǍǀF@\@s,La_Tu t\/{;R聄j} 5V`<ҧɀJ1uIMv S?cJU s%wR)OD||0ihhd~ 0i `BPM,)pIaƏ+B ypph8 2T+k w9}vTaP d7y`^RQtEj\_R PG̅d*7ygǠ6t@9X*g}_ R) Ƨе,}Iאdﳔ9J"4H[ hB!vVKF&)3{+5-W$ Tz~@c6$:&;ڛ|1`郔 At~uU'PݹPf +mC Ji pu w^L*턨j>y{]PF^γg'ES{$м |LqMeKWDjq0*M˝7 $c0 VjO2TɃ-QB7v:'UΚ2Nj5#pT궮@;]]i:lq`:02oH@]colt08HpB9/@fg|EnnZׯfZ~ ]`[R)xGt%"D\pClȵCQ[G J@ pum`:(=_b|2 ir@xLPNXeP<*u yJqhD mIv&k> )nB= u"뷔|+9]f4 z0{BRR5`߾.q M<~/Oh񣉃]9mw^A- ~b>T΀*y8_7?YtZR;΢&!1-h2#E/m/ wF [Raȉl报jF16hh8{ `.Y&p0Txz_MxDĕktI7fl" b1c"( n]i!HUNg!GwnAIJ A#- &u pB5> Anlb2!pNٶ`* [*1411w8|hqkКj[Ssc:\+2&yKϾ-:(*mqRہSC!{R9JZ℈ Qb_c?$'@Aq<)~+zF2ZxSJ]kg(% %4~UAj7xAjSE ?eCҙ'eJ|IxcH~ 1yRerM@#C!tqOi0KR(tk4JAKkfe( py2\ܡ|-!QӮd0Ezy8l3lt`0qH*jѝTY)NlNBJ4s m[jf^v@3p6eSYDj΋VˡpQۧ|Efb~ۭ )rd2tz:A]<tʶ4l)X| SIţYL*  G|t  *$ԗAxg}iS5!!KGAP4uD3t@Fa}'x04J3ӹ$4%p4$Εm߬lnXPp xBk$"*]Kl;n21= SC)Gڥ1vH*RW4+ l3k N}gC\~ Ƴ:Ĵ] ʋE 5O?`@0pZflF.^N"nr"oHᠱ+;K @[L.𠅬%INuBC/y:B$U#ЎhXDc!(1"Bi !Z /M%:תo>]%0w8dvh -eGm9C DŽ _YZV0`d ݬq=7L]u{bxNֱߴsɞiIԓLw<&ӄv!ioxd^ z1.F)`3{u7)߯Bz"03l%@0Pi]:&&XsʻӱHvtH٨5IDِl@Za.\ X g@h0.#还t0f8 b ):'0u/]I Q~@'$UDEM}lkS3Ӯ JM\1~f[7b8۩C0,4ap0N|U#bH!^!]O XoĎ:w 2@tߓZmo`h|Pr$s7hh&WuJ!!9) 'I)v.=2^tTI{|W3gTu[X?g w@O-1E3 ;.zHs &lfD Z 91oQ49S9+:?"hq.lO@Xp(obv NQ[1 y2HwH `-9qb#bѷL=46̒yG f>"n(+U<[\^Z@'4ˬ.[aAS~p!I9A$i& DߐL0xN`( D98.u s*n<# ,WU@m?TUQII22[3\y;_iA%\Npv B4o7k&Iv 'kq=Sϟ4Q`ojqJO4R3&N6CBq2bY~rTcwf> CY'@۔[rOk sLJN%ƪ[p^~*' )d_]L;^P}p捆 a޽PIG $j77w ۱Mvy#44!֡QiC=Ѥ/"0ʹ| K@JQ+T=DNN;|-S6yF'M+޺~hܿbNO&IcUwm1fJk~bW&29'@e>NM_mǢWo>vb>5t>vHB 8vQB/2%72;޾*FR$K}ט se{^ITf~0Z>Ȯ ɛ7U{x"h)Ħo7j/@ka ">?_UP:&N(l1ˉTEb¯_@ш=Ci66kb$iV}#\R~f<<8:eP.t?e&0S<ߝ ~s2`ϧX /un݌ncNbuf !$Ov1ғ`B$Sh1}^LۨCC^kx qbsLj|WǓĉ sQб=Ƙ; kuRs IQ{|ujj $p2Y9/zX."R𪡶{=,. ۴ly]%rƚ.3'!//sww H-nEb- ur)-Ia3l Zmf|%q.c ) `Zebhѥu Q^*>9$bܨ%Z]@,]:cct׆KQܳL^Γ7l[@3[1d3@eas'XY"5u51IڇH N *?$f}`0WwH?6)ܒ6ݖ̊Y)t<?e?*8B4I06J+"|D1y͍@v)HCf{p#:<&&K ^-RF@ĒD(44PnLkG[78@p'H2R;ezdƉTosZ4-’+e茱(X2T6\t+XL"bЋZ;wRܙO): zp't#O`2} "?OIf5 nxZq ( X)gO[' 0  ]ح{8I>2 zE")ɿ#J`r3(kdDK>}'<i|Т2`9R2wx`KwAF˻e7X?A$C>Ix 5.R7 ~$FoٽSua’& -pZЋ*jb"7^(ܼQ$.r ]D$Ҏg  orNKITyEmFyzi?3xJ qc>AG@|N.9ļ awgdcDZtpJ5Z&<_ݥGm*+;?x+l mȝDN|R" kQU&JFΡ `ǴSK/ajǧߝKa;%}tz$kki&`֧L( jNwph%hjPi=fE};z1JF0T Q>3n@ xrȦ&<[`*.0Buޣ Շt稽[pBD4&:)UPŰG-X.ZTgH0v`rCYi%3kL(s#‚YCq#]F 9JIX}7z´vŤ4>yZF*!g9H]hS ۹y . :њdAi=1 =ru-<6;R|Ca_X3fSHǔ7̛n )7\Ҍb hBa':?'`%F!jx-/.f0s:ķ3_xc( kо-wJv$^J Zyfa@{{/^4}pplNk\.֜>7m4Pa \܄$plB}?bCxpR_d?J׀FsChTKl(joh3^!yc2u)]3JmFD 6 [^B7S ?ߧ;#Fs3HP )tѥhz; $54!O;>ܖG'g0&ç}9X{u yFXxG6ʼn?_N5=xdl{{A|+*7Žkzpӕ0 tʷqb́7ِ[8y0jBc1 }W@mvsfqk'_zA.|mh+ p[ ?H us#Enfx0k ʾ# qDy}n )C=d-BF\)EE!b<RA2Uz3%Ԟ>= YTQ4iW %:B2~1E3S?{ A`)фOnxz!|IwFܯO5VR e:t졉p ELÉbl <2-;$Ik@'rOμq;4rú^hLEl2oХWP!97@J`Zt1=ݶvw}>,03?vŋ=}%Q*u!?X4+g@KXͳHXg Cz̺izI݊@׵]zk8^;gW(cd b$DG﹇ҾhKJ(z (v$ Jf62i0ܥ/+{Xm@DYN_ K"Cg^!?d#+o#rMܠ, !0?jTV HaW&RrZ.Zk;{r2=L R;aRPbzjLGdQ1+\dge_`<·&Y꣪whk Ya֝ 5~s"`&6ߕ3ϊ Rydo- 2:J/_^x,R4kbThR2^ӯ&]Sx 4d%Rl*ee#2  zxAMiহU *}CZg34k[@h:5*Hbs¸Rz})T?l,>f:VE3S*CLh_gIrp4lLx>'d>ٙ7aP/}]zL!]EO4򮈢ø&.]Qnط:Zb 9 ߠwp4۲!ܛJߧ~@? 85L{.4az<K !~XòKv_cT2?>ÇG#s <5);};H ?+F3)n}NQ>7[X;76?_e4/Ҹ]#vUop=0Z/.A+DeL^BEتo)# Xlc{.93Ρ!K e@S~X dZRߦ1k@?=,,j\+1wS}>pTCx?3Ʃ>( DE5WP^@K6H#x;?JрUz;^:bX |{WF=C9tXYa$3O _ B:_<-Ea'ŲGj=S`hfL>u\6rsu֟BBw_ox\$S8xtQN#ڂ[wcu Hht(CH 0&8ϟobf7lbvud+"Ƀefg\ `-n(EsL"0RǑ SUO*3ʨǴ$ؽmmU0YSL1:j*>VK@]M\ONۯ%Hǟw=VjGo&pirԑK 7}WO A$ g Ajd$w }ޔdoVrS6Ա@lPj5oȄ7sq29kߚwT }+ 2-X$|P&'HX0=J{|a͸CM}s?on!@gx `9.W{72LU8Ăv "øBzfh$BwFQ ynZLcU~%q3_(rsbMyg L[XBGO$Dcمs3ihBїGZd 6/"kfUni,w E6*1y. UGmA f1>g+!W_ܡV0^mYPP wrD܇{y}~|t :IWѢȔt?OL#g ^<HΓAsESeX 0O3,%{?vY7AӸ51ՠxtIX/"\n6syY:wt:>2*PZxB@JIps#չܘ?[_.(_Me K;U_KO fmP4|X-& . c'(Q^37r$'|ncKa+&~hC1[ tuGUsgaS @ʙDB8W>e pd*# 0 l"2#+uc VG(׾Gϫ+bDZl5ھί{WYR +c<>n;yxj0G fϬ0oAz4B+[3/@sQǷƉÖ)q8yܸ:Ц NT%-iWG ܹs˸SiWx~. !ؙ!&0&M+tȞpSE/'®_fߠ˜ٵZ0ѴwazxX#'>DKҬ32r 惰h`7d|=A <^\)\B-1i,+ a`2 Jc.`-K+ _X^1W%cB+JƜMsO]@g|ǘGJyi8U&Vi˱ļ}- B%y~ah_wF4͢<-R WޞmAԢqDmc6 jd4]n :M|rۙ5\AUE+3 Zft| U3wVs?2`{{`gooMϭEk=yWHI` k`=fC(ٔ[tEO?hmeq ؂3QB?l\fGrk߾'ܞvdq3A2,c|dUiSƟ46XUA (P;xvk]^]ocZޔ4Spl[{VǬ to\efmPa pHYs+?IDATxy>[2}k"Ҧ$,Teh$kEDѾ}ϜE܏1grϙzu-]}ۄ;E8 (8: (8: (8`KDRFUᒑ?(ٌ#溎 s,Xzdjd`࿲*=E xoo}uHJT畍M/?K)kj^jԲ'6)}D.ۣ ةOUYJ%5XGAw5K CKfUM&gVg*;8' >Dzc{1ggXOZtLR;27% -6fOhVu'Nl\Zzis7Q^Rpߡ^\3Thʚ#7l Iл¸J&qqq }~\{^X9NA*͢3ͱ?Xk 5FٗsI3K'$^D_绢fku<nnRnZ}'4/n݀-[h=Ԥ 4IaVӵ~({.dǨc EK }<]F*(v};y^|U {Pu ]ŎU&UHkl?a|'38߰&s  6/NknzM?!ElDa{l^Z}!%V__ v)m۶qم8U"N)dh.DS 3C8y`Y0Di.勞/ iȫ䛬m/{ x#ԅGWL91$NWR\(3e@n._.)Ηf8O\iiTpbINR8VNN o"I~*ӝA<=n!_ veߗ|ћsqQwԙz].>8U<}3U4H8Des.Tno_*skTp՞"yt7suU[2R~߽Av>1ˎ">띍R~ɜ>pgZQ%Lcv=h#Oj?gZWxQBX} \}}p| c \Qfpbsqa>zchɡqz/RfMYdlbwџ.P4\p;.|;s!Qa@y > T<STYeeք4{y P"sFj4oԨ|ҵkW~q;6wwEG 5BgQ#ju;& v2?z(s%#}0>oU NpZHb3Qn,),_.2w=`_{r%ȲeˤqW_:M(ǫMkW;]dVT/@5Ao n|WÄ?O.xzsQxTQ-VTm5?Fzg$?Z(yavz뻴%a|%_)2[n թS'2e{m6` fɠligpz3i1҅\|A,hBCL\ݱB9Uî,_u T4X5GPhs|>^1~CߩsO; ~Odɔ[Ҥ{'KAy0=)4u@ eee2j(a`>}_ǛPE bNp,uѱ\H.<Ѕ\\C䒔81~/!Z$Ivv4[W.SKΫY]N-*TIL۳p\`jժ%us "B}o$i'bBVvtjTuDRX-\K_K5Ihlhk|vVa@> ~I2Ucؘj yat*Q~Æ2ݴiS GO[#*|:O*d7:wy%Ih_ yp>#R<lNb*=ʋ@Z02@9!ce4Zn\}UP֫#׮e`”28ףFX [r»|E2-5fJ^f4oSV%楗 bs!nj>LD}˼',KWae$⑽ -yC#vi{p05inp[)$6k-IE^$ˌ j 'X93Cr2I̟~Jiƭ[ "B݁oqJ&F9 'X$PG|ZGp1яp{<|J=16.}u%˫dŜ,A ɮ lXIO>_Сq_ [n{I޽eѢEyă|('uބUy9<_T΃埧ch`M=rIrb}L콦M AR={ߨ{V p饗>|#F0 /Qq38Sy$ k7DD ѣƉ\Z߆"=-B"_O0;0LxSc{2gb^2xOMƟ)r= y7eРA|riР8zѦf͚eZzz4ҐxdgINBPʎW-.2±yktj *T/|2Ҹ 07d-ՅY9/2rbv5+>0iwjX}YҠVүs|XޖqF:5B %9еqaTƐKǎM{}ٖ(--5;IS:K_`#)x Y~Q%iV=gEf%rNt H/}2So~.ʓ5.ޠP vq=(q̔ S.@Cs<ͪnlL828Nz?'!ִAIBRtnP_ׯg> WT(u}h2^xdug 5z`\|>˘AIM߽S1WN/6s߽V`EçV)߼tΜ9_}Ֆzꩧ;w1wPEI ADdg!w\*}[F+I*g%<=p-D ] 0wNY{%`28:+Vz@.9?A,e!wYN}?l~bۛӇoL"d 9>SS~I'yvT2{u} V?@wp;y a1~oxP9wZ?Vޮ޵14OoʹĄǟ*_s@s>LG5a{<@Ϟ=矷`ƍAkIջD]Ag`w,B~e DW\( ;˵n&ˈ>a¿{gˇvr-#վeJh =2hq{Wg˟m:=8v՚5X2p஻[tK_sOHD \ ! GSB }~ c)|B#¨?.s}V~K48τؼxg&UUL9 YOfIzXxѮ*\y5nd>3XB|BL!C>+b,!悅o4;hl)xX;Ocof:T hiӂ'gYՎW]>clV99 ~->ϵ+ӺCOF<>;9!.$ fЛ ɴ[Rg}+TTSnJ ;Ė@|(${Kfj|A-bC@>}Ǐ7y#t^#)jKHt9 UmgT`cBB^jK{ćItЪn%0/[z(^J m-1a*ڊJ  ,JXAx\HT6{jߌVfd 'zXҒ&.Mć:|9?GTI,*} DOIJ~i 4ŋM+p빰"j x pO k YZ֘=G&2#O)9!+Kib_b󻟛 d|᳾1wqgޞf]'^W[bN45y 99  sң5yTBџ?N_%sQvxVס~3 Pɺ~;E)xOS燎pN;'wBޛs՝VH>ZOT+q5TEܘ*]{ D#^8=ϊg'Ȭ rN.>;p)Ad*!_~r0 xguVX+W֭[Zv0 t^^n]n[#P= P~QD64ٳݕηB̴u% [Y׫wٿ'ȂIiAwl+f[Ӥog,|t+!⪪`u8i {;KHӼya` `fVJϽK"3% v@-T GН+#x"*۟P!'7a2W>Y0l5;V䪳${% j2x!UZ'gejJH{Xfkxׁ@;cҥZB+yM6&իWSB}\B PfS"Z {3q wKƤVU<659obXߩtOhcCw)LJտ/v'oTOoB8VS_"+=Z?mUA rCk62ϱsx 'a{Bxa6H :;4S?[V@V1ѯ٫W`Çv/N W؞= 󡃻v?7\"SaoWg55^x`=Ό5߫~@|\+cF]8~~pX?ვG$*D5EI(㹮N'x¯qCa*}wṛo/8=J(Y0Eɚ!:~3 s4\H* We:P&Fx|CYFA|wv2,!93fT88:g/NT3 L`tv5b뮫-YѡU76γU\{?>wme1l"$Ub,æ#x 䪃ι ML Fȑ& @ z,ҹ Uy2{` }8WڭPځBO^0.$EyeaV3*+ǧ j@?n]ԗ[;yt(ut0`ApB8JAuԩS7 ZGBHEh@̉,(W B~o 'u3^pN{w cG {'[WīLwyqVʬ!UHL)Ȣ/^JZhy>oLESNHnw`8? 8HSb SDfq\wu^ a]opT3kC0G fmѠW^Io. 3ڹ)ڌ<ߺIEP0D՟26Ӓ'=yAU 䞑;7t[BI#tW_N;4.80qބ(Fywo9N: O&,Ҵ'|%{0;۟|÷TyI(XMnh~Vik Jthj##@l=I& r:42ǹB3c`%H!!n680!}1};ȜKwVr{JWB&u< 4Xy`Z}G#T_)paɃa—RzzcI4{G;؄v 8@AC-E2B?ʞ9sѾQrL  LDsIל \FGx(,p9', kŸBHB@=ϣCXvo*8b%:TMV>>'|[%脏99Q>PjrSKx2j!~`q4'P #K]q29Y6>;˅ς|J95?u\~UTXOw<.#U>;{TCy9h}OvIĹ;Mt:X>Q3<pII<|GgnXέWv o@u0#@v%Ac tQ(Bg( }0\Lq)s&N!&Ϲy+w']"#ϢwXn,>T),9E(ruW |c?X'h^/d9~3O>FN0m?FL)j]RFFAݲ Qs}ƻ:FZ>3AR2JpUDrL"cA=G*szzo_ŚxvvN#:QH}H| >ͤQûF wxjRTi=d1ma9p@uth^DJ!Dw@phsSn@xQ̕N=^琬_]?7D;<91 %7ʨ S?DN_+QZB&u-TVZ>u Q6?Cj$"FBXNPCcrT: d pZsNs=gOdF0SAo(dʥVW@ ̘P̺-͊0W 3Z!5Rw%È ?^(?q~I ~o(P-0PCrp਑싋yk#<#b Bp5Α#d\h " j]2<THFhT!PzM֯2~VNuYSY|J۶Y; ^Yݐ H@ϻtjgwFp52ez'4Nː~`6tpVف_{-v<ʅ\`%p 'Nh^ ;y* )8ZrsLc .O$ڠNU.ʖ6wt)Oytowk+/RpFLf4ʫ%M%|KC\$f"Wx èe= rdq|7p]CNF+ p)DUV7K0!#X΁ MspnhHP7@༢FAϪ}v*.eh߲Ӭ DzɷۊdJ/޴nʷ>)nH>?J˱[ Vsd??N>FCKwWZ.b;HպM2J]m !8*m] #f tH ^jL"@ -{x|TIVZ@{_-w?M:7oz7yo<^W&NEt#todɴ{:) @7;|gQ“wpɓq#ܛ={vكH7~"un2]("yWK5̪\Krf`WS,B9y}0H5u4={:?Ac |A kmjW` 8Hロ3`/kus١va:}soKpŞxTx~&pj Ѱ̑?@A`9h'G@IX?r xg  M0Cvhۭm}<{d= skG0IS3' -" YwY' l$xDM>|4 kn(!kM%hԹ/@@8{NcEKH`j`@K/y(8'm/˒c>|@NjjwnGw33ahj\fЅN;82 cAC*wB 4QvKfε;+}AIt ,_BS&KjR+T]>lPy1۷[Fp}FzR0+aՂgOcS>[Ո.J?`/TY^fiX4I`ߪU;ޕwQuw & @ ;VhՖI\MBF,|zy*=(8oo3'0й=q Ψ[v= x4z S⥇@=^8@v3#7FnH{76*lv ~&ZXw=&P*t&\lp8wOOA5ɚ9Xfㆹ4u"\v9ʘ b&?ySEDcW~O iNqCy3ۊ,$$~[M͛6ai)6jVd~SPrV@eRnAs |p @#W4 C|3h׍*S >2|5^]Jjة&Ӿ9N@n_e\%^{pdUU!Fgܬ0  gj[U>0C'Ry}xڱ=JI&.]rN9ϲݫyA"42>=<@?ʼHl-9_*֊k78gbb}ȞȺ@ A\%wyJ"0iX]떅~iy`V;sn[4;=v$}Sd@yC9@N*.еQ pC)1 d +}y#hzwΜGxc]#s_,iX˫ ؾ< HءNq`M<dQ9 _@UDf ヲdZzbOV雗5fvQ{9S˝>7wR + E< vDAXB= "r~+Y@:EQ xw@PHCO@ '3z1ƒ~q4~B{w/mKr*IQ V^yG{X! nD<{~{Qd/|5P_ n^?_o/IڔI?"g%-[ #`*\ C$R}kp,zUv8{G4p B'l7p"2[hS?*& x3qu$xG,XH&Q$`1%R۽|@7ͻyrY7pL-m2!lG 8P̌N`1 6,Hٲ0L-BFRHJ\=Cm .l7~Oe:|&xp7" :Btf_d啅Q-:sa#?R`eCsg& 'K2䮫S)J^YmXhBG$X֯//)c"ƶoGKU~Æen5 M\7K<:= 6o~ב9 =2kV8Oc/pu))|:[snݻYЌh -0W IENDB`pybik-3.0/data/ui/thumbnails/Brick-9x6x8.png0000644000175000017500000003474013137372613021016 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+9IDATx}yTյ@[S 4256 2*2c48838GpIyy7/y|ksnq?[okϩkp}w$P WU@*pP (\ WU@*Rכo#_0w0xԳ{8h@˧q믫(j}vsx}L7ޡ`o޵ZY 2O6V{- B`}wzzmzpZeO=#`՟=5ꬶ ,dd+^ Cc!T|C@C]>cCXKWC^e۶ Px`z^ 9=ƸK.\] _##o`zRQR]}^5 @{z޷ Px5+}7}{D #}#W`fqQo'-U PvgU*,cGV<8bJa2b~- Gq cU 4=yc$f[*C:\P:yݐGzz8~ 7W *HqE7+8CZTe0jF> HadЯ kBZ8iS&٤YWq'`0ixA}q_xx) 4TupBK15eHـP3xow8ĝ0Xfv&_cмqF|*04`U6}Di43L{@@ps)ƷqX|xOeMGCh1`}zU=,b0\@n#LaF*AaUS8$09ߜ*|> W#}!gEx9a@Vq-Çw5`8"ĝ+k!bu?St̋`L~lϷ`ENBjX P/NOwXrqxߘp@;zTxmaLr98ݸA-T2`_٣g󬪛0)Ll &vx( ` q hKF_grL]dd`@yA"0&ӣטb4>1H(# 0 =< P>cHk y%1wMVuz̵e B.6abN>xx=b:k˓d^b,?<c,O07$yw1l+7u/9u"0Ðb.s?b2P3:ڀPqBE:ie,w׃ܖ4K&>ϒ{TZ`Hל6tW<: a< 8D3y;V>zQgD8$TA_/h #`T*ÔUVoLJrƥI'+od"{|c^m! !4L 7rqMjq@u )}!%|Z! E\1 Gz.~vz TlCsqCX*M =XcL^5i4T1$I:s=A] N@bCCM*,X$$4>]zC5ʤ /S^U`E"hRWx¤z<=zd9XaUNéӅo5F @009-_|wc$_e~IV8J,^y#=K_iJљcN6c(e9~ 8č7ٚs̓0f.]1UWdrqT+c+S1h2hbKB8)&6f?$p{2UJYA4dXQrg 儜l!cU)ƘՀCg6یyF0I'"EFG 03Ǽ O3tİk@Cfm\ a>[Rja>șUna7 e N@䟄}z>n2l #1놉b q0V#< c2{طoLL"P8yx=f\$OizR$luѨx=~UL4 wzs_q㚯_vP5CX1i,܋e`rXIVx1 wDIؒPt\ +2h2r{`\|3*mJbZ p` ÝS BRŤez̿$dr'jb76O/0(~= NcvMWR ;#zM/C \xLQ '(-}&bor>y>}|&A2/ʃ$Y[:sY&+,uߐ8]R}tZ@IYyZ$cx L|"@Mwݟi&='U;q ۷opaC=^96Š0hk>!J-ōx=JNc&qE wDrLs~+YǛ>*~zgsJ,Ν.4.i!}U0 \kIb4n^W@˶\͓\y !)LP cG3\ |7D=F\nʐ̱vR53pI"G(B6X"0 9'"2N&D-2"PѺVjR^һm;:jv~Ox8?,*afJm\=e̛0D|ZeVg\$\1Mt U1G2 2 x[̴}c89$}s7+[jzwm:SQܚoN6{{άf 9 &j!iAYގWs)L[+pWWhp պkmG4804a,o0jl,&"WbRqI<ϿXH9=zSx ,eWc9\Mm߽\tٺC N'챇lue M +)m82]= b4#uVsi˚j%bUzؼQ")0  'O`oAi^h(f,7HcP=UJjJeX$3#jĠ׵jx菻(0oe ##"٭EF묦sjOfUw:y1j& H!3n&~k\EK5I{krq/A:ՇP Xpbx|` 2VX곟N S/ESf |n) 4b 'Qc>Pfן5t1V9[ >c<jcЛK"cV,`]c5&ݼ*ſd:O"'il\xPz{դUS s;w ۆYc=IoIN4{HɁxv0*OWJ.N'G_G/ܐ8y}c$&} ƪpEB{YEЕ_gjv !MNKhbz>~7ߕǠ$W8'`8IzcƠ?2`Ӟ-kNY9h&5,a'2l*ɳM=KjejiޮVMԲYa l{Pd [ɚl&2H\>Vҙ K,6n~蜓VoA]ͦG̦>'RX93xSXI}@0׬9grxTޱ n="Hoa3{1hI 3??ÌhrNXZuϕIuݹqu)a5Z{FTg9x]͉E /{o!s`r':%俢tLWLWI:A&i N'g۔ey1^3c~2\/x0 f/6LϷS60 d&=L۝>cBJ00~Zbë.?3Hj{׮;`Q!VūllUtWӼv笮ӹiu4(W5'1^tڭ;L879c".C 0Tt˻:E=Z"yD?e\=אZ6=f5yjq? 3^&`s Ǐ̛1 ['?|^!>^0֭>>$@+ᢶLR7bODZV((&;nvpe\iJp{-^ s|Ŝ3?($ am:e]г,clz/] $y,䳲R)K} M9;Qz޶Z17XxYj @ SV~|bZb*=zO+1S@/1ه3.:=2opGtLjBZE;,*$b& o0ͤnLQ鶳s:\[G}T oP#V]SW.ϐ|U ٧k{gj#C4 X2Gନfϣ p)N@5˥u?;N,zߟ/&JlؿE;D1z"ٶpx^Hל)61s_&H w)#.:s@/Ⳳ?UlQH .N{k3w4塚μ/LZkAs5NMMKdފށ)`hPUPqPq>X"Y*X=B V4L nRcnԵ}K6}:.ݹy3)c꿯A~Sّ2c8= gԨOOlK%_!aO=3_teʛ׮LlJGzglH,GCra}@tn,r :!4~c;0f.$hAD|K'$9c7P(Lo ǏG 3ǕV:D0#jeꌙaW$9gR~\`rP 5~JVgj͡[~4?r\ q12h8!,2`@Ff5bi2-C`GzNpbWsbӰ&tL]@|_6q/3`i>di/X*}Ac9#ꝧˤ3㤀 닅 Њ0<+,!) B|y+R0SJALBpLۅ0N)VV Kt \, @| 2 !v{T3XPmqG0w&1xVKV1 'Յ\ |X-"61D_Nz[*R5H)ȝwf QKW>F ?{?s1E ap jpZ}ZX}bϟT*鼸۫NrEL=vcjNuі`jf|0r/9PtǔΣU)$̉8đ@%tpbCìj5DL42^) wݷf qc8R qx\2?/pZQ" |O`dWj0H^ %}K5dWgfu_,Ȝގ `kϬكϕp LCS{8"Ww^ %d͊}4Zʘ $c0K0.ve{3Cj܈rO}%p~V>߀߻~I SE Cw\WK.) ݴ M/ L0|? ,^-ĝbAFbɹLl=@pDJBc|oJ&(Уnƪ[mBYGp~D}߮V ԛϦԧ`l Gr{ԮGKE?n@<+f ɨ.}z*+ׯ]G"(Ү \n!SGN,Xx#hBo D1\!'X&ZqO 3 #f/x kX"] IܜglAo$2uIk $a`( , Vli⪟6 ܶu_]wnLS38$LZH_?Tzz/ĉ ^za9$^ײ2plZɄ#<hV+P9ڃ_{p\W-x j "(e9;ܙC6T,&"έ]8W:zH &o+N@\+uͪVG]wN\Wc곟UCԦjޤ=~?~TEaSt|Q\zgsw*i;֝9':#{шr֓]P!L[te}D?MjI)] 散uF1 R^7\ـ@M@xs@k*/bɫ~Z% KdmD:Nwճ!aZ1f_zM $/_dUL0aVVpM?V]#DPNg"p \C-i^E8-(`x⸸su{̗O0w?u uCY|>7w;/}[n/V}{e3ȦR9ǏWm8lOuAӴo?.!q}WãR2|+JzDmШ s)#@/+Mm/g3 Rpȷ4{$w3eH+R=6S, , W$Rͪ˗Ť-?e/zi aK6WSփh#"cгto`!EgAx+ Rv3S#e! |[s˶Q8&`le5(%D3^ H֞U?{_QY,ExyV?[-?>J`ڌT\*8`Lgz!BWzzMDJ{,ق]bcN5PvY@I2#cH@L)!bIiԌ oI1֍ڭs;5|n Z՚e˖E?%3+bNDBu|Z=p@7sXxq.PtέM@WrW L0#GW8MAIY1fgOՂ# Xio-5 !Dxz4RltiD7u&=O/=}"8㤠Nu?Ȕ>ɛ>wUx:A0D+ƪ <7Qل"J(0PR2'_dl!b^yAH@M%e'n5Bs5qERmHh&NYcy91eq%s%QuR_]^S");۾3jmEh|Sz0N?aӱkkf DBI 9߯ v 'mSIpiȔM ʽrRyv~Wd ۧ0/ %o7 =ߪ㳡c(A5%15O_`/ø]̨ Hb W cQqaRnȝNJ(`~XxT T]jmEi/Ej7^P L^$wTA !Ӏ^Ƴ"}e@ d%R iK8 5ڢJoz"yrIF q?hѕxBEBe3ӾM>~M\`p >kGpF0 6}Ig)Z6fpQq$HIbH L҈,"n[FD.O. cz đg?,^F;Ή r,ѓǺP㇚n`\\̑4NPJ0{Unz5"8霣`=*wVaDAn^q:ڻ Tkq(\iQh唋)DKEa&Ry`bGRN.jKH&smAԟ<9[3pjuq5ah@{Kx[J%ciom 8oATzY}AL5R 1I{V ( %pkfDZ%| zْbJ NӈAmbW@(*!heXr[}.Yum x<-Jm"9敍<^10y`o nplKJFO]@brԒ\:h@q42]#c*v25X< SJxn"4;1'kx`#* ADڻdHH,bu4g.ϳ2*:?{G/A@PblrET])Uˣ iD,j>,ʝu#<޷/ 3P$+5K7$wW}]vNP2 d@$l6HPiң 8=:K$[G^2||~RJ^I\{N\<:  Iˏ\P.H*Oy=7v7q2!YQϷEX*̒J#uPkP%.);È}D-\!V0' VR_Dڽػx.Kkϴ˜|LN-MeR ~*V4n8>L2s^e8wrV 4*nEspDMzkڊ,X[.>S|ɸn/$X昨u4.k׿aX#_p19g=Gn]N<+a%{#<ۄ{dUme̞BFj(ЄsQl!lBa8S{PJi4^M*xuT/W7 nB?vp@-Sչ "z@]SFyl;gpˡ6Wˆ^ظ HЕ8}w c~N+3Y"2M$4Û&gչ= '+dǟ`?];ͥܓ(T&DDqBŸW&1{\Pmϫ7)DԙCj8S<_. a9`gP#Bi>|>F7.>4Po0&yk`.pbvoB4\NrǫuQ O\ ~ VΊ"{6B|OJɺ>&֖Mtם $yEO,7$tJ?ԞaCq֯]ǭcAjRP,3[9#Z g(@C2$9:%vJc62ct@ ޣL=Pc!}4'$n g J/gH y]W$ՂA n~`d2!H^Ex봏o!ų?+s-|8ʹ­0*g_Fid/qT|#21jrνOG X{ Hon'1W6;󳭻"KVgW)><< ".WWxh鄮= I\d[hv%JaNb !'Q.j׮hR?1Uwo= Kzx'<5"c|^^izs8l; 0i: [0 1d=r+iEI,f`ȄȒvf0MO~O2rP"*xy9 6nV-7)4Ȅ}D/l`6p8<[Z}z.n 1ySQzDmL-n w [0 7{p?>Jw|!)hFnݸjf'[%tt KoC-9={t-e ]TBBsJ8F$.rNG\s lۃt/,۾YXT>ܚBn~ǭk@fx1~&[%떭t۹*R .҈G}^ pg"RHV1.Eϧ@Ė??.gj^X62%|bѯ~7V?v])^ L$mBXfxg?!AH +qaM( ms# Q..NXKBY#;)}a||fD"}^ksG$ڄ%$E`a&JRp_Ko.wIvRXHQ'JY4,~/f#F9@%2!} g ?/Z] SGfK!Ǫ1Md.|{!)|hKi`}T6L,s CO3k^~;}' 7}I!zh͑0G<g9t;,e;  4\ߌ>jvqAe7ѷ<ޕLx487&=3toSM{n@q5œʘn;cwyFT*-U093Xϰ>ɬny԰HH:'E5͠R;0M>Nm4:\_$i8 521l~fg+#mp=ה*,!ix =Fb=ݗ[3RiN 7{ NKҺ]M5U'Z I};$RN8Gx#*Zi}DvJ[Hbi=/ne7 ~Ń *cln.$  SmN/y9aܰ^mKޱsQ\tò,"Ľ&_ܫQtv(lJ/Ar'M{D@4r5Eu +o9[Xd 5x<n ݍTU٬"\!C*<qH_z{MG<|g.0ӕkٽ=M$1Jr+7wR2HQ 85œN' {|]ܽ\+'~ kaaD"9gӏ^MG0s ѽ+DzyFD5rJffwpKo/+(l~s\)<4-kjaqU(_A‘P (\ WU@2^i\&IENDB`pybik-3.0/data/ui/thumbnails/Brick-10x3x5.png0000644000175000017500000001665613137372623021067 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+`IDATx]iUՙퟭjG(y@fA@d@EiI@( q@%j!&ihY+JMzNg>ܪ[ޣ{P%Ƿ{}}nk?8Cs L00a`! C& L00a`! C& L00a`! C& L00a`! CN 6`לzҽHVRܼ-xl< Лȑ?x'r<2܊_޽d5 ~ @GbBzIPHqz8F>?I%Zr[ڽN@'{_j 8exݜ F)-OvO""f _x:~0TIVOٖn9(Cw ax`B6ײ$qdpaV;o7q ۠ ' &JefK ` t* $:R2$1s~+q8&ci~ϐkZ2ٵ%=?) H@X4*ő"S2ՕC?a< (Ïs2SYH"@ / ,>^ɐ KS8%ePpXy}zb=d!cXxԁE CRlфq>a::$÷sܖ<2Twg2ͩW@n99E8S1o?9T! J|Gy,p;Dq 5ӵ$e%~4ƺ )$X @P/EW$J= esܨB3>u8$6Ә4yyu&fi3rʝ8`D@~t nxu? BK`NNZO[.Pu^P ۍC9d`Y Iv^?WH>ƊQ(Îq#:}vLl?3.TMX EF^{n~50^ <~ c,H:ެ2LF ?#"Ä+/*c:tҐt_Sdp%"MzTL&0SH9bO eS {=ۺ/Ys6i_Gn 0Ȝ_f2@v/] Ys1[nf) (H^(.*UIz\ +3\cuZ.= C3- PqEqsRK",qsIFY3`!Ȓ .$e:OJ>猩8;8LT6E!0\k7X&z$>=˴DT8ǣ-;G)XCG6}rSqlS&[ 6%9ϖp_KѨT!_. x<0#<}רܻzjArےrJp(@D   Kơ?H>9SKZ1%:=Ijyi6Sci4nzXL?9e S 0}=<0RWy?1 P]<mܖkש~|f`;fote@6nL&! ߺ 6_@ ;{l֝ez,UdK*cQ,C^U[XWju)2>Hi*Ybt֭ۻ$=kK<䮰՛\mKd%|W"v{) 7h*fbuU7,৛G{#e#\V/RUvN`DZYYUˋǥ@k`O/!ٹ4Sqa^zgP!J@Mfxy ZL%U" Ċč\RGcv |>A1V LT 3Wt\SϰC ,uz!j1,o> ɆQ>D,~6VI! 7i.xzc̻x-c&tvtM`ȉ"$9ߒu)Hsv`DX$Z[uHUfJ#61A/fyA1˾!z>4bl(gi8L<ƭ7=ӌ Z78k}2n=t?#B\ e & 0&=Me->Y~}W%@u|-ؖظHLĎx$) Uhč[ns"}\[h]Ջ3T2mcIP^&w>w?z:@ |rxH/LrVϲ)ex@.[qk/x-`LqFƣ=͔t dcd,Rd.MOQpo t`vtx1r2 F%Leeo%ƎꐘU#VD *9()_eӇ{B~b Okq I75zKσa0DR[nX/)}"Ȟ-]2]_U4"H=B L fs)JS~A9 d륈jzaP D^{a89P29x?,*, 9W)L8=Nc XD!JLD|̼8"g@%PmM޾%xo=Az(t,lܐRkD11&1'ȫG {L-z߃i3z^QnMn9 {4U ցՎRpLJqO=GALʤ@F]gW$[C@#QTxDpߨt̕v`$U\@@YCNm&y7B$*ƣߊTq*JSQ$"ͯ+Ηy#WȪQJ{?{OnEKfΞ*0RW} +lVi2tu:@UP}*JD]`(OnάYV *Ž Q#q>tюRɁbY5/&ߒ+"r(ԠJ,}T)o~on*$Yf|C5`ʼހ2~ӽsRWvO6}ӊ 37Xchpqr=QMmk F*Gf*q Ar,9To;o - 0͕6¾c׏mR-JPko#޶.RF iJrcMBjmN eT[b !tjWȪ,)JEHo۴4 o0cOE1%T+/;Yly$,ʸ()ϸA|ذpJlYP%dH-ߺ9G5ؙ/S]~WpxP!IhJ )=8.ӗ j ɅY`)/:}71GZ]0\\}\ )={e'!NX+2mBX|prn-B[,jFvom%!s^=k-\K4I$;qsbϏ)2QI~H+jym EMlQRIYT}2$#\UX"_a?~X -i~Dᦆn3 l+U^>u` urY m0R5Lqg153wcv{nRI"FWo~p_Gs dX&o;Q*/3U,~n=WpO u z ",QOFg!(8KA},Y1(@R}k _~.y]JNzMwՙ.:p=Y QAԺp%ϫMΏՇ;%wZ?~򾱧՗E khh}A&S<Wފe { J̏˧KTg?-Yr./!@ Bl]A|%iEz#o6w&tuBy<Xeg'Kq5_D=f?e^`ufgcM$.Gj-I%T02VfGrʘT\<•w^tߧ=kKum)e"@6(#D̵~ goܖ *5P}! kG{+b*T=cR߃u!(M6߱f'BݒY{vL Ah>P"M4,ڨB A#ytJf; ^ߪ.Z `g ݵe;3 kn! C& L00a`! C& L00a`! C& L00a`! C&Q/m*OOIENDB`pybik-3.0/data/ui/thumbnails/Brick-10x4x7.png0000644000175000017500000002433613137372626021067 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+(IDATx}yT9UٗƆʎȢlH(E1h EAThMK:3'$3Ir>}tuUܰt]uꜪ}}Tͭw}s .Mp.r.r.r.r.r.r.r.r.r.r.r.rp֑OxOR*=74Dz;pz$ Zנ_Sk>X\"ʟ6> .FKjrExO@\ra2u o?wpaƫZ Ѻ\yTQ-Z J<9qߥm <^U-t҅p9X]\_Nl6(0p'`f`f8ba60 |편p~ u{3{ǍWCO3^>Kn@`kaCڜ(!l6i?8⛚Qt6:(x5{#hy<*׫~5F~ q K OoCF#ݿ 1E,7w?NSS] c諾!6~Ed1]n0  ex@0uǬa9 Q ^muU~cBxlAp^Lq@ywju2Eg0~mhl[ 2  d5f`(1wc癎c8f 0Ԁ&#^?r"yk ";wLv.,5%Myil0^dX2~3L(,[Aa!ü!=gLƵ/m:ى2e ߏ˲߇gg nOM{F$<agDR%bڡ0:?a]E aRP"%iyzϐVNm ^~lQ_ok&.0} 6sR;11ŜIGq ف SM7&S8zzpr%O =b_a!ckZoeO٧{b݀)D0B@fA&ʦy(0=u/*l:tѶ-"ڵ~Q@-wLfXK0 Ced}wXAGz$ k|~;]t0< :Y7Po31&/}xC/ 9fPnS8u8(~"'L~4@^K 0Hj~{iƷK]<볂9A 1î0[8<\]zW"V6;P]ifr gU`nؐQ6ubٕku0sT=aE`R]mxF\ Q*M6^Dj '3Pl{ ogCٍ~ HDSs t @ (:|ql$3`76g1L#7O|i%OcXQItXv7Mh !U: 61u87ydZ]G[7Pc6E\ZC*; }% *,v2Q,ggɃf`Cpɂc: l9LJ !Y},t'!7a>n)r6Rx 1b}a|碷vy(0dzcHFN(R#.Ci@z$b(f3#`]ݼH#x&!<CWP}x< 6 }]pPŃA5 Y/`D]VUi@Eahm>ِ%ڙ {0%ܘD|)EXrFi]ӥXzcG2`sD[K#cfS<] APLq7gbLw16׳ *=H`/zMH Hνx8b8 AqG"uE 7)`bA *ثMn^,wCn,% /W)ALk;%6Y'x Tˆ@ q՛o3_BUo,|X [0vBͳ]ղ!TѷK+x?Q;-" ;y%[|ou8XKxd!X(CM{Wb@6l bi n7dre9d"L P6 uVڞx^ cyR'MhM.$Wi``]f,@GϞ=˨4PS|eFlYx]us|O%)aHL/0YUCz\N{c큆y7 = *9xŦZ;)  pPL]AX>'gW@RsSLX?#PQy7{U0H|mqb!VfQF9KFq !CCXf,ƽ,Y5P i| 54=E'h4@TC'1hVb')2y) @J40za{d!a _*P[nM$հ>~C AQV9PQIRLq1>0Gc&=\|"xds'-2tyC#'<I='m߶{` '^6$9*) VZNxr- "WG5 9M/cY,2/-Eԓ$wϨpF轤t:£W7 ˊǻWc| )wP5[ ,# (lh'?DdL{³ģ~Y&Vw3a $?#e)]ƾ! m ų/ۀv>&3(+!UϧTS:{@+Z#⋼W #l4i{y=^ac̡W3;Hzt99j-ţ_Y1p\6`(p@L`Xc$wkiD>S0r'cԊa/Bj:X~^:Ӟ_µ76!H=4v|boa[*O?S>M$߱g2)aTxtb99 dcw9 x )7Ԛ~c\LK"!DxnbQ*+d;Qxz*oc#T`|{2 Qn|2 =6c2 2- )8CNz }㶙TB [ $#ԝ ~YZa]Lݺ$-̖A; ?'oAmD*PJ,׶ޘGB Yk^@D a6,7&Q휚!Bڵ8˿lP20}A11\($/1=ٌbP\sV pyp̍Dž!]벧0Ƨ GEW բJ0B7oHtjKn`! #6`i[72RKf޿<<`zf38wd;߻̀5B"H0]jj\oNXIã vw@Hތhs{! 4`(փLH谍M-N:KN<~ GeB/ 1U<kuE+A4bZ~d{E O{fd"xF9>eQD{sL͆ܰ,+uBQgZ8c_2uwd2!Vi[f]?0+A5;D:H!"Q#{`agzKA_ac[Jbԙp}Eq>֢ϩ]XQ`Sh:oWj%_?.Wg{ |qPnoq4oOOid:FHNHV [ah"ѳ[yә}hP^ͩl`¨GhT]4Cqk/aȵǐ3У1߷.}Jܟ9.*竳1$zF/赬+LP! Dž^ p@BOC!$nA2t(O`#w^*.7~ٌ`P_/ X=t:BSdZd0*+wrAH0agB&XY05~\aѵ~펄a<< W__&7wPOOІ_EOc +-l` t`&@# Hw|P ^R[` 1ÈLk0Q٣ 3OdG} `t 9Z:QjqiB֮0ئ)w?)S#W{/AqܐeWjp0ZoeLc@'GN[0@E` D Ȅ4p0D@|`T+,!LpOGRQai,1'胵V P]|!()]!5u|*S<[ԯJ꫏ קz|X}K@+0%#B:#W8J F'U>,:Pvh ;p1,xs dp~Hh{_2\S#*D+46yIMY]U5'vRŞޖ-# D7?[S4xs4|Vf@!12 (A"d$ME_B>T #fϞdNK`kӂ}l xux0P6z!Ŝ}I0CU4*T(+a0G{!”m7F!'y94O-&|'&!?ؔ0)+:kJDaS#<6ֳ8Л#2%LbcK﷍<<8Xֹ704Czڤ|WZ"BŦXk2'**/oR' Mv+#aM} @Jj'UF ~ңg:#~oB2%;@ڞ-s~ ݑ bahN0 QB8~niÊ/DG^N5.ڠBTtkV W%WhPNViG*"",1 +3#D5!qCX- WW?C4ulSzZjʈsULrKuhx}g97l;%m y [2+_s2`DAxuomE*3ش`X6c+@ؤ 3`T6=o 78˾ =*,ۓJJ͛TFc͹juC|ꩻ" =%{DrOtֶ,f6K(IУb酢зT y6#Ԭ, zd=2<{2uSSpu@2 `iF0 +̱A82D2)CS1"pc 95i_:{_U|;* hs h3sw (tQ=bS>zvaU٪@x`q5X2s ,SӦEcedC+dHH)v`-5}@6 )ߦvB7j^?3_SB7\Vu,jܰz ߚll\;䆺r6j-i|lzR5t}y v(|d7i`0s9Joqx,_;"dH)Vxv)ñXc'0YoKfU Kb;> 5g`0bpt>ӧ\}S9vw'*6j`dP=73Þ"9oQB sHp, Ƚ DkM'qe%0 lUOgױ@ez] XHk b* X' + Heye1끤<ܯF0) KY`@ztC\r5z\~9v&:RLK׶JfrZiG*@g l"0]I6t&|*2u8hDz@p<"ya J5Ub|fb311>FBo=~uTn5د'!@do:?\ѡ_?d)DٸNz T:g)%=8g fVXPA4: Jb)pA2,r6&$͛>: =?|\&}Q5sl@"ճR^VV.j_g.>oJU=1HNכ>]`/^RuܨbjfO:V-ϱd!bQ rW-&Ҹyjk=߈*-Ȉǯʭ^{68tc|{pw +NOC6Ismc!HQقFa Tr^fNl+"7&ZO~uXUz o"{JJw D*?3LCۂMxawyazpj(ìx(K0<; A /|y,eM!!#(#ǧQ9ȧ,[b ,VɦoN+^w8F=!<7,y*u[6#`#;l m湺΅+ ΛLa"V=ģR cqUS\&~ܔP}i¼+8>f9AP zg;v!HqFLYa-XUyꕈR#WS^Mop:>wB_Nׇu('u6o-:SLC(2 ԩW"%л lo+0>Pe18bh>{#dk#H?k87hݕthX:ECR\>r@giSpXU4fqpL n]U/nIJ)cRB?SIToؐW\6{h'kCG=y?3pzaxQLE/b7)^~#Ԟ[F}yjE%=O,¶)R :=I"|16_d؉&x~ `}Ц0S2 u˺{ɚgT3Ea` _0>)/Q>^*q?VDU9EJ<t@zUD ROell+mNJGQbuXa YXWǾ*gMLݏQU]Q>0QUN 3tDJ' 9Y?kR4 մ9Y`usg yרg~?8RB~X)}.qxO 7," Fa pHYs+"IDATx]ixTe?ܙq9H@@ -EGsQ ,qA5We\VwzI; ϏzHO]W[}+nZvl lf6m6l` lf6h=lgؖM?£LWݮӫ εܖ{+g )k E6ZW?Cw<}>`'p8P^kVVY\-NYոŸƕI c^g]F--59h^NFŪ\A  ؉=h9Fb ;'؏OB֔߸m[ekCO=zrx-V2.2Nx<[vBtx+K!X ,Ks: ?""O#ʉ{ w`JrASq{S|.! |sOk6=oTqؑL$[_$L?("\#3?A?NyckGzȑ`?ٳI{|""C"-wx AY;`1t*jUyWJ\CTErk}hr&`T!݆DF""`UAnL$|>Dfˢ+,<҄3FP"TUN&=ǟ5|z"(lB0#46U8g<2}0 ']"̣)g7xDMNm'+m1oυ[:#q_ɢG߾56~ܲ:6!*%dOh%M<':2).MD0:{13#G /{7Y#̲ѸQ8K;$3Zm&~pv_ㆡ@"1r qd<aS`~R|=֔!v87,rV~OZU}.:A||\i*!cBfpzO%]c]tƨ@=l Ŗ󯘮O_.L7?;s3w"h sC݆Έ86ģ&Iv)"I`"Ğ #Q(_J5d&٦¿|@sdݵk)&  0C? 4r< AUg/Vx_]סNaZwl@#vѲkMWs|ȤѪolV1^9(َXOt)m)|#1!,q9ΧD/cg^f FwK3"ZD$ ߅27GaV 6]q̟{Q>WӎXQQG@P)!^{t)V{0i'h \j4~8Gax#j2pr.$:Qx^V_ SEWQBSg0d!(=)cT UsaE\H71(m3׬X+='D#) }Ofu'20Rr,fkzmb؏K&7/A i ˮW@/PZΟjS90b##̝*j]Ȑ̟V0'(BڈZV}D @-;=T8S aFAX(o"M(Y&qܑKt8/N>3^?snK ~~OO=zwctJ!!ȼ.Qdp2;@`lT8?ԆcxW>:~X:]].T.* 'W'0@@} 92z*q-#@ Zϸ0!K|ZJbnnX$<0vvY6q dtb@n1S막xP{.k灱{Gy7#@cct̹QdO6T8KL @0˭p Ӭst8a:V7_ } T#DӸ5U5 L2|y"+m42]b-HBˇ+ɞyax:ˍ@A@$*ŃAC0x^BK&dOڅ&|N&Vw+z9-C~ oBuӮvO],7D.$XTwe87]aϓ ~EOx&Ð߱H/_ȅ)#Tz"x%8-$_[DChdvm*xXd\>W'"2|r3_蚤b`lj(| 7^ޝh'C 53du` hJ&OJ>X09(@遮#08$DIf`B,L͔2!φwdqؿ|O9@!L?Қ? k$M 9 9SE  N "UfO a !>y[^C` yUsux ,EuM,UUUnxɼDp96%zHc`GN+ 3@]EcܠD߾f'g!vr‹fIе yu)]#(0rFH|~29JRv 1z8: X"p`LvYcDC{ ;5>r ^ݝOb , .Us hV[6lTX$[Nw0aG9Nmg)"2c+,g-4pBXBXI~ ?RXߵb ̩ V֡K{'TԤ_'0eK\/S#A-x0Ÿj-xD@““G4_@u?@n?V]0uAɹ4MÆ+Ppk| RCî:hNbi$ \4 we_*#|HzHad뷔g*)g|~~1g$8u$CN`h{w>*)#4X.WIN`dS|W7I̡)! ,@)A t#Ώu>.Yr[q9` ~8B.WgK$ YU'' PO `sQ3e^8 :|:F(>M bԁtdvz=n )p W}-A.^ :`@/[6'r{J`M6:b%f~M|, 0.~2V| o-U~:y8O|@s6u caEHJQX\%䐨ՠKHjE#@+My Jh T?U ^o#bG_Rct΍ D$!ڢMW'-r2@W+rwn_zm<߳%dP< < 6r? LK.2IB x2zFprD=. QH`"<]dn0NxD&xuItv-Qׅb#HU,1g;4}: H)  1 YمBRY}j'҂P @$wUL(Ȗ92_XaWףy@'+~"YvP$ !k:KP< B4Ȅ1q )^KF/f UPi7%BޥN-^Z'G`.Fs(ݝp%z̰+H7J-$6zz2M36#_|s#_}(o' Jgy;jY`/NQ0ܴ-b$:{"4]BN& uIWTo }Р' l\)=`+"GCдﴶ%CZÓ<5]Ұg$"%%z'|QXWz:ض!^d7 ྾::~/{. }xjǩ"PŠgͣjZw%:c@90q~~?4rsYwceK4(AQ d_C`d M89s{_0Msٱ U f+g<  fHΏpjZ͗2P+D7jЇY"'M5@|!Gt/p n]~} 'QĪB2F]\ ʂp6 @g ǰ_}att9iO@*J!̉H, WchY\8Q1S)x Z)߾.N|EV1t#ç^MN`Y~E}"Hʞ>ZnN$ Շ֯#"ORH68">1 w*L 6]'Jkya9~RSaH7t-VDg竰`)G?_ZmlidM(xC@`ᦓU~*Rt`29LNHha1ELʠ=T-5Yxyor/t\QXh!_3li SB28;  gR a|Gj7 rrE 9s&CNmAKR'oH#7+mi {j8s%O A8ò)c ̒xO;D~9)ģob1#$4!LG2gayy"%P ߊb9r81SDDkmk.(ڬGr[GS4~,4|}EtJ8;+>Y<%]$3#`EZ:GbI`HȰ۽Cn.(UW^7[KA*wl r#X8-bD%3"'(|XXD"\qsG`:/5)6p|ANN=N] ae".`mPiG ^6bGB0VN!]q*,'`R:ƗAHgEC.|ԡV~'>޻u$N O ˣ L[L\KbpD]Y,a@kJs=FU41o,񰧩;'̂!KCD/2ׅT8B;7U'FaR,a.iy<$H8 묁D1q #S|Q0@Z rr_ಱ_7';N <ǎHWОAu;o:Q>h4$'Hs%nx`/4F l[cgDx;YgW4h׼LH@> 9JΥh$\ܧ>ы``4A3]z:@"En *dK ͧxD\&5g؉Z;.+읚\,===cZV\9@tM!|\4D(JV}yA@s;'܇ LkiGkAs6LC<9Hn|]G%"o M`Gۇ@ ?%(qKT>=AOKsShg\. !5&"9"'Qh(**<#qSɗdG2EG3o9mڴRSm\e#UGO/l)8B fm4 &/fb PRa"elq hYW&k==V0<UB|L>Hb]WtѾzjJIRX'& i>FƏh"r8 o(hh sp&!X4I@jS?wg'lAOmWa]:ki "  K#Xr6&@L+ ҧM" }8Ȏ!gR5)J,fpiHxY:;?}Di |zzbShNX OsXlOj\FoZ}}oq/I^5O>]p0Ttw~z`Ti "~Dɟ™\.qK $֡DJ'`̈me뚏f_̠G`hc9Oၭ7M׍ -E=gMuBrbNx՘8#+n+[D#!k/EL5%}3/ ե>Ib !VƦ}xW{GB|"@"y`OL.k"5 V=[?;9a]|:RA/Wtg$thQ[y~u>Z@=) @Q8@;vI⍨3[ˑpv$ pr/LD N\XݒiJ>!Y/Bfj;#hS(#p@"" pz)+۫\QPd t =::oY0yߟEy2|\(r8V>ܡ>3pԉs 'ce` ţԋ I bQ&~!Ud P=*2.yl!J&(zK }%:ffEHNe $L@,aF$*tGNۼgm5nD:Q?Ft |`iD+_UR"%,]TZCb9XtWdjH%5&F`mD]' = Y-3XG˂@ 2:3&S-Sk0R8F}T݃}HQwlq [<!cc-̕w!u"*a5_Ƀ ඕ^foZ_JYKw~@PVZC!T8 f0=tT'6)LwΧ àԿ|n@ؼoV~+[HYVZG_9ˀߪX RTBCk+2t( zFr5}Niq5֓sKˌF`UԴ7@{rd&H`,oتox1ڽNݽ6C$ Dlo)#O5wMkN!?m6l` lf6m6l` Z/`TT5IENDB`pybik-3.0/data/ui/thumbnails/Prism3Complex-6x4.png0000644000175000017500000003147313137372663022211 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+2IDATx]gxT~~^ $S2$3I&bB" CERDY@Aw A$; ]u}]g$&OJsg?393s2׻WyZxpo|Mo>o>o>o>o>DT}BG#̏Ri?4q/t^L{D̜ޢKZF6uفm==NIsnf:kHȼ[ac=FQ~i1 G;jz/N))OT0p;-:rj "p ܪawd+)5*dϫQ1{e!s̰g0=lo>\Γ'O``7XB+ [,-? k/J`Mc`Z#|x^;86~~G^z>Yr#wso:{s\ozQj xC4g&kYem5*gg\{wB=/_L*Uhі~c?mv;I]ū`­^5/&>ДIOegB kMuUM1_qLzkd9wo 9z_Be{f2QQ#6FQjj*%''SD"#)1,BBB(88XTyxx8\.X%JPRRe"#fJex3sV^YF ,<$&ɼJ /ŏpZ9xHe:Ryum7 ،o]Ҕ+YOg 8y2 t|L$xc3/!y4P?)LE,(  c!P Fi JEӓ)ԺD5Lcct"8N>'X€,`LO)ZYsqj6 C{34fަe<}Z,m "8Al L[©ȟI_)Nd/5YA;lHro|Her ])GP:cQ*oSY1Fh#¨kg)%mRUb-U< DLyz+=s_ɏdc9B^$E `?7B_5L >W[(>sr=AKy p;߁OA{{ks)WR5XN6U  $h Ϗ Jpvn\2ԴRZ@Z3OxxN>}ЦMlٲW,J*M459UZf=:V@ZZD#컕k@]:|'5 Z74@CeJXG^UYغhC82 U6^ iҤIO٢`6yzA8hZcqsn O,ϯpQpATEbw`G9%pMUb5R…O*n "L>Cצ6d8{Ӳ.ڲ8L_oR4Ue7$qw B!Ԫk׮8?8ڟ%_p?0_+|~x_zY$8@Tcl-: BHe+rUb$uJg8 7G$M5Ps ӷ TF?Ͻ1J'1/()Իzʕ+SnݨN:? ڶmKW\&Mꑎ]-`mQGN)'ˍ@4N My+\uz]*7YH٢ eD)yJ7Bf=\5J1:P8&'ҥ]S_J<>f9pԩS'ڼyxOKU[qwu@2%*O? 2Uo,Nk3%w.l`$ߠwܛcdf&vz&AVѵQOKm۱C4:>~?~c @ըQx   @x񢰄 E|_RJ]*[> JMC53o z+{*hM`?]!ioQ'fNAO_y@kgW_(֥+}"F/BkF,!k53~brŸLԸv jh{V$z;6 4lpi@UXw:p}P8 LB*Uxpa22GdnȭzcsT1 J{^O.{g?%e*~96R/u4CJ2S\I"ċbpvK ;!4(NdܨZԻvaH\JyA+k=K:cWT17B4JTE誛HӯAȨp?]k< D)-H癜woD_rС呼-T*אg~<O}Qkh!G-N p +WiƳڟ}Yo< Mx-F&z ea:DJn.RӧG 4l FB#_"Dxt>)Z{))֠x|(Cڷe=EihFL}+. ʠ/BݲeKڶmAPhZkժ%ھ}8@;8` 1!( |Tx~Wn!Lܥbtjk@e~Tqco;; 9%䧪O5pk }Wх1n[* _hnf֭+*v%NŁB)920O>I%Ŀ0Iȣ:7prB/wXh(BI- ȵϰ]&* H5:;4 % p\ڑC6PR*'NrJJLL{'ԩH*¹sYf]t%&WG`-~o-P?mXlJo̞{n!<;R̢.m#蹚iqFڷ O!npG0` J]#$$2ztNd .k;l =@%X#k0]#9}q<@F~a?m}oڽ,JRzz"q  ]pA΁D^0D L HPTBv`K1c-Na3nVɉ<5.Eqڹ|h S{T?1>(T)EJdO^ :Xx<ɾF]6vn#d`?I9z⹿+DzF=[Iyc&GFsnI hT+veEҜw8\4H%Иo(wXٰ{M3gΙ3GV0"Giq + =VH[awJPIݪ|W^f{LF'lp<: 7wrM},{Fk:%;߮ETY@ lBPDECPSL] tib Ʒ~+*b3YC= 6@"g5MR0a~"^}cr .&K!LJw{8PbN V Yh=_ؗSx)â..9IHelB駟 A1$_}L>]xl BHtcwQfc?" kTJ,5Lq +v7􊑯G.b}*e;o[ݗU_ܕL4BYo YAQzV)wQ@2B:85(&N(p EܥKڲeH8@AxW=tRV7fsUa [服>pEUV(~zIDD+LO==zT%*]7!p*pM ?Kc@]h!WɴoeGUk#Wݨ0E0\hL Y~F`t ƅI(%,n?pW]FHv1#۳gUXQXA8: G9rD&ţwIf͒($4J 8L9 7#xm.39AbF|ǿ>3b8fsIh wQjtOES@k׾0g+@jSvm ͟?_h_(r!H M\d op Cda$F+? ! /u 'SOVϟ&08ldEoD)!K#%ΗFO^3]ԤNsRʧik gv,͢?p!! ?H(&@x"N"BA#@w7K(]'@61P@^c&{ G8 BGX=xPHʧ{3cۡ#,X41n'FsרN|hA9\NsdžFh۹=]&Mr)GpR(& PDLL,tL5beWQ ղS]7xշGZU Hbw @88]J3F.(,_?'=]±z|wYuBwS;c)*- zP!-Ա d:wi۹v[P ,M0A E:[oɹN|UDa "t>POHYjP4kW._^(^CZ@A(ރGptD\%|-4C0Cq-FGBK0S9/8Ol: #*Ye¦Ȋj3ڍU@w}G̏;"a"@"4z p h,!LzZŃ>oIqƻaRϿ&~=Hgu|듹4cd*7$*MYSРNv :*J2|P;{@=~epZCC뻍`U܁3'& U&A4APpN#yJGh%=lΠ!>@cnl)#yCFN  =mt r 6Ef 񧝋#$-ױT:G( 9^uY݋-tc2AH]m?hQAo>J^Js"҇8fZWksN"_?_@a7V$&G8.h5ut0^}?Z>I#\V:hbz(9Tz3x X'm]%|/€珉 H)b}OVm}^>ڹi.<4GOVʼ7,470~Yp`8΃ÈUEz# M0cro?Gn9yU=qCFܕaDڤ'Cm h`O}|c"gӦMzAtÎ*Æ lA ޿.F']J/) ѻsq sj#CNoX%@S@{Gb|/~%? 'w?/Rp~:VPr>8{V;9FSd%gUE)W%|leZأ#~nD=&;vMIgtA4m->AG BM_h-٨P}\wXT0\طoIхϗz"))6@/'+Z;~:@uՌ*[B?R1.2^EGL/H"&Ape'pD, XB]gᗈʶ?B[ LxUR l %S%;wX q8߈)4&nCޔ/.ty#A=To2XBh`K 1{j+̈|NF {S Bs6wjP30;ra]E$Q!j'L nF4 ;qWD\L(`agA6}8{Bk2Y}}'t6q[r}hazm8\ Br}Ath߅Q1DäU;T[Ap䁛7ěP/Q~Wi0E#Ϗ*" ui8HP/O/JfIko7 B"09] SG8POR0F},]T>3+9}w~h<9;-]"@JPՍq:OK,*sZ}X8i{CjXLbN\!&Y"YF9j,[+h:EIE ŋxC"@9XHdž DX78c3Iڰk.߸c'qF? vH)y`*Sƍ bTa7ѹs?r 4 C)Dcuє`0(htA^)͛M Ta;i^BWD Nb$t(HdO U0p~ssP߲Vy}e2 "QJ7h }yW˸xʏD0(^PpDm%! z7ovRTt3}޸3؏F70o|\kH f=jCA֭>?@&Mu(ѕ@ lڴCIGJ(!LGVI1Jqn!`dМ]½ Kw5lHP7I@16Ý7R"Iv= D6?5ʹ/p•|y|t/@} L"" 3SN*ƶ񺻇%2yD2` a,"4BǨ6mo3:_`brr _X=}dwEE[G<:}BF?onHQ(no`%f_ν{ݺk5)佋H#i wa J%no{V$ںtkdDp6ĊFyfO>m4lnʽ;_/ B] hZXcSMss>z)r0ܾ^ߘ8!Iޭ`BgFB-,Te>\Dz|M@.N#fkJ_l܈γ8x|n* }32F/\PB)"lF J7~]} 1g @?;{a}-w؏:@P: =^GQ0 !L1^} v#@ c `|oXog?N??ͳߗ΢IFzA~"۽\9i9SJޗ ;dMP qA} }2މ&*<^5~T8׭_Λ-]?@DԮ8p`[x ˭1wl+v q@|D@8G~P@\cr=oz?U3]t͝HV> 'vehu?!}X5VA} |gqHFhIENDB`pybik-3.0/data/ui/thumbnails/Brick-8x2x3.png0000644000175000017500000001261513137372573021006 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+?IDATx{pUUϖsWob0<y0i}(nEA(T=e;)GkTuu̚oO8e!U$';|ַ>MO@G }4&hthththththththththththththththththththththththththththththththththth @-R?`K-[sދiث۾Dp[Xw׶5 &, wQ7S֥xE;;>m0\@؝CO}d_Qj22 jAo؎$2\Rz)sm.JR%4c z [WAU';X}pDA>ˢ"G7 /?Ȕ%"K4)P×:3hϣԴ#j6/>,KFg= ~%Y}ʻ)d'4 m('z:25W|\0BDsbߡğ%K O.Gp"Β_G'PexȆ_k]Fǔ |__G}a>/݆o \%,Epm%zha~wۼwW;F;ٽc ~Ad ~{KK vc8B &2|#| 0kN#8YiR]7A"_it֚wbp>ɶm a?5ⵧFֶqt8[;%[ 0d/ZA͜w+ҋ4&R|qa5Jq!w#|\~_Gda6= w2O*LZATCgJXwh%JQuu[PB@8:Z<{Vkp<~SaE;/c w 'ˎ5G]55P D!$6XǓQX+ 0Yw@L$S030|k;ʶOw=pkۤ6Ѷogpn4%o^t7D58w+IpV( 0+?UR2N<\[xoBfG3C-\wE&# mS_D?!_*ੀEhwa{vg@ 6!/z(ܙ<_gc݈g=2'\= ~ @s6&Xl(dRhI!!2{l^ &˪- N`8bU_ 8Z\Z0DŐ3Xa zU(U:UJ)q7:*ڛ+L;bK :_nR35؜-thL̞mjt Pd܉@y`#CrA<,T2N=-3dPbe Ck0_/KD9w^4\rXyCxޡ#3ăAa9st.K (9Yӧ{,"ӠDDɪ@Y} _ԁp(S1WpC_gyC>==;%Vϕ)= x 7!.4Eg4l4{OFy\^qQ ӭATBբp+Yp71JeUY2_3HW71B M X"870BLhnv.ecd@F)y .U* Sw0}kՈ4~>1NMXXp)=!\_$&>w0ܦ`n2* lŵlpc6뿜vQq/GzZN6KF( C4.w#)'`HBuX+@HFOMަZJy qpub+/@֓DzHXpGv+sYa0LZ&A )\z8K [Sʺ;a"&yc6ð"5<2, WKjt62F _ W=q6f1đy H#_qksݻc}6}5)"!hnšこz9܁}szbԣlڒXo1gEopvBb yK`OFY뉕q!S@}y%V ws`{+p Do PY %A26~wumG;3  $%b10v̦/ 0}/(E \#&6DV+:A5uOߝ o< = a 3BD p e,  @ӭkA>ixTSrGcyF&B͸3qC@ Nou{ػfP2f(J^| DO_K ҿoT1H195nKqRMd?Zv8 /5y}6l01DKfv\0Y;PswDD}#끐_8) U9P"& *lB>?5$CE-V>ѳ z5|Gu".FW♆Wޱ^Pso{o}SI?[]t {jo]Q&ZUIa8QTo!^0 M(3Bg@:rKJv sw:5t|!I zA^Og , CMQ"j Q:kR>\rD,C3%*[Q*Ng]\|`1ѦwGO=4ohkKYaQL Gs1ԠPD|Ul&ͮ% .O"L@-) Jx\̏]eJXE$G)+-,6鋷 rA()U3d4}ȭfqp״pD+ˋ YH>vN=eIH `fWc}L|h7o^a֖r6zcζG) ) .=~qn Rb_GٓlQk.Ћ~x~2ՌY^SB;>!Ωfb,&_0|nE3̡[|ϊa!tPWF#w 7GpkKdHYFKf9n/ 5Ҁׅ(F)"OiCsD߾+zo [?bL>! $GҠx]@inGk8GF׶8ɖOpCKOk;*Nay,M0(t#JDN$D؃- M3 xpq&s0ogi'o}ag޼HgWxgfaΣkch0!%q16si o(OM6.) 'ꯝ+\y,N'lKHM% zW}vߘv28[lâP/ \qsߤG—MMmUGSBxJڿ\{2m=]8'}ahg8+d;ϫ~-7Lm-:xGϾ5{7d! 8Ԡ9si@kUśPם/G#M8},]IENDB`pybik-3.0/data/ui/thumbnails/Dodecahedron-9.png0000644000175000017500000005001513137372651021600 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+OIDATxg|>>9ϑ2d2^2 {ޥ^E XPaWc=(Ɗz׵=4EP<'/]&ֵ{W;B#B#G#G#G#G#G#G#0(aF/>f{0Ot7I!o|u^ݵf#njv>RӗD]& &| >o=5noBg$Kg_oD .fVsVZf.Wo>M 0QvAH24"w;09zc0x-3ٰx^6"c?؄1@ dJJJzue@{k>m :\>nǀ]2F\wa[@k3ǰQl6cv&) Ø<.zV M8@(z0S<|,xڅ351)@QJ}V꒒(3k`xX-u*+aĞb?Ia_</{( {og#oǕ{dR/k%&&Rkrmz2]ضpkP<'p~~nksMb༪8gȠ2 6vK#CX e/3L"rm锒Bn6&({ {X:>ͻ.~zW2Ƴ']&.٨uY[E},& NN +3->BFf\6],plAVJ>~b[5UJOF@e`23<=-f@=kgP?fM?;rfG5#sxOt]X@PDX;/cu[3G;`O tҐE=8wOjBa64 r'i jEJqf|эSɾ|/?v/N5/g׮qj -4_yxd*7Sw]cKW߸}h4:uއ2f~5.<|펩Ij&{r`im4Po%AtK4A\O*-I k*4ԘseV&sB &qyi6꒚(`_on{/|V57Q$~z]K颡=I}lXZ9Kjc>Yvhcb!`'IPqT=M1q_&}%aZhhb6R"KS ,Ю`UZ>? 770kFƱ qblat|>r|.h|m$Jd>, .Xp,B&`'_`lsDgKe]#~ cR_#qZHOUl ?袄85xb X'%'QPZz=h$=8xYi:= k ke*:b>ҷ):bnALK#wi,) `x2l ѨP'I;:P 79c{A^WgP6R:VPF'e2ȈQ<E~^o'>H=ʯ=?X:uxrn\\,^T5122A3 ބ/AQ=oD QmdШ?:i獾V07}mJ>0i*^ ''Jv(2sZ%GRͶ%4E2hJ o u`JU甎5KR"PsrJe(4pV2X!||f#~ojVss&Q?v%{9|3{4⺋ 2k,CF&*q>{6>vBAtC }0&1aif1 ɧ$DVM f6ɦÖm ԏ~F0|/-+=D ?@7 JA#fQ p9j58o]ҟ++*"{,=BSHD%8;RVRQ+c1q5CNd+R`w\MVo>Rr}F$ͻҙHAD;@,0:ʽV3!Zڸ_jC5}EK& PHϒFIKi<"kqG} ;-$+=SjIGdSI&djbî I39L̦Ԍ JdrMpX9 {4E~Ϛ1fiCf0/IÞPMuL@Ct(0b36P]- av1pǼC45p9cv#9a:ߪMFI?B8R&Λ 4iC)`ѣh;VRA xïj~7kUmMbmyQ\,iiiTĔ> 6/r~PZjozlp=m$y^T![j` jҒ$dxU;@BX 3? @t#-ܳ;'EO3z?eZƠ }F0C01^D*hS'4~?s 20N8ЈĿHu$AѴ#5:2ECs ӌq3~dꛞ$^- ` ?@@q hciju d Nf. 4@N7/_ɝ޽&|Ǝ6݃iw1U,8$k$% tMK=a /XH'W|2M3baQvȥ}6Ta(..C4SF?lwB'3 S.FNsuoR!C(=;̿r|^1Jsel|[H*{Ҩ?4L0Okh,(LcAl|N/e# '@90%^aR ׀lΟ-kn?WB慹D03 ZPaYٞ? m.PdQ DhK/kl"Q׫7Pm[7G+cZi+ˆǯ֑lU/@VEh$LVd f헚(2@gQ(QeYYYT0NkBc/s5gs94qnY';j|OCɗB _G$:MX^q7rϣ4fחF='AWi篩\'uLr7Sxr}>vF:29l>4ZzL b/Mj2)tbe(G5lfHR!dBS. 0I3M|/T({ib ,b`uM}.$:U@Yt` o6*͐@jhʰ%[0ڥOoEsm4'ċG}ذFxPf :_Nؠ3䬬a2ϣ\ AE3} ,|T2A@tb6Qy@v| JI|L^Z $H/ OUnKc/.)Cm?|}PGlT>gp'տ6il# 0XfZ1Fw0R\ Ug/!GePYSa ܽ_z"}z ;ФW^ mLW0pC\QQNv #}Xmdc$aJ3RG`VEmjP VUQ={PqrD<~c\౗==2\@Ezة%# Y}>UBU~Z6=w+ p׎}{$;@S*f J,4\.C@?")F!u*~(L3GIK;#"tQ\[*.Z~eM}5"Tfzԓ4Y rӄEIl^۷)rlA(;G C`  Zcz1rJ0Fk)sgj3yp6oL@gka>_QrmC ̧T2HK2--Ubs} _g/Ev2KUuAr!9 |^y;ʏ`ح4֕fڱImFe|WZ}ٗ:M7]R d+*R9?n б!6`^pڽ T T~5LFC: lL .f{>}{͋1(hK尠L]Dƽ Tnn&'t) !.D :;r>+J#ej)3Ƅʉ)%)c^@uk2YGX#DFWo@a#.'ذ?Ox+1]O*49&T;%HLOu_/wtFڐ]k@g+g@L |_^r-Ԣ(Z*E*>Q7W\)x.𱷂ʥ{V?Pk/cUZ 0 #l6K}`{aR27g pXb]N`e]X#ių#,h)ōKŻ"6, x-1x|NԪH۩1wsF['CedyM)dMcfN𐒐*,Pj$xQ]a+׊0wU]6\%o:qx׮F F Ya9n6zjҘs{~>xh\%eD~߂a콻c8Vqt?k-<{MћOѮ" Hl%T\)":Q>|$@jTR}?珞7lʲ̉H.Q"񕇽t]˚OL2hP =#* =Й ?_niX_P7oR9Ř)>R)`sl />G8MY!}jLh#|*0;=,KJ̹5ȀskitX\(:|VSM3FZ|;Mc8\i> 39Vvԣv^QM졙 tkz,2Jy[?0~ȣQFxZmli%W)XӞF3ɄlA3~n@ 嘾7DUlH|,{NљBV3m &p!~RA/͕ЅiLE2w16 +|Aa K9g/-4yr7<:16Dk#\k}}MW.pWL/PJsةCVWihw3r͘~W(?O 'N "ԽU=$鞃 -?~W#7 \*{`AC##pDž/T>pΦM+[_1LoA54yLFVRAqLc@lxۯq2 Y~*%I0EK#q]\@)]k6`cOgiTzp^Z8)gH@(Bhg+1 }OGlZ2.$:Uǎ; G&2e!׆F.{&(ѮI/2bMEJG!!Y3A`{@:v# 0ߣ;UO.]X&v. whOs+ԯc{0Tn&s|' yӿPcmJ aanl ,4sG߼ϴ~:Z,oQqAj8CQ޲4^V`EB/z+,4r!F8ض-CaݻLا<鞞t &0[Κ;ٻb\D'R=@Y,{"S@͠\T5Q3Bh9GhAlMKt夠xXGZ; ?R\\TPF^{,Cy<2kU5L ޑ)E_EKYR9yYQ_VUQ:?Px?t?BZty~+o={vp#ù;¿hfQ=S9*)<@68jjޜ.:r{y ظ'T ׮ !8a!=ԧM=zNO w#>I@63. 2=fȤH}qH zYmS=:TZ`S;۸&=؋@+Ǐ#'{[GQmm v1t. E,r} 8):[K֭3{x",;!M#ERݼ:pkn AG/Hoh,'ߏ wq5,íDs8Ӡc4~c*ֺm] } UWf jGnrP `5ѯa+е;g*#}Dy٘uätPAdg)ת d o/-!{!laC_Xc)`&|F {o͋7 ŋoӽԺB"*Krq^z me6+`_4b3&OO҉CytU^͊VV?No<3DSԹUwC1yAM\Qk@-5`z?F5ytCS8kR(q4lіNk>m vz19cR1:Pc *jr`&P?wRB`p~ 4kzq,^xT`xN-wEhP FGvѽKX S49e1`aھK&pmq~.Hs51v rHF asD+l^/S-ljVB#$>K|E/=?"Xۗ= @_v9BR@ErF}4R@CdgVك:{% P>|؀0Nr.LM mXVha Z%2S!Z8!Wʷѩa^/;ݼM@9Y#/߀Nz;ƆOOKCA,$ok_0ޮ@pweE=0<\4xYҕc`Ďă6bŠ.,@_q6-{֬&cmS.=6Hs|+3\ 9bz >ZB-+r)ϟS=ܔǛ{w&*ON ->x^M|nܶ;v f`@ohH-溋Vv ?[oPd(@+& &&|50x 0"O~%*>LN-[h);Ԓug%c@{|CVsv;TҢI.zh(?T @f{xȐJcga &zͤ+f>!1* X X6h US(C(/6tǵkD> x|'=^'540%wDWg:Te-\FZ1'`~ o Kة0K1twPVX篡/`hB(lCCz] <ٲ͠}έi7{_J <+8X.-ZhED>Y]~uv1Ы(kZ) ӵp|a))>S.# ~3Mr+o?=su͓vhWUWھӌ=L椪LrTH{6UFwmUU 6%ӌ&:%3+g)ϗJeҗ8$W{~y-v5 I2Y[ CMgMwoz!jYfŪl_hP˒tjZArwZ%& ןϴyM!jlr,<_0fA>l d#t/e)Ųb56?{yE`!apMH[8IDw5~S@C bj˦:E}A#(E(ȌY4qp.5nZ1?#MMrj?xoQIS55_ /<+;~`aJn(VDmؘ9X;08ʿyY PvIp°0kڵB18PajUnC\vo7*kfYTZ`c/bU1prD>fdaѷ$o[jmf`GSx q͢NKj6m*ғt0E۰)z_8srNUF %וM7PgB\Z5S}#SX>I#{< EM4>?O5W%oFc[l*+ǜ=eNf4lYq ř?M;u,@NG;/jS*^I. φ'%_dݾE^WOa dXDYU륽LkecD}u+z LllGAl/s {jљHNakn Y-z΍s&xTTPJ 0 l\ f ݼE_OPZdwhqAa{FLksf3 u~~0CG^G Ŀ>WC_@;nͣQ#v5 l^b7P׮%OY #P^_E-9(ҥ bAZj!س/=`)#ݜ9a͐ FwO h#j c7|MTEc4{t1b6zҳ~TYlo6}=í 67ѓQo,Nhbb>xu{}ڕ+u}N14eY3S#}r!y<~sY#+h9s "w}jXQ(в%P3=Gt PHvjGtPӪƲO4|RQ_U7FTjtj8H˧A,<4^z3'LaFU7.=ÌI]ϸzk,3}WqBn共hX,8񷽲B2c!,O4z ۷ YB<^v9D.NQļg:jاhΡmt0{v!%`sQuOi2tjɷkn떸3#z٨O''1TVQ[C`h0{b|MNF'YCo"O GT [[!w ȯ:5xltS((1EQHNb-  ܮoH9S9@/HvulD%Un1o/{ڤ-Ԫ B'ӹY#䰤g rmzڶAծ_W-RӶ/g=d5P_m]'*>O^w!(~7wa{:on Kp5A@ʿo.ތdDC1lØa t(ƀpҔ::س 0YZh#coDh<at ʺ~ 3Gg*>g՞AE0,p ?;|WL n^`0軏U+o}lun6:@q~?Duzx? F86f`\!%.rvو$ED؁o`4zˆ'i\x{A03Vq ചB/Jc1(Ik.w>fEQu}xvNtL,IqϴPIO@.){co[gSq|+I0ڷRSD飏Ӄ-" Q#G=VF/@ C6Pb n=`_ 35/pz*DG;bR[׏年d'ۯ8m>8b:٠X:nېK9 X8*q#!jZ)u#M"ԗMtZ1LUa(uNs߽:"r_;FLJDl(B2qfX:x@zF*X=a@jyhXH(fu:زLX\Muu0kjŊ>CYhLM45.E`q~Y@t+q (OpIs花}O εʻSSzuh5QY>}+e/33/tܿ([l:V%t0?%e(@ԁߧT_(G8CP -e`w~+,c(ҫd&kYGjL{Md CbƎmh$L<;{z3tr~ğI:DO|r_Vyί 0sh m]6o' ?tSkXev/:GvO/?Mw:b`֍7l"f~kWKq*2Ǣ/Kq(XHX!B!&ӫ-1RPaPa8j|?`:'{:wC4Yi2fPz <6h,wwmsxtQfbTL]}5TUn8߾/QLz>E!iCMd_h}d.eleN}^1 FsQC k;[۰_0Y> :ZU+An!׾;}H 0 ;[3o|Hf-k}dV9W2I.KگEc)6 TV!H;rnsD~zgC"Lzj]C\ܻG1`1֮-'A:=vB~SobΩ}ؘWt?:-!9ǜ#j "~=ڳUn׎ZF*i {`/dFQqMu^ у;Hw±Y#-Գ=<7Be6U4O득â~͑=f?wvVb6ritQV(ЉTGwb }}y5`,mx"=vDs)ʾy!60*DHe/ y:Rژ'Pٗ cwo X^_3 K1 [FB*z=[?xhXwSaI,΍UL z/ ,RYEOޑKz cP}p#]?hx{3qClW^AАR4MY0(ǩ0+4mX~{#n &9qj uEܿc?dڶjiaN 0nbr0 ȱrM>'G F6f* ¤8JS: ?>({\#[)ɜgpZgnѲNst{x;6zzzGs|Vv ˬZ班]6ˑM=ޭe>3}_z*>-eW_5kac՜ْK9;vK;GA*Q{k.6%RK)kXe`/+OMq Im^SOr0H?t3$XS('wdOk== CފMuI4}3ir;;b RA0Eg&gVb,^qo/Gc%=8>Cymjq&P69N уlg#g+P~&G*@IVg P`_0ISDϤ$3hh;bzî H8V3yT,8b1ePzZ*27>|+r=u.ӇO4_t`ZȌz:94Ty:8l`6`1|LZV0PjcdtQH@b@I|~b N u#Ό<Ҋ߱hp=պO2I"Nx[U?Xey:Z9J.VޝyK^G 67pq7@4(:NtqRmY0i0J$:Ug/<F0Z ,0$bh *e:`Ds I9Ib>=>ڵ-e \._f0no {9kQu.%lx;a6丟#Hq'f'BA x Mr(#F&`P]NO:.REؓ5aVƔ0d58Af^$׏O&'ZTv8+;z6/i@CB2{?+ Ti}5csD 9p0,?81&,l|B&"$gм ecfP rV9ҕ^q`dQ@d MfY 6I)I-4M2 |#EVWZb̀Fwɢ{S_]>["y4T-1?^Zp$Iq"1 AޞZBXCX@7hDj9hҤ_ߝ5Bx%`]p.` O.R uc/zEio7pN_.rqw@tZ'Œbfx$6z.A|BfxкWxJ}/% ldOGp6h{-sT`%O}u4A30poȟ+;N4 j&d BSǂ燵v!;;M7o%Po%F3qH`tx#t¿2?CGA a2&gA#'UfP&AY&R .G$q(hYA};UI/{]il` tTj!82&S2A9q9H;x &Z7 ]q%f\Leڂ/tH1])XYU[rZ2gt\ 8d%(L1oe*?P}qled&R1s~39lS0;5έPZ܅`N -*:)=e.) jki媢iw]:ql3 5/Uj0B?2%a"U +P"eM$s2?RTT2Q|nw"${`-[DZuMe-8+' a[.E_rAwR(ٖ(FfQBiJz1"̒̕7_?R4% s',DH_X+S%O^W(ވlqyi ]iGzx( E粢(8Y "ZX㒛8EKW`gBimaTh񨼶|wSP`LQLVIByS I1Q 뤱U4]#}D.TaP sTF͒%k^KSK,ӛ1XTpR ? xX =W;y+t- tc4զS- Q'QzZb[- 'Rv[ 5 2 pUӥN J3l:J@uǩ:9Vn) ,XH1a[#u%k@(pi-ɔ֊ 'K|;̔t6ӽ>K@U [fYړeX#gyh??AaLzk:t ֥r^؞QYE3Sz5W!C t{ۧB(phջ]ܮ|WF=rx=/$"VcQ~#^xì=2lKw*GF4F4F4F4F4F4!4q4q4q4q׍SJIENDB`pybik-3.0/data/ui/thumbnails/Brick-6x5x5.png0000644000175000017500000003265613137372563021017 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+5`IDATx]wUյ~&F;}ET HEzo*Ǝ-DQED F[$%g~[{sϽs̜vZϚo//-!ڴ ?Y{[ٰo^9j570\'%/z=Sad0~Oqwĭgæ^?zta8N+9d{fQ5}7]K 2,.?yr4t墨${ }f+fћfcΆy$ǬI`Ez^>:XM(oy0}TȨ o#4C5k]!uT' HߗGDq Wxyq $ FMƨ+mb2HJO7P;2!rߘ{ >@@u1~B^]n$CbHҳ{}ճg3asx/)W匍F/.2S)@<kxXN{}K ` 8Eb%Ŝ%&*xw;1]fV4l-koR+i&XMEf+flut]HH/<C0F)SLx8#Jte"~2>g^WxN_+=Hl{/::G3Njߡ?-B:4&vnۋt/#pm+nHcTE5jJ3ii}.MƉ NDG/:!L+Å>x5G8lajqot=D$_i4?Vrk."]=mb&9*cUCdHl?X7~@j9b!:F#B*Ŕ?'gYhj x4jJ34f=VM>jseg8`:RG+Hy`iTq#J z%+Hu x.9Y Iy. TJ\7ρT৸WRhȤ.:EHVNU*hEB|X%RP7RPϥ^@.WdB#y_f Y"~1g(T` T׀8H׽9?ynN#F%J 2 ]dnI7!걤7h+fce (;Y4wݞ#mEFa@/)42ry'-ҬIVB/!0Ro>5q3tdi]AL X1w.<F ܌nJBq&3&rWx6wTڰˇ)c~i!s~@pȧwX^.}蛔4sUFH]A=Q -7A+V*.Le7#]^c ; @RM]b8ڐ ce"_50O?\BE}+'e6\f8Ϯ9;{ۊ9],.[o5wP])# WC3TEOxXW~1;1Mtz Ixq`40S;΀orFt<э8tnT=[\ph?(/!hh'h(dg`rTf;6qՕN9vsDEp.\ !d?ܘ$Ipx|>-B<·V2m1RZ @ZS ҈E/ߥL.@L`hϺ~>NJtWx:q!}rѥ]_7&&  (^ׅ\l;jR䱟 "@&rN= #=*U7/VG}Ԭس1i>B!1dnX,Xp 7=/vs}>(Cd1RBF߉b-Iۉfѕ0yf$_YDҭy])5Q>oςBo_W^gd]x)HhJkyNWS 08GlL h!]ma'ą!) %xC+)<4kS<<j:ڊn*͓%^s4`@?s[ 1{WqE4KDRX$%ytДgZj S@h[)O8PJt˄g(v60K)W?\#Cѥ VCoJf˾ 3Q#@C\t.*b)M̌,eE*qGUbxzKoo?_lSN4[S(\g;#l$ΔFp\:Lqr(ښ/1HfCdx%nȠ0,%nm'FGښ}jhC/*z% g^_ĻwRyb]+i4WJ%>;79lLٝg"H|]%7dՅw\!CtB}\M,a(ϝf>|pd$;yY춤h,qh8" ڵgC Owm_(MV6'D D`쬱Qcxp CB38v]=Ιjvz-+q>V("AMtşȘ^nz.@ °:o.UTm_*d [h/9 0w3Oy~km8Oe n /> kώ]UeHRe&TsHE&NLxGln1TMRWh2U3%a|r40x:Xv%CIR'줉St @:62ũ~u6R;ptIAg5)^#um}$^+u:X~@OFyZ.*2pd[!=M,e0yG@;6$>Q$}m-ke~j fӌ+gKmf/ &exOo-'PLl|ũ=r͏UO68b`b@{Pv\iwC"Y0A!j {3+=W+YdgpDt]ܼ<}{8ܱnThvpUpv:(!ݒyh io&Y?Gn 8EM![Z}!rτw;92Q2D>c HP B<^]8+ҷlGjd*;|J%5N&uD 4n +t 2t:0Y3`)1hv%sO<;XPf(iD7\"Ak Un Qjff3>fl*1G(ׇ{vJ}\ɩ3 D:ut>'V2(cn˧b&N1} y‡o,=h4P d1h޸lIR32#9 ,9< ǿ]~=xB}YҽWwvl6Go /ɽ{~tH}n_ F]Μ-@oǤO'+F=YR2iftܘܥ .3<$4Roz)@cCfp fv$OcǡZ=.l`}ȃv/_q ^1fS6g?M@͂ȲpncY+Klsۄ#d7۽P(rvXhf+tQ@3Xr0ydZsm(8IGjSnѣ. h-+ilU9!IJoX*tqךX8keNfɺ(ϒi`2|%*<b=۔L0GK@GVrG-BW[Vť9BBa ȣb܀X; nmsC[:v}S]ܱ@`"v{9;"7\(Oz}yʕA2Utui<_j7wg@Z7CJlf|U9!>}\\Mz;AC.cOH#*p*J2qxxJJ=bHiR4qJ5SvRL63=XB.@N#F=P\jf /M6Jؼ6ᩡg(r0[zymg3KE)}.>zQ˧ W=?p](?/-+c'3i||ccըSvf,ŬFL G@r֐,FQ|RqsHo!5X`@RCD:Dp+/6:0{0ܠC _>+|kS#տh\lG'%:/DAMqD| 6KpK$7<{$qLrI`|J \%cC#Pd fW|0C0=Y$ aY@ 8( ;?^LʓJE5 SAgG px#w]lpuN TicMPM' zXs0_38'وcSLK5+̲3_̭>C:g1>\xI.n[-7|@Qke\\PIo_g&%UZ4CV3 hhp.]vn*0RթcuFro2TdZT#  vH[ц(<U_PzgO,aߟ^.? NrOذkZO?iT)YǍ/jD<<l) *!cT q>*`5+U/p\_^0p~w8B6qﱉ+gL؎"q;5i?@N23#u퀽+΋Iu[4A`H\D:z@(8!.vïn]_,WA`CC''7+jbB>T LM1(tYV<{ %K髲ZڒprH=J<*ӥqE\}>G<vZt1B$ Xېz~< ސI<-~tL<)*&wsaq5gm!0{+]fN`iJ A}aJCrv w= {^${ Y@5jΈCò[ (%Z>ϊ׉wDedJoYq۪X:+:ĺ>T X">x?P_M8F\2.Irox^&=Ze-g$`~6->1: ’ Ags c$X'7ZF霃ӿGn } Q^5/zts}!*`P` ]&u:Ն*iJ,f)e${N j7`,=Y@gaL^?2t)$_D%VK< o#o=걃\J:l޾1AMjwL~(L& %'4CV'1&\ "ب3 Vi1+ `hiP0!nBWp*tP) m3ȝ= .?Cݢ^Jt/zc*o/ Jũ&J$eˤ-`ɶ}~nD."IETӵdIQ ; z@WtXHG5}*)pOY6/N:+}õxA)CǮoxBKp ׄN>$åu^n]j+8KRql`doo3#`aR52`lpxP_k"\u.=;9Ĕ.^/yGhˍ!kR6z KxKJryĿA|P)j8Y7 , AJ M^pt>e* w]FƍHI fݽ-h,llI[j3&} A{ {]:#C"[aoU0+hÕFHoz+@LS`<@K`Hr'`鯥l7OއXj: 98,]7lNr#0JW џf>&q?.%޷)ŚDZ2=cguW?Q2Ox~k :𤶋 VU4FbW 'Impk4{:G/TBY+~d3$+ 0 D?Cȍc? .(w`[!)΋==V C& s&@' 쾿T}`O>{t7bI pe1o-srn */ YLYCBρ2 a ZS5"`T6_Lվ_sT{mbϦj'͞ =bQ>&?SHhIWO OYᅂ1;gb$[> +Se[?B/p05z ˦Lp LCc@ac `aDֿ?qA'o &AkfI^6wGħ.@(;WwRXk֣!Qi3\Dn|#tM- GޢRz t[%a:73?=GtP dl&1Z¡xkqPw TJ f ߫z8z8oc +H/AK&IJw;qF'|BNnm'6r8"X䖌Mbe +}&G5Rpo#6f,DII*Ր[ ovO 0g?\>f{BMBJ&qS_Rxnqj.P]@~ɕäa0{gKAUXSH#W wI,#ö56XX[SZ)sq)9]u# (#l~PyB.%]dd!ջ#fˆC<JzsXp'Q1g6ܴo LuW:wxp>KGf߱W`(wg#S@?-Ef,/1^_Aqpu8)0W@ؾoǑ9K],>1*s7=Wx_=-߿*{98R?鯍Cm>!D^&\Aܮx,aճ1C9G﫩eBЙd@WwQR"oMhY63Kؐ n]tHtHwU+(RAM/犛twðx3AdrO&Cf6ZLH7;ݕN8`h9s Ye1 +BQqx.qy)׶fNw~S11DH@($ u2I`U# AhVc1HVXRUH Y7x,RO{3BAέQnL"ւ%.`5Į;ׄlR(TL[ '.21Zlcl%7p*ttjCݬJ:J%c9ǡ!X/8\Ϸ%=e^_W) 1\ӗS 7CQ5ť'ej lζFCyj'Ai iLZ}r$پ ݕH!7gszVr[0 [n &~(`S&|K+z Bo:6ZO8xIDШ2z >vL^iD$LCũA8m(UK0EU3qϢtM$04H]u!^gQ%VLrϟ =y:]@r_ašz,ڼ̍%2`n+|CdiJ @fLk~bpcQ?OS.uOYP=$_-XׇhŞ +&ן ;1XyB5`،٤r6\xT"ʾKgr@M oBF UԷFhYI%*.d opGD.v1j2,19v@Bxxrځ#ܴMjnTkܛyiyWMemm/2V ;8SP\iCս~=ƥ~e ?p) {-; mD)󥶀B]A,J`yOߝ`P*J!:C W?7(`@a0k:?9;W-e#JܺUpΤ_ ![W/~<\WpS, Edf*!@ok6;~'RF1/U>7-wlrGN]6%@`\^b}BG#M, h/~&0C;׷w@#01ji U@){䬗9,!OH.Jhuu+|ww˗}Yp*u ܯxQ%&(^;@\J7̴ mh8g݂\;% 6"ı-}mnYoeִ\GYh F~rJ>tᜍB0oå7+8|@i_A-}}{4,7`+Cj6zK¥%in(FJi}3 ^Zޢ\7V][|aDN,Ū-Bcp 7*sp:@o$CZPB6B^lK' \Z Xo˿ gնw@Bх]u:flE!6e6>J]1W$_}(AHECK~H4J#/4r\grfasr$- V=" jc.9l3y=o韻iȞ5}=} v2Y+kiAME+lMނf]+ k}66@)u_jEy[a pHYs+#IDATx]wx{/d{ɆAE&*A*AR\ REB/ : kh"gLf'I==dgv6眯?FN88oΛ$SpNq)N8I8 '$SpNq)N8I8 ?"JDԙl$$ LR P05m/L0Y2eQn1Q4&ãB%nP/{V26i~/%i: ؆ÇSSp6@N AKEHpKv{Dc9縺Nd_°H#>ߕ@8v &k@Leb`dLFILF{fd ܤII&gd,W"==-wɢҲp$mݺ*VILW*of`vp?g7^^g`2D 1d >3N`DkHS?d~fD5dLKg 9h33 6n(#[RD3p }'$n`ҾRH ^n1E+f0&}"}g2¥?ɮ7V3+#p ѣoQF?c2+Ň,~YP ac20 0k? @  T$hH9Hl NJnlvIϟ8OFRj^#4ȝӗ7N^o9=kcueqZ4 Rqzgky^\Ýnc>4-֮[WHbT}u["M$ !T%klQ]C)>ɌXq W]cGD[awKiIwT@?jX`0/4iLlދX1qseKR\5K=U}<;*5qQ $0= !{нqD1rSYwgbܻw:u$ߌ! elbߥU;MCcoaϟߪHrd%T]& ?/s!%vK׮]*UorxRDK??M`\g-w>'і VM$3}_w;:C Eݚs 1f$Yф Ay. +C숤r 1oԝ-%4:3HFNU+SZPԔ kذL6+VvHNUNׯk?tޝo-$o*Mʙ9͕4A4?upKʥ^WO?["s}>5 AѺud g4˄}?8FpRe$MIyc9[;e}FPFfΝ;$ٯ_?>iK#p"‘TALt{Vgl W?7jt`)C \@k̘1͚5={׿;5mT&A*ʱ,A+rW+#>Z9 AMv.LǃA1ܓ8/=Ozh%~+x:bѱcGҥKTR%IKe>ъ/C699L"ؔ* *O◟ӗ[ևHYTPF^r%3gE)^weK0xDE@{ߵV\)cCu~n17_.pr+9Ce F#3ԵXC [WDYqsu/>~· |ď8Z1#!t%~ƌ| 8+|-KX~A uRVC&ٞ [+?<I0ەWkC%ZcXU0J3ed1is+P:jՊߐLٳg-ڵ+:>>E [ooMM47|Zh .;}(ԪUo/09ፌ#A-X3yx6/Mv_zOzNm߽(HBr,čGT~ kbgPP|fd6Ә ;&Å:{꨽+uv^?V1>Zz֭˭ Dwµ1_`L(+S=9$ Fӓ"!' Ν+͛i׮]V 0|p~#J&_ ?' (kҫ7}Y ף%{: *9rD3ƗZ\b8˗:"KxSL~~:~]jVM&?zzI/t9N_X kBo۶"&OoShʔ)Eme!6SۅV K?1/aohȀV sqe jXaђljz!KHk\JSJJL<+L":ԓea1ߧ|/;}4'p1aMzz\Z#99@:pc˖-ߑd@ #[GlgMO/GLl{L8[ЯC#aPȖ;z ܧO֭ݻ]Tf"$$D.ŬҀD ~7)iЃ wcU4gf~mKC"Q]uxC^hk1p۷o7vyPPFx$oܸXfP #Y ߗR"ծN7Fi p"+Ҳ1ޗu9Is7DHC1(Wvm*5jT1m !m۶wYn߾-2rr @`Oo_ &(uf\Í.m/|C$82 !4/?\vU5ѡpYr–broa#梶P=P~\A.yD A#uĵpSOaA:VZv\=mٖX@Y+NwP fpI(H#VX!{1sp%#DGGߔ\aAJ|wk/) dSZH/1VSxPj%'g;K!CH||v?|P>*.W2n.VKm8O?kD=d|{~(tt,7yO"'$@L@=~ލ 48^ʗx0턍ՙ@`{@n<K=ay+E$7mA;ǥ j!' G;xjvZOp `K?(wpݸq P"+hܹRh1 LCBu%yxvT,[c^u)#>/P|_S{NU7@r#_)ƕgE]#7PAda߿No6yG J&V\[ 0 [ "ExP'QJBG҉M OUx%^ \<<[n`hO<}cb{K{AH6>/%OʄUUVm!X)?tle[2,[юg@VYcTԩÓeW_}U",ؑ=&Bƻ1:K9?Kfkx|e lږU'N7lVA5P?WJNP]9PE#f,H"us<ূv1D/1OAE9`oH+7>Wj' B48.\6|T4Ae3I'DZX`V8X.e}D>8%Oї|HƜ`B LmY=/)! KVwa4K{<@FF mNJzL7SB+69! D˒9! h%k׎zӺ!e}(0Q .;vĈC{Z( ZU6tz׫u\36[r"$!WM L˗/s%9)GM[Ĵi>A#!-37&BvU7?6{+cFMqO0T:,-|c$.>g39nb O>M_|DQ# BZS&F H1zhNA)b[ IkA7AwG(#zzA)Lwpf@`Q#d#Lj/j]֯_MC {18fg` m;'|}?Gr N-F=&KU>M5+K,X=l DhHOO7Hi1}rm~WB)Z?EDā]L(0b ]y]pk'H{zG~^=R}mA~.@T >RLugG:YF>ޓ'Or70nb ~d-gt 8BǢ-[AWk/)B'xRL;'H*:~K@׫Fk98Eu9>p [6,F~rI#( H 1 (0#}<}r9{Q%m+^rRndɴ*F&+W 0dc&8qHkݺkT`" >$iyUUv^S>{<_ޜӆs2=P MXum> sY(RVi 8PgP gP.)=~`Z>aIx>PM8) Ё(i, (X3VJfܹY%`hw?{oxHւ&H\8f%7n8 +VK(%:6l  O.'cNi[+>5B*5RiM7o A PV [Kh(ZjC/u|8ksֆ[_AKCJgFh SЦYxQ @8Z D=R3qԶT#Bn('1{VORrI 7 77 6mpP0DQ/"SEʫDқbse T5ޝ<Ǭ̂;v^ys{}}e`#^t{WDQAAG1hꁜ0N>m%'TuawẺ=8kJFN*hB=;[NǬF $۷,3"6m bVW(j 6-u?1ޕ.G&n:ҰRY W3ߦ Epp ^<*ATa裏@<G\x}/yFEM?;8b~:YAч c ˣ!xHB 10Gn~B$R<(yiv/;7й%aJg|L'> {83A7lf1rD/='ܹlG{9"NF2OD~~|zBWwW@oDoiދ/[A!$/Ֆr4V^6ւ:@d !` `uxh >"9.xM0ybN/cP(Ai8E/$4#GRQA PGqϜ9S@޷%Ql^̈́+Rw\1fe=I \y/v|u+jp[6MƫEB5~h~8X<}x ob)7_jAT|`f=x.kœ l<D+$hEҬ~ƐCim 9_L?g˅~,4ܸC;i/Q>tz@ ;w*x…RD%/?=]h#tzϣRsu‚,c,{'[νm OHn~~]H A?AS>%Q=;-XR/(~P+hߊPWs M0mַ @ n`u/ @eTu~vGM.pB3J#GD]"G<,UGgy׭m}!d޽uB˘@([4.vh[V`]K; ! %F,@Gxh pd,5#,,"2ej io@a8DuиqE_=pOn|dvo)A 7"8gkoMagy"G8{P(!L>`Ta pHYs+IDATx]w|TU?AHL$)ERT*,( (U\@ZAzSBiC  ( 6~sdf2|$9{~=saԙ D~.k 5]dA1=z wÝn}a?c2[PA~fh !>~ 2D쳗`lgodeBduh:?P,M,9FkՒY2?"W?d+@"k0;d;>͏%yh v&-l!_B]@;> Vg /c{%꠵1G;Ō"2lƲuJٜyٳ~,/aAT(_|͟?_tVs jU訕Lhi򣸓}ɣ296~Y8nlv.IN_[v3CYIbl'14D.1-0^;c18P F;qԵk d?d2YPѡ>LHvˑ ѡ0pv3 qlg1mc`^wJĄM'1/KaD07dLM!4riݻ ɓ')11 0S1ԍ^A>Fc0"K|PT_mksXLIJѰLfoXȤ&$pwņ,syjoXڷ#(~&'mΜ9nWЊQ27|7U,){\u064g=4C~g=+y$/A.l)8? "e{8QAEEM={f<w<]\c'R]<efp@p";s w,F^$u~H[pOaR*G{qrkn'K t4 KD7JKבn+@VMn4nܘrss)//O6lH6V+S (1<Y̔΄"""AtC0G`"219s1uɈ> Ts&JLneaaFKS+S'_͝Ԁnc?ͤ_?uN1Ry^?3%%%WPh :u(z76S}d fʏOR]v65k֌,T&Mhrrr(++KiӦt]w @dRllJ8/dPjo`aSWF/S?"-A$ "Fvu`N ,%G |4 4P `;RNYA-#c4AQ&)0s}n$[xĸ|o\5dA mL6.,,4M4YF(##CX( H aK`:cXwC=w;Z&2et$]?ks|JbU\d@~~>mٲEteELdgۤ HAxdϵъGk kzT>Y@XXe诉qoM~i)B`}Y`` @o=1"~<5ԳPi9r$ޝCshW8^ &R:@Ll8?T'XX]0EVF~oldmSe a1)sA?\>L`~-kί+@7 ă,T י[ P,c69XxHKQ;h%3*iKt熺|>U cQkth~8ׯyW[V vQ1c1B9 >,V]UnUQϔB}0d[!w|z[,4Y(J Eݢr@6I~fzh0hߓcЍ hΝԯ_?!~NZh-2ct~urv-e/VX=܈')twTuGٛ@'$I*g8 mjoKE훙.'V*9J Μ9C۷w_5j P\Ţx9Kv0\|nx1f Z@9U׷Yg@to@qn"ͺ"Pl#]=&r&A +G)t쪂*$ D=ꌊ5m;|  M>"}xKooYё0!#seA`)(Oh=wj#B6H4P˹I~FFp 3&jI*m9mf]zUnܸASLA>K!q@Cꊺta5PG"}x }Q|;HGHs3btk;SHA'өph{Xs-+pB\B1&/']#<;rG5*JDFR&MA+\L\wi,Y/WC _V3LPEҪHK$?f(ȧsdOFglʴfUfEPe`QS/_+PGn)zZ"Y>%uiܱM?D2XdlYzfePlj'ҼyswBCOYn-Z`p_(Ҥ͊~F;)(55L3Ї;Ť{ndZ*XP9tZbhjq{/3Mt5= 5WGTDQXꞔ@f}su&B8 hJɚ`V5NnI@>L 5t ToB568_@E/UF<æ:Q.B-~:Y(PAa*SRb䢆!*,':wv`1hGȗxrJɷEao[Ç &о}܋.q#ɵ`0WOׇh !]a;[8Q%*8/df]eϋS窂Aq}LodE3~rGt|p?i;,EjYLR(ŠۙPV)E5XvXy>cztXt~?.+hj&Mu(jş)))be߄f431:pՅ9}ގ̯ >7f~?Ql bFIF/2*zόn@&>oJh1A#n21#GeYKd8uI6-rD 7} e˖7=}GVwN[-\AX,FGuk?H1l~`R8U+xb9:u=͝\ict xd,6 syfXX="XXQ1u&S[[:po!]Zn-^}>S"gདྷUvmRrxݰ5T_&>w g܂I4Xm>O_yaA[uzC 38هYG{gZ}|tl=;WOۮ\"tX.ce SZŞLN cβ溔(SF.){o4б<lw ۖwR_~^/=vmܸѫ+#tcJy.-&,"&?Y3ϯKZ߼ -V-]܉ţ?H8 QF *ot-0kr^n=@R&?E:D_sJ7iK6}L%2,Cyfa$ q)@CX{.x$M݋8d]Go&ޖoO&ÎС͛7^ ]B_W.0r0k}%MEL>08%Ņ.ݖޚL(nqݛ|rW: (~#}?vNRG|e<rn٦uL~D,,Jq Z_c>XQ[% ɛLaY*+f| Q[@E @'YbԷ1Ұ>NB~Y4\B DX PEYq2d -gPO0 4@X43i#?5@%IGB6>=sKNns h[.]=&c1Qp 5Fqqv2 mڴmۊG\5##X|nf3ս`׮ @s̗H~( !ga1]60W_ܷ#_\xo^YUo0]Ng bCEY &L1D^t ڻ2Y.^%OzŪULm? 2D,.˯ٯ/Q]vGV^u]%gW{hG%pu={JW#N@`j)1t}kI-M[.pQI^s܈?B+O~?LG+OE}I? 2 nݶM,!{Gh^*svwxA&E>Ɯ ƅLA']~?J(W?(|)Vݺus hOBhEE4#n%7 M)tUՆjag 5b?xDϟ"seXW;ۧάNW a pHYs+$IDATx}yT95PֵvUwUw,A6T@dAewH2fGѴʦqi԰31FV?3s>~df9yꢪnq~Uw{9Ynݰ5&o lf6m6l` lf6m6l` lf6m6lpr&. llG!DcfٴwOj[w-[/Dl0xlƆ\g~v|; \Fh`;4յ#w}'S')pPZ{O1lg-ҋfq<^0;>vzuwzÑ'n U]Wm6"Ci=ߡ=oyz:~`')[>Lrmiq]f8thus0mo3n7y^e f;lag9{sz&g^ayvVCvAaf%Lg z[+=tebtcÓ9(ܲYđ &1^0pӐ3v[)`x[f8dfJjFvd3B n#fwdO(^ŗw;Nc@A r_/aXr@)@hZoqEpevHAi?B/1Xz6X %NU|D4M5H@?`{,*Ql92vM۵t`e0a`xVWV9 9W1Uo_ht/ 89 p,O7臧~Pmٲicé ]vwͰo2 <*ql0`ȃ#Վ|S:UM5{CͼG;O=iH<0jE3 \իR@/03!\RfM3i`/`̭y sL4<8|]JFq)׺iS P;qBK>T!}@. ّn34c'13a3}?{=Y@?%}ԈN?xsʯ9{89o>߇@szI0mO;o{_}StBP,%  ?`P(X!#$XeAΟ(waFqR8nfqdlꅺuXUd5lh?8-fGb5uoN~}v>>>SjFѼI۞h]pdC95'&#h 34[ ݍPC:JhW@auB{th^SEAh8,!)N{H(+ ZDOT8 s#?aV7AÑ(zQޝ zEW _N{?@+a}*p:tM.eQx*PXǾg),,dqq )< ĥ*' 8!Jy]9b>6(ACTݼ+ B [~ ǁ,,*L()L6|;`}ekE.1KZgOgY֨8cG:"f4uokV@.>6?ٛr2 C5T ܛ'c\X}QC _4рx_NJ~ sC N7*4 _RCG.[2WwDhGnj@+U i+?!C9Fie!X(S=N_T$`b1 }BUm}J`I~GgL][&=UmCVDNoy >l++]kSi9kZ J;lw6Mg0C(g̀nI[sf58Eƀt4Icj|jKPgJjF5GiA7[@nidT8ߐ~WU0ћ>;4&s*qO4Qei|UI}Y&TRm͓HA T̀f@JJAG&6mRqq1p}VENX=Umǫ]a7%67JF y`8c1P#Ͳ^ů!dlOuZ9WnX^9xG y)#ӘrЀ(/yiJ;pA#3h|ZN:o]kR g<ȃz*1+xv"Cw H:٦0خJ1:?a [Q#]0Dɦrq-S 5Üe~qmyP|e|І$4`u+MWYmRp>`AYŠ^9Ce{f4\4Չtur!$[-_ \d ɔU B{RR0k (v1m3o *( U11^qM ˂tu!qK97[O:Р-5P+Yb<*Dk ؒ㦂z*-0!NpF~]20ʅUê~ohX||V`9 L޿x ioejL2Z9G=ǕoϺhArSngQ*DX)"vjZ CPŏjƖuU3~pGUu+ׇv#tEWyj 0 57tk}LtÞqvC?K3q;W/dϺC6ЮT7;UTwq&(BuAY<a "fkWCUY}E/R녬$n'])M<ذ¼C?#p@ޑ<5J?0F;sP1҇>~XLw5&}n9Ugفocٴ`Mp5jGRC B! m2Rj ˊ<70?ϩFѢz%@tTZ0t!9~ R'^?240[Vظ'eh0൩b'o+ qa_)-w|J h@xяj9 ˫z! /۸*"!x_y|bX\%D[1]t4Pu  s7E;TcXj[`g"٦Tcw%ŝg=JZMW%O|PAG:aҍI|-] U&YkRh ;k$Pz=^E^7=ʲh V@1EVY!bgFGTi_١^@ +tB`&PX/N G;K e0d]7_/D߿Ǫ_<"*r3fֶbOJ z#_?΍i/cgТ e'I CjN-qۭu L>x !a<}g5yc vÛT`p){oхC]ԙY kdA"B@`3B!>@TNxe8Am=!M4C^h;j("fT]}ձ)b}X2@;jlv:DNet<};u a8az6긏N:8WK^;C ׆%J|\"k -4䆣"(7\^bq3D E&z`=OM@Ҋhd ?n T13FHMzH ֥ U.`g apH29maJp1e}btWE BnR8WBQmA>V~^ F}-pr,@$R K"7[c@Z@ل'.2Js/Ӵ`|`zO~T) C\ߠv>^j=ykX@1ʤO}ҹ LmjIh¼ o9…|L厣FR bp#R?)ER8Ъ3 @5p`pnZ+fyι]Go)OkScMu; V H8w;7|Bpˍ3oiH6pT1*U0$ӯYaphs (|KJ.2DdgpkP!%m^ #SrA^YA' tHPBD[**odzC+ |Q5 *0D@L j !b*ub~RZf EEP^\ zoW\(M-=:eAe}g$S^+'p(ҝM Yڗu| J1ܿ\6_9MY 4 NTE&k#Z|` Qa!??G*&`|GpL/ }i?=vOه5矨1rImvt1ȴ Z|TZ/sJxRjѮV |a " a 6dUn]g qz25`r%^0un)U>n-[V/ (k=%$ }kV˹Tz R&ae6V/q`IjƊEC"29!IUqvQpI"H2#$42T0(>}TB? Jw2͈ BFm\J#9=\PŬ0^LLF m$K'9K8 S;_%uhD50yϻF`httM7- W)*a0 9T!"K9DSE+V׀n2)׾:\&F _l=_!:Qu /h\%jLvkK59P jV=Ye&Y!Hke3X#&:Kvi8h}/p]O_LБ}O6hѡX4í)̬Pa6b'P yRZE&cAF?Si'oXLລև5wŽ=~ 9کME(Xff}$ قL~iZ;KHYִ1?!eotwlݰ~J;4X_xq5&]E+r?k,(^wDۀI2Y'o]́<-~RD2ẓ81+RYí¼}U'GG fӫ1 k_xH k  eDrlBp"$MұͧuņE~W13j+9 FصEAdT?p*\`dme@ u9%F3П9qo\[*i|u=7yWn)kj[k2u; 3#2' O.?}6/hϢQ cGlJ#W'@_+&o?53hbn QY̤o$/{o]L7S>=#"!3b~n_?ڝ~h@*+|A4t|pyJ-1>$ 򖸅qE֏(1=6wwjX4f6B@:_)ߙ>+}vV65V$ty\C& qn 'zPxM%L8LϚ[^/) N„%Ss's|յ?Y=}6N+Vc}d B6 0PEݡgߎKN ƾh~#mϱh&1|2{>m'OѸx 3tƨSm睠QT` lf6m6l` M` lf6m6l;#>OIENDB`pybik-3.0/data/ui/thumbnails/Brick-9x6x9.png0000644000175000017500000003705313137372614021020 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+=IDATx}wTe3C9Đ0 #׀DŽH0HtD "֬6/uz}OϙT3s鷞zzOu_h\F4.B#F4h<x4h@ƣG#F48+"GѨ?CT_]|:ȍ]r}DF#o/~cq.džu\ ͨo1loJQnu^@k\Ʋ5-F`Lˮw)rR?{ZFFcc6zo+|9:b# `kWƯ ɒzt8k^ne7;/ِ H0E{d?㼻C ;e3rTчd1_+xAPQw^&wst#?E0d&{[;壇)w\H`/Ql$5.>/pP!E=8U\ Xk6{T OHW`(΋$ y?_P Zl>cіS9lB>Hs{YhB^$DtDn6D:=el^lWu~0ٔZrp/uc=!h& B x5Ftb0!-Ƞϯ]aYrtoo98U|d4lvL/A{c #x yx|/:n K_8ES9¸8pZh"emV0||h`"y:_~g8Eދ܍g#J`ӇebٕpHޞEvsNH2$Ap?OjPy8UDKQbuD{>Rgc0Sz}?{OMNHA6=Vcp0.o6jQZgo sӳ ЛjDs2`ou|cO%:hUE q5p>y 6) {(ȩ wy)g|ು.a"$`?0e^, ]%/M)B4V[Sys=_ IHsb5f}AK} C6CA_ 3k׈a1\w]k#c%]ObQΫĕ.r`R^~OpmQht wAdK0:~'RWxC7lS~ V5hR0@:;5/Yo7c#$t9Kdk/~.0/Z] 3K<-R@F0";9=zer=وz&5Z k&[%5sth"%$QA[4Gӓ8ig=k7G=Jx-` B0AxTN9A6"<Z [uXW wb{QiP4H|>#?f!MJ%s87Jg $U`M{+^-7J~J,V;6FP,C=mxՓn`Ãl=?q}SG>Gy4٣K=hr1@cܡ̄؋=-_o4j9f68'i0ysF\^pҵ4!a vHi{|a>ۛC;״9|߲/!-ZxOίdO@:aF;B9LؼNEҥ5`5$ Z=Q]dr.3yIA֌q >xs`GUH^Br9D0pn;\=^g*IڱP&j^_O#⎏?"q[v(ɇ-_pOj y4PM4u->|= Q"59r="L!< o^c)֧7DzQ"SD̡:|]l< V,B9*\7"Zp__@)~%0+l|c\}pO vj0lbƻ n{ yge6T9Tced:Ϳ헰] 53Tnk,]Nô rd15;6ok Pސ7#AmۧP‘aX֒.G$>&@ZS%)Ik]I{ JZrҭsC z(vڽ&SH?~qfG`>lyHεhn1{l3եR" b1Jk2`&H$5{)}7#3Ծ:ϗ2{!!6ݩ<\ZJZ>3_;Aͅq3ӛ#BW23ɝw0y(5/pЄhoD*N`[-9o.ޗaͪC}8_:{qPzƀd2 Kg\j| Z;:FbY}Z m=Zu:gd24贸A1ӠE؀9L}9 I6{8 L7waM߾W@VD ûoZqOqu,6І:j 6I Y]D,B P!ӳv{R,y #䣝 ^OzgS߆tPDJwj*,}^D]?GKvNԱϸy_[ф\M!s膇V:/UXkCN> eT)'hkwiOvgK_$LN;=/5袽kb}b0ݷR "-_zU[>z(kyz9 qI C @H q(!x.C>a3>d=yh{ݵTIr (d"^ГGŹzgG}omO<+`=KFCy 2zՌSBM) Gy6n^Će1/Q`ۭt(AkP5jV0t뤭k,֕'OQw#4GaF}<_pH ?Owfs`.5w_&Heph> ̠?U@~%`J-Z v1IhB ;az8f*7U8>L &-Srą gsV`X\I*$Dy3 H3e:})it0ٔZ197/}]Lo>M{u2CԲAz9Wf>+ԯ̠]2l wUvΫ *GfGd˜ɞWZCɦպ~?rWz!>n!6ʶRx>`Ky0&-Y"[*3i+`(:º].xxN7;ӧ BARz C~en<ՙRc(OE\&NgPRɱ5l'+eCqi:vPVh:EvGP [6iNWDzVR]B$#e*rbdv)]bNePA iQ$r/><,r{۲hx/v#X)`%W'|o=c?/drz@?.\uPbE\[xvxzN* 0#FFA9 T-O<s)a @@HX/kI^cv1s'C:2`0td0<Z|>_:ð thmSݡA85 *djb4֐No>Eɡ{/HL'̰ͤ:M1i#<ԯAO|\H~{g ^˕'f7]^x5 QB3e$݆|>)Bl飑dCn=tč`kQ12" @Dqoxi lPsM`ubrJt`7DCg/GCovҽWӗU|[+VzzˣV JmBl,y,Wl=4)Y`"Qq%fp'|9KbƟ*5=^"i4B (z)5PTA44Ã*io0-~sGHDņu9 P~߭!I_3/@?w |BеKJ3V20ZpPC>x|TϨs=5 |DijO$+"kQUæB.S`EAÖݦE8G0g|u2>dv.9'q ԔwpwUB&o 1WF%b蝝9CP* nEYY)?ۺ2Xӭ@48w.ǥr8R)"2K F@{{mJэB^hqwqj&р rOj[;@iW:eCjKz@+{9-`ƏHӖIv-J_ѵӂ- Q.Ӡ?p's~@J¿st#O-O0wORo$ 򻴅jf?4P FyH}=HR.#Buo}6 Ov}Q%vbRbzBH1 30\n״ݘJZ`f|Y(},sRI>线=t>;{JS`-a++B9ziDCy2C*!t*#FUåR H\8RހG""UNA0.+A|"E!\6(K JGd;$ŠHr]Cëz߽_ a}T(cސە:i/1F@@}:,Q~7оaXNB{w5sǣBёeK A-;_iL]NvT!w"5  |׻.+ ޟB~ANxAL-ѩ!?n&9~ۊ c;c{~{a\v/=p]*} ss<_:ezi>=Fҵά*?rzh _.oH=jӣhy#L&ր1d MP j:D=7_(On;[bȻ==.B6>h c{/ZQM؁i4u E> y-:[ryoQIH9֜')Pndw煟F D! sCfP-aOKRgvr,v ]T}/ SQ=^#%R+bnP"n4Il>?%HFRyċ60:Bȓ2[m9+ol`~=| !7 _q甒)kXIS.ҿ?+ >iECs]!.Nav<`3Coj/&Q!a$+Rz&SۿE&8ċl:S@iHL~*BD|&yt 8PuiTU⩁8vV.۹cGcO_4)@{w 8iG*u@!;Կ-D>Ux|GQ'BUʠ+_yzORH4Q*tB.ĢZ!,V?#wKyVG?HS6:l]yvu2I|sN0*U\%* Gػs!<}EY4G;zw6~go*@OE:M!Uas y Od6bxɞ[%l7O rrv6!b(JzDf;?!yc˥R&kL K"b_mϦl]Y^YWP{3_?kݐ˂qh1^շ ./@(p |]59 ;Ra-d ZBs!/Gf 2MKLTJ:)I݋ijG ,k&!ZgDѵ^ͥL #ǩtVpDkxqThj )T$9c=TTebI*}R;iKJW]j3'}H xTA}lϒܲt%D :iSUD^b'/>V09T9n*4[ϱsH3'vPJ߫v8#:E@ q٤Cd"8% @ʈ I9D`rz a.} 1s3ׅhϺLZ̯_u K"bBϩ>-@̽ᆪd:C6G15hD\2%n|ȸ(QS׫   pE!k]-l6HT]_Jh5H |TR $_W TIeC'^':׵;  (~ a.f,Iؽ_juw<ֲd|uqH({l(x5;v!=xٻm]Bvc-PFL6S` M:C'ztl|}203X:$-tgDshH4DYH0[GzqFoawxa~|a߿T Qf;h򨌂a3 u@G8Y_3{O.mcT( Kv!Jf^낣Кdw@T wmfTw$߀0p5-+u `RqtQגܓS;~ OG:-~.9yX1Cu<+BGկ`0G&D.isȒb̬=/)%tpsET f)-%•ipoI]):2`wzמ͒sަ^2a  ]گd{`ѓ7TYդOƷ3٠~QOPnΐ65S;(H 3"f ^g^0à6*%%*Ucc zh.#-o_˓Y}8C`s }/\*BǠ|:v0 gNz@%OHȺmDʹtN~#)URBC4g|$ϛ x$z=+HWU-!ˮed%Ti"g܍] CL@a|<~H|?PnsC@eVBϬYl,Rp!C\qȩ apn6y$yR55a"Xj˶t"`B\$_VH7k^8)@W S/c)9Ǘ;Əh4d2Ɛ&ۿ:RjZxT % s|YhM "wW6Jj6{ 61ڙ-"э>^(]Mh$;OZAr^C 2qW(r2DTXz?F>fh)k ߣ_B0ON/iPTwPF8!;rC2 EVOzqA "6/$D`q`^E[n L`j5[echuQu|-|-)`_#qAM XS"i=07Pl\{F}JL\' NuWז uRa@(un{G_VN>7Yu2:ɲWVF0O?T*<-̀e, /?T=tUB]xBT^7QqݩژP_*UJ*8Ei3qs;V vB(¾àó+לRrl2lJ bo"\Kh* !kf08}<z8Kzy%avZ{0Jot QO6{uIz!X)[M2@kD!䐷K DMoqs֑e2p,LX,q9PC{,9zvl^y(X 7Vf O=v{%>&yz2 I0TU9`C_=`vf ej+[JHiC2p a /}'k@"Oйs9OPlj.lBaoR }m]#ȣhue L'hzVjܡƿ?ٝ#".P?L@bzz>Dl$dW%;gBMəD|aI0Gd !V1!0G8#տL[3V `<K>ul>/g ã֊Iq$yR VM]$H>lP.j=,K>< u z2K=adLSI|xme :AƼ(RmjTe1 Z>Lґl1-R57%5K]~[9#H\VL oR?1Q!TvMxJV5,M /T{LܢfJ|!KO|t 3/?b<aD3uZ ' pkG\y@O"āgZ ac(醟+&֜'+?eUl|zG wU[ym\jy頦Mҟ~ry!|=SF>Qq0Ôz:I?.Dk)߾[ @<s#{l>' ĶtșW '&|MEɹ=W~ aN{egM3Ea pHYs+$[IDATx}wxUﳒlMl(Ћt"E@0zx)*AC)T@nf(\{{~}f 3\2;=}~w.胠@E'.:t N]t@E'.:t N]t@E'.:t N]t@E'.:t N]CQ"K=k> p;u3Vm'#'iIZɲn~VF:;-o=jg/~Mf} 9irA:\(_Kֈhq*tP1 $x4X_Yrss#L@FjC&KQ;򿴓% ?`bu`":Ҍ}xgْafnnR+;%C)~), Ln'%7*|nr; `f 2)>{72Idk:&p6 \ ipC0~hD[ɤ[D[Xd2-l gL,d'&i'~CѸqxZK2MO ;(@;Gj\- 量{q7o>癟`wz}AKEk>DŽZńɄ,Yfy~L"}CXm<|8ͥpԩj֬)D3E&ƫ^0{Di<^@0#| | _  ʚ^5} %6~Ku|^hR؝j<ڙav"7?oׯP*%2%VDld(,,, jժ/WjUR UXQNqAAK ^BFzN=`-ٌyP<;2a"f1Kfl?e+OXv[`-oA&|M|&'LsK|aaܥ0*}A~vVy4tWnwVwJ4Q=#4^jVn5kPթ>@(hX ,IgEMY0DCDԉ&37PYg<ǣH\*? 9sڴiCoeAeg+m$‰+T/Ԡ Rs J*(R^|3sɑ}8 2͊yYb$C>d L{xu 1QԙcիSC ըYTTR% F5É(>os \~]̆Q| {wJE[AL䙁IRz B3p2[eeo\Wp)wkǤk/iLΒ)N!2Ck8@7oJAgyZ3(D-ׅSRXv 6ʐdKk !ׅ6xI4DIW>?Q50 B$ J_řpVhl]Z䔔+Waq4lؐ/_.P"; *5[xX)(A6Pc%7(^.HHb~R4b4Dq$׫YD͉p(6&f$Z#%%~wJLLt"LB˖-ŗI ;^-Hg$%{B 4D]_Ok^ziUaRtZP$}{,J<;U\w9F^^^Iݻw'KׯSN(i`wT=d}_ Y"L3^ $\$_B$I }5<9J||%LwI9u*7!Q^(##^y8q0Z%`eXTm 03(jHWLJo,"___(fi?MTfȜġ'᚜Wbi͌Q| @2 Bz->| ^xA|Y$XnE$H7@`EdMIoZ̲ݖ| [-!۽F$!M M$Js_}T#(B)kUI-%B@+KOO]v 3gϞU<㑽}( ف)'H_鯿^{DHةS''nݺ0o `o3D\H<-f834H z{Sϐ@Xi[jW5a9y@, 1 `U` LzLfLL&7JaEil>Ùl#`!j Me1F|Ȁ$/-@F]l ڵ,\@M} njCs@}< mɃGaU'XD%ԬG|՚4JJ$n5Pzx[)%؟zQ0YF/W&/ԮMYPG Hm2q A0OOOeœCM zB`#իf)u W&?_Jf !7DQk lAYQS5ҼEZTܝ! ;(o`_ '3?e)X\>T7a1 ZR|ޠ("R;)^A\n G?vQq: D.]ӧsP-m[l\I,G_45ak:7|d6.l!#P55 ݥN6 sxc_~"(pK !]&I&9 ЧO3g;w.3E R24d"t)y8vEȽم]",+b 1=$>f]IiTxRIJu|; $n}3eKⴟ~Iݶm[755UcǎCN ]{vsñdj# | UvAqy!_+\gr&#@ YaCcDAH#Y$~ۅٳ'[xԻwojѢhCZjtx-O:@u1\cyLlG!|KӤڇۻޭDA"d489L)3QO:U5I _N]~iX L+V3~֬Y"9@2A/xvwa An&޿eL?I_ٺdOlz9ղR:tzp?j^Ϭ+u&Z4}'KiPV˜H_kƒsׯ1G-W_$@=pK/$GFW^!H;,Ff [%Zo C B9b~H̴pb> Ϭо~Fc$86zN0u޼y" r0R[9{N"A֭s6)+nf! 4֜o Eν`SktRyh|$o0aۍY gv!FxU;L(#!_A'ϮHwم!E:ׯ>z!@>yU84iB~x\ Fc]?vdypM0rb>HGSlNQDa.H ea\ƉJv47E -ޛ=ƏҺyӨJ3yDt^T,]J@H=+t.L6o| $dؠYC,:u"ͬ!aba0رlAͭfjm1R;u00/T {f2M> >W&X޵Zi\%C_lP[x_:\ C9bkM'Lf嗆p477Wf? <[n@Cj !}kQR8rH,7u Aϟ90yլ$ D}e֭+H@%㯗EYo2RmF F^Flz'|L|ix^)bh^?"JI{rc(٧}<ԕ;r1xj~`ztUCZU[V g'E8jLj=t!`RG&V;x{Pk_jjN&L5Sڵe:T4h.8>Tϯ3b9WC{ү8 J0/^>T!jH5 cǎ`!LH![1Ξ 6;:qnδ%m|0k~e O[e~DWqgK +|~:($<xzt,V .?q4hm߾ݹtE#B[Ff`.2 Bk.6((VBS6to!2w!h` 6>!YsO׏ȑLիWe'F)RVt3av"+,c[m.N~٘_*Ѽ_ +3jcx4ŸjR!!|=ײht $R^/,Jh`?܍_#=[{6zB>bP]vS_H>D= 88Wdܹ !p, CVZ0igyc~p 'T|/c؄GVfmaep#]N3r5N̻~eb~ذa &ٳvIM6uG% E讨RɊۓ $$3w1'3|fhٽZZ uw*fKJa6P_iGJ0" "$T B'u8C8dD\~)#UjǙ)|  ®_!@jG/JyIor")"B C$~k}|8p6ٓ=l .U{ssj=%aB7,X 91bpeg*ӥn:aK#+GOvc 8QKOf[LfZ4Y)wpG%Q#'FMz5DDdr3u )Vp|l?a]aYɠ|dR4w t:UNм=oy& &i@=ύ(.ȃ"Ъ9ur&.WLZ9tQ/"4 ̞=NVeVv%u6e%? ,4oCAծCs9r.I"wh\dYh?Z3Q;2ڗ,ɅiӦGNJ;v%d5(a. *FP5Oj`P{`bh&4v5-|M,,KYBd߿r{O<@aJGWn+BZ&9.C ;w`(hGF{qiPfQ+[,R=PAh 4h *8$@|Q ױB $yV|ugϏAAr~] lD7QKm[:mɢSiAo֬سG$j=GHwD|6V+m(0߰TZKW&g0S|]pX m[׋{C{z WEkz?/61@b ^LKnal-"Bbə@ LbsX̛ϟX2k6h7g Hm[_IƵ̔ߗf'{ t;y(ΠxЇ+`@EXa-D$L"џnFʸx!Yq^8J?0ɓZ4*zCߠ㸣vf5-t̊tWovu}c;tP@ ;"" 8 L˳%24(q1?qPzM YZ6r>e\h4+Q@az ?бcG;|R@me~eq07h `Q"}s$JSѴ韌( T AxJ݄ }؇L|ѿ!6ӥh6 5*k ˳pdqndJ_Xd"U٥`֜9,+Ru #MP1D;`vlN6S_GKimFpຍ| 4GA P0^ʚtx>W&LEVru 3CN:˱ߣ tQH'iA pEC Mad4DΑC?{lXKXqA]qf:?/X4?`rdb 5 D@{\xQvP.Fya! &+{jQi%ʆm;\3S~;kvmE?u(u 큄2h!s&(^ {a AJgH?1i~$L RuE j7`hqc)Kfț2ge;7 7Fh>OD *]<>eֶ!.ҞeU4>޲E% N`;Z?Լys dTy8b/6XaH5/(!\fo##h=O zGu}_]/ ee{ p^إs~t^y2}'.^`q)vS; 0cƌO 8Z6%قsTl;\]c@@co!:V<+I= D>DsnT4j,+Lܫӱ *J '|"SYhx~~W>ӏR(evx6) XtksR^=@ǁ#jHXy @|TlVZai C|^B+0-sȱ%Do?Kv;6udTj!޸An]b~bgSVM<l޻ێMÆ s:2߭ )zN;P!gl[BCǎV^/Wغccڂo&M$~= WgږrE57at iu9*H'-\ 6zbgs1~neGy@;uDHDwhe/V`6ٝQ\̵م EVe^PhOi PjÇ+>.k@gd8|\==, ;kByM P~@=mcELsO=uɱ=\}`NJFN[M8_ O]D} Nou`~.BRA)B,-Z+,s(]0˂\MxlS!`@ll=:4S?$,N]t@E'.:t N]t@*%10yIIENDB`pybik-3.0/data/ui/thumbnails/Tower-9x8.png0000644000175000017500000004376413137372546020621 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+GIDATx}wTEg\p;ǙYŒ30\sg MTh/)D^*U^^I=n9wwpEJh>Rc"m5D.3;\K׃ة8(n·C *ը~3pc7E.͇ n.iKhɭB A:CMg-*MN!H 'sQ{]c0BEޡT2"\:x<&B:ڰ4"J[u.=5`'o162=#x nlwtndDaetޭ`4&e2J G) +Ppɗ+C3PgP.5JPIc&= ewHU6[UVR~}nxIDo2=HYc+[rFCχ˛f3ĝ'3|xG E/D~bfӌ.R3;11+,tьnO)&7fa!hK"U_C~[KocH߄kEV1nVlEb*e 1^ ]_QB=8\20׸jRL@>HroV3?SqPͣ000HlL6۟Nԍa#V&x'͟b2B`݌$ouS'T%S,cd7pf5 D%Mx[4Z(-^5ouygmNqC~lU- 0<i܌6~ѹhdpm)@Zؒ21\g3j Wܐ<%NQ3 ^ AbP\/yKzo@} /ICXBjNF_g7>zH gS|5t.:wVgp8ܒPE`.MykyE|w7t[x*E4>Κ>1xkEb$/~)hNĶ#Lk]HT8ďp`2HΟSN fV"{9`Ga 1? I/Z'5L Fc6S$ك;J hF#-CT_%\b1< gpPZׇZR3AP1eE'zMjJc0e* ™/?Ro8]/f5LGL R|\9L#'(u-u< Eo"~aC~ŸMC`&S,VYK&f!Hd[6 +Íǵ4S"M 0Vs , ߅A\@Go' XR>/0.@նSLg̼ υ%dC W8/YYi q08 67n\\`Q\}qC݊p4n} : p>Ott8SwKvHew `upKո Z.8Dk5V`>OXV_:_,'|\nbi60ߚD=JYS}i\n"\/Hf2v3l 8QYAT=Oc8 ṳ H7bcn%RԲ٣d;TAVRADf1>nK3zBjen>uu?{:"FCp]l6Sĕts _P)z_ƯT@Av l\{ M1L|<% R7 .n1uWGRE<.] ۭ0yNIr&ƾB\}ciV~O{ )  *\F@Yf36˶*??rjM7.~GQ:z@ >Kp_W1Ax "ka@xc5}{̑>(4,0)z'Tce7lkgȔDr` nt9s3 n0\J7u*h0 .ߥ eM^C/H`hBr5lq+#SKz躧py{z:sT*u:@AFy/.äkn\Mgwb;C77xmt!Ȁx1rc0^d٩k1|u772DX%զe`rC,f *`p񪟠]sQUq8Z5zT/%׎@k ufpC]]vшfsyCa"S  xZ!ImH|39l|b6ho=+x:[k+ 0tU3tcArbIx0`e:lyRKbtѵi03\9Llpp<.[g0ٌk_2tׁR֪P#(UmK5yTB[\ d )m2ϧcHn_cx7{ ?) c3u0.&08euLǬH%p5ڏ J|Ųe*D`Jܦ<dZ.q3si'G@(S)/8iw*7M˻hG`hVW(:]dʠ8NZCǮ@e*Ӎ*w >ƫ')#o v+ڞ ѕylVjfry7l jl-S! IesӂKz1}UpYdk 8/!*K?8 J<#&MN}uhDHIhִt o{tn\I@/S݊ .~~xyVx<_+[Ve7.qß^+#xD2x\qL-a:6>`IAm9f:n8D `>"cFO+bP7 RBט:|)yٵ!q`sC[Ivadk' m[)U?f~(4m`u!ѹ$+"Pì`aPA}Et^%J7i\C/L q%nL3)"ET!j#oQK ("FGx ޤ:1Θ2˚cwF©Aq㴀7#EG?&,ٳj5[ifvvҹ V{,*Dধ]*Ղ{mzK_qp B̹ .̲j1h1~Аm㨧rNc7`!UEOę}O(J|a H& lrgEqy &H_@h3B⩥Y{絋++ h LN G/&2K=c,x^ͺ9L:Y2T)7Y2QiR Zj aJĎWߞ'ަTiߛrx { |ZW|rCǵ4l1q5 ?zA݂>$1"( m2 R@7c*.dcjAMT9>yḋ W+NY63tT<T?zCk~ }Ϧ ^q>bH]aCl{( ?@RX:/ȅ qi6/7 K?p\TI<iJ-;ktPbJ﷕{؅;"rٵq``#uln&n'ki8BxSi. ~b9X~F_:NV\ Z1̦0DWV}Es9!&-:[l9lq6%@w}_^q\dׯS@J b"&$ bHV'X +A:8-S櫙 B6Φ̍4ӌ[8B"u5WU s(CUT!n{H0dvͮ|WVwE!^N bv?/D.+Bbխa.ul; )y z0U&o̷ TSh+w!$8ޟ_F73%5͌ÍPUeTO MV0|Teu ߅FN.i7cUJqOa!Sw c>5}ҿπ]*7=OǪ C_)/<%v)[Qj8#sVD.Lά h e s|p w$z˹*ia b]j,vԏ8>, 7)x4|!\z<ߕZ Oz]b&x8f͹W;_4 *BR˛E.h7|bvyeA\.j=f_W;n = `c DHTj!0]# d+Unq[Q oS?X~!3y2W8d72ʢYe7 湋|/o<+fL%6$8˗yo=#~Dtj=*\bˊlqB6qS }s]Կѳ"rm !A#0D3s=;@sْ^4C`(#00]=tY^eVn2b$E4f)Uv43)UܥFBXv s\g4A/ne.~X*}~ų?+]Ss~t7 EIth{Egc^,ye*X#P3XUdlwT}>p7qZ|‘m4_@* <~ьqQ[zLQzOFk-.T\l!92dP3iݭ8v)od/<H"XQo>D,{׌p'p#:+nn<c kU8!@Q΅vA2N30F.nb#`OJRK)헝JX ;^!,@@xp Hlj }}jE_#d(v-t`+3RPC'.H;.`7(͊PExsƪ ^؁ 7ku6w^vͧc,B&& ?iΊ2X!gdIgx -S8G 8s3X8/uu͞|ȨACg0/yS^w]䙾d^XTv 7lBf d98W9˽# R<(@(6HnyIMH5,y9[(7^ iT]U w]FAULJuz.`Ҙh~W@dLe`7"uCQ_{ƈtKʺQ3)*UB}sxH @y5"*!: ^NR 'ZEx))J9S9h@u )x LR2wy1nᾠNøOI t" #a -V6B˓*T@_bbϟDEK#sȏ.RVд!b7G|Kd?<<ޠ{o7cR6s(+q~ZqaTx~ v6vt:"=Dp(њ%tws:  U0)= 4e. eG8"/Cb8%xJ.>zj\hBۺ'(/ˮ:_! ']<+H􁻍 DrCnyl⯐n.YaiTEz|P:qG,b虍7-:Eg @0 ]+##^"T~b{AG-!Ţ*0~4V? Pf㘟e,A;9doGG{ :-n_~D  w_CDy *(BDۚ'}㢦N2?(E9v\ +3Y,7畵90 ֙ARG_>࢐nؙcKxT&KԩEȳ'!2?O"%<+@Kh-I$#BD+͔. DDG ^ť-/GZv!ChقcoE+eF\gGXJ!be />)vOh%[o(F\febTDŽ4(%ug{nEISgE i gv8DdaSl 9G vfz̓Rqi8yČO1. m4o趮bpИշQn^ۻ`fbn4ܒRQbc1ûE g0.To.ٱj :B ט+/[5pǽBG ȱYR.k[nB% '`HsRQ@t'кG" E+|>[44؅L3MY?w?se?}$+-z@ƅa_&$+}cM"+xsKc|Hrs5]2_)~dayQ0p\a!{ԦZTO@D|@@]28,EEk9rOpV(BsdϕG`<{*{s0A3?JnEP؁Տ:@ϋ]YT6,"H(#@O^jq<1E!zەClFH+q87c|, {J  4=Q$Yg. @ "k;Yi^- R)5T54?R&` zӸ[➫ NFG_ dMgsX|ŭ!$\Vt*,zvUך{04fdn'PK-ϙ%FaC);dǽBJIwL_iv 8χ2t@!EgAc)ؔW44Bd 4L۵v(4uÓ{+x(^Yr /nUZf59\3!k\ L޶Jd#ڴK^`OݍU#]C﻽Ļ ^]L RLuwG$8=IE!̗nqC kW,l7GkP v%h fcyc+x# `/Id ~; n~,gw$}>H1hE[مD}M0S+5wDmn_$em1r@|Hi |9 />w/LkV4* i-rUҥa[o2iw{(|\;\ !*YwiPnR0X?}~Xwxf7Ty6`\26nGi_8GyW=}bQb0Y)dM#S8fUZ]ܛjY;`}›Ir!zA bQ f.&/w3\4 Ce9Zđ0!P@XЃ w];|z9܀@a~loJ!T<)dhrO}U!^~<]H!ݓ/;AGToWS(@7 d-cJNS#[-B 6pW  \߲^J!23͑vw lu_|KjrOU{Pٷ.O/ E';dHDqoQh2. 06ҽ+x?x.gJlrx?Z8`_z] Y׷3QWs]Ț#2*$@ɹD_`Σr1,=E5 {Ix_Β%k̓}Yj*bfM6W .@_ЬL 8 ׋Y 2Ɇ\7 &j{! npM*qpوEz=1 \ulJ8 lDb+ܱdGDȐzG,(R- z8CHNP)=3K"\C?sE3/rx.:'I3 ُyŦ9vy-hg? D@֏B V&:ҮBBH@Cٙ#rB2x .~t흢8POϧpywXzMHl[-ϯ1Ld/},1Kc襕Yb! HI=>j d p4Q.q ˿=Dxؖ(j}W6tFsA*4LR+# H/ "21; :9J,F_pα=AFpw6p8 >b++<|2H+{d(jw$Bx6aBmk A:ea1UOIM'u/ܯ0ڑ}9iEe[GzQFmn=R˲s=._X}Źai[A |8Bt,Ci?>@y'G Ԛ'B >OpQ.L|.8DVɵfM UoWPV?rO?j];QE}%f&oWTc1g&cM7J!G{Xma I0l_ z$2fTBw6~?hwK6߾Z)a/#sD(UFt)q[Zt?~ao$=-Tp:. rz8,}nG` [A{'q^ԓ.iK $m};R]t2]@`><d_l&;e.~0;"P@B7GwpK.w7}8Yh/wLJ7YjRp!C\8rp QZS>ɋMA;C: .e+b \A/jD"'w`УwEŗȸA>-REp'MH\͠wvWD3c\lfq,D{6x!P+` R%mj/Af3]P_l:R%vUFJ%L/B ܐd ]aቿ!==Ʃ~vr0]Bb(غ:S> 9E'>6,q6`_b. f+qP6H !̡gykL墹AB#SPm$v0>b))+ _SC_8麠Od@Iro!QXA@燸 YA'kqA Q{ ?o!ElrJ?8"]KDbl5gij^̑GSfݼ>];ͮ,.@Zm k kaD6zpwO*v V])&APV(;:ğ퇔sruYػV^ dc,2zIT*"Dqo3Vs1K@'UAkg`I5xYjҬ? j#+C~7捫j}A"{iCAtnNEXumbhw҇2Ӄbaw;?jlv5L '@.728,h qҊ\mh#..=2#Ъ+Q egN5C5tȪd98ӂi'3`l(y>ښK;;{R=qGb'P-Bk]tT~by v5(FA|| HY-ԝ?`xHthGfxyڃ~6qll͕`gj$,qe,8X[ZakC/CmQo(l@g>|kN @E#NuF^[]ZUjf(z+21р tR;xFFɓ,%`XQB^}vqwRS%;W 6j)jݍ$!pe,eAJxH#WCc8 Fx4ܵP;ʉ/r2ocW|\eE9Pț>n'֏aߔ-!`5=Wć[e/=kNf @)l:IJaC{ij ̱%Uvo̗+lmXvMm4RpY8'бlvAN#rJC;UPk䯈+ڶG]]~G/rBb5Wg"k*bH%`]O*$uذ9Dv*8Km;< *xkX\m(AoW?0}yAGd*qJ$~,k!/3 8MmjK+TQuV(.~ oY \/}(b qc/R`C(SuȱLٮĮVh`}:`oT }- x+:`rF!Mү?`Bd[X,v'DGcWQS3޺j^7a@|y{jƖpNjI:ĬFxSn"Zr&&'\^gX`Y,C-CxN=@ډxԌ%tPV-u{M@0AqG9:Y9"6 yy/PbR;0Xm &Jط>GJ)v“L =ksfr;ػG/m_ f0jƙɕD}sO.k$+/0`K6NL oY L>nL H6WOL8r[͵0?+xM Wu1 l.]i3n(6R Kۈrmk(E~^7@,EAf k~hR/QӒ?O/o≷qG+{;_dp p0//@{v:\i$aiתy b maڅfO@Jx\{`JÉ<Ǽ`l醿#0UԜN_V@&+ydDZ3(e3*6p\ 47/% %taޟ']lh E,k;}\i ZPJo h;d'/CM.L92u1Q DM}XP!7z "Ł0eX,I Kˊ_[ f$=&פ n0Ə/͜vvsW/fwFx-@B{XSjNz\\yQ phUL~!ٖ-pse-L@rӉt5<^JRCA/vzv~t+}?cZ\*%j"r\twgeV,( Ч=h╋X-hukGϠ?!BXO?PKXxDGR^C;43㍬*)%(ٙK5 x b>h.F %OP9tw $I5HV+k)Ϣ!U.QdtbiYSa pHYs+3IDATx}wTյhdL3/Ҕ*EK\EQX RBј!ĒKbo}̹T%sa9g߽(o(< (0 ( (0 ( (0 8/"L҂Q 19~bq_ _@ -֧COo.O:/ba G;}iTcM Śڞ ß{/> z"0l;ʸD@E:} s"ŝ\g/ XI352wPC~(s:p uX@pl\LÅOޡI?Lmkp3 ?Kh< h=f+z}.Z&"^@׹Be %dGgu4u'ϖ sy5yEI;KE2=HHޡg5`e 22B6$íp BFw :uBS]g=^_;֠dt%W.i2L2H/c:y'2@u5*kK7s蜋 {9LAatG(ֿqe1~C}MD$s fIYYcב{ܜ v"|#!Z[p)`5$ B!']F׸\ٱy S">k)=D9$G(wY & qC 鍤k#Z@ J5pӵtޡ$0&W[ֿ3cGY>SK($ DBPrry%D2\wvWWZ sBkv,3`6H È?!Ug*F;meKZZ/еr ;0$'Xxȣ7F  )M뾝@6Y,Ga"[gXP: !)榍fby|, b"D0{j>GȀq) C梳ow 0@5\ 逇6mbQQTT.53s*k=@Dr28=1tx/[C):M/)UWt*M<Y2tdd\YM#>QFXy=LXB^SV a0#ʓ \,N3)_YKtz]=2D`ƶ o-dGaktcp/N qr>R%ݚ⻿L St()a#џVƿ*O}cJ5ws[@ܹ,v,Kgݪu sЗXf51`n4krH'*9_=X!*#}5VBӻIGVƇրrݝt^f C} Kٌk(7ď_i윅ψ"NηT'C/q*:zwDwT+2X2y@_C?^ њb8fk㗪ftKy$es}RZŘ3 1Az≬-rhysQֳ"ڞG _G/mq!Fq2U}3 =/#z]+q=Dƪ0)K< _ >tT@g9"Nh%4RUY i蒵gsk{rbtȝms f .4~\tJ4uUbVGGrQ'?oVA|d>" .'3npIxYx-}@`@ rEe>=wX"(f?k5Ϙx_;`@"sfܺ%ʩqxBw\T}"XU~g6^FIn{/2NK+0,_tumt):9{pA{:2*qy8?=@;xPP6 UC};0"hB/.x+{0K5pJfI*={q?^FUPKH7Xҽ{xO(tSi _Bi\oQm!- 8mJ+(b86Jxƃ{6w{&6oNA D1!ƇߞgMOuoa,/xA?ʻ치Cu++Tu c M 0L転rR Ze t/g@=ZN?B#&?L߯j9S@N3f?fa!L7(iXr]c: NH ua=;wXܹq nj ҬR| YkV_C!b:/h}Rt}Izؙ41:[i l&sC?Jc0az&0Re!v>RUX1]v)@_َO#K"p. F,zHqTb< S?5xkO//ES5^,CGۅiUeFuhxd)nJZ y>BBG .)6=N-8 YAFu?ڕGs#)&h+Rv]wyR_2)jX57`x`ePTEQ.Q 5 KWEl!bK47Hqrn$o|%r3&@qqMsΩNciGd>}n&V`6b67 ցsBZ(a`FK>ͥf@]&a0 Gr;"l| rlG}Q~|A$hSĝ;KSWpޮӀ`)6Qi L?O\CŽdV>Ov7+_R`6tcow^$'h 0c&OD7^P@Vd|.Q~}cΖvk00^.[Rd!"8*_o/v!0^ ^B4:"Ҿu|& %9} ق$93a.13CF{Pgg zs} Ed3H7BD@kGQy=Oޠm\/4vnkI{m]q @wlQi!Ev@cw rr;Ehn.  r<6:ߐM'g qe<E )wec TbӎǮv^b0C6 D== |1)>6qL(tU4>h;ICX.:Ck {*ú>Vc9*s!$}ㆸYÿAԚo_%_ Cpȸs LuugڵpGosM\J ܝ ՆF !c.'0`@  ;k"Yh4  y5xpӸ:yQ38CЙ`TAU$ZQuٝtvq쭸9Aь篪3}ޟ=, N }6q r[|ʓJB@"cǢ@ <_#ny@_z<! nE5C33. H {e< 5JQ aA=K{2z{GAǡp؄ְb5c'o?wr)`VE LLld; :͍cpL\pRF GF0f%+4Ş*O n*a1=b%W?#EU"7?\[r"N$Uep^A7ve@ܷhjr o`KY7,sBDax8LR1U2Ooop7e +P1[][q/x~8" xPi-eev34xU* Ŷ,|A| 1^@@p0@r|U(e<*?~zI$>ժcqd@TV;5c<:}QSGzĀNqǒ * GMhǓEb͆ukϜJ[Z|9í_A n2@ l@&u@{O:&0sJug YPPb49hQK-ܓ2HJvuq@ś/ }e\{h՝ͽs:hۇG8x8-uFe- K =ZT9^`M%q^Rsh!f&l@O{M52֕RRTHU* 2 s]~O{^=?/(Ąf C2vvx,'eejS@_o(ha%\J]A<װV6MZ\žW>~>#[_ ㇺEy8h crd$g-B9A $u> ^x0AJ@[{Nzh`c-ݼzyԽVH|Vg⟋{v՚AUҗU l:<`(¥˦ 6v Z;g=Y[=^g)9tnϩ\]w=HR|wWᱛgް"lƆqf4@!vaNL22_ q<3f807V9ı=s=`O!Jw͏5x,*??#?UgexQz@gႳvq^g֨(-PhaKf:RVRW.@Xoy5|,Ԇ^{Kb_nBJǯ>=zLm1R-/CqB c=Hi(cϡ;dhR(zV5j. K%,jmןHm3J޹M?~FOcQn=;_3 +{< HI EZ=D%i({ch%%vƹ~Ѻ?]b_,^߯|\Oغe0(f馳i(7bS gs*{b5sݡsR ,} -iZ_GDlM-asׇ_/?w,=RNz0ОߐCTxyE9Eϯ>N*E=QY #-e_@W̐=HvteS'o+=5-,mY0,3nٿ{mkΗ iv3Ӻemo+g{9\I@rZmJe/74tY: 6g` aY|T1P+ÿ{uh] υ'\ҋ6LnR@”f-8=j D Dڻ 8[i 1O0w} F=)+0 ( QB7}$4IENDB`pybik-3.0/data/ui/thumbnails/Tower-1x1.png0000644000175000017500000001333413137372522020562 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+IDATxyTg nUWW]]Uu#&l6iYw8 391ȐF͢AH.`&qbFO391QynݪԭxO+[W=}/~/"p .BBȅ I }{W:T1~r[ r"W ͎!t}=[tr]AKi,ZIi޵}}hyr w8E2z}9푮gCpH`AJWZ|x!9.ε΂;d%yju%l@x{F'C {-ÇE-OdV S G9]ew.b@B{xvIC rC{X:_zJe|aՑZ ɖ_+>^R,V3gw&4,jl,&3z1 V#|ۥEyL,?@}rݡ,DeH ܛyEaMv[g*r1Y@#76x,| C&fl53B|#.t(gp30:Vt9%]I|h53&߯ tA| :LJ *+ȿ[y*VȃubwDu?P9 8C׳;Law(L t W8v/\n[&!cOH,tXlJI(G(̎S{U#3yN;:)Srj5sFg  #*@:|Ttij)_'^?9mP'T< ""-P+gO@mD|_]݅ $B=r]eH|iϦxC#݂`ƿڽxYXL} A,g`BO&/˓0w]ڽX_?^G~owoH{!SƓEl7t?~ÚTg]^+ ӝC gB]ax"h |b; VE4=ө)\UJF}{H7= ~W86i{JK;#6]}#alI?>$j{ğ4E9,>B7,h`+E5}A8 {kYkDXI|O c ڑ1 }L  g*XzFi޽rw\Q=q6z &hGRؽox#(&L%%%TVVF^n7I C-Npz8_tueN$ c ãloĎ \v/TCLx̩ᘧv!*ąC욚f +0 M."QGAg+>b[x쬚N 0|F"J҂,$F'?0<,ڽ+ط>_5`\[[AJHt T[[+\\s54tPF,)&I|'; )*~ZwVw]`xX]_S좪M)bCt?l0>|. CxPI%k_펲#[$o1@>UJ".@tQZJڝjrFѫ,+**®71b9R0ЃatBl>voI={*1aPDvU(Q$!arh`"&:E'q&?jG?Xm\fЊW<ѩ @ []T5J]AY8bW5j;ƌ#0p($ Idz:M)K,||`o$[n0 lh3Hl@U^f[SIǏ_*dP`0huND'i|2:_/o/mV0@D'w Gpp׊jO,It˝t5.MmEˌo`Fw1A$k(녕\/ P;EG P7&NH&M &p8HMzN"T݋'~#7m`Cs\ḙa"1h!,V;V=V?j8u]'B xQ,*$ڽ 1W&Z|m`CJA GztS G mmm4ehG`J hbzCH96p"EL- G[asԚ> =;'oor#l`L.6@tSeS6GàNHHϧya8њ>ŗO-DiL\| Gf,vǧ ðM+^E ܡD P+ POO5PpʁU'ŷmI{Th97lO ,^X|a@ O9ں*Z谲 l 6d/"vq%)B?#E`3 m$\aɒ%K .u@ 7; Տmo`ھ:< nr9Ez&S1r Ӿ}H jWv{/۷kkmͻo[Jr0 ۸^XHvRc)bѢEi&JG/OhqVp;sp녹"Z]A"0qDB_s_?YU![BZ7Lgh"|+N/2'~찵m`ӏ ! -za$]w{au4> *3E)b `"oJ6iD+ؠ@@w>V;,n@< )!pE@JPv|6XJo šZ;6d' lyS( !hgm)-o[@%sta HI!BxjJrGc L?*V `ZkpR︗ML`U=a zK4 d,>"m`K!R 2M.C{>um`KD+Xz⃀cg}rnv$ l p+i` _6%tޜX h}r UkI}XgR @h;-fA ɇk:+cp>p+IBK7ZDf2BտeL9N+k0u+i +-H6/@GI/fxw/`y')/}}֟k:-YAYOlpB|~>Hn`\f#] 6@<5d (i@=?7g!WNJVpMT ^ xt_`;Zx' شO6ЁV M%>x:gCpXIYEP:j[ !H>>`ZOhꋉrGt-lscj8 bJF}~ N\wF)0x`^k(;(śG'9/7 |1 KP4q{;S=Zݕi,:q1 [S} Wj iɒ?eh8Wx/q6<#Q650ƝʞZZPۚEP΁g0U[A wU fx KJqDpa?cPЋG:dH]W lfg1K~HQz q87s?c,1XjwU.*D 1?zz23yT/N57qaY֟UhF^,.X5x`OYV<$v"1Xj,w$ W(=2͂1ʗFv~!E+3sH VK:)l>0bsmk9@dn8 ୟ+s?g*%.&S% x BO~L֟D]CܩRBI6^ [_|4K5&K! 0omr]u1XZA,szEVXY'xT4 ƕKf]5_@k'5X£rn1Mo/`dui ,)-*/`1X)RD<  ,@8"=nfDIENDB`pybik-3.0/data/ui/thumbnails/Tower-4x4.png0000644000175000017500000003240613137372526020575 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+4IDATx}wT/ewf{-,MTDzK5-D5`Ol*4 !5&jĘ|s̝~gvVݝs<<ߧ[p_/"tB_SvdWLvh|K贎EQQ(..@@)$mhGud9٣te6*2y`우nSԇBQ@n"r1N6:hZx Z廠Apm8w'xXj.'IB tw/f'18HDa00K?^B.lp\U۹sg1mEB2tp2١z]{u36uOBx-1U )$@ƿVA"sdd^'2:0*2'Imf:}K&Z >O;]]Y?MM%~Ba4z\zP]I;Eii(++c`H#S1K68"YUإUe2y\uxBw HPP_FUp D2 ,+JI;&퀘$ Fh%~/wz \h.@sxMz*REc0_pA$6Y JQQQ"# ycA*qqt% i E ].CXG.R_M"ļ DUjp,@Z `EaSShL4c^6v`0'w/?vM3Em/sd.#p^']29gB 3" }XAli'jS{膭J.CB!vq9цlNކX<;k%l $_TUUgBMBNOlׇ8"|' fzڞ]=Dn.xϸO@;i@VQ BX,k_#9,u*CT0MO)ĥMbT p-|Ei\Isjqb cakJZ_nIɖ=\O' [B0(vǃ *wD{]2[h?. ) Ofҥ Y4pozWQE/׊c6_z j[T2VǩN.t˙7 XJdH (|'@=&ѽv}K DoB=X;AxwD2~bϭ5s}ԉ}OԮ 2nZRmZJc ;r?"7PR7$DsNx6C۔ܫ& 1LгgO/4\U-f5.'N{N' b=[ DYorz%; `@`e%}aEUG>BLT1Yt%p`2Z[S`"| c;g O]ݻw{fMVfHv*|y5w5owWvnnoÆIP2Ti.NV>`V,sNl !mt=666`pt=yLE`]v+v%D2^z1uhuSi!~<*|W+8`S^0ݏTʪ@d/৓ 8r hŖ<C}&d h(!T5 E m w!y,FT>}ygqZB,Ca{Xa%mPLU0T1{_C0O;i9G`S^U'<ɽl 6 SŨxBU> D5!C@D{\OTۅ7r mx*w{Ӧ&d$1]I**2HdwW[n p>]D"|X_wIb>YÛ+DAPW>R/-nZfU?6Bkt`os8D¦-7l_ú@ Qu4+\1C<ǚӿx@!lb¹g- _/@sAAp`*IQ$2}MwM\V,BuI K'xE}eͺ L U 8]o*0茞&!ڴXCy$&p"0t%O`@t ߿޷I)DN9϶&\( 8"%C\B|/GO UuuATלy7mD_NA@EB0#SBCU+W1*%|{o|E:x0rq w;OTi:B'%}g+3-NmT*-Æ_l$ʮ߭ [RdRoqŽk0\c y I)4b,󦐍U}~{*^6uוE4Es]x)|YmD c,;~H Et,/wCBI` x܄H |j{=rQ0ct9ӷkź능=+E.fnM)i`YNx%F42SO$S^ Y>ܱglK[x73 7GT〈% rjkCܼN Ǿauߺ!zu1Q%onrG|'kVBGa`÷ @ & ]< iw\3_#zk#L=25P MIǺbaH")# 2a}JȐ\`5fBǗ0I}d{T:J^q#g(;?nOm]0e/q~ _&:G5þ4wd[$*;aO%3FU @aJh3%/r58(p&Z)0Wrv;_L4>!0єv·\:T "֯C>;`d?V?bׄ?V%OW. ,˝U"_n9 0Zf5֐ P4PBt)@t=)UlB +>͒?ι Z:,E%uO6@# SV0l0~|֍+⿭%|nE3}etX?TjM͡(2˝5VdC|!(hݗW##As]hW1Ey_Ӣ܉Cı_~\Cr|Es{gH(·|VPl0 hGd] 6*3@hf~Y1loLI^eNJ;it),0rĒGؤ UԭǺM՟]'.{`0q0`l`îe ^}ZqӷjŰ.yr:ě[+ℏum@Y^ 0YCh ĚM/D'V?h3 -|t-r!`r|`IKU⃗*ℏu`7><=޳vY\;Y}M@Pt{SwM`|IJG#g(S 8ťᛪla`2qljjXOw7yeCiʕG̸Dzb #b|+Q H hqDmx{;dk?ed@C~DwO`xUnĄ/j鴣D|y, 82Zv$okXo>W.†^k]THZO_Ո6*`b$r 0|oX >&$~9<_Po.+&)ݣ:#0YX_%kD.t 's쀘v'H;]Z 2"E"278+̼@`ɚ5JO3 .'U=AO:Mi K-WTi' sO)|w_217amAB5+oY+ M:vHC/WWG,N\9EW3509 AZ0dh1XkǺG`w; _3~Iiwt^ -vXF2(9+"" *f`BDD:g kO'XOo#Z@R4' h2Q0HRJVyDrjǰ-ÿ.[}N*1ċ1l4Y&y7~,""ȉ"C5RmnxP7AFPwu'R:#ܛhLҪ~~V(tAYn}]i*Ar@ 4|t/R7"g-Yp;^K2i gD?-=2'*캋|mخ)KIL6 }Szu 2 ?63) MfrDd)IN6!. Gk4${Fkha < mo$nKvХ>> X-(N]26+m|$,jSG\ w&BG\+H|rt3`-:)t e nfХ 9Fyh5( @O'P&S: QLCG·jX /Ŭ>KXJZeçC,K>u&*EY5"d,>*^*0.&n4`Op @q`i}LWĮ:~L- !@ˮ%QA`@&p=NJ?;*ZsP|*D%ĺJCV(/!.1 QO=r,Qml eb`^o471*g3xDM2< ~ |lN0s,Ič' ?-qc,‡ҼJyſᮈ(%.<_1'YQ8tтh pǴ~PӃX!S"WM \ƙ7pM5S/B`zBb @fw5LXMp{dJ+Y  q )ԛW^CIkբ+z68eC% |Z9;i3Mv'u@н}LIB'X3+7$ hYAV ?BgpT5pݲ/o0fG> y9lgEol>ƾ͛,譪_\*mBV >N.vNiF=y@X phJpr$ U_G`(r#?x`&iܲ#OW'8M%y * ɫUqZ=t@hr K'n,Y @1Htgp'Iw*Zj& QD $\'0!hvIzEDhk@DC&I %W b- [{y*XwXE iȱ6ShI dAp 62˪ k2 Nj| T` rAT3tE# R _7dwl?w>8qG?UAF+>Mw ]` l#  RH `Z\[0L H`-O+|Z>&QV9-eh-Z>+ ${K'e'o&`p(cjGpVpjd~ɡM;;;'wEw$8:GTX0L5(wџM$t12ĭ20"]cNk،Skr˷'^ D5F2I(B_BF, 59˖JQSn!}d^F7tԴCOjjPMdDRrL3Z!zy HEI PTR-`s=^RǑ;'EKeJ+)nDh") :{[+đ+sۯnvu38Soc8/wcu[_ZuiIg =#X?t&fBhzlVT&~R0Tn*s 3UW%82VpUEyUBT0rp#ENq4oeLHkWh6llʘ@#;9C7:A}p0-f&wcru}! %J 'Tugp߫e`# lp㍨q] ` Af32@IR)l $~& 鄎^F R8|kU$,}%ы_$wGѯb%_g\%0qz۽Uys@dW< HJjⅹ7(_U7rVMCqI|pA2G^[nZ-`W%ٜ &4Nq(ZB3iwspM J얦3)220d ^7+; l^UCBG8oEz@8衮ӏ?SFxr@ 6ٜ &^&)n\)RydyL#4f:Kc@?I.|Hu S~ @P'7m1g7 :j_N4>a-չ%+wDv6~Ht5qQML1tG,^t~%+zx b&ZtC*đX92NW &ޯ+>ɣ}n!hCKen|V|AB|q(^ 38)4 pz9wgWF@n4 K'i; F RdyAt|oD /zH`#w2O$y_>#{P"wjňnZ.[+ &T wO%`gluO?Mz`bk&l5dAeN/d @"sUHhB'և;hsޯ;WC>{Kjǚ'ׄ,vbg֊w^s[hIa*JΔ-gh=YZ!!k;9.Ēa{HEڝ$& `@_* ;x#U7+>=6jמ*/[d ?lmCFrJb;s}!~c(`6WHN" b~8ɓk#EYB0 d- :sDz=U.<""W(՟3 mr\BdJ%+9M9gs>iEIC0Ȼ'] QD uҬu7)FFDžzi:~Z\/J X4rY`zU|27I DǶ ͱ' 4S@É.]N ' -Ap/#^">1=<Np(OAY$R@՟@ҸYWxCV9WaHEtB$@xT 1ߙi'`#%)5 g4Yb?#.6o } "=⢙~KS9̧{c uV :~LvW+J=2_; vU> CnPtD7PJ;q2AQc$0 hLN@%d=p`J#t۽NFG p&=I'oZZ͠׭/p4$:8-\p!UD#0 tJLIcޜK8?2Ãxy`7V2%r@` G0hX/Wr8켵ߏAo27( {T?E?x, Ǝؐ+;\ DI2 '2g 9@W,ɽ%T慊[h)$ᣬ[\$WGm(((FAWхr<@fW|a$ "iԅ$\7X/I: gg}. E?8L(bPO˸E~I6 +o8ZatUD2%(7:X"Њ4%S k3Y͎#xlFE8l{1]T^TBEPscj.\,CEsU$v c CUNY(r f^|nG"?rimb}8wh,lޭo.P)|Z۲ Q=Tc@-Qw)!TT#%\RVzB!ɍT DR dlAiyx=dHe_S ])m~׫8wW}6~2FQy`=W7\ʆ#z#C91I+qE'enQ<|Vdi[d B%nȢ삖LQ9챛ñD uH&ةQdE < Bf 6IID JmF%9i,H .\I5x4 LD82 d^KƠ'&+Fssnl> VBxֆGk8-1oخ)w;d !RI(ݤj 8Hfu@ A0JV)&gp瓝U56Wb֔c +{Q,ً ka 8~ᔥcP ..K ag!zg v>q]ggoo'L$SEc@ 41VmYc Px~(D6V* 2 i Ֆ2l\oHwZXsxx ayC[zh)r1 U([~?y.$5x~>@IUD܎҂N`xoJZv ' _| cLHK&FH5D H(,a7+D@"\5Flt;'|ﭒa琓=;~_8Xˊf 9DgTQYL~vP= \Wer&+SBޯ>^Q@zCZq8ĄR&˜QPE(guG@&e/֠9K8#/0#7ǞͪU qq^2aLBö*h wCŊ0V}"g]r6Vr<^;R<~im=T/^U`ǎ;,<7cF6}`F<XݯxQd]<RA>B_k?zL^S2}PRIa pHYs+%IDATx]w|յΟwf{V˖ r 7l `)`cc{/,7(@$ K9@}j;e'[wN/~dE0 `.ILf40$i&L3 `ILf40$i&L3 `ILf4c FW7mZujVijk9/n7g#@ &ϯzږ0"mo*|]Ysb W>/?$2/?E;=Sh'p>P`IjU42] !z,q tC{#(z@CekڞJ" ܉ Ď~vlE.e.pL  C"R5zVZCAt=oi+׵A7\vea((CU ˡ+F%ZlL(u$hcXGk# β(A;"p~֊ݨjsz[2 >K:"=DkՍvu#" TePEx э{.yk]("H[cv/1!Π1cr ߊg 8_#Mpb%B `SZNH@Ԗg=29Xi'D`ܻþC![y,RrQe%5P, ƮAC\ &}rxjǙ[t; `X`c4! 5?6zNij0"z9Qz9 #bfGp}|>+bf i@ΗA2N p) w" JB_OX-w.ɰ5o\G퉑d.4Nxl]8UxI A@Qܪ>Yd>l} S-y+ڭEOESrkH?HYq o}=.a C Sl8%s]0bEt@ ;OM͉yZ~'E тnj㡄a7vIK ]`x=QÎؘC,yZȰ9ڰrW Iɳ2{ȓq[G+d _]XI,"&A!bdgm#?0\80f "4ȐBAm;{Xh͝g"]u^ 0x)mXN)d?#6 ) V΁0ߟyE6<v$Afz0n[2;8TҐ J|fN?\OEh0E:A3l"~:wtQ eحdFhV3 =I3`kU`HJTY_T惂R )x;un2H2Pn .¸SVҒt>*˞@/>gȶ)눇kΐEm ۭ#r1]D^~+((jKM-:9ӹOI!{KEPpH" "_K{DYv.?(ho5@x#[^)+A7 h?'r|hEQ]cBvP-z%y\ KhP}ǒT؍OݥT?ˤ`‡7 Pp)Us(VwDкu{q!n.{@/ڦOF R;*B&MғL`ϋ8\VR㝬0}]T!g4vaO`3m`n7nH$OGEtR*=װR=ZN ~&W hh=&HDС@ʝ_J{-_D飜K+DIm`')7 FW1 H7nYydC#?dź9d"#Y>y\ٺxn2XE!p.7SIhcDl۞_5֯3ۛ>:3}g`wI-Nr,ACG;Q& ƒ6ȑOqz635|%9?oͫq84b69[fف@ h`du^=$#eVHŞ}a&uC8 o}]QhtZѼP(N@]q{QpNؖ+l[2hd?'tO5Q3Vzp]Xdb-iZڑ<9Y8JQ1pDSMacōF>+}AxTHyؕvvP>:@X9"O*ߍWS0~~ғ`GHuys [D'Gxt EU D<?A/#w-OMQA o4xnuE`R3^ab ڭuRig#Foi:,,Dکcuᴸ@{,ǻb<:{1qr=03qEtp@guD,6eݷF|)=XSwԅ*K[NBL2g_ i+h={qd0 G+*>QԖs#@C7 6DmNC,;o* 5)yynS쑙Ds"xxo [Ȯjc{קlP f_&K>"@ZVyo"БbT=.ni!zJdKwߎ">;- Ytw=#UFⱐ<<{5<<y3]?*^'~?ncejkLxAW2@77L?rGBaǡގ#ԩ'y;7K|g-dm]sn}tU% ()XI+CFJ)a%_Q?go2U%ݨ^M0vb> O^j6~+r7 ^׈v*ٞ:վշxR/T>T䰷^L&3LR*@GtA,B@0aXje2>U}cqS&/ڵ,'%LL &yp]H15hf{4dF|!}llͭ:X:3X%L.?fYKz{8w1 Д6Ţ5Ro!|3I! oAka+!Pj <}`\p] (lӁ0[bcKl/ljӫs.6sB(ĝH)v0 +}"`~!h#r+': T&H!t\P"@\KVVۮa"D0/t(1 o1IE9*Dc_gXWa_͞ﶮjgxA6 o+]k MDk,@|` uCoRg ٚK KbgoS'D|lJ)IJ139L(=(*S$SOxΑ_^3@T@;xi{} Aٰr;۽Nz>*7!xCWJM.F`` Nqiq>& vn\@"bWe;%qdh]HGMғB:Gx,J:'$7{y0}noY |p{ocK C -ЎZؓf<,SK#4B6Vl^['Фe~8qfP(A#,Fv$7Q]@؊Y^v47;R P64A$D~{h,5*:F=u$GEҿ:6]Qgq]lDW` ܳ#I/ܵ_~k L<{; T"›Lq8DWva {8y| [ek*=p֠Pl_>>9;[/j e5My)$Ix4{+6 1CUuwM~1Җ'O!% I2Q>gyL|?* Hn)n= A?iuc݃Ya,T.b3+{y/=ĢBi##V;z`} *Rz@$QbaĐv=d!/=?5_'2'pPwȭtXcwOt裡IA>{+dnoދ\ fPډ4m~C ו6巇$><|Qyojx -a}: f*T1ү?O"H40n5($8 +#B&p':p]*H'Mv5 ދڢ0d4}T"Gk%# ǵb;/9%8Jމ:nN:qRjiszdM'qc5٘v> xtʦ<)D8;W;EYb'$Tn!S9x/tf&@W+d1}:8#H^]xNvjۥ]Χvq\]kM)r )(=!("V(BgIn0 [x-žվ`7#e2%ݏ3hԞ(ZV$NkxSp-"Qꅡ0j¨ &-{(\Zݫ0a%J;$dޛ>br"dT$H%|t+֧q}Hy遼+/^ίa&,XކvC#(Kf y2ӘD$Y0GY4j>w4; >CqʲU6~p'|`9|pеolZكa1t/bh7d|tM!]ynbT!M{U^?5j?7?Onj_`B숥+xqi1ATڋ?"|6!R`Is+EW%{o{˶'ע>>f\ Gv1[`Q6~CJKJF!6 y^<'zKz9ɫ}-ť0=-i@/,zEqW@+a }V.++AlGvLž>2|-aY1tFFO.B(ƨᩤFrMogsntJ [ؖ/ lnk"5<d<_5|KZUC xZĿ%ó`*yJsb߈N੭VV^~uKA5~KZ4e$2l~+fegQ*)sJ>>渎-9cSLx$@^E#AD7#sWKz m] 殗n\ׯ jx@wI|%@)F>{ 8D },y& 6PxEC ]Fjb# DwIrGd;%(^ǹF7z6M&.Ax3'<<4g| xdspai1$$pxax{/xSqKXMz,*) ݪf+EOgsM&X4/>:"=b ضg_$@"e `/=}8_5jI$CJ?Eky[3'Dz-!{9zx-}+Z3AN&<Ȍ^|CmKHL4bxH཈"fL\&В7 `I"0$i&L3 `ILf40ʷ7e4IENDB`pybik-3.0/data/ui/thumbnails/Brick-4x1x1.png0000644000175000017500000000641213137372555020775 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+ IDATxYpSZXjŻl[`)`h0];^hm3 -$PBRPwI!l&$}CdܦifiOյ,ْ02?t<×>77`1,bX `1,bX `1,bX `1,bX `1,O?k0NݼٴA W߀G&%:028pȶ6i _)hʀNa%0<؋G(ua8d| rzt0<ck&~M>:0m9b3 Ȱ@^n'k~dzVcv t\> ZӍݭQ0 Ix*jJ2l}2-:*ᩚ~#,2E/efuY-l>ޅ0cZm4T9̷dϥFoGoUvhB,)p_拫D_Ds'Z'V|çstr}f2rLG~AḐ_F_FRNNKjЛ\)6 <(7f*O!W OߋH>FF\G(()0mo_)CO T0ep:zEuejaIj qḩ1'H2WX~a}p8 RK ˽EK `4EEP:4W"j G;|ZI4 $0y 7te&VvB}W 2#څj~1ḑ 1ܸqЊ㵠 ï<% @<ʐVK, 1 !،W훦QT'F߈Ǽi°aÐh C "Uj:F,3b"QyߎQgd~DW":0D6h% @ U.m:@ PhǓ"JT j‰pżq4 "H^XtӲ9cP oK cAu5w=-RåyZ* YYY+`z Qƾ;u/Gc2p0iBxR* @J(4A`GI &1/4)G1/U4[ƥh~n+jX_6ghw,0\uv}]]\c02tUQ&ep40Bqqf<+6fwa~^ å?/\YG0P^yaqܗHۉ4pu<=IJm`_2 @ǰhnlwk!\o'p\ yynaH_~et$mTǠ @UDl|ޜqp%aqR Б09)~I_hѥ,) '&՛SJYD`ETX@mC0/Xg+j &Lɓ' 10ahיO}I%16c }fSUC hǫݨ2.I kD `h5b ,++0owX,€v'qжl#PH YbF4E^0c^0;L*qhiI7![49u5b.M 5ß[u|~:Y򪪠oH  >KeQIIcii)L>]$h$]-~1VIRK %J?W'c|S#z-$uPfJ"_E̘1CG(>K`/sRdtu0>!ibbͺ88UR9AB :0(/ꕼ`r)KJ*ݱ.FFG Yw:|x*x ppl 1]ZI$F9B\ Y,)aԩJL ЀfEqf~]_}X\/n_0lվ4;t,%a V:Dyf + Xw%],'}̇{`rU8*U=ˤG Я&(Wve`{T 4PYY)£R2t\6lYi,  \ fbep //Om]zuZbf c<(8}Ƚ٨Uң'>\uWvȹL;/H Gc{;&N 0O3DX);4H% ܾ;8)6){ Ɣ!No(] @=q$LtǓNa˄~<`Kח M!gH;U\OKIGͯP3KGZ 5vwdu`cC)IzYg*ȓ>8qpRO:7)nm:Ep}VظܪpHGA ɀ@; uܿNv?'ݿ9)#m:cF'|N??#}&nL+~t* Iٴ{>q^FOS"x'k{],8Pp%3MCAC꫃@Iiaψp(/ `1,bX `1,bX `1,bX `1,bX `1,VL=2 IENDB`pybik-3.0/data/ui/thumbnails/Brick-5x1x3.png0000644000175000017500000001246213137372557021004 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+IDATx]ktTU {oݪJ*ȣ*@(+&A#"Ay(D#vbmElMè3:33NV۸z֞5Nws[TRBR ǷSgιoߒq醜I9 2$dHȐ! C@$ I2$dHȐ! C@$ I2$dHȐ! C@$ I2$dHȐ! C@$ I1hKE0MOc{tHT33t^a.?u]8NS%2^hiܨc;?ZH2uLaug'|e'~bAR ::$Rcŭnyu WY_K ~aA30R̫ wjVx,ng [ AM7sŭ A SCK )z*X=N?BdPtɐilEXv}2v2ԁ%Wb882|Wٮ1zl;~].NÂf(L^Z-DG| dd7KyN-1J/Ɓ5[S8HShuAdNZm+9}h@Q\40eޜ (mN.0jۣGtk*q &DC<$gN|"~J {)RB!ssշ"g#b=F#6vH #А^&24Ϩ,''}k^' ^}xazoDOR Cr*0!@)g͛dH2}*dØ IK4'77|f*n/NƁ\gN#ETH>d{idذ" Eq=ϡdí$-ApXc~&j9c0y9IGTt#4V\?"2#2Z:m ªf"ƍ%0<|V=9Єg,R2tTD2 w 2@7j=f\_( /s1P1ä@~׳53Bl ؂\ѕwR0k)Ep1]y N8j >V-G0.2X'Nu<$0y5a?=< ȰpQr`  !&*O@}e(]yYVQ@9n~fc9~N8A y[ :V=Igtڥv wD4egFcMߘCDt*ALe(TZD18x|>t}BA@As*'vIﱈɱbe M0o0YW9&yT"W2x4lʉPPP}DMuQ RSHzcaiuv-R5!f˦Jsb/G?!!Vٿ$6Ya:L0k5Cy@zOkBJ)o=i } ?@DJzvU(e0uNUHskF=|4Sc7(=xhRj)%䊝BW@Ro xMO5Ȇ[z4EEE/HSH?EBE\/$">yHm^N4>[ +<_ZiE`NGYM Z%HjF8L!C@װLcUGș8DHk39@@CyLx$ Q=ܿ.jnNlٹsC}yV1CaG )>NI!lvy« \A$L:"/~A7{p-U_ֱp65B`ׅk()),͖TkJQ=\9Ac_vlH%X 5| *s/Q}<)n袾MZY_M~XVu:|V~(nszDur:D7XJKKy!\ x_a ?)f)eqǽT!GƼkUETa& yj0FqUZF# (7]?RJXr,Kv?)Xdޱ N66T!b 0G,ϷW2vL!rpжz31  LUؠs=[ WKt{mdr]e%dǏ=>rWE|2vV.ٛ@7&ܽboS*J~Oyc(J54yp x  YG\!9b 'P=X1078Rՙr:ԗI]U*ĝsߨ2Ba[?CiK 0ey|R S~<(xGS9g:|P-g]1yiGE)GƭMЗDH4e@]Gj"Kqn R^K+Mױ*xO x20t_ܭTܑ&V7/p0_}o%arpzJn0z bL㊁ V KUNlPq1u8b_j 6!wcMx='&%JAIe{Q/_Z?Y<䞟 Թ I2``\ ֪チ^[SDp dtHszT9p8۱q!N"S{hK?Ir<,,ugM<얅07%l<ʓ} UC% $ u1Wgj֐q*"O uԌ"oZCA+:=)XG8Bqe:&fi^'X?+(2ëI]}UaVe/z}I ncL}ٺq'_ϫtM|2d L"@Y"Pۣ(C4|Z?F]!UN5r>Vnߗ9RU!T掃IKMєp 7s(E<7ôh{_HS4Lx21tqU@mNq/N9-Q>N,U; Ò?*ٖþ"¹s7 yV-?^TJbM0Dq6V^*{;ftC2 Uh WGT~Mugz!#%y.11Z*/cH͐***m?KEd{v3 /65^!:p|('m@~$4tH(!wU%l#M#?]I>~ZSQ?U2AĽ‡֐*\p׋귁t 1ףsU@U:@ U[fl4p@6W\/ElcSS1dPU65A2@)(UT%cw\N+7S*Cv79{7{D׺K~SP~*hXH\)P *bSj&>8?aOHy}~^ޗ[n^E_8%߈pk2tqUhfedע@)g:GhID?Y:%lLpSf/?*b.R7j.ު Y׫}B$ ߱t$ΩJ8 T3:}N\Bp 2EʋTO#ܷh|C>`K/Hf<1pZAA yV<8: h ULT~Xv. M""7kg3?O*DGͷ]RŽUU?LPlT$RzaA/;om/"OO6jps ;J8}M.>*Ϊ h; D-=RU&2jDs)ȡ$EQWuO?7~К1|OXTaڵա.wyVw$ȓ<|Sj)"TVVrPJ(`]!86F!\)E̥*"8к |gǃ|`J>G^a5yE 1P!Pĭˍw {t$@^an7쯋Bc^/co ?CAD1^^8R= $ *"UY9*'6T8*6畠PkBe+:0&_2_`v4@ |G~y);Re%E+Ǯ fOG^U5*W~uw}nO`8TaaoU@WX{%$PBqw{A9($Hی%!0w$dHȐ! C@$ I2$dHHI! C@$ I2$dHȐ! C@$ I2$dHȐ! C@h@&ISwIENDB`pybik-3.0/data/ui/thumbnails/Brick-9x5x8.png0000644000175000017500000003215413137372612021011 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+4IDATx}yTյ3j;\=4̳< 2"͌#`P!gTPI0yF5 e%`ksoWou:{>"^4# H =H4# H =H4# H =H4# H =H4BnBde70yR,=rLJI1ZɈGiD;6b a2~\ydO xc&Xu0epMd) [@6/7нYM ͖N2*Hv|"Ŧ%cr}=:[u. $36MHdr-^OjUFu]w=d9bD${F 1В@'2Tz r/aT1tdT"#7<9k^;3hU7޿L?@O!ohNDjlgKweZhځG[赡 w4< 7ju'{!ǚ~QH b(;g L$'s] khWz$l6Cd,UJl~^=QwuD* jMZ՗0uD R{ḓD2&sIt< $7;(ܬ8ż7 =7?΋'>|(MO C>1t08Ԑ@eYb !cm}:@r+ܣb0t'29KO)hC`\9m3 I౐ߧ͠@gHƜ7xE4~5 ޟ iAB܆C"q#ħ)Bo17H &ZEH>7C3~ǒ3jֹ\;yîMkcL 6f{ͥdWS PӘJ.#Џ\<$dx5d?b>)j&`f(AVSyqi2u[(TT*f|z 5kEAX<n#n2lyT;UNЖ9ރ?A p^? 4r-v!1pwu3u6%Hc3Uc*v=bbCD<\s»<;i=C3 %45,lO|ٔ2B =nIu0PL@yC_/OO T*F+Tϛ? "JiѶˢ<Uha]faع`niݮ;Aq:FR@;.NnjL"Gq4Lf.?) TA65jaDh y0O<;ĵX/x=6>V (T74 M=3VghlR2I/xZK C(  Z\-p R͹aadӎQc:R5X:Ël6 j,%Gaz]{mEiyrn/rpqZO\T@E;?D-bH* F$ul4`hCV%;Jz GȈ%];v5@}4*)[JTPZƎYQA#!c;gq8Y@u#da2(vS[UEp`|He`^Og(!ޭ ^]i ٴPuEez- -8>#;i^ X\4<Na0:A?S12 w$h<P3X) $#3{5D$nt!>)}#(mr@tx56Abaj7ps (K.˭1߈†R1(l4}R=TQz%cdL©^ȶvJa_N !%O!י:Ue& f^wGŤab1)\2ny#6 :C}S1ga"kdJ{Nfۗ1H @+oa_rlVm 'j-)HT Q<CoTX p4)a z4:(+NESeazQvM!{@>U*TEL\DpoXΝ}5;@; ,)p"?H$7r0qXd qǽ= ńmr4.Hd_fp޶hm=ؗحW*f<g;h2A+0("x42]X2ëu'Rʴ.2;G2M]05,HJ'SKVªCij/MfVƿ^1jH] 4DO&Yj7LJkGd?B <@h'dyƨ~&3wŊYaWs dp}e"hI(8ϻFs}`K_Єٖ;?njZ&^{(vG/߁,fNFLw@́^ir4wH^+=\קLwT|u|BR HOnVHW%8O˧?im 'd(hM356>O 4YH@( ^ Ne;UI $1t,۬T_v\CB_>bPɃ>'Eol`n ,0 ) \RBmkѩ]˥ڸ(1Y}b`OSl+.4x/82Y|!eܷ_пZͫLC,:pFR]=dא!!<E9F^46yBdލn*At/XoXL>d-C PZE:n2BY2Y  mV;]!R)2(q }kqE7"e:8jJдSWg@ø[0oh/ԲeddzEb[coC䐀r{e`bx.e@L$-@K1),J atLC^o8'O3F62Y%.靟Bހ8Hc"WS/;k9sWa2 V!i4Rz.x蓤~Ԑxft4#r24YL$2J!£ߏ, k﹖Ϻ!ČFFWF$cRTN_TlGDŽ QP?!@W*P(jby 8^cpJ嚑3pR*UhK#avլM$pŤ=`dFUNq!wt/~% ѽ1ac}\tosYpȃ@bfYFY*8+3ɋtH nD{ IPe |Īa,X*=xM.: 5YqeIrs0%#BWZ._۲čG;X \Qop/bU7eO;yyB_\Y " εd62X$5e["lvWἌ!$ezn wUaF23ZS @?jש>Wp2 ;PU"x.P ӖḶ y{.X!D}r䩝6㑯_y7*e6({d26<Z|qH|n}_d 7F9:RJXKo,SYb`^N-rޞ)H0\Jw9HKh+r }e1)۴Dd2=:t5d*Ն :dlbxs nG"o>]ab%xes\T^--ߋqקG 7Dq͙by_6=$|ȝm6sCa-HF:i \C,%Vc\NI:=ɩ_=:vXƇw(Vy@N!Wh]3yC vߦH0Srنe˽Ysf CDwY_+V$ŖL'KAnohOX A^&f0tqނE"} ㍄cTOsi'W~>ˇ/^ܘ_9*ヲcKqpK|sWOVr1ϳkTu8Ha {-W@S oi'l LFWL PTiGFcbGU(-}IF+ Cݵ,"LPwrvPCΆx>2N)OP# |]O=A.M"Yâ# N!'z5,jp4:`gX#N*2tU\ȓe(%P'DPz@sFd %QzKyyJ lee/OEŭBDzDypn'Ew Xk_Odj(Bř抯g3 2!]5"b>(z`+X(IJ|x$Lm-` nq:){H%,hz1qN$B!23~`W )TU&268y#_">%>p_Ȍ(, ebx'SNpǒ0ea.ϿwO߱|Y?"4A20ɥ׸"H;,ͣv q]=J2}H1gP"{N ]RFCxzkc XsB2-)@. sXHQ"L"ǹGE$ߝF^Bw}D@.Md "[ cYi!O>7Db dCiC"΃ . "%xe$<Ưd\vXmSD{eW)Aֳ,,3ie;7''H=PDvds] }88;/`~}⽗s/"4k 7":NPca`N7O*kF+o8%axDQБ*S0 eVz(()eފ"j)@ݼuIW YQ%y~v ] ~?>. q S'+⡞gգwa8fTrqd{ U*iL^xyݳ;",}=nTCEYЀBuI>R jڹh|mKf} nF\?:|Yz@?1n}!6ZeŒhxlZNm\.:x,sLa9meGxz]+dNp]V }@u5!}W6ѹ PF^g;~F25ۧI!}-^#ŝ_'Rhv%7LnSd3GvplqzgIMS~k9=$W8W]?2D =:qz,Oi~gn8H)T…R%Zr'gRtzv rz[S h@sm C\ub ۸g?Rݱnܹ1.F7&ߢ̠UƵ~G֜/JQ,cؼi%ceStr24"KA҅"ltyYN%e_Oz+%ٳ2D3z g!+O,WnOE?K!">ܟ!g{sY]Hq~Y)Wv2 *+a-T:!É%fd0o-VtB3ұI#cy<@ke:BPOpB=( V&GHOwoop)b wb ;;s'y#'w;ڿ/luuw:|b9p3P꼖H%'5%KPɌH0+ב#* _l^K|YsJ7(#nt@x{QVjAX~Ù{9< ]MI E/;N@24DddjZQ8 dKq]8 BqenFH^8({yZj᳛2h=7ęgty t][D^9s (" @'ȗM lD*0,lZj[F-H\fe?q,:/@vmd7R(oDe n/.('N׮;?{9[ uiAtИ_$?IO(q@f@2Y>F뷟3W"ߝAR;{˂v68>gwȜBjhĆ^/J_mDժ12.Ώqs}P 5.|~Q֙z%y[2k+cj8@'1L#NQ?q,I%$FoxW8WPɉ#`XgS& I?iҎ氾nq[U&Rxpq|n1ٽOd 䧞͍H'Q!L=ڽ0}_1v(@N};i"X9\Rx'4F(J69Dj^\@cZbꨘ9:Y^ :7pX@Yu 9ή>;A|wbSOJ1R 8H}Fc*j7n SpRf80ޛ#zd$ KRlJ:X>ht ?Ge%:ekw[0$u@BOp40 N@˔%>.sA (_UqpvD$,Mcwܺ0*iA.׼xvkP'b^}ds9;qM֬˙O)B4+B탫/ϙ6}Ne3^_Ǽ@I|n+\8G)U 8/Yzh0}-5NW ~ﺋ U[U մklվ4.N[>ҋ@zH4# H =H4# 4<1IENDB`pybik-3.0/data/ui/thumbnails/Brick-9x1x1.png0000644000175000017500000000470413137372602020775 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+ vIDATx[lB󟙝{m`b;ذMSn  7;r nQ/ii.jICI9F.ҷȢEU߶Rpzx]Rص=|2x}o+| _ @ @ @ @ @ X "qBN:RD4!\Ǟ/غj΢׍ha`z4@ ]j>Co (4noI>"|nr5M'pM a:i :=K\?_̢Mͥpb~a!0Sp"̇42, 6rw 5Ϭ +++ TVEGu>SYE4褔 To9+tg)> AW9<~IC# RX+Ug04Vs<[57tEw{Л9u  dR9SiEEL"b<|^abC* };E;GTת`ĕ PvW3M63n؃H "A3sDx'K9="Df_[yZ`SDi0VݓȏXCqXO1Iv(O5݁LU}1 u'{w ޝ"ĴKE\N&bǢ3*C0F/x}dpp\hkpj"s82_CO׶@&ŸټD D|>Zc`྿[|M%"\_t3 $1c6^ů苦_wM)o=ʝ!rqev#dzI1Ս J` 6eom6Onrsyy,ZP-~GI, "(w o8cYՑUZfIf"U[i:{1L~L{hSt'UOaC5")^Q0""xx* :0-']*٪MhUcKFTh-)+r9rf!/M?Ͽg}LXK d4_轳 !o@wE+btW͙{r S7"$8T]gE8BQJmWg.%p@ @ @ @ @ @a/9peIENDB`pybik-3.0/data/ui/thumbnails/Brick-7x4x6.png0000644000175000017500000002743513137372567021023 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+.IDATx}wTUXʩsu"4IBC(A@i2 ƱŜ " dPGt~wξ{έU]n,~ꆺsy9/+/ه@!dYdGّ@vdYdGّ@vdYdGّ@vdYdGّ@vdF׭|l@ߺc==^"vYD y=1:p/Lˀ-4յ\VdVHq;FȨɢhDpu2ui Q1 jpd>OIYi=0cD,n9*fkCOB?C},ͪb]ua چaqlq$8!@QJ4f(bzb)#%::h.^/' !&qZ3\t#a C ֎BV5Pvcc %DC ^w,[*)~$F`t^Le)o8@5G=_EE#Rb6Q{{.L5yFD3qT֩Y |[Άw3xHaJC}*= ; -PyD ΏVxDP 8u 49?s 1OZ7ugmoU)Bx}h}`BܞV'kc]-fN {e]eپ) RdJB%NUK紋p:C+!s?9c?޾$3x?Ϯ M|<{ dUG{v)l{$.A囹XuNG~PI~}>2>c]@1 ubhNHxL`XNm61k?[hnEWfڼA7K˕ͱ: <T䅚y^+Jq,R4"xdrXE=L;j2~a4H|C4V SEXi?It0 jŖʣ9,$ N,g G X|#_ XWH]ʇQ`;A|#sE:1Yz0}7\.A |  (0 (F#\o/w:ҽu:DDWȋK1PVc#91>7&[(7e÷zԷZ$"T JʴL_ ʈ/H(^ľ:f ϐ  0T;Suc^6ۯ!7lQ@=' h U>2bK*%?Q*C=&_!HD;yڳ1!qPޣ2B:j 3zp;;,sqPr#y5'G <Z[/0WLY*Ad*$}r ">Cm((]ȹ${>ښFW.z#"Nf|FszCK+ ˆco{#T<}‡)Д/gh|e|`{w < =Bi x8]E `t#f@ݘ9!gtjɟ% .ID V"kt%g4k|<͜ϏTNkv"`D0~ȣtw0H#!~U gj|5Bb0|n2> mgsY/_JACb]|cCU]Q85hU8FCYe|} F UI̯\Nf 0;L8衮@ïy@ vۛ枷=xKBQҵ*^wwdϤΨw EY!E%6;r;wo1t^q"&056@Љ[B>qDw3W2r1FrsE;!` d[x",TL5C}#f: +#웪f80ު+ ]d Rz] U E.c=lC?u_̟٘#tEy9XL0rMcMm5*9VV;I\y~^^M`V`d\C7fxĆGgw *7( QMk3V> h- Ì'Б4[gV~N*0!- L!"DwT~0߮8=B/\szߏ#A ,4z#M!QDT`@g ^8)>QlsxVB~*%_U2ps֤]+ Xj.b pϏ,f@s "ik0>:wX;eg.FSqAd"BaphΤ- ppC^Q_y&=!E{-O Q_*V/ 8:9`hvݭ0b;& IF20*C3R8P \>!'X?Fdܩ +LY:<nT5T7")&J3\vULQߔUth @n(*~Dl*,(lQ`ʯ̖/ G%!$śF91[n Fd$<6"afb<DZ7*KhVB㹑S%AϽ}vfzN|_%]#`>1OKdHB_o#1o{"]}/P4 b#D\HbA)(BYA QRÕ*Be:{_dx){e܍X1 aZk>v)Re˜5,!@(W7y0c˚[z5~qlU#- lGK@7DW \ ׼*ctϔ pH.4r6jc"a* Ǡ`; cŚW30{G%Q7\D@q%MW)uEéN@@d2XwpѩW}@.!qX:#Zgc}5W䅬< FO_i~0BCuGnaFH؋U#7BEď7;tk2}S-@9ߤ5.,EF9Y!_O?*ނPGbF|DzXL(ZD旱?UI0`qA! G 3 P:ύaZ߼Sے?>Kz0G@v62o'AJD/(ٰOx@M|5sH^# ]"eQ{O3* #rAԊɯ_nU`2l>g7\Erh8BQDW 'NA#vZ!d[bSboWX?lZh{Ʊh 7G3)p%,g2z_J|YlP'?V.52 T=)JHzL52MCHAЙ%|!QCy=gۣ](vpl2`U_m)l4E؈P* pH{;.d=1GP^ BCE <8 ]}xmX8A4\5T_+d|" Yg .# PZaV\"χo@t 4K&t^=Hg)bS) Cu "}cUHejc*ca̱#">c+}aQ@։M\v}9Ē.!!bЂv N0Lg_ $޳l=qC& UOGװŒf"X:G7҄o(ZG1u1C2/JDN*zuI s)C>/=#HBuV_]!qo{Rf˙- G1$?G.D &#=mI 0"\ѿWLb]!{@ ?M^7@x/~@8&0ĥB߾Rӷ XsKX2## D Ĩ4z-@!bdJŠSZ2\*u|g,N+֤,`EG'Kbf =a 'xFA!N:+{$Чzg;qF;1`e6߮q¼^8&C/_,=tBAXvRxYxDꯥ5o D0:"@Bon"dmDb1.%a%Sz@rF}`֍n Tc'z ,nr! :Gq\VpUzR8j~ 3 "C"8=,*|OLw[l\D/#$P!=+;R$.tOv7&8^dn 5 N'/Eq6, GIS8gqlFd;'X rC|k!pv.QĻ"5Ywg J. 9bڰ?A~p],5NGv;ܫ]t۾4dH61ԽՑUyj"(ŝ uqG .8>5\|270yh?>PTbZmb\؇Cu1wRnN!v<Jf:f|vGDrX6%fuF[B]|I1GbugtXN*Cb\_#KaI261e6YE3gP|x3s:5'ش1E# eQ BNTB2UM]d#b8'p=[x-1>1hhgiN(oyd>ˆ3qc(dLb1 !e\_]dE# 6û:M QA \ƍQCn!/pPĀQbO,.hX3DEbѵs]8j6]|PРMtP<uFE#yD*xF*q !5]kr?%֔Z!cmN%9.vᜰ+>`0קbp֢m_d;xE߮vP( MF#uS!ђ?+sR}#VXդ ˤ < ]I]hfJǬ:xf@_G d0&I&s6_ 啡&rb>>f78u$(+x:},We!V/FO67m)6qք_gEX`_G]_'b5$*'V@)jܫ@Hv;'T9_/s(`/>oE'^[ ˥^*<BC@-11t:5г x-M^7W/ēc GX4 s0}6;d`tzD)bf=^N RmKO;9 Nt^׿K_?~3Ot&ߣMO*{ =0kmoUUkI hA)bce2Tϵ4b †hFFjQJkNV'1y9ۥqhpj3; 쭉UOy>qLxx;$~j&{{/.< ʭwնOnᠪw8ۀfZbLpg8{G"Q ށ=<+`~@8rrFt2q.#UBF Sag3Ċ.S;r}r(s1{߉0~KbȈkg@,cF,ʊ!6[Oe%o6eD/93 Q bb!+ P]PWkj$`C7(Ip׍g=4gp@0=P0v 8L#4V)0+8/!9^Ϸ)atʕ?!60}|j~ݚQh 7~l6qS\!Wg[ kp"4zE݃ H&L摀g+ňFUυ-IW&m/iB)wFw1r^'u,tq|K^n$k=ֵOrPSUg0+D::~2+(0gGl~~Kraaƞ6^҆h@E!R̗di$wP3%^.,SZTv =mǣ޹hD~}2%N"8Ti3q+l.U4J(x.Ml͓[rӂa# jGP}©YxO_g@`wGN{xG кZ{ @Q!pvB7F)3$y֐ٸq#[QPedtU%ޗ o%?`/T-%r@L7" DZD&rsޤȨZ.a pHYs+.IDATx]y|T>Z{$3dH\PdYd";j[%jEEQ ("FEK)V}im]^=߽s3 X2s{s{7q0NQxBQ@aPFQ@aPFQ@aPFQ@oB>㝄 ÇTk4q-9z^+$z AW۫S!h?4ֺk蘺Q f.*3޶;mks sp[Yޙ៥cj}3>N͝*Z mѤ>n4ԌF\E-L`쥿c)T-2Pdo,^@=a% gy h!&nsVp9Tm $aE1t:EѬ4s:3>j:&J E^}!v 9des3fv}{ G?硢n z-ϐ7qFt Í "ѿam:i #D ` p2hG~r|>*~CEg0B\5dJ0bP"z H賝Yb X\964NنF`@ x)뮴eߦwQed];Pg1&8w> yTMjz͊Xp >~ 阯ҵɀܝ X/&x"N! fk!ea!^)8|I2~f"{`Tv1I3ث:UY.zT8WoUn9\|1iFg:'}H3iG|..C| AM+-ঐm'PmUF/h><g;<@`@~"n8oR17p0 哲q8` `9{=v˾dӳ^%r90>;EJklt^e8xl 8Pѥƿ曛ҭ37ۗVFMJ0UBg;02E1]N⼍T*~i z>*P7(G(0} Ag(f-(\K`{%l?. _c=ǡ$./Vo50f6E`*[:1ұ|ui!۬fMUdЃ\| 0Y1"di6q(A!R0];B`N_*0];d!a\D`GL(4gŘ9SH } xq2<ڐ*]g_= ʿ<0<.K 0t#P'S,2>'HYl|^Xk2>ͷ2A2}^HѨqb~To܁w)}նS|d0;nV/!k،xP5 0 X C]eJt J6wpky::#b4ѱ2<_IYtW.dn9T/%#VeWO< M*OKWze0x%_l~*GA 6MEpHUA0Ԩ< ;&E Lg4qNQ\JB Ws3JFeVwoO-@_Rh1 (W*"U*S q}[`oi ӕg"o_gU7/a0";13Ƿh%ӽei{/PG-/..#;UHJ*2[ 'AUWID0ѱ0EYr=A%Y[J.v*hr?Sxs1X/gI</0V\uuCa R E4I:JKPp&X\3\ԫ{YY3Φ1gpΦ{)0yeYPྪHؑ.1bt4y!!>Bx'XQ` "G`HjeJ24|V̥ 0r`@Pb^*$3?[n 9MrHP@-+mL:Cn*e lV|!rdO?7HSȢ {<@#U|]_Hvy=1VQ?Y_}|A#s#>1އ䌔 ǙE!Xϗ/.-\}L:g@4Qyok穔*q5! R~͝ !6Lnj3l0g2A ^)8P@a r BO*k'T/MN —q| ykhLʵ\O|\dUIǂ/L"OR EPt^ChdLbGc4V*^H&r l:w5?}B|q~mnAKx(OǥWGL-u%:;, FG!g@`wxp/ܓW~9y!T3_8UoN-_p4ýD@K\*{ /C敕3=b]rr~~Ocx&']RҚ:AH~U)y>1Dtnj2>,4241N]$#!d.[ɡYdf- g}\̝{1r1jSv F1.߽Y&wmg>~™[OpdU f"XhRF08xNV&q,RE ( Wy0|t!GQ&W`쾨HTPV1Y N(0\n×$;oKpOB|Z)]j 1g|I jb@C(,/vKffi `1ȣR#sf/չzH ٲU5  U/@ת u%}y|u)6dup>`Yc0Cή{c,K÷Dk/mhH?~1!S[{ w<)]JjfeRIS:8fEBJa*D< i_`9*CJc@d0aduA!~Z˻|7*f#o-"n\h| Ed2[@/- {fP(DzΡkK9_Zh*e9_*rIce8&ʔS^a^a-̩R|/)"Z⁛/?FDuR,X$BL "̆=~tųan e!kiE%W}V@0RwAPDq`鮡Tj61܋"}^"sHL|J `g x*(:kwF_z)O`ZT0B@`t SJ9Wc]oPӢi4FPAd!:+4N&<",7Fkl,"9+ިߐ3Y|߸6„'/X1¹.a :O0 ڙQݓepa(l=, HrX ҹ"euyܺ(L.raǢQݱ  "A#`v_NDgMٌG1ܧhzXLe# |X>#U 5^s R`S-_:$=)bө:v~l@f7XfxOHrwCnU9 Fd͝<#;fQ g^C\Waf,No'6 Neظe]@Q9Sj7Ҡ)6ي~,d@C  )^ A>K4߫\#w3kyƐO I B=$0>^❆'huyL둝<3͚@tq4pL Xpp@@ӳn8Dg0bٳ."_oE8 b ma{|eu j&(vWP"+fĞD  }G1=qw)m Ocq*0$Wҗ# OP\aL!`xs*q,/^\^[DN6&Yg 8)<}W[1>y#i@"y&UPIJ~B`9->z..E.x/Py}4ЀɍWg]WQ5KeCİD T=;qH[Xl_,ia{sd2Ə{2o^km Qo18~kAQK`¿+0vvF=DV sڋAr/}Zbp- S?b7R>N4~t˛q8.Dt˨MX;SS:r:?,M^߷ж_ <.}e`_Z+gy Kpm3hF6A RAWXgf#Ͼ 7J]1?:J 'b// ga]:+/eWJD"`py= (:/S>9 ,SduzhvWdN><@6C Z ^Vz+0;I/*21N"S;V0p/@oH/9X"LF~sqGvEPyIpwxo e,?8<7~7zx+@';N >䊫]@ȝJdQz@VH85`B^[f.J_CX1EV $yLDڼwxƅ>qP?J?Q^?+ah4 (5@W + cnᮖ9|AAY<0Y[&Ӻ,wt].FՊz c}X=I?VX_l.yt2 8~; SZbaf= C(7Q c#)<޴:3w[%3 2˿n^i7ʷPkWK@JA2,= EW&7E>ܬGBd`$V|#TA& P|CW9*cV֮2K.R{ـ5B%qr$YB6sݚ="0Fqnc=qP&qJk2s[=Cb OoH_S}":m \kB  տQ%K. 0H&| r%aOfKVr!+Lmah`U0TB AY@oZF5N ٺO_ռMQ1,C%Ig!pf?G]\sǷʤnp~~#7Q14yk#8R?"_յ//}<,ۨ3sz i@ER^f.E8t+ĥdU"Dj 3:g5wO=}@?Gea(O0S7= !p頝4DVW=tlz pqH l[X0[j5x!L< r+-w΂` A_X~{Ӕ %e[ rG reQŽ7oo1E!9@Awol_)+&˱ٗ3T?Rd:yi 5 b ˯rȠOkOMHymRZL`q%C;?o +iInzcaOs'#F,oq*vgR1TJƃ( #.)PQdu фH*\!/LMyiYFOrwO৯ry[=w,#'^ /M"1RџWH9XG`"iŠTo}yX?dk5Ȳ I܀ ܴ3WQ G6fY%-\XT|+gĪ^(7]_ak~BotO $$4b"k ,!HS^9:H {%Ct˩X.)@J;bP; }kNlxS"RB{!QŮ{֦,}?n{ [zjtַpP i.Ҭr2$BK d7Suٲzpyɢ ^CIzs;lcߧa pHYs+!!IDATx]itUU-s7佗y# dN4$j ΖFAdI ,J,juTת{b+}{{O<,E`K,Xb X%,`K,Xb X%,`K,Xb X%,`K,Xbe{ӛ Gڎ}QQe){l8gS =n[k4%+ =œuLH?KWȕ5vk|]}fOU5c W(hɃJJ&;#Pr<4(ʯϏ w;{Æ4~ +ReͅU_)b@sRtly<!j3TkX/[L)Zt 1 `mOʧ?D:)M A.vy׈kA)Ƿ |'\.(z \!bbRǜ1Z WLG$b{PVeξ^t~ `8#sLxf?}O U:A;W?J ^ʡ.ۄ|?Tuzn[fq # ax *i'<ҧpnsъ.C($`xS@@xr|b#M< akWʿ9`8Ì"n߿v_swʸt,LJPʓPx6Ϥa MyOnA)I'0Tb\wCLf#۟Yy`0ъۡT'+)/ROs.vc29~q0աR۝BC.MKHQuZCS*(HxL=+̀b v4QN gE7onjN/6 Xc̖$$x6|FP Тebr m,.vrEwZ.C':DqFT`S7]s̽Io=-|"0`x* zA i脼6&ʾ"T2Y)tkU7@Gc<Gv%G"an >`(CiT-~g.-UP./Hiǩ|6` #6-Uʯ50ʳ k xۻߦrERE^T[Q QN(2!.XŀJnPσb6)iĿq^aN^#>̻Jr_oa,\ y^k:d)Vw$ Dw2WAN\aP>-,K&aU<Jƹ"``Ű s.P*%B%q܇lwq, 0~5Iól2$>0s:'byū jVvL,2ML7.wd%[UQHs~;4!kdTS\dM \#Dz;xB>l6h `kJ eU8;^yIkuXf?KWN_2:59>Ѫy\jp;ɛVtqIƼ^E . $ I j!3ۼn"G:4qCJg Yg;yI&3$eU)Q 3Vv:_Ud\+=CR=It'T-$RK+;z^%dq˙$)<̓.-TcUqzMe!a Zu3K9 d<9eGAXqnZ2ڛ b0xiE&y5[?a-UBq*Vƴ3Wy7bAcpb(VfCiZCc&E>^^` O=7)oAa9-~ʍۑ歓% Lw!t:*9FK}fNais* 2Re 2͓O!.}4@%I-4D)^Mv, mwa=ޔEQ0cJ [@H‚5w"}~ ]Ǘ3f4QGLZfH7 Z2qJcw!2I &P^n %qFk?ٝõ >U6DU,"v96P Wmf:Db~Z$pvgI{d??9U * ݒ!3aY1> 0)Bh.| J-5I[)RoŘdBP*c?c/jqJ}ѴLΚB yZUsǚ9^M4DuIIx] Ϲ+4!Sѳ)Cbi2I^x=.V/򉯎扩c<;훔?v5$*zFtḦbVAΫ=RA($nL|PYT--4b) h3D4MO+L"6Bx=\6Q-BB$ >2 dWozM|c7J,({,h삍Pڹϩlnlq'7.~jBZY Xj'*ˇZ/)8 hوkQY7k] rYc`T0v3ʊ ȼ9w$.~u0WZĪZ8pNm1ǟHou:%#CLertC쑻pmR;z]1{DnS1&D!"p#nGbu/xϽCB(|B0tF T'D"ckxeZ-r[z?靖ȐʧTV:eC紙Y#rK Zn)I.(I|0$gU1f(^ ШnkRZά'`C@e,`"σQ191tϘ Fǖ$Y;BWg yŧ{sX|S#H͹+.P!IEU9kٳYϢȫ&H4od#ub- $lmH)Y9FPE3}1aS^S&TXO,Ð|=pk3:%~}2_|s`[l cd MdaaCQ|ULY]mX 3$l)Ef.1e"Zb(.nC'=6#wlO$3l=gHnר]H3P[*]^/?,Mݚ%.tn3ӊ@dOĵ*+\0Sh,l/≶!_MRCvhr]J|QCYbf0~[ SY=1|အ }A">.D}F u㧅qokjvم;,2WYi+o,&u.jjP! I2px|#pл^ {TO|ŮYHMS)X4/50(-n^K7A&=^!d#RA&T7woi /U/t[•gNŃC fl`}S99j]n^o uJsSTboz+:`kO{`c۠€McbH/MM`kbK{Wh!rѦsq^Xm`cuJNvd z^j }1䬡ԒGknDίs|?P-e*+bZhzD010+6w0Ń>.KMH`Up= d.@WQFp4^+_Yp$|o`q6]Y PhV&r'­/};KZi[YbO۾SoOl *\a>,m*{ܰ1*,Y;) f a+ sa%1Pc{7qU ZϵR U@g`~b,NTJ,3NpqU_kYrP쪀_H}G|~u< K 6xZ*8ҽ׸便ĖhTD+q(&U}vKn'*HhyBJuXSR W|-RX-/_BDy>_U<ٵ=-$%b}]*n?_lnjb:ҡ[V*uW-EUqDPѬ; yss9gzɓqpI?yfD/C^ \Vxtv<,U<5a,MiC̛tbQwxil/jն5A, G&C@\@oQ\art-^,paaX"TOZXM<.(C V,|p,_Y' ,T䎥oXsBƬ ^lVF-u ]?lj4⼞0%B  ~ <е'qX2zz޻60D<\ysiCګV htTVHK`z-_059 >\s.߿(Kg2şuey8;kq|-x*;@؅+2x,p,9c잃d7ОLt7bb{[8ޘnW%i\yMcdM+WllB!r/^Rl -ݴS3[EQ_Yƶa˫-\Gf(p:eG^a a*2ڒ%}3 :,\bxM cbxn}")3KpwX0Ӟ> w/1#X蛐(ldev-hֿ;!@쿪90mfSI."8#b3۲EW/@ {i Hd;ÃQig UxX@ff;I)tf/ke4JznK 7._sKz |VjaN,| x {5%|.wxWZܷ`K,Xbk,X` X%,`K,Xb X%,`'1\0׉IENDB`pybik-3.0/data/ui/thumbnails/Brick-8x3x3.png0000644000175000017500000001465113137372574021012 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+[IDATx]iՕϑ$*-ʎґfU@@EQdo@EDãI4c2D2 2d133ɓI̓'Ob3=~EU5ɤ3}E -]7Bqc}E+m!ùAm5b#:b߲,ں^a#+= ̙Xmw5?=A|t0=/50e2`Ln? wn~(\@ϸE$-bde 7qm1152| ;;gpA_c2,e / 亊mL'׋)bV틳 a;+!~|Ta)@8de9@O ^ag礈C$y{gqۘNg8 _Ut eL`V|c PK]rژS*KT f q;։ g(<%.xONwQmS }L75E"QO< B g{9c:P6?fܸ J<^ŸZ"Rgh2T` ~^AF:|3=( U|"{љp#TV*&t&g};0M9xJR?He.9ա2CnHj^ųHk9yĤQ|v;A$+ux8 u!}o U%Qddp: `o+{o2$ykEM4M8aQFZH1Wb>\&-Cgr%ae"d ?Q wcji@!\J&ұ˵R\†-}:䕕gw)ٻ0-q.ᱨx sl)>&| lv2N e=H6pp%@0& lHGL<, ep<sR]8l6-fFFn#Vk>G &cc̝9*4_뷗hj϶qOhOh.(<"-DF/`k  v-`Ů?:&5\I$-`w ,s;)2f8 Unazeu\Hȇ> nd_CEw9? cW2>4 v=C+ <}I!}+y&cl]}v?" *|߻ w:JR#op ԩͣN 4M`j-`* rg&nR.AY1#l&_$2dXzQ R]@{\IdX D.+oe%Xu4CP$6 K(QK0 ej&CNE?uA:0^/E( 7C}WQV Dm\fK|Q|=~05653$Tg!z꿵+\͠S l)`tqwH?eԫJGTc%{ŕD-*_hc~4l9ѧL e<bIg@mեXxᔀ-Wg7-a!u3jJ7SEHS(]FGQy /LhqU^(+0$5 39+.i8}H0Q[u_7@~E J@8yn F:U|4d>b*XfѫܞH$Jy^oPy5!]~y?l~j5ML Aey[i 2ivM" mvEՋn!749hXRDd-DA ET\P & G9 $u4ڀT*E؄~Rfo { G& w$莕Qscs_L !=i=.H[{[gjE\Cl!gGq! qm21 х ~ WX<)–=, u gm&LVm"51.&AH\?F_b"hjlZ6?Do<$TY]V{͌.zNr5Cj-YgP'qdSDFm+*FBf !c-I |BV f/HNnQ7!}4w~YM#sڶN9%x)p \&@Vm4WM8^RRt#uaE齕&0.q]P!sYuo$2}7Ҍ6?ݽ.J~A?&<ڥLw7ౝSݞL`A\Kwl +50WqZQTӘH 5>"<"Xe :"3ytK[\ >D̢n11a]Թsw%'FS+ *ɿtDSBR*!@4_ WQ"Uq!  w!ܪ@5?:CP?V uh0_\hQ# X JRp86":swj1{{ɪ,\+!JRNI[l{+`D},S[Zס_$LNI[ieI K\Z9QCzuu vT-+WTUu:7$ }Pc@I"DX~im~ur߹L΁t /{}ܦBO"(R%zJ!,T\w j/WQ$@{:?&eP[;2ײWP&T@RTECO }Zc\z$hHMⲯ~ Tc<.;ÈUj3~Zw4b =sszB% ?Q V(A*?OeO_0l *t*lhr!-\\] 5AD}8+C2wN^։rR\1p5`sɵ1iv᮳ G6}ukBE}6IGA`\ p=Jwh,W ggQck 8i&! C& L00a`! C& L00a`! C& L00a`! C&K/EXUIENDB`pybik-3.0/data/ui/thumbnails/Tower-2x1.png0000644000175000017500000001470613137372523020570 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+xIDATxy|eϕCJs;AM !r[0x jDԝqTDQ'rx ]gW&^gܝdGwuwvWW'J:U[>U{=#._A@_ttM@7ttM@7ttM@7ttM@7tRͶڵq=kf}]&X?]=yVCU v܋=g$V*t:;W-WS1+aAA~mljaD !+8-ƾJ@%ﰙ^?Ϟֵq[zyЈm];՟&aw Yr?ě7ddoԟkV|Q"BŬe*zBR?i%ڎSKsov;3)TPA0LTCEIʫ;Vzx6olQް`K!~%%{wWgd ;(T,-1+t'~m%%{BW`2W* ``6 !Bٗ(+ 1d&Iu:;QRL{zY =LYQ?ɞVguN3ۺZ4ٻ"JSEHגr#sv )b!߷A4 B|>JdiL+-^7^-0W)m%fesMX}a/ޙDė3v(pY{Iвkƴ4&2_P?M۹ͽ&t07n@1xWi 3QU!x}gQagyy9+--eyyyj0`x-0@{I|[|qLBk鸎&p,xSq72)2iR?VIudbUVV2`XHݿ#q^x,}!_D}$}OM}yTnd/LU q 0dffVUU***X~~>S2a ]wZ_9H$&ėK̬rk;oLr7,''r`XF'0Xz,6+WXɕw^ܵp !#~`A0# < 09\Gķ/Ii0;AjDy )KL4'' !bСy7Ң`X70=B^RT|EJƵw$E|ju7N YDw:UWW0D|9 ٵU!(`SX|x\,kݳ% ɧdo`xěD0ItVXXCDMM 4hC 7 ;QzD=gdh/' $UNGnW nJbذalԨQ 5 Ki3>WJaQ G,mJ~F1;Y;4M AX$ؐ!C<0j6tꊏs\N2~PN")5MI_Gcg#0,{ITx%0f6uTusa hY!>(_b+r#E] /рL vW$I ۇMc/ +`z't[{ÞT>\Mˮ$ ΢>Da!ݽp(%- *BpWqA C-;a0( Ԑq7&}yFL¤[M^ 1-AS'R C q+Mk`.L-&oJ%>k%[juUu:E?L+ӳ| W_F ]A.z `„ lĉa@~ TΡJ }a ~)[B 2=X|T+^-  $W 9M<ۈ#`@h=GC0pdwK|_*bu@8Oʋ )wχ pEIn8P[[˫)SS P\{c[d6dpwt[S_6GIu!A'{voR5 l6_g\s " ةCoBYHGHMo/{lHmnO}5 ]|`ȣdC-ز;v,khh`ӧO%(w0 \ *)tj:.FlQXl,_,^6|~=M*z)$Z6}&NإD8{l0`ٽç_Gvh ,R(w\C=G?~>'g?0Yvv6ߘB8w\6c L*az=fH~)ς{@@9U찡6F54R>Wh!q3D.~#&C-1L6͟? 4i}qiȫ>*e^ܨq.  03E'7EhX #q3۹ҿoqG8ϐٵ/W.\fΜAx] #sG*t8mplDջee`WA\XL)> 8{MWoO!;M`@h>Acc#py8r ÷݊^f:8/\e" @wBxrc!BlB% 'ⴐۺ1W)2xN8fc@0CQ+٫e{rnY2YR|Jw ;qN3T p;O[C !~;m}n5s_ޕq#sx ,ypak˼Ax2[" ^o;k?%XzG+URu$T?u"\Q>Csn۴>O X:#˼tv ] `qF 5-" +-fw`%apܹ&h`als $_Ѐ M!b,-C$K ]%>ܥR\=Bdʆq9HuC6h ̓Fbs=\WMr2DG6`m˯يJD- g{}?ήmH?w9J* \DXK!y̾^:d }!b8G+<C)M=H%oi-efwrc]7wO OF fa +4G'zrx@|+{ ZP_OX(k?^Q,/] mo8XO#ڲVx0 ^V#X*3@JtҼb| ] EtsircJᎿ{##,~]{Ǖq=|bCC+b8| -HW@ AUıw HH\' =yx\ˣd5@#W먜N^ Ið\?p`/B\zL^0_Ɏ[St|Ŀn}{~݊SHBCəP.140M aʡ[op/YٯR%/'>\Ea 84u3U`3/Q%C ; 'W6Zd>"q?n`{.l+Px0i^d, NN(iW{/{ؙD)0πBh?c 跟NgȚ# \s&;+`_|}=$bhuGvS7h u@͔(罹^}B+g+ 4PY1`XcZ0-rQT r%v]gP!Q.`W:ho0?ׄ$\(`̸<  ]W~&M7ضs&z$ )q.e9.Oqw$ViasA" FpU cq7ՔGL#\ #a=FdR$t.3/+@vf&+U;xC7 ;dߕG78XlF @ `{YL)sxf]lHZ@`JcvA92*;)q|' yѣW㾃7/Ozk>|>n&ʹ>(eH&DD^`6]Ϡh0B^Eo!A9U옕`Hc!e.%r0֥?9^8TE}m^%A2TV/J{f!m,W@Ix#yDܡ&o!WD?C% R{H}9Wg<ݾnۧ H)9/@ $ <*c\!H~&sތ_y7 a??b΀ c $SwD,,ߗ܍!l4gCJo0g~v)O63o>* !O9-hM!|` 0W`}9<&!%%BJd%tA@c lCЎx)AmĴeDq"%E +Z7ZRnpP|ص3\[7ζݏh !b[}r${ Su9 C98|7p|[LmvXv4(c/uߨXG@綜Ք+>Oñ*!>=y?-Qښ)umCuu S%1|=:% '}m@XԸ|Gp  $3A#y O&Z/"?c\Q3E?-5*)}kwm@iKfn& BiB`OE Kٖd}}l(vVSELqq1X'"&OaKKI'[yxu!1WA|}$">#ݾT~˚mZoȄ p4hU|4lǻ HL <㉝ x.\NX7C)Ko!c g)!œ'ޞ\F~w>`:ۛ):@ܢ&X0-'VHq}L@uxuT=K<9k>O|]g #w&wI2ںls3 o`v.I.<(ke!@R d6x( X;Wۘ>(<ttM@7ttA@7tt,VS4AIENDB`pybik-3.0/data/ui/thumbnails/Tower-10x9.png0000644000175000017500000004556313137372553020667 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+K%IDATx}gTU3k[9tuM& $$7`œfEE 00:c<μ3Ϲշntխ[Uwksι9|p70߄8|0ӇRqݫ./O{sW =yYkRq<8Rݑj9q${pmx\5{x !X(fx 4B`Jw U˔sN׾':`0.̹x}>1CY с7jԆ=zB!#;rÖ a_bo7|`XPEG#UٕX<>u>_8+DzhLG+բL+@v9n&+M&ߘE;ixGB5q";ߗKhSHc A 1C=ZeHlx!`7D60ux7o):| m&|31 cUgjʾ^!T1>0*C.yOtx部2 C)`&8>/Adž*ד;fY;7ū AD?}C[tɛVg~7сex7sPP{n0!yq.^oI s la|Чj`@87)O5}B3^ @Jj_GY\ڶkRߧC$w$y/IV]s@Gg]6 E&GQwי2 b^o3൅pR<8X4c%wkZ\l& FskHF61LI\cN_d¾dW!U" 0xOHk)9TNvPbAFn6hQi}+`^<]gUMdLBŮ޽yoR6H)7Jd]Kz;n")s8U̳awI@ȭsRߓh6UKgd0}Lfp0#.PƑ*,1U$(y@΃[ߌeшJoF[s#bmwfuA3 _!^*!>x72sR D &z$knM& L<q`KAU0=8P Q8v!#zK-΃_,f_j+&3_i\aC@ (ysl!3p+))AH 6}-jr~ώl>C)0Gj;2f%PnŽhWk߼Z~\]7Fi}MYPz"mT@|l 7$==H4~v9o#ȏAKgs8+_XQyyg@S1?mxϓp֒Q2Q[x̰<'>bYB5E8k_[^o)6gޮ֫~1um7Kd`tldN|5GdԻXg@iDۨ\\RA9SC9K;\@N7$Q="|燳8M zt"Gv:fT(K }3L5&a`AbRLPC=}i{"חzuY>| 甁lO0XdDͣjN<#׷KcQ{0Mt(Gy΃`COgFR`\}ϣ<ˀsGutIdeId7\콦<4vL+#,,yDԋ &xZFOKIΙ,/FCxM.$A;DWL8c*bNRxs+chsҗDw1S𴎦tvly@ڨ[(}.#mTG~ATkzǹ|fvsj+Q,+pB eKT*2'JAI'n\ǀ 9ӻ%0~AҤQ/Ⱦ Ezo %F 5G@ Iftb =#5y>#;RiFϜ<%j8(ӌ^154iʐe]xLr^gq,Q9oը)#B꽧KUpFvwP<5iKH%JOۊNXP U5Qbu ϻ `c`40S@{a2Ih!BsH@(7 9gy}FRޑeH2x>؝{g̎+QIF^ސk<Ǝv ^e}d߀! ý6|elG%6e[-݊%k_R9<{ ?UjN/6o|Hru J)< v!ڌmi>7u1`BC紐9tFHmy󹙷!z{UޟL^#5+({wT߮7X?Ԭq!bui1ej_Ӟ {l|6cLѬ˙c=$λT6Ҫ_'٦$n?D]9ZG6~ (7Hc9MPg!n,PrbSitIOTTюp&:0;<݂GSdrm9"DTEp;DF]O}2Z E-Bӏ+Ճצ'E hyVӡcjcSe3=|vn2vSf[ѝ-7~̀dvy֋hz8}-^9>X B3GX xK'vFc(a;3ƑF;p)`ƂD;u"!zy}*Q!gJU:Z>C+̍˖եU`ߞ W|9ݡ;^L㥏f9cF-'G6͈z]>#-RS^C+q3> uQڑPN0BƯ::{;SN t-!*ˆDTHĎ' cMH2߯Eh?W@ߙ?|zIh(.⺻3L3'Sk#V΄6 %?k30 ܴfj˴}9<&umLd|:Lz/O)Ag妛]2yʼ^Sa v x9?E/D!Axv\<*+UHXQ+gKfi^^e*rs_;M.e(7k  6S>[ Xz4eUs1x ]uͫי1qM^i4:s};P3\_l,[1܍p\"hfDi }NwE:= {(L ESJ9;F.=59޿tS_?.}γBU\WW/8CǦ$ox_HQَЌ/Ed(WTWP]n:p-\`h<F0`8Kr}fX-cUـsV%1Ѭ6_kR"okʽf(t1PT]q=q|-ovVH7 03 LRkΎ˿ {l8 |4>wʧ|IR:j=(l;l_:h+2K&Q7Ur.x^-1>qK[5*BժRS>TVΈ0 = /~`OEGxXߨx(s㳽7 MdM!}1ovS#hԕ˹p]9w?ZǤ%a5 j_$!垭 **`s^Kl|dRJ8U-DN@>1 <?Ԩ2?}Ǎewg+ݸ*n+ܯ6p>= 14<57:UUd"CVgIĐWܞ#javYFQYg WRe(ISe.FZ<L>ELjXD0$#YA<;hGԑ;!]L43 <13A|θHB:%F5t ծH7r"ǧ7 O<@'ygǵ̜OٱVvo*Qg Bծ5F{"Z>=sמPݠT)]/L,Efƫcu@b~.1SG(X1^b!+eٛXnv<'ݞegnPх$sJ=24afoqv,s~(u 5f|Ua-p} ;jiG/Tcs]R+gFE{duR= $`Zy/߿Q{64}gnpx0v&~Qt|RfHFOG=!\6תѢAxp#J%d\*ukÞs1~tU£,n gs&0F"Ymi{4 0)KQrK8*Iy՝&s%-97EUnzƔ??OW_^ZY&!Tx K"sXLg2Jڀ m$0Ǟl?OHioL\4 W;y13;`-rRK·]4ZtFh*{l4@$/6W2}6mkI2_s\HoNl _G p Z%q Ef?JfFEê -^[M_xկwU1+&^~M?\]bϗ 8ƣTTjӪ :9+/XP? TSx2a@g_` *EQ4ggi<0 'v !s47_ǹs' C y6xD,_|G %nN0uUW06b"kG^<a9c+{{\:~Yk 2 RQhZ_hpz8JɦtIh?RzLF+%K.;ȼ\Z :1!=In;?J@*i P{\Uu1k[E4`J_1KAzRhI(O5Z@&$E {kg;:ւADG v:١yw2)ƛO=Ra5u ,{ό4Ơ[Pל2wG՟\)č΋BP/xܓCSxBϕ^ @ꓗըzֹ@B ]JA) mt(sSHI1CH@$M9A u UWC |j7v>ۆE"bEanՈBlrf =mcN ilX:O;)>;_p4qg1ީ_]4ΛIR𓷤 8%comn8X虘kL`<:^w f_+!?50?.jO5PdPaϑEFI8?1C7:Et dlY il;QZzb{\x#]s]D~OZ(pr%>uYZa_VvaR=tmJ]8j}2*;<WRf.`'ӝ0F+|({ΡEn:AkN yT/@Pš`Y@:*T_\FbDSt ;c !J5 Rjuֱ-*}OpN<ꕆwSk|Y,ϪYԚcwK5Y9ƒM\Y}^l3="ɆHu:"0X徴D $EbD,KRDtl )d ֚7h.3GH?7!:W'GzR_bQgFTPxL+gFy{ 9JUYWP'z蓡gJE'`XQ pN; _9w#.鲔!l3S @)"-dA`<9=ƒfR?ޤ#L&p3T).z/%ޔi|6<^*j@puGRx>\<>Dȟ4<$|I;|43Ƃȷ_T"5Mj-ˊ`) e3@vęO^ݿ@[Or5;5<4Ҡo lm Щ" M!Gfr>^!f DGXUIFdht|`6 I1$H Y5ǺҎ^gKe떟k˽fl(VUwH \kS)mORHW`2JC"u͟^(Fi!១\Brjᙑ!]P7zW<8T ެ DFĔ=E#ړ ^Y*0`;@x=i8Vk-4@QԊQ1>{Wg|P Qar9uESt}"DO_)WB[)2 ̪`˺"D,6lQr'u|91,D uO#YĎ`$(A$Q5@vtl' QTአ 5/@1e'g[Ws%{41p΋ ?{|$б<|; sb-Ndie`߱g؃!ߔ"w_o d/ÐS> BS-LL7aPd 'šPa@D$ Nӌ)=`~1AO7EQFdEy0XfE/$gꪄc&}G"?S5AK{L THeBy7"32G@[( O?v0W}M7)93ma+dQGenP4x};9:y3u6|Ja(YNCnHG!2P_&V"(CK!= m6(p`wdM Sa뗢CԨ~\U (^Znki $1)Q1rM*qtw3XY%`x拳i,d M9B@/o*-fXMG/ؒ 2o1BAtg&}<ۺ{ [G"3ܳw'_Y@7 dzEBmXd^^zޯ s-`N)XsDf HC>gh܌vW{r#+_1R"J PZSAv E<>2"">Jή4Zy `1 zdLE 4Hݦ=Q>:8>O߄0myr-7Z(ϧe" B87$"Td7{ CIdRq=\ϨJZ)"~U`t  ɜ/5tG P:EHn6ߨ_fA~h㱑}QisO׀]!d){#gy(D3Ȧ_rKM!QhR۠$_6,^!,Wu[a=$J#k%/X1HT #" ec's;'G/og"4"p\ujd\% 7~7oxOdɔ$ Ѐ79AgKEe1JTl9L+ic@#AȌ W(K% 94B(}y@B #x(٣G,r= p͎ u69^t/6ܛ{%tD |ɫj/@n ɘW  P T7j2 d^!l q,'Sh:RCFadcpfi٘UB\_. =z#C~ c#L1z4~lHxCȼRvOuCS1;^Xpw*X ˗Ĥ`R?~Xއ%!y)<ؗ,:9ڔnءJ* . Lx12Vi Z~yx${ dRR0c\((M@QE"2nsٙuax.}8?QKNKOƿ>qxLƼ+T=9{n5~Zu8Y1lC. w]TZ/ImdKƼ*w!vz}on;t/,gUT F)Ix,\FXSEV|EcQ]deT^\ i]]9+*hd:`|da=yU\,QIà  m$xM$bny2v/9ۼ H-,cfݛQ,\YURe 3)$@jJX}.9sc2|~I5X;sAAm ɞOt[xŖ/;+FP?V,s$$Y߽{:iuHYS$vF8yk{DZ(˝SǒR:#ŧ+YKHZL=2*Z[ER <>KG¸(RNYcԈ,b;(Mc}-wR~ˋF/d)73Mxm0C&hQi`¶Z**fedEe_ Vk _1֛ -]+m08+i 0h6+jL޶+d -@FS\6$cTR>W2̳ :=}in@e`]OkjQV׾JUZҸeI^HCl>(-a mW7W s.[ (X 051o~ PVD{|]UYSHS~ e/-@O!#R(Ez&G{s@FRvۑ7^Vg[ʆ,Bؗ.EoTg[ġ7m, k|I}.fYo[_sYנ|\ݐaMj(e@{tE$;iCmN L,J"99Vj $<\gLfs'upO5clj y1~R󯇧1+s{*Ȗ~^~RWx0fp۽l2 CJ#e]ܠGz~t;pO8D#4*+)F"sM$ Aw%F)BLhpo}&9uĵ~d2v{[/V%A G} s;'WX 5M_E_R(Rj_4d 9rK$MBˬqIcL]LYuH9 (ymfL,H\O@ؗnRХY,1SI'xw!>1BmaE? li\ZCNd:ޅ_ +?%VʧC}V% i"DV!"z}3BB}5&.{.MqXU<<\#3Tn6 Û J %=2x20v/}jΟ(x[zT #gWk\(/v OZ6 e^q& Zkq4'DT%b*QDa' |)2o1%<˜F>eĘɃGLˬb6;'e`t&5ڼ4X<;LE2q]N J67тNWx2;&*b!H$dk7;q]=ʽڻDwʰWP!X G| 8AϿB`xn)OHּX4]"P'+dYD4ƣGm-Q*ef<:%dꐌ;ӈL{rf CNgPBs[1f#W2qG~y*!ϭ ?7 ϳU,kT+g<&%[PJ-<}Ư_Mn >eHxӃ]=i8l3ʕx-hA7-,,י$FHPSpj&:uU7/0'}z?U@kq \<<?_)`/AV z^B8❏}=+Ƃ%FiAI's9@ ^A$ E"1h'.+0, !ca\Pd3TWEBrw ! f+[ N-hQT41D)uj?q> )a"ǾFn~zg8v<' {4_fg eGɒ5H>'uҮt xs0!&77|q= Jm#z DCne7v`Pƽ"?gJ7 lߛUR}l sG{Yxo_kvBi4KJ,ḳPo:ti'*):D\"CT sN7zbM,!(RUVzܗ鉢"!%2BV=:ZG)sj}8{NT13,MnKw8#O׮НvM+ &z r0cn,jIwisɞ NR>h/Gnc^ް|XD :PL3Ȍ[EPX$L9&.,'R.k7j=$!8K̟Qow޿a Qտ|>眡` 5zR^mnF2ɷÙ #5hȖ-a1= ڋe E+XsNB&}VVMgj5Uh`ؤ 'B2MsSjC:E6hUɺ,8w@ EP)!u MDd.0lhykN7=|f4<7/ofeB 9o<T8At&\FР*(E8@G阭fasKոE]'gTf 73ZW=d벐dŋͥ"Pgm/ok|7E_^0A'ܴgݪXM-.n=dڇQ ar=Ή +Ȑ*ZFvSa6=2C m[sV ^)s|q tgnMQrtk ~xt-,s0eK, sL,OzD ={`L:qbyfٳ Ph55޾y;T  Ǚ?n PO'^Lj~o(@9Q~lrafj(0o3msz::4JD_O MȿN r-s=퓽*ɹ1Sz{+Qۛu KN\7bP58ݴwݪ0 Adӧt\27pM.(e9½#xKNܳU@'MS矮+ !~ۡ[@Uѱ&z0gk0D$72<8C>.RK'ld ztj#벘űpսWvAܣy"qN #g]P0!'(,_ߘm!$gy pm[@B}w&zw-6)"i <. ;8~ Qs(h lPڻkΉe"oX 0.at,H!!dL<=a{K`  h.JGQDP$"ecyj?r#=WqxQL͛R[>DB! '4{- _e*{`KǢBlA#VdkH4,nUZ{Ev<1'7}Jp+Qz}Nr{p3_}CO׭*,+' 4*Y|yXh<@ZU@HC$"zs<110Ǯ/./5|]oƋ#@Н4fez9werb ^C(?w1"uFn @[u'{u!p.XNX 5͛3gȡM>= 6\ X8vi&Os3N@Y8ϑwC>~gщ[n+O@o4Ǹ\;Bot #E,0\q)uWH?${#CziŚzæ'D¥AKxdح@i/;cNRx)#BvW˗%d(9QUŻ|ϾW ccM2MXBJR?g7lG޸*?wJYnU ͟^X=lمrPbbT v+9[=%j ʏ6yJ`R/[*1͛?0jϟXmX Ee79C=AOoJd 8:xlF٫YXxΣp= <ye?hdK{׭*ktwO@7jH?iP@=w"݀*Zϭ$k HlokHbC '{eǵw%ۈ " 4cl^Ȣsa2N`?%nAn`^Qo#[ɏS?{w+~aWG"M."yd-;ϖ~Ba|ai׺U'ǚdԱ9]?lw &IENDB`pybik-3.0/data/ui/thumbnails/Brick-10x3x7.png0000644000175000017500000002216613137372623021062 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+$(IDATx]inyygh@fIy5h+*&qFTD lP$d4/1d%y+$fe:oﯾ]}n-ԏz[;}Nmngy[yg<<x3yg<<x3yg<<x3yg.gLӫ}ω>ӷ!F yI:3'=0\8麧p~c^%Y.=lܺuX_܋v /]-ʞ?h,џQy{v=JY 7}d Ea~ Tf822df͐-0 _WXhv;p )>)w jfxW^W þFϽ(T``yC3ûrX _3W! ~u ~|j! 33.^{P9{^ ël OURs&ybAo ,$}[ab;[L| !up3SJ/&O I%tgJ 'd2L;/; y:!}3O0vj5\8$p.R6]L)*1 ,VcyϐJQx"[5Jx? Y۳SLh/][˼I+.EB?mGha5ṕMP1;P iH;y`(G:pt Go8`^šXƦIPtk<84IWep]pX0jENi;c|B4Ov)DZ8Vkt _:!9d8%OװIc~8߈k#jt934N"/x_]Tr-Uu;;pثXpw͞b89Aaw3(L9 ΜOg|f5nb˙ bΜcy1xEp*A{2PM$C}p m#Ō %d%MG.y قh =莸͘M@1féaqYzW)gPf;pw09XG(\mX qܜA ΧyO$ϟhդr됕V2K0d{C2CGuNTuy`/.XCg;<;UdϮYޱa4;).{3W]/C<Rji zGa?| 6>Q} 0-qds"F1?uWe]l8(]O $5V:R*`#[><Tz\lW,M_Wҙr`ީwq 7H/!P5149QixoS_qn׀s"gXcNcfFVeW\[5kks7MIlaS5m'2vGR]vAN= B013S&t >٨DgDa4s3-aƞ#pXrlYS˸Wk +V5ClOׂ pMGEO~V˯ϔʐ>OYpZb&Xn&c=orNj'PeWDIU']NgУ^|ŚO뤒ac:KB8 Ejη}Nz"DT9bUItV1%8UA 8Şa2䯏D,PSz^ScrLJ5h40SPiOn[nޟ% \SxLt PitS xD$ ;Tk'p{ϲ1Et,6X;JO_ڶUbplFy A/m 1˅!R6j{GwZsty[a@?T,0_>}L~yUnpu$'~ 5<Ԑa1B>jw4q7fFqtcn.|7 t@8ʣtINJuI۠GUč T;xLvǦ2{KMi{]V8Ȝ !;Rה1_TJSi .*>kO]ྭ`YKk}c{~T~59*;c-,-¼KDff(73d'>tUBv?W>*8rj=>2$5jDO벰$]"FR =++s"2fh@ngo- ]cMY}jW-O@tE<%?Xlpx\h 2ο };ZZ `ppq>bfdmόI$)w7f d%񦖈Y2A]RWB ˆ1H+"='F|/꣓ E 5Pi96XJ`O 2Td/Ng`hP  7Tn`Hܤ f|O%AL8AO׺Ni'8N2$ Y>!]  m#" RFAJRKUi#ngHY@ #غ~`c\}~lfXf{r ލ1|bF-gg*l7MZ <dZCL:Fi<3ojU؅a0T4i*=p05{&8A64UA()\QqA{%J8#G6(Kg?1#A+VщBheb3 +cC2$of92Z7 YS4$Q=J=_. -}Tz-75Eɜ-pwHԢJXI%Ld{*gJ$ߐR/#͝As`9_ 6H@t\Y|V+Q<&| @mcSa,[>կv9Aaj ;L1"p`&nT(&: .jLu(/lfRGJ54L˩S*ghȰD(h5;veZl">V$KɭY2}LP >~B+djrvUz.`zHvfVgQ(Y @V%&u^2D'Kdm 'F(S}[N Gѓö tn)}`GӉd7类uaWa7~v6ǠbȪhܰ4W e԰ eʩ| 9qh`ǶlM7Tn;.@Kݒ*wݛ-;J:3Gv=eҚH4ڔ`|7d# 鏚-X!9JF`P-+ {p:ɧBk4\—cU dhnDs֐=\9lso OGNj`b;ǻ(> g(6¢LPuYphwN+8"P@+ `<s-=L @l.f(I`Mz0 e0f>cnsG3q|V1CԄ?._VI)@V+/Sc81t^T y,uV A ኀ`n`kp,d BZ}(Jվ6k ڵHڔ^-lO6(U@'k?/QfoJT}߷)[ԨW{%B q?j[%#BpJP"Ԃ̒]\Ai Hy!U.*iCzf P e""If<^!FM=hZ^NRRdgqTmR,@%r̗]ON+IyTv΍(J•AZ +pU (KBJ܉t [ҎNIf`VTo 2Dq>~)վQLanJ5BS}yIX3^II7$+,ҟs _3a!"D"؃IIN,q'!%\ 8%{UCaS6 L]TiVpDbYOGr㳭BkHMM(ȕ!Z']M%teBz&z>>Vn.y&y#n^Dn[\ ~~~&}>/`e5lq׳N-+iD&+M ĐcvI$hD|.`>|0 UJZG9s7 1Y3',Oܝ%ߖ'ʒnnTa\m\/c,iLOZEzZ̥@24jё(d)f;DDL\U>Bu `xܷR^z$[XS4^Rv?tj>YBfTS gl(y-B-C@QT"q6:;gu bqaNO;:Q,!byQgqbYǑU;˝SJ#Z ڻ $B2ֳ l=I>)J1WY$A?< GX-^a0@L1XܫR*>J ``[Y>Ť-pNH,_Z؃<מ=PQ5_U``a*ŪzFLl{}%_/ 7k[lʖ|^RG`z3b=XaEnηf]*:ND"B==y|fD>yX}qͪTKߟ$|*i$su_n1+V* ae/ItCDF5bVbhؐ=My{Oz@6U>{ϖޕy@Rrb}n6TYa\s 7W.ѹǪfHՑ̎I8]?V/<#Ce|zTwou,5CGPJ5ݼ:+WXEr#IVp+nF~0U*M EMp>ɵYM^V$Y`f`TVH0ĻG'Y6qZN43y*Y}tpYL5R2QhJ 'ǐh^D1b =8gbHQZme-.˝XysꘊbR`rw+CyAkf-#C,kjXؑ]uPJʓI.:g Q) c|-^j?R ij)Xf+I$-ރg=jÁGsTg_䇫:|ͯܵ-o-05USLi1X9TSO~#l:{S`Zhf ?15ygݯgxDIwO51λ`5oxdwݒ 6O⬂Ոjr)gsԫRPJr8ˏuoKs`jU7+fJGw.p<x3yg<<x3yg<<x3yg<<a@IENDB`pybik-3.0/data/ui/thumbnails/Prism3-2x6.png0000644000175000017500000001204013137372652020642 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+IDATxwXWf7)0ah3j/XEM4[Ŷ_$$-D FE%cAQwᝂ3 }2/$|?sL߿p^7pq8\.pq8\.pq}X"|Dq] 4N:\Cئ;v+f_w1mgڢxҙ~fZôBX$|/'Ԩ*" ^"ǖs3ôsԂYS:$"8gݺu# wi9 ̭A @FWw~z/Mf&s۷aذad}x7NOfὭH> ?`-(t-P7" Μ99L8HYYY mFFGuwy$l25=>7{吿5,B0ulEpyRRR |||O֪TrX':0@:3ugd)18R%To[\8NYYK2]&\ݕn_j@  8}81 .4[xxx@n*xp&|ԋ:#&-t:nݚFp?j{k$?;- \ Aږ+64i ::H(3:g}rqdo~/P^p?~z0/yf8{,=)c˸#՘;! upp^ޖj( tUV >3HMM *qΖ槳a=SAw#7;v7rx-*tqs ** JKKo,X`%K &/W!\Af w"G]> NekDA5X(}(իݻwǏ;w3gZ ONbW{0{&ĩ1EQ WZόAD n ?A**+|ff&%ޭ[72\z!qqqBG0KHJGfS{i_bU}SEѾ`8| p$ $2 K={D޽{аaC2 Ҿe1u2Sbd/&Qrs4ع&O A 00I&KP=9Ȯ񢎰y$ДAdױIm+8N81(D&L`bzwph*2B5<7rr+:wڵJFݻ!xo/xqUoXpQ>x`ӦM=_,kNc\_xs` (̵- 8 ~ >#2zŊ]rFj A@Xr0'O#F8zM رd D!|zr2:p5|ժU=wRPb7nܠ׮_NRMk(.fk><5vH [kn7 AAAp)3ƍяBCC)(|Q[pho[BgX[Pj h=3hӦ t\5qDׯ۷8]S@.i&{m[(˻&\o%?{R`P|HN8:G+W ?L}5=}?|&;h*l9-[ ,.L=ۻ+z[pހ"2D؅ wq !!Bq̜=\#[IWTp G $r ̣|ܹIc= ~G3'zzsGzY ͔H/e?s ;R].]"3*YMa+%L 2:5!e8r䈅׭[z]8Z$kɃ4-{S&z4`6uf 9996&gddcKo߾ jp6~OO|WWtgPچ F` 3޳gk] aoj'O.jtG`, Of͚Q2`0PH\j47S Z4CVJ棰) ݺzɹю m۶5ErXߠ׆Vn-4mUQӏq vdglbccMǎ0^X3fWΝ;8͟X:!K_s1.- C9p@y9 yO+עEt6a.XNY>KaaZ0zr? ڟGˀkRr'>Ls*cQv^-r6i N )4l~ ЇȡQ 3P/ _4^/Y` Ph+7Ww8Z94UB5%eYC%$k̍f 륂' ^1|7y D00;~M8QF 2.>2M)ꫢFO2=.0kզn1 \pabgӦMT())!K5_w %SSóbhǒb++fp8ţ`0{J%?<3W9H0yeh1ް;9#4d>$: Xvbyi7&QӆxVK'1_g%0Uj1.͛7-Ɗwm x"&KR ؼ\3੒85=[%c(9oL.`ag fqZ?N8B7lvZEz:S'k`KvMW ]A5|OK Fh>ԣG k8E̞= &l*!k ia]Z2N-D*h9f pk (,4͟8 |ЫW/zx,6RFp?d|!h  E{cOGwa[8G21 юE9/'4oޜHK@?9wǿ,)W@O  8vcbrz⺸W QQh%L9Σ $=:9btv;~b0S'm,`-2.^lǼx 2D۟bb5> b @s/y Bҭ(P -xxJ U=lZiNݼ?fбc˜1c(%,@S%tҝ̿% $0@FW]+hEcoEFF7b|u}*ߝT9@i8wY$<7htfx`~kRdYr8G3O<N5=kuPΕ&b)z<<A)?Wxtt(}){dkM .iKjF\ HsI*pU/V˾Pz PT㏂T4uEFzp* /`@p<|K?^?ZNVSydE{\S@KK3Gň@J6wx AѵLyyy@<*f  c+ɵ}5wS?LHH-Iƍ1n!KZ6ylSޏZNx~ ^/ }$& Rq's3s\q'MBZ D8T"6_pqopq8\.pq8\.n+=IENDB`pybik-3.0/data/ui/thumbnails/Prism5-3x6.png0000644000175000017500000002320313137372667020656 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+&5IDATxw|Te{i3dR'$ !P$!jh: !`AJQ) RYuuUQwssΔw??dδywW!\1nq 10C 10C 10C 10 䄈/\Β+PuuU9,hkr;G7<j݊,VῥWy/diOZ5Hp8Fٛק5?ʒqv-n+!xĆ3+{On/];7=NJW}X+jݺ5 ^Hf@ZjEC97{yG"~%ד;Hn6JE+JoiDb%`yWq9+of? Ͳ "K T;S|1DE*$A YV_ [7q0g*r$SDʶ)9FGnEYYYNxZ)"#Eai5^R΢ï3lkT658CSo4Wp)l`ppVPBD= UU$V^xx89ٜכo:ski iq3DhfT'e{~_A@w,7rYXu-_nV&KI,!V]:~=\!v0rF7TwWl-|7" lQ̀V>T9s~Oak],9: \ s(-i4?f[|ܜ \JJ 9Ύh u1ERpJ ŦƠd2>74e: 6~,Nd  =3}nKrώ,>2"9XH%CTc/7tfe^efnP[{HHwYM<T080s@"FT @4\ & e1l]UzG&l *fecea"mKP@h|󛃘ll~-<1vM,3zi$FwءZVA1SqM(.7_NN( >~@QN6ل#?Ik:7<&0T3hjLil&3K[ 7..n0dخSf WVGF9%\V. $X~ o%(MYﱕ ]M K];Yn7VU,n:j";܃<`e1 5$S6+ P܀?cO@j"R([kcWaΑ+,3[TvfeH@͑>^)? <uuCej^* mU+SMZ  G7_) JF׮ nX-)t+ fj2Irv@5زr#@Y{95@d{Pa)tL)<(6M.n|%Wm•j 2H!t2 }WXJG9J[+_YуM=C[2_dİFW9FjK9" lnؽ 5C~ v+7W<Cw~ͣ(jCSx'{(apR/>cZa+-z֢oT8KpRMM&wss> V9~|WvnѻGhhyi@ ӎRyWVFÆRsf%$P)BP)U K":K>>b10v:"P``?&GIu32hatdDdwyp-U`ҁN"\ /즼J0XeNVz$}k8e0Wu?VAa +EC2y~9 yN =i%߭xDm7,^ 8`ˇc"a {(Pn4 Aa@y8X _rVytnkU 3NZ67Nס>ʇ|߰-|qDm-sfˍ4e2mʬ@@GV^qP}[bsHWzmM?g sk}xb1uӻ5<2W\ÛA]NXɔ~PyD)C!B<2./ci^Ԍۂ;`SI( 5Wv)kkPq˖1_ۭfX`_Ղ?l)#Oc4 z83 |$M>wބ 's`k g^v4ᇨkpwQwJh&OoX=}nUԎ8ʝ.uMR4ul(t=l*}rL!*}XCүrbS:ڥ3 {r-eKfS `#ktr>j7n, {5t0#Yh˪IӾ언cdO P>dPQX>j&ۍRT>h2wQwJ y5ªI z`b}Y+죂DYn=Tg?s}yv%j{!(Q:t2/PRN  g~VVjBU'T0t@;yd2 6} p}|ip6?$+|Y=@U&'Dꤥ3c(˥4{]B,2.^zChQ?#Z/HVe&ݣBkN>,8/}uq*9#}YmIT[nCƺ0*NlqKzn7lfX`h.ӧy @kSGZ* UÂ__6?N>.HVJK:f]( ,j2Q3f|E !q*6u:eKc[WRz5 u@*_+צ߽A@`}?Ok$RQ>@jE,@h'_ qCF6#/0S9X1< rnC6 kbn=(J,\M 5AFkW{:Vsd_ɮ'6Px_ #Bo@MNܷ|`V}@ &%I'&%V"O0ҧ> xQi )x+}_dlgP[YH!3]=F<JG%K}"6v:,"gjrS^u y)kt:TN<_*ii(8? Вm*e<\9S-)1>ʇ\ N`H ({10Z` @Th3rEHHOuS' }' ۬Jcsc3NZ0&HRY>ʇe<ԝ_-y`R ~SC)Q,+y+(E7h3qRDUj|)M'$PQǏm q6>o?VիgkslC̳(ΤS ~`+4kW7}x_X<}P&ʁ$62 Hp !)-_&lZ?gY>~e Wλ5>()N=B79Mca䗏 dX>eK і i䦧E(Iډ#N+TzsC>ǏjM>ˁݾUw{`yG5FMV8;Tm kc_|_@^YYgN01H4>}R:u6zYh;8;! Xo|._O]'fP%r!А^6ep`eLYr1:$<;dp@%ThW06 k5rJd+er0 lX#՛66jhhʁVs6#v_ram_,x#y?pR_oK9E{fZPi "L C,l@zbrt@3NB]kf%I eԜ=@͹3@="@U恧C7}ߟvIWP>,_︽ dIcdÙSud @T:0CP&⃑6b0YӷO,!][=σ D{xKT m C(2mcUve ՊDs/]nkDa0=V1@0Ĉs:>0WkN)٢BTv5Oo*}:~p:9&:! %h`k/N_"=2B&>HLGp +|%_ N @K,XPI)-?=p^y\(m4[&tH@Ä %Fx-ӕD8sv.!~\IGzv6qPg:i8iPK@T =$ 5.tN,J0xJbsff\gRv%%Xih:=bF(Jw&Q.0A! 6+uw,aT~z(ĻH'(#kBmʔo.ZSgYfQ]& vdkDd dĊF򑒗C|@ 8hXrkA Ȳ'wȍےeK9C{r@OW[a o(] ,Vfݩf@lZgX둁hf8@2}*Gn9لM$x#&@C$h c*pcr@O!xwlMV`8C!]ņ$S7o1oq(i` Fl}ZŃ5)H @h`vTDvьX₋NJ 9IiO-\Ty(]V *? Ԕ[6DYVTIJ^XVXW9O>8u̍$grf~KfȖDvmvCĄd#(ddCYUnh>xGeL `YY5CZZr‡ƽNpVPRWK}h}ך>9n|0!#7@=_S66T=sx9jݲsQ~bv"7TU3T8?CmS~+}iuxgX:lp;ؙgl 99Q1=x<>+<}E~(u9?1! 7ٳfI\;P[6^0j<=qvJ{ҩ#z+1/O^!] PԠ&k{6f)!C]%_W{O>.Ga=m YP4A*.^bf&Sj.w΅?D5 A))"19oryZ׹C{`{v(Oӧ7%maPv{\B-Em3͒Mɴb==Ou*% sϻ[c9E+bDY9/?`pY%e^PP8JbF;@+$)@ɷǼ}t: M)A#} ~pRmdE8S;.dA }^ 8-T~g a]^OyDʞ9!Ӧ "AU1+yDLP414r#-Vd)p=([  ~p&y[E {v sf ḽP1YJ10{;[fSMJ$F6dǿͽt nE%AY3/[8hK D7DR{U7: ~oDd87, $%RN>J9yvQ|+fYߪ+z(2 I(wC1+k¾~v1*aOpط~<.=9`2ܙF=n_D;s$wHLrH7o*}}d_0*& ]`ŭWC484^3x1S~0.a>B,8NQIОktuo9U;=*?ޜD)zlY>>M=P?Ї'hAz*8kdG{u3U\~}L) rg`3;D}Sys)65ErRPu+PI12́ݿxwt(F.)b}Xf #'ȃuh֪&ï-iߑ&!R6oP$ Hrؕ`c*ph9l(@I(JO ? DKM-;aV.noXE:Aj){ 8C%~8[XZP$ j3@ǻ3/ۿ?gH*l c2 ׵ pavCmgu8P捔._&`ZHR< )}bb6%?2)`/vӀ[LE^Kv1]m[ xhҪѼѡl D60Ƶ۩ REv65S|ȈJ ApxlepHO/oUG&=?!4lݓ2ׯ@ӯ͏QOIɦ>,C!P$\P@9 SH/`wMPA`OvwWB_?_CxO`Y5cd'GQ;k0@ɪIpJ &7VPS9͢c˕x@ :uj3p(O|L!-Tj)ZIP=M0)drN1:iP?.dHgg! !.1))'*j222 j)߱<aa'x|]9$'C9I"|F}ec(h`@l }1ΟnœnHW_2Է5MvKqceڹ3e*?3\RHSۺW<>m06ykH3BC< (=.+S1A)8^fCn8XH{rӄ2e+?^u2"|Z ~,NsvSoA%w]hx>` Ct#cZowZ k!߭]'} $uP4mj?k uVlgـk@iyWޘ[@XrIgCowK-mI$&szd/AQwJM CQSN^Y(gf ^X7zㆫdKK~\ wHbPCgzP =Ч)#_< [۶}SR\/j?9>LZ!t7\`@oTcY9yT@z`~E&ma4V/-L}ƱO +"q1*Zt:' Cs4X}ajF(OoϽaǑmmxkk/abЬ{$ŅܟUDopF.b`!b`!b`!b`!By&)IENDB`pybik-3.0/data/ui/thumbnails/Tower-9x3.png0000644000175000017500000002720313137372543020577 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+.5IDATx}gTUyAA:t Ҡ%$IИf JPPFgt8<{y΄;wfݻeݫv]~a;Og885 N.RJuqk.V wTO `H8;ځ4~؇׫]O!p@pgsHM2> /quU:W|1w#W @QK~xu5z7u?uj5A,] mDmk.2Og hG`4j:kvx\s|Gp .q[Ӹ2 \Spnppډvn\?/@7#5$B."'P=]d;n\-AWDfm݋Ņy|9 A 0`p9ja0 cחaP$24?Ua`{񧻛Y$yP/\ 0=ox]nPo:CЗ/h?"S>Ƽ ?oO盈`g 5|}+.Kjwmzr%5on*oIv0IͿaB9^#3!>*h';A.y1,09P@0_a |F<ֽu=\ I>tJvvu ia3?fj܏Ox2GGSaw hsl 9Xv{L8Bjms.n$2ɧi]0v̏t|b`/N65*͇k&b2ۋAА*E4p5 x'!21GE0(sy.`2&J LCگDq:IPU{( T7Xz2+HJ Cϰ0Gϧ tA '㯆&8ƨte U6{&@eOA&a!uC;~ѵP/7!]LR30Tsgg0*>(MbFӌQv" L c.^)gwqguU5]aLSӍt0@$n>yH>]P㏙~ Sk=.)T#)T0T<=@f]4>m^M1'wMҨ0ɵ6`.9gET^pdL&Dɧ*.?>ٰy,QoNcy2Lӏq0t|7`x5*ݚ&{Y`2 !(Lz*81ۜ4ZI&yq7 rѰ j"Eh@z5.[l%λܲe+iJx.qz'],ϬcsX$99>h0h0&1@GuKaRPHE&Wmci+]2vs) _*b֎>j,(v0Z#R1`vn3B0ht|1 ;Xbzaju34ш5Nສ_eшcﷱKǁ)m-y]^9Rvs~uSVх4N:m~ \:BPr$^,$!~t FϰHeR3}G[aC6Z~@6`(2hp0LB]Q)X1UeOgXw NwH^kWAd/K Cl-9.gaG5 ~A@gڒAd >3ֶ.54@9[b#*LXʨ O~);3 0"MX]aK$ߛXh?/::'U"cD:*d. Vp?0ΞT=o>ecX\ч@_y}c%wI|49?aRzgaH1,>)F"׽}X r7>8]DwL<`5{MW1ha G{Ky46V`j&בQdW!GaJTOJGB E7}fц¿\8K,G5 xO,кN|t'iƜ05N_` 07d.005KQc؉%A]:#dCV"H4[p-E* wϯ4辶Ӛ]j`RP?PI~8~k`>,ק#k>}1^ƀNZL^Dl|*,ɟZqqyGYňS 0/ߚv@hBF#hDaAEp:Rֈca,T%"]jm1Hݵ{J% _ip< U.FG#Dx-1`ιC萐jى /3^5LӷSٸO @qwD#}!}~t"gaMXlXLDׂs5!]j̈xO9_TP;v5)yi^0R4E\ ߒ8鐚I5.~d;K8P'64I#0PLD3)wfr`ΛM\pQ80VLsҨq:ncce\D2dMH ի+>y՞]7o:oҿ'l$CZmR_u.}KŘfdk9$ce`8ϯǥ¢s ?sP2L|3R-FG A"8y_^uweY dM[njǓ>Yvbi( apmX=&Jk&0&sO@L ܈ +^WxN4Eyi@R}<{>{/⧣r/-_p8~^E I k@:`}m`y@7(~XvIm SP{7dLgKʙǰ{/@*q~ bWS0/PԆ $ ҾMjVBn82OI[2Eq,c㬢VPU<~t!Ӏ`-Ԣ޸.>FR{".g7beOwz{ U2R5l_2#"؝ 5zRXw4¼҉ޏ>&u =?g ʛf>J|ɐ<,:Ч_̰9]2w0 ӫh&~:9ZR&vtLp%La%zیbm x- TMhۈ1]K=anٛ1aYTu+mu:ƈ9ȯ33[j0bϪY t7 aJ 0.+5M;pL;7yY yDKMNsUA/5,`ݓyZs  j1nN)# J@QVCM3УIKݫH>!mLO I  E0vQm}*W,rwИfX&e@_C2~fdRy@v+AF!s](Q'p5J|G CIb2|&42]"vH$E n@8(x})-k3ͻzVxt}66. ?;_ ?dv>Yдozy]]rH04_;Zܥ(C&1DdWR,q6tkc7/uAJ] aŎɁo;Fzٟ}yiIs-9>YXD(IRvbP&0'#b|fwƥ;bO="V]YVwzrQb kd/x@.0|ؤT ;RK;Lwe@c¢ԔYŌtTn.\ugq0,³Vb=K\ fa+X)4oO\&/ЖfxL6p.X%m|ߜOErQ 6L & >>Nu=#)nn2Y`+KtцꟵqr2x8Rr..&b{TʏvEivQ[ژ~c遵Oڹ\!$úfƠ܉6?|&1 T` 5nیFxlU-OQ/N,|90wJH#2}c׷@bF& q_؛/;&u>0[@wrLr>ty73*O`'"8ʄnc_OJoPNτ!"۲ɿs1h$g$FXt qUo.WOܕ^| _R_MWooU< *Rpo@D*8@>x'B_qܥ4)Tͦ<[4«~xxf+KGJd2+Lh?f+'Ǘ#֙t/g`B S]Zf~GW/<"2>K ׃(`#ԩ]g\;c[{NQZʼ*<ƯFhXfC"Hd q,~ܣ;} 8df=a,GxhbybdV} ߼T y(~87*^X" {#V`c Q&J }SݩE>VVN3 oUei8]ԇGoYCOڏ^ #&s v)D$h"oɭE.CSYO3ښbcg1H(x?8)um蹨=h!`4cF >CfdtsZ2ӈ>bO,*yD8tc{Doϟ Uq/w \"#pf[9]y PY7kC'jDS@_0D-u<;qbѠt)gǐ2HVhHDD_"@t#xqbVkk{!E@ЀW{vO/=w)A>w< aP8)l>AJ wyr$̜X Sl%.O `"aElB~Z_U(hxFş?[^`E4ܤ\0 aI0(ɗF%/&_JSM[&bԄO* TpsKAm2I}m j0Xp֤P[\v{ دWb߿?"jj)tPp1ovuˈ޸H 0 `MKbHh(BBb9o?t{113E`}~]OK~V0ɮn \-7چ1=)OڱQ~>[߫fN ߾S$u{>OkK zC{ E>فQ%.A@@w}Fפ@taY@g%:Y^ix0;oj[t@S?Lqj.6LsӠ y7yq9cik2!?ۭj(p g %svcǔrz J @?2 Z?LF2( q LAn&O2c4b4`Gy׿nN j/>и L? .eETC1^Ϙ6wVo/R#w$Ԗ{Ԡ]G~Z"m% Uwo\_wg'їs8R#xdynvиk .>ȯU:V11TL^Y5`HH%^1˝˅ Dwߣ샯? 9>p9Tod`R9+EIL4`±fϏ"go\Ji}'Bxh ޞ$CAϫO NAt||8BWBE&r^g*!jQE@N'7<A 1C`AHÕ,wj؈>/HH N6[gY.az7ߓ/Q/>-޳_\?4k]"d(_V2jޣKE"҅H!i3`(!CfJ#d4T$Q5VXXT=3( ;ݸ).]X#+I^7{I3ţ.p3V9T|Q.< J Մ~ G|r&F[,fJ4<F-k t(ҡ?wK19 + 뮏o.V'ß`oLQD8d*]{a#]`9Y l?L@B+= vx}V<.r[DHn<&)\_>caݲ&{BQ؉T"h|jHF3.X?8-Sʀ3 TkO6iVkQυq@[qlc7?nRȤWp=#BIAT0s_bq XeWOn1>3}OWX;s7 *9;J FiWSD(9:'`Uΐ[",(ʒl?~^&wI ;CO w>2֝/㟍 \dNs–5-uPQ@U:kO+e|9OY.F?a e:[ 㱉f|j=Ei@rBc'lJs۷ioWy,V+1!(:͈T>7=w\'mаE_a$i;+F$kp^HB# 2DZ pM<]<]Z3B8ӱY@"QW[myB@ : OeW?gO c vYm}A"ɞZn!-|%ɩ#wD- ~rIg>CJ= t+|&䩊b$|<â_Wsm1=g4 H4!\ aeƗ)p[n@wy#aa24ٷhPH_L ムi{puLoǥkaTn?_ 0;=m>_(jAX%㫴`L#vY!zigP81s`ȕ\nP7VVB;;ctB/jrbyģx2[D$/TXx!xyߵKk)䤱49X@xhf +g)%LJD'Z!ZikP!X@}( _ C|3Ohq®DM9GS9r:O̗sCV<./Ҙ*dH'rxAgzZ$JAiFr[h}Y؋>= S@"NYہ!:E 9L}{Zoğ8p3܃)=Բ`Rj|l+`b0hzUxkl@[˖Rjkta~b[ ;V.wZQ440]C:)"5 i@D& R^A*JH2J25nyCEG}@?enϯ`yhV=0~.VpZ*~IB+Hzw1 3l`IZiaws{`.dA fD.ylۧoB~~4x|'=\L4DyF0A4ZÓ;3?!i]yCR`> E@ :Fj>oj!.30xy&D'"&*_B>?kd=OW[N~ʙeiTw[ ?}V.=nᖘ5)%NΗ7k}ec{Zܲ캂^ j,S@"*TWkt ߿%W-` ΰaTG5>Ebo>Uk*< El?K4cH7e}eMTs -|G+0|f}cOl^sN1O`c4%+l ,F)I+,2v,RbaZg`{?<,[^m7 ·{W[>>ruI9߲7{8g87ܒIENDB`pybik-3.0/data/ui/thumbnails/Prism5M-3x5.png0000644000175000017500000002635313137372701020770 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+,IDATx]w|Tem.2>6INwI邠.@:hD@\]o\]m}ə޻{7?9s82ɁxجA>71|́:׽&@vX'AY^20Q,}⿗l,r"`ֿ3E4&iw^59D _$ۖ,X3#A]ּ 5ɦY.pRA999D񔒒BɔE͚5H%c(.&R#"iR\h0dehҒ c@y1 l,l+C _ Gw({{̀^Ay}y`9r8R@,f5SZޘƒhzD&DӬm%nSLMʠi-QQ΄뙕I1!!!FB,4mTZg>{u7q f4&j7d>F 6㐥<ᗼRd{N39U8R!0Q~/fCA $hCu8d0A?JX VvpL*{C vyԤIQNSm P\aa䲄Rې`D]nAF0<[' ˲5>fQDbלE}v4!L[oc)Շ-J"- c !%a 6DSA تuf⤧2`fv6UVB8"HDqqqϿN.ZP clE&#Y2ɊpM\hM`RݑaVWx1~+&2Y @~ |{`jIL, gYZǢFE v&hzJh% g(AO4i ɢ䦥R$LLLK/HNc iԘ62@4+Vq:w3$fIo$jYufh"o'ߣ13NP ]  v6Dh)P7nDL3:^9VqL5Ov0;%U5 D߇7ondώ^Et&?QDIdvbV⃃j$3 ]-,lc_dA 5.~~E EN*J G5B ?T;lV A6lұ3 c<>kDdbfj!ٿH05-4YM !PWq qLFFu R ^~>/Z=auDD.5xA"YZ!,,L4V/_RĄ`ztt451!$qt3:$ړ40K0N-n-2Cυ*^3?OK111+: BcpU#J&18RYcCXoYa5M#]#@Is0aWܘXs4 of\-Ot46{d~+"">sҴE Xd<$Z0adsov3U5f2?<50Ӝ8VYOnH כn8. ByI^Zm9z +D(E# |LE";1mUFF"NUV*/SOVP BnVɋy_󍂼?`$ gC?~EA`nV /h@xt"*F"4r`{S ak]=63xFi+;}xďtC~VK*2wH#OHX/ELK&jZ&-|2|m,Pk-`vp{ѵ+D;j+& b5Ek 1LxZ}[ ӈ:ZDddShHa3H` EB-><se~f ߻;wٌTuQad|Y"A lf}1(ܤ)DBmVj" Fڂ  "]o $!hZz}p]T6۳lƍk@f1Vx ]=P>֦!D HF 9lqvB<mLO+|=\ zۘB| 4R'u6 fn BOjlzŅr6 FNT UW|MȜoR? SGwD (ALx~ =}ht$&R߰P"4( o x݆FQ7Hv T|:\Rq3q@^XV:/P/ ?уs!{V7hp3ҡ0.܋^*IlB㜴p vqYzU?>u89q|6'hZAQjv6Xp#5掏w_M!wY"_M%,6i(p:xGWh/4|>۵u!^ y#I5l?EkT m PP8 1C_ى /Aa<y(;_KM ߀_ /\Э]tTJn8N bނM}7_ NtDh>|df=;ڨgsupI;RcB%tOhRNf0QH~Ț'A>T:9 KDCcNES-X/Īo!# N(juiL?[>OWoW<Ҍ׮SȖ!,JKEGtASؙticp='X|bByrg}EDS,ƗYPӠW\LF-0dG6E=& f{|lMAW$џe.Z'i ^8f7%q*]0|ȴE]/9UT !Ç-FqG: c!$j%v=rAb"$䋏`?VΌ/:P_J49MSEQaB7N`!]>L:iU"={{\6 Cd <# };o Z(ŤY!G>cF/+&GJ+_~.w_M{:L"}b)FQyd/>qQ[@Zoys簺V!%={`⩓bs*O͆ 6%#8zD>\D]?Bin"@tDa4iH]cXdRtd\3!@d!* ?|-͔:_?̠G- X-a&|_=KKQ8>d r x{}?_Ph+Ć ˨Iڱ?xR>4|htF@)mژɠrfFd>AOj ˩>C.kMqTtvo"=9R-T22L2vG]#@ٳj KRVnVѠrXR -,~t&mpR's;;ؙ?k 3`:o8=W:QFR(Mcl=OıC 1> ”%##A. +^^MwaQ&@V߾B)Jo:1ݺr͹sZp:0%@Z^'?ל훞ûN6MhmgA94l-ɨnX{͙-߆u@Ao @#Ycv!O-3Qc6'_؁ pq=*IA:MW Dfm+U) Q?4a`ъ2o غE/ʿF$y<{}=vD@ck}Q:RŎ]d:4G`Xϳzt Ak bM{II/8_ЩAS.w`}'P @Mo[cST0Do$}~/u&_Q=*6~cnMSul)^5CI'5C9ҩR1UMv'ɃD5?Q6F[T$cz?0z㻞Lpx5wҿ׭ҬT69ūhP\Kt`[Q>CF} z>^5Ա챷nMmuW 2oZeG~OCpͤ-(5t0F"sSy"FPB*8c;>0Po|aƥ/>dʰvϱ/2zM7lG.eKCs 6X7h A8^IRr"=4o4`fKVxr tt+-aM4%~4Z1&.GB7Lru?=k h{ A>@] 2:ǃvGM!L(>̝(бb_ aS=s лU~7i k6S^Y[ܻJFi}ؓb/L6F#EǖF]yXxk2 ߳[GJ;K1.;[2Q5tj.㠅SM "3XHQW ]4xeI`oӆBs^Iu8[JǏ<}Ǟ; 54Ї8wqVW~2;C7~V|JT 9- ld m,OД+Dq<6#1FӕpvS)_vCw`B "H8H|K#ox^uF<%_?!@MO\]fRUi}! "׍v #VeR|D6ٺF#T7>dJY{T(Ԓ|?x>Ć,v$ -1'ں0,txdDDϛİS&3]bM5+5 QMvp Ck HOI"!A2Wc(0wШcK٣(d Y*^za<3|F<0ǐ;@Xܺ,>@!"V]|.I58H l} " s 2 D8v8a~(^}Kg"ӟ~0{~i !۴<88݋08tP۲Fͳd'k4{2Xtim5T<zmXv ߒEPi/RǙebI͛gA4|Nf1iS0`UH|Ukp "9fx)PYz|v,}LN#̔7NeBCeff6"BI d wo:nF;wn Ž=zxcfބ4:)h7`7X5 ʹͦ<пK/9}=οxxszT (|WYœ d˨a t 6 :{-3SʽjUt|lPϟbyYf& tC]0@rְ|y d\ҷ&rw}Ao%@:1:V:=a\lcnELOٛrC{ 6qxUTm{|z_4Щߦ "hG@@ zzbg QvE&Rs^z 3Be3)&>gS$'@lǗϏkoF0ȷ_Q`֋0%~Zdz.}SSĦk'j=o,"xV4`&3(E <#;o jś_+b)ŰVB~#e_ . C9hIz,0xT:hz+tUZ>T<6ѳ '/{t?K}F(HWOn2 LO> R,硟>w$e٤a_:}TdVPs']V[sݤt.;g_&O6Tn+XDA6],*1+_+1N~`b?N]˦ A!OJE#Dcƃ(iøY `ӛiq]JQX %3iHJm]ixyQ:ܷuU >:^Ѵ t9~I5(vf_$RrɃz!9'!G B #ctegBlJX3EH w~R^@7 ׯI`ƞB dyوb۞GpG=;XSڅ9з|A9כ-. ۽(3oY)3LS0ar`aX$*c!Bt j=xa#I3}G<\+L9dBxlz \ m]զw4t NLNFT]Bv7A1ٽ++^+iX-edW˫5~ F"/Z% @=ߣ >02.Ʊ70rg Gi:I "&2q*u6{dأo0& 7?YD y٣ƗE`ڻ&V}{I]|u XA'?>ҔH`tpꍛ|/^@7 {L .R(4'@YIF+'f= O?-_Fva`+9ٹ˘<~{3*dW?ik*F'kd/b3}x-YJO߿Z 8_1U} k7Jɛ @@H  $@ @@HG۾*߱IENDB`pybik-3.0/data/ui/thumbnails/Brick-10x2x4.png0000644000175000017500000001332013137372621021044 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+IDATx]iՙ-WVMt46KEM@iEB Q :D]#eouId21}j2?3qyLNN {~y>{o_}ĕ&``! C& L00a`! C& L00a`! C& L00a`! C& L00a`! C?/Dڀt2jy<Lf(eJPiaN3ABb@?yعV>4pzB"ٶL#5ϩV?) RDZ%<2eT#Wqݯ2ecKHWR؃e+9<_eIAe=83MOV?aG-K\וב SVn<.[{ N2\8xB90dH!-L78cGIB=X~3d2+vvmq§8y@Adgg{wK! bA㡮w1g,Aކ]|o̘b,ב`<0'Ig/2xǛ n\_h{n~OUW#G{BB-('IX !S\3K`-/ĆWPPn$ SsCUc?e&~|!c%02xON:t uw:hVs5DYX?WyfiS#gP($A\?ӃT=6j2|A[#CO'H Z_|%,o\Λ},KOhH٧qbèd($Q>?V`3vˠ $p="1RZn͞^ =+l[:Ha"@/htKt%* ( >Ip"22~%%!JdkI 8je{KXzl\K 79R!\kI;ޖ,0O}ZD7AZ7eaw`b 4rFcu7j20ǸnɵZDue_E'uRqE]Jd豉 ӅlELĭ Hp(~&\鯛=?y=u ]\`+~`pQ{G&Q!`Y81 ]93>AWkpWz]$HX` #@7v c6GtVcmlzʐyTd`nK$('u ח"HGnr>fR{dbYHe:ɰUK".-I}q2Lok}jQM?zc׮mo$:I@$G_(vwy3Wm!s ryh ګP6_hαȝ6M. s}ǘ smM#S7aULlew4XҾMicd<}}coھ̓쏲$̖$zή@8E0,I,%4@&QaU$[ߌ|* L0;0 7|ncV=?#=Ja6yFW"1lPseԦƏq*?6Qx̘\ʸ*4qx=M#֖4qtKݰY@+a@qTCZhuCl]2Pk9rS@>yVhn{} Eo %_)cWA$%~<@ ь0 i&Q) ҌM>nަDY@:P.  sS M{HĜjैXl`ny4`T0rTRЙ\>E9bCmhiD 8@@Y}c|ЧT5ss*$&6߸4*yTUL3әP<@+iCՎ2\ v#ԡ$zP]GTaT?|M~$? }iȟ !Uͽu{|E7$L3 ժC/Y7:\ 3/>Bz ;mmevCvk@-Nf[I.M5op#mLVŎ15e"fNd}zCk>F}4$aQ2p[wQ%&%ugU;%.ơКZB$%+KjOQW?pVLܒw@AE(a^ABdP,YyLUX%+VPwr\RD(xuTVO$yrkRM[)ne 5PۚX@b*!dXHUP];eoGUA'٘E@w2a,3: jܖڹ1$<4&SsLEV2{wC%JȪ[/ۏQvq;?41etaɐ@[[NM9璃jK]I +6WWC}p>q})ӝsIskɪY.u@㈁)i;re+5P#M#KRdvy~I2*[uP(Y,Ӡ(*׏ii.1ֽV\L /o d/[̜`D4 Zyٞ/Ŗ|b}E"vli*ONY2d x;0˼</L+; KoC&]6deA sH$p>RİBld"2I a d]σ*<@Sp<'?Hj5. QE)M$rȌ%1ٽ-O_5^_EUqi!gW $WQ޹aNOZϐfȢ.C]aK9Ț5 |w9;4!Ps=g 1nX#(e a9BԌp?ST-hNCȱ:=<ϥ^oނ",gΗ-w hIpIRǙt2%د_?bN_|@T"mt٨B{[yfsū}evM 8Ei_A/d@[~s”|)]4LV& t9na"x>cWF ?jc==dg3 YR4˖HIH-/9Z/ǀY8UOgS@T%;M*ïDXF{pb h\ _UkUmW ,wa"h@NRx>ԢD}}P.I[ǷF@F00a`! C& L00a`! C& L00a`! C& L00a`! C& L00'{@tIENDB`pybik-3.0/data/ui/thumbnails/Tower-8x8.png0000644000175000017500000004424013137372542020602 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+HRIDATx]wTյ~M`9۝QH ҹқtMTvQ+X ``$Lї{3"Bw˜9sfoo{U{8?BVtL#QUZ 8qSq~CՏF7fdO.ŕ7o~y?z3pǷ0>vұ}(qet\G`:d_M⏀8V k0 S]?w \?!:9[u+8pzߪ}/]xfplUdȽG\1eVb51AG?ڄ+Pp=op?(;_G}!ÈqNv.4`-@iLn5ߝL.ơp QJ,*}bCiAdUGD69<͸ӛ>ޡǏ8/)+dhcgE=d̶DE{QS74MQNG^J@egڧ+/qICO-d.{fdGhϣ8t.BO8)(z;O;X<k1 ׮!o[w1@&&c@A0FL~dUL Hfso4: trـV^)Z=.QGawD׹CՑݭ {-dQ.n-ڐ t"M^O !MxWWF[>>?FnSʜ (Up/}^^q8-!e;d*&CP2umncpN_IdI۶7QD* NPh6/U!b=<R&d:{ޡ޿}[gۦIyy LR4DӀ3-&XI`W{l }J ȀH !=3DP Ğj&( =JVZTɡy_ ^I|ȔdOk22`8ţt~ ·J&Q}`UE]ϟDEoD5xH3ؘ00Wk&^D^fT sr{v`0ׯ$3y #du6s(0gzv"M8!BYcy(d7v.{1n=KEƃ5"@/ G蚵`|Wa5MQO(N4bvFZh>1ukڷsI8OYvU(o(]hL@ `"{K%jNܗHVA!YS r말[G(BUʳd 蚐Ch ٸ;ULx(+v[kdJ73Gy]tDf4,3~֔ V7ḽRlxb q}à (;;S,O\ 0њ>Hq*0N=d1y#x9\+e*a uIޯ=ש{q{Y8A xDY".R!>Hw@v3 ߞ=R=0~4_Z!򩈇lw߽CܜpT@ ئݥ64}Jbt4!Tn3264 1tURLrw2L% ፘ`P9 j񨍇{ yt!!ןSw3gOgT|oi \35KmV00"6+0Tеt%c*۽3WE* a"C$8Jnh):WPuQEC5 B4h<|l.FĻϖ2y"F~@W`@~& V ׈ D mb3wKVS=xύ !^Baܕ3pkD" ?I: Csvx$9I 񽖆IxIc/+o-zEBj l#{8_]%Nn!6v@[Oy9+i@hD#!OHר01]u\q캇ia;@$FhJ7r;$lKp](J`z n9)T,@*T g(P#*fzA|WvY#ѐ~;ֺş^)JTxvaD,5.Wul-[=hCl_WF߿Bf7&DI+ Ǘ&m͑Ysip TCvo7k C[1񻶀0`7n"ʱ9e#F1`-Ϙ?)%c]A SE$=`G!o0N@"|"SQaNim1}9+TĺР,&2pYЌW)bC:E sP MI0HeOy 7FqdC44p nGe:Ao^d /`0(8e^+7,Z/E?p*M(qh'Ȕ ၴuaѫ!D3xvC3 BIz*T?9Ū3geFNRR.S x"u2$\9owZ1t2.)57/Р^P|Y(uH!hXMT*3B 29o `|'ZBVϙ\S*&} &ŠSJeƑ.qUoyqK!b :+0N= б%$`FZ:~6cEAD>"P nhdm"{-3V<.ȘWt *g^({P0c!p`=.#ށ` oB] !>y{<_Z6(@{Q},CA]$S/RSi7b{9\@FڑwY Kai9 >[' 1[[phm(h%5=ɦ3}& "!r6{O='ܟQ#>x_{{O˿Hv7A<+JIqwH@:/3m咰ۏ`Ev R  V`Ѱ]0fN2RwvCjwԀs\ sδlJog!N wzZa:{\r#?gI_졕Sư'fUM_3-=<}Z% 0Tnd >Bt>@sVAqܮ `ވXu^ 2a>S`H DV ! V[ZמaHG C|BouI"\TiUXM`QvsgJ>PWpceiFXm&A4iN$>)խ| Mr2T&%gGk0g 5 e3'L\t(pU5D/kTTweG|dE5ȣaE%~4L9+$'!Io8!JǗ9JQ_>p,2%\"8)vC mYYe(җ-U:0 Sui phHx->t ӹHs-[o1,1_g@qt0B%3TKAHO]Ã> DOCHo8J=(5Uғ|uK9LO-UpS-u-"]?P ջ,1Պa@C?zC_ejŐ|ed  1~K"vYF6ݢb;$XNAD`:Ra?MU -YfGugRXQfp[Q`HPPzVمg!Momɍ mt;,;,Mx3"El|pOcwEQwUX9+(*Km-aaCs:R 6H/=%S\ӅR?T0*;Zɺ*GLE-dCQ^̍"hIhRB5ײrjwP پo/ϑR bŢ jt:d}cRݐ!y[+zb+gG7O)C8<|þG/\QR O"68uj1\FSwq9dŠ2|H`YB̜b `|Y'f>K@螹@C`J {3qjCUKSY񜒹Y^ r 2t,J!}"@B})5>>@hMYP*ˀE:9St,K-x19\l<f0p҄8aji \7ZʹN0Zpes>EAϷ(u!]|H+>!I+E .vn55 /i Bpo{M^ן"* %t.z.w0 aøuJ*0EJk=Ƈ+u}h0 07UOH* -ѬGͦD!,ugP*+DqɄ%"}.r)bRJԈ7/)8@$ 78E`SD`ܔ: 2Cz _75bD(oO C-o0p xR>d `p!j% J!\-*sͬf|s4s=!0CRHa* MwWe|h(>ݨZmb/+k*mi"]$(&XD"tw/\èraHBNOt wYv`vz:XY&B/e5ҿI8`aV)n>%ft UAO2E x[ V0ǕF+lpp I<$|o+5.t; `.n0".>,KAZyT|~XtioZ愉#8[ i!-nv$w43l= CCBv;k%,("3]/q3|6`LFn2o32J)U(SSܐ@F@kQ-`hoHYP0tU`hnulްM^_z0!~P2$,JM b__Unq6s!JGho!dO`>Tz x&qe 8efx`^ )fQJˎazsI> ZC6MJf+.Q}8Խ߿T.>A>uj׾Zow!E\ [tTi 򽽜-CD+Y/`f;@D>bpF M H{F 4~q}=|-1$*OK-!4c?:rT"?)uHsɨ) 4!"X/'!'*ANo& ."^t_gİK 9SP -tlfZ%yD@@E5;/$ x8 Nmwnjq Zo(3310Y >=lY6dY Ќ,߾f:.CG5z4"L F=sl 9T__TytX0s #f72.,{'BDzHLtW)=LDP_S4(`GR$SfkI/מUVVxfw# (L|K@yb|Z@e-Łn!g.\7]7 K>w3 Ok,QB O Df΋ΥTo$-e/E! d(=a@)j_!27`(=+b0wт`+{jw ,2RLqFL&y} :N>+_Ysv g*-d)ݾL b:pNgӤ'ACy%vUSYbyHȮ_G28Igz y@qܸD 9c7IprQWbÚhُ"G]ۻ9KT J‹d,OBp$2Acg( C: 2OXd&R(Pg!0'% bEN|b'dWsy w?yǫ&Nxo(ys8x<b ?swӱ%x$=H78 \Zb."f~A #004ٮKX #. .+1Zd tM er;Gޘ\>paC<6c^@8 d}753/0"3),gRGb'n&>B N&@xvI7`H*8U`dXx r6PgVL %n2Պ+}2p- e^~X4R>(~ O'?Dl jѽc%_?CX6UJHoЅ8,A832)χ2>Wϗ`2wJ?O+tJ( p}\7V h`9hqQٝX *W/$r *4 dcAk)_2]S^ga"D p0i&Z R(ھۘ&y=:$,\(uׇO: 3}Š"}@wTܷ0XdKm;yFq@] U[Apxݬ <-0[&1@ ˞*9 /4HߥDxIr߰2 hPO⡙U-~^{9a1q ުd:4ҵ<מ{uߍVnYoAH^!.{QIĵM[!'Kr2$c+␽]n*ʢLgaWA wqjC}:+x聼i ;{tP''oyo݋Ěe!QN!w'\({`w/~}p)`AEb1(* ufIn7PCv1 nGJ ģW>v郭D: &1HƜ a_i9@7P5:"@%w w|]wlq9\4/79yjm| /:? ہ$x}()/mB\?Bz!:)0cG1xF{Ks=Lh'cirpK/J5,,B`TmF"*Dhaɩt_a&0~ (B}}}fOAi 4s+wqo6"ʠoXC,E!GBAq:` Z&Z>|QFZ&NJS[1W8Mz= THp^H@X@i 6k2nu4}}xKCY,G\;P3^s0PF;[)L-҅l=.Uĥ*tr/z Xi2 ͧD+@aj3Z`[Zy.tF -jّ-' )uJr~`Asr˟?/f)UR"n: X _P1y"n8Ia2ttlRn_{E2@_PT2ٙ,.^Yd'(>B3n\ܫj\+7Wa oF~Dиm[! ;)Ep,^Q93bH} zt4GνhA'J <\PTZ"(x}*cz4n@@$env(]V0+yg$$Y% aW"#ƣg\50fNMwULB @d迫U11@W*KJJ>+CH4B>pXZ&{wpPfȊlMNuѩ"("i@b)/&,F&WsE>-bඩ.UE ,.uՀ"}GQ:"gUսh#^{<y!nn|lG) =eC =3[!i*ES,H4/se{VDoj/;yiP!5hA\\a+x="Bll!++=Jz1 cR.K,#׍?Һm\'KP 5 S<>)(%owx"ݨ]4(NGRJl b[6-a 7]& X^).`@A\ H»zy)ڢ&TK0,Kܹd ITOAfUOFn#/ 7E#h}w ߯'4],k' tTdP f`Rl hc A͇ǂNBQ319 b%fJ1P{V1DS吲n$=Ә^gU Rud(RhJz9J ]y䶶At]2V}thqaj\~FP'Yy7;Nvե.1iXj F~΢W-}K!ݔ] jl`#< 1Sh:w^K&sT*9Lrluw${w@ 7= 0x*_B}`PX5 Y7'{.?4S!B e,nH_)(cTuB\~FH6|P@BW_Wa)XAgdg+R/K&M)bHuV$F6 XQ%>؋^aEoAed W6^KKd;FzAYi~ql%ܐFl)aZV 1hԘ͇p]h?hV,-ゝJ"TdezRswf]m b$OX C܊!@]G+4č$+k5&`]ߦ-=;\ 9pC0n+彀![Ľ {Ιϛ0ڝ~/,L6F>F=N!o h~fO\jA$i="rG4Y;}HԔY>ep/T?4o?/7 m 4 ާ7?`(á(Aj׎#Gdsk1I:1@(b~ ]ޓ= 9@re”?!U!V%bZ hM ntmT}];H>z?0~?W&L-/EyjL% x gjqIOT>&+~2 t7/G1t-WGn6r&))W%B4s7ֱ o>yJ19+xSv^Fؠ85~},"ot>`<,J9 5D&OUHW/2bv.{LBB6skH3ֺE5۾J)X̹$\+P?:n,ۺYcgybwj{s,P T.&hY]I򄠒{fxHEA::jA#f۷HA8 `$ 1nWs[DŽSj6-{#{R?>h@wгu/tx ﶕsz$;j?((ܟt~MvlX2ޠ,CStwJ.!vvɓ &:P/Hcؖg%+;x+94Fe ؎ǐTNycn䀸:7~C39toǝEj>7"rDX!O^ĞgG* 0 篶A_!,~)8"( 2Zf miiŤt $ehނºyP NC/3buÏ|A ɰۑ` {/mh 2n&6j! w@vF$(H\Q)sReLA{JDD/|uF 9}^FޡҸyt8*ǸfOA }у7V.M7#}bWcG2İf"V!PUWz9V-YBuȫAڛI qPv)óWE&Ė[dS#;@z(4MJ.NʴdTOPz@r^k[?B( ^ߨ*4)Is.JyW~a(:YXCgj@iw@@YM?+?yltpV cj:q!(R2_'7:A0s@ IVmbK,[MrvX>7cr@ y"k%1\OEfɺ?naWƆf)Lo)`N;ǤxA|xR-t^^O71i×@o|LScq^ ׿c]yP^x7:Ļ~I{mhf0Þ#`:LՋ̝jwqrnb2ּe `"#!;}g:-%:ʽYHa'{e{e-Kn3/3uޭG 0B.̐[ں->VxӳXGˍ:qwN"A};cf8o ox_]0=].R-7_QhA]+a|&\RFcF0;DaCg{":mb;ڄ ,gs} Nw+{3 %i*]pJm͞xޱVn v0<@/@ 8&[tD=MȚ'[8<8 { l.A!ALȏ8Սo7 .-m%pM!'dP G"Z !WLGWZ±,"=>p}Xݿ28T*i+KNn_yڃ vru@FE!%! D3 lOw%׳(F\uVX̚ާhc-rIy\jj3wʎ%2 Pa=ăפ= e߯ߒ%G@&aDYFٲ2 x;zoO@J  eƎhkSo?-Fo ̒43QG`0LEPbL̝@z=֗ SViWxA'G5аP4;j1p%\'`Q \Y`˞'Lu2O`Yc]LlGohGgl++r+0lFljq ,jb_z!R<{poo Ej-}~H26 ىX'a pHYs+7IDATx]w|G~ޙ,mT\eiDs9 ! 1``cl0XdM2"Gcݻ{wN zwϗׯlƶiJ33]_U}U]3_6<_~O~/~?_~/~?_~/~?@bxQIIK5+; Xm??gHZցDTll#&b7mfi*^$y&!6'.Իo>֥c]U&91l@IfMʹ'/rDDԱoР:\SKqr `tkbjB(S2+%Yd9D||<+0..NDGGIII"99Ydff%yS0E_soj%$( 6Pa8)y )feC$;i < pdHҍ XԱϒ71t-_'ڕkRrV&Jf!ߘSIJ$DQ,sĈl(Bi+'?!^$EXXHKH)))"55%++KXglȈpn&# $ «%)OFV==Jg]7BLG /; 6.]P>b4M$&s>METL&6[dE2$uP!cM@pG:bUXy֪sP HRPsCצ'ŋNQ%fLYd=NrÉd%p([V.c_gd$+ mc@V AV@{2Əsi@Cf7y><:MsX@B i-OO,L; #bjX@?~3MlhRJK M*k}ql-EWRv(Y}E!bvl(K%)4-I c@2ETXt JDoݺ˓e8]1Oߕd] @D@ T3ݏh,$ͦ6vܦg(YsCɕ0)NR>-WHwү6@NIHL[ VL #D̲dI(=Eni+кi1 Φ,F|Kggg$͜Yٛ,Dq$I*bR1[ c\"uko]R1x4bQGII S RL5;ǫqpq\[Cqn@;,΃{$Sr,-*Sxn11Xp^额J0Y# VqXN"7mx,q ʕ! Mz)Y#!~SuB5E"<\><΋f/PqX1!/A=I[T:{[~DǤl6WY䆗Z fYa\ *&B9pI~I2R~9zb!T`"sE;,U8wX_O*n*g0Mpah R 3hjг%(8*{(MWkVRBGd`!O7IWg9j)>IO&!-'R=IgHH)cP:EQZ(o' )-;KOOc`h*/WtjӆsvUA !8긎+ƍnH"EdȰ`ԏ.qT/h@F^qQq1ٗ5X)zV#Xz{Q Y B.6<$]HC)h BbF]LsY xj"IgI ^!P 3HhX5|c7$`t!?F5&tL wЇ9B\Cv7¤N>_#2ys+O n.bm{c!$JoŢF;ч7Fq|'f+vp: E@7BC"l^გU%!=ڈʇ穼iikIx>D[}d6paA@NBXKGxv $v쨀+DnߟKgU<í*5a.& [q`\}kibs_>EW :aa2R6RB 0;NyYmkLBOpƍxܔnT?Xm=a׋BC/=IK 8tsұO:G B8E-5 $'q- i%}k d@ mK0;\5bW.W&(RA7 PnEz5p-E( RE`=UV}!{e < %*/90'M|סkrCPn*u lcG@NZ='$Eyxx\4v|:ޣKʕ⻟4tq]#;GXDF3M0~BJAtRDR>SFאkF =`K}Mm$7OV`RcpX~, 5@Hdr)'8H7k(/Vo -&tN)>$A9\)9&)n0;b*sEDK.TnJM"-SŞ օL-MSlO7|E7PĊ&<,=18H0Kicz$gV0tXE2<9G|ž/U\aāXp`R*'$=#(n]Y'+ǚbnI[b?wViCN,pu52{@z G0XcG @ư ^o D#GVsO d+.-zmptL }zCQpi@P@@ 1ux#ȜQtoV^$JHLrx*T!aζci. ҵJ0t&I8Hդ/Mj};U|t5>L6\4\3u]X8d3 4&^.6M6zqqC4GL&iGxb#p|E48*^qӆְ$@eUgPm>!xB4M#cTmswckU ]A|ޟKbw6N RRUD0<@]%%l\@})~@26QDצ N%.PY)kG # _=?2>24]ByO0ӿxs-/ 4p ;s {[J7E8[ V@vA]OA|P ߅vUӱGց#)podFwO@(5cڑGd9QBB \0g#Ss*oSbgɇL4 ^Izn-$tf%'~VYORñvj|7SqA\ &Yi,AXe%&(Uy kwPAʠt,\a=zknIAv&P>t^xR'G9G?m_.L]?S}M*[d4 PjbJ2u&)]]z ҅$}z6P3t1?'8O^JI\;'ˀ@ &48,@q ]ʵq݈)Idh;۪8Ï%q|]1Uk'0T8Sк sg|#A| oϛ@ǻ0 g2?|4<)ɥ$Li;mHՖLЌ ωuR 6<`|XE*)|C pdiȵ^ᢱ?3ݾ~BjpTm zx8%7Eէ.~gHi|-ٍ0" O$:TZyѥa ^D [BxDžEaRx(_6mxy☰it3TKL~,b/E$A]xo6KkC!g:CCJ{ (>HV93̀+LV47,2} }^5uvF!p`i͐N_-?&~GL>|P͝Pqϫ]_ nHCIZ4 JPasaH+d )8k/suptt'-].|ٷ(7 `8˯i=Nޣi<1Ƒmd}nm(_IOXraTRz<B6\5d7\y VMtV@ Px_hLh;R&:a- kYL&Pك/ o'X=( d:XerTy =Cj/r]a8lAs1&ݳjA8pp4>Te@1r cG}YYP>Q=#b(Y`U0]7N.65_iOw`d0ekz8Fa"sh#ƫP( $c'ؔo5pDMPRLS=xG|rLʁdcUJV)s;)ObGKx ԍ2ut8gz93t+OO!jl SS̢ogoRZN|wVs]OŃEa|c']T?eGhe{G"23C8tFr8j6x:rnjv7&ud"]on@OS,a%JX$y`gsCQ%;!^-悏 )׏wm*X}ޠt^(Ux:)>yp 8)JW 1qZ>7|d7ŊRB;WW.C~yyW C [*|(;oa/M9v$(|v#oO(B"M`t&Y1Dyy0tz׋$U=І&M`sh)HHpC̭Xozgxj \:\:1_V$K#uP8W#/rx4hRK:1f1"|gC'KwK;cXvz6g=#UvCzܢl5ppQ;ضm\'$S%&`YWq g$-qb;Rk_Jhn!sFqnz( /dj lH!,+YmBN{ NU^BZĖUŔa?*ExB|%an^,)Di8(+>bL>t7 vnn~\81=BٍkEz#ޏR&>,XE$MT],Oq7qyʲaIJcai4p3i![S&lmTzK$\(ynd[H#DT|G\"\Ƀ{:gR7B4}ܞIQVN@6$7$:ƨ|k#B38):.kbB?HIB]l">$38aI [&ksѓ@w OϩI%\V>R8yZ9HVKB;Ё>?NCeo9^ Cs\B J.lo7Oߤ E}AYzͫ[QZ'o-&Oܙ]=%+K_AQ"*'G̿} mZWu*mRq kdFS{AT )%7?@7 N s& 7kF*^WX':̲Dx2K+$ς,߉q'F$`|YDߥ)OI+w;9ݽݸr}5߽_Ȝ76{YY!c€cɟCaBҫ\j тK D,z+bRV`݃x { xu+&AHsH "pxy[yX3L&8X@&(K=t~!-7esgTAɵW$8{yKd x2ZGFXUz׭aw5 TuQnUŒABιly4{LMꋌIn%vb@arSlpP|2kvtPE؝S J")o:![31"[0C@x@n.9~}Ly IC|H|fb)t\Z$g̑"4ĵxx*#Rz)6o  l X@O;~ 'W 1 }k E,*F%^IAEO{ 1k|oE=,>~5oGl&Գ ͹/FI/}'wbX$XĚ9b$Y~lMwއ !^xnetanʇm?x_#(oQhVEϾtAt,R\Rbgxe>8k\>~i A {_c7-w+kO֮F d -_@&K]G!EzXn&owdU>(.m,b2?'kU=aǖyaR>B+"Edx_d9m)HkCNʮ_usY)_urߝJg/<'d( \w_ wu)EEӅEy#ɽ"!;iD+}N}ЮKʒ'x@"X:PJG:NnIʊ!Zq&q*V}*q_׏y)!UݸGS_鸅?~Ϗ0H^Aޏ K dO˄_6Gwk GfZPv.S @WhWE*pէy1m|kxo/]?(@sbFn~zatY8Er˻%H=e\ ΂Do&{./~o]`y{-a [C@[jW;X|.cP~ ^~ڂ~Kg?cBtmpEvElZud_{\ bqk5^J8c?9goӘ%gQn&VNjq n' ~`'j/gszrxKdMA0XJ72J'o:e $uk>e &N$F~; G~ h_sdO{mk@8VxP^w'zĩJq)yrIf u}IfB}1da\?S<1[F)yz7#փ݃%̘f>)+ JmiΝ٭cœ]e@R#9io1~ܣ[6mJ*HYϑUV}X;O>Kl$~<#RR2;_%;X}GݔkNVrp뙩!u.#wYX:=΋ߧ.kϮ̨sX3,nT7` -4 X NŢ6&d޹>C OpHp@ހ"vo 5gO'7 L>=;',LOVDxzP1nH"m^ϧ2Y؈v/(d }yO\ʇl}w}SY:왍uoݐ̞,ӧehc+uWAxE xYhz3 &gB%CA35<-!W)M͓ߏJ[;6ʅ|o"yvEg^[qq2Jv|!KgE>P+4 gY+`cUX5E p"t~xlޕL#7^POos'V) 爠H+CfYD#~,,Z!Ǒqt>Gakk"-Q@y;oReFF_\rmG?KaRśb;W+Ͼ 0`ΝX5Ԋ|nP(-g'3cO}[ HО@<g)NfY(NjG]lA^XKڹV 籧9Pcu&m?R-FT޷}o0cnn 8 C6>-t{ T|~ ?;4 kآ!2Sw`L}`TT9V=#"2ex y@,rx)VF+ v} B]AXTĞ=a/mM,m|/mV8tjBVl\cG֏lpIݻu׼)H { sA~6XQ׾ S08|yk%Ji2% Z_Z!Ho:Ivٲ]nk1`{ pzض.ߗ_ɃV"2)d2X3c|A|IM>2 YE=_ ~DqAVV g_`G^MqzY@R _gV締t_^H.N>t Z!d# "^v$\ZϜ!r;XTsg* 4bl^>@|`"yܖ$v3F01`JV  xHP豘w0=bm;u1{vn޸D8;>W,ŠAsC @@c3r\XY*m ;Ka!6^Az+v[~J֋!=^cq ?Z8uc{߿pTMML=c'-sS&CL˸( ^|RAQ|\1yhHxRRP) '_N$˫>Z?)<^܀/Lj+s*O*'?X5wPk!3 Ǐsk"hI2;V<:y!:\/3ETqԫXF{]e[=PQ7Z.iiV~un@&/[$IoJ]\ka5o80-_/ 4a2òr.N{`3Q<6oRqiМ8Hhopݷyey6Ԭ;Q*#/ %׬o..S6=,۶d]MOeXfݓ[[{S^ڏ?.zU]+21C8Ղc(ʇ]XhBJ XPx/%0h%0~q5!,!ݒ97]Z~}.ç\%R3UrFJ%ëhu';J_Cg`=9Nsy=*OaaUה}`, xr}n 3NEIڢYnK}ΐ^$M}#J~u)-Im #ݻƘBz,{P.'p*+ U>QMRb>}ͯ$Z ZO-4Bѵ~xxT?7x`IeU4xrTi©ԋE!Rܩ 7E` yv#+9XJC-˟?9~Nm'|7~4 ܾUpԵ.fk p~ i'~[1cn Lz n,.5+fVr_?-:n˖ֿQˠxzxev)({)^z*sy;~.>~+Q1u5}\ZP2,ZW :e<ۥ檝~/~?_~/~K#f̸Z>IENDB`pybik-3.0/data/ui/thumbnails/Prism3Complex-1x3.png0000644000175000017500000000667113137372656022207 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+ kIDATxyPgr_r.jc1cv3lS3X *&+@Z A,r6F԰ȍ4!񾟾ow_va/4}w|g}{2 zHzH H H H H H H H H H H HU"fxo !ATnH(YWEGR3>)*o358|CGE)huY9\%G/E.OCӐɱX,Dÿ9ٳ $ywU&L  Q8b1&)H+QTZ|:==t%wS$~wdlky**n݂+V s =FDžyA `MJWb?̚5KODmy?纓W껋(>)d"&.|d2oYnn[EEޠ0 ){uxh҆Gw^$5_Y9F$xǿ`'`VymdLH^j" @}6Y \أ^3ßqwAA< ٙLX47Ԯ^ sՓ`!w7 {bu_d4 ʌl{ `M2 xk}}}'g~3,.Ն Ԙ`זI+rxkT;w/[6pG$ݻa0תUoz#5 <ȑ- 'm6 `m\bVBvv6hsuZw/K÷@$z{{v,pL$C1.I>R73U*Xp3JͲlpҤm]DX[vO[h$@p%)$Qxŋ 4'NLv{$ ۶m۸XdZ_#\m>~\~Xt) 1m#Jn 6eH!(b@[{4ז-[1 WCL3('.wa Oi -ۍv L |r/-_4 BhL@|½W^y ===FrBDy?yKMM[?.fdeg/BDD[6ʕ++-zM=R* $@e]_~!~/55 U ZJ-VI qwni~L JwB/aӦM|1( 1^ cB{%o㌁Wl]4 eeJ݀]SEF…  `JK^;E !zN&qDZal x7YW mmmvZF+_>磝hQ$|. EEEkN姁D0ӢFŸ ߝ h=s$8rAچX!q^+q_+ apŻHŠ_se%78|$7c6 כk7oބ FW5MmCYegJ|D%m``bbb'y­ɸG.%"@֯_aQJep^^` :7sCeET$ltև|A=d9sFX|[k׾Qf <̦|چ L `"i$L%2%^pwwG 99 k@ )q:uCd#aL L `— C}at< ~p֎?dAZ*@בC}6 :Bm"خfmahXX[=pARRR ` P ?8@ -RWsc@@pivc7O M03U$ظqC"vX>z`c~/w>Z]+}ih)3v%P91m8X4%@_H~"||AF @H竌ɓ'srr 4^>r`? $v,i@y7 i`U~|_UUݻUibEn|H2$/!?˕9B. sssyn^nyiGvdgJ/L S^{88h1F % lI5|@M|==patH /5Je{-}n7,&ؿs݇ g{废-V K ;B#+/O  0~.pyv8/sa:&@ssXeܕgHcSf|hj 0p8p:PZZZ8Yn'wNmW\%C |ZULtS a WL%           Hz/ӈ)IENDB`pybik-3.0/data/ui/thumbnails/Prism5M-4x5.png0000644000175000017500000004006613137372702020767 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+?IDATx}w|UU3$~{PB[U@X@)T0T[6ht^yu׷>9037sNk=}kuU~~P?ooooooo8zr+F;.][hĭa?Kl-KDgЯ"#CNscSaԠAjVu>O;rn7Jo07PARb% {pl^d}҅R\\]k*O@ϳpM;w If: AofZĿ?hԓe58~?{݃|VM *{ψ=zfOŦd8BHs|E:hamZ1 0=RWVp) 14wσ99ql1fNLL GDP;P/k/V>~&j7Pn.B4@@ԠzOgp&5p6 }@vʩ+;ESΛh)n 1aTA#)$%DF[T@CwN6aZĮ\M$dznMږ`q맆QVrjlB.p}\xm~7ж>A`OhStAω( I4~ S a V>) ff| 6~=wp -1q3 e;(4:?lRd"E(M5H"@;nKt%LC`֧ afvK>#A{Zgn83(-7/gHwUϺcU?m$?T ?v 0s0@A$F\ٓIǴx![>Һ#pi-Τnzh0cVſ/eb9#=. E9&734?zP4hn$xa1x =<`kA^@h x5s9pXԺ95pNF2>b/< CAub8u}VkWG @ _jh3\L:u6H;h !0uDF>Zvn+fy6^6}-3f`MОaS>gv|>Nؚb_-<f}+}NV=|%Fk D0Bh-!4#F`ƤU{ڕs2i |E`!b+&Wxhe[Ci&!O&(t:$~9MȦZ V(.f ʹ6 rkd9HV|0j֐L%mp^=̓p5 (j<ӡ W<}AD[4~Ah']B,z:ZP x_4Mh:ewq wkq6&4KA?vc] 7dQհ}{)c&/Q>cu^4ak3@pm+ L4\hP+ Dj)u0z(b!Y_w)ɖ&O( gpv Qkp\@S# oT17h֥WhЎ)U++|m-P4~<#郺~kF>βeTi \/$ < 0ˡt q=G@anrkg5m6xOCff8:MX =HɕuR6Y1 `h]o5L`fp3 9x pQ;gzE+W|`C(Pϙ|@dmыړ6Ђ"v^)R7fꘅ}pP]bӷ]^4,;evL{-SuwRLN%!Z@bPG?Ͷە3 ȡ, BONLnNZ2-Bl-_C"x1G߲fԙ5 G%FQG <eJ$,8(+97IAKş:"׃gx@ g9(x wؾnx(~(l16kmdfTpzAZi-PXMe`AxOcmks:FM"a0@9 68=,(!,|,A3`@M?Í=@=Ceq.1iWKk~|_p`G(vӟ_K#qfU J} 4a³-5/!<6Rƌ;_f#gK,{.ڵ.{']C O H0Yȯ[n9chݏK{Da<àn,)(ea)6me;:pHnUXՉXA?B2 ^q$8`8le\GS&qQ}]H\WLON%}-䲅 &F`d#ry},/fl/0'"zhܷ.Ӝ˯SnCm=\`wp3aTvM8Ae#'ZA 3 :J̄^-GZÄ 1?䀊{%CIP9}6>1I4'œTAIقhoiBkG'}K.yZޯ / P 6 /0\gN%8ĚG.QZhܗBɸ1:vmѼIMzu6i*|s}CUf :U29_S.?!/&3ҋUiS?46T9](UK0;Tic1Ka&0f_'G1p*P*lX(ka f:s48]\O4X&aLa; ڷ95?}!B$^>%|Eu `ӤSϊxA8gˬ^AS&2Xϝ^yw/%6.>%ȶa&ZGt@XN Ex)l2fN`QP4B e &܂bn#wn> 1EE7kV"Tocuu 1# ?sZ4Œ_nwt\,ބ@!n42 jRJ6I֤PL {R_OAt7*MǷjOYV;>[uQxH`X?wӥ/6%`g5dͬxzm@љ|ɳګȏ'0t.F112%~-I|.ԱYgp@P6wrPaMq-l ސ|d u1y EzL7wTdӁj2Z_fчR5Z Zc%7o$ ^<'`3h]ʌF ۻ+J82[fljl}Kߔd KRaNd 0w@RV(.x7p_hFf8p3n߽ %k>97Xc&.oeO3It^tKU+:58A|QL,.ʷ`³޽ͼ9bG;-_ݔvط}YԘ+*R6u]o.:YTD ݥ^-- AA ) ` SO!9jt']+§ZDu[{,v o&@nsA7Ќ]C* 7Kb+X_,@Oiќ]r8p_ , װx N ǃ؆I48 H~ˆ\Xry+MxYr qAQlBZ@vAA(>B%&@G=~ Ƹgk [͜?-l9c\3NL0|gH`85AU:l}S"WWQ:lCtB}QW#Z05q FHRf"Ёm@y]W}`T>D/낝lߎ&| Io/Fs~,)z~pMMLA]U!vPkc#}sp?!ݥj獉cαlzbUMʫE"^(XxRX=izL[];e`C"n=K2۵Bqf(cYsྩ1p $3-f϶z\3J7Z.5Pf÷k ~kq ۄ3;X^p۪ҙ,5~pn-MlXD|f]`/v f0#"F B|eεr$&+g(]3~$SPR$seV?Hȣ0{}pyWs-Z1M ['G;<)NB"61{ٲ: 0Td.] Սf|je/?|᠁5b&l[4.o'7o.dВ4{>70 OA_2S{I4d9?EUortgr(A"}XwU.nU| b!kТCWRF Aj 7 P\A>q '>E3p,^vͬxQkߞ:X&d}mL "z8oL*H%FF2[Jd;ܸoLWPQNx$`'kAUDpLYl /C}|/o`.| }qx! ׏&ϟegSjeu˚UАu:BC!:*kڴ>d a{w`5{~b:'7`t`}!{D2p$Z$f:$>Gcc-,TmCX%ƅdLџTđۙCU\`Ԗ{+Pf}0%bAzBOM1؃{ 8aL]Mv)y6u}("!յ)JuIFq!{Z-W5Daf;8i;;-qIt|R0ij&lcb]VfHL;&%Yl=edvpõē'&`v]0_j~GxqWPztcDM:>,D~yQ+EiבoS :O /u_.UU'WB/ M,[p?Pr&#8;yIy(: "`MƏ#'> M.|Ǭ|y@>jνc&\"p[Nn4ڼ(PkayOOQj^o(!a~BZOLT}4$d =S)T! d1Ha@n*|17s1xE 8썠o @^ fO8*5/{8ȓthoA;':@[gl!HL5U8ACpGʳ[g >A"LlD sR4XK&HJW? fnɧO @ݫcW`Wf{pNQm`V#&p`"Lz95u{ _Yjtm^S ׾x@Qf8.~ETCQzk,. 0!dbHZ4`H޲<)RT ~fA}>@ jA|rɑ ^kV^?DTyl 0:.[p|͚IҼtlfݛDh8OTgށշ,E 7[jy*8:+LLT>.KČf W{*Qu//ڸA:O\1}qrNEV7FQ-_Zz+PciRO!D)C m[(,>ڌ͛U 4[H<.y¡b.$̎tH ~[u ~ewT"`z$6Ok+0 #PsDMZ?pSխD+]ȦÛxKyfDػH7G7%1TTp7=4"s|1/RZ51ԡTdCYTvXz=o =OTXHѬ۶ɠڗ2 uabc6 >!fXyj78F l3|#ĵ\H,z#K xE3:A B7zU0E" 5^v/8FeL)G?cxv.~0ɧ.DLX϶Fyab*R4AGowo[O9*_QNjc)4g44$VJnuw/7L4R V?UR]AlB6^ "V}"DN6Sfu uuU^Vqmz1*b`lL ]VnD(q~e\lLcp@VjӟȢKO$a:g#xŹ!B?|ae1 ?xZ!4P%dYUuiI+A]Fe  +d,`8zypg\oBUòI^E$h#}C+{ |{rP\燋i@yt d(<8"}lZ*u,9q W* d!P`c*٫wLl 'Kpalm66rޕDbmY3]~%;ujڳs6gD ( W h@P&^B>ѳNUA>mBZw*l:?jA@ruw ;N+ˆ3)m7Źz$^J{|@kV@6-%Cj^>-2`U..?#>@}}ګ9I)9)V*LY~XOL o@!_`+2'h`ŠHEK7d"A:x6[*FmU5[0Ec$Loi1 [U@e~GI@}cH0NZ<1\jZ;wE˲/,4}Z܋]¿xnO 25: Dx"/9tnKbu+r`$~Q7X8_ Dc~dLI&(ж-x[jۄ _t"h#P|R_iax7|Ly+1j!׷.J ^ I,_5q /I~=M$HsI2G8&B9e ~Ybm$C}*@rS?DAtTlTe}!;5)Pb7CeECmb'[Xb_ 7 ٽESl:z|dO #Dz`j6Dj >l*%4|?\9h|2/l}X+Xs%;6ǐt!)ZL"My]A6c 4lb0 ހ 3Hʎazc晢G~YW)A{O= TA ޹]bV`Fq|շ:tpfzjx|d궯kW/>0v}dqy-0WtoAvh4S< fCP;y=aI^bG>-{ ɞ991cͷ%l+)ţ O(Y=`X&16)Ru;zYeqwSjA{\4>}1ժ_[%d_>OU%9s)$" k^%`tuػCj pS/Om=?)_]B6~{; X;>-fUy^>pw` YHײˈ2/RݳN2ZO]Z(!kkջVkS_Ȝ9݇S (؄J!1۬08.Iu6|ۼea_x'uLR 9L~brN-M$~z\`"Y&EG4!|ukkWqZYkFJ/ ?Gl^j&qrk3j{ bq+6RDtsTTѷL]ÂWP^LBKTXmlQheX?~)E"eWikX>N D- NPk3˷L|`3PEj_ j%(jZjD 𠀳sk^6AoC-ބ8j=dSѓJ6`+]QBpb/ ZBcUsgL| 8W>cW kHc}HMTL׫v؋$dq0{!7Sm"sd+{_Lu?h/$E! f: f7j'PI_$Xgv0d/B>#fS,$y9s zm{uF Z|c1`=$l!49SR" )'[=f[vxGOL3/?aN}7f}X?o{i-U?Tamw`P%>~>E D,|=_g`*q*c˱U^$apxQ̚Fٽ1: #.?;FV&$!ȱVy!GMٝ hKo+pt{vogi,.c`շ;GLV-Kbhb#]ºp[f]j?2<2SG\= l:UKږNҽˑ#n5dXtjCh6FA),-Xݱ6:5Y߿S(]؟H?{7A48So䠟*$$>~wt:`Si C?{vr (m,qڼIcWPx+vi,?/}SG5?npӇK7o|=~~U6jETŞ@p @)*QY3XXhXR~C_fnrjK JQ,h 6Į>/w  ځ KxdžN]̴Uv=J;`{5zfV^M*`7|Y<1!G`!ګP;4s*[MȟT}DEmʜ_ˇh>&L$UbI=Ff=Bvrɶ!s>f6p<w]]U8عAeKT͠B#TY[࣌j!?UgW~t ch_1D#`@}%Y-?e;ZZ5{Na঍XM A Y#|đa pHYs+@?IDATx}wUgZ:3 9gD@, PD]#bZWT`BŀHD]Wװʮn}yuWսyν:=99\qpǏ7G|?b?2z䧣GlzuDqGϮt%G_V?}xsx2:tm^o#͟4v>^ ++=BEݏ; >rk]'57uCt3Z')\ս?p3~Íj24w7ʔ' 7,>Yk>b;|g.+2̥d.-<C3d͸"dx7i}{5n߉ܱe`v!9""L`4+ɀ'f}f*{Wᢑ @!tdg[x?EVșnCty3B!6>B,R2m%cJ5X6~F?_XM T~!"@!#ɸ 0>$v2~c] ::tɃLG``;q]'I2yÛc5< ]S=QAlM۟GF֨=X p}Pa |΁P! s!kxε= ҹsӹve?V&#pϘ:1a|ܐgq0qshgk5mw$=\y*ḑc=KEܟl!N <m;{짌_B1BR>h|d[v }Ҳn'r^`yP)dhx2 ZAsP%4Ɛ&?P0nS'бF@&PdϒL}8嚵T l)8V.q}.32V&>A7xPܦ 8ЗN k GƣH1< 2 ^h<L=Wp]^ΞAZ!~JX8iݪbo H$8c]n$+$^v 3hJ/[MZUcHT]`ocHa4]Ps HkgsV!'Q^^,0ncsL+ϮpneI^(^.B:%CG^H!+;U9(Ю];M0L }[;\Rw6y,ǽ@@|@p`"`(--*| ECǺsULtuieE`a`2X6082B;fjR 0pbؽD%/~[k@|y# T`̚.캱4_3ym)]y ]Ŷt:*0 0~j(e?@Q`;.-$`{+N^ * SzA:V0{D'@P1Ki/d kb%$! z ͙6}II@J20^-f7B( >3#xV]帎=JW$5d1`0>>T xI\*(+]NʦZ0GdZ!c׊+bD#R xO)&| A8ȇk) xXal):UIIAIIuWqVFq.[kA\ޡ  $cx\88[s!Ic_8;$.b4E!|u+BC/p{ ]"RK^B(j)A/؛ PO[mx(ŌDy0,B1Dt I.B@{E`%kƟ='#.f8K :<ܳb;t׻lJ}KF@FK}Rݜ\76upXlXR|W맊2ǭVCì쟊r,a)S*&Cuks廷 MƈnG6.&'݅I*x nЋS-ӆ ާ3|E4P HNЄmr1a}Kk2&mtC#!i5tU3R:KEZ+84xX6߯)6.nkz(PVQgU =KF!Φh݈ Lj⏕*vt=u=EިtLK@XHu[b 8@:υNU`9~ cx(y#nWz4\]!3% Y*Vg{?_:] nbdǞoS'`lRFq p~TG5c(㗩}eCIENJr.opDf:q]ݟT۹p@G ^jN>e<ڬ5[BoCQq13A qt- 1S "jZAY@<.|=/*c Ϫ"*v!0e'wF]%}߿!Z*~|F ]8Vů}^M2p&%75>pRlGvѴ AR%0|T=dL5a\>Šu,ƟGpcqJqyz)w ѱ<T~AU;[ &#IXS~]\xJz[9˾p(\ (C79U%)DO /q BS&݉2 ah$9*&@lLo"onBRDW{eo3mE^ rV c#Z2\58 9קPs۝fkhU3$f  /co?ðH*~#EY|yKOhb3W6uI@vFt D{.Kad{y7(M^L=z L+z'sf|@":Ȧ$Бr}wQCvJkIwVVzwZ{u4Bިp@)`F)wAbvV;rz蹦$ڰhHᆀ4/_^C7BB(Z_P6+O7Z2ھf. h!:PxN^@jX OEhUa/H2}w)Ye` 1uBW_:8':Low "s$̰C Ұ}0ک7plܬR[)Tb[90.Z{&,8'1 9f 3i|+Si-2D`?ytO0 5|+ar* #{DoMVo]jLQEx:s0p!;n)"ExN:ԋBDܔ4]/ O(c`fH7.ȳ4`u;Zܻ}sT|)g,vF hSDTUU@XU⨘>ߜ^L8z} Kg:%Ư\ݡZW׻Nr8Xv}48?kH0<_`M"HY;,-0DNE'^YDs12>f#=fa#/qj>@y3i|/a|}^Iz,O9!0= n[fC ]%q+j[pW띑* 4پ6`&!lA>\A Ź:=;"!c4fÀmmƇ60'Kn ʺ>#-ytS|FpK(؎ 8+'Ĩ2lqYrX8UJ_P4Üz';C. + }O' O7PbT60 JƓ+'ߍpf|ޗ 0 c-0FPmWX;\a&Ha>N`tx [.2CD ++W.ZP8o?]{\>!ݣY8-`=eh>*=y[,~U;Ȣrqh+(HCxzPn" ,HGM58jۆQNJ$o6C c@PHf>P' H8<Ksa37Sw,Wtf2>t?ΖŎq.x\n.N(vϠ/ʢ) N@rіg: vNS%f"Ά0poSǑhK^)a|F OC >E,4JuW>gqRƱw ƿ풰E&UGQ|JeJW$hQ pުO)s(A<"8a\aP3ƍ'\^m))b..j!ͬ=@|Y >3+s:j/[RT^`o#"dCDcǗXf>nq(wcHE2⭤ -G|J!SkpCTMn޴nYtAn#VMjLw3*sDҝU&:Aᬐ=(E i D*'l$Ao~!^DK4qqQF@G9?ZQUjJşvWpqRo[ZYrgz|"7Y=H (y|oUB ; 8$;MxxopQp:~!x,F9Ŕ*wfk0AG㛀pѠDj%x;9 psO7]Z=A` 1Qxp/ \Eg0#o 5)c'$`pp(Tcz:c& R]bs%qwyBƞh3>j4>. :$nvc|"|z p S,DCX4' @ \\ =GmDϡ!3|eZ@>F"ux`0q*t) qZI@=' nJNҭ<OQH;.c{e+ ׇē?3V]V)` +N`2>(@4>~s N %!j`|?MuܞRCWisܬ7 1FؑzI'I .?L,AiwrM1^{5L\,|ꔮ ü▋7, Pm\ mMG q ~J`=Wzp|><[z 9Ce_3036=h[+ŠxC~@~C (1BMOӑRctE)wȩ_&㣞0#^F7! m[_DAT ܧs{V'Px Q3v_}ҽd<&ԑ-gA_2N1r -?JeX?@@ҩz/ ;y5k#PBm|d amc40{/-վlF6Cn_  nX "_DZ6Px!]&m*420n[amL#H2_7Pm\SzmK]RlBVFob0n#x,o*\Kgdu67y_r2_V%3dŪ Bu4Z"h&\hp"} $a*w,jZ&zT@Q$ HN0Æ\;\`\η@sW84p[#/gia箫)jq~유l+"_9J%~[g墹ʻpdYG17WUE,Xl>|rjxFa$xmHd&ဵ9JWu Ax:o3>6 oK>y_Jq"u_Vs' !=ڻĒ~N#_TJpxc[CGQ@ 1@Z@ZR wGt'RzffŠ-Mh3BD,Jq/DR`@ p7$^z#f6|\5 j?t|GCSJ{tp@@& jww8xԞIyL ׬7oFQ*@Q6!3DcI;H@-l63v L- DN*Jݲ܋>nWԶ#Czm>ۖ'KީQ%z!2$ԒGnvP:Lkw, r Bz `ٻW@-+ť]-#vcEZ|lK 9`a!$au3VA[j헆or E!X * $CE^Mn$.1{OD)bݓF,͙?P_Džȴ+?ݕ;s .ep("שK -".?.'u U d}Jq~wYỢ>$δ;LMvg _z7ItyA#>@9}4>icW#l r,W%S2uSNiE @X>V VMOHV&ꪜbX?77r>xw,BSGZe7.R~} Æ + . h^l  X'ʕD30x"e iyZzW8d4lıPuj8KxOBDO3%O1ݲwp@w79~)j=  {Ls _nV(\)Z%j ,>Aq8-d&EpXD4KBAksIc%{ kt;m+SA @⎌ R~s(!DTc,qp#?f< rrϧ7vX2CY@RĊ T )ԗj^(g59\ȕB9&T* EΖ5<|A| 1^PcH3K_đ{M~\ jӦ\",)ED}K=Vh|ztkUB6c1K6  {7u`f{P,DC(:~Au< A e~Or?U&Zh xGMt( +~9 d"^~Z>rx_@bM_q-p(2M(+Zz 4z=6{B_Gpk$|7ϻjn_1? PRڷ1K.5G7oY,jiـtǃe%QRȤ ȼ5;RԨw)2 Iba1֋C):g*OU@T [-+ vxJ|Z{Yj`fV3o?#ѡ:~sV{Zָ^`O%q^Rs=lrIպÒeX{`yb0M^߹x\ VK][ ORU U 5y,Z~]~Fl{hp>C2Y譕{hKGAy0c Y!vX.mdje^þ$6nsu6x0ר2z9W1j\+V`5ol.mrͣ+PXΙgoT9t8_Cٗ˻ vdWH%^V0Đ2&qe1I^!K;~D^ XҫZkx-c, MR/>\8z{?xxUU'ֵ%q>~?F@հj5ގf^`A cNaM2=$ofɔ]?X"rr4 p"$Sw\\s)Cyk\ho-tsN zɝ:񂰨)3E$>_ i</ >&vXC_o "Nь쎸 W*π(kjqDj]_P#H((L ͳklzFR#h+d;64bsb T@_w#Af#eȎ"wl:E-<.\%a]:kxgsPOn&]k[x4_4CZ;%GK 0p-YKFr:x"4X"=:7IROq#Џh! [ k_[OKKЃr|{LY m_xZACxڣp+5^ jPB,eY,4{T'pإ0hQ ]n&[`z3-N ΂Av)ܳ|ߝS˹Z|>=AsqˣP&`@T<|}˧T sfZ񒡼ŝBw[ӷv4YjcA~k*CKFANfr3),(oڳSl+K#Ĕ)#߷}.)5\PJ/4yk7 =N:֎8CΑ 7u, De 6v4 ,H\&z>vjC2‹C/^J>MVك.!D9{u!sJ96#Zi "H.4ȕKX&<]۹矯Im_?[1zu nՠqzbG7( ]C Gu*?^5Ⱦ,?GDTJ6LHB.!&&I#W#`ρk0 ٱem=~=0/]^ߐ;| l(bg"?,XE! б=8YwKWHUAG`Mb7 2% TvXjicx-LZ'Ez ߤo6@=o#HAhF2gK=ܿ"(+{di: ;Ed٭"9DjBfٵ+ | x{/[ʇ'^^~5eߨ?l؉ҍWL B|ld2UY7E b7@Xd֕E"߾E(Fqpya؋ɦbP 6T#o֠H^|bzq&u] E`<&С}=WQ0 /}0o@z71Ʃ`Ӝ12JNjzuZvwv$7Ζ535HyDRNZ j 8vԮ֋fM%ӓ?8RA7n_ϷV=ghbOk7sWGEf.)]δTM דOnf %NV)<#_ϭ-᝾=/VGx/l V`gaXT d3LtWE,GaqO&&*R5_T=XqnUA}4b=a_T>"~{VX &qD#kJjp-<`#~ڄezk 7Rww0kʅ3"n!P!lcDjP<⭟[<:.Z)~x 46[|)؁vx͜ %^OZHsQ_:=*mky ">#{xZ{eg +ݵ",~#҇;u>xC+ ".sm4 Є0.hJ ) g1oWV*U֒mM(VqHZ<?[ꍲ.KѱcsH!g7%E4䖍^m o$֛0ompaU6ݽȉkEѯ"b돥} 0Lb&dg뢩e')d^OM0L`.p{mЄ0blMI<@(#C03nx0d.z3sH'׏ĩ]>T)L3Rh2~~`ywpΡh71XZ~+'Ǿ wcKjt<ȼY"B\> a߷oKKsc^~'Є0_Sp<B4N)' B;ֹ. s'0ou  dDtlJ]gT+! *nNP+c}K#_:f] )qǺeCP`PbYDХx'^Y^`ky({ϭMp /?7t >?؁jݺe/_+ gcW @CCDn|1_~c3hk ڙ0NN$c1.b>ZRqEhZ|~H<+O!0\/v!X|~H'Ⱥ?141>%x5{w`N0]* }/, >? [̥o`/Vlopw~6ƸmIׯyIENDB`pybik-3.0/data/ui/thumbnails/Brick-8x2x4.png0000644000175000017500000001443613137372573021012 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+IDATx]iTEퟃ[CiaBB ʪesh۝7TDeqD[j3s=SsiN̽񨬬YK;Ud|EdG&N0``&! C& L00a`! C& L00a`! C& L00a`! C& L00a`BĎ57Z)F^uGI^K?][lpJ!f w8!^nO*IF)I>3)-  Q><0)!vO?V+`d +Ŀhv,}#J0n()*jyk*3ʼDuK ֛xljN#[X4A|bA**j_{W Xvjp\˼GS0DyGJ8cvGռX 0-E(Fz/!|I>v;S wCnԥ[#) %^ ]svA0EPIX5LTB":Z+=Msi1b@͡>N2Z1e7[|+-Cp%W#ԆDf\;M+pݴGxR%A`0( XIk3>K{}lJIDc&W\Iw{_w' (7 uJɑ Pj@R!Sh &Ae}x >Kcx8,Fcl>U{}/.l|*1)j\ lX*ڧJ<( (p.cE3ǏxcK¸94|f<|BdHkX8^ep -ʼ밂WvLXm!yITW$񼖈w'{u~zFjbXxϯg~ _t!- dڍQ+ȱz^3[-D4uX,A4qLJIم gFtO~t O&y:W^f~!gʩf2EWWIi%H76);;I̕:MRΤRӔxvíu$,Ker;JP ȕ|X q#fqKpH^[ok=(qI1cE>ޙz o- ێS8 X/Qۤ͜w[BvO~ދ+v ƨ=V3rJ/>ш$C5dƚ6vZZ)/*l1c GtUV[5-O ݖewsv2!̳E>4挄(_dMJx&/v"͌eV(GW06#uLSWE 8&UIںv4e8Zd8ݷ1u-Vxe$"2DF lwޞÕ?գB}J1D+M ~{OSʦ7W^nғd}<22/$t?>c9̝RqOfL &\II5T*%Uʞ&UhW_% ޡlTAN9N04Me&~^b`<&/B•7dT6i4 5vWX# B-)%m)"Tx䪋vd%;ﵔIp#;Js|8_$wwtςx\w%;YlW7Z˽?V$ CM*)oRDYK!ߝ"LtvaI>?1{2;]o&R]\3nKUb<"qo\p{RJm᱖H-; 6S-EįTb+`b&gI ̠\U?+JÕ"OiYw0 =6>t Vq=bnXLecY|sO2) y/|$gHr=(.-mW"<ja sTjj*ERjB9!gC&`ƴYI*s=98*۸xcvP1=^I3}4ϱ/ML&d3flg&Q; ık,zpx;X=A|J "l"BalRrCPB_I&)UoBŘ4zEu.X^vEyrI-״tk<1oyH6`OUF/ },fKUH' Oc+GtReJ)!I()٠y )I7bY)TT*TlAjG>C9) ѰLqKӮNe_:;, Jb5^;t!$+8 WT!z֒jAI ^L 6"5#yۺ>shӧɤj(4z $_˽.dq#Em\'iw¼KbEA#)ֿ[ʵpGtT!6}a=2 6[KlRi&G\& ոQO՛AiPKI?ߧHlt&:XJdz $t`8f ԆgGT3)G 53â毺mCw'@Ur˕A @piZu?hfQji{P)Vd!=8T51Պ|&5~ Zt&W_~^ Y~9'̇۟ST\2}7-yŜRq?z4Wؒ@HcPSǯ \(:B h-ET +i$uV|{Kn1/@B9& ˺ܮ,⊈߷zT|V 8Nh+ I_"2]I % Bփ+p} l)/w!B´k} 4="ړT.>y,dq…r~\zÇU1/{ĐO $DTb|ރ8?DUXz6UH&3:SרrUx"KT}N[:<-E*ޭ+s׎9=<8:MTJv RXџ'bSPOeEl<&@* !jg;_lw qM$і2Uu!Ǹ,4ј.ڧDY@L ]m)$P[yH|~ H@c.O ʼxb\_[c '2UÂVgCJB7[H9[,E8`_5vٮ)D"R`"a1 >S4}ZЦ/y| T5^? p)y ˆ!>!~_!^Uߖq*[}EMc7N_бY\9Gj>KŤq H_I#H \SIv#tUM J.ةBזiU2?im`W@J~O=1(>Qz榻~?`o̟mU%c*,H "l: R8$*MNojNw'E˃bqXH FYxف=:F_X z7)|^.BnNX|ExB0#|Dh_s˗k&e]\qW`Fly~B=U8N RjMgIbe[T)i/GrW*+)Lk6Ua+kGZKX,4>@I@QgHk옭& Amd"~yys)mxVym⼁^)^$#}Qcɼ0PaJb=_`D: O,ٖ>|fn=9U"q>t66 )"(PgG &g=*(*CyqĐ~^a1fyPr ֬Ϳ^a  `n!N`\~,%0 g8cmsRDI\> aW}ër[tYXpuD̝ߛDR.>iϱ\#e1]~4,yjOqқJZ5ED'c>x O7 @UgN #qqʘhcyK n8tJ| ֬͛mM,pAvT'X"uWC?H'd^W3}u4R ݫb"ā]y|]1RN qa}PE@!J|r-']IjowŶӝJv+k=%?2Ȱby \ "MYe!X 2Hx"2Gh8eჼ?.913f PW @_%"Ǫf6z ~nX|AwlJ>C.g|@Sc^}i\BȦժwV4{J ~>1WGe/)m5-'WĜL@I^fZOEE1Dp U=*C2fm-9O0#{3 xWTv0cn疳$@C*@C,0=|X|{Orrºf6X3UQr-(usaOnz7`ᕽM){rvkÞ.?.%!QR+zSxWK0^a !uwUt/6mUUm ,0u ` & L00a`! C& L00a`! C& L00a`! C& L00a`Zgn~G(IENDB`pybik-3.0/data/ui/thumbnails/Prism5-5x5.png0000644000175000017500000005114213137372672020656 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+RIDATx}wUչgAfN{/ zwf(C/* "`á 4Q &шĘx{>kA@}{}KOi~O~Z?~Kk?@¼|w޻ gCH QqVN\wy կBk}\G8]>(_ϛU Uڰf{gZ5%'?k{k֬)j+^$@ǏcC*ݶXt<<"C{մpdnn]9Aߝ]|u1+[c/O,mTtݺY= W6ZK1C,R yOޗlx߷Am"{PZfLtQ!,$UR":WI|0 18v58ޓ~+^ ZN =[ܫx,Tq )ɗSowzz3.{':EGfAigjh(%%8$^/WNNYYY"99Yx</REVxDlh(,34Dt Wt!:\&RďGP5 b>,h k#WH!2ѰӿM`ӿ]YmlGtb3H777\ W&"`ykFqcIi:qţ!bjGd1(=!bBJ"&e񹙢"']iii")9I4II% "+77^LL /055U$wwDE]К5=-&-E'{gn<=ukfķsOtDI8Iye)= DN]br:"ՔjgnQd*fDzD0N(ՄT1%?KL e$sEsx% "] ]u9G] ġ-Kچ`IUbt0 kq&JUM!'LE%k@ =&8Ek%}'3HoRb'CvJSGh@:~>!g!}V*w s?ҭ)bbB-*bńd<;K(ҒPޙ}Zh"|"**9%t?DհȆx'Q+2"#DN_`@#uR/~q 0 'IJ,5l)JJD~":=@fNe%<ч?Vypm{hUyx⪺[MmDID =I8X@6,pz;$Iyb; WA٢gFLKde(wRXyyy4@3338l`9~ KM4D*P$d̡{A W? Z3}'hǚNA|_r 8L]c"mp;)Հ Bq^ùʕ-n Zb$/g,#C[\ڒg3l1@7۸BIR iLk*JNg`+(| 7kvGNC{1SJ=GkBjm6Wګod3^mDWW>mjluLk0 zhu/RLc%63übdpNLpe\ {&̴"Q1ZpdH$ RL [>?1 K.X"q`FX%YĩJggw%וPSqJ?"d+iEW`:|"k[ Ev<~ooRu1R{ѳB}2ױKy8b]NWd草g|,n6~1څbX7/Wt HS߃gH,G7MADꡩA@l]j}?}$Q ]:@Iy \$5VލrA s$HP ìo0/!.B4EA:p1"zJ"x CejYgP}䃷ւ˪ 1Ɲ瀐њx vt΋.0W7IfWO)o07=.OTN*ʳMNMSܭu^w]=OpCk<)t Cm">6it;uː@h8ARcCc58Y:F*&U}*>`yنF"bސQYa`=Jhϭ\ la=Mߍ3xxI( `HtWZkG*s Z900l H "P^Wxnطs'P`h"sy3^ulDVR7!w'.{F;4aJUԩi0rC4ynQw ! !:E4^j%-$ )1QzS hyq˛~ 7\"˰ [ל"1F.dnה]7ypԇ(Y~ ],5!r(ʒk*[1~H _cȎSvӘёU狾מP:\GDF3Ux\ ¶25,7mTWFjxw8kZ!ҎASF i$FHU =?D)گfn"8@eX9>o˯˨0rPM}D~ r#}o݈1?cAPE-ADpZ=C2D1p39g0@ ~Z}uR:?\;1ViR3P捘na"<$-` ])(Eݚ1x Fsp __aF e4wq|^c9H?\1£nG]ݺ(+w%X֨ DMc$[tHZ"Xiv"Tvtpy .)"g VGU赾mx'Q$Iӡn:r :HACR&oC5`5{#*mt mzU𴋺8'Jh۟MZ2D!:P.x$7bROAcc+1=݈b X5-x^RѶtWHWuS[0[z| eswkp8>a=i8pA4pC*o.}1֑k$tN[ΛG3O~c!#Z OA lM3Kn!WH"~l9:B%>*~C{#H4MPKh!*&]trH] -Px.\1( h]Qٻ(Niõ~WCZM&Q .t01\r6(*Qd^ \:>#駌߄ڈPއR]A":=Ȧg8tRklh4y1EgH҅Zס^r e̡RDSm? d88b j6CZJ=rw?m8WL9~3!D;ѿȒ6=7: 5 /=pЭ6@"1i%R58ngSD1oDYGrz:x^7J f`Mڨ!#Ļ#> p*Hޤ* `qbQ"MK,7SZJBhUpzGϜ$љW1gL)6u Dߞ/襤O&pVpw3&.*f?\o*h)@ RZ{Py5-Q!Ws tf9aQ2dAB6HH}6qCk8.ʫFt< a= x}~FȘ;ظ*H%Ѷ] W*bTd;D$V S'Fm􆰇Cx.v!%1Bj} )6R: {ԯCxu}B)Ox(5] bw޲0,.ջjPA׮"./[@OR^WKx[CLomiprĀ=Jc5xC:i Tg])e# /{jXI1GЮ6 O"50*Saja Y.^\W(ĉoeЗv0gN/R3">g`Lm"ZW!n>NF(5OQyo:E/yt$K[V9-3'AădRţ"}\bUzV܋NT$ wUױ  LڐBdSR j$g_J]e3fų,z s6.} Ϥ\1U B_J"ܪ[YF\A0K"mKp|'UӣA %!Oy o2 0xDFĺpr=pg4KG #E=m >T 2#<Cebć[~ ,lb$GFI_fٸ_eͺtp5UW4 ;wb"=qKoԆ 6`mQؽ_vUF]2z!, wѨ4)A{k&*T faΓ:(@b=}CY4#[ӰPC 88 (դ^'yE g1l,Yj}7hOYã`#Ui[掤V(6C QEw#R4 ǽp#';1Kuiqܒu8oVBx7:G֍Gqq;Tch=3wD@d=6F|00C_~h6squkl3?Зvt$&vGJkE"Ly9+*꫈ų,+msN\Ele\U :I|HsҡRH -ux w xgCR" egh!OOo%_y_,㾑QA8M#mz"F\B ?_t\PZMb NZ [Hm0b,Hl)"Րc5[4`R2؊UQpus#)Q`0.akO>H >9T1 cZ~!%~a&HY-|()sErV* +8x6+MPj&xITPs mVzi)gܩr2v=RcAtз ާ_O :6H">bn W$=k׶ʖ1c`gN2Q>jP}6ZMu"PGvWw .u9 C)0IC|P9DhnR; X+"b/ m~39$5J8'E0Ya6c]8('][[DbT_i?yhPKPM[RĨ^*ʷl:ױxaCEGز/mb M!G:6ԧ㻝_b$Қ4?21"̰uD@x<t%2l+9IrN`+e}_992Y_lX/ڗJ uS~m5@b?>bЋ/-n=lUϐ%tiؓlh>m*t ́h7aatӐ$!! _#zd NK}?uճu qfyD&'Y@DD ڀC腸&p!A ܩ9o@dO;r uU@|>D&M&; nX&̗A:E"hAxZ­qv{%":VG/Uj#ğŊFen)[~m^) )}{G }pc t^= :٧m/_'] L. &8JFvä-sK$iv"L&u0q)ƮXBxe GĸŃܮus>si|aP!> *,X:,꩗Rh~ޒHKYE.IѸXJ=R[7Y}Νm车o}37/~$uؗPb = |>$4+_ 5ټ4DU"fkr## >dq8ܺ'e w R ^Y4"=L2bI2NժzL6D|eYw2Md%^Q N,1~P$TIvƤ J ]}E}BZLi ݽKzYcUK=#0| $N%(Ȉ+8ib>_9t~bqm& sta!'b zCR=W^}@_3X~ݯc8sQ206I|]kYۗ`<>qPNdtx190gqlppIMn6|z7]#\Y=m^ϝ0h۵-L ͳpH"L"@r40wj>p ve5ᵳ%HDDO ]Ck/K%nNIgDeX>q,6<*X+Kׯo0W<8&^HbpO`%LlLbYR~'c2.ZzuعWR. ,/*] ߏA t񚵄Jed4kJjA7;yaJw`zҴp 0ĴkՊ^.2, h{'v&9@A6JݡCW^aC(?$C~a'@?2u oD|,dp|2r.(-jI<h%p(!нjl܈"q?y}tX8D C5e'&_VBAj\19DC8Œ0q6@zR 2tpS\0a"@pB>#%% v$.{CٺY*GҪB΄iBC].ɒm_p?61B+ ɀ3u@͢tB c22{8vM s*D"ɝ|M$ͪ{ Cvl-eŢ0ڰqTfaHԋNEGZB3 ML%ŵF" @u696gIcCc?q@vI|C a'$ƛԘBbssؾ2AT-=Dyy@F El#bo?$j&.ЛY3`#ZtfI96+h3g6?, n۟t M>SӜ_pH\cDpKi#X!_si ͌ ">農gqFVZ 룽Ox`S&omZ4^ #ٸ oeU|kݶAS֨v|CmQB$ZM#] 0kSc"D3"$Hl =! ( #Qp`#>B|'w ~D|,ej"UylH\W̉ *[!nw`h7<-}x2E|p]q}5 qAdt7pH>L?p FQB)[=:qũ67O1;p |7*Yн(pѣpQ5=ŁD nQƒ9YIecD>b2Phr=¾y<짟T(ח7 :}p0md @xXsYK:C~S`Uwʛ 険x6y!m G@W"p_r~fL124&b} sR db\ 4<~sJGJ2ѯy`0F,JQd QA$cR7й&Xz]"mCC|H'~  @q?k(@mkkc}A@>5OZ wTJ8'y}_,|DALJ="Is^Ε}hPmT[uI#jGfP"~lxvnT/Kg]%BBkLh+iQd&"8`%EIR7PoPD؇i5k&A$pCTcFG _\ppkr,#tfY!vw ~/dq=)i\ǰW4yp A#%CaHJ}! @foj an m(҅?|42e7\VL#0cl"g /n`rݺR=?rI c F {;o1]83Jfx|2ӿ:ٛAD޹:\Rӯ:=p*J $Ŋ8J`M|Z{yd[6,_ժ+cObD 9K L{wbjRx%i fn%;eqgI9T ۷rFV&E=1| $4ުve(8:2T_%'JKDKK|2GӶ߈su;5Km24k2Ӯ_>+͏NjMí.4"3^&vi7n;z=67Gdje*wp3tG:GAb w3NFrFQPZg 8_fg[ݶ~ v-DG[_u-]74 W j{i+T#zE~g冱똜 }J`ozC {9|v7R~Qa%$݌Mi6m# }@~>;]Hbr 8NWA)owͦMauݽ(ȬSJ8n< 70)%blm^ʨ{x\|4 72,78?Yr_+2dab >K>&>.wgݓKX=Ea/$]>" Ǣ 'l.71~٪5g?tC2?*k޼`ൽ+fƊ,pLmL{YN *xIFrhp2b}UEm:-!π<24{ JM!ao)Wn # Nm*2[4M qMl~lLՀo<@Ū5eRGR˺X0hZp/7߀$p>" fDŽN4WR_:*wd7r&dp4`&]7$}y|9.dR 5Q due* ܡ_,Ʊ ꝿu`U|*KN΀Y&݌۰^r'S |;J>elh`V\ Ҩ1Ss9Ar(,%EmӺ>0o_돃p\ez s@R[8){U- бIA@vRBIϤD_iø[ 7=qy,-H_!?q^D5Iq."f-!J9қ6}!Y(wP.Ƹ#X[i4n,oAxl>2qV$G?3/q ۟Kd=#nxQBƭIR@ @ 0m]uT%ߠv "!{Ye}2S[F Zuy$19''R㛂q0t7PV-?xMygO5 [6ˡTm"&ۈX @l Ck,l Iíq:s;&trۣRD*>`c;sh'8LPj n*}= ]H(e HfM\r8zH\\CºXr]Jw5o&k2lJrmX@ǦZglI͛N>Z5`Vb txb"尬9ʽHV 18ؔhQRn]Y?@B<'əD>"tc ͢ q $d 5Pt`zu2`KX|= ?r`nr|7ni++V~l/vtFH԰f~xZ(PT#oigM ӑwʔ I6BD@ %6 +Lz*Pq.]%ub..@^Z^}zvi77HcGp1m_)茴 /=7fFGswgŃDNF>1}#2p8B5Cay U>1( >4f-!T麶Cf#·ki5#&)Qyh"4G=!Dw̐νk5ʇFOހNR'+85f;hrdz1fJ=?"($I"#BD"o\emobѬ7m9l,^dJRTAk c쵕!켤RV_<#T#qΛ\D߿a}#xfyp>;9'E|DV?3d:*BrF`3AAȻ| (nWנ%i_^|T8@wZ^2J2 QKV9ȁ&A'7*+3{躰3f" kj1 u3r(rʢfrv SЕ*jHk\\zW'5,_dۈNu{)dCVJHKT#"?>^WyP"`ZuGY~dX[3kL /qq-['Vؠ8c 6B6OH.=AIzp I(M|ٱJU)>9.ڟrCI _^F,p"rn"%Qy@6A(/i$P!Z-'Qp1Fd"܅sUkdOٺnyBT)r c!ydg6p!<̉u |ބ?`$ <r¸J4~!DB&bxxqm+V}ȗ'l0 cs]pbV~e ס]" ɘ%Pޙcc/#G)EAl"LfLj?}2[#*a֏x+sk g`yQ@c[b2l/!=t7_O] : )Q%ʜ@2 6=;Lv~ ;2̑rf\>۟MG7}>Q<0*Cڹ'@&D,ݏn< tK~@Tle1DRsx:#h%1sjrՒ=h<^El> .ܷ|~W HD?Tu}c-}z%n@1]=DV,fu3ǑϮ3f:}dqe\`dJTQEYM$ D # [_%{&g[k23jLFvH2m!u ʾQ [SQ:ft5 U$H ; \ޭ5A*ʥ٫ċ%#U1@L#mAD?O[@TW*.~(0Cp:"2B'*d("k ;`P@c`F0>(.[zT ~ao|aG߶? Kˬ14V2 lmc0SԓyuYSsEOal I39N+)23C1y)"2ʴС͸lzH:;c0}~C, Oa^Nb1XI~{Wͫn:`sxxyd5A)D"ln+sElX{dz0oJ"u@y W)xT0A\ØR&ݽ"Lɤ •@ZceCF=ՈڥOca pHYs+#IDATx]wxTBM}CQP( "u)"V!f]# ",+M;svnl6$<߳ɖg}g曯ͿLJR JTJ%*RIJ$@TR* P)JTJ%*RIפ}f͚mjelX >z-4~ѭq5=C']8py[3E!fLK-IJ|mt1$,;]L0d}}9LVO˘,b2h*D&#uUh>Ɣ5 e2Xg26|`&#& Z߮] d+V9"\t%ܐаժU#ATj?3BiaWd}Zk/6`gh2,~NBwN3tLN0~~&|i];G3cYNY.g9]Uօ2 /W壻H0a>]ŀVv(> }h^7aF^j60cϾo9ŖmѦl} B]ص`>!r/z%Ǚz0cj.#`&cf2µed|W~ZЭ[7~]eD|P݃>o ` jH'/ޯg*""Fd6xK˗F6>PZIFBܓO1`1Z ~= 3Sg; ʔϟ70Ҏ;($$mlZgp<>Fx6'{|qom*eLiT@)S@_qٍe&j)kcǨ神@`5+S@-**ПI͛7*5Z+FDN1cAIQ%l0cB5$+YeMChNtΆF>=vD"ALL *ޯOҥ:[Ot1n!=I7o&}vZE)`t(F|ժU)"""##^r{r>%҄[SG?cgCO`'\ СCHE&Ս%->"wrgۼ|j/6 _*C2,_^HŰAv$~n/Yl=Oh^{jPMY{X^"e0~$|g4ڷ~KIII6$R3iٙ2M>ґ qL>ЙTm%@&HË$M{BK2hnF C͚5ˡ>PZҙ]?-ylVG?~Ӡ.at \.6_`j7nܠ;4e?LYtE?3p Ia\ʘsIm!P*SI`*Y zvi Ti1ĸґG1)_ -~$r5+ٮ|u1C_$qty*ٳf%hN`$ߏjNzLN%&T6 XxО EKd ڵL2B2i Ľ28$jۧ3vvM삧 wK;wĉNNN-Z /@==3OӓO>IգG}~a^:effRZZzJLLxhNpbZɦceR1&X,j@q|NLfr'3 ,el=- f]M ɭ(S|Ȱ3!a0m۶^|EcW_6mp"^{|Mܹ3u҅zI.׏{=E?o߾ԧOիծ]koߞ_W^^z5kfCSݺugkժEٔ %R QXXr8_Oa 9 4ihɧBg̘A]CG :ˈ!a L00{x =Bqqq#PÆ 9G1>A4nܘ6mʁ@vqb Gos" 4LC JI2 ⁌}뭷SNԱcG~]e˖k nsJG}Kt{)e̟ڤ0u +u/Z&zi#۰v'yΤ5V-=xc&X QYDXv@(VW~)ԡɳd YHa õbh<_2*eҊ%=>EBÇsHЃ[ M{5d9QUQ gS_nO%D}_1[➱jY7p~@ASRRaL(u ggYt4Sl|Wb mLj|F I$z)lV3^ @{~cPg03A$\sDH+nǯP*Jd!r?Gr^`tsс[X8G΀e @[ 3OF{#/ɉ1a!f[4>ƽo!>E]9q><6  ,@iF{:{s} I"AHh%G ~&\!O-nt$͛7L |/:(t;,؈H _g$j8p kg= `Ҁ(x1r҉ׯ_O|ab-HsxxYH @ĖwuiF?VCG?M/)ճS2&_$@]˄ĉaZxS=µde%dpU<hÁש߲q(>Y';k€N(,#2e xa9v-K4WgeZ=DNnx T^Ŷs%!u9F$S]2Jزe׮]4  Co=>.Gӥ}~1ePXyHAt8#wO`#9`E'͝;9siY)^_"ftG׬ t ~rB,G\J@!CL)]֮]Xd ]% kә3g"l{ځ ƍ,2`25&L_Bj<7F1c#c5o[gҒ1oX|ںuB*&7l,[ k-/,Xp]a'{!c"h8Ѕ})6HC  I. 8Mu6R%sM :"P- 퀇M_?)֟,7ʴS ax[c/Wp`)v.4  d`ݦM/RVVb$Ԯ X6O6.8V~'6M_?5џH0o,d3 ߖVGoR%@D}Vwk}[ lܾ] /hCo!x^˃Jth޽mrhaR)}6ӡ56CNTPdEh 1Tg F:)~XJ!JH@ڸذa +Q":H_?@3V&Sc@;$A!f _ܩgߧYrcQ'*yA۔060j(?#;wȥ<"H6mڤ$Q8 5HxmZ̦x}L&3,<5[П.Ӿ +R| G q1tD:jr@lNK:l6^>{;l@r԰@Zs0 |",y#vi9! !_ UDGF;$1VG nȜpE!4ݔ1@`:b,X ѩe)tp$NujZ2G80IJ2"{hx{Xz(%bmwc!_.H WPo DQ21Z"%;krA* `:*:2cFҭ%B)nDh~ApGcŃ/] xX-_ 2J\ڟ( 1Su!"+1+3@::YhceϔN@_LQ= ȑ#G u,[+iCDLnSBf_;O>qY=ʳ6~ƍ,y" hǏW I שkwjO3KnYϣiԥm~  Cn?y[ԢoqA$ 2b9ɏt^"f&arI6؈~(['il~>C;vaSl?ACJMb^.S_4)!rt9k  ~G(ʠcW=E;gذa6v R0i$k8]_|P k+G7';D"&@ݐr}8rV\A!bG ض(ₔP K֥Lz@WSe1m[3~4Y_z=$倉H!Rr x!\\CLcn ?ғí3gDck~X{ xpu[?RX_ 6PhHU7QnF>)c>ɓ'`ҥ6봋8€N R @*i[,?LiSY;,WpX\;NCzfvϧ P!SN;'FƍH!W dٔLOBVQ8=q@?"S&|cѐī4 f4s+\t0j Az ) pxsTG6~׏)$`4|Ɏ 8AG\ 3;ۄR`GkUo@@ f𕒮HR?[ ~A(ʼɎߧ@z=A2 *!Yc_r QxJYB=GxE^ ^B߹USk`G@0GG&R^nD.4*Z 8SDݮZJ$ ןkY󃨅1(( ~q-B dF_o#k4URV% E19CH&B@!|ai[ߤ:6'+V| XA~ͺ5 J/7PGc' 1;:&cYDt!m?.|7a&*FX~B x$U&u :Y+H4," $ҁbT0*+nؠ /mkyQ8Q\{[s&~}bvM$t.:Y5R"T+ID 7o^\x=hfnrmlFLsjo ĘE';61 +GHƜ#/LqMqe9'{'E`ǒxZ6}PT9s0s$''+K,!l3FqBlg"#ճmkؔL{sZGn:HS* k @f1qfŔXuCG(@[@ ְ pNմMh1\no |ߧ[M+GGm5"~PbhiCغ}qmg( nJ٣WaɪQÄ\icƌQF?A1#3%Pwx El&-3h2Z\!e"Tz ]ø 1_AcW dڌ&r*7{uux;C^ibDڭ ?O6Tb~7utnj̴f֗Y#]m BA%z|h 0G-]Ϝ3$r$`DGZIo9hjG"62pBgsnˤ9#|S!b4q@ w57}|HFgaqXLQJ<[DE=0 ,X.bUy C ڣ`q 1+G`h)SݷQ8Xprk*Ư%i$,IENDB`pybik-3.0/data/ui/thumbnails/Tower-5x7.png0000644000175000017500000002760213137372531020577 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+/4IDATx}iTյy5&W뜚qGatG!PxFQ@aPFQ@B1   ^ZouePܻ>P0OdחE[Lj<îUA/_C4ӯs\!meCޡO}}Cm|ߛCнK] ;/+אqvیsLpBD>OѥaQg [y鼻B7wT"\!å?B3tK Wx~Cݓ!TL9:anCӺvj~< "#("#zh,!Λ/qj'@18n=Rvqw9ڼQmo`mX/40">@nuqvp/KS?"ģ;ŜU gmz#nQyp@@lҠ {ik҈0p$x5]U?j.FNj(s '|pq0)%Ge_RoٖCf`ˈX _\PH+j#v#Kwg|kSci(22e$NAYKOw}rq]yG]1gMYeP5 cPu K#T S3`#c_Iƈ9.=Ǵz?|'xq/k,s4"L@ Bc]5ϻ΃T6\Igњkx+O-Tj^@҃_xB:QwB "O`+.ux̀57w8CAth .Vy^ݳ,`oP$d8П\l28u(yS/X Ō΋F5QM^3u7t"@F*eR8:9`3J<7tg8(VՔ➵;,gPߒf3w)=SNf䘹5khnien 4h0Gs-S+h>dk[1~ &U\" U lHDtq9}nwu y HaKbxyS\| !jD[y):w%2WB4sOAZƞش ܾ N@f!_um|0T\^R|P}ʪ#DhPAuϡ'@^_+gO(fUbR }s/u!&7K`@g*ǰ#@[Trh% ˈЬgUa`2ݹ۪40F{t7e;tEsr8[T*Z=;J[R1w c9#of4)0 W>IWbGXY5 '_TltdQjT1q/xTbGբH_S)n_COs{WXo&#t)ϲB]ŬE5Z*֮Y=tc! ;˭HPF aQ<ѧKxU a]M*=|#7VKYRoD˒0qt)Lq0Q_WEl3T4\]Ζ`ąYEw25f1Zeq3SzRJ'0e@\m( &0hu9*-JY3/7*o[lo78K|M` .P?)'#ՄO5mjUFTDw[Zt=΅qXtx>P436,G2x+VŤDGrkG7VQCܢLigm6e@lShCĖ8Ex.C3T[,K@ N=w8W֪Ӑ 0Wd&EA6A~1 f;RݜUbɔX:5`ﯷ fXkal p]`` J Cx19 Z$qCaroAZL}ebx"ݣo٧zĭ>xᑸdnH\:7h-%"Mmrz`edp@dN4CiɼK.ˑ5H&0ӫTOܚ؝c9nЇ`/7~tר:IA,"1lEb=e/ۮO)vg@W 8xmW e;@E7PXjaO܌׍BTpWO;N QҼ7i/Ib S,N{oP%F vap]^N&(a=4~ȡ)ФgXHM#f0U_O0G ~E\YB>] D_"שq/ s?F,dߖ~=bG[. .ą]ݹ]oH2,[;x14JqGE )y x\&ϓQqZ8@QG*0 K/ZgrV KtO<*|gg'^RJJ!>˃ ئ@o?ݼ'daW&Cɭ&?Lg$,usD cd0~7n|%`=d9nL`٭0П0a:>s}! ޭ)fF,I@oYGm)`,4,D_V~rUo@v 3pE(e$C 'vXw3,4<4ay qɜZJٸ.my7e%>J_^/ʋЦ#$`i l z@!LTURFG(Li\^PO`qya.=Oa :>QFi˽ug +翽R1Ʀ ђs;=WȰp鼐'5K vtO\` lom* |"4)YlrJ@ag+hW0GlK&ĸ bkwyŝdЯ):-Rk}Lt%@kWxWƀE2eS q78H}`G@8'p<[iD2*bY3@wwR@&:<{ܴ"h =8$tkT\0/*KtytIi{׌3G/IKBb˺n-~SGF9OV18.0"\Dek7by3+,t3!㹇=(.裘O3m^W$&P=1> |cN0(wtܾ-Û:1S] ј{z˙ `d@,i({YjLt?cR)a$:Εػ8dĪR(^M.T;DhvX {eSb$xM`q>mnS9f zsq҇Yz!=Ź>B'fYbSlA ;Nl$xNEF|~H,!o)YֻbƐha >w_kvmY)b) qy} d +(2! @P<SPء{G@fΐxRvr=|BYRYA1\opJY#X>W//=>C]ûW.mTX5[Cr?azhgm=N}Ȱ*!ͤ؇$@ҽ^R~IX>-Bָdw8?2&}(E`0'pWrFYn\ ,QM**/E>f:<H&L >|L3+x1ݧK@%]Ipp^t8!n?_`^|+9[!]`8j 8ƭ_dX @,^A K)Ħ$S˦yq[d/u}[{HaxꞢ$)>ѓ< A/?Y,%uD Fa +6l'!@:{"3P𧄈$ T)BPKoOe(ӈ{ P=Plk%k}w1R8VD$6 lܥ%*5#7B=Q,MA(5P!ZȪ xh#G%WVH9 : ]F%Ja)nX`p830k?Ha)=,rg߮NΎ\ج6@ ],&o*`>p|4;{% !,""u$Թn?BD)„7궲i '@?,(Gx+/o.fcRn{UoJ'o?4VJGpSC ˕@ހcƫ``9( Fa,'=X>nqr۸wƩ*Q@jwQjz L6c|$=L;+%C~Oi~ !qu ؋&b\$ ҹejCrio&=:C?ʝA Piޡ#4U~ZX{a,o#lHrmJVcY f8f."P'eH1G3+|/? %D\G'/aIA1D^ <@Ӳr$ܔeIg*0H ^`xs^Uwx/^@x_K"ŜάtSF:On_; iNj-PlW5mUW0R8Wt(xNM^FpuvX0LPA bC9lK z+V",w|G4{GP&4R*ֿIz  YB6b?x?[G]4hoL#a`+,B̡ !$v%iiw"Ixϓгg_J4VJYj %w(|ibnz>"P0|E1h!6$+3|Un4;. W@ :;XTRxPNL#Hx@`yv/`ƫœ>G7^.󏷤4GBkOS8Xr_tך `Ө̩d X?s6ZaE$d GboRd2*=%PpD"dh'a.?T2K){x%p)nѲLl>"tu_~C֯տUY23IuTf7nlX(9)4 `B$,eh3d\y]3˾r^ߘy%n!#篭Й \~?Q(yVkӨ  Whc D ~5 ez8`1T"WZđyer\jSJ}}.t[!$;^>?(n!\{d7Wov0(Gpwl RhnB׸F6@g\}:AȜrJ2hVܥt!ڄ2L9K) {,5ЃtrL k_*qoߩ_K\⪅+fqR,LWI!y4[ΕjqK`CurA 9+]&:)j`A^6q<-^>[ίH;ZĿP= p}]k_RWFA*evΥrlpq^؈2@W{8KTȢ,S4i*DO OQ6a\X2m 2>}xϒ+D@:'ʦ3W AuN&IJAfl@a 2SD[k?X ,eAZSEjI}Pqb_|o[m%o(qC( !yw^"v>P$V0X8oGc{h׮vhtԥSA۰\aӤ:_ry9Y@Q Hm &c_TA{< )^.qA^3b@l%!LҰpzw{GyM0al1rqɤݑ ZgMO qH)/兡h|",ϰC!h15KT</|56zbwC~eCǤy88.Is`\ie^9 rطOM+B͕=ny cwC;xWܸImHDA^( $@3s*¶=nD{Be+s:S`}EKy~@3*$P,7&P^n:+B Bi!pQYEGr{^j0Kϸ$3 zkS+XTr]ܱ:{/ﻸ{g^5ͪn9iߑ|yտś* ~BtKn S )]XBy#._h01?]!yCȃFv+/Y? F4=<[ku ?aw)9"ߑ@-.7|FT?@'29rg6"K['i0[O yNVN'O8yΟXf9Iq[ Lwp<b@ߩ1+Qw$K҃j *9> <18J2[ v6 py;x ڐ*Lq;z9xf=$-wdh낱cϼ>~T6 l>ԾvWkl@0U}$Lڶ^q{XEu|}\> weg?:[)yKZ*XH"45jp5`9=XٚQ`+ۈ^ok>u!ޣUM"Ou;OS*ّ JxnJ Huo%-Zڲ2WAh,tVG$mt"gxȆAMG5=W'5l]AK҃u^fLz^W oGvOxvh؁uC4CZ~KS0)x qT23AkIs{[3$(N5R' Rp~zɘ%UE2){g@zau;Xg$7z+`yk۳l( TU! Bro`s+<4hipSͻ)IavLU/"ZqW@.rsnwi7/IvϯuWv-)9ѷ?rzSG; En޸zm}W@aPFQ@aPPx?uͰ*IENDB`pybik-3.0/data/ui/thumbnails/Prism5-6x1.png0000644000175000017500000002771013137372673020660 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+/zIDATx}wUU9V (2dD2HN (*`EKE@@EXdT33SLw~3uoo{E9_ĽoϹw綛ns6ns6ns6ns6ns6ns6ns6ns6ns6ns6ns6ns6ns6ns6nsuR*T& :x=uzBMĩPnÆ:|ޖmhӰdժM{v٫sѷuϞQ[&]R_ؓP \|˞&/ 8{Zǫ! q8>VmBudۨ}[#onUyDہmNc7_ct޽>+7a'>8ojzt?| Ued;ЎhtfK5G̨S;4@P  q-N h7۵kSD/,T*=)IOMVjߣzUfBh$d i %aN029C#&c/E#ޖ0xV<dlw/?\RWx[ym;mmfoc-F$5jZSSR5#'C稹yjAiPY222T4-;KU$|>J~PH@,==]23mKNVG 0/F 4l|idIrПpdjt[ RM Wt1(@A|2K> ŧ451?WiZTUqEw(W%$$,"XSTTV^^la[zT^5—*o+,|7 u`vHWSTyƀ}`0:G-@%02=_ H ¶)h u ;6͐C.sJ3A 7^ZojԼj!\o:4B(<\ ڥ {씀jԠ*++S)jXaXh:gflx=z`nn(..F~K8_uEh虖b#Awd2 Yk[mf{uz^)ځ"8'ਕc3b17 ~EwA5BD"OA?Uk&O!WdR?ic4.Q?f{ۨ$81ɯܬT5??[ԽEy"y#@S=U#[@f3hkNGdp]i&^\*l5P7*RSGDa;'}yNa|'y [Q?A519fAeya0QjfijRŁY7UnRJLL^,u( *jAyu3^`2d 8 lxy3{)T&u F/vVoGfPY{fѓ8s=G 7qރ:Wmݽ4ݰ):ڨx]dB) t#ZyG^_TI<- Zd\} "ro $zTJ7u9ejZ  S'daUBxiZ:$A1Pz[\a%bo >]/h'hX3]KKw'L6])AFr*Cu[ApӤl?E%VQl]$1"HV݋ecIolR8 Y>5;=Y-nXV+B 5 XRA3cjAen`X,4cJ#2f1i!oLB5^tCNP]ONTY<6m Dw1d' s1,1Y{F;5S} zdx0ҶHD\9}R=+,@ }BW, Y -y48Tlsˊ՜ }`~ȀځBٌE5uIwVV\&MU2 T3PQV}t*X!U jO|f?<=kfA/F@ 3Ц 7U=k"]9K<9Ѻ Of1cY4 F(av 5n/ǵrZ;$23/'4KHx7 8E| Ebv; M(v:)GE𞨗])b!={֓zՋ$]).F%%GR3j!aKDh>o̐`rBO`Oo&ƷMãc :@zF)ygH)5Q=c\I h_ S,ӽHƒi) qz`)rp=#y7yڨ|qǬ 񦈎d%e.ke|6w [:@,k C# 薻<ѵC4Y@W#m$VymĖZA9"3yüA ƶ\hQt pB >'yZokn|86sRE XONN/ӫ-&+|E@H^DP"Js\-Awz: )| 0]7 Ӆ{8i da9 VN=^pqǗz.HQzE27 Oo'JZ%1e UtoxT\Lvk܏:i7mx?X h(|yBfL/)10l^W(UHy\x-lh.Ia͜zcX'HgU/+uΩ ^ K3YNQeZ7k g?$%15SΉ(Cf{f  P^o6 cY.M]%߱zz9ϣ \c8yX% Oa #-W 3y'5TJp~גFGS S D{x tcdGfIz]E MhZmٕ2Q W6}#;tXLvm,ҤK1Gk8pfr~ǘG&yBQ`L񆥬lQ|rxLRWYZCic^ja1N C!r-zn@ E#uLÛaSfE'8!cgf 53-uVuY+mt{)v =ӰK;F=(@E}bwZ,TS%p%Xo:wǧA9mЇ~!@qBH*-Đ%+M䉡N ƣY--ƙrd]A@ / O>mMD[\32xȂ#/ի6B OAa%ܼ5Le_@/}^rLs}ޔh́6(q/'spd6! 8< i$m$zfq8(Ob?^YȹYŭE Df.LǦJX`8'CD%x=R1鑞 E4v®\ @v3q]cdM@lH| %d)`4EK\1Z~6,Am F:,pM"KtɮP~XTɀ<|OSpFƆZb!UN!scƖLj/`]K>T-#Ih.5<H`R(fi*&y.ȇ/o=4[UWA A͉z;k#aχ4 PSsq)zŵ1N(4]sx|? ]8vev(=!ƌyk(~ $z,˴Їv0ĕTy|"ʆܮJ T}W.W!ڔt z΋ v4ؖ˺L|`:}B`n`4 uo$}⩚9'c;ێZh Āz޶C؏FlX=0\@냧u\7+AHQ( k6HYa&s'% g/ÇZt4Qeg9*d[6UD|{!Kr AIAzB3?u^4LC̳l=a/5khwpE'P(8fnC Σ܁/Z*rCВ%K40N=>$T–9a|a$;<J|X 5',TB4vI6iXzoG 1Zo!l#H:h$)OmʶFX I\Y{MjTظejh9{w,^!p.7ڰgS'OO+aqwTn4j闏ww\kOpl <h SŭEO~1K`PBeaa(!>R6ff0ę୺zķFCW⾘{8mI@6%){ZB:-[Oej]._-=i_e[GU9j}d@}hqshS^t7KNmYyMR+;iR{_I1b/1`"86lSze`Yx~&eҌt-JaI5kT` wb24$NOԑ5}w-\KƠ_l\7!ȅ13b@ m6ZQ5wl6n-U^_PwFnzq57p30ӤѺZ>107z<E`,&jdD\pį KhU }$MöJ_] 8{I`)5 %- G* A$J}$n^_fKowQƉaBOA.='YBXǏ M`S?Ts5gǯ]]?e*}{~;N/?=u3y`xdz{ki~ 4ϸ}/N/T YP+iu3F>ZJՒƒ*T6iy"TO÷õ@6,A  v/tf,g-)'u.p /e`j2QT0釅c=©W6gFrW.]c_ݺ5T @U Ɉ.'{?XM~}*[@{|{K8x#5jWR%),-w;8D{`h0Eo,Y@]0=T>w;_z3JR8iP!> wqBsbȫ}tZGmMQflTGoPo=iyrtg"}Z 7a}E]yy[@UU"4,᧺[Dtʀ?%u(oԟD25uDPe{g1iz| O~GY0{n{) eC^=g`z33}0uJS =4:Uyd8al03h=8b+OghtפObo {O%3:]UøI7K쓼q8Mm%lX|V-pvRg CU(;O[i2գګF 6=ET0 Ϯ+onO䔔>˗EP U??/tAGş~oߦr;u @8Sst-A}N":=f\ A0CImQ2J%l~_[/ dxO(C }Dz]kk'LfDjUT?[^WHSPޙp|wNy ռqIQ;(zwk~S~y1Ο߰?ZkV8wFȬ0预yOZN>]s|AnX2/$ =7Fdv{ .7UMht<)@^O/χ!#Q#teպ:`L1s!~#&IQ؏Lt郡QsR^* yԂy͗_WQaj>ЩV(o /7 *P#G|9''p2h ^{Ȁga#N;o Cl`JpoIPHުV:(C0!e)=/9EZ\G狈GΗcsヨDHO6qa j:ݤޕDh6bw6>c)&{*Ȧ9u 7 "f?^@Q*lCAJ8_UAcs*ج;2u^4{Z,l|l)BI+ mUe0Fhʆ8_IE-@Ķ g-aȖ <tMy ms!ja(9cԏO@[ R0O4)eCwluXM7}i5}Kuk>x1zAXg1ddoA;`~ E#Àֶg%5}mP6i l݇mDs"$܇+mtM-l˅0~Ok)ח%IK *%)A=Ŝ5GGQ\1ЫAb`Bv /ͫ!*l}F?6oF5 EVg}U^.:\hZ7qWb@A:*V&c W6ҴnjGf@ò2=fn$ ¯^\?*0kXu"r! =΁MjB~S7KKk L?NƍU>MWÇd{7t*@S==L1x.~)) : "L2%8B1Y`*Ӑ!S%>RyMa_%c ~{kR5|ӢcˌWé&3#5կ/P>VѠ{H\<.f Ǐ3A,yPY.{`樞;mþ=ClGaD2Ku 2¨Ь , IgQhˠ?Z\;URУJ2OϛXj~tg,F9Pq՗uxacׯoybm@K[jMa0Ȼ09 |װN2+` dꤦxs.1́b^[X _T楨_^ fz'<}N8 Y8"3aOQ:]F wv}yO<ʹj͂X[H7zݷD% Yy5BUz6<[] j_#56)H#`Ku!Y@ `dejfII6Suގv-_55Ό_9ۈkV~=<}u}V,p`;Ϙ[nN*KGu%iHu|GЧv4[ |vJ@zbeoV>"g{yo~t- mN3j̓criW2Í\`ӏIQ(KO5ey PAwl٥fԎM:>1hm2dV/1+}>C(abVݨc|CgksL$3`) I2˭ڵSIk^ 5X$9_DzL|/~>chRA\<(98Eb"ߏ`[oD7KNBؕ瘒pnv[Fy!`Nks(4oUOd]waLSpaҘhAxްi3f,)ް^h×գKRտT`j,ۗ{R8WQw\uv o_iX6e9W'hqY 6c<}Zsm(#[Tp`EK6TV^& km;?\[صkaD`0Q҅SLu쁂2/ >l84ue 7|\\H4?. =^dx2&XW{>b\P#7M[I|MSx=2:w mdF}g.z,u`MwUݔp={w1fl\1W sooxy7fL9 0x: ǹ.`A(O{GAj<]ե7 k? ^||N @? SG?oYѻp p p p p p p p p $`?IENDB`pybik-3.0/data/ui/thumbnails/Cube-10.png0000644000175000017500000004767313137372522020164 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+OmIDATxw?1 ~FR{*XKTPD,("( tD7.јbL>D&ƘwyfK-s9><߹x?^B/PNѨcoKBl\)V3&Y{ZƏF/GdOO?ŮbxY/-v9Ï/ v%Mt\5{iG鸙@E!Ǐc~6-Kz\2*1Ԩ)h.5U).\.D8@acc9^^iś; _?4_9jX2wM"v!d $*ﰓH^Kxz7[BS#.c K֑g[xs< :C#DTEwsB1g$/˿^h (՝KZ7ґ wE{'>@4ʣ'V﹏KƯO^I5dlosJ&@\o*/~eo"'nȣU7ָ~& "<"H(HdC'QzMos=lH3Ⱥ_C&//vbch=vx~":p,w1㿍>[d.݋[I+z8B 8q 34I;*c~jz.7Mxs3}ǥ.^X>i6:=ßLD^ [Hd^7:Zo}D'ΦA,'whfh"L`꨻^k}G- ɖ?<+Z )ZmKv7$G.?F@? \ 0&8B/ƫ/n{dq:1%@LRj(>=v' M;uS|?v ~[1\\6_g7{1P̏E_y"cxN5,eJyR+C ƑwhC!dG_  Tq?fL^e˖wT?jִxpd ZFjt5d<2D  n^]H6&!z;4BYFpy]yIu}^ћBLqB|/<<:L~B3.vGr^2FZcT-&WJh;1 ♫΅pvP I>t;Td YrrԹ#2om/EmZA XZV6.Xs5yX/ DǔTV.^7Hn]:]9x Hfw($cդА>‰ $t2 dLc"Z2}(;}&UͧXw٬#b1I =AU1/qUߐaEc5M߅d.Dt1c wx<0ƽta3) | }労f| H?ƂԕLLRHe.z9&Z?!cXR|'@"oC8't-pܠK"ZrX I:. <.Dre4ޕE+Ūӹ  J \C␍W$N2\|I_B09GіYSM5DO P-XJU߁R~݊&Nw%Ӆ sCM*5NW%t9Pԁ sb8&nȺ5ʘ4QZ5."C; y 'PW+{%K.QNߡ}~t)2N#ߨ1z= L שTͣC7wz-Fݭ\t (xb#;?h>] *B!0(k.DηG ߍH`! We{؄Z]8d`s0  h 5x5F9bj𻶲s#c"R-SgG`wSAߡ9c6*2zùk3Zzr:'#W9Y٭.%AQq!!1\"Gg귾RWx p y?f3XFtNc4/y VRqMeVT7;s\Ki@5!~a#wwpstne("l[o}V:j!C WӏB6Џj Z9CXO.s(yEnT<%f2V6&tMwtGq XewN š{)xk0/%n1W|ٯ ‹=b1V5T>d<\|Hfߕޥ-`厦-Mc2Vպ˕NICԙ-!CB]a YE M(Uzf,|C:<{p^H_z8~*؎WB"E6{9⒥`Kժ] C`P|[6<.Z/uT1y%d@Qt1PlG6'U+ɛWj*jTB*$!d C2߶ӊyjɨ jx\BE vRJ(#t$r.r F{"Hn@qnSyD).ߊ'Sn3'Bav2{{U X}9j8Z &SJ~M(P-dΉ,io+NmN:ti~H|Nw_0fҤIB,>A%]_wj #zCjhY) V aE%ΉM .I%yM~Z)UO`uc |9w<" \0 }&?n 4ⵯ<-KĶ=|SD\?5(46_+})Ѣ~ah0^Io]$ OT"s F' `1)W*k?8sj5Lc*%*G[3,]|bHsvJ7:Y2_N|(\pw?+AG6^b}l'>x>pۜȊŶb5QuU\Tlɸ[/Gb@(tW4kYmvgPjЅ[rg(vl=Ub1e`s5/ebqCC|Fp9˾Aнӕ Qϫ]X;1rt, ;]զ'UK@H_( )`mcK/ʽgTp#b YnJ'9 rOZ"65O.|\|&چk[jεnU+JJTZ,@nVCJ {~ض9}_gy/VksvO8X] ^HOkpHi hL{!h_2 ݜOrH25 733箽 9zJ7gqdԺdV~`=nv=+py\7 >UY5ڙ,evt1U6]RNRƑdL!< QGWr(M:2"0tTƟƿ"yQ0< ( joU bHLWphA>WorqgukkNωuooaB2:>dؘp1sAm` 8@ B}D%R&P+no2x|q46u5ҥ'}*+餺y`XF (K8ս\L4*0W`(Qus )%DpV8|ѧWk9i]M"cu\d' |1q t1w]T404 \Ab`(DL AN$ym \"Q:n~0@j EC4'~ ,(^|Jg=uO\|InRߴ.vq(xk(Ӹ `\HdX06 g|ޡ3URP㿚\z3" 2M X9ISG|6=7ZݿHTȼ@Յ/w0q5Ce=fPy"}>^̓JPe:'#% B 9z%q;so! ;VzںV=\Ƹ/ @G7%EVq>Ty첃URʐÉ֘Z>ZrdBOyx(QCw;;R`^.fI'L 5';3aǹqBNHv9%_1w2e+ J@*zoa ;L~BqS UD8  A1e|yk xrߡx꺪C!22w_z}z NSihx S3.|ߗ#3kL"M)#lP 1{F`أ ռPfQ#9W[qy),k;%p#⥝k8OI."XL;{?*bo;SK>:Y >ȋ3!dP6`9 Epz! G t@#z>r|@B>6ThpB_u5J}BإD!ĪY Oߧn$)4>t2!Vܚd#?gT@eC3cO_S$]P8׀~}4<:.n9ƺ({9ä`P#*]I1wS(ƪEQ<@úW p7BN:$Ө޸l2D[ClPdȫ1"|!8R  PY$|e_*TruT,!DV^ܢ6=1qxlш3yO|| }O98Az Qrx|.hh ۹XeϿg$}O/I7GE}JWSLp@ػ62]y!!/"o,b{3H,UA}|-p02; ,z+1*b )$o-2R{CQ߅C)9ANo=70QF,;.UqT"1 i|.]˴vR8\ x%N EˆG$$}sFy!qxcXܙ?V2Gũ-I<_v= BX~T$,psHW/p1*[BꝄ"˒ʞ7z7w@XeV>DH7r*T5CM #۩^ǑV&))`0 ͻr7'p?qT śEyh^;9)R=h+ĴN#OT/ 嘭J))tbҭ;-)q`@VK i\lʐF"&4ܝ[E#7!@h<*B?D.àJdxTᄘ9R=%( u?2fSvjqT<<&v=-b? 嶤qzkBT_bBgLV//=^,5QjJb7*B#ׇ,() >04cH! 5aR R0 ,6 e<o z*nzŔ8y2L q|Rh^ <#7!O (.e|]QW 5Bbz4'qʢ @٬ KjU{Ɗ&CQrz>C;XId1E1( Uq3U&zNBD2pu@ sb%c߹0*n&<7=la A4}?&+) <5"x'>ty qE0mt (E.GS=d)EAH Wu-`˖-ʹ u'0v{44~7.f-⼟)Ɔ42/뢜ҷ/nZ%_xG~(?+ZA& @qQw SXV(Jwr,4xytnG68g,J-R+㙄vT* h$ūsg 0 _S&$vgL(UUONO&E93wMr- <&fQJOW~cy;C۽8DzhOp |~Dgu_O5<}QI%`pCdx!eR Zp/Ɲ A yI##ŧR?^դ|Ezh%`=P5_DS1.2F sdxӌZmaF)) x8K!'L&5C ü1AF}!bXzڋ~ KSݨZA\!Vb! A0@7FUO,C3(}} /ՑDx޶1MǼjAb!KmPPU`xV "]ÜAGA^.6%HGopkM\Ϋ`l݊4PbdIr$gj)88ΗE+4bsg1B.|U7FĜ#ഐ VYD$!@&ˊb(;(UkhU~oǓFu07jo|^v-I Ԃ2=d1YAq)!q`Cka~Hٔ]jg@lKhlDfC~2uVJW MH%c(fq ,p ` X?g΁lY2@+wS8'$PH1ݴ4rh@t1 "ۘ%=RjEN.p`]e0O~ϲ/@2@7CfcR]@V/! )>E%ޣ3%g.>ga*Rl:7yF\ 1ޡq)}.8ڪ4 HR6Mٻ8Vfh/wDw)/z{!w>F12O?^xA~_K2."?Sh4ӗa\*E!O΍@2wt׆e,F~b =sU +XޠKZ*3Ϲ$ ( TgsB8 |ܓ~_sU$21 Fn^&bn (B;XhPN$><&0G0Es5TC ^##.ݸ!pg*pK56jaUR'0" bO xp7G{Y0xbROo]"BŊ{rD9],V,-Ƒ/~?w%o`* ڿdl3419WHC[ Zw0~ZHWUG(]gń;,W]%z J)+ }-28 zɑE 72\ oGn>?p/*8maҊB~<19>={ ɤvrX vs<֙hsߠJbcn\WJbUroVc%0ԝq;9,a5r}Qh$P'X8JkAI7-vnǖMAh&Ь{)@IJ!C>8h|E^/quH Vt_#[(w航D>%{o!ýx2PZr{Ѐ T4P#vS 2ZH}k!B" [c+Ȱ~'4 0K"#:~3f0 Öa==q M0 p8Te6|:{`ASB8JI9`ܨQ^aaZRPf*H 1V3UEN@y5:-©s/=5v03C{XR>;9t|FCIE 0@izP`βo{szѮ^*Ooʘ(5oDuoݩpx6cU#4p Τ/RPh6Z >WuΙss9C tNB:JałH S$~K9?CױIJMV<<xtCRt o 9C@cYb ^Mc=[)XAa?Vr'Q4" @S mX Be,tp6= .)eE1XdTM;}*=qBBLT8&| !>8qݞ nD.ț=A7I}b68Nac Oaի`X3!h$t9-;"#vU,AmqP1' I-sP4,@eaZ^E0)u{Pen}vȕ- H0>rၠ|B?{N m'|` bx?:!J{A ӫcO?ݲbP6H̽~Hpߟ,]f$)Y C<;*!/ϙǾb#5|ʕiuC| XxŁ b*U@U@ ;x/xZA:*vAlaj+)!qunЋl3mli»oYgAXD^]&T|CT㪢 x!cȆz$R\l H̃k1d>h T/ZŐ-.B;w~R{ [RZq>8;.^[v`$Vx8f2f2AlYU#0L4MD^ZƎcl_ 18<@̓{ "`S T?画c .9}vnWЦxrP,[VDys("P> ytKhV)U@MfX ^1T 7׫ĴE@R7ÊY,B0)(}hӷw`ݵF0'}c!&ҫ8'fXsCPtBnEƇ(̑\|(j9 423sCмbʤѸ&&k.ivޡH%aH.3o`Yw6(L^ZT3g&X !P!+Hj f_#߈@ޞN_^1&@֟tsS"֯>fui%oZ^ А+ dCᢽZ^2V}U8Tx^-l*dx`K\wCV졧`LW;;S9&߿ϩ$Z#L)3PN05BǷ{MBV9$OH`E!L%_]|+y4}b۷'7,T?o Ͱd]zK+7DfբR PmaN ZhDe\<2L3\-xX41r=Y !]4:Wۅre6z ;b})G' )oRО #'\~ r3'ŞA7ITYA/%T"J26ZM =S^v)`8B:)"OowZ;5*wAvPnKQUqAdϛ]'Ʀn{`罽9,co М ߩG^w.%̌qqOX!vstYP.-^mXqKǁpU rH#)LR"ON͖J Ġ`TTR} X$Nޥ >g]&0}D7y P`k"o!D9KPBf,Ġot uZF)~`QMb3JE`H.#^KwVM{i$@+[9e ju7d AV/h CU%_La#bˆXIwa @i"C.^/tҧZ<ì._ B&Уr=?]A4:8=SBn4irX_u(߰2t|0}|~q3G}. lG?1ec vw/gtC C0 ?Yrl㯙 {AQ[;Y=^LyV~>(\KU"3s\Ni$>}3pe#\A2ד;Ol !lFc~|zq gϜ*O A(+&90i4t)E$QFM7ĝBR7~"mh}l0Q'1'<9X0C!Ns%P򅴋8|1C)=#b cX Dzw%bd //>UV]`B>:U^0,4"ƺ`t;Djv ׹7<^C%]= K ?LC/G b䌳ZkR=fxPYWC~N'S-&mI2;"Lamw6qy NkF|k8*]]"n5X*H^<hbeA4|dE+_r5 4`O|Q>%ߵ/ Ҁ0 vln76XiIJԜJV684q j - Y,;R)dc>y_!HU!I(҈dn؏mypa4@2#@(_a /O QIUnpq+-d`{YL,i$ l-1g5<__Yw@@]w=toP߱Hݡ Iь7ݳ3{l{~>܏}k>K+OX{f90c=V?VDޅn*RTn;/p+8J]I, Nn&:ޭ!  Ɔல}-{=׀F"T&m"nP [k"JbZ1 @VP }`=%p |ݹ0-A:?<>>mߧ^`°i"gXGGfLc&0L%_N#z&d#wQS-w3w8Nh A{N6w|w.oa<5+nvpqTm Vi ]i=XY 8j'Md#g<2w K p ` q~/Ή38a[L$[ w{|.KXy*A2s@No zyT`faRYoST$0RW1rK\O22jF=7"A֯ ﺨx}We/+XpKZ jul4MyRrF4^@oݼ2M\+L (w#c6?B=vXj傹TDjg(4) ڇZV,y痟H7ONoN Oy1R.zU L7aÔk{|^nLH^D B!X=n.j_{!%k, @Hyv/[Fd P"Bq@!J"Vu0\>vA]:]n$ƞD'U9obz |]mj~~b:>zJ%Hm ֻTl' 6:3 Wĝ b(swf_֬VP6 ܸ0D}MOK|˝ƹ^ށdc5UQI}70X}!yxAq]z??4%UC;Y~FT'+>XP|?{lIENDB`pybik-3.0/data/ui/thumbnails/Tower-9x7.png0000644000175000017500000004145113137372545020606 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+BIDATx}wTU3̨UrPL%#HQZbFAè#**"l@3c2Np{t9vjP@nݺu:{>巬{B+ZG+ZVh=Zzh@ Ρj}z5|+wV~C -'^'MSumgRSZ 5UWyg 4xС;kFLmߧF[[}'cx};<\5Waqz+bAn~ UϧXg}V3T [Pd{i3{5E{d+NVi$x߯|,5!~Isw H; 8d5u27(VcUr:1FyTJ^U0 x &o'0+x}&+L3f}W"ޯ׻f4p"o"do14=˨42tRpQny3(;\pzK wGr3X 3TG6S#TڣsO3PA\@5Ή34pVocT| #>`lo0~u>n<xVDjMxO; .=]kyTz`'Nʐ&#m532h$7`?#żxd!@54{pN$hn2d}K7/b_bk #Hl`6G@u}@ .{ܮGAyU [Z:Au7.Sk5z(χ^#auy !j|tBy u×"xq{c/x'U <cd`8X$"a5s^/ `S`t&4*\*c.@[g>C5U\$uecݕ<ȡǑUx#s C\sc^BN9XEli uhf ;YF< j@vSt6~ F*Pp? %wmMx: xW5MEXT5IX 8vx69/?4OC+} ;[ӭF`q(܅;CBD NJe4ttX!]f#ao2񞀼s}2d0$ HXlk^dHGȱ9 p !ZD =.w^ӮgL5n7/קz>, 59f#B%RqAc In fzg󀔼a*~S>}T0ޯ 0L>"̳Yc0wA>j|]P39bifYy00g1@UHOo2>kD'q{\ 5հxT~=`Ζ^pĀ6-Zf,h dTFXdb=s'MAL.u9s 9KLŰ@1erg3;hr Cל๋.iGjWP! *:3ެйK΍U<_9i( S=&uy\ݼ.cBQr%;NY,ц}C*#%u+Ox8㏿ 2 )e9^X] 0`jfެRŒO2fVRhR'\uNQm e8B |~EER*nՈLkb8c6۫1]^l*l*Ξd60&VkktèH@x[x1~LM"DBDX&<р"DapBM C,3`#a;Z]V~PS@oȊM%H`k 3;y+m0Y86Aay8:vp43 f݈%qlKk }9?z{p\+`h @/Mf1(辂S̀GiK$!VXjꈐRQ?]G#8j*o,;dL\fHߎc/Tu n8lүc&7AM$}=lfs$kUᚋ Ct{ЍҽS]=7T0$*n?j dQrT؋8?N 0Ϡ$w$z4a5-sˍ"H d_eC'0ѰYcBo߽,6ݖR7.1Gn>f` :JZ麭Qcd/zsnzN&2L[ύqs.SZ0(=HKȶ9B}<0 ^)]=ŧ^fSp.F6>kTvZ(20r{W7lIUaT|eh`ǯ_63=V:T[Jkc 9~4S8>pO>ô4Mx?s7 :0(nt!}V!} WzTQΘLr֞6y<$Fd` fr<̹]J@KF$bzLֳ{e:ohPv`R?yGGtK;?\-N.^MȮٵM#ЋpsF?LJ%tD]nVB6P^5{Xcq{ @+cԫm@Ύ, Ț55etL&CTc}<.wNy]zgU}Ru I*u-gm^egciy9 ˧ i̾3 7iD\T8i{RWGV?ZrueOxz~"phfDل3eR$d=}s L%d(ݝOoyl ټ;l=of(gHW_^7xryWH,sE71auUIշ_MiuT{pEp2]#[(Lb<&ߩf?3]@uG{[?l3}%6``OThЎ0F:grQ &T9i\;fJC {:1  } %"JZxρ/knx.k{$",P*ƿE m8~t,m2CH{Sdddѝ-xMF7ojc+t؏J΃;aqy58gHܖcGC%mkhT8Mo֥f[xe+{qabSwpPs.R7]W/RCF^ :SG`|0P' /]Z`d3y6_mlB'A/YB .1ެ #jv)bqo x>+[0>LļC:|]2}$f1c0>qLe@OߑR'D;_ޯRg1/7(Q];.\nTiq:5֑M1d,֞4~LXѻlcK0l qˤquu:4nrP(U-7Kf3 F 1;y;{.r9j X ;5Q=E=pz<.>O@1yO^H7pj]ߩv*\O忽iy䭔| s@iv "9M —WlJ#g#[Ƭ|$qSଠ{0yRkon.W{V<*^- oHI"DIkʺ W@rqd2Fjy6KZ;sLHu0OդaA5ܐN8=6q|̐QBa&M *!{'eܬ}??&`  $x?^Gh7J<7=N]A6~6^8 3#wQi؞a-Ha1~g3x(Wݴ,.Hjʽ%OJ= SxBJG U,\f)9.TrbK~ ;m(VlGpHiYM/BB^s.6!"l;J8s'[L<0|N VT;#.zoA!<&bZ潐?Vu`kLguas0G#4 "iK9t4.K``6gwǛ0%ם}D0|/ir}1hDwpg"VGQn4|sP$}LoI2>{>Ϙf SGh٧/T+-dZT=7NNm|%%^s[zE$>ͫRKnq;׫<=B7,` =B\U`Se<}<&ϧq wD|'ƑG$S\.]kLhӽ}-E$&fޫrs",Um*VKEsCI|rZUNJr p - B6{=2i`Wb{  ,n_yvөdj1BZ '5ѓL'aN1@`CJEL55|aqx>Wq/ YĜ޼.5 aH޴@^yYX_)_wI\f?5tzT>swj޸AfQ!$-zр7^h\ڀ^ )i & /\HY>F'GrnZ3tV0|χ1m/~-~ U,X7E_ Nٖfxt |z-w3wR߾V.dCE].g9 g,; %1Yq% H/Fpi(}Lhd fy{TY^Mk- G[%0B_4AZe|L~ݨpdA8 nhWcF;СlJA2l[#i#hG<<~LUWI闕F=)?ܒV_A EahÎXz?>o8B Ł2=km! @3>X$LL!"-/Ӧvpe*zh- <,l01шM"Of$y`vf-7w@f6g @?bZӫOD ? zh"w+կy +r4s:%cֳnCCSI*LHk- 4 > OB-nlnLcB)Pu*w'!%3{ 5O@rCGu-O]` l2(cD\+<;M1Y.?PBp@iz!b `MPYQbP./p3 &(bƐp7,s"ͭ-ti^1G@]$EqW&{])թFw.8iϫ>AO 7aCU(mc6 0=dQ;搋sũ: aHqxK 44- vPL$V+lls)Y>R Ih˿AHm>&}1}pIK=tC2<ݔjXjEE7-Rbd[o?S>%L'N|p:9@6EgӼ2{H.!bl.-ћ Nmwɵ뺄7i ' Q!m#6Z.fvڬIdp$S2[J|Mlo 0x]ovq'Bf07h|R-U_H *DŽH7 Ǽ"dI89ÙBJ#plLc\o . rB!m}ٰ |gHafOϙ~2<`F Y9g;H8kai 2mDkϋ:})V͋{Rp @ώG |ѯ_#ؔ+sP_hWX: ,` IFR1j2۠I9Б?)%Mgpo]Dj/պզ͔k ISJ~nau *zהvy4.'@F`x{)P+fEp-*QG??TydQHZah*vcS%$ 3#WTӵD`O$T06Q*`C ?붵flƾzAKw{ܩ}~ilb47eq50[SZl~̐~+RKrv7,Ie~\\=@5BBrK_^s8f37K5jlI.qiYդԌ#k"R+႐x*rEV#3U$nrgRޑV# J@t2½M"q7/OȌf=MŘA1>*dž3or~.bk/`h7rPPqg r_LYGO?f= 3۵f;^Kh#1Q27g4WWxC\B Q&rDg(P>}MoDoN@߾>%=b _c-bk8( D>4@& i`\ťf响ִH/"^X/1vY k "iN qItFX# &Xy3}T!6}M7T SUq˓jÍoW]ەR<ڸZ#O2RGa.ETY_dOzDLyb3{66ˤKt1^#z`N/\h3&On Z;,t CD"n*C1)?8c3%*𨗘1?w.ᡬȫnZ<% 0ҰG0 ; <};9ǛE;TŽۍ!YCƵ+u|}mq-b΍E"pw+[!ހ jxwG 1&5:iћe5P/IH2h!|H9"@^ .Kp,M6AkT/b/SZҨj-;7U&*"ERءW@r.zKSiG "kW$0TS!gi?s|z㚣:ii?틱 4&d-X52ظ$#>"Ԕa`'$>î(f 7JT t#G-ҽV zs'B\|˥LRTPb_S YرfOfJ_ ?C>A+9J^8S4R*qj]L3vAamh-VN/!!n'ۥ11ӻ  )i@;ؾſ?{Jڷk|0*eڗLJ??b 4`hc~س~/2Yvq@_i[6S&}&ח$CG'+ oAnoyD5 [ЭGIΨI잙LXHj' KeVS`^ݨw?2Ëd?7f;ئ[ 6zi\6|xx9Γb?0t_9!ijϦH XGRAbHdިH)C*IP SUH{@vL{;PiF(R/…-aO5!I+fp++wh)%`?Yچu!4W_y°>Bm)zO4pfE!KzaTj ]l0wj,sT!EC2ɤyEALY0Q.bREz z(O]C\uFOcߤbvB gl_GoMj_*~?yV}a GظQC,T *A2_ _@zjȄ4kS= "0>`8B: :KI ݦDO)BQ{K6];ņN%*1{!y*P۾7Q~~#[NH<˼ ~ P11} IkT4Tkl0566 Sp,$B6؇ iDzGDHƵ/h3d6^)D#RkotI=v]] vv A[$W,u?°Ǐ'n/T{?_J>PW_"Mr+7t2u[۹Һi$\>PG_Uc=DIOYr2Dդ W0R#ʘoX 5᳤rATf<,Kg/۽7;Sj8?=yفn\Bg-٦ΔϵTaA.  };__-φ{k%R*e3ڰ-T0b/Z@7P.F5Ǚ=컧u~JpwJZ ,3іIY1,;D F&6Y^.i@&~23l:uLx!lȵk6$bؑ .%i.^cҰbi@7BA _ ~!%d̔{{m!Ryꏷ@X†`VZ rX Rm=Vsv 1p4F&7w[ޓHyQ!dX-eJhVWg1n U7RK⇏pwsAH\Wr[Oa7_e ;WuofͷaءI<]XK k;; ޭ$hjꘃ4D̵R9M U62g_m ?ܿ, KS fKމ/s8Kr /=yh(I4+р1pUFYbR2Up [&r h W8>-xqLZsgSrK^ŒreQ"fOVsϊu> ䷟coVMh e#:Bh m6 )E/jSGv-$<Ys*ͤ*MVI6Q20t X۟5&(KhplxvY _+6Lb8oV/ Td ٘ڥ(8 tQccVIlI-ҸlxҘ:Dr}i]Z>+>^*PաcU?&/)bv`WJF Rv&Jci#޹B6R\0DѫƖi0>C@Q4I^H]8EoɆ_[ [c;|p [|Bu N7o};%M^j"?((oȽP6.GFmKcEQ/ao~dA8Ro/ͬdiXjuբ4xpo>k4L|" 烫x (;}nP?3MkN=Є'̯k"[~VoCP.,= #O(Im ea>@tn_o|H8y2}npqIn+c)TGdI$ ,ʶ2B=&]ʬho&0} 4 S, 'kV.j7}>~Y1}B L1)2YڙX!7o|Bݻ[[C:+q)+[ӽv/@ԝW))9֏Hi % PV5!Ygܹ, xW>ۼэkNZI݁OX|'FR˚H~`tln#_7. 6/,k'F  ']͚ ȁ&0{֏ЂIpgKd 7nro$5.ktr$4/ܨ 0VC_->;Zpx–Yw(e}$ ${q~EN~U?),;~rW:*7uMy|Toi^jgKNx |͟8`ȵ5C+fG|8Nz22#wv66{p/ǰ0yg.pΣ ͡o} c@6;]'r=Ȳ ɍV]:Z xysU]+Z9?W60-JIENDB`pybik-3.0/data/ui/thumbnails/Prism3Complex-5x6.png0000644000175000017500000003250113137372662022202 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+4IDATxwtUUoJI'ґ " E(XP}-), (hA``u~7^;1ȩ;ɞϚeuڋP ڋP U U U U U U U U U U U U U ޖV>)7ܔZ7+ںy$]_Tv`7t=rqY䉣q/jy$//O2 ")ˢ߮\:ud@8DDDHd%ވ:NfGC^5C_Vt]\]#O))ѿ 9]̘f5 )ݬ[eJ?'Y>4 txɕw|-Q̟?_N8i$ HPU yT^39Έ8@ [9yCw:eS2={:)9nTM٣kݢuUˇ3}`,ف^JP_M7d8^F[E$@@ 8Ñ>$8HdOd٣Ae4[PP/]u]itU_;vS%XnNڶmkzƫUk UXn 6\,^9z. x>+y^paЋiQ!-H wm?yQK￲wMP%([~֭RXX( )Q%-9Y%55U+EEEgeI~i#m#i#'y* zQ"X }}`^\vlwXc)s2u/GSZ@o~9Uel&`[?tb@3 NU/B0I! J(2,FUgB IA 2$;M9yR~}ɑ6I rn~-l ~hiii-U^=\ )V`rSbb̨4VCA[Zƪs'{nd'`@/$|o *Q~+/ճW[]tqϱ2ެ"Az+;q0k>nN'J3A9@>gqU?C5li2 =Yz'Iffԭ[W-K(= cndgI}W'Y`Cx ؊'ڭ~jƪΉHv $ɟ Evk[PsdӦMr9nT\ %c>l|v*%9AϯHM0uA?g R/&]ug%TܬژdWxՉ"eg|ό W_}yr-HllySEt 'ެ3|J/䌃8D_x6>{n?VQ%@\?(z@B{㇩qz"aqz%훆Vg w\{fvj5~d;zA]Sƥr}r*[rN;Kp4Ok~BBfdL r*@ONW_}ԩSeĈr$ݙNrKR ?RLP .sLi  .®]=nzQz`D()zq٩bN߭I }fu]h2p&'_W_[4?)RژoӟeKJb}|$G\eI@S3f4mއ}s&`E;|A25wH2Q^&] :V޾@~$Wp/c$ʨAjF'Je#U{|:A6LV^-}5M<9sp r5ȨQP 2[Kw9`:| YANonF@r3M<~PX#]b$G?߾̐SXMPcǎ*!:oWPZZ*?\q{niѢ][T 8iҵPLSatw C =9bX'oK UV,5͈0g/2{DE֑&4 J9>>,8l,`Uǟx`|UW7l^?]wz^X6ol"lݲJ 5)^ڇEC>&9}@N?6?Imo2I:5L{(M*#|3L8iV?(_ȵ~6/7qJj |-Z$C G}Բ&L0;9h er|{KK:M$2 5>3pBX^RXd;>'w^0r*3wkdUEx>8^Aٹ4ׄ~DU_,́(Iw(hhH%/Α7x>¯V  )ݻ9}8/~̂;~wѣr$?ϜE"9ҮIU w ƍ 'w`dfHݔdorjTPGFHgYOT@sAoߦY|V u%2g Iǚ xV/"pj$'D7?3>&-|Kѫ}ΝrI'ԩ|gҧO2?nn ͚5.*_*,qs7uݥc]gEhZ 6SQK'0x}3W^(̗I&ҨvHA/w䇄3Μ<_;^  ~h ' ϛq8eRX~}9t0syΝ;Lhp $KLDKVpv]dBG g5,>?Geo CP5*uɹryMo`NeK?'K>c<կ'*1XeKmf;]}Kb H&v`СkD/=>nk a!ܣ$-!z7ͱUP3o`7CT@vr$Bi2􉵝(-ɑ@a dNϚ\`2܁ZۯjBޱccAc><뮻Nn `@`yat1W㲰bRvƒ82]CVA=t}bQNڶڟ'ǧrEX9X?'KGSܘ1_,1w!:}I 䠃ޓFjg:砎ȁ\;j@h+,'΅y0u>ĊX7gаiVk\W+6n4PzP>Qtthkjo!dQ`(3F=&AupbrL<|$NTG,he>( typ߅o4FZR$R.w[zoWtz@fJ ؎eHxKŘ Ga%Bt0os=B>=aGϞ={1>7|3 >^`ik i 'ϺVQ.w-Rs17yY:=C\g>8ףx\j/ _Q^!Xd<`ui xక)YƄ=嗍?~~Yg0 ~KA}ݺuB{\X2uj_D5g<2l7'ʼnyϋsbe&g~[ mʾ>_W#.&²ŹAپd {5 뭷n@F[V*NiaOBG LpExy 20gg<Ev&NY>{ 1[u 8Oܽ2;HR [yZĄE<"}CӧOЎ߃>hF+Ҫ88|rw@0aykҤ-hiedH$i2iZ4"m'HGǹ*Ui|"7$|~Ѫ=L?M3#d;Ңw'&˗k<"y +>^Do>.}w|)[&U mfvwߵ0 a. FK9v*[.ON6 Y}OOݞlmu"#BY2#K ?Il|=۪r"{4oȌG[Q`X@zn;w]@0wl߾0nܸ g(G^=<﹒nH>Ā:,}4%L#&#SeH(g<.m[Fg)C5DB\+ %<|G!jhۥe+Vð a')u䑫l, 捷fҿwx2"ϯD~@&,[Y8/3R3·-2-҄TO}½ko6S,^XE}ύ??*5X5׮56o=yb~w>O! ;TL]Q)I敩OIOsm>6=&:R('s|CguUh>"OY/3P4Ytfd5nYпP8jqN?tˮW_ާ[@1Xşqkh]<`LrEBr3ϊ |@Ӽa =w/>#&v0zDfÓf9ڵkEջzA8gȑV;A@pE Chu`FRlz%lz5|!SF^ }N /ޒ; fg/mgyã텞3xY#r@yF Q?s{1 `SL*իWDU&x>,L ȼIҪQЋUؐ:G*݂,/L{ } {qH΋Չx ~ْY#dv9+9SMQ?LJߥ@HIXMq>ED +lvq E\w[7GᄿxjdMVA S~VY ;Sh0]n%lz=+aUL@=(iݺU#(`:B `Ȱd N?o#DD4Ѕ @{txD oZ/i}e3LsLn=;$Jn"iw,Ź#-, {Bkp[e{h`xJzD}f0y~T7q>|˖-fQVz]v͙|ꩧOARF϶w>xQN"A^O3R%)!`gh]oAy §12}\B~YڞhJ'{Nxyoz6+]8"&v0J! 9 >@$\K8)8g%PhRM?@Os pΙo}GnǢ ߯;|dR_ m+ib_|EW'ʗQ%Ge椶e5,96T7h;*!ߏH_[-sRɜ @E`٨Μ̟  ?[7h GGEȆYYE Tм?@0;EKvq: H!C6kٲ`[o #XK,pF0}U qlܸћ5"*~6ҝ?l H}*B[Z8R UDt( JQz%53.*{F&JVj?` kO#|@ 9sHg#F /h|7Et伿ݔexH"YξH/~A~f^ .|tR4Jxp`*oZ/6 aЍCk,ֽ`ƹC'v@8,P1asN h*_c?G{S(QDNOgI$ 9͔Qkr}2?:&4,dUG _}5 ̞I&YN B; ."| .(nj3L-aJ90-: _T7#(^w퇋=O{^7+c: IM+p.ʖb S4X@?l? G/Z>{08v'N4-.$oG\O#߃ .$YԽq&(+6kDh^S3l7o[x򁆌7idqe xGQ3Jd~(*7ё@ |v$y8n%4CrM.^Ұ0>T2√B"#@*xF\@{^Exeۣzw]ly>ew:V/ۼ*o5?@gT#/Is§$ `% :T}J͡7&*Y)c4#$BygA ` qR3ѽ{w n | ŋ3 ?@!ulmehK>t= uJC@=£:hIy~r eU޹]'|6r2.;wFM@2;?OJ! p0r`V8QLỄ]%M5.#8p) YAhmX+*jLo{($MEIZrTȕSxvw\ 0PB:B=*OF9CxQ+2aУ8k RK/F;ab | A.| \?t1q0T d@Av9ryض7: dZ/24(TisrmPL sSUGnRgЅ߼}Bovh5LŠ:px0n$ Ҽf͒gy^p!ƭ7)<~ DMɐջ'3gCÄOm+?xD~BJ:~)}!}t1j=)!PHRwC?w~irfٳy3$>*3MG?F1n fTԮVxnPI4~6UPސbyygWoms/>j ˲:Yd_+_C٨Qw?Z M@!J"]gG#DHv>AL@.L-%pn 9=~(+L7a߮5kVKDGku }`tIe櫗߮՞;%Ĩ))b+U[P:GX=/Ů;†f=G}F&s(.4D`1о/t&?;g><ɄcYd?S1/^JeU#{~oڃiXTuo%I#3nU} X|n&C] r1'q1D@h ,"L0>$1 ovmvFm埆_xPU:#._>?AQ@fMLs5y!rܨ$?_ab3.T}֬}ܑGXvp%waG`#LA{t, =ҭ/#g2GZR@MLP=K+tڀj&a^Kgdc(cbѣq\d9$RG=`9(#'>9VZ"Ů'!32YC <߽=G,jyߚ7@U|lW\?a+Z+lGh*l鞮P/~N6aQk~TzRRd O;4$OIXտ E)5|G.TT%(| #ߨ?8vmR/};+"y7uIr;4{|yg96@ qc9@T=&AD~ >I$w1ʮ >ul"T@ԋ4`{ʽ'K$JZPΥՎݧ NB Ex Z{="}ϽAQw (ھ+z3<#U4w B++ENְs#fo[Z`M2u$]` 88AD'<% `nцǞS5j_&?ɸ.tq7`>OMD0<UWK` JJJUO)URJ5C|* ݼAps{&b<6|P=P ]*'wyw4(@1C #5m1cơ XLM\a"}Bo ߗ+s-,, DT 0.tyLS$;=˜feZ7=}L _#Vzwv/vSkdW-`sW.`g $=7%*}G~#$0O>?Oh)]KX-A̋ ="X?*z[;LrDE'3L74( _QCh^T1 Y !*3 z-d» %7#h}}/O޿7 B䄠00*9v irv++0- P |GX 4)ws6@Dd ]o B%bR"z51?hv>رYjcFSfw-:_m /aLk1s<#p}P pmٱ ع[(٩uF^F  A4{_z_jּeJ<v(J#; 0~T O<6"ݹ'pݼt-Joޮ8g:O2L_8 4;pj,(wPTS J̢+qLqBAa ibJ I |_n*8um_WqQ1衸{Np.hg 6H#n-؋⮝W0l:Mc&X>v>X0X؝^Xƿ(5,?=VنGSƎ|z@>!mᰆxd]0Ra%qP:n~#{~iC~*zuѰ0Iּ\xTvf-ZTF&2 0T(*A[` "{{:k'C>ȜGoKqnG-V~M7 Jc!dPX@b}F"QbPwef2=~sUFN)=y1N]]ak5372]L1(q `I.vQkhOfDMF0)alȓ&WkW{t^723ΰy`n"a!B^owFosO?9R"e/Q݅_'1t0#C̀j)#.}~u]0:#ª}qMMVp5sr'hA*'C As7߫8mfכ~*F0:{58$8+)u7OUV[NOݳϚDfVkk X~.1g϶7o5xiFѺQjrqQe;kt!P<nD]r+0N8G/ {LIt QIɣuzϓD[1m_ɓۦ¯q`qY{ͥ22YGbmtO:zIMTH`+n>E]߯ڨ7G}&+Vk}kLwwR̕}jmoUXπ-[tX.Zx7¦|UA YLo($A;=_`i\b/4,?_cz{ǣ)g I $DEOlJNzUTmSy9s7~dM /bD,CsjKiӦ'D+PWoSK¯`-[}|.=2CjPk]Zp;'ȳUv, @x99d4~31 VSO {;]8 9ַ7'KO/8½cVNre){EszjPZ -3ڭ@@:WELMIENDB`pybik-3.0/data/ui/thumbnails/Brick-8x5x8.png0000644000175000017500000003447313137372600021013 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+8IDATx}wTU皠s30d%8$ E8$kQQa ʀEeMvuݼ;npu:iA}sznɌLBI 32Ȍ 2# 32Ȍ 2# 32Ȍ 2#" ]}|cmް1l첕{g!]gГ3醀U _c+UUjӦٸ&0>~|\X,ښucwX;dp#+k.rX)nIZb9y& =YÃyQġbi32^/i°gx{ktnv+fM`|c<E {g=L$# ȫ$/A⋬ʲƣA#0Nkp((a-8<`;ŇͩVd~ëy-96 9TrPCEAVsצ&\ SCkgC ->+0]{c}ײ~]~m ؈6f1 /pJe| ɶV8tx|=cx@w7 ?ġТuƤc})z ؽ_^W6lLÐ@G%W}e^:Φl6|> x{0~TB{g k|m)r2N ubPt9t+G~ϫY[3c&PR\~GVϓ:Wt. ? Ɠhl6*ޓM:AxMQa$:VTÆ\$i 4| 4õ'wjRC߾P"Mn j^x:8l*.3mbҟfv+r0=<#9 (xBs9:D |۴R >Yn-'~='cgNpzԂdACnޗ Sw 7oIA^qf׳ZhI6|[Mm'YMBO@2n|e$L& >ѝjG9?_++~{fu0007^7<HAGJ~k"yJ== VrMaӄ`J SÓrHO6T! 0aPëLMBc#\3 ) 9|ԛIseL _͓+kM+@2ױFJ.z =6yeRռJrb둡 d%k:h YTS:^c<*Bs%%賩WIA:X䉶!р< ~njgXÄq=$Jpd%n縎 uq*Q~eWҹ;?3`+ RS}Wt(&3vfqC} V # {×gd"[J6{ 0xnGH5  Ymf9m:4'w6zv YBR{ |{zzzO;R\<#!o{kD}Q]}&D}KԚ~'c:4{#^ǯ߮ɞz{ے<.Xzט Hҭ;3ܯ-l '0 V8h˩ !|;5n|-! ߫D{\!noxZMd҃W0@ۑ?gf7o4RoJCO F-1c oIlSe~NE uiFbuާy`z 1S  _ x&A*tQa k00(*5ٙ#lGCV ];Oi)P+ }xHW~Az0Kr̋ "G}&/Jn\:n NoD1x(y=Q@.PjevzWVt ޟ߫6a}c?ryM0ј y5چ=hMLaxW\?30O %3ʼ*o!hN3|TЅZtB9ǩe1/78 swUȓac.5@!\jw+ n0 :~Q%^67~V ' BXHڵT\ 6ȈDH&AAz9{@" c>'kTEGE Zg';}Npiݲ k0vc/}X3apHU|-/| JLr%RMv~. ~/U CW8rOb.W}V t$}| %kI)f0 +yy*hO0To Vΰ# ȮbU4M >M9V<NՁXj[G`\ݭ) o^X0bc6ʪ"s/>sX=0$À sF-\FRryH҉tV"T}|*U 8R!{ϙDp5?VH.pE}bV L FXqq<s)ʐSlr)y4ܷGW,x y:;f|;ۯZponleZl4x!y"f3\*@L .6Usj恪^_őGNb׋d˖!5Oa 0kS1~ЧO-j3``AlǸU^n^b<=.v;*ގ\Nch5A'NƐתRi(8F B=#}Ox]bH+x!]0 $*k!Dtr/?`ܧр$O=GξJd35uxqF7Qz {DtIoVTNw3i"A<ޒET=_p׿]u~6-KWNl:wI24*B#Wr(b﶐+U<&xWzVmN'ȍyIg밊Ѻ]SdxH<2rmH980 :;UXoׯY@9ƀcC w]ƔBf3 -#K(+o?PK0_1'|_9cgt(9¤.Zz g{v_o*{$B6UBwUmST`0&Dl0y5>dup+m!O6^* ͺ4C0pn֫7k᭺jNN]CA0'{ kl" -'DD1KiB][]z8h]Q[uI9Jp 4&>/9\]T)8@,^!O +}CFUvvG5Z|*D0_0$uJij};h\c0/t;͌׀ь-f f;gso)an-J~a~XLKlԵz )aJ1+QlюI`DdQN5@b FȞ$V/v@5y4A pd }-IЦڸ&cc7@*ad Q 7gL*>7Zv{B?ݫ!@aNj:w[Ğ Ҷ}:NgjϤiHIpH2"%3R.9 7e~Hu &}lھNkP{N( `ZlJwE*U0<?F}q!E|R +AۮETyANWƇ)2 T[hH)*!c|\3>04BBАq^f+*J|T,./ʋk/SuLUDzD=Cn ӗӭלX8N6o2P]IfgL6Y@knop].2.:^E6yT8 tݻ,HK.ӱ9>dby#h/ Db/S,_Ppz/aO8~ژh9J-g97*slrYaa*F:XR~k8$r*(lhHP ]/扲7{Wɣ]bG)Ҳ/QyXo>?QHۉZY}ҏ &+y*(0c-eZNY|Ô> ^srD2 sP`Q/f 3a3uM#EXILU:ET)ek* *mTky=vv 2gMU4vxQܿV@o=K8I4)n:߬:~qEݭ?@lEڒA9{{Ğ\1@\F:iO:< ,5Ոi |wT z*~lN] rX>841)f/JS^N垼@}jEi y{:iU?I~g:h@_7 O8m,yzy5V;爪ϕQQ\ @ʈ"i 0Q ѨؓXx`x@r[[6-8K(5e Խ##u6aPjc`,{R=Ɔ[Ԧ&qGCjP8(y??/TX@7Kݴ`G](?)f9%l(P7RDT)#۸RqL PA{LU3pThYьSũ M|A!UnTfSnD56TS1um~Eu5 6T?~J=2]5/}J*0AxsHuNH~;UG+x aY D&GQcvn/RLBC Ġ1:ϟ"L',yBj_PyA{9 <0B-tdB1^̴T6LP&luz[.,e]Ev%`x`s~~uMPb?Z(ܿmRARg;r %axI.Sj eb6&Wi7-%S'i15Nf* 9 m–a/ق0rBF} C[k#\xON-џr dKՌDs&t)]f=%6q\|l(=EaW̥у\?4+JF}xHkKxEUњrx SqeaX(.H ʸ)zaPODj{\&! @ybĀ0Ky kB\lHؐf-]Fk)r؍oh}/2 # 6Hp@ \@g0+Qj֣b;Li,BSDJTI :5C;P Dn+1/g6\GKjVp cU eX8տGgAB zXSuUc吗3=%#38q][ Ֆ/X Վi'UZ/S8.JYxab؞m4͌;>3/2.P@=A$6&oTm zDtB*4 Jۆ!xUgZEtKj:B><?+lC4xt@'mS<Ǧא>SrX6-E..d/Qd͡'dϷ{"u)u;c # U3[z0=v8I I)D[L:T)a0^6^ ɍS5B3s??<.+-yT -|7MxD*^6+@[VEFНYN t (U^ 9,1׏A*vݚK'if" HX14AjW,8T*0@f; 'Y>ޟge%@ޞ#q}Bzuq-Jz{uuu";Kd0 'ttP_ZP@O#080bPLn6'-)ftm25b(&©`; (3>ei\/Hã)fq.r!;FLa-a1[q1kw2k-?{&Gs1HBy/EyO毈u \&U\NNi.TA qvn:%+`1R +d  r3`*@_-@Ib&$P!b]!Ǖdq+s^HvnȢ:z+}*{tt URbNX裓!i]K"1hU:~` I -]}TϕʿlOK-ỳc3(4 dQTh0ӖP»*oU|W,|^u_*[t3C7Q1P=v׶e qn>GuQ܊D@X9GLHkXPhվBrm!sQix-aUQ RFKcsE~< oIa| H!: Aw.˪FB#+â djWspS);CTD% |ck6]:%;n㿺Tx}`Rxnm5Y՞AÃq(}j06 Hhұ4V4 FF :paY _BClp=bn]~䚟 INx&[=!|0*`l?&H|;!v?ZkIE-V)VkD "s%( NH2oAx0z Q9_(=Wr^\/" 53ڴpLqsOH/+U(1'+CG{}x0i="0jQ yPfIهN#AFY:廱J|" e[wvI q6O9YtA`)OTVFP"H} !n:L*^V:SF=7S; c>:gGt쿿^H84W ɫשokR Z"Uc t)* ˣe3T ػ '2 C\4)(^@ě) Ū)vo`/tM*"pݬhr94F!&9'mP]H˭q)Uн$-ub0c[(-0׎A<ƷNWLqzEĥ`$H(SCqɐve#]3[{sԴw`8_sړ(Bf/{ = Kҥjן_+ ds}j^pt.8lRgY/V}~-0Bq*Gy>\PO> <޴ hLk CeaɡÂD?Q4{q1p|tGuK,@u=Hޡu j~̍&~}ɻHʇq;wp[-hРYiikv{M&'p4HB!=̬oD=C.U-wETqB"19ƩF`yBnX@97p_uu\t%+m}z0UT1O'Ȯ9;pz NDnfD͋?BлZd'-7ش4:_g_S䜿ZG:(?䉽jO1w 32Ȍ 2LB#4a NIENDB`pybik-3.0/data/ui/thumbnails/Brick-10x1x10.png0000644000175000017500000002222713137372620021125 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+$IIDATx]ipTיa -u}3.6a06`0`aX L1c-,l"`[X%08q2NJIR̦d23ԝsԼƱHqK}9p9"8p!38!38!38!38!38!38!38!38!38!38!38!38!38!38!=JƖƵCD>%oKUuTk S2<8{{۾2&j*|e I6YQ3X9 Y}].Z1%HC>&kVk"Kݪ0 OR)P+QA}+[=) vx `yx%Oԋ͍V{p47#JUs![,K^1Z@r>UUX]@[EvVE:!!}`G!ün | n އ Y -T[%* d2NYT#y`>xKWsj2A(cfJ5%2~-T^rn;ժy0to+."S@xw`PMLSTXδA!~ẨFw, á /Cs *˹L9LV> ',@W1OR8wE5 Oaq@?eZId=gW vq^!PA2̆2tǹ) D!#DVqK&- O*P~!@w&[>{*K1ChHa(+?c  =87Rkqͣr5>>9T=TH/|9>K0W%~)Ef@cIIZmʰ2j]tLx _"p#.2[uPvѿ_!ߐ.W~&c OPt}|u&Bp8Ȟe;a!_f.t]LB?cXl$SHgV_mdeJt( Nu2 /xq (\b!Ǽڸ]J}2$GH:H(v(  q]9cC1d&XZ հdh4fUS)O`aiҭo-5S=j&|~1.8/ HH;-}4mdB([<% 3,綇? ݀, :li<cmgxC3Y*O`i<*8$E t.UQ=$ ehcHZy9x=kпב?#]%gף&M`8D;hQ\ex'(< 244}׃\}16X@B! , HT T6 08kesh, B0->0Rze=)nCf+=ZeG&F[cXU gZIA܁8.."_@)Vu#)Nԝn!d1bIKg`F6*Ah$ĹvTlCeb(Bƚh"qۖ*Dތ33&`c\ӟwC@e'|$#`"ӕ댄6ʧj"ITEh"F`!p =&hҤ SHK`P kChSJcf&stkOշvkM# IÌ) ћW,}2-5U! DKaYv<pX$ca%ߪ/@6vfZIeàF߭Vy ,Ϊ ua?d` 2 d|٫p%K}LtRf]׸sF@ms )X>v\ `+e珹y/4dsY ,h0ϏZ@*GwZ]*wAV8|+ hx4 3u9q y->/$8sOi̓qx,&Sv _-VM"`qD " L+7 0Y:+!2R MyJ:6-,Q!?,[Mm+ߑdф#x9#]<._ߕ6/J}q_v pap$D/ER9d)-[2Gz$2DJWX,!ccgXu>!#yi3]7LBL!%U"(LѱAڵ3rx,TB{g5ATC Irjd3q4ġ )!@sZҪʕԋ`, %`X פ8m oJ|Gŀ0޽J׹: -0UD7+ sRaIZyb3bd%kg`kɪGCf=fZ_OΙސ~uZ>c+˸%X4Ja_Ԁ͵ X@YK_X51dxM0gipXfԹL{5wm*bz+6Vau14gDC*sb{\Uqb`IRv(/j{K&Ej1"e)ےI16~L.I#_K[g5 sU$[bՏH|F`(گ-T}ϩ H7X& ([a j^ G6뢤uS,w*R* Vg'4o]!4r*{GӺ)cgx6cPNjrS' @jV H IF+BV2)HE6% HD!;hko~O'gPâfGe=L {Ѱ[ߑ'ԗwo:hrlxsFyX~;WRU6o `߱-.bߣ/ L&:Y5B:3ݺ:lc]=`X5knf'|kQӛ,]h@5[KN__0Ս8Ql&T$OWKf&ܳ@+ƕgAM8.1.dkE?,N嚮5W^̕R> R fOH|x,r!7`(dX0baX=jן&{̴pc # _϶sTӦТ Eb$#KojV2a *7N-`0cY0sk UJx!ɻs!zՅ#l =F!$I"AꬺNU SoD*eJ6OmZ^s75훣P7o XJ)5q ó6/f[+*)\G9I(.*o|?}T?';tiS) `PYXv~ER7=f 4)v1#y=mq<< .bq3]jډw>=o |cgiɳ* ${,z涨f `f?>$ytݿ2g]m|>i| ;zh%.i\/,@\ ni8XB =mVWb.Y l ~bB:{]F-aN2 s-&vKiTz&Nlu `Y<Ac$ۢ҆[Q~F-JK!^% \J̞R3`ZYvn#7縟qۭLI4b\!Ey.KWCxZ0Gt]T/gP??V)T ?S[:V'ɝlw-8R{'ɭBC ݡ Xs~ )B7Z*mAz3^su@*}:r&ljbtǥ,n!!B]0fD㒉QǑ.K} 5?KN+,na߳~Ԕ}ߘ'/0^OUVl#?w[Q5k㥇dO |&A66[vh)aJ3۲uuKܲ1BЛB}0$ظ*U<lcO7 dHMw?}jnk~[fl*.KI.# \@GW}eXQ$v FoRܹlc~V {(;m0^9t,ڬ v 0Ť?g?+$^29bBK`S cqA=3NbPzJ&榕շe:wDEy:JҔ ,>Yʐyң]?ðhcK`90Ⱥh IJx$BQ9҆ gpnǨ OIe2{f3u)vѭeʐ BǭMa{p->Vl`HFְ>ײV#]c޾Wx`HY7rBc BGi]>#˟cKTiLAKbW竊;t @* 1=_P֐ "(UGV2Is=@HT*<Ǵ* 7q=Z Ht6vтucDtݲQyVM>hVokHI ^s^,.x27Xs뷁EsC'Cg.u63`QQe/')uwv4iEz$P$pw&NpתBtOR-ebئ;ܪp2`< 0_! i_PLl` 3KwOv(m!84ݤ{aoHRSՙ=i4ݵAu8&\tmZ`imd$Y>E"d+IϜT_^_T`E򝥙ӫuи~աw9tD x.xfͅKaMbSk AdY8Z=Tk7VJ1%Ipz d\@N8#r:]ugX8;!^A O*5e۫,q`R@ųK/~3 okxF̠Rty|B3 n#s1kS@3(!g2],7Ws ivz'p_u+01GpUQaPv_K/͹m4N/@Lc U>pMHp]N ۹v&Αyg&𞿥&XE$ѭ>۔?IICcV,8ͤ[ V:rpC*2ͭ ۲]Xq ۸ݺ}X~ RC42Ȑ*0qD(R(`~k(Lwѻ/&Q+h k@n]IVt{u0BY+ijIe&SbKux7qDv$E~cc-T0 *NR'4ooԿR&k}^uQ K$d`!*MANnoz2+$XS]2~|TW@DggFԿ]5x_'|/:tZeљuA9H| Y{A *7b*XiьpUQ~0[(|Uڕ~en&`|A=}J.O986~5fkHiAtK|?w]&!6Zꯥg.O'?Ԫ`O*Z4:rѲՍE ni4n ]z/uh8r#5njohΫ~)SP[]m )߃I:h$&i «Gʳ^I5(rbL?MLJLd Q`@(K~|[>m@Ec]0uZɀe+t jBDuk7XV<# #>VtR;O~ >ǥOl̿$@,*Ò-׵^mj mbng ml 5vgA|܋'5k??P@rmXhٞ!u0hd(5BCp<@PW|0ãNRequ}mKE׿"5x6>D #c,RUi"; |sy[qmk;K{$tU1Eho!,Z>{'U~,~ȇ{1h젖pD t,0C)e$QuU"[Vr|vRi,貳2"ܬD >7{N/,>|QS`{ ~ȐqnOA[ >ǗDG}J2jH-:[ƥ+XS`qq@; w/)Cg8pCg8pCg8pC"8pCg8pCg8pCg8pCg8pCg8pCg8p: #'IENDB`pybik-3.0/data/ui/thumbnails/Brick-8x1x7.png0000644000175000017500000001732713137372572021015 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+IDATx]yxՙ#!wͽ [dMVAHXU .5UjDI)D@PۙVNV<<xFPDf44i\GdH2h?3h {D,v!uY_';* X,x.r#PcH#]؅J-VGP.&=ap[E ߏngꒌk)-Xu8\}@W7'fB?s r)˜/d2POڼ)o|1IslHk뎟Q3_kqvLG5wx SA0aAzd#l[l{H;b 6Iw$Ndb\<O;)ړ`a H)OLM>W 2pǒd'!z׺{J +v}Ka`O~vM k2* 8\4x23QE‰9рQ!yyc/swHknXP|J/!'O|Eg7nEti6Ya2<\j@oÞ&FI2tCKAEvM3B\!TUu Ј2em:[=*" R0Va -5_a*7$VC)7y{\d\8[LUaZaf]˳{=J_t\Q҄"CH'gBB|^`?j|Ds@bލy{!nEt^ǜ+4B1@O1i5tA~Ǹ]CoX)bRBEgwMS8<w:0N^XĶ|BiD̗k/E[#f&ru( 2 9Z D35Qw%Mw%=rU`zv//$kq.$ݮ/XAO'HImFa\|(;5VqdoncINC"{~v>yqp:DbEk`ɭW(/_& prWV ͳ6H <^L/`#ؓ53u&ނ32:Ug!SD m6 9-Qܮz#fj?ze%1&I򜛝f>q 2e9w;Y yfޤtZyxhq@=SP&;_Aܬ60Unǃtݾ@@|' xĪ"P3"YU:X6",#Qy-%xM.C~v:hi%J,}2pByJenGtӉ?br,&"tIOCnY]䋧Wg}YѧZLj8xOŶڻw8cxSpq0zٞ"jt讅#2sG-u_+dHMMEHO$!8H%@HA,B(H.>'m#Lib59݄׎8E6е)p!_<1Y][eqzCY98SDd8}S957m >zRoƛs3**d֦, sX6E ܏O87g)m[To$z wuH_#K%2z!ﯼ/?)+7ůsa -U bY^ޭp)PaN fnSeӃUpH c1|Iwu>KG=?4 U7lv~@4r4슿I{U%s])yV1dM>Jk(xdi@:Ar_SS]V/"n <`Þ&{:@ċ.;w*4z)§+b&Y, 7W+xI6ʴsybm_nH?b/ qG \[&{!bϋa?{|ZR{n,xۣA0<[L $W(J]gd'Ʌ8`ԑ JA*~;FJ;<\L 2Ћَ.[YТrTWvBP9@R`V=n( :L֪Jes%4\O$B|^,VdL 4F >vOPQVm¿3qL˜ !8XOD+nWRS-E"Tf=GPgTyXl+O =DIQM$F[l!s=!)SgB-x GSTVd8 ߹g;v/VA [<9LI-[˓ybWY0rH-pIރH{9z!7]ucq4$'bKbwr$l-lV'h'D#@zS8, h )!Ն~: |3۸oK m"jO;S)"Ig8/Et*;|CwRw;G_D"Gi]c̮rxK<+8'6W\ˇF4`IEm`CDNݒ/!ܥH)“z!߫p56G?g}z0B.om1_Ǯ3Ծ躝)e#CGJK'mۼ~r.!1QTڈ\Ht+r_|Ws/ iӹu bE*MOwgUsT*AC DFx M\7\O(9Ks\#m'oX,'=G @A- qMDTRX>n*_}T!_otMΠ8|}lZT \OOQzT (ocHӣU$3l͓x%%C翎9k۪S-HS6>.?\(^VobzB}e@c-t\73=ݟb s[d'r41}@9Ic[ׯv%5aÃKx%H=a+u}Z$ p2ki BrisV+vD 9K **ng3g7C90^,z> 0DC^_%(|KUyY!p6"Oq]0Qd+̚zbZ?kfC+ sqS1u+:( l~xmT~ !iNs3 ӜdrޛP>ڥ dXg2E tJ.*SSm"k5Omsuqdc|КBjhn. u45.J™!$mZťgi,\ M@ۅ׳5[  /EZ'EoOh0Je} H9UF:4ӯ~9?'z|6@QJNӥR(GF.%$+& "5@3QoK@aXE"suƳ$qtcr (FN-= >(GI l^PaǒQ We%wBL?T$s?/vto<}#}CX벻4p|DQ}(Z!-=B#r1Qk|V ]5a5~`3j)iS5ɘ)H[YoH"I]`3V`?znR+i7?)#4C(PIxH pr}QV-c{6բSuU  N`1dB4* p)}vEHb`}qv}gĔij~kB6VF 0/)x;BOWI /0U\]Fn;SӚpƶߺ@ᡕ@1v?I+g&?لcP SDѰ?Xpd `# *T4O !$_G8]J+۞)?{ɯjkktS|5,%kW5UH@Jd83,BEW/!<͇8?>+ZkDBy.R%&QX2*@+HR Ո {`|aX_o~l ~]VATFUSͱH@QIw4EHJ(uO*P,)C|V!} JIk.%AMW-^GbƂ[/P,%y}Sz$EFpܩ=YMףǠ>Y F8Us^"#-m"/?rx *0N(%# Oks!/o}%USPJ.<Xby=.(egwgWLV8FQ7=vbM= c"5ѦK>Ckzw30f`!1Cc 30f`!1Cc 30f`!1Cc ?C6)xIENDB`pybik-3.0/data/ui/thumbnails/Brick-7x6x7.png0000644000175000017500000003771213137372571021020 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+?|IDATx}wTEgvι'ϐ88H$Q2+YGE0$:(QQ1gUWwλu-b|9Ip1~W֌&>@3 _ E% :6;'Nxv .J61p+yM4۵od_~.v9Oǂ?NǏ^PA$?ZU>Cy2#4Y|n2|!;f2y3`Oщο< xCQ̾ 7{ki#x^# wӹ8 mO3qm`+hO҃ߝ(K id:!q ` !gY-ذ9tyWt%֟;A;-d~lI񽊌|! CF[ qqg|xP[pܓ(Cc'辏uϽǥ{Fz2! X.rlDF hAoh$^:>F\ILH𹅇 Г6f89A:F&q5.8Ǖ_ޣ&=;\~pX;M`y0\dEd =G]6QvqdrFi"teKK;|{yWFCJ#?H?ϥG=Kh!$4Uh22j &*b~t_е8-cYE w'Oyfp\ XK/QƟA{ANWpL"{U^|@F#| DE7UXJ`5<5W^Vs=!6(t:VNm8rwzەoɘqQdcSy\1ܒ *㗐a-4崊N^s!:Mƿ֖_@*WKĽw;`.vg#  p4g+K00+u:2$2~%p.=Kɝ?A{X% T:P6 7}>qUf,)" D]=3y>dcWwzaT _rN RLGL <^s:RC+-w)vPSg#b{-*C̿ɟn( mvj0~}Խεtݺ!pL>4Ҩ=y*.f}=yf2 aQ@MF;zfvp(c\g/ܯRD)gOTqP]y1!TpE|re'~X 8.akkMYs2kd`h!KaB zKMv{FD:z+2CjAeĥdl$4b>HD$ y$|?'D!V:ė/1jȧ{rJr?6PCB%U< 3yp󒠑3~hGx8ľA^T{Uo2DQq\c߭`yLNa -Bn`M׸7@]eAWEo[x2xXA"{h*&A`ŒqL7d*Cܜ@Q:eҽMwDgPJ-z/IdohG@P$^t -w~ENv!>-rQekM@d/ D_@ b㜧c}XT9J# Wﲳ7 fLdҌ>vu hF37) 3[-jH۴=xxqN,(i$ ϛ1%Axw{8ų_ą9ޫW]f6T/N.; uX]JC/@R;{eMT,_'hSj7:djC<]Q%Os[xAfK03bU-Pĕl@DrX݃!C` j6y!LsjЍJˁߩ].T$B_рq; q㒀Lh\ _bpv|[>}  b9F܁0~&v:+)Yۗ<_iG+! WI>P3RWfd!l̼ 8"7ܪpJ/Q0yH1oiytm`hoض6 ^q%ѡ&(+lhZ{25ne ({aɦpRt1m&]* Ӓ0޳y}MB_K 2~;(vT*~.,8@SJܐpT 8<V Ba_4RChE.qim!n#Vq۔!2~L3UD(Ή{= -穐x[RѮ̖?|&! c6q!~B!<,@ҽIpRu<{1{W>xTJZۘ^Chᖝ<m2wr<z> ;&{b6n;ϫ"i;1 qE7r( ]je/ ֿ)}Xt"2 [ŷ o? hW*e|. q q iK|q"]Gbp26 7#9VSY6փՅ0y6V<#_Nv"avDMYl :d缀Wb1QQd=/]>f~r+{E3w7;c˚4FX|1ۙz^)޹LNk!0V9sqb>8GDmw1"wCV gIҮUl N9&F !bdIr482~i2dwͪj_2#OQNx:•/N=,l>Jup&I62݃[ K*sê+FkTwg1\A<~x:k )C H5Uy95}'S6 =^Հґ&P@F18Yg3 t "v[Kxo?QL5DdUYE`U& Ĭt4kT+e//@1}:w2c` vР|聑PØE })OlgvpZf<2 = o6Rt (tt1:]m$ji]2qlXuiE!o}qp7JzhZpF)Kx,OkLtA3bH?'gd|Vi7*04>K&O>0B!0@L$LzvH tO/qwn snC|PB ZGc{- lXmvXw$pF+D`U8d܋(We YGUK(Vv1#{l.RmVk q5N<Ǎgh7J2mGLCU4G9XJB>k J>+q'3W"PYWB򁗞p{`u ?A@+.!5o?;{q#@fzc @ K,A |[2td7fmB O3N$G) (OjEH@^]3$A(!v"~!#u|876[b0fk:U_cX,mb~|_Nf.'@jG &^a0@Bs9DЅ[* ]:l[Fd߽P2ovqД-0~u9c}LY $Sj+SAfB2Td+^NΫz/]?c2:\6VqC?I>^Z%KmJe&\S=%_)%A1fṗ"' @HhK^,Y?UvuD4w\Ȣ?fjk W) Yz b7ISXR."B:)B'%S%hfM9dkDZ\)* {ICyt0,{{ C{)Lr|2bp[(|Bu߫1އT]7e4a88DY b+TKyFxm  R,uU;?w@(Hƥ)g)%$=bx6hbF88xEIn~:_^.&h`q% jp<"02t^. yV;B3wʈZ`P`,m<=+`R2偢$C {; JH`Xȯ8/Tͫ{a+06D.Xv{O\A'k`$*$C [\ԔR!PaM"k)΀\}%9ߣ'6!z7BHbvO`:ȻM!i/k4[aoh@S'߱oo'pz3OP:-}X|G(0QQl7T<7w<ߖ lLgO1-+d-8qQjvCC# uK-/}6J)0~DzYNGi:=W{(؃{0vbhC_EIV9["Fp!;Ji{ig` z@9Ļqi "K6)W @F+' Ã'E $qtvRӘ<0Y^!bRV҈;]E0^{^dzzXEO-Xç@ƼiY: _YurWJ m䝰`4ߐ 3\9I ^160mQq+5ΰH8:d?UCM ?p !֜օ&Štyf 1xg‡Ð@d۹]\B WE~e?PV# ;ǘPW.>gy;mX,BC 7*vY 13  v ,a/T* ϠTNSdEY *dڢ4N$ t$2v(EPm\7|܍ bGV@ez {<㆛5  rpW%qCBG}W14jbTj\eh1",9-jbV8B*~(zCr?Dq *Y#hA!" 1*.!B t/$>_F|Y#?Cz9K!߿y_tnC \Э󳷀#A|b.F@Az! ]xh-,E6pIlZ2"xsh%Wb0^zH"".l)߭4s^X^,e`{K5Poܺ(?sXhE[C\FEED]kC|[Y+셋Xi4A\a4 #ȳ0~6)Q@zzK7^ F{^47FևI <>*}_͠ArN1?!!c@Q }75(Y?/.pLm[YAh'EL]W$=Q7wa6f*#'3&ecC3@|84 !#p]MX0.[=_%!}lo; y.n&0K,% ~A{6=@qy=5^rlkUݠn䖍g/2Rj` :Uk1dBxvFY`uu I_OF eԜ!yE|;G n^/[8eBV-x8߼)`^j.d0SxvK\  2wOU7 74P`.{{yK"4Vl٠LRmIvʸCxgE&Y%GG;yCL7V8Gׄ.^TwA1cn#kq; S`>;uv͋ "أ5gkJw%ÐV60WFCi2 P\yS\oKWE)m@}h.س )^=_ڽjIyr< jB܀ y=lK:M +`~^vUFk^7^s9:]TXlt OѣB ^ <0*#GW̑T J-lrJݛ… ,x ]59A anP>S'yrc3ڣreB-Fj9@FeA!֣cUus}-[s٨pzRoxeucAX1qt8B1<RQ8x {Wؘ 'zSy[.Uʷ0_N6)R؟oV[Sѽ#v"C̒lA~\Ȕ!ٚe#ȵK H5}}"sRD+ע$cwDF"N"EEEbXأ 5zwnOGou{  0rϺ ;3T bܸuG]Oy282ttb ^AU[[Rmf!h%somLDggX] ]d8( &1JI=M̾}%%+/񱔋/ൈtkD33z1MG7)).;]3d U0#l c`!(䓤kls0dk t,>7"Nڍ@`Fh6s{XcaD]'WvW!5ׄYm⫃żWՔ0!)wd t-ʽ^WC-Ni\!8.U;ASJ*ybp\\bO+YB T'&I+I#BY:{ KMS%G(P|wS\t #Q1@GeI7!( `6-bޠ r9XEn)@ GljS*nd#g〤1&Dc +pOA'8<|w ̭R$mu$o3sƸ%G7R( ^ԫÃX冏1Xdt=@)ٍaZ.w;z70P ˲4^8@zemucISiny>4s!uXSq\^|{y0-5A>X&^zw^S qU]\NPF]Nmg7%,f p*'|ӈ3i¨ R=~.hAT}ޔ4FvUsd\$֎m$dp']C`+~t8'7\dx0~BC6}vFwή`FhU]*L-kC9TLZSh}@oUD(.xW1e'x;քC=.7\\}{aw"t04ffG;,$JXG?o ^I7(pUȇ jmkLe,v3D|*0+%yް_Dᡇ$Xy4_pieLHr} ^a$r79{Cռu/ "j7MZ:yaO(-8xϑ:0v&z%NyQ4FLn4 dE8]aLo7Ԕ@ BH[)#TInD{!P7^3h ~H5W=f"eO?aϾ;:2e\<DՖR R:-uY<b?w-bC} Dp*-l,i\Fݍ&c Lƞ1}{uʇ?^Q3@:_ơjcll7ƛ1ˆfBeOWR5"xi"?v 25 9]ry P'@pC~>$QFTa!oxE o^-ջե `5Br~R Şb!sq7wϝ-KZ2 ǵ4 '.yR e?v3@+U4e䮟O?|҇ʂc US)pn[Tf$FBj,kQ0 $A_` } s5*Lf.-gȼnfuEy>Ev yw{ (7; PϪɂuf .M1L CnmO( KdKVݭܩi*L̾Dqr%9A{Ȁ7-30k3-F˿,݋&y\lK6a+j}"3`61*Xo'˅XkajH{ sg!;L:@kݔ?#9CR'0JbSqQEzy/{ bϻ[}q)#speݺRo=/_/L &E3p50)?Qm7Q{j5[bKAJ+2@/ Vp k*^xjɃ_ b(ߡwY<+!$>~~ZۃhjjCRKc>QvyBg\ /IL&ȕF7I56j(J{%qHnmX;qqO?"|e r0V; Q;54 s0O l^yŽFʥ^ ZyR+ҎNeyLYJF ~wSJu[3*&!-g`#+2cXAB;hP57dw!lq q/T`lER:gwv^(,On B( |?)@f}3t 5|mM&`Fi9Ò3 Et]8k t [/۽|K;BQ`۽Qn]6՛o]u?һJZd3j/L ,7H#A+| %_#G]O߉DʗrGnsQk˿18\⊹~twUu#k+}9@t!xkzn5C]oU]N#ChY=K_x$۶ ]m w"^xx L@.{tEMt>Y.1Tܷ?$S?O;G2D`HӅd尧1"76oXL, !+x9ޣi^ >xmp% V N c %߃+~s;I7%,yB26UnZa pHYs+ IDATx]{|Tյ׊rΙ#c&OH Hx#S @^ TZP# wR*jmnڗv̙$$cL9sf^[k}l~}} 0$i&L3 `ILf40$i&L3 `ILf40$i&L3 `ILf LkH>}JNVK'vR*'f@V5?"c=6n\Zgfd f1VGlvDdx\}I/UWW׮L8lX-B@lݸ4oڙsؘb5"2K@ ~g*= 5MoitN-?V dxYNdjd(,,9q]xq\hO=gJs ]<$9H1(]Fri`рlvaAwUaIa`2ߧ{cqo2|~3l2 ~ e*oMDdʕo: p(Bd&!HL!e!-9HytEVgn8`H/\H~; u|x<l|*dҩS%Ͽ8C:/1\Mc0`C%;Ы d|ǃQAlXVV'DdoyDsb D E-mӥKN QNAY:5 :sqA,X,d%gf{Q7h,>D; _X%8 t'x.jp$]9ޫp0lBl5Ᵽt$Ϻ^H=)?ˉ ݉` a5^:P Ԇ,G9n\M Ӥ!f$~gos 7E| Ή$xe: zW!//4x=.l"'fagcmh"CI0rsswX46΃'f9SD a E'\kŊKq!zwO a6+o+e;EUxX:$3[13JeEnkcBCO^h^-zWpO+|>JR¾KUU&k@MK1øHK%JPEeQauaވ0?G=D_봡#Iһc"@Ă9tzSL  \ANEWH10n:R2v" [I2>t(Zo=`˵4Vc5'@>W.Bq;K0fD@Z0O.AR5{sd 0҉NL$ϧNA^}?J-bt0Lz34 L!6CVp-͖#v֙s" L^ r{p^h Fv}r2AƆRB6lr"O1>u<֫& 44%@$ tVh{x|假z$~Vpgq"<#Ckr6& >=E x3wV!&I Y? c/?*$"8Y|xt~Yml4%FAK!**O5~)htGQ,7o"ތC~>]~[aVnݺR0ߛ]1ca'^b;d;|&5)%|w5GHYi̿JTe$ E:Nrկ`(i#ZAXCG0y}>jacQ[;ŢPIH ^eI|IjiOc#f)l*VnK)W &gH,4+<#y " 6 J/!ur-\.Χ5U7t+}h6"D Tv WF$${Rɸo*7r³?-CY-AʔˎyJ+`#3ADK'p\ci*vt%z2VmIή5Q|ˊ3"&uA-C"_w|t42/[a@-,p9-}1y2:==g'O1i܉8;4z=`qf*- FQ*zx|[sRѨCy?틬Ix}Pm˒:)045fuE-yCT9xdb!H 76'ClC[dе~hc[dmط=Q >~fQVmOҵ^J?/>`~0ޝ<%S?V-lZ><`mm O Kcw* 55[&(q{{;I'*l.TX9b3dOk~ >W|tYjLc}I,"DL"עmlY7N;N ٶ2,!7r٘R+jl}SjX3GtppWXIK(()N(H_H!b0y,<0Gd٪Jv[l?ckz ׃58G{k/9clbRȶ|=̱vVy;h[ iܲd\ ܻgSD@l ^`)?@=5|+Dz,;_.VV!F|C X1@q5̥D!EYF@Db&>Dݯʥ_1俣o j^vyo粯v!Օp˺`a49"A^A+<Tshõ5n!o/Z~fSEn3'46+BZ-2 Q#hC(gtG\3z-s\A2+{l-l^<)A=xWt+8 xs %-,AɬF U cH+!1B`wBo邃4SZ)=ݛNqT^sተ a>0PLݽ)J/֯ψ/6?]w192b9dqZBz~!h +ÍqG#& )DD:ɦY9\2 1Db!֎|i:"6v-|/LRòԋ~0ⅇ:܍MЌ'S'l7A/v x3{RNhq6V#TZD>k6[k"&lg ';~??~`j% $@ P,7kx*{{Nk&fOg&!"$bJL ^僈(C V𷓇JWæ٪9"~//V7򲩣lrNQ(*WgFYgXࡸMwȟ |JK{i|pdu!}uZzG6Ƹym;E$YЬx=$Uvlys#̒'f+BRJKPGu!GV igɖɸн~)\BY/#XYbf#6wcWWq7[7 TųțIƉso/"lVb+GT$(TBf[ydy K!b'(7>klX[Ug`#1[&B (}o#hkZT͔$92"BzgD{a`n'_lRz6{U% @uepsI4l̰"(QX)^=x _A+B$@~ %X_~{C*)ߞP:pIMHBdZ/%$lҴmϲB,홸9_3{'񰲾PꅡfIc~|Oo%Ѹ(,C~VUh"ոh> $'@ztGײNf)lma|WܗFqxβZl?XDo ĵŠb V4&Xgp^a $E[/Y >3nswRQ8t;`bƻxJ3$!0We+V3}L, wGCοnTou/^jߕ10A9 |_H,i5Nx+PgLxKzsZY %R?c2:N_/sxǁ jS.Z"^̉ XK.JUxW{ٿb=Oiqa$Ʌ$reR2tN2%w"V&GlVD{7:|@lhobVWLqecQaȗڡ_X&=kᢑgg1[^^B`O+ʍ,N|z*>8jUI&q(9gTv2.&HC !BD*s|?X%_Wg*}pH|z4NN]'@W8X].p5:F$DTwvxy}Y9zE(aoZս"{CGɫQCI4NU>`VW=d繊8_kDw/a!JHWڐCs 7v/mZQ?Iz{KE Ao/pں?۳ä|&hyJqNlz8P>{i><>|vU'ڽ'ѻ" olC;Jwdo}ٽDrt;iH>)^?`Bŕr&+lMj40$i&L3 `ILf40$i&L3 `ILf4%o,IL IENDB`pybik-3.0/data/ui/thumbnails/Brick-9x5x7.png0000644000175000017500000003023013137372611021000 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+0JIDATx}yTյED[ 4 2 , 2Ƨ8E%EDEE@D13MbN^Fo}έ]}Hou:{>;7[v|}Gv.Bّ@vdYdGّ@vdYdGّ@vdYdGّ@vdYdGّD.k)= f[8͛nX`5O!x_Z5~ps ,ذ5K9^'xۑ Ѻl873<Ըx :̆o{Jo~#]'kh|pK 2IaŖA ~-1 q'#rUYl`!xwj`|73 (_=ˀZǼaٛk8ɞno`بQ=RRϢF;<uS)p@5k~׊7WMb F ]kq6X*6M*`08p2 Ok:#p/Q L aAjc-dcH&F5Iac%|⠾nn%7RySn{Ėg8:&{NvXwxG6ST1 - tJ~7֟Ia pPl9l~L/l|?_pfLb_~񆳖9 J6j&0ٽGxg_ndC=Fׁ9f>(ɣŞ"GŸS*$7gJxW\o87p6v?אxܑʆuf0ِLX}m҂ Ap=,`QQ`s/rq `8a;~xCUD 7fg0f<~N6ijVz" AK/xC4OҞJK0 ;5X䠃7ʼ᭯pFޫwa0`7yRCz/l8 0`P-`2@ \:8y`qY ?Mq!rS;v9wՕ^'P.~ -\كk΁>I= $σ,y=<@W+%uc7=zrvbg#GҀ+p|/Ѽ, an߾K.k^^ͦ]À e0D6@9_ gy:1a\@ !.K7\~>QT5du(Yy{S~1 i@[ Ż(n9pQ .1f KKx7Bۤ=yWÃ!) )9y/y($""L! :4$-I4`I;'Q 5%V+:w<$ڵl!"J  lL'3`Cp Q^RʵZ*l|iߔy~G{-ƿ!5|T7g@sߗ!Ѿ}{ּ 6p3M;VM68^9gAv:?,įilyv;:?"E6rxλyF R 9[,yﻄw=&֘IE|/0 ey*f9J>' sl>$򴒽-v f>6Mviȋo18֏q^q^la ,x?0N|Yi2~{hMoTJFbOSǜ<v̉:WT<W3^,y@youV^m<&ߝh1M>joWRQ7~Z-.ݎusF&~*=k'|ŏ*4i!V!_ԡ=' 0 ~ ~C{ߦ5 'pRu6GO7roc A<Ƌ];HwCxb p}epEx/kPX u*yM E%` \?(%د;[1BA <^ke6}&"f10/#bTD!|_\KGv` VWQ!\MC;_ VЕ0HٺBnc@6ؖ[70q6~ށ/?[GC?Z0v:6\8RAܺۈX )_+iw{Ť/S>d/?__Uշa>%W]{xf`v7_cwu煟J]sS.ݣsYZ8`d%^ƄQ-A#Y@[!,`7T?+i& }XV!qq^)-"ݼ8B :tgRv3 9Yͼ5'j}- FT02^KX?W@}iCtu?6/|K=%[JM߽*Pw kʰ0@KuÁm{BEx 4Yk0'eFsNAzj/QKa,W, X(XYZuQA 3I#ߎ%MձR ; P%›t#7,P.<|{swp赕ݙj$m7 Ŗ ;( "kջ` dF W Z~{|6`fE k0=6&o.)tYv=G_}_ܚ㉫ 6`(#մm2P0\|-br&e>"0Z dP= wH7c jfJZ/HǁJЫPkзD}H"jZ@#ĠT^AJٝHo0Jxw҄8xb(CZg@׸4:-S=y8 :cqF1B5;w=V$  &&g/NKP*)㻻6 V=wz'BdAJ,x\@h81KivMahh.c·>78>%, eu#;YuqiÚCBjJ6"-J-5/HfR1=Cgr(Qᰣw_,&=}g?=ZX)^Is^P K a'#1WGʹ_| 慉2rxcD!bV< B*DYp>ub PŻ- |#a^Hΰ (:-?8ջrt>[H}ZtQG](ݧ+6 4s@lEyg39KM^a<FNRvR]"%xe((ThWYV2lOLePw"6u1DT #pPh2zî `߱%AVӲ!=.H*a@} *'҈9 U><ҫ_3 W/yl "8DpqNW:D fΛLhrI;S~!b |.qu1LS7ʱ3EWq:ʿO79KCy> HN~ YGGu(eG 0vtq,*Rn"jЍ1@_CAu`ŝLNeM b A/"w/ŮWABD|v  |*u]PƏ2|&"3N8ΏԚb_ AJR5{u؝xui;>t~]_NaхfWi*t ?iŕa:L>]==Dsh̰W )/Ǥ)W5jOFpK# &/g_$qAYe 8D\@(SN)/J?a^탔${!t t}Ds۹>bW]ǼWIIA5V<Εebh~e2pV K  tw<2ЁCD"_B%Dz]C"kM0*Ȏv-Ť)Emٮ18J|6`2^cynx״Pawr_%RԘW{db_v9Ƥ!>VmG/ҷD͹t۲Uu}، I@dזMdHVcZ/Hr #4H>:`1z3: J3Aݥ !xȷuI7@v]Õ;bg3@Z>Ml\chBE~L @[oϑO 1/w0}W!5/OX]k*FM%[0s)i`xS!Iqgp 2PC,Kruv" ui5uW=┝ax uab2DUZ< ; 9 ٤v `ןS?Saq]>zq`f!B=#⨄$2vKR~GWO4[Z.բ=V.=C* gSaBsDD:OxIT%\ DsMq͢roň>,I@_%,1"҈+R̔i=__GB7"ϟR"A,ɞRoe*nA捫x/$SNiA-I ^ S]o" 27<* ؛d-B ?"s׉SJ1s>U8s nO &7ESXIl/M'2-!cQiUrpӢ06G<}G/T6mY B %Dj1hnة–CF`*-Y! K0'gv"7cZtFx.D$ZݻД뫮cx${GH/A)DjZ"n-YcBC\?/J|n^YqkFtxXwց2[A (J&KRd*@2&-@X``3ɓ2 @JKPY?N $n&qv~9l'2/Z1g7;3y;H.|_y/,q'&ܜCfpnˡr6d3I*irŽ\N:1$kXmD7. qD8 )U/XbiuT BP HYm3$ x;@ٓW .a^K?F/*Dt_!u 1pX=3v?p.]??B\HԘ_߾L n[Z 218 iT!^"*دKRF8 6P![r\J&5Qŵ>K gKoqpnpm!3a,1oS$ LnYwxG)JS</K6\?/DId^nT WI_9: !]Ti jy U 4BFRJvx?%)`'.LPax` fPAD4!C)x'px'DL߿WJ9^p%jwϟ8c/loh`/풓N ]fs*\ f{Ίfr-2:E,zG /j 6U! L p/\aDT,mav@t~#aiCce&Nd|Ё#hՎ5S! }Wb-1T,&k ^H\Us`{-IM A Pi@‘.]C{U<7x^ 0eP|36@Kv/u3T( _^,unsx<?o8yxR:8GH?_ڿ&w0$Ť*_a*)`~- H,LhBD&{y*:X. 0ԁh Lƌ'EG7~5q_@(`~9QoN-`6'Dx. ia'`^'y x#""gx}*3P)xd`BWzG {`_B0LF\,S5Z;*Αy@ܞ#ST{Ӗ9"Kڻ2KEݺ..`#+Sw&9!:<'9AToUđXnL>E'Mڔi+zks 5WU>$DuA i Ly?A<`a)X 9 ߲4>̆ϫfGT#̝N 2,zgW{K0˅~`{:IvK*@}yGDݤv F +i26@h T YH0جV22\Xydˉ%z"moX)ڔiAsyW i=?yָU-"$1|k $zT0cͩ0dD)[ $/Ah]Cȱ;yY8sJxt͚Ic { :F$\HKx8$XQTB)碫ݽ0>>(q y77@BncoqF˵!;xU(*g60_c}*k](Up:TS)\{2?w]ֳ`zg8,l=J,OC7\q Uursb!rq뉘Xί9ۥ L;ȕ@`>ZBOk=*8302ҨC Vrkh "<R7]KǑ9Cɟ!+T@40 M_R+T <&(oZ-@1?(|8*Ѿ˥ ܩܤ f /(-^,;ICtO??mO Wbdor v1T(ۢ:hWc46A]a  E$yuVx$GӇg[}n`aC 9aUTo)kl?#s`DUϭY7"BЉ0V@8v4{n~ّbT@:{&ػ[5Q{r8Èp-P=jK<2)ve~Z/ 5݋??Ze^\ %tfbmp,δ7i^3ED[@ _A%cwhT"۬\!!Da ˔[͘D ϬD?@?~XFz0~<5(q| 9C'U x&p$, M wo~@WF3 i""DpUQQUo@x]  V;li8j m~ ^׮c\ g;T㊣c]ĊRjvџ?RqzX_K詻rLOKxh]kj9M!awHHP<1S rH420J짙zJ[0ayP$q qy8W~iQH =646v'&[X{:Z( .jKˆN>9A/'{.<=n*sos3_8CFGSO&Yr@4 }x] $3t3TzJs)fyc4LҘN“K/>J}=םzI4  VpxRUO^L[%4 Q5*_5;KЃR0BB]Q[pW'zn/=9V_xݙ^ǯ,RÈG0J%~_A8ʩ[AHH2=T "9L)L= ^dW?SHg`Ǟ/pgSHPL5oH2V4p:xt@KspEJ~Ch8Es#8@Hp$ }\/~]9 ԧe-*^qzLҒV#>tɦ Fgh* S&8f|׵V+|Ь"sّF(J#] qx SrpVa-(!Eqru_yChi}y8[W<>~^ifu> P:<HJijidu썧:/ Pô'0C{ ͠fޡmojY~q/ݘ:K"%j hɴD#|/d/6^[nLSAQW* ,JGܶTMEig W轀ÔUf+iAċb+O?Mth8S,Nac[VM ++qݷFN׉,Zae~h&4vlg_mw_2g3Qcs gڗHٲ:wݰb6k;ÃφBOU\Y[qؽuPW;d y܂ ;Ȏ,.Bّ@vdYdGّ@vdYdGّ@vJWQIENDB`pybik-3.0/data/ui/thumbnails/Brick-8x1x2.png0000644000175000017500000000675513137372572021013 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+ IDATxmpTX޻{-!/H4Z6QA14@I@|ilhDַNԊA-]+@T86Rtt3ܻah&🐽>=Ϲ7-%:s%@~ H "@$ DH "@$ DH "@$ DH "@$ DH "@$ D@QPs{-9Xرv3zw8!׷tV{ vɔGw;?@fhnkz4}gI^L:VinVxK'S*#"G'mn?A56Ca" X w9}6]ש֡QޏXs_'?8KoF5D U?$-gsJPr餩l6-G`}1aey m#t(`};%;t{iF^(Z{!DܘT"JO: F S-Wmo@؃ަK:ur8Tv,b."W؈}cVϑ $?M,T c`5. סD_\"lݍ\X[̲|Cf yb'W W>5G9k_~2^ߋO)%o3|27d,u!`'y S =#|r"p-s' Vq&N#DWY CDIL1Gnև?_#G]O򥚍 n g[g?x&(#/Pkpp %eա3{9(צ)kEVhb9H|ٳghDd BHrYb07Y}FNCM:Ձ(ku ܨYȩ`ٻ)ԕ#mrpʕ8u3Te?b_{Tn41E  p`\PxN9Ϸ+k_ۼqtbFP)k 18O56Y|@דק%rͭd>g &^sv.C\0^$7hI`>v:eq|>*U(Y4 M,K)'҇sw#Gl>)Sp'q^@CuT3ӌSp;4.3 9J"=JDD̹BwD5rT2PkW ђ2ZKJwG|/ss"qX8)}6Ka%UV+מ . ~716#4c.Snw-i"T034F/WxSW>R&Jٸl(4-}|߁vr\8o78c8zVlؾ'r%JD6d3,VKF5:yP/S-}sQQm$?x8G7L}X3GG9)P~ 1LI f?1cXSZ4eB 1| (jà,3-3o$q?gJkBɎchNRZ/Ly!VZm~aO\<(([vuEȜ-@$w܁y"\dR2 $eM84W3klV]]n,&|я1%blGI P"52Ǎ^7jk|Ư[^T Q0&x 4LJPx[ /{o!U 1&:ZIGU6 -el\¥%jy?],Sɞ!!ˡcI8L*6;Lưk[f9_N$GaG#@/nڨF]iNA#wZ:NjYZʗ2z4Ϸ&çFg"+4R*|0υ 8߃H6(źBj4 UvM.+3n0S5`$ڔ}qKJcdV$dW?ljMJh%f) @+ٌ21IH`6}Q@BXU:}ʧ|A$䬰ݾ«q@]P>Fz9C%bcL ]<}.v[NoAUG'{)0_+ZJO4!)܀&f9ETrL >?ƒ>SLADݞx>2g*:6y[X)K0&cF9h)p!nn_x5Ϧ5Vuᅪp>NsJ )}g'sPY!R^ҫC49h)=oR/} RZ#o\/7FaV`ۮ/k- we} $+- 5 T3Q|PL¹|>+ /hr44SMB+N Yj_Qg\Ed~d<ֿp>J5~vXXw'39_3[ߗӁKOQax[a  i* LQy" 9F`g ]1zmb];K3纆H?."F~ H "@$ DH "@$ DH "@$ DH "@$ DH "@$ %/u–vnIENDB`pybik-3.0/data/ui/thumbnails/Tetrahedron-4.png0000644000175000017500000002033413137372642021474 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+ IDATx]{T~½2 DTJA~!$t䊑FP:靡w Uw5'9}Odff{g)c̊;!0c0c0c0c0wDd4PAEI5jX T,ݰZV-CmZWXTDc!?Ԫ8O1a˗/ĉvԳ*trK4>ύ1x`Z* 4uYM_8 D=ѳgOJJJA2B&V(T^VVӧOek׎x Z85yB3K` ?~$GH9z-zi(553MYP8@y*Nݱv|x1z%'}x_n]3gH;n߾MOuyWY˦n 5~+)+sX`BC`^vkps^ff&9$X@8}(`L@ظq#կ_Y@sCvM]0Ӽ&MH|r.&OLuԑYX(gl0ٿ7Z _@MЫW/^tZFU<"c9*pđмׯ:q=JAAAl0Ν;*貀:s8v\2L&\кm[݂]h3= 4c„ .0bڱիadz6~\]$yzz2Тq˧]5g|ևСCȅ ۷OfYb>GVzCSo/v߃r4ik<ah нW_+}۶m2߿0!!A>ik1pb}H ,b$o*U$Mt]ebӦ/ƾpũ  `ԩXddy *Y?lMWĪ1C^zԮ TXENF.i3ݻWu:tcQիWyøt޽M UTW<ALJ_vAS~6RsGњ$ͻd_~^{vm3be0_6kK24g@ L:"],6saԩSv?UV2S0>V<A9cWRp|ssh$N% G:=;{lSRRh֬Y~P"6lp<* o[a!Rx\&0'V;ǟ`ɓ'o;0$:'d1N80>6)ѓ.n/L*9uZ4_&)- iޡÇ烴xwosssenݺAjjl| lsz sPjX;wf@ $tSN'I`QI=6+ET/;=[nٽW޽+$zodzv >[ k"٤} 6۾"?/ ˟#p OL+r`{GʹA* 4'޲МjnEtc7z|!2FG/4{'ZR ӪrN!qc:GlXZ-_Mٗހ/xgϞu fT-B8kX `}8j D ilysP\ 0%L)z RA3fh`rƲeՏcW IP;!64P"y!|ݏv@  @8O jH+4f@xAy*ʢŋsBѤufFT$ziKK=VTL0>-_c|3;b(&&%xѹ|R/[܊ y eáC+ܹSvp<`ec*!8|b󕃡"@;z'X v]:\ #Y?кy޵P8zq+ʅM1*ș~Qe/>hx7np+ÃYAq*#, ya8cl|%ߟ96֭K c$m[`E٠jqn#gӧFӧcǎcj֬?hlٲ+I^A*K?& djh2p(jOKu֪-g;>drBp`hvBs׮]Çh"Xzу ʶh@ 30i_:-3J5}3ŭWI|*͛;L̜9c`eOUgҥKgR|Iv*azK6R7Hl#8t@]k|D VfgU^?۩u[bqC]B>_8fb# #bKQkcC% 1;Gy'3wnO,=?Wh " ,Ԡɧ[_t*R:{ޕhvTBi/_fj<t-xd"u|G9}ѣoBɘ0*13Ӳm1a -mJ1rA($?@Ч `,^$/WW]$z`MVú^;Lf~+AD&Y@K.[1_z f,EH(YglZ0 _{gT~5%OB򇒳Ik5Oxp2~Ci]a6# 7NԡTʣq'ZB>-U,Q=>ĠCH >B00s ^Moqg=HNͼU nZ(ҾXBǒp_vFOS%Y/D XNG,unrR9{ۋm_u X S)XqZUۖg~mnuL`+T_ v_1Z6AYg២8ri򦗴[$Ⱦ~*ȴrlh ɗ@DU:&xy0+׬]`| l ڻ<a#`dddȻ` CMlt˟ X8{ u*E v*~SA9!~,M{ʙCEIIȘ#GgҎGr7F=;:D0- DJ\I+ NT81MtoWʇ^ҿҙ܁2X-3_t ]cH;p5#(\r.8{@#DD'_m? Bڸ4b&jU`|ChZ6SZ7~|*S#^H \78^8k**~⅑˗]VOw—_!t{!!'gm`E Z`";%4x*9H%?'P8եiIJʇAAW> 1رcy0HűWP0qwt\?`+Y~U J3_Y*49DmvG8Ryz~qm] С׊A 1rJ~O>K( "(`t8 vLyKuJcjX)$- (HM#Ixt`}5]=oP7{ښ+ܴU>bP4 mީS'OUB0 G F{DіEL(3zS]s"|Y5>^@"{l3a0oHCA ؽ6fug %}!W7{Q2Jix-Q<.Jn'@0?ySQ55ʘ"D:.Eiײ)펡% p 獷@߷2vXV@1>H "KG9 eP2_cx%*~)%O|]A(4R׫g=UK݋H >v։3[?,QrS`c̴jN({y9E]kAEOZ|4-Nq2O\T $AKC;6-4@vQoK"1g"Qs9Xj;x}}&*<O{v9_ɭeNS 6yzPb1cJ F^^1*-Ƕ9WÃѹi܀Y7=P;mR0Q3ǔp{2SEVBakD;@$*]lB+Y ܃8:%@DUssۊED&FMlPE % +x;Uyt3U$w;P{ᰂe- A=*S^=vBB>WJ_`@3 eqmE,$&%EeP 8?<W*Z jZ`T e]P)"0:}jub,hZsĄN@D8f!**AMWb|l1;[#T*v]2(P {P? !+`{ tk K1rKT`\0TgLATĭ V28&-WvXaԱ@uCo/6ksw.az&zbB-.Ǐ~0 vs3 QvJ޺%[7fl5{˗QK ӯ::Ҝ?JNs36D8$ZX)E4M0 P Y@}r٪΃Lhɀ~,?9NS]}Y&~ym= G[ʥ %;Ptvр}:E0 > ^޳"~D_%l4ⰲ[l^ڀ@3 r$E/n~늍ǰwwj*k sI?H da@[D@2 1>ަxQFsŏVf&9"%ިiK@*+DEKXB;ts$DQ) t2KÉcP!<ٓ=TxYbDEtpU@ww\ثs7eVw(KKcV,Fꎠ ;)4@vp 1JV  @>1G&])P$ttKO  ı`N_vZW.&:a9x|AZ0ˢ[OPd%]Jt,-ж¹~o"J.r;\ D[x1wCz!D& 5{|lS{lUp7Dqwe.QhӦ W9#z?cݶj|L‘ܧLc":J.vKh;vt?ĖD] ew[ex%RM2*=E!z\2%ҹԺ%1s==R{ ~9iVV@We9e4K";Hm\, dprs5YCq4<2LhC¸`7/)[v]ldc+[D8$'26lE(!xtkn.o|<DB?T`SDϋUJ_ > Bq@ JzĻ0&)^$z)5"2 bB9*HU* +W(i:O(PQ`7w 羀 Z9|X""=Q>|L<8HӾX]w+(0 L\L;8$d8{W w aA3(~ӆ3д7H@N ni|tL8JC2٥D57g'O:m`ҥV\!"c- &P_%PK^jx@t=D&9GZ@y_@$q-5T`GKE0lؐ@q.9{(#ʭD3$Ի% ;|~1syp-ݿL?@-Vw h Lޘ_ w$w `N6M,+X#whooҤ ;z, MQ4c)S, Dc {w#Lޱ0ן0;* Ϝ/ƯP\kifPZg1~2GY@qPs*0u`Esx 6WVc qƭ0c0c0c0c0_Rh,QIENDB`pybik-3.0/data/ui/thumbnails/Prism3-4x2.png0000644000175000017500000002067113137372653020652 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+!kIDATx]wxd $R#XAQj@ HG(UtHC$T)""u ;MmsdwfgvsOw7lR|Ez'E'.:t N]t@E'.:t N]t@E'.:t N]t@E'.:t) K׵5:EFA5 e(TvJz4'h%^Sih4eP)ȲãX41~7H5ɒP-Jβ33N47#/  G (uDF<==)1?;/ׅk]LL-,X֨D[!t&D&pu3` ;f5bЮ]R> ;vɇeLf"Ey>Eeʔf\_Lϖk^cr]yq^&fZR\ Jh`af fԨW/cl],;hǘh,lvDk( P޽{TNљeh+wX^ɝ܅G64i8ϻm,m!A8_{E> Շ?k}\ gy` P&?_5=F;ۓDeO4Be*0f0@1ƧȗՖ Nȑ#$:#%\vQeiw^:ws|$3?C|,7y > 7Y%΁@R5z3<4wkw|2 ~ST`UcEȭ}G'N5Ub@gc *FgcV=.( `sx۟ `2Q|y$Fog ۏ_KaGK #`v+]͛7_t-PuP ɤܑ ~j'Hh[9U%%J:yM}%NLKU3PwiGBɴW6ҹdz,"3Hm}/܂;hC2U1TE'_Fmh(cE9$ﱭ 'D-DWTVT"@ciiӦM e1_s${KRF{2av|)_a%A&OqN||^OzmG$tY.Sѱ܊7&i _QŗUG=,*D(^-ucb&Ty 0 $>c /q18"(rzcrF:>˿b  F>}Ĩ^5Ռ X:tf +}Swu9Zcp I=L!~a>@q$sV$w{ -WA$!#h(toS"-f$F}9s @hh(լY{9][F _z8>^h+g$d/0^ayMdYfʿ'3$[ƲZ%Op}NߎFN<ϟ(FUK_M4$?t\}Ɲ< Wi{dvF&/BCULVիѫ0I@Gՙ| ?o! hkժe!VABcIIXjc! Gee=M0]'{^ 4e G=yJLmI2xo!Rd&҃I֙I6%k$kV0ZkZ%5x`YnIF;v̆nyԳgO#4nV`f `-W=L+e5F[+owk[᳿j0ݧ wj3%./- WbV&M裏6B lFy=|^/Qs|\hMК>.asNnjk  Qg@G3a4. hGl~5oj|Og?- 0y 0}tԿm, u ׀`4B|9%5A"/5RWӀ4USi |I4- tj_$zS|\XJf/$DKt) w4x`( RI CB htEo U͟YRW2XݼP7\/R3Fo?9K'%|h(.U-RkB_~E^H##n&wR&t uꕷ +J$ k:_7L#4|Ɵ UI5p%~ ~XY*t R7k\xy(y(//Bt#Gnݻע1V:NkyXTQ _ #| `H;.H?4؃v-}l[Br?6 g S,M$w&@n߾MIII#֭he{ R$7 iӵF~&C?OŰ7`7hHzhHt ~ J_j3ק&EG=V𤹣óݲ,\Μ9#>wuؑ=*~7l@vvT00B{Z + &Ijc Z(Y@ھ3Roa^IKB#F.퍤x(}a fs._#R)"b">Q2)aSDfe/78jgQ #tDއ$s5@jf[#?%|j ܞ+vܙM ꫔ :u  &(¨RE#<<ʕ+' B0^Ad #ed ˿ί5< >H7T١&h~ P+5Pkw?σ6}|H$?qy(f5x*6l|qƏ;t9j 0&jVLgyFޟSC"Aٙ+_CA(_> ^-[VD*݁Qaa3* nS&Ԓ-~c!0m&F 0xNthCQa q<o"`1ܚvlϰxҤISZUu`ACodYSb(@~GewN-2Ԏ5~j:66b"Ar!aT A^z%A*hMZc`HeH@{!# &c53\iRϛ5EYʈ)@ <Mą P ʕ+}Ú(>X9Y+x !k5;cII.&V_ L$LV^Ԃߗ WBqxyj֛?6X a}Rb."@HܖS7 &ombIpN?NdDiFte:WHakiw Q>~i]rD;2HL>(&@sܭ[7j/soժp\"r(;?HQ7c_\$!/UG+Zs|{xv(Cޏ9l[K%mԺukFmwI$̙cQI"aT2@C%3َqjGM6>_quyWhP.pZU;ѿIP\(YxY[$C0P/pGL2†:'Ǘ7i'jn =T@e@i! q_r bK"]|׻ڧ ,W_Yޱc1C =>p@1EHVȕs7- 'C[o)aX#M 1hRO!_Xz27T7;|R  ;L!YYYBxxhcƌQ:LSLj* 8MՄ# kTΞeX#`t)X5Frӓu5GVX!xllo{ &u~b[s>`~K `ey% DMcKQ,~# WNك?Q>?':^6c@_+ rA߹X[0yL~?]><ٌ1:pM8bQRqTZuVTP!Tl"G~qޡhM}X#sm8V_?{xR5彑/xӋDVf?c%xʕ+m7ow˖-ӑ9o#(i@*Y0  &V MVoz] 1>| @2l8a#z F:#J :&m~&P- 4߸ŢÇϑx-tL!X\!Gow): .y$H3) H^8c# hoԲ"wٺ^,Aǖ"a6xys~r :iҥٳG@FO.8 X% 5YH~<,Y'tdI~(<9>cbdZ2'|}6)w(P 0+rTĹځH:i^x,[aEcǘ;uT%??tS pQcʼn/2s͚5^{Mǐɓ<,B Ulu2=,iKd,UXGztr9jdrh,gOۓܹ\x'm}4 ќTe^d= A`l#sT7I@~ >dTECCA7bЭL)#g=*`jQH]IdF+Y0b}$S Ov&RJ,,0j8 7[ Q@Kvo-/R3G'妓uʣϧ\v-m۶k q7ntHq|ԨQ->Ot%wG {"jF&%,]An 0lRT h)S`Pj\zx*xLts~TP=hlj M4?@K0찵 }$k 0}d[Q4Ύdy?@>Q nzZ/#`=R~ϊn%sPK/y[K?-2DW@ېUD'\=_foO{/T9RCWNq<PW,/v4z 0HO7k!KB B(,=#>;=\_9J\IwXjLH~$r=L 8"ٝt!z C0 1tĵ9>R'_ 7mdHB995"aT>7 ǟCn@SD$_qߚ=I"+h>ӏ S3{,}@gDp{!;xxKK,fϞmqjQ|a/l'@hfѰ`oG,XQI`_ ~Z *t0eC6? ,- H췢AM\כ]L'`i z?vC8 " WGZco4`_4Y {ʼnkRRPڶl2¸qD}1Ȑ^;+[rs(|>y?HClܜnQܺǝsD;=]9xYkُn$Dl>p@`%=q O/T#!X)ŒJ5})<3Ob6J* qi~e D; c9 = 0br X .^ ~) C.hx@!@D#@ Džba[C{OIk/fG?")=!3f̰m=5LrE2H0W\W pnkXË 3wRzI<z #WYXD]5K( N~tl.f LZ^$M*rvxz 52g&#Hjp!JؤG<9-f9-'=4ŝk7w|Eh4XBa 'woGE4R)@WNDfJpn7mytp\5X|.1F7ڥ}Z==E22lEں2GɹqHz6ǺWK\u:>_# ɓD Jؑ+Q5~xA,!sְ .^6OʾBQ=b5' /t%R4~ZN ɕDS>KjM++}~_-U.T*@͚HܹS={:#Ħ ,t'b uz(eAS )`tm߾ݦ0T4Fڭ[ssJ72jQc{f}iHrRd, NAc@$\ bװG3t>#$qm٦ bja `In [=i7B^@NcDeN<]#{*w )AxY,0Z`|e @k{ۯ `xS=ņb)SP 쨥(w~~4n/bELfQúB"+nK4(9@t9EX6lA.}6M.:bG+v9mljb`bmkAli~%dѣˆ'EYWG@d@O%؆.--[VDz`P^r,Eޖ7o*y@Ϝ) B bc'vS#Zs7p p57ڵK[k_aQ<=:CwAvO0@N]G֍47__'Mu1t N]t@Eb.B[f;IENDB`pybik-3.0/data/ui/thumbnails/Brick-10x2x7.png0000644000175000017500000002011513137372621021047 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+IDATx]iTՙ"־/44 .(;Ҁ ₉"nDQP[H htƉΘIlyzd&yf{n*9?[U}wNU;oI00``! C& L00a`! C& L00a`! C& L00a`! C& L݂ 9@gْ7:2d+DH4^bGF6.P`M#@@͐]e/VHOOCAJ E K3}X4? WV: xG7|X X XR2L -;$SInGj2&;AD0f~}QoB8M5u&"M]x~pߣe12?LX'n y0 NrjyF ݀>~Bx(`0M'P;AB׃17` {S)Bd #I+X&CG2{ƉW3>BEI"cďds>WWCiـkICxS!dt^P2D@x xaڃ~}p^"6MK揫2Pf+7oځ׸b ֛XL y#2M>ͪ^Sm ;|vy ֥ Q )f *1&[w Sʠ"Ę*+HViYV2{RM/n. wI90a4|k1QLyy9\OI:>V8oOZ4a;WH=vF Pe CP .WݭOd(g`_"vR*hawY\kp:\̻&3DU`7϶x fFme-o%qTPκ쪜(d+;1SR^fYݥw((k@ .٧8+H^#/##C}'zdxTv y[؛?7̃ߜ\Q1i`fPW&[ujXRCj` &r F'#׻\$;1;!5o4O\| |s^Ae<ऴE)ނxMSbᦧ<7\Ήӿe;)VY3Uh?,S1 Fy b\0C+!x`_q)~m2 i+=Am%̺DHإ1&oYs"31\a`\9SU=HWgVmgLr<0d7,y=˜xl4DGꉸ׸hH*|fP> z, ̍G LO- IXB^7oS>rOUW;Ϫ!ڀqX\AH,M$$V^{ƽq?$z>6O=Hl x(4%S&?]s TV zR+"!xjci/D(Γv Iek}vKT`<}^)٫ RwNwIx. Xmc#ps@9#S' [o!å? $`۝^J*x9ؙn$5s̸:$2yAڍ4~|uO(s=h}?p:1A9^{UJGU^ϔ;HJ׋G٬c'*U}LuZWǒqL'fhU9 _c ;G3O|{ x4u_j,u!CXb$tOTi?)5GuY2z҄I\^X= AX'w:UFfdrF]Edڜ9vKA)vVNmvmA3'jnS;$܀x-^C }.MHj- jop0Mb8& FG5UOF+9xU0~$eNW>7O>SNA`ɿtŖ$@84BRʡ"ux܆Ig3&)pN+ UU7h)dĹ@G@T?d7xut߯ f6{HuH91 eeKQzWB2y{Yҫ'^;j۵3-֔L`+Ճ;X4H9 ֵI:Paɓw'd,y=cՏϸpz%%˼+$/ ɼ5og&2RA((ӀR7,b \W#]`2IcP nq]:c6i /m쵸4f}҈ JBs<ʧo[=Oeؠ|q7f׬W`^ /;]^6 }mT_doFڸܫ<խd@-ѭmI`3Kd&/&P_A3xONְtVx&` R;1E &=,Cd/\r`)^>aBB)qç<@yrljwiT}$}q( 3C!ElrT[%>E&թ"nLP~q,\:ׇ۽B/1_z{ƾ&v-%Cq]^@GN3q$F6;A7B=#%{1ĸa7P3<_6>ٸ z#>Y ?TQGEQPF +hs W/20i %<+Xy^UA[H&@tW#0ľ~V4!_$~L;6IJ&Bgh4Hmw0hiATOH}F JEg+ )3',?NnFg2/;*4AE>g NXS6 kZ^ ,#~ VB!l2^e%c>d ߣrz`=J NC]չ<<s j p*TP;iy{ :;^ICN>KKZ"a!_ ʧom1P(scj}M򶹞՜E>U~UAXPUȰ%hWNX Pv s.|SK~8C0dz`=Ga>^!`8z:2Q }U7Gc (ɿ!fxfӹsI! 4sMBs+ڗ`vV> LtpY[ߕؕIε;OO VZHsChdRDzEøyz4Rezc峇-Pl "x}KrŪS0ԚL9-օ2a@,^v f5 yxUB~![1CL?ݻ@+6iGdTayk^#$X^ ![b}b4z#j& dnTr%r5W"Ӡ:sL}wsSyx}y=ȈMA%rܘ66Nc# UI>"ʠIfq0ᬰlqMPYe0A2BivJ7Kc")r9E~d#R=Вȗe7D-?Q%klj*ػ&QPI UzTuLR!EbjJvH?K!{iL2jp$7LGT[zd ҔTY nRdaB蜔|[ºCYWC)ZWNʲe'TګHdM_S/N; lvQSPD AU!y~ex}LOܕI#l+㒈YOؾd-cQu^GLW{_Ε+Jv/x6hۦ~,OKxOP dۭ_VJ V'D ZZV`(ԝH>|[ǽAFcاԒ/O']}-\xU@8/d.@U0>BJ QnHKͧmC~Nl$W?H""&Bڟ\bW !Hϣ=P p&\sLU8Pd~gDgLoHThK:O*(=?\")=?vnQjeM߈;}sgA!1[`^krd/j e`$7,AM>"ӵ1$1{<2|/T͐bK~s0_ }SE~?{[qJ~uf\{l#r x4FJlUV7GJԿxxm0w"HF ˊ":=5 7.ؒר4pn?;D"| :2i}P(8%D/?\^k7|=4Vxva( ɇ/&E+}Z,_! 4JG׬srQupו}N5 i#үV`UrEz(D Ry_XYfqL?r|]EW CUs7o3r|pu[==fڪ@dMIe%{ϕp2'_gu[G+\ѩi${R(CԞI퓉O鞅1xV|*̯'ۘl yczb7PDQ 1xٵzcTmUޫTx]mspERzV<:UD_ `_Y֐< s=O c*uP al :0-['jbMѦtP~ѺP 2n!?4>Ց̜lmQo_>wZ4Z^Y$Qތja pHYs+ IDATxkpX*}w\@rs^F(h:Nij*bZE0"H AR83SggL;s޳uٍ &$<wϞe;w<}| | H "@$ DH "@$ DH "@$ DH "@$ DH "@$ DHp(12?wGi)<&0\&|ē}u3[-+v3 b0=_X3>[kj~6acdq ub٧bw"& -U*Bc2Ka}ߖGږhe4iQ@[hMaQ\; [k$-qw H1tF%jV^Iyy`4`(,0v(Jq;ETDzd7%n*\gR)b"עrFx7a֏ϗ3af<*\Ȱ_$lc0@ 1&ψO3\<aOlM&H EWMZѓP]9_l ?W=6 [˛Q0n ͱ~ W*r׼TӎaV$5E4LvQ[p(|]o E"n JbaȘ"Gb(8h颧tv=c.*Ɯ{`|c>f٧âiWSEϙ[}> e.$ (^yh) V>4). 1+3vy=9*>TÛG`]\TYTZn+* y?jǑ䌇㩌DWj}5N%z<1K3!^A>:Fw8<(0gQY?v#xB'qfv̝@uni+Zl4`y EpK/za2 X_RG.D.烣|Mz#j_Z>Ecl;:bˮ##ChؗFRĚx= @pA5ԺZ10ȇ^j~V4Z< Xڀ|xU UY${Ř+ 7~f5cu& s0Mxycv`S}~~);luq<2,*$]ψ:=2]=B3N0.p|`K[PZh^V+gt\d2@^eD}վHdڇOˏ{)G$ bzMQQ ((>#$ Ջx.IKsR;yXeڂFWM*X|Vq)a_v\+)~R-:܃ǧ+YHqjR S)w;0Cws>@MЕ#G$Mx(З" } m:JL|Yϣ:wD,¸()b"t{gs&yTW|>GXs~8sʄph)o0>5x,\HV)$O4`x> }ٝ2H:"h~}}JGK P(Dؽ V3Ge:JSa颲P1mͺZmF`st&,\;:a؞r)zz[Ci.6~20~=T"?RĭW7[:"7 xLB@THnVNxW'yn!H*>?ZJK֥0hE!en7sl2?T^#G;VD)'ϫ諔 Ÿo1EJ2v&,B .7_VџMnQAZS)ΠYa pHYs+xIDATxy|eϕCJs;AM !r[0x jDԝqTDQ'rx ]gW&^gܝdGwuwvWW'J:U[>U{=#._A@_ttM@7ttM@7ttM@7ttM@7tRͶڵq=kf}]&X?]=yVCU v܋=g$V*t:;W-WS1+aAA~mljaD !+8-ƾJ@%ﰙ^?Ϟֵq[zyЈm];՟&aw Yr?ě7ddoԟkV|Q"BŬe*zBR?i%ڎSKsov;3)TPA0LTCEIʫ;Vzx6olQް`K!~%%{wWgd ;(T,-1+t'~m%%{BW`2W* ``6 !Bٗ(+ 1d&Iu:;QRL{zY =LYQ?ɞVguN3ۺZ4ٻ"JSEHגr#sv )b!߷A4 B|>JdiL+-^7^-0W)m%fesMX}a/ޙDė3v(pY{Iвkƴ4&2_P?M۹ͽ&t07n@1xWi 3QU!x}gQagyy9+--eyyyj0`x-0@{I|[|qLBk鸎&p,xSq72)2iR?VIudbUVV2`XHݿ#q^x,}!_D}$}OM}yTnd/LU q 0dffVUU***X~~>S2a ]wZ_9H$&ėK̬rk;oLr7,''r`XF'0Xz,6+WXɕw^ܵp !#~`A0# < 09\Gķ/Ii0;AjDy )KL4'' !bСy7Ң`X70=B^RT|EJƵw$E|ju7N YDw:UWW0D|9 ٵU!(`SX|x\,kݳ% ɧdo`xěD0ItVXXCDMM 4hC 7 ;QzD=gdh/' $UNGnW nJbذalԨQ 5 Ki3>WJaQ G,mJ~F1;Y;4M AX$ؐ!C<0j6tꊏs\N2~PN")5MI_Gcg#0,{ITx%0f6uTusa hY!>(_b+r#E] /рL vW$I ۇMc/ +`z't[{ÞT>\Mˮ$ ΢>Da!ݽp(%- *BpWqA C-;a0( Ԑq7&}yFL¤[M^ 1-AS'R C q+Mk`.L-&oJ%>k%[juUu:E?L+ӳ| W_F ]A.z `„ lĉa@~ TΡJ }a ~)[B 2=X|T+^-  $W 9M<ۈ#`@h=GC0pdwK|_*bu@8Oʋ )wχ pEIn8P[[˫)SS P\{c[d6dpwt[S_6GIu!A'{voR5 l6_g\s " ةCoBYHGHMo/{lHmnO}5 ]|`ȣdC-ز;v,khh`ӧO%(w0 \ *)tj:.FlQXl,_,^6|~=M*z)$Z6}&NإD8{l0`ٽç_Gvh ,R(w\C=G?~>'g?0Yvv6ߘB8w\6c L*az=fH~)ς{@@9U찡6F54R>Wh!q3D.~#&C-1L6͟? 4i}qiȫ>*e^ܨq.  03E'7EhX #q3۹ҿoqG8ϐٵ/W.\fΜAx] #sG*t8mplDջee`WA\XL)> 8{MWoO!;M`@h>Acc#py8r ÷݊^f:8/\e" @wBxrc!BlB% 'ⴐۺ1W)2xN8fc@0CQ+٫e{rnY2YR|Jw ;qN3T p;O[C !~;m}n5s_ޕq#sx ,ypak˼Ax2[" ^o;k?%XzG+URu$T?u"\Q>Csn۴>O X:#˼tv ] `qF 5-" +-fw`%apܹ&h`als $_Ѐ M!b,-C$K ]%>ܥR\=Bdʆq9HuC6h ̓Fbs=\WMr2DG6`m˯يJD- g{}?ήmH?w9J* \DXK!y̾^:d }!b8G+<C)M=H%oi-efwrc]7wO OF fa +4G'zrx@|+{ ZP_OX(k?^Q,/] mo8XO#ڲVx0 ^V#X*3@JtҼb| ] EtsircJᎿ{##,~]{Ǖq=|bCC+b8| -HW@ AUıw HH\' =yx\ˣd5@#W먜N^ Ið\?p`/B\zL^0_Ɏ[St|Ŀn}{~݊SHBCəP.140M aʡ[op/YٯR%/'>\Ea 84u3U`3/Q%C ; 'W6Zd>"q?n`{.l+Px0i^d, NN(iW{/{ؙD)0πBh?c 跟NgȚ# \s&;+`_|}=$bhuGvS7h u@͔(罹^}B+g+ 4PY1`XcZ0-rQT r%v]gP!Q.`W:ho0?ׄ$\(`̸<  ]W~&M7ضs&z$ )q.e9.Oqw$ViasA" FpU cq7ՔGL#\ #a=FdR$t.3/+@vf&+U;xC7 ;dߕG78XlF @ `{YL)sxf]lHZ@`JcvA92*;)q|' yѣW㾃7/Ozk>|>n&ʹ>(eH&DD^`6]Ϡh0B^Eo!A9U옕`Hc!e.%r0֥?9^8TE}m^%A2TV/J{f!m,W@Ix#yDܡ&o!WD?C% R{H}9Wg<ݾnۧ H)9/@ $ <*c\!H~&sތ_y7 a??b΀ c $SwD,,ߗ܍!l4gCJo0g~v)O63o>* !O9-hM!|` 0W`}9<&!%%BJd%tA@c lCЎx)AmĴeDq"%E +Z7ZRnpP|ص3\[7ζݏh !b[}r${ Su9 C98|7p|[LmvXv4(c/uߨXG@綜Ք+>Oñ*!>=y?-Qښ)umCuu S%1|=:% '}m@XԸ|Gp  $3A#y O&Z/"?c\Q3E?-5*)}kwm@iKfn& BiB`OE Kٖd}}l(vVSELqq1X'"&OaKKI'[yxu!1WA|}$">#ݾT~˚mZoȄ p4hU|4lǻ HL <㉝ x.\NX7C)Ko!c g)!œ'ޞ\F~w>`:ۛ):@ܢ&X0-'VHq}L@uxuT=K<9k>O|]g #w&wI2ںls3 o`v.I.<(ke!@R d6x( X;Wۘ>(<ttM@7ttA@7tt,VS4AIENDB`pybik-3.0/data/ui/thumbnails/Brick-10x5x6.png0000644000175000017500000002465413137372630021065 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+)^IDATx}wՙlT=9G倲F((@ 22 6A A"  Zgc[ۻ^;绷zjzoG`Qwխ{knoqpB ! ! ! ! ! ! ! ! ! ! !)8 zsqx8?fn'Woc [z3݌ϱg"tD8m’ r_?q\#Ȩ#0tq9IKZG@^3p2n"ç 4kѰ;H0h+q"2"JB= 1c'c;x`/]EIh> {jI`bvv,"`1W l 8q{b7OàS7& ˈpEc2=Y@1OaHyx XSw͛m5۠`pAhT.8h9ƬQøp5Asf +T2`h1MO| R!TΎo>"c*6B콑'̣ WPʟO$ \f`R.Js*"@ @(dO<7 %{lExy;t!N;_[]}h$z v6w;\t KĿoau`SQC5 : ٛ U0(,(2z鮉hxੀ\wvr؎EGc'݌H\şMc.W՗߷-(m0<y$s)^7`(1`Wr؁sp 0ǒYb!>QPG<0| iGboaE+. a:k̠1va)i|jq&[0L>:ɻeC3Y$|̳'cfȹoLH>wOcDqޗ!^(৙b  /9I7uq3.Scr]n ‘aИetÓx=5Ƿ6UDX0upTCI,4PXܠ`1a&cg3P)}Op5 h t3 &98_n]QBxɹՔ fsI]cQܺu7Pa!qif{1|.0ua$pY#`Q4zs_hֺ\,y>Υ0<;+FNy%`/) q>o &Ή.9DZ c #2N VȑιeXZa.@MP;5 HkhgL0Χ \/@Ǧ>4O@́5C;fu+5K:EOxui60.BߤanBabr|T6:;1̹HŠwz' 5ǖf$ʖ s3'L)Oٍ~.ZvڹWC"?b}vuhn[ͷ+d7 sZܕ(D_i)kL\癋 J& 5s71 9H|? _ LC5P^ $#Р4 8na," Jn5Ȏ\` :aum`xk'jw,Lug&\` y<~6,dD0s~3` GIvt9ъ&r\PF!` 2h2x+\a)a`P,a8׵AW\z'4+dtC4l~7V(.Fb.,tP|ʖoϥkA]"7Q7\#Sy7= X~׾rP cpo=o<#5pm9wdX'򴘣lCw!8^CЗLվIQvɢ, Vݥ7 fc(k\CPpWad va$ h5c'җ )r8N@-w5X kVcc(&]ȌO\Y5^R)+SERv)T Wc s:v>n |v'Li{`(|Mwgz= xݳaWR|9|L6]lk+1zZ Ј A1>KXr4$bѬ #* j[F~>Rxq"9H/r17~D2`H> ʿLca+4Az7,Z酮gz%:C=m]8]*1i H(so}G̰3] A3+Q&UR|"DAqkn 1W@: ~g>ųpe9ؑ;)YWo>h#EqW־!*%]& UZ\EP +>@zZ۬[i}>F؅ZK96 =/I3Iu|a@ң!ϵ grb:eyVT~"ޗHqg'':RU,Z +^JLWq~*&U!B~mk_r-jgl:tENC0kIпTǣy2 2UwP eS)on4` 1 ~Z 2  %,2ie-q7ʒYI2vh@kH/#Vx3D`ʑ4B\dp/<%p!#cZޗYj&P@y;_rQ)! OymI>6|+|[&K'`K.6?F Ga.3)`Z~Ʈq㮈~kAP;"?m䔁Q9|F_b?I=3z_<'LA9e˾ep5#> ?j  6`EI9yWe;7! [o~0D,tĉċcBfفQD.3>)QlτfG5µ6`i o2N2. L-om"91|5?pzFc2u5qLK7kQ?m/c ΃7j}Fy }'t{1xzn < *qN #$jbM3]4v.JV=rdQRd,0]AEu}*žҶ/gB%dw+cըLw<sˬ,$a8p/dc Gu%eK2w͉ۚ)81>t~ L11 (3AQIϱ` D Z. h+Fɒ3Ӧ@2я8nn\gG3Y39}Ftǀ"i KSreu[(`?Q~Q#}%pXvWt *;{|m])x>(|C(0N?^\e e DLJ>,^^l^cHyR^=f)iIYNk!8[z0uLʑsj|&{b NG?`'4u}+8S(3 #bM|-4ڀ# 6P0[)Y't>]Ĕ#gm'Wl-]I"F=]^(,jC/]}{߮3-fa|0VJ4cӿEzx5"DoP?.b)P)Do5s0p#1 (xLv,{Mc~@̰&47 S̙/d40"O0d}r\(DH=xֶ>u-,ØHP\G2"Qxq@ψ C"j@ xILl 5@TL11lU kL-"zQ1ǧ WXΦ~MQ:%~eYu`sRJwo,E??r=$Z@>wٜ51D["Ә(01#G[N"q~B!|@cū7!S#P執h`>?>jgt4z.8bD!Ҟ#UYHV-H qy eǪ3_n+RwGz)ЫiAip"#ޢy15ᔞS[!l(K r25ż.UI<mkm]zd")8"ڙz~sa\K 5ϫ6,+R?ϒy7]V%lY{>܀vB#ȑx4퀯_ir6( *>ZEzv)Uh-vL@0\,^iK7#}Ť`Q5`3I d3XfiQMZᑓz c#s=Y@Eˁ:wQyrĵɜq Ofx}k6L_}N>zZzK.{V JQ 4OhXpcTC dc)"^)'t>(7I-Ap\kMb'ZO34wFt?QvIrEpERc ߁c; Z.}OIR=9=!A\ -+RrFKLPL|WA߳=L-ىG`0i@@[[tk4Ow 6XY 8-K*O4?Yj@ `*B ꈺ5%k&$RQhY*ٰ<-T,&'}׋GC᜙I2:&d{͚\O>}l|K@v1y @3FFaJW0CD=oiK5$ wM2*s7FT0LF!RJd*grͮ_~E 0DBqLFTioqG @Q_Xk\y*wQ1Mmȡ> 5wKaQX#u=]9FiwM\fRġV! TBwFKH*Ӗ7 *n\SY`Tr*i|ۯ./7;o*Be)jAQ\,Y~qXɛ5KYoȍ"YUu\\ f p"yNDK5P#_ fӅp!\IgSЌJbtqʸEl].r@൸2}@7kRB6]I~ :*_ber挤,nMjw֌\*:4 B"]4 |jN纠\nɣM@̬.6=tM2By55 h-QpnxG2i0`p6Hveܤk(_溘tg`!'+)DWLyo nrY 0wH.30 HP01S?TS 2ȘA7 ~eKFETi;`7""d^7VpLs|X =-Cg=Qz2;dY6aT[;U?b_0M"e33j18"f0A -;4--ڳhqg@ 4b)H0`|0pmbFȔf$S/˻dIJ5J:zuZ]Nw=/{Z&e p!-Co;*¯Q%>cܟMcW% V AdSȋJ߫L2HS]$"G .X"V#ݕHHq00&c~r ToLW߮Jn0`ں}eoX>? %Y#dŹMyIHHհ 0 5M(iJ\]h,+lJaftV~<^Vmom-q7W?D4o?Rv9&?3%h`xS8Ҹ4 =}Ԥec͎FV" 'ynK((JF~e"\A[>#!\_>VC_AАCG$/VX)d-g lOy^CPl2ԖtCQI*yO RE)TR&4s!vQF;v1'+%ˮs_%G;JeyiC 2 }s]TiwzYpbqӱJPrD3ˠ&gYvjZp59n)@"050`(j̘!=T"W!_"%7nȢ m7'|w{SO˯kik`Q|HDG.3XD}{jvs>˱Fӊn N~1(ӘRz:Bz^5} D+r.>O?76)W vWLO@=>߷ }֍5Ӫu9dYa}T,cBO<ͩ#G"ø&IWϐ"HZ >`|'6DH~n]cX+ި_e~GO􎣹:R6&c@fb O,L (XfH `Sz jΕ!f~6yeaˇ@['t_#UۯkZd^ɗ ;$GE?LR Cd DA>¶j @\ 4b>8_~$]U$e| !_Z d =j&W24=L~pΤmH^g|90穔M/K_'U6?ߛږ`[t9ّ(vf:]e;*?SE~GSԥ%L^(!bam_Q'}XCgcYC}[7t2%ݜl"·T."9;xy&3Zf>_hhϓ}rS{_xG_];}JmGR ! ! ! @! ! ! ! ! ! KuL[NIENDB`pybik-3.0/data/ui/thumbnails/Brick-10x8x8.png0000644000175000017500000003701413137372636021072 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+=IDATx}wTU󍓤½:@jMTrN"YrlB188 f,PDhAqPGsN1Nsη>VݪPԭ{9_j;GCh@Ch@ mGڎ6mh;vh@Pܠ6C~'V5=kƱ9?|c^րH+ v}Y~jӎxmd5o/hέo3W7=^>ZzH~[NUk;7nVaZ[`;ffrH˫b^)+Q%v uߣ3^s;d8G#ƙs JJ7j_C"yB.Iv 3~d}ݏT^rEpCW# #oByEa`+ ~M wC?lb9g=0,߫ݕ${3‚sl~r-5̶H0~!gs#{U%'T?~go!r4Xtz `P~F' ^3!g}xm2`Yq=Ö)e2:C`P6Yjc^yƢP_+03-{FsfM3{ & řNq> t4&Fc2 faUxu#H8"c7DZ(33# 'q*YH1O s_wa}i>q$,@<|>:OCxÇ1w!M*10j@9qK42]t{HzK1f|V vc]85  !Xx&+"y;BL<6񾴠)׬x둴Q})`1{u4/X[qm{<5*by: (iƢ! %3pM8"78ƿȯk TM̃_UC"w%28&=I/2lx2b1WjV/7^1[ KJ0q/Y< <ws)+wČq:f)$rg P^D1in"C~ H>j<ϫ,:9P^K_ 0ߊvqV |:Bjv*H9ۆ3.MgPbGs +d]^= 4 "m̘t@K=fg\Fsq"I!ᑠ K8OB2CjIn7QP$[%߱`Ɩ AVNC ]L9V ᑼ/.D8(Ŀ /d] If%`?%X4&qGѻD7(~&(sfP($ 6^i%/3s9D/H$z_YZ3p{(MWǜ\t=@JpTrsӋQyz1cf$]V, AEƘaKf68M5E4%B %A<jLe!gz DRLLAfL2J$iIEIS- fFJ aV4YꄉSJڌgB3R97gжEEzډeMY;F5|^33F́1aX`m`Ouqx.]f3Q o7#Paѐ<zL{uFE9x9gࡕG%޷XYB,{vĝM3+pKrN5/\y0vV0Wqλרp5w] pq啖d@"Kp}qcڵBX.`>m-TT5<ۻUr1=;g^40*J/1{6g0 /njـ2dj0Аט0quLC]3_~BW!g_Uh9βکB Dy;w 7'{9 a|W"Ϙ zԯ/B~qLw.^c i(H궚>*< z6glsj(e&QaB gey+zg&?X<“vϰT `N}m=6 w9Fj9zwfc:SԝY< Cǣ x'b~Q$N@QejָRuĺC+L>W,ZdH I]'Sӕ;>O6Hbz~tqMQ2+; U\2gze'D!HO F&Nc$&rRb^#ـ_U`N*MsxC-x:Bxځ4{RjVDfK֎* 8`ԬcR70N~iy̓s~A\؀dOk 5$l]:fQ検#AeC"hnR'cV:t&w#@8'"lY _I3 dgeKoPuWgWnl]ڷ1 Ht&יl7tٶt^1K.݈w%ۓތ<S/lm*u/{&?G{ a*--zXXM.z|aL)9x0㌮ !{`,7"'+ A tE\]Q[OoWQo]*vւ>OŦ! 1f<<d.Ŕ{p0V;^0? EY(l8Wݾ#k:}ttZ)P3q8B,f%.^ I71pH[/w-=d$ p~Lu}ႄڲ!_zX{ջ;J?Zk66yM " V[ !# #%LqNo3\)qZmb;tkh+3E>S ^4”jsdJXi  0 T MfWhH@ W nsA:GZN SG_UlVDԋN~?PY4@ v{x}*<WI*v{Ztn4q劮s H<֚c@W̔} ]udd7;`ѨB'e w'0cRNf:fs) y["$Wp&A)'j_nHs@ ڛDr`? exto 2U>jw/|mޙQw_rYz:۟s1~aݯs!^4h).7Z9`CI"y{\%8 ܥ֏\V|Bը1jؠjD?[}L;jDVdW/KA!^O j=*!;b6|д~@TBj1"q./q{58I@ƥa`D㑕ac-icYWya"q> ^ɐ@ߣ_MPRފ3*t>A0Z1y~sjr' pE4px3vM@1F>u$Ѝ&ٌ1>{ vK·XS Ix 1}_0۔bJx#F,L3&C-|j.br5n(o/S#T)uZ.ө _dW߬Micp5bS{>(J;VjL,A0׸^s){3AuHJ(mK\w0p#!gTTNH4wJcI⺩jмo)P,9^r5tM+0"#\QU*<dt];4ozKw 5PuҨ\WK՟t 8U(e*KgxVBvf4"=CZx2)*=adDL:o,;r4~CeI9uVHNbϧ1GeH~6oX\:PSnjx3Ģ ~C9&3# =H!_1Æ jB߫R̋/?O,L} :'!;zc!3({fOV]tx o#.~R=}_ީR\^S{Xi!u¨H«gGԹY \>#@f=I-+63<$tN@0<қ.@Ri@3Yfa9+\YfT DK', ZK%_jqwX9OJ˰"wo*PKghҷ x/9`Z>36\PSo+xc{jѧݥ.0!?*YZ"k6tvqC@Ӳ-"G5k`zGf' iCKB ÀN-r(2yF&4%!TZ9 ܡħY@]8?>F\wO*/|F`^T=qSc ,Uv_Cۻ6STM.mbY]hŗyUzאvtcwc j [U QooU-uwujW)`FkXbg*.\ZlWZ+Lq?ϰ[k f63 aUn92">{B ~ڽY7%ǼZ&41~(b2Ӕ8f}T" yp;?BHP>LGϕJ[$sǦ{q^ʳfc/zĒn w>VZA6*5K@/䔊Ѿ$Pn gim!@1 A" ח,3989c6a);A'kxf@ӭd=R@#HZ_ < kjm'^.@YS0q-UWl<. cdch1+?<)Edme !|\@~0-b|~Z,7D"XGvx(A1^Dܾ!󕇋 aȾ^[j]E0yx@ta\YH) @7y n=.f4phi+X l5pb0^|t:w}X OW  g1"e a$T19<^N`tB t;:I|Rpׂ'|m`ᤐxhOiR25$/Huo^#ay iޔQƄW8#e5 }ɣ7E-4.F я4p6C } r( _3g /bTMB`S0YaUFݼUKO].RꗿI\'{|~N!YGe(0i@G~staW Bt\CGyC`j+94!4#'Gq@Li9#9J9~WhnG$ `6 )2ܥXģ șΜB 0|?ztT=jp>Q"MZ֟UGc/ 8 :.'[ >:;G{"r1H)i:cAKIwٟF DNftRla-\l@j 4'DdCLT{&Q j0^+$ /8Ou>sw%ݗ50+:" gPSU,ߩx+ia ׳]_+SG7)1(A GV uL LFfxJr7=$ZhpZ`4Tfyvo1~I!V! )[ r:JWْ{z]rYGE cћ $;mWd- @GtW,$]twYٺVh0ȃ.b(s&{9:*Gh((FL90=Ռ"L +&˧]j;GW?h^vJaXX0jRSG+cp~`_ jSC򂫗F.F$bի_]2~dz o0}{SloR(w"@z_Gjd::! PiVDr4qCt+E,GLW[y6MH`0%XYC/mlFX}Q:^T=|C{*;$ M!_noЫsoK:Π_~|a#4{;Y:^{eZ1,YTdR}C"@ظ+^It(}NcFTZTb[)t>23$ d[ [}}&}ȠDw*A?:YF2Ht4`.. JZ.LZ{4[KK5P}8Y aj|ECS L)YQ giD_Ic86@Lb3[nX! `xUp'BoA"ճoHΟQ v^ rC.nZCJxil IM~-!ҚF0=#Pnvy|7 ɵr,-h2 pzlV`r8B2\zkE*HN!( zX|@DI"H p~\j4`[uz` @ed_4y^(~Y@OJ8:Otp-K`+DnyH:va@"7sQR e7=_sM"B'Ւ덟7 8PHzf-TW-|D~d:>(0ݱY.W9zvEV2Ch/0@d /L m zݲ_iuT4 2-p4/4"@sLÃeۛ/"Eua:Y:~I)(ƒ)Őr0;k2pMVPrT Tu7S %C*F^}.!Fi|?;Z)l%UʫE?PUXvJG [ TR`  Tjʼ"TZGW3dTĘ f,\ -3+|b *4H8vb67+0>.Ԛl]c}FUzP4 flSl#l05hDKc?B;x1 EdQ"g%R1ͯ.^Ua;!nX Ϩjj͟?_ b2&>"WO,E$),1/ɷ)Y$_w&!NژmVC _!|5L2cYs@l yC%u0REzdwyO.m_?*?,tiM~3k=Un?)Kcqt;;7}L5S<]BL0f<(1fr1edj>hHBlr+$N`Dke7]գgQ)B{Dž #j¨zlE!ՃWkMퟎ{vF͡i3}qL#IP/`x3՚kGMfD\^TgHOjXI-[ Ti|_YUo i(jKQI\ R7h$EvT:Cr_f4EO񥖇Ա?93FDWGR!^s.NOLp/@:],e˗]^z`ñ0~ 3! '<,$͋I/(-s4V<w$ \ŭݸ{puχϖH ح%ԥgG44>',aÁk G 'u%E_OXdKcyh_Jiٝ7Z/3)Ulk#HҨqr0}2g.R_}ח7'0wcYtt#ReM;<0 P\-Yj̚EJ,1?f;s_0)(Z -ܷyM&r5QqC˾8c=\S'{1>62޳k1VNn+^Gpo[&i{) x?Igt,\ouƴ6t3SHW3Ã8rO4ʏa5HyHB9H}牛 !۾a{ۗ{?Gz/O0E(ˮeǑSgxi{,dh 0nޤ7X\ ;>ysŝKEdsC 'sn5n~GooR\b~N7L^PB!q܈2 ,^'-1ET2W͛ť%y~Lw5ۻUlim^oP`kmKzx`(Hs0MOGX.R9=ҝ3 ,Z Pb`xԫ~dls6kf^ ?~ᄇ>zHIX/…^cdum:\Di9-9c]"4X!2a pHYs++IDATx\{pT!ݽѠ(B"!>"Zj}Sj H>PTmԖ:N3i8;lYviH es~}w5|`0X `0X `0X `0X `0X `0X `0X `0X `0X `0X!L`^VA絢oFzia1 Oetg\ߐ8&;[b]  8#ɷcc(RE98"f1\= ;H3@~>/~ DWŚs],+TGQ"F}x!އ^r9+l 7r.bRߋU%! Hs"bV8ğei&hhEdX PDʓ wӊG*1耡Iuu' %4Mxȯ'@Y7 x9<^SJb2qDA+zZѷc f: C 5 I'cȏWX-(/Zj7a@7+=_1 qB V*u d5*R뗮N0唤\ Պx*aRPíC] Ge"W 0^3_o#oEރǻRt:#ZI\ۇux<`>~wPX&,!d{5~,o ^OB>x}x+A8Fq!4KԠ#HR~kyhuae HG~=D@brYw"yf1 { qPѤ_#N>w,3!7n8%/ ]a9EfKAL!wXjEo'(R⑬ԅ(5]CS=A9va{U}oTgh™i& =bhUƧ:YDƸ!0G~!R̊$,7@ƒXh %A~^$I 6ޯCL u\ LWf|E7TbGHu)Vu, ">>itᙧI"8I8v!ZR&)BPd8JD' 4TKb"P'r1Jxc姎y>٩?_H]9AV>vDE@ݡ Jl"QÇș"-)'!C(;aA#x;Id3W.ׯGq\x !n1yN^ ܩ*@.~r{b@!z_ |!>O&^uKVXߠ*![!&A)LǸ1 p a+R84<贕8sE+'QlkdH :26ԅ"&:lAtX!}gxUZDJ/kUnPAQ`i.j-籃3bIUIDJX[p[ѥVqZdM Vd5xY6~\ 7lV"!d(҅kҥ@"p#Y,KVaVk̵|~lʌ_D"SEHTHv1jR.]\cVuLAIIA3VD'>򛑮A ˽P}Gkb_HvMTk&T)BFCYaY$ᐧ#qtZye'EN> wܪ_ G"2(y=I^ 3\[xS l9@GVCZI"mJQtX&]/cq0냶H`.XX ƛ5pYQJB"vr򣡘V'Y ybJ(QQA}Ąx(d. 畧/+35+9 .u+ۦW:8NW.|=_D76 YBE bH7eG GX4y(?S~Pđ|R m2EP^@hQEVU}*X$sR J= /HVc7`!ijzMhuXKpt)!&/;~A!CyAh$Em7)/IYآDMI\wLDd/YK`"ȄRCW9;U2q| "_$yk`*ഒK ELB@{JLKfZZ$ʂ2aW; y,H HҞMZBQ=E_bz**TVoэN JMM1䑪 o[yM M,"dK YD1tJ/Pt%!숚QEgxDOFڨVEQ/>>Z/Ƃs{lɢJ `c|P)gXU^3V3(91mPp(GK5z@(E"oH)/V1}PI"|9Ѝ5NSXĶC;Z3"iM"%DQϳJ`D0CBSF S4cu\1nkɸcb @ύd4/,L$zҁn@M3H(B@OE{IVOř׊"=EL:[L(kAEԅwUENyr1 ' [E)*A|c^9dv1)zP>Aڪ5!8'T:]՝imk){WأBE1l#m^|2@≠+^yyaTk?B z29,+_u[⓭1tL}H q\_*·:}dWd#[`X{UX'CTFncLdwH?+r&_|pcucuZ˴eXޅhBZ,XD[&ewae? o"w' :Ϙ|";]wK+}dHl qWg[/"3K `"Vœ K1CZ:"9dDI1e!B_R.4 EL[SZᏤ5{%X밟]Pj5OLXPR$UM/U(⟉Ly:lmUmH M<脕m0dW͡`@$}9B:V D ?ߒ8+FHK<4R &w[D.w*)lMOn)̉+=*E4W;C$8j^6k_/ȤWm Űu)N3Qe P?B '<_|V,:N;ϿxXDs "< ,]OGo ䷏~:T݈qyLD.fNq?wSwq Iq֌Z70hb-}YGpZg0|o 1;x+ȤM`0X `0X `0X `0X `0X `0X `0X `0X `0X `0aZIENDB`pybik-3.0/data/ui/thumbnails/Prism3Complex-3x1.png0000644000175000017500000001527713137372657022212 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+qIDATx]wxT}>)&L ыtDj#(E ⋅'J1TU%Z#}׹[$3ws:{>cCB5j%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#"j\v^ϘHzIyZ6h8kK9#ddqiWW,Iȸ{x ?pN{mbB" V lc&쭺ys[4zkR4gN_5cz ɚ]^}L12+gft j$ޜ;Ac55Z,' *©b|s|}fpM~dلj|w>Me$+X`Sb:'2aw& miN?dwaa`,Y,\: J)..NXdƟ 2BVbLӮ gȤ=@^b. LJ;Su7@(ϟo̍i(  7Fm%2t@,|mf!$֧N>_#J(&?#oԭ[7 e|x{Z76D(!n| h\D~b ;uwCϜ9 /p;7!\zbbAԩ#Qy|XGMEZ(wc$m^XyǏ,X`;`%آ$Al7m,!z~m=$ښȏjk#M6L}Ht%4 6I ?( >j Ƣu}naOkKo ԝwW WN>`<2mp F~{+ EL2ua)^V͢,~] ܢ| ACc@Y< ܍|E(?|_ˇ)$: d:st={m[h *""yz衇nݺTfMJJJBTTUZBCCJ*"s8PJMmzG8[S~  `21Jb@CgHt j"|7tQb4$ vPH`uFҥnIϾ=6+ߩUVŒתUթMCץ7nMSfGmRǎgϞ4"ѧOz'xzAH:uܙ6m*D4oޜ7nlFHIBAAAb\S ,L6ML""=3^„#{wEcB;| a"iUz8_<5+Fl LHzGރlnSo4&I BԻzQ0 zQ;A@|[JII$(0`߿?ۗz->p"wcbb`,:5jD+Ȋ|) XF؊=kkbL_r7I._EVV?nСC)!![2٧"F:5 U60h(-F^ـ-uϱŅ zqD<8 l( lPRMvGp]Z!_Æ I&ԢE a{1!\@\ E 9𽌙0+Sd6~x㥿>{K$ ?CU\ h@']d%9X$`B6f-+ o3c i>5-+HfT/vX(5$FRp,|#zc/$(o_ڂ&o/"@QܠbxG|b˂G,.` H"Ţ5HEvb 2vX^zcJhyn '//&lٲEmjժ _Hm/IqKe\W?F~=?mHw;#&Dܛ믿ԩSaۉ'}L[!\K~/wqT\ren$V?J~s(PəD?;ƫim;v88qWFċC  }=&'TU`߽`Hi"@>/ gE!' O!^_~g/^,G0(f~0Ոs< n"|wCQ!D>0}humG7^!8w39{Rҫ]vM@3G HltסC,Z>=}$"c+J)dZp47:C2fy/W`o }4 . 227nܠ#Gԧ:t@Ç={x}) g(璀;f$lOO~D+dI]'wF}|?S3,Wra8qfۚ5k `0wu(gdۤ⻷C &?D~6Qw.D-Nj@u Sn}#=^y̝;ECD#-}7F31Yܻ2rãf`&pMǗ%_8F'&?˭/ c/Y1&2Cg 1G+^ oRoqy&… O? " 6PLҠA](xYRu~7LHYgBHe!u5p-L̟fpn) 3>ЅKډV:cvA~XzŧB\[BM+wE+Pׯ_.]}Pb>dQzC !1,K "FH8A SN K`e[8J5k&ʻd<A }(sR=rĚ V:W/|`}|/[v/9=oŊTeo>ez߇4+ L]J5}&hM6bI)*d' &3 2 PYԎ| aB<# uZeK/T@" uTaK_Q~_?blfӍ Ҵ1ڨ/~4a6P%z aJy |o[:~`t aA>ۥ} P|BԨSlj|@a&@Q :1P%2ދ>&8^\dzXd[q V@(mq[~`@'m˅cq"'0+5w gW&O,ҥKtֲs?.RZh4cCy1^so5]ݷ3fZh"@UlX|z{K]~~"ǭg"5`m*[y5;oN7!*h[zh/B RSSr'I9w@3qH!od"5w-JK6j fRujE;d^u˲#O}7 `ݢ8``VQ$0jG3\/0>_,֜Vk'x<|eNs~ѣ1Ul^m,a웏{P^6[]Dg,؝N$Br%ɴxVyN ߿E'O GGnA& |~9=5_H޸@[žc1N   sj8K˳JИ(Gym0WǼm۶Mn`Oq#At+|]K_*xձ i ٱWJӃ'J͓- dBmfZl"܋Hod:*3\po33s&آ]SM:6R r?:ʅOQM,-66mDTHWn&A:#"—0{|@IC5lh,_{jJţ0s;cWAPŅ]/ &zwp$cd}vlLi#T>6n O#WO $mW'idXSn `hM;;n*X0i^i~T`4kBHA`xnXdBx@|C)G8y2 @rbm+ɗ7c>)*^|'C=]rm%bb+8P R؆`„ b? #Ad6_,gi? HӉxԷ^^i'T 7*jVK~<W0@z,>T*|eVIZ.D5Vy3;FKţ 0d4SB 3~mbeNdgRX|"D/KvO^/36rmb(WB\gcY#L V`WV jx˕}'>N+j4ZQls7Eie2%`ڌNLpإx8+XY/s+@iXA%\qK;G,_~R6}SkM˵<X|\7 @Y S vwy]@%пO.sr)5{]YTC=D>W,wi XaF-е٫Wb\ ?έ{dx)ݔQ >`¤I";5.]EBN%a pHYs+ JIDATxkPmzQ`YH.%Jm t8S۱~kul6hƩ11Luĉ`K h uy"X rQًj3_x~{ysγJ5K      t[^]!. D̎@;fA7<<t;tE=*(~r_KdHyJ|!};Y/dLRRyH̗Hbwi׏;ǓyȘrJII MgO/ ?M0BEBhQ:1%%%#ڵk@'gHx0Qۺ ș+W1ڰa`"iWJ"/ 7E3w tY yɲ3_lN-Lk@Μ;wGgg'EGG'J>x'<Dԣs>pȚ*DNNjb4*!m?jF!їGVVT* wxȘy\ -r&zW伒S@dk*h?rssE!+4ȘaaHjjjr3잎4|*# M`e~…G6\ 0uGK? a|70Hi`]ڵkLk׮Aϟ!7VdF0ț2Qş={Ǐ…  E"Gmޠ[%@*d=>v`0Z[ۡciN-aPY޺ӦMOtTST|=)yD,`Ig@|wxb! fE,𢒓Eg >3--@߾\hii!V+ AZ5,pL-!tiR?+~O4XNQ<~ J ٟ͇@K5t (FܹիTTT$ToCK;~7v0n.w xЪUhѢEJ X~7D?on B!g˗/$ěOJk.CXdϸ< `?[7D Mݮ*|O;3LE!, J`__ Ѩu*LU^AX~zp4kOC 𮿿<Io/!?/r_ --|}}EXGYYKEO<ϋN9ƍE#`o !‚T0eA%099IC!w+**cMfz*C5*5.9pyF@rrPp/ɩeFK (! Gjj65*j)|| }4(A`˖-d!_ թȤuX#@ (AvqYF VWW; z7WBR?PS}BCCСCTSScpf >T^.PͶϙ3233"mo/z|fK٭F[n[n+VŶ;hP+z2Bc*p|^6A7v {:jP/K(p~RvP~0m?xJg::s2bPŴzjZn8~gAQgJ𧟿C/எ[o!)!kАQqs`b~ꞹCB6jŗFps͛7pgpb. (}kHoo}v!!+D?e{o{ "OApsn;}vz^=ZJdJC'>Itvf1+M,/*MtB#Ql fъv05WB6qb&n'B466: pWGqn|p!*HT-`n޹'4CJo ll4 `}0P|3h        P K|鸯rIENDB`pybik-3.0/data/ui/thumbnails/Brick-8x6x8.png0000644000175000017500000003724013137372601021010 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+>RIDATx}wTEk\ݷs< D0!! JAT ØEqE %Hi]ëkY7[yNs;CPt߾]sSs]wOIh@$uuuuuuu5g 2~]yؿZոlZg=h~/lX5݇i?S[b㏱Jl_&-{db(gQt!*5H+}4 {g;1+_CKUtDvƊ:E&crJv;KD!A7H0V6"BF׮{]GH%x}$"YD6%ڈ*֒q_q5zg2~.eqK%I=m M*m{xo!#;ב_&.'ÎPQw ):951B3E-$?TmBk;T\qj~v;9b<` wcFo3Yw}6v(T}z+M!V( |̻;Kj@ (JEI| 8 x,U=T;K\H+ƟN ؞a (dj&r \!GG^@Ax#=P^Kl$@T?!Ce+r|yZɘgp鼚'=O{d*%K)6P.Rvg袓 pm(86FOE%BP'_ҳr I&^2t6(ƃ^Nȣ!wO(eIRBc̣.i|  <7YQ2>Hd&xYIdN*gk_J |Sd"vM&GсVsW)BD_% A" QExCfY4r&O7^aIYI:)ڠy{ӄ#ϡ8ߏ&6&jcٟĠ5m"Fo Q׃@-Ľ*`!l'pUzv~|{ ?q!zRo@p }yܺV2\%vɉſ 1)DXaH<.@,K%0TQ[^%H7}mp ^4n^F$&D/Kɺ{L&)ޥ*Dt!%7/Wi~(\LO0lYC2.QZC!@+VSy .f25\^)H:_SWԹtĭ+h"4Qa&{J.q%+@ȦGSb^.pß)bKYbD&֒qw /jmĕ .S>zݞPaê[B:I~@^j"U  3h vѕ&+Bj'*Dq1郇{D F)~zD^h/SϓI7*2޳⍅Zte^;A<>Oפ6p&\)V.7=NVk"C Yj%gрTVx]&VI $0P"-s75~̼(yq~*/6FI~c,`7wJ@iKD%.RϾGuB"K5 KME4Ap"ܟa2& V$+)lzK+B++yU dhݻdߪ.d4ܷKf)%t)+x*G0`+p(/+h.\{m \RGVB$+a|LKLƄ!^B`(w\\lEZR(H$d0v(sQ`Ũr͋~0N2"4Yh_N1j& BE*:q}MV:w&N;|6OR=ǩID8{,p vxY+]BFﱜ _4'c2A;=Ltveu)O!cxp |nϘEJFԌ4usXJ{ Yj 0n5U2g1$6w ,6y5y{Tltdd8SkG_bg/ ,=ɘpʥBDL#yUI3{1 o#@u{*S#8A|:Ejh(/jvq6y P^|s)VXMd!:=ލwJ%+팆M24zsih^VFƿ1\?BD4*p}F"Q6c6S(7n~~j&1 ){|rt2& G(BC1[s>NSp#9lbSY\prKlG=rpLb"&<3hB*ȥ!2ɪlG>FJ/K+D%qaN Ka"`dF|dUnyL/?DkX}!{lbXo<z>YڑA TV[J_QƗĤge>j/etXpAnI*Tڻy*V`Ȣ|Wqa^&Pƪ^ V=g R72 ȨZɗuSKȭ)w'4Aͩyl=;9_,`|)oV rax?[B2>D^FK&NP}XR\aG O@6\u\Xh@- C7ށjC_LXr7Jf0e rQ睊^QQV Yx2#*[}͊I -+qo~J )&APGպ?&˕x~)BEؗVVq L)@"TW*c-W*SH%"!`m}t^d atq&*x(CފbDZlPm&b.w/ph4.8OfD!tL쁕':L25q6qZ#`##0{tN~SBE/cܞng%kG\HY*ϡ2SixH,0d7ޟneۗsŌ1~[8-vk  prSehoǦ0Uĭ :TEoMhGrB56 U$j A|9~I!m{,< %ޣrEmc,qAH:% 0>@$?VhgrZH[%L;_ٳvU@]jseX%d ڶE({blNZ%#DMCKhZH`g2 Ҧ4R +D]Y{P|1wBK{[z(g<߅XeZ1$2FE4.>ڒ+^'b@c3&V!e U96\NGfyhFc@:*LtΈ=cܣ c||6=ZqGR'wD_N^`_-ݻ<B[z&U3 daA~ (|Q)2ܱ^jk#BX~E[T<^%~R%jNש׬VUFYdooV`$pщ2 (!5=] jaWC Y K }dw،t͛$ JYANI^}>[!O2K;?w1畵=bnIaiRlP5GYNCvWuLuyd0" C4 ZS%D7b^@s:\kVa|MMyX͟/LRO&v_s߾:\pT\'ɘ+lw!}a?} KMȷ9ҕW@DȬ^IYݻ I(AC?!)^rpj$mNb Zz|"xGUu# !8``wo~]Ѥte{*( 9bhI-?Qk4lb;h#»si2R}qr&{`*Mv/4W|Ze۔ۓ+ET#tk1x]E:7āx`HwYfak!IA`_ S7l#*#a/4H !VT 5ޕNёV7f .c&xDh&ܽ9Z,_(³%a$Aoo+E ݲ@SN+Rd+w\ TAx-MtOWEQ縇̧)Þ]ƮiCzx1n2ɼw b YL$Z]?2'J[<- V]]JsWl-yw6w?X @Fd6>v6T%[bȫWY:^]2eAu{CLBn"J^QWB#M _74.PFnO8[ NP`2n~_|7En]Q%E?Y *JBD _5y"xʕw$b)Ɨ&;>m2;hbe` zPjc+_jT5` `1t%J8"M;y 8TlK/IC5w`IC?|Tq?#dbP?28n ao"rO6?i'U\c?] |v@kٙ*3ц]nٟfQC!_J'%#\bT Sp22nr߽_(;o2;sD >](.sW(5G #I<[;? AL 4" Њt,+ <rΔRT6"ֻؗ䮢ה(IGnj={k~\ :rVoolIGo@>L+ݓ;e?ߙ qx] =G ! ɋb>M|x~iDx߻Bpe>۝'& /S VW9N^́KL Cm‘iVD@D5o\ ht]ncE0UX>V> F*]) Z3~0%JO('wљ:ڽqi:QĞ!{gfk6ݝb xSz)C5YۗU)vCyBd. Ba 8G+suTl_9kL &N2x).GU yzk9>|h(@3=tGVJ/#"@_0xH^v.?>~K8ygO~N @޺-4Qh"8VnBHN'y7b `r(]J! W7 .iS04 5DP7 0`V1Ej~:TQ ܟ=4NoG a 3>Hb uWgz_kbW[@yKl_`[ %-S2ײl_h2D0O(%6C}dq!B;"Ӿ3t1K5-^ TLN^Ɵ&""C %w}L76S6爹|; >f4nK\_1]mmmo/UZy 4* "@jn/Y5Ri̸kq7[V:k t͠X8G]5iQ*~2!SS-d{Q;`^.uV#lIC=C!:s'jMD ~>ܖ+eER<)P>$UĦI >GҪEhn\PgJShڗFO>,1\7yΑ}#WpA,`=af}9oYʧ6#8N :`\:A2 ~05!1q@w*Ng)b70۠N@\8jVto'pc1ǭhjѭRrh–/īRRzⶰy}{ |0@e`,\7vvAu"fX<IkH6` ,Kq&Pa8͔AyۡҲ&p"pE!1xyΦz#̬/"M;)?[F ۧҿ ;ş^/ +ENg`r/Kz> 5-g[%@t)dup Aj1S`Mt4 !"K44@P @gJ=dXX.S("qt8S"gh(b#Kd}%z@ Εl)T?'0#jHB#+ k!X1Ċ5gK1N iۚd#0Z-C\z' gxR{)'@w`P3Ӂ!]SxQD@>yҪ^qKXib-!bR}D*X8x/JK] ?ދz}P5j{< hTY3trҠzM݉"RGM7IGl..e_˒}(.Y 8N[P+J*0+/3Ŷ.^@/"Ğ n`FKp5o 8p؈BLr D yĥ{(D2݋HOO箭| ƿ䑡Y{dR(A0={e?Ә0Q59W0QLD|{ 7{ۛ&ȝR^yG8f| q5CoS47̔`_zQP |WoHM~ˇjx[ /I)yO,)ܸ3\eX *‘'"3Ob<)ވ'=?7|B@ߧc719+5Xs .l⾅Xc+}䬑+@ ၺ>x]UA2H YP xUH,[ݿ:j?Xn zcH=8j U%/oJ ۨS|Mf|J+ooԡdRC P+G@Ɇb^!SJ"e6(^2<>ո%jW6|xYð%YJ?8?v[yZG\>A&p|41v QQA869q L!+,1֓fHh`q>.b8SS2P8rrx88pq]5  (la2~1"f&hX<^Թ*K)( pD/WqxN|i#R@ Hߩ9fx(dCI…Ѧ,b]b-Be}W Ġ*ZEk'ޓ?Kp4Zv(3FO_N2PRB`f">,YEƃ@_^o eQ!;{W6nvCɭ%* 48 ڈ|4\s$ P015Fi1"W7K"7p>Bl#CU.Uމ/sMl1q6ODY%jiBgg.vǷx$9pMD"0z^ُkyf ZP AF964*ރ0YK-' ը\K9?|0{t_]J^1Mn%o /e7)i$CqWa&8++cuʽWYK\a  j,it݊+d9Ryx ]8X ;*$mاg9chB7. jr '8oWY~˿(%|{C}n^}KxTZBW;oSqӭ=2hΨ`B%e\2s S {ɪ'#o 7&Dk7o߃gEA_NY~ɞdps.;^9+[_"AkRyE4P Vb$~@b9zgxr4KM%v&e YIkݸπReX)P}c^aƏ@TE?2oh:X0a=^Ǯ Af,!ゝN"Tde|Rs'm {1/0|S+=lc[rH\ksn3uQ@l/h y 5A%Wfm=sDGբhnaCYVmpV)֫ c_%{ 7[˙EXqL|Al6*Kf MJh6.5A/Xv~’FdPho?t5(5!Zy ٢tqpc6* s&0O@Ʈ7"F70D>Uvz'ϚX$0i&196&j`:RN4ш驲,e 9ro/ꑒ3?f@40tJb?%ܠ%SJGP"`gX"6A}xg}i '/Y?ess \6Ç=-^l{w348վx̓,zTHeN蛉Af-!O[̹ADiZJh%x7J% -ӅfW]φ7qd" TA)e ȇ53~\*y7.c_*(3ޤѱ&_סHs`Q]Fmƒ!Dq:W "״@%Ne}]vpn6:;mq%EY\U BUlušbuY@8`ov/&tj[7yV0ꀃw͏dH|rݨe#8x>Ox!t46\5ql`Six80ʪyjAs |5.Jt14rv?HH4f)::۹jgp(soo'wBHV~%N`:/z=(3o0G`C #:>wuLbLw#cSxxBzL($˞)kY X`U)&-% F:2Ww"& PޏlO< Zqx,7 q q7ʸ0y&gCϔn @m䮉L[ª-O*{b|\.fؓjzTOV fiVM RtggAbؓco $N< ѩA?N@i N,?oq4 y_ɽpV+<Ģ?? _AGLtnc/!_,Ę u,&a_seG0}80yrP F./a1vLЌ'70Csh(T\;R;\IW d(@1g hR"cvPqm؅۟3'- dh4~C8̡|;Od{k21@T9j{`MN*6I= 3ӱ4 &fR4mĽ=e'%50Zp 4w> 3FylDs|[rSO V<0jP ia)s@g2Zh6˳  }6uЌ'\PM-_\:rs~BOd4Ỳ;OWgy4t WdMer7?(~JTAM'\072Oo@'w&*Fx{&2bO@I"gn0a CyV0Kx\,1\u_pp0S-g9!ܱ6'5.Uݷ'D7kxm9>Ln2@D 5rwGjaָ| =vm_,,7y`+5Ǿg ΤD<ƵmͻhE86K@V9c LBIuhk7fzb%P_)My;+qY$YBm=G㼥't!]xF2#Ɣ1B1jiE'X1/ FM @WjOʹ06y2+EN'ܵb %:2%l{IQ@ f:,t0%ш c?vc{q7TP9gtyN8! 8w|&x{˚>OY )O( ϓmu'[W@]m8Gb[8}=9Y/ fkFO( -CU( "Z+HY+ ,HGs;xnh@ kO@0:yyHOLxq c'Ym~ط[\1`Q<8v]8a pHYs+IDATx]ixTU#k%UI%! $$}1 ;( Ҵ(jiDl[P"*"FEQvبtϴe3{=U*vR{J=y[?z-?5}t蓠@7M'n:t Nt@7M'n:t Nt@7M'n:t -+A @,ܸ^[?V|vg4`-턹E%Z[-ggH~?<3e|O;eNPWYtZ 7Zjo|O;Kdxܝ!WqXESLN.f44l+Ű[Γ$l6d 3Z4l. r7;(9c6/1uD:tDY?" ^윆 2XZFF HPxͽQ.H;0o0X{ɖ]+4Ok{'XGvyuD>BAdCC׏J1?s^ ;D}Ti1[h)jk6Y2z&0FvF` cccY!~豎ӱ~n 1@*tRRRȐhcc Oj@CA6W0="\֪DkʡQ7D݀֐G$xfc,'' Ȁ^~ >ӛKkEduU7?AiSw+ioSȐrssY>}d2dOx_J juhp7b"7ZQ_$$ 2`5 5n."??149z!~ZH%  0w ]V"l{|N "@&dOXKYAdHLLPPP;85:~ aΛ0pY4SE . "#X|T𿠋DiޡgQ".'2$%%AbRRL€xdHP(᠟d8MǽSr)vٍ'TfQG *4Lv*Mht0Xd؋D&#/4Aȳ Aj"#C >~H 5#(UJڢ5`*(?ԁm%=NC/% ! /@̳VVgPxu!x ՁH,a9V>s~a"2#53ma -@JKKyIaA.=r}cs-\mS6 99rq&)&&m w kQɘ!a>įd(Mh=U9\ƎN#o7?4t`^d0@zdb)D}M~߯>/&껤*~-@ʫj2`/ed]hUd"_ RAUCQdߠP(7?zltD|uO2zyLu$D2U]HS9on8uVf ".(Ytd "z!xĦ 4|xۍpwG̣Bc٩">j,Sk PÇ~k3)dX vqTQג ? d^\;<*)\mXH+.ݻWB"ș/W7)i3  w U'a2j.Mnf\yDžl!g*6&z ,Yc6/4u$w6Q|jهA]1^kCa*?ʯ 0rHVRRɀcWߨ$DUWm`_rP QR 0N>乘 0b`#tR)4pn+L>ܒ;9A]*2rU5jDJQoj EN4䶆")5{`,+.PV{ +"|<PyC||Qg4qC <*=W"E1M, |؋m + /33Zz,ja)c ʛ9B ABM:40MΠ 9 PR}6v9a#4o4Oˀ Q4Tݓx FPH"1zeC˧^|8&|/5Fs/;6R h S@2 qR>h8=/қCB"_QXt"uW$Xu|ag;y8nciKi8=4o2j3VHVzI.;r|S}XX*5 IwJUDb70x nT-LJpyꌮ*v /()%H0l0^G\'btB1Kwg1͕؟QMAlg]C>;} N8TalI\8A}?DJ:||FܭXm2vBv1C q/)Oa )eEE'h&pc:<2ֵXv~oWl<#SK,7rY2&`Dt=&\eNA8t}\}˴ƈ>۾ OXNTL*` `DJdT/@N'y!ۗD c1̛day}]> oע"k2{$n֡D kA<*VbFKOJ`Q1 01Q^=m@`xn[R^ٜ !_'|>Kr+$u܌"G QUDv KֲHގ0 [ ӥ a\:x$j_ i?mST1*VHZHF$~xڻ \L8|DHI" >ƷH!>#Ur;$@+P{8zSR5 Cɍ m UP5Q+$BU*`St"$ÑRqMJoyYἃۯ7MB2/@@ B%BK lGIfow( _D{;࿁8_b׎R۷~IcnM!t&Rs? FfNPD`U&DֈehPGWS+cؕsrK<#n|]AcEM)"O2G AKDM'@dهVB(IZ4-;糗7gFkk~n?yA6[ Ţ ELgƀ+L5`/ʾڛƯ]6JD걱8jNDX< Q([ЂV'* hD WK2Jl=쌵7qSTJ6ְ)~O[*gT6ŏ0>Pjh2sv$P $+"I#IjW**`W}vb(y˷ӝ6.s[?-lw u.knwT[& !|Qv$ 2kQ%'vLn>Gқ&AO;Gjto6Qj->to=E 5y'C戌qdipˉ6@ ZA+4Y3X\"tC.&zK)֭߰t;^2#73q&HgUAbZĩnLc踋(kR4* 1bDwre[1\UN"FH/ `x>/HAl!PioM=jئ|!@&wp Hfp9 hO^}",RIC|mn{tðcG?<ڭ4F H#D5P:~?-~8Z9U!ݥ Dx U"Ule'HΒUea 7PE){;{"eW6%6j n<{S0֝ (6uդ sڪ^} 7峭_! )_?aGG.勊 !hSDg-\?v _gqw*$$Up7ij9]x#l3}[::;4r\ا1A@n"pUKPB/61%)}nwU>F+b&V6_(.yʃ7KՌ"UHus| |0QoؐTN%{ՏrCZTJַ!F[`'_â;KyP1 {$'kXB8"@a/HFk4uW AK/}q2B1CS&jN`^rClإ; p4z!ق;stH){~Zck{70KYMx#kAVspxWjC~Xߔtc4D_w -v'yP%]8?ՏǼDSw=!PJakLY\m;yy#dw6GPw2VV67Jcq\x½)vzkhΉ%Vܪr@&hz 6h +I|?#a6[ϰIMDWwSFWqAي\'xw$d?cpnEM?ܞ~AVܙ̷KUfe>@?MMv3.Mn$~7O{P3bvUnb?D~ONH(;j\c]y*O'@(ɕMʷ.̝d=:"O5*쭸M`"^laLMMo*)Nt@7M'n:t蓠@7M'n:t Nnٽu`IENDB`pybik-3.0/data/ui/thumbnails/Brick-4x2x2.png0000644000175000017500000001456313137372556021006 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+%IDATxkxThE!{L=$! R(@pIczDSoՠR""T.z<i}N=i=Ѷ={3If&0z3wZZkIȓ &&&&&&&&&&&&&&&&&&&&&&&&c ICHx߂-;&W>(a8O :.`a'^]~l!v@ vhjT/akG} $>J0|Ab{y ix1zٝMRAb`n oI|Q ( _SVqvdf e BnA#wķp&3^GZ>cl,ukԡ\D>Ő02I?$D&~@0+(gڎ9xĚ ˻ !pOa$OCd/ھnP/f mY${M[ӕoLb>o L0 51! }6"Μ0 xWK޳""/%vgnesHWHhAq0CBm}tl3h!y'`(AC̃Zag:vB !@*wz "/!_H4"HN^n|*< XYj$\ÐM#]UU.P'XɈ?$~.%"3k+oj䅧)nMI b !BCNN@@ /xva6.5m9By xQa0 ˗b}2~L )b0'y$3H,JN?$~7]f~U`'SF{2h"T yAn!H0,33M?JB7T$fa+( yHQLƉl|^ׄw:~3X7`Ǹ>Ĉ@&}$}liWO65,׺/?xj=rIV,//"a .7%PXJ!aX>m^ -ڐ CJGeBM?fkOA$}^7|!tk'}T9{.:jȳX /95Үc (fq`hb=d\9~:ykWΩຊJ5PIljIjM)#i!!>c<-H`(v{ĉ0 KUytI|xl1: R$>Gsӈ:Q;eee is8{]KX/^KWc_H8?$Ý#OqU iT {"'LUR*WtDӷNe*+jrx 'u}[j_! ]v-)u9yP^^ΓH0`@0c<L60˪B3À;$VzV%^L%J8jcKPBPK?\-2%j)_C!«N,` U1`:,L5)6znN*m"2`p`0Ǝ+T:&z_ -z†%G\|[ooJn}ll UpyF/P`uYy՗k)gx6DK pfU7n7"]h aU_ a1ڴWս|3Y : l%*_F-alS/6I֋˴ܫ`߮UH"$"> C@.E$f',<4L8{1㩻}a>ncVxՄ U 㵄dX Jf%%@2ݨѓPJDzl'^_ď4z:ppigh%AM W% :#;ׇ%`2d֩D1*˦`k)_u;!y̧}Z1 DDu.NyG}Ua%+ć>3q] A s/Pxc(!|Q!̖ܳEź $?N`s/WsMr/bVTٍQc>85WTTjtpYYz=W&o(r6z@V./ 0O [Y9,[!|/S^ rֆ A!_^a *\&T-$ў ao Dž-Nmj M~PPabie+32gcz}!\mHrsJW* {@,>k(AjZ8 V 'Ѓa J#&>|a<~ ;{(f_CX5yK8)"qTE/ &W ]oe)DSMXBZ^Cjqi`'It;!t˝Y|~;T{\)|i8(<@ڶX+F31)q Z b3O!c$-/J˺(6KA!R)l&oC^qeo)bc[XiTC/,iX" AC+VE3W1:]>VՅ1F@o*q{ @cKJ 2/TQE9N6-`8B#L 5knM7V1`m; ;H[ !OWAT0'T7w qeޛJ=A0 hP_7UĨQG˧|a%4b4y yNtmY6?;KKOt 0R1p\ 9rppb-1[|Vum(X5XU5beYk,<_Qc555\>N GoB"ρ2߆;b4LSscq_ 5 ?:4꺷yP !e(zm&!*#[2 Io+KcA10ARؚe.ы_J&=y/4Jۍ-,}zANI~QdWRx@(*D5z P\ҁɂ뫃9?M}EBc:J殏4tz.1Xb-T*ˑ>eH(c,U&՘xp;Q<@ex ũO)CUWmsQ+g\CH`Iqh5DE&)W9ӻsć0ǭp^є5ӅStгO:n.MS"+ &c b,lF1}j\p_^3$On4:nQ7^{:6gVm P 7;D2^ –i $ $3Ը{p\:is6k+*쟟k}s6?|ks, zI$@E(9b}TEΑ@@u~kJ$jBh= _,d#K-4_e؜Zkk ;ST]6h%| r"ߏ"&p~v؊8 NWzROX|'[1  1EQ՛︵yLI`d(Ad C7XQ|6QpWk+F4)Z?lٵ6vrWԏK\ͳ8 c V%7X< *!yDSV2B: @Eqm ^q߁ jfVEP/w:n<8zNÂV>֓s!tWr m]JE }] SF۳Y\qV@a"J}OTwߔ=w#Cq"hU{%Ŝ$ոnOfdKR8։^ oQۇGܥ &m+`{;C7~Ѓ[ssؠzJ@{ꥵmN}6 @IX@ )e 0h+I &bN̻>QYKM^bwWl\g^ +ԉs =$ $G87Q+`(D$T&V}I9*K"Jd_O{R1P l^JBYhIҽc}D]v 0 <جÄ{#1 \q@~398X/h |Z@I3H`9UOWw-0lƃִƎP{^yR {--h*'~ X( +Qgg̩m_ݟe癡sol6;K`(DޥgܜW_Vv^+tbC{3QkջL0^ac6zxxs8+7ؐ<T)zA1{+Zy8<{O7V^Qс s}`,ۺWWv_qx9xԀ kNn\vrN +tn3@nncО1tW^j#ae@BQE.q`{@QRD5ZySw,[{#x&Kq2<[u"K`O`1])hv?ʈ9:;==-)d`Z g. pZ8 (0=|{(0 ЇtrXJ9X +VqJ㥥ɓ 'A M M M M M M M M M M M M M M M M M M M mΚƒOqIENDB`pybik-3.0/data/ui/thumbnails/Tower-4x7.png0000644000175000017500000002271613137372527020604 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+%IDATx}yT&7>{fzzvAwDdQ@VaaQހ" DԈ→ A?HLܮF'1%WO6=1=~ gzzUe׬!Xe,`,Xf2 Ye:Qrt';~ԚQѕw5W5~lX?n^s'n>'?{}:D '^8~p|>{Ùݺzw9Uޚ_e["hw}G c9(8@r~Mmm?8q(_K56v|Tg*?9Utr2Gޭ ~(be ??jw)Jq=O=U*U'[/n:㒼{; B>Օt.agٖ&N4i# /5![w{=.v5=kg"Ompy} ;kB(y};arfo+hr;.gu;@ @U*qg8zd:8?g~(3o,%{Ar9mCSH(|e TZohݯ M|FgB&=rY\ WP:d GdoG6?(9tWʜJ@t5 n AbzH/3<ýHGh<'U@C(hp~?9"M5(N%Bu3SBYK,k-;_;VyV]|=>t(!;dz:Ta`#a!e 5HU N'J7Y0I&{u).8 +!le'XqeZ/1bXL* " :H| p8LƿuaUcL6B'tg@@@>(Kmt>R+TjDd{"U]ҏ:e"=pº~aSB&{O!{wl|0q{>KaAML]ݻ`c8W02SHd=t v6:liڷ8|hz_d68d Q1j;Rū6Mj ?wJN)M ` +it=)iih'U,W:%oaNg5 o!!`;ժÑ UN}U}Gy`0D:ӕHgL5b/}J,鏯HDnx7d|R-6'`>5_4\U2 J.0(f7c3 <(H$B}SH$vQ^^?L*z1ޒpzΤNBxzϕtt|xy-[p؆%eC"OnjP~7NGoH_'}yW'5"jrCX^){@`N:;'ꮑ;2yac{KRBAE8:֜#4]5ram?\D]aOXxaNnynZ=p^N k*M8] ҙݧhv@DR4};|ũ28ŋ5B}N `HsM ҵk9p ;o8p1;<`aTL1$'%2f|_J.y{ptO>AfOt v{Z@@s."K&C^q0 X+  ^>qh u3fCWuz]zpy^<όiP6) ;Hs"DK`0`@#hQ"O8V`)G w3`xNpv ]6ۗp>9]ԳNMY Vl?޼`sũ@ 0b` < "`fNmRLI{cvOAܤ]N"^(i%L&U@O-lV8AtE`+՟9vqA 8m8?G  >)pﶍT BM i4c.ON s6!@ 1"umwj]$8sS#S \e] H=0m"H6(]9?HkouZ|B4Bsu@hNzŐ -dSQ-41p.*:r |w9h g L梥jb!iMѽ׆*W&wC_5a`w0/heE ة~@"]Z .C?aN i51ۑ {N_H03,kn;< 0U9WSWވQ㚐;gzmxaF \YTt\ py秋ƺLw_wTy@<5a}{4uzE=3sNWHuϕDxR sy{W-h EStFW;D4:>_&5Urǫί5:P@i d} |C9Mk-+Ȣ,=0v@ZPǼJ yg$AX*р>mUwo@9;jԪlMS,<z X. $W?;rڐ+>J୧c4C_ûKh`g 7tz\1;[Sj̹{UNSI >}؊]q GJ гk) ϽnY0]wGeeAI^VLSFܻr^}.w :iՍ׭nL NnT yCH@|ED xn:$c{+yi Hq#J>F#p"SL^B nm@.aTj;Ra{ r]BZ@/C;tY&PIxeC6N,U^ws}j3Β1{PurɾAZ1Gw6e4ch! j7swF -:xH}e"/  P#l"kt9BKtу=3՗?`m(TB egШ,jrC %`ؕ`2^5af(>lb&Lgɮ`]zo+\;L<ݫt5Cc96zY?xauc0dx Rrv@AyWP[%d `v LIhbrX0_t70SO+7pNKCZ}XU=>d@<~^޲.L p_8#%8}2*}o r ,a 9QC$l/ jUx/<%ݩdw*(_Zo"('dˤpvcS(uH% h1:W)CQ0Gm2d#&+ӱ4H5Z>C߽=Эyw.:\,;J TQ>;6"|W* @%ওRIf [fِ\*z;7;p+/ QiTwDŽ?|O:ZA/a]v7N ~Jp"k nNڸx %P#?^W؃_;x@'mZ$Fs$Y{l4Y0l?<ՌUm;XٓZd0#<`CT'xs0L,e[Qa{4F􇪴T ]wC3T+)1O>0܊(Moskܞ(E nu<Zp/r PH2G0d*j Ri.N67˩(=sѻ /_D7 _7g5r-0Xg@V3Vܯ3g adO4Aa\zC{y%Ź\2c[~aO~SF5k+t󪠐O~@и1riz,6aހW.|@=Y>V6 $]`JO z!&2[BMn) .?QB=(n\#I@('Dž!`a떆p]J>:64cGS|CJ9.?1=S=G=ϭB;;#ޘq؃4[1 }W8!CHٱP `ODzaņf~ؑg! B9.&pcvowP6|AgLq ͟˽?nh#* j,ț!' 4FNQ.gOPu,uB^+a=- h y#39O9te`ve. ҕh} .zŃ[`ϕ@ܖW1vGiA#**xԝ$V  7)_+hH/'Qn>EwwV53R)*)=blR|vXԖ=J$J<e69;s&zؽUwED|XE/}=-e3|tߍa)?~%^0}ý#0S?|^'i% :mh (%u;;+fK8É ٣:$-`Yv;i[*b'wvgUBoȆ@٘Ҧh.N $D#0OȖ"#RVdAt; ",ydww^3tM~ۋ)ը~/ H .$߿& r%/qvD9t0v6:RyF&?3;p+&}\ज़V1o&}bUQw*k^Ti܃!ofK(SM(w1U{='p^VNAOե1XB/alJAPp6&_v 聆 Y QuK>`( lo)HLdYAQ#v2|2vfT::DuQ0h UZdOn]r*>{MH[#+rZ^82p`ö- h';|>Irl+rlO3B(Icg|ktYEP=vg?뻌Z¨n"H[j v@bL`q>K[Il)(k1a )O4ڷrWrJH1wKz|ޫf95 LE:\Q8p@~zn/WH;x cD6jL< 0p(-? &p_%6&P!h3 z&f9e҇=M)az؅+|_cϗJpN ( !8D3W!_WV0J?8LBsG1..3z4RD(${q88 keS(NY{CE $:WoWԆB@L igc`Q*P9w0+qT8O` A. 7.paGw?7UuW Ut9< rR`!՝n$V6Vī&,C6]TB"J[ AӍq[J}ác`#h^jS]+b_@6sU`ZdyzA=H=g#!ul;1*2ӼԽ!`xx͑ a>xA~v^ZR <ҿT@ 'C!uehԥ4R DA`J96Љ$P,B@ 1d{ i:% oXMRoj._P j($%2)/[~䙪xDNK@}j P襞_pFu;}XBm3JoP]9b]ٳ%bs($;@ĸ㠔 .ȿ120Ra q'*\s2ZX|p}p|]c!:Ս s% AF Q ]>2Z ' ^.dat>&}/]Yah| '6W)H C:@F 90ՐhY d- TVE-A_COqԦ"`c\[w&jWI=;m{;/xQRltvY:F&5#x 5pf ,O(OCD_7"H^ #SMFàkU5(͝q?_qyE@y_D>+8XDZ0Q ysW v")dșHU@Fo<@#_$(]>Ǫ"~U{ᆎVn[X4,)o]aQNG E d0a4pwt;mj }_[8GtHFqY8߬6p~pڤܫhJQ U0 $xݡc4~HD}7U 4,n*DC 3* X4`w\PHҰڥmTh FxvK3mNiFn:ZCہ~@*x"֟R)y4[HWhJmW_#:C 3=DFszh re Z.l?\J`z| ɻ%"- {R S<xEJEdD3R&~CQ!)AK~;k|?VY@OWD(o@jzuI`u~$ 9c:(TT!1x~p/M.zQ@[aבu]u;oNyxQBaruS(=kǽߘstƓ3; X6`/o\K$4tg3%AC|H[nHQ=tD-0—xoZn{}KCt;mzGՎ`yS  ;vEX Pxힲd<:Z&k4c~3_szo6#JNTe|zKC&pI'?p-I;oM'rv'7C`},`,Xf2 Ye,`Nb >dIENDB`pybik-3.0/data/ui/thumbnails/Brick-10x5x10.png0000644000175000017500000003437613137372631021143 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+8IDATx}wUt9F 9 J Ҁ$S+"fEE#$28>uftFFy7|ksmB[unu^;#=#H?4# H =H4# H =H4# H =H4# H =H4PJů9*}wF N:B=>2f4ah>q<=OZV1߹j}ߞ5J&mon|jDnj\j20Ǿ99q-*UWCҨG*RWɘKZ X0L.o_ա͉7a0sJ .@(yO+,@S s spܼ^5`̌ߦOk z;h:?tîg\{˽>E`X,@y'Aw<ν*Upv?.x/A~^Mmabw(=Ѱ ?Յc. M&NXw oalnk͙U4^;V4`K ܆so(F=*FWA=/)v!a½<֮CT[UJ4'Wޕi{`lb%<B0 v 0,6ؓdF YRQߧFB7p~70*0 7UرobTlj|‹IفH >xX W7(,WoA .&̻&]Ӱ-S>\màY0pG,mMy<.zÃ~xTW(^2/xU2.IUrsCs3~ 2O:E=v dźHu =202?^ S?#]߯`uH^qDBl 0A] u3itoIJ ;sx4)h6ƿgz ץ0Hw$Ʒ!}$\* +ɇqL 0 ~{#Op>#%XO2(ژbM!J`=Wty/:؁&[W*&;4 ª܇! 0\ KaStc8 AAϹ"0h0;# 'l&x\BhA ):b&L7+܏ D43L5ů]Lewp$is1Rv3k3j{OhCFC'a1| C\`r-37`)^)((,,>\1s4sOqyK\;i>QC7,u 2R" UCpFꌉ "`A|xy+{bx@0 $7,+\Zs< ,0‘iL^g c2Ax4c|~,=pMyٓ/]Cᑑ z>|ΝRh$ԕQfӐ‚ j|9`1X-xlPʹ^qA@J?5,1Ƙinƀ_Gy[}>%bNaq4f7̺Σ\R|9D!Yae+.57yvH16S~PPngp`:^y@j"r` Y%n\7@N1CX cy kl3|`y  XɄ10b&ޣT%1h|f4Tc-BZ2 dZڂaRzB " Bc'v$l, ;\&=E2O`[?٦k] .yI!6qLF] `АgqxȄL/2>'94 8nmƸ΋w`NE=i e0$E(s=BixlD4}j"H. xUEJ}Z04O@05$u3`?pe x}8|ҟjW.anXqsW7Bx5K}5)@y@Fa)7~4Hcosȟ!oaa!ƁH!CztՏɖsLh @lJ1}ι8I0>'ίf24@CG10\xf4~/͏0pσcf.;`])<ac@+;T{` ّϡ3 3(cX$#t?ˈ}fYgڨl%f3 V * SJEs~q`귿 \9 t ?M@iVP{4Ք%B&rRezܪ ɾRL~ߑi(}i0qfs=&+=ϗP5DW.aK\]X`43s>/R>&͞jvTq9s,j=52)Ϙ֩ ReK`,.\"?liƈ1BB|>&qT# Cze12곀沩)a8`(Fxܳ&[Xlsf ^ߣQ4j>kR;[.}Ͽj!/}p6Y1/ˣ]T2*.hU΢|ijFIʱ˶W&y2Cf}#6dQI9h!yukJ2xa2 ;21 91; ClJsm/D4&BdgjP3wА?9$E%gr GS((yN⍬e+]b2pd$}?Ux[Lϗ TRZ{ZA'JEwX4u=\ə |VT<@qRs1aEGQb:tvS{_j.>cMm0 [HufM\o`_jAwĪd(⼟D#H2cn溘ªwzu]=?šS6nbL2{!Qy LV /6z!V0LwSV`;O1x(i,a*c8Wt&ו|L[X I`w!P|H qC2~na=I@e3EaÅjָZpiPY3)66F檡P ccg9ws *O?UT }T9MSJQNjOXbxgje`=|l"زcs_ڃ./?g9^+xhȒ 00Pf)X~S3l 7n9%~~]*r_~3_u*q -UwKfr2SǴi0E# ][G'uR 曆9"?4pcd T 1d}z ^aW C \/J1ȩ*]B!n%q|=Lzan5`3 \\W5y~>GUce@)/Iz%ͩƎʵhT>m n zn~x9ʁp( ޕ&d߅ri4f.6F58]J# qqs |A˭~VR?/_ߣOxO>:(bk[z,WOLn5\3$=惜d#Uqj§| a ȶH!8@ RmGPL2'|'`&i)F.o$0#⺆VE>` 감߻)Y}T"uqD}#O-Vgt9Arћ>,Ӗ+-ՅkMQ8́8+4C`1Mۚй)v$qM<~=gO@v^ӚPއx7RՏT! zg΄7ㆹF(8U?D?6 X }xeLտ Uէbkcw]o򓧤)t UYK=*sGE.q+[Z{A,L( !ܝfsEsuwM35CM0ԡXJѢϓC2?Px42*pu8nj?IJo&ou9DQ[0 ~` @h, #-7T^)0dW}@STݻQQYsL& n>U6`X/\DDo`#_ }=0*v W qJ,59!LpCI?Wz x)ݰv"Ǔ,TzR9BdWM_d)r/]iGg!Y/H5] սdclUq=EUۅG QtJSVI>cG `WZ{_6S|ɯ"F`jқ{ ԧmx`dE&8٬:n -r5k WhfBٳ7!Ɋ&@{#vA(DZu)&}&ӣOd%YjP/k.FԀ>bRH4R?\VXA8I34vp rX X['?]NŤ_3G:eoxqcKN5'W"5IGvT&a) 2r+aE2Evnfb)?ijf?c; ! <#0ˉ 9c D}ͯ6ޞj_$_F'ԇսWG"򃫷N!c5aWYtulfc`us  #GA0U1eRgBLr~4:O3 q_`|Ni"br>Kܗx c _v-)_0ta"0 {QPCw4 h!0B% LR8ѯ'@ qӌڏ0"]zo'hIO%FýU6gYA$@x2kjR{WԜOJԘ~̱6'O)  E+  +Ul 2Y]ܢl0V0[}K=M#p&GVho5ixVz AOKSPnU=@!B᳥+l1 ȓ] 5o"Nd_(P̂уp vlȖ:@2zƘ36jGWuvKaŚZ `2I [;$ey.&IYǸi6Ie#2(!{b>M%%ŨEg[A3M8xBRhvND>]|:0gcكk;bK+g SO?#Ƨk`)B'mH+PƵ :I8Y۷v)JW]&byyd 6>9H23S Iyo^)@}k4z Q?ZА4'+Tpv |',2![YOE=%JHkqu0-`|#|\&~ #y{9U3"=%0/{&hdsT|wQ[pЭoQeyQ5{Od mjnDʨa/͋’LǓ_!M~8lͤ|  B1xbw=-1 æHwE7؟֍ !&xl@~@[ y)>M W)ٔ;rASY>aуf@5 ]MGgap&Xy 4#EKGϳ$¼;EE-T3\?ؠ;>[>=\WiyCh0}(y_ Fе4r! gbFȰBOD`Xґ>`Pdzr\"$]˖蛷zY :.;xJfNސ^v4'r{ӼCРdýf<V0NF{\ xqK P󤡣EJYl)E,&*p,ʸqhcvhJ߯!u!h ;@@AEs EQ.a`+1`" P2@Y;gMvn|lCg2ۛ0>4/&ДYrze㹱{x)V+cj|9!Ww `%!͞T-~foռ{ZS,= $,վ^X?D ?K4('/уH82B (B=˥Ft͑8}$#~Bŧ1`I22(+\ya%cJgcAAೣ&ZEo DdPK5%`v{%WrqTe| O j@_d:'sR'H8 8\ '+=adI0MZp/˽(\\ go} A Oi&mn+p 8br n96 0 )ꮅQg7L|qX '_Vo\s^s|E(.tKcż!Ä{`|hA4U\BuHV2 I6+4@[?/7c)Y/Թ :H! AHd{yV1Ia2AZ5_@?I]/+tu${.fճ_V_xBAoڟ{:`HP(G@v0RP &LU+4_8GAX0 u itދNL9a@0}.^Ѡb/W:b* [K6~lo KFؽ@TqlyGٔfĀ뮋hحNl%Se~7 7!={3կ~h`lcs%kB&f!yB暨>%#e *Yd#-AW!`ލӉ;z:=MS.]8cysu'{lBdzg{d<#A|)C=Ηs^{$S}71(}9W6i~ϗ#E!;G➺( ϕ&>yiUnÞu/_*ULpnE~'˛l(YFdh=D89n ai &zo݁I0>Keϕ<ّ\ `G EC]G{&Gz>TE8G@pkؠl~LV{p`O~l߿ xbQkQD/~@wCdG@Ln|,4 pqCpico>΋XgתM xW7w>:.G͖VKo>_7LP칔1 n~c ?D_= "FL7xM~DF)Lň7b\HnP>2 ,=uП?*.jwQ@-W;| /|TyYP=q{T~R:K؆*Ya R:$(S0JשC z t "rgױ)<.52 i9C$' hni-Cja^Le,+*=;\ o3Rųt{Ҩ7 EcP;VqNLxoLꗝb5kO9{hd.ж9^) ; Nde .Y%:/tq)I@FV  = 8Ƒ<"k e@r~ ]\̒P``wYϟZgjq_^X:{$ }_,PzH߷t%asu-` =2̒16#;u̇/WkÂPЅ4Y7ZݳXU(i f giύ380] l!DsL׌wqe.>G .=rc\my$[U!_13Xm]l?. ZZ{zؗ>4(($>O(3s=aRm3HV4 .iҸ`'ܩ3z [\IA|IdbIVs^Xh_D|.>nirux al6u0o} Jq yˮ|?|3OڻCxxլ KNT 쉑Z&d&k7\Wd|R!"}2B;L2I"Fed ^ԕ$"]T0{𳷴 >?>[B8_ p;K:WJa'~'_V2ۺxo`39*7+4|t0<;_Z {!5g_EώU2"Oj8ݴ% `,] O#&`]V~l;x~/W?YfK:TzԻ{/qF/jMD j:nV?-4E X$gy>z"fUYAJ1) $[d1I4hVxfk-o7CZ>wV(6nv~8O% cJHlG+'v׊[= f΄1 ~cgvt+mv]gzϭa+A7c/7\@k>ɢbmP>k=@]GQ`xXE"r-f `dA_޳Om_1=Snf$p휰jfP FA)k = \./@<I"tJkbi ) y1J2@D5I2,5a%?[,%3$i.Ͻ 1iN"f-qt uu7h3h]t`Ŝv2JdLg1ia. B7ǚLaT{Y"X%3/?9C͚,{0r.5rv@MEʖ02E]97 CKAj4Vj02]E4-AuSeK[ZZw"NlNϸYe\ꂋN&{W' ;`(ن@NLhLXH/QBM|yA?^[]ܞ7 tŽ U#zsH}rWjh*&}<>X_oWdZ\F 2uv1h¨zo{+/ ÛsG Sԑ͝Z[FYƅ#7:FF= p̠ .vɗ{aicW_U]d/?;{v|[df[ '_Yig҉k  =*8])`7{%]9ahHe7eQD AT7/ ˦`x~ɝ}XbƎY>g[H~;\f ) ?jȀfI:42.{ǩ.Wde/s퓸+IBA~6E=:<>f}'zͪai:Y [yNPQPY!N~*vduE},͟TKG%察j[ ȆĎ# %u>G/fO*POݞ&TFԥ¾wv &<d?9V A wyr >Fǝ@?Y^ܩ; da)J% ̗\pCJ!dpǀQcs" Ď4N%+Xeeսkۍ(Ɠm `-cﳃj芚o 1XtII0h3a pHYs+)IDATx흇wTe?yI'; JJ *^0HQ((( ] 4C"%(~oOfZ^L2g{erf{k_{_w_˯W+ _~/%"+@9]4(hֶBõl˦IM4O˒ec'"T^] SdݶO|zWWJrr^(r9GK%۶l ?:ORXX(AAAo}*\̖9o˯e4ڟW"d$ @Ju>[U)DQ P/8sf#OQF ʍ7nx^cǎ5*qy)ʱ,ԿF_:&҅`/00Pm( / Ze\)W-xoX^w=ҤI?.jժrEU^zSmϺ-;Jd\A_={!CȰaT F!7oޔ:s]#_ܟ!Dk*T sCRVEjܡ~5m̂+W-Z$EEERJƍGEͳ.Y<-^*fػOz1J.ϒڄʓmd{qf~|˖I.\PS߬Y3MT*W,5jԐ!"sPGMVTP~XكAҳ}>^NzQY ʜ/CGpps}WjH YO-N=ܞtɑib~8S lƯ [~!Ȑ'O g.pvuBB@o>J2TMKJJ1h ڮL~)J(V8B>.A]ą·\э`u--:tXxǁ"_7]v)7nܐh믿ȑ#Z'ݻ FT ?X3N$cSת$K>]BiwuZ#@zK_ @;s~FArnG<-\4?%UZ7 Q&)Wg奧"wK>}dI!;맟~Rn˗/K TX Y@m V%S%H mdX lx8PkR-7-ˑ*Oñ9>>+̝:u#͛7O'FD "'NPΞ=[^z%G˗/W `ܹsϟםk?) ͟%j3<-M?76`~̐y~C]t*|ꫯ믿޾}*0++Kӧy`ٷ>ZȠ(g•% ZFE0 :e ;+y7lؠ=hߋ/Jcyg^Y?zbB8;ތ̔*Ab$("5 $2gx)kϲd9zq{_A?׈SNe׏[l`ϴi4,ZJ @dDZR%pJ-CUarfkDEEiJh`h%|Y^/ڗ.;J޽|!(ܹ~'CtYs˖-{\S֩SGqZp-/z?^]J oipw4nQGY)[~if[Vβ`IHL,%R?<9 X %{)ҥKZ UOLzu#xKg ¼7n,bǒ#KʁSa\RM?E ^ӯ_?G9&0!A[HH JVؔz[SYcu%$dHHoIZ _rf~ pH߉Rw 4*Xm$5.v;u1{̘12e z0ߦ(@ m\91G;Ƿymr|䍴Gk۝z5HrQRP Wz+qdD 8iY2ò!AxXO&rhZT8/*M8QILO̾(7^\ڵkk„ R-YW5ȉ 2`-re/xҵmj Ҕ+?)og)rR>%M <6L?L;=-!y4g2M <}X{( nߔDݻ;fݶ#@L ~&!^Q'[CuJn_-;P7֟|V{;2~;h̙|O`kر,z{O=h[[n՝4/; r K=>X G梒X#PGCF@\yT0G %;:Ŋ ,@ ҆wG8NoMM _NIhnh&%$Gpz]nbRBxQƍ m\@5 D΅VϛLL%L.vxdL4 ILLUط,eFh[y !ͦYkDi8[-S;XΖj f:ug?T8x|1(aox 0qgRCkxH:$x#ضΕlصkBANgב1Xb.|3y=!_gΜ (9,FVYRՍ% /%hypg ',.jZB ^|*B?+ 1fAl~½G,tz;o#(\`y9w{x:#<9h )%i i&G)0ԣmj R>] )5Yݍ 4` N0qPԩt/}"ԩn*< #d7N+AjwmQ~;х|qyQg73b /aСRcM\fRQj<;EO(y+@ċy>8YaK~3!]Af7(NvzܧB6u`#=7!~0ѓ/p'bZ x&~ X rA AV~Xr21k&%j֥v3ߥj1!`C_9;^872^eIJ- #Q$3l;p~͖%IuHV|7D y?TBg@%3i!pe;A H n` m+AS5CN(y{aհR;mq09l,+PR>|~Y+`\K?Smes}j-`Qo_y=V7(NM_D糵dl0|@Ediw]ZJѿSF\cS#gL|ѾGvxv$AĘH HT0+BĩX*J,m,[ψ͟W{ 9p`L+ _c@a( Q!xlJ2x68ZRHv.H枝πkw3N6(='AʈW ӬAxs?j3l%rRھG`YDǬwj"od@ RTZh`ƸXB)`|T)sPkC. \Nw}Vj,ȹ] ߟ!TN`/qvL@o`ᑖzkT/azB 7D-eޏo`j Y:, Ëj=2Q ok<DCi~o(`~2 GIsp "*<@fLQ1wnC=1U= Gw 7%C5n]jFz6dQngF"fg$:C 5?’;sZ<ھ]i!V_#b;3na޻Z~d$/.աeAnAܞC5 η 7`GS0?8еv9)Qh?Xdzy>//ah>9 iZ p~Oe(LlX[mWsxS1D+y@k K*u蔻keZ?ۖ6;}FYmv4D`2F\CPH^HPrMU9+>e(0}|ز0Qr2lTLX)sZ?lEQ0ؾV8IÄ+F<.BNT[ HPN ?,NR93BE mh\ ( ]AB{U <._%i/9Lbh(~{cAju7`)E1MMv@?H[ FGkD>;Tر<ޱv+LHL)n"pQ `xhel<} M+|} :Kcaծv+0iH mGܐo1v7&IV(cK4PXB % - ja 0 \UIq&>/a`"ŎoL :5 KOymwA+U#Gaf"eIVlRA̝=^ApݦT@|BYC0pǖ Ǒ1F p3^C]ܳ VD?eY'(r<2<-{y׭}8.ܶ0 (FRA|98 油QƼ`O"hR?X2gz d$x%o`8SF r@Ɏn-.\:!S׼K嘸oV*4A"; 𠓑20f8?z <݊X( <]6lqe΄X @q8`<ZeO+ߊ5*cK\>Ĕ٩f|(S@ >?228p=<>spM,P/Nl>/+`8JS [Z ZEJx4[9/+@4 # }Gd[}Me xҐǬCo(D.) %MN)h #;V8C;X8Y yϚq:K @U ܮY,9Ok޽yD[vb`&fFVPz Y9?QKL HO,XFA H ?Ofj=p.[[iWo3Fu}IՍ(UK`ȟ/Ј ) 7 ͩjyd3}p:c($l!ԫE؁Dbe!V'g_=s)WI.#^TZ+Ÿs C=s9XC2#v5+Xvnaߐ{6 t.F G}ӳh)!qRRVS?/ 4cx6`Ap`Isk/ kB vt[Z 0~vPGr !R`OIS<5%Wbޏ[v bec&hcT ˺-${Oà Q"K޳-k==/̐F#|xXe 6lebf!SX,qmc tȍQ>Vp:YA*)b8sq>q`U<}3LL !.Hm5@(^A٢ˡїW]1T=e48Z?˪{ԉB4G}895lyz a3ď0( {|)"p~vkcg!_)ӦC +@9SCK d sHA)Աq4tWŠhj([tqqP·y~1F:J@7e+.hT>p|`^Wط!4qsvtgd9>{pM"Tɟ>} 1^ܿoJT.lzvzQq7=wK}TQR~5(x<92 4|مN"3rn^㽦&U[ʽ3&$knp_>6'lB~L,Mbq([%ժd؄= 9r|^>xf(JO`Ofס5t(zQ KTl-yg>/|SKcL"*g,Y!3wܧ0T`į'X9%H`40(@Veܼ xUi5;bpV x%3ƨ Ҧ̷%}ȡRWҷ:yNlL%D%DP8g<J6v`s9mIꝞ/5MZˏ 'zdeO> 4à"NfнM\`c:Dϸ7J5}a pHYs+.IDATx]y|Uյ~>r9wo!L0 2ZŹ*8CR[ VĈ2h)5j^[֪֡o}=wHror #$5|[ץ7_뛻B7B7W7W7W7W7B ҢXoXϯWCnc8x`Zb߼w ~Z7'!J=Ľ7M"AޡK嗓5\Cl'b m#)wx;t޼u@ ".hAaZ1-acM@ky^Cwh<μCsT %dQ^ %n^HJڝ'_@{ k]r?C{i=BƸu<d@`h6* !pG@(hZ!nw߻Þ.: H^da" a"0-;_@nPt 7P- #OPUUFc0xG1wTF{k`wUy،A&T4Mㇼ^\^naJ*K ͡",eJ$z{.*yпBb]C nQ)%xmwa?v(SAU+%iKP8/"M5^``TF=,1xN$3(OjO@XoΒ4Fo` kdԳ(Zw'M]6_lÂ!B8ڼ7A("0;('~BAHGˆɿ3S ^]@<=L 09㜚DxG#~Te2̽Wl \S%0qSr&dIpp=zKڱSݠSl>Uw>aYNͯ `t'ɘ#mLl2`c|ޏ04y1QXXP`MviӵAxսrqgU6%N:p ]f+1;  J"{̕H/?* p!!ޯ(먾oږTkK)^ –D"W8G}Ƈ)S׃^MCNO:ŀ"U7#T*upXrC"%2~-).-"V`AriF6]ywګzk ݆'0 >Lco'8mƯM݊KblA(--%%%ԂsB}3<  qWxHxT&"q\ٱ3 zU[k&B S &m1~B .= \e4RN"O*n$0>/DΤxPRnS`(z)V}8ܪ+]Ҟ0rdQ'@HEɃ|:M$`_gJ*n2+ Lk⷏X}:=ַR߿6`J^vX؝֪d@;z!wApM1NND6(t095)|ۅ TsXٹL:r@@ba)A^kw/kH~]6 ஡ߋ$ Tg*#Y&K"kz/p@ݟw+QS@V㽹{h) }IFEL^K%{. c?<6D 9c|lr[N.CI9M LO5bk=)>~L|2~/?]V&4@}܏%n }-`kc }G ?(ͽ?􈓨@({-4߃ 4K? Un O>T8L PM*[yHjHflCI;Y@\yd,=ޗz_k*]׊["|@KEc5pp7*ESc~}w-xAA<@p.k(ԄIuQ.H2 Z0 8=__`u*d(ĈNѩ!I3Dt!BtJ`? S? J' 04F`yubaTz~ݴ*Tԓ0.sn6jHӚJc`m&TBW)No!zM:Nh 2GD`Hdu +46isbxOqT p>ȱ(Tp-ʿv;8Gou ,uaDtɨb˳>'Xhxڌ&d^2 `@2Bee ]\QƏZψ~|2gçuk)$4 x1J\&0-sD\`2Eee @`a_Gu6GHYa3>w`䅰R xpour2#/_5Udz|?ցm#)Z*ABC.woLf{WVkpZ:7<[]aMI, h6-6agϞ7n$OlAz5a6eK|~B^MXzz}8 xhxޡb"|nf@x ̅F(niͅP^f^hgcD{ Ox=qp2yb@/U;}{@+=5២ȊÁL`(/0^Q\TZ@ w("0'rO`!i| \@FknxTWk)UaQYs9חd'a}XL+bGrQc6"cǃO| #,s=kQHwRiȲ.GX7K90g\o8!.ZC+Rw"8(MZv$8X0k-@uj5tz4$’ Gvk⽞S@\ -  `@D oQ+`)_!C*w2X8 >f-[1/~^B 7߷uH,_due;+)DLй7J {,bѧ9$ o\N*+ @GyxsGuP/-+ORJqAq6dNi; YW,K@$ҟgF$PvC $t<5N@=!Ư* kArOFaW(x.la}94jTGܞXLsG/9Gc,z"EyPxkxPeN ɕ(&0#}%`b}t*@"i/3H%g?Zt/A`~TRY vpsmX/3kbdOR- i"!XTvM4m1#B\ǐ@9UҚ/B@@VGt^rb:RxL@`($YArCq0(l%ufٵ7-f,BUfX37  (F@5/m/5 ys!)4 $u>g0|rCC:?2"dQk@0t+'I=T{)^ t/ 2E |oǍi̚S ;% 7֝Z \\3@h1$PNPrNQS'0A: /'!F\L scF p+Tۊ%0I`(6 \d|xC~M\, V9yoBX9; O& Ce|?vfL]E!Š)q5=QL%A @+7G7zYI@ل{?Da|}ڐ_J ;&y) C>$r+r 'l3 s&QZ*[Vv # EW15o6A6s[ XCa)3Ei |}|^9nqτQnaI\V@xFf||\ =<< bmu9Cs"0E Zj .tZۘOvpRUbp->U Aq-ߕs&%.$N$!gu0)z9Aś$RGxhy:)c DW:>bu`] E L\xݚxzkL߁ћ̡0B&`e|-<54gԸk4Ye2TKN܁^o"?Ngj28A`Jǯ"ӗex8P>r q؃~`WU.,.>=HfCeGk a$ ̔(U(Zf Y;L|I_^;'l%)/ܟ)~枘 N.`vq` ёHӋ>5'DI^m\KNR̦qL00J^TE1!lTd83ޭ. sǹץ)h${n S83q5NGGs5An6$wd@>'ʹ% nm o;>% $4h5NCFrJY97Txϻ{ťEE<G5u [.Yq5@Ӥx4dՃ=\[jL4"cfQB9$8Me'd(׹u[ QozW/Kozɻb vq$P0vلz sC䜠 z>Ѫ@_!vrJ>./08H#hym ÛUNop!>ͮnG%*|zg @%t抆Dėb՘W@c.;_Q-}g*KB wckg0"@n !Նrqp)bA' zdu\)}_NeR#rq·yZ#>KI^?|  H6tɭJU%hC #0 nI &\ROC],FkX@ebYq-2}e~qѢ${lBwwljw+;L !$yA 9BOݲ9 Y>zߐPΡ]! A`pՅw]ͬ%yo% ?My5~E.PRl_L<^%5.DORuSZ@؅,\"W@lf\0GЌ">nAɄ}T3+ < )M}8#q97wjg6E~=U( CrR5N uHC:qC&0b_5{C J{ u\dyEjʴw+J>ݟg>\]'B>]6 ;plŇ<_ߥzbЛ/Y_PRPCP= Fd i 4Z\(FBӠz`jzQ ୑X9ۗW _)ɞ=JR/ԏg0ĤΚ;;8Ge@ʲRG]Dn$FԃBpE\.շ dMa X;ϟ+F?uǿ8 "! 5;0(>Au%y;jw9\qcIt;,R8&^Av1 Πar9:ӽ Vb&ExwRTƟhCdUdXWg4>9@zn振&f8* Rp'Ǐt͜w' CcsE8 ="aLuNAfZfV&}0ܫ7 2 <Сj""G7L2eQF>pTS7:/CK{),@g sZbPs{~{3pIK~xg`غصP-|.xOKxG}󆅮 uwc62݋` :Q-1xq;DwR`A(/ԸGU %=;vCP=OP/:E4 r$1 |:2j%ۀˣ` h 8a)@盔W1{o0Tǿ<)&p,=OJځq豂': 5sqxd3HDn{ИW0?]j>Mlqbszƀ(<HfuV$xKl>0 <G&si>9 2(spUA_U.~zǘ. Y/2 @VzrhyDbw{DRi`Q,%CN Gʹ4˂b 'pTO?ø8`dŋb<Ġ*6s e`"P gS:>t0!zi(l V#2g IL_`o,7_f@ SƸ篕&"7.g /Z@ Ξf)c-091ᙲ!D31R`jghFY~qZZg|<n(/I ~c2~~pd =\7(qd@B)Ye 6TI⩵@đ֢rRs_j2ZdWJSwT ŠRߣ @qB`&%IΰzuYKm<05=^KfXLа"QJ7w3HCc~ z(Gk5-po3wƜi$"Ho1$A Zp<OD/]"6/1?? '0OAVb5mw(Jj ^)w?=L #ZbMk\i$r0xKRy Hy~ t;JlSc?ue@ M{XCP0 ٳ>7UYiF)(RB.%% g ٍɠ M5Ѱ>ȬDO/9g<,bwpw}բ-MY.;_ʼd%Ik-$Ġ~+`$ "ʝIa>%\b*JL]C(IlA4E~~&.}WW.N0xY.npp_-Ocehfſ7h…a5b=c@M ` l2KI3 ^H*.$Z0>xFcjbKĿzx   h ݜ'\ DrY=|xH HKYA*%/+P{E;IK &?W.7 =l1ܰoP 1Wh(\=ЀçCK (M00[8^J'M!{I+z}=t_?&l1=7!$BCR(g3sQ>UN+ sA)֐ rbnޮ`چd^=[7D'$s;t8JiH-܃KA=]8=D[bZ)C3?PΙXgɓw6u$a с#3IAD[h:`'=yctۼhY?u}CH쾯oSg4nG 23&% z,ˡZBXxVx ,}_tlqdjhؚA힐{{ds9|y(SP={:w\ !OXByŒ- z!{(!1.1=s92Q;u;؁pN>S JxD~/i Ko[7D' P(g $|_Nƈl7 @x|높IMP/O;7@J9x#|Gx%9vol_7ҝfv`8t}XD#N TpA @0C;Plo H'K(QD?:l_7o LD `p!UԥؾnOX3i;` @ m vtq @ޕKntntntnt/s?=Ց>WKIENDB`pybik-3.0/data/ui/thumbnails/Brick-2x2x2.png0000644000175000017500000002227313137372554020777 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+$mIDATxyյs tU/tֳ/ þɾ >*l&EEKD"]ThG dA2h$/1їw~VWwWwWwW LOOu=w=n|ބ g8c.1ƺu U4G!{v>K_֊ q@,(_^sÎ:!g[/`Mg{A-OXןuF`r#4>9l<%%Em0ltl޶m]ԅ@<nF  B~CcCr-svy*FiXhTG! Mp|4K~3 lA9CH~RW4ԣit~AXy|AaE3MLvݫ&Tz<RͬOndr Qfj\w H0ڲI' 8&IVxA@zALfe7n]X#ZjϧwHtnShXHfɬK,Zet~׮]Y}^wwt6,J5)tMH:8MGQ_L(%Qt`SףC-*{=K[p>u>VE3M+R9 [t1zFE6{(Eq~9}q*m4RtL5Ӷna!p7J6"JѠS?;hJ _9ja@SwATs bCR<wF]je*DQQs\J?7n8ҩ(ܾg5]%kW*Kbr*ݛIFt+Rm1yE[,u0dhTFAC>F3]'t:Э[7VWWǪYaa!V7 }c/ެҮgPF/3 5GK->H[D#j_7U4+K p>"C^X=TCznhu Шq4O|fA2_Ĕt#^o&}a;XG8D$d {f={d?44 a!GDkT_Bo2V#Z\6- %voQ~/̜n*E9o߾O>| Z#K~F|1܀`f!q]njՌL=\tErQ*N4 V\d9U}S!uEݴ5Eʧda|p"AGv aYoW:qlyZ@sYzDFq Ox Ç3giBj +bDp)5e2@ cf)E8!m%C%giAf(0!T<CAAAn(=DJG}.u[ر_qNF?]}`<׊aر|@w!^J5*Q=eeT[S!m%O͈RN!璘t~aT2 DF0~x!u8@i͗ `J{#OWEwO:֩FmݬR7DP(M1O F![8 (I#"L87PЮSZ¡ɦ-ϲ|]DCU6iA=7 avf; '%j $&M hDk;87=DQ(?TEݗ$ R1 ,">ztR3|]ㆡ49?܎2 MdC a 9/knԅ=DQjBtyʨ·}mh@ՋZ:H֎$\<~>O;Z8rr|@FQS`6m*^rt?P|'JIa-Ѵ ]h9-B9ŚlTڌ3-D#`@Y_b"b@7h2'K:uS֤(*)iΣhBB DQ­t#Ku;iw9_/@n(E*腦&6o<~Y(>UاVlM!Zr/sP Cbz(--@RfQw97_٬a|T^be"n|_Mb?v{h7}a{yæ@Ͼg UV#3G$O*@pȀݮ: a`-&GDRiM%svX%bF?Z).{ZO.,q<3efA0\,בD Hu9MZ]_O8?|O{z#p_\}o0>P[@kyeHZR/΀pȁ&|O(9L#d&aԋ/9f|NvY}Uo5# l,VXbj+- 0\fI _peh 9;~ {]<M<"b,#AUlDQ歯U>cx\e) iZ)@LCzAΕ"L(@D΋׹݅I0@< ^ yslqQ K?RwebpU@/saSJXQ CR78^CEq>ʼ/ nԜ2 & jkI/,1E kpXNE@EN#wB.eS{o*vM)p׎ R ආH" `w06v~uG;MV{!ݼ]~מ,2l e%w p`{aL(f: @Y󤐅)Э  *`@ŧxHfa@}bU%q}~ea8&  >ZzFr/Iq pRIq<VKzQ+z!"j h@ `@2<H0 ؕxtu}D'Ul`/%;9' :_ojb)}Ā "Y+p-̦I@uhJ*#DA3Ơ=kF6F&t_pG3,MtO@Ȼy;*UV]z ֶ緭3 I3Q pP@V#|9` @[f5`օDIG6`v!G92Q m>ImN@~T[UxbOL|rݚ2jl5HC8Q4EB°\ I/x吅)=/۽}@ T~¦ _s$ Xߙ\U1P 3wEuOj1<Ý7_-gϴ"9P{ a+lHO.Y]OG <=À $ mlrBkc97iZD!y?|X ~5=_8aiS Y2FaMmmkR@ qE)X Nk@°zRG%|v, )b`*ۇX_ke_ :.{|x@ [}{OcBKM?)~Р@x8_ "]+4Dj#@@{<rU#OB8_DZ|du NFV(/p(D6 p1 1RΡr^H` HBb~?ZX-!J/xnkuR5|5<^hoW>ݭXZzN`>\#g%Q f BФKqH)Sz9"ߑm2o,,~)]oOWn[aߡ}62ArYi@QA^XRz1*NV.L2P:y?Krq62Y"0ȐL h.?P!^&9$ Ĕ!Ѐ"[^,:bZ&SAEF?9"hSu~VW*IpC /> 篈@z =":ꤸB0|WP4"`Y))%SL)joo_<.E<}I:`Ԁ`C̣bƎ?g>b& Еr(`>H$C&N fI j}y7x+Xe ƕZק*#J @ qS*n9{y{aR_'R+P_W%_a<*)p8  7@z!P@ȩBU\Ib}>y\Ir]ىE!B%?3!  Q(«암.,=XU{-{x[űQ>Wٸ)m, N^&)GAN?I $+΢tZW!*kI~]yCkez2f];vbyZVĂ xZkċ694 mj {(W&7ʒU%PiT#xY)aյ~<7P-1{hWSݠ佨j%c.lőc+w·-iR{} ?Sw^,f.UJ=,u*?soTYĒ5߭H zycPܴ;m YڟE!w#"^?Bьz ^OZ<9nc3!HPIT٧^"a[ң-#|rH%DBEB . ` UIU/@'%1_3/XEZG.2w*ىvK;J寒B 9`kعС Z ;e#pMMہ yCHhoq "z_!Z2p5g$pt IܠhKEdn$`@&$E]U8D2uZL\WKXYi 乽aKIRIE!FNʑAX+Q<O@: 8p#R`Zs"/e?b7?e 9Va%; <*&P>P,r F_A+\7=&CcUM?T = ޫJbtU\l/`>*>%PnTS4b#']@b`Q7XzIiݙle.Pr>jQ嗺& uUƞ}T(=- x*yXlAш( >*SD:3Dt"1~MYԻΟٓr1%'&ߝdޖzO@ D# <?!S8,X Q8tM)!N<VjU1VtGq>[G]!O;X\= I=6w筐A SV-N BYlZX,>RUK}}<5X,cͻ I פ'@q1"0=@?vY)0͊]`2KEptg.G, >cao?iy< Ho)߷ПЈ%@& ^pc;xP`#eEj/0 罭VnF7ԟ57''c!Hnr/TX-hdPS !0mN9d؂9M3:Sjm#@>Пc"`:Px21rI|I8j ۹ y1: %IBSLR7yBe|C_U=Ԙ. , N23X]B1c]?Y|oۂQ{eѕwlMOO(Ϣ+zuG?l%ǵ!53@Y޲Ap#>xEԺ}'sP@{ c mؔ.'@MVjz QR2VƓsBPr |#Q!d 0Vgc_]3H#hC`LcCw3! 'n d ȏ .DDjO)j)5x-|69ĵPnz,TxF\3!"C8цS޴2ާ t! ꍝ #X(:DLZVZjgO8J4@* G&%u<3H4H!F {ЯuhN` #S$rz:ﯜd_X{l˾ټ.?iBlxwQQ -Zcst.D8ydn+7Q`!PP7rjP П ]p~  `2+ȼM(iemhD3+j _SyI6Qkl.2'{<^C; muOQvB,]Ai؎E.T4"[@y|@T.c^̅Eb۸_qs|K6(ҽE]t. F5a֬Y<:@;iG`7Ǽ| ) MԂ|B!N8^SE,h v/OGTb.g1׾yǣ2|Sa̠{_Jq4XzNA"jnYk6__7&Uw^25 ɚQ7d+q0\INؼmۺܞvhxx/j=/G\$+c'~ug$/ Ƒ1&#0K Jb5z(!9U6θ8:a A1־CS6AJ [׵D_Q ${[X.NYIT H0%aã!Ol'1|é3 ⧐Dg)oX?+u$'+QT+TXl^qM%]#ϲ#gႱVp2v[(ڂFG U<#g%q<  fA߫ׯʚПơZPJ~Tl)-Q ?+.+w=(IJ뮤K!owYy\) C[!]IJ @KQm1B%aYN 8_Ðd&B:''@=2 k-j2A!ϟ)e۟Fǎf,C$;,YDʙNݧ{2{C @Da3C2^668@6fw?ӝ$bǑ3';/`Gq‚1 q"`ܐ+"X+M%~ y5)B-.YxsBxa pHYs+}IDATx\iUzgԦ}izcG@[EdaMI#x4-:aiPAeq$sv$rҙ$'gN2|]"',xNCWsy{n˭ ~! ID@ D@ D@ D@ D@ D@ D@ D@ D@ \$RfLi9&;GH@7ި=koo3'E ׸@pQߍ/:b1?(5Op kr߬'ď!RW*ƵϴIdos[jugJI2 BHs{w“J-m"/.$3ZU)Ŀ [ Ϩi!ǵ-v;"oD ]K$cge -R! za Bq^w Qbr0yyYH%^5J" VZ6\9jzR!|aRvO0*sqOs᪒_TR^ mϓ:BBO@xGJO_;~KO `ILctlAdH WoB (vaK=™HO# 7ri? rgB0,CX0c.4QQC>)w5S>vd1M\kኾ];uw* @ _B 4|Ϻ{~+EKGr2!iBA:` ?3M:i g.k`j|礽rB)^B>W D K7> \, )g7lilV BAu89iMN)"Բi[ U׍H~Sia yU7mrTq%C~~|=Ɇ|IqWލ4 0kr{na&I $tPC* _y8Q/Ap[L%/K%0B..Kli~ +)L" |s#KW 7Mq,ɓ((#Kχ<@Q?2N*Aғ>W2}S/Az{?"G==¸˹b8pɯr|RM+u^i99|`cv:@1.K=GL58oCxن VGM W!M1~pl0a?Ukx W'M\j7lf oL>?kA''s;B!ZfYyø d( *Jj*My}2Yl=cz "n uU7%@4AqC$AM?tG"s]*R B_ !x1@Ǜs' O8r TEfJ.){뙛 7O *Q sHtbG!'N%=O{ރr@,}ϙQoLnҿbr5Fp[78h1LC^싐>*0B&9J=>B0u(t0{HP谝i| G"1xwL}J6<ޗH/i~}pP6=! pbKPw9 8{@HeՖN$LwƠKCG7Z҈6Xm97!.wcy`Dw2cV.$S hTEq&P(!ؙEmEz]UmX*`ށR1B[) uf ?8{nV!\MD;e* -SϓP(dQ{1RሣX"Rs|b(7^lSZkOwtiL0%VZ[VyxlK>=;1{MunB~ [c0sw .Wq)\:MT1g 3M6ZG{B~hq@jG!KMKxf1Hceyq-m{+ZLxna`~{ v6žW'Y;IȮi{[&uC>CKiB Sbit Jfʠ:!?c2S&gHmcDHDwY&ݦ&zi[ i/WSp5ߏ9UgZ gtN`eYPxx*\SRKY%:]G!*g!Is%~ wț\fa:O#pB`O_3$gjaג;f4dRՙH/}a$bg;U Lsj3h';.ngiso M@T fnK;g=&{KxDIG35ғ*fI eA\!EQcC=fHt2@nNi+1bZߗ+JLW<¼KvU_ (X4q9?Oƍ?d2-^Aa\?O*MP}9dBpHG6 a>laM׭1*|kk[ +@vmV@H6SLْL5q*d3o7gEB LN}'ǟ*c*ܽWH3NfWLSo5ǵ~~׬k\pOQM$[Z50k_f!ET#vGϝ{iM2dod :v]_c+Aǰ>aOC[GԪ!ufo_a~حf ε5\wDv/?y0:,{ r[o>|S>?oȜj6lZrp߫Kw&"+'CT3PD'<<:7ӎmi Kpm(ߔ&Ug%лŗCݳ9z # 8[@^V@f}l´C=pSeL4 %%<[ػwo՜dZO¶XX? c!&X0£IDwo"Va,ߘM3ʁy:E 2'Q:ɧe#RX8WߕT^L¤ǦG9`ȭ.B䱒Cl 2gKhsnPoEp1~酽f)E#JA+|>nw"+D6OĦp"6 Fq~ G8KJv:=h. ?B}y;ɯ+5g^;5:5NJ%R,K}}:cOi?ª>C$asa HD (w6}X͝Q~%sx=d}[!P0Pެ9+xLy$ӚD"?rPdwh2͋tp;:Ya pHYs+hIDATxyTTWn*@P!3hiMOv8qӊ8d0qHbQCEA3"N1&oߺŭ[~kQs*תwg}ӤٟIɕ$KHI$R) @J %HI$R) @J %HI$R) cYޛR%NY|xϞx(XZ0c:u(XhShߟiP_hPP_{BKu3>E3AϴmcVmku՛S o0tePg:"`;IL Nm6uhy¼ Q7i^Z^hڰT/ %%%tI2wEVa;~+x%:?Ǟcfb`#,j^}.Ur-"fO8Nrrr($$AgnqBLJ k'NkL=U@B|.#ćR7$h!(,,$}wl$ Xxh1OTqG ݽީElkk#.'R>OTvm>9İv8yG*{3m1Fxc%TO'ҹv󡵋/TnJv-߿?)4&!@x Q+L+g hSEaV @5kڵܮ\b|#"´^Bo`DC`*8RXG!]}WZvß{S ;E.CީjVŤӊ(44|}}YfH ԴiSJJJb=ԺukzgUVԢE =Hjذ!5hЀիG~~~P}=97*9<"f-II YĝMt縻q[.zqb<_POBo h&#**sHߝT@rGJ[?__^xpuf0F@| \$ׯ=@S@щ$լ׭"kڵcԩS?G5L}4d4l^L\JU,Y @ǎA޽Grس?r8& ➘*~:oFHY:wNoһ?_|A@WGIwiSV 9(%yiS& jVQY;2wNC >z(L&a1s65ӼSEN_;_PQkx@ hXmK^ @͛7sO>tm j6+!oL"P"/5+'֭K7vI3<-yT ozƌl*}o24|W{"ȃ40f~8#L4=sp|]_goKCDPͺmw襧(ի M<ҺxRDr0d%1*ɗ߷?]ٝ1$cH#TcKKKI&;{, 6v;Cy&u͞كy}:HPvdz̶hj`׿>>eYqkU ݳw^ Lt.OA#hpxz:J󡾝20tL"yGo")H ܹ`ZmN6rHӯ7 r6hv4D(k_N ̇'o.6/'Nds^~*5jpN[)(ih͇- x $y9^ ;;-GO?(؇6,U\H[!ϟ5>53g^3fʁ$fOelUs̛FO}q%Ot k}`3^}5拉3%'3gZ1K`ʶ`6nҤIrP^c&c:HӯJi`~Hw0w͚5l|EE 4^p5X.@{MVʘD&jb2PWʾXڵ˻jXhqFs%Drpmܸq e'.FSD%.u @Y^ `ߠSu+P||<>}n.*:8p-tnxK!WP|MUr0/^dn(99q١O0!@?ot.#p:7}Pv .yfN|8')a Bjߵk4 f͚E>tY27S&4 UkM*{p/[?{I:H >s;vp`ʔ) ]L>PX D -|{hѫK9t0wӦMP@ N 8sl~F^9f P}"eSJxx:nL__Spp0P Is(ۻ`~D#]AP' >b>6GqMxX a>ptիwܹs9siӦ1v%UPp D6G{8/\SŠQvab ^ʆ8-ޚ@Ϸ;_~K(:, tdcЎ:Y+?`0A0}>fΜ a5?:[ɨ4 h͇2V*xGƢ!駟a(k&vܙ B>sޟSݜʩF^ sڶm`@1(kSwF)J:s}>?@|QOkVmz;PwLnt#3(CR{=qqnG۷/lْ>fh&RxX -b 8y>.eHi[JJ+N08A/pBHW$ˋZ6tPtN !]=O`ʕ Wg)|S2( sd[5Աbk8AF-++! 40?Km+JP?:i0 عӪC@(l%`XPT-CWn3?şjbPpd%W̏sou6n`&Ǭ?Tv ?:ѕG(wϸ |@%eh$?]E`^@#C"r>(j߾}, PTNeG8V4T1TnG^#paW#8UZjq6m5{l|x? g-ѫ0܇ D;>uYCj)an˽^ zd0W88)xL#ì'cUcelnhw_a`ٌt0\~ 'oZk7lpy|b=Dm+V_8$gG娘E\3fZ&xšv0[Ʊ§Nr@ 34mX _ױn :aUS%Q[vh7`D>K a,c>0ctMQ>ԥ.wLr^klS%x̵Ga_ F*~/PY3}11Su]̿'z7.fk PVڵ Fj'2s!jcדA8#FǂEIHxmr]N`=Q-P9ttz)%־|\IΪ5Lٖ]|!6X=P`- 4$bh)ԥۚ ͍~-*5WPDxo DHXf 10Ӌ~Juz [42p6bW̯@+Zbl۶=896-Ժ/]`O b5' P4 pj(*v0?.踦WuL3P]HԝCڍ#jCa (?jHcTܤI˒kTc~LKsy0Fx,|UB m(ؑS `8zŒHcw)-5@Jhq4p֚<@s/PE-_yw~_3`Hm(>_%::tB@ 3,I5&+Ѣŋ08pL=q?q`:x퐇-L5-+peǎ㵂Hھ"kk%O=?/%I6@J %HI$KHI$R) @J %HI$R) @J U,IENDB`pybik-3.0/data/ui/thumbnails/Tower-10x5.png0000644000175000017500000003437613137372551020661 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+8IDATx}wUt9F 9 J Ҁ$S+"fEE#$28>uftFFy7|ksmB[unu^;#=#H?4# H =H4# H =H4# H =H4# H =H4PJů9*}wF N:B=>2f4ah>q<=OZV1߹j}ߞ5J&mon|jDnj\j20Ǿ99q-*UWCҨG*RWɘKZ X0L.o_ա͉7a0sJ .@(yO+,@S s spܼ^5`̌ߦOk z;h:?tîg\{˽>E`X,@y'Aw<ν*Upv?.x/A~^Mmabw(=Ѱ ?Յc. M&NXw oalnk͙U4^;V4`K ܆so(F=*FWA=/)v!a½<֮CT[UJ4'Wޕi{`lb%<B0 v 0,6ؓdF YRQߧFB7p~70*0 7UرobTlj|‹IفH >xX W7(,WoA .&̻&]Ӱ-S>\màY0pG,mMy<.zÃ~xTW(^2/xU2.IUrsCs3~ 2O:E=v dźHu =202?^ S?#]߯`uH^qDBl 0A] u3itoIJ ;sx4)h6ƿgz ץ0Hw$Ʒ!}$\* +ɇqL 0 ~{#Op>#%XO2(ژbM!J`=Wty/:؁&[W*&;4 ª܇! 0\ KaStc8 AAϹ"0h0;# 'l&x\BhA ):b&L7+܏ D43L5ů]Lewp$is1Rv3k3j{OhCFC'a1| C\`r-37`)^)((,,>\1s4sOqyK\;i>QC7,u 2R" UCpFꌉ "`A|xy+{bx@0 $7,+\Zs< ,0‘iL^g c2Ax4c|~,=pMyٓ/]Cᑑ z>|ΝRh$ԕQfӐ‚ j|9`1X-xlPʹ^qA@J?5,1Ƙinƀ_Gy[}>%bNaq4f7̺Σ\R|9D!Yae+.57yvH16S~PPngp`:^y@j"r` Y%n\7@N1CX cy kl3|`y  XɄ10b&ޣT%1h|f4Tc-BZ2 dZڂaRzB " Bc'v$l, ;\&=E2O`[?٦k] .yI!6qLF] `АgqxȄL/2>'94 8nmƸ΋w`NE=i e0$E(s=BixlD4}j"H. xUEJ}Z04O@05$u3`?pe x}8|ҟjW.anXqsW7Bx5K}5)@y@Fa)7~4Hcosȟ!oaa!ƁH!CztՏɖsLh @lJ1}ι8I0>'ίf24@CG10\xf4~/͏0pσcf.;`])<ac@+;T{` ّϡ3 3(cX$#t?ˈ}fYgڨl%f3 V * SJEs~q`귿 \9 t ?M@iVP{4Ք%B&rRezܪ ɾRL~ߑi(}i0qfs=&+=ϗP5DW.aK\]X`43s>/R>&͞jvTq9s,j=52)Ϙ֩ ReK`,.\"?liƈ1BB|>&qT# Cze12곀沩)a8`(Fxܳ&[Xlsf ^ߣQ4j>kR;[.}Ͽj!/}p6Y1/ˣ]T2*.hU΢|ijFIʱ˶W&y2Cf}#6dQI9h!yukJ2xa2 ;21 91; ClJsm/D4&BdgjP3wА?9$E%gr GS((yN⍬e+]b2pd$}?Ux[Lϗ TRZ{ZA'JEwX4u=\ə |VT<@qRs1aEGQb:tvS{_j.>cMm0 [HufM\o`_jAwĪd(⼟D#H2cn溘ªwzu]=?šS6nbL2{!Qy LV /6z!V0LwSV`;O1x(i,a*c8Wt&ו|L[X I`w!P|H qC2~na=I@e3EaÅjָZpiPY3)66F檡P ccg9ws *O?UT }T9MSJQNjOXbxgje`=|l"زcs_ڃ./?g9^+xhȒ 00Pf)X~S3l 7n9%~~]*r_~3_u*q -UwKfr2SǴi0E# ][G'uR 曆9"?4pcd T 1d}z ^aW C \/J1ȩ*]B!n%q|=Lzan5`3 \\W5y~>GUce@)/Iz%ͩƎʵhT>m n zn~x9ʁp( ޕ&d߅ri4f.6F58]J# qqs |A˭~VR?/_ߣOxO>:(bk[z,WOLn5\3$=惜d#Uqj§| a ȶH!8@ RmGPL2'|'`&i)F.o$0#⺆VE>` 감߻)Y}T"uqD}#O-Vgt9Arћ>,Ӗ+-ՅkMQ8́8+4C`1Mۚй)v$qM<~=gO@v^ӚPއx7RՏT! zg΄7ㆹF(8U?D?6 X }xeLտ Uէbkcw]o򓧤)t UYK=*sGE.q+[Z{A,L( !ܝfsEsuwM35CM0ԡXJѢϓC2?Px42*pu8nj?IJo&ou9DQ[0 ~` @h, #-7T^)0dW}@STݻQQYsL& n>U6`X/\DDo`#_ }=0*v W qJ,59!LpCI?Wz x)ݰv"Ǔ,TzR9BdWM_d)r/]iGg!Y/H5] սdclUq=EUۅG QtJSVI>cG `WZ{_6S|ɯ"F`jқ{ ԧmx`dE&8٬:n -r5k WhfBٳ7!Ɋ&@{#vA(DZu)&}&ӣOd%YjP/k.FԀ>bRH4R?\VXA8I34vp rX X['?]NŤ_3G:eoxqcKN5'W"5IGvT&a) 2r+aE2Evnfb)?ijf?c; ! <#0ˉ 9c D}ͯ6ޞj_$_F'ԇսWG"򃫷N!c5aWYtulfc`us  #GA0U1eRgBLr~4:O3 q_`|Ni"br>Kܗx c _v-)_0ta"0 {QPCw4 h!0B% LR8ѯ'@ qӌڏ0"]zo'hIO%FýU6gYA$@x2kjR{WԜOJԘ~̱6'O)  E+  +Ul 2Y]ܢl0V0[}K=M#p&GVho5ixVz AOKSPnU=@!B᳥+l1 ȓ] 5o"Nd_(P̂уp vlȖ:@2zƘ36jGWuvKaŚZ `2I [;$ey.&IYǸi6Ie#2(!{b>M%%ŨEg[A3M8xBRhvND>]|:0gcكk;bK+g SO?#Ƨk`)B'mH+PƵ :I8Y۷v)JW]&byyd 6>9H23S Iyo^)@}k4z Q?ZА4'+Tpv |',2![YOE=%JHkqu0-`|#|\&~ #y{9U3"=%0/{&hdsT|wQ[pЭoQeyQ5{Od mjnDʨa/͋’LǓ_!M~8lͤ|  B1xbw=-1 æHwE7؟֍ !&xl@~@[ y)>M W)ٔ;rASY>aуf@5 ]MGgap&Xy 4#EKGϳ$¼;EE-T3\?ؠ;>[>=\WiyCh0}(y_ Fе4r! gbFȰBOD`Xґ>`Pdzr\"$]˖蛷zY :.;xJfNސ^v4'r{ӼCРdýf<V0NF{\ xqK P󤡣EJYl)E,&*p,ʸqhcvhJ߯!u!h ;@@AEs EQ.a`+1`" P2@Y;gMvn|lCg2ۛ0>4/&ДYrze㹱{x)V+cj|9!Ww `%!͞T-~foռ{ZS,= $,վ^X?D ?K4('/уH82B (B=˥Ft͑8}$#~Bŧ1`I22(+\ya%cJgcAAೣ&ZEo DdPK5%`v{%WrqTe| O j@_d:'sR'H8 8\ '+=adI0MZp/˽(\\ go} A Oi&mn+p 8br n96 0 )ꮅQg7L|qX '_Vo\s^s|E(.tKcż!Ä{`|hA4U\BuHV2 I6+4@[?/7c)Y/Թ :H! AHd{yV1Ia2AZ5_@?I]/+tu${.fճ_V_xBAoڟ{:`HP(G@v0RP &LU+4_8GAX0 u itދNL9a@0}.^Ѡb/W:b* [K6~lo KFؽ@TqlyGٔfĀ뮋hحNl%Se~7 7!={3կ~h`lcs%kB&f!yB暨>%#e *Yd#-AW!`ލӉ;z:=MS.]8cysu'{lBdzg{d<#A|)C=Ηs^{$S}71(}9W6i~ϗ#E!;G➺( ϕ&>yiUnÞu/_*ULpnE~'˛l(YFdh=D89n ai &zo݁I0>Keϕ<ّ\ `G EC]G{&Gz>TE8G@pkؠl~LV{p`O~l߿ xbQkQD/~@wCdG@Ln|,4 pqCpico>΋XgתM xW7w>:.G͖VKo>_7LP칔1 n~c ?D_= "FL7xM~DF)Lň7b\HnP>2 ,=uП?*.jwQ@-W;| /|TyYP=q{T~R:K؆*Ya R:$(S0JשC z t "rgױ)<.52 i9C$' hni-Cja^Le,+*=;\ o3Rųt{Ҩ7 EcP;VqNLxoLꗝb5kO9{hd.ж9^) ; Nde .Y%:/tq)I@FV  = 8Ƒ<"k e@r~ ]\̒P``wYϟZgjq_^X:{$ }_,PzH߷t%asu-` =2̒16#;u̇/WkÂPЅ4Y7ZݳXU(i f giύ380] l!DsL׌wqe.>G .=rc\my$[U!_13Xm]l?. ZZ{zؗ>4(($>O(3s=aRm3HV4 .iҸ`'ܩ3z [\IA|IdbIVs^Xh_D|.>nirux al6u0o} Jq yˮ|?|3OڻCxxլ KNT 쉑Z&d&k7\Wd|R!"}2B;L2I"Fed ^ԕ$"]T0{𳷴 >?>[B8_ p;K:WJa'~'_V2ۺxo`39*7+4|t0<;_Z {!5g_EώU2"Oj8ݴ% `,] O#&`]V~l;x~/W?YfK:TzԻ{/qF/jMD j:nV?-4E X$gy>z"fUYAJ1) $[d1I4hVxfk-o7CZ>wV(6nv~8O% cJHlG+'v׊[= f΄1 ~cgvt+mv]gzϭa+A7c/7\@k>ɢbmP>k=@]GQ`xXE"r-f `dA_޳Om_1=Snf$p휰jfP FA)k = \./@<I"tJkbi ) y1J2@D5I2,5a%?[,%3$i.Ͻ 1iN"f-qt uu7h3h]t`Ŝv2JdLg1ia. B7ǚLaT{Y"X%3/?9C͚,{0r.5rv@MEʖ02E]97 CKAj4Vj02]E4-AuSeK[ZZw"NlNϸYe\ꂋN&{W' ;`(ن@NLhLXH/QBM|yA?^[]ܞ7 tŽ U#zsH}rWjh*&}<>X_oWdZ\F 2uv1h¨zo{+/ ÛsG Sԑ͝Z[FYƅ#7:FF= p̠ .vɗ{aicW_U]d/?;{v|[df[ '_Yig҉k  =*8])`7{%]9ahHe7eQD AT7/ ˦`x~ɝ}XbƎY>g[H~;\f ) ?jȀfI:42.{ǩ.Wde/s퓸+IBA~6E=:<>f}'zͪai:Y [yNPQPY!N~*vduE},͟TKG%察j[ ȆĎ# %u>G/fO*POݞ&TFԥ¾wv &<d?9V A wyr >Fǝ@?Y^ܩ; da)J% ̗\pCJ!dpǀQcs" Ď4N%+Xeeսkۍ(Ɠm `-cﳃj芚o 1XtII0h3a pHYs+}IDATx]ixTU#ړT*[eeӰ{eQPîFi[J#F]v԰%Mcc8i{gfLos}=r)j$$r|OK=~9UGטּv X"`E+,Xa VX"`E+,Xa VX"`E+,Xa VX"J!ZzϵM]gg&|jݣqpuCqOs5FDw ީZ3-+@4V4:8]Sk\\׉{׋$L!^sv| )L#Dw(V[W=]"j]58Q@R5H?w-c6,Np(Ca3^ @СʼC3?#2SRD "dl.A<,&)l=nXqҠJK.<À2'34hq Cnj$C)A,)C,)s.VqŻCOb4 "e \.vI2PxE?<@.ܵxᖎ^^V85Y|&h I0+Ryn2Ǐ)2&/76V nogV0 (4=x(L16Ɖ C/M!ڙ+$ +?z!H#kl7u|KIsFsF-O?DtA2\IW Np8b<?bp~fvMUJƆoD<2FB|2@夦Ȳ/|],߄ E¬W IfOL2 c@@ k.5OIQzy*pOBr:Ye(!M2g( @t'e^$u:IbU % 9((}ݠ61tźf{+rGrEyn2+>gL ###tp"ylSJ>@gP2G8{I/< .5v#ə50_aNdSU 3LgܝdnKҹQId|b]M3M1{ڰ"-|ŀ>o0c/p%1DHKKpz+O/p(CJ@p?$`POHS<1(ÊukRU3f\I-1rDҋ搏j6U C<8ܙG96< )ñWA_d5QU2PXR*#IplR+U^^w PIj{71a\39-Jy+9(b瘊2/` ~؛q{qN6KI3:qHNNsRO:jT"E0|e7x|7Xvpߞ$bҝ$>AS}Ib-ꋲR'C9 j!bh8%4T?ԍ@2 u]'ZC~O|ljW P1w}3cKբwH e$ V:bȁB`n]Ncpf[CKՌMGs Q:VPEeK`4R픓inܾ9&fLJn J1#7<]9̯SA;0{ >\3蝑7GÆO ,=%0{ {k/NK!SҨj}],e$ۀ lWe4Nʽ.rp$HO3g* 8ZZ榓5-p}hmTjWk(3ub((BnntxTӊ $2Es~Ya Jb7 MsV;L}7A< btm>;e~_Of{{pO#D^^({=$؛z94_|wU 5~u;jR 'Az쉀?颜U:'bvyCɃ8SVwAJ܎k '@<6ҙ)|Ƨ".wV㯜\gG ^oR6t渵569NFM#qz: s Ck 8vm}j]bX[V9c*p;x#aY(.^X 75y#3.'j|F80<Z7t7"E+{މ ~ciژJ@$Czz(Fn K) x8{faIf#=)8!3Y|-3D{ֶ)~Y04r ]ʡ-(bt\qgz0lMn,53 $xɶm z rU뛽63M)G4rcmÏT$~?[ )6G5&h/XKWì rDJ'g8sɵnqrW5.e;LT}CuS6K2k}eIh }]98V ~>I{}@ϯ}Z1BKM| =]fA\]oTMN@"PVY=7x0\Z9 Wb knΞL. 5{މ!ۍXb`GQ!y,Pu?GnwOHup.R%0쟉p:cLv"In?6 āohjqlZ6b ZBv?o1 0n+@ 0:}WٱZIYOIP9{*DUGZ٨})ڝzk*dHG(-;'%?VhܕE&-j"TCB`& ^+W'RΧ=  HܮUz(Dq.wx}Apw)x$0(Vq'l̛Pb>NsM] +T{Tu m_7U3ZGqFW[qŒ1-5y|yT>@÷zk sQmi{;DR_I@|W|O`i>SUsD#W0 ׾9"z-ւϙ@ 3jr"S7:Uš{`?2aOUGy9FL,N}3of1n ~M68ZtO`pGq|>I*G,i$>kE._Gzs' "v0] q2 qm~::@ߨ:xEjIl weHGzFajLz[']WErݯ4ٮ౫& g)j^R9PӠnFO0m)gP L@s/cԺ;GCftzf)B[x~N"I}ҼR[%V?jK6xY,n/alSSX.җElpلdx?ImcNr}'g)*b`㇃B>mCĢl'8si Ԓt>D`qQ7 5Sdz&zT{2jR#Yk=|f֤oŅ6`{l/F]:vd1/iRClߥf%N`ֿj}Jr ^j.pp~g񱧓8'6=p"Eyo[]tF*9}t,gLUmOQnf\J= 69L&g"q? X@GrM0rB8pDg=V]Fv)Y?y_EHGj^?"_7ug$ =Н*u-u}\~UhX$Xav&)c Z/ Qφn qd5@@|o;l>G mI-Ed@܆&8 zD)>= GJ~j8 ^E@."[HaS]!2 ϱ:p m1Y{hb `j Q1v~L!ǓӸ7ymn?HEe3j~N9"0FA3Z Dk&TUG Z7m&b] zs+T!r'@kzfa5 vYF~yܭ4.oKL;Ms{ScyH71خ_LY?/Kn_J[VSc_*]8җABz% O'85Tigv 0{ {u\ >]l*P6۽*uTZ?1٦TAӷL><"[d_`2Ȑi@-IS]}T}Q(>W+djrvS# eF_X!wZ;;$P>cwB>-{o okFfϗ*]hAҺ̿=#6:RX烀cT?ao)s?Cϐo\ViDT/ڒ1b@e"rD oZgQLΞjЫmdؠ+nAKTO* L?=qQ=-y#1fxnS[~ehHl-KJRJHLuL#}t `k LiIZe?W,]~q w7G%|d|љ}Z3Z@|~oExzu;ozZzTE]Q̢n-EUŷ.7kf ץ5_l>@NyG1]xmFA.?t;͗xXn}6G9!;:Q|X9x)LQjl3 <[H1/qP5kPX,ftD>(~a>^_rN)BqzOb;8_9S;IHz˅2=\ o$Gi" $wBep,-g Y{79j|ziw qCa׍\vw_Um04i\Ge`78f 2u:R JYv0 _X1'(8 pT=LA$)9455 Ԁׯ ŗOBgrşڨ_ŁKײ!$GMRI@=Ẃ*h;tZi3\mhR><s[8J5>Ƒ yZ}^~}f|^(Nr}UqcM% ehq%yp>4"LGpZ(F844F&OKk:yB34-MLoJ')?w)郪PlJBꚭUa忆p*}YX5k pjc "RoӼrx0%Pg D0w3tj E0z4u|]$l2Ec{4Hxe[/ۭ}mKC -·_UZ8W /xBĹONs'y.4Qm4j!* <(EM; _۝7{R Zs4Kă)!d.,_\NzB.D#F\*l0qURjB]{* ۠ &Hp1ϩ#QJKxiG4"-/ɷj; ,m8 %j6XQ9WwqUH1֫ʁ}Cs'%ʍ6Xϗ\z4LF'`I< { P; ׋wN#UTи>o ɣ4<&J!og%5H`:BT2\"K.3Z^ٱ*gXI_?K~q|ܸNwiPX(RGC%߯M#kX}5zh!je71+UdWY›b>ʥ+̓{ڋi\<;."{{ׂQ6M ch:n5I#V:qR >??^ ~0.2_5V. 7Iܗ z(n,i(E%%-.-g,;Ivdv%^JV!"LK ZGI6T.Dqdn{˨ڎ^-Mv4ޮ/D mFߘK>mf t "@/DL̫;{К`E+,Xa VX"`E+,Xa VX"`E+,XqV,IENDB`pybik-3.0/data/ui/thumbnails/Prism5M-5x5.png0000644000175000017500000005171713137372705021000 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+SIDATx]wUյ~X"0La2C^AD"2"Ei u XcF%ė~[{s9BA?{^k_w/__?E?/y Q !D1L''E٢Qj^Q>"p@gӕtSZfv? 7/?UWt"t #z!Rs1$ fns i, *Wo!-!<\uEiT*p$ѵzo1])L׏+ < unqStns8ws$oLCHӛNJSĔTQ*L(ZD. qib(9Q"+2R2!EVV>##ClHDFX hs1<ʠ#(ӿu4"]5;SV "F-fc27=v:^`A3";-4w,B@·xF^;ҰzbaKT.rEGL!&g4Q!*s2DXjjh'bbDIII 0>SRRȱ!!P=";$Xy= PR+7=cChׯ@NѷK0S5->:f4<cOZǼya7^D4אհm[lft@"]n1-&LLK$)+F%ʼnHHEtL1(#UHN " ~4k#==9caEqXZ  = 0q%Aih@N%q Lj(O($؅.>{t-HshB ^Jq̴?Cċ?Ig.pzy,,D`yDC$ &G,充rhM2Yx)ՒHa^p=kTUA437Ǝ鰘a+k=:m5Hpox\:9BDa!bxl#&ddvɖz]E.Dqb%%%|>ӀC 9S ,;Kts@ ,ye7 ]*>0Lxv:aѪ9M#.4DF.EE:Cbiq68mm1(ՁxMfCX+!Œ'B5=d&C١ pm&F o]k ]*j4e֯W\9A>!_#X).rtmC zӪ$H#PCk$]M}pB+|@(`#BҀ_>(Հz1aG+⧫ E|=AJ@%8U4Rq98SXPA=Y{\k 9*9;E K#vAUEl;]qXmaW* XxOŖGx$p~ΰ+@F/J~vNoC 0r ]~2"E0Li]t ~ذ'VH.^WNWj1$:G( 3;s4'SiՠuO K_H [I%7w";R*D쯪|DQ)b}䖮b.A>RX 9H=wUp1q6U@$. \[qr%@AE[at#bH"ee Y&'@1HϤ6砾 ))6E%"?31@5ۨbTں4ث0ף G ǎj0n =|S`]^i% W8]߭|M4 'oxI,T?WgWMf)p gį <{^Y _ɳT dh zk,MJU:"#zTGxՅ!CY}=&ޖKG2yOxNTF)峛Zef\WpىUF݋ٰHPefd:+_/#-_0ࡤCȡо/՜3%GZ00a-g( $Uf X *JJ;"82Rcǁ"JR H,b= Zɨkp$Q 﩮xo<ۙV#^aAT䧳TGGT \ Ԫ)vnz:Ph 0Qbx8I!Oƈ (yDlMkNωuK(BvSF,$ |}mU" J V#uER:Fx!6\CY߁cJrA@8FWI%f+&*.%Ժn~ c^RUtrЃ :+i}u$EPJjёkZDOCژxD;.YkHү} --{.]JȽ0︪(ウXCQ7F DÿG<J;EXUA:]7 zAnc$X-ZC:]Qa> D9} qs@CQt ·v{|ǻ糴1Hτ8F^DUH?l#zl;~ėV9Kt* mUQf h$ D8T{ɛA ֏߂P*Ѓ/NnmTWE_0ӏ p\mV{Dl. N0H d~( @u"s9^q;WțQx*㊣"pw+h-kл(c킰P6i?ad42H' T_sk%4/cuIgy%Ͻ"z^% ypa7:~ 7=,XPpH="9{|ׁ8p/F4\@ Fq _O2 gx1~Yr%!S ot]X xDxsaK2 TD$=S:!ˮ[e8"{5@w8@Jᑡ.:9ʦbӢMl!:cG1DWxpy\;`"A>@ů/@B_}4Ns[p) 5{Z<'s {("GQ Lx||OL5C4+! QD4&: [@R0$eD#:N5U`Wg^&J@=/00Ɵ8& J"RnX c@]: ~KwWeKp/ /ʠAʴ7G. XKAl ed8(Gn=iAc V!<. r8'9Jyy5gۥD|;%FKzkSx#[ւA B΃([^vѸC|pUi9 o^)M1zs؁' ?nf\BI@-UTe}mtơ^FNI/W`Ao\ZXID`)`oGQ|,-l! I`|W-@tG޽)a{`k#ͭ B TLs{@I50,aPpM$l&z,xBpgA3zYe#UK>>7DKDwl[ޭll qHn\uU]46džHtЀSF_-NT3% DCS2ڶӻ.d`~Cb"];+c#&Xn+ݼ1}Uquxoa $$ܷZɪrZJ aZzoAUadHT"ڨ%ߐ8{neAsTJ@ ke}d}71CIw#)1>eU0¸=5,D,HCD->N2q< gI"89 `5AU;D#:n7}HK>5I`cs;z\ >tq_`x` BDT[pfqR/9%2/kΧ-v4ȱ`YUk* +8t6i 4bE q1H0Ν($WqV?/W.4m$ ""V>4:. EwrRT tR_X{, Q"^o`k @s9+CLܲ蕁lyjbX8IYD\qoF~7ɴn $@1}lؾk@w)_eP\B6Őm[dhT9ŋ\VjW_YY/]׃}{ڣՖ6;zBeF$!N(Tmz:s{/[ye :sT"&t3b**hQ?1u /+0Q+> ^2b7[z+]seوr.;+g@ez;E^=oxs0uё#DVvrO}Q Y2HBJB41nfpy ا`KW:b"JU[5e`C@~q =U urK` lQvCKW@حF|Xqtk,N|)U(7)<׷Cm0|f}1L!K7IJk@40[#F rG wx '›,1p&g'&Is"y3+Q> 8EY f0:7Q"N?гh>oNE=ZK db\;Re㏪-%bxS^{ u_ª\`PA"k۪S{-[ dDXbWqaccDo=Ao g0 PTM1R$V@?» jc!Dsg.Uߺ6^5NGڈ`.$1?F8=lPW1QkFKt_!L@K'e&}5#~ŃIe+bw:2ЈKo9c4 aRl p $Dhҕ}QI* )DܹM&%$}ۙۿkg>ď[-e~ryYZR}-eH M,0{ r 5 :vl0x3|6w϶?6? +}d/ᅓ7֯㹡۟k4XɠGmh6yth;y"xy޲EL)Upt׳ nϧgaDddUpxxtTz[lЉ< L~1JdR쏯\{%I]F}ad<+X~۬#jƈȆ#.?S]EmC=qIz+Ik`(A2bR"vu_NbZ~qܮ]Jٿ˫xaCxCe5q"~e!=NM!*>\@+g1d-cH=mɒ$ѺGs-q1~k'>N2Ddt~;sg(BugIu@kB# =HF ?oîQW—bs.]l@7GPqKm֌}^Fč)ĂݾH%Eto>ə$0B3GD2wSi1 q&:\G{o {ْEd]ɏwc8YP:}k8,kwHY>d[!纴)qrg{.* ./6; B다F(-/7dV pcsszx%Qĥ "{ v,2bT zT(Cը9 ~5߫ȪDj'SBfz~C뱈D<~ӷC1@WGw2dOd yX_g$Z!2`vdPnX+ Q'H! m<   pq+=ذ6QAE)%nEmq)5Hr_y! ;*OЮK5w'оGy]%8 =A!s$^N; ԤrV@ BZZ>FŤ{abeMʝCAI%Od<:DeNp{c\Qpfwh%q8m%a'|:'0WDUM {^F1BNɺ³qr]C"}?h?CcI$Q`O?0 ڃ, 䫏9_%c>4@ go k&0#FM|.\"M$@9wB&TcPE6m`[k}ip=GcpTȟ&;;%×9bI62!;?JG.6 noVwd#DluQ ⾻,>߬> )@]d-"6[|/.D|e6-2

lR~RC\x@2~ҙѼ&0(Mk=ByARF Ůg+3ovNՋ&ʫWoOlJxk7_%d0mg7AП<[г->Bw\9'-,xd/YFsFfP^ٛ$!dU14Œ0?@M¿{*$K/]snrٳyߔ(܇'SHo=6ՂX@ף&u~9ĽZƢ˸mkZB44m !bCө_#kYrI8 D =B}~>x; xJ(5E2P1 L,'a}1~0Hf=m6Kxe_F B̩WSؿ9!*e0H KgLj&յxY|{h1CQ,(2F `H'6l`r\Rl $M H!i~fy#FKZTa'J% Cm^k.+\w^-+d }UU(̖{%r1K[<:/Z|f:_9oNH U;(</~50C|āan'?߱$&,Gio Y~g OI0 W^5ϟW+EË6"wN`"X/caљĵh2Mjܘ DxʇmF3GˈuCU7T+<1/J{E^8:ȝO{:p2RB۹0\8l0%iOvRse `F0l ?̍&V-NjD胛}qoJb5s^cкZT>)DLhb#9Q9QDKC1DE81$;/ hEqG󳴘1MUA`"շ}BxHm/ Qn4V52B)8-/` wPy,OmZ=DP^I,MLƉ'Rv ؝^ر:M| q|6T^`]# fO{f"xJywδbbgQt+xq|)-HiR& N쳎ٿO O*ƉGeHAk>D h;ZfF7uJ]CMFKN=/w7&O V-\{;IWvʚ`# ɹ]*D%;UJqh)/h_:+ `w m{ @d|\]{:NıÇ _\_ZEɲ>@I`́2Jر->Kpܽ˯7Lk^X@pŷqo$(F,"4*{"")N<Qܓrc t8Sd"h2Y򛪡CB 1oBT#dMYmi`51`iybs;V˽|aOITIFa^EE?BUx:`Fm0Qdx;q}p;Ňę2ED z܋SpLGwνM>yWPf6 Hɍqdؐk_M.`Uce ^@}A p r p0J-p9p\# œw94v ܾ͉;4x߼-(G&v"sehnDqU(B#!U}A >\zkD"gZ>*}xI!2(GG1l~d0& F 6q5ϓ[%UYVH&s#wWODj.6%L+Ѻ'i`%࣬8R~ߢr!*8%QTAΤ4lأ{˶9sE-H1_݀/rĪr/ޔG")WMKE5?HEWW'@is3 hf=8u,tHRz:d[kMSk?nѓ7K"NmMO*7DI}]zӮ;!(J1ѹ9a]֨M%.=/xrEڛh$r46pNe ;M~J$x5$)`aPcnE#u \j&6ȵӅ"z@lssV@F;P 5 bpu [瑄ЄG]I":"]U>'-VˈTsߎҠUC,X\^sӾpKoH4a0zҊrBv*RJaV]iS,.HѵZm |)?hă63 ~ɜ?& ST:KErW_9K]~ջ#@?EvV8C-e_JB[spH/og\ x+,<&:.\cU\* K()~['N~8۬*F F6k ehqެW%`k=hpWrH`ؕzĺ1ܬ _p9W۴Ŏ<J+eY!Uc 4Hl0ŸߖA]B|OW.T]=RudwHu|JK-ppwh0r ΄Xsp 7{?U9d@g#ao M[wL~?;Js/ T0NoW&%J%,ب _H".Z%>mbsGR4zzkx}T \jI'\ G/;]{Wi⋊X"G9A[1ÇӚ7 I&p2 &|=D YڱbcCm\@Th=bΏ%3.RLEVܛ{YZ7Tϊ3d(Px>B 6"BcvnŒnylh +x\2]'_o\?c JW| ;alQJqE+ unQ,#P!\U.>>*A @ -_]aPu*UNn"%Qq}|1j;@8IE *+o}L ^hYވ 7 [*YIcs  )W.MsbΞx`Q#()>ܧ]k:gOXAWƐܖnGk&HJGIq^U$ڶ#>N!zuKc) txGJ ]? y1ri?>å -86u )̪bH_w U? 0ѵVYIddL,bTh_8C_rjGn~ 3l }pLn#==Ld$Sqn5Z5I=5T Kf^}wL\B~b#(0p "j'=-޷59.А4M&V/~^'[: IʚEnpt`+r"Eh %qyx=p#->8r $(I\weW 4vMlϧ}adyèK Jcq1V.:xa-ߣ;o $EiP`{$@-!L4[Б7Ю4 $C"I uh7}#@LsVQCíOʤ&z96ż3 H؁K%m!*/og#/ȷnD-tUqZ qH't%2+~|~QFiH/S,}Ξpos{A{?T8M,\Z@7Z2K(D, ay 9ig&F~i JspS'{ȥd Ls>b ^}h뫠-a(%rtXaG..T'onT~x"zzt#фBJ^I{+rCĿZB!2ѮãO@3oV8"F8Fr{Z=tX8~<ݳٵ^ż?`qן1@oPT'Vկɪd^(9'62ȟո{+a`7\[%a/in9liBj+.JxuPhqu~` ;- ֖VCՠwe|0^.xUU +V{"—ՠ@|[nMյ%nj( @!jxbKk[1/TNTk&D< 4q[6_{L. 3WZ}Mc >Sݕf7zs N@JfMEz8" qH^=Եl318o"Hxo"RlXďNidmDt\ [9QmݲaEP{|.ޢLtjO%APnI}MWG$'6T^)o*sp V82۷ec8%mF8 m6Հ&wLze |nC !۶6rck08BD$g6^ؐ=CpMUǞQ54M")b|ޡ ",<љߙ Z{w5@tML;CEEځ@zjC(UPd a;1m $5xB!u4l*obPW=,\9/jpaXsζ-m Vwܫ]8_`.̖1Vْ:‡j`PxVr:4BQ;+_ 0}\~Q=wM.zƍ8t+gʒ " "UP1ކ /TqHl c4@w'Iʩl^ hf_ԂC 7m=Ű?qr ޼ҽl WB0Zw8oZ mкr4_PQRНPHt- x hXqm^jF<V+'Է0?w䇒\zDֱt z͔ !(2 ]=Kxq<[,"e40A/! @e{YRƛlspRÆ&`9#ΈG>`K6<G1q_apY\Kcwa p|!@n*< %Y/u$v#AsjQ>N, KxhۨI.C)9j7è q=Q+k:T30-U-dZ;~⎞R뉅II,<zB^57?q1y7W*;̩ĖZ^ YO!7mnc*x^[M̵w*M 7>8\@1(hQV"aYDB &M ,"‚~(C(6:& a qpG>>%k ؅:~gib ׇ>p1ca8 b֨p;Hwe}~nKf ∹'Na E|p|md`%M%|\~ |pɭÎqS(*|PP E azFh\lm-Xؼҕ[ypD|~>Ml]q6Xvp56 9n&W9^{P4X)B"d56[ݹ6f`(һm0NrqF7 =b~`rɽ@To,'o`ۏ?JԅU؈NďnH/3GmD^YY\wA=1[TGK|gE/UTYk1g5hwpYq_ ӄ]sMڸI 7"$]Wf>BZߣD{t(ޠ§ #/wv"kK?.Z5~s[ʂ{& ?⏝c`K,]xS'i qBrY?MlGCz>33+3H"߲ Μ"i Jq\pmjW;rϟܵc $ &^U"e6T c&0t(ҷN_ krX,$`),g1bY^CsѠn ?$Cέ]ƈmD '5mk"Bz_ XeK?bL,u^zݼ{65Tjnö_>xX*=5?=wgi"EcIENDB`pybik-3.0/data/ui/thumbnails/Brick-10x6x8.png0000644000175000017500000003241513137372633021065 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+4IDATx}wUk}zo H޻tETk5X""(EbC4=kyΙ[&o(cfs=gg翮ʍ/=r! 7rȍr# 7rȍr# 7rȍr# 7rȍr#8ូ>u<8Sj,[q^{0> zm:C)^b)TcW! jg8<{CEa; z)Id2 \q; nse4|k|o 0{Vz<iFzq|3قϾ $` *nS} !f%39L1Gʡ})۳|{St1pC`I0gU=vV  #,^qz&e!,$inI#Nj=u0>2Ͽyܦv{obo@䃦1I»afW cob9L*b. cq8R!c}׺"wX6+ Oi^Rf6= IȆrqΞ/gīl󽓘bGތ|:5ow0FcD ?Fr;%qa.1Eq> KR_iA/AoU ^4Rs>pHPyK78+>-zTIq?֭?Ҋ)fM_Ih02}2v| \%`{}ǟ#p~?\g^fA13}}6#oC1tO0Rk mN|?u} !L +2I~'><73q͏>Ӵ)32-CB.uʾαPZ5υ1 /8+1nQoq2.~ 6|ٟZ<| ᰒ^O~E;c>bnv X,qяƗ烬X.MgOr9]0#8cՖ}gݾ2$0XAkg222@ W &_Ho)}נi HwnCVbsyŒ +Ž:r$ØSlt\,α#Nk 9n!d ss>.L8xF ]٘O㿘%Z<!\PM/]Jq +ᄛI 5ah~ 6(HpDxL&Zp iگ}u83:`.ss Q@z$2T2 HL/jO> a]lߑ!?x>ֵ{C'{N*Fߩ3 8-g*)fu3'yAB[.@.զgxŠF: .bsV4ߡzAeL?`5V f$؎|;Z>L / moq|5&l>)nm:`gԽNCdg dyx̟ȂV yɯ$_@r1x{ Cgp L-͏ Y5:kt546Jx᱈j !4V|f۴iusx0{wX='*G>dc m| C)K3bsgXE2o"rtL/@ 1,g(삞3zF YY:':l3LNY~zU&nJl.x3|<*W}# ³ $wYiTgP|<qa{U2_P>]!}z$P!doeB/I Q C&qV>0hZF#0ҝW`V$~;3WHOX{(1B׼aX# NyE#]k@P\m<=sUi%S*+et}7>(-/?1lE[m*˜s=Asg6dpv=s4:,φzmTZ SxȊ 56vl)RTH.@/g=.N[V۟2yxӾlϛhEO NF$30qz1:>rVA àw噻qX痉CBrIGP݃ ] $+y7AD Sl3 zTL' kF'սغߖ4CXHWjV4o~γzCj*Z ^ ys KbɆ#eI!*E 2 G7lף$-M("OMP#W,іE)`(u&.hI|2^o05S@RNoA}bֽe qt #tc+B>#>4Cif7*պaѰ)\OhnmrMY=9Puj&H_qy``& 7_.|єL)`@vÕ_w4 [j)#!Y>o[Vzul|v^@Gr}CLNȿ?~qV@e}i\ : i$rdxnPmg@;D:u8(39=g2Nkc?Fda&Ds3bmU2/8GgW:,o29s^Mx iMtX OC=F+]x%>;ވ=u>Y<%,[!3Ge뽅ҹOn[^pV-׮O%K|:Su\, tW]"t* ~<`(5ic4SZ9kYtpa#pOz6Oz3xi@d 2rrϸftK%m#  I҉M7\иOT:CF|f@Ϗ7u ॏ Hfgf?~;/ >sR3 W+p&CDˢRRjݡU0 #Vg}ު%328i?k1kC}ijAj~Sr6~.ˮKd ɛr^,iQ ΋Y`h5h*8PHߦT ILyu" a0r9 ]bpfg*ZTj2Sw%r$t%p GeZYcmdګwC`*іtN-U]߰-l5+ʑRz^PAcSRG-n&W1R`Vu5^+||ja >6}@& ʯa>DžΜͭ TIZYHhx g+g}!6`:^HaMz|f{Ok q^TBEu`(XnϔG,F 8;Z0[BΓ3jꂕ3FJ+(VtmOW)8W͎7_^'ʪ c{׷*ּ RTw>z!"$dQsPjԳ@ Γ`-"Z15v½jC [?bPvS=4g d$$ GP"kIWxF?X$yq*wgǀ 1|"Y:OV̌xUH/N!{ ̌%X?2KKLJr@8_`(h,VCg)\1!>'bhw$l3zsT x zGI~^V"X llKp,ݓ}? 0.A%T'+/?z\"_&OIѴsF5VZA&0Pi#G.QBEG|eYp_h;L;aco U^CF= Wugh5(4V*v>T,>6{LXFdƨ \4`tNLuѵ+2ֳGXUԉ{d.ϦߝWkuGNEG“_ 󌻦Wp*,HG<|>d{'6%Mk<CtUOg4Ffçſ@3Ԗ^#3>'8BPf>q+ҡ/>P)x|'(c i/ޮP߻._RRbjQAuӠƓ~+ FVm?ߣ^ċ7}o){AЗ` s4HaI[Xs?32{"@43&w(d,Ş,Z;ϔh+U%~d?7(  :"$Ӹ!AJLkzS" >6;yhWyR<ћ2$/HѶ3޷i-۾$fx6&u(/&7]OH,u+1 IS?2t7/}+oxb[jAs1(ZH$.RKH\SOBBhآG`?BAr <WG:!1~K.>1z.?\W0$|?W@zt H2w@~L>u1Z`muB> ޱIM/XWktc2] v4J`rӮM𦵔;(85~h8iPUBL-}  dZMV U]GOh4g>W=DIJLcڨ! b|iLEPI= .k Hv[\,.SH9!ba\ʝku||~\|Z[ď.G}m@\lօca:h& d&Ze4)p:EGd8檤zzhj&]"+f65c6eqW' P^6/ 5= (fGe'aZD cprV7m}l21ϭl.M NW/(!$ Z }#3`G;>޻?A"٦@kO0 D kZ.F(PsJr5X hOC:ItJ]M# MZ WևTop J$ -+*d ǵ@2IRc(c7LjЍrݲ>mTXu?"壸S =y, ĿǏtD7,<Դ\t j"_ǐUf頣p%#P"!Mfm"CWXؼ̜o;|i=3zFʽEVUo,H,pm>=~z"Ď_o?^"=;TҾ伮W뎜0bquZ$vGk45MYxSY}&&L^A5Mͨ,d2AYF&p%)'K$? ~d!( @JT4,P但eWp[֭/?bZOOsI1ڼOˍR4U |IoTI 2o#nH,}rɜa FP$?:pi;<0~ZMRӤJDw+lV;1y(!mN-c:p xX flSlUO` scWL8Nr7wPUAu<[srҸV tKϏjٯ il ڿcx{Ϧ=ר>CI+K̋* $ST7!IMv#Ӭ66y3"v#(!^$($+R%b*pxTqRSB6pUIaYL.;P|͡Z ;=M?K:M!>8:Gc7oj620 Gp7܃O7QVI,\E'i?g4mճ(@RbwrqL.3&?&O0=~DWקG; c7":38hYYɂG^f п)-%XDbퟡJ"K-`a˖r }˼f~>~-['WԦgmtV rڑ#=CR4m}*DL_c Xzc*+2H#qQC2o"f8fk%^#֯ZZVws&xT @7A'_Y) wxqew6H: "yDW< hET 8ia4?"Q?jWRl&s4xAL]=IWύ.nƵ|&GtuGi XӝNL 5<`cSգl%k\.fѦ,޴I !yX U^eTI0^lfB/.~Vuuك`jͩذ)Y@4! c! !F1Eq:Y Axuoߘ߬ri#Cƪ[G\LBg=T/1},$95G:ABn_øϔAAuϻ qS9~fd)&f{ᢐ]I$ZYD6u~$:țV4b = T.ICEuRCO3!!< 1 'юA=`!Ӧ*i7j:bI1N+2+d·,>5/,Nx<<(Mq`[)F jD:Xezmm4e2u4j?CܧEhJDv<=TzVK(. ]Hu%f"9W;Y MeKj* k d6džR{v-4&:Ej/@uû+4b68r8NcÃ/p|$ic-@B=[)҆nG5թO@Ðei E[qCNFA,'0˴ =;/t9j_.#ljgYI;Y/Xk[nA7klD?~Ш'ГQlµ \yF8b:/I2WL w<֟9gߨ˜ 6+ڇ(7^xailU̜A+%g&eql\5&|k9^c6xpgsC rȍr# 7rȍr# 7rȍ5"uٌfIENDB`pybik-3.0/data/ui/thumbnails/Brick-9x4x8.png0000644000175000017500000002767113137372610021016 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+/kIDATx}yTյby`eADTfATfi&D8Eq@@ H1qHb&|y3>ov:Uu{>]@&_yW@~_yW@~_yW@~_yW@~_yW_JX[&A=UUQ0F UOU{ExbD@Y'*ռk*66OPzk=<; ' N[O(k#e5Ɵ k 7"UN`hpV>cB|zk% QG"3?0̄OBTz<c$o^[R2ov7~yC{̙vxVAR~5cx ޻ 7 #?BAe۶C Z)^B%xU /* -./9 OU3<O/p>FMk˰F*0@8~ܡ,]ϲ{uE ^bT0>Ǫ!y*6ƿUL)ׁSx%Kz+oy Nֽ75Ҩab&p+p= T F G $Z$V#w#.m'F* 6^!aV'%c-Q5i<'3WWby`6 /czA"JaZǍ"=e7T(@EıW#T!z,a$ Lx) Fx>ʐO&+ ":PC C^g+6=ɲK$"54`%7Epbpc `trI1 w|eqQjމ uC6x;z5?^]L"붻\{F?Q  C(n0=Lݸn]27S_^Qr`G#8c D}!+ n.YJ Ax} 8ShtT4*ل] E X}t%H%MQ3o1;P[)CxsX\`?˔yN`C$22 \Q(3Uo{ ~n 6 REm$ƹzn a [xbRà0+ wm'49Y Q68S/E}9!hF:{NdGQ˱Fa=hC/'C~g{ǣ+n˨L gѥ,EjIg,wܩS'uowxQ5v7^KAܼqf>y ]n@00׍ǿ>Eg.N7 #C8E2qv c^ш*#ڭH7,d~7vdݴ-sgRI50z8 `H d7Ov+F]}8#mO>ހ_ 0`(rzM#f*}BTD%R|^7 PjnP,rkбOϞ2lG ˫HX΍Q+@(znnň0xtDJ:2 w὾)Fi7"Ku?ţH3(a5(vx*F+4z?(:@ phH*m,n0x_7Q¨~k>nn <$KN7>vdY F = Q`x|<h$+> MikI^L#TSAI[$n1h޴J|a2}\5;=0Zp{ATuxM2;:`  #TOnx=+XLYca*4$F,Obu:4vTwݑ!`քu97޾;[l\w2 `x4Xtqx4{k}ذL$$:= gyʤ9g/;!г(̑eKb/icȣ[ ?q3L7F֠?81>eerI ;tEL@% 6~HE:*(T?\rٓE7ا.UpTٳޯN:Y/_{eN>!SaŨeepOFdEtW.-5`0L͵{1M4Zfd "i0L;)=pc*kIO 4VG'C(2J=-J~tzg: #{+J4U`MQ jkmxbB4.쵌4d:XuTau/#Q|Smmſ&@ -˩=~]as,hH.ќcgb"J~)Q~]|W 9M`;3ld|=n<ˡ$ljps^Λ1Yihm&WH~na^L# =/0)qYgbj[ Q NUZOo=iވK2uZHwXƱN*-}Z܇_2U̐;ܕv~ Cg3RIG O,tR`oK- 1 u͢j}M4k$>(:x^p}uF6gebڜe2!@tkRS3ƆT~YzMVt48._;9S̨Lj,kw 7A3Ve|@֓U WTkI s?=p.1!1gs)u![LgV_7`W:\@㯖iݶc `ag(d#|ʱ"q**e ^}aJ&>k"@YOf@4 c=LSYJWQ,&euckz*,J SkxȐ;cT J}Pv}jU)T2Te+E~6Fx֥fJӛ!2>mʷ& Jv2Sa šoҍQ<.c%<9I@e4,"0,0h"U 00:@(ݽ)7@9T߱.#.0TJ[xS6:ԯjյTyz2uDA-+z7΢0Qr 7vA͸4oN+nL6> Vxzs}XV,ac9^N16dt 12䗽e|3թxZEDBdd}bjEdDӵ-<ocڒP\6NhVnNriLvx/#}ؗ{{;f ̵6TpzX˾,D ^V5Sk;13WЫD%Q}^7N57H(~ڴH-U}j uݒϿtD>sAY*Rf >:]7a(!!'a=zss4$ CnCxzCX )kr*dۙs 5z'\!e|2ޔ{#ܣ p %+2r=Y1Kr{\T{uJ],XriB-x#tK-e,U,RAZfTÓie~] ["@8_)Y"/5ouhKwܧ#^>^쏜/RXk!DL>:H >z}7n~5nXP$Q&%/Sn-W}0[Gl $6 "XS>,Q@5kO=L|rxC!nKJ3ΤL#9Ư2wn91|8@Рl<m|z]1M؃MLy0P =;ȬϔؗL41ÒqCxL FKT:[aٻT"`@'/ ~z쾿 .ɋm +Dzlgz\N&Ռk6z,97S2Wm4>CiAF 隍ks}~Eȍ`vʴ7kON& ?u*x窤%߁Z@>#o>E =R!5Vj9'Om!!mA(q+?>;n*CM: |$9iMfDy2g2?ABi^㹿׍Ơ$+%VwTSIo'E?~Q~R<}ʔ:__JO=wj/_:6a`-E26vx Gj>r XٓQ/75ŝqb(!@hc 7!Jc=J@j Zm%Ơ}gL%1%ZyEćX>&L/W]kl5k|X~W0<_&? a*xږ#:r@Xp)x]3P" ;6)7Ǻ<"ƚH+'H͖(IǬx'SH W"7s-21oq1[=$fӧ2~oXL+@}0>#^Ԥ3Cꃗ+o*Rkm+)QI ,ΈU.]:`b / /byysu!v۔n$nX1CSbh'`U3_k v$Ud2==x HdLJ$iqP 7~:olX;' W~BՔ%S%a 2@($'q@ID^N kY Ur-cH$TH qڛ˾jx U1OQI0eײhc~e$Y"7%{=l~E}7?RO J *`H߀: P8t׷oU6a`mL`slKtMayE I^ 6򹝰$x# ~isK4rj|gRl ;]{ rt߱<Pi9D  yϷPЧn(wg[|i/&r%ZvWlO}Ej"A@ , c,1L0 ""X\pA@E~/)P5 Z!xItc|6vrWL$<,r_Dk ,6Ke#Q:̟U.D<h܋$KRn9$"L_}Pv R Wn.8Ԡ<ouQ9jkh 2ĒP$g*!|f$jôrx#A6ŤETmy]4əe7">mt~Ձ)F\g0hx6[{>SL`T)%u$O*5e x6@")0z4W?^>i\?@m@VDFyTR0~^b^Ss4 1šn *Y2PzG#T!GhH2jzza"SxwaHX,=y"Ό5L!_Q1ǀ/ԃQR @ ^ٹVR*w_\W,NrbwcBQC=B.Uo-;/>x;MGx8FJ\[{pfjy?h8Acdz]%E`Oc5B!Z€PPB'Ga@xJ|8쿯KY !oF|BQFT%X> XX6POIJ3!OCu6ibQYv6!}xA84'~9po4>׏)UIDSI ?( j5)UoX+*ZG=﾿U%`@`GaV5;mi1"c0tG`" ѡȈˆC(:c8#RG X?GDn8 j/[5?F O~V#>_"m#B?"5'|x1yDUY*8O< aHv=&"%h!X%Z|Z`"[}=1P* UKDxA\"'mvroʽ\9c2uIU0PXg2_2O6^W;!|O8 [q#տQ͛U]WO 3bm̞Q&@W9F`4H\8`BR:],S%Lʒ"N0R|%N@.0~f-!F(*pՀOp<|[#>NtS}J D> dsi%?Q^\_OvU tfX=N@~4@|Z#r~a?#!Rȿ+<ϼ/)/R7J!`PaPZɉڀ"3{ Vézh&{z "vM_Ȱ/l87-P~bY?RϬ)()a~[B3[V@}3A67Z)?]Dgы{jN "LR6f<Il<8*"λcjs>#C!}l$TkmjMqMQIi6Q[ւ͎P,`$w<Rp\R^>B(ػ#.K?;A.D A誉d|ڳ6dL#4OBu/TUwhDZSbZqL%%2o0- /$E)K<|Sb蝫5io|fj\RW 'zgD_j 3dc0BF DfR.iD^Kh4i|[F`piP}tNcLY<^6H6ߋĐʇo*鞟m+2oͺW*T,bn*g7!n_T/=T"\7o:RL 6}IiZ6paQ4豙 IL2IQEkN Xgk(j,l gb "05]I롎1遇eV͏E)G!<{+j81ꔐ34=~!ݝ f8ҏLq묵%3-R9ZntOyENbi%zޖy+:3@rčP:,2VVBNҦFVp>,ͨpHkdMG(Hq\!pg$ ٧GC zB.ZvyR~ ԧ>ܥׯ(k9O \Oy-4> .^B8C#9}Gj]jT='l7[Z]yE>%ly0oH#5>' WE2F`I A빁Lce> "^%CZv-Kbshc{Q\t~qƯ_s꺥quRFgDJ|/?Ū}GA'W5LCzXpTh0EK·>ՅwwY<$dlH[QDZ8(vIK!=Dap{J'9>5,-jyL4dnN* HˢBqqj`[QÏ)w߿{@͜V̊  x9ڪc񇣎fz: DgtOs i85pw4GgPDJt9BpyvS5,D!HT"P~J:a5'x߮VVόԢմ< `$/^(AQdyx$վw6,lh\K2%pB5Z.ϯuQ at `zt j vit=hNVi.) .IaBxԋ>Q=pTY/?j_ˡ }x2ÅA@n/SAnp*Q9DFFi_K;;U$Ddi(GnL4VJ67 (9됾Ս(i c煓r]lloDtA=ONѰcd5vr{OvNڣeEgK1 .KNb!+Q<_ã]n\)L{+U=<~F}Wxꁕ>?oRS F 6C'b%шD1:1J:xFbYR2f>-K?}LX'}V%hT_xԾ/5Z6I2r֐4[KuQdl,g(9vM s[GCn k0{NC*S}X/-ڤ |J]"s,ZrJH@h*N\Q-q‡r/[6w?^"s~ok-՟Uu+wTuSFFxpBvC'QxY0],cUZiL'D(J٢S_?TOth =\q :;BL!B"gg=Bbئ[#;)ZNㆧMJMz0QXfn!X^J7DxB.ֆv)9PZ D%"-eǼZUzصnejH%SHHh e`}\L, ^CO+ga|NZ 5,FzxUgYmd1KtQsω?K>>ɋ}减@fzyٸ|ʙ3xoylQ=C]vɝjl+8kZ Yֶ=|9SVsIA94:} S{o?09kKqw724H#'̞VDG-yC}{y{ h:j}x5$>-ןh_j_#* FmS^m}a pHYs+|IDATx{evx]z3\EPVAn+"7 a ZH*,Ժ;A %ndVRMjszi{ʥc)y~99Ͼ"1zC~  @B$ @B$ @B$ @B$ @B$ @B$ @B$ @B$ @B$  _јgw>Ѩn* vl^t.ۈPğ~{0`OV\ X%0 fce' ϑs0ǐaC?G_Qp DXfs,u58CtGk̯҉,Pp/g+Rib"%=OXW.#eQu;/쫔Gcқn,,]z_ kq/RN`;7#;C{y5t,C `h2|B!"J%3SX{Ri 0\ [;x Ks e]diP85;6ubw?׽rx؋לg?e`T`pp}ތ6%lsIίD| {<2gkmA迆21%\!Qhu&k0]e<`($or[ςeכ@mo=b@?#Pv̀wVCB<@#;܂c$q55UTUXjF %y>lE 1)0à`lӤjPO8s 7B|~⿓SB8l\[U S7'xǣN%bޞ&A3 -uM_!O.0D>UDLHז,.9 ?-\~1yu+I~/nSwF!UI p1ȌFKLbiw{ď O O!5?aĿ ל"S0x3#R9$!gbPoR,א_SYY|ϟbh ɏ"Ӱ 22Lntx"KIJd>7 A Uᯛ,d:]߫oÎ!qOl ISvU%vHU)wȍ#5( ;~8@ []nkX]n*(% qD,Ӱϱ(@B*9ŋ3Ǫ̀5pd ֽs}{ R\zw ` +/A~< Ѫac&B]1--~Dz)8w`Q SLLpY҉?wƴ[) %{E~N.vug{!; u/U.Q|ӄRS,Gc+ݞx8 nuhT}UbsV>4q\_3L$zFmq4O9 9m!tF(MhySVTk)I;mz|ǒ;}][*E ]n7 L$P#րˆbxEc/܈wfXNdž,f'\9~;lUj^p+^P_:F-aS{{Utf߹ˮ5ѳ"Gqs>xL2 >i. YS 9CsV8㎂_}dCǵ; @H-C;wGƅ |!g'% ɝ蕈M9 %s(8K0D' q'Ե}U-s^kCc%OyV^s\,J S|+^idoQG# mc[jgA3YDxޕJ^S%bHuDI4#/P\}j2x9aZƐ˳9~?}H275?%'f949^hBLCA5[VUA<)%IPYCSx2ZJR9aN_5LmyH'޻f_p:Ë()J>uKI᨞Xc90+(;W2Y#_'ʔ껌ƨQ"sWq;IuQjgzYh_WTp>OVpvh-<`0XK:u%TEA2QWu*٨߱ͪt{Gbt=w.?͂q\3$Wx\gD1PU\r'Q^Dl?Ť s( hPk뺿 }pҜ6FWpVPq}[*|p5湳AhD(mќc12O%[|Dy<["6[UP-%|.Ђת>&ԛhhDGðޞNڵY`S" *ʨ'u>5a6%^6{Ԧmߤ&&&_NVdT|B53 I`QpT̃x<Mdjup66G^:  Cw4%La}[@n0< To)8%b68S )rOIt9xꯉ㬰g;w-Ƒ[JEyAv6U*W|`sxõJ\ELZ6?08s#%8vmhKd|B(DĪ2m Xg~QM`C내TJq{|IBNĭtfB8L\dXg곉DyBo>["2è{ Ҏ5!ZO?}"AW>O>n \":v,8XIgnE& *|j (PQ]JjQ7tTwkmQz;BG_{E-)P>AФLu58F#da&|\BsC bt|]s-(pbKE͏c?}֠P>*e#O 8'c`\\h9'Np}J"!&'z{h'8gAZ_2>I%k?K_1Xn.2q>?Q}}ǯ:۷2j>c54-p|>swH:e-ⳁى#pޤ%m=?Q_jq-"|U @B$ @B$ @B$ @B$ @B$ @B$ @B$ @B$ @BYĞQ]IENDB`pybik-3.0/data/ui/thumbnails/Prism3-6x1.png0000644000175000017500000001600513137372655020651 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+IDATx]ixU֞Ț}!{ҝ@ 08!l "G#(#@E%la'd$,-fPQDw[:=J'RX7~yꩧS-ͽ1CDf1ۘă}u?_,ɟL|,\hmߴ6ƈM|[w jkYh+غ^" d ֥wZv,Db,/Y`YU5E͒lERjj*a*Xj$;~ >lZZElx8Zۚĕ2g[1q o$ɟ=ē`VLlOw,MlW2lBmڵf;8fnϞk@~髢Y|⣅Ȟ"[V B+eKVV,quQ,?z( ;G'x;Gz۹s:9ŲC΄x@\c2wN˶xnh aʣ9Z?Iݲm{~VL9GS:׀}#Xq>8^}`=q.GHOFeee믿ҤIąyO0k&> u\r?,{s;̣u_&X^'c<^d)eRgR֭);2&ɯOrNs::cQWԆF1nOS]}Is;-X8cK{3Y س-,C/ 3hŘ!`{_="umb>YCNNI޷ߦMjRTT%$$Ptt49֠@FݬfaN5Q:?AY 䨝aјǀӆ9y+X"yܢaa08%]@aR9Xic/BX ݿ@I}|{ 5,wනLh3I|t*]/_&!.>&z%Ӱ3eY)+"2"hHl4 q$6)-%R($$D ,0jժQll,9Nl48<2:S\]t:{g dR23Fclf2<da|eҗ[ NLC8'L~I~fu"!>Ch ߎI'neO .޽{S ֤MCYDh4&\ܡX8+*vO)00PRVK۵RPjrJ111BXY$ʼnl)""B '{khu 6 m1=,(DfUb)kdthTFJ=e YiH/~, ]gS֬q̤bsϫ.w/ȹ0[s8N^x0:_% b9w0i2LtoN^Ca-~B`ixlLbZQf| e8)_- S !UX2 m۶Ԯ];jӦ[`O ,2 y1F>pfo6guBƍ|=zL'q%q12R"ẒwBZ`>$QL9^m΅TBNynM` Fn-X),-,Фnu|)G"w2TT^xx 6m>}ZHvH+ra$r8ulBhXq aiZG[ YBҧI|]t Ml "QQ墤$AXKeթG!8k0YF-{aQ f_Vha&2kR# %p]z0`布L:#^TYhn+To=𗛛3F}bb獱=>ówNf dpfĀ(# 㶈;czS!Ng}VGp||}NcNJ/ Gm-A;?GGpWIIt鈃ޛs{^AÖ?-?\\D u[~ IQۋCN9>zh@9fPZ~=DfqE\3gDx|)6tis鵩;Z$ HK,.zvs55UeF6)|4 n :=y$ȗJ bľq_*_mAtG[/V0~8/HNs^*pBE]V]y-iт Vϼc?;8Q_óV!8%;Nc˯#r Q[!lV40&9h`TbB$2.2'~?r&_Htё8b=Zo{]b䎯|C5`lKKA,½P9Dz v!r&J)rME^_ˈ@_ 6C7`.wi )C[Z{!|Ç 1$&5: ^GЁÍۑcBpxivU$N>b$zL鵈\ΑhE"$X@z߷6zz}RH:u2229͞=[[nSE!IE)`o g;]/1|= )äS%8WmC=@dʤt_2<6CNAS,tvO HS !U蒬F}_@ч5֭['q>}D'>| -H93koRHT+I#}B8I~V~ !=Fudܹv;o2 sK/ChkYO1{I)[KAOI89>Bt00DIL#9Y:LGid+9?pdYN M^#A4k,1CCCE匈ZHT/}[a Z48FXMb2B"sl!FQ'91:qfڿ!=:$mMYNuk؁'r_/6 S?#é_RIIr^ۈQX9áo^H$"$#@wڪ?ga3!Lʹ22 }0"mv"AX*.>F ;VQrz2c16Cm%#V.)[? 'rLP? h@Q0K}YXX X, X>f KT9"ɣ K :ڥpNlF+:򨚡V'roTIϝ;!^|v5c.GxCaF~HLeS-P"%da baeZi@H אZUroB>s iݻӱcǨk׮gAnaY[UDf*6qִN&S 6R}Sx-"Z(MJ"A_hR{Iۗ𾢢BE%2장?շZ:Re҂Hr_BI=SeԀ6  '/lP}N?\EyyyB (%c=Їf`.lQDl3bLcS-M+k EeTGX "LRm98ei._nW^zkر4c QNs9:e`5M)`O-fd P#!ɿ+""߳Us=Cq/26,L[}NHzxp޽;xNH(BmLSfPz`ї3j!_F[)|m}@rHI!x^6FGW#b裏pzgEá]9bC=&{&cIX£|pjhc(A}!Q'N5@s"svo 1:tpgAd :Cb j'&:ʪ;6j^,3@,"$2dx0aX |TosC;lts|}5O&ްaa=#fNV{S`o*Ѿ1G o9SaDސ@NQwҤ:v(FatVw6bv>i[..)qwAݺud <|X n={=]?|fHy,ebpDUo7si} }ћoZ/'Cr!D5 QB$wWh_sPܹs[vmyP D ١Cx DQ1:z_˰%g"a$SnV?[|/~J_xX;w_|!FV l8Ffu,CX?-R$Ck /KZ8.wІ] Q.TxoS֭[SAa*(!_ 5~+;eWʽL!#-i:S/L-J-f~=`A=rOY _'N(H$ykJ g]M٩º`"[sö&r$3 |Bzoﴓ Ms5ħ6/41RW_ #x7@/1f+&{Z&[XD{s}1%L6ǺVD |Q"~~Z8 ?yD[~&& W\:۪3|hO5bj[aqE%%.,ch@I!tgYM΄`S>Q 41F.c%;S&2^Tz,NvgSZǏװa&NLH)` EФgnV^<3LEK#L~'\5 <yvk('o6V-bl,&w8npP(.i7h**.vq0~xab}fJe.&{1D]-+Ԃ7w`os7Ud<6l+8֯ o21lA)aD_8)OA%ao*`**!3|gId>,B1_{23xzQ'-zF~հ#~"8GbJ@@&w15ނ':s)8Op܆߿)6ԅ H? (v#GڝDënktFXL K#t ?'=}Ucݔ&g~aFP*ϱ)@|rX.BAG(:;V?]wdnƣg ~<^bF߿&K!;"ܞ:܈Jss?tb׮]Z*qy)yQ:h7+^D516ڮ 9yg~_ +Vta8-~q9iƛW&OE[k}%ZM ,{"fH贈x7T'((((((((((((((((?ƟIIENDB`pybik-3.0/data/ui/thumbnails/Brick-9x4x9.png0000644000175000017500000003175513137372610021015 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+3IDATx}wTUTUs gHA@IhA ų0: % qQqq"sM>Z}Vġ8u޳{pN_q"dY 2# 32Ȍ 2# 32Ȍ 2# 32Ȍ 2# 32Ȍ 2#m()9\GO׮\:g|_lOf8G=0[u pM%FCy5]s Rز ֛E.Uc 'F?X?sXαin7(b\`!3_ -oxuAgu8_8X^P _Lk*׫.UpW^pBU$ZMTI$|*Έ[\*qR0A<%"o^~~ a^ߕM"1O.{w~ ց7|b7|% a U?`B`ηsb.ՆD&27?(hk!oZ"|^CF$ a7Ax)U | c9/K06fߚOdӜoJ2ӯhG>0ieiҝH7ijn@ e!5s0g9YiUqv?T?vjuOk ռ6&qsI50d Ls!5`͂4z!/-Cr\s'^K%|xLt_> DԊJDRM:P[j#bew!&.ᤥu9m& -.xx` {.U{ &0O!>jv&H4¿ Vd!K\B$09,r(O)=an ip7]CwƊ-Jr=,\Ps1p70OV8$-ېWS𗃦6>m'вmI7MRv. $z`^K񀛱!,,a [!bhPa[|j>cCf~xiy^rk O4`{$)K/>.uD6Q]aM.> s2:- d/(XteA0bB0̢P%uI9\R(2atE؅ј}˸5A ~r&z1_2f00TO" b:Cɭ-ސDL,LG3,5P.u]}Qh؊ty ,`BhahҸ~5E @2QS -bF)H(K_PY;l"pM7bf TZC,d+>zF;Fѐcш!lm{`+;rcXmF_[f\轰^0!U3F?=d½kMBn {)E%#z >y&m"/ UJB+N:v\ʟiut|הziΒ Mm&柭yM2CJcN9כ&հ~1LD 1<] ! C60h"M2qo$0G(R} t>ĹQ4,>YudꢼL߳x ?Vz,6̰qvR/,9h.95B\mt;M}ZVoIMk@ Zq7\o Z"%kk[1c XA³e,iΝdYfp&V@ {j-@B9WޞP o>(U/?Kb?h{ uaISXA v>_%~_Mâ[!a[,ThnIhhY;C^'/ C 1j  Z27 L Kz&kl3=LFgCu\Z +#HXI&{pToİTv^ձW}T1$3f!ۣѻhC[FK=.& ̟X4 zz Y-Z8`7A÷i{2l05ޑ-@B |o*FY&czDJAA$f1!$VZ+vLU+Uɧ.S;W婓 {< 4wじ#·I`;ck!7 ylkUU&+a>_k+AÔf*tqf@sZeY9.:M/qԀ!xָ|̻~z (Yk{4-#CJ}Q:PJ `LJg;zk|òhAf ihjBAZIԴ䅤Y^cL;$F\ Zߌ& ?b O!*p4oHO`Xoרu\Sd?PI貸CzНֽkxxIL]9.,x\զW%g9aײ٣&Đd3/2ގ$NK̈́9.P'۪P fJLJ\)f⦾q߭q+I19S}nDm*W0+~H !!7_,\qB@h`!|̓_acv R/jC" |hshɈY>f-1D2#C/3 ->EXne !.՚.Ju-.p֠ZQx 尢}RuqziBȧzv7pÒv-'\`I/X `ıH&@י_ǭXX,UIaײw@RHv P eOy"sy jy{6e'q ZI`c1'yyGͣ]-@x )>S 3jۺ 18coE^8j |1ðȅHzCn3fݺYsrH;Ga3y̖Ywx#Y5Xu ?ѣ˩@1`0&ոאI \p_W~̊j`7Z@Ա^vܺ#UBOȾң"&@yQ8?c?-8C$,pIE!D?fa/ k8]Go C> h3﹟ҕ(o鶱+Kok!=sx\֣0{N6Ԝq!uI_ht /_PDWOT5̖GrxꀀWm2ӭ^S;n7"ߤvgFEKQ{;0OV Sog%>Ə Ouj:X O<]jjLyGRt~T{Okkpƫ/`=I nUݪI (ri0n#0DVj7X7ht2sBc=ҀS->T֝ݍ&l4T#iV)mQ{HK<`@ֱN Ɏ _>(+rMT_ ׺ҫ^y,[>/K@XMr@FbG]g|n k(=]?g @/Z:bd @{I0w'2'd:+GXTrv\U>R)s_xc\7AX:׵Wz7*I*+t[#ugJ!VYWԂ zrbf}@ Jt@[fo0v)QX;qX8]rcቡl¢'7uX,H}bL ?+N{yɯQ!uZ+.btcU.m r1 +9n!}V(}~Ge=j#٪G{gj\/[=`N >;&U|EpȚ 0\[Lq _n2Οʐ/ 0Wmp!' L,Ie;7k`ѵ"*y".j%FqXt=;~[~ru(H`@%AAI|7 WM+߾1{b:~5O>Z 32U20y:k`]H-}~2y첓k>7LH,>ܥT_ouF`6v 탅cRwK6Uee󝅪ta>ۭoIMղEq:Ru7挌8c"`?NkUȾV|͓VNvHhajM& _m`l'O-sˌ t tv_QLgPѯ3nQ'! X3ZEM"TW 6y,[ScW{(XcKt;B[$`R,v*+ WI#7N8Bp!L2uW\MzH>vٝ`Ƅ/i_^Brjs cMTGڛb7aeizGÒ_HyUT0ՠ0Z],a#j]ǾYi9d NbFC>*`3N$QPk+\\&0osYD 2rv9.$02&~ 'Lz7.lP}ďnH`ED;.3osMRl u q?5/I/Cۛyդ!${ y<+zXeG?t}\UOnUpn} =!DGI7Ž ӡ`Mxhz1%> &i㽡! l!6#I&Z;iD,D*6 >АY`gڤ~qA&R{H{J7Y$砤Dv(_-u|`P?XV6.R\qLLgӤMZ,ձ t- hu+9 X> ^Z[".63q<}O71ݛn|ym-;XMPiQe>-ai&X. YWg}}ߜ)_<_r{^ ./pdЂD%!zsP`="ty:5XuȾʫ"hsuV%͆+X!00&nb$.4q , =@|{*oo )-*eSSgr 4R߿ M_<%vSfp$wIOAȑN)aghD &~-e=TB&r2-LЉXj(>oWvjh-x$`zE`.٭6Ap晞hr_NRNBspocXu+rxMH'|35.L\3-"''D~yO;;*"@ پwNA/pYS*VPrAQ$(1?EQk"DXr9ItnGlPQ@v/e3t dR_?? &0,zt\ĕy=zBRw☊EՕZQ~WݡIhrH]356ޝ=g$,Dep?Xmy W+kbY E0 U+*2X!4h@=+|5e^h~10ԃɛR$= [.-}kGr\JUD. nS; /V'ۺ$b$QKBԬj`/BHbsg@/py[\ԃ28 j. @V i-4u؅]=44Ak!q9q5 q$/&íb玏W͕(BŪX۲}Na^ꢜc4J_d_BԆх4#(9!$.F!:Ux=wꄚ* r 6Xl0L V+B5v m _+|caIʯ$h5ZHúYءg\|/-ϒ >)&>xe'(ouQDgUf>C'׸naEs<C~ $4ГEpЅx]*D:0Ys~X'{(k+Sց ` j?DBmUЧ70v5` 3K_gt@P=|}\XU+nK$M>>پ A ߐ @OB[8e_6${:}s  kJ X·Cf~GZ: NL0&w%?/$aSyR(y~7riGoJHDpQKzc:N [ $@2{_f6V@ tBl c* r2SOhi:j061$QHZ d- |}xp%"[۴>fm՟-TYGj_}li㦏CoXGFC` $|,?O[K$d`]GRKI# % %YrUA0RpB] 7 ` Z8"Ǣj"- 3Mrhc9dH?$䒍۹Oa.V\U?&k}dQɤPl-j;\)wE@O -txk(ASA2UH67 8~f=.r2W#4ӴS26v&+I&rDNB6ztBuO'{Ggc'ṡ=E͎+. kSz_CXd~~yɱ}ցl_䲂d5d+̏ZHuV(*cKͼql5=EAq/pv( D[x4Ftk_ R$ꄓF. J<W|PKj=wCŒc/-ljcHRΘ5%)Pp"Eu-%1s%c]~p&|B:BIvY^ʃ,Dp 1I$NgtGa ߾6O^;G; S\G91Aqլĭ^zm})yRh/=I# wIXD|Rk,K2+r2T'$(<)t#n^f cZCM}V*N1Ca;gPLxr;u+b5{;/;v*j3C1YnvcK`0 BPZHN̳*˧CI rXaTvE`~\=~Vtl)o(YxԱ Rqs A d%' JLpVBzCA+HscU- ' 4|]*@2 ѷ{mwL޳(.h<| vnUɪ_NOWt^eyl@0yqnDBYfya44"HظhVDEMP2=t1]=Q!^s euj^ÚMV_ٷ;$B`ŤcUˣJ'[={ 2L?RNf!#A H!5*Dt2͔vT1τ i3f#XF9DAAuە1Lly2GRW &E5uhi_lő:OV]Pe/0H{(= kX~!d5{|+(oKi՝pf;Y Eq$e7p]v_H!+z{Xy0/˥uNOfasZ`VʙfiH{@n ꕔid*#9:lh}s\+0<ʉ{ϫk@:jk3n |\S~O{[#Zͷ=, 0,zLC*, g!=4VʸnP@\` 1k%5nŹAWp>;Cz?SH_3m `xm50JTp`fH&,V:rywfWo~q= emcg '?wF{8zt%ͪm@ 2XFfDe-̔r-<xaLBI̬{Y?YS8w.ys}g4@CUt;쪳(f!i`9EHрw2 (oj_aaնO=}OÑբܣvsG PDF@,uhl?paXy\ұwA0cYSDt R$WiZ=̟gc\y!uxϼZ{ ` tIZ5AZrB*ĖV>KלJ]f[k?PyyyrlX`V-J78TzF#dC ~(@j<=/!"3S3 ^9'd0ïTgg=C+U3`E.gu (Yund{$y (|~;GN}=lP[؜"m$J9wqKH8V֞Kic9fϸD.GNWz= XHI5p8a)Y1ָ+E8!_-E7{lH67niL Zj2 Դ[)U'TK|dVLSOro_ iYNAT{=5+AP22XӺ=^_[.>SS lmK:Z]J91Y}>puMnپ {{s5%%GFX&=wF@pnlu~TL{ތӸϡ͉GL/L{=QvUc˓Ouo_'=M6\>n)åg{E"zt):#M g3dy"dY 2# 32Ȍ 2# 3Β;^*aIENDB`pybik-3.0/data/ui/thumbnails/Octahedron-4.png0000644000175000017500000003520213137372644021305 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+:4IDATx}w|Uo25ɤLz$z/ҥH1 X(n@@"H 1ذ㫮y}&3Iqn8Iyfis}gњ,Ҽh^f4K3 fi@4Y,hf4@lݺxIoY|E1!I$6/aoݲbV7>oœ߉-$7ٮ&T*j{$r…R/NUhBKgB_Prr ">1k!0yҏ$,&Q6H%/p,cLQv]b]\Wq'sM]F:.L^۩rIw,)$ P+` m'M ̳286M8N氋7`\SJ0Y ,t~ ՙyyU!oU.:bҁDHt4+ _8N j;bGK󟫇AJ (j :enɓ+4!\0Xne"ﲗrėcb/Ӧ^ܹ/E"B+h}V PIk^pBEl"%iʵ cJ޲d=};K, (Pt?%sXZVM*ܳ X^xZg, +J lvϵ) ,@ʫM2wRt/L ̥rTQ#03F^`;={ 橓+owe޲N[!7-J(5P<RI: qeu7gUuqR[ω׭ϱr3v E)$\$k }f9e`ʡ",>h %YO`)aaT*;iAw=GkE*>fsf`|y)VD`}BWe i-Zk1\ψ9L4xle6(b9/(O>""H"dddVZ<"Ezz: *"##E\7YSZPCw Y ܹ u%0`q9A@9K =[W$ARaw`UGXwe @% <>]%,*YH:%\|vؽ=*o,,(H/jr|L EVہ2H DNN+ڴi#Zlɡr1``~z("mkxP 0{* '(zY}Gk ~]<}3|TLR2.!qVhy*fi2{*+;3CS- x +>"QXbpK2ri $ud.nS^GV KOf.($`oΝYIm8< ?Hᡆ!v` {OZM Qv(Bmc4ˬ|J(=F?JE>t bD.f'+ V(cH*Ӣp dtWzEN8XQXQ:t 9TGiC`JGq=)W)>z1%`qS=Yn$G gyX.]np'jQ2e89Lt:8:#H} &zxDrnԋdƏ C&țQrC`)ĶuxHJJh߾=^FEF#u_|(Iԥ40ArSO9|PĒew` XF5d!-  E|2@}؋Hg|\bP>ZUzUOgڧмH!Yv;cE{ãv=(ia{Y3dA+]&5:[RCc uozw3+eOQȚzz)(sDg]̀عeuлǶ3^8qn8 O\cYUƄ89zV ]k"p6גoe)D{[vՁrBJukf8Lۢ"/_< ;oP111b:%mx|Z=GtYW2$b1Kh( j'vsױcGqqo7ygv%}4%ܽo[ruNE:PE9DQQ,>JtJd븳a!gVL)so|NbyoP%ūNb_g DϹ&ܥKc,*Z,JF|f M\E,[DAD(pwߒ~#M iMV7 %@XH7Xdu!ngw', )a?_J//vuG 'ͺ@Vy\u!{s@5z].8R(#X|RN$?x  A mۖgh0 OvN:!Sr9v]})BR{bf{J<&1qTک%}/KoSΧj2^v/rJI}LnJ7 h?QV  Mt_C5Bq@( @v pl11Pkɣ+SSl(CvL=y92J % kzO]C rJGt[t%}`0;}c>$_d@ voV> C#c|ۉN2c`>ys"s'C9`EJd2i)ei@52t ߿Q;H:h$ɧrpsi2 DiuFnXU%xϝ1NA=J{ H`HtG G ]Od(@npב=d}F)1u97yT_PHRԊ&rDX`Kx}\HA#!Dx:j9GHxdeިcapdZVJA eǺm"?eFHb u; B |]M UgN-/#21ꢇ o 2 o{x~ZJRl}Ӈ`ʜ͛Uǐpwh{C~H7MG@!f!xH/}_υZq0knP$)^o ʑd}db7 V|ύ^UJB 1R.غ2Zl_-4zdU ={^&p2k[%(xGE{ʗ܀9''dPn![u$B~ y5)Sb)FgP>sIEoog^kq^xpFI&H~t3}]QUS==vET6Nv~4BcER(= #\4O M!EV8j@QĞ@yd9/V(n{BfO#?Яsߨ X<-ADE_MT4%!4+>^L>t/=i kNKO B@8 w ~Gȹ|4sR 37W#?K 2=+]H{Y17V!rO_>̋4@-+E|/NS"K?@/oČ9StbIL~~?LDr`DVԿgo))qbM& $^L Dn.B@0e_dת|ȍ|ݱÌЗ  ?v #^Pd,r#e37]zv +G1,?m2`Eteᢀ%Pcc>\:̡S'G@{iʁ(@ۂ~cP*!@"⥌.A6wlx@@votݤbdL=_C?cqnB`)$BJ u?0 vhIxd3-nqc]O&!ju!8xwArPu "ϟfRxrHnY+}J(;mm4^N hSVE$sOဨ8NpC[, .vcݳKD$'J.Sƕddz(#>gYqCsZQ+_H~ XsSZ &zm^gl+:7AFWAeul|0ظVv'@‡#2<Ő+8Mܑ}'-|M?6H#3zyCIq6V O[ ϟNqg%֪'(8 nx7ІG5j;j7KN)&p7o[+UiagS+JG&Y\?l7P<5d)7 ҿhRbѾr0C<(rXc)AD K^)4XDgn֟v,͠ŷ9Gآz2_OB76yl;ӿsy^v;V6)b[ hˉ!>ՊjeY8I*v8$}0KEbd+#g'z2&x9 w8%mB4<Ug&Jt0-H  ( ]q|19(.AbT:cdRg1G#hcřA^xa?^2(r2_0oABtPĦ;5ܬ#iTƒھx{P^ .O"**5Ǘ7%9k)޽H (]U—BN Aޒݯ/?g֙ rG<'Q#n+DHizʇ`TM@NR*yF|kff@+HA ˣ+Oڹ#](aĬ@tgd ` $%?*A=2W_ZK_O2>-w&IQ}* (/H֮)HƢDdZQ j58~LCl^#~,;(C.6q\J | $B)<ȣnx; E_K~_IWq!6p2ڥ3]2ndKՓ]{!R\BC׭5"6Hv_t_@\b17o0{y!CՕnX8*P RڷC{(?X{sMLn-g Y;wT)a=zѣM3YpxVÇw%1Th!#G+64].yQO㢘NLIJϻ P'ཏ<_f4F Nn ˗~ E@P&;Pm50<'W% =9̦:o3Q¸ӫC0OΧ2#K<!NxfclMQxMs9Dbrr{כC{J9C$N˭ᙔG!@ $ribGX-b:{Q(eSRI! tԖB9 rҴDOnFE&/4NNì8; ?QIkt2RPW@5T !ՃXVn 7zEpoN>R#R0 i`/, '*bD$J (sϥjJp-LXg+cDKm[rѻ 85NSCR5#KQ BD5p?L(ʟ9v|%p(@$<OBNa(*C?E>2J$*U2wYHʟk14qϰ Gt+}>n?P), A#C9lz⻁y<|@~P:|ay *8uu5P٥H6CTn][lŗ}mb5 ~"/u$r!e8ggG"4¯߳1Έ7?i* S{H fn|ۢ xGV^m* yKC_8&Oɢ5R{7%߃zP Hbq9$ʏMi'@@c3   n:qǛ|f 8ۿAjMl39bhSO>LeYE`'+|2xt@9ݺq&c:[Ő=8Dg=ע @5&)nH⾨JFGr"4!(Зx8l!●22 a9 mAoM= J=ScqCJm?@ )mQ `ɘѬl9~-'@@ K;G…ۈ)"KEhTkOR IIUkyOZkgjY> e`3nY N% !lc䓳 w4 hUfA\)ʖ{/ gwZ R*˵@n`Qp<3}ma*zZ9Of #C$ ",J0`!Sȟ!V6j0\\@w׏=XAP/4nw@IJ̎Vn* |0U8ɚ 0HfLڈxY&V}HXRӓr{vk-ʇLb0t@ &dGn@ []U>jv9]á1D%π1`Ĥ*?VMVZY+T+'|[EɑK JJHi(fPX>Ϥ233"kY\|. o45?5`r3n#'{HKHa=LJwځ@0 !Nd"6*KD=#ŏgϓb}ت^$8tZs ~]A%Cw\m= [W%P b&PsnNd"ꌠW̟5Js(L_egPǻui-ZcuS{*wY^gh(?Λ_A/ N52zJO1 C`*X<Gǣ`[v)Qef(!!Z|j_O*,Q gχ;}Č?X(ŸQaRw͉0W(?8Yg5j>6TJL:ĵ7M-!j/L[q6MyeV"SuyDwAs~_^HaKz1hcّmZ{HP* ^=qIQ"1lF^qNv oh A!ph( A-A>hiqOqK|&?|eq"[ w䈶=b X,h`<"_ܣHt v&j4fy %8>"fqOW+rWY,{0 )jM tT F nZsHhʳuQ!X-('ظj(/k ŃAD0{xIH"[٩+w"u|hĝn^=&C[<(}&8|`$Pr&S=#R9JH@YGx%W[?_3@xb9f]l]@ʞ7}3 P޽ \uQD ;Y[b`Hj# s}xl +SR.S^=Buw0C@N$M/1jF*lLx&WAΝS>ty4Bj%;%ȢP֕,g֪EVf$bYmꞄYZaA`-۟ERYY%=SpԜu҇*|dT `*ƹAh7. Q*?ic#9 /[AmCL-{q!\<<6NCh B7a@vx=0}c \||l}0͜xZi[4.A-_]J[i7ۀqZ~x!Hz|*@<ʷEc0٭eP0~ix2ҎfG2k@(9E"GΉu;T.OĂז'0JGROLYL0wP|ܿWxl ]1NYRQ4* F" +wfq2l apj 1ډOɲ0bs嘆QZ]vn*!qCl&xjL%@M${w#O5ARVpDc#)#ESµup^+K]O6C TlXw 6l.ZOX[,yݸs, `IL{ٽ0by"%/"厴ra%egg^r#Vkn_Wzz[9 X*|FZV79t2OR"3~B8. /x(#ղ \Aqh `>qHP1]% iݒDx{5-{ͼ)%UcWRUA|nŧgSX5o CCUMaP4Rޅ ^,gz3 cDFWAΡgּ`^L,C:3&@jb08^Η!կ̫hr 9yrEuU)ٵN \ڱbɊlpskd%~ߘQw+e%9)$P1 A(*Z1(p"pB"\rL^"UR? (+p0r%ò^2F'hEX+cB#s p|a#`wǙA߾ި$п x,ABaЧj(F `;%wrYY1-Vf_TTL<$> o :yS:r){5UznYaљz΀e1<23wqZہK r,"V\8 $??QI ~ϾI{>pOyU1ï@~;~yUUG9UL'_Pjm95cM7la}fň^x^T;lƦ&T3hOjuVSOE-b*ТF U(R*0୪97DV3kn]EVgmiEf{vj{|rt,]=PX̓H`kK5{,ع|*mQ20*>OQa4Ƒ0Ogr1T/5/4/B3 fi@4Y,hf49KT*IENDB`pybik-3.0/data/ui/thumbnails/Brick-4x2x4.png0000644000175000017500000002277413137372556021013 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+%IDATx]y|T{gL&dO E"oB"Z-VAP!ZZV_i?}9Ν-L ̽9~]k%^&"5 ,`EK,XbX"%,`EK,XbX"%:|،{^`-uwiWK6lղmz"%?a\mQǥNTxԩZ"!m~~Y G(W3{>Sg v^Nn5uirL"R2~CE  6@MTW2r;TEN(6-gr<3>$֍=#MU֐X3h`[\c7H9@OPǸ.4\8b?dtiRE_p/QMa0^Q~)oߤ{@߭#2Ib 1;7{)nWX^eff2v;G`Uz +3?vi$;LTu:ٛs'44+y9 N @6a}U?L>Vpͩ55*0EMSPVf\% B|J6dVK_eNe* ʢk^R}]6򼂿lZo&ϟ"pfO?,=F{[Jd8 vp8Fx} >rmۥv֍"!ӧka}`#O5:Jl[҄$S0PHd(**b<( 9l8eݷ>pMg#琩ͭH+?Vw~x&y\6p &hB_MPd6F9TVFDII 'Yҽ6vP-Kf#_KA;{m+> c yN''yo4Pu\0ON&9yd mrDDD m6oߞ%74 j= "0e&9{ǘ}23bɉ5Cl4t+6~ wRUPV=:^*hl |iO`or]mj!s'>PB`^\ ЩniP+ f`!0+oi vxĞ2*Gϥԇ|g#}6'ωн{wLzdx IKLC#JiJ!5 $oCI|&iMvdxP 8cLkΡgj]Y?q2DDq a1=?r ?0>?"y C٣Hef;޳A!2a#͐+O`A?>!AgM"9"9DAiNr;+A"MiuicRr^M73)PX=^ >tMw!i dS3;MgJz.HHϿH]vr31N' ј07 Y;=HEy#C+)ɘ4zZ9i.㗓)c4Ʌco]z̭hI]sA͢I.$&>yN}r fhwuA] Ͳ >/l!"50A*E !#&^`=ɘLzGO@@)RC`T`h(*?2b}0MqGrv֍ᚡ׿{^Vo>}3%t֬o~bdD}0~{;01:"8F@D05]NndCK|m24I '3n*DN"2Tegq'wP?;gE4a Fy|8)m =\ R+Nb3G  ljIvqKǟqΏBZhoJaL6d MxcS%jIK%7\|dӠՃߠhz{jJ"],\q7oJ=n/ 'd@o!ee\7T&Q:BHczlN~B|rjVC~˖ڕqölZ@D PCJ`"B!$'LMסC`%i^ٳA-!ׯ_LC;+|_Q74>7u)tƠzg//PlFz:|L,Vspޔy x;nj$X`hEЫW/n& ?@؝B!j8Xã^ <[R~^yk U2 M-h ZP ?WYrm% Z.gY נEetWkkh$G_^߿~8+$dL!kalF'6Ra/])~_;@Bٴ2[|=HMt cL$c,b"-L6 0s0;$r'zac'^+YilHg'%ʚS"fyZ| ߦ)2$@URB+ t-lZʆ` h =f=RW 2 u]aDVx`殕ɜ]2BѓIz}VA9M`ˏ2XRB4BaakQVZ+f:=@q޽'Z*TGXͥφHzJsS m~-[@2 bxZ0:S|©. ^m'GkNx!d4{"On0CkrX>žxY}|j_K e,"M0Qa2X޾MWAE"H ||ٯ0%hyүгѪ"^G^o}~]sJϗ؛d/Dk1c!7qD_/V/r20r]PyKu#`rרUMu&miԅkh(/U4=~3V6av:X:˶Y s4)¼0Hc"VJj0 ,U,5KL0 >N!PNdp `>j|O/B,qwhn] #M![M[ >V[utEVң '|&#ʋU#}Ӽ }-ύN}´% de&'3֬LJ97EJ{b^-iI0(I8IV`3b}]+ ]<∵ _h_K_X@-{ 8 L\$sd̖\e;}zUXRA t3 8ʃHEUHD{i{8_0quIͣh2[U 3k4͎ɷq85 S#//=A}DSm1~]*΄ N8y~OVYF-IȠ<@ ;& ez܅Aא``gBzI&^a2zҸ%}}ɄRYG_x~6矻>JnMhZF8H;5Z_Xs_mO1!೽9%V0W3 @e,*\Z!!cD}ݎk u4.U AUUp/>d5^1욫D`' @I M 5 2qT3\[D ^fwU(")Fd@-"Sz<4(ijpLhGyACI܏}|3H(lU `gyY2+t@DGXDUj8|v$uhEҦ:l BHݗpHMQ$' ͙HhUx20op^(%J)_ct͛#khuG#&?y`g[wg:/hys*N k ߳C``8LVhD &8*NUƂ69kJpRghyhr"2.⻆JN3Җ9X&%CMs~%-%3dWo?8F!9,Ug(~MvhA "pqՌ՚y{hg`(>[6nM@jpr'5"@3DޛI@Cd2ȷl_ Ҕ@"Ə΂)£¨PފRtAȮߟ,xlG{?AS/Dlž<~;F4ӓByQhLd(ՎxAa115tj8R4fLOh8pRK{ }Dp3범I4?Y6|X7_^3J7*߼_ACf|oKKE018/o) e(( ΫYUPXH8 ALr}hдV$o"Ѻv_/1"Srx߿n?GlÂD{iV@T{ؘTm^<$Cd( PZAO\)ACa8GWRD>ܓ"PB؏V̱QEy4_eGUmX8ak}I`ԒEXL 6fڅҝѓBJ H{5 (3DT'^v\MѸoi8I.G7֤yHM=©n^;]Rqps5n @zH|=nRHf6#nyjv0B1 :zr[pBLA}*>{l;rH4A{ v}DX+U3<zIlZ-J-ޑdf՟<[ z-Xb4N60O4dەV Pa"j\J#I"#Ba575839D-XOX0T)` dL5_$K*(HHwJxRB䘠ANR]W 5 '5NE #;"KZa;Zr2) +'C!@h(jع!5پ8k" y(IWn4"^Z!Pf0ɱ/,qsDkZ'H#W& dX߸eJ9'ƛ7;秉T= }ّl_JNW{[2$JBJ^p hLp7݃$@ N&P,LhC#wDrl|⬂T/LA ?zs?!Tήn!BB̚vW)V4Mnw* د$H$JC+,Dj| )j FxCi$,Kr\V&'23# @l)K-gxqf2DG\s$wgO_=A[ڳ眽2'Y9V1_ ­o>D "$N#8e2 d*HFqkQZ-6~|Af~=Ԅ9o/caK]Y=3hs `Ŷ5EJ^%v!a"{2U^JQ 2kV}9JTUx.OYVLy6YϷ;zia^q Q?^XA*ǭ;A/FX$ D' p+WX2se2O!S @/ &[D'o}' !~;E} N~m A:V/EdЌ1. 4Okkw}o ú][- mxBd=* bKeb.pF-D]F$) %& ޱ8gDym~۹jntE6N:/4 is4?'dL o8mhlC+N#r 8Z&^$\M g fNe~؟N2'YP9ػ|47pԂ $>sTt ;őoo>e <%0lT / L9D'ok7 |2BVtp/ %}V>`ڍ|9'q[6ھqG{r_1gOբ7M1VbA$@/"6T-hpH;;hߠł ~t/wq44םaFTfM[Jml[d_[oVpe9!,]6Qzh JW  O/BBɛE  MDFfqrII@?wC: ZT$j D+G:Q+*o?}/қE5q>/8Dn5 gxr?LWG*{L!M3f"T+yu:[)2gAnI_ضnъP(E4(5o~^N6=3EE3>clFUMu#~6>jRk`pxSdu2Nn|K9,`B$c J{Eř~UUh kLSV{A_s!˷dJaj02H@e&`}.۱ܵu[Ha pHYs+.IDATx}y|U9*P־g "".YTl4P!"مȾDL{;im{|v}{ʛJ-oz{ss{n_?eƹ;2@f2Ȍ 2# 32Ȍ 2# 32Ȍ 2# 32Ȍ 2# 328džY;/NB3=GaYqmyy{' o 6!C< Nnu.@yNǎ*[׌]Ɇ Rm8lBϒ aX BQO8_ &~{+aA"$WEH%;]JuڕI\{;=g8l"{hٺMϷ~Yo'Gi(= w$]q{wJɺ$@ w2κf!IQE${IHL 0y yYJ;&G+^8}6a݃A!M ms&;&~s:7 6o!~*d,Zneb; 1?vJ%K8v"TqنϿF ?&{gĝ'^[ oXB/"Ylވ".WpmVM RDQY _zi:"{%ىƣ6q8H@딕>h$H%0 $>ɜ+ KxU3* AZF׈999agg t,ȑ46L4L^/%|,L'-C׶ҽ\E.L 0]E|af(8so;I{bm^{5P~p.^|tl~H@|>L7{, ^Un`e * H\㲈rŻ[J4 z"IP~U_gD Џγiikj`.+| ȏzi>W jՓ 0ʡr?+RJb Bh*"3Y.`^RQGލ뫟#<ēwa.5[R&Mi a"rop^SDk :PeqE?AO>_BMܬHG l`˵)z(F尛(,,[x[|y-z ԙhB `x_d8oPޘ|igNbn[p-a_v_nc;=;H8U˕`PeQCqh=ϡ4w1jN@sv!8}Š$U>WN Js8.8D"s$”Bxtub096p~ߢGqo+r/Ԥ DT| |M U@S + yx0HBJ4yT.FJ o㊰qJsO! <6MDܲmf89rЙ/{xv^^Bn}gW@3;HtW~zGLj>(jT`{ɪJz71{!{o> @ASq͙]7p\EF\4h+U7p K=y b:/y u0\D?|xI*p ^Ad' tL% U}#M`x!ٷ8ރC(_Ƶ3lܲӍGB5AGsq=$&$yG™,C! ~! W2H]% dAЋUFˇw]=?X$n/%Zpy)4~\ ;U\<ȜE\1dh+ ˵Қ[Uvf뉺 [|/T~x)1#Y%MVrpIڠ $P3eB_ Y${J 4_9bφ/Jms="\tJ2!kb贽^i`a4 :.@ߝUtMλ0YDA|W3he$i Ba fzɮq!ܛGp8K`"G5vfcM C"cNp@+ rR-<8L/aoKs n1Z.kBNl5g;MS]H(` c `TR2^YC8@?MނyOt .AU݈( o/(_kj:`w]Xq]U0`~:g $Ӳ#~$ɅSq0%bh$ٝgk6܍[Ew29 0ZI׃gױ@Ul}E<Q.nDP_axscm}Opee!RC/ @&D6CC¿g7aMqx9Y#؉jZ_E8!  ؇UD 5u(ĨQ|NXdOM_F&{W<>|]Hix^q~+VBL 5{g֙/CɕLhJ  ȥW)-=#E19KgzHr'6 0\Y8%a5xmv#QP}fitp…4&M[*˗\Bc!<6:1pL 0z 0af+1ѩFwG4qZc$g­c 0п9lB< j?OR!wķG"~Ӿ(ʷo-_tHKMնBٍkH[@j>d G ͼWVtd.FS\/t''&BL&;[wHSqϐ2CU6݈ tƏ" t9} MvFoSB&D~{@Z߿(H .JšX"[4uHS(HFgد_zmv;CEad ZZ *5P+?ף_MMa>TC_(*<>)#I0$`SZ{˪qNjl臺"p(PT%ƷM%*Uj_^֑̉2Ҍ {5j0жtJkf䯶oW(3 25"O.BPA D !K&os<=UC䬒BBƌ z1]tT^9qWeҁ?r 7q!-(A4tW?Y#=ЯP#5`}۲ި1\1' >+E"OŕCcUhEA2ӻ}0.;=ۖe_V+r&wLzŽHzk`_U/Iߩ,v`}M|Rռ Gxh%. ++/ni^CJ7cS ~1c-@弁7Q*ܗUȷF>iʠc&LeDi-@J; ^ @4=+Z gOz =ƍjaih+3z}|}{JOo"l٦&׭ZBN,YYU&ra8s֝B۝r s('OE{%yt<^'uH.*,o8‹/7һMdwM Qƿ')i8N`S@kw`q@׼J1.WXb6Lh BL2(Wf%٧\^!j-D5 UٺP(x~‡k *"/z I8)I>]d'J*_)XF 76 .JI@`+< 8ך/xxGc5 0շHb2wuOAϑ䉐Pl[7!xsx3%C)z)  `py MEZ^h[DyDレ+1@ /,x}u( ?et1G߾>KۂCnXF7I {]k ql-呖 gA+Ի)OnS-8@UBτ*dJ5HC?D=[J\@WY?´N_Qa]ۻ!Gx3OL)[ oD Fк% Z2^MVEBQ+` DBb&#Pt#sF!B@׶C z~_ n3i r%~X=+C?'zq2vg j."x1v৐ɇyxk&>RH_VHBlLr @G78O~ۮ R 8_F/%-A !nY݃ur|4T< RM% `1 lD $}Е U7yϏ;k}xVY5`mA|~p|v|? GOswlS϶2aD*OkjCo^2ăEpu\@C'_ҊGT.}DY6uE|_'9~AdPTD52@d}Õc塂izYZʾ7N5Di;bk֒d@y12H2$B23(lD0pDaMh~9bktW}˶$]$wiWH%|DƎc9GeX9>0#@x8No7 HTЇ^~YI#\+D?+{7r!?"~7'>`l#?Y=^{J [8/& -a ೡ & HOCƱ3]t1co˜J8Ce}+d G2h۳-m_XsIo HҷրX1'nV7rM r-('۾.o׭\&qX&D ᝀhK<фO?27UxQɨm+JJ $=dq YEuRxcC._4M/1á:9{KӝZgZNj]FSE$@*\ HKi:d:8VN;{K􎱶@w\q+]=Wkg{ +|CtD霥&DG@.a&| HI#BM`u*E^wtW tpaYz:$>,b&ۧQN]=.=Vs k]-KpmX|&g`r H8`L :#8xZ;$TTT#BLǡ_>)w#w\aӤeVe9lE@J Zlت(`K3ɹx)Œ+@]ᓃ]F"8J.12nfSı*# <^EaOxL5=ܛf^={X; +:Wz_,-zĝ <+, ,HȻElX ?7j-dM pv3ZX|Y:4XCRM|s2"USwd!}gcf⍼Vw=m@Ӄq~AT{/BZ"O'{) DCh`G\P傒 "WS)ij(D !mᄗA8| s&K> [}9nnfG@7pL.QnrN ̗q1SUg)DS/@h"d}@"ސG6sD"@_%k7]:ڻ!KF^Bc7{ڽ ]w*ws5u[4Tq&Y.wa~GJ~NH ex-*\Dcb:U]8 R UOpRDow!יY߿uGd_9hZwOo\lƥ}mC}-ͧWCLo mJ P2@wJNN4QA\Ep =ȡ=bq<7WoϏsH#0CGo}b64Ʀ\<);GN%X|N?|^T79~ = 2d D y.\G1&]f,͕uȾØ1|r`K\&L%G2Ɉ6v-z0ʭZF.qq$O_;'pwmNK"y-S!sCc Er O];Ui\,VAONoU\I9X9~bPo gu}Z̭޳'Ȟ>U3#ѳŕ5|A#bb7;PB r: p_&N%Dm*pS{ţXX kVJl1ͥ\*ۺM4 ~~0աFBK2 J9\1k||/u=Oy8RY2|a/Kk}=bN #(Wsf?b!wtlEnᛠjX|9 * ȵ0Y^[@ۈv &!DE<_ɥ\_DGB\^2Hپ#x[Y15x9U蟤͒pPl)9_nn:& *wrp=TKй|$lgR |Q]~TF||="p.Ydi*I9 L RݬX?>U.2$m+DgKGu:V"8u10GW/Kէ,5@!;| Ww &jѪb+S`5gQZa@{6s<=쭭k}w]F\RV4$7V(Lܷ.&wB>4{G-ޏBY#@ܽ-bMq7P. k"j Splc󝲟"-Ӭq(o+|'e` 9t_͙6gڄs{'s)Mx b*;%cyI#`vw y}7r[Y:ʩi>`2>vXDŽs%,oar"#CVE*%e^;8˭^طoP?m Ǜ8}9W4ZmՅ=,)]kzAہP ( Ovt,=9?*ĭX߻ϻ{O¶smI Y@}?yյrB[#[T3kp/ZB_Uy}3y~R0a+ƌ3mz)ĮB^*3Sp C.Wͪ~||N:#}s:čӬٰ99͇>i:' 6azޏ`IT"uߡ@~SN+՜ r,ufQfTZS;pNÖV8wәeP9R6 K5M$Pg^/T/0{F4ݿHjΦ?RfVEA~7qlϳg`=kL,cr5bg`=|PkFF5q`g;fn-[b+B^/ɝk-[epCCC3Ȍ 2# 32@f2Ȍ 2#8Ty#IENDB`pybik-3.0/data/ui/thumbnails/Brick-9x2x5.png0000644000175000017500000001552413137372604021006 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+IDATx]ixTy s;v `l f_m0;xAllj/R l&-,bQRIԉ]IGO4m{j43aΏ{|~sG_[~Iۥkz4"hhЦM@6 m4ihЦM@6 m4ihЦM@6 m4ihЦM@6 m4i&H0{zcuv%8[E9mG#}cmP8x9WT {[LRT?ux%^3fH3pA[!MqycH 8W/]K0@0ՎH@g=bF8[5cmKa0+|p"p];FfA*FhPUUz>4MQ0ް{wcBg8^'{ ?`Y9(*?UD>p"a cu` *8?_r.+~b>QM_FG3}>P;b7rSԐso3_AT/ @@ jw)/K`χ ]`Οpn?%v17K' ? 6|2y$sTlaYoCC!^uym8e9wO&DpQ͜(HH%p<) r+BBgS {-MyI{#+7>3XYN-}< K m7AȈ`wRBl5A̻דjh/`|+Hg@rzۏm~;lnO< "0_FO.:~CD@%CEƘTFx"l"f+*=q{Ylr*Zya hqpf8fW Rĥs#?4D)rY%UX">a]A4~+䆂b*o;K!IŜV m[vWzK&aJ( iz@\0PiOc+p-= lA3v:={jab1U֕rYp\!Y"d Q@nn2Pz)r}<JEgÞ&(eEb"@ ܗ ئ^O}s4,O+ ێLڄMbH'V XI`ew/b!AF@x)SfT(eNKьv2ǐN jN>g0-`8pqi>iqt*")JH>fdnpזM|5F D4it)+2n:#F`;i}n=9("5dab*:XfǸfS0<|T,8:d;zЭ[+NχXm"%hG،%tD:J[0#9l%$ ׍bܣ+:G!LBD*`"zj4$Qa8n*SdIq,?<`6*+mc.3n[C0EP1%(7`ŢW%, + .<שrp0"rݘD06SYHoT> yDTnt|6!`x`xq:m(-{L{_f7|2f\p.,:s1OdJ)XS)*EL*Xx=cj;2P8/yx3L'RO>7=NtK5gB, -'SYYicK55M9M!NJ"8߇C:@Q)b$߆{G%S~vXMĘAJDwv6(AFeny|,>pfySZj8(>t8J3R>fu%O]_ ߊ vkM[hv:":8 i'K|y'!(7xyWb߶1f <La%rB)_ Th);85T0.K_oc}TC;E'ބcjo2XV lV}1`o@jt19#|GCqB@'oMbX%zF jL 6$Ha,6xj|eWcJS,l:LUhȈ!EWEmJ&1L岤,.ss&*g.R@9v,؋"E\Ǎ&T0 ⱻRw?-s`Mzo{k,,C~@-C BW@*pllk"(n5*J͹@S)NIl Jrr>"zJ7^ש3S_ !} !{'ިn(qr-5MyKpr!4Ɛ!-:W 0!n;e"@ :"D)ib9~a\zd')Ž"4 EJ2#pNJa9-!`v 7!׏KSw5,dVHޕ'~QͿZw { ufjbvA;|d˨]A@*Kz~&P)W ORAU뿄׾ '3:o, RDqL u]O@|$E UPQ5_P3YrH|]*_zQ?DV^71oqmg^r`BX f ,'M)&$Vp!Pr&9jU?}S? W=`jmKr Xܒ60ǩ 2ﳜ41wݭQ)_ocl`9s7@?P7xU HHJLa:RvowN!=xVtp)buR@:p $ 3# }MEr{z+)#+Q'E\T| p[H->)E1dg̖g_# {A+HJ_NDQ\ȦQy㳃R=2&ߟx?v|:?=tqe99ݔ fOrLNcڲl 0߱>w ]P9u}-'a,3⏟IlX=IPZb3oHʧqu=siB#缂K|mΒ-࣯lIE;/dC?v˷w e;r/xɧp 97A+nv%ۙ!8_Z᳖ښU Δ=@P9hPkO QGEЦM@6 m4ihЦM@6 m4ihЦM@6 m4ihЦM@MIENDB`pybik-3.0/data/ui/thumbnails/Brick-8x1x3.png0000644000175000017500000001042613137372572021002 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+IDATxit }gߒ($T. .PZUV{U Z'zNs|C]nށaHI2s3>yk, & b & b & b & b & b & b & b & b & b & EM)k G1mjum[hGx<>w~cp`pA H=x&)mpɖTZ`=,ʍ9/f0` R[|'6-@y7ym۪QS/'=USeYߚyϹ0HyK9tRkuE'w;p큪0x^Jv?8J3v"@YWȁA}@zMwpr plmp^K"u88?> x~ ?vLtk_G+G]K] trr!<|VTߧSDm(f\ias6D p{'} ׹r)Q`X)4*NZp; x@q)³bz8sƎN&D?[۟3;ay? g<`>(q Ȍc< FُCM@^G0^Gbޮ;6B0t{?wY'X) W0λ\N9 /c. #hⱬL!2׳/s!,MSSo<2ܪNBQܤ88x:w9pj8eR"8gwa|=+D0 g>prdE1h}%bwt`/4taZQ9aOHq{a"=*q%tqdI>[QETj*`oa* g0:D\;h.V) 5,۸Ea'sw>hdz.`阏QMW*`.57wXPﱬ0ϻ~\[S@d=*~GŮUR ' Ў G|V8B9Qp ׅQٝTss/ gPP6ӪfcLEl "WOdK [gZ:cN~ԍp֬p= αB[/+FsJIϱ1gg@tؐbuR=K [2i% ;1pq"YRA`0KEވAN%ud*>%)֑)lb'/N|'2 Ϗ *}B\+Lxv"sF\qRU#r\"\{ ג O7=: Ӂ1SDb[Fd-{U`+JQB(b7G1~+*2&M\o7dGEVU,!NZ%%n18S7\0U0km?H2-Nqtl oFO%E|nK̺ౌudh}-Y!)gI\iL6xL=!)S+<RNt"ypKح[^L.u@`0JafR"'E*8z!?|Ӧ/sn8rKsD'()Un`|K4j9x}-2ib5#>Y^qL[#5.4X3mO-[:^HbUX'`9`#zWq^)9눙ݕDS,BH#Q^;+Ld'dE$To4)",CN]q$\ zGű򜁂~j C7 .q2Ozy" 1B6^bOLR}!L-)O:.pJIV 9S"H(0\c.S/cL,bJ]vt4gMF릒S*W0gSD[m`7Bcopֽn&]hM3-=);8r Wnay{_| BuiLa33*I5ٚLE;&ZS-j8rNQp<ܣ#(XR ty.?FU.m[[^z0w>S 6Oxfrug:!p`Y(Qhot7\wH,S D ": kΧ6ཁ3=W+Լk.Q-kFܥci:/J< .wRD&PP`g?@x@z{WJtnH}zK|X('SN9vRvu)"P!H ^KzQ6Vwj͢ڻ_G!{ !ZR}_U5F]U/m:(x"ǫhY=s7؃;qq78V;Q"M#}d lJqG۝>_֨A'p|ym{e.:600{ ?S{vx,_8۽8eT#;n2sꍧN<֟3 릨m. -;|BuThNR8^贑SVkߴQՓ7!#C"]s.:^^8G>(RA1@L1@L1@L1@L1@L1@L1@L1@L1@xu+IENDB`pybik-3.0/data/ui/thumbnails/Brick-5x1x1.png0000644000175000017500000000606613137372556021004 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+ IDATxklSum)>ǷnC FP"Zk)ReF7[ B2f.k-EU5mHIVO;qbm<M>{sWM_C @ @ @ @ @`H0e@; MvsLvZ [ 7}K×7 Q&%|-D;n!/]0 \63M'k*PSΎֽC7MuEQ2mG02LP{J:1ה 4=:x^~G@'b5`)KLYji2X5G@0ٍC+Wtq :*Xdb@%NMa8If4 ϓIO 4VaX酡X/,0@U{o#^/+@'=oc"J0PaSY0 ^El6).2"la2CƳd$p[iyj,z{*+8W/Lb ed~f.'GDiA vGv N02?  ^m$*l5 )T VR^x6MWi/ƙG=$q~-fe]HFE i!+C3 >N?$3:S|&8ѱ3[!oVd( `Y , I'.,{+S>*$$_Od#ȷQ3.8@6Cր^ >]lPyFJUKy&`8B*;2z--c724+v8Q *|y&io=\h u2l` U+/X^)A3b~a!cfRV Mڎ>ưAе$5 N7OGKIB2}7:r?@ hk6z~p9w8Mʽos 1c!A6G֦&<XJw+qrxR2Vs-4IAq-f?T/RH9n`м6S^XL0P^%Sqq >A)%yRXH6%=~ӔyQ2Ok#J?ĥW1N`q8bʼ`e())JUD;ԡYA]J5>R%G_k V0\vlkwQikuJrwA*x9"Bii@d)CTOTj{y5斫0Z@+E$A{*$/J$ )/|dJ`tAm|Ztb|`q=n 3Li@ Uc*GrY &_P^3#mK!Q.ҷ |Wm힧a#0 I ]4GE "***$QjPeygǛky!`kw'7[7C(5ql8`c X^zreUbA)N)_E|)q='(8R2QVFɪڱN^J& PI]bRl9MF?3+ `5:= a _;*CRzbBAAk⋲Yj޾͛TiC`],Џn~xX լ\:TIwz}"W @v&iNu,@Yϫe@dzLO1NSp޽59|_"pc~Qq$X73G7[&RGkAj ;0Efwe}A29GvkV "[wLv o{V\ EY (Q"ύbq@{uv KS[i aqOMoUdߐ^lu-Ӄ?Cpti8 ¼qhú.oZDDwW;7|˯`x?[ Aħ]yݓvMfekf[{=x #Ѫ;Mna=U" 01[lg.@  @ @ @ @SCaCIENDB`pybik-3.0/data/ui/thumbnails/Prism5M-4x2.png0000644000175000017500000003323613137372701020764 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+6PIDATx}w|UU)(ܒ{ !!B^*F,؉H'tD,3Q(sik}rr9!Hc}nrw=>o|->G>#||>G>#||>G>'!D.-qDj\k~"C%r"8Et%:UT:Z ???1zڴꕉu-Kbx赤Ⱥqu+WT|v..+8{rٙUbs: Xi փ.%F%{҃ۄo͠T:n1mڴ 0'ǝ$W>Mkx^_q@:l &hK/\KKjVZVP lhIET~eh4`ъĘ}6 yƕHXiL! ?[⼝Vz\;(82ƭkz 6 BBDl`HvD!'qacM&iMw)1+^1%^]0hhX5W SC@ $ s;ꁂl%{JjKU5,|rX$3R41}ӱ':v(233;];Ѿ}{-ڶm+PDxxv4>##Cx cSJl]l= l}miCb,h],5` km71>0s6`j]~MeFbc&h&H^7pNng )> -Pd'1yXFA17& 8sxl)DS B247W$X4Qa!,??AKuI"Oi-99Yʼn(&ƒE +k;@۟ v?_~=FLK ~-iq,a!a'U7>n3NH-w:[| >I-"QAAbbS,1bN\LY<+C\iiib@aBB;|@ODMDMZ|HcJHzD j\6Lo#Oq;OUh+Tzg`~v(Fedeg_8(rH]NQB*R3?O &;2HGRJڵ+M;x`DHKQ@#\6ChjENcg̨QYaAKf w* <~S ߊpfQֆJ$4ݟƩ[lr5ys%VV۸Z߈<8Lu CPu E3";0pMHe(TaFb1"%"4 4VgH|$BCrafkT8b^K 7_k3Z]ĿRؘFzT)bq"*Sg{߯U4ڟxB:a0v1¸FYJX8o׃PZ@!v4@M|G+/!"͛&nDςغ6 6=]e@L${Ey-lYjz2_3VޟWJ9ac3'*-?F6 Ha4|`tJU 4K'n (~B`?8Z{FG@Nh nKӗ"~:3_ӣM0=LFT'z\pV-?C3+VTiO68$ `.4g{Va| & ,h] @q01z0lrlv*$hbv+{1u㦅kPd9zF)ߤ¹D)mc_{S`@!hAuw oC&—4.755`~`]څJGNBr zX,XɖdcVcb~_ Rx&8פʕ*AʃXt@a-uξռNY0mnSi>dW1$Ns|Cc'mv89YC$z }d~S)=[.G,Y=hdTЀxNx֑bA^^ie$1 \K 8}F>NyB3H4jUvU^"kgҥ*}Z{n&)k`tPB`{q IP䢱p=;qDQ Ǽ$UT`5M!G|S7` 3 0[M>v={>DcvuGkdt_ eu̟tY[큢(m4 w,U?gRM̟l͈XO { EH (G+Q5  S6K$@TgHφgP.w5HUX^լ@9=!B:\TDzР@niy;d bQki4>b !P:#lr6Ϊ0+G0nQz8xiXf#z4D &6Qo8c5Ee~fYڕYHbLYVqfl% =+7Vj_7R4#34,01 `E{j$A3f<XT >C:H@:4qI I5=`.v\dFU٪yvy.X[&qTiڦzMXD7>H3 ܬ= =aδ[9O]=qI0~MxO'rFa_I_!~Hr@nHZ 0 8̻Z:pz}B ֡TSi(wl#](|ÆS0g=uA\k< `?Vt@Oq5ӑA`6HS^.QjD|Q!_0‹潜 ;%;]FQJ"ü0-R;mɤA1f~>D`:]v0 ;UWbς{dtDCLh%v z+B9y83 ˈfe->WnldQI,iB Y} 4Dw 7-n@#OoHNz?0͕¦gc`gUb}84xF)f8`ڼNq>EfU†Fc:VK `TS{82ҒnNh!J \dR prp&5T'48X75w8a@a)rc&-S\f;Zou^L,S1NiOSac҇묧9d"چ}l*S 0=⹴:x`$^*HY@ ><eY&ZCU3XU(µR0vK:V~L9yZ ܥp;2Vyqe3@ݺNHx?nrhyxƯ|ݚ(P+]dJW$ "|@tK'iGK~ v]VM4uK ֠A9%`v21*d#&YnwO\GdX,\$ O?u9Ç3W=,H':)f Hic Dk,pFC1֮*hOsLy!LkS&i0 4_-'li$2`}()+F>yHݮVRw^*x Mn+oa08- sq&jO^N=Ț2v~ $g`UJ5Hq7 PG $U.Yzh@Atq!V>HKx#S59.2Âĥ__ q9ip@| 0X³ 6ikH y./^ZT g`[PH徍bw?/o/Rvv[n.x>? CP)&hj h_@K~XD8PRڧPI 5@48ehias8%sju5ٓӽUFs\Ҏy$]P[#ğ2 k<u&6sf?jHtTV[#4X9h!"$9$1iaÃC#|'IL~k%1&+ێXݷ7xx:,h:I7]`R>A#coy-&%`uW,lwb4& -Sx0 f w4юz>C aU[-kIKt+S;dmI?LbI !W K;Oח? P&8|j&->NL 0I_qH8[hv+iԬS,ALһ@>Cb;o# L9!Ġ4ќɩ+uLi\ rBZh!!~9w6ѻ#L Lcז Tc{'^|1ya M5X' ;`rrrp8`\lHhE?':!%>(5E"{8% :2FDLT׆z/Yxhxz18#> Orb!F)-5LsB+ޟ<8H1*;d ;vI4ޓF#ȸfԜkYo37[:^=0fd'ȦS5Bt:E8Hz{VLۂ er9# IvKYL'/O>>#hʶ3F(z'8h&Tl ߇骲V`.ҭ%jFLI+ g*S,v:?4‹%c.7WShq ,sCf$n?3-wkY9p Hލo|bl5\`gNP͕$_Շ5Fw glnP&x1 璱219uJ7P $ 8 sGZS>+ Ĉc,-TLæ)x=J #% ϑL!֜l"B?qzh( a:pS(s0zlY2ƃ+d"/aw_tUܳf=,:('NrbNhDdśM@r-ݲI*.Pwİm3t$#0݊JW5M 3`kC̻4,'!m;H ',2߇6I=[hbfWL{`K惁 @X?A2`?4|5V  IIX_d'7;|΍~%]yKb1 -w0[¸$USQCӘ46%ҋwW(Qn:!))=+y0b8_:`PK"(5UQc.χt`TCQkAP3 Pqcylj@A)EF>(ORFv tgMU;]5S%l<9^QE?4+ڤ-Si_ݧkwՑ2]';&DO zn<"+8fECE@' Nso }R٧N<2ݻfZ[fL,}' 8ad' 8|P&DZ?OC hE-Q@cQ2lr%Sp:vӼH"D,W<N%z1^ӄAA| Ɠ=C c; 3؄Q1łAn;Y Flfg/<=]MHS6<P,I4o'µj?ʧWuunGP{n].7讠}ũqM=sWWkf@FSG߿]޿h,ВS-jF}.CC|_i^! Ы9+(JH. m'Iv^D,.TV1"L~Qn^nKl](eg Hŕn_q 43D5YRPx0Z@7oDT`7 {p*PZZwn4u?'}B[b/&f  Ν H%6vPA`i; '@osu4PVI/Qf~<6xX$4~gˏT1դJU>]K* 0`APx I֞xq8y4c)ISISF:Yh~ (+0-p*=27 QDFMB}=ŲaNkE=/2Nf@a9 D iՌlR\+H#q;=Z͏(4tVo;U99}E_^L6BXNuJn?`7A֥KΥW͓9 H]jJ=#(c/;Nf:͛k$?r cGiDBў9u, A32jq6Qht2$?$m`񉇚GyU3NK&YCCX:Cjš=ұe?)E~ ^8Q ~S ZFX^ U xaC}AhFJPpEIu]1 h+@G(?wF-^d-VO_oN`<;Y6=JV rr=ǐjg1׿a-Or3b/ԇoY`l?9G^5cx@03Si^93&x/=7 ([TiI!C8 (]0_AS3 xy@R} t3i k̶`u]U).]":1K@8bOLi,Qu|[\Cl'4E ]6iVŃ 9Ē1sZDq-boDH zqMz`>$܁?f PZ2v~joDE;yں{{n!󧣄?H~ >ԀgG0a6Y|0%LN] ;>l6 J:.x`F,T`F@LDN-B6hPPœ&IfȨauEeYJR0c}TFp^zwr|oZzϺgpDyZ?y.pKOE B4w% 2.04g :7|0C^Pr*y^{:ڲs$< BKeO$4 tJ])b. Y`ݜ*LxdNСULˆxwi;]6xtK@shvi)޼TIQv#Y,ĸ(?]9FUd+؈ga}0߿?\5{^דBV<{grYm t? ӡ`*I؂{ѻW ЛQ1X4SAk|A<.mށBC:b#=,qOF=F ~?0;:z9A+}y"'Kb7 ".Oؾ a" agM-0chPh{['NLc1"ؖ 0: Cׂ#~T@qn{lT=<0lPdj򹱗 :.]9~7z8~n3ګb3 Pe IԻh:vdS{1U MY9lc>-0.7>c=y{ =s$pӱU"5#dǩ YQwQ_`dyy\z(:K'F8tu,4^&\ڏa.Edft|Gݡ1Gq 4]֭]f$W$]ᣭ FGM#^1D']X;`U3ǽ+a5s= 7x%a>l?zK~Qr ߶@Tv2l8ƨLbc'1,9pl00AՎ{ļI*!Əkb.|Zv|?n/M1o}N@zᡶ`7<8$2yI$ly7f#(,CQh?jq418vG_CSTN JO=]5njrCŘ_M4_ \TX{gfo"PN"23%Sb14Bh.DGLVDXwGO' ~}/zHcbe89qheDtK4 `}_Ko p(B@AC9'%^xck6Q"yAA0MB-?cu ŋ7oZC[$tym#|T^BdBt]"J5&8T "@+9[Jox rlB|akosß}Vw彗?^ 99`9Q.c6 J'E!;'mMccžTG UTrrv=@",eWG#GA1 @"7ib3bώ,`N U\Q5I/5MVL*v#gn n}3-^zg3Q1G)[t30]f8f]b>Ve{0*l8`$)%̍'ݗ,CY'l!v ie.["GƸœqs[(`sƵh͠ Y5lsQ d1N-!t1SЮO$n*S|q!YlzDkJ@k4>#||>G>ȷ?sUA?IENDB`pybik-3.0/data/ui/thumbnails/Brick-10x7x9.png0000644000175000017500000003672113137372635021075 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+=IDATx]wTlνgvf{_R^ۂRKbX)vA@^%hb1RLrwggVA@`g}={ssw놻=! CH }>Hi4G# @H }>Hie\7$mewjvyΡU{w֭^p =@ͱCUw6QA)u jD6f~m7xT<΀87ռi%r!ɳ~ 2k4h:Pl=?adQ[r(2i @nPGg~ n3[Hf|,6xfnjh  j,ɮDp#<\9=@_66c7lB02b|$&|N%pĪ]=x#)=b "8rQcv͞*}eL^N>nfnSx@1HuVq#{3Y@CaE$85|yAnųvOi"Lly/`a]ɳSŅl@|Ǚ3e ry<ԟs&s98W䶈pNI+W3?llT=;Dcҳ6Ҽԃgɳi{gLS{$zҚCDݔnA0k;X<Rj xv{+"$ 8c4'1@AxFCjή@9[t6L:XLnD>w__034@*| `=E*.Lby1{UHvN Uڮi0}bm`Vrq? `q/u};xy&ü]=GF00Y>/w5PkŠ<ȟY[uq\[01}⪳H~Ŝa4gcڟ1a(QFCL< xV2p|:;$<*ņ2/2T0l'8g<||% V^|x ){ 95|˚÷^%)P+Bg7,31p  wN*EU6("#RIQؘ~nY62+'$!{D38CCS2,'|=H>T8oi~&gdo} c` f ~ow@H v93l4x9s4t,2wjq_{;1]ΐq Ƀ)!|}S#a5ޏ?/Һ XHu394>0|=DG_$|%16&f|vb?JAp}y zd0qo#ƘyftYJ܇a&9̾y(I H6z[RTK^"psx4h1n3LbI6@`x̞Tf~(``wN00r7(;m1<~xG086f'b>6w\{ eՄ:3 2zwCqgPmq8wOSl0`r g[䶒$̓q6k9=.Ã4FP&qQPжX4U?XH#qmga6fװ1qo!iC{yW= )"!罘<+ 5mڔnpcZs$i/J+`N5  3(r>ypP3(H `O0c9Ƃx *`f#a^c=bd@{ECciz#&Bkߢ|4L?|p>ztvǴ h=E&1S@z,ٷj2ɬߣ$zfDRsL~N|/pUf#ic7~+`\ɹ,b0/8 @XIf=|fCw6DQHftF/ f =U3񓍵_/a4[Οf\~e&ݚ??)>s6;5Ge+e((ܥʭtgZv +!`dD7jg3y WJEa'j[tvAI{lp38 l"to D|)kW E i ZrИ q5x=>/=P>O$fV#sVcP.6LRgܻn.lȹҶUVÈUmψ}:G q``6 6N*C Ga <%f*l(Md' fWpc0,} BMS' 5Q05?!]J3VNOvTHAɄ`щ?r+50A,A2!;/eYQc>odJ !ɓ3y+: Sm8W Do2'Aj_M+M0Znjڭ0}1{0&p!0fTq8,e=[7[?qݒV93>c.69ًY)xU.z1st\ 6 ^N0tae#f@a Ncyr5<D1(inH#bnP109zUBD*PӒ]41~WoZuk\XsZر` ~$bnDQ_-̞Bb˦>)(p)233EP?`!idvA/a)ϰ$!LH 2$(FTׇAj5ҁ$<DWx=c_`&`BfӢMa }zFR&]iʕ-Cs{" ReZOK3tq`kef@cKJ>s R}~GdX]T†Pϻ t+<{L<`Sխ,l8LjBB ;qV0A? !5 ޻reٔd_{SM#Zo\3`uJ; 235EF eCZ{@MdC1r9r &~Lׄ);jО~#)SV/\ш[*5|(n0|x`GЫ<9F/ >\Rk_'cN & t98rssOQqQL?W{{@Nsw${~6e}:hX~7-;. nL0GJM5&@ٓOTщQhANa;g4 CH ՠrHZUWMOˈL?`#0&#zV  - /C[$Gv\(j2(`'uqfcOro3G*0`em3vw6]_?KPec`?;>- GK憅|.%DKĮtAV2"jc!oOirV [8j9'~TR@Wn.<b}^ǿlX ;pջay+- |?60QZQ_WC0=$Uz)Ȟ}%*)+罤%h릅i,"֢Ջ3Yt ^ZP{JZO*?yb&_7<9A×>Bp ArDk犁Aҍ/ ]'7F!R8{Ly:X9)ǜv];J*v~Ÿpsc2P}#v~.\Y\@g 2N/q s?ieAz[brb( tq{*9|밍PrEVٶ{*'ǃ+ռs>|;GڳrِC_ yZX :R{yUhј 7_=>͟1ցg4E](/j uq'՘vS\ /[%L(0֍`7Gorlq у7gElAY;KT߼G96~),\Pn2C{P e",Ի1yd_ {Գ d69^&¸5:fGh!^q3D fj`0t Jp-5/OZ\L Q:4ٌ?g%ynZԞehI6 )࿿~kොRȉ^*vQ$c=W0-&7l^;=A7KAe<0>HBh^zk=ИTХ{jduXtx?^vn1sS]-[\@-L_By3׻WXb\pР-賟Ҥ~t/+92R 2)#shj ceie-{ [{jK3n{ [E&T^n"^q7qwsb#lshxpԥMŽg!Qg A>3 gj0ܢCuen bR [[ԣEN k[s!ܕGﲡ0[yc_졙P:SZ>؝'+mL:-]Ca.0*uS|AS`U*؂]RjMˮ {*jNSVoWB&~- 漼{w_W~Llz/Z(-LeD4:cAmdK*Cݯ;d22"2 ȵACpS;TC=Dϗq67y1qfYf0` Bi0}r)^.|o"LO=\@^<o5]{a*F a@ObI| @(#W5GdP<"6"*OȃW 3A~bFq41ի;|Ţٚ.1{|1㍤3.@(Py8,J*K 4Bt`dN8p[Iɧ-z%/'X>j@ei_:"(jD@ʛaDǮ`LeX*Bu2ȗBD))Kh^-Ǣ* "ڑNv4hƄKT<Ĵ\u[B9 p6 +C]zM 5/2hӊq}ET^bҶ2?.,C\CT3X@d rRa2f>BĒ 4Zګ{Wr_+ma8[KjupV8 bŘͭN4A1ITDgfG#> (mnAF@3cVZӔƳviBXݽ(%{My:մaOƿ_oW!ryL9|8JacKOԿG/ХI_^DO ڥQ0Vu_̡Zې<X179FT]c}ƨ3X!B#8''f0S 11PJ.kR=x& I)N5;,ֳy%oc!"{=x2vچ\hK{ʉA:9|f3 |{yC93rDx_>ukkGܟ9:(%0NvuR:ԵXU. B6My<81Ax[2!dB\W@{d&3ԝR9@>πgpY@4PfMe8[($ ޴Q~Q%CSB~w@{L|!\Ƽ)gߑGo,=_9mU1#U*͆,R[l.iJz+e6OvKH(g\uڂ B ^/k=enyeGܕϥf2]f3X3ť.j, G@+ܪr}9/?|!xY ^~n9=zpƀ {YhD\| O`1CF"1DHG}a##!4{wK/8DBP+ {O[ `AP.VEK5KdɎ<.<0>fz oL*BȔfncZsf=׆ia_f:@*(t f #bx,Tu+lh ,bULzĠALLZl2<-@\"?IPIQ)!u@9۱EV?P8R$Z0!HWD}K eҧ 854tO`/l pveͷ-;p{qF#ɞ<|힨0rkR;`2㕼싩--F=. s+)[mb7DA icHѢ0p#,ibx;cUfbiX.=Kĕi*cchϽ#M}J jKj=vml[Bܦ_ÙB/SހcОʰuKJ %QƤ^+<'2xl^ C ~a,w[k~0wRF[v0'#~. wyp,Wϕ]>:2s(fãR|~P2 l \uPf/ q{-U0$5L7fN$4Thĝ4<@4G_aa yMAaԜğ(Q #Dw0W@W9;r)PB(n˼A^Ʃǻ5¬+gwvz>X%8q~z*{|'=KOp57 "8P%KyZz(vN@1J< f${Y5R@{;gGX`K>/şiiAI$J)"U1zw77A 82IqE.vQ(Bq#KleWZR+ x%:= ȞQPr).b`a<i m~||j ƊE ayHXA!{9b䋱,GvJ]t:^Z } S\Eon͡oC'tr SAVP+Jx߿T@P*tʼnd_LKtcܝjyzO H rZ:u> "^Fԩdz;Z#>U$vXԉc@(6ݭwQaA5 `lm`rO/[Wo^ `LPڀ4rtp w>o;*]3 +`dv{HOa;b> yVVnQg`V#ȘqB#AB[TV,O{~8 6" =D~/my0S{VNз"rؼȢ?GL7$)6t9~*x<;ZK^xz0'I#f61Rq|tIC*3;3"]ZA= ! 4jz I |V1}׷[Aa0>d={ӫ2oRXxEP@G6:>]ҰFh&{cDkOo ;z*\ 5m@KV2f6xeg[2~C-k>(# @GT:],Crn\ըH+8=BX)KxnHffgJx6.E8j#dNPBo3[?Tm{›C"l[^r{%b nw۰nD !B>SRi쀒'bRC2%`3aɉ| Isl tԐQ+rvvO4ls/,>='𚖊Em@2IWws!f&oȏx8EU ;Գծ xfR"Nh#OK{Bfrh@N@4w1{BȲCD u;ƓP"X^ճ3di\?B(=?/wxWLtv0A ;_w^C\t3 ZbX!c7yhr |(hMM=12*=}RcY-wog|;g5Vnɠ{E~ />CĠ?HM Cn12ӛ+CKn=T5|B$l5L8?!n|T28=xa@ADwfb?gp}hT1OBf+ui PF).y ߀>!>l xӌ0ݱ@}M3Jb쪈4T0/{pxRXp-< ²q٦RkQd K^dCL7:u+䫭^|-P9ӝ $p+7)40 \7}RwD( À@],^)LPAa jOOMBl QљZ hc&Ѡ: G{P- Ҕټ0PG:~HTH@\)fCἐ: 6Q}AY4vo}2P2GoˠQD}GjOoEYCq,-+b'uu/pFNSZ)FM+9hpV%! |0V5$/ ],P)j|zǛcI1d E׈Wa-y94skx6ٔ#Rx >?V `@__/g(;E' TL)@)ݪ#SX!_U C`ޝ'ah3O?\tdLgTAXij0!BFvsS[$S) @vˢeZlՠs"CZ1l1u A BE*Pڀ5$PUMu30KU1FEx q0RɽܠLJZrULq.Eh|1%Š<$?0DKۑ7Zs*6,TqՏ 6eaTSW b'g& y${f] ED-> a5jY<-^G =}WTv%RG}ɣ7 e^ t6[hٙ2&a&q,vnjpxօ!k㳼K ,@keJs1QJNl$KǰlT1EB@v^=E+֥#ܲAB.]qI-^kxcD AXW'OMp.ӻUCaKeA3r"[O6x;=G=\^סd~A?kͤROw+^ )$tfE;%^huq*1aݢ(IF<;f!Gb"R&tD5˭J2pǦH ci _WpJug*?1.W'ncKdR6M_hZ)˷QogdXveggvxXҚcskϤ GgH)ȣD#AY9 Ű#%d(^H"h! : )U )uajnzR-kܖ+U?H FrYM@ƴcaWQ~3QHe~ {hik Oأ )zd2C DxUo ŧy, 2YDUYU^nHܯ8 pv!̞IGY Cƒ(\weuҺ>? ,t*XDxG; pu,7 0>~@S3<ܻBI#Q6]jPx^<}n65손US@˺ʡ!&ٺF͟V 6fMXs!<`5/vșo5HL#QF`T 'LqhezbOv2J<ρ"YIِbjG FJ6p4pӤ~aQ^>GCcK2w}/,t>dLV:<8xc} BUBCT%`*B9J*yAB%<"Pˆ v?M8U4GG<=];8}Tgx-& %xxȘ06 d@z@\z7l8u#LE0-m߰ q1Sg˳NOػfan]Ő]`CCBjHИT$UG-zTH$eꀋlȖOq?)@}떪3Uj`N%< ?:K[Ɏg@vw*Ŋp\ڽ.:pe\zZٲ*ߧj$8UM]ꏇ@仛JǓ-pHb~Zh~_eOB֋cVm;z9yy55#3MT |"b j(AQe`yh?\ŜHVX-8+XwhW#3&i4p~ѣ=< t[-ؐw'P~;.V|8id|`er%lh]Cx, LVO+@@?>}H~%g@45 3rjRAJ@lW\j4Zj7~4vI5gAyīSP+Yad0)g'>#Xx6ji|4.L x, 7 6Xa]E.;۟N \Ңed_d^ (,@տ}O1W6vho斜ծ? dM8Z9B_ <վ%sjvןjj՝͗I sr ×_~ݻ8H@6UQEG˿?  [Y[կo+ 3:~J"Z?4NQ >Ha=4G# @H }>:,uIENDB`pybik-3.0/data/ui/thumbnails/Brick-6x2x4.png0000644000175000017500000001660013137372562021001 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+2IDATx]yxUZ{ι=&d_Pe3l)a5& C"*6ljjAe ѱZ[NLiөLyι'7wH=Y{7]&A@.$4Ii$IH& M@$4Ii$IH& M@$4Ii$IH& M@$4Ii$colQ5Z UBiktf9eO{~o$L_C&;G7ǰ&W/Ȱ +ڼu?hNDRΥ5'zp$C%$}N頋 kR ٷE []ϕe:SvZ ZekX6C\VV:b !,WɪQM]djgaUEӏѿH$ex!^s7;4T :mTo])..;n/Ѕtܽ2 sAs2Jv" A[tn=g7)ù^x2WXQ>$@Nc؋3 eŏMd 6ը"؁tylRGˇ= ]d_P"j_Odӂo!2E 1S^)'_^de @n&:{,G=7{>_S)<]֛Ds3kboV"CUGB=(_A]=u 3jZc4w:Y5qA,`wӢg &ADP+2J]W}H}9Z*os`oZNvi HT´p U.''"bMza@GC/йeH2d  j=8o߾՜6 W1"D+`uAqqkqIAsh!cjKhGuN4T"S (>%b22,2":'_F>}{T)0ۉ _:UC 4Щq)EN>TE w={5:JL v="}P-6t~67νmd0KmhAAV3fG47~i!GtKKڙxGC. H6dB )OuSMDpرDu>|\ՉV8v$g lkcC905 >JۅώAiQO ` CR=T>"o*XG0"_JCbM{N`7?(x#D L|^DQJ}/+#2ddd̤dnsgSY@ { CnA=m޺/ŝ EY2"P.EP=;zH9w:9^ߣcoݚ/x?RrS` MQb$ o:`ea@el6u҉W.C]J,nsaOTog !H=b &qG;[ sssty=l)=59 ' dm!+nd(v UQBi%On4؋2oHU:Df-2f\r1Hp.i=k918}ko\dn#H=rd?,tmyZ=Q^AG\7x$e[XjigfDf!Xն`3ñ66Zv]oGdl{E`õ88~8A[ýn'2 #2׏[22giԀ@ *uq 8Ӣ!ixX|U6Ex?Ȇ~SN=aAؔ?$4t9 muГN~y[Cکa9,;;[,2< N هۺ4 (Z2M rO'sx0ylSҒ{l;rɃ9t??BG2^܆Z /GN||MYqba \cJq~Nc_{Z+2׫,s=5 W>Ta`3vXRMx/~XB9 6vA@maz钚1_ΫtE%Cc!#̓2G//HZLc]D6"^_c;.5QV2d0s\/;IK7 p?(Lrd:T9C-1LCiFX">د-gk뻔;^_^e= Ә9'S .6xD`]i@D_zX< OWI c0~l\CpqD>' C^"7 |2Qm=H%*wUJcex7@pfv 8œ>ص-9s ҵq!!ŃPd|?s ,(=>Rߖ4?"`|cG\ *QrP2\k+TL.( ǑAZl9^Z-b*D"{>Z1Rͽ"^({̭C%*!ul;7U,"v\.JT@Giz'j& 9z>`A*f[VYgt /א 0 w!GxƂw. 25^G߯EtŖLgC y$ RKG0V"-v.Cc 5kɥ:_ؼU}_a phꛪ$%w{4~-,"PZdP=a7D )Uek"^9tXd.P"W@#OPIEw h}u;7/kBm/8(xI=bnɞ Q i PQl!\j#㏀Eow*=g bfp#gcUϢ{cei-toƺ؈c){|-EŝVyMWlC<(>Tia"4\bU$RREDDo.]Cy,}c[:;RHsid|:}rTPo̙Yx8mLRxa^9G|\:*RJrIPE. ܽS^Nװa"Wߧ<b@t4-r]ۡ66u􆻍ߧrX( . F;e0<ߖU! 3F>86McFxt~_X!)@I>ߒ0ۼdžQ 8LccBYkg>0)!!ȴBQ \ޱP"" yBlv0vr581,"ԪV{YrZy~>)4eI{C1gd`&:Ѫ71 r k=ɞ 0>|#"#|=uxo| 烔w'"^}=>0 A }Vz7k_߶T L|59CDR>¨ 럃x??wytk}2DQ(|cX> #yY2K@R k+qA8Eu(wFNK#85RQLGͯAr+V' F[䣀6A F|,ٓBm=hU[3gP%%d0|?>d5$ۛ1 QX Ў 4^~m~臓`(ȞQClqdK`CQZj{TaDZu0Iݖw7㹙T!Wr;KYѐd$!=BR1z"Aq~j͆o{=ro lPFNY@ 7 <ĦK~&/kc@ Oe@X`WJFC*f3TF R fzx4Ԯa3ɿcuGó"[2JߖtafF9cklŜ[x㙂K" 6L`gJ;8R|r1: `V2FA6z@)]C.(Q3(+x*.>^f~;\@p e㋥oUT6-dVuo}b75 G3 .ݞz E @%sjEcIr*d}|| >F0 P}\/@}I!nkݾ*ώ m/^?rn6I7ԉtI2TbicU(?f%?dz]lcbQYЮA닣FAkަz{)0tL@L-47PC(234T&1Yl8oZ~w>KXU@dnNAt`45d$1THa`v{p K;,`П9FepU@>ۓ~3OZj+l5PlAi@g)ĜY vx0ifvM/cϟ| {gR55{]{7\[6Ⱦo,4|uJ#z U0+3]֔/<*3b;N#t#Os%\nXP 1S $39wMwٷl('l׷3,Fi4 “($!f]?1 (N+z?9>43y)SƸavѭ]6WՏ$[U7d$@ "x*è5ҾPV"+%^5bwX'S4' L(A$sSKcT:yjUz|Z@[wձǓ;Vw$|`r Yٱ).OYw ښ9TVVƀ ' `fl7 Mw{*lx#R';MyyHkwQ x 0#** R%6>=aDha$<xQ`J2U㋳y<3I`ji1 Ls1;e$;vvB)SMr0sógϺ]GY"8 UnwC[}|m W7t+AM.$\Ii$IH& M@$4Ii$IH& M@$4Ii$IH֣׎sCsIENDB`pybik-3.0/data/ui/thumbnails/Cube-9.png0000644000175000017500000004615313137372521020103 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+LIDATx}wT_FK,;K[P,Q QQAAE*(1$SIbL9y93wfb~`gs>{n^?㇛?Bq'ѿ~0 dEc;\M;gNYG0~0wG_dt'*LREx {U!9N%CO+16+@$[cȐ&/ъMm@؊x Lntso[ 0b ЋvͮMdo ҧq0"*(|d<8,J<ћL *1&,(8AewK =ÝiwH1qht$|k7]lcBGGcv!)3 8Ԙ AqZ^)@KܩLwÛ<5bzPe)H7 2zc 74Ni)Y[{;Gzmy'{dX)OiqA@8Hib[ pӚw& mK_A㌠qTyAzwXD߹Q-iLjO, >VL)UwNU=26n)`}(G/R,~7hʋ D0]#qQz%lqwN10Hfϲ_e{ZVgL}qhDƇq0>@'@9 3C&v-ż'\q;i=*sqeWnbwnJh$ZoG!sT %b󛔗u ?]S%e f.Ptlcie@j|>ѓ1Ar;}'Hi-31ɛUYsr VUƢر8j&|wx_Dǝ#QO)Ghדdټ 7׋a@6>sLjӍ/I33#݆(1jZFL7~'#." 0yYO㴠3)_)A"~GkUTb=#d0}Q۪JG.@?q[0.oT}_q\t7*%P1?f^JFfSً\UsLMѺ)/QƷs/@1_pątMݦ-5< <޽ց=f`ш~a/3^qFnW B#Ab nVӌ^ޤƅ+7nrP;: 'H3qa'Tb(BzVJZvTP>H&?Es}PDχkGZQ7wYt']8n:{]"`gJ5+e'?HdāM^Qb6?|B;eo [x*HV҅ zR3y,-5=ԠuvVG\ ],3P]?wUoUu|_xͼHO){+oPO22Ci4WҹIw1R3J|P qEI:c>\7Vt="D -#_B(Iv t; Eeޤ*f>KWu_+nв2pûL7wȋt-ǃЙg,/:dnߜn>nf:wgX@UR2GV [)ORS<۸xo2`Ck"kV'k^}ק qz0q" .+1ZPdBJܤO+;&Д+ >JܮmJV.qaMvnNIԊRF8Ǫ\<ۍ7qޑ-0}vH0JMܯD x)+Yb^q>ՏM%t]չ`A+K 4z@ ¹] t[q^+xEB_.qmFs`,@{t!їӏF2%XFQ\BrXQ-̽9n<bu`4Pd7\Mc=gT0AuFwrU\U(Ms4hX/Zv>Ѓ{2 E.!>ǏgZuqӍE/"Of H!b EcT1/ \M h& TK]p.(%0tY f@Oc&%C}T{r0V+S{;_uWĴa^!>o3XY?***F/*skK{@P|C6QL!G7 \$`!:ClesZ)k8Vk2D(Bs=T6Pq!=HN͸E*;QWD xE~gQ(UHKxA{ŒcbT?{4;vF 9;d,rܤ&cU%k[]8%+ަҥ b vrheʣ@AqRd8y ޫ2_p] |,/M5y>CwW1׏3f+Wy$ 0\.> @iMÜ"#!젭|qVj6ٌ~ HEיkl\ܛxJ׆N8zŦP^x|ѺC2ewG@e 'iơqk-IG>nq`iw}7qKlyb0y^nE)0\b-D \H? .ppkU~d!%du! AN.^or}Mdw)(s;ׄ?_.]Z;x\}eX8_U` pHoZ(W(\6BB3Nzo 6p)QusZxsI8`n㮠+?A EFps,@y^Bqq FTL{3_]N)]0Hd~iPkiBBxFF^wŤ<Ѣz8HHi8_H,iba j&W)04%VT. 45$كئP/wI΀Pa\MnbwCG4ط\|ޡ~g*R?g岦"7Tлw @+h% 8:,UZ e|kI|VeH@:PR*n񍼧`:'*fPoFqyi"WAx\rkwk?O4"XjE<̓7tY}͝o\Ie3V]ۣU~!KTpóMs^vc0jƣ\f{%Zy\ht)0`|Ml_zeoh=Ay\:dj@4qAYz>͐hihC`GXn ne|Js! h")Q)ɵB?d1+U>m-ZPz3UׂjոZA+$A,Ssݍt~P{G])TtVsx߯;1q|Y O_\qR:Ogp^% FuY$pnrBP5xbvʍ{kO3G83I f3un5 `hFw2~K2`~`&WZS7~"#3?۱aZ?߯bq"Gz`hQiW,Hzó vjF`ɴ E7%]sCTJTylWiCd|T:ft 0)m1[L`HymFpk"z. `(Fg'}b{(yDfrП<#⸇f ?>UQ`U߿P, "}9o/0*<.wF5]8֭jFfZ=ޞ%;z;N7gΆoȭRz@y.\r ~?[T 0 .$|CK@oE.! `*[UrvN1}W7OxKWJEN^ѺxAP8?F %Ke -ת4CW{&Ý4/GhhCj,3yZ7iU9SgYt7QW[Dޯ*zs 5C@Ϫ]2M- 8u0WN bɘqL̟{Y72PN"H O-G2@^`4zxfWtHP4dnޅt o@Pi`SrRb:߮fB9@?^ =SYU;RArU(=B8H[Cx\=W^Hf9^XwmX;bhF@EL,rGN / v ##$C"F _6)Tp 6KҐWi$/Q?f"!@nb1-҅8_o p/uO<, Ȃvl[n9.8yŌ^|c1xuOs}])E״>+k?ʳ&Rz-*uK`) 9ίHhҪC||?/em=*fwQ&ָu_>R Z5vv_L$bγ>@pr#)lX\t(ޖ/g-c>Ubyvyvף'S͐[pZC 4N X߇qƋ A/pkxe&!VEEGjO՘ЉTd%O_*a]nŒ վPn~@v8{ qq╺S@ dBrG]mΡ]mKC]3{NFV72 xi|w ͦ\"z|Zaxmdj0 @D|Us'U6~K-S"U[(rC|lTѮCbŗ-c7o_ սc,l^e8eG|B'lS # 4wt#GKim!]t4 OpK֏r .3džF8*0f2n3䑲qlȷ2L[ĝ5-eywͲA(#yJSw($X¥)g-*< fَm 66bxUY.B({;Cfԡ^z]*}0tk]L4)5M#/;+sf2>Dt nA|[C\ :S/ t 0* )}y,fX |]fweRO@&n#*O P8F!1nM )56``FO`!78XF2U@Wq;)y)Γ{4cfЂ0^Y#J|5hZqt@Ȟ٬cI~q hCl-2 lXx-`"}h}{GȋBN* ΋kQI` #fg#&Y3|FqQ\J.&K 8tTٲ 4QPY,Ê}w3IHN"bqAWhOW,q i&S) 2/U _ ]s@{oɤFRMD?b,~S`ӡCtnŻ{i$*(EƳ 2 |D 'w>RrO@|4"p$g_,aH`:GIDPZ0MX|1(#;-M?Vbl?-e^(}q beqb'׏Xelxt ͡EO6qX, jŲ nk1` 㱘x_O^.vj 0̙B4cLSdpȀȗ^*zs2$x^vhTGyDl;OI#ko(e掿xm9W!q vbR \_u/X5Q[T"P [YF :wޡ4-ޛVF8$p,M)3~AW, ,=ڹ<3k^q sŊӶShxҀ, 7S\GݞBTzw)<]<3 B}l5@ 5-u]2~kQ)%f\ aSN^!\:6]XI`xFyTM-6~qyowrmR?*f2ٿ =WFŪs$+17G fűg) aHiOP@O`q6`CXŮ"ۜtgHi<Z(@h#DhA]bXK0 TcAJ^ !`g҇XlMW>m黒 _,' ♍Y3KO@}3x@]D߯| KYsEFBA7#$ܺY.Cӿu}hYJidT @QfKq~4fY-lzN|, .(!@%vrOa6><.Z a,5MǘCcbU!ٍ"%^D6EuocnQ VF@xz `x IҬ<$E`ˇ!dz %f@R.tƞX&%kpB *`Bd$Id&®trUR^7 =DGEޣ 3qvںu \57q% ;y5˞㊣e,A  M; 65^ Ǧ<k{4_%A0k{P|6WpYmtKkb5\A\E|>aܹ@nn¥ݼhljb.7ˆgz3N !} N+EKHN'X`8wNSHWE%39:Xe]5Ue :0=õDҩ>\I|^G(Ը) SJBVOUn I%Px $ot&.V9#/}d"yN,Y+9P(ax[e02 p(` 7 ̀h^~{⢚BxEƇ"81?/@ 9) NA9߼ueppY v;r\<o~Sx62=Vs Ts`,z$W=xQXVV/ss:{*T+b.ԴrfH@E㶋GVI߷Dk#ܡ/:V8# \7\V#b`e) dg\Fg+Fn^yqn裲֩ ⿝x>*},? MLR*[9]hk}nCun+Hqf);v O0go~U?da˿oU#=0w%zup8 qUSø(493@KTg0p;j ogi@F7D0i*-,.N+5 .߯% сfR>wcw4![|'[},(7{уf1y_z %P?>P̮ @_*6XŊ62 l[{lbzF*X;% @XKÑ6p{ם1T>hө 8]j^Ft$@#4=)Њ#$kHt5}"TP>>$7{QlB/NZe c!.u8cXy HL%_`5He2 ˆM4wXSbbjEu~x|\ 1G΢r\b7xeA)=p 9WF!92G tXJ.(V_Zɪާ/Jh r]=|vRyKxQ(TſйyNu0y41gT^" \ A *Z{4c~h^vZ\*AP<(9|cln;w1>H.8xABv~k g1? \yޢPgyn)~a(\4G/Gda7ČqFE4HnLt;B^ (ŸKca nt2H4~B5ڰ b},GhC R@d^4s<ɚ~*}8zP/$IӋ%b1NQze `V)@.n}Ο."Ѿ9G&`_K֝qRS~.r`J*8>ãfjIR;A=z@RvF1K)~Pju@{EHaqL ZEn੤֟α?^/U:Nbo=ggφ<l݅l Z!cv1ߡA1Bѹ в3>ӆl@D 䍣,2`&|↲hD;gf?Z4?o$ cQ| UDY hzN*PḂWdS9aylE }|ݼygiF-k b;2%c;`V!HRhf["܁-2n߮.s?Q8 Vk_0/^> `hQ^NGo1Ie_'J..2Yvq;q-djWr}n SxHy<[熎vj32UDAV4U!`)˗"Itg!jAhpb'ڕv5`)yS( kןsїg2O'AN@iYn[ M'` *7jV$&-T?"SEf/Ov d&>'yx\ ^ML`-Rq.SR0k5nO~vŔ&J ~"? s܇yQ"G?-|Zt虬K 67uIHVDRM=6{&@0e,>f86R߇co8T\k=zH϶8NnArZ~=yS(8xhe}=&] '|.N_-atsMl\xtxM/0ed Pܔ=4q$Ų<#g=9/xcGo\PfO(Gѻ60WF g黢 t\JqClPo/#փkP  'iV $֏L@+FƳ,slY wr5~z@zXzZ4Bi-@aOVK.w *+7Mt ʭU^YGp9 |qE!"o~2CXorcvp_? Hx<J O 1c61wh(ch!Y*E&N +5 d?! </PD d[Zȓ;x ofHej몢10`?^G|VP6ҭ( :_~2Z+vuoZ?{A(Zʀ8tźm}xt$EՎ5T^,+1cwK3͔(}u,IxyX:7s*w3Y?pPܟYZVÄ42RV`O$3òYr(P[/ 1_K;|q ='R&ЁG;9?駇s6OTZMb:.Ů]B^'ǰY~}- f9v {Bv۸**hyL+x;77%:ZEc܊Ε.0'IԬιM#<7 x9gZf!"*=ExFJE1̇<)Y.nV6P< QP>Jf~D䰂%cE!⇍'|i3O >ayzф-:p͛M(3[ڑYV4>pDx ҇sjyA*\ , T{haor@xwJCC h-rĒ0leT_9ǿ(|(Q׌Ģ3O 6SE7d;C:J&,/Ə T?b4d"DHV4o3gJx@Fs*}7Ii!{FI:Q200t P۟:K`phX0˙AH_k@:1XWS T0]atFu:7}Tɥa2#1E5Kc8 4tn1 cU@>4IA_0ț۸2*n:4pZ4-kUVV3[fa8*r - < KE6 JZr+~.=w+ z~A{7Xnal I-H'5kRf v]&EmHpD9"qS/a 5Xy $C\-5wb\? ?=w|g?#Do~@J0X՛oQGod] ":ú@3 -{ fHy )qx(m0acta &b0cS߿PUx4Gh7mo f¸+ďiY|@GNw9˕AJObm]J OJ4)1ؐ fY48.eT4cw.a =gU?&*.FYY3Oue!zRT//klKA^|;3VqsxȄ?;*s)㳸9{v`gPyzr/~[.SF'WDxUHQ?<\W2&~ 7]+Q;}8K,pr,#>DR` pdJ)g`AFa.}Φ{~V 'tE<<"_dj J=\L Y:Qc冗u'a|2C:*A.S> ӽA# ~?Y s #xGQB{DVɅc 9zuɍb [oUK@X@]}y>`&ر,oTmab~h'B o{Id"304e6kB|,B]X;oU?Bߔ@a&F,'c8=ȟ#Y \B@f^X -C[Dw`(:X cQ?"3,!SXb%OKx|FtbP:L 1}dX Hj#{E7?犸?k[\o=25"Dԧp_y.WγX8VqqJ"= Q<>ۻ/;w) LIt@ėlM$3mioW$5r;8?B%|4̄qWcVT0Lp ~B6潌lbTOUG?le DR0;sm2rJX s^۹/e߆{@86I` ЊcB9gM\3/(?(l}YH ԧl(m"#~D8 e~ne3WQn]`|<\0p[p˘Ϸ^a lgg:lT}V,AbؗܰtHQ[""S:emb/7?|dGv[FūVY6B5ޓIENDB`pybik-3.0/data/ui/thumbnails/Prism3Complex-4x3.png0000644000175000017500000002674113137372660022205 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+-IDATx}w|TEͦW;JQ@Kл*(ETz"5tPk@AP"U8ܹ,%!$|>vy9sڜçL?gvsp$; N8$; N8$; N8$; N8$; Ndv"kյs)?ht[]SO̝KP|z\܋9*D8O\\\/\=n}QQ&L)Zd/ȨZF ~ҥҗN_WrʲUR66|I@L_AC{{)f ўi_ti ^b2#^p1ŋse*FY^ Y,2LԖ? ŮSRB#"l|| qQ|=Oo) &di61,\dj&vdKٖ$%bnG2槍M1*O8Aiw¤Q$0͢L_Ly@3u ދϒǹF֡>u6LvuuX>6h$\zz/>6llzRͪ)lR?9I[1"KLd8,Ou}r:l^j%/yOxi$Pc Zk\R7Ou>*>wv]S;<Śsbc2t΍e3$Sqo> ^u}&mxDAx; \aK]uLrɁu%f?yz@zЏkD? g~0; ?)rCDr<;& I[ HKS$|ҚGh`9dV$_ En4L~Z<@`E5kVBk ؞q̊ 28Lsc*5B) e:ByHVU\7u Zރ7R OLVquA(UTJ*QŊ|TreUK/$ 2eP\\EFF RD t0/ QLr3U n.N7iƄiDk$bGsR&6q.kd($XztyC5A}Dw;y ~s'&Df}?=bOOO,:Pw3u>.ЏDS(pZjT ӘS L Hk֬I5jԠ_~YHPDDS@@kՕxIgT 4ނԚ{[l}dB羈Apɴ,* 5õO{%n /1D % pA1jfY֟ʛ DaG-0?3m m~kXƬ#j!9$a K kP7/KJSHCKQ@+TISzuA$M䪮yZw8 966VH $___ cQ%Z &Zm&Y= x\$Y <.` AQF674zIjQ7h 0Lr@5g=ºۘgY kZhKcsN>< w-.@Z\5% m&[%Y (*4ެOuhL* ^o/e?HON˗/ 222Ĭ'+lM%9k,lOa>P"2a ^UrpMHxVw[0 RbA(2{x?;wd bуJam}H$[GfPzb^:]&\#G?4jO.*h/2Iǟڅ}opNw ԩSt-!xXsa^mu,_D>:k=IrrH zhd؝kAiIJS nG<@ yQlԨ} Q[o trӈ䩑 b!pg ?|^GP,DGMHGRq(tLwCYĵ FSWݨ[sH^p^~NSbb"ݻwO]ϟhlpoAE)7* xcJLa<÷1´Rn}[ز=" 5ӐN^ p:wNSX#:ګJ˖-u a&c8IK0a^',M|4}=x 7$h0+~[}(qI}/}+ vwl@4vMEҚ:\_;3PŴۺD6=X>|!nݺ UVQƍwN a.şࠄm({a}{Tؓc݇#$ø0i_\XI觴0A!S2v쫐,a뢲M0$\rE OL!$C{06` |\Ҽh )|!>t$,ȅmXFOf^ 5L٣N.+ h+W?|AGԼys Ň~y0WL<9?1̾~> y ۙt] GW\oT>E'mi~B>~=g8q $t1q6n޼I:ucxe^zG%#r") ^H S4yp뚋ScS/F6Z8;kF.Hrq_3s3杚ii±dyQX!iNE (k<nt21[ŝwDw q{6i,d3D_ύ(:$%~A N!cPo;+[n.ԗ;Vj)H[U(OM+W׫TDA?(,Lk խ[W,Kxh*pSB p"A|]D,Tv5S-]D:R/b24]LMËcBk> "Ry׷^>V| 2ѡ ZT-@ m .>U?؀m߾]."N/MI<`f9,˃\4Md>')0$|*-}"p8`.Ln&J}<u vAm˔L0 Q<dyj׮-aPt8Dd &"dʕQIo4;0{PW3~mSF||y1iM:70@`- \~@G q '9r#;HsDZeg?>9p:Q" 5/ay $~oG!]5K$M<JШ;ujYٕˀ8->T0 b]v ǍM/]D%KԗtdDlȡr d=(g1$Q˭?5KRaښ+{&%`_o穿-w&Ԇd\,x )W$eK:={_~vva>^c 6ܟD*\s'+9ZvH @uo!~Ϗ2 `YG>*HO_P]$~A%@̠Co-}~LfD0@8': dtyRj\>>in}pgz  },n%~ǿ_|T=ﴒK}YTFh'~ ?'O6f!Aڿj 6aÆ?3s ~k;Tkcz !? Ox `sR{ ICjqN!;l^>0_֕<ڲeKl]ׯx>qDCF_| JGZd)waZ5r7eZ54Fu:2Sx7ݱEӈ^>T%]m hס}FR~G 櫃. I>|%r߿_qq4b&/M4K¼/s1jD`줅u?ºHLZ'41I6e. _[=rb-ӎ,׫n3Xc}귑r ~7x8),+ I|] 7kAo*kzlS>bX_d)F̅[01[-X 4uYJl[QIJR۲VB@M;$b3jNtV,ea0<)&!"TI x[t]sڗ7>&@1h!J#.g6 C=3hl#9ţLn >V:*"?[בë́P\HDUbY#p|^O`uox6G5 hgorJ4 K >7@ʒYy c&ng)ea w^Eaa0o( nf=3n]aAB~R!X 0!%@+YFh;vidAA=? pΠ*ŽC呣w?On %[up"F;$^R9W::ƒ-+Cyw<~&=AFQIcC@G,? N-Z[б5?[ow{Ji<!{a1ؿhp>':L7PFEola4/!YK /$U6~l/"|lR=H E;vLf 1.]iZǎv}&Z`}!Ww:vK|ep"nxґG4.sf mx[SRS25>}~<7JE  Wf1~ՐBw3 A39'odK3K4)t i`j;; uk-^ !an #/KfPzA!\G?iW,)m 8l|6Ͱco{{;JD '<([ K`|!7y43h2.7B2vZ e 7s r`)xgJǖ3D(X5dUY|dkKEʬ "ҝ MguBq 壃]w@;?6X=k.Sq'zs'N$!&J@)1Nk1 ѐ[ *c/IH W_K|`} ~A{:Z̓$ ̕!__m$>D]m'ReqG𑵊X頖/J9!a`zTE%`!뛁2;P c%bA .b8|ǩ23@}Byi)૛[ I7Dgv< {tK? OM{K]ML1~uGtz};;s?Oy+B T"@E =Rɛ5V7OH? E. 㧖&'O>5 /͟?_2yڮj *X)S]Ƌ-!UT[^p>{ѭvࣟ]¨ơޟ8Xf4'ew}RCu\m_9#P`s+f<-TWFt`Mb\i z&7OPD?C#+PI%F0gՔ >t[oO$Iu r8[3+\S@Ď b#jXF 5mT&I`V3== ڿ2TG ?1CWP x EmDRu|;=- dhC,и^^tm 6Iv{^j_tl! 9q'u+F(6AAB8 &6/(Ѿ!Ò2i9ov;DvCժ-=x8K1z3^,%/fo\ۍ emcTYP)rƀLDUZgϞ )fJ57n5oHxpa`ec/CdUJ s@<_m~dT,)}@ :brQy+`MxU@ϙ3GLw LĆ "uG zH5@ѯ6WJYY+#}! 9_!]2P:BkX$F.UǍI?}n4v@6J .НB7S :$i}iڡCI*"{Y0*@(r֯__@=|t #A^ r{ )|m MD"'l~TqD‰d 0ۀj 3$---[^ "S?>H5LxFqЁx#Z=&D"';g\;I g6O~c_`nbR49hpn7g"]U!WHb)idµ5Cq//4Hplo@Ɖ쳟>O v #g>y.gmY PHTݼe@K~9'0BEC<,bVXRF |R+|$8c=B8̡ Y 7-yKFvWV3 PB!.ǀh/\ke$ټ'ڽ"A!T~} JG& ЪA쫌b@ "@5^;6>(|i`<.ɚ>ece0ʷ?e]U.2|(>޺uk=H Q KBCaTK΃@=%-;Y$2S In.£TZz {磳{6L*o~hAvbD)fzH'oߴa6 зٓ "lc,FKRE%hxWo~ ?"(>?X zA|ep;x:>$herAM(ժWAcC Htoo~+2B:Q `>^&֥½Fúfc^fb׬‹m*` 󲶂bJIS ryP QE]hWf4@q9|8Zx-\EllY:xvzM/|hH@U,w10G :=W7i2d`w< I>O![d 1jVQ }L߯AB}eV*|-< {bx\&bKNOJ^XƵ@܅d$CyXUG U$a(d %^ VrS0MG" HR`[j>/==LB &K?h}ΥQhVK!, aNo`N`Ҩ,5P ér=c~z:i̟_?+P{ERSoqPUTRװq3JcC4!_A_{FsulDS v!/PT@PϘ2zhIע,ޱ;/d`,38 }fBJ @0Jx~td8\?[{饉BM21UQϟ*WPwFX>J{}$igjq߽,΂}m( b"O$޽>5m V/HPKJ[n$ W$ ~f-bvz4Ura3I< 1*Fk`;ޒL0/Zs|u QBc-0w\=s|=˃9T7k)O^/2P !1}Ll#$Cft1n@>?* ; _ 6sI!uB*X9/8ngIێ0::Єvi`)ٳ@)>w?nsIkI\fM1#Q0HvlB~LT/r@_*55x|F^~$kl%o(>`>EiZ'? IO8f 5`}/]'"*Ve]}uXvI E op-E7osU_[lЌ"uB@{y/-:]'Θ:$v׮y>8E>\BNܧo=t` n,Z2iǎTݟg8Bf% =kZ_@gw?(,QIENDB`pybik-3.0/data/ui/thumbnails/Brick-1x1x1.png0000644000175000017500000001333413137372554020772 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+IDATxyTg nUWW]]Uu#&l6iYw8 391ȐF͢AH.`&qbFO391QynݪԭxO+[W=}/~/"p .BBȅ I }{W:T1~r[ r"W ͎!t}=[tr]AKi,ZIi޵}}hyr w8E2z}9푮gCpH`AJWZ|x!9.ε΂;d%yju%l@x{F'C {-ÇE-OdV S G9]ew.b@B{xvIC rC{X:_zJe|aՑZ ɖ_+>^R,V3gw&4,jl,&3z1 V#|ۥEyL,?@}rݡ,DeH ܛyEaMv[g*r1Y@#76x,| C&fl53B|#.t(gp30:Vt9%]I|h53&߯ tA| :LJ *+ȿ[y*VȃubwDu?P9 8C׳;Law(L t W8v/\n[&!cOH,tXlJI(G(̎S{U#3yN;:)Srj5sFg  #*@:|Ttij)_'^?9mP'T< ""-P+gO@mD|_]݅ $B=r]eH|iϦxC#݂`ƿڽxYXL} A,g`BO&/˓0w]ڽX_?^G~owoH{!SƓEl7t?~ÚTg]^+ ӝC gB]ax"h |b; VE4=ө)\UJF}{H7= ~W86i{JK;#6]}#alI?>$j{ğ4E9,>B7,h`+E5}A8 {kYkDXI|O c ڑ1 }L  g*XzFi޽rw\Q=q6z &hGRؽox#(&L%%%TVVF^n7I C-Npz8_tueN$ c ãloĎ \v/TCLx̩ᘧv!*ąC욚f +0 M."QGAg+>b[x쬚N 0|F"J҂,$F'?0<,ڽ+ط>_5`\[[AJHt T[[+\\s54tPF,)&I|'; )*~ZwVw]`xX]_S좪M)bCt?l0>|. CxPI%k_펲#[$o1@>UJ".@tQZJڝjrFѫ,+**®71b9R0ЃatBl>voI={*1aPDvU(Q$!arh`"&:E'q&?jG?Xm\fЊW<ѩ @ []T5J]AY8bW5j;ƌ#0p($ Idz:M)K,||`o$[n0 lh3Hl@U^f[SIǏ_*dP`0huND'i|2:_/o/mV0@D'w Gpp׊jO,It˝t5.MmEˌo`Fw1A$k(녕\/ P;EG P7&NH&M &p8HMzN"T݋'~#7m`Cs\ḙa"1h!,V;V=V?j8u]'B xQ,*$ڽ 1W&Z|m`CJA GztS G mmm4ehG`J hbzCH96p"EL- G[asԚ> =;'oor#l`L.6@tSeS6GàNHHϧya8њ>ŗO-DiL\| Gf,vǧ ðM+^E ܡD P+ POO5PpʁU'ŷmI{Th97lO ,^X|a@ O9ں*Z谲 l 6d/"vq%)B?#E`3 m$\aɒ%K .u@ 7; Տmo`ھ:< nr9Ez&S1r Ӿ}H jWv{/۷kkmͻo[Jr0 ۸^XHvRc)bѢEi&JG/OhqVp;sp녹"Z]A"0qDB_s_?YU![BZ7Lgh"|+N/2'~찵m`ӏ ! -za$]w{au4> *3E)b `"oJ6iD+ؠ@@w>V;,n@< )!pE@JPv|6XJo šZ;6d' lyS( !hgm)-o[@%sta HI!BxjJrGc L?*V `ZkpR︗ML`U=a zK4 d,>"m`K!R 2M.C{>um`KD+Xz⃀cg}rnv$ l p+i` _6%tޜX h}r UkI}XgR @h;-fA ɇk:+cp>p+IBK7ZDf2BտeL9N+k0u+i +-H6/@GI/fxw/`y')/}}֟k:-YAYOlpB|~>Hn`\f#] 6@<5d (i@=?7g!WNJVpMT ^ xt_`;Zx' شO6ЁV M%>x:gCpXIYEP:j[ !H>>`ZOhꋉrGt-lscj8 bJF}~ N\wF)0x`^k(;(śG'9/7 |1 KP4q{;S=Zݕi,:q1 [S} Wj iɒ?eh8Wx/q6<#Q650ƝʞZZPۚEP΁g0U[A wU fx KJqDpa?cPЋG:dH]W lfg1K~HQz q87s?c,1XjwU.*D 1?zz23yT/N57qaY֟UhF^,.X5x`OYV<$v"1Xj,w$ W(=2͂1ʗFv~!E+3sH VK:)l>0bsmk9@dn8 ୟ+s?g*%.&S% x BO~L֟D]CܩRBI6^ [_|4K5&K! 0omr]u1XZA,szEVXY'xT4 ƕKf]5_@k'5X£rn1Mo/`dui ,)-*/`1X)RD<  ,@8"=nfDIENDB`pybik-3.0/data/ui/thumbnails/Cube3Void-.png0000644000175000017500000002604613137372651020722 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs++IDATx]w|e^]83$9%7t (XvڱFDD]ElY]b^כꮺ7͙9gf$INy\+a~ p c,>-57۷~y_'WEڶ`{BɮEۮ^pç%Bt; !H/pgCG |߁?M&D>ם]?kMH\DCșw =腴"wt rC'MN%sqA쪫 n+Ё@%I)[v8Ou3%j Bbc kH?z^#}f ]{'j5i5[!P𳼼Gl:\mmN"u=(+Iǹv,(zv}\F`!W&g09F8ЂkșRu&Y` .}РGς I;TKFg-c:xz 'S;їvXӁQ7!UX={jAo$'p[S51ilssz8x=}bҘ7xt+-n8SVV@h80y$iD6pf=tРvةha]Pasdgw+AUW1 UWWm9!p=T^'=Z1fCgSCsv'yͺ@}pbD"sȧN"U} =G rM$gPAdu@ lIqNRt [!6AKՋߟk s#t>yQ `FLCn,!4^ :MI $++Glo߾<{:phk*z-ɮK+Kg5tmڸN@fE1|;" o ĉ߅XD:=kjJ[I n b,]* mؓC`gq㢆sW</:HTHG!:t(p$~;d_IA,3iTRfL~kI$J[uk4`^7ƫ: y*(@.]BJ<0VIxԽxޭKT+ߊ^HA>&€Y޽|D'S^>K?HEZ=j[:P/g-np!t*}ڜ2 >B͜JC}&3:+ws$U$*Fn)cxH^"}sН9Ăy>7p! j~^8@ܠ&tT2KfΦAqRw'#W$ /k,qs 9|k9bH?=`~=8O4ЂnFRi춧ֿD#rHb -gyjwF{=$f\ N#?wMc< Rq ԧNI"8&{ݮG'yXzܸqlԨQ<2) vWٟ<ēhԉxBWܫ 81C. >]pH#jÄp6DN0`,ךہ~W͓dx j{@p$Њ ܬ'mm}ZZT".΀x?E7/ѵEyG~G,8"v0xOB S 5t-ҵAEa,ئ+cn8VN$R.Eܽ]wn.yϖxw{)[Al /\/($9zGyVM]X.ձE78Gc ˻r͂`NJD&6l{#2'|sOti?][~_=w_RnMzWnuE|rKL?ܥ2˙D6ҧ9g0F *].L?Idb=xQm*$gFȥE0d@M'"ߛJyHOL2Sc91! tg?OJorKn _CdX(Db@dd#i=Tz<|3k&5si1rwޤFD@{xIy7ި^.R=~~M>оw\f#9"Ou뾀p2Ad(;#R>;Gs)S^hѕ rtAlj }Gd(RPWW T,|6Qrk>'t I{3>{rgsfkɨ1vz]3V|*[I2 &2d++Q2\tD?۫b scsOd(Q0rH.½A2$p`'!HN_yr+U9|ko[." /'籇whA} rh_@/,' &= GzE0 ?x@[ܧ{Gx_}vͭ%[iG;lJ%dVrNsNM֒@famJ%M壂VVS L6$ _?x:Pa̘1lرy=: D-A YwTo֒qwp %Ch9o_Il D"@p3YDo݋ 㳝Y,^{[5:,<1k #:S&ϟ-i P:K`U/&v-#slZL"Cm)a"B@1*ċ%#V}W<0#R\3oo/I >!Vu.ȯQS)ퟔ ЂiYle!?2Hv?~?۬NKDy > JK z4 E Y!SI&>T[8o}DP~eJeJR֜/+D s:H*ip 7Z :Kw:g}h`"XB>&I V]= 7&xʊ$}\Y O"͍ZGx'3"dNv\ @9H U)@r42-i(BTڡ{l$i]yNL>y{T# pZ= O ꯚ Ht.9}IDJX!vFɀ]#sj"SR{lb:zTl^};4yFjZ  { HH'(vgoW l7PRn26wH9edk]C\mX ¢-1y&9oqزEM~pRQ䓿9%[=E P8O4yQЁ.b b <  kd],Ih<)l7"$Ȱ<"Ǔ}@R gLM?cCfUq?j,PGO&52_ݡ>1 EmQ-,F96.MhN?P戡D('3ӗomSseE-1Ҹ?! =; $i` uߎBĪVU>Vi5ڬjWȄJ aj6$o`[$CRįo6W mء~ȹ=Y!沗cҾ XIHirBV5Ygͻ|(!IF :Y $&l~Ȧyj*eü3 v7%+Xy~(  }rH1ZajB+p(~6gnI[*9 j'lvK y9JVDUrYfg0)`Z4dd%')IFH> HrւpR">el %mZJh}Y%1q Rj$"d"e+"jR)ˤ˶nHli٬l[7߷GQ"nIQڲi `"h6_ccEB* g9t/I# pkN +٢Y<,dGD_;qw[@oiHQN i,S{+Fp8+pFA.&v# QEd!3Lлh`2[@K  b $m&W1=_,o,ѓ_b"bEq=5.ZMI(b9YJwᰖ@Ah;f^2^Ɠ,#em(68IHH]& (%f Pm|pUadg( %_*  A(8~}d<"Ⱦ7nX29֋8WeH&@tޡ}bמGO$Q0=۔L+ctE wBܻ3+.)`$[v5W1Ǵ1Qf%i_bg&OW:/ <-H0!&{|Ԩ!63spȭI@>]%bbsvab^4z^rL]!eeENdy%1ܴ׭h j - xbYق-qN LwУ~<[IZ |Ľ"J7 թI4 ˾r5Nrq_{8eєZ }0/(_yM2zi~yG,B%^%dw3YJ{'~[cBUAM#Lʺe#Sʽ" Z^b>3_ppJQR/r?dRے)0aV}S**|aOXK8l}3/LxRʡVP%F!3A)fU64`OUroKg$쾾w9I97S< rx8>WO>$CH )= 0i' 5r P~<gAhdgap5McB+տl0i>F|R U~Y)hy\T ?fL cuظ4D-Vtԧ/P$G(bAdaEqWkO ǀ2wh 42plg.M gbPyjV-N76hNaG?EL"C[)ar8oZ(Л8pP 𺹣5U1"'8K5g@ 1zN"`>ز Nh/U":G/?UNԿAwz$A+"h7!G/{ǰ{ @8q=2f &~b;Y؏+|=?O(͇= RWqMު~W1|$A f3OM9 se FYhM:;1{(CwK m$ ZWrܝ\|Aw`׽V5~>A 5ZQ;& < wjXtdMCUo[ّ;&v"(N#h(+e fS he ܔ5 @f8jNiIE\l$U9a*"7ӊrj[{3 xILϏI IVӷtwM 7Vʻܒ@kѺRl<|ZPq{8+]B=@#ˆ$&*<´a' 8I 2/ qAO: 'F?qk58eyC[: |WBj'Վ5E%y(SHa)D==O-:dv=qY ٿ߫dyQ%mƿ^ NRQ _X> ݷHUZsUbf6ϋ#%JeݳmHL0<$ !bLϼܴ~T[]!S׌nTB+'2*8]a G vO3-ZܥF|11ibE#&xN ǼU@O %H \˘Ci@QҀ2pi7ↂIuJʵn%'vzpFx8i iպ< >J#<(5 "HaXgtgPQ')Ϫ5(y`߽8q;z"\q@}@ `11k=tE+]eDHr8<]_$~ t+ΗJ āo%a@uW'=^,yC@G'|0v>- m+TTmE~TKW+mbw6 ΃F+=_vT8Ɖ(^$A+fZ"m$}SEyV"nAq~٧)M8Û@H-/ֲ@ߩa6d2 2[NN'F&ZB AU.2S@!(wgOM` {vCNL|[){qB'Yܰa.^Nj RRM3y0FO@A(* >r|t Ͻ@0NW" KGlߎ:id<@`zFjÛ 9+=.E89{:!|ELDyX&3\ 3KJ8 MȬ`w48Jv jϺK8"y%\fq KZI;L>P_, V"kRyVe>lPg sF4%<|l vņPC"@@FINAKKIg2^AMKK0@N9mO@oIˋ.9ap pGVhL0 k`=.Q083aHS}ތT?$a<:qҩ3"`W'?MU[n|0=_$ G厌 % % 3?Q `9` p[ԆÈ3@~cA 8-yJZ|"a pHYs+LIDATxkpTXIk6fp Lb)PDᢀtEBU"Z0BdDn@줶ֱ:6c;~viNyϻfˉuH&{ ?{6WlWM`M`X `1,bX `1,bX `1,bX `1,bX `1,:Їil p2vѪP0@sfqI0 @HwLtO`(U2a5h U¸TMcL؋PX2t0!2y4*{5%iVp" >2_ MX'溧ux;0bҘoBѻ8v), `[(tDeBMor.Pt\w[kN$!  ҾKM&0룞>N5꽄`KkEˠ?ҝ`. $! 8REyXOw::Χ1UYGC 1b݀眮fBnVaǻ= #jdtͧc}Q6vKp,Z9ע!9)jdǖz 4Ŭ߯h ]A2lbM-Z~U0h#$sIS[W0ƨ ,:(g&1=xR% l(IN4=]#)0҆Tڌ0<§/M_bye(  0/Q@߷eij mQSxl7`zD|YiҠ62~o?[C nFc/FF2-^\CIqB`^gUUP Z{5PDp cY5Fi8,NEj66:UgAU9\}3L6U7>MN K+_knxlٚ0fTߔ7'% +uQ٧DxfBTؖ(R.C';e\Yyjnx(C*U-Mu/wtPjzZr S"4UܡB֢.i4L/fv1Hnia+IM@ T谋Y򎴞o_s5OԟpDGZ!$Cͣ3#;Cjl++`z0׬4 y>qB_+*°+u. Plq+,Ϗ >/û*:QU*Z\7P,^O \E7A nI,'pd,iͩC=J5JaUkt@O @@OUĪ$cë ZD**z77=8!B( X \߿[)`8Ua\ܺe>7nCAZF6G{cES8rF-=g0"ZS'[Gqo"_|U\`aAT`|"V0+TӼOᑞfKI1 R3!{qgQj/Q;i/SI|R1EتE-]ZG`7Q`VlÖ W(ֳ^@}ӡ- p*6 @#}03aY'0Eʆ/t?V6>%!>hqޥbL\1OciI}cZ@y>Jeud~+?_3<?{} AHzs)8zp"Z%" O U{,EPƔ4@~ƫ D}8@G]_i+bUt@[biZg{بKh`PH|>gONtc}Vc4 qXiW1Zid+[$D H:UZOK=~Ǽcj}89*l|+,a]ڤ8ā .G}1u6HpK#!6>~'{s'_)ak\?>EI8*B@B0EpdwYG389ct 8Ho}0_~f5~OzDR]˄o?) }41}cpCIXy ܀7©u;qi U!z؄c>-69; Oa}O1:}q0(>Ȋ *CLv_(bX `1,bX `1,bX `1,bX `1,?X(w$IENDB`pybik-3.0/data/ui/thumbnails/Tower-4x3.png0000644000175000017500000002660013137372526020573 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+-2IDATx}wUga'灙!%JF@Q EְİkFEEqaEA! Qy]:npw]ݧu:LwuP={ι?YsƏw&!$9F@n9F@npW\eՍc 4# ;or]짱=SSs.́ nҒ¶SA34jg{t;$ih xVB,V}f37\1k')^yie xBL6f!ޏ!{o.f1-'ԏL;TŸG8D^ʅу^7{l&9H&w$kr8cK롅C}giJ'嶮LQ.Qu*8hem/̓@ =cƩ]$W,j_Pdity {4* 3Wvhaf^MGh\@u`0Bs,pZ+I]@`؟@px%9|~],D׸v8Ր@;Z.9dA3޿84Pn. # TUeȖϧ8)9tC;r>)D>MG6'M0k h[<6*Yx/C;l&L`N{?콕Ih$0y=U#9L`1::;C lHs/.?ޯz㔬8*G/?^F8PZZʵlI ~!8N˒:m:y 9GAy܄fݺ=גveUy'c %7=?JJJ8 ^/WWPH @V@jb{pgcuB jT4.$Q]]5r S BvʖpdXdRyMVc"I/N6VHCM:0t|7}G~ b|Y.V2'GN~o$h&8a`ʠTnԐ>sV J'B~{ZW~̝O[q^bL(ll| =H!d:dL:l"F>ɧv]o |8q;~$Q2ș&moqa&H(h ))8Xht.<~_6?pG#Pj;0}tw ³jl1V1`}1y2vr្a$U-﷙NR Ov ]c:A=_j NߍWzwT1jK@'k 1Aյ&ĽDi1d0 !좉iqVQQ&u7΢_}Y$|8_oYY>}qaÜHo~]۸{RWH`i$//l0^I&9R2+?Y@(_J߁1z2*иF'ap|! kNq TͰ{9fp `C'пݛO8xl󅑕O7Yig7M"jg^ce_D`c`.Qҵ9 hHFx4q*_/ IkEQc,=1qfGQ5Ztr^`~:MpG K5QdY(bQ0<҅j*ipQgNɣԮ<˦Lхݽ$Dh$j,da}K~}oԬj+ p9U{}IZ7Wg=Zqޜ`ؽȮqV ,EY&~ -vi~L43/~瘐e6CA(-XO7?7 Б>̂_g@B!XB{9.T5=M!A:΁ޑe#\̗He*{ֲoZSV5'Nhz(K^1>yFc(rH+)^~T&+ $sU + ;7 8 R 1ƾ$|z{?mS*ҝ y2x2猰cxAzW"s?M;JFHYk/{A; C[8Af JI|9}U'sv}ŒbwN0P,&YV0`Ұ ȫ!|ˣg (>XȈ)dda8уk4/]P \\appoVraϟeƸUlmVJbX7iG>S!YGGL0-Q;dQ3gYMsy4~ݬkaNI@iUG9V>5?DNxǴn(`ťOKVcBg&q7wrw0Y|qq |c#L-0k‡Ȧ1^})|7X]Ì PE`۷/L51Q5դ/'mg% kYbZ齺i{9DJYjAGwӐ#v z =ۦd[53cs`QGɷq"ĝOT?]?x_UIÝIN3wwo(OSYp|UfN`p*Cx@54sx~:Gl"ξXpS$YVzPHbu;p6nSሶXKfxYUb:XƬhq38$ cƴb%)B!A[wP]4@-pي3xz@PpGgvk,>.l[/qb~p)෷3ͣ JR:nD2j żBg^:ニoɲyzJap.8ڀ3XsƵ_jp./d$oJYn& ++S@or<$Ll"JgI#0 _%7DE %%i>'E"v<9Ooq-hgʾD%쑟H9>aówM·R NA!}|SD g?E(r^PݻIվɨB 1*"ޚ.&Y .ZZvVX8(`&w q!9PPJ1>Ɗ~طV?\ۥ@)eH U4&BT B3`B(ê2$xB&5oi>N;+`uZeIA)7p _E&8&8bt_(,|E}lPo͔'ZJcj%pJhcXD}~Cx':~]ˮN#‡Pqurm&i]\la[j0oݿ}}Y 3ƹsF?vr7+WH o )`+W%@,f #!DpT"u~;fC;8H:Unhưa0!>="NG&cdgs/tsMf`y.tܷ"*UU&@CcH5XVQ3*ZUS8(T,V" ǫO N1#|ycՈE`We*VBؕnCZ窯R__/>#Y^nW_Y>v0I8ΨamY!wٸ@ZL"ظOZAğT&~r3o(N.߿?" -!A {HSȎ$8q|׎?#?n.߇|=mm>Zg"`?ޯ`{'{}$| =)dH^=8OPZ^"4@x MsA+1k/'U+W:S@&gQ#$a"F^@m?=KD97=+#<6w<_h@N -``VG"R `pJp ZhK;H *Fdž4DDqDr>R^{}ieǸr!ȿS^]+>2Xrkk6DyxߣJLcKi!`JBӕv}R@c y u G 8 ""mʏL@`6B\\m#L!6lxnao [Aq^fcQ̪K5=xW |4Sco5P <~N}`c4|Fv븾0X3i@6{"4M)%:@M.&^A `He(BVN_cLfzil`'GeO&=Jv76^.#ط**>5$/Z@R%Lr'ՂVdor&'1WH%;eao]۸llҗf/^!(Dt&ԵMCX:<%\&A@+}VG+D:(ef*~`U  3ƹe\)t_:_o=[OKoϭ[! ϑ8X QjKA਋Ъ~ѡ Hեk*&`@]/q\J =#?уE'5(:. k{ ʾ\p^Z Q(kx0E"tpFNLh\ h4A ZAD p -^*~aƎ )A'RV>߫m޹}u6O_LWw‚V@G+E Gd߷WТM̌FZd$sԴh8ȢoJ>W| l?oVQ]ڎ˃#yRh9Y@UO 9Tf+ i@"NUV(`Ә=H((`ׇڣ?l}Uʋ/W/jcgo?bW^柿0ݥ=l32}x"I;ػj?[oA"DՑDJ`s B+opb"V(Rm"?tfj?v=#O 7|lb8('u*f56>PNX0a6xEp X\"`pp,XVF_R1$mBaoO|E"WiCC|Vs/G [V.% c"lAC. ?")$hdIRYe2GijGJ!KR8):k S"S2ABZϚk:E[O ͍ RՋOdQ) IT|gA;3`ԴL$$ϚKX%}?Y$heײ qWHBީ`۶ߺo <)4C1 ؜`@Ȇ@ag;nOH w-^ƈ`f`%c K)ث @5 B'c@$Y!@R8a%5/ hܲnD~OEru+B|9AvPnAIZݏPm ,#v%hɚN F% N+&طGc7>BxãiZ"o]qXҋwMΞG9-:<\+,I`,*pO76yъ"?>^Xuq">MI"VAAGb+P=Û;1~H8Җűd(@yxDᬡzY;YwC_ʼn=Xm/=T~Vd__ccsQ6d f\G26h';zyOaQQ/64"+^y)e_ͅKѥeF?! "ӣ nE+O1iǏZ"u呉cFB@f0hcZ̮.~œ@~y)c?a'j5"!`sbу.iq]T.j\=gyXjMe@<>B&gBwr~`qK˓lb }{v՟rуa#'-(_{R<kMQad=@AQsB"Ҥ鉮IE98=jDMFq:ش۶,\{" h>!pO@'Xޫ@JQD= UE\3%@V8B3ؼ>ѣDP'$ yWPt6oxĕO wg \t'֭Wz?Z+zVܩ]?(040OT,U/! csp={\HfBGoEkO&~:Z_m6'<vtc5eV<ɻ6 !O}Cdή~<b쥗o]}XhRxy>Upac3 8kk`  Htcד'@ G GǺ7t' $?az)|(@>`'>Tƾ>T sOwg|2kNV UNT*o\xWNi x$p~rBͬ>d0#7 ?öKPIENDB`pybik-3.0/data/ui/thumbnails/Prism3-1x1.png0000644000175000017500000001161313137372651020640 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+=IDATxy|Tg+&F&3IH2 & A*^-䍘BKB [e%V,BQԠlâlVT}{z 7Lsg2wf|~JZ-<}ι44ihФI@& M44ihФIA@t>krr#"L&Klifh0$zCtìPxrr@gB/?_x(@{ ̌4F|m zm"> ZGTI*aXNVF nmpu'T"#Q TpTpf.Pϑ]C t%e ܧMTN`{_M+yw&z R!@jgD%0vJ IgDc<5| F/%3E3ݾ0!>,v?7v*O;\F5K}3˜ Uѻw_ BvI<'m>c r g(-- V=U!egGav ^sr .qO\!o$:ѣG!!!.Dk nes%1mS?rJ`Fee xd 3Y0?=9õo@o4@ԩS[y&L4IVuax@ ?kΧ= `JKkT>/^tALx q]tp~W|ԁq^hhhpDxa4so_SÇm>,ZHP0H{$|yQ*(7 ٳgkh>)94]QytJB.f "+5wTWW @} ^_//8Ƨ: @aN(H, X,ܽ{M_' jq_Y։,%DVӧA"⪔ajUxǞ4#Bc6;)<(DV089t8:h]D\Jf_Zr|}|Vo1|DVcpfY7`?dsA<̦6?00[=Pn,11|Ǘs{:nL|.' 5]JU5|4f~}h0މЧq zuqABݴJT`|=f~C?E7~?1c@̠uqAo0GLCXQg>v%|g?j~q$5YomwOx+qR_K|8 ع<;< 0޽{VZc-EĨ p|c;:e>jDvHulʪ_@u XD4)l):l]tReX?xI QAqF*! #2CÐJ1?88jsK!;6b7;& ."֓1|fGW.󭝻-5C`{nj`QFF`H<+1ʭ=?~:.N|O4 J\;z};hg]>b=4|4>$$j~^v0\9vd 7ӧO 0iJ2Ǭ|k.6o͗qޜ-0RI7 ??_0d?֮HUEL=|OM&̂pɊ@_;2sqv6`0 ;;|CPsF3R.qk (ĒFip3g~e//H"q|'Ǡuqu‰Vxlϓ|홿hZ9?IFEbЏ?("`"ʢn$(懅oʹs GkQ,a)WA"bC`6÷|ܽ͛N/ xW_}r V&B3ޞݳvW`KX ڼyܺuEnbGh~DDtji޴gBl-KrDQ,XJ Z]yKcZ m2>BL0EVH3.f&K7F|]Dw |ݹbTfDIEǛA]DlATTd4ڹ%]#b5XQrpu]śvѾsw|MX8ĕ]Dǒ趸K r@Fwx\遧_~V0ejAsus+5K^P,G$\1#}OWz JF%me|4|ltُH$ј p*2Y^yDbڵkTg7?P4LF?7+|EPetُ?HV0w\kNqĉ6 eJhDXEԾ4cF37)PoHK%*ҤIfUb:u >-U~wMP:!\W.  P|Р+%KRPYé|9^&%ujtFFl*gכ+ahU2wn9ir~Z(8`&*ѣ-rq6ۿg_7*p<e:-[zn 7MBdKT _gx_q5~3b;iO5S-L@h$gS`Ղh=Xz2ğXgp_&һIV`@8l0F:\:l'IT n߾]6q..="-J{z<;یGT>_ُ_g*0rql9$ gͦdx)7D.5\#}XES?L^)qM67c/0`c$[]-KkGSgpbג扌FWFn>rsX; B`ke"8+m`%K '' 5vL{njX^^ uşmur$ TEQ;RہGil[$ݛt-`ڵiFB& DS&띂jJ\FgFAAzgXtm`B%ܙVd^OT.zJW]XAԧٙ{0*߫3s{𡖔Ͱ`Jd㷂zgD*U0wGƔ)STIcI?}OPP`^?cڴimNh^aڨP& \b`f̘A7cp~>էo_o?7g c7xǷ48iZo8@zř%(W ~޼yT[Kt{{>q.b~ZzóT(K<qSWf\ ŏoi|jT.qo/$l1fwO/;ƶmۨTI_{ ˧Z:ٝ>4]?hz*щwOH<)Uݻ WRc"tOILl/ڿ? 9g|?J)(3a pHYs+4IDATx}wյl>Tл M@ E45"{ApAI4Lbx4M4wUu+ǣj$Nេ6qB枨7~g\E.*-jޔEMxx{׫nPL`H6|i;AU창 q>s/vyZ6oe>B2B#^**ƹSw70 [ MF@eNiwmhU a^U|DC]H _3V^k 5݈}Z1d@G <ٻl g W :NsvNJ@@6%A\gb>!}faB\[kD;ڹR<&;dڕiѷZü!`ǩ^>M I qm ēi@e '!k~R8ȍoK a*;PZ|wd`gំΊ G x_QcL9#,+3V`4Hd$ p܀k~Pq_+Xf͛S2ܻa4f"qG l|3XF!-B&EQtT |Mm~%E) 0P쮇`o|nU KsBx:g>s =0g.]Lr{}la!WwYFfNB7 `A.ꉅtBH| l0!ሀO0cl 5.bC2̰GpH"p;$v_+0'j'poW^shx!C L0D/a|@s?JCd+A*vGE@ ~9K!'aNA6d`((:K1B 2pOvDIQ]CNh e#_Zu Y]9T)Ltho7b} /HjWk" ڃ92%XtC7‹`+\ 4sG>#u.fcըHH C[=/fy[`{<휴!k@WqȄ_\Z\q)%EX;mWq8V7|ct'$` i=hE-q: ᏾:oyHG-u&s~S-:3}Lp}G0F<G_bk4{Iok8Tw!ɽ0N&`-2s4(cj߭D.ւ|ۓX;0|37] hz*\V&{E#yi0t[suF;gGaWςeЖ'@q!i "_I#|`4PCdQ(|& '3!Ew)I/iB$ZO Эr<3`f]P g2k5igh9,ͫF0M6r"\$ݜ&~J1<ɦ;3݊&װ'NxHxT Wqp]eS}TbuHk`f[ ąOqvf|h)מMƚ 1 . z6G*|FOrXgaU\k.YKI> N1`}^mxUBhn{΄RQ|X 6]g[ L>tLY̿m &&tóO23ܓrmxٔuy="sm4 $m@ΤTs=oS6K>N dnL qVRm.U5.>Q?{7onVsVcƯ^5!_֋mOC3o 5ZL?#fFO His"P+B+^VeG0xq_WI1sF-!JĕuE88Ђz[,T]/~Rzuu4*"бBPXdBŰR!Ht.)0XJ#;}07A]9<*jf&f`ifa4c"A\ 3 60 -yY \ӻ.B;/gygԲ9AU:[* Ge]>5%Q1@[H$3yU&'p\ffg RIKbJ$d??&6~4e'. <#&ַs U~czLz:wPA{G{@>QޚP(W_8߳l eeE~յs}@A&a遶Hh!{!L\! 4n/n6F&8f:egw@D 5Ϸ'^06ֆf)d>u o!i xZKS`ҽuCzbazkCV \vYVkIwT\0(͑lAJwy^hmZ DVh>acy\1IkMh ,,d, :*-Y3@&l w>sq0X 0zX/Zggdh,@B4 ԐR &2§aC^hi^z-ӓSۈX Y9C-yw ak EG97>H%;# ^6w|UMv>M0K]Ni6圵8 َNKf3 Iuښr Bc.?;Rj{1[*olX͇;l"#wShM l`猤!!C/}QɬNNY?$IcI'~ *j;/ٲ $ : _}!BxjZ:⅃Nh]jiUSTo=YNTWٰVA ,~n]#/٥0s>Ks 2 sX%6ֆZ9T;e )kܕi4]2<_Llbn>G:h]*Wթ!:7()ejĀdg9/A'L1Ưoː`?}/3\DI햚nY\  1*L_afCAgS/t`,·U0l'cw[% tcGB@پcY1W]aq 9ckj~>u>|?YxX-R |~Ui_\FoSy"گיz&LېХ\*8@tjAN3L`NÒ .fK-OH&f'P@5iFcCU #؋샠,7aϞu"Xק)ϾŖF>SJӝ50ȜВ⣆x_߯Rk UuSߣd^XB0x~DlK,#إt1]))e©ll_op-KS;Q *>Ƀ7`l-1S+s1n_G~;!?*M.!4< 'fC0_)͕w>{+}OŒ4~y3o1A2$Υߌr'H]VWc¿(01}{595ǹ. d|3$ƹa镸rQX?kO5LOw'yQ>?_46}4?%~k;?*J2YCVr {`_;Ms3g6)'`I4]goJcGM} ]m El"Y^6qKbN˶SVkynPc< VxB}jZ8-V"Uz%˿R0'gW= wN7l_vMl0\D*MhL9 ֞jcabhZ4+{ an8Lﮰt% {Ns^{ U"ꑟ{EjUR>]F ~uf|c @v*wyz A?Q l]) k7{VF MߜnhiUHBz;zN`Mx7%T5X ~).$]C0LoRƴ8fXFW$Ӝ3pKh<5OziT*3Tc4.ڛ.5[> OƫƯK69iF"߫['q#`㒬bxf"y't?™A5 fpR[W׽'R rz{ dU᫯3{Xzq 8URm )6?Գy`@d&Tn_NM| DAEjpr^| "ZFA5¯1[Wg3j30 gXr~ @-F9F`|x9d=Cbɳ o@Zdկx'pGp\_8 i@Z6 n-OWGZ,u8F+ѿ-/߫ݰ0M@ @x^0~Ь:%s(?3QdZ[LkB\[ǹ z yHE (0s?#\B#fӍW 'p ~CgYVtC_^]B/a'jYK8=Z;9Ι~u.@_\]u沧W4xZGkp_@3~WDE!'Z`$SȞ:fFp-\ lhYsa;f42ri-!Q!!]3()(q _Xj7/(ju9܈ |-_漈v;TMKVzY#X x[0? N3sm NOw%W`p!C'V!:ZJRNkT\0_?XD[O?JS!U!7# sǔ]B={܄ZvAA/7MTUDBGue5$q=aj pz3'> \@86孁~n[BO,EFy|A\Z3N<.f@O{U8.s+RFt Ql`5.\joW=ϭ6s^r}!/҇A&?cpjPvqYTUBhWx="`xB`ЦzH)7`+`498B/vl3-"ra)U(' U kE|ςrÏhi^7usNLj͌ܾͥ_?TBgkoth.Qw y=MhU gP{!k("ۤsV#gs^T yߤYf9jRR’ К y OV'B -LM4]~Ok.B$S#+L4ь?=ZMW{ aQdشI ]`qX;pj_A9&~v>Kj`XM!THZ*xz&@_-LCMiVf7?e܍CW͟$`AS_C {1.5UB@Ih EANd4€H1/o٧Y͞ a s Jg\WV[H/ϭt{ń @~|07oȫ|u3laY~-s.&AkBVŅ{w]/t^"( X9º&Jx L1\]P[}. 'Wc{̫ͨ_S^\S(1?>EivOhwMq ʖyl صnT,a{q?诂eT 2ExF\"6E6, 6o[:e2=]XǾ>mLEnш] @pn6bKD2& sk/^*Vzr 4%&\:??[~\F_H65)pj-N [h4T W`1gHqR@ĭ\q+n $]UFDXk vN 9}j&03XZX(`~tKҧC}E!do=9l̾e.D_\զXK]L|xU[-0I Lzf)r@Ā|  I xo!%a$ҕB$Pr^YI"@O#s\0j,UH}p+@S~L|Y-F4h3Z`5UHO'$"- Tlfn a08^8j dha{@-Kpi9edIs(1ͷ|ܲ{{sC˅Apܠ78@`oG$r`ǫZ~pFn[Y Ytn aՎ̝_D242 x?_`s'qggʿ;*H3HiDU5 ]Y-m()|nutf?맕Q TMW.WOrJm-O D O\\/]J$15s. mLaZ(&XLIjߤs`$r3Ln zThSH#KGM `[/t/g懹wJ<=L>?^zD=?m7:() n N0lyFzp?ej"C@`&{<B M(&RWB"$mYmVo,pg۸#Dy\gANZ.5L@x׭ Ӽ/.c_<.=;,g7k>"sXO6LA(]_JJQM*=k6LR+pIW[ŘJ-IaĹU\% '񿿹TڽCXC|_ڲuQ:Vȗ-ZҜ'Do7wL̝dG\"9 |a tg7+{o 6Fo߅p9r'`|%@@ 1)tis&&Z= aJz` @5b ! ౡ={w-'{϶o RPh oӕ-'f>>p,uv: 9na Pއh }`e_ #Ɏ29U5?`¬fhG͕N }I7GWiX=TZ V&=p.&3vX{i8|ld7i/RV6~|?"=KNֆki9:>mm؁s/Y$Lޑl,ET00.}Zh-aRΩ, &9~#R>OBu7l߷mP{-/<="D67"<@__f%t+;T9㒨?V )` CSN1qbG H:d]wKcBϖwC<E !_w*I8~TOض<2#]_5g!~)ڜcduyB+\[ '˞XX8M2 "gqf7anvw({V.i-O`NjԸa>uÅa}u9zhena ÓN$fd)5t':xՐ=vwi:;T0mZ3[0ٮ;X<@e\jl͞Ԉ!*ۗ@,cLvя˖Ԝ;d0!ͭi ~rwpCøp_@(2lyۦn[w9xp7D2ۗp gOqGY]L{X~ۻwoh<1/6foCW2hz3y|,Mla`0iY%7hya~G~/B@~yG@~|wBa֦lIENDB`pybik-3.0/data/ui/thumbnails/Tower-7x3.png0000644000175000017500000002705413137372535020602 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+-IDATx}wTU"Tխ[9v@w 6ؠD %"c*IbJl]wݞ{[}R+n:syù/7_;ғ@zH4# H =H4# H =H4# H =H4# H =H4# 5>8Y;v-Bip虧?ao#pتw] ҆]:b(?z[~{*j>#Hg2f`NNfݫdcdx~iHX,л]b8Wdgݯ`?ݭ}qHqYB_*;<ԅi"pbvF>`SƟ@b0ػzkf~I`8>g6,_E? XJ&v8rRz1MLUn{/Nn+דҏe@CCo f6+A3SL11G?Sp^=j^"#&Z_(ɐ~7ڊv(r9횘@` wWƯ0mf^EUxwή[B{ߣ^52jy#ڋ;B.F5T@#Yn^gvQ\}7.^p3TPtq5]YnOSԑcNR}tC5OZnh1boTiSޠj#vNJ;N#m()!^ >H=ZsJo\3ȷю@w3h< I`(d4h%>NF8O`|}ns`H${n">aqRuNZ@ QM$]E1ωkH2PvZDXZ8J-}jڋ^fS qT C=N-Lrqb` xs躇_O"Ӕ> F ۚ-Z`p; 꼷Zex,PԚBT] Dv]{1&zJet)rE]ߩ#5zbW oߞ?:MBkKgUvzQ*f1)h1Qh^UXeUs}z XO\+U3>|;6_AB'D@Cs s\d{V1Ͻ Mbvt9c(3Hϩ[hU^z2$ӡQ'fF1#{o̪o S ! h'[(49qn',D ї 6A_tG /T y<|5zrip/\gе.H0d*O@C^bgLރ#C'4BoQ EtQ{Tn#\@!8eoA!X?WW@sEE _q4y(W{(-7p02>&DO03"׆҇ ^Fo8߭0 {!RL.(LzЃV/y#Kej_w$5{SH VX6-"!!ޙw,(^nפ"'AA9*Ƈ_8!x!Vf`p3=0'wWFy#|> (xPBPYr3Y׻`Ew)0/Q*=ɫT`d|@ĸyb;I؃17hM~%WL(R_Eƥ*۶Ee ?+/9_W3 -*]?yka(|8,* uE~Xe*5b!AQw(椋w7;FF P 4>|kcQhwL]D3 I#U9ƯjV[Pe H RvB\PHa(~DCueS@NUϸɰX`;g]AY>MJW0@geāᡒAҿ/ PV]2+֬;$[?dQ[LS~P3  eOhAWQD) <$X`#}b;";leپ1٩3PԲN^[L߅ʈ4Z]a0$maeAdk,p,|:w2]AP4;ʸgJ֗м1r&B1K4և8lM|`91z#69+PB }FhAGk>#˺ō7zFw(+;&ы_@niQ~Sf` v4aiR\BE2:>oW&nsq0r.RXŨKq/QFDr0rA_B`V)4~U8QlCd`0үtV.>K|:: t"EfyFt%<|Wx\y!&vT& ϵ˜Q~6uqLf#UֹffʅDEo01\trW-h3kB0 GcM3Ef$ ù|!%y~WW9ͳ|e~6{}.+~+&@6꠩ EDk$ q$`ÊK? h F\/m#`(}\êyo(Xj||R`94 #^i< Ǖ73LN0+"b CtCjT嚘8Q1Wt$M,Qc%m]~ښBC4 IO G! sتI N~-/vJD VRj_œh:(d͘gU+7V,Pq=nc|~z Wpv 'ts5<Aɰxż !l_{GP8+v;r~eMxMε HB C&JH⸼MRJ}YoD^ULv+ <WЏ1&)7H@%0`łKXHS˲r+Tj8כzd*߉,4x&{W){4Wt,nh,3FN݉f 0k2@^K!aL#7Jl x,Kx5ؿ uIĊ*H}3z:uvS? %(mK]vCkT&&)şkyd[B{0`@N\[VDgf@#[#b2Pש Dkc@ mmz)_y IĐA @M6(}gح4I? 0p.%,Ty t> 6L5PuE *:hɕ2з.:+/t DD [O`?O}`uaSfU.Yk6XsmI g#"RP/ bq/dI/TW."L qGFEgXj*V9^fSBgXĉ"a"0zNfS:}YwP}h~($C;X=H2gU&#tVa$8]QL4BE aAlu]D^0uESKHO_>S"π= }HY!M|w2_;,S$ z$Լ3;xMU[D>sdڅ(?0SF-;RP;N"xH2AЁ+#އ;V5KT>zީ\]Bf!1bOwz#v##͑\1k[l~$~kko4! %#FP<|s@Eٲxj$]}`9Oj_D/"@SWB'7BnBʆN'H*EF1 >E~".OtBEMNrO d̀8edh*bڞ%d(+͚֘C&=$_ 1ՠ}dN0&u#Xx`}-2sqVLq'Jl7$k R@)M.Gkf0AN(!od8@gUZS5H"(ϡ;E}w(t_9)& vR|Q_DXM"$q"d D6sxZAt@"I<= Aɀo:)v"RGc2ӹ De1ڬa6ƹxZWE7 ,5>kg#!WrI九f_t*x/aWH\s0ı;#b(4*60WIzw;Zkȳ W+~` & E4v񎶱dr&a8 -}<.6BF-x .gh-G y!? ;|A<]Ȋb;q=i OiU|q ^sƹzÿysueuQIP((8t"06KeRq_aϗǡ`v_IC‘w;ڰaS2& 8 x, ;ZhX+' ~Q玣6#s!qYZ 2HCdZ{TsD|Xr;dDB܀F9 V(Y4rdF˽LqAf3L#t!)P6 @%0 V`jQĀp1ɚ,%CeggQKp`J0>B7zq%v7v}/-8 =EyM|Iէ-^:ףQhs!N% (D +t9Ђ˥qpN<` 9%'91JuʣQ*PǣW5cJ0 @L,Ԥ`3)pN'7Ϗ3hP?&p}ǧEZ{5ks<_`en6g%fp. B+5Q`D盔$,f`ph`m3p-7en "6c:ǻ(`ާs8"賊Üb䆺?=!d_ywL<> 4#Թ+]oǩ &dK|-v ap\lef|k0Qx-=@e/~VNz9F-p~ dqZ{~$PR(؆2p鷊ve3ܖ%]sG[dl.^hmΖ . &?p^bcg=#Nd ֦ &äH4bfh  *䬐F=(Out̟(/ӱr_sAXQ.~SE4)bqv]8bVj@˓ !c6-5 ۋ(U*>l^e#SpHH}wrsUA>lw^:h=_Ο\~uX*uUu O%&4e'+&)CZ9$pkSe 6U!g*tcVx)luuVT6 mh=F]&Nx`gDևC@kZL?9`#cM Z+qa ʇ-yLZ2$ v9ԱpZͧpritb(x*,c* [mlH_ zwDx!zˊ4'z ?U]}AݰC8, `i)\a'8Aѡ_l-M^bM;GHa&B7@.Hˑmg 1z95]h7(E9N=@IdtrOlHO `% ̯sW& Necvn^l70 $Cgga j-Nc D5YY/cLHHm!w|kVF&~*?ڠJ8[?C!?cmo}pOC$N}/IVp:%dd`M"3aG<-Rwt1G1HP[ up}xgw & eaۇrexKx:$zvG`տ]|_.PAI%w0[M!zg c[8d G="_&}ط IDu3g2A%*4Ǘ鍀{!w\!ߑÊGEw]\?(FN<,c;՜-D-Tέ@rx­e,YAW !2SSl F2 щ@m0@bk8D6N6)}OeD7! 䋿{=~[(3NO޾sU63;_zq%>P%ZT`7w( 四A'ގ,~;2"C[ܷ/poBo_Ő{B!FBnAae?I0oƗ*Fcadf-WmbAZ8+$q6} pU*t& 0\2;o+rdP^WVHۻM9?cF+ȑ B< kn* .`b*%ɔq̌cl )tIV ]=Pw_>>Ƿ!7#b|}lrX9 7ɨ?W?"yn U[?@j/N^ 48 GZS( 2 { JWIQ )1*SܑE pcZqoO|V#@*E^N@!xsgǢLzaD^íY9M03T ǴJ߾);|ϠUn3Ghu"KYהI6h\XYvXE|6@-g%f\~HHv@;j1̰ůBԑwgȟyr \C[;kbͭ~/#CBZu= Fص\~9О3*kLpf=P./ |uʢQ)GVݬ шLowD." ?oJ+ྚ"~sk W;}_W8A͑<1g[p8+mJ #ʇ_1۷eG/;پ"pٍA_8BHI| Nzh:ϰ䍩!^;tn9׏Q/'y3%q=$P>7.C+FK2CYF+z| "4J.P Xޔ<)C4/SՆ [ܞh=̪pNʨz,#:x^2^ViA/ڹ ޾_ aѽ+{](\]82*K`V >F)dZa.Y]B@N~VhԣkQu+(xUD:p.q3 z 7xL`˲? |ޙ {0'B)*W2!D {ֆgsD!xSKb`VTGHx5^@^ @:r/sfe g9 6HǮ룐Owgg.mGV5J=nu8V3c"#CUHt#XC7|>Z rok>G?kD*k` MKM% , ^HU|;;@Qj·y{xqEu8ml4yE6nc[( e5@{^7#ëwyJQ :}iazl ӒwyGJ|O቞_s>}4'tY}E xnMc܃yL ?Nl_? 0ѻX h^p:VmEkH1^ײ}i 0[2Cԟi—BLa pHYs+(IDATx}yTյ5:湺zfeQfdAFAbȠQpQq"(D6wkn~[{Skj[=_CZڻ۷=~6`6a6a6a6a6a6a6a6a['N\vυ+867J`XE zJ1d nbyA:nSYQ[6o&{.Q?\dda>x$eDg]^!bGv5F)CAM|*5i<C݅yL/ϡ<1"aCo]` ?afrFz(w9&T1"y RIqЙ0fRybsW^4[-V`x3+'lk5Y6@(a b%(?a2~\~L)N.iVqeE͙H]6#x˕׫՘Y0`P)lE3p{_CqhD sͪt,|je|h !}o)T8q+b#.۷ٓ!PƋEt2 P=q;bOpߕJ,Vm0>4zzzE"%@~8~*XaFP&,- eT-R8~xiwu5͒"gv{/_~beWqm#aUr]GV)^^ W㢜2tf1&&Swhj0N!kÇ[>rz ݒ$0,d:[),QE?V']VVX,&p\ge6!g95#bFyUt ށhL+4>=wmCPvQ\{[\>C<ǭ[=񘅸d9Dl<tϐo{\|\-ПpC@mx.tLD.  Vff~wfm3>J g!=qN"?N0 g,0~M{\B`x۹Ax3*!3|*^r +=)(Bt_F+e=z)@h-ƈsׄXg r=|QIa.=cY,8!s&0PԩRTa)bh*ů=I\MC`JKKE8^uC*4]i hl=rM *tx=h9YaŢSبPK&XG`q_g8مb{D=P80[ΘB dTUTi^!z@sm?< kTY@0Rz7oh  @GzDȯm ]Qט5NA|d5"sؽT꜑-}u>ec/' 2=ͻrt% Å(Jc(YMgU(z*ףBG,#] ON)n|@(,'¶i ]&{51SST}0hd(3=`@4zAV%X+x@Cn CC` JS<% u;ıż)^~N}bk-BXLz-bH e:{\HFz@ yotjDzsTg7ѝfwwb>y*e2UkŪҽ&%0 %đ@ZA  2׸{a!>7 +00gGog))`BW{b G_!y(vM{OO/Edtn[Gh* NKDwrj/=T?w_oOh7ݴxgz սsܞq7jxEL _4_Q"ѕHCA =([}=lRz cVs' уA r;|vVw}k??P\\2c?-#@85M:>{w56K5Sq])19 NL ӯXoct)/ĦIjS[ ;-;f!8 Hʽ+GtzQLo,5b5qťR{Ubl[Ԑ_|/I w;]v@1]hLJH!( Aǣe:')8E+ 7w=M\ŐGǸfIs~ r8ظ0`/T[b -0@'ұY x9d.,- 8B|%[Ja E-3x-;^>мD CL>Uءj_\_8￰FGhw;x`Z&$A[K?%1NCd G0j>2誐FQ`t7zRJ ]Yܨzx5-4 C@`M^=qn篿4Ϛw\mC ~d8+ACtua4L3ZV٘&=" 8ٔDh67z#-s XC\@w)Ŧ'`0܍*ǬJ#q&{&$0G~8?!$^.2hȴ cvg2ܵ O+`v^qY-hI3.-198ujJ]8ϧlb8Ǩ2>4϶7A3{ŢiTl/h\߯|T E>K`Q3) O|TqVxqLk xmTq>}"Gl/So'bA[.feM‡ Qrk nRJ%&kyPh@-E'f?75rIDs&9)=Tv 3AJ).a*t_4, 0]{ɮeb@/z5^z0!__llW?I2{͘Z}C~ZfЬ Mp}T$h FfAպ\7:vQFoRM oK7"a)%t\5pi޲l4[9ruhxUWg/g w/Gj ,511@,@M@! Ad},7WA g yZeU60g ^ay9Sә!GajXd\ izgA p&&/ k]pʹt7 8lJZW[ׇ'%6,ƾ6>۲.CH߹O@PI\ F*FvNGKX \`jvQ2<.Na fJ@ml+p=c,Pļ^B9H41sVk z=_~(? ;*4Sl۶v)rq)C-km`h<CKf\_>} $="jeu0^F%.};EHs'yS/q$|ؘb` vБDM <>vɡWY :%w[aRxD7@o5P>ByDl> /!hd \`Tf8:@,Ke6ǓBe^8 C7 Vy 5SFshpbjBD ǔaKtYJQ猤,HjxR"lw3G0BBpgaܾK,aMqW7 3SU@s1S:lMKG٬CPW_ט Fi +,W$FlPH c4m`b.lmd T ,  2'q;p؈k h}QyqQIGA2,}J|\-K`⦩`u4j jAxƪ2RJSېgr}ҠpdQ_@y`6`IA3?0B8&3J=CD'v-_VW_ޫ$ûŖUѓRO_"{EGrY]ûxh%j cKHv c+a8eA%1@wx(P,{~\hC VLPf1[zi@?}x/?e߼xߒ}:_x(.M/+"Ǣ]U#7,-%CHԉ0:\6qP}U+'g.buAp*,2zϻWm[18L!bٲ^%w99-F tKyRdཔ#vUX̝3tl6ݼ5:>UZU ")`}/*PIP8DN+ N^-V">DA;t@j~tk0>i#WPxړǤO+$F6l]Ƭ.eJ`p+yw7VFҼi!#ki:X(v<D{ɂT641=_},]?k-=M sղ܏G+ ]Vh4KYv- ƃ6wVV!E+NB^S6e>Y6^H[,[6prwwCBè^:xp}g˕߼"+,FP> @_y, )8[Lf!Yze0'F OY: Ns^/Ȯ_?=G8 ?pUkJP4=q~Q.=P>B1]K3A;DxB 0:\zڪD5^)v=hKqƄ'pqwV~\-V{ 7r4}Ac.?zmWCb r+hU:K@\RqUfV #`nX+#RH zMzP{WC)*z6J=ʁN]Y׈ ).#|E:ܛU(]E|\'k|?VKѠ_8E) h0! ݏ5t<)H`PS@\źj[Rq?,vyC*,|R-ӫ~J+ +q-FG^d8)Fý#('7g .FxEϟ*7 a;㳂-ͬ/γeerb95*9ӪV]7Gy+ЙkEL;\x=&.Y6Dƀs!P~UH#';Y}-Jr^^elms yCc:sݫ4 B""ũr0pN#qr:ěO%`O_@.` PaL,D5B/)TBo@jտ7?Tœ |['AiyP0-K8ىlHw)EtnK7{W\aDcWy8 K(Yrݷ;o%glR 3ea[/:e_Wv6a6l=l=l=l=l=l>?g]oGjIENDB`pybik-3.0/data/ui/thumbnails/Brick-10x9x10.png0000644000175000017500000004556313137372641021150 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+K%IDATx}gTU3k[9tuM& $$7`œfEE 00:c<μ3Ϲշntխ[Uwksι9|p70߄8|0ӇRqݫ./O{sW =yYkRq<8Rݑj9q${pmx\5{x !X(fx 4B`Jw U˔sN׾':`0.̹x}>1CY с7jԆ=zB!#;rÖ a_bo7|`XPEG#UٕX<>u>_8+DzhLG+բL+@v9n&+M&ߘE;ixGB5q";ߗKhSHc A 1C=ZeHlx!`7D60ux7o):| m&|31 cUgjʾ^!T1>0*C.yOtx部2 C)`&8>/Adž*ד;fY;7ū AD?}C[tɛVg~7сex7sPP{n0!yq.^oI s la|Чj`@87)O5}B3^ @Jj_GY\ڶkRߧC$w$y/IV]s@Gg]6 E&GQwי2 b^o3൅pR<8X4c%wkZ\l& FskHF61LI\cN_d¾dW!U" 0xOHk)9TNvPbAFn6hQi}+`^<]gUMdLBŮ޽yoR6H)7Jd]Kz;n")s8U̳awI@ȭsRߓh6UKgd0}Lfp0#.PƑ*,1U$(y@΃[ߌeшJoF[s#bmwfuA3 _!^*!>x72sR D &z$knM& L<q`KAU0=8P Q8v!#zK-΃_,f_j+&3_i\aC@ (ysl!3p+))AH 6}-jr~ώl>C)0Gj;2f%PnŽhWk߼Z~\]7Fi}MYPz"mT@|l 7$==H4~v9o#ȏAKgs8+_XQyyg@S1?mxϓp֒Q2Q[x̰<'>bYB5E8k_[^o)6gޮ֫~1um7Kd`tldN|5GdԻXg@iDۨ\\RA9SC9K;\@N7$Q="|燳8M zt"Gv:fT(K }3L5&a`AbRLPC=}i{"חzuY>| 甁lO0XdDͣjN<#׷KcQ{0Mt(Gy΃`COgFR`\}ϣ<ˀsGutIdeId7\콦<4vL+#,,yDԋ &xZFOKIΙ,/FCxM.$A;DWL8c*bNRxs+chsҗDw1S𴎦tvly@ڨ[(}.#mTG~ATkzǹ|fvsj+Q,+pB eKT*2'JAI'n\ǀ 9ӻ%0~AҤQ/Ⱦ Ezo %F 5G@ Iftb =#5y>#;RiFϜ<%j8(ӌ^154iʐe]xLr^gq,Q9oը)#B꽧KUpFvwP<5iKH%JOۊNXP U5Qbu ϻ `c`40S@{a2Ih!BsH@(7 9gy}FRޑeH2x>؝{g̎+QIF^ސk<Ǝv ^e}d߀! ý6|elG%6e[-݊%k_R9<{ ?UjN/6o|Hru J)< v!ڌmi>7u1`BC紐9tFHmy󹙷!z{UޟL^#5+({wT߮7X?Ԭq!bui1ej_Ӟ {l|6cLѬ˙c=$λT6Ҫ_'٦$n?D]9ZG6~ (7Hc9MPg!n,PrbSitIOTTюp&:0;<݂GSdrm9"DTEp;DF]O}2Z E-Bӏ+Ճצ'E hyVӡcjcSe3=|vn2vSf[ѝ-7~̀dvy֋hz8}-^9>X B3GX xK'vFc(a;3ƑF;p)`ƂD;u"!zy}*Q!gJU:Z>C+̍˖եU`ߞ W|9ݡ;^L㥏f9cF-'G6͈z]>#-RS^C+q3> uQڑPN0BƯ::{;SN t-!*ˆDTHĎ' cMH2߯Eh?W@ߙ?|zIh(.⺻3L3'Sk#V΄6 %?k30 ܴfj˴}9<&umLd|:Lz/O)Ag妛]2yʼ^Sa v x9?E/D!Axv\<*+UHXQ+gKfi^^e*rs_;M.e(7k  6S>[ Xz4eUs1x ]uͫי1qM^i4:s};P3\_l,[1܍p\"hfDi }NwE:= {(L ESJ9;F.=59޿tS_?.}γBU\WW/8CǦ$ox_HQَЌ/Ed(WTWP]n:p-\`h<F0`8Kr}fX-cUـsV%1Ѭ6_kR"okʽf(t1PT]q=q|-ovVH7 03 LRkΎ˿ {l8 |4>wʧ|IR:j=(l;l_:h+2K&Q7Ur.x^-1>qK[5*BժRS>TVΈ0 = /~`OEGxXߨx(s㳽7 MdM!}1ovS#hԕ˹p]9w?ZǤ%a5 j_$!垭 **`s^Kl|dRJ8U-DN@>1 <?Ԩ2?}Ǎewg+ݸ*n+ܯ6p>= 14<57:UUd"CVgIĐWܞ#javYFQYg WRe(ISe.FZ<L>ELjXD0$#YA<;hGԑ;!]L43 <13A|θHB:%F5t ծH7r"ǧ7 O<@'ygǵ̜OٱVvo*Qg Bծ5F{"Z>=sמPݠT)]/L,Efƫcu@b~.1SG(X1^b!+eٛXnv<'ݞegnPх$sJ=24afoqv,s~(u 5f|Ua-p} ;jiG/Tcs]R+gFE{duR= $`Zy/߿Q{64}gnpx0v&~Qt|RfHFOG=!\6תѢAxp#J%d\*ukÞs1~tU£,n gs&0F"Ymi{4 0)KQrK8*Iy՝&s%-97EUnzƔ??OW_^ZY&!Tx K"sXLg2Jڀ m$0Ǟl?OHioL\4 W;y13;`-rRK·]4ZtFh*{l4@$/6W2}6mkI2_s\HoNl _G p Z%q Ef?JfFEê -^[M_xկwU1+&^~M?\]bϗ 8ƣTTjӪ :9+/XP? TSx2a@g_` *EQ4ggi<0 'v !s47_ǹs' C y6xD,_|G %nN0uUW06b"kG^<a9c+{{\:~Yk 2 RQhZ_hpz8JɦtIh?RzLF+%K.;ȼ\Z :1!=In;?J@*i P{\Uu1k[E4`J_1KAzRhI(O5Z@&$E {kg;:ւADG v:١yw2)ƛO=Ra5u ,{ό4Ơ[Pל2wG՟\)č΋BP/xܓCSxBϕ^ @ꓗըzֹ@B ]JA) mt(sSHI1CH@$M9A u UWC |j7v>ۆE"bEanՈBlrf =mcN ilX:O;)>;_p4qg1ީ_]4ΛIR𓷤 8%comn8X虘kL`<:^w f_+!?50?.jO5PdPaϑEFI8?1C7:Et dlY il;QZzb{\x#]s]D~OZ(pr%>uYZa_VvaR=tmJ]8j}2*;<WRf.`'ӝ0F+|({ΡEn:AkN yT/@Pš`Y@:*T_\FbDSt ;c !J5 Rjuֱ-*}OpN<ꕆwSk|Y,ϪYԚcwK5Y9ƒM\Y}^l3="ɆHu:"0X徴D $EbD,KRDtl )d ֚7h.3GH?7!:W'GzR_bQgFTPxL+gFy{ 9JUYWP'z蓡gJE'`XQ pN; _9w#.鲔!l3S @)"-dA`<9=ƒfR?ޤ#L&p3T).z/%ޔi|6<^*j@puGRx>\<>Dȟ4<$|I;|43Ƃȷ_T"5Mj-ˊ`) e3@vęO^ݿ@[Or5;5<4Ҡo lm Щ" M!Gfr>^!f DGXUIFdht|`6 I1$H Y5ǺҎ^gKe떟k˽fl(VUwH \kS)mORHW`2JC"u͟^(Fi!១\Brjᙑ!]P7zW<8T ެ DFĔ=E#ړ ^Y*0`;@x=i8Vk-4@QԊQ1>{Wg|P Qar9uESt}"DO_)WB[)2 ̪`˺"D,6lQr'u|91,D uO#YĎ`$(A$Q5@vtl' QTአ 5/@1e'g[Ws%{41p΋ ?{|$б<|; sb-Ndie`߱g؃!ߔ"w_o d/ÐS> BS-LL7aPd 'šPa@D$ Nӌ)=`~1AO7EQFdEy0XfE/$gꪄc&}G"?S5AK{L THeBy7"32G@[( O?v0W}M7)93ma+dQGenP4x};9:y3u6|Ja(YNCnHG!2P_&V"(CK!= m6(p`wdM Sa뗢CԨ~\U (^Znki $1)Q1rM*qtw3XY%`x拳i,d M9B@/o*-fXMG/ؒ 2o1BAtg&}<ۺ{ [G"3ܳw'_Y@7 dzEBmXd^^zޯ s-`N)XsDf HC>gh܌vW{r#+_1R"J PZSAv E<>2"">Jή4Zy `1 zdLE 4Hݦ=Q>:8>O߄0myr-7Z(ϧe" B87$"Td7{ CIdRq=\ϨJZ)"~U`t  ɜ/5tG P:EHn6ߨ_fA~h㱑}QisO׀]!d){#gy(D3Ȧ_rKM!QhR۠$_6,^!,Wu[a=$J#k%/X1HT #" ec's;'G/og"4"p\ujd\% 7~7oxOdɔ$ Ѐ79AgKEe1JTl9L+ic@#AȌ W(K% 94B(}y@B #x(٣G,r= p͎ u69^t/6ܛ{%tD |ɫj/@n ɘW  P T7j2 d^!l q,'Sh:RCFadcpfi٘UB\_. =z#C~ c#L1z4~lHxCȼRvOuCS1;^Xpw*X ˗Ĥ`R?~Xއ%!y)<ؗ,:9ڔnءJ* . Lx12Vi Z~yx${ dRR0c\((M@QE"2nsٙuax.}8?QKNKOƿ>qxLƼ+T=9{n5~Zu8Y1lC. w]TZ/ImdKƼ*w!vz}on;t/,gUT F)Ix,\FXSEV|EcQ]deT^\ i]]9+*hd:`|da=yU\,QIà  m$xM$bny2v/9ۼ H-,cfݛQ,\YURe 3)$@jJX}.9sc2|~I5X;sAAm ɞOt[xŖ/;+FP?V,s$$Y߽{:iuHYS$vF8yk{DZ(˝SǒR:#ŧ+YKHZL=2*Z[ER <>KG¸(RNYcԈ,b;(Mc}-wR~ˋF/d)73Mxm0C&hQi`¶Z**fedEe_ Vk _1֛ -]+m08+i 0h6+jL޶+d -@FS\6$cTR>W2̳ :=}in@e`]OkjQV׾JUZҸeI^HCl>(-a mW7W s.[ (X 051o~ PVD{|]UYSHS~ e/-@O!#R(Ez&G{s@FRvۑ7^Vg[ʆ,Bؗ.EoTg[ġ7m, k|I}.fYo[_sYנ|\ݐaMj(e@{tE$;iCmN L,J"99Vj $<\gLfs'upO5clj y1~R󯇧1+s{*Ȗ~^~RWx0fp۽l2 CJ#e]ܠGz~t;pO8D#4*+)F"sM$ Aw%F)BLhpo}&9uĵ~d2v{[/V%A G} s;'WX 5M_E_R(Rj_4d 9rK$MBˬqIcL]LYuH9 (ymfL,H\O@ؗnRХY,1SI'xw!>1BmaE? li\ZCNd:ޅ_ +?%VʧC}V% i"DV!"z}3BB}5&.{.MqXU<<\#3Tn6 Û J %=2x20v/}jΟ(x[zT #gWk\(/v OZ6 e^q& Zkq4'DT%b*QDa' |)2o1%<˜F>eĘɃGLˬb6;'e`t&5ڼ4X<;LE2q]N J67тNWx2;&*b!H$dk7;q]=ʽڻDwʰWP!X G| 8AϿB`xn)OHּX4]"P'+dYD4ƣGm-Q*ef<:%dꐌ;ӈL{rf CNgPBs[1f#W2qG~y*!ϭ ?7 ϳU,kT+g<&%[PJ-<}Ư_Mn >eHxӃ]=i8l3ʕx-hA7-,,י$FHPSpj&:uU7/0'}z?U@kq \<<?_)`/AV z^B8❏}=+Ƃ%FiAI's9@ ^A$ E"1h'.+0, !ca\Pd3TWEBrw ! f+[ N-hQT41D)uj?q> )a"ǾFn~zg8v<' {4_fg eGɒ5H>'uҮt xs0!&77|q= Jm#z DCne7v`Pƽ"?gJ7 lߛUR}l sG{Yxo_kvBi4KJ,ḳPo:ti'*):D\"CT sN7zbM,!(RUVzܗ鉢"!%2BV=:ZG)sj}8{NT13,MnKw8#O׮НvM+ &z r0cn,jIwisɞ NR>h/Gnc^ް|XD :PL3Ȍ[EPX$L9&.,'R.k7j=$!8K̟Qow޿a Qտ|>眡` 5zR^mnF2ɷÙ #5hȖ-a1= ڋe E+XsNB&}VVMgj5Uh`ؤ 'B2MsSjC:E6hUɺ,8w@ EP)!u MDd.0lhykN7=|f4<7/ofeB 9o<T8At&\FР*(E8@G阭fasKոE]'gTf 73ZW=d벐dŋͥ"Pgm/ok|7E_^0A'ܴgݪXM-.n=dڇQ ar=Ή +Ȑ*ZFvSa6=2C m[sV ^)s|q tgnMQrtk ~xt-,s0eK, sL,OzD ={`L:qbyfٳ Ph55޾y;T  Ǚ?n PO'^Lj~o(@9Q~lrafj(0o3msz::4JD_O MȿN r-s=퓽*ɹ1Sz{+Qۛu KN\7bP58ݴwݪ0 Adӧt\27pM.(e9½#xKNܳU@'MS矮+ !~ۡ[@Uѱ&z0gk0D$72<8C>.RK'ld ztj#벘űpսWvAܣy"qN #g]P0!'(,_ߘm!$gy pm[@B}w&zw-6)"i <. ;8~ Qs(h lPڻkΉe"oX 0.at,H!!dL<=a{K`  h.JGQDP$"ecyj?r#=WqxQL͛R[>DB! '4{- _e*{`KǢBlA#VdkH4,nUZ{Ev<1'7}Jp+Qz}Nr{p3_}CO׭*,+' 4*Y|yXh<@ZU@HC$"zs<110Ǯ/./5|]oƋ#@Н4fez9werb ^C(?w1"uFn @[u'{u!p.XNX 5͛3gȡM>= 6\ X8vi&Os3N@Y8ϑwC>~gщ[n+O@o4Ǹ\;Bot #E,0\q)uWH?${#CziŚzæ'D¥AKxdح@i/;cNRx)#BvW˗%d(9QUŻ|ϾW ccM2MXBJR?g7lG޸*?wJYnU ͟^X=lمrPbbT v+9[=%j ʏ6yJ`R/[*1͛?0jϟXmX Ee79C=AOoJd 8:xlF٫YXxΣp= <ye?hdK{׭*ktwO@7jH?iP@=w"݀*Zϭ$k HlokHbC '{eǵw%ۈ " 4cl^Ȣsa2N`?%nAn`^Qo#[ɏS?{w+~aWG"M."yd-;ϖ~Ba|ai׺U'ǚdԱ9]?lw &IENDB`pybik-3.0/data/ui/thumbnails/Prism3Complex-2x4.png0000644000175000017500000001504713137372657022207 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+IDATxwtTJ&RDA R$((B\^P|pCU@`-(H:$@@'3 [3k3'gX.o#'*A~222222222222222222Q4%Z%K>Y4o'+l4ϴ$&<'&<%:ytyayf5od3+WfaG~yztP6R-)Kg.`͚7/Fa Ol3[@Tf>Q#b X4y޼~Qq{٧FDW3g f4kd" ;kE~a9i+h' QhOjΆgJ*|DCZ'W Os=.\(rXfMm(88ʼnh,0 HDݾf Hc,wLNJ <LO6]'cЮ驃UC$PQ̭Fj({޽{=E7!/1|\/U\T0"eJ|Ǚ/QP<٫ErclćmYڤ(9mٲe<)]6 ԼysjѢI&ԨQ#_>թSY8PZ*P/Ey{BӃZq[yV;QUXoR?a3nm}7f+>xB0///1._(篔kNF^>s[Qxzz\Z֫GM7fX5k@LҪU+>X|K/1dxׯ* s"RCNAV(_K(bccN]|Ν-]>,@/@ b({1 |'lek.rqoeQ[M ,;` r)ׯ_w4 P ߦ{#g@B5(Gkεh!"8@!AFҧTa^(/^tÇX޽1KA$ b'C1 {yït$ҹ[ye !{zÆ %GEE1`9,3eMo_H $/:1ngv/'ØGu@W^Ç4h a:n|Gŗ2&utyW }%?xmRۇO#"xt֍RSScǎ|nǼ!Fn 1~lhπR*@y 2ڐQ2NZ޽{s/ ѣ2MB?;M5" Ł {wNmGX*E㿖(a\ǝ?п6yd[OիWW8cY8Bğ;AQb#l8bsF r*KdEn9͘׬Y.\ N̙`Ր>GW@io@QxVM%:4a-] v T4kfr-Xvm~FF߉=z;wÆ l/s0B9sCPLNV.b(Gc=iϊz5l{+#%?!j&hKxORӶiuiF˰]=f#Fh~͟eoFFҗr=|l!@*PTW]Eۗ5㭚znA8ڈwU%xw6e崵&':uϏlb}cĉdCбcG^_$ KQ&t B=%M YM.bڷ) 6yC ظq#w7l9$`Q9b3YļVZ|.?V(?|ǟnķ8fǖ vdGpw3QX|/s NيOx~Zh[u_n]}I֭[YC\.}K o'>|wpo1kq͗}t=*^P T0)SPNI*y._l_yy&Ƞv1s+07{n?#q*ğ=NKv <$V! Ns6X7K.,\^)Ǐs:9RI;-/n:1pF/D2n.;rb>}E@P5dUYi2=e˖6[Ȇr  _O&8Z[!镔Lq\ŋY>}TCֵkWNny.*`Ԁ]i_dia߼5>k{5>@/i\1̟Q:wiCRؑyi V14 1G-//UƓ=)ףDǮ`!| A ߾893a3OADŚ]2qT NAoh͕$G85EP6G.@Qk2ۺ}'"݈m[#`{g $Nolq$>lx@>!amo`~fc-`w 2~ۧ~޿@a(g{\z4zا:QKߏŻ|."}D@ :abn6=:>{x4&`prs $xwm#Y #7}uqߢO'|C˾ k^ ;c\>zb?(@% !ɠM%0@<51oXL)>zG9%a2:dV [e;4:aPlp>{t@|D%Ňe~yEvc$`(rMP0;wB 4P #7&"|K ,zXpZzevU\?fSef ! $r+9 8z ,! adr9&mG?$RD@Y|!dZ m+֬~\C2 , @X.?E"qb슡J1ٿ4$r8ՊM+f~.v0YOK`2c(v2 x)y=R|F5l&{5f AAMK]?v}|*dCo:w\a-/*:W0VI?xka؋Hqp; ^Ͳ_c(HŸ?@}Aj H^MOzÞO{1tmH_-w)u|G}aa9d">kI j\nc'V|6ZxYAeXaL ۷r @[zVC+$=Dg|Ūy˗+5}W""G )_`Y vCnS9?AۜQXҥ-w BnL w".bd׎1dz1~AuK r-CHr0 4p@{?V9ܵ/Ӷ+;eC B:8@zbŊ`ՐۢN }{Gkd<_n= 'jw{11(C#B(9!ʠuv_!F,5[ C?] F b$fW B+(H2dWY}bɇzzQ\DId.?@mw=Z9ڸ4ڼۊ_!5jܮ];]`Fɯ[ၓa R ѭ'ݱ g8+z\oƘ`ZW4էzdxJJ `mY8% Z֭dL6l*r0Ǖm>n;z*->vFuкac)'bhݰLd :#_CN DZ9=|1P۶m5 +h%RnD;G)dYyAA:d8e ᵑ=aze6chhr_UAN$)SPF;|b:r8y 9,x.^^YD ,A˧p7 XY\ů_] e e e e e e e e e e e e e *prNKDIENDB`pybik-3.0/data/ui/thumbnails/Brick-9x3x8.png0000644000175000017500000002543313137372606021014 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+*IDATx}wTeyTΡs&gJ& 4Dtt mD01DH "4.ν3s <MWէ:u} n׏w}llllllllllll@/iۇ'WQ$c+O#G|CΑvrWqc`Ƨ㧮7 B^gO6ٟj^qFބ JVx_'E?ctn0d0P׾ahzF&@z: ϕDZeT"D i64^6~f Pi\Ngz  CnKD`a0.>uz9P($1_F L~j10q# Ph@mMg1am|aaƐFEȇ:G }oW{{ N 0ھ MOk<>WP}|^z<2accq㸵IO]o Vz=*KٶnM&+(CC L(fM dba) IQw ^))_P.$=I^6tgm!0>a*&olh"Me];H6*ӠCg{x=:bGCW C $H3qxLgУ& 鱗Lj_q߫CyRLG+Q,\@YՖtY7( 4}4/hnaaJ /Htj R<:٫ ~d <(x+Ɛ/}?Ω5q7g  C2$w$E= _gUC N>ܟx*U<< `"g`9n) @72`,ţ<= ]xO0txGpc1"<|n\* 0ls$1ӡ 'ٰU?HŇ{ԣc&>.H^Ho0tB@j-d @1٣xw)VWF lT<2G9;G_la,fDצދ0uCP;| ouQ%ɨx~qHw>hbkd,]uPy}۸Gl_ի ^)0p<" ֕fn WJe {A2^Ic/?ըsiZ .:t {4?? 'f9bP@._k"Zk|q We1{lPF`nkMtwd0o~d@"dgOJ?lRA|Işubd#eX~\*xeI;B 8~H!'^*~bY-fq~Y; }BP;%ئ>@&c9EÞ ˎPT jf01+6)7(ʈ PsXzojA9ш>},b]a('QĺȿTJqQ=C0n<.wrm}R) A*vxYvsH>֣YZfT|O/QaFB v`O Mjij9c~~ubMJa<3nj Q*x4Öbh<y1+@߮nH<8T!R x\0zP˩V% _CI^|H(zG,5}vC@р+ X0pfW:Ewg`~.%L{[F_~U&m*շE\!XeތIM8?[5at|n.f~#tQi\sG^րʬ){#Ia\x4tҿ}&- = 'Lٮ{ zc} SAz^gDg#kV9baӋ2[Ai:ۧ"9/}8ynǞ7gӎˌϡgF7tZv۩ѯ2�?ˍÅqĊ E_NyN?F{]5ةk2|6*uH!;O>_D_k s]r˵aVʮyqw0sުObНd "nZosc.ݪdқja|S'7g5𾈙Qg?O34cܦzwiPdlj%g* y. HUeHuDOr'+dᴀ0'(_}V!'o:cAr,45q99\d\j#Rb 7l@L2%*-@r5QѤtc82Sw4)>Ӧ.Pb=3ɽ /pJיp,:,xP^\j.5 54͛t97;v.=ʹ%MpI9=R 2>H1~os@:c6Ф5x0ڨ2zh9iBO{h\4M0nҽ .^> iN9M \ dlfP >k_{>_vqThPbg ]&t97vG+ 3/ژNO+6E}b?k2Jpl4.R0`\ r_$ L+36in:I (3]u2"Vn^e:{0 j.2˲x_TܿGweDێ}-T%.q@zw7;yHs\3\CL[/T"n?}qKY J:v4Ž[u4U%}AHIcLt XW*LR ͓A흑͞їX*s~e|A//rJOEuqo;ursIxS<e<3{XMH6-\*o'3Cas9ޗʏ}}jJI|Ұ|Tgm}3 ̾V8xQ0 L|Hjz F"`}^ o=+xT~g ؿ[^NaC- DbBKCsՆn{› ql@x4cVK%N WK#3E)>z7m0\d;MAFGa@jIRU:/+ku5H+ &  Hwjʫ7 :T,{uOG2lxm3 ֘c״@dS]UNYg8`<>El&=:c٬*2t9d8bwF; 9`M)8`fcerBrHaH#_ȗSOeH;o+\9/5{Xdp6K #t*By4+-cS$@*s3X$S1xCR:Xݖp";KToNWamqRE*M_JTAs#DJ);Ǣ@m2Q^Rt<TO/cB8(b|l௿*Q=r:VdeW`hZ7nidff]J#(A .uQ{Trͪ^JF!DlTٮ=p WYՐOgj/KS:& e!DB+r?&&s'?x@UU6Ч[^QڠK円V5Ls-yM=_G]Oʠ\9-9)<IS˼bn|1.쑤,kcy%fIO'^g١9'x]%DidV9;uޣJM"R6؅\HV U?W/o{k"W@g5LIyX <0L";0rڧ >դ,77=7!4'jd!0{`5S_8˄ފ CJ/NFc{0 Xo^1Vzi\~O~$rO,ȶ uPzxʝ_< $ =M@@Aj*%s/Se)ؤ<69S'`(;Q?<&v̗DQ E@`u=4SMxao^/^\ʟ]vɆQU}qD~?@ZlM1GzZtB! GS# @mA/9t7[9Kփ| ޠ`^\7`=tF<㰂y|w1Rq s9!i?=5~n=zc=ܵ4f>*- Kny)-pW0R끏8_!~aT0fyU`ӥGrL'm pLi@O|5iH-h?{;Lᠪ3cI1? e5\:f`NR:ްn/I51/0?ܞս}f'Jep/-pT~p%4E_<*a /^p6:Y6>x!@dˤ BHpx9 =f56#0LP/}:`) )P97{uSn?gW/#%׭-ʓ>pƆ9|61DatvL 8h@dƐ= ʈ[ 8H P,"[LL[L[Nb40{Z,!W4#q-z[atf!}0>Y֭zO]UdwF[ bKDxeJ>ęo<lDYr-`jR<:loV Fjј\v:Uh!b^ l J+Me23D Xv(˽*ssw !&L,*ȼusAl$poeDV8W摎.{ %}=?,S7}Lo.wW{:jNȌ {6jч5fGtO=+"jgGwv?ZzCn[ p }ӧ~xӏxZ#~?/$%I]Pxt}o8S@'_RMoakn43jLahw4rn/nU~yt.bBtpR/ǷKk~ASy:;kKI,RS1NUD UP~P\a]f ϳZƵu O53pY4Qyj0R9zVI8 KR|> E*'gY V)/ ?~R{0xbFqK[W$ ֦KE'[ [߿=a4]I$8l9[z9 쁕F˗#TSX&h)UEBAPk7N 9i(>"ԔՀ  a{x/-H_y(.zZSQ˙O,@0͙h's<Ј,e3@+ӈiɺ Ь0KB8_='!$f$$*43 ˜ 'kD7E+ |u\VE䓽Ej]Իdڳa#~.OdW(:_od ,LZIϩZk+S{Xj,x^\/Q=C۷Gv>~~y{ US1i\-ᐣsTrJU584ۄow>H_(+XH. ]dȕWF p~lXK|Js6X>+&{Xxi}Iocm;@#ҩ2 rByn x:!8|CGV ++=*G @EL Tu9}|+ %?+!(sl#6?YS5¶jbG(x]2V)6 L]MAcD ]d5893ջ;/PFdHܼ@wJټu]پߋnAtY%C$Jjc.}PZ uh$)0M$H LEo5Q5{CTi1C|*#8Sv-dxuyÍ&l,,=CPC88/f0\TƎ! r麉\&VaTBg/ƕ >o>*{(WsDe0̝4ZÍj2~Iz0wW!V߽- J('(ZH*tf(8SrRb]CJ|{Ts؃aSdo}G][~MOrM4djК+TXf`idPbpu|`]Ȍ$_NV(΁==jO xt~0]88)Xz D>(>z ȉg]L/ |TH'- tc90-TM Ӈ)2B0SE"wDj61C@=v9Ouh[]\}5n_[?8~̔FFQLJ%#a8ǩZaN)/tTӧ ?}P&\nj !ǚ9d6-"RT%ϫ=CF8ɶth1TSH`\"Aj^*"mLD ~CCb/ǷB43uokw17˿,y"+}rg][?Z$/E.<'5=oR]i1'@5R LSk j.6܀‰.huZ_js) oZSnd#!cCIMW8W˛΀ ]S8PA`c&[7ܲ0;ހ 3ؑqN~KZ΢L[1*/i)Y۰Y5Z]rf;o6i۲eu[Ollll/ { { { { {_fگ;IENDB`pybik-3.0/data/ui/thumbnails/Tower-6x8.png0000644000175000017500000003237313137372533020604 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+4IDATx}i1tW+밉 .:nPqLjnDEPQTTBTub^xsu94Ώ{99OϹW]? <:yt@ Σ~QӸ?Sl+_ꈷa2FqXr\j=_'.>zkC#}ww ׵?ƶt\͞Յ&T`V‚;=ғ_ l/hk \T;|39qk{oThat1ٸO3(Ns\lcGN X7\qc-s9xU[ذ{ *HC?ATa7C$soklul8{({Catu ֹo  ; ,wagdEˋ;ZX7X.^.Bs_*" O]lV^>w3P c6wș/iReޅ{fgeCG٘nmp0&2 n󐗯gu-!ɜCT!%׽CN|]Ln( W=88?0BM0@7anuq|c~5>ƽ?!< `Oϣ,>{ Y5 2whFGC8oqX2(f]Kv|vٌۛ  /|&3g41 Ο k)=̞> :mxzm8?J7ktc>IH6w7=q5cL6dEpX_gku<ƯY/RQaUpcÁVboF}Kan61$^4+ 1] S&}-ፄ1`AOџ##T3πǀHyMn~|0CYa'β 95Q3Y 0rgm cX֪<]av#ֿWfC>{ @+8>aN{ UGO5<?yî{rڜS_ V ׈v QZorl@`X79H/0xo3p׈bdDE CsvT6Av\4"ߵ(ZC,8?#tѸa>z"e+d9gpҢEƳ1wx{u(i0>:}l>.1WnpoD||-tkU} E_7 QNѝBe>H:|FE\Z+tos+*aWۍ6o 0ī bJ\Z\lX\/i|۲lupjgǵ7]zWp/'ZZk|d%;ts&ugЛ=8^Zmk7SNɘA_LwsլC[dNm 0k0@MۿaɃǸ3SncKFqfM&Z~k\r3 T"NYǯ!ƿ+ḠoxL:T\$D?WׯQA ߯ꊨHCNIsJKn|&ʵg- nl-6C4p:>A-2)F]td{tJ*q|  5ؔ=,E[E?o5Kf/^jxv7iŹpFdmȁ|#Qʅt 4o` W ;; os^ޛi]L.8uH!F[n-PoפSb|U?s 0v]U5]iI?4hP\B&`PDxuYٺ̀qMADEB33 Y{T{fyC*.ȣ_AAbdhfCR7C)_Z`:<j^Ԋ1nsXe|ƯѲ QT{ig fHj Y{y喴voQba& Ʃ P|R">9BR>QD.EaN,SeA>rC/D&o#.76\V9f.qϷpsq\QRpPP'|cQ'ؙa(E(+솴9dcC>S9=U1 \2rZ .s+ϙ$WM@^6B+M/1(ܦV;D4D*IR9ԑm,1n#> Qs8G3<@BTT+[t4}5';N'Gܴ:Jm+^,84;BTvt$ q*Q:;@o?*g-7n(c=H#q,Zcq}^&slgfW73CmAڿ&-v9u-1=O(UR ~0Ж;+PT  !X^[``8=C)^!ʀusl:Mbfշ9x k59UP_ ςaInα`讅[$Bjp%Kv;6өӂ ƨȠGh`ņA EPBjĪ5J]al'{KL2@2qʛ'rz C)Benq39sG"JÞa2 m :K|m^~NfXսzhww5/L;ȣD%S#m V9IWeg2+G&{x 6 J7C.Q֌b10tc0DB1Y\n*CQCk3)`&iB9kxyQ!ynϣ3dA?^Ś%Q:mFPEʸuN۪Pto[OzE2OS|-.74{3Mϋ/0)8C`gC}',FmL700x(ϨNӿZI^%l\+(7D6M ϚdM~ы*~l``4|⺱E"`0ቛdx=kJ9K`yT_͟Q ƚW. B=b_`|'<=TP&o-x)3~vϏQQG E%b|qC}U.(I|O R[=>GPd`#~lr J&d(p,N(f` 5/dJ}R6~ #ӊp1<[7m|Ej@e" Gzogq*LoQ[{_pТ!u-* 1(P&@P΍۶+v7mGx >7'T%!Y#:T/ mAdL1DG j")|_3+T{KD@7D%M_r׷0I4U)9ܸmS-4en)@,<&;L@D1!A eMNגQr& P42OAB[mZcWJ ڿP ̨ke"@y{ߘ"^n~xEf.M*ĝ>&!㷷Ti_X\d0(\1ܶP0/x_` _LӀ;2M Ǽ3GR> 9 |z2.:!@S|?ܐs@ڂhKϧ>LR!b3 %P'09tu*/Q\^SCT8qvFITJ5c*W9w-IhIXLQ)wL޺b?GWP&=}[RFWz6F$HBy[R ~V^";Qo0d @XSAXDBn$El^ px7`6?aΙe*%DƎϊHHX1;-BqLޯ+MB$>"e6: 8W\K`c'aKS`Qr@)j'<'l؄R&)z!n0 ޫ! 1Pw[|v^(]:FhXdPpCr C %JV k%ld5+x#TtYb\H?xĠkΎI^<W*DMw\څZwͣ A^3N 5BzU6@,A@Z6ݼ Jb8V;|v,Ap0BÉfPB-E۝5SHA C{VuOI50ÀgbyX3CIr0&t)(rӫ?R{vVtG5葢 6O2q`Mfnd[O)U!SGd`i?R!bѨ[:@)&1*" q nH&pѮMJN@ .)eMNOb3u-H&}G7iq11 JVkq,dJhRA#uc eC( J> B e64* Pn?B0X>D;th3W)R\!Lʹ_K A*9G163*B~|O]0$}=Vcц\@W|;FQ0*fu ʕUe[@eoK3H F*qr5 4.ZdQ<Eȉ5.<4#}h|Ey@H?HbIjM]* iԀd5諵ks2%t3 !4^cTՋCt8:G* 8MR|u]![@s!mطPBJ!ݿ:&BJPYA/ݛGG(d?F'ʓ7F XbPƱܐ*+m\fC>le 8Zə NSEO|50R)d B&+Dߡ| |W  K-k@Hzozw_H> M IQz|dCΩ 8BCe,| (ț+;t@{6<ػeJ lF8Zfj4a GК+p2Ԅ%_}&˅}L|E2b>b/`x׶ ɚOV}R.sWYswSDMUsp*(HȨ;4]Ld_hW8g< a)PpCDL0 tiaY! bqV/:S BL áf) jl2Xx-p@9 )pePJ$꼝7vߠB(tYDJeP<‘L1< ~1!>ɺck7(I_g(E~%[SB6S9D0 xD:.@W 1g+?n-h fxcc[|'#.2zc[!Qe'9Y'm^ IόE"9Gx3 Шuj `(_m* rk`uJ,Bvڿ)r^ \gfT98 cȒ2 (@޸GYxp9_8֐>{DHl0Tphq|[vg{Ke9AZ9;ȠP&9V~ZߗjarHT p ){H,L j280u$`QTCM/eK5{Du`7;6(se\O5; i6Xa84T]A 1`| 9"?FpqLvc6:>j&c}dW55!z|j/#cFD.p+a(O*A"ʶ[if+Zn˚FeP0h<>-bx~\TB뿩GK|OOR^վ( c@04|H^\u 6\4dJCq fE.i w.+Uamc@5fR*`XYE{A5y??nl !173y?^@#{'A/ph%>GA1Y3Eu3nt~ +0W/iø$ eex~,@+hw}~۪!1tWQ OoTsWR9pH;ED1%|nSyC{f⑅07)`jG+WZvށhtX0 sf{OJEq6aV lp`D';`א^wa1aBqɳZjg7D{C(2D,˛#%h#HfBl)`%A<XDsa}R "GV)cl`>8؎]?ܧKDG>0>†ESmwaRr`*#ދk[2Vͣib NV'dt ݿy!䄢'8e` Z{%;\7_QCמé{&\K% |tt}b T ehN!evYC_4>&"8q١dC&Tr_j0@#0YUWg]t=>e/Z@Hqگ@ {bWwkw56"`0IӲXsR.pm[ء(}EF{9o0}5n>-Œ@+^BgO*+AĜ6t&/ gSdH=eJSz4[‚eԯG=uE0r|k=xCN[:asG0~jv}vZz)ʠ=<iKJ ߧ?~-ޤfz ?KBv@qɱI V/? ɳZwj횩gOt;P)J <,DxY)YⅆݩT>N1'{Ycf"WK%07i9X7דwk1"~ژ<1?u8t N>ѭ6y>6PRZÑ B %S^%pls қXOLGdUf]L0xI[ڟ[5syy1)Z?rdpt[z?4c n;@$۽Ou.)Ǘ[mr02.l}).+K*#\cdܲի|!bIAyM1;ƐViۭ;oWXzkn?)`Igǥ3VZ(zN-OK)L7Mȳ jjAS@iEv1x@}Wf;~cB@_F!`O <<v9fqQ Dƀ?) ځLE\U-aG@`)hʦ⳰qK)@lPvXǖ9;ֿT3pܐP#j1e?L2 pgJ Dg {.@<`.7Q)d\lQd"y}2lj =-Ryi,|epHzbд,{ca W[׹R=kNHZ!~` A}9n˓͟LoKix07,op \4JGL@fx@cJj@ 3F$a pHYs+-IDATx}wչaިRAzoR"8Fł>b558*RCjLss9ɜ{u]۳g.`g=ͿܰǷw؋`^```````````(:P۸!mzcy,g[:nY_a޳樧龁6a.;1~=ϹY-8O#`l+f] 4~0a>O8YmR[͡7 6ޅf؝b?}p|qkqg7\71J5 y60vsS 0>A=~>fN<d0ݏ{^5P{+0hw~F? `^ʁFP?2y0}[m gƟug۴| ¯~+{Cݗe7oƵ%N*Ƙq20Z0~1V9 c +T١C) ʘ 2 t`nv:j~~Dvs Z n1%Ϊߧ|p=..$זZ#@EEpm%݄onG)+tbFnf(7 8j~^\[f7sc]T"+03}dӃU%y'up~!Cbѹ5>,|P?Q]{/n'`(6ɠ͵BVOi0t dbtG. `ҫĿkfPCkgʻO-2,:wAx??GoS !02 !aw0Li/z^C&khv$tcC~CPkP<|7p 0t$]ÐBif` $#&`MDavЀf0$AGd6; CA5 n㻘c:p-{ws1(ᷚ:}%vP~[_O P fhq=dwA #~C%=h+n~xE&\W9v(v:%N\۽:Tg?aq`}4(w5)ؽ €y1,,O-Qv)/=d[I`xPyCsh IzX! 0>F>vxIVW%3@PS76}x _xa])(tb[/w~%v>&^܅U7 Ʌ9-QE܀{y\j $ >Y Ia& ˴Џ׹M= >*rawu qAŒdc5{Uјv|\N 鵄+h;'ҷvJ`_>~ܧ_CTܝU`Z,  ]NU0YO%; Zv֠Hku`PJ"X_I/zI(XM xU!\DA,&,c,"^kjNt\A..LqE˟\b_) IqYtWE$[qv.5 u&|6_XGLITC*`kU@m^jXb]aϣ"`7 Z!MCn!ùH# ]}y4Yi"y@>w2h}(棠z= \X; g8*b7F'{#` ) `+]Z N@.ifVw'&SVDauFYbNjPNL4ͅ`fy%ӧWŕ~jC'ye'{\rDL2~X|1v?5: 8~8|2BDɦT%a D2 OW1yLssjv'ElOgt;}> iT Y)Xy7)ZSڇ^խ~a{Z`)Yvڍap>k` .zŵeϙݖi,5;e&Gؓtomc\ g`sDMx$fH7QdJ~|Cm,*;q>+q4hm$c*0xVP_VxT}@{lM,4A2{7yBcSiy0VgUl5h`yaL :52v J켉 .5ww8H1^KVS; S<)xϼnh} @6&` yӃ`u]Ed oL"94Sw^>~Pu-+]w6|-Sit*"s1 ATW^i94ۧ< n[DE Z } %}N>;1a!B6f sJ `oa0 ^!X# T.P0 dW,RָՌ1>uQ*ڵhZE[]Sf3wZ#oH^2^4Κ4LhDC>~h8Kg۩OVs7Z<ք^H{ߡd÷slC3d Jس<("T+x_+p=ǂ)&C_yAu΂zGK mUܱ,2_nRۼં6-i$ɑe` 6~\@bK ʾ^ 0nc\kh{zn^Rx6D=dK<'oI!ijK`k"Ƀ0s';l*ky UoPLlnp_TVzNu? `L'=cyأƏb2ILkaheB&WX"36!Np^+{ K J=_0{:3e7kMK-,V("Pl0֣=F]UO2Dr= V ƥCzN/cѧ3c&טf2g~`uZ'| Bp}9ҝ;4Iv%ZBt>*m/{5{ XRJÚ-l9'>*!ydBut>]!n1e. T8C&443-As|aX߈u^q~fy]0cY)3n1OAfoHc=.µxK0 *йlGǴiIv$1q3l }7!߉gwk%p|%hx(Goצ7Ol[RWTJAxӬE#/_\4V͋s?A`|0O׳Ȏ`c^3*}K00 dL /!F DZԜ+fFTziޗQݫ\a*!Cj8J%봈}[iXGR1-^m5 %sfr {Qo6Z'$ ]-/P> )y7y\c Qեܥc~W՘^bx?2§6U Ձz2&SS#rSnV^_ |-pSB!rvf$ԉ#5fI N` &e˴WF’sxd'}mpo&cZGAZ NHI}?ٯN-V;bq. UVT?PWNC$q{^E.Y$$ OSj`r֗箩qi_e-2-;>@HSv\90<$%?U>)!egUսcte3i]\ wg@PRyro(R ĥubw _T6ûO~4zޮӝ*wK+R BpJAoA؝ªQj6 +`I`% Eţs{n2bG =M5_ u8V }ުjjc♏u}rOGO0߭"cj 0),HpC+T^Í37UL]a_g*R eb<4[p, -Nma )FƯ_ aǟnxKߧ)aݯ-х^n1շ[=rST 4uP\& :uK˵V(c L+2+8p>o7hNml3Jc|kDz5v/vm+n}19T^ qǖ4gܴv~ :l:ڠ韱rzyė*hgt$Q.AB"(X;>)F墄.Mjq +,-s ǂLUKL>RVǚ}0`m&#s]m&.21#B7b7=Lj1˙uO,RFgxyTI?~T&k-1a%Ӄꙻ!Y/S3u((.P}1LRWe(i#Qg4ލZfzrJ1%y[=sT_cF'^"5QFٟTyː " j]N}|iFV9R>zGJu4' t]cn } H()NnJsA⎏ }B+}nًEO4 y!/!una1?lMh4f!_]G|f./tCV_P_RP>/~]Er U]jl}K}^z[)HԜK6{!`Рm':r s b:;诂/PT L FK\0tҦ q8fev1Q z2 O+QçbnVhܣIcX<3o>0g[_W?\sbѣʥRP7- >xRX سeD7J jfȝ͑EēA%1x`$XL?ɟ0Bttn 1DxJ3(8_hdGiHxwyt"Sw;^-xYĵa̗p]Su 9} Ssqs8Pf%†\qئVpl0vN h`5}8|q~KSpqLj8[ un]PGyPPa ˄hý%9Ha}T^c%pc{{9*U?| ?BuOՊYAu|o'!m@sQ9oUDb$P&'y`d@_#~u?CMCyb,y2-=8,F;!HGj!JssgzF+_R Jxۭ8goq~~OS\t0UQ]yƀ G&BOWDtW #CFb?ADV " CieN&S>pW7GA>4&P]Ghqo>fC:==ꖥC?fPd݁6];:ܔӌ=:ja6rFhl|'XPA)P%GQZX,2T0K,*P r>b"ǝF+{WGV`p"~6~ś_i^)j̀eYD˾!x˛tW!S"Ц9UPʼ -Swi˚ .sJ%1z&K$"5gtR v;`qعOxGؖ]ܚF܄/jl$7. "K叝>t ݗ#=j`VG6G"FŲŦ,<ĀgrG K*c;sX#@Ь* u)P+ӳ_cQݝعۓ9#JcG 0.dERB__,QGz8U*Ckxp&K !>]P\s>aҳz.piX&kju!47 *nq9dW 3y #Y%xN 1am+"Ϙ?hћuYǼ Ow"# 7hˇ 8D42 ?Q5xE qBli7A}<,PY@bK3`@5rW%T@7mTR5[H񩌟<2pZP=uWKnNP~{yԟ?-T~D E F /.:.2>~u3k\B *Mwv3MTV1J4 U=1.1j+\wk[4tg2;<-t@8hc|5wR@¿33lAP^4`_-H ,5DUJi"|MH@/̅?LX6"~ZrןGR+k>x@?5OVůUUU$ze߼]Ǥ|{&䜃< SOE "Cg)L:ZC*pΒm IF]( !zG; %;MYZ}%Oكzxlx4Z>I %M@w]VAo 05/)%p~HWNwFs1XdZAXT2lFAn\Rc (vnSgի$ 5}O1iT_za]e݃;L_$6(X3w(' uj4a<};?`RAaP !e1.?ι'3qē;Ń7ĤO8P L{tSb=ovV! GO.''/NnHIdYB#E^O(Q7'\!Z^8B#Z m_-zw7-." C`˃/eG,1i1:%OS }S`sj=(vr%)a4XMB 8B@8{ V} O{uTM1t8I.m\9\jrW96Xg.ƏM}{0Rؠ*t$$ܒL`>p8uY`i,W l-P[} Ov+f% QsA-ju:y(?(q+sV+%"o+DJԫDt }+`Ov2{;pZ 9x j&]㈾ƛ[#a1*:bog#cisQ+Q). 1!#kU+cxBz ì߇QQֻ]xaNj1nK2F"e s1e,%` hseHد[S7/ #{콹j2ݱRuqEUTwv--,b.c_݂Ρ0 -z ;U䛛 `y$Mݫ[@g=GF3ʎ)i|9{ zZSI71~I,YG9zvȩݿ~S?!~=yqHsf|%VtwȥOĔ"t"յ0bp=DTnniv׌h@@ȑKY@GR1]Sn^pq?}Cg =tsEc7fSySRf)DbȯPW)y ߟ3aMUHӇSu)Q@`#a pHYs+IDATx]iՙ1J}ljPEYDĠ &$.H:"Eqck 1L&Ls&ӓO2cf{rowG?gf  00a`! C& L00a`! C& L00a`! C& L00a`! C=BҢZ~y6}FWk;B8xK<2opyNU'ik NUb;pl2"{4>~R.ӭ"//O, ><{(åLmAe?$C 0- O +OǼͬFǏ+/k{zܨ rQ潞B 8ܧH0Nwh 4UP *_bQa3L(otM@0j2|b&LܽdU * >E?Isg o6 @|0`Y`~`}f!~$CP߿Va9pN ?蹲[9@XII[CmsG.w2\>6eK,L dE^)Ǽc7ڀ_*(f.T]NOǷ3k2%E[iz{‹Z}N#ȴp:!g 6sb$lIi: ,Lu 2!/6ϩo> +a=I<ӠyC _1<}xs]}DPPPqp9 _o7o.N}Dp^wL ֱ[>d8/}x_Yqv@ )b0> ԩ,Sg${U_{<2CܶB+Ch>yB -J"F =| 22|@SO>2<2ty)f^fpOkRcґsL~X|ݏ҃˜Va3q@"!qI U[)1*h_N= ZyG=ßw(v> &^O޳ >aUL'lQ\.AtYh;ۈ$A؂μ6ԝsP(6f>LL,PW)&>5 Y,k;I܍k$ LGqyJe 1Ws c@\d:+Dp> HA4ǜO}=r}3]ɶG^K:3 lcK '"S-Ze2="yH<>PP?Y *G99Iw}-E= r:ܴ2-d(,,cl9õW٦ &noΥ0=\"--V1vb_'Wg){2oQ| Di @ՂA$Yte0[c iM]TqRTpPc1z()KZ1VO޶+0:ؒp`KP|XSlQ0 eH[07'8&y2D>~wX9U:JrEpK7DZ*+^3E2E cpq+WMp6Ѳ_v/vjsJ8g\ gI9jnBs@2~+u s8D?|6JېB1}V* % $[7U*EO:-=A$_c\duN E%G~kk5%҄3%`q(@lߪ˾uXes?Z1hdYI, 6s1y2;R?w9QuWΔwDOס0fU]Kgt`-\~[kR-1%lrqIgFY'[:_/(V5#<,s,UzEй>5npq i,Ca6OlG~hȒ_J?/hf$pBJR $K*"RD*R8W|_ҀDV+_{VT͝Y$x(/I MwtZm,X0'v6o]W7Yr;$pE9kU^!8HPN?C8+}uE’ $ϻSO_Zl{#!l"([V2?x*.&hiGb&lNu[HAui Ubx/Q?ރV`nmOcPr h@WY^ TkL |SDFj/VdD+ ?SeRz`Q@Gի#xqݱ};;]>P ^u۲ 2kU}[P_$-,s[ׇ%dYIv3h[ fw`iIl0Qk p7rA ]Nn@be \ .$K2TH}"$bKnG:q78 %6s~xaˈ%~}T*¡D { ;=Z$S&Q&P|460OQN&DIlAgP ޏDZR@u* :#MuN݄udx{Tz 7w>0|l<@TbqtJE|*h:m`s_c(]%<)ၘZ4;>!-Wltg*W *Y/'@NkܫfipC5@5&po u ˕*,Rθrșt"Mʒr ( SX1)-I@2|N/h~!;Isd_ ٖT1Wě@e8ʥ=fe],Xoe$֕iuQl }&wnNKVƪ40Q0v#L8 8Y_pWa2_ Rϟ+?i$ԓ@ƗM.i.[M)E,CiENLj/3mzAVw>TV!jHIX"aK7TᄏITw33.R!uۖ9"]v-U}u Ћ4 " ,iƢj݀]DiD .NW)©p"BO;u_6>T-" Q\c|"]/>}+kU hj]ucp%jM ᭵C míWH$:%6Kx,W/;U@7{ K'@:EߟR>uDw p۷4 ]Dݖ㿯ghʥǀUu 촻X">o0\}g-MV`RQl_i06*nkmXKGΧ*4oi Ug׵s.*3a`! C& L00a`! C& L00a`! C& L00a`D+4T%IENDB`pybik-3.0/data/ui/thumbnails/Prism3-4x3.png0000644000175000017500000002505513137372653020654 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+)IDATx}wxTz^Ȥw^D@@P颗n'Hh *""o=srff?zIfk5}$\"K\p.q%.E\"K\p.q%.E\"K\pBDNШA~/mbeQߗN.]eũ爺¯H"\!p6͍Y{rdβ̲ei%G, i(_Vƍt4O\9~Tdy3ˢ/V,abdd|`J VEW\@򴅁5LDg)O<<<(7T|yqmHNJN\w/lL,<Xw`^ l@@F&zSbScBG LYL,l[hkY2hy,f'[QS> uv/G(UvsG?FZN  X沦(Uia)'ZLxB5o*gX#kv;mQS#hc=?Jch#MȶɖDe-cȩGlۙlYEV)lwߵ5dIAiǓ@<== €g) d91<$4NxH>_'2׎ =Lᬡk I0~V^'rowJNvI+=arl& ʏA12(X+HT3W(xCu l?HxnJ] ގ>o;or 7p-`"}->\hIz'UIȓ^ +(B@+d; S$WG($Y`言"ޥ c+$avɰ4WgPW_hz| @vnncܹVTWrE[ika?Ե0~;B:~ c(X4&XlYյ@VH_?${Fh_T/kgk%_N}FiL6Um!|3x9:Ib6 G衐`-S <igZ$k1 d#zu.%܁iNAoݜJʸx"UPA|`طyC mݽ(Ċ`>?ﻹ>y` 5l @.!d>6Ϗn|Dt>.~,)pԿ[m߾ V=$FkKa+X !@.GC0h{r՞{7Pw?%ȯ[k%¦)$Ț󒬀?qZx+@0^:n޼Io6 P,JNN8&$sCyB,X?΂= |6DI#5yr*[GD!mh(hX˼M ctOc,$x¢JR?@,K8._l]28:QhG]*Ժv-zNWկ__Ï{ݺuVZԠA'|x z)11:5k֤URŊ)!!Ax$hx#"5 @uh ZeE[ܬ$p~ADp0 b h:MTwПgu|E.m?~]Fb`56G|Eb Oԇ,3YՈ A54EGPx꒜H+V.uP &ӨQ#jذ O<~g詧d # Ʈ'-?gK}g`u=D(24n FN޳gOܺuKMZU˺k&C}Ka nas%RA^+q7,: CX졖aT~{_dAAAt͂KX0u:WLv*R'&YL&X7J Ē s~i? ~)*;V|q>-ZаaèM6B+X`=Ð93Z+I CGKt]{mkp;1b9sa=!m "VkuagS^t >^SԵ)ytޝ^yf+Dk30s,I2xK*0%7ab3/ V|gks|7(ͩW&MľPn6lFd )v2 #ErV0>Wd`2)1 ^cy([.4db;$|R4/\hONE'NLӦM! ?v`j?p*- A wҵ>2gJ@ 儭`|.SH'^m 9Ӆq8$ͯ1{BD,ZHKfRjL~(*NeE%d`PikOx`zJZ޹ T!^ ?-/;=R B:X4ͅ[_˶o{_q ~1Vx^AfsJlJO/\R9sP`` mڴ,N$D<@M 1@ޣFvӓBXGWTFYTfsV=7EMcidclaC]Je~6ѺoJL 嬈;w4$u$ z!>ǍgJF=`ݘ``}== uL=kV"=]<2(5"k"u/ 4孋pSX:9D2PYST#رPG1%[oeO@Ln)P<g"3p'߯$~u¾G{}h d >J3Nc pfg p3fBسC+VGT$VPh)LEAzؿԾ zK+R7~bk >׼A"]Aw^~z?B!db`3 v=Uf6t dHӓ>rs;ɩ;{a(Xkj8!Y­o|ȪqNhIS#风/kU3}?S2eU̙3+{9k߁t6.zX(V=w{vUOq|n0);FE_ax3|yK PY$P~7Q #I %8 ԥKF8 P_FuwkK > ɱ(s;+$yX/M`fNZn]~bĉ4o<1&M… 88&͒1%{,M' lg O|&|Fx<-id+ƹɭQV꿜C*hdu~2.lc.\U6j(W^_[Da+FH"6cYW6@QT0Y "6@CzV)me,}|?վ >"K]ؼ-3Ç= 1qi@A[T>|7VC'܅ 7(8nߐ{[I灄MqDwϊ64{6s;+E.eQ*}o_%Bf0׀0 =0c dΝmƪoժC8!aL"'[_u2Hsې` CAh-jtaw)7-)gmQyѯz?/v+>|c6b+{4JCAP.ַo_`O:E111"|ھ}{<7P`"5ںmPZ𥤣Rh=&I= z6G2~ag~']0?[lGN&ӽ$@}|w{]v"8q̞=[L6,m%$jd1&W~!p^z,O*n蕳fzF~~2N=2fHP=}n+^svo ]*^y"XC+lPcy:FͽOM*]3"@2 u_]}Ɓe˖np42v[l+ / z!Fg77Ь*y"m-y(R YRp@:5lk'E(FhaIxݫ|- ԏ߿,ڲ@rwUL4CcPU oKj9JyxU?znB-}<5 𣧃QX({0S [vmFQ@ՠ'x8|xoOm}a;WV) z/_LszCv*Pۇa1rH'%ȁFGyv a/XxYocIge:bkxLdeav8C@X*[QU['nWvHj~TXLR&ikFYf$cݺuY?0VS:Qу hXbO/kh^,CzMA̯b"Bx.96lݚe!zʹE&oPj:pvxȠM8y?U7iE;j? qt!0Q2N:U/9 ;v417ns0OC<?~h;?1VQZ>EWyipKd&huU;4.|`D؁EAqߏ?pXj0XhEFvD[=aʇF!7y@6sHy @h#xJCoM=-R#Vvq^ENf flW!;֬YHap@cQ nq+ԩ(40im,o|| /_O$X[0\(Qn29ONUA~LES^ 0"T4g Un_aNI4w~(;Sf`{C<]ͼ7.0*3WwZ[YlYL C`&}e(O&R5|&L-(VbH{39>lS`%J'_TBKZ@( F/$^'7 DY+T;)OxD|92Ȕ]~N|7YW0QC vˁQk` 8PL)rx!( ГI"͗~(giE&n%k ۽r-\3 V_ }{r ~v\}9Aѣi@կq:MTym,Zְ[e$? N4^|L-!M L-z7DkӾcje'סg.E@%: io۾>{Ayawxƌ"FŤ)d@Ijj5y@w 5M#<4*q>uB=>6b?Gw %珨!^H9ok)Z=g$Fh}xpʽߢٳPB"HTQH ,}Ç=5J66M5La?>2m7p w :&\3\ƞgc>TkȋidDX8ك-My\a:vtg9mvܙS{q+I!c6dJ0af'e5u5 ?)|wK("ô#ֹ$ӊߗ;_Klc6+N~h=x|h<-HvGmX,o[ԁD%u ?%5>~[@L' j#/_GℑT#"Ҿ&λXcwx`޽{&qx5@zzLܦрM8 i|-nU/g ƦxfO+Qrܹ4ܴ^v/G+޵Os螜"z43j`t"0CnL-T1mla qD$mX6%m# zDAd-Or(n\r` ajOh.р!,r*% ]1ΐ}D<aƒ @Pf$oⵚ֡w3W&`Ѣ|^k_`ZnY<%= L@phcmz{4U+MD  5N |{^87~e` n8ݓ]AD̂=h3Mꉓǎ55@ؿ>8_ @`oNlvoc~̫"'Cwuۗ:|8M5P4C4'ʁc",{ad)b%5*jzJ3вu>ɜr7%rךB^SssW>1k֬!}׮] +@!;m(QhQ cVe-qBTt@;X ?ES^<r&ƼSpk ‡Z8 { , ]Dh-s dp>ʵTr*yOl٭>Q?HFj<(gjBhUw/w[`A,@  ~cy, իU#Ga0!OyqTpP+jd [F^_('Ѳ{G~lW%NNEb3%%Ś^5~6rD>-0P21!G|MrNϷjh9cC s 66p9&[ :p ! W*#:P 'Ecش((|:ԜMZ"uFA&~km"xR28&RcҥKŤ248D9"@P [f's|qzG6ot=Zٞ՞E6 Ǒޥv@A}a 4 l@1JȪUfM9LdB\;@Zk7h,'2Lv,:( CKTMC߮.N5yݣ|q ̽N>04l8AE0j^z%QAH#, T׉4G6FڭݴP|<&zH ?KW??0C rSL@FqvgyHæ X"fk"6{ Tāk3~,=[iiv+g[wd݀Y`"')ch Hޟ>52o;c`W_urou+y9;;5eNN^OV<㵼D9XEu !ׂZp6h=I F;W& nH + 9|YB{K艆Py8Ɠ=zة~ d9:da("fO!N7ikV6I"'JQ.([YE@ퟣѿ퀇EW)b-K- ZfI߳' }ضmvOv Dj#ֵAvkav0M(#K>ؑmc#;v0(4~"4qv&X|) _-c(9N;o0q~\n >fA3g DE7>앐!,") p6;%k\sPyYkk(>Β}( EzG䱴دq1:*MyR@,ծ5L N\C"MO&E$cYiB+Qhl |4Т|#z˺(k?ψ!Ώ+@tؑSGDȑ68ej#fЀ"_;@jGj<'9#l݇ PW8ax A gKipwf͍jzcE=5[ !tԲ~&!(Ca`7#\&վ-b 8gj#AujK1<po 9EF& {bhv:.SzRi$=Z>@N"QZ;*Yw%${-QH O[ Q>>ϯA! BTbVQ*g.:B뷽I$diEȔiJPSIQஜ B΋IŮ[Lj&3N38z`+7(|fGS^J>Nߒf0dÆ -|օ$;?COh[MkmJ~D-{݇ 4;[Hpy&+]t0iR0;;[__\"m_%At*@c6Pފ@KIqnN;sT&|쥶ײ{-9==_z)B4<]L BT sA[ڶx_v]0!=;OF^I_ӒENjE!@Th+"~T܁ ǼxC=GCzSA(kzT=.+EKÌIENDB`pybik-3.0/data/ui/thumbnails/Tower-4x2.png0000644000175000017500000002277413137372526020602 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+%IDATx]y|T{gL&dO E"oB"Z-VAP!ZZV_i?}9Ν-L ̽9~]k%^&"5 ,`EK,XbX"%,`EK,XbX"%:|،{^`-uwiWK6lղmz"%?a\mQǥNTxԩZ"!m~~Y G(W3{>Sg v^Nn5uirL"R2~CE  6@MTW2r;TEN(6-gr<3>$֍=#MU֐X3h`[\c7H9@OPǸ.4\8b?dtiRE_p/QMa0^Q~)oߤ{@߭#2Ib 1;7{)nWX^eff2v;G`Uz +3?vi$;LTu:ٛs'44+y9 N @6a}U?L>Vpͩ55*0EMSPVf\% B|J6dVK_eNe* ʢk^R}]6򼂿lZo&ϟ"pfO?,=F{[Jd8 vp8Fx} >rmۥv֍"!ӧka}`#O5:Jl[҄$S0PHd(**b<( 9l8eݷ>pMg#琩ͭH+?Vw~x&y\6p &hB_MPd6F9TVFDII 'Yҽ6vP-Kf#_KA;{m+> c yN''yo4Pu\0ON&9yd mrDDD m6oߞ%74 j= "0e&9{ǘ}23bɉ5Cl4t+6~ wRUPV=:^*hl |iO`or]mj!s'>PB`^\ ЩniP+ f`!0+oi vxĞ2*Gϥԇ|g#}6'ωн{wLzdx IKLC#JiJ!5 $oCI|&iMvdxP 8cLkΡgj]Y?q2DDq a1=?r ?0>?"y C٣Hef;޳A!2a#͐+O`A?>!AgM"9"9DAiNr;+A"MiuicRr^M73)PX=^ >tMw!i dS3;MgJz.HHϿH]vr31N' ј07 Y;=HEy#C+)ɘ4zZ9i.㗓)c4Ʌco]z̭hI]sA͢I.$&>yN}r fhwuA] Ͳ >/l!"50A*E !#&^`=ɘLzGO@@)RC`T`h(*?2b}0MqGrv֍ᚡ׿{^Vo>}3%t֬o~bdD}0~{;01:"8F@D05]NndCK|m24I '3n*DN"2Tegq'wP?;gE4a Fy|8)m =\ R+Nb3G  ljIvqKǟqΏBZhoJaL6d MxcS%jIK%7\|dӠՃߠhz{jJ"],\q7oJ=n/ 'd@o!ee\7T&Q:BHczlN~B|rjVC~˖ڕqölZ@D PCJ`"B!$'LMסC`%i^ٳA-!ׯ_LC;+|_Q74>7u)tƠzg//PlFz:|L,Vspޔy x;nj$X`hEЫW/n& ?@؝B!j8Xã^ <[R~^yk U2 M-h ZP ?WYrm% Z.gY נEetWkkh$G_^߿~8+$dL!kalF'6Ra/])~_;@Bٴ2[|=HMt cL$c,b"-L6 0s0;$r'zac'^+YilHg'%ʚS"fyZ| ߦ)2$@URB+ t-lZʆ` h =f=RW 2 u]aDVx`殕ɜ]2BѓIz}VA9M`ˏ2XRB4BaakQVZ+f:=@q޽'Z*TGXͥφHzJsS m~-[@2 bxZ0:S|©. ^m'GkNx!d4{"On0CkrX>žxY}|j_K e,"M0Qa2X޾MWAE"H ||ٯ0%hyүгѪ"^G^o}~]sJϗ؛d/Dk1c!7qD_/V/r20r]PyKu#`rרUMu&miԅkh(/U4=~3V6av:X:˶Y s4)¼0Hc"VJj0 ,U,5KL0 >N!PNdp `>j|O/B,qwhn] #M![M[ >V[utEVң '|&#ʋU#}Ӽ }-ύN}´% de&'3֬LJ97EJ{b^-iI0(I8IV`3b}]+ ]<∵ _h_K_X@-{ 8 L\$sd̖\e;}zUXRA t3 8ʃHEUHD{i{8_0quIͣh2[U 3k4͎ɷq85 S#//=A}DSm1~]*΄ N8y~OVYF-IȠ<@ ;& ez܅Aא``gBzI&^a2zҸ%}}ɄRYG_x~6矻>JnMhZF8H;5Z_Xs_mO1!೽9%V0W3 @e,*\Z!!cD}ݎk u4.U AUUp/>d5^1욫D`' @I M 5 2qT3\[D ^fwU(")Fd@-"Sz<4(ijpLhGyACI܏}|3H(lU `gyY2+t@DGXDUj8|v$uhEҦ:l BHݗpHMQ$' ͙HhUx20op^(%J)_ct͛#khuG#&?y`g[wg:/hys*N k ߳C``8LVhD &8*NUƂ69kJpRghyhr"2.⻆JN3Җ9X&%CMs~%-%3dWo?8F!9,Ug(~MvhA "pqՌ՚y{hg`(>[6nM@jpr'5"@3DޛI@Cd2ȷl_ Ҕ@"Ə΂)£¨PފRtAȮߟ,xlG{?AS/Dlž<~;F4ӓByQhLd(ՎxAa115tj8R4fLOh8pRK{ }Dp3범I4?Y6|X7_^3J7*߼_ACf|oKKE018/o) e(( ΫYUPXH8 ALr}hдV$o"Ѻv_/1"Srx߿n?GlÂD{iV@T{ؘTm^<$Cd( PZAO\)ACa8GWRD>ܓ"PB؏V̱QEy4_eGUmX8ak}I`ԒEXL 6fڅҝѓBJ H{5 (3DT'^v\MѸoi8I.G7֤yHM=©n^;]Rqps5n @zH|=nRHf6#nyjv0B1 :zr[pBLA}*>{l;rH4A{ v}DX+U3<zIlZ-J-ޑdf՟<[ z-Xb4N60O4dەV Pa"j\J#I"#Ba575839D-XOX0T)` dL5_$K*(HHwJxRB䘠ANR]W 5 '5NE #;"KZa;Zr2) +'C!@h(jع!5پ8k" y(IWn4"^Z!Pf0ɱ/,qsDkZ'H#W& dX߸eJ9'ƛ7;秉T= }ّl_JNW{[2$JBJ^p hLp7݃$@ N&P,LhC#wDrl|⬂T/LA ?zs?!Tήn!BB̚vW)V4Mnw* د$H$JC+,Dj| )j FxCi$,Kr\V&'23# @l)K-gxqf2DG\s$wgO_=A[ڳ眽2'Y9V1_ ­o>D "$N#8e2 d*HFqkQZ-6~|Af~=Ԅ9o/caK]Y=3hs `Ŷ5EJ^%v!a"{2U^JQ 2kV}9JTUx.OYVLy6YϷ;zia^q Q?^XA*ǭ;A/FX$ D' p+WX2se2O!S @/ &[D'o}' !~;E} N~m A:V/EdЌ1. 4Okkw}o ú][- mxBd=* bKeb.pF-D]F$) %& ޱ8gDym~۹jntE6N:/4 is4?'dL o8mhlC+N#r 8Z&^$\M g fNe~؟N2'YP9ػ|47pԂ $>sTt ;őoo>e <%0lT / L9D'ok7 |2BVtp/ %}V>`ڍ|9'q[6ھqG{r_1gOբ7M1VbA$@/"6T-hpH;;hߠł ~t/wq44םaFTfM[Jml[d_[oVpe9!,]6Qzh JW  O/BBɛE  MDFfqrII@?wC: ZT$j D+G:Q+*o?}/қE5q>/8Dn5 gxr?LWG*{L!M3f"T+yu:[)2gAnI_ضnъP(E4(5o~^N6=3EE3>clFUMu#~6>jRk`pxSdu2Nn|K9,`B$c J{Eř~UUh kLSV{A_s!˷dJaj02H@e&`}.۱ܵu[Ha pHYs+}IDATx]ixTU#ړT*[eeӰ{eQPîFi[J#F]v԰%Mcc8i{gfLos}=r)j$$r|OK=~9UGטּv X"`E+,Xa VX"`E+,Xa VX"`E+,Xa VX"J!ZzϵM]gg&|jݣqpuCqOs5FDw ީZ3-+@4V4:8]Sk\\׉{׋$L!^sv| )L#Dw(V[W=]"j]58Q@R5H?w-c6,Np(Ca3^ @СʼC3?#2SRD "dl.A<,&)l=nXqҠJK.<À2'34hq Cnj$C)A,)C,)s.VqŻCOb4 "e \.vI2PxE?<@.ܵxᖎ^^V85Y|&h I0+Ryn2Ǐ)2&/76V nogV0 (4=x(L16Ɖ C/M!ڙ+$ +?z!H#kl7u|KIsFsF-O?DtA2\IW Np8b<?bp~fvMUJƆoD<2FB|2@夦Ȳ/|],߄ E¬W IfOL2 c@@ k.5OIQzy*pOBr:Ye(!M2g( @t'e^$u:IbU % 9((}ݠ61tźf{+rGrEyn2+>gL ###tp"ylSJ>@gP2G8{I/< .5v#ə50_aNdSU 3LgܝdnKҹQId|b]M3M1{ڰ"-|ŀ>o0c/p%1DHKKpz+O/p(CJ@p?$`POHS<1(ÊukRU3f\I-1rDҋ搏j6U C<8ܙG96< )ñWA_d5QU2PXR*#IplR+U^^w PIj{71a\39-Jy+9(b瘊2/` ~؛q{qN6KI3:qHNNsRO:jT"E0|e7x|7Xvpߞ$bҝ$>AS}Ib-ꋲR'C9 j!bh8%4T?ԍ@2 u]'ZC~O|ljW P1w}3cKբwH e$ V:bȁB`n]Ncpf[CKՌMGs Q:VPEeK`4R픓inܾ9&fLJn J1#7<]9̯SA;0{ >\3蝑7GÆO ,=%0{ {k/NK!SҨj}],e$ۀ lWe4Nʽ.rp$HO3g* 8ZZ榓5-p}hmTjWk(3ub((BnntxTӊ $2Es~Ya Jb7 MsV;L}7A< btm>;e~_Of{{pO#D^^({=$؛z94_|wU 5~u;jR 'Az쉀?颜U:'bvyCɃ8SVwAJ܎k '@<6ҙ)|Ƨ".wV㯜\gG ^oR6t渵569NFM#qz: s Ck 8vm}j]bX[V9c*p;x#aY(.^X 75y#3.'j|F80<Z7t7"E+{މ ~ciژJ@$Czz(Fn K) x8{faIf#=)8!3Y|-3D{ֶ)~Y04r ]ʡ-(bt\qgz0lMn,53 $xɶm z rU뛽63M)G4rcmÏT$~?[ )6G5&h/XKWì rDJ'g8sɵnqrW5.e;LT}CuS6K2k}eIh }]98V ~>I{}@ϯ}Z1BKM| =]fA\]oTMN@"PVY=7x0\Z9 Wb knΞL. 5{މ!ۍXb`GQ!y,Pu?GnwOHup.R%0쟉p:cLv"In?6 āohjqlZ6b ZBv?o1 0n+@ 0:}WٱZIYOIP9{*DUGZ٨})ڝzk*dHG(-;'%?VhܕE&-j"TCB`& ^+W'RΧ=  HܮUz(Dq.wx}Apw)x$0(Vq'l̛Pb>NsM] +T{Tu m_7U3ZGqFW[qŒ1-5y|yT>@÷zk sQmi{;DR_I@|W|O`i>SUsD#W0 ׾9"z-ւϙ@ 3jr"S7:Uš{`?2aOUGy9FL,N}3of1n ~M68ZtO`pGq|>I*G,i$>kE._Gzs' "v0] q2 qm~::@ߨ:xEjIl weHGzFajLz[']WErݯ4ٮ౫& g)j^R9PӠnFO0m)gP L@s/cԺ;GCftzf)B[x~N"I}ҼR[%V?jK6xY,n/alSSX.җElpلdx?ImcNr}'g)*b`㇃B>mCĢl'8si Ԓt>D`qQ7 5Sdz&zT{2jR#Yk=|f֤oŅ6`{l/F]:vd1/iRClߥf%N`ֿj}Jr ^j.pp~g񱧓8'6=p"Eyo[]tF*9}t,gLUmOQnf\J= 69L&g"q? X@GrM0rB8pDg=V]Fv)Y?y_EHGj^?"_7ug$ =Н*u-u}\~UhX$Xav&)c Z/ Qφn qd5@@|o;l>G mI-Ed@܆&8 zD)>= GJ~j8 ^E@."[HaS]!2 ϱ:p m1Y{hb `j Q1v~L!ǓӸ7ymn?HEe3j~N9"0FA3Z Dk&TUG Z7m&b] zs+T!r'@kzfa5 vYF~yܭ4.oKL;Ms{ScyH71خ_LY?/Kn_J[VSc_*]8җABz% O'85Tigv 0{ {u\ >]l*P6۽*uTZ?1٦TAӷL><"[d_`2Ȑi@-IS]}T}Q(>W+djrvS# eF_X!wZ;;$P>cwB>-{o okFfϗ*]hAҺ̿=#6:RX烀cT?ao)s?Cϐo\ViDT/ڒ1b@e"rD oZgQLΞjЫmdؠ+nAKTO* L?=qQ=-y#1fxnS[~ehHl-KJRJHLuL#}t `k LiIZe?W,]~q w7G%|d|љ}Z3Z@|~oExzu;ozZzTE]Q̢n-EUŷ.7kf ץ5_l>@NyG1]xmFA.?t;͗xXn}6G9!;:Q|X9x)LQjl3 <[H1/qP5kPX,ftD>(~a>^_rN)BqzOb;8_9S;IHz˅2=\ o$Gi" $wBep,-g Y{79j|ziw qCa׍\vw_Um04i\Ge`78f 2u:R JYv0 _X1'(8 pT=LA$)9455 Ԁׯ ŗOBgrşڨ_ŁKײ!$GMRI@=Ẃ*h;tZi3\mhR><s[8J5>Ƒ yZ}^~}f|^(Nr}UqcM% ehq%yp>4"LGpZ(F844F&OKk:yB34-MLoJ')?w)郪PlJBꚭUa忆p*}YX5k pjc "RoӼrx0%Pg D0w3tj E0z4u|]$l2Ec{4Hxe[/ۭ}mKC -·_UZ8W /xBĹONs'y.4Qm4j!* <(EM; _۝7{R Zs4Kă)!d.,_\NzB.D#F\*l0qURjB]{* ۠ &Hp1ϩ#QJKxiG4"-/ɷj; ,m8 %j6XQ9WwqUH1֫ʁ}Cs'%ʍ6Xϗ\z4LF'`I< { P; ׋wN#UTи>o ɣ4<&J!og%5H`:BT2\"K.3Z^ٱ*gXI_?K~q|ܸNwiPX(RGC%߯M#kX}5zh!je71+UdWY›b>ʥ+̓{ڋi\<;."{{ׂQ6M ch:n5I#V:qR >??^ ~0.2_5V. 7Iܗ z(n,i(E%%-.-g,;Ivdv%^JV!"LK ZGI6T.Dqdn{˨ڎ^-Mv4ޮ/D mFߘK>mf t "@/DL̫;{К`E+,Xa VX"`E+,Xa VX"`E+,XqV,IENDB`pybik-3.0/data/ui/thumbnails/Brick-3x2x3.png0000644000175000017500000002264313137372555021003 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+%UIDATx]wU? ]az:L 8$#H^9 fI@,((uQtuvuzn]3Hq~LOw:;ٝ,i%!I"$ $$@ҒHZIK iI$-I% $$@ҒheڇƏs\ c}˄vڼqumQl*v܎;~~_'J_ ;eg=nnntٛk ~t;D0';M{ `a/wÕtGeE*Ғ/zy vl7~ ׯ^r ?L`՚۱cf ), 9[.26r TѹaSxo3+M&yCE- hr>< $IDu8M*iHnRCO; Mr{z^4v¤ԁPsB: SXI$[}w+s{?P?_KO};N*<.\dkuGWA`\#gഁ'z ldnfw%Hx_U]]rssff\ #jE}"F?BIf:J!e;[ZXQP eI4~4J-lq"tfZ9XR^+ZzCׂ_H?ovR5n{{T iI3UqGxx$=rrrXaa!b6؛05<^ה_L PeܬjYͫV/h!ˊjCl4 ԫg%6Bzm ^$X"bEw`?'mPAxN:A$,83"ҖiM-Ȁ6Vi *ΌQxgܷIx- {Y,33uؑu҅0(拊"J2l"3LF<0ՔHnՙH&,W4nC,vB(UD+X~dUVew@Э[77$8!x?9j)/'9߀[ lŭuLE.Sd&23MFGAr ro@R?7r"CT;+**b{@p; %/Kd;?I8cڈwDJ0 X(Fl0vOv GнDqyf;J1Q {L5a~P$ptB Ιڴ׏'08ՒdZgiD@Մ +D?cJ;#rw½>E!Ch!g@2)Tϩ/<\Q^BoŨXsVNaeСCy())x?(;VWϙ$GčhQ"C-GPxM"SLh;{W,`'2t"7B D)-*~?vJ|g-e'|!NSo;hAP+ ~=W#bs !8d:~Q%L1g=SkYUUņΓHBkXxC 'O72 JžLE500~hwXzdbqpg=isa5>{oOV]]{55ӣLrDdY}$ lxiQ--@ȴ:+$ Aݻ%ez.EGF\+vI~u퉒P~좮ױsCzPavf3=͊;#]M#ȲZAM,a{چ!D&2@ 2 dk U):Ž|xoH<}7 Imk D~qèժH- Y{W*+H!FJ2٪ 㐆 <si.9Qû-$]|v,?$oh?x,ک#ub`{>Y$z0&ƧH(HӞ={r2@ dQK0vV6wR*. >ۋLF, 5) >Ի6cI4GR2} ^üז?y:<ȵbX >H1CՀ_^,.`cQ)fb]qpPILޔdEqd #2o)&QsXG(֦|okG0ʹUc 3b~DBD&ʸ-Hs؛/g/Ȗ٨_u! d5Y2K$19[a"2< $6l_ o'wkW~K]{:z׋ȀF֯(<2 \ݠA(oZ.ӻ 54k2\,3TJʺHL<$=D;7g]B~/.;zK$VD㠲 :=ڻ!: Sfu6pIR9)f:͠M3d,cũc@@XBbFW@x* .^ո3AX扨kJG/Ք!RZOݲ͛4pNIMO~ݭ'O|?w xmP$Ѱ!&/I!í2s 3K93M e"DTOK,XJ, 0?r! | 0,k׮l g{WgGd HI|-z63 [us}|VOOu|DeZ&a&W" ZǨ/iaaG;=SKjeDAG}c \YH.!;~nwvT[:3b^žhl8"TKE<^a 2s*!ja 7 3J]LvgپXbv([̜}<WR٣ekxޠ2Ι~@9΁j^@$YsG$Bv᫷j #矯uϑ9 <#9,>*L {)D6TH2\]ū'}"2=I%b٬|#Gjyh欂e2[A`eep,w%/ |p8"͜7#~劖 ܿH8(/0 <ٷ t ߐ߬㧚ؕF=%'ߛP$6q˳a/%\x#IH PaI`,>>\{] HUGȦA(xi:l*OI[ۭ́m}^۬HD{ةVZ;$)͂|d)^`UnGOڍL6)}% 0Gh HQG`s HL" [ޅ{m O4EAݽ0x\n`OdUnfߜ/h&NH>4@H@ː<}x4l/ձBĝ6! mϠo"hϒ-W9xDAnKwI,;>ܗ#c8b_)&fh \[vJQDV-Ȁy=Y{,W3YdBcLl] {>7U>ƺ )($]E@kO/b8^&m1%X}qU" %O&}Ш-w=a;)D4UD-nP6nb߱@R20XuKwu)_(h7 1u5C%@$HH-ECPgt(\J>^ H!BDpV9N3}LZf_q}KX[4=3W~t /lG:XazvU+^C!b"DUPN B,sv0LϤowv sϦwXb'ΩXg7j^!=ROY>Df\o∽w(/A2r Jp'wxlG6͓! ElP/e?İ5D,( RTR Tm^|ѾS7\2T~<5ZoJ?-a8ߚ&6}lJM"@*ݔd,NĽ$AK,yGR,^!K\lmǎL* 2@h"9Vߢ,q}zS%v }.ZK,Zb7GO[wCZQ`yh/ ~dq43{% o<ڼسw"x"bD^w:_BibT`Kr{3$/7lxZH<(O'̥H5"bTw-k v%qԯ_?N15uzd|q%y|.M\̪+s~*;3?Bōh A !Bjډ5@~ <0)ݒώ"HDI_hfmA$('1BA" -Ve VX|]Je՛æVڻL\,anSw w^ Y(1lv_W{M(yT@@r$3} P9y4h }ewX.`_SL^eg`jT nb|؈JO/g(aO↑xڛ/N"ɂXnǿHDP|ቁw-Iħ %yzS'D P`~hn5\lUGT ث/B}~]1p2:K ^1 ^gBPe &~ByK H|:i}3WB钃#4mC216n"J'$" qh5(qO(efC>ۿ^Xh7D"4x2, 0!=S K!Wb#<1\^f0:y1f#@82YX\U[Tv!)6ml|ػM&)W˜䍬>&oF}~("%+,&@:JY6+xe;ƫK׍ KgT5#H6ХD `a(`υy8 G)}S_"p) MTD(7DǾJR6W+  SjFIH6k|v=6Gb82 tt[;AqJ_uИP iDx ?-* {&a G5Q. ovuZ)-L@܉ \>M)ݻ!̇rC>'GSLEi-\.,\s=#@{ RS/+P.pؓ߉MM7*RG)5@eDyeeJxhJɱ핒n[(9H>@ ](7TiQcWO~l>.I 5 @Dl ?"yeƑ o) M=w];YJ}#8Jz¨Y=o#2^vz(o|݇E8  2դ{zH^F!1pK)mA pWDvG_⻀pZ>Yc?n3űʠg{TY 2FɮLASlx e*Kqoa.HR'oc`ӾYY/hHFisɐcJf1۷'0\))A>c$C<=|_~#2߄zL ϯ($zB8A"{[ 3-fV!z\X1Cͫ [RTpMN=D'%|C5 jk҇904r5P$jBH.O1s)I#fn6~!F[JFJT @U1ΕG|My>(7ѓ l>&  ğeƐT(!YJI#ĥAqR|8B"`T^[],WHw-Pfi筺4zZ컃*WPI~T5P$P͆I|7U$QFá:Z~'cix`dL`}i?%쎹d9K@.s}->pϘzתpMPbh'ͦ@~% k1/|Yz+'ͨH d9Τ ^vۻsnT [өE\BvmMt4al nVK;$0fv!=V~Х45 "+ o TRɧ[|?6ϩ +Z'>Dغ6*QJ`R!C J) 0 (AWd/W([C[!ɟīj ߱x`H׮M0MJKI!9sj xe$V^$[+Z86u-#M8Xl$@ҩ%8I#NoF#a[žS>I=,=K~TFN _F#A~h9?"i>B9}A,qZֽ @n啛@l>ؽ%*kH?ޟ>\Mk]Kڶ][kӇ8Ĩ?"6lA8D ?- _𗛧Ο{ !e$H̿SN֖ 2 %ƻ^iu5eI'1λ8v"`f@BOԀ/|Z7z)7;5K' !vj$\~m}ǽ{1p59B"X˽ƶu~Sv4\AQ̷ eoz|u%Dn'hh grث2[M?INJCD0y νbxI#UY=TpڰWåzoIZˆ?*56zsyj.eHZI$!I% dpIENDB`pybik-3.0/data/ui/thumbnails/Prism5M-5x4.png0000644000175000017500000004547713137372704021004 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+JIDATx}w|UUkG[RMM#N*^T"] T22fFΌɾ^ MN?{={gx{N pw]mwpvw]mwpvw]&hMZ߫~f8qm}Q=0쐇E\R 8f=UotCF^]gϖ>UwjY_,YjӇ Z }rtdze_}y6@6C$$S$|IUV%Us?Ol  }W}X]]v+3Źy:|Hm+nvemJu1Jbk۠Μ^~phէ&6.&5WM~Ƕ0rPQ*>,rBp]Ժ0{PM T :`@@3@mBB~X̧ # D8U40FyΩM<p؇K6x gM;qy-lJ^l"Fybt\EIZjaC3S_)zd"3%EDDDp+,Dvv)tNB|xA MB&$x-$^ p KBt:&jH/9}tjڧw\X] !_m$it(DGRA_Tw!{u|&mw8%|)׃b;TF -:Ęc 1%;]428狾Ymz(IMʼn "}[JbHKKcx7Ҽ^ዌannHHhLkNkZE'@@ s&|5$ 5uTs ǩTBDP8j?dSC=:Gmu"x0`Pi&@N OxZ#L`:nabnDUQ*yD>j#I !yb̠'UլT5FLTTѨKJJb-|4js. ZsA-iԑم:ГLe~gbCnphcn #'* _{i '`SpDž{FF3:HdF1TtڿdX1'F!񃺤BEb/MJieE8#]()Tu\\B+u]PP \%2 9DJYfVຒ WH$lo2H+4+u!0۸SN|\늝!&;89ATB)p 4''=GBXJ`Y!ѸɠAr|NE$t8Ġ\K`:/ <)d~4L)rRp^CY¯q/ ?Qd]_&'xaIV8؏kF$cā_b`&\ sˍ . oI NfFEQbRIFE8 n|N HV^L&3]4 ^H$F >Fsff0Rb?T $(5RU' QF ~@f Sè_Km"AfL]ۇݞtWӯƨO &)K_y;z;` ]w¹IpCS4 Tks2xXL%>0:%F}-I F=FZ/:9 I:h:>O^p999 @ @R=rIYH*!mG8^ %ӄChʫ)!-aN(r{.Y> 4n4[Wa d)^!{6¸pw~Bedžv1vGz~FϹLj8E o4_+2L1آbxj8>Kh7 `gըQ[ E*b* N 09fΝZ+Tƒ 1[Bj5hj6G`gRobj)\HFeOOA{DHep+~mΪ xO4k1&5uV6 ngR"MAuA';6_ܿ ͂Fܮ `:~{}{9p-OeL⨲0>zGh pWIYj0aMtM*&W3H1".y PKh3rEYqu1@ .!8@t˄5?>EjF%ҶL2 q4q8 _?@ `H!ӟ=rh0ܾ炀P/3^u?0;ܒׯ_1:12!RچR։T(&Ȇ%H^jQru{FutUr6Cx%ꝊB ~pJ$i\ð0Q Nl\[H9s/5iicEFvu h3"Q )|*Ə>VCs#ndd:Zm2cq[d s5y .MT@F@ʣ(;K/_e1Sant<#2:] @MU:fSZ@dQ=?w\!_Kow&>I54O\3sz"U0;gAJpV@G/uV&x45Hbghl - @p(Z/ jT" Kn :WM[AԦ&4AQ,; @@']E̎FyN7Ni$쫁$Nr$x.`]Stߢ-ĈV ( 4 `KKWQBރ:z1wIJw—;eB"9;G-*-d lIu *|ȯTnhG~$5p(J*Bh7Ly'~2#@ *ܵ9=@T%|3DKޗsfaȗoJF&:Q?u9i^hJgT*Qi"P1ZKQ>H%u<m z\H .mAP/n*;ip Iz 7Q ģ!OU9:!:=4(C j{8v&gFbhaN}Q>֦?_> *ܡݶgO.q< X0q"t! )Z 2xua6P_|tTV|H^`k"Axd(ܚ,vw7]Cq:Ck,`mHo CjMN-ʒ"A^5{PŠ`:=TYSQuU),z!^$ote- 9UjMr}?Oѽ6xs^~6aRє'-Zf6xi ll@G9L&n8@SϻN_ƁXlRSBT8CdUPRHndwepd^10?6i @ ?X$ SLǃU'BYՙ^cJqLUKᾉ4 0BSݟxG MCXj/ჱ/bנcpxX8Dc+&/sP^?v7*@b R;J:Z=RHc/5b`C?Tjh 0)wV^cq '#fEt^†E~ySpU?3:]k6,1XbIhE2la>* ^9\{@@@ < RӍi2HpOcu_Qd&b=_. \-u /PxwC8Gk)@y\W; RzcPAVNNQj>\CFG"ݻ # 4{\Y!2#BBE[ijctu\M,\8|= 6l= #0s4BSgz\!W-R Æ)ܫ^P ;E@/]BAxp0rPG\ծu-A*T&Y݃dFTy>B< L2wrFTXV;<0Uz눨~cZec/.-zHoЊC͙ +wV35,"5KV_=`IhU+ !)PǜpkJ"ssxjTq]}4S@S>>U빰^? \q=t,^E}Й]kk# mh4i\%{\w{@Z @=4\x$(ƼB`:u'3$V5 N2 :3FLrh$ ~NP/LBѡ` õ̉3Pպ~3˂h{hH_45픦Q1,wppv_ گƫËQD E_# Eϭ@mߎ7`L P5/:~ D$K F)hG MF3HYS paQ[[L#[9ށ**'#׏Uog9ulxdY22*מQCD^4/l.hv0c]1yfi;{0Q1A|s9SWBt@Q,{wKPuoQ]$M?@%Xt}buSv/ߟs &aA)A8b"F5RrXXœ`a4sA@"sY^{xK#@q/}J𺡒CSෙCtsNqT*8]G6[xASY꒳SSސ7&~}2UmQY y籰_g`;oOdfhc"Fejn u:JYz0@8k0>|xJ׃"Oi ie$}!dt4IhAϼ]on֧t1M2 N )T8G)Hcе)qeSehpKm} ke~X hM7GEґ"R e~ܠp!RhtE@h0>DL?0 %HA(<D IT#:ݫ<ҽf^`V*v*\}m41mQՃ_h&:"Ah5%'[11{xP>q>uHI(_17hW`{@.yگA0KBT$!6kJ 7HT,jAbhT/*aN9qCG}\ыGhmM*`ub*uXl3uHU#@xUd$w"B:X 1NF)r@-:@E 5'j-x)] OMZq?\㰎 5ƜS#|-[( Ps@~>/oFxܲI6oRHaJ-l>/e+g,-9?7另\s zh40CG-r8_Э+Bd8FeK-=E0aH]m_OU㠣ί~R9 OyJ%3k;ߦQN<\L' #"1D!Py]\A?[A$Je=MrGFdֲQ6k8$2deK?0gMAuGn6zb[gc>۲7@׵erhp?`{gW&-C# 3BE-*{A#U<=\FW!C`k.^C@CQg\4 Q # -Ć'c~B+ِ d߼'˧Rڇ_/\}o6=٬N+)a| 6/Wb%KX xdv>F~f&m/݋gD|A5/1G2Chܲ.>]y H|'WP9dp '4&tYl *L%,@y6s xo󮥵J\iP*e s3z"_Ty!/ʸ.xe7]k+ u\KH`dHWi;@ ޠ]C{wW Ƽuh2mJIvzBO£괭*U%UFkpH{Q;1C%`35k` HAT8zF>qg; [hpΤ>3+ 6gѫ39c7j>,?A/"A~~%N(z387^0'W?vA d=~}mۊ:C.aǎZݩ ܫ-Hv!X(-y`ɯGU1l=bb W;%`SCDJ~B UCltԿcep#ۏIHpz~N-o9fnWe,{6 /5DR͚=8.ek=6m.^`HL:E=nX@Uf ry ` [`BX\ӵ1 *̥ ݸJlހ1F{  p}q R{h$jrHvS<1>Z|v.M}GGII$4&sёj9$fz<"mr3}c"kmAN6I7[%Z-g}vD A4 An7+SDZΛ41(GaH&p dl 4l*Mf+.:EBbqt>dؽb 0҉ChEFhGAV@5ӕW_=)_юˑT{2VCM9Qnz۞~2T@z5E%'}8G|A 9eOo] (!œ)&PLm;r/FVҀ9pڃf Ԫ#?WxX,Mࡀ F* l'hWQb$uhz)M<Q:睢`ͣ@蘧~ioj>-)12n<""%ac)j(6< 7kkx{ 긭)D(y>^t2Y/YU] ܷGv`кY-]8oZw->@eGPBҴ¾}j$z,S6 zt6h APy+o^%-%Vޯ̭YbD{8ڮ wܹݤS\|o6W)1o\Ǹ[0@@xɡ7ZtZ?6ؿ:&ysiH]׬qqN y@gNJsg%H8UdSzQ4q.F!:BfwFjk~‘0 Yd](Du%­yhMj߉(~zMJ;ZIkkazm??`#Ic3%q|Yі.(:VN^d5:lס4H xNP[7~xQSԯǹR `Gk>|jK"i/&|~LJtRl;Oj82z9aִ8<<>NSH4pL&V :BC+V-kPyÄYNZi p<^2v-px j/q#Ek1gx$^Ǹw5Ťɬ@Xֳ} f&bXH`9<{'EVr)#>=߿ F96IIQlGB/uO„`MA/׷- ܮ[g߲ElxYAMU;>/O~Xн B w@ 9PA5{;qڱIm@;0rƐ[cD60p^(@@7lcف*\},x `\kmG먄ja[i0CM8B(ZBz}mU/(`~Gi`!24J޵ cwnL .Kgk(~!"# b& ' b,˟"x&H@+ɑ@ h!-@x 4 )~׭[ XOZ՗ݶ#r8/7<"zCvPDep2'"$Э=i>!$pAN=~pl* 5~"ߟ_<@2W@׋[D*q]cޓ 33HTlhH &ݥ@ְXG^I /q䁑"+Mr){Sxvw>w9ode%u \VX8#! 7DLV!DلKsavFs,@%lQj4y d99EtDm6FPJb5f7###0gHBTGC!`Baq7$m'YЪ8ZI^ b2'Ku?(+ %7f!^m%>$<&t0]t_˒f|q($iͰb^[ P҅E@ hR6Q4>U'ڷ׏ʈ ׇ&I#þxyp Bh< <_X\, 4F_'ujk92JdV< .2 ࣓)2FB>륚40*Px;p!D?/k~o2r@@rB'^A;.Y'8~ߩ#>vQńRrL@p{,=h.AA93PDu Nk .>ԩOMebv~S<3+&]m.[}G+K/Ρm/g|x M/Ӹ&3Zj$QyA6sX_e޸X\si^q# F_7. Q/'{FQgw젒B)u¬#ĈŃce s)=`Q96 ɥv . 4K F'&zG*@R|_ޱ2NeE1Gb@BϦr)X?5s bJž]4?%u2̀eGy)˺@A,3~F1UX>+m`B:š$<h:q~PQ>& m Q ( QE2n5xj9=L.f{eu< Y;,P=GV;ԧ[7ri}yeH R {gNkUC}ȶ @pA8 "-Es>YK vմ)W)cߒi/k 0dHnޫ |$k4t' loIlgJs\ߜN: Dte17Fi`<fHOn,m r e} b2F @bqd L ٶ"$&ˋ=ժ%rڴ2?8Z.Dlܲ9E1ISŰ6@؆JsbAq9yu{GR]זr/!NI>Hm:!B lپOBFS|K|ԳM$i \@w5&g 8MiFO#n@Rlhɬknbڙ Kk[kfWDo+:Ր[ Eө[I0ON'c#Cx֎]K .<O<]=r mEǦK4q lmᇆ&p...$H"a;#Y&@⸚2\ܷ0%JHC='d|Y,BXc{iLgL dC (̕8=pd21Z8N3FD |;\z_|y go&tP7u\BG[@:Q!4F]gM%dt-:Ha;4s % 2Zz1'_⑝;H\I\ " 4Sc&{rU@[!P̓u'xf~/е#s=:P1=7-y18_V :5]%P@&bFGBh`TaZU+@ `vEY)<2[EEyJ&d4弹"K!~`r[&iq^PۿvS^ߞKYy{-4L X!fb@$zj|HD%L F6*$.+0ʻɘ1K"ts;Jȿ:! "\2;߿Yjc=\>Zr%KW ӕ=PA\g&_$-n&Nl L+u'9VQY(eG֨ #~Ϯ^\50`螘\1jA"ܼ`ЮܞgbEVGGYsKJw(V|Y56~zK%>?s* rw ,"{yuzhuG4yr%M*5kқA ? WnFvn:VF0@N d^!uR]&QƜC?bN+BajfΝl =k&yV<umK-ɭ ~}:5bwDUkPb/FibvpWu@a",n`}PM|vAcgN/=ʑŴ1^{ 8rdϞ1_ !Um} X1$:٭ZE@|Ԃ6i\]U8c,YC9"dG[KM_RZfktMA:"nQq3L rJJ.s`^ zĢ& uȯ$1^]! _qV5kWClo!d3EYv. o 8HФ[ʏM%ĺ8|:C\>;%܅9ro0NMixߵZ S8 zm\wt"of ]#gfd#GX.F#Zhmy% 8)s 'REh^XjasGGq.ZjBp9C'w|$ÜbM@fuuv`j΋^F4 $1Z5?e"O\` p >djsmyhXn!/Hf2e>HF?c2/4wUlX#{'qC4{Rݦ5u1Vg=~3௓#C*UM/`u+@ UDmt>Jfd}̽WDתF/Ӽ~L w7I{Y? ڠZ[=:WLGzН}ÊI)ZgjQd9Jw.^}Y|NnA<|L~7QM/_PDW6Zgiq'OYCZׯ[aBFX^ DX܁In^)j;)"X8W#0ԊeB){|f^fhgZu&yz_Og%sG`#G tQ6T݃Ţd=0IV#OW@Ef aB & k/ 䫻+'nڊ3H}2G|a%yc?hKZ͚qeRG1_WȮ[J# T\rNP«Phʄ_ǚҳ>%fHSscj֜1Q+J,]-MҘj9D0 &>FK(*#6y -Ζy^rA/f SYZ:]Y-3v_ToDXUY@s6? wh,(iLN"'W5AR9)$ffU*L- TǸŸ(ߖ_ RFdiIr-38>^U. tXY>/8j7R<"¢o]bH׋-p ]󘅃}\gK!ouؽ#Ў}6]A}½l!KsjfG>5)Očo%/>wL|C`iޡöe, ' egL@~UFK!Drmv˶F2 pwN1@JZR}_dM cŊg c L@'9&@M|lo\~Wi_z=D9:]`gsX="Mܠܹgwo$hP3>'@|Ps?[v˥]3 ][8}r&>$oǷ\_?[p4tҷ|)˟@.n,б6+r*6U|沟;w}-@mޡ .m@^Y4nCR IENDB`pybik-3.0/data/ui/thumbnails/Tower-5x9.png0000644000175000017500000002407713137372531020604 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+'IDATx}yv{s]UUϾ ;"#& ۀA^QGDBPb\h&zxcsު!ߏ?tu1so 3wy_GK------ms=ukf㱟]: sx=+j42OGG^^"xi 5%yǟ3(gZ7L_Kkwpz?Gn?Q^_{khܻ`&G*NȞ-_/15*4L?02?!?A;d @2~vp/}?z~ͤـǺ?WᡐƏ?hmlܹ`è;xVy7a0[4,'bRϢ,T1%I!Tggng!yGS [B*1qxd5BsS"PCE_W/% [7$Zv6+V0b.5 }[E\+ |]F@ O?CY CWq? wi:9́-l/9=,C89޵\) Y |:?=;@{v,$9BaOz,cdܹNBM- i@ 0e& }A~u|ow! | ?YA?ڿ e|>7sr# g̩4,RAJ_p@k@wДLywk9<} =!V,^ t]n (7s*ˎCŗ9/2\JCbyziV;^ ds߅|52ȐE{vL{q]׾N(+#@U6 z1lKu/C 4E3s&p5  E#NA߫BOA($Y%vK@Ή|XXc;=dY;l_爽/)G`܉U `:X;j;2~tM.y#{ F dĺ ĚS|Y7U@ e0}yt=dXX9{K~A//j rK+0V0Q J%D!{Ng7=ҵ^w}PCŨH8GUFM} ^r.5+_OM]9>|=}kBsc88ýgk8tI ':uAN&C%'Ugl".).8G2hQvQp:]p^;|_rwvjh٣c"2¿[m%owgZè&]qQ*!~jG~%y)َ()WH7/kx (}4@yl̓@x <Jƕ|_Aw@AɎ Tag9摫p. KcQ_ֿ֯; #\J\dW?\J+oWP.~3Ȥ*-\L>PH] =R\/[a'>Xk3yT.`2&&@vBr|bOA03wؖu3-gvӧJ»SF߲i˽>?\&}kp$Vtj&B !e ;LK]ɢ@+^qy=[>&P?9 NWo2::LBNc2b1(~[{&[g|;84*3j3,d2L;Hh &zN* 8Sj8"s:׋7 lѭ.;ЮO_V6FU:ngu(A?Vxꗙ|d-`"3ؒg@!fG  zgl?䀟ɒQ(Ăv!bn(%4zx}fXI|f9uGc XBsg l8 ХQt QQbTAkSXT*Pk <߉ULЀh<: /N`| /^*F9`83l7#&9ޟS|C n`/-;8K}/K{{(JElxwh{="& !0▃K}\EޙO˧_(:MzoѸ&-8?H@#`oX5좉4 tkK(!@U B۶^ 4/pG,3U?߃SAkbDU ܐ ѻS;~3We iЗ~ѩorL_7wXR?E2x 9aTj}u$0ab0*S ;ڃߝ|wO!K$/^/KZ+clI^ ENHD%]0"."?N}#fp.PD+Ǟa6aCL=JF ({`s'k2~>k wr}[DoX,-l9س%VIx8Y4ui[G'ezf'elc:jW l4Xw20q"ش+xLRhLHAy}z<_hx-E-T0L{ΣFSFZtߺ㪜r)  '|M*j],lx'q I%g&Vd"@d2{jBdp'Zkº+雷T-[EXyIp-`oPZ qZ3/Bޟ/xns>0'@j? }!&\+U|7۱0U8M3ux jŊH%OJ)5ߠl&C&CEe &`lG_VFN߽S!3H>$Q >xYTEΞ"nS>쯉u @/L:ȅVj"b4 @]y+ W䧇J|~]JOw^a?wEG*vzt4h,{_ͬ ҷo|5ht(4Q(Ug x?6_O{/ `F&#М '_I=Z 犥7$tzy{ARM}M ̉0k[@A)khsWx DsHD@R({'#@ b3|,Ilw4|^C1]:/D=;e !U+WH(Ă9T-@^OY.33  G di9LUEW+KL.X= iUDҴQA:bۥQu#맫=8l|LM7,ls7DSN~|3#0%":bs}IUS)բՎ 6#fʋtzi5kmĥ8ԁ:m]{pVꆌ-N%o5_W  ܔ, #Ay9a{0}dEdw5.|Ll7_ =-v }Hn!{8m<ƲM~,Xr&5CDڈ/g66bdi"Ʃ](dd2Ҡx&zw18̖|Z4EyU$|öF|"9 RQQ7^?<! ~u#X-f8AzF] W~4^0"([?= '1ouI+P{Ho#Y{ylz>Xߩ1>BѰ\<̍+*Jh:}^umf[hYʇ#ĵR0;3Yh⟛Ū1Dd @RVjGJ%nHHg'̵3N ;b*SFj U% !{p[7כ,` Le<:URHÜf/1R){Fw~'1>#Rk0fsd Ϧntz/8@@ 3[dVcc!LVf'P FTՎ^4&$S=GU;×Jsbm/UGϦ%li c[x4r~@f處,ІkͬX<9هFLèI'b5i[أONhR! ]4o7K']?{_ow0#ΫcB̙߫FP@)}6aOv.jILǸ8O3S1җ+ !B!Dd)ԥJpSIFϷiXӸg wJXSRB@uW0Bܐkr_f /PRDP3V `Qݠ9ccׯ9ڼ>!c$-tc) WbG,"fsY9Kj -3uKAD JW'|ՂuUMW@ nEA jv(IѐS[xXm =`W2HBm8gT+b5 H9B.4A:@8 L,,:IQ_]j#Et QazsO4r=_< ^j\4z 5Zw`ɟ C?Fpw) Dxl[*})kG% YmR}}<c=8 C?MEN/e @ Kf V::vN&7~g?9;X8$#Jaj<g=#@~#0P+n}r ,F;,#vɿI!75~^V@yvݑH ׎ JC3ÜPh&vj.%T`A@F!E$F#N1I0B.؊ '!=jG~nf9=DcVܟ'xhjC ε<l4 b4y v-k98)ɽn#i =9ke ϿGn Kn^?y? d̯e7vp@#!oyo6l\/=w_ B{*wQV .jF@:Es&v0:&~ Q.P0ԤSA\B9<ςʥs@tv:~qV 5Bf$p-eb|>\o= X830]֓AF˥'a@L.8vp~b d8/[+8;W)v(p%%^)sh"8@wwb>UᒨXڑaRJ}{ ~rcuӟ'9)D+n jR :zDP&+c)M">?S"qlIӳ@.nvGĪ?ޯǿH~Kba}ԕ Ò P#(LȺ,t`ݮ7J'E YFDZTD^ 3u 4C#; `]qт>? zL o^+Ε:{x[:k,ΙSU[,@>٭ۦ%'jFdЪ֒Ak6P&Fi'%&.V_>o 9՜4, >Ao3l?m :ZM#Tg&D'cc*ޢX``Q@:X]f "$4#@뗇U^({S2j'/u r0`bЁ)thFN_*+1rR VIζCN79DS{![3EhTKһ_,lpܾK)(2])8!ЁA9@%`&.{ [)D|H(*RHQXfџQmj hmKeCx(J`o˭FPNMKe&`egh:.Nߥ[NN@@^] v eefp&MuaqQw`u2o*}%z=]<d[3n KFW$ 7/ {(Ɍ" yn'Tp#D߉"2Ƹ<ctwUҡ=Ӷ{Ȳr]*()26t"֜pud R),uNijhM9["V>l  o\_vŖ#@~ÛyAi"$md0褂W{2y5%ZX>zu6oy`G^P^#e:* ߯I>]9#( $@d /}&E!2UV)DQ7n`4d#!z~rQN &3HMt.Bt,=:c-|>2))[-ޗ;0J$e[?tjވ*ƨ{y {{EM#HQ .@B.`+ eLZ#490q^NeB҈ar.zvH{=!4B#xD,MtF1:9KK:.J5 v3!Mu@)l&90x%d&q%gӟ/_rQH`(8¬  #9s"h @! fȐY茦xoT)ѴÚz&2dד.'& (i"R膐bctMq3wY#)";| ~`ƭ7o5n萙ha5aك܁a,YLIl *$31mq! JFN |ow49ݫ5 󁆥&s\nF706>&%RFnj1g F& -fˢW8wE8?r"&yeLJ0.#OTtYH?`q4ّE  v'DZ 9B !,UKm[g%@Idzߕ' Fph/~c., $9@_@FزvA칇<$Ird lpO#D%E]W z,/Ƈ"!w][ 9Gw<\9Xf//[ȗf nz6JWJ62xQ~9[ّ2x=э%s ڭ~uFTgr3Y B9 Ә}y脳94졋[2Ox{!p$J83ﷻLioÚ`t=8J BHr+Gƀ >PL"@ 4d*,NSA4F<\@:g9#]ijnm˛blՊQcc}ԑV"HzPw25,a[RI)шEvIӼ@s3}VmDwݵ6Fd_T!Ÿ p:}Ɓ"M74@ -guB]_P~JJ=Jn*nLuH1[8NQte<= ܘxp:|o RIcHM e#a8<XjC3zE]4Œ᤯L:[5Ry5cC !)&AT0auQT07R-^èV ]fR&DۗUuJhm =<\7>܈YLHi >9tN(TU7d%@7,v|W/nH!$ C!N˱}<8a pHYs+%KIDATx]gTeޟVΙ 4JD 4C;ʈHpLc@e0+A[EDQqvq=nUWWW8>T=KQտ]qÿy맻7#&xGoyGoyGoyGoyGoyGoyhuOVw3z5b6^ݿO01Z}o㵃 1KC<_Gvx4kC;r}>da2l O͟u'zh5 l4Y%n)Nb^tr}m6~Uyy(xI;@ n7&v|w5;t&`շf;,9 d{%߹ wP|ɔXךLo+#C}Ǖ=CZR;0,_I @]ȠnCx/=lhd`Wq3 K7TnGZe48?# 32AO &W@Мq/6z|떺N}SG2|-`gUSRO3`W- {0גL`nLrC9Q~Qvu~-L $`Insq~:@-g@#@+k+ߵ7VB,cpdP`;i(a Ǻ&~W'' 08XZZn(b7K<:oNr}e¬I7n.JG% Bh8P»9 a2`B]kLpT z9PAL`k)unK"&U.?+u{w}HjҘAtAN P~\-{ȰrK DlN8M#LHv, "I tao@맧u=yߙ_C'a{~*~\s}{Glϧ#p0F5ڱ9y65/dLaCJ+VcP`h\@,wA|., |/!m#!3tw&Co .$'͓'*יZaЧ{B7^+~('Ŕm YB/WJH(r s\vug:{"T~NA8L._y@TLN:lk; {xŠLouf8}u2rVX LL- !deH,a.c ១nzϟ ~*NMI1OߕG-T}NɵCWneM4os&SKS~ZE2f-Ê7Qן%oˌ~NB.fHg&N9,\>FsnJ@tItd& /<ޱ.4A]7#@h"@ArtÁS{q28LAJ7$D95TfbH  ]Lv@ ~4s_4) R\eѸ3lǤ4)]L|eG [g?6Y4 a2,)z*$ѳbFvǯ͗ŔEtLq~<9x&:w c9뢢Ȝ eP! `Kz r 3{  2tI7pn8BkD3cԙýQa)Azṳy?[f/:߃܀?_n"P ]Da* s߆']~Bea?/d`xu5tXA/Ѝkbع(|6$~oU5xWDHG6@ _@ n~ a!3b% B"U Z<-@{$-B#I . ?PeC)1x"#>WDspDhC?8euDWͻ^Y";hvd|U>*Q9!c'@2M*{;xar">z JdtZ:5(Z`)&eHVXuN6cUBFy az_N )6O &ΐ.!z|"ʿ/oGU)8DV,fJ6HC?+`i7ep`2^$[Yd>V"Re{:eٴ*, /[s%vEJ 4m; [U ƪPr'sHyN93/e]4x^сcX#!}HB2/xD\sO;l-ZQC~M89+|+B B@)g$9.-JfU/'/y?D:OP$bw-G\tyK\>% m˕̾J`@ Bn cK] _0J$bUwXD: 0VgmG'}^S9Sh9룷XBDR1:M:Ӧ1H!]<,?p:0"v^z UC  DFND Nu8~ C2i*_Ȅ4EiP[rZ57-!a^W9j4ǰ"Fd㚔=L3@oa$xj's*\P`Ki,޳u4s6='ϊQzmߓS2kD?r_#jh)eqYBB%-HYwJ #^Df*  6"b9ꪡ㳊d]k; $ 9ơ7O⻻ 70+YI[v3=jG9 AL3#pns~~_uK8#RHi#]/RT )Y01 ca[hɔ {u5h4~f)eiYaDH-#'"ͱuǗdJ\)~ $D*ۈ U=ƪ wv)ӛ ~ޏ{#KϑG: <ֳɈXAI`@/bF+V^AtJJ/THٍ}@:w]E/gWF5"dꗁזM ʙz, GQo)%Ym\GK&x pJ V| H.!'Ұ<0LEh>7> [DB)çcף 'R9aoҭkc#yg%ytk dk!oyj.yJo$'v;)h݊Y R ti,U 6Gy͒-h%!zǺ6޽_; 8H};y'W?Lf%[~f%q!.G˧2F}PQ,tZ/{4x1 p@Z]3iV!G#? ).5!;+}/slMv;~d"Z&Ne8zrHG;"& S`9fnZ dd(!䩛ǟaәL9qBOPhCʸOwSb@mcFĦ9 >e151l[2P;YbɤW%ea]0L.VQ?[~P@a(s/aPkRZ? jT]M$@ȧ$bz XSN utdp;w$sD` ?/*-UE4kB5fЧ/}aG3!vv4dLD/NVf}E!ɡfqYJbX80J|8 Q3-q3Hu@F;>} SND.x<9kcT;3(;Ի`PAT)~䈘z-_apBmHnpmcGDaz[m'sMuQg or3M >8ߕGu!wnm,k+YKQ)uEfX9--G@s} Q$Iw4y/aBՒF -na.S<[T'WՆ$:4KvJ]}EtjwsE]Ԓѹٚj;4iaM!w#A~lҀ9Mf,F 9-AYĩ$_˧OK (?:.+_ԔmV)& 9$"JL] }Ha4,?g8+_Om3&YQsbYKBAT>&jIg =AçЀS,~}zT<[YR3@8;x0y{ic:}0~}$t[K*{@F1\f _l_/aLH]zL(8fKkB#|ok.ewQu8J>#PQ4!ɡSn)ِra< ,LUjDG4b=dI{9h m=1&laUyZ hXTe,9BF,@MV5r}*W&NLiw7N hv~Jc~L3#-7|,l? P6 XbJ]e:蜖0S8E~&Wb]L};k͡y1PH4} \]5]&Zi۲&@.Ti/`bwOD`4#TiQyB `m3xn#@=ʕ%0\Q˽(ZԐٿvA!EKK5O+R@^CP%D ;J@Ph3K *pdC6ŤGu*QM#CA1r =~]`ţ! ;[lMwjRQ1}G}"Adg!$5%r(<zO?L?xI~8L^*ŵ.FĚ ~tS,sgI"TEj$ $ Tyu8"VGY4j}>WMk ΍еW?ޟmT4 TWrz{"@{P!XDNv?yeǓ  .ip`Oq={X˩(7]<=[qᓃGV:m/M [[[[[[u\ IENDB`pybik-3.0/data/ui/thumbnails/Prism3-6x3.png0000644000175000017500000002464513137372655020664 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+)WIDATx]wtUŷ~>;$hAR*-^"Q F Pl )Х&$GHSPToɹ7&^=;7{v9c+f#0$)&L1 `ISLb0$)&L1 `ISLb0$)&L1 `ISLb0$)&L1 `J"j?aUe-(~3`RkZ+½| C ̰Oo؊f6’2yM۰惖zk<|{_3Ɏ|D#I4I -X駟 , dß,|ԍ. 4^8cр c"`BϟA 4>e`HKeXE:19K!wllC9en5x$y>$Hx|?n vu,kdtԴ(4˗ҥKTF va#a#pPu[̍Z[jxF 3pQ|-ﵚx=C %,۸ǡ&1ɔߕ-$,e`7?wْoB@tFx?nn5O8͛7ؘ:j ]s{`278p;{@Yע硁 bc/oU>`KUA;pSwGz$i$>^ߕo8FK<*Fw#ɭ;wʏoǽ* ч3e09 $Ia%= H~$AeOnƤ/ ??Fm@l:{я_Җkw*$}⇄QPJ >ԫF5J@bFT8HAAA $< ^:%&&R͚5)!!A rMd[< 3KwX gLe³=5=W9ƶ/IaT߭~8 "ѯ.L]v4oS|~4[{z%n9޷6.rnd.dۃ_חi l%3I} !b4f:ɠDg2dkĄ60xS,5N?)ͅi݊I>}Nd:p5nX?VgyyJ}#pI Ȅ)ma9wM,v%e\Vhg=XqL0F& Mf>vE)402&MX+PշMV@0ߟ:$J˗/>}1SPԩBc:_'ܷ{t5~& 5TmSy}R|C8D+Z O͔gׯ(z%Ð1Ts'd#|Cu%t'8q"iӆ_N>,⋂ oAs3h5;dѕQDσzzG@t\"pp/93̑ZUuzxH=)oNФT8#ivaJaL4w\5j lmۊ7A(ulyH1Zf@QtdhA (1-K!<0 ~s$I$ߕ<؄-Ճ14nnWF:ul" 8pn9rD7Rބ\ò@OI{@$J] ;h|o}n^ÆTtp2 [x ͖9 xFWĈq>$ о|ܲ d"4vXر#uܙ{ァl5MW.q _zDXVj.X+UC@Jga8 0$,{b1j$1] xТR!@ID^`RHDDW.4ZlA>*'lqA QznI`rp}իGN/Rӹ1h2Nepu܏o+%u̖qrX0fGtpVy{{ %D>Z~:Ǖ8A#M-dmLbҕbHDuk &i8nu JLѮEV  |׻E[}~>Gi)&ܓ}Am#@z0hE'O 7߈ p0&{nn Oupq|$&OaΖX=D-B{>`c(v-Y6udid,i0|d*%TNR}((||=TH-2U9)s4~EximLh`RRbO?$zMt,ы RͦIU{h}ODKѶlg@O͓JT' 9"cyT_02`Jc> k>73KCJ `6ˍCR49՗}<){Af C - XkO^;߿n՗z *ҴPZ"^&ɑUHF7P=ErI$|c>*fJ -ӧ(>5̓V˞E?6zeԩ:C[njSa~tya(`17gQH:7$ ;Ջҋ^j'3g3w@.:>3I.}mKHM+tgON "P~+n Çh5khРAԩS'=D +VЫ$E͟fBWNςmޘg8~?UW!f(y*{1 Xsi%-wQ"q$ (qz cS O7=@<~7[QM}^xh+B.\ٳivEha_ c ё)Gg du 'pҋT̳ #Supָ<7ao§oO .&;%Pܧzf=`i\AEEEs̡ѣG -Z$g`„ 0R2hViC7Q`T*@4j˨ej* sA 97DKՕP 'Z!$nvi+nO4mt%+T<ܡ={7nܠ޽{ gq eee 9{x :^ૣ#E,IbJ=y\O &z%-z^16GQx h*H8m_ 3Kc(1t]^vNy;˩8x(qct|z X#Ё4&'`Ђ DY"j;(b=zaAm>$1vC7r:ʱE ꆼiC5n@"P bhh1h {P/^X`=m`~6 ԞӉ8=P 3—b-t`u8v<.BNR/ 1Ǐ?Cꫯ)Уϟ`Ȑ!/ eP<ΗY*j4u nQ RqD,FA)4Dg,BƖ2}h!c|f0un頷&m_E51M@zԆ:$krssWYjϞ=+9R?=܀@C"5]7I/BEim0<=dcYA~Cv!'D[y}]; >dR?Պ(͑t։9{wg ˖-!`WA<#D S˰@PdjdXKw1Qyq cZxN.1&ssPq&7?(Jt6މgxk6Iog 0*OR {V*n+mۄÆ ԬY3z-[>c5k2b1c>*!b]vD,k?C:2wZom`@3p?U[Vi=A[4 ?#&VH$7n"&9ݻ~ma=cv1 C$߿P+*4WMMQӬdXy6hk6yF \KZ>xuYʁ7ω2م `5sCJDmOά0|9_Ta4i#U0^0nǎ"@N` wބyr8@BGXhLulb!i}|(%KoH(oY[B<;hСzAeeH"6VaC8YM3\6Ce qkqE%WW`hQXlhx Y l>$}P |'þ[q"wTqgΜAݾ}#3S 0hʕd$ $TpgM|r%ڋEAbDKw ɝL|i'(=b+jFu(,A[ԮB_VQ DS}/N]^i ԉ 1eh4 %K_$hԨ$x5}V-]\pXYHl9Qj|2$%c,[/ٽoZoMVF??c|EL~; pێE< cytijڴHPe RhYCCy8YOjl]ɶz&&SӹJ[aMyڏ⢼iA~ԫWۍYO4x|Uec߾}8@dž| _n,Ia@í}br&}bhELe)=Yw{/ɻOyx1P->cük;F@Ds(Aށ #i#)PaOxxlBX_i >Cknlg5u.f=~y>@u~! EX ̙HOQ)>N5sbE&*ٻwf<ѣ|Zz]-4n999+LtCza31н=k_m^agdMo @V7W?g֫'4߽J{]fEŏ8%>҇ؿzܚ`zV <6XY X/,!(RSk0,lYU޵72 '] 6;0kW,G%GoEhZ~)Ww*a~x?O6"B,0>V^+v<*r d1CݻF1b qC24a_S >Eyz vjfP+'zP'Uc-7{jiu ߘ.fJ#zy't[ }lϱm T;z$ՆHDmZ&7C-ԆjN+qP?jDGGQ}/BEM#.ʋp@?N5#z ߵkj&<ڵ1C- o_B@mDI9D}1L b Bㆉ% ٚb.]>[Ͳu->'mq}qPjoY'CFw~ +v@^q'm-GHM(/D01B(( aCR nb-Hck~0?Ȫ"fߵ&@RQ6, -@bi=Պ.?\ N[]rQ=ԈXi i`57j &(ʱ\Q p!Twi[Ɵ=KŝsW5 KެQoJq+ F;_~ MHTi &Bc*2lXJ,Cr\A?=#C-I]ٮ8E6Mf|.ࣦxDg_6,]./p7XВEh\ J2"A*2210 dwyp\&َ%a:;bSՈr.dNmբ|EFwI{XS<$zq_77ȝ&v@1.TR3MÆxv8d_U;p6vk ںi8&jX[\D48&i(#_=, ʨ{eTaUtCkl/L:y_l ujCuԳgO01Zx5ȸ!-qed-GӧLDQhmGWb`,TG޸1[%RRR(==]xl6CA:؞yBB>O#zi9yPZ pekr.'S):0_a_L"=պbݹSLPEjCH/pl73B)*(:# CqEʞ *+K ]KߏBP$X N ܁&O,pؙ(✜?{VuzFuG:>.- G(]-+V*D^Nf KQ^P/REWw_/* l$@R OT:1SjXSLӴ`#\^2jZg{3𧎒u|J7a^>̏|--R;{ӐXI+  ,^qA>,= H3 $D 1z/=Px  )B(Ia WY?1y-ٯNWHzK[`$,O @+ю_ 9F/ Q/j6|t|NcҾ\T:AQ 7eDy ^TOo1|.nE aTN.~#dƈ!uC1)hpC'J1<|P0ԌU:1wu'׷k-%_()!fBʪ/@[~+veoEߥ@k `EĺYzwhw1gU?Wi\k煈3{eVV+ -۶-&{9OnqWwF>sWSGD1 s 졍4u˙ZYU_!ʍ@B.]_Q>'(8M2+%ċ*t*$dSU<2[JUb*wjfZx_!Fɕ"7*a%k "łoz&l-Na!i3ÑXZhD~'B㼁aNŞi}_ EH aJ9cm_ &$Hۗi g55 CVeZ7[$ Ǿ]*zL?~&w[$)&L1 `ISLb0EPi`IENDB`pybik-3.0/data/ui/thumbnails/Brick-6x2x2.png0000644000175000017500000001217013137372561020774 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+*IDATxypTוg}ZmB@mb 6[6A,CE≝$`'gAX1&ŤVrCUf\55RL%5dz=$?N~{o8op0 p0 p0 p0 p0 p0 p0 p0 BQ,0įNE:jpu1R9B\q~Y|@%5ahΎ7".WDo 1 C J3c3>a-oQ];E-iDSt)3\0x bHsUM0qGO0PYf*kymMMOa$(ڳD%jB )DJv V#S€Rq/e G+~=" E}{zAC:7{u p{Vį$;V=VL2x@ BJ^,:ށ -~H0"07Û [ xM8$ $v;_@SאoX*ߧ xiZMU"m8%WGIȑue+\Bc]Gݭ @i3D3BuyTMBO CI| GC0PV RA%oHOV~cy}dO޶wV?  lх{&M GNBc@!KU{NP?k1l" ʬPBN)IGJ ] \ds88`(9t#ԪdB¿L_ۄ#dGq[\x/Q0`K}tR~!_4aB/[7w;% HDT9bM%$ܿN?zh׿Ck7_^<0jPi7@ ٲ C=4[EZzBe=C$*cHѨo7?r=_ICfq `(=C&F-YaRDg!*g9sD0\,$E !cA_b te9#jKsxNdMUL35V B<἟8$P"2^/?#SS<-dD0_|M9c&B}a\+KB2cL!+>~@@$z~n(WMoLXzH3 s(k%C#<Ԓ8./`Αt.;RV3(_w]9A8BpN%eZ* tezn3G1^rV?F)R1μ3;Fi `P g+C$z}V}Cnsbe/ُUbtίjKu20%d2d0C JrӊB/X]C>Xv35DII,K8THVg`mL8ڠ`ϱiR>jwc)+xͬ{B\:3-Pav+Lx%HٓĽ#K$:rV3CLD UR;^yμT9?">kPPl*~raC:WTZ܁H P; AJՀ~P3-Pnu ů6~WPQQ!.VbD6_⏻v Aܭ wjdw)\,M= 4σ؜ 1_pfZF"%=KP*|ٴGۗc Hbv:D3Ls⏟U /:X?ok93m פOh)ܡJ[h}TEDa؄g0ǫ-u-ϻ-&EI@c+u* @%wtx30-$LHKXɟE7;cfxK%)F1g5 a@ڞnJG\m-$/Z%6wV56rN )۫ 3td~G 6}(+a}B #0 d:^mt^-t|@4 iu*Dvo ;;"|u!ꄨz-Xn?i ji$?Kf"`%CPXP' 5LPi%0tWIc!_Vu>S&BsMKŠ\F'>nmhmߗ")q&f Y.`S@ e G(#5yoci 2=S/Q555 æa!챛qU8ݠX4әϟ׈SgƇgڏi֬FT3767o}lYoț] 5(Utv"Cf/ -r+%pq ]NϠrhTkxZԇ}§67čy@&K@-ϗmc-L?vt0&ki4C;ƤN/ޗwPcOJ?;]&B~M9ѺCNZY pDrmTARWrsu2 V *=ӈm3~C$6r)FOv'mhoJLhm+=Eݮ_5 ã q{QX{ R.:ǐ$ a/)VYLP*$Ѷ"+$"N|RFEJ պX27?'G^qXCl2as#4+jH Ti}Mrǐ2V&Bɚd X$ ,1|f@6مΉyJ&YﳋˇKc~T39=(%|Ms%7PxZ:)'7D<wdP OhqDKʄ77)>Zx6QM辿 H Xц@BeVxcƸ,jÄϻsH%PuyF0"A ,fפLiLgsEbjWq]qazE1ϵ!+~+5郀xS-PI<c,s$G]St)<3sL&!|lhN{^lSſ]NyT"d_tvLZ>>h"B " R lMt&rX D8*IszN61;sUޔGKeb gNa 2{nWdyLaUEBkO* = A>B3/ B` ̽_ՆXO NntN[!@`` hHb#ò/3mO;VdkP&0Or Ijmt02de;4W^*~*Η-> ,=imf dV[abPh!e8Mc`D4(t p-8ZXswH#vo?|Z%>]7=_;;s 1֕]@dzFF-S>wKjyk#5t3=7#b-Pk< n5 hiT 3æ) :c/:a'l%0ju{8P eJįOs:z^Kme\OY;r&?ZIed 䑳pjqfȺW v?X{+'E.t}/Grrm\Bjaj+v(qKc\X=roeG OU-,_D]r4q[|;8g~Ep 'oSO>wM)d}]-xڐ:ܮ\ Jp aq nʂ{1eu qY8{}?p;j_?]4ŹEao8`8`8`8`8`8`8`8NFy9IENDB`pybik-3.0/data/ui/thumbnails/Tower-10x3.png0000644000175000017500000002737013137372550020652 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+.IDATx}yUՕnP{ϝybeQdYc(*Jp*) I?5Ęb^W'N[ާ8uJL <_U{ƽoΩ&7 8s]s|]9@-R_r,xl p}}hooRwdŢ [;U\@xFNcf B_og`t-@__;)Lk؀A^P6& {K<0\.̾x[B˒IRadj&--M1-Ǜy ע</G'I'hQbn3fC~G@ϙn.cx0M  2Yl*"~ hta6 <ρ1 pn5` I{ȀOOÛ_A3`0`sf !k74O0lw0K8C?NE5q/mҦ>)C`CJ d&+ H Naaep{FD^ՋUL6]FͱX!w{`" $X0AI8݂El{~.g~|El{՚L遆si٪߯c K=i4O6xa10@ĠOb7mj;f؂m38>O $Ly T P8$$ "٪tAbR"Mc.7Mr؄>'(iI30ݻai`; ݝ; qnrgN LvA TCqI7v`8NXaF&"[łǩz sUDg~a 2֤h}l"QSfx<r+q^+ 0?0YI#>>9R^?1ѐd"D\, N/5)W],Ƚxԅ9anC0Pe rxB0>vWR Lnx4h~ VJ#piu.N#@ڵSae{m2U] oPe1ta>%hyPոY 7RCXcJ Svr1Zu gK6sC{&~6Z'3 (K@l.}k9Ηa&tsRȒ|@ <6UאF"-p%i=`T4 [t   LH>LB6qlM0ho;@@!?;>r{@df,U1#@ UfMڟudHo`C8;iz|ww7kLa/NMgg&rn֮$waa9AlC9cռ2:uV Ud ̂^ra IS{}>#аW|A'U|^KC4?ԟ&`f(#q{ffj= 1N;Ò0 1FcLGyQ`G 5$'Af!q}DcL' p?s#O)"lܸi=&d㍕X;j:; aQw'"+B(„G͉[3) { $ D0PoH+æ51lܨ<~l4,Q!/Ry5̂̈́᱈JmBL8 {p-,j~U`zEeW- Orc4NJEƄ1?asyIΩubM/e&3euB&`IpHHLO%h,f1l9?P} ݱ?ۦIV `.P (g, (!GnSAu^c= F*./ߠ~A$/Q; |d'VúScv,6Mp^kO+y4m*xu.ڀa 301 b);@1L9̱ 2iHPrxt*˯.S H 'xx'76W-[zn]XDr 1,4$ fL+ Ϗ̒WeTҴLUa0Bg) $aTmɔ9"nrlJ?U 7UZ 蕢1[&|㼡[ﶴ‹1p`PYjiP7elKa̐xo8@*>d =tۤF7ͩMGkyV[zG(;ѧ+JE'ˇGeܘ=7*,tL|&Om(gR(oR{XZBW]6M@pcs!4 $ :UlN/NF)|O a䍊Yauo n0sV 0tQ%@YppL7-eRܿ[@9bL}2slXeyCt5p rny }IH3'er&R=09U~J=m3Df!hAA5E.1 {whz"Y3Psr{gbfYB룦+ް r43<:c4~'I'RZSɬ,;"˖ү%,qksSR]iEKyĤe-/z~G,rpq1Sq'^KUZ:)aLzY|6dqަYֱ=ŃzWY?TOfJXfRzc9 )}9NS C0s;NaPE|2;y˗`,L3XY/;hjA&QJٸ]оiƧ0diAXd+EY :g-c0=Cڐ Lǎ*u1DT_݇۹7uy!Nl^]xܧZwP7 lj@IA,9տWe,ypE\ -?WgsDyeՂGlT `oGh/pw7#p!4™ 䨋M`a. ?P;-d'h[9>c8$S AdQEJ ISL(~a㎐rVm/8,IO5`a}_",ep ,Q@߫l:sׁ 99kקM ڸYeqc &Ьd|'%Ryv o,TsUF#sV7O>VZX99>5%ڠ3z TL Ja>Tt ƧntWFH\m(ӦdSEɅ7Tܿ؁A9BdzO:}{xNt?!Ǎ`<3ɨcloQ-:yL x)F}1Q=Fg3v#[v!Pf|K#4aSFl "S^ģLъMW;|R) RdJ٩BfqBS;x`H4|X~!#X2-*W][S~~Ms&VDS=i&+xS{4˝0|z5BE\gDL25t7gE 1#|q,i ZG]װ.vXi\*zpe%6i"4k{$n)a ݫe/0՛H=6RŲy]B:E>*HVO{(C͈J _ꫳV%{_2%2Z[&&p] DQj.1)'# @`3o7uTo}fz.'Ap;MlZM݀-ǘ8].TOg37t2L}x0֙$?D0޿؎obIͳң%SD~^.6ˢ)aJeh߫mݧ {dX!nI. 9W;Fs8Mo)x<˶)Bׇ HΖz>FA9j`5s,_p*|XV`f>H4(.ڋamrmPp; ma;I&p3e;ζp{Mf4 w4_&X5҂v`/D_Åb ҿ˚91G  i?P&kjw܂`GNm0^b?aw̲1v2;[:vA t!Sč$c[7a_5C6%h{Lɸ#95L2,`5ӰY2Ƥqݦ}R'/['dԈ|oP } |tHGj#l !L/BwqY wEԱqxQL Yg.7v${cq4'  ӳTzR0SVIm")zש-BdIAExT Ao,JGɈۂrwQ\Εn-ٰ8 ~_~k&&sEt7Cb%}fPL(?=ac*!f 7t _>BE [<<էr5-x4i:ka>Ip:2{ŨLpwЈZl\ Ŧ& \0;ƣ V;)Gg£.vA@y] 9z >`嬘Ke9Qr>}RA/F7B3X$B0̐ AG HwF4j¸`c6z5=}X/ _Qڣ4tcTf"%`LQVZc%?5Q:1;p폙'X#3w_)R`1&,{]sE8 XX?Zl/HSZSR0Rsi r~mi!lڑ}1>ATkҸ"t2]8wNߢH(TˌR~-0Sh#6{P @2 ,И>x;Jw*~5m eD6X1Afvwqq' !Ǐ&O' J-ެ1?ee@)jȆ$c~-l w#ŧ$2,jY9]T՚0ᬐ1A- 4LkMEV0R+s}>Bdy(LTEvH` < f&F%,Ōdkܷ$&27GPA/Rbo,UctXaWbU{GHʠC:j,">% دB$ "¦CJ-†St>s=6> PчM 7(=Y RA-2#f=c(E(Y08SRnZyվ ?ɗ)/VϿ ʙW;_,7KB4pvҧ<z6Ҩ=S}BmP>hcM Jܡ˸9;,i'CE$;8lŒ@Eʨ\5W <C Ըĺz?8.| C="DU%,,z Ş'%@0E C4H ߘd ۃ6$>U(.SG.; ڛ 4>WO`|4яnUKQmHv4)>Hq 2#bSP'~dVH]Sp*keҖ,yٍ>xU=ɋBZ', WT pcbyY!H.0t`CA b%F):&16w8yw¬ ܬXk$(u8[} sM!y!|q%TxZZ[*\9\zsk0{aD͕xu_QjSk)A0')ޯK4x3/7Ff:!RTd B_V`9p >6+Uqh` >;ׂQwL(>zscZ&D36ܔ%7^A={!ȏ6;>{Nʕ7\w{M Ykq$gw 2އ"4xlH%IÑ6ia(3(t> Fb?hViYziݰ8snVL\`'۸ `h'~rU!p#ϙB`8Re]'H۱!Qk & }t|mh,Uvl١ilfB0Ogvٹ B q8nf2P2aT8`0>E痾wbÛ*)6@<,$e qsLyuwa9Pz:2r1RN*k,6$vKP# >#$̐.}ѡj6:,A(HH+c0 0Ro)^Hv L>HmXr6uNȏ<#{u7oa%4ߥJ/^鷆_W{ߦ؛ԼPĂ?;M{v +*{JsY#P?u/>43= icRuǎyHe|~7Ɉu[U-b!BOXL1d0t ts <d̓-xSOvmoI LCGvl93tˆ%ުRε.%I]H3} nReyd$Th4K1Rd 8CB 3sK69%f0|< 6au0! C]pqk{}+[9yyQښz-~Ȧ+m5q}.Axq)[u .ؐ3=` D~K@;L7E"FefRDB}LVJ±DrJ opےZT #!@25|8߂Fxư-{?9Yp۹l`>:2o鿦^Ow7 !l.$ƃbVR/" 0RplcO󛅨^rcp]J3n@ Og7;vUwPޘReޅ0ݬDj]!iA(X7}!TyޏzU@vJSͪXaD"fElP8BHG]hjVZC+P W[2yl}Br|j+v[ S d47$/R^nn  2v/ 2DL)k O菬o׬OK)h O}=WiJ8e;m$A}~5OG߾5׸y(*_| $N N ⒀IhzT}4( +!&^C:R'ziۺwT/WXeׅyү%?9Yz٧~5 YW ţ05!H4VaE#nZU6n.:u֪K `Am5%Jޞލ8_V A?."ewp'Ax`nYE#"Y~U-T)dvBy:I5R{HպBHp&ȯO[Fk3dT~tZp5oVύU/CǍMVhUפ(\T-k5=?1˯Da,;*X1$K|sC2Ɵ>*j_Q_vmR=_њW 7LB}BA@h@YzbW4aUNtg >>84$?8/=>:~~ o'0%z䊮]hؐ5>xbr1 ! "$)Nؒ`'3%xFLqu.fYk,Y],y*"r *TLV ={칒oi$O,ڞ;¸NW%xVhr.&!Tbq6'(ts&3!S<-yY> >;4 ' V]CC@!L;^*(i4T%ub\8$"W>|`SkɬgvHQ)Wq^b#ȋw!g 5>}M|C3/wnU)f1RS}qU͵ *u=.ax͵vB?G"3Uy?僫)s{߳"q}uE/V{1M$dB_ )FෟltޏgԿ\cÀajE      ޸?+^XIENDB`pybik-3.0/data/ui/thumbnails/Brick-7x2x7.png0000644000175000017500000002400513137372566021007 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+'IDATx}yՕEf_dwDVi6%b[ Zl@hٗщ`1|Lɗ1{0@7q URus}|Ƶ;I`MEkXEkXEkXEkXEkXEkXEkXEkXEkXEkXEkXEB |朂܆ͮCk-AI[-Wpxv"=UFPx~w?h߄p;ۋIEX(ۄf+q3vb~upłt:E%&8X_t>@% A3o\y-+GC~G  ^p8Ϸe@)<ūfݦ pG 8@%^E㍗A<) W cry,u:$r>1̞!q~lx0LOqc'[v7n?z&"+ ~WOu -|>q#Cw 9f9p5V"/T|'LOwߊTiU~) ~_ pb;v {z Dd*"[z'ao`g`{y+bEM}#5/ B| Z% %nĿqm 5=&hcy0] oUwV`M? 椓 T7xxD IA W p|!,5}:uE D?C 1=A!W;feYĀoۅ,@bLI{1L`s{5apgMd o1)BE!0Qa ]'NzJ(¸G(A8fDĕҼdVܞnu<&n`0Ppt ~GO%/LE H!~k'o]uL|6yĬE$ BOZ=iz fDe 0g_]d"࿺zU4ApxX.Ar;'Ԝ; psI&d"1dP{?2U8!\;dQ5iM*MpZD>uDeO?f4_;&z[r(G9˃ tݑ@q>q\ -$ab dh=f m2T$ zrD"$dı9^N)j 7uMu|EoD\$!87;TvNLL*oa LV b׎%2@ !3,?s!T?V6Yl<Х4Of J 0<邷gTT(Ncx\ɞ|"իkS4D6aDNn"7yXݖk*aŇLY[%`׋8y iYj|tŎV]g>\B&Z<Injx>b"`sv\ӷG#Ӎs1Xxӵ,D vB&bΛqF0$K+d2!:!L0^8a` 1aao E!&ъq|.N1wO۟-p ܓGmn<6+L SiY@ᄾv&'__d >3CO|'MڨW av'p2 zW~$&;Tf͞\\6!C$SjI/|G &uvw۴LJ)h4eXrJ>*⍷*prgxfha~=Ad^TGc8=,(@00[!GaF \0#R1_|+Ob4B|cd:UL,a˥?b:9@X.s\_F=4F`r¸;\k^grӻo>42x>}Gťmy*sE-I516L(2DdZ#=(ݩ"işWr5 BCߨlά ] @*1.Al `ҒA?5BY\sb'VGހ -xF@viOq(E9 k/X.ɖ h5 eǠAs? !XW H#LpjS):<~B?{7O _ğ?+kYW^tqݞyDnpVӲ5 h~AdKp9Oa^Jӂsia - 6G'4<-8@Hfm٘h[±du&:3Dw\kA qa'c_` Ddf4>s_D 0sOQ(@dGY7Y *BUe:ȜQ4˯MiG=c˺PxQ/tO)۳[zZs@0̩8)SiJS5kyl˵̄f#$.~s%>|;W?|\,*{"#g/ٲp0FdTxnJtɸ˔j+V hKշ1Ys1x*' 4ݧk3&xRV7 *>M1l7ꡱssd@&1Vn.m'!S pX8y%?.=;:kGUh8T(FCl,U @C6,GFQt=ę'pCto.8t=)@Ku),MBE-F^a{jMӻZ\HbLul mRe CAPw)sߞ.s_>/& J@5^AW۞K™c< ]@"R/#M@B}w"X߿Uf)M}v~X*{4'L^w.Z,G:fW<%tA ..9alQQ!GYq6&}s٦U5 *u"_F\u3A^w`IӚN颒k\]8ܺ&X,>Ro4&@e=jGl;:M y u琪_ }%+E_ICAlrϗJĹO,{e&pOb{Z?AcD+nH]eum3,xjaƄ~Gw?ԃ .E6STO?M&jAUd*Xw 0bQ/ ~ Q')~y0y0SuB eb#bJ׆˶9#|y TM7#@>{&\h7D~ @G1~xvi#3q NrNyq\x_sǛq]w/0م{K8 \ӫSDv~* ^.Yk,ރb?D"eQ O&FOO_V`|b8j{ UJ+x3~zc1"0 )3cD Ulv+԰c}Nv.yϙ}'iuhP[$S$=k]]-'ksdܿI_)7jE#w WUPv9i:]L@W&Zw]z~:Wd5I Dq^oP~GZ2ȅ)?t0`iJKw_\k~C*C8wS/~',~sP =2ON%ѯKt.OO/"\XYgpZSHc6bLW+^!60JBY;}|*.)=۞Z/P5X_[q]Z#~H@2pw(BsxcovO]O"JjE;V4,"Bn!aRS+7eaỒ :Udץ[eɦT BJdZ6x y%qQſ~u>+rξ'k\g]9ĩ`gg9d.Ou۔LNo?MۍJ+ WPjyN >[\k^g 1q]86 |}.7~ 7 C] n!b BNnG/@\'.T.ɵh!#s+K4-]g7]uu+#RPM-`Ph␱ޝ:S,u-V ISdQY|x#hwCyܲL gV]<8J:38$up=> :KKBO?)B7ZzR5DUՕuʺ'5\%hwY_-V(R 1Vjl  𴻀l˩1l6ګohx&"E~&OGd\H~?DXT.֮@Mt\@AY:]LR u+(.CSp& =pi}Gx0+NCg zvrBPVPx(IyrZ[uH>BN,zHV~&!AB)÷rspcG'3B ݽ%~gʺ(pbB dlD5Vze@Y*/4{>\H0!3߉@õi0(@=# z #hO2EU>W>ޓ/~O\}Z֪)FƑڔJDv Io%4\/DBHlkziM4vWjųӒhʷ٢vʖr>)Tޕu:bּ !2. x+P`~H ^^L;WH"l>[rdiW #0!|^g.k)[i2<$*p_?첦|Xb^檚 ,j#Vl5b{tSz > 3M)Hpe L8ςW!q}9r_?/s&y[=#%_[_]支dLuծ6Lt @SeeV'DiT>\U 0'^G1uK؁ +ql[ˤ|W/>{ve`clOa1a)X7 /1! +<$( Ꞑzc+Uv7WW. ϰKmU%kT uțFCL&H:L#y_ }wdHkZ]Ӛc=# GBpi RKf&5WAbE/<~Ky~^C#II5%] JYE2 j%4#BLqN>q۷H[)UA3@&jpm%g .CSLNV.eT:-ˇ7V]U #+e 9`j.dixC8Ա$BfIX~ýI*\E^bڗ/k;7 kswUYGr$٦ڭS$Zff - .=y. / NǦDpd#\';d7跉_)JU vck:f rqkf˜Q'2A*fQ"(w?3roRx!%:W*ЊRkMw:p5R(&^ۅ/+C^Ip.6yG= Z$~>?W=c+!Ccၿ}|=y~tuTj}t$4rʥiLI^6hd]nTnW,,Xٺ&{RQΧR w౫CQ㲟T_)spM #5,hT )%f)] auWw+<][%c`% XX"XѦVY+6#<7: $-×vE 6W%DLKΘ)'=Qs%~? fUq,MPxSÕ-\ڕ^W,\ڎd+;X@^Ú$XEkXEkXEkXEkXEkXEk\G4$HIENDB`pybik-3.0/data/ui/thumbnails/Prism5M-3x3.png0000644000175000017500000003746213137372700020770 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+>IDATx}w|UUcrNz=@HBwPEHE4A"ЫQgKƹ3sg̸Y{sr> :ɮyʝAC;pwܑ;hUSbVͪޡufm+/LQ%wl]@D$#7$y&6I;fh{ʼn'[ '4h ⒒g,^fJ#$oJNK$=\2DDk%ҭ&)KƳf,YfYglHMʲk~s& 6;g ]N,G|HL") sǚ sWaq4/BjpLS7~xƵlߺK>ttWtIvl!H|~XC-5)"ݴ۷/$/OqL S- ϝM?G 8cqg,54)  /~$ ϾJ'8:>@ 6;{}qv Tk>+y9- ]exX 4xF D|Nd"G2J2d4 boeYp^fnJĀ&ڍoP_-3,HEdz3MTGz6>/Ez.+n{f&&V )==]iFtItAo^Ν;;'Zn-Zh!6m* /.N$%%x#"##Exx "00Pva٤hℓ%tv! yHEd:&YGI`\S&N m"aES(?Kg"Cj0y/JIZaCDtth׮iJiZӴ٬,W(h/Jۋİ|їTH$Fd4h$u&ݻ.]H狶mۊ-[Jҁ`KNNEZ$fSG+$"t!A֟4`EQ$cIӍ'IwU)4}sDA̴H:C!6l,t]$ϓl{'YG{$X(fE`qBȋ@Bce-J)k#fb,o(m"P86iD[d阄8ׅk޼5"11Q6_6$D|@CEl!O W9q$$x$HnuSuHLNR!+ yRvĄ YMir\ 2}@ zbqMA$6\&Ŋ)MF$r2\KNɻLdB8 Oo߾W^_~R@ 4x rrrDVVHKKAZ מЍKk B;I 2 BDŽ)M"Bj*-9̰)z=Cc0ݥ,h@H94rևox*%%D%%Ytm"5k&b TX{`={ bȐ!2п7sp $@f$rss m J) \B4I:Iv5dJH6?ak߲HӲ>!b%WJ7ݐ5O0 l`AP2.Zn\?{a"D A 4fT]?PgY98OB2G}xzEvN198_*0< z!L2cV_,~&N|K #~fK ̶J# &"2Ncq3z@êf!fCR@QnO y8\q}BbJr5@@Ad݈}9l |'^4>y4Yp<~+шY D=aWC5& >";58hq_3khFĝJV3OB#$[:(";QNd7w "."N[JzG6*>-8H g?J!#''T#W=f/sΆ-w>^2Tu4{|8GǃnY0]:BblHfd_Wce>*%Kh QӠ\i8af"OF|x+-YBIG7g:Κ:3 1rUN:n$59GZ5P0 DA%)q9O 0Z1 O\Od;kE0z^dbBM࣋ ͳDG+i.2ܳfڮ`;s!ZaGREڠX5`^222B x!D6cr l0SP ~M*cq>/+ie<`[[癌0u77F.Z-u~#P ?CMQXxꢶM'("@]cJ1x"/h)At 4Fo{}I,>H~ŧxIe!#| MɓkM|d ] Po"lDZL$G laߜe6"1]Tb4O6ӛ* IH"``a;xnTZ `7nXF/t\|ς.=! OH QȈjfGԟm%^+WԔ>) fa`/ pxm|z^5f#k 5a2^9# -udq,;UKbP&H'0kZL&Mb^͏;EmO@&uD?Nؕw vs窑!$0&T}FG++u$4 W>}Y/=k yxɑBȈmb݋"dL'*flnềʴ50} &kW{Ev|6*YygMIיF3hkRDҋNﱠ of4T@{aA ANXܑLC鼗-F@3A(_| jf˭иf-֝OUAjrj;.-( 0G+a;Pc H󲅙 Fga)OA`ֶ p4p+ZԽ./7C9HbL˒G@&KZ-@g@%$7D, v {e~:s|S׃yF pSԻ}x05VAESOf-0$:9)=Bf*ѥBLʭ~U/Žp(΅RݲiZ{6QlDI%ݨhqd| B4 @Lt.w*="ȩJ{^u"&\%"%1XSDH)5[lGـ*{5n/~B60*a=1*5v|`LׁpR`CdKƬ8 {#]99?S\y_`kmGBLРW=j48ΜJh깟jm_fp?{} kdggL2Cz;u]*"(g" B3rJU97וaa} 1q= ң67BGDLMQ)B>[diB*WIdm.s>xOLL;G}cbj_` ǬČ ! G*k`$zp^] `pi0r*z&8[8++6{Yp,4׋ү'f*ktavѧcع&VN@č* ƍ]:cz"k 4SyTGU嫈@ްAŃ]ɮ#8UL "` /H,k('g >LASHaR.qNrr]5kIMC1ob"lxYy[m`0xfz%xUmTWaU%?@mrpqPC%{T 2~#,\Aj&sE֭?ƔD!:pv> ̶;kR)DU uA8&5]$zhL|ȘSe-WZZvp #_~Q̄`5QE"f?k .^h0@mtlrX뻤+>"XaȦ L4` 'qJ)! LB!ă3zAzFb1~r%Dpqöϛ)I|mXRoCHޤoLIGiipCgsD#b|ry8[LF+?ʉ4>dRrvah |{sUZDiDHWZfJ\r ^Ċq hL}#h \?Dâ AZaM֓&@b:NǠA] RAQAR霽)f?ʼp(1@I+'4|~ ]"c7رTIq4G_Kqo 4qNMI//W ҡk E\\[׮z%AN>8kERwP{XVٯ![ڃU{a ]5OR~LO@.ldwYv}?64_@ΦzrfOvqnmUm8HսL*s^ 3 VhW VblA@14 6^ H3j{=N-J9fisG9o uJ@;򽢫Q/&`"`$mUcJY.Edؘ$=+&`sGX"92 ~mW!3DŽ !fқI =Xu]@Q½*l\A9CKK$,Zsݖ.s>& ѾL;~,6+ Z5x|u $[aleFaLg`ԖcFK |v&B:dCQ" 6@G-5%,TwP,' 6j$` T. ˵ σ<%Ĵ)oE }`cCpԱW}yhZ&"|>_TW2er w`ʱ 'ϵ`d&XW[C3 hp8QlG{Afmb/I"|* pY#D+\Dum$?JǬl~~(3S\Cg(0sWJZHssM M0 {y%tj`f׮h74-Xf^}W ݾMfcF ėn)6#مh$m%ŵ#_dkҿK.]R% / ˉ> px]U~~%n(:?W]8IԶ|d P$11 B'zp |hԧ.01y0KaA 4V6 ! Lj@h SQ|Y&Ğ|AbGv7k! Z-I^χ }ḫKݾkWBA"?+*'(9#Tw4t`dPkЈӹkShi_|NH"7PU׻?@ZgT]7<#33~xO 8c9oZ!f>o.K ?Nh\2 s ɹd2Q=L!!dH Q̗iH:4L\=Dl2Ǯ[>z~^44 -ONs:&'Mq|W=DQ>CC3D~tL_ (_dZRUI7u&7k " Lֶ1iI%x>D+ ,< xgX|ȟQ.=D_Kɺ>H1z 1{*|3Oidt,>X(Q̎fv ZMbT'B0G}yx!BF82Sg©zOv3R/Q;͋`D2(> 0 w` '3Z.YŌwߑk%9A$<@0۴7DS"9/O_~#Ylw'_9k+CHohIb3̍C2eHLU尸 9..DzO]8'u(0ZHr3(/I TݿO.1Ek4EkNQ{\#dzi 2Sg(O $}[vBN;iP&⽃O7螺 ~@njőg!wq'%5"չ4o|،w/~O?)2ҝZˆJs'\@ޔI> 0:JDDH&@r$0ҹ<`&AA݂||w࣎pp8,dQ71 F7k ;&~dX$@HYfÆVG WoIp @ Lmp- E0WͲmmsWߪ3ʼn7i/gDI+L?zn>@ސ[ wGWi`zVS٥ ,-Uyp> k/M YT' `p!ș+`-ZXpBhCh8HtHw~@z;ֱ+Z @mxq^'R5JOQjqk!x (촻R MZ/pG$XdH%eB<&tqO&iɮ::fa=Cāgb9#{xr$Z"@*=z};?x /h>tr&}\ D?d[tM\c*2qP&릵qΣ":s012^ M!,aK}[$Y)2j"=aGsO<ԦMeo 3T,$sW3p%lKCyיGQ>dHybm^ ނhYmfO<%n@^6=J`iYW!E}HwpܑG6nlۧ"HߧϺ,||پ֓'";D1d/ұ ɶ>oi?@lo|~KE@;}Gc_?q_ʰ E!Fo_̓@/iD/A,9uB^p&-["yHkK^;yI$>t5볉LnvN@A#C ϳ97.P*keֲ*Sr\} =F8AvB< {,3ÌrY AEb;/Vf @FNoB ى_e[.~t*E??=/B0,ƬF iXDXv}viy%_~N_ AW ڒPߞz8ezxI| 8Cun xǍNJ)X{@`Dg."@ "Zt1~jNFFAz?q< uEmED9vSg^ PMN(4YW߭Ei2/}-r r&vHW2U>p;܁5z>R+Y KPs|ԿGo%<}TD$,zQy7sg.'Ƿnb7"/8b_L*C)l8_( 6.\ @Am'qܚ>E:0qQeZɠeג=t4]!gl@19~?T;5ѦS3'Dh@KI/ΧjWO,RoZd /m-m$f^~G]C;=0}XmxBrl_@%^k%]8Ȏqeѣ|6FS4,%{](Z42m7d+#W+&ב+DկOnZ&t" V8USSjn+k $cڞZn //C2&5:.v}6h Dt@v2`!DxVL$pP;H^@ue>=X砝:PMUw]>0Ll\޸c)˺ӧ?1zF&.!4 djڴ֕F(*u+85_:͉ ?Q<_(v mc"B Rl߱G}U+8;AGNo=zx,*&c87 }7k`ǑKo3=ݰ{ohOv 0LLA"Hѣ5ax=4C.`!JNw"??[i֡c,̨&aaRs;ٸ2F[ƳӗY> P+G]4"Kpwͣ5޻" eϋdCJPɞ{嵢2252L/Ǝѩ)}A+9%^'Ȗv{yYJ5JXh;~w%]wx3s0qLٺjQ#X Y6Od:4\DG&?+F} vQ~C.֮^Xh84膯&rV gh5yLk,hأ48ڲo¸+ĄaڷhӦlb k8Nj8V4}|&x|[x ϭ}LB3"$Ҫo b ;5vh)ocF;GNME|fZ#u7W`}9l䀢t }2܂0tPqӴ;uZҫ0X[w+Զ0=?dKI@4 ,ν(t 3z.\d)Dk Y`F'ٵfÇ4pSL4Jƞ;Pj9n0{z|8t'Ghrl |Ҧ]^ ǐ5 nUcs#EN]=& 9'P6{)Չ̫D8\x9#@>Քu"d/>[𻗴 `OT#̝ !|%CUnj:W1©I޼6~|yͤxWJ$_iv8lR~}x9,u P=xL_gH{lĀ~u>U|zb!"&:H- 3FIM~H |Ȧ1~'D-~ @mt[3r@1C; \JNS W`-6hJl.&?tOvM6!ÇN+q64B|-ck( H{!4?E:ߖ(cUo ';ҹFv(Xg%*#@ӷHs|/p+@so@ *G2?>/L1ozu7pX,ߎ=TLD3cǎ")3SϜW#>a&H gP\;zZ rf9P/3bNx_նYb-o4c"K$+&2Xo 6n{ۧGw%J1CcM*>p"̩[$!NF8xlmG(ǀfЌ޾:Fc]{;M_LZ3~_u@$>\I69Sh&@IG6pi8u$ 6S&C$h6t&۽V!Xh&m aܓѺ)b Wg7rsxkbC,|9i |P3geU]s'VA&VEWi$grӧiCҿ9 |,*&" K*{%/1ib&~{!Y# ٶm(5CR3N:?஛H~8 iSJ_ZAZY~/1˽uPj-l$2MEsȚ9FlFUC`|z:k^† t+ib_y~ǂdn X`'T\I0`z=HHN>zX}rC @ILO˧T+ }c3d?Ipl _-Pfa]lXm|C9`}^,T#&7Lpsl&v`EOv}W b"QgB>E?y0`PO7cM,h$R:vh7}ݼH37rZs;!Hx#gMÔH4mF}++* gh'ф1k DH&O!Pn?qib,anPr=YsA/)8'4@mcX)~=foX~v30u(^& nH )tO׀w(C!H̛z258iz4Y:Q_Rx%1ұ&Y&Χv;~"K$f8_gO6z!e\?fo!k_EݳUFydlPWsQ F?K$lp' ?>,cx$x`Ƕ.h,e:.ԻeԗW~`NU#hekn,.^,Ȩ iWR, " ^J p>fGKx&ОDW< [7=м fyrzO-W/9}m>/5JOIJWwAiU< G p&tF'$*2~Au }nMEmnW m[t^0lZ$h:xh4zڒ%N}rD+sI>= 6x ?(&!):qoU$Ǐ6Jr )z%AB/%Mt2 OȬgE޵Ǫz ZPwcW| > cW;%nw, `]fϬF-]S v };};|I.LT?*W YQXzeMI5/`>v.Cwt};;?]<9 ϖfm*]%.d7|&9|V0KE jԱg /[n rpg>_%"Gή1uO5/a pHYs+5ZIDATx}w|UU)Eȭ7JJ轄[- AD[D7qqkVO~[|O|>'>|O|>'>|O|> c,ϗΗHkNHɱ|J|9xs';Cr]Er(ވXА/x֔m޴7fjLJ׼^3ӭtܪKSU#9Ne*ߴ&KwzJq*YV-/#E'{ 0K3ǚ7o[r@qל7)#lU\33/*媉:Ns4bȶl&AU]]CZ\d+q5dWm$,h_uyڸʗ&OĜ\Y~%'=k/iu5Wd2CJ1.^7Λe1ytM%oۨqYqi\׉Ɲ/sv^wМU0lʾdiIF! D24BZ)d -pp.PxC$],5>okbH#R^_3^]ߋ&y"k0x :Pr/h֗$&^[d-IZjX6mXFFKOOgbX?kݺ5KMMeHv;_DX{u.IRT(Z)B)l )R.VXnvE̼@+'^ [p3+Ik2z$Xp-d? [Kֿ¿9{* ':Gs°P6UJH&dg99gV&ж-'a, k׎~VV>`aaa Ȓl6+#؊ $%p dHѼW#E8gʟ @̉N8X ,|X}&y 倉@1jr+EA8AX-)~(d͸ AKSqd K6((xm,fag;SͱioA@Eʂ#7^BWIj=$){/^DIo*BaW}V&Flѹ<ߌ+@/A;lzr<&%vl :cgg|A" B\q,Bh h7:YPȎq<4ӄz$P-h! uJ"b iۻ$ Б9Wocӂ$"M e3 "t%-RXit637M#BWB)^ @V6S uQ3E9А9 ){hݭhIi^6p_~o"6f ec9 F'H$J1)zZ(:md)5\BlhSxVJly3۞eH8=@q~^B=n2"2bdYDj\ffcwP#],˾ʽ>csFz-?9`k&2?³c2\ N*\$r6+@nz'J S( %bWBc9=BT`lw\yܒ%csHfcqLK} kf6\aW#nv$֏(kOW$ c@@}%Bc㢢x !2ZS<͵J\WMn d_XB {uRz^mLި1IacY :/'kf X8gLtpU.:ݻ2=Q6"⢃N ;n'߰|qDz(){ٜMv O yv\~xRFQVPD`p aƃ$"7!()))<@*e7H@B@B_]v JWEy^(Ba}X'(w7Eab= ܓ*\cDeMYEVXb W*b3ʋUAqZۚH `uqGRQ-Ӹb[s6aaVic}CX%<%ij|J `x%)"`z^N+$$$hj0,dβAr, txYĭ~Ŵ|/e{ 5@7k #DnGQ{~IJlɒ (2HY}<]yΚ9@O'E}҂@ 4-6^2RWf xl/HGs:&*uWD֢x<$2tyMۻX&cĺj&җ@T?n B-13c{c!G'ɒ-&dIl5Zݵ_@at^z<>ЕwAWjEk׎a [뮑^ޭ2)_5r˸FcҔ5òq]hx, u@ " ]/o{'4~y"JУ @>/s9!n+7$9>/5+ʽ}(П^a! i8h/ͺ YD{-V\wshQX 1]p}SEi :/4) $ +OX:B۽z\${ !3\/fehMkON@pqJdp`HpYĄCh`x\8 r-EsJ)`Ѱ" HTgyp_((**+oSAAK۵yZ3%u;k!𐀛1~>X;N 1roA1)\ ʷYwpUKEk:<'ꪎP8>\-\x@0|JVab% >2q|qGyj>\b.+c2c&D[C*ReaI% V{AM)x5$P:j!oMvO궋1%DŽ1d 9rv`"-BA(Jnn @Œy[,nL0ql"hu>tsjT^1 "g6@PcᎱkOŦRn`y=˺BR+^{g ioyk#%xQ]ńzVֲQ2Azp?w@PQ)l4M<@}Y+-ӑD/qpAp뜇4(h%߀afgJߐN &k ?x k= 掌Xt sIcU/U]c]5L\sli KW-=Bo&I#zP"B[Z`9OWoʃR~Љ< {Rig>\ Hu:$ i9XVxX*Bdz0~(q5 cqT@Ԑ%L?Hm2b%sdmP7+Mɒ(Lt5P&)LLuͶ=`+! ؊례 o'Li~ZEE[g@=&:!N(X;b{&7 yQDi^}m~^yw.-Ywm@kߔ@uB,OAİj"Y<,ʆ$0alp Z6[7kdYqyy,P C!g`xK|JfJGMY:{S3`S.MV vk6BrY 2ɔ;q։SØN̯Um/DС|j^K;r@BP\NeYʃ"+JCJHi!5I@k7zq)/J:BW/ W(!X N!= G LCחtnSYZ0Ozk jtITp߯ )݊Dl<,] DP:efr f `!zPi!P 0i ([hÂ޳dGtBeJ©ZU(J$(ӂl0Ce =ÛM%r"!s0l!c;v !ETMW]FVE"r$T1um*JJf^ X67>V K 9'p̓2󣋬r^MT0Rtʹ]lbwq)&c&Y(RvXR"hI2fI)+ 4,M#.C-tq+_kSZ @*)|Ch!w(sДjhc}q1!^DzP}\y (.)Od'ۦx(%Ok_~x֌3nO%}!i :ҬÊaȊ+M|ϛkα{\@uQpXzx(GoIc9(c }XTO1 ?3Wlϒoc|(VI-[ʧ4;^T]ʏqwFn";HiԓR{w֋g&Z;Q~3E=߈[=dUH@DR@oj\+-6zr&e(DP,>Ar (5d?/(I;نٟ?q)+_NSvqt.9@okKw)4ΛCh1O¦::EZ{Bz(ξj,$1A۞E6;pk_@֎'f0߅5ώJIPG?5ktDlD/נX_z>Nj3nX(㬙uҰߞ^`ࢫ&bάZި^9O)׸_(Xg P@.vLf Fׂb"$[=dbagVA6Tzހ5igWyP3+O㌔v٬PS *KB(pO=@1s˜+n˖j$`".6Jr*6Mr3jRtk,|DW 埏xsR1<&1BR-P&78Cm͹bu,c֎\BXQd{Ʒ#T!=r~X#jȱ6-y UƳ"TX>ׂrBoNqv(gٟ?MԼԲtO)vIi)^_.z(~R'z( 5,D*Lf@-Z0`@Q,~R{BH_%T$o`}lM@|LZ^u@#g Lքj ao-EpN?JkұW] ;{sY83U7 3M֔/@ľĐ)[5OpYٺE_~ԠM[~>@79t h;|8^SAAoxTlJN /]C딊L*Oky{!3` !Udgjpv۰3[]\ڊN=hS|{] >9sƈ*ก/7< '7wla Xs.`lpY=ω|AcGmu= KK6ڶSx5) 0pׅ%Kz!k9p{utT*MYa8Q7چd"]<y8>*(=77j@ 7;{TH"AYm_249diTϝ:VJ5f4+9sJ&:!1v?vٔ]"%k_hh(wKXZ@.NSCsжeMtMZGԱMU;Sr( h~%>Z -<3Xi-CǣuEDkNUg~ H#cxuCX>xxǫD5!$Cn~hwg"3v!gwh-_7bMK'w=r}=q0p\VN4!US_x[@+nKD|c\NwPDbIT0c!Z?oKa.zXg OK倃7/ˏ#ٯN ,\̙=A ܲMDh!)fTD|G iqE \T u@yzn)aaC/}O.Pr.Cn5@ZށRHh퉠Q*}6Ê[h <9V0oWoJs+^;!*rq}dP`+{ge8 *E{H7iD̺?/@hCx!}wȪ]s7swWF >˦t͓$"M!rnY~\J7=+J2PVj FU^~wzyaii^ О1ӧb&┻ ͵DCT+ =7BnఁU7=sBty䖖pI^'x!Fߋ7–):4;fj~T!\Um]!/!;]d>ELXGxW;A@p  r~|j$!zU$QufegmkX.(/4K5`/TPn#xcMV۱)\;C=3ylg)58z}ZT['vX09!6Ő*7#wPd/;Ybf0J!EB2@IEՑ8.(Nh|&Y;ktW<91XVMQl`W݋L~6qǨ~w`W!:뼹< t?t_ o xٚiOÓUb,#@9_׷^"|ULMa}_|MӃq怘=6(Nh|?k6/@xk+0{DCX%N6T>dhQgSxc>#Hש* kU'WU-ʾ6`O t|IJ ݻAeKJ I e~{L4UmY&=!="xJ5t(vd-3]>:<11+xv{NÑ}.lǕ8~:@7e@XE ^H[) O11*3؃&ʄA^{ szҪ}8|@{XrVωA|ǾCģb6> <xHy5h=p@@ٞ ` (>6Iv3vT={ Fb|b?=b!(6*I-v͙Sn@iUu^s{ +Ut7X }W6slp822 U*C.VѐW@PsF^O4Ѭ `m lrOo+L*I߿(?! /;wA5GKy7xV !.r/9_ʼ k6fN] .T{;4xʭ%DokMH}')&n&@VU +Wٺݭ*ltXBAx PR f2FaD-0@ԙgq @'9JGdU]@'DfO~.7MQuNo{RcU{>pE>|ͥA0xxÊ[(NcPʧy"K|yֿp=f5 äu[8hǷ&f~U ʊ^,7:_T)p1w7 O -2_u`_V{Sx<飝.v[kv$Js'M6_x-*Zӽ_rǶLKC̡?ybs* /_Vm¸*Abϝ:D5tmo7U>g'܊=9}y1}y2Z$ۻ~r5)c7;]/uCp c87Q>-JŘmτu*',_xz3,?2n3 ӱTV!#DUXiCQ?JO̟{S<}?墇ШZ(Z0a3U*ei"۲:檊)?V=*pMqx4=|LV+ o57-~sM5P4rZcrF_Ndz]J`Vrä?pںW>6Ag- NlwiNmd ' h3lWjR\ʏ!d G% 8_DY>7H!znЩdZ:f Csi3p2coXTSSC 6]."~NQ~Ҋ.U?W+zZ;ad>4>|O|>'>ķ?q :IENDB`pybik-3.0/data/ui/thumbnails/Prism3Complex-6x3.png0000644000175000017500000002605013137372663022203 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs++IDATx]gxTU}?m' Q CA RTC EIhTA%X`=w`B“߷Lfܙ9kϹ3ǐ[WA0` AC b0 ! 1`AC b0 ! 1`AC b0 ! 1`AC b[DRF{f̟w4 * :twQKa{׷(*Nq^PXõz-Aˣ\YFrj.IM[ȲmZ}O1FN4DA%D 2FhF\\03`6j]@ɛinyre6$kux5%Le+:|,gL5n:NDk9lzT+Qsr6۾YE7hd)TDajWd.]Td" f}k~f`(𞲖р7Ld}XN$HTrY{~Oۖ;_ϯ]k;Äe66l Xs\8?kbFzv>mՄq3aK O]$\3ɮpy2d <@ &n ,Y-|+eKoςF(p&HdoXCȟ磻7x{_*MTlU?]U}|whB~^:EEEx/CrM2pELUYsCXzIHgm&`L5Isy2hqj-<0^9c`  |po &yp qEFg Z_cDK7E_(c2l[^_M> _F!_v&6}ɋYP_kUJP_%[Du"OL$'Vx'DSp sBCC:!dd$EGGSLLתRFɁNMmfjaԛ ՁͅU0vNB6@XVըQC:cϏ|||?jcZLd| MXuU=ԇH&Jγ~B[>~?~St5y[m#vH,Pxbի%%%Kʦ6^MFTџ_ŃLHYA /Q尝m΃R${b3`YV2p'nid$g~V!YW9PJJ8'eBE@"R'̧ɘڬkfAԄ[6p,W~ν? )++K Nlfig9lSxN%3PǗSyS3 aD|9{zdv"~kƯJ~)uԉ}YjҤ,ݗ50)<A-`z3˦BN!N=({3͚=A ђːc@Oo~#k@5S+EVjrhƌ EwgΘ1CFђ%K(33RRR$~YUaQ(x&vmv ,pءcBžLMWO<81*bH뮲Q+wZ'6\Yu<7PkSF"ܭB @%6?о}ߟ*@"`Y,1sdvEn$*y^#e2~;נ>3S W}5k&1^șC4qD=M? D 'MRÆ E>}~$;Ʋjp?䐙6 ]0I*ǀLj`vd+'c%@#N}Oz cjGƵ @ʙ3g(11QֿB6M={-[ f͚%QoYQʀ`VCb&.,0W 0,PL$QMCtFSzD(%EEJD&ՠ19(DB7֪UK Vϯ΄o?0(fpI9^oâk. $ }#ϟo%_6 gM_X! pO$ x_|>nݺQ6m$ ҋ|e** a.~n*v| %syk*;Jb^8g$ Q2&N7Yf3ϘE|N!-A [&eJN5)ƩAMP2~P9~.>M]1 ppC=$_B>zAk֬~ % 4q*GN CSI"KSyexBp[KʾazIE_CB_5|aNC7qx ;$_o%*`ñ/N3gΤ't/[ |]0)2b؈>|YݿIZi>;xXVQݏ^}: >L(Z]Sy[w!ɞ￟N*aAm۶GJ|?j(q a"tQVj.mjf}+ZI򎴕]$Pe~fP|Lui8qdzѡuZ(!>2!A^7'LÏ9ܯ[U)H @hٽ{ # E*' xC%ig<4#UcI+4=uJ_N`?=3-C۝QTOpuPdfM$x Ywͭ44i2@SO=%A=EH#IGY?F՝0A)AWԛ*uf;ԛg ƱLe_WBGi!pwt%`a"z(V~ ُ&ZSl3:s#闃ZN:ʎ!}tSZ.0 /ZJ;r]M. n*Y4,ckGc&3U,P|D1ȟڇSX- 4]l@u|6B6~Zv`vb|}J -&J5c Jt|Gٻ Jԯa8H1|i _&͋skę%|{Z0cp@ 34ڕWtIJ1p@I)DH ͊"~WH HZĒm}+SU%\v8u2.|FPO]Y:YD|)JjqHMkגg.s$9պ6@wpרpU$3թn4/ҽ Q˝є̯}^U]j֮oБ#GR~d "~n}czt&!#;ec|TUǏ2 GMa{)>,:@tcO\CdBN#!b>(,[l; d~(ڵTkEcd/?aN0Z`r] {kT0T>?CE4l{&ȂJypͪ'6=_{ { vDUO9P2Pϓ;YP;io$$<%駷ҲChFܬfNFwժUbB3 *o۬@vВ9$Ć{橤ftv4/[X%>)cٽbC{#!f廤eQ'~C~4c-|at9$Zq p֭EbV#20b8V!#DA]F@r2UHϚcE+5|SC ңMlC|ż3QAZۗ\[p*]Anb4қ$ZqC&;O5T &m۶ sH$]V@"ԩSƍP~eeNix >YgZwl/WMdKOGDZc((WCϛ&y҇g_mnt.[BئMds='al*ee( !#8yd1`2/Œj"9UrLLHrR2Fc(Dg˒m~1Lu7*|Go<u5 _ST>$c9 !'x1Es7KeY ApܹSEa"(((6_Y 2 "C7UՖtUE!?!^POXq~`oypuּD,z}9}xʟ 9ߌh`ʫb.|ZoѢR!SYqiE jKv=d1Qs3f/w+Y4`!RX>I:oCPyBAIpJ<õU>0:("Ikװ~^ @!*WɣRm쟞`+bͣohQzH/BG'Pا%٪{]%)΃1ˆLb#LTE!Llr~?X>Ag>)HBAWeW_@vr"41"l*!K)OHW3y×ɪ^Tp.Z>V `MZj@g`7!N툦C3m8F_5'L>@in*hN+ D 99Y7j+bҗ/dʔ)SMLǣRUVm\/Ml)7#DoL .NV(ຫ_ m∀CT|};㠺69b{abc7r+̶'5 %cvb"˖-DE~T|'2¼m}l &xnދ!"dx=7ST+9Ll@>࿕cW?"ib\q9MnW[ʅ%˘A?mٲŭ`Q`4uM'oc֢G|fh1!x]v5mvI J*[n 9ތ!~p6u#q "r{hQ^Jc+65˓ վ5d?B pֶi_ FiRࣧxC#hDzpJd"HCJmWUQn&Q`QxX6*7_&Qp%HAdSmc V +۶GHP\vcac`' a8[&NI&;|%Ra^80|aXݶ7c*mk*08B5~8w bp~z ??_ZsssE ~L+>v3k;8CG 4JH"K:"Y٣-튖Q* Kk$W[NTa taS'NH@3pDB((,-\PDE3LHn+a7!3gTgU}MVQYFG{Me>D@:'DܐDOoy\_3D +Fb /ռ\ l#) d9Z>HM)ӍY;Zo`:G/>k\ 5l찂{kkj~ *8WX`Yqx;臞=zz!H9Bvùn!h~|%[V_f zZQo2ԟ$`<ɪ\oi9==j]?P su?",_T^+h"#ў.8)z<]#b~KŚ=@MRlB}|ܧ<}Gb)/o<Ɔ׭+ԁĢp51tPgt`Rk7 -5(~9Ki ;Zk"(!JޒbQ}iѬށp]F_z%s[!$lGTUFӣ-˥Cj`']|Dh=v_JԧpZd66uFҗ8u8Zu>DR =tT71P&՞zlRo!g3SjUO8l}Y5oTgCrJA ͛%@?Yr3DH!wy *ַ=aܩm _*Nz~aQAԾ9*+M]gdGXŠٳgWQTࣉs@_R&-vO_89R5jHԑr-FPB "籋dMm`g:Ry,8W*h۶0wp&zn*`у &Hrl8B7:ݱ k3MO5Zo>~pF!c-%_$s7+>NVeRpxJè ޣR`WfCF?Bυ/,5{ -lw#daZ7H@whfc` 76MQ]H@&B [ҠE",3C =KoM ѽ}霊 =iFp♡ٿaZ'vHLϮWJ@"DH DQ  &IAN>b۵ro+N(%Q^Eke Yq&C4c1}~ڵKe<{Yvʙb͞UDMMb:UL3M^^hm?}߉#5ڦ H(;^;\{xZw15XՃ(:ꪜ[0{H_8Nak<5p\$/e^{yBŬ 7@պ;Ak(Nj~ªal:߶w0oF2Rxoך;_R0&TIr{SR-1х!~ x.#peQ'O D^ yN`X۰24u WqZ,1îd0 ׊@99Q۾<3$?u  {Ƃ}aqBT 5ojd}=j-BxYޭMIw]h 7;zO/:}\y9 ]mZ \e? !_ãO-2įR6u(eO$f#FЈ3{3o%ojxޓAt\J\ `Y}X5jxmD18ͯu}h yyŊE޿H$~npQl|Z7~ksRnD-O)ݛ@qVۏ7V!F r@]oDAyZ ! 1`AC b0DmkIENDB`pybik-3.0/data/ui/thumbnails/Brick-9x5x5.png0000644000175000017500000002403613137372611021005 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+'IDATx}iUnC}>T\@"2ON[ qE(BPġMڴo:N?I鬻}ԮS[@@Uթokwk}n}}>C///////////'zQWo!$=tCn?z>&8#΢#];t% v0y7m}: <]`Voe pXeD6"{cWo [`䟿_;?;`#->N3T^,4ҠI8߃a W\wi|]QYY'yS ރwB~LM`lۦ>Fna0,6r_fu~ W=9 }%0 ɑC%Kx?f#]`;~``xs8]`yT^ }; (Yؽ{c3|/z ?7k؃0 0q./ҽk}D82>!`q_kLͧ,}R-|8,9,gDR\h4glH$Bi={"s }_N7cCEy {^kjiڣ8)~#=oa (4P^ 5VlʐJ-Z*n`Ȼ'<` >s/}#-Ɵ!7}Twqu(Nod/cp\sCB:@|P͹2>8PRl-@Vb68."C&+t{=w·紐ȒXƚ*䑜'F\{"5ng0(R_i@kN% FAC"gNn8Eh^ed01l-S]{FJ&~dP߳>ߵ 9PQimP L4U!_Щ!0.8qG*24}.>(|v{f6MÄA9\ ‹ ~_׎d04rdK9P0Ԭ!&PZѻ] cr* &S-Ey~ t\*ls DhD8EE+{^>>Z6#.ЩWrج00FCl"D+D,&e#ׇ%oi:ma/N䙠MaHZW{$*Ϩ߿+B@Em(?EB8R# yuGyuBk3?sP`8`ף/ݯ@,-A鮪yϼ`/:?5 eu@*,$s\YIۡ%vtG$b0^bgK] #$rx9hx>BOkqPE{ eph/t_>pÏ /1x~u5-I/$QcSWE$&w2+nav?>]9ޟ LoFHJ ;= 2P_f{aAr=U@BOh9vTg 6`)KL%Mrx%.gL"&Bw"Jx='JqxSkw@Sj%&Edך|h"4O:7TMp  X5w 2xo=:H;|m‘LP~pn )EEb ث4y?߆0TG@T@#ec08[Rݛn= gP b᎞^+L*ZY$"<ܠDy\ڗb3y!ug6܅(_0hr7rYp-6tH|{FM >Z"`8CV(~a:b}8" u.DtT8O[ed^V_AҖ|`eH9 AȆi^0 o 9LڝzL@]򲌙* Q _҄{QLЈ CA6 G98ѢН-^q"A5sI\ӗhgk62:JTzk8W#2Xíz/ +K/j:\҈)'Bɤo~UG1-hnin@&::Xe.V ri){x%ޙk$˛BcViB>~-2= 6(3L  7qd@*/"\ _ʑ X 03ڧ *^/?CR{ƭ\60; <Yevr%FaPJ 4|Vwߗ?{s!%6UsxWFwGr'J cٛTTwPtkPn&ș0%{tBfʊLaY:`9uG9=/ڈHQR6.NU{AA@m{ձeQjX_IsubGj$J8ϏTvWws}Z7?N1kc9}xkO@Sr!r)a 8L4:"6] ,Eի!4cebCx)bVS꣪lF3Y]ôGwh ]爀U Dp$lwZBZRT_?C hѦS^@bZZX`U)q)OR)?R$"_j"jlG߲ |hP;$JTdQMڛW1(*wcT\q9 ސ~bZo؛G`dwy[fEܶGuc058χh͆PNeo* Q :e#ivMk-A `0p6ڳ2ÿ5]n04Kr kVXP7ho={7X&! fT'ljVtkHcyA>fGPFN IB1uy"#3x "p`jh&غe>-4MlBZBpj@s<{9ޜк< y]Bg LpzUe_UqڴTeI}e_q4!hmgJ!H#*921L$щ0SE8Mh$-yT&؀(z7]D@7,iQYiPuԄR!o~յ̜`/Lei_w[uTy$ Iޖ?|PMiԈXu׽ 9W-<6К"yo.5$@C TzR[Eg@$+B/,Ê[bj&8oHR xGWHk7*ƃ7֭]xpO\c!ƤTʙuW%fN]ub*XF6΍`%+(6ģs(cBCH:,=(!BS4y "hys (?_ JՂSàu0TfpV{sx 1j3T*E8ǿW-^pY&!w$54gjU[ h2R6T"C+UE'X`9}U MF#RD9/ gPONE:[A>#jwB9qDx0՞<;NP#aT8 Q#Z%߳GJ)ƇSF#;1\s|5AL\]C(?\S[tBpVxM~2 ]ݜo֌3)VjXFGwgzA^a⇼?u| 7NPHaӭjePBp+rH֧)6xxx\E4"MD.S)stA292QG]2dݷ*|ZKu\l^joJ#EKЗҼIaQc7nRPvًͤKuF/MUpIH4| hyH*H !c%Q {@J(б$pԊ _J!JyġGhYˬ͟Q^]fҟ^i/NP3}XB,0}|ã-n/_LȊpXOb\C!aBQr&L B#Ej 4abB@B9L-U@ >A\0!pY4'4gyBޠXTnTyZ!z_YK_$w?=v+A|y+C]B3( ՜ C!ndLr5ܢS]@IC ]~w~zB"ʿPQK/w]áH>cEL)$3^A1Ք+*gue7oTEM6}z%9͛R6hp ];4 tp_n Jm?spؿV!K7,6 f!yejP$\ow*f0e ы}Շ$*ʒR^XVI6iE!1>Ⱥ Do{>m-_q&^?4xL=f*⥦2!k:Ž<5EXlzԖ|n3Y$e1?9PHqq`t$ES }_ƣ|  'G?>K۴pJVQ^h&?9L~Bܘ~P`v1$C(XV!!Yʡ#"el3 9K tNq BVYjtIJ=0~' qcUpmW'hP9E9jBiƠ/1@1ەnA:#C=A{ێ;r mH3`%$p:Nť[ /Xt]=zvQ:HLp+ՐHSTL;@/!6,} xUGմjV`ѻ{K\;7J._zxݹhrpJՓI"l!QV)4wHwi#%Z)*? @RQAIM#/D3= "A*kFE][RU4Swfd~T Jۧݫ'¨Xys_~{9Xt`M@)Jaq'5P!3fda:O+y  P1B˖N'K/vf '<_py7kBX?|.Ц_T&g cϔ҉xJ|L|ӆ[oZtEݙJGQg/bBpiH=w*|RXpBpDlEVDU,,iBCHlg$@ţ֔&Q6}q[S>/ m3<F \úfdod7#_WsXŲ sNQԒ,UR'J|Z}v\ \Uџ9#%?DD|Ƞ#lS><4DTRX%ͭ~ZT6|4r%ƫ.Y`w+⬎"*a&N+8^O'ܱ.!r} Gxd.`9ZIuɡM+[ SZ7['@ D(ojDwh ڨ!ӡ'YzQTREJ @)IP VM1z2 bl[p:x1'{o?ƥx /**B8Ѐ|!"0KX:F{YR[֩C&񚨈LE>Q"a}e4\;; 0x0C r*H8;Og  ЅͭHeU 7lIH<}>n^B&&;5a$/N1s`g UZ+ u%מ(-):Y[wZ} {(ådKPi ƃ@0XCC'&Rg?&}>suI31,X谣T|WN~rcf\iFG12tGyvuk cJc<#m*ccKnz -,Bh_˥$ IBKXvF-YobyTxk/ϤlP|yE>;-lȍ 6NڃT A"1RxCDtEFU1ug yq<:Wvnܬndx3Zrj2.ވ\d{h%|.b`k?"gap i&9]aJW7FC.Z:s!4!H/>߿Gk9Gn(&\M {% QNiw`J$<ԩ >Gێ4jnwp&}f0rT(ġhCBT1;}^DL ߈ N@acɅ*1ۇC2$|aO}voIoQ(> >-n{Dpofe:Kc7RlV!|pa퐌1/lvU >NF)і1WLs=>_>_>_>_>_>_!|||aIENDB`pybik-3.0/data/ui/thumbnails/Prism3Complex-6x2.png0000644000175000017500000002224613137372663022205 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+$XIDATx]gxT־??E2=L:)mAz ҤEPJH/A$HQA/7Vdi\ARydr=gz*^{?&ΙM*h@ hD&4M4h@ hD&4M4h@ hD&4M4h@ hD&4M4h@ "j(%W+hJW}#T6+ZU,5!~6ə_#*gBӆ-;txWƠԯ JSS\mr,UX_~E' L$IժU)BWLz=t42?V}kxzY-uUh%ʮ {Hs#\`[IJzkXf-?j)ٶ'J0@+7x%gdd$yT0%nYi:V|^GkOxw F. c(ߏ׽URn~\\CZ3Xz'ˠ&#ccs!΁qs,_2}ӝ[n.,YB*Z֬v=>&:wff&[V|T4VS$~\Sm 7T֥oc0Dg-r{JIA0/zn-k.bjl3^w;WnERӗ>xJJJ҅AЃ;^,d3X),pA|\##oK+% @slz=E{e7ۙmLYDs3MFjs|X+H`IJ'Gڴ)J[0_.#0_WNg4PEYVeUFLC\MQQQFM6jGL&ŚA DmphOxVV?yDzkN翰x ? P`?˳DÊ@`:wI|սJH/BA;R`1kPkե+x;`+e%K*+ndXCU1҂@ =%x)߇0:xQ@@Տ^1թMT$5f2 턄P\\=1 44}LLzj kJ23H1ud0߃krktǽEM<+?VW֥ 7?A4x`l, l]as Fh]i"`|ORWvf_V:?۬tx0NVhze>+p+3(j>P:h@#E8߫QX(IA, V c 5NԂ-s 2lnQGbp)~ dl3ʟ1қ~A7_  wsW_ SxSe^„/$-4*#:Nߏ=͒\+g/F=CǛBCCIL ubK~k(X6Z S|&>lLJA6M Οk"=dn@we"[D :G.+%{SDn [^͛7iȑ{naUh=RЗ d#m,Fяaʬ~:#Cρ|nbۘ#݋gX$Ԁ/BECs~\/ c!.Z(T`W^yf͚E3f̠:O?$~W#}HYETԟ9Z$9jNMܫ%v>+se*?wtS&SbA_hlN׿sෛcRK%vKGg0a%$$˗飏>r{;l,Z h(qo% "5{pTȀ' oriq_It4:J׳CzjkٳJ%^q޼y#F`@v?# c>2)A:#Ifpge5 iDCv40"Fa3Jhku1 PwPNVZ7ۏ٨Ss/#)m?«R A0-ZD3f -YD 吏 9|v 5j g8U:@-I&ptJMp}S 'OOO2ͷ$h,H=s20^xM(y 1@Z|$Sӕlr/b9/ 9C;63ӏ¨h3iPWO@VO4&<ɓ"ټy37N%A `:wZQ7F8^pVAyopiUUwR@Lg"woCuDel;&|%V q(J-,l6Fu0TUn@&1XF`EHP8 ]1gXc "h/46g„fp吃&%иV:$ν1Z-@wn饗^E0#]Lj|Qvs7ЁN!f @"˔Qn#p2^2V 2,L6H֫ob_|u:``?d*``.H yXF59;Ju$0ۋ&R]OcV_& *~i]6ݛ_oVbn˂fUcF0ҍ!,*Hm$=iJ 8N9Pss p+ֱ}*096dT{ʇ x_DP_{ |1>[jkAO^vM(G)FӧŹ^z?kp13} |}*r14QHd.LDː:%סz&b4>MZ˃%\0I5)l޶ %'''^x~gqѣԱcG:uoK& p G}5VGҺ% )} y= Q`e X@X,>%| $|vhfIYH Vu8l,@pڱcڅ{?7߈H׶3,!5DV`~p*w>ͿUG<TI"F/ vϚ\ʇOmdX=utB 8^~wyM&RSN@_I&СC8m氰VG+w\1V il#j. oFiߝG<]\=Dz:Fn$З>3r?Kҥ ꫂ$;wp :U|2hPzZE\}}sBd_M*O)Yd@BSIe}|zޅ'}9"m8:54QBma)++K\`;V @Q I98ORsmAفF00^@O{, 0((#6HyJ3+8Qh5dknlQa)t3Q(}d_+:؛~ί(Ԧ./xэ6Z5ǟ)$oΥ sD ڛyxahB٫VpAz5J( MܻCȏכQPH?__v˧Q_5 ,\!q Gb#w eAf|k{O` ]m2ŻWr Qy}z? Jߵ"#{xݿ'-Kb jo Ad?8^AV-{@'~0qDA\]|$V{G#LFac4thY1P_33S^wXqԪfMj/#f2@e|H|-2k=`͂|})EA]"z:&r^VML4b5.8v uWE7nصk 8:$Fk{VXv1>ʪ#ךG! }Ir:sωk `RX)oQ' G$ٽc%qRyOIH:lؿ2=59w@Vd@woWn>"/:}quJALѣAǩ^zDA G0{q(.*4*Dѱ,i]T~R1.D̝J\ggA\3Rl/MHOة~bUOq.ߺ2a㑬H7ck׮] WФIA!!>&OT,sLJug+p +HhNpOhb>[ՂdґSɬ6;܈翮(MFoK -df9#[ܵWt""N$"Ge1Crv}!``ufo~|r ɝ{-H@D "ע0 GG6CUS翸+XwQYEq<=? 5K-b fϙp۶mPs֭+b`2oYՏ+y^PDIʤ0uJ?%7Tq)@`_ȟW|龂_ )J;zhP,{ "D ?ckj=Kz-[nX`b1ZEJ|| q DCC]sTaԲ72Sڳ bJ}X n'0oB5MWàx"1&!`rUE8PW+Q_rfBs%WN{Vrc#Ŵ5XUCDk>CQeQ&Zno6_7DGV`…c¨m۶tmOD\+ j+8PP,r/(K^9>›r;ew>Nj>(}E 5i'ޞ\yyʣRe+W|4dڰa_bRBD8-[L./lGYC=fXB,GK>jK/wYP8Li/{ p-Lo'CKC*?^cǎzT1m)dD83 6$؈bQNCucbe+P|_A54sl5ӺUSV8 wi ,\5S?F=,_+[RP2_}` #Gĉb b\~~Eht2=-?6ы~>&պu vV*N O)ArBEߞM7.W5l5jHO?TbI>DJJ8P+o Bӊڗ{{KtpR򭽫hٛ~t猲;}͖B,bl\|e *8ϟ/:\RqbqTo wRԌG0u,cL Jj !ZgTⲙtHSa^20*6?ϰ29K6v'O9tUŠ~1̙3] I!EпnaSd.Fu3zJJ֣^e] د~4ޥp)DyUO#z=oNH=vU,{ ZÂ'f#41FP@~`ٙX$jSozz(*\@tyBD-!b@:kK3x><Ƀ}>m"%,c97Vn KN`Ȯ\RrvGbyѾ}{SK5=ţX3݈%dp OtnI̦?٠6g+ k̛dͨ|XxvnG0E:!rEEɭ+mt +ah Tnݺ޽{IWxzl:@Ÿ)HthPRv.ǶCFі@ 3PL Dk9W.󉵃8aN%dϨVpXf Q~%:Qak'W7@_R= o pGvkwd_~3͛)\~ݘU7Ex7aQ Y=Q ݥ+zSJf=1QYZU;GB3ڔЯeGoaaM2E1ClUwž0gZ2V@R/ sGW_gQfqcibODJWn+Q[;ڸt!pj, 9QץELl_( g O-K/s?E S1]bQ%D* ,.P|bOy ܫƪ—E!\=#M4/XΞ,HIӸ uNpw:ۋB꾃xKq`ٳgEM؈ʠdK.L]#MJdNҘ+:N1~`T?ۆE)Lp$R+XBjzn:e8P7\AGvXCti|HJ  X>Oٕ6q سCPgY%2[wLG%81AԺukqE-T)dHFcїʇ4iI ~!܈z^ <&v+N&Ĩ]P lgA,򦂿$-B ŋq`!#ؿ8LwfѯM(vd!OОM*7@ lHTn% u)=v 7zu4mR޽@q"DJj~d* OWF-(cq%xI:(BB/`RޝXavn*\@`A bP+a8=Bub-f)AF)X @ !˧!Uvy AwS Yq=R5ml-/wY nJ B1Y/HZP^ߵHY Dz`l~A_rS j7vX5||^։Hv9+J_n[gvi;+ {S U.j4adLLUt@ hD&4M4h@ 4M*?w^EִIENDB`pybik-3.0/data/ui/thumbnails/Octahedron-5.png0000644000175000017500000004101113137372645021302 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+AIDATx}w|T*LzRJBSTEPPD"R^}Q,`Ek׻}3 ~y}e2sY^YZ{sww^V^VVVVVVVVV\B;u[ΘR[o;VuJZ^qECs-QQQbrq(o/'-ɱdm\e'eKj>?~RiTi䈺6mi2kZEgd2 *3}j-tbv;3cRaq._KRI#,0zCl 'zo" 0,&Sx8OQTyx~ygu4'rzva~" 5j֛@4 <mrEY-J^gQkM$=Fl6l7̼: }.YnPB6 Egy!o1"l>4 .PML0l61rPc@ϥ!q8Ϝ#O?¹4`FN:x0|)JAV! mw`j;V5t64; X_ 31 ^G?x]+ivq"@)bcc111 \18?ai w#!w.6f-P1λ FgUpHiYߟ-ߡ9y ^OvVb9~Ư>~LO_AFeEƼ~3 <.X TH^^1Xe< 2(씚DO pUt!sGrx`gߡHb&f=>?G7a8zX< +V;7_>-ޞ(K }]?H`\AEՄXi(j h@8(wagEEn ,yݢ,3CtzBByp^yCc9D|) _1*ޗi$67Af D44A8n$ؾ/Y⩕ig[[u7#]X"}zżEJeE٧p3~x>lV1rg-e#:ȹ0^rzgmҐEqpx黖i۶HMMԮ];#)$;۰ƁP6FvTڴYH+ 0*#$&>{-E<][bu[\3mbZ ކ3ė;B d㌄9fD:ެ q$%g@gYE|Wi|(ȃ,ny jK$l8+THzp! ԲNzЍ㷴&?(4[f< c/׏Ck0\ 4Xr!zs Q@XAJQzy~f)B'rM!-أyN8t0}NSt#2ܾ}{QPP`ILL|DĶnt k`N&Y)fo}_fkյ-X"_"c6?vSIntCb:1t/p 5\8p0>}5'4ƙ/} <".`!(j$p:_)FyF hJ!Z&fݽ)+K1cLCݢR6.n)W͡0l᧘x=`6J:I0PK%Gɀ D:=f^ġ !h9?Wax1<\e)lj_9j$&m#s q|P [, 7w\z.["zO #fqIgp᱆b$Jؖfj[cF@mW ?x(5,"zhc W^Uëvв+Y}B|) )`YägkxDQ>~\=,r,Rd{(漽 Esi߫b0NM:V`A4vͫGTY. RCy%ثsAc4r݉^vNv;%>-fp2ٜ1鴛ĉm +|**Dd&ئj4>dfBI,Օ?ŮszO5*JS焻lnZ:0 j@0QX|7Y|M) wnP._O&3EaAPigL  |E >xo1\{):r =P]@|u.ٟ3aY d؎($`=@ yM Ccȹ(rvu0%p!5D*ow6\Hȹ'㾱dEz__^H^z&  wmjk))g@{RRBY!vQP?ߙRxc WIFB9{!5OI*Wx0QxxWQš{#CK'ChQee1y]sLB|=ǯZ NmE v?x##v A3)5M3(3h  OjV0){ڐͤ ? 1ݝxGIMd ! /R3xz܎>$2d| LSe`KdqĚ>vi^Ȣp@| bD'~-J=/@ݾ[Z s~jNNbG$oD׫kfTշM`s[Y ?!Ը}.2  M _~d*bc5Rb1Ï9~_!ƫYܖw%]8F*s.J>qt+jZ #VWY_:}_-WCD&;REWC FOC g̤*xZ-Rն5[h5H@5"RAmP j K mr~<&0RUI:j7qO0)I$%HE]U`ug; d~r14P@ wWm䯅y4%O !&!dM9aȁ0f;t,dgM! B^G@c*agΌqiel03V$#5+zzBʿyC^f? >BHڍ &Guڌ¹;įWāi,Bf~-±`Qۿ?A:dQ( >WdyCu B̃KB|yy"Gq&K,r*OyR4JO@KF.p'i4D_Ҩf-*kÀf;< ]f 0~8у[BLC{heXp. jRઑ$@q`04e6z`r>)BռׅͫV%YGRrh?%A$Yɴ (N @ N++;TKaAOm0聕KϣoPC}e 973"{F>pch9@.(zfgoP sp 3J?sS>G\w{)*;G!}&SdEEGG E?sTVյ߸xcke߶I_%Cz-h>]:?*b@:! -NE T= scƫ ,w\Ji`Ӽb/:ߠɹ0" b~!֍q܁w,aK,s@dW6ŋ%+~%j[ O~eol],W\w-{ `;`3O '\Aܶc~qaH^zc+E`;k &='?df)?õ|Fpv[l\:ma t+Oisx q@ڛ}2[Tq38ÎGzWЙWxݷk G9S&{?20?ݮZ6NF:D%/3^~I\.+9)Ua 62P6E*ѣ|(t !+p-xv٫hqJmMQAj< >rহ^|">(`w0= ,xP-,RL[. 5kl\a~&adevrϐ3{=ȨjzLya'N'0ݖ?4 Ќ24 ku9! 54ngp`)m (eҭ(| 03Pdr9LbfdD@87Ky90߳R%H6 AdXd*WjVVap^DFG3llŒ:DUjzߨ S88!b2EY3}{ސsmdњb?[.k !< } ;,xpF09C)`8`}6A&*v"`gR lv_:]9Tݨ {m:s-;U~+`0t^0?Ho(q YBvzϫ0t}p^{Z` c Ǚ &ߩ5 'dcO ?$h6vZe|c7p vY$1<ü7d: baCGRFM= pp.mc{6C\|A׿` Ik㘤yuG w]"+q;~ `>\ص.NpĄ>rżu@ŬWiUGDұDLr"XWk֎t$1WZP,,jɹJ< i_եoeҸhU$Kq&W"yii]>@~뵈x>"Fo 1+ [Y0,X~xȮ٠4KgfIza2>'70bX51 Ŕ=]%f=D.47ۚ(,pfM5VV-_>8ۂxZz[E|l߳@χ?e38S~S,.rXQ)46V<@ 㘼JbRY4 !  Fb``mփ/4;pQ!6zsM ϴci y4՟۳.^جڣMtc S!G"^A| ppfe9iqHJ>{gAmGJ?+o@704F6⢐q,ZŌ(')庁XgY߁ҲglrV`T4T61Ѡ!l#:ķՌvtgRy lʠI~8%dM9;Z^ C\9ɩtxv_@NןK`p 0؏߻/?-aK,-ᙝ;0 'bթ![Wv<(r1qA0㐋g (s NE3y˻J@zdhr.zniv21.Gt/ё׾ctdkp2 ?gNaC*إ*|i|:ul @[=-(@ g>/ʹhnK|۱cؐݧLqs P{Ϙ} )#\1\2>uN-JZWmы8Zwx35ڮ bMQz͠mM 38E$Roe6 <2ޫѵ\ofB(:( @  +gNG'5e%M`T^ ~' @77W: FSE'oaZjg }ִ=3x  UܧIѝ \ `@p WV!|t5S7>A: $VjIws2  UvmXXB IӚN< _G9Ӕbwuza7^y",sO!蚩n.i tRzS6 ^f`1Z=Lxkwڻ-Zȏo٬;}'ԅJ !JA]߭WMv57%w0<@ 6@KbL.` `'puS\;"<.?}?VDH>#6eM%xQ]Qa<=( ~TiKXM(ś9c4ɑnTb õfV)O ~'YGQ:tlJ qNg g8;cy O5P AB3aBygS_epZsl;~wz3uwXڶhA N @wם:ΙHOXZ*AbUs?˹W:/,ɏ쇏2@("o/>m3cu0Aw'"@:W ޏ"S1{׶$ b͞%˻ļ1x׳B @֠zUz* ) B@-|*hh#?܈!C=!ݖt3صj {x}. 4VX`H{ӟIρL^J>* h;ce9q`2+zɯ_D<@゗ad\{@.ua"PssL3^vB W<83 L!s6^Ƴ18 0ɵ5 &jlOK4Ùk<8AD'P>!~*!=E@mNfE*$+]![~1=/Ee8*AU:2/omϱMRp{TW8ʳ.HP~!P})ET@O %Yε\ 6Z|>sjy,ѕ?% LϜHQF>o=2LiGv$E }d &qz~F)=B@o(3d;?.WRh=zruײKNG~5߾$>+U|(5/hDbR푳W[H6_6&ǬƢ4! 4WOqC˸n(OdpJPxWm^}N$^Б Iݒ?j Vv e׮6s2Mm)߯>]*ShB{v>j"}vGO h u5Y.~=f~VMl$N^0X8Q-!*`jBcɐ6bXe;Ai{+-b;cL4Ǿ'ĹGh _Hsf!Xx蚇7hVx<@Q`>ؚltn׮iݺ[uY̱ 7 xq({`ciܣΫc"$n|ZZ`oKW>@kh,h DB1XT*~ހ75B@p Fr~UL  %ha%D=2#ׯnah`f Tv0H͕^J8Ȱ=;X@"]I%^4y*Fhe]>\/ {꫊T@7ti- 4\yj;1[)/]B ;)}Mz Xf^rsIRlwnK-dM֌Eep>WN#x ^^b34Ⱦ CRbp6%"(黯Eڶ>\K r}3~YFʚIK!`_b`120:f6%WfQ`);1Aa\\\,No rE.g=JmfD;$3ȪƸ"c:]1Ui"=WOqүpxļ%qn`='3!^mM| vRxǒLpo R7TQJ(b6WQ ЇI.`, ).M|, |2 x3= pVv(i^iip;*w,p˒Ph-fծ`j A0kR(XhP+4/bdju9vQdP*/pu>&G'pe0 !}t8E\J/ _),X 9xUsgu[%[ɶ7&EƋ^A`2zI]rr¡m1b}̜7 ('t(_j?.?Ȏ[d`·}z*~ Ed9g  c*z?&nly3,V 5wyebǞMo8U,P =_kQ("ȭdw8A702bXű\W=?:7ͱ|l/Z8ÇA V0 !_,. Uoɸ9_?(ɷ[)4}2S=qD`oijK/͏1q.N$+ܢ{ )Y/Ci~Bj?&EwbcAx%#@RbL?;k|⚩T >cPgvpծ=#l7'Ӹj@^(ݼLÎ!b(# Ypω:}A(<{&_ bv /*08@a50\^. nGŰe,0j vky-}fI8+M=$M7d0RȰg ,Ǧ3b߆x>d] )*4 [>q"$N &'6ERIp&bad}Plqq_?߽.:H.F #A2ƱXmI0'ĝmvzćSƇ*[9X6[Ɛ>@@cO!%.W- B$m9453a\7$<h #WD4q[#F}z0k1[((тcw3"6lN,w^k~)j[⻃pQ'B#ה4]=#Tzħ\4&!a/`-EZLPPށH!(Ə~dy2ǘXc22Lf7?AfQXbH(NgQƙ7Z׏P fh(UU Ab,OcwQ}TKEOAwhv9E#5.>>eUu@M3s\8H!6)~Í 4=ˢٿE4>^v9O{i4+5 <\hHC"[b[@`⻨L. ?s dO,z7t)ccp5lw77`\2.2pSD#J吐Ko9O^5ˆ) #+PTN "aŹ'HC :6ݫ:-N[HF@td[ėj_m\c6 @)Ηi :μ*Zyc6>!z.?[,V#γԫ ؏FOOisd~x  ƅ_\w51U(f, kNV7O( Mɠ?}`('Ӭ__dq3)v52 ~q$맻`~xH@!O:xhkE@ 2j~hySqoj|MllhNa#&xnjfd$#F fͅ[<48v~HagImByz%a~lYIGXBtJ}PG8}X`H'g3/xwOϐBK|zUZgɹMڥ WQO-+ 1"%&Q-_tJha/ Dh` Ԁcl"ADH0{$GoX}ᅬrз,>Y~/˄2XH͟LVoWM4"GW4>z ݙ[ߢfN"~ QH`=P0bn|,WyشmYŮ-|k'@ v)i%%2xmV)4{6ѻ 1 &]eU.y14ml,y*ޕ]hck맻OiCuP G: #x[ZHAÍniO{+$7iV\t3,c69>B zk=h`|MrEpǛe/$q XN *K|vzum !=h op9X TL0&;+;;LNn^n1??@Kz *v:Y+`0^K71@Pz@: m{勤Nq8Z FH~,+1[)0o#i/uDe4tQ}WM+9<\ "{5L&mwRbp9^A/ڀujx~'P7@N/gbWIJ8Y16'H9v@Q7P¯094=?EZM>|9L=ckԃogIƸ?Nt͘zB5KfZZ@X=@,itj",=͢:3p'7^lx/ @UWYmR+f. pX/uKã%IK/eNQLLމm7aXj0%ҿ%K/bR 1 74}x|r,XQny?]ZANw gG`љr/;wBd`e|c.d{%fj=HO@bN%R"S1 &e=MzϹss& 9A$M9EVTК{@(BP*/2CZ9!vx0G99p-R·N6t1ag0q Iomcn:|ݝ3۞-۵TצR<'0#\LY)͉Q|&Y0l\c !^eI:p.w%-"%)FzPpRr1n íZ'kn +ķ=4x|^T' nNz!( ^L)g 9F8J!)uX5~AC-mcYod.D?j)/=9Nci|H0PN ZwºFniQ_A_& ;zݮIy C},mPsxSfph#8]N])rz >(# x%4ZbADN";Mi(O?kWAjRԏ@ͣ￐;665bTn׈_#eafC'"׋Q,@[ boˣJqaᑛ<@t`q'H+ E^0u{ԋo@Gh-[0n& RE#pki@\˘*]= gܙ&oK-x<.&X6lj6ޯ& V ;@u1 X(/r*2C8ܰsx:FHma_Md'b/ kqԼ~V}rn?Z=5|&'{$ Op2ިh ~ODYZ~@R7N )dJ?L#U 2 *_@DOaƮ=]HΎJ8K !7baifp3twBu-:2<Ən`|?XT' c8ԨW֭[  d1 a pHYs++IDATx}iUlʌ̈3k (6MEd_B6eqQ[QFPKP6Knզs{z鱵UYE?RPƏ@eF܌ss#;'opw<x77<x7<x7<x7<x7<x7<x7<x7<x7<x7<AD=OSiMl>|kAo,;hD#c?݉`΅7 Z`:cJ|4ߍ^b`y5.s}|ro^.콒a7ؘX ? 3(F-b0 _ߛ"^g/0_ɯ?kL3|Ozdu=õO.a`/0 P=C_3@3;2|{">uTVǫq5;77Iwmcrj{9 lRF}@a2F0X%<9tKxpf3򊊎7~wDvw{lox6@{n0H:~m;q6|/d0T19q!6htz4rCY |v=&1st1eЬHd@缙X!|`0iלyFPx1 Jg2f~_Sja9_4L0Hy"!T7qƽ.qHGo:q{SSCW``wJV<Ʃ曏_`/f#ֳ1 b=9ul wr,+U=slcwGw@ps)36bQaqN5O}t|Jp w`DnCk?7vͷ]4sfx 1x,f HlgqՇ}kذ710OgzA?ޕ2G ( !yyvf|/:eoFqC#2͏TPb~5y:6ƛ%ZJyEW1R|1A{i ې^rV,D(M x;Eh|I'4ut\m}24b̲G 1bw6ɫi8,xzJqG>€(e0L4Z mqds>P+Fq׿L9lp"0PXLI%<H9#;><$X )蜔ga0lc tdy!fw⛟dh K 8o,kO&9-.vn|>~eQaKГW!Gȃco.]85=F4ڱ 4|ǃ 99"}gަ>ѨdEG 6?N@Q@q76(j]7 ͲW3}@pa'ɀb6A +(?)ؠer])DH] `k{-q`Z>6uDT40WiX_4؟p zc#dj* Rb:"=@ɝMހjf^>ut"?D>w+9]'2fX fX `]6+BϏ7rN@I[An\7V(%j4]OfBؕu0K!i0W}ZIjڣԻ{ػ jjH-r@<>] ? b IN U #<YV(s19^6QGFYʮ^*j.&LY g ( az3+h56I@2=5G T7#!?5LH_ʩo4ǤTЬS|v($3]ìSOB|{Z?RRP0&Zc| $+\chH D|á? Z Lu6h.ϓJ&W\Hlm9.Ao^ȿ<{Ʒ3dpW- V$}`8ֲ1=#4zbf:?%)w@/eS/ by~Gt-;?` W _?&|ڕ =S~SbE m@vOH)3oDU="A5ꡍfMzh+;4$&cm1ڕ79oʘjÞ!ZŹt?C T  XcLa _RDϭϥi lTԯvjp(ґ E-6<3@$DTfJFL6V\6>Ҭƴ!P6>*6-Mg#u};ɤZ?_$$A@@d9L.U* Z1;BL Q/i ^SЦnF3?X`Շ* 4,V_>7b*K3Ak2p)'b?*y2}g<[̍ ᰃTpN3 C}{t늸STZhӂz5crP;/n+%412/|*PE$(?k2x9/#D dhQDt<@yM tw L( Sس:wv &-wc OP*'3N& PӜ++4]Eza7zw7hK pxUǬt=9f9vWbmTJ#*ol٢G66j Yhj;j1a$Chp(OFj`6C"? Y *M(vK41^': dznʣ>=tۊX<ͯA cS)uD1?) Vux$Z*'fۄ@ܐAf \K mHV<̍ ) `Uz|z-ACu 'ZGQ qmMIK:L0 Wwb!aϋ!۾'@KgFd5 NW4ZU8_ʎMJ (&יBl %IHmst|QVpMqugπuX0v-[OU 6*H&:.U RxD[xGڬr^FCC*  xQai ,%d Dpp%D ~lw 2>&XBW1ʢm qI/) Tk}]4(ݐMTU]5P] L 1/J)/9X^fk 2RDw!T!"yѩ%>|"-?.m'C5I%t)-dFѡ 8G ~^F8/~ iW^_q Ї,%0{݅]+֬&$)1FF'g#_Fy˖bW]‘I]MØ8)M$+hHJ:UgMA>*e0ydOsy@=sMB9boYβ|BzCw\ļ`|ޟ]ۼyUTPĠ2#<r_BǨ+܎ T+9o$* e-P.6UJ#:{ H#I+CX 4HG =4~~T!PiBpΙ71l! }H gqOg#'bC'F~9!af dq+**),R]@@D ]MV5܄G'K翟gـ7Jc߽/]k,ݏ*vwETWDhA~q3و* 3T*|VFi Cb2>;J@A9?!}9]*J#l۠HW'sBbB uQ6Di{`HSm@VKH!qS@+ wbLT(9GdDlu3IQCU3fSs+9ɥ<_//OeXNU TYlNQdF_ "4wRoXZܥvC 4$V" fk#vVJfEZj>#x+t-ZSYhe'RFzڛ nb; )bygn`|I|b}ƿgUBr N0uE7/Ihx9 8%V̉ҶriĐ#] :  F>۟&Ga'<@/&-OL`VwUwCg(V1?)I btnDӳd"-V2)\Y?$;t lpH{W҆5ލ')K{JRE_ ytEQ'@[֟~K`FL׈y+BxޒAk](Ȅ&*#te_R%gÀ# D b@O YUa!=}}dy,vQ)iHOї``ц*Uqi3)IK7v)^@vӵN/bel+aQIl;r,@"­f+Dz ir\EĊJm,UQ+k\6L pdR"ts(^uw6RbYQ!_qt^_QFRw-)W S(=HAsc4`Qz{3 魽-BP6n0CW*.=:b>fRG8uy`6C9S~A \vC@"S: !$_*ItPr_ڭ8ߢJ+K` RUH^;4DRU9LTYE 3=LtŪг|JXKA/Kirc4G3}Pȿ"ȇMv؏=B@,6!cr?_e(^!\n8?XD7K@b*I/ayB/uU6T3268[DqE%ТSdΥE}J 7R;{*>0zW[8<|i"8MKc=Ĥ?*a# ŝrv$?к9soKKi8<1 "r\:̄*M.P.2S@<%L0EԫkL&)d !eOܙ,;/7`^dhS&xoд!j^waM5g7)y5cUf҈U0q+T{8D W *|5+:x p6~K$[ؙҙa{"룹ﯿ. OG|[& 60dZՆLd(~b{V:|,j\8ZUĵ c,.0|Z*!"xdLwKK/Q}a _q_wu\6vSJ*p j*?EEid{O:A5c9mQ~/4GIACu@CGgdkJayH`ϵY\k#"+r0RBp rfzU2]$RPrnkI JK7?GqhҸt,4dȘan6mZͬDZBګ|? ?~-XT`Eڶ4^ d VBP~\[:ۂ^׃cQ&!z`w~II* i>.Do?U ' +!u[jf0d5aSŐ m;oI8À,\Ao>Aj8!`AT**\&vxT5ϗ㑿C> AP[ {p3/ <\š3c \02VPO~Hʽ["0D $ ur 6d@|s0Cw (?CL%(ɖ78 $8 VҎa'!~O K Q@]A<~4ݻ6>prX9Rr}CQ=%aw7bRM9BB;D44ffNPWM'.dm]&4[ ?VGw_X;T̡5#'/^aZ`Oev&0JϢ}O.H+WX⡸mu#TE1YRpGPV-CB~Ew_v޾wԻ+[FCi >G iӱ1i̛bADܴwP1/iT1WTUDdu#X}j*<Z9'"O& QzQn}DtLM;?h;/^h!0]}lܔzE@uH";Ҹ"}]ʨK |I g#x]는A|_T>U _NMsǚ {D`ʲ=KH LkAePU˚ ^ITq ^*jY*|gJq(Þ7:wq퉾߹ߺ kkLTanвR 6FR=g(#&[6<.^h?̒VcSHO͛~Wv"G׬?O4hYiT[T|nH@ ])._pi^z@$Q^a#o9ҽW%h]pN>xX<nx:E?.ӦW5J.\B$puP/0DzŸaNS UA2UBC sUt~(A = =O98_w\_#1nd99 &*>72rl x㍤Doڍ@LcmC59҆CN0x6dǢrwQmtk&a|C9U7t{{}V og>}o% >~ |_}jV}_?6~HX@ܹJ;<`)4>9!e)V ÿ]ߠGu}Y@TRnHqY}r9 ( -4S*SL^G <35;{@7wj/猷gO4]С9W|mc|[ysJA T~Q%£ #G@tqbĝ7\u=x9+Ph"+u 뭁Tk(}f=KPQm&Wib*" %wJ`UHJ]N M:P. !\rȪV T_?=أES5Yhww W و#unN U-b6((}Ֆ7وQ6(`Z9Q"_Qe ?2ăB:'Ư.w?ܽƿ4Iqc%!e7Bv(V~&c߇{byi (TÍ?(߭3/D:#-*m+k,{2xӐiwXQGZjD,ι_1Pb}0VN<\f_?w{_#1>VսnNΛkS?'<0Pcq6l~@xP r~G.6Z)fDxiX4?82$Eli<T_54Hqy\9馵A|/bԩ̤nT1J|]xhܯ)>ȯut[?H`P<~{7MҽCy2,RFcFi ЎSCe1Jtr$+Wwӂs S1|@>}NYM>i&y: z/Sy28f(cHG2Co)"pI; P>枇؈4m:* *>MH.X=Q뜒Rr`@i5lJ%䯚4!3X1TkJ?/`X9OAo.@|F) tهGT*h4F^͆ ZaMXR7YEǫXG4|ة5sgDC{y,)0򘭯tuu "-!UkW˧k֟>ʗ1:BuZWL0|_?TM\6H/Ęlʣ0 nk_+rw)~`~@]^yM`08K!˧|7Rƴ}'S))hu82,gMa0t6):_n -J6f@ ;'a_{.Z`o҇ \TH%*"hwK?]4@wm+B95}:~^Qy(dpXbA>Pi Yu"M0/%QrAii㧮# _i0 )]`*`vrԵZTe޻ (M?`Cev]r!M}(EL"D3 @&B//S`#% Zݿ ﱈA0#C>ӃϓvpM{LQYwM!6tՏ'ixDc|Gec!_KtkhmPj`zON=@_'M%HJw $0Hsk%u/?`8(&ǒ 3>8z_s M] ϥݹ| B*x-~9OM=$oqlj;d.4]d.@BX bR?c*",Q$9 w˔.^K7z CI<[HY3b|r/Xǜq~:3#%\ hOhWKjZ%8\0<v DP*0꒱{ayԃ<Q1F Hh/ϙ372)9ڀQjf8 # ܄F]0u W=5gŴ.;Į\j۶-m9/$ಥaڹ%F/e TQd7 ?U{/ی*J<Ⱥu .Ti ՃA  nt6~V)vYI3SHV?u_n '= Nߛ#qm.e;?ѤspH=F| z}=[%>}}lbeȖWk0 )\\ʼfFaȫ+e_0TGō`- t dgKk\gE!7/D/.e>-둾=,ڼ.HpE/ 'N4 k hphDP w~@NNvi7@fr[1ߕ&,ϜCD@'ƪAF R186~m?HHreSA^`w%B:Q[B("37"(4s?4s:U?Y^#h(BGdt wfs"&}7O׮Vkf=!wO &&J L/K2x0{s'jzrňF+ g4-L"EUy*k|>CJtly.ӿ/?/$#zUG '/9:4ǙAMFZk ^ZH^V1!U ,{J(YG޼QJG!L0]~tߡ6.Wo#;BrW/C z `߾]&uо.>=YDq6q~h ٫@o~ǠتD*g/w% t!@@n7|\)S`n@$ׂ}j(vuh}8#};wy=m#ϗKkboLjx~ܤ=%uh`6P7\#  $)"]\VO%N{c3Wb$__NE,= hivx8Ayip}aqi׎I*?Ct'>H«fy;eM6)d6P}x}ٓsl 8LAx#C#=)p$2xZ0L`^}_H+Ăۯ&rGhD?m\rUBӾ.PJ_k B9+<d,d=[cԣ[Ac#KV wy2~މ >Ah%^Fڎ`I`*r59׏{)8~izttSYW9b=MxcNڞխJ lX $ wAdnKn&xFVh03^2 "JR&kzv\iTߘ@;pwJdqO߮-j k ?KޫnzIu# KwR*%x{I%"~&SYahDK Us]:K~D"=xk|7/h`=D *v)g0O _etŊT լ֪t![:ți=^s{'Hv\<_%!5d 0#J:+T})J5enZ:U{ ŋB l JN_2NhOݓäEOR1 y_o$ܤg4'p @ /m\(?a#2 LUD9;:PЧQf\j"7)/N ۱%FL\]5Ը߹Zm ~va+8z4Vn\G7j$5cq7U7]y3 i~ |"5Lj$ l^T%ca!}?Q \1#@- h]y2ĦqL7Z9nBjk7©Xk . ,T\WqHFV#Ŵ ڄ5"L&,,=S7 k$[8zal[/ aϟ{Ј4~>ם[.Hm6C l.iʀ:wP"_U"/0N{?BڴdukpgL '?>L`pvjKiAZ(%mCWhQp `IP)t/wbqwUнG;`hZER&~L6'?/.w9y,LըVGR$Q~q' O*v# Rf TI\yi7ф. Cw/'e{D\`42/*5ihâ4r3!8_ƆL 2PJ+AI4LqA-r/~3bH]p¿l@ ECZ1Sd޻6DTY/pc$"{@a+OaM*fJ 5S\]&-^VUA x}&#zQJ8P&xF3 RzǰA#)R;!o4þ뒳ޝ#a<2B.P&|jpwL7 h_Dְ _mWQ>P"JO87cATX2.NWJ$MzI8!%cY6X;z[4B n0$K.eWP3H-ڼ9x/NR@E)\Pb;r2X^Ӌ|[&4*3 Gj|TwNp?enֿz-A_ӑ9)LgO$fR}k\m)PQW4+Q?kuL"x|F,cl.+(15 =G/|4mɩ x=}.@6篖>BKG9ML@TC" ?!w̥~Cu({g6*66t ;@dr^07PW {iO2OL0 /pjV@o`4>󁰫`6P)}-˩$=㧯׉fMN#'*WX# B7'c+K&i {<ϼ(+&207=G@$y(A1s\w#9CLaa uz PNHͰ!;~nӤiA! A܁!⡋OߓKs|liDt?+]]j(Dew'C*| S^mff@38TF 1Uf"yW̿WH}fiop/>;Y$C2@\+W/۞? hѣ$]Ȫ3 (ytɕ%bI#2R)Nj- g@":ȴ9(>;7!ߛ'gs=PcGhە˕@;?a?$ (#C֕.3y_+ 2"!J#7lZoj{$"KQtR[qj q܋n]Y=+P:21@ ޖvG#W mT\s :<|o^PJF)\BVKV\+pY䪋 3W\lmrM]f,ceh"C'`SqhCfi!h(Ч9R(2O6-m³9Q@oͼB6qbG0 詷O' ڨITp0đ_?O7^Kܨ._O|z8?xޝ0ѱZ Zm֍ocgģ6mj!_cPG:hQ.UD-tv#KR%-_Dl*ठ]Eem\Ӿp&Λȼh|t(okdic7X]:K$w|=ޟF({.DG0/,%9C 9D&^)GE@ؿtI6T+ 10nɆIý"#`%Z0ᡮ͞ 3GuSC7/̹,=I@#]LшR%hf$II\!q\[aX]:("CηK¢4wyzU;5 φe!_'T  Cvm2'p-j˙}Z"ߟq@ >JfsK2~j o:)o^/M'*{\rl'`ǑT2:A% _ICXN3zݿ0}[b Os;FnGa8TC(^-)7+5P)*g[|e1bGS," ]ۻ3 '[BP!.=mf|2_?G/Lb&}}Kre4S=vEj5Pfȿ(yH6b Ţfi#ޚB؍K|驆;ZI XGÇ'Uz{r tIPG[lLŋv-Q0|ӻre_O/ )auഽ- 5i&+މ_eH:8LL4*H3U_ef>]dWT_1 Qow/?dI(fX7 s ~UTA/ɕ=إ%ff4[`ZD+8%=5 JaSzX['" b/ (@j/.,)0魃uPލ`⇍P~ˢ);rBhi%_@4|ӱcA!&=@,C6"=#Q&aO҇8XC a "Fȕ 19_'9EE`]mݱ)Jlҍ" ?9QٳoߪZ&MJ!:m)sɘ7spJmwQ] smfG{f[R9pUخaU[RCBSt_SG Rj{_ oONIN3 ]7ѐ !TB[|QL*!G#U S)K4T yCʼV:pJ{~JA|" ĴϑԮ-~v_i[RC"PMHJ֥`C,!;>)ߧjN{?0U$lI4tz9#a pHYs+.IDATx}yUՕnP{ϝybeQdYc(*Jp*) I?5Ęb^W'N[ާ8uJL <_U{ƽoΩ&7 8s]s|]9@-R_r,xl p}}hooRwdŢ [;U\@xFNcf B_og`t-@__;)Lk؀A^P6& {K<0\.̾x[B˒IRadj&--M1-Ǜy ע</G'I'hQbn3fC~G@ϙn.cx0M  2Yl*"~ hta6 <ρ1 pn5` I{ȀOOÛ_A3`0`sf !k74O0lw0K8C?NE5q/mҦ>)C`CJ d&+ H Naaep{FD^ՋUL6]FͱX!w{`" $X0AI8݂El{~.g~|El{՚L遆si٪߯c K=i4O6xa10@ĠOb7mj;f؂m38>O $Ly T P8$$ "٪tAbR"Mc.7Mr؄>'(iI30ݻai`; ݝ; qnrgN LvA TCqI7v`8NXaF&"[łǩz sUDg~a 2֤h}l"QSfx<r+q^+ 0?0YI#>>9R^?1ѐd"D\, N/5)W],Ƚxԅ9anC0Pe rxB0>vWR Lnx4h~ VJ#piu.N#@ڵSae{m2U] oPe1ta>%hyPոY 7RCXcJ Svr1Zu gK6sC{&~6Z'3 (K@l.}k9Ηa&tsRȒ|@ <6UאF"-p%i=`T4 [t   LH>LB6qlM0ho;@@!?;>r{@df,U1#@ UfMڟudHo`C8;iz|ww7kLa/NMgg&rn֮$waa9AlC9cռ2:uV Ud ̂^ra IS{}>#аW|A'U|^KC4?ԟ&`f(#q{ffj= 1N;Ò0 1FcLGyQ`G 5$'Af!q}DcL' p?s#O)"lܸi=&d㍕X;j:; aQw'"+B(„G͉[3) { $ D0PoH+æ51lܨ<~l4,Q!/Ry5̂̈́᱈JmBL8 {p-,j~U`zEeW- Orc4NJEƄ1?asyIΩubM/e&3euB&`IpHHLO%h,f1l9?P} ݱ?ۦIV `.P (g, (!GnSAu^c= F*./ߠ~A$/Q; |d'VúScv,6Mp^kO+y4m*xu.ڀa 301 b);@1L9̱ 2iHPrxt*˯.S H 'xx'76W-[zn]XDr 1,4$ fL+ Ϗ̒WeTҴLUa0Bg) $aTmɔ9"nrlJ?U 7UZ 蕢1[&|㼡[ﶴ‹1p`PYjiP7elKa̐xo8@*>d =tۤF7ͩMGkyV[zG(;ѧ+JE'ˇGeܘ=7*,tL|&Om(gR(oR{XZBW]6M@pcs!4 $ :UlN/NF)|O a䍊Yauo n0sV 0tQ%@YppL7-eRܿ[@9bL}2slXeyCt5p rny }IH3'er&R=09U~J=m3Df!hAA5E.1 {whz"Y3Psr{gbfYB룦+ް r43<:c4~'I'RZSɬ,;"˖ү%,qksSR]iEKyĤe-/z~G,rpq1Sq'^KUZ:)aLzY|6dqަYֱ=ŃzWY?TOfJXfRzc9 )}9NS C0s;NaPE|2;y˗`,L3XY/;hjA&QJٸ]оiƧ0diAXd+EY :g-c0=Cڐ Lǎ*u1DT_݇۹7uy!Nl^]xܧZwP7 lj@IA,9տWe,ypE\ -?WgsDyeՂGlT `oGh/pw7#p!4™ 䨋M`a. ?P;-d'h[9>c8$S AdQEJ ISL(~a㎐rVm/8,IO5`a}_",ep ,Q@߫l:sׁ 99kקM ڸYeqc &Ьd|'%Ryv o,TsUF#sV7O>VZX99>5%ڠ3z TL Ja>Tt ƧntWFH\m(ӦdSEɅ7Tܿ؁A9BdzO:}{xNt?!Ǎ`<3ɨcloQ-:yL x)F}1Q=Fg3v#[v!Pf|K#4aSFl "S^ģLъMW;|R) RdJ٩BfqBS;x`H4|X~!#X2-*W][S~~Ms&VDS=i&+xS{4˝0|z5BE\gDL25t7gE 1#|q,i ZG]װ.vXi\*zpe%6i"4k{$n)a ݫe/0՛H=6RŲy]B:E>*HVO{(C͈J _ꫳV%{_2%2Z[&&p] DQj.1)'# @`3o7uTo}fz.'Ap;MlZM݀-ǘ8].TOg37t2L}x0֙$?D0޿؎obIͳң%SD~^.6ˢ)aJeh߫mݧ {dX!nI. 9W;Fs8Mo)x<˶)Bׇ HΖz>FA9j`5s,_p*|XV`f>H4(.ڋamrmPp; ma;I&p3e;ζp{Mf4 w4_&X5҂v`/D_Åb ҿ˚91G  i?P&kjw܂`GNm0^b?aw̲1v2;[:vA t!Sč$c[7a_5C6%h{Lɸ#95L2,`5ӰY2Ƥqݦ}R'/['dԈ|oP } |tHGj#l !L/BwqY wEԱqxQL Yg.7v${cq4'  ӳTzR0SVIm")zש-BdIAExT Ao,JGɈۂrwQ\Εn-ٰ8 ~_~k&&sEt7Cb%}fPL(?=ac*!f 7t _>BE [<<էr5-x4i:ka>Ip:2{ŨLpwЈZl\ Ŧ& \0;ƣ V;)Gg£.vA@y] 9z >`嬘Ke9Qr>}RA/F7B3X$B0̐ AG HwF4j¸`c6z5=}X/ _Qڣ4tcTf"%`LQVZc%?5Q:1;p폙'X#3w_)R`1&,{]sE8 XX?Zl/HSZSR0Rsi r~mi!lڑ}1>ATkҸ"t2]8wNߢH(TˌR~-0Sh#6{P @2 ,И>x;Jw*~5m eD6X1Afvwqq' !Ǐ&O' J-ެ1?ee@)jȆ$c~-l w#ŧ$2,jY9]T՚0ᬐ1A- 4LkMEV0R+s}>Bdy(LTEvH` < f&F%,Ōdkܷ$&27GPA/Rbo,UctXaWbU{GHʠC:j,">% دB$ "¦CJ-†St>s=6> PчM 7(=Y RA-2#f=c(E(Y08SRnZyվ ?ɗ)/VϿ ʙW;_,7KB4pvҧ<z6Ҩ=S}BmP>hcM Jܡ˸9;,i'CE$;8lŒ@Eʨ\5W <C Ըĺz?8.| C="DU%,,z Ş'%@0E C4H ߘd ۃ6$>U(.SG.; ڛ 4>WO`|4яnUKQmHv4)>Hq 2#bSP'~dVH]Sp*keҖ,yٍ>xU=ɋBZ', WT pcbyY!H.0t`CA b%F):&16w8yw¬ ܬXk$(u8[} sM!y!|q%TxZZ[*\9\zsk0{aD͕xu_QjSk)A0')ޯK4x3/7Ff:!RTd B_V`9p >6+Uqh` >;ׂQwL(>zscZ&D36ܔ%7^A={!ȏ6;>{Nʕ7\w{M Ykq$gw 2އ"4xlH%IÑ6ia(3(t> Fb?hViYziݰ8snVL\`'۸ `h'~rU!p#ϙB`8Re]'H۱!Qk & }t|mh,Uvl١ilfB0Ogvٹ B q8nf2P2aT8`0>E痾wbÛ*)6@<,$e qsLyuwa9Pz:2r1RN*k,6$vKP# >#$̐.}ѡj6:,A(HH+c0 0Ro)^Hv L>HmXr6uNȏ<#{u7oa%4ߥJ/^鷆_W{ߦ؛ԼPĂ?;M{v +*{JsY#P?u/>43= icRuǎyHe|~7Ɉu[U-b!BOXL1d0t ts <d̓-xSOvmoI LCGvl93tˆ%ުRε.%I]H3} nReyd$Th4K1Rd 8CB 3sK69%f0|< 6au0! C]pqk{}+[9yyQښz-~Ȧ+m5q}.Axq)[u .ؐ3=` D~K@;L7E"FefRDB}LVJ±DrJ opےZT #!@25|8߂Fxư-{?9Yp۹l`>:2o鿦^Ow7 !l.$ƃbVR/" 0RplcO󛅨^rcp]J3n@ Og7;vUwPޘReޅ0ݬDj]!iA(X7}!TyޏzU@vJSͪXaD"fElP8BHG]hjVZC+P W[2yl}Br|j+v[ S d47$/R^nn  2v/ 2DL)k O菬o׬OK)h O}=WiJ8e;m$A}~5OG߾5׸y(*_| $N N ⒀IhzT}4( +!&^C:R'ziۺwT/WXeׅyү%?9Yz٧~5 YW ţ05!H4VaE#nZU6n.:u֪K `Am5%Jޞލ8_V A?."ewp'Ax`nYE#"Y~U-T)dvBy:I5R{HպBHp&ȯO[Fk3dT~tZp5oVύU/CǍMVhUפ(\T-k5=?1˯Da,;*X1$K|sC2Ɵ>*j_Q_vmR=_њW 7LB}BA@h@YzbW4aUNtg >>84$?8/=>:~~ o'0%z䊮]hؐ5>xbr1 ! "$)Nؒ`'3%xFLqu.fYk,Y],y*"r *TLV ={칒oi$O,ڞ;¸NW%xVhr.&!Tbq6'(ts&3!S<-yY> >;4 ' V]CC@!L;^*(i4T%ub\8$"W>|`SkɬgvHQ)Wq^b#ȋw!g 5>}M|C3/wnU)f1RS}qU͵ *u=.ax͵vB?G"3Uy?僫)s{߳"q}uE/V{1M$dB_ )FෟltޏgԿ\cÀajE      ޸?+^XIENDB`pybik-3.0/data/ui/thumbnails/Prism5-4x5.png0000644000175000017500000003730413137372670020657 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+>vIDATx}w|T $3LzII% I{!zW" " )RB*olג[l׶̉&0_sΜ׳W_? ǥIh@$4@ h4P j@ !DEcK":B$.v%a\шooR1`i{,&MDHhhլ[؉D9aA7-&tN>}ʖҿ"6=jhؑY9WYЦU9~k>eoj׼o}ul1gۖ%B{ iQ+yBLqbb"Fcܢ9uT:8A7n,MK&箧CBpq%cDGFb+[4;hO=I3m߲yIo팯H# "%ATH f-4X͘`Lv-:g(]ŨAR҄j h㹹 f͚b;:<\A".Ԁ& P b̠=ewGPU k0q6ohl&êH6@Q XIRd!bv&Hg hKo)NJ ՆZO̚H#l([D!ãŐ(1(.Z Oui)oz虝% ` @b姦2x@l |מ @Lv nld8tCP7-D pBX|oPPXŭV+O֧- NZ2&U`vGrm0LϋJ`CĪHzN=@Fjl+CvH!fa4NNud4$OvSMEV*o8|@&:1C1,VF0M`]}V\!#h0ޟ A)[ɣy|i Y跷XAw FFF4QwR?X,޹t 6ű:#'U'|$O0qg'}D+ϡ^{f+vr1#_ *7H$瑏8$[ wWg ̋z,W 'ʎ bCO*<&A럽t^鼝3ZBH6oG[Xi WxoOzXV!?b Nng\oʟyRXX LTъ||b Mф>A@Гd/B|M ̝P8t@tP3{h/A ]\bҜL0)y|_:L IDFE%&kpL\$yg+5FOWomRe7GwL$`kAƹGfO DA1=H!D-FeHu< h aVBN4 Sq ҵՊMP>J q0 1qINIY".<\ T28? !hB ߊ ™& ]QVszAGO@jHZr41iBY~/0FEݯI|rt~so-,$-_f^0-т4Vy"t mD@RL :Zczᡑuj,1s5tA*&Й`mW0"k1`Q_O4'nJ4mCW[ZsP+=ߌofP=&ne6!gPG#>=5L2& a"7t? 18;j?{j1OyzM ҷ(XL=`P> s5<$x*t%Bɂ23tQe RE.rU\,u/7WQ7%1u7>iBH !$zN*f:zUGH S!-ד9c&z&fbC  j&QBQ `z& f:簺{Pc8ZxlzrS= ^u&Ҡn"dnmWz{ /uH\K/_8Aq-N1?&a/0ژ]pنCʅR@б/C(чoڝiIq;K5jBta*~ ZP5$ Zֲ*?+9H8L/R!FQaN/ۄ$\>@Q fMtv3miF@R<0ͪM-Ar f1Qf0 h}(7G$sQ;B `bvܩlyG~ .^T5bݥ3"wߋX8-+ `T% LnLWjf̡1XǨ@ \OepSM@tH1FEjGď]8 3M!~~t#Hp!}\ZYGo0rs_M̺rI ٺE$k}4yЪ]l< M3O"Y $ Qbʷ2 d+7tPP(/c?2 2#p.NnK}am5P:%* A-i@k ϻBBr$$T Lxr@K3v(z!v;@Ii1oK2kӵBMM啞,x-REzĈT*%t H~nCXWK.\v( P8gjxG 6\X \!z7v'ëJzcaCyKETz ŤBl'+# S1yki"ޅ(穕i|>У:)F+?πBiBkF\-IjyԘ9-5H"h(UE1hՈٽ +i Q+=7e焋ӛU<3_8+:߶Di;${|=Uahx0d!Ҙ-f.@0|Sbh4/B X]4q JE@bYQP }&`xN G$C%I8kGC:> jfwQA{`#8DoKcf6pOrC,"x(* 9pa^L{/\(/ԓ^`#8k ^xgDㅍs`P ab;Ey,x0z7URt7rA cU+A:1l 1 m\pLS">Ml_-z%?D| s~8䬵p\AL~)N0S]͌Gŋ$XC@:k0!X(n_Rx@ܰd%:LJV'D|wE[Z0XC4SطT>Eן(5.3@Zq Fl-=³ˋ{gɟqd?%`1V(R+|Y3^yY9^A a(JP\s1{@m7ͨ(V/&0 YZt8*Iz~K!$ N a$FFitsʐAHk!e"ݸFw6?]E~y)oqɮ'Z?)C$,? д'KHf~@HO HlF!dJL>GXG%"D:kiR3 {'Q?bv t>/~,O`ZA}`w S+ǿ#[n}H` jc>hTwe,`o-&MeFg ̛pC|{r^@0n^n]."<'ia%lfA="cB@I2.b pϐ<ꪀUA CH'F3dy{e9|/=ϋg|*Z>^+Hu*Ӱ~,ɑ*IGdBu+&=]%I,딫: no3śkFonqF@>`ŊOM  &wO%eL` VAoh,˿tQ<}:jk$pf6Uq& :߆Q(M>샙_ӧT>P"DTQxn$f00=h(G e%H"W1@P !׀g.oae|NHa7AKJp/[ܷe˒Q3D5C*f_ABwJ.^I$Y+3&}K'8t=D֐8)d:1ZT1nٖ)bn^\H=^|.UIyr߾Lw͎mdC*{,' 1L2fg}rN Z,'P|`Kzca!{wqE$eFL5/@z yML9y\>MxlH0?1[8|?ARBc"m̰EOM$Ҹ0?̋9cL0O0Oey#[cŐL]ίv_J-'00!ph$_  zQ"8L LdV[oEѮ 8Z;@mte]O IX81ܗ;;x] #Dzn\i՝Dj  V {xϋrtаrΝN_@Ky>D;S>@8|%Y*"ٱMy,AT/~S 3GdJp挕\0YCeT)V~p.Q>@f|@q&"RRbCQ]&z߷Fc9mgΐ Q'}<N[v9TeFCS-XeH<:Ɣ~Ks&XGAEea- Jظ$B4M3`X9/^v=xš9]F)_LAM1LqB>W[bbȓ[PRX-|rDfpAѤ TL>qLYF|i?kD $?ydA_Ȉܲ*Zto#kA\77.9X\]LR!Htoz }'˝wX| OB^Qu @Q)nkj1+bT.Zn(DO0^K2OG2OJ4r)Dfn]wHw٘0pOOoYeχɈ!,%Dz?@A>ZɆ0]<G7FIX8b_v5YY/0N=^:=6O>g>T3NonQLò1ls~\ƅD2՛icӗɳDŽ3 3L- Ҳ*09Im۰H^&,{#@Ζ-~0}:%T2Ԉ=&Sc={ Bm?x#Ǐv3D>v%_>4 KAK7cj2C+IyRzt7޿FL:fj#U@:Ќ5TI] |PT.cx⡃"{P>A*v$[^=w(EQ3:]`ߓq<>LH!r9Ĭѡ|Pi d<fNJKW&jhA 㢅h\0Dh:p fXF|)󽢄C!nDN !d)聏=b 覙<~x'>dy7bʤp~Ml]- :=(+LSO?#FG[@h~߼b-kbd{;jgf9\ pL ;#`?%f]$ DtdgJઝs*v+{}[k ؜l'%'WYp- E)ёAbq툓<~A` @D}p?#oɶ@4}k5tE7IJ1ڽ@XSx"=dv5lL@CRtZH0.Vbpwm_'ӾAZTx[Je.aC a 0ݏ 0rWePob/%GL͓>iRi}@<O/ܛV%*z tfˢIED%ňAA2> S&;1 XnR9hќWSL)lgC֤U>2MuS4oj! WN96,0^ӺEuIZ@Ѧj\U7zR׍?کh3sZ&' ?d \_Yy<bÂ\;4v1X<>#yh-~9ٴg[9xv<[z<dϟƿ, i+xR#1!5X(N@(}z{Z19!zjKo1(E G61}xxxS=dj~ y@g/wףs2XAD0{z;PTtAvYDZy]G2T*}BCs']AV91jB4`ur/h h!Ta01EU1CĚx(@1)@hS?udz9댓f;4٩V(_G3r̬B:,nA<0׮z@[\nݾUᲛ'1 `\@AJ%궨˽4t-}?sS*gD`qGeCH6?#.uy/ B>d! h:ptPn(%Ct> ps1i&Ju3Q<|ܧoA]hC] hIe'=*;y׎%7d.fB:^BzrU) 9#2hTg݀R{pIm=xmܙD6 gO Q-[h6emd$98!͏oLa~@'{s^9謎 EeYL@]W@Ugv#`df73 z@3@ Ao+PRٰ\ڛFH ϧd}k9HwME+1ZEgGv@y9ĵn5F%(0Fʍ]`~~770fEp#&!= $`k/PodcAˆYaxw:m$dK+Z?^_ mM v@r\ؾtAm <: . k :l?CR.H$Hk d1 L awR^p%K}zFޑgX2"L"[A/=@ŽaX?VPE[G1:tlE 1B,Iu ;Mx~ xжQ L cX[I50 I-Z07hl2[̜?MD^1<2R{Ma]&b $o,{&27,uSRȡ2^!^!/|bä"k,%R'?HtkxtiLr(I H!vx*(-+6/BVjNql1b'$.#=۸hc'wđYԹzD V<<WT)9)*s<Ƶ5@#T͟x˘m] v/xyKP=t4؀ȭ.Ыw?kJF#lqNCaY.Q'7q|u)&l!j^< }|lLc{7]ÖL16p@vu }R QۢQqn&?u^!TO )Ⱦsx\h]R̮ABk@(&Bc~3)_>$}&3$ \|(T|D+^t1ᕲhyO}Z@RcpwmDذSNLw&4@Equ~D9*A$9N"(rmi&9xlpӚW:xg[o^5ѢSK[U:@4w0ۧKx=*;CxR[.&WqɝE+ ߫pw񂁖ҽGr8EFy[&dZxA+G}MyM#V.bbCdr fӊ6c"<1A~ $ Q l[Jy)1]rsQ}Mӹ8ڿ|3>:PsT@yP񌐛Aw`7o(Q@vW77[j\͡]x@ $!m*4o! Fʔ,X3uҍJ-  vt.V>tHrErG_-MD\T&#wC:7~~16xCPp} `<#ҩY`Ⱦh>n a2ie.Mg3\8gxxnm. i:}Zu̠np{}:ı'd8k "iby74]fmgzI!@D'8E A"M-aѐFFeQF?u.?Hs\rWd]04w1u-=z \{qWU!nP[[ǸPFvbF`?anG@_A4!V?=IJ1?wl;1Tg W;s}ňvֵ@CW,/` hOfx2sd#t]~ yn#6>b7A7?;$RO>L޿MyBzHԶi4g*`{+]b8"q<:#Bc ?Fs<<[wsƄz5mZDX?YJ"lߺڕ3"|{(5_5HkL8tP6`!c.U`Gz2kx{ZA2}Dr N1~`w#ƿA60Ϫcg"gr*_{{ǒߋ, (}]l"Ot%@!dsT}/nc>@ƐWW]5 #l7]:Zу'b8tv[h۠( aY/%(O@%(Fb)V)~ganB‹E @Խu8P͢dlmɐ;}hr\U~}ʮY_`yrUfU &*^Dc>ٮݶt/_ vX w@=gwŋj{vl*k#<):7,4}OF VjjQ7N pA$1I/L<"ه(D.aAA@C*><ِ.]Q}1]Aħ?~( :u3F>d=!#\`mW&Pu{~8y?cѪ+@m^~]ZHѭؗV;/ @ F'`v͛2onMw/H:fu4qUpٗn$yy 1 0s#ܼH9Sڕp0׮)NW =4Iܿu)v>ޭsP l|^qh6:3D?ܵ.vn@JXR0`@v)5@'0n`8T6Ff c8yUb9 u|^{Uzr5ix GҽG?QRGbF`}k+{8\d Z=rh W/c3mp#s h4Pfpԕ6yIENDB`pybik-3.0/data/ui/thumbnails/Prism5-6x2.png0000644000175000017500000003411513137372674020657 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+7IDATx}wUUĪ+看*LP Y` "@,@Jh=fjN{ӌ}6*`q~U^{ý_nwÿD;@t(#  :(#  :(#  :(#  :(#  :(#  :@C)5]] F6Q}Gp{=SP;|-TnL[UմwOco+ERJC111j~>>^effjqx^U]TssT43)Q Іh#q ccFy G->sۉ~(mX%?{|{ +uYoKNЩy4se{Ş]iv^\')ǢubۅF1_5&qV?RkU?Fym3@dمʇr5P]zfe}lm0UFFu[YY(*R15#]-\pء);;[/G1L}jjJǢVCWxb zC GC1&at9Ͽ!HۼC4/([oq-DZ];-Uk yk9dy]@n@m (z># ޅYo۪_AIWs<"9I] sXRRRhAF3OQV@{&] 5XS?S}F\&!^}<ٚwĨg}!I+W$ >ZZe\S*Jrwt.z_Hbq}Ōs4ƃ$nPe0e<˘cd$ 0mD3RY03KT y0ۙ@cȉ. ?φ]QB&4{ ѼW~.9<"C}VYQQ&#l_nL!8,:rrv00# ꐑ 0њMpb` 75! Z[Kdn~jָj1 s 1 "PXtG i)q%;H>oPi"7T2n?.,`>OǩA5;#YÒqN5ĕ֬3T@IW) dRKJ;;Z7 2X ,-Q* f,U3!@NxQθ3DLAa`*zK24Igȷ߯C 4W"s`r ya&U0mx,j6jL,nʵ*T5^RR***Y/Yσ>D:Ij1r^f}=b 䵳$%׿> WhM*r,;CxхwnM*-pwfĢpcwf4+ӷP'\ Sf 6}Gth?CgU0.0Z g&ǩ99jW 5T ,.R=`+$m,Z3 #푒ϑ8a$X\?`ӷU]froBԸtӜ' 4"lٻВ۠i2Y'x X85ɘ \Ls_jl0uV"cC6;[8 #r%,\%Ȍ%k#"薔dڒrZ!:&a"з:Xj2irɩjjVzjP 4$JO^@`5#nؿ'X}$a GWG9Pp L e>]Wo!$G4JBd_ >W^bof=cs !Ddg h<E,]ԦXh85kAxㅮB{x%7@} <GA"5f%X &Â%Ԕ$UEKtMAQNMY^jJL8 +1MbJбs |=pOAOB1: vPDCs$ImCU74EX3ƹ6~vJr,7LDo7F4&&8^a+UY3Ѓ(OHAIXE)&;GeH֤)h;Oփ(2,v]WN̬(=ɧg޼ht!v0TMЛ&$IyI.>.#~c^P~m]הp0aQdenYD'EqCJ~ujY5`+i3Ŋ)x C3_iZ؇&}=&CbvBX"(WAd'.+0.h p[WxIS-A?(gMQE>q'^qn{ p܆74M|;}54mA"n hN סX&dHW.-EtӿS49^ء[BF% Wr@U`̟s_jUOki 飏dᦳ'oH֛]v? s aa!L~@ <\.L E Z<[*^ ׁIT>hB%ૠtirLq&P؞Q u{-%AW&_x۶ʕX"|N`壩ɫHk8]Xaa-o\]@IMk<1+/on\/V{2kR'6X2{HH$sɃz@۹-׈k?f\U)t{tkd8X{^ I^Õ |Ƅ )4Z ,~k$@3bv%n0=.A.S|4̜GwW[D}{$ѓ(\0WSa!`NIkG7xA6ZѨ :UgٖF$HF/ d s}Փ$D(Pp"f[Ep -3!Ԇdl;I}1_%y^ݗSO7.1> b܇q~Oq `\O?#/2۸ ۓ'yWF9_wĄ;񘯥n~Mȅ9*rZ2`y xx37_&yۨ0i)[9x.$*d^ bx|8%nZfKE $_u ^c$SI!au%0nIJ7GD)fj&x^ Ln0ac߯r%t^<+ Qw̒4á@w `@ %ќ{Ľf&)7։@Y,5ZO3rY+ Voڍk9_{sҳ[FJ^1S9Z[jFljx߸^ s˅pNОuoCL'N`A+U!9|hCBc'xkԜ2HBLKB| |f.~qk\@$bR[6 \e] X%ZP8¶<>V>*-}ni7Z9<{!D0 ;` Z Bq !/>]2`v(ĝI&_ .#ݥEP<&dFLZ<&Џ]F6} Οaf{dG P.R[hCYŘIsfD%$yp13 W"`9C*}Tz (Df->ӊ֜m/(tgλ}hj36h "..@WgΠiᐅϾkCӂǑQs߿?TuG޽( x!Lr ZGܶɷy5 8ѲP=ru8dJ4(rk3枃gHBGJyrh;BU*ıhihhu =y A k֯QN gp>Mfj b$~clw?b`FӤTra[4>;\Ȧm?J <=e\b5x3 u /xՖ'v7Zi-sdКsHcg6.<B_M&ZڨDA\ak)4lK X*LB03&ĶE!Ip=I g(~;c{"b?ΣX_7-z߸Tؼtcu,&R|̛vyb5ۗa1)/hy<Żת0k8'n"3)KSsS|fuuFjٕdk9Bbxh;tp8jM0tj)}8Pb?mtُr n1,%kͮ,Iw../+`&_ )U3w>e^^`Bf&$ĉ, tf2q "AGxb<g t-g>K@Cs8p.H3JQ` DmJ҇Du)MMhcMe$ف? SW,ijI* -/מ#Vr}R~\-e]:Q-鯾oj[ %ΝCn{?'&ԁ{M4 $?ewD =pq[ ْ"ƏS\18GsZ{Dۨ\h-υ5tgo Mֵ` 5|,#Ak١}^→ϸԒu1B m<@0)!ߺf>˕@pz8S\*hFh.Gw1bݢ6$Ku7~c"Jt:xا7*}}4Zlf~.ݦYIL_?.!*}˒՛{k0 SZq/h p04xYRA1[v/I]XUca8`jE`dZs)8W3&SNuhq`v\,ܩfe{&OCtk>)ZOzu~A-x;n <@yl-V讅P4XI !uGtqʖpûE|駇q۵0b& h `"OG Ofy_8¦CR*$% ;uWh348~'X"MaF kj0|OVawE[(t3GM`*hi`۞iĹuG+缃nt9J5]O߄ҶLfoh?6Vť[ȃpR|~*DyV\IX/5j7|:X u`j<&QCWNfqU2_ Pİ$IUj/V2YҒc՘Ado|; ?}33Vaݩj$&N'Ol!:Hm޲iʀ $!LnqO=i eBnǵ :"cŀ q;dy ['CB \[^^B_o#蔘9~ $gUhg!TXZ3n`)x }]i~XNIk|_мRn|8[@͵԰^>P lPsqS|1* Vnçxu"CZE>%Prl,a&'Â0TTqY閔mT#gb bY⸅o/ktB'2?K6kBm~E^{!P[\K8׬r0`~$-P|n P^J oYjz1l-AK Ul7btzF4/Z2-u¨X^$(- 0UAX,45VC>2gnºPUbՈC??Qк=ïuD84zwE&(OXwGw;ï ?8'Np":OGQ9Z-tY\p f~-j҉4( Yx ]N1{F{7?["&GPq!`k_gWWܴ 97/6x9߫ tN qx=}!V X/!r46F4&`BŠK"0|K|l=_|󝁶kKCaK/3md@6|z4|;TJ 8lGmvoX6I%>iF>:~hpa uGL*J!ng֟* (v#tAb^*1GV[ PG-$|箅g2\'٥7[I-4 KR>Yb/iw%`AKjp +}n-!=Z5?j';&ÇPfRyo3 tI% ?N}| >#g;"䳙>-ty?{<:RHZ.Gze*? x-TX(6}\N72L;kZ Eǘbyr>;K)l8S5bkwZBIum7r ЋPc8aԼpp_ǩQl`iGxg7[p^q=ya " qC#d봊Ţw\8_/+6lV)Eނ5:@0Asq\FoݢtYfr:4U8^|ɆM04w{1{LPDm? 3s_; `,bq_#cg z~Ԁ&~4WU{hEMO `lZa@YT'@v]gD@# #ˆ^ .u7@aTsч9茨@A$K}C%%-j0*ugK`D$ty 4Oa?n.b nKO_L0\`G?1ĮCyv9;&_Ď=mƅI2R`Y\Va^p6l:SEே{HH Kr9w@J]]M*)f-8L*>!IN@BB(oס4Xob?̅ o s]&O?26`L ?4dK_普J9WWd̶7ׅQŧj@q״?\-޽)cLy3gR`7<߶Rk}Rf9؆Z 1珵 )QY}5kX?ȹ!b׼50 =vlHS"vy>ǃ 471!l~1L|r(c=THO?*t;M' 1攐f*~%[*k2_ϱa~dݼ-e1oyH$%jtX}'DQo Ata@=mt-p ǃ4(Pρ؍{)yg KOl۔&S}/>142M3ԡmpY(`+Ӹn{pg3?1p lAK1]kZ41B'd+kV^V8'9GX{Moaas2͏:nB`hF (I8b&X #tw,2xfsF%U%߇LPsx'˼%BԮOuېY߼.Uo{8++يofuhT;[\6t[GnmX吋;nǂy*Zj߱d7hAkYnQ/o_WNQ`ZW%AC't`I6ϼ{ UEy>07VIT`~&礁uh1}؝ޝ;9bn%[=PF0v9}{`f=Oo)+X HO>RC7 LDߘ,JaI`uIؓr'Jm.M uFz/?n2f}v_97lRrc5\Z~:vLJcgY%dr;@B=dM&tp@5e^ӥKFoy&JG% mA;BV8N.̾'uHᓸrmCzW7ruyl|` D7]q󻵀A*F:8aݻ昖!$piz0c#7}u@ĩ'BsGu0x'iWQ5]>^ k Y,3P"$/=|5}LuD>-CMl|.?3(38 bʋ32KNU}1\H+ُ 6^o#`CƭoX 5r^]#8¿Ur~SahAuztW{I~`"o|0w^]3F_=ً'v #﹫iZ|}>@X]E'۬$u4{"6}q{ۜFYq @ :c=y{o}'`cرf " 7uz}l?H.n#UuJ=M\)C ,@Xw^Aa]d'TCx+N'3 QLk~©@hs(Rc ;_^VN0ܱ׷ma pHYs+"IDATx]yx՝#B Y b`Pd1H1*USb%*Z-*  H xh;ӱu33}i;=;_ޛ I mywMk~Mǵz4 hС C@&M:4thС C@&M:4thС C@&M:4thС C@&M!tD#@l҄:wOLoh2\ȑYYxzFߵDbX2HD@@W( >"+'{fod q1 *"%%E|m@3X_A&Oޝ8>ib=u?ЖMo{{ >IM캤rfuٸqmj q 2Fz 3%MYxf?EhxT Bm!Q<8HqO["B¹ {w~-.-[9h؆$ppO ?4oPFVf6  D<}8>j2 2ຏ={OSϣ[ 6njc7hIwi?WRhlnt2=o}$C((RSS%: o9<q Ku߂28<."C_:?cpoǀRz g#%ܧA~)ƍT4@A2kO ^a ߊ?V%*\~׭Qx25ܣn|1v7tD$sK%ZGUy?%t&,h#}"sl%^[ p|࿑|3O=p3TKdAp4s~橒w@dHk+Eg,,yaQy=b2f&ca%_=_!S2"E"6n2D:5 oUΙOČ̓28~c9j3O<A=rE~Pqس9o)&Q aJ&L 3^RT}uN Cхt{Pr0{+i'!gT?Z0| 'lQ<➁r3# Os-W;{8'K3i- )"---nNK߾}%]^ۇF/ d5obR~71>7v3ץ c!Ǽ?쵦djLO #̒rM/0{>Z`5=M+z!;ae1snECY;%̱14 X$L\,^3JJcL(8I "U/x Yޢd(s<="DHOO猍S% U)zk uIMw4x ~h|z,M1fyJYa!DYe1tVxoɥJw(NH2 ĵޗG0)ܻ 1  6+^B re;P,88+ '[,z6&UdxrsTW,6ox/n.cr`U8z|W>S`x ,+lA$KˀW*CFFڑa w8Opd&!Yw #@,Xlnhv2fNոYb*)e2P·[JZs8,>\;ds^:j>I- PLI`Jr-g&3,)ڧ-9nV?Y-&c-Us4܅ű$SQqűDϷ6H.q9RڪLq`lW1yW8ް N/<CΟ駜~'=:C^TTÑ"(&6{s𘧇YM!n&ECuhWVݩ`Rrv4fc$R-Q#O1v31s ]6IUˡUIXjPnV"i{Ł(ڹUw W_1(=M*C \xa_l9{m~!"{)]<9'(OEqh3-6s#gc:>3nq掀݉_>ӈI4Db2ojlجJfgLBq2xեWb !)Ӆq ˿PAYYr!4) A gEy!.pj{aߺpiN adz!a{'e+cso 6g4[)f#GʙE!vI)3mxetC8(/&q~ 0Dg/&BufgKqcPKG/{קO 2͓j3? v$w؆$9^DC 8ky}.gO.g9}lj{=-eH܋nX%f)sXgj|sy7On1<\y׆wWk:}9?!#琹3+f"{s ܔaG9|s+6,SDA2j*+ ${R9Il H*Ȓ cYK83sIR|x gm(d~N<(Əʻx6\g]X鋝"u:HPH5zYSg f?KF/UgtO+bSu̒T 欢R?TNR\cgl*%SCj?hn5'xܷ.c N-ag_M+'Ց2YQP| ָ/[] Z^8:`<֒b4)U/g6[.w%Q}))3IGb<'W*$/2]cɺ)~C/ ȞlGвwW֤/Q@^w8D $6T!1MuOe+(d (=H8S,*X|շJ!9\Vji i`ŚAL)e<ѐpHB0JC'q.KT\g1.|SU" bH`㓪pT_*T84(Sߵ RR ~H-܄T%{ͪ\|2 [;_Ssv UߝJss: S#49C68q O)Oz_3'͗{?%ۻ;B-qKCxoBD,Xs@s;=`nP6 srVsxDI Ki4s .To6%1d~݊l%xzHͅ߄R¹n0 9Y)UJᬍ{k FOiU!J+V6Wl[Y19L%AhA0#q>H4ckXܵWlQ歃c|_?f9u ktߎƎUDe;ה|4aNף4,nb)[|$[Z䙂7|D0R;ŧGr |Q,nv TU"JԓL$`rp\ZH*uH&nPAsw=&Oo4Hé2׾k&ēmizo/ ɯ㳒p3FY8xe7 \?/nҿlbR]G0'#`uxC8fT`0ŀre)DYJոW>"8cH Nq/x# DV4C>̒ <,Jc+<{O ĿϿ%ߕg͡~÷ەjh 2 Ue#0h̊q NnA#U=Ug ˽be{ǵȎc|A6ļxm|c9@e(JnȐY4WTx%JNbThmu0s[͢"q&UI0PhSz =B-=߈ٔosng;rk^lq/T mYiN<"%+ "I;J(ҙ_-"J!8н T"H_ᙆP8!ir= `vG>w/;v &7f0ykf3-%ߖDM¤~?@ɲ+kJ.HNB*6` zTTL`v <Ʋ51 ^rO"7Pw1XL_;]z} ]"r_`*{hgѥ"J+PJPd |CTxюfP~m2'DUIyk r I䯙kljl]@\!.)j~KÊ5\J ̙ӌ_HHU(rHw `4g{,yp \~2DPBqzl{' iRg/A.OBUW}kV|x~Ru'YSE0@opVBOo]_K,MA>vނyc{Ё._{1^?/u՘wP^>"Z<`DjZ @c( psT DUc<opFm 1; DsPPMQ(#{MpK9":c.vo *~ڏjƆsbf L "HW˰ek1;O0q|clYs(KEԖ-ݦeyX̞]K$?S>l>J`k%{ R P#-i@؉zז >ϫƿ(IdPaU.E'ĪW*WmNjf+]j NCrxLTc!^6l@r؋Z/lf|CuhdYJ.27l\#d大 d_L_4}lk*r?{[ B-h _ T91 U,mU@<@ M.ܰ*"k K.*LUjh!.5`m#4Ő~'f1S=rf"|<O 8oOB1'mȐۼWmԿ-MuAb0 `vk^u? *V HYKS,W.v=tMi4sB]f6$8`ALi{ `n(ETal-S+MtǿpDp䧟T+nƎ$v5"s A|Rrkt7E yRo贽 $q`tBhS8#1m]]Aegi ܵl! 0ÕSP_ p[WdL2LY26-Ϗ^/th\MUC'VDS#fDbKXC,7 >yV g-{1g-/w_ܬUe#X A<=?$~%?/+lq 7`|Cګ `4Q?iС C@&M:4thС C@&MM=:4thС C@&M:j:JIENDB`pybik-3.0/data/ui/thumbnails/Brick-10x1x6.png0000644000175000017500000001416013137372620021047 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+"IDATx\ypT՞~}ޝIH6EAְHYKXTPE\GGA @oa^=8oJ9jf&US5jfj{nrΛzBG"t}_r_yC?M4thС C@&M:4thС C@&M:4thС C@&M:4thС C@&M:4thС "xW>Y4x7xYͧs=_- 7   b?6Ѥ#+Mc|^[|Y$z\_a_oØ 4?; [L FaKd1#oFN*㽲%:gؽ yR)<z  I>" *TVͱ`M&yNX>Y'yoc@0􈭦e}E?y_t0s7kldH#̛=j C?A'-!j/Ǽ2p*Pۑ7ƹ?a^nvs!m@iH ᅘy{%XJ[5p@PԘ}p7MImH (b9e?2_3ϛ iKg .d= 2|3Rrѯ9_Y;Ŭރ99LO0 &YN<(p c[z9GPg@o9g܀Cm)d 3O,#?dxc07]HN?Ɔ:z6xt{ˆr|h~MƭDk1rUs/@^}Mxd3`AD0&lqozo+`eo-2FG0AaDRrdNj$$mrLN=ۥ<*>b[&ge 5bVTexE8>gu!)͜l(鴔 &x}&/+ls@KIE!P`*+}+T Wp!g^ 2 ZBs;(π{P+ׁ v=[7M) 4΂; ygCY|p7@U.2qvߗ~6>OH_?f}eIX2xլr{/ BAYV1y*gu; RipHr+8Q x.J䗟e lzM͎PlMXpGA\Y/CxCT)b4zuF YV= @2s"955\jV;Ak=d%C!vY|=q&JPH DPXcg +=oO,{ffY{{) 0&\lp<{g~A=7¬&Iͤ;}kӆl~=iYEwSH,nbcߎ\䃤gAz,Z%@1K C'IJ*j\lZS8YU@w%ޟUV60 ocfAENw~oW`6Ȕ{2`?М!=+x3!AzԊ ^ MYsVSꡟpUOI{@YDqG`p5-E6 aM/0!<"8G6z( am9~&l" ),IbX&T˒$5m2q2EDj6 DT^(۸`JaHR<}]LYM0&{-~Ei.YFk A8D=NzKGj'&u%7(vW,#!9leyBj|s1$)BY? 'Dgu;nOoqG "8ISOD;7㘭??hA5)",%q;//V1$}1US)\?q.2q7l QVKWuFu,w*R6;vKXI;܊?֜ve}sG[2h#y-1 C ][$ l9w,xxWn ;Th(k@A$|?R A&z=MV-O3[a}9Z,e%*^!en*DFve!ei,hn-__Xs 2Y|dgeFw z~Ý:[Lk-%e7kAe[]{O5jV#$=`xeg'ۗ.ץBp%ӯ`հo5 \Do}+Y#MmY ze_C]nynsa+R|C'V0gH%MO$Ͱ*ijRUq, ]lfDwЇUBymy"Yr EѹPbS0d,u%ʾ?[ ~O`dY.M8rZ&Z9nTIB IK(ՃG?fuoq7fu&fu1Ȱ@?TRukB4HdnX~P0bX!$Cd&!`HEz% $c@l֮E~쭃<Oȯ ,`Q[gp Z5XƑ< kM A a Y1 ` #VDʾ?ﴺ?m"./ODZ fZ`GZ^yb,٫|*Fcf* . iXkOnj=S|&V燫 |g1mCɟ)EE/D!;'/ nB*$D\^f5iO T+Aq@yxavcA7 7$+7Ֆ-OH @UAD[2Ѣ \[`~nu GŪ{C/n/KU{4̍2IDk"PjC.䝕;Hz+E,bO_FĿwhtyy=dR&U!IQq "hqQ35-S_lˆ*H,s'@"#k"8+~W$Kfg˯hW+N ezf)!(̏d->@KV4*mۼBe֥PY^1$"tL2 {/,/t w6MٕP.D1/{4f rvo:|]yeҫܯz|"]UD&M:4t臠 &M:4thС C@&M:4thС C@&M:4thС C@&M+Dm+|IENDB`pybik-3.0/data/ui/thumbnails/Brick-10x7x8.png0000644000175000017500000003474313137372635021076 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+9IDATx}wT[r K[zqaһ4 ȢDcQ%*Ɔ+*.7Ęl$7_rsM<{fϞFBt|w攙>>o6/nB@n rm9r[-ܖ@n rm9fR*sFԝC9~pч7nMXG^]` ח*> C?&xƞQoxlj LnMZG2 2O|:We![`g1j]T _%8AU{}P3ǯϳwgt3 hD  7##>C?}tp)LM1% P0Qm[ ホ|Y<*NF T0~ 56z<R߯C,flJ7y0hl207}bpդ4gHI3U9(`UU_ 48~PŃπc# ,a02 ð @ F- b|L`$]g.A{#B/sf<ޯCW4d)YWDg ,O`OV8-x_ Ln&5C~F `]pBœK1Ttg]7sd0,o&:~)o_0~ܤyx=i`;ض 8}I ; =B\ƿc|cŵ"iUs1 x =9Aoxg,}p<_܅kA&4| ;ym05c gևpR\|Ѱ7&Tҡl Jj ώc~7Ś0F1v5}3mfϝc6ElO-׹$xj Y&j :d  tC96l\eߴ3Y(\<=rc>zdo:yqh8$7 ͒YT潆}h50lz0x&Q}/!xǐdž@7nc #\b(CFhPHHXtSr3BkLo Ttofj r~el0 77jI{M67ƈ4&(X!,A4 e Vgp{0MaO 9FݮgD/˹gy;|Nut5 !參qaLeshI~ȓ Řl̘> pI2µa"+BV04qة@vyXFP Y/&Yţo?YS9`>F_>L6i \Mab8v1 a&|lBP#@y] xI?**5!gp7l5*2ɽmw;y}=QB5snj_R4qC+{? `jyoo@ aLMXFS `& pJx6.t,۹j)pO2IetlhM UOF_{3#l2—a@ 'Z/BC敘x8WazZe2۸,F@f^He^z\pf qL; =_@`R( c02Hs{2둦 K3:E^_45nCV4a'SW^67bjp4.c: UOZ u TmC?|pP40 )c0 _sk&D0bmt Gx]'4,!!+2a!W`p 1߈Êc! q}٦BDVRX eWYf 5.yM$@]@4}P|uJ͜=`G>[eIm:[/iQQQU` l[=^lVsh&^S oe1_ 0TRn>pX ـDޥKQi LOKcQJXM]49coT @ѼsaQxjD.'EfQK,A |`HR(= 5Wan6x})޻Ѐa.! ɷYZUD|~0g4l ߏeA8x4||e.gmd%mx\TGR~w[~pEy|M^ >WoM 0У+= 8봋F0TA|)ZL,=z,ے"`И^za5&@P5ẏ•{{HĜO%{0\PQ9!tVCJ 겅1>UzoN@ۡ_48>3>ŨN*E/} ]*_ah`3шu33VЋWg3c"zڨ7@@^acH^4°T(2 ?dLŰ2;a0$ )hO2^% Z.['y:u[N:q{[EbۖF`/JQo4ii Fxiߌa1*H~xIkjk2&b)0QgMh\FCw601lIZ tLQ+6L9**@7㵭r%G%sNdxg/e2 c g_,)ߊl/} c&/D#/^[ g K`br&iȄdn@O3X 0PO ӠvoD=Cz߯ϟzaH g[.K1u9O*<@"][PU 34d176-Syc8DzgYք{2^3\or{ϐ{3 @{"0AYwx0{gpipWT9>G<߅EWmPoҞ媼(͏,T/Ogn/P\vR0^-q31S[~s@Eiv"lnݼϹnרF-ѣxBF5ƿ>S8G:w MլU3GZz̴ u\?`k227KVӛ$#!_ ߁ 6]TzD g yޝ\P ƉMw7d"jsYL(F<5͟kpvooS!ROP6_hÂ\zZbbs_JM&sۂSóoXYb>8^O<7We1s,Cd^ƣGf6"Nv2L1skTLxUE^-)g)U[T Uo?Q3~yULX?]01 zO #ڽBno96x#!ֱqL3e1 q#,}{-76J<')`Bh33:-&iyeܬx4&x@6axmT LghХ9[OAjH[ժi딡XSz*+pTvR o fa0l `,+cԺY:Gx! A|+G|/^fTnS@qċ]x͡Ҳ~N2QOybzFb<1w]@xԧ~\:~M#l5mΗwUv /NO)k"`%t*, ( vUJ}*<ȯ:̹/K'ƿNo>ALu o/zAEcs\g ,oI(wJ Q閥[: ZjL-`i">LtηCƒ @ !">+ %p^HEш/H1NhmYj9nt"XmVNңHGrȅcXP oz/0?4@QaASXjCB|mL-HZ߯R-/0) vyP2gz)< /)\9}>QK C :t.c8Uyix3^KA5~9C?]FzY;9SzGq,9CEcL|8dSG3P7; V2խ*N ,W&^)UCz#e]y}RKP1 /`sqJ`zt0бk(a2uGZH \YYuV`TP(W  85.ױ/X=Ŧ\g0+i#3&p.d3j"J_<5?_"x9\>xLՍ5Rf){ ՟>>S0J lG-eaWxcò@±ȻCݴV؊J.L 9 @OͰFx UCΖ43M&<&SyLaM3 3rjl:ha/o:vg xJDQ.$nB{]\_WoU_PdzS&<Nޭ*P}Hj:=$HuxX^(׋PR :!P>plP< :f$#^hU7Ψ⽔O#!$ok-, U%X+PG2!~dH p$ 5V?E~ ߁,7-TW82F $` xuG:um`|J:`P3BHPռ/_o_a_cS p!bu;,?'sAhM42t WS4"B5?(PBf?hy.ş|܇pPcTx=k겅QuͲ{TACf_R_.:Om emibt,whI>_*KEP P4D8u(Bq7fF,2%0-A Mah x!PX d^Z![d9F;J N}rLq)I}02uC' )_G`;ZF=`@fZG HߋM9iI Ђ@CDzC%(%0?.3;d ,ACrDxs7P;CmT2"]6=ݭU~3z:)}%<Pѣ:گQ?BqSGmTM]f/K]痂q]pTLϵ#:zj<"ˆ,0S&`C;BE" ,mZ%8(-m-(cI=pRև UAa`H&zSpG #/R@N ]6=a#QA>NHZ'S s|RnZ hؤ,5*AG񝺆r7P6?v_+NHF0suCP}Y;hrD}ogX1jEgZ[/}#j REN3+صH5U8&0dAF/E{n\F@.\kCx2M lVJVTJat4v~"^xRL q9W#h.?gO7<._}%19!On=@rI\XBGAԥ_v*PPcZӃ0.3 ګ#R!@I:)2\pd ^T$zJ_S@N:!b&j05!(TAu* u)^ ~f$K{L!'(Ӹ?>PT.Om<)]?~6ώ~hVJy}BX$;s/Zxl=>nEAyzP1rCq^2-kÃ^ȯڀRa&1ZV!.!bctPJaXL ;d ,>ɘ1>ЕBQ𧻓%)a5<[zH؀6, `kN?^x!l})yFPESiwI-2!|ە7j] <̠ѪI0\ciZE{pƀ瓬#M X)$8Q2<*sH`B"B6Rza}ߐ'Z&Kg]_D2?!qݿGݼ.!o՜ڊdOؠ2.U9)C[+CC6V@ GV`gq;R 1Fk႐,Rq\qdOXk@V`BD~D ]f&"rh~DY\0zge٪sbkGϐϳسfnDMPBAPzPqx2n=jVX}ջ.~UEO _ݴ CXgH)ֳ^ÍpEdRo\). 6-@Z 2J3OBL N|hTDpGtZм?(x VVee@* (e|K74~A:/#ˢX3/ ?|PVA 0k`F8r8&AMwۺ^Kc7@UNFxc,t{0X֑x,3P>Y8Sǜ$f-@: m̑RuxLLBf,-Njc4A@VY@_"Q/k|\H{ m1uƤ~H);_Yj@tL&K.MOg xTpfsc`b:&glB1/,4"`S\Z)搂S==T~q h=bw9 b*^Ww 8!ϰȑoWh{ ŸL ? n0B5Joqm,^PGx08NPe"X @o䴰 CŐ .𦈌Q"@,.ιƪpWDE|/HҎ7 H|SXƺ ver_C|0!JAq+gE ȎG,3{`nFxU u",}O60* S]}gBCZH8QqTk1 x0jdIBfw L!|HuO Ѐw^T 0L WϑA= `r}Db@=yk ջ.`Oc>amC+UU XұFxniƐV1 Y2Db29bg-8"ŧՑv'g8mȹS8A0w(Sة6J^JwU1= dl/HuoK׏=]ker/FѲ7(A(Q' H[zQ76m_i7Tͼ)bJ$a~1)8Y T %pM V98j 9bbPP*}K@n K,K{ 52`Sit9d,Mس Rm}B2DUw7/ޯU+r}I\JR_DZ+, S'k׻9Q?,qqHn!^1p1 [['4#aVDG|4@,mz4Eڣa,rJK(gm"4ȟq&a&z{{, Xd|E~ wzb"U!@qM\5RXVi>?.AҾu\jEX] #Y>xP*Y0 ۧs-IRbgB,B+theh9YB'8^KHOƿ~\j02~sk|FT~ϣEr ժڅÛO5+(B#MߩO֘ŤC4 Lؚ^i A<'`aANm`vLQ3#p%@RqlQL !p0Yg\տ~E25klHdlQ@>}[BzP'o.ESq3T+U>YΡQǠd .}PW=I &SjI@6 !a#g <ͤD)^= q~PS.o3ms@&{>mɍy[ͳ#􃠾L R4rDR yXt@M-`|:nǺ43WvqynDxĒQ(ux`E l$ҞZ" :xEL4Dj*ٕç$M rT`% ISgT4>KAI_ *5rF Ջw&όj=?n/q8EHxH Fݙ@ 2Ƙ(jgp@>+|_ t: 膒2G8w`=( 2,#eM@j>DB"*zBZfq{9>k׳5p_]Jy4E. 9Y?'w\seh$L,Aty\L%1uˆd^TaI~ҪkZ9 v 5>M)Wڲp\EgfYrH2s??}Y #ӏ#Fg@8uX"=zE$\YDJV/uAkyzg[g p K!-gex]4 WpIP]\y5S}Yj˗ i݅'|3 Ҵ62cjVY Ԍ3ygn1Ӱ3$:=h 格'lįS~?e0Xqzyú-7/q U7T)H@k iy@QTE8#)$1ڿXR9.i{LjLCx&ebϔ#,.a)LC(xj <y =={{hY. < scZO{W猂`?8K| zBi\9G[p$ӋFX<ׯɢ`x_/$aЌVv@8.SHѼ O-io$9?Cs\L)-y#aQA !<@x4ry@{ٍ&7r.`+ a`y$ \2_)5cR39]9[tS19i&!oDT^܋R1'gmP}{-=\Cx`s;tk =bzYOD7lj݂znm#p0[җq d2 X9@Q4&}|͈'m߸hQXqH+"!YՏr߶t9c#lsJ;zQH>Ģn{uZS80s-C9;}촧=qS\3zO߽i?wD:O7_>s8 0j΄r+ܖ@n rm9r[-ܖu3[IENDB`pybik-3.0/data/ui/thumbnails/Prism3Complex-6x5.png0000644000175000017500000003506313137372664022212 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+9IDATxwxT?df{ "tl( ذ.UT^5((b{[{?aiz@f_s%gr{]U U U U U U U U U U U U U U U U U U YF7 Z5)./^O5dFV4iGHW]IOVs]5tLrJ@:]iL21/Y$I׎Kr"KDD\gQ2e5Ec)=rKe[)SF\вESN*.ӣh)h-pg{*křW @X VMBd)nWP '|=篥S]AtFĉt=Ϩqآn8=4=5Kl\ܞv [3sJ')+(ݪi ]KUmiI{gj8yq}dhvj*v;b'*پ} L(PVGu=&^_ ID5Y:|ܦB UGcf_Q D4;_3w̼Eo~A=7Yn jfZݷe&-[N-ZA{N5Xmh{´W>RK=" ܫ]?bEFFJAdҿU.X{+<>3l_ [s[$+%QX }.Vm>3~'hgi?9zɇ8O-x}=R(QHZ$99YKNl$/1F$ɥ!IMM5MvEASS.Q rEVU4L 2> PcU5LIFh}\l]';Aw':vBecoozN|Z|V>_ zp5Ȓ%K3ΐ`vvjS@f4VA\|j=s, :$vϒ @s$2{?\s58c7CPL:BQՆ`2)F) }jt]S),j"h]d 4lE6ʮ5G##Rlڴ0yd8pi=;@-.sV!ܤ1]/|Q蟇Th& M=ŕ4HZChix_V6{$ww7YΐJAٰ[7,w}}.*UQ{PGU!*=l{jjRdi\D´ 眨F%X#}l!ߵ*XT] \]P 4ݿ|!߾WV <:w7xCJKKK.2f馛 |Q^ю߫"-TLalf$q,=6 >8Q}േq3M?ؐ#9"xP6=ӮRo׮SO=U͛'C>Hj׮H޿ xZ_64Kp26Og! al'h;[D zd_;̺k=/ɪ9ri-Nd\AAs=ҳgOĪUL YnR/Md59[y*,@$b,~.8r'Gqw;[?ReP>cxIT/2uaL9Q)4w\III5k/B/H>}̃m"s 5Zh_/'J Py\tޯ#8wݺu[~4dI3.PncG`WjwNw!D؀X?¹#z*0.>Ͻ0sDo:|{& po "n_P%*!ꫯYf뮻N& ;eEu0']'>]]<@1*6եobPoN˖3%^=ZYCZ*fgYsyaѬS=FP?)I!9CvjXe r)D} .C! z>*] OHLhߚ pL8Q."пd>eKHL?wԺ!  p6ϻhA@)yu :Aw7>"t.hucgr\)}swaSSz֯+].z@w/`d:t|ω#w=G%Ҥ 9Ѳ|ZS{ r{2~xUx*H"g4} qڃ!?I)WNhu?P mi[ܑ^Mx%pf0;@($^?sjc0;I}.ӤٞoT+ =)i*DsR&l8K..ݻ-[XxOvϑp F=Ju'4<<|uk q31㝇ׇ%uEHBD'd{xkDU7w?/Zޞ'%4,Txy˖RO_nڵ^+?~;b[SסG(?@XN^L~8w 6'64QVܗvh`uOiQRb& 1bK.>B-dڵf B$uj EPAuswaju= 0C 4=ώ6vi-3M)+;ǩ+A)̎^f ^)-_Ν;SNrwXR _\"T~*h E|0h!A 2<<׸ HO6^5r]$'D٧6QeggܸJ6m?n8n˖-eҿi޼<]"v>7|#g} UwUHnysvxX{5t5;ł)$`Js7T|>}Qm@JU3skא/6:Bv*i)N Id鍃^8j :ޣ_{5۷K!ׯocǎ«8`}LN m01AZH먠 Fs;YL~ >X7!0SC2EsϛF!DpD>uI]#nlbFlZrn87!Uy-Lj~f|5OF IkzĕVҮO۶m夓N2c 8.syW?ѦMGEBuP!j܍w gpWOysbWfɐyG+ԓ.Y k2p[Wx`hРAY[)}g;|5" .ԿR8C>ܘcgg m* ]i f[a|4/pZz&Ht<7@"l˕ko\M$Z]s/I΍|G !cJ-W% OJtj0ߠE|Qq) Ըv@/ϲ(:y{*eo ;s9={LаD\x W]uL2b/7)$B!/s\\oo&VYO:עdNgH9YH3vߟJ d^qkӺAr }ڸqh~^hY<):-H0P]us9]"]ǎkB$5k޴A@|܏>r?hVX;B97d;5?30GE8yfF$B=kvONܫU o_3lBcg3˄:>SȢhkv0{ $*2Q?9,X/p;L14`At:U1QrvT@r6/*oڪP2mA2ǎSu 1PMBq_ߏ`90 ojHxyRKV&Iz&?  cc"2˧`{`!uY&iӦ?ErMXv*-by:Of $[Sa]e^^xgp HGjrITt *Sj4˙gnW5'}5Icm7˄wmyr>disRЄP zhY49_nTiZ7dZMv M9RbJ I B:jjcǎrshvg%cҤIzS5~0{>A #5Tq ?| ߠ'uqJkKO8~nk}چ5zKJ!=-S lr,{BgˊFRuS8|D%V~_W(seݕ[lݱȠ"[5cPKKG gH z^#KԯН'7/]kpluQ-q!uw j`mZu믿ʶm۬aPӧxM;'̃nD}u S>4t5Gw>>ab{ȢMy[StN3FJܐ v .WTPC&t+/'hV/d".jr-_]Ή3e$ '[)h9?yg hBH_ǨdԨQ]t'{9p8#I;{'C P\Zt߉C`$YE*l\{Mzu(mڜ%Ye߲0C T)_cZ7'SB<@Bgd;jYU~NrLSSwOzW_}=OJj +r -D~P'- Au~Q?_hW<"~dGJ]uR5˄t"զ,wn(Y6= CpS@[stT5T/Q甀Cr)2LR~_CLsa$ L I"A/X?, W~M? $|+ZЯS좶G<͹L)H݂HP)fX/tl]ѼWe@x_ϋ/yH\4?޲{zX"((U''DZ__8vO+03L^](V>*C};C*[ xd pK/f{f *7p/y{.FZn^Աj"G7;~ndNc4 +[iqQB4> ߮"|krg=HF$^/%1h%b-4rM絎VMԦA$8̐#)~C7v.Bvm֞5|cհ~M#;j"<~WIDh?͛- (ecV{Dz‡tV'ORԭe>?C]u7օ# 䑛O^'dBzKW8q{6Evv'^?>8 CH(^=vD a#@xBGFo`jHOuͷ9b;f0P1oxgxԮ{B\>qXV!9q|^9Xb|e 5RL\Qޞ#}? .8 B=2  骆]8qkaS>7 wgQy@9v dx緼3{-^Lđ^]CM<gޗb>FU]üB m< T1P)LEІ9Ƒ;?]v',${ "8N21jhxb08G9㡇2=}DYVYpl o=뫦z>KGC&*P_np$c\LNJaԾ#82")2T~gu>;S*˳;z |sۖ{əsOLL8]OSl :w;6B(#t;D{ti绳F-[iSWOn!]8g$lABlO[QG E7Sw[P)YȂR%:o #J'>,O?&mVW 8Iw${媡<.zR5DNk!w]P9P0&|ֺY(cnaZ(~DrPƸ,z8Ewv9lSN)3wnCl)WEEҦy pa`1rF<~G[ `!tDa L)cl;^?{p9Dv$7@,|E if{S~wPԀyj&Sv '߱kR7h>U_K lca u)T{:jҿf.*Zre ((X1fQJn _'Gz/~viyrR=o ۈRh)榛ge<ВRk&qO&Y?HbG\q` KjZz^icT?KgÝ s?=X/|jk.ʔ2p2"'&q zcȾzuO˟yoG#c!UL  (eLec0..|a#h _*|³?yX1;Lo.3h|Dc;Wf/pN u S}7A}&q2S…"殺9%~g ZrkG]O5aTc`4+^="t"tS8^ @?."Ad!w4,!Xb !hd"qZ-ky=8t.6/̔P25TQU Q"j&Lے,e }o };X2Kn5r"d Y_q+=׿|AS\৞zr 1- p+ l\#4@b\Q4-)aΝ 8}hw{|NQUn;M+*U|֒10)u[4>%$vaOExzJk_)CPxF0dIsĹ=wpu9657%)lrjYg7;VI\'d6}=IҸWiP0BFK|1%d$;m}xL]- O@S&~@9ƭ6 v@M~WOopMԋ x:}g,_ ӧjPg64ʽ<(/ބoTBy/ -97g+r‡Ϳ/*zhG qfqe֕hg! H.~{4M#!'Ȃ>; oAV¦2%{@u5&pm n{Mٸ@9^[\yjBҿ?f @渹jB82}02ҾlPg&x ̜YB5O {)"LL@I(3Dfcl;xYC*탼bO{PA ~T]S@ EPM3(ɶ͐BbOrŞ/.Ȑxaow)䋞c6;Zn]|?-UOO 5Lp8Mngo56H|\Ʒ1=)=œT ZI8 ջ5_‚J`w9Rbz Atĉ~-ܘ2&|z'*"X@5f~YAU Uq W8cYr@?mZ+w7p?pC H^Tv=7 `}w 6T s@1A?zw77I0 /"lw3*&SJc<&˻^ݽc hm|sƲVOZ?l@bayY!|YW{1.gMDqBFbOyn3n.PX=S8ýl֭En29d颴 nNҿ{eKC7+[{KC D)dɓew9F9;֌Y,e `#U |#O}oN/4[7 `m|"f ({ZРA@>IENDB`pybik-3.0/data/ui/thumbnails/Brick-9x2x9.png0000644000175000017500000002457213137372605021016 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+),IDATx}yUՙm;O5PCU<8 ŠX}(ƈsIAT@PBD<~1ݝt:ݾ~n{ԭsońws7[;g\&8pg8pg8pg8pg8pg8pg8pg8pg8pg8pg8pg8pg8CǨ*p^Fn_'Øimzn0r麼45bNUeo0\8{Dc5- o#Or<|IlgMu/s~~&V׊wp`CFNzc((3 'pۼYct} # *0QpŜɘ:k:7w:iכ0&2=na üu?1`|?C{A|ἍWneg4^'ςaۅ/G&<1tߑfz_۵`] 8}JecƞGrpj=84N s&PIۘw _ -򽆘-ag!@`OoQalk_~q%Ff]E9 0|#iQȟx?0n3޻S?$kqP ߋyØ|M^9 %u2KSa )"ز!h'`4b(N> }p0(Du0 =l1^'sx€_Lts׀G:<@u@ڇW Uˋ::*?%K y:`|FӼnQ51ŃϼYAq=Q@DM;D0Ip.'Ml)N0(xa 0٣6x@q(!h 0XC^'pX-b)8^cXIuX:2[Sr{ `XE;(ڕ_0hnxUJ]N-6{0:MIyF1`A UPoA5'Rz>X# 0Ts6 ::skK ^(W=&eɂN˻H]u?` Sc30oF§ ñrPF kU` 9f.,aDJqR -Pjn:KQ0ol~n# 9YS7jwnX4 ICP3{nx6+s><` RBA^kNcᡀRp=:^ڤ*3 H&F9oFnVS&*x0Xtȯ\-"@x2^gq5GdHaK!^F0l]j btN)r]ØZ?Or~kJ7\2ٶnQq^yxOb~H_ӥoBNd``Xx:sy-Ix">%nB2藆O0L?Oc MX5 v[B!IeX|"Q\|)I͇Q3Ƌ3"$clδ,C1f%RxR ) T?x kdcoYAAXN>wq `]>WA{Ŝa{&^tSK?w瓞B#iQļ ˯ʈ*Zyt}3qKpyFF<^}`TdFBL^xd>6q=O9o#lJ!^ ¬ס &$IB% #5ZH&5}!+=ԀWdJ"1{}b0umnvށۃkyt\?)c٠`18Va8T)fwK퐙@j^I_ui`^2zLI`%kViW I0 f6DgJ7o<hDT$@4= h2 pŠFj{χ`#?wN`:4K4O(C:A0(iٯi$O7` PwgF167LJx4K@$$ibɌ$G/$Zu(kB;J1Kif!y(6nF\0660n:'cl=5nydcR#<߬]cG@;/s '!%aKI_R&* B5&^QbQ <2: XcIc42uN'I'}hSKfŗ5 ¼)H~Fy4F,8/Ƭ'͆Q@f-AIcĖKiwb}r J<"@KpLS/Ƨ9OP=~a@8$+H94*C{惃y\g h8,_?)l ̥ hM1qxj{{mEMɈ>Jq]5= +g{&qxӥ|Xgc ֶ졺ݚ"wL^߶pޔF7(-pk'0dJ/n3$,' `o9<}1yG0*?] D%0 wc#*?iDsub9\x"@PEŭXw!|_*c``$;wş,#b\O7*mjoVM9&6g/`]{JA|/)E.$'Xc|N @1Ekԯҭ#u7}vT/c沙ƋUuoGI>}9~3$dp~l)6<zB}8#)ihOO}\66tE+O3ˤfnx&&b.-^1haGPRIPT  KT)y_=oV@БEhp3#A_Zr fihSeT=*ѴeMxRݞ%ʋ=狏T(80\O-2嫚4ι9(NɄͷm1A8-yJkC1wS<6X>l nyO`fd"PHe{q\#\g2(VL`)** РtUDB.[Ў,Q("|bt_(^0P\VW䓫,e>7"m>]t-OZLn;Ykp+mZxY/)qm>b|v 60WjDQs0.H{c9|LZ8(Ta5xťH/acպ{oDOc;z75_^5}'"ex{{Ui^n>y/0s Mi&6͢(c^/-Βϛ7@wpOi]Q@Zfv\G \YXb$=O+{F2c@GROb*Ѽ_?۟+įK}c!:'M m>@㯖<"3tIʢ3[O'RjWB?%&B Aeb;vIj n~xK o8^PD =(S<\SZiş uddv):ur'ſP{O`8sz DT=,ü)y<z̸P`(W#*; x^@MB&v>ҒɅ:k8CbN%t8 8=h.צ|~N>J#]Iny\/Z #@\ea溃!} ?) \GB|^$L(?sAZh>ܸ7ۣ,Vk**qΩ/lyD0A~gYc ۸gum|>u8 0k `CрDVBRI%x<-< kD3뜔f4oE0>cϊ{;Ϥb`_Ov4]@W0D&l Tv- aS<S(6n)L>eh9BY@YJp*LLž?6,nF94SV;Pxo)bnZ{Ldl<. u -b`!>y=K?3+Ȋ <#C—rb+6. _̇$xc} F7iv 6U`O9^"/8_sj7zZ{kdHYY>rsAA*4 Ec)^1 a! M&L됼[7&Eߗp-6=:'?GLu3E2{G @-V6[Bb4@ߪɛ2e,KJg0 9wNs-vFL@F}60"!PD9"8k'l n\Nⷹ:;i *O7yiOPQCȃm(5ץ]m8֠W($_3tHض^1<(Mf|J [(* =zfYU*^fkd?/ŧE=%(m_Pw]'6|.}ikפV=dz|16nW3R+7OG:\d)F1`N w'Qb.20 __>cSKа()ܿ[|{m+O@6!g@/CGV"-b}t} n <3BЫg.곁2许4vxRi[B|iz 8IZV8nQ:c ZU+@^l8Ftv٬s <42t,~ߠ-EPcg0> އk?F!" T%}5>khdu dĥ:}/vC}wlt RRlC!*Xљȱ9HUasn-|?m1)oQW]'8;_܍) zL)fE1ҫXotT[Ơ~ Υg;O}[p\d\ͱྲྀxvc^7]9{0{Xx/@]:צ+d60({#pp3dV&iàtl!,v% @s#Yg bԠ755/^P~40]~h, YIӚ 0tOW3^gnPWWؗpze[7Wn ".Ovh,I!'tDj``zPU7MşxTf 5)V^h:/?ݛ# IJB n)愪ZPȃׇ@1n`)DoqJr9~g[uu0u7y<57{?e: D4r :Avk2@< ƀzcda7+z )GR/dx̹[2o/ >&V?Gx) wjm._i<"8Q9@)h"ϥe@o'1)#6醙JPIC2kϴGeg86; WN dn)Bw`mwi2ff_]G@Uӫh`]O)e;=n?$=R1dsĚbbӚ8__;oZPo@ҀL7XM(7CAf¥OƩjlso󍮭^?P=t6cJ4vk@{u#@ޣ5?lc=>@j46ߟ5Jo<7xr/prK]HS|94$t&3\#-E0r@bz!Z&7ߪRm(=fC2L\&-^!gRZ,`}?z.8Q+ϱzEionUzr87q"5(f$ܤ@OGUFHC XX|%*\ѭzXcAaǒ5ga}Ѫ_B+>uM 굩/(R0x?`kZP.CDLY;X0=1^ie6p%K;UyWF| ;%zCeS gS\0pVӽO'lB#/p/P`L,ğ(OV['U./淄UT.gxSmF R@ڜp? €酙FOE(*_0XU nXn׊VSКB^zlG c?'~s4OgbG7}5!T޳{J.7_oԖ:0zwmFn^ٵ{[!`@mf#ߟ`S8P(5^= H{<.n0T8Y,% WĔ> NbMz]UOo2f@jz@ @ ٪UKdfs^3H@vbp4mI£^ոR,Ö``P=ov0W|6||q WGEþ.WT=ܠN`@LnG "UZ[főQF"Aqy]2fG$E0Pc[=CKV%IW0 d%-gc*Q@mqc{!l8.}r)ēnd]I.)A8P=*\68W6vxNLawB'O.ޱ2wbbؿ5|Wğ7s pigےLfI٬0т|P 3c!l~A ō| ?lW|33%(Q$KGe/mwEEUk3n=ܑ<"!ӸTu4z+dE]} -eB CLp0s"#ϕa_v||=|W~u׼g̔v h e8ZQf(`Cg΁be4>;9 *@vcHUy 6`hdȇ^#Bk `y# f=ΔHG׳w؟#` ?=[761-=@@d (Q\]Kz!Skֶ罺"`/NV-2̔9 9k`S ӱ\xCI ncOYG?YG^k_!UDzmÂY"ML9[u4%;c9*1&6s w ݽ'Ŀ)=='_wUENhiv.(JȊ91*d \ =o,_AOB'Oj/kzTsG܌ ϊ,m0Ee/xU )W͜i2K# f %8ד]kҫrwޖ TNA;)%6?&9ɳ|Wuq lo#Hv=!gyS0ӊ s𷦜h yd=L9~.Gzqf9@K=8ʇ Mp p p p p p p θ]G.IENDB`pybik-3.0/data/ui/thumbnails/Brick-4x1x4.png0000644000175000017500000001651313137372556021004 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+IDATx]gx׹kcv^(H :jc D3`Q?.Ilن8#\0`Ӆ1unۊ&7GܔshZm=-3g=WΙ/=ܳ_5 ,'X"e,`E,Xf2Y"e,`E,Xf2Y"e,`E,Xf2YC;R]SVzbZ!D D} ;M&qؔnoz: 9<9@q⊗!p  WՃ saC,Ye%W|mTcG'U4BȰO @'ge|o{yEX\9`2; |ݘ+m"bbbDZVVDjϤcn$?w}Bl"o$ c559 b}aeKNF;@C}pXN9&PrDɀ$VQ\oyC䯄X!D w#?0@8>?6L"s<2c|2`1)))"--M%byx7dh#LWǃ$nL"x;A>T$E)J[Budz?Ȑ*ɐ(RA ó>@LNپ(Rp<)][UᐚD&[@&vuxM#XSa"))I g@x;?q*6a  K/༛D*, 42L,N6࿊se_ cF: 2Jya1@qb|"d08&3Ϫ [Sy/ꊵdxUmKGEEUytfw 9#̘?>%U!;;[Ivן o\OB{v DoߦpgĨ*<@20X YYY"77W(42<24uACniύP81&"Aj*4E,bpb 3PHxa: pgДHN`#>LQ,c?U$(Ñ^H"s4;1\#9c58ĬK2ء nyyy2\al0bS Y>c1i 03,UתQQ|>畖QbdCfv>6hvf_ |wo 1dX/ɠu}4]~LnTdgˮٙmXWA튬esEIdj;epJR&EAA L,hD=jqV'ߠ7f %$˼U9Y3 AH/U1]˷_3 iLn3>316*C9HBQQ $+ m3zw«|Fm=ކ$˼vb&>GAvrLd`Ȁ$M$fW">xiPO/`Cd Æ …2Aka|l6)?Q,'Rކ̶`Ԡזrk4 4 Cr\l(e@ɹ>IRWH$OT!~\7g(CT I['֨b*V"1;ywbӹ  Zll(!%z:)E?wGBQRR"Ib&8vwKI3F<-*@YVr.|fP ?`@rܢͼ@r&UkBGÞs yMd20_7n<6QjSCPKaS5#{+^4~-Fĺ`$v/0 Lw:|f ||B+"148J?{ #Frk=!XbY|KnS_+"@&I3$|\F%r@>{0:6UW">IlZ5" ܢX9R%ڸVd8k(~I"~%W ,A326!]6!JȂs vE$bP !*:Κ2~ +P LG-!inkqa*!į/9NgLfN9NTa&B )F%#RQJ2KgrF2AV"?Eɰd$[ejg abbK{JTg>P!:XD8rܝlݔ@n:H@>qE*D$' $lxu!h-i&KAݛ $1cDiic9Ƞwr!|GDzDe^+ 3Q^X1 (n$ϙNm_Cvֻc'012#0`-/Hs)=f5aR|$$wx"3^v!Zdڌow)Ygnc20n^d$Af1-1<T#]>gRmh=ܩ. ~r˦ִ.c)b튪,T׿|ڑBfQRO\s?|KH nL5-χ3?JUL)z}@++ͥ"KGsB߿b1+mI"?q(13g@ER:Wk%θE,-#{g0FAX` S!R _/kMS8x-1)~~18Tۣjĸ@a5[#YTіC+Np,O%ar $ǪW*Pn6iuRFcH,qS)6IԲ2 CY&T ٕ1OŞQZZ؁PnH bWW"j:q/ą6kqf-p' =a8({&5ϮCs$l6GB[q.;h)?SJf8;rſDkuly e.= 8LaCYO"T&d$?ىR|QJL.F|N{!]H0(qFf+yiFsk^0)z"nqذ4@wfsķ+=T[uS%e\68J1a|uT{ ?3E#|jaue5I be;{Tra+p 6i%!24ᡵFb^{8"} L26>B嬹qtA|Wg2,89^}g:M4?&"5 /CE0vXYQпSC&dm{gIW~76O/m˸AgcpUv  _8wpFE8^".*7r 4P?FKӼcx d13-U.p$.`RbhَB35uq3D01-A`(2ˮ;<֗)Iq-rm{BӜb|wO}NsR&薲NK 1Yp *_/A)Dpu08Y1L|B=-{-<9Hv<4GQM(* H ,>]yndM^ WUdp"CET%} 83sٝ=//p Jy FJ 7 "LR*%P" w+惘'PîA"__&%4*xY/o|`vSL/A>PTߞ&;opJًQQF2xi:RP͗|iRj0i𙧬 InM|usOŧb`틊Q*lf`^>v0f Ik a3WHX[[˿^:Yx@Co@qu l"o |yT{.'<;Çm{qW]l$fںl#+O99eP{DM{ YީN{G@8v e;/]'❆/z !C>j.UjȷAW$m‰fUUKWu;w z+ovE8&;:*HNhzwJ>yHUz@$HXl,ǺFN0YUby,(tp\D%tg(Y0_/zdy.tv&[Ss 5ԦLOhOZm)tCX F8anԨQr{E|rAaV<ˬצDI?}g,_45V}!\`9~M A(J m@IK9Г`>Ta_pIqbv˒sM$gK%m}} !s6.ldƤ<-eE[ '\a)rb]I \0;w ׺ 2L[F>iYLeWm^9س|#dx8P<1=ZxwmT*bj˙7t:K1]X'TRI \ U*|=A9u;O^ųh/K[P `K hK5nvhFB%X^^.[ϩPy UHC'rPi||*cKbnqb_~{4`h4=]QٖZL8ʻ'vA\c%_|qpļ}X]>bEe3C$ ""tPdu;W(^'us~{$wjSf%s(#!M]yFNd[rmw?6ݯSP-hr?H.H`R~r.K\UK=~M櫓fn'-0> 7r @GGw]<a"RkL^Dx\oi8'zJf"p}]nc[v4VG;UP+j'Ƿ{0.LxUCL֜-*nXxon2ȕ{k $@rBҥ'z5?"@6Z`l>Av űWڢ<*ra(Pg`gU>r~6gFV[2En6buΙNk"@0aye3}rV T|o%E/[ƶF4n=/,r^W/{ $|"/%EHD0 `ظ4@ 'iP{RY"e,`E,Xf"Y"e,`E,Xf2#$IOIENDB`pybik-3.0/data/ui/thumbnails/Brick-9x3x7.png0000644000175000017500000002347013137372606021012 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+&IDATx}yTչNs  "3 "(JHbiDh_}o}In^^ާtuUA]}jWַ V??뛻Cp wp wp wp wp wp wp wp wp wp wp wp wp \"570~Gm~{=@s)֎` =OmY_W9 7-&_7 zW G2?oJ! _kX>Ov017~um2|<O=`X% Zly10܉@ %VIBC_\*s/ŻߐӽO@ߋ5/.!m0l!ی3ג!Q[fi4`3ƟOX/e>:ЩAuz=$0hp[^M ,5B_ƺ{xʃ @3'ff$u+-4oumdzZ5#\kP&3l6aQ3>SûW_geLcW;|>AV9'ΒSy;6{FHDu~G?8`Gyu3 v,?%Y!0$QKi($ SoBq8Ka (͛2K(۠W/<<5a1vE#i`_Ìb1*BZdK@@ [0d{Fx |Ob_:vЎƷ=m/aM7ý۞.7F S1?>xO0P<ױVc>MpHF{ϗ�׭pgv,@TvS[t0qF^ãMC{;Q_FTe^;Nߏ.O>ڊƿ Fa:wԆ FӽSa$ps=]|e[Q<4=[{}0${7ðCaL û2x`fhcb UZEyLs,F%@zz$Kab$BJs6h?cMzy?Gg$;t_ab"ar|Vc/ÁA0m.CCxa[k2@RcԫHovUɒ؋%麢OSezcH\ȣ <϶SَC@ 㐧88()YAl fA{;+Q/Q_wՎsCs~0wT4Kp S`<"؁ed(0ii2hO ClqQ<qkB0ֿ# Is 2: ~`N 58P Q6DXX>p:+SJVyP$'ӈ,1 Wn@QO+n{̡@|'K<9Xl;Kl`%֕*Fwy${n`|{ O_h 0 H 8DQZlO<19]f#f!+$y,&DC{@;Tfs22^ Gȸg)w\:%`,߯3fE%uoc-0Za*8Oq8{_]o.w*#vQam^i3 kLA{ӈ`00L1` |\W=wsF\ ;急c1Ӭ8|9 _ H*)#գGRFG3Y*/^{b* pa.BYnz^ZCZbkT}RkI6W);rqԔW/қKƛ%\Kβ~c|Zӷ}ڛ!TBƬtF5k>"# F1^_3#F4@o0f} Sgx4yUٶ\ [ 0$Qg8t}pD3Z?>MNôt0'xL.藿}P:WmrPTC T=r4;zf/KS3?`mRْel.z'#qX.FI Pլ 7obJKY?(ZR͐4n4>=kX"㙾d 1r O+o[GT&rƚ3pu>sXegrP)%wЋquM1 |&" pA(~u[ӎ:{#ݢٿKdkd[a (P_T^) X݀Lº@ D. iU|Ld`OQ~BƼ^YXB+vB:PܡqNn`grBRzqRSY GS su6>+pdZS2i*M`~vvT_~3LX`Q*Na"K!ʩɄb>;}{o'eʄg2rP@V͉ `Sw(6ܺOAB{PK @b'ϯ7?׎7IFb퀵Q'*}c`2>+\~O8!<[dv(pPYe=69L2o,AUH(}&-"}a\^ٜ',I2lېpY  9 6]ߥ<+bݼ aՔHQfNc#F`jܫzaAsvc\Kra0 Qg?FӄZuOa!ڇ%(h fj[iFny4De}9̈ȣwUYQɮ"9~X>.hTGFY*;R ˠrM 0UIA͞;*Ja U( 7( %2p:}^lZ[p˽G/pQU+'K8΁='A-eP{/0cnZH/=}QxYQs-yؗ>]ؙD-(ErNfP{gP/GI"_Tɨ~ꄬ9"IWs'Ě#`b]$ zg@>Íxtw(3v1IGLCuX{Y{Z)P8.q ``>3|1u&;K%ZX?n%c T>:']wLj`"W<*K `_Г Z '< o.=*lSy'=7dfRTڣƹ SEݘa=L(w<=n6ψwR z,^Ta~U~k!}z< y 8@w͔[HN"\nRڃ1N+Z]ioA,֢P^PX'`@!VE&ADtm"ͬ gLiǘl%-F1ǯ+YdZ)j=LL3ysJ.(ʯjgYB ȈA~%rRTS~\!ΐI?~q}rECa2P_ѽ 'cY;q ~N%_yAԚ:_lAs,Tn&:CQ3|Ey;G)"kooR?5K$l)[ab MT]5> >oC9tU ࢧқh+aufI ZX!pRsFbis+w8 /U_i'ژ siH~F|qI?qקGz8C@J,tibt"X!ͤ:Z* ) VG tpDd-c$@TY СsaSj.5F>m9W0>˼|ۄt6Lqɐ<~ bC_ ZۦR6J 4\*/Vş2tCȐc[c&WC#A!xk8 YyeWf%pŦJCzܰ6=jV!fzޔpd1\{} "B{?:G*Zk *>7m=owQCl/uIٺ>G\'eޤm_AZtd뚼ɱfz*l%V'h< :B D=|wvCLaz X!WnLC!$U`VyװBE*gG$)B]Tci) cuӨ89ocm")vGr u~yoWR$YT4.Pq~J <:!1srE"N MGեf u2*,33Q+x`E_} @R@`?pTgOë?|H檉)+}ޑK)O+`UB/)ӗEfESE]55TPDc+=87@VEԎԮBĜ,R`3<{TOPo)zZdJ8Fzpd$'GƁxc?P+⪱{{N<+oHt?3x k7$zG G4 LgzF R6L137B*{ݵZ't3G DI\ wp|1/WH~Ғ R`֤o˲YQ"yg7~Ȍa77"g7Q1@fրUDO#)-i0jHR\Ec0T@Ǵ1z[U%m2;K[rb@|ƶE?S$dЀzaߣr&^3հLnN5zQ2Ut0T=Vv D*izO(^Sb/ïs )M̞V'2>(GLZ U~%U x8Rݎ6!pb7FgRL==:P/QV2rvP$aZp2vX 5_J4 g3u_?]=vLc)b8Vi CĢeUUt6R- /C|= ߐH&p V"oFrvTx@˼\N:?L*1_U{L,lߢfߙc|{"LcQM0LMЩTL0)Ipq2z9] D߾y\5yꆎDHCj =H)?xJ)DRYE$قŠH0Z01^+8JQԜ@K FjXψDy .dT灛Ntwm8gxDݺ&XsۛOt1I`պ4MO$GcQ`oKǧ|g5Z^hkv+1%G;!=%a YBJjnB_FF@/v7v!~2^xypoR] T{wT2t5LءF}+߽sCg9o_&+|kjkid+37fT@Hg?=#?~D|kLg3Ȍzp)-UPv%>՘ W!dy\\A6 Yҿ'-A~zc<\bi6:m\ኖ*! YH'%SGСJ`}:k o]7Z1C'f}L$f C%ҙk`Y =Pb8a :gt %D'nP "ЉjԄ;T>|=鬆E X0-,XܙWUi_Ȭ@߿SKgD؀ 3%߀h4oJ=kx彻< ٪}.].].].].{.].].].].u IENDB`pybik-3.0/data/ui/thumbnails/Tower-7x10.png0000644000175000017500000003275613137372537020667 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+5IDATx}ge]ծ<=9sr@d$#]ٕ̊ńDEe5;wwok/)w2 U{6JC/(8xWtzw>%}>j\;lk6Fy6=C<;f;٘wZ'$d7(͓iyxr~_32QGBޡEmLxnT,pT^!do  /9?iޡm`|+-6ޏ_eW?F.gs̿R`mP˶h${);,j;`bH|>Pieޡ% &{,1 y0NOo:2~;3<6}8T 1=|:W2ymap]Ԯ CG^;XW6}l'QOˤ 3~_݌8! {k;v4S03{q3 f<g#Ž¡oޡ|p7;fl4Qև9ucPL!#4Thؔ^;ؠw|mJ8  z lcU^{WwxfZD;Apcy0vS:\Xm*acry@!,l.=9dLבm>co$bѺFռLC7ZUaMrw=C$l/;{0s0?< L3 }Ԁ`Y 4|/ߺûkECs6u1nw!>C` |^㡯"wkCPC(0ם˯iH!%:lmD} ,xxKG?`'͙D]v׊VShsFPq;n~?+tyuGJ9G`c׻^/'P/b6-D2 |cGpl ]m6whvŜ ل]=@|=kWdZ]CH38#;)#P2(v4 r8Օe@ HB6($ǁ,a/a44Ǡ.QDa0uAGCd" nLdxo (ݾ&FY9Sh4otjwd1h(2F,] )v)/R=ۈVido<  uv^VNcؽsT1(A<ȯJxWw ! r(ʡc0@a88<:Fx?kŒO_VоC0Eɣ/=ZlA.;"\"Ҍ9_i:r|yW؃7j7:ǁ&0 rrgvgh F&wd)i? 0/d"T!X=/Lsҗ_5UVF[@G 2PFblB&noһ,F]x q`7ȏ]͙H#Zt= Mƥs᳌e{TVg|M !Kj9*"fHAh+G^jW#b~UU0w}`ۣ ldc Xv{paXCi9ݼ:&!eu\e]N @v*!q3+C!dy:X4=3DԞ}]!dBS SMp"!?=oh}x39|QA_U >Xt6Ȏ)?ata7F>H0 \{ ؋9mCq.qڧiƯ%POfX'SbU ׄO>YpZNUkhg!B!=S 85_~dO cKvЫ_.kGY_Nu|"l $:YrdJ (K5IOT[L &gX={W;H;t(CZMWlznɣ|rB b:4GKDQpus⁼j'98DLu ͬ.0Є/o&rOpH g4~\k[t[4Ϲ:(eK 41>;r%G8Mp0o,hw^C= Z:>gm'Ncpha柯x;_:glpJYIL1a$N{_a#amtKzA8QЁ0Q<๗muO pוq 8]%7J q2Xn$Gba '-~.bPLCv"~Q-19x%vBE(7mmD11uC:3(zxg@ y^Fh|/KiPo=@y_k* Qݑxo.E>`O tIS NpVAa| N d|oh|ZE / Gvs@&"(=(`(u|. ӿc&9;| ~jnOJ7@Bx_TwQɾ-]a0< .4(HLKx)z[9~8qVں~!;F%fmK EFGBGqM&ބkAz`?38,4W;G3Tu};ٌ/*n|ffw8ϐfy}P0}Wߖ?^BLҟ.eBtk[WՊ RCCTx ;EJ8wo Q;\/PdS041F2`J c"YrvJ9Q8*/h[>%,G開cRyisNS$Mw=z[*0cM.f/d_6lW2@:gaiZZbp<$`h d6^AX->r{V2`3 M:̱F_9>b'/ ѢW™Ky)Z /<'BT$ׂ# ?Rtlܿyrv*xSd^'i`xΪja}Bѹ#2#ʔl}- )z&GCqXGR.qAsRUQV?>$̩{T'肹JAߙL`O<|}k>}[q:~/GThn_ p!XسpCxW6P\xlK|$߱M"5&а*MJ4>P,Eyd3ZnJo' $U*?D׊LlJ7I@/h$L&QlL6*oр@6 &ҀL?Q!.JN.=gRQ_z0>9 Рޖ>x =Gvҩ=-vyT8o(ksGIAtaf2~)qQ$r՗lUcO,4d 3 d4 5T;88NL͔l"πRbeʠ֭HJ12¡xnLȵ2Ɇe>PL b;d*` `S8o)P@2-ΏDoICpb@5t:I<W4ܭD9<%Öp_:.Pe1aҷoi% f1Gx)Us9r-BŮ$Tm5ְ¨v* F&3{0z 3 C 8!{1B}TL/ VDu"A 33@V0rC;%>z&OnB/t+a#-4qC1DR^`x`} !@աV G]+g2$\ 2/`6 fvЉ:J҆T99c*v4 c2Y PQ!Z?.+ɣR5ZQ =2z2_jVD8oԪ9 ǃA0+vaT# @0ߘF "%J) ;/+r誄0Vxwڸ"!C8zHR=tv(5eZ<5D3Gx|*LS ֌I.wP Lhl8Usb,SnFZA: '| TZ*d{~Ŵ ҉ҮRIzw/+wpf?7&(7nHh}LuӘAM߮nUv\ɸj'B1A"Ȼ#.r?1/D+A#AңUod=Yxyfo,a2jiA'O @;WHBgl-Ae!x1)aNb"IpsWۅǩTLBVÌYl^*̾!Hag.?S )=`HJe+'Rȿ[;t9!Cs},~]| aˏNUfG~+b`h)T yg9f:![2T{)( (R;\ġJ% q"@|>/<]7|I=W6/~vߗB& Dr vJ[Rw70r5b Q%iuȑ 4&jxo6 #@43ՉfiIf&+!y>aU=>ԋ?C~x>0a/ѻK0T@- F›F`\^@!@k\s75$^T%sT`VPdp()UFkz;)\srxn] 8̥sB1 Pq@ΐ`F)Azs*ɮAW9qX@{4v\^{ӻQH> p~4O< Hc"ښONW*Ќn_`#eAW H3m:~͈PDEg60t1p"yjf@BhuAh)4pzzٻTEs#Z j@1o\9#"4BwnT*PU]U+m߼`Ԫ|*1ՙuUPBfA&2|"BF弾\ޣŔfI;2FBN#:.GG~(%­gѺW$> }P(iߌ1 uMDP'+7J0e\ABz+`A I -@P'@[qX9a^UA ٍRHۘyHT}wϱB)!-`?O)}s'F`DhצM"t|X:&RE D5[%TkX]к~`PlK:9XâL@rS=)Rxbuh]d2ȡL'qhٓ*e;Ul"K`$]f#aM6 !S @^N Dl0IIMLF 8;7fVFTJ ST"TO! Eϳw$ =>{Z{~9d,תYct/{ {wx|sX)| IjgcGFƏ0N WDz7ܩ#d |g|BxeX(lA>&W'EBv!Y`1iR&/rnj_i`$*\/O[ItF&Y `T)fçG/g Ǻ1߃7$h(=~KB?qĒп[*A(KEM6qp˩w&jء YFO^p'BGGţ^OoBEı.. ]JU1]wUq]AfW_y8_J).pLP0zU 5̓WvL1S yår )@ FD4tV:@y!LJ&{5Oxò?YM!GanDz%MCy[t?WHNZd,տ+ 5&KPiY]M  d@oKˊ =OOݙ=x2Cb>rK"Rد_P$eCdZ.#2GdɸV ՄFZPh Ql?P^z86ҠfS)>laD*u B'Od#Y*2Cnǯ̤vInM)`\_|m7%R 6t=t}n4G,Ԫ5RF̝.L3A S#6H/"#Aj;^7VHr>!2b!7x3/ri>-[@" ڗi󺸀涤[΋T yÕx˩i1ffƖv8>Tsl!t^LJM" F@{op,^:}XjB'zM߽_Fp@Gg}" =;?0~1& G/L~Cvg{e64+6pйCT'9|+H)$ìfj>Œ]7-?؎pWW'I!rd@ߜ9D/͌D 'JJ@*(J@@+c!"+uЗjC ƂJ-3qb 3WĝrtQFnM3fH# |QFEđOPGr x ':!=X5A!P6($ tV7PGƣbdw$- 40.$/ |8ϤyҘqtе/Q2V?aLXΝY1<~qK _jJ^E]}j4RZ,CySMApz+ttL B+k|+`$C*~ b "Ȉ)P[ZܦO;6%%ODJ Xu돗:31d!6)ӘR;bP!Ã:}g !dj rf5TSȑAKA02slp讵9fQ%)uC`qh R8\Jrx.: aTO FŘi>6[stxMWd^r7D$RGh_j'cfV郞?"9@7r&p~+)+$uǣs\0/d""6cb:aο`wnj^"  (nA)II`h!{"gg(4:y@GnHЌ1Ie ި>orM$PH@]Maݪ܈ԩb,AF>qP&Fu1y: H2GG`.WA O dfhms0~]W{ "WSAL 9%q(]CXI\uF!ȩ҃a5"06D0|S~;_"*"/&048gDIa8dxp_MESH? v/~U!q׊C=mf+H8"@_D4xxpQPZK i-Ie*'oOʵ;w(_wgxAsI`ubTNT9W;{})=vcE!%g&\Q bRp67 "saWKkP>9@`Sj jyU->0E;uvg(۹!̯ݒv Jj@zC u:@砈URBG?G^,UCt9ԍ'*_ n0Guؘ*p?Xe^CpbfFx@U!pV/Fai~.G ce@v3pLJI*5Ԝ )3w:BLI:R5>zlCT}ܗ+#ϋҭkr-ͧ*e<| "Lg8Q<$*T1S많%<@4H[=h /Wq8]0٢\7P%|?YH]N-xTC|"ExC;aBL~Rh 7rU9 )[y磊Z˳I #_UJ4SbS6VMrsZ<\J~xn3~pWKҼ9EHk)2ՐOKOжжжжBBVOs_PYIENDB`pybik-3.0/data/ui/thumbnails/Brick-8x6x6.png0000644000175000017500000003245313137372600021006 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+4IDATx}yTյ#ԽzAEmdFiD&'}FM;(Q*ڀ2*>1ټ{1[շ;4?[^g\wܑ,@vdYdGّ@vdYdGّ@vdYdGّ@B[ bMc7f-^s?q~V؍ 4e 5< ng%J>~h] _ z8v0%NCѺv 0(T| 5q0 ĥ2:2;sj.2|*@*(Sxdzp;tq\ws8#>I\b+.t;Snbx)Qnๅ ( (ͷw*M!?&*_Mt\bnCFg)MƟFssc70Tt9ahUs6nwȘqi85Q@v t8s3%he}&q_wХ7'kK)@@,_M1K),${ G豙Fwїanz=^s801Fq@$)TIޡRPc`ɭպH7|>d[x;83aB94Fzd(&pKiy?lM^@Jf]>!@Wi2a,dTq~aKACQ0,A&cNk\iutq']xr==6mo8rKlwLhxt /#ChR'<wQy@{^%-U<'*~EBEgn7Sߞ&c@L`U+9d'2dj%Ëx'vޝJ[Es:bĆoIlo=rpLb"&:ɗфT)0KC>_e U)7DM_V>ދ|]"T |^1V%Rmx׹pdH> 30׃w|ɘߣMAj>!C'ӽYݽdlS R"նՃR6t|W%112~>{qM BD~Yqx|2>@h >&y%VC. &0vl" UC&x]"Jof= j%_E;aۍ8E9H$"wԺ+7~]nuWPߥ Cŕ8ޯP񻄌/D?D׆Px=8A2&6Vrrd;NTh n4$I\LY_VCWe'!{dg>v)ݰ̫ ƃǿ4zɅNWp6x=H T&n76+PZ^JgxIJڰ*)# y1{?8zCt@@ Bw9g@gTn<m,0rELv Fuv-V>3ͧT@aTӪXVWUGр;?d%)BC]NFjd<^NB 0J/#uۢZʰ2A gw"u:K5Khhg#3@ w^Ho"v6Gn M ݏ>v-x.<4*~4 Xip.2<4ہfjz?&qQ۟D3]*3C<E2&{]{dJ) &*R@>P ҵȣMW+q/@zZ da/BCf @FLrO4Q(5yūɆON+{!W"4W m06naČ`+WD@ڃq /~v l3.}3٪f ߥZz*.SP#fg6Z xQCe p~NS2JNN@y.Eb̍e4!sVBI0| &#אg(mGCy^am  a0djE`͒L@i+u؄,Pz2F`3ӽJ^O<nܐ87W bSKS`w W9AM*M1jGr<0H, `X}iE,U1:b0~2X&cg$=o]Ֆ =XȲ9᷒@6ũ rCb_3:L;HP#>MD>Y/.:! _'VK܀7b,^F+BZ>2|۵8Gԗ72D6&0`fv.Aɟ`:T:Hi)) rY D{#3!4+ʓM4? >*Vp ^~6~{+O8g`<{hop^$ 'ĚC5OҿR+ !&リ/:T0n Bܬ @ԄN¿Ibb*{E=R34xEM1EXđLi~م;R@CC7ރBӑv*-LxvvU@2;!nx戸nI@J CRx{gߦ@ؓyuF00j{ k ,Ӆ2Ah*U\qM;]8R=(C\J=PGT2ʰgp1 y 3?ޡx1A2ɼw }@TϙOƵ{ ?V`)kgHҷnIPl5"!$vqk|c52(фo&K + a8%LG=C$'(YB." %:<tM$J録?_)^!!Tb\h #Q'h[ 9S }\Gdxd6poxLo7䊞ź?+xH|: %SMRrƥ 87 gOGZk,UYnt 3w֢$BJnD m\4F)qv;Bb \Bw!6gXp>-ħb9vo<T/G*(y@ts1ҘYCFp  <b(FPDl>U;eN]/m^50<]jqY"0Gs*`o =X {.|}t}Aޑؒޠ J}<ҮtO |RB]a|0+B'{bQы.Jd85k'(NB CqJCJ#'Duz/Z!C P.Y%j3PevPtӪ3Iu{]]բ\E$kCxb sr=/~?&/ğ-b0tw(#CbBc _Px&Otj[8<Z'FO%)!17wI,L%J3D (v$bGɑ`bS2~2ޞU *M sذJ@K`05LIڒQB̢i^!>+c|~@L-2X[ 82|R8 /k]@,b/Z֨KXl82d%{Ţ|rս(aʵvSQ.>ڕ/Vo0QL5qe$hD+~Mp"߿Yp}M+udx1bCA($Vw!܅< _˒L7@kD`g$6qB/Wr@ĔgݖZ=?qt0=dܻP;Ř< 5FLן_-)$@X(}JC7ĈAΓNy]lUk 0Mc!ۤedEə-O3Ġ<A} zŕڡZzyR~oWYi9n4^hAR#0!o+=@.8">sM+\%e@y@0p ~0w61ǡ ܸ]1>Rjb%~q@Jr Ƚ~Xoo%'EoW4/nl:mD+V0ArjuPv]3T`2OXd,\ DW ɕ>Z$E* Y+GR,r$՗!a9H!oWK0w^*\(aկ B ?#5}[Ol;xUQ瘔x{3-}T eXb5V\SpJal d`50/̄=ۆ1/[Pd"=L ůpueWiw!zZ0lJW0Ӕ*lxRrs Fw}* O*.U,)d0ԒW.o2-""x*9(EwȘ~~6u|q/~x#+|#\\}!W#7:?T?SP >&yR0*{7Ÿ@vsikkPOҸ' ?Wbh{éF~YP3Huzk#!^C&F@9KpmmL:3IKW o.CC,[%{nx6>)W!r~4y)2?YS0+.!D@hB99'7nEXO9?|0{t?6 K},6Ɖ4]@e`x_.uIUUA,G˘ks@<6穊`%@ 8rixuLg 5 w\R  ^G(/h!|k(GCe*. ] x;b|?77Tu*o"`v?* \}B[&D9$}&pPWPŭ(heu`<uibn@O^~e~~~XH?x{T' "q{w\xXE| Re0Rߦ.. W?^ ^.Y'as'[J9u㉵\ד!α9+Lf*qcp dWԓv4\UP݋|cr8\⢐ß*".pGN aUUyR'I  XO!2"c5"(6چ KF+CJ'2t2'oYPc?U9mry}qC]'quY+b1n Cz=/)|G#u_V7R\F0Z\0<$T}W%'X5\yU-: 86:ƪ C X=%A_I|>ٓ b{^oK~.q?D x7Lϕ6w>d 8@Ny| ֱul3.`.Аg`ׄtۗYI}8&fR`x,"+cr/_sbrه:O/)4tq]̞ز|+e `, A6Fx'm:QE{G̚[ѥ-A":?MDHǸ9cy ٽ2R`/< 2mV &HAXseC,0X;T< !>PL o_^(>W*_\uB\;?(E~VJPL:!G@87R.l;hJ1_@O/UCƺ*[^3=#,ex{N:Cc91 LY͑Bv) zO8@0zK{]PZ&v<.j`߭KB >=TYI$%'߶wp]Ӓ:A@-CE@bd1BRizt5}:KJk O 278מag@oHW|hFZNoQ V1CnᶆIR%\BOh7D'!1n1PaBrɃW` S===2Zs67u7:/sO^p{e|8wG}{2޸}t2~j%ՍfI sQ" FqV99Z5ƍ"88"Pq٦dM&Trݿ, ҂l0ž$0 $|ͪ—'# g\2 Qht]?W,xߙ?_M}` ʈׯvHn$EgԦ߄b32p<(Zrꢙޥ++_2xS?omq~nV-E+)XVÞ`,?I Xq펚]m}}ŁfL t/`"8&= boBS@)4J;Ir@<ۓ-q `ܒ+`_kaW+t)'{qKYݹ1Ǿs]H\8glVF/p+xG\y=grC>7㠗5x6 Rq{h%C)` w Co̔ +Ds .A݋ ֍Cl 8ᘔ|(j::f(zG*-iRћ+L@:3$nD3u,D\E>mz^1Y!N1`#[}z~1q8з\'m0S 0ti`It-k,H_VF/q[WgY0Y2>M}xtJ~~d 0=]Iauѱf ˷))՛Hc> * 7xGe:zJ63 NHt`*.j@PUYeo(t\&}֝rH W__oWR,[-1PKh ̩$@U=249=qC'1џaWP( +[*Nwi$gj $ZKN/]C6Jf`~hDꏐw! [<rl$ovB@wO,0> "; H0<#ە)"Zҩ,-h|<؛xx-I5q6x24?>~9 SʷoS< |[O[ + Q3[P gI%%_Qi&*_:P!w 𔸤P^>O@=@L,=kD KZŶ]HkzOqL)sSo}f):ifʇu~quHx0o_XKy:$ jgIP q܎fV[Rb#alV{M@mUkT0nmMC,/)Sor9[Сy+a3 Ei)տYǻfp"0Rƒq ){n#w\ BNJ$~x nPq6u|ٓҼ|c`MG놮0Oc3oB˦à!RIt R~'t9DBgS½[u9FU¢FQZjbF~! wHqz1at$Qsڻ8+o>Q{ |&<*;t}YD w8O 4' FSWgӽa|NűW:'Nl`=a+xB?~6O9EZn%t~k,:pe; ~;f7Wkw;mȎ,#  ;Ȏ,NBّ@v|CEyeIENDB`pybik-3.0/data/ui/thumbnails/Prism3Complex-1x4.png0000644000175000017500000000613513137372656022203 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+ IDATxyTTgӦmeYD⾟o={ZH8֭jUL(8p :(@wA TpW~}; fy=s̻[Kq77 H H H H H H H H H H H H `?Ȝ3Ӱc왆+$ӓ1x`4Gt :@b tHr=!qm86%drstőȽnǿzn(N58ؔQ\C813f̀N:1 B0XK |}/NK81֭B;}N۹ʥ|Hw|7 ܽ? Xw=U@g|1yr5:D81;L _WHYF p[_C85[nv $Xh^`[ b#߭ 'FhՌF#2_w`+칹{wwJspbc"->>^bة?| aYރì÷ c(I?~\T/^5k]Iq` |Ic7|䀁pjd 0o_ Y;! _#P!$|Shcc#,XR(]tɮ/_իWO;uHfHξ$(++sXnnn???p 9 ](**jS9%70r{dyAž= 1pa pl]OHaѢE`oS v P@H7I зo_nJJݧ@hhh t%$F>/^/9V )$l 2`0c|Kxut,W5P H\ߝprJŋ` /@ί?Ư'@RJ [ ~!%WҬʠnjaR?!-Dpm1؞(pY/PTpAKp'Ц/78>]R`kBU5СC,AaeR _pww?oWHk) n gl}7%KXzziR.Z ?ߕƹeH@ dŎߟ= z2O~7 ?8Nb<ϵ $$!!!lL2k_|O@ήr@̴{KHrr2 /§;Yg!$qD-!#x…,|///(ݠ, [:$( ٣/p׏u/+ 5 \fcos([ƫjdZ`,nlqƁBh-Bq{ .@m6͛EUxT9SV%%%6 2ġaGcwϪHpQԧO=C}-@_>n;?/IPXYNLLdA/[6l0׬x…şYxfx7lh ̙'NOko3Y9+ ~vD~Ge+~R1xnݺ]@ol#Fj9^puX+$$%Yl8G9F)̤s}X=pY 8nH) o<{F2Šyh}mu {LPTTز3)6Wi"!@+^t P<ȗ# A)"R#ܹsvxg{"npT#$0Ƕ BJPS_`e܎Z AP6vX6xQv--Mk@  (:+v6ph t*f ]T`„ (=|Wo%ĉ¿z< oW8kym *&@)%1P`Wkm62pō~ rssx"~ O rrbQ)S_ O`W'-4uT&0X]"U> 0~MNQ" @ @ @ @ @ @ @ @Л@$A$A$A$A$AdbTϢtIENDB`pybik-3.0/data/ui/thumbnails/Brick-5x1x4.png0000644000175000017500000001520513137372557021003 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+7IDATx]ixU"UWKڲ!$l.@eE1 .mlviG4ƈ&6ў}fLwOOOOwι*!T*?އPUR{Vw}8C&M:4thС C@&M:4thС C@&M:4thС C@&M:4thB xn1H<5nlx@س(ŕC|>&RRRD%Ȱdx1ZP_ U=uݸ00]e# :t /| p9ȰʸH#ct:%~Xv+hUY^p\T~wCݶx 0ns~$!H**( P y $ߍS<2C~{] xW.@$&  EFF$@ʰM)CoUx5νyوz|?XdjXJ<!{\" Iu22P1xM]%A"b%F~(%!lvFe5Ԁk8[ 2\2 2loGby6IA]PT .3ThtQOi=`'Pz'N^y޷Q:2\t>a"1H$-(0PEhiX6@ ZYy<1|t`53n=;1+*S/0RSy2p- ~q91v9@ɕ~o~օ쓋nD ևLY1B. Yr~o c8?dILzŕ88.uS5d~^D.] C/ )% 3$˻lӔX4?$QR #׹4-U!++Kd L1q@%*Q'q?V! V ٫Ksf62/v6(lْ S!"L"0:s5Q{!Iŀy~s1;)7 $E&0<`'[vǑi(i9Jʚz%kNBnvKC1 G$E"F"ǀÀopyd2 $.@) U} 2DƽM|%8<7Zv*z+W˥I͐ eQ,4 Q:l@r nS])6>@6U%c2M}_Y|4ڿ昺w* ñܒ>KkZ:zc]yYƙF>"K mpݮHϦ]I7p;cwcO8쬉Yk( *ltTʼvu.A> `K%M= 2|rZg @،If֓4_> []d(OiV 8TbXDuYeFsh"!<=$'rp ̾}]l !9?7+pM΂l@t,f gf>Ѯ <e$g:k_{j?,HD7iܙD2xXaaa\Iv0Ԍ-L@ 4 d% ,2r? RspRZR)d٢XK.m}+@/5t$8 ĺwaOXK;c>70L0H%QksnV2T h)+@A*#U@7'_?Zi4_ԧӟ1NeKR,Ȳ]gxlq ._>Z<10vÇXU\Ug=ն\S K@HEEE:~f4*=*G>wOSKU֌G{'#s~)bv_o: ],BM0,`+a|P (7?mrf^CHyN'9[k4@"pTuANd=L43nsijC$#bڦb^9VóTT Je1?K>)=ٻ#ܟz0IǦdso57ʼYF#Je!$Ҥo9'~؏?3e&F}٫T5,G$ ښՆ_\ثuR:4y/6k:z#E |̽%̠P&4ɐʩ*Fx̳(G =P$X} tt`CRyBL:C@n|՛z;C"}!N2&OklpR 0_(qG.k1&A>!ǜf=TxD#Ql@ mtL$ ,nƮG 5WKS~ߙ-z())2.1Dd!R(ӹt]IƈMjUd=4mvm+փVDl2UYҼj*܇$P1i⋃ve#w߃z}9Kym `G*\ 2 kf%IeZc-ɂ?ψCq]MBZ $ 03D؜R/|?Gs 1eHNyTLG7J%*FB|U,?{+d?ןSwL`Hv[lwnZE3u4<,e#˳D\qǮ"eulP|Db>U5Va(k/vXGBii(FHߪƃ?^$oJsbtU5Ik20e}b= 7$ 'iaޏCU@ƇQ)Xngkb>ۯڿT&qw$< v{ۈ7><:T 6Lr,Hza%|=R7GEsm DH*vH^isU[n_$q. l%1Pߎ8x0mHl02AJg \6$ݸC{pTCZC4oˎX2/U[v]c tfcjkwEKMX* A# c ~g$m8WѦx|'f=?`:;~՘o# ņ#"'7{,eSۀϘ;#֯.n9ݛC:-ue{Jo0Dh9PRT )ȶLT 6U T2eڞ~`S qm*;>bJ$UG>Ww'GL ,FJ0ęI AEN] Jf#qԸ[AL3j2M#E+ ݉n0td.~Յd,å-b!E;~T[*cn/o||;ql=[^x((nqR>;@{2Sr >_-&F^HwInA2=s_BFpW-a7=xS’ o3"[5cJ<:-UXi ![._NDP1`K^6X5|:A"cڢ7x~ aLuS=O,t"_c~'pK3)9-35" -H]n3ys$Y$*A~d Tȧ`('w*E0PR4ʞF\é>7J@B4ԟޒW?BUXP] )Ob[=U0٩W,0k]~S5\u|')1j!>C (iaguKGfF<@NS|yʈsá|ʔꚚM\FN_m$Dez(rt"$[3&K`~-fa&c&f q?ɪ\oȒERQVV&DR}.yd*_x3~J$iD_)łY^koW7pE}uHZHw8d a, p Ta!U;H 4 |ax=Hye6w?{/ #};nߊļ9#{>(%k-%}hHM`Րj2٭gWА39UD3WAN(y3r;M=C_S]Gy็*{[BCye݆(%Q:mD PcD zuhpAgwS?S]> 1k8g*!^*o1+}Xۻ{{寂ySmժMBKy>Zpo+ˈtXEC%q0NH4>#U1o+ia|z77lv)j B`p97k 0o,%#Er~q!oQHzWD<{ 6UVM@58f!5r ~{ٵ(^K?"v!%br+2JsWdp*j~SC+b0ՈGECZgOiP*LC{:Q+[JbI;oy$wbמ+Ω $(W+SS}WeD-ed!$!UP(ǨBc\⿸kk/>UKA )am᧫*vS|N48gb14EShtKU(//q4ɕ!+,pY s⫃75 āԯ_4y~݆PZ?hV8"`IL1"k ;|L?RBn{6= "*XQ*Z|?9[8L׳"1p;]wN*ɴڷd_qH޷g߿(>R9XmL5]D ܇ڗ@n/3g69o~OJ6 _qGm %.>H|qmg45d/?U+wH1I(SHEo!@ksرoK>MJɝu(%Xdc]6N!m{/4h0E[A$H.Z)ߵ|  \b52V'NZ9|U|U>MC長Vr+"[;”#\>5؉ϣ> ܎FpٗbYKQ pw*|T[*ΐu,7XbO;YBn๮ ߐ1KU|XX<7OR{6 (%Y &p gkO*lڶ` yz4 hС C@&M:4thС C@&M:4thС C@&:)wIENDB`pybik-3.0/data/ui/thumbnails/Prism5M-3x1.png0000644000175000017500000002430013137372700020751 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+(rIDATx}w|G nT('2$@"IH 0`20!mL4`@d}x;;<;y=_uU߅{NӭymcK L0` d 0A 2` d 0A 2` d 0A 2`G%X؎ [mY-ox'.a9n)ww۞Qwx+b ω}{~oRw1w0LAZ~' L^LtI[v,$4رbY{͡ƭ⮝Jdmͨ.(jY͟d%;׫ej 'I>$ď=e $ϏS/muK{u[oi4O@``/kޠ=wMg2fϮ11 }4!n͖VȆWɂ vw!BBy4f,5jai~xYV+ekk*+}If. fÜC;M. /΍`\#B'f0"=kA\`=Kӈ0)D3$ d2@jv[۱?_UyIΓp]0}?"F,qCqh tiNќ+0渪8PUgfdc999,##ݛuޝbbb?gngf1fd6D&?/lԺaR4# mh ..z8pGr h3U i/to[*L,*ÃXyDbYEj+†!X 3tPNlȑllذalܸql̘1uؑ &77-//egg>4oϞ=Y.]Xjj*KLLd,**”@" h)^, #a\2YrbZ&6.CD`-K ?!8L &Om+?L?4}%1i^n4E}jUR=w:`fZY<1xzUV*NI2-u̪3YEN6J(f@ FA`ǏgcǎK:a,++ChܢEFFPĂؐ4A!|2I_A`c%{6T{J:#|AOӧ3\D[dh&u?6,YE/ !OI`:%NlVl6mfn+ߏ4 ԩS')CtomDT`!ʼ |~9A&jR8QwG:V#ZsfVVkjdT 9DB)[&E}4e&FPB4"JWH5w'mGuU#41X\9PEi@fuy;jc(B T7D˒F#iD D`ܐ!CxMS])))nH0( '%# C6Ĭ  M'"J. gx~;3u Ȏs8 $0_\OעVDZSn.5`*=Dϫ|J4h[mMI!lBX01MeclT^,xE$ MtJ&}ȔOF0(R}ABqpю -J7)V ev|v?Vobf62׆jȊ-dlNV/MПM4 'cΝ>ZGTPP#?Ox!`s.@{34 U#z*VC!ԍ45:3X^WG?3;Fx\G-&u@h0"XLy }.SlPbVu2m[h75c)ߋMiiBO&b=}WÚ+t["8,jɆdmh/4]? jR{]@q)bOچлbo4V `3#n& G6~6G@Cy>g;߿ 5%bN KzxIG8pjskOa*ƒLJ~E#2󦁕N#WANV`N+:Ep$mJGѩ3T$6dP4u6t#N 0 :o i7p1}W]k`.',aRLp^9~ Atm-4tR0"ҖŬNV ]–K rQ ZE7tG=,jeeoa!XQa.I0Cj{^O1,"`4mXRv5X.։19@ ݽ DdS5+ׇ%C$KPd7⣻Xs3Mň!H}z X6&_Xt4h\5)VzVVcCHA;HiAMJwh5t[L6+ȡ1?;r@TUC[r& = At3+jQ:({_l`@inXROV^CpymB96T-#Q!n$ AfEP75 9G> 1n?cC-O; 970?O@J5.%4;7lج# ,)#V@ fGGG7y>.3öoVA<3TɋC~1E/`u5}LɩC B(DE=[AIH 4}icxz&bT/aA(?ڄ̇qtwh\r5ANDo׳ d<{@XQH=Yk2Fh雼$"|0Pj7̂l'5;F;YCﱵsO+hIB`? a "F@B(]1oآZ6!aS DqqqX+*q⼃[ fy?TM?q 4]hZzƀyDmד6pΓ fA 3E ED'|-ؔԑ-9%J@q4 DmiEOkrWPe AaCv۔n,by}%mˍAy쭺Q߽F%' AJ-ShNf@EJbz Zpؤ8׮ys̵,ȗ4`~Uh`14ANW7S8_(8S]R7ڇuK @,H7;^G^{!@p|yx۟?eW\K>BD[@GYʐJmndWͷڳk:nvw;i">p|ӵH /y`5D k!|IC87)xhf6GM{z@vEcEdAlra%^`Vy(=27m w [Wc̖Lԋ>MM6+-AīV&M8aُVvt}vs<ك3-66~AsiL-k:bfWx< AYl`a8̇yʌ@'kb VNk,oX1FVDcl0l?9  b`Qs$ҿvwal`i8ލ;K ү \ ҨQ%ڡxy4ߛq'qO pPፘ$ {i,zB84e8Ylŧow`Mq'Ӆ}a}ekm_u"[:;D$^r`b32XA거I&&nh+fdʈ|ߛ?B '<0ÿ"luk2Xr(]byWkt W=:pofG5i+`[4ަ)!1z?8 `z^2'3RU2P1qd+| MJT˾2~ NB d vBZ,##Ff0A}Nb:`X?@ 40;whoa0H 0Q^Vf `ߜe?!Nl9 B*Xz[O M,kNe_;Lc >]_xH=1Z0L_Xt &^Z0Uc{nXaQs3ϵja4+.dQh#-˸s̮X9!~$+m憹x B,?5o*'6G{}aAYP!T_YTώoPyV<ߣAN~w]egNxP+: +P?Ol)'$mO*rvE/{*~0y H|Q9t3N1\2Y/@3ϵYĎqMF -2`ċUט5;@8%zjGჶ,a]gaOJ݀ y^1@9e3bڮߟ_kd0Ҝc Eu@9Z{l߻x#FF@Ub,`iW {Sm|%x/Q򪹡*V (|E$ww鼻+T+Ah>#/#ml*]wp-JW/B{?@pIYGsS'6(ê폿J$6]º[ 7or3ӼY.,)Cq+ڷ$&m]`O,8@N۳v*㡅<<|n|/+7I}ZcG\c˵9өuW_iDJßo똸w[,$e۹Ceė;B.'q@>'R2?jExŊ=jEQ3@SLm ÿ=j5b==E½bEz7RNX( 21:@v| . VzhWF2PV mҺq;X_r?,q]6 H8@)0aH9@׼BD ۨ:dJp~' ^$m/tdլCB Dp)ŤZ cXb¾85Q+{1*yAj y9l,WIsGbGg=iM雯ج+YFeWBF!wxFKwtޙ6x^Xs3x/‡Uk|>_]<ބU~Ijӱ) ЎsKsT+M"~~R58p+!-PBHߏc ֭e!|h0rqd?(֒϶Z>B )SF_aQ>Z`Z |I[%x=kCz}3oS؍lG|X—Mp}D5LE@'Hy+\@lF_M|5u"Cs%KQlFz8i{Y$aa!x\{0E3oUM_3/T7ۍޅv8w'oǺp7C8Z1ߪ2U^Y҈*@`A;gtu] K}w_|r%(N!RS/.IrY+תK2ߗu],nHg{?x/cSr'㆖NcC1k'p_HW i#3YT$?ZIp CWbqjĉy*'GSQj!ϦK*ϿC, M }Ķc6Ϊ}>p$LXTjj#h| Asn^W+i >jD-@8J' #3ܷWgbO={ \SZ@>n[8.݈gܰN<Zd_~sx( _cLLyR90A 2` d 0A 2`̥IENDB`pybik-3.0/data/ui/thumbnails/Tower-1x9.png0000644000175000017500000000444513137372523020576 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+IDATxkpTp?^*ds޲治n$$M4Z2HX@J@!NӱӑʴR-E" QkB 4 `F(ӧeww0}ys^'IC|      % E.D{.zy"9akc~fyøo_UwO 0x@񛶟7QolA$Eݩ!e;:7͸1nm>}*sͯ6 Vi77R7'/~*` j<imvdjvn"ˤZYa7[0[|N%:]T"ܻN٤Sz=P0%˲8ț~sXVHo< iԳ+[,>ՑxLGjNg@5g +;{\:on}IGԲD@!{4fQ-~kQ睾a'F:=!ͫ'*V\%l9o ,% =-bG짋Cz}7N1 YL,>.u@r8]^7P%`AP ׳bnw^>7cⰟJ"]B`YQ}$O@_zPY.qg r,{?2LoJ#:5vG T#w-5r;#JN_E,t$DzxH'W P,`.dx0U=AZZz7O(2hQT˚M[Q@l :S?ҕ3ZV7tǚ(mU.9o/4&7 _4t*6 Q DR.WĞ-'@=$ur 0_ W\N|~p~ HGz1(gx X8ܠ/bIG{Mwk'?>] 7EDjkm1pM<%zG iyv>7 `1r-2&Y:iiTӿz $T׎̖2P5.y%A4[K`#`')`tOGCt2F @q`@AajoвLVPT΀E{z^A@K\x5~64R$Z4$ !~O_P.{M`,y dH,w))~0|6Sm)sR/5G' 0OvVDSiS @ -lJS7R@yۏh-wOFZR(̂!U@@@@@@@,?LU9޳IENDB`pybik-3.0/data/ui/thumbnails/Prism5-3x2.png0000644000175000017500000003103613137372666020654 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+1IDATx]w|TU>A7{!PC!NI HHQQ\B@ZBzm]6ϲ}޶y3L7a}L9|ϙXj$|#O|>'>G|#O|>'>G;.GN: {7l'#5|It"I\ߜ$?}rn,)䰭JcKXyS\#lAVm}d!g# Y:nc^NƼ5._.c"[ IgMf n96hтM1p=d~k{oSsIB-#M${MۃlDH`Hjh /̉pj9C8~pWHi5}I"ӣM?xk, ڻD!z5hAD\;k̃B@%:BL+S-~Fؓkc*JDֱ10'1C?~^{=T`W\IV 7"U@L- idFOo3bcH i$K2&d2IRf%9rg>Zz 6 l44I3N7PFҀGc2S,{ibvg/t^sۜ>}}޽{=znݺN:ֶm[222Xrr2KHH`|rV+ aߟl6ba64Xɏ5)1ΝI~=1H61"<#Z`54 .gAظ]Xa^OϞ< Q~ ֠A؀k,??+v?%:tڴiZj"##{@(BCCYPP p IdKWd'~! ͹f5Br'\+_"yu"zoWܓʬFiUhjR1EfAô\iUMt{"88k +#X9m:mj\Jg28='F 9?q=A<effTbcc9٠i+)FCxfD A@=zvtOO׀z4;h HY&h-=$ԟ&:T2R[]8s/CZ ۖ C!+0{d!TKlrhadՃІйsgֵkW#Y "@Çsb53.ի'%uA#Ii4$R;a 7!$VWH"` " xYKM(\ErH8 w'cTiPI'+ݢ^$lRԊ0IOffRL_ѡ-ӭ וF˓E HM0 IhcDzѣGs5h:h=\‰HԦIJ硎#`'5l F1AE7@ܿy~8ެڋM I8>]%,[93S3մZGA&8&Z9[u+ԣEӄ?Cʤt`y&(83*|0ǼŨl'?),,qkɲH2P#܂  jhʊaGCtChAaB2{U}~Ln ӠKNZ`-଩r4a!T;T/۟N)V=|,\9@(N 3xD WU6 Ea{!lx|@j#I $=#x),4V:FAL,2cxHq({mAi~*jJ0) |An)asw|I թN7!H6Ƥ*V{>|auiF_ط>8D:VT<WJ"9xcÇދ*d3;:}]y_'-E!V LȏUu'݀>If6ꢺ+ӳ0xux64HXzLԷ+{ OCƪD<b|!o8i8=UD(upmmVj>"V8uߦ)0%KV<ɛ(JmfU`?;yMvK x0hQXG8'#RC[ vf8'4a!ys{4ͥqeN&T"h3~CiEdO{/5>J}Sh8E/DDmj] y\MXY#| Gަ.T{PP]?ܣnMD(5^4M$-*{0 =}xdG #iB<[$Iz)0z lzt(^./Mt'L{7HA :l;EI|'GTh!D@TTݚKt&= [3jkd` |6,Nd¹kmv-^A%­6+B]gӽok;IyjR Η B7"+!YUlJ8/naTFg(f4p4=›؈rONPzck=X0?cԒznXUpO!ao0r7{8" " 8HOÙD2Ttx(@~=~l}>qYƛx4+4=b3'n.n ƕ4t-GG#;az@GyG$A0x2zkT-߇bLX^klTjY!bpAt a繦jC ^s{:[YMzŻNZ؀@Fs53}Z sAcj:}/YtSMȯ?ky'jS$=` KsR>$|Ǧ^T5 VmbԨ|izz0o[؉Qpt/4oi\.tYmpPK) i T^U]kҾ(f 1Xu jj y>;0I˜{}k7ijGJU{<` 8}niSeRC4AC y}3^UlXtr 4&D ۮhx=WPc> $Ϫy"^Rv"zCoAT%[L"ރ#sTì;M ?Pq/xXMz+cB;  ޮ];z$֓l;`M4]0I $MEs%}ƛ"|n!buGys܏^a-[gɆFEDD(R5.j䰽YZ>az>͓p!h2Q U+H16a ([W6œk;]^ 39_11j6oiv;v_l5b>9HB $ K)gV4:a1X7}kЯ/h%AY"Lwp/xȐB{$jRx[)>:~}K~v1(yZ +".U~>'gI,Mb U7UäIţ.M{CY7q@Ӥ'`I9Nn Uk1<YzQ]j" D c<;p-8rKQ{/&o=/i^+ +Pu7eLzѢ^5qnwgKࠋp7lt&@qցc4H8;MIǴnj|* i`/aPբ=ͅ]0IjJ Dzv{)<SQi`RD[ `me`?|Rΰk9uZͬ]ݱ#Fo"?' v/PUG9p1YP‘%仌hEQm7 Wy`i<=M!ZuX՗wQuB*K<53LPkӈ׆KpMwN$]Xi̦T/⫤*Gj38llz/`Վ@gIib<v=.&0g6dȩSCIXy't6$QugRë׳I +}UCg0?lĦj'8גZD$>w C2Dt?vFH+`I%'ٝ=tybz9+FqrP}[YƐ| Uثj1% JnI :1r!@sYqEr,P @jCyQ΍N 'T2,{{œ~ɥ %,P\WSxaa8eP]MUVYw }%FHi.I3 2Rc;Ff =D8>X[;Yb<فɽ(tA+{W8uj{>G*m`m/pA96CB6Yx]CFs{q>9fv;)`CttUŕ $GPXI4OmdHIZE*vG#%,+l,,Y!%@Gη[-l"NـX5c $ԦT Vsl$l3$tLq#Z{\?vngq:*@y9<JP:gO]@X=h!>G']gWS|Y[Dr,0Cqo?h|U|H J֕)d _oFrς'StC]ƽf!qh! j)nFH4] Dm34)d\7A^!L/ Zacͣ:ykw;T U@l/KC>8]/5tOD-LWT-^Q_X^F4AVfrx * H0G8i >[8W e 1'ut5$sC6f߹_9 $1(a݃'QwOqg-OoF˂YVGzp\$n6tFKn'qFVmx&kO{lƽbVN"a&N&{籺]ZJ#$g߲Y9+*iV1 2Ng{uφgn/?! FN] $ȶ ҋg&[ĻZ&EGވ2tlnLyy]-'u("^y˝Z*DqQɓ- 2@5-[.Hɝ2Y>tC:f[d#I!̬0ixoEso%xvew 'z%Curݕi⣇*+Nbǎ"DXڎ-[ē@.HбX oR L2Kz- 434$<́< >@:Ձ2O7-`SX8eB~d/<<ƖʶBcie~dhCJzvY +S=brfpX(LpE J=Io]* ͮt ?KJBF|.ƺzInL^{|<2By y3;?Rۓ@]cqM1+^(˝nanaaN$MJ'R$<ﮊF'd ɺifzՖ:A@+hY )flѦx$ еE1>dH'"[j\@%AKk%&<7""=Mr'[Y.3˥*ƆwCgA?||L\\V7D[OMl`yݼZPQ0(|N UH#wtx"Amj&+c.wy=$2t" ~QZ_!qr.875}y!-.kZn^UY@|&=+a}gԡM "cR΂k۷S,& Q H"I&)Lj=RU8T7PIʹ^u$r!}p,<4H5x45}K <+H/-LI2ɪ16/? *ڹ^,K--a&5fhH8kr%ג s~YRpNl$>~(Dm]. jbw^,* 9OF [LVNAq:@7X"El?H9g!#d^=uuAo@W sx]{gmN\lGT=Jud&TXy_dqy#K4Tj/\_[[p AWUC4~cOn߂I7g1۷rx#ͯ; s}.Ap} lFG<`bSG_w%w |BaN%#KbMձEπ58!'~., |ۤe!ڼ=Y1/p^{ĪƾAwk$`U:u]eЊ_p' P>UR 3ȡ7z Rfd8E{*WI7)qVg>'8=ڠz*dxG@ t H~mz:(B-$Rɩo-^-~=e ;zSC8N\me$oS_X"E$VCXVoߒ_ٌ[n#(I λ%{[=ET~>W%$'Q9!#$/$+*m|6컿<?~9"g5eB/Y85H1 [{8k$@#QqN#r'd"ooFn\Mܳ/.&MrW eRͦhpNxS ٦ggA7tě$!' yiMwڳ *$߂.JȮH Su S9w6cpSl}H|YIڟ B̛[LR|usG `ٱ5|6~ދ]AA?>޽=O[N\]g_&dW|٤0y{o}{!@!D3&r m~Cl?S穄 L$_Tm-ݡPy=N>䷗oiQR Dy?ٳȗ<ޓU N qHM`q4Pzmn!̉ {'n맏>XMqF]I!>^޷jKmP+`k^I dCdgWN]H&:"kw@hAee D ĦA_!9~dpzmY:w=])آ(y}>q4t & #62H?̷nXYV}davnc8^Et8zl)Typb6|ׂ ̴~幀KsfhXVi'&慲Y@v&<[\k8;FX0.=3+U--%Ö+WBJHTJGX`ݵׄ#@SSjQW6&Au`WoR/ |sx-@(I?g{e&m0eJ툍4g$&HOı 4>ܦ61gvC6OO8>9z_@La=sD]A5߻Mv0-~O@ WV48 @Mu߶ueO Sr__@jIjؿoV>)!=Io}>'>A0H YkIENDB`pybik-3.0/data/ui/thumbnails/Brick-6x3x5.png0000644000175000017500000002433213137372562021004 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+(IDATx]y|Uյ~>=wo9 "̢LLQPZj%RŁ( ThSZ[E}^}OZ䎑 cs9߷ְOc{ò׬`z,`E,Xf2Y"e,`E,Xf2Y"e,`E.7!Do ꠧƠk+,B Z[CuCdw7l}tE[ Uؿꇜa=Hda7[d>@ /UgRu{}ql$/iE~NӻD :)-k %!oP* "GZ TWX0&?#_I@d?G4AnxBE nND2t/&kɍ?)V9Ng+iv1~ޫȰlQz1`utBM'&ȰE.(^\jծ!Rwi"LDg(ph|Bo]ZOyD]t7= ݲsuX; [A]~rD<$^"LF"G y֡mDI7n'.!BS0.㰉N( 3xb}J5uݗTnh RdE8qDaZa%J"Υr'y>50UJ~.u5x>J7|P{U[ iU/Yyf2 X/@古*s'|@Ң 2ͥYQ&C6]lIwxxpO(naF-Y f{K!u9 Q7.sw1]Q*OdWA)FjR=Z>?ڨ58e h\Տj3!!tHoQݣ+tx5vgO=J78n20.^M+I|H*=@Et^ ÍDL@dQS_`~\ഉѨq_2Et-PPxҵ~L1  $$xM'=nW vNr xA 0< E=_ddR%_޵q%6M:3+ׁ<͡ъ/7A"ݰ_p Xy[AVSI nd*@p ))!fs1dlBGUYyV$[뾖̓h`.Az (y\їtMךFM3 65or< W.xO4&Zz`>"/Ayw\ uL:pnGt:%{0J|?{toAgE.)QijL9n~F]=nŜ~ 1aH~@w&B×Ml=0{s8P\AZ;2L31z3 XHcc]MdDKaa!BDnezMagl_t JoJt[M Hr!y8 \w|x4^m"s$ڧ=0$20}")[e#yx]_~9tO7gy(w)3C|N1VUc;˜M @'K?>;͇Hz. 0,0f\?̚db2*Ƴb |?Xxf=N1ɐM;UFE^ϲ_D֩{WꕴJ*!~CJ!byD0̆T-[/уACg_D* Nm |qy} N{]DR+D]C|f51„ X*cwELH,jԘhyWʉ b*=΁ 5:tjRbϠ5a"v-U5@,sH.f$o·G5v(_f6P2C|CD*^E1 .9Ix9_TS?x%qzˢ/U"+ \*eiTZ=JE-<_]i x5䳜1H8ȰPVpZe4>,v9~E'}in5[sĂolW Ql. PZ A6&#Ojc)\dRha/֤f&9"[yx\Qn֫~α~*2!UchP:O!{jDcLp+28ZȀ`?"\7 _T?1arO|T*n\BP{ipԲ՚Ek?.evrj ,ux{3TXsߤ\N."*0Yg 30O*+c ckti<4J2OVc4tN CN6běu9撀meP<}o–M|~}50ʩu: Jh G9*> -luE&ſb?UXXtWX(gy]X4<+:|`C]muV0!+51x@T@ ץHPALp^1'˙zVϴxT#*asWz:XDƁ&>~ݹ@>l=)~P"vo_WHA!n z_d*BWl!nzc)N} 8MASz!m15qgϴo L#/*? qSYQ~$PN6eRAe?g͋:$@HpG KJ]B!b,wT|)UD)SC Zb|rHs@d'Mdtq#WGh)HfC3 ; 7{C/ر1*\$sX +7wz `.^A7W$. aM JFs;jHN#BD>y)DUD =a:GfnHjN JU{ FWޡ NρX{"[r>;TJ(?)@-@S)3ѳͩ" Kj7Nfx0 wT+,WW+? ޢe"UD?A W(&u v;d,"S*9*kX<_o,b1vSs&zv2&@BPg 3 `RmNpu@=&qlSd( B'/@+4!6aI9EEEEf)b^Z rvo1D >Ge{YF~ٺjgCxΰb&̝=k) zVgPKdDRM]ms;V~4ǰ+@RJ1N#RŴB!p F9q Ox\Վb&4d c !*.и ;eÆ 9NM"AUipyhCtʈLEnY߁xK&L1U1)6!e:9-o='1?83 P~Վ`s׷Aq.LRKIg$@!ƮpB !!GP@\80^7k){? SxHKr}|wB yտdK>ѷH8X`_&B0 fw$@o`dsE-~ Ũ$OjiR1H8s5(D/p/Az5Wfgd=nP`A3Tj2CBݮUe`&LiK-Kgz{WbWNwL͙8JW<@o)Λ i#O tM Io $B`E/ ׾VA2>MpIt)]c)zrajRD㳹+n{\;[H9 C9ėoSqwJE+W%N]%'f@4@\5+p@r]TAx vT @@vkC_Av`W3\sj+{Fd٤Ey/dg:P(?!4_֒9W6 h@ 0u})ph!l8!0*"I=mL*b&nQEW]4Vڽy<=Ҷ#dMcsFNokF@XqEMsh&*yQdKIvvє91w;9,,`1ﵠ$gp!ϔY#AvѰrJOlF"F{GDߊ9 A+ rAPǦ\.Nv_RJ (_whv W)Q7B)Pcmؠ !;e?{tZ]& A:A<"rk I"tM` PS]~AOOJG7)G8%Ȋ{=25bX~e DMw 7/]?G*# p>@4 ݮ\#кT3" Hex HPK2(= pO$0Cux5:9 ~QCz(@Y1@0^S" 6qAM]IƦ<1@kntݼԫH"3W'! W`p& rYqRћGG&N^$()=~\phcuPRx>%uІ(\*A/R#`A?nxSD%ОwszZ f>{3$9`djwƚ$@~;P[c"Q⑻xʘEjAxcHg9߇ko/?(CAW Y\muxOgBTO :o*T]-U ^h2M4Di36 2 T^(P){ 7PaEtm?IS. b͒{6Q{{XmY7z>xsK>R3;^~ Ac"={DG2ͻPpl`ͤq!eI ˙l M*& ,lIrQ~D¿Q!CawG\Sw{#Lo/a~~ʻzC%#@`OyY$)v3Yζ7!@fd#Ǚ! +O}pϚ$ O >"sD9vMQN׷dE) /ٳbl?DL`眯{o],<;?dE}kb' ,:T] ϤԋB O^;"=d+sX|`QrĔ3]&GrfCOpe; D~PhnSVȖl :M[tkVk+CN5(P0x0wCƫBVkUH?l 7Nl;ry]÷F9.ȗ=gs'J; |rUe=x!V[uee.٤V Ǒr,j.ҲI*P$a"sQ(65,SPA[\}zݴ,(<.x-XsY@\1'U 1}Q$aŢzyC@;7j HZ2R-0ql. #wxk $@?EI-&/IQ&Eǒ pF@߁S!5||r}b?)V!bO,]6W+l[[,$quKrmmC_E. @!6w.ۻw8">1uM3~N}g] ;n㎚6V+{GJ%a$F.;I=G( Gw /i7{ ))T"1"U3r/Һyn #rItCwaЏ^c:OT`75~8hO;YY9Y ŞsAʝ'82#a6XG|:h˾<%&q1=5EMG/}=o22ű$p+,RB9G-SILq0/:C :{ʩT1 z1/_K~[x rop!1oS;G q/(/oLi`SgISڙ\[zD/3#gF0W3&=REV8Z3ʞ9UycCLiyOnkC m\TK1h͒ {}Q~/ !B%  jo7s?`~j 5"DI9| $FoEzL"l-%r} [(ӌi߾^/K|ɶxsaYv$t T*mkXH'* uHZ~RMu60i#{EYݿ}TcW=nAQK+sT d I^YWf< :gQ6_iͷFb?i)ޒ-7w_Df5Y3\5M3 jxx )'i)/^n7P:*f9dTٻ5; ]~(vѻ w4g|\{vVc[bopTzA%o +,ԌZFZNi5](mƎܘ20^ojG⥧u=.&<,Ny:0V `]<xc|㐛SI,ƦC$i_(!AxK-b4X O6aqe54YCw ҷ{\r{"!#>vK,<7Guz!y}ʎ$JqCS2Vhƫ^_@]R,*yVAM!cp]H;z=y]R;>hW@k5$Щ22lI[^UoNN%QqSPRoiCG> @k2Ldz]K%02'N`P*N!&Y!S;x D!1mO8XLeIo`EpYaqǯKb >R> Ux)& J4Aӛ:W1&cnj`e55N- qL>z/?ٱc:b`ƒA@'궒-nM4O%ܴPK>턱n1rٳv"a X"ͮ;9𰻶:2>oC k'7uǔ",9/`5?O[Bݮg#V+sdͣO`yUko9^\E,Xf",Xf2Y"e,`E,Xf?-IENDB`pybik-3.0/data/ui/thumbnails/Tower-8x2.png0000644000175000017500000002415213137372537020600 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+(IDATx}y|Uչp}!'9G("3jATZ:CeP@@!"Cb[V?_wYkdpd~I{}?#dw؋`^```````````CzG-F'u?Z6Exa%r^"^5.d7֯{ )`a[Gc"3~F8`QWMx.='0\`*gW2 8Ѵe˜]c mۺv 1!Kz7Ó 0h!>p# (jy+#& ᰜXf:ފ D3 =1㗥;X-zKuBnfV00<°;ޜH0RР_U h8ƿ::.gچﻼ X; >k(QCĠØo- 0 =J]J_׮]Ń8߬[0m:ev3Ayhi(<^t ޱT`!ZrLp7`=}ʛvz7 hDacD@J@÷of y(89K" n'p m'-K 2@ܺ{6mfh4ncHFa[_sqƏ{mK1 pI6xh]K4 Nq E_Q:^MT@O,Rc&{{8$Bu)ޟR&e~j1/hZ4>K"]y/Z\pz@, iF,Gb?ݢC!… `Rw6X飇ӭߓAY5A ($lM#5[x<} EIR4,K?0Z8w߿IfKìe0 㿅TAo{;`!ѰbP-`ep=ؤ0+NWx uL>(\`Y݃I[˜㨅֋dnen^|zI拀*fx!uW'uty !B/;Z{#P\&u]~u 3; ١zN@t0Ӽp*|jڥڶ{= fu-`G[c>α?a?q>^; :! ˊDAtqJcK]l2743pB>k"1!=f1`nYQ1Fi we[Be93>E@y" r2f7-  ¬4})V@coT5X⺰k>p>+!]|= hi}Zt"Om} C )M ¾ؐ_D Q .;N÷LJllw4qsZx,L<˳p^2 t_by"f7(ࣘq艽z yHxYhmXu`0`#a oY}}TC! Lg}Q!Ltiޖ .=b|{׹"#M4~KUJu'u4A,Z&:[+D ,_!A{' JSyGW]T&h?X #a`xи\ A+2~:gG M+7!2NAqqg(Vod2AޭN ;>FWwbߌz Uw.kQi{@Py@;p>Ä_wy:{5b9tfAwpdM5= qmJ?)Eߵs9Ҽ"BKVVlgoկK2 `MƿgW{,zDQ~ Ɵl|J+*LuAPCƶH1s ok5SpWd yK&\t?{w?_vY1Z\2؋/ˆ +qX(Vh|. 8*p+!P,)[V$b@regm>4\Zs07>i W4 7r㯂yYoFIlR}0AC}bXh]t^znݺ6(`zw阞]"* ,Fp,7iT"nLZ^W Uez_O6u͂u:CE<,6 [t'` 0TŲdW*30,|B5r+X3/$o ]է9~a}MN׮BGMPu8!mm)Ix\ri *M,y4c@!cqltm(0AEjns_5u{sRKM$!~_w!R9-(r,PUGH0W6300vN\ U8D:=8eNg_Lt A֞\.`a "g2~yk]@E¥)1Ae~^i*0BxУa43|qpqg B}w#- >Q }R"fAZqZ Ts㍉WV E= YŒ&Xv{aQkU&n ҩ_kbӘa)B"vk`QovtJ5/)0`9$yoXDŧ=%`=2 V3{|T$>=/M TFR{YF*U5<ǣ6R1YU`v[T1)t+%3߰BTex9̉C"{Kd/w|B\|wɺ~z/`j8Ƣfhys]|C| NQ ݖԊD) (<ia0^\Mպp`,(1S3بaK*Dj $z/0Ζ!]ڸN_ׯ6QQVʚ #iߌ5IXFlK .dRhfuwf/3% \QjH(vYIJ >,,T"BYS(лР, :+@eYEY`C ȧ ՠ:+=iEa1s Šk 嶯5Ɛյ0A*GQѫZ+pa^9G7R2 t,R9{?Cd:-I> 4z_Ɏh9uS{[ҷc ::wJX<ƜbAi|Šecb$xkrg=lHw!A9JbIVWh93y|wFcJ򦌮6idk,~ސ{8U-ӵa> 0eg^"=@ds` fMTs[zGqb1Y1䖯dEU-^7x>E=+H|q~DB 1SdޫdVdGB@#+O *㫢P6~:#7dtFR;p!o:qʅfzh} eH*σ ldBFw u`A oupOESPO# s >-a֞׻ T)"sUV L j fVQW8_m|n2Q0 pJ<~K̝*t9oy7iE}a =dUenځ@x.&*K\݋)߳320^Zuxetg 3X]e_gk)T^7)Je2>MLJ>U^ɟd2TZ2 ze6g4 rh!tW 7;SgL0 ݪOY7x~2&~^iOpyӗuP5i4 jP޾]:2SptV^hN'_1wIa4~7,A?}r 0sO6.ۍ+D 64xS0$DHk ' za Ag% +jVմ"=~i ap*Gx{)f8EliqL:A&dPଣ`F&2RY܉5>UdwQ/MzN.12Dx:BSG'd,Etf@&| 'V׶#bۺ6,I-: A6,WfġQ C Usɹq'Vm|VH_v!gD8U7v1 TO`dct"~= zkїT͞j0+p~C%.?9+]yGKRYvBYHa"YBpSBϗPD*V 7{ۛlLK>N Kf#`*8]ݣLAp*$CD+ f'z>s<4rznaWbѻ-( 6_g }"0} i7KU*YYhۙ%V LP9aȺody:4;zފw5¡ k0c8;o&L=±g^Ac1zNP%Ⓩ|<[]X])!ó%gf.lH%絔3e$|8Y!1J0>o&ٜ f Q@ۊ9N$agAoH9|CggK&CM"ʈxxUX{Gc|Lѓ͞j);#I@" yJ L1)\1 :dlbY+@]1)Posuq~ 2.o]k]d]8Psx;ɸ#jqȿyǺۂ\|gscCMZ. UIdXm(R'b!Z^w!dW3+ܒ2}l J%48)_mΓiC\um0q9Fp3M50$dל/㟭{˯V]˴,Y, $q7J$SXE#weX"+Cj4N[:9Fр/z.n` <=`>VXT/7duXԮfQݒMgp“ǐ2ExX`COOx7$\@)}S?a.N&Z@@ bK!85+- h){atC.*>vqpz#yvQk9|/8PG|#o)nj1pN3VFfx #2BJ%Nճ =l=R dʪYb 'SRb.1Ee2>Z(Nσ .^p[W9,!KlӌWz?XV~s@t\[T_iOR(O߳!_^c}47,OQSۺ~%dW2 9ϢSB9>ju4+3N@W]g[?7 >MV` ]q)3Y4@6~t~R|N`Fx05u&1+y*HA<~'7RɹÉGIwA`$CskϵZ 3K.(Yd ‘:;2';{8~6˿2p>}obo}2@&/*}>,&$Z i\iW!rhIx *2#+ܪmmA+pħBy?z+O|>G><|iِ=9EJRT;}* W̡kZvDKAАUqeQ͊nÇGkSSxu!pP?_,zU@'#Qz!QW5&Һ9|>̞OzqP?`Vql `nW V SϏ1GV`y88SNq8U4._4bj'[^kiTC\qLd$qR34%{|GJ0Y|A̗<+KK0~:k#Hx-axeCVfOm<[BK0`h.)H v"N` "+D²J)C<ٙ E+PsX#n+Ԭ@ۧ%r{7zmCյ+I7h;$v! v o!yd'Si$X:2T YWHVpܟb͊LJ卝}[|b^pUyᙻ#R+^!J TK4 -L*྇¸S5t4>-  U~A%յzc9sQŖr }J2d6TQ\Wn6  ;RZ 1{ļMe} VeNa9ڏD(Mcz 8fW>>okueCMs9X3 ĢS(W=ӈE`lCO6r~)UsAH1?$_;ZI. XY,9[ XXA[˜]钩$b7M #'d7#%i&6Zn 3-l~橄6UPw6n97vr7 Em@k<, 4[QG0x%+ĊdM;V"'w=å|5%+9 %nMU;sb"RX؜ 2=#|623K/qNSg-6sɹ*-XR[Sz#k"RQ|6ڑW]XK [?8c|68dž0¡9WuJ%gv-P8q.%3CMnY`ǣ. Fȇ6E```````[J& IENDB`pybik-3.0/data/ui/thumbnails/Prism3-5x2.png0000644000175000017500000002136013137372654020650 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+"IDATx]wtT~,(djz^ԇ5A@BQ 39r N0`AC b0 ! 1`AC b0 ! 1`AC b0 ! 1`AC b0$5eiT4:N񡦦g?ʴ>@X̱>H|`y޶TbX^ w|~v놏e?תU&qvҏdRF= ` WN HCeL:JdX(dTR%Nô~n;?Mi˗,lЧL, $D|(ZiX5jh^Ҫi=2`Yr ve+ED(cDME2xwwG.ewvi,dt$x(Y{B[\? t|,Ąd>p^=A?Ǖ|"h,1~rf*l+<<խ[WWGQդdyXv!ë :t(ԏln9tfi`l|:kr`lw]^AR}K 8Zd”'ӷewim[YmΝ;nSnG`x^)?5sQwtS,ceGyPԨ gQp|DT=HЎIuӓ V,%/^*|\pUz뭷č :0w:Yc&4}2茶ru;` `yt^8^# FArZ]rvrdZ6QBxTJNK {[F8~7jРavl ^sBhbS!|_[ё RV:@̞>R[㽝bH)LU:q?} HUN6.J$F4~u޽WHuMهwf;N,]YH#rv=蠗rKM*L b'糼34/ywKV7T0C}4 A-֖mtdKxf߀hſ8b-L:~AhpTC/ɝ\\-';Ȱ3y\2p6^P`BŘ axxOZ-ԽhX.KJf"_Ut>.2D A( liI 5pKt'RA/P%xKB˩4aVLO{ecR@qOğ[B0aM} 4;;l,ꀵ1J6dˈ_ :{ #  Ґ;j~伎j)< 0IPO~VvD ~D3}I8_D; eA6 'P~A|YP @_Զm[ %`ʨ#7U0X x] +["ܘ%PFTDf`tn,o"Y,r~.y(Z/I  D(#gDr>Q/6ěHV|ȑ͚v<-V+3b#Ԡ \Qo@[No:ĝy"~rgk%k~6jOmCUTNVժRZ5>FW@hdT>5k>#<}\BL$&Xe&"aemӑ M3!2Ag[8- W]g\`cc/))LX\A zuY֭[ #ЫW/zDP,]T=Tu FdYGVۏJANN2i/[4&W&Wg:Y:SpjM\-O3@q@,c(b=BdyDT/00P{D2P x`^Mu77n(0a `(3;v(?@wUX7k>ΩShEtS \>n4ҷZbj+CY{uQjJm#WyF@ tGޞ86:k10:K6Mh (?]t)UWb҅VzR ,%TZ̢h/ 061vwT&uYYN-p8kӦp 9?.~(R .tl8ɕeRh}C. db%Re)Ts~UD &x:2n.CƱ&Jm+o<zNE`Ed@a`w}'E`â?xɓt%BAx$hЁ 7A^_9Dv}58F- xfg|T^?뗆pk׮k9A:ut JTfQMܜ\K?Q>ƁP(]$MD=kT(̠"E F->58B#{҃ŵM.Ӣת/I o.u%j!32VҊ$$D "¹*W sU)@u Ŕk6+=b_xd a:ܡL ~$;+|*[$v uV>442is.~ths<:;'?L8n"J-փq>}O.F={:G,]̯ʄ\1X`^T,>nVjOτ;J" S< (={=D;!!!< !bxm}@qXǡDhN$ڌ[GGl;w h˗/0`5oܩgHFC6"Ej_Vs&ܺEVm! )9'abuh9LvL־jKb@O Co <_En%_ifN[ٔ`]z7oLO>Pzo@)h׮vne,5q#L,OqjІhS6L?Pm!SUzI.F.K˰%X'zW:EtPcƌnŋʳ&"d쫁\uA2[ ?SYZg W߳*⣴x]qگN z.aϞIG(G `>|x̵8CPSb_}+o?tZITR9%,GSs&z7DSJ‚}_Gnw|%˗dљ3gDzecx ㈟ @t7$VQh3GnjL%zpD]=L{iڹFI&G$-߯?Yz4Cnnǫ ұoFЙH!!x)8*((CΝ|d+E' 8n52Tg$by.aAt-ucehS^ժlYy =O\G o7w|ݻņ@"FIرc eMTGnn.-- "zR[.9E\}GI~qO{8 #n5,r͟~/y'}O=>c$BXCmIo|냯dA 0?Mt0$B'ir4Cׄœ.} NZ:;WUE/vF~aPmDsϱn|(NG+DŽ Q=+`@\!?8(>PhgiwyngԪ;lXXa7xd %22u 1bPPx̓[YI0\g2D>W|țg:H:6>,q9d1%  Vd/Nz |)Sݾ}{1`[}XkK5mVo1ӓl}?kf"T:X*Q*__~a2Ȫz eT=j_dxkcd1Cњ蹫v ?}b{84iDp!cCjC$GSIÆ E)v\XIaⱒߙҦb^׊^{ߔu}rOWtܸqc2J܏_~E5P0`ԭW|:`\fgҥwur&VN ՠUߡ#_U24xzBHa6 <h,CW^䙁W࿮K?UTa3Gb[;-]|p'd{k?{L>]h`~~*XC Q} #٥Lo26\3QnFwW&ҺV̓}@3Ne7UWS;-eԁV8:?j\Jn1~V jY^ >}Ňi`uKbY,- ZgHO6U,ir˗/~۷㣏>rVβ=>F[E ]807!q#wd𨷊w*L(#~IlğV iBU$zBb,{6#q$v,w+x3ۑֵ%^K#]> =غ4+|  |c4B b/Y}&1!|xv{jy_P"խf#Dk*׊ό1!TUrǑ@x|t`% > TV{rF./ң5DxůcV1>.Paҧw0lv`bcKzOF˖-TYCn) |ŃTz?kL;zo7h1S:QmT 4Hǎk`sK #ql"k'X]y$wϜ=ۡG'Ggdң9rXs6Ju:L2FJ0HG0ҿXn>qD:tR|s\쿇>8YU  o?gQzH,:d\e5?yhd/M ~1DzWq}W4u"DQ3ϐ~2Y% ooUcvDw2pko6<ׯwrsA/J/O @6nԦ8 3,54i43%)1L|4L?ǒr~!U8#Off{fو͔"c@93#_JSWNb!<Fo }wЧg ~y#@m;r)Tcq P/sK y^Pvzv%w?rs۳ys;; ti ٳx/=X>|.gqݓp;ذaVH:'dϤЦwO9AR6V2#;;[ sfxؾ$ndŋ {y/N/@^ƾBpWXq37-a^^SYB`Ձm?^-[_FSҋ5+W(=Oֳ /Mٓ =MȌٳ  `r~^8޽[#[A/='OO>oұgό{)g0 ! 1`AC b0)tUuIENDB`pybik-3.0/data/ui/thumbnails/Tower-5x4.png0000644000175000017500000003207113137372530020567 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+3IDATx}wUkZ:ɉ "DIəaָ̘"2HPu Euu5,uoǮuwsoUWt&q ]u{ssWᎶn!F]a@o;kbDqq[-o1i30܊-d]N'GWVx+Wgyo&㶐w4ڿO;x׬ߑ 2G"pxy ;w;wFwi|xAǘ0Plp$~rû?0p\@XL)I57x2a| nyhxTQr`[ՁC'c<‹dtH@9@h\Ls;\KsJ5p d{iq9D7`PJf&N,BEC?NE3t` Rۯo]oRޡ G1#?A3ty P($n@`(S.<@!~:L 0ﰎѼoYfpRf"s;$:]"wtv1Dd|tWy{7yn#+p\<\QDpH(\q]Pq%T]G2?X$̼Ye0|/{ 1?`1B$PbUxdZDyz7O*(| \Tq٫"nj/Z\(ϙn&PLMc L~>DGB?Ks=a1>dlߝ.:ʀpTdn nbt}^3s\^e?B}hۿPo(hTq+*JJDii)_G7U@e4εb;tMUpW_qfUn8`1[a doP@VIhA/6(9FuneqQB;e Vq{ppNpcB4w!ECrlrcӟO7CnSb\wg53 ^wUc^D}$-Jbp6[ ePx7iQ̸K`Hې_C\.)C7]NI2m)`kSپYl'HF|ee LIKEȇ+p,`߾2q;?Z {N1.hP`@_B<{Az:׮ie|CzNE P1L]fd=FH\ ѹ !0vHa !H$E*͊Uh4#F$`5^0UikwPq62H3^oRV_N^cgxͤٳW5 &͢xfE@`Yp]MxH7E4h $K /xę_p*f:[/EJ)fEE_ RX\"鸁RWUG=f0PE@i!6C4eHG n7F9d~&py&@9f*Rq!D]uvԉUYY)rlF:\?Q*oA`\$C7?nget->KJŋPR`@`r6X#nrS|Em IMI@3TS"Zua!>1ߧa.4H4م*^ -*4 w{ ߽|x\@_\nbcLc`0M6ݴ 1"niqd"9 ZS*uϦif%VwM(֨)ʇ! c|0]I߮ZuXx!{^̈uY LR? .\ǒ^J2 K܋wyۃ{nN/ҥgؕ9,Ɵ?11;IdSz @DVZ c.2 ҩ>wk Ň}hbvq2흜a]4ٚCݨzqs_sѭc8,# 4+vn&`0kL;J>pp!>#0Ƹ"oϻAr/(rw q߫g)2RGTCGi =0@/!8&oGnVpC&00ԑKWyac `zp" U,y-TsjށB0Mw|mLbb$T A[~͒@*Z -~&i#U4߁EUXwl2\1?FYE(zZ>doMҳ :0q-L~u{V* >_4Ԫix_@F0U1}Nvj@߹Jx10 ~!͸˦]vM\ m\qY 2{&ry]ez=[TJŀxhhh;v.UHr=#߿V.*K51tHx P0adm0R779<:Tt8.4 u^bt9u\gQHG ,ǃ_M.~_A)a1bfU39SEI őD#LTxxC0*񳢍"0S78 h  K3Ž@ G;=w_,}N 5bt*;Pxfe0a9.aZh[nav44IĒ `sl<+v :uԡ% qGT;/'?g6IV8c tw8!X 5P7sL5 =Eq0v>/z,\s"m1,&:u7pٖRriG:/ _NV~L蠋![ oV|[w^&]D?Y'vCߘ=W[;f-TA FBz ybfitAj>Oo/: RMJXtN-Bb }2|$/Iw]ߩI?z׿lziիbD0"H1y.(vl Q| ?-0(-at-G` ǐy0ܼ/ pǀLˋNx敾NMt"P֩-V/ֻĴP:#..*J4Oa>wc·۷_@enݕBD@7P+s [o@ ޖ!8:k:"䉆BXߏ^ᡆY^ P\3t*-0yC{Sw?"*FN}ٜi|_SY cD"0 ^A7oV+VR^1l1ng(gbPOlDqĩa,;M @BOk)0йTZ+NNa*Jߗ G{MzT8uY ` >oZ],cSeXp+˿t`A77qJ 1ky?SE%ZC,53Sīcͳ4T:셼$0KE8G B;MO,QcfοRtAnѭ?^U _= ҃ 8^2t_ =3usW[ǔi9Of)ubf)p-BeUO`濖t3a|4w<\}&]tq4=7- oSˡC.~M/wUڼR2h q#sG{ IxԲ&+wPWZTO4]^fðF@iV=KsϔV^oQI|42T4:ֿUu N[[W9w].M 2_7gYhZ/ P) F/U77pExJ14U9Z& XϪj%>-J)HV( ׯjw_.;/ q!@d)"~kVƖf@Jf@=+g'N!t|HRN`r^+0h ;{|ޣ@."Eȣr# )8~"8A^\?iGC M@O{DZ]ʰ8$Q ha{Բ )XL@讙 `_@7{Nwn6wd d-8 CͣuWZɽW bo*3$C_9?$N {:8T 2{{?0Zʇ%tf"`qorW@(b<Ց0' BXJ%S璫k@CNVJ+S OuR*uiT+JtMP.*J5QČQd Ե)pȧa閍N_W&C5ac+w;X. B :ie]ž:3)TWI B>sQE^ *o'0 "2:W_-H'aXI53l~: _ԉ3{˾>!T$ c2QȮaٚB 3V$|:W9~$\g4in $/T'CX>= (jsYE [:Vz쎻$\wEh1E8Y4L,S/udJtC^(|z=Fj 1ht&H}WŴ>1s5(7ΈM"{ ѐC|jť?}_UŇÚF5@ͬq$ePڑ",2 O7kshi kx y"Uu Əѵ'd"py2>Odw+x#Y", px۟]2$R@q<]>Wd 2-3Wi;.((L'P Px6G !oryzuR O-).H2psS@+! O3DuMf /.n-s.24e %fpEp"ȏqPnkIV-bD ↘0k 9}8cS 9w5A ͚ #_(dr3;Kܸ4 ˧X\?bBO.B7>l%;Gq[a=\ L&f` D/ KqMs+e u4"K(#G2zB>fxUQ r4DYLM^󗷪D:'wZ@E{Q\8+йlȯ8x Vh&e t6FE x;UAr j 3-XT$&5c4J{y{!A%&שE RGZX#r _ȞמR%aI@|LTfBq^JRxP%3l}$NE! W`@@ql7D[Mgܸ,%=^3{AI?7q,_S(:b"8Б2qPv D5 }X~|9j+t1f/MɫV_a7rkrBb:V )DO,<]U\4%0BFM&Ψ17|;YOxjb84@G#ɀkWڵ++>1.8Q-)9{(@'DIϱhV  !W64=B$R1k(T+96mnO_ 7W , YAE%"3@Dpc=q~ԽhIB&׏jWԈ:8~9B;. w%BE<[(B+dntB*kܔC{n~x}`&tWrdY@Cbԍ7%n)2RҳMgjkFt4بb>mMӨ?KU5e+8+@x뻿g@P5%!\ YCZ )r $C:( dK6D.LԶ_xNrJ'AVk/[ 9~n-q |7T3~>.}fԈ c+~CU*w' 4ÀF @ޝZvq8ـ&9d˦J'+פԫM3b~BR77ĹaDgs੕lCR BghX ⮒"y;yYmK]md4M 0LG˵ ?;5Ĕ឴2+B%ZYc}R9_uQyË>?;P֢Њddm>\JEcFb>BJ|#bT% CQ`\^/ghe TI`2Gy}b_+ ^Iz 'pfK}x+>& , Y1yH+ PT5E)E܋K .'0a Eۮ)0 fDz\-p+ffN\NM6}z/&ф[lpw+lebr1<SV\cnp rz K?!HZ@\}uU @ < PچFN!j9sD?1+hBhGdtVp^q-Gѱ`9{9TxFul=1 Sا@@ 2NRT-x!Ag k2Ka,@ ^7f?DݽHl5bPo/Im_GU8T?_-Bz@ec8lU1&f":~4/oeLzLuG(\K荹iE&uq>ߢI^רn{DTFA<(>yY( >:<&WUP!-dd03A4cem+8:E)ߏlOtڷ W%pfϖѱy 8wo\q=h{a퐖CmP.ېbyjfxM鲕>Z2qiĬ]\\"ՊstM`5UwwܙÄ/楰C᫋'xwkY\m戦,~"+S{h;3w\fqȘ;<Ԯ?oE 9" T3G|b?;eϸ즏ZPm#q@(T4H^M02-dKZŎƠӸO>"zS@RŨnqAtle " 0LH>-wP KDNb 0w&BAЦJؾ+护y}߿kG$z-R/&Mq6Sk c,x`O,gz WJ6:(xzn+\9I=d\TkD ?;!nHasD tFd#+Uŀ޳OO}r.L10f748aZt~I˺w! ;UA~uvr*y} 8[R%,5+hHc |Mj>]vޟ ̸D>M.1-:r.CKZZ̑82[-#沰餛ofyM䵍Ayj[Wc~G%}(ɥ_[uY(oV aG5Fpe)ZKbY⍡Q.!@;lE4TDGZҺ^q*XMCͬ&@S%޽Z?v9}(;A}ɍ1ߞIKE5-[ ];K24@@jR\Zn؈Z{5dc 4T]#,&LX(GJZw2۵.^N,ۻܴ,ۺ3ߝh5 }rh!Ni~VTSb&K .A 3 #$m cƭhPt(OKLZh/T 5. xGok冎6ڮ/Ѹ;Y<#[]v6MdQA 8X`m S[ ^f/ !W<$7Ś+]d}~,MS&rPjlr~Sz'/>GܼfeC LZiC׀GkhyDxJoaݩ 7N:8&,9MwQ7k/!7ǵvuwX_8GYm'&twjŇݲH 53dΨ!۷ E ;$jpՈۥU%dnl ɜǣ(X٣KY̻\܂Ƕ%я} AXaOup'b˓fuEA^g>ȷ{;u 'ޯ_Ky@Ɔ̫Oa"u!NOf_z㯘7lOۆ8\1VV?Uҽ>&fOl+PAg}d҈ѝsB+tz`| 5{B;/Laaf=n$OnVa g[bQҀ0;%lAMRTE3i#Z^ 'l[2z^dA6XaGז}fd.cO Qŭ ?10P -[oQ^ q=bM-gKe)}xp)Y~YԾEz]{UD2X%RyB {R;C:,LiXEm2#\ jo,;}#w;Ε@''`sER&.^EzPs@AW|܋N^ jIyW6w{ +O %0x^a P04v[ðX_;$-^~ uC˴Xds[;r0E߳ౢ ЪQev~` K 2/û EaڭWs@ R2XCڋX?Z6>(r\>m8 _my6xB[mO4٩IENDB`pybik-3.0/data/ui/thumbnails/Prism3Complex-1x2.png0000644000175000017500000000740113137372656022176 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+IDATxyTWd 4DA4: F:jL2%"qE#2YF f Ǩ[Dv݂ުˤq>r߻O!@"H $D@"H $D@"HFiyyLqM0"kժ"[*'a)ii(fZ4,` z? cHd4«$nH˔ψۖҶ1Lh$g`cjAȬUږ-[%AwijLU3md*gei5!<[m|lILCh;owBB}{j -`!%ƫV///N;CŊ` Y&/g=CX+^p~#G>C fcߡ]w[>TEয়~ &X@О ~Od @Vol~^zعs'`\rt"@?l *|UX6fyAhW0jXYY |:t"""?83[IJ^==:G\Uk.PRRƱyfIᛘ=^ְFJ|M7ԲZL>|C!3@W2SCMGe;H*iӦyܹs, 2ϳd4/Vj#.k,@9YY ׯ_X  W~Lwl F2 JӃ8~8g0Vf~RL?G0OՍ[ *Xlb!Θ%F3}4x}杉6oٓhŊmx Ys OJ|L\֔15ilowE!̠F8/e3&76_ 7o wV_ q HHHM13e>g~@ϣi^8 /'\̜l݃0NI!fek3gM3}G`I5au E!$5jjj]vCXf53u/L_Ro9GhhhGTt>kl`02M1K0u V XtwdeeY pM?hk#9ٽ\UAz[nLv&{si]`n u`۩XL?:wl?ޣij+Cgcl2GҼ0K`gܺ@QTWW+n:Ok#͗O rTTT#rDGGC``iǛ/Sʙ޵\s)1cƒ71Οx! Lg*y7^}d*c'PhL4I~̿s" =(Z\/t4ES`hjX/(\ZѰɓ' jX83fޑHOO FVϩA7?H1K:~{a\FncPP\R"eY6l)*)ԁ8 S@B~Sl~ҟG}]5p: 1PxbxI[Q]:f;v&3fxA&abz7=]/v <^f>V+jYt֋qG[%s5gG TT9sFLq*?8,-6kpøR.ga@Ŕwfĕ̙3GaUrx=b$<"yE/MezOϝ;@/q{?رC`޼yds.x[o4)\_>Ϳ:N 3;`֌fK8,Ybp`o!uY%̴>ѣk9bG %^@Diueee&=m#W 55U(;@K M;7͔Rp$D@"H $D@"H $$M(AIENDB`pybik-3.0/data/ui/thumbnails/Prism3Complex-5x5.png0000644000175000017500000003556513137372662022216 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+;'IDATxwxU?*9齑^ETD@*(`T, v` (^ *F*~Ϛ=';!H33i{s^Y}7YuPuP5P5P5P5P5P5P5P5P5P5piI(1,,yFamd6o^E)V2t<fM\f.̕yبYZ 3/4g$רSgӦScsQ3^lѨh湍w]> \&~)fځؚy.߁ tGtQ#"!z !>cVH5L</z?*t d5;ꆜaE*%sa4N5C>P<=3ьm%`.s,-`"@ ~ ~;pm.DtG ^ubO[=-% 񓓓W yI8?WhN3ga*`7MerV@@XW˱p?慝>#sB~@n|FRqц [m;sn9M z,)bs}!s=ӏ'@7̇f#""LPλDPCsוw h!-s;:DP.]-edC<U87l@1;pZC]$;p,+Kߧ}lٜTre rOele;nO-,ărRkg GAY 1}o| ]s̀w<ӻn-ӣA=ӱN-sIp/wlzIII͘X; 64j8\MrbɎ5QVxiW\ `X& !sbfoN*G@P]89nDLQrL-A1_E|\kBŋ.̜s9AvźXOD+rocgɵki셿8v|_@sڳeΒ9M&{|/\'!<\fD&Փ9f_SV d_xnR|_>0K@'=9Sʺ8,8V0*2 W{js=E\w`-,.4~TB|{'L8(>E+V 1c-g{[NXa)כ(7g~QNvh⁀k$y,&5qk1)ey6ČLqPϟ!(7f]]fW7o4_p *| V=׽s=hXXkaPf;` .| <qm(wq̀Nf̀Re[6@ܹs7UW]e٣2?7vO)D#ފh.ߡK80.@ T48س _=O;јOsMP3Rr=|I۶?c%\`vezaƍUѓ*p#cS!Ыb_uՁCG!gu{I0ߋsi4s\]n֪]{/+~2\sY~2d?pP!vX1>}A&T'V+"+µ{ʉ9v8Izrٺ(MfY3J`ݼܽ"!dڵ!ԣ>jcfΜiƌcݺu dy; " BVfM9=g .+rs1> ՇA9,{|g[9!fTdZ~VpE~Y%0uBJ7|jvɌ;̞=Y?zծecݼrg{V\J:jxLNH011FTfLjm֥E]P#?*4sgu3k Y0+=L0[=6ߍeH}&.ÙB&?o %Xڵuc\y?ڵkDN?KHP<;yӈ2>fwS W$Ě^IqOz闛i5LF M60lhׯb ̒|w+dř(S+"ܜ-@;/4\z$@.HKW[("oy _R'7`>\nnG5].(hZ%sK&@5a'7&M@׮]̀ ,?ӞJMrxOD[]V^$lyn.3eNk>)Qxx:\zGLwrbgfy٦_\ӫfФڸ?o"#ߨQ#ӴiS=,5Bͮ3,=& lE}L#>.Qsp40gD?~իWjGGK C;|UQ a==ߺ|]x̤Yqw$xJ%UM3Nr ̤ SWLy/>>^sj1vϼXS:ǘ!]{JgK!;9/RD@?(po47}r \wADY(|¾Xi^q3PS_<:αxP/~X}&;uK"MÚAk+AcݻWo"[8>70{QQʧdMKpξǫgO+(fQhq>W~3ǹH;csM&35Ęy0ER7^䃢CJ9Z8 z!c=?zAꫯhO<SWP/{P.Ac RQ?`&HaPK}Ωne .@q"rma߿2̌qܼ(oqO - X2H.HmO?T74T j;O,bC:_;DO dŎ:H`/JY9!ڗWӎ\%󥑥ٿ]k3@QW*lٺ5/Qp-y?;viŸkSO=e}]u}7YCpO ~~8sۄ8̈́+{*gPG»mLW|qE1o/N3ɉQz}+7]7R`ɪ?_~f֬Y u5!xc߾}M7ݤO>]'jV_.q$/#(3qÛ\cùѺ?堮1ħ3LkVLM](cJ\Mz\aM51QްJ (`n`AA4i4h:t>L M}4륚w+Eʝsj2?8~]{_. HZUkbA< &:ZX">7BJ3WپM[if=l7 +E|Ju۷`ۿ!ҥKc⍻ :/̭ު&_}:S ,&\j 0Duk'` slTO|\Z t)@bkcվA}O9ԧ_zZ)Ppn>ޑ ڮ1LYk#CGrLBЫx}H|Wnp>A(v(۶m3]wپ}iӦxJiL.]Jy ׭[7oZ5L3׭y&6QQQ30xxU.Yfykܸ~qxH[jz|ɋ6"#ᡦ}X5$Pb$O8\%>H(CD?*hb {Ę Yu?Oen0p8>6xXs=Z>#77%5F|W x%i PMu0Djހu랪q|w ibW3==E 1Wz鑕nfuj.M0 xH1q򘘘:,]?hRrPֻ9cV`?3㷔?2eǘ[Y/`׶Q澱A}# Тoh7ќˀ9+?^lg?p O^{="N7ce19"\fGJ.Mt)z 266^󛄛ip!>Y4Y2tX?}hXܔݻwL7iԨQZ"Ua%B),Hu v@M-K˲ Zbucm[FofEwtg7 nkisn Q5~d~q^$-R0D=\܀Z?<c v1+H|7SHjzzLOa1#=G-5f}u@VpzQab3<3$p:֔pZ3MQU1-Zh^X۷bRnn'G?C%_/a缿)IﳊNVԠts(ݼf|*c_n&x7p ? :žz:~x޿u MƢqώ5ܰ>X&E7o^+VP .Pw^J ~饗  _ o`uoR<ʢ#>aFHIn\XT}oϦ}9zl߫-1cCL "J{^@G92sV $6n:_p\C͛7Z?O?xzA[{+u`hŖ읧yħ2huճ9d}ww.1{epr ~ّcFbq描-_&6rHhaqqq0бcGbu&PTT5n%S!{00Jj9{a-h8 pװ_|ʽ8=a-bcvn7]E;*X;0pm3vUpBG}+ <w5o/:*:{o"«YW#<0".(vc߳Ã?5)\`N8H׿^|k׮Uo ^V#<1A@޻{4Ld0;Ӳe`Xyv;$WpjX8 Z7 e~`  WsףzřZOAPsB pcQ=UL(H|Rus$hu 'Ah/Pp')\"G;ǚ_K.\""whӾUag  yᶦly9-~vJ 3'&Xusm`rơ pd>yU=C rQ0pRP|!sp}XaE]HOx@H%'ϼuN{h0!"Xԩ7.{D"m9!<=H-/V74R`k֬QB"P z>#aU Fwq;q*~pK;+X9ޛ5ϥʊFٵ[̶ hu2zD|GwP(BE A4Sf}B|!+/!);/]=:r/"&ȁ`6вs!d\V}IIk$>DAxEi&:2=,}:4+(=| !b=pd.$4u&BT9EUؐ+BA[Jr|!fdݸ |X [Dlx}uFLxV5Y MÚ֯pAZ5 7i!Z4 g8> D#^@eպAk,n)b0'y'Q?z!+\ձ ^_A⻹TDՓd{,'mW.<Ϗr0u<_;F̓TYx)afҸDTS'?N=,K/wDZ_M 1kMޛ/zCc 6L}pmq}m vobknpׇA!eB4%a% %9d_+wy>/p ٓcMn A^@DĀljEL<+`q#E f] BpB<"P uUN.i A}2[%jGw ?%dxK07 =O ( 7 M6GPmFt) !pV)X wU3)12桉7@U p;6Ϡs`% J$1m޼9(B8kn )b7:rGGm{26 ?7[*wTkxJ6`+;QEf@6jJj/rjSc^{MX}@}d.?!( @ /(Pq8Aîr]@!-Z't}%Ox4Z7fv4_ݻw ח7j[LR^2HLѠ%jOO'LϿS{b|-Zs : NǤzoV0F= 'ɣ^ ^o}; `JN\H{>DG3mH7dx駟ִ1XH3FF99@qcժUVkK?(&<64o}` r~3Ko"ë }eaZq6D~&bcJM?0Iβ;p VPI;swѴn-UYj~N޹<,x*Y;@t׷UA[ P_x(s@=ze0P E D!'D?P"!*?%TeXΔrܹ`x%0\ֽ=L!! $q~G.y>$S/놙yN^@<Ssdhb|Y\'a1^|EM;x|e˖i<AtpiX|ϵ8*obpǢt)nHP>c}{!>njbbܰXMx[Gja5ac篛]bt:&Lȗ1n_eΉV&cӦMf;%8p!qTv!.b_1Mw5 \ࣕǙ>:0es< דC. _sq^<1,4hǓK};D1-C(ѫ֬)v#C"(aT>vDlYA "p[.Ѳ tU>Ϭ.@!|/f'nO09nWn)\:<|[yuJ$ɤ{?>cp#jKB tӧ+`cq q9K}F}fGXTD85n`E(+U>MT-Dl%6<K| =_as4qb&S!!V-C@ Y;7T{A0B\`zdFAyd%,!zH$q~*G Du|/ QfaO (jZWƭf nQW~fdiO b& :@mSO80׾N!6=ImD7wQ>@(}nUM @;@<d @AhGyAw|''ױ})?K@@ĭ A%׾~cKx&p[C>x;l_MVgYot# #dzpJG. X]|^»*]J~$Rj*H ψw3 > <WA2MtCCI ھU qs"(!Ep8k{2c&-9پʁ^7_'n{ @@ڌG* 9aڔ4vr](!q|V=20f#= `mUfRϢ9= q̜9se -kw~ _y2%Kϋ(bӇls^0!Zd!{D.ŏ'i.F 7fj/Cd'ڜz@ss9{?.`.[M2E 1wtDXTa6ryzC>xﶮ#`2"9|n–·i%hR7̺oe?@jUOy4esXܒ`>/q_Dd<"/~Ca[/U?b)u! (zMssxd?]U r]{7dj@B6oe%[0tL7}X'^q)]G>D 7"plCh!gRMlT5iH t L;޼mfѤ1S{4^ПJ&Y>?Wk=D8 H\ lbW>+O|暹k=$1351T5zvpcW- ˑN k[giV/TZA/ %͛piq\2sm ">k<]@q8?%%GП@buv>I+_09; if}绋2uDXYTi 7kHGc:\i& 8= ǂNsq`C(@K?%1uT%z LM"2߳oٖ%le.z&qn[}Bo߲Z\ 뚤S/[Diuuso6Nj*mճfZGޯt`.\H> @#Y8a46?!6gO5~=c4U,ٶlDr>h1m<:^"BZ4>Z~y^i2 sR.L% Egq(2N)7Ǹ&R@@?_HMNe/džhlTr@&zħ eW?k,L~|I_88?~9 v1. 0"涠z#~\(f#Y "isxyZד'B>nA1G*eW?gL10$p;~o˽?OCλ !~`'V6O!@!)wJpl*;8W;Ҥ`i9?.[M-sGv⽱g+m~Bْ$t?yx k `|b8=n25~7%>=z0X۶051Q6-?r:~hH ئ偅W kٲ?]Rđ8yX!ˉO᪈\\|e_fm\'"60B>##>Afu[LwĪHM !7,Bt?cWZR=!2 D!2@5jP\P٭긦44G9̼F'%h 3s桑!ZؿK\M̆uAl:1߱t `>7wf:.H@8d\RȈC X?n4GpW5DP]ɛJ@LF 51]\/q֟MXlC )Ժy;-5nx* +%G*ekWَr纏aNK`%Ρ@5vQiv2?:~>DO묣g݉Ab9]\ q$:ZϾ|2Jy# nP(J*LDGS@aį1CGR/5xvyouM*wPxTI9[U{])5{v0ZHq)Kt;A%a_ !,C~;jgB=-Nˀ&jlb q\6׿Q_h3c EFd;v 3w.bxXC@ h1Ƒ$߀s5J]b) t*9PP ߰bGp"!^Q v䘗 osַ PH 6?D$WO; ,DOk"MzJ@4z ?hl\ >;|m@ dWV7/A_BWW@DaKhܹԱ])nR7DES\[9G.ax{XuIKZ$TI LЮ 瀋 8 DDe[_ںMmeŏ`H#5cf"뿱x_|zW/@ .(v ! nSjg1"֢յO뮼`5 s3,0hn}yڭ{'pM7k#K 2tg/,}z_HՕ0OJEֽmD mܾZ_zsg6nKҢ&?!,޳H ydd,2t-d_>-i G=Lf6Kxx䳟|: ?gArAV3^WE(I+،je"&!ZѣkG OssŦM#f+:ܮA  r̅ݳ_,8dUlq{OdŸ  S0FGŵ))IfZ @9e@Oa83@B]m#{̛\>>הn>[}?NLY (gB4٤krhHtإM<}xV,tqdඞaOm쟦ЎK7a#sӶma'De6p]G3t r#s'ޚ-@߫]s̼N(01@1IN:=g==%uO} nj~(&_)cII u^/"M#|9]/ ]J\#I*v#$ N.,y'do Gwd $!tی_UY45k3G{+QO*ڈr9 DkӨNn`m}Y}6ω[)]L,OHk%#WhܓR)^C!Or):YS-[Vksۀr|[V .Sbpkr'So>.qn/}IO!D~>)><3?,IENDB`pybik-3.0/data/ui/thumbnails/Prism5-6x3.png0000644000175000017500000004054313137372674020662 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+AIDATx}w|UUg$7&7@ {-Л"" M@cET83N,| oM{{^ߵw}ܽjǏw'! $aG@xaG@xaG@xaG@xaGJƏd깚|\5mϥ1TF7mrNm4 &4}4NxnQUF}'siu]ܷmjPkٲv-]kgf|ݖ̄5 u[{B-jQ5QjL .̀-^0c/qS3Խ$ȡ, VrvLSIZ)9s:,iL u% ;ghk5lPge>u/wضc7{h{=wu==Iy*#nƍ jڔniӬ`߮ 6E e\ M[50ӊfq9Yj/]LIQ*P9*92RP.K33U&,JYyqq}tv.ͩA10pp@o7m V(>`x(|v V"Bw]l?Iש lpS] ^M]+Deo'!@Oj6 J"ab{3ڿS_=iD6TC*3>^%Ѿijjv&fOŨDUJzUdBiRgej 5B68Ki`}iY:vh^LL* m̥ $2DK9Nͥ}/J?MEIxӅ['{?j3g+@{Fצ['4`` h6=ub&Ѷ$]P,q@9X? f@vD\%!A#gFqc7?eS r7LQjrњSbgo(hIhZuy-Il$iNi F*+hkrwӲ$"/S 'Wd$APE֑'CFNp5T.5!֣&E֤! "= =?W !RǗ#` {7a">' 5BӞI!t!z/CT94#mt| bۋYGǟ^a('l`#9hqvukM 27- {ӓNز|xxh1X:8<3`:f;B2I`& GhvGL-tq( ;Hb4&īj_*gô1yjp_'<-U%&p&+.I;Ê5mܘFۛf2`YlQ)^;5 a}>L p$9x/ Sdd miCh{J&+~OA ' Q,ka7&yfxP\댥J$tkh̺va{QHa@LG f}"zZcSe&A">I7rhM?ZYZAHSYi LukҪ Қ"ڟ"L@ML:@*H3KI3+wV0 Chȓ#V֐ے1{I"<+ l/ !Ga߷Y@{Lbf;Z2y6] %{A C>=wa҈BK LyߢCh)"sg9)>v5PD #<:szeTƅ}l P40hgBBZxC3)*퉠fI9SE\ Hgp 3B']`?r7[27ݙ@@.a $bZ"1a"t w~Do6Q9L*<,j%2qg)^"]\VduYjHƪ2?OلА04 CYTTfLKxt! .lyfE 9Ǚ'7n\.V7qTݠ0#8 M.q{gi0B0Z0r L`}h@`:k;ێ9Y:/UœBP"!bw=&H5-֭$Ū)j/]aU-uEB{6>`$ 4 M 9y2LR8/=X4%ϤqQ(jVƌ2onrݪ> .~gUW )@@~+xRfI$=4 !,I蠼m26.@0cۋ!B^c3g;")34ԂĂ%V9od>‰vsO 窿7@6ŁM%G@ < &6|Ahe̡F Kp ߾3d">5[;lZ;% ⤙$8xڭZ,LsE+r&9cb[[)iiuC_!osN8m-  2m p Ȏ!iOQ'Ml'Y~Ei zs6=1a'ť'd1(ҍB ma0a ipy[գ2G#EhΡߢ^s+W~U}ch:H!CqQpz,ܷY.#{og/dƁd"'=zN9:QizZV19u+ 4EԡM(هޣuϡ>L&=U`@cĂ,BZ@7J &NVɾfaWmGcK$PgVdeV9;};¿jl ̽[|D[ +J̏}c׃ 0 3GG4Bs7PfYWgh+N6و`LkZ\ҡ/!4|4t(ֶC߷_$|T~0Lٻ=hFڋ}5 ;w p2ڵk1Y9_{#[X?Gt-|O~Fc?oj hG>@\Z3Ⱦ8Ķ,HI|&Ic1Zsfrg G欽",xNdwU'%5wM[=^>JbcTgC٫DqGD(as@y`4WU(hah[<tYץt NFN6!)^j{ |#Q˵n4' ShBR҃GѾHo< pz Iƅ0o;;5JNsL3\+d[Eel3A4.G7nEhqdIpq> Ti9BtXV}4|Q\6~(B^бY4@əG8bAcz1C -P5k8E r:h&ܗɤu*K߃gsIۑ,._E:FcqECkLsavۢ]cX6[x+[lr9-:Ε9rq !!fڡp3hþ4^{u,^N"|Hl҈FG}mWTI!g;`BGCXy @i1ɸBq\w^!9t óx[Fj.$WBz~2"#-%V `gyQ'@>\ M Ɂ+Su41X3@0-1j_,A*i. Z*\&IT YgiI;i4衐 ar3:$̥E(>O ,!VYXoVUNdnСpe'&I5;A;"oɅ%wwhK !9|V2G.+S2Bv#wӹ2I|N)pLCgN[p]/?KY cVr_!iTg}N $>q THmZRituE\0^ Gl pk*,,c&C{C9jj["TX.Kh?n,SQ6| ϡkL_unj=kԓ*!7/Msk|-X8wB7V/VÐR!5yU#8Kxvu|b}b_#fD \N<.V&tØ9)`a^k]ͅn XD[ >\&i;F,'vgt.Q>i4p_|@, y5cwzm~]ħgR>~B4Af#,eһs19-)+{bKICF#\5JO"@&D(d%-/nȡsKVh/ZWp-h)g_I@x.ЧC9)4mmϡVZw#Ujw.1?Y/>y\5<cb6!n!4w0o]؆ BSGH0!O6ph9r4a$Nل"pС1.* Ruf&[tkB>0ç֒o!߇8[|~ H-l[ύn!,b{\F՚+(*MnS^={p?ՌK-Tb~>ow(nt-M;K G !t ^aAxzбn]I3@11{ihgHk h -0ob,%|\o.u Jad>@B/lm]C`gC{}tMr"t*l="@JkQ-ߺ wܑC gO+']bd5뽷y8Рna /y5 \$7xƭ;d[h.Q\Cg· GCS0vw;x1a!s_"Z7}4qG>q K:@Ƞt\:yb3&;@Τqb!:9\/R'>Q0w!3]twL̕\*lڰ~b7޹9̷R)MTA-t{x9#yҙٸa-BD Xfx\זczt8|k9= TF^|.&9}=FK!08/ŵ%00~L,,DfvGJ jYPE"1K X@8:9Zna3'(^J]S?s^Pދu;fFG$0*P7p؄#yt'L Q^}@vMh* lqrM|u L*H(X{{T1I%K&c,j}7@cTd*HF]{0n5?08/1}5+>V9I FcbE5d lcYM9KV_uT2ʼn jMv:iH00kMydK:ҵD@9K)t sEpR*&b`@19=g;v"`vF~zFX/ {Dk-Jԡ^K#{GRʱ=<'N}j[ $jȶokdyq p^ޫ2Z^K608I{>fNH¤4#>Мb&3Ger^`JA Mb.W0h= %FJlQXc缳[:#E} fݢ~Kp#@yu v\PM?p.UvJ cF,4i@H*nBɳ+ p(U$6c;]3'͍ᄍn¾s*<.El*^yyX-h 0XJmqlχKI^n`8g TpX-OIKPկ/pHtS{ m`́}jWT)zՋGZ4|T)M4 BNۯ|>c-=t@,ܭfVt* B$mjS <?q68 OHsc&5  t%gFnJDD1^^\B[*-,@vYW__҄ L~ {v?OO?˾#_ Yz BX9kIM+۩N-4rȨ )l$k+%'J&H%4HXk2M KEAf;֌c$Sd.;}{:bStRt!zN1Hs?ίtù_R_t>8^`f*=T#JBx(_{_Bts*۸",O% 8J}jU:x`@S܄<&.ח8LdsRDž}ƍ97L$hBVmܷ$;`nUCgh #!Sьj6i]G\-n! `#oFy^A-GX mA9Kcmϕ61!6%WQrc Ts r pNQ6%S>skݑD O`+k<8=VgGI%8k nkZ [KU´%׶r~dhq/ WO5wTU#΅]Mkgԋχ ,A`y q%':MX\wӑ5'ȭDǰܚ/DkI۟y4&9Tʢg%R|77Q}:7d;Չ)Y$St#M&Yt$W!xtnLҴ7^cܹm'@޽TUiK2TבRRla @ukC0F<mCGoBf9sM zI/!# ;|<\F;G +"^7 dp[c\%xuə K F)5ipn!./٣u ɲ]cm)jPh)RG6&HZ@wbB7hF+lՊ~o{;}M}U!I;0 E%ht7][g%ӵ y0pd&WIXX |8Ls;e/I29$HX'l ACk{~7#G`s_˯ٕ wT`S O$`L_x ½ Y@݇NB00"pw^[Fq=ZS.c @3[GKt:GA ANY3#q9`YvZG1$_nSh8@Y &A$|LWXtN|:Oew+rv,| W~L=~Ȫ (Q^&Όݰ*1Hךim}b1c#nQɉc^%쟝]hm`A-E;XP^*@E"'[CraC\ǰϫvmu#fN3DU9d/PZLJI _/5NඒC%h!RDؐ0ΣZJ29tX?Zx)fJ`*4sGټBot ""dO6 v:ebx5{hѝ@3]{MHFmϏ0mN}Zi6g~~Qn0G-s3a%qs疮gBA]O~饥Vz&xgO1q.[x^D8Ν(&Ă|jj L,>:?XW}`NXjō$htHzy4`Pݪ=wLRCw~9 z\D[mnz}9^ke@٧GGNeXޕX[jim_iΒ%+ "F|2һΰ6=3'9ӏ!-%/׼>hYJ)1!{>t>LuVh٪{~ӿiM+h^Ab 9}jqD[Y5ɺ!9 u~W*U1c%:;{(eKؼN,;S?|_GF]wB'jx R~v` sI70-uO14#ko+P{*)>_V?[!t@ фb@aB-K$ 4Cǂ]a,Rpw ~[< K ''olcYd֋ @})j@ptN~"ɡE+~~tfOl ɪoGMItscZ@zXp.#Gw۵M})tꄕ/p":Xv[ LAN@ ޸`Y!۷iAQ5W+A6QhwO==䡰3B3f^ƾ-) 0m@g `@ߟNfNgp͵}X9#h$呋+~;Ud[pz~e~;5E}WC²Q#$$-zY0?Fy!kؓr){B kOh!U3Ȧu ;|;LqWZ{ok1a|J*L{>2?y%5ՔjٟIY2=NC lCYXkqiKԵ}h]& |tG%?ˡt }zW@xdBX2/k1p횺s簀]R_|o1=O"%=kiR#(ٓ-ȴ/+VqY>FѸ?L^c ##򶟼گyqK3-`lXKH:COs+U615`{ϩj7Kŏg HciUyͧWSՅ8Pϴk;NWQ#` @c"W]^:z#s[[1څ}Q#?T= Iq Vmfx( 'q!u>;ı#N (ޅO/dz;~#e ҲحX5TtC$i_pRHsVVHahNhQH  ^;1憽,uhrɓ,﯒i'3;L83&^8L$*ߥ`-ZHJٯ:{d #d*Ɍ\g~j.N(L'_"RFZ81F_hMjΤzMϤM/M9s#|;GOsÛȷ7Xq`ߊAUM1nkAGQTB<|)=w42q.Q`:sXbaK0uvKCo !y{C>Ȃ+ZM9| 5ݜyl ~_J&:-j@g~0^~4~~b,Uw ,/^"y]C.t^|CA _<:4 yez p |n^$: Dr% 9i=Qt7o Ԧ_!1=L4Iyn=ƣ6/Ӯa@ܐn-&3*TZJ?GFGUO D yܖLF b_'e Sf[;hPRIo`nK1H9xQ3~T [\4qQϳAvY7aV!P4p'^FY=|{E7_&sLǿ! 4f],DwicMrHsb落s;$l;RpۂE ]) B׺?eo <Ԋ bmk+!?6sf)/YО mlrTH%qV0ƫzuh]:p=3اܪs,O >JSbUQ^'؆⒝!0z쾄Z1ĩN{9t.W-Wb4x))4V!h?r "66,LIHmV *Rؗӹ3֔\7Pkv -8O=.Α0덃O}ս 4`;|?:Jl$ܭv`SeFq,z8l^512Yk}!¾}n2YH`@V &RY>n!3î-)RhW%l?O/u~$5K}GmY3ox%5҇emp||jjh$ >y䚯ǭCRgO+_KǗT4 a7RCacϧ+5)^0 0KKR$gu-;2wf}ٝ3YkUIn(M׽|8f;۵zǓ4k{a۽D?>˫W~de@i*DrFEl]GAbt9|ShEt gX[\/MUkRwqOzfqY8<,F^u_F=;y\oURZZ]3*kAoybAT>sQk7&Fee&yn?[T- eޗO'{k݂ B8?OUV7=Dnфv; gsG~2 ox{=`{uז >C`ėJgv6p.4+W$jU k`BI!㷹J\Zʻ"iGKM!]{vYjYFnML=,o>5議O_7}%X{  Pg6hD\A~c(qA)?!x˧cUvVHlz^u`_߽[y ʵOwno ҀGVX :y-,KkkMey7!/іn-oѸ+c_]qNIc݊r.t = yN}k;}ӵ?jX'&``ޗ Y``&(2XA*8 ;JMi`^-Tܽ'H-u-flig8xYG ~A+W\ĂQSt;c)FGE 4eFݘ"6=۹~JǃP|&û4C{n8ˏt#c 4DyPEc{Ew49VZWFJZZjy X;h)l4n_Jղ%/0Wz13[ǼeKvGR ~r4]=T _XU=`Ӊdk]F!zW B@w-ܭ뜮mCYݹjǎ2*ABn,e&hS2PP֪eknFrCo /cM!Xtj0mgj>u{duPZ?HRױcj#oX0Yu]ԋ;'(- x|ep.~A]rъ0`kԼЬC%&uo}m ~lQsS𭛹d޸ud Gc /Zɛ0#  <0#  <o2?p7%AIENDB`pybik-3.0/data/ui/thumbnails/Prism5-1x5.png0000644000175000017500000000604713137372665020660 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+ IDATx{Teݶ]n3a07PAb* RL=ǃ˒m:Jfo *hFVӶm0303ζ9ρ}p#ByC?@?@!@!@!@!@!@!@!@!@!@!@!ɫ2웲ۛXgRy' /n[yeޓ'k>>da_7_Ia}B~U?,o9r('S^ wGܩ g=-4wm.3/28&ƚZ ]h41PSSte3 ჵ_iԃ*!_TV+ V?qqq"X5*-z$iE7>vYx+TcSqv\+3* P;{8kLd0eOf |׭0&Ȳ xgo /ŠѦ@ _ob ^@YLz3=|*u|Ldz+sb=+CrH쾅^Ey]yp}xl&2muֿ3WzXv0߱ǮGpSy $&pς: ؼ*`G7l' $܋mH=R@8D X lCyaJ;@yAm6 KJs(H#v(o'wkTDm0"##n`TTrƫLc4>2+6HM d,{ GPYa,;C(j=g[;CWTF${ Y!4oE-Sh4 gq55y\Hœʊf IF*.8G\x,39TirGYiKĤA{<ȔUn< 5oz Sl 'v(ư?w $(/Ppb):<pA7fYѾ[~֐H3 .u@SKdJAqq[ٌbYiR}pxnm4%<H왅v-tC?.;,$@1D? $**O]Fnm]6}p_ <|L _?C@%JieE3kN?*|Kޑ.vzw<Tj EO|t?)Ʃ=:&}xl˖"\?ŬEi*=g_"f5ˣL7KOt/5ط x5J8{ <0tfͲ(Ho>l|i6C 54 ) aS^̪ @?!oW,:j`>s D*+_4B*^; ^ f <)UYy?wH".: LzAO oς; X;S#y4\ƖEXB3.=Y,.& _9TP,ow4%w/tSCŠG!35t8sb(Р$_D)z 0E wuЎ'y30yбWs40ݿLZwL ECl8ILi|IIibԨ,V|Qr0+>O~f0 g6p f.dPP<2 ݿ>1)(3Ɯ;_X=o M Up =s &NH `[ex>IѤ#PH xү7{aNI Х2'<| ʼBxxqvhǹW>g bz6R;,cJZV&sݻg H?^ Ǩ{?;G ^sx/Gk`%d/c4 "qY[Aq>0_"`KV l6wOF#}F,i6WmP>;TkGjhXUpZa{v}dv |ELҚ^`Xob,T;OJ>K6L1W{etk,{.H$R`pWmll"eZ]m9ە{AHFIENDB`pybik-3.0/data/ui/thumbnails/Brick-8x4x6.png0000644000175000017500000002551513137372576021021 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+*IDATx]y|Uյ~XssfN 0a$3JjU(U+* `T^kMm^jm{9C !A=$}k}[kuwOk,X`aaaaaaaaaaFcl{Ȇ7N !z[ƾzFΞA׿^!)5{E,e2:l4k3rs6a`1m͋6%7(;bqn64Gh/ۗH 8HJ2S5 㯣߽B:Is(+LDa#qtt!2ts!D; ' i5:b F=`,,V2PPennat!J;Kkx2"~5T좐b&@HR07@LͽHƯ1iyvvP"|؅dQ%l#GnLP:]?-8k2+ $w6я ^Qa'֩ҵ| E">; v C?|- nQ;ôH`lxgHXLs(]@sHb|@6PHsCCOt+ܔM e\XWF"܇H1"0(7mەi_rR6^v;Oxxa/&B'Ny]h3lVc)nd5 Gh5s*ntSgW`,C>-A=ڹU\j{^Vd&-n>!D d`n2n'u g|Y0jHysQsb mZjy# (=b#{[^w+]=:bH^2}t D@ 31m T0q .R1<~2DC ^W%ϰI3Rud$`@N/ 0;ޓa WtS{uQ k8}R,~W6w>qS]1S(!%Q0P)˜ |-)@nOD J՜M99g(=R1.Vn'n%<}0]2cdgccJGņKO׃\yy4*J-}t TraAɸɄkK|?r~"Bؘglb}xtcʘΆ%o3E ~f]#Lfy b\eYfnv!` |2~)!R_z"vޝ-mk Y7~A$YHp*#U앞&AD3 FڠOƜМtɡ8m}W1<%Og lhM||<_J[5w `!EE͈$ռ2,pkOr|Q*w/$ߨ6eZ', .+v)z+ʘ4 ~X(c1MN( ǼsbЅp(/q[xs.\;Mʻ2at` y}j1> Saa6KuA>6,`'ի4pE*mqʞB2xG ްQ4Q6HK=E!MU-jBXOn2]kքg,!&y6`>2H`y\ϼЈ XDF?v~lKB|ĩD7*]<YX b ꕔ,bѡ <`y~ bC6]4Br"fAyެHb bG*5"pI:xe0vݥlhrP>,8g0>ⅅ[@6&AVc곯Rnswv2l9K 39e;/)ZHbӑk =q1yD""Ltj]|Axw_F'$9N[8-,sDIܲw{vS`5gJRpNF-}'wHk*%:pcI)ne=.z~pщCuz (R>KC^vr -Z]2/*<-y39ᮗ=0<+epllXv2>J3 ( s =kHX[o]9CWv UmI')/Qy?xPP47C':]*9\0>@|8} tЧٰA!A!B݋Ý.%g2> t["LV]?2 0S 2S/Q47 0l֠{;BϝgrS@>ׂN{Eo![F`Ͱ3)(MF!ࢩnq)Hѥ@I௑5at<"|s44 'R$/QR|1&!W'UZÏ BMUw oyyz"1^e D.b!qٍjR9P@#~4!ݤmDt7cm%] ޡJK`]$r;ߴp l‹H-0 wY2ɩQ S1hzD2 N&dr )>\0aK=5I`FyA:6%^ݰز/}!GbZZp b+_ vZ:=hW_ nR!b1v KBZ;)aƝoo-1cqw P7'/W|WnTZBϩ#P $99}ɝ<$EFw[(G2^K/lÀ iJ۲6 KeX|r2_w[]|iStbRrEb^rSMƶS\9\B_P;-Q@*k'إn~ 'yE~m%u)=S 9vH"5 dW(= LpꕸaQKL]'?kBnQq}u=w tR+ۃ3\EI$Sn=8@%aBٌ\f#:8_R/Ř!N*f=eRni ہa7[/롵' 57B(İ`OB%KEʱ{Wv JvdHo t~?}>tLQN_op)Ë bE/lVI MLv%BFHjkJ^?m .EU~1vU@=y}g ~gθKzF$G6ոUB$"Jm!ry{UZ<  {&ْD 7a]ݙ2 0wJʢxn/D<4eZB{_$/)n񿿔1)W{ħÝBџovܽ0a,5OW xJJm{-uȠG'<\M_Fk ~PaFd=/ {%.:C%`n_YIሻx/i[,[NI)( pr]Wr<;\ =&7OE!,;Wd%MIc24xA#g$K Z&ۓEh6_qr>PCz3uV 2D < 7{{x%Ͱ?{@}$sl.MTwd8xaN o/JLЮ–|^Cx!.  \U1nO*q^"z#UR*64GpIˑ)!: U:w="KdV+ fRB9yٚxo.Wh/у{)v.Y-~<_:!4|sJ7Z#$q (_GXeeq] V<)xh|' [|:ԗsCKGrlO"fܴK cVٟ(~N!nXQx}mui3wʵNJ^`CG̐S`֚2 ?.$Sv-(tDHW䜹 5(5s\+ør $?4\'V+ 9*uD/ \mLd[Ƌ0$BaY(I F*mKWW^aBMBw{cYeX,3`v> ˯_#VG $H>}@ܶ9(OWV>#sg)g>v7 Dkԝ wC*ZUo18>CpZ-Rʒ}"Se#RDƤaw+Jŵ6"Z7og?i2ύKu6۔jK cW0D`F;ž߱gώ?+ DHa0Z/(my,K4R_)ɢrsM'jϦiό"wh8X$_wΏST,IFdeex~OεB` @$CxN &ἐʆX`>xP|9*'y,뾰=* qߟ=*_LuB<\?lۦK^vFwАzG`<ט@ɥZ+pvwIL(uMF~e+SgQ<3[NY+twQzS.qu1jxYw͠V2ަD~oܸ)"R 1{M\!`4BFT]^|)=},GgƟ|,CS_5<'wR+g^62(zB;py<D=@n3*LH y $b`2ZVtYQ[xJx\O1? }Qjx\|党\sVTW 'S #"/{ ًg„}&W`A(/F7 Ӯ91PjƏ)T 8G=v}c_fLo!t. 4BSѢ˂ O|tܯ?X`YS`\(+ %~pq!ϖ!;tw -Ay-_˿tFݦΩq9Icɼ$RRJF0x3 u x{@RKF œua6/q']wDdn`BBxKwWϛbgZSـN#s#)b>&!!c\F浦wʬPEL򖹒|\QD~39붰}9ek'x};4wןJ[j HӥFQIv'I-KDol' j"\z=#5<IJL ]J'{yU wߎ(?~~o ڄj+/l`LUǑ5 P<4\W0RJ+HɎ'}=\FPǺTxO:+SN|i볗[ŞQqkZ(nd6Qd>)7io"\L` %y;:)pꇟWHZM!["UVZ)"uYX.yW(s%Pmk[~i}<")WLq1ʾyPDR9)ej7I5'q۞yKO]L6_JaoOi YO(> )yֺNA+HWEeeN%)|sB,Ms ^Ӣvn脱AT !BEhwgu[aSmi (MBsLESB|a]xk,|#t|ܘ'Jqؿ{sNS0E|R aXN$7ȢP.|mt̉o 7{|Ԙwθo,i xIʗ I),z\R(5xON4w'Vw7¤3!,*+i~րOCT2#A}|Pv&0mb~}; W'?`4Exڇ=z[~Kw}TSzQatL >ϻcH:Fա4(=ŢmPGO5-@O-(9g]3) Uƶln/XƒHDwOo*|ː)4ioAiyʘ9YB FEgaaaaaaaaUBIENDB`pybik-3.0/data/ui/thumbnails/Prism3Complex-3x6.png0000644000175000017500000001774113137372660022207 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+IDATx]gxTU~^ dZ$>л EEzP@hRPPDHG@CԡF^\w3I@>'i{߆M7)/ȋ /$I)R$HH" E@$I)R$HH" E@$I)/BDՅUj d1%-UE*IWhN*!WB l~M}GLP6.w^DGZ52l4cuNNrvN闓ڧ!4ZzgkBTiH%Z U-ي:J̝;@=Jyl*Y$ ҼQ<<<(ԣM6 5`uBos} &Ho RdgK9& vB֮[-KHzS-JH<9s:u$$&E q%|Z.3/?]; ϘMZE9dWNN޵kר\r @qQw<cMF'`#4b໠I2LwtdbkCA!ٻv9p9BQQQdcΡ`? n1]_꫚ N>@LRAQ5{;q=siݲ:.n!V9m[rI]6l`#""(22 MKek⹄`V F@ #vB: $v0AzT]~/~xm;@j{*D?©E_# # vwIch>(vߔb)A=,(ӃzR8B)EFPRL$uGQ9,?DQuAP `'OOO{ YLL KPPyyyn(A8?Efߡ~=Co #i>dn$VJ_~|4@"{zԯ_nܸAj"D1؅`OYJ*5 Dzr޷?9APP{CU;n %v-#&O9.xw)//? #k6M{໌ֿp5!s Q-I~ԯO_! I6mК5kʕ+S@@}|F\샅`'k^=/E=t tRkJb-@kJaÆj͛7sXƠ~5lؐƏD.vp ~x8}&/wor͜ 3+ĸdWrc1tGŊBɀ`̇;_M6壠gϞ ulT*^GbO .@9lT;- et)+i?-={8޵kTL>|؅͛7/~J |M6 c*7,w Vw< |g\/ իW)))ίWRoNc7 p(ZaھTIx܎{RMN=DKX=[+u C(,C!F,2Oee#3f`^z9WF 1lРV| v#v-太.T0a񹭈)OmG%L Ud/i8=2M巇ӿׯg <ܻwogTpҥJ07nuںx"vE8ߢsTQJ&>⢍{^Vm3?㼝W;$^P.# Վp0`ڱ:<\g_p)QU3@pG>L?Q=NeGPX#~lbO1}oڻLIB( xP h @lӧOsL?w! />j_ύss3o# t`ucO@޼]A<GEi/bD=C?j$ PXҒBcƌ>}TqFl߾=D8#>D['_o&Nb3Oc4tzm&~$F: $@agei _v-mݺwqXlժ?Ɵ{?AQp'"{Y>aM6k}5k֌#Nm-sh,z\AU|/RڇzvWW޿p~'\0/H{ 5lر!AmҤ hC&&Mec[緅S2 3Ѷ/ϣ3Gh'~dD~+1jT iWS#jO|Ӑ!C8p) Fj?$U@1EAe8",1&eWv%Aͼi@'wEP& 8"HGPJ0ݔ0Tsa'<#C6md B "խ[ kf |L[ I)Lh͋0#A713U㤨r@@Y83ZFV 1P>B0ݱL g׳UUЦ<)!ġl#=8빆 'f*OCd u@ k~B;C@~!9 ʶQg4 0&@+B੭S @g:(lܵEM Dh [n-ݻa!#1|C3!`?[_聡?za Yoϓ($}sPݻywu'P0 uV0FYk=!l#zlDbRcBod.(, g~cҥKNp;.^CP'`p "Hv#իjVb>,+BR8xI’c׮ӌ9">}\D@[n1I0R&RO$v8^}q{8$4ԿVQT5%AG܍E*11]AH?q I@ŋ+ãڵ;w8 PvmG{t5[܉6 WoD+`PG3{:dH\{p?LJC t,r{x$Ed8*)b)<ȃ%`RWz(ZH=$UBpn@nѢccce˖&L gΝN<* $s~yV.kvf]! vH0t$@a 0C#H "` X.FE|i Y#2sFplo_V΢el*S+^P#ԥBOF8-xƒ!2$ (p&@jmZ(4ä"qU?} `֬hqv+Ch|}T,GEWG)E'KbQ<c3O@O?ą $>''7~A3Rjy m;CnP nUC`ʿa#qA8wr~h0 l׃瞀+c :sNE9I%>/p5O[ F.\0Bͥs`Vj<ȏM8CPy"b7ʆn-mHi ֽ 5h g<ET^ If}b$px]^2%Z8v+n~΍,F[̃BZn͖NG_pXW#P[d$Bx2XGND >pr{  HL6AD]H0 cǎQFFK~'Pͼ8z3?Ob|1#>d0rmO^vcz(  `*xժU%Apj vʎG| ds}xØܭ;A+(~iawNA7}YT{~РA 4B Gއ( 4V_F!I$=hŌ>8ϟٮ\Z!<|F,G ͐[|9_x-hx ZSfPb8NooKJQwEЍ#Q(p\ëE-- (M+Gm^8 ܼViE"xY×/׽ OK RFؾM^wzLJˁ@h6g޽l٣g~X$M!d4f|-ěݗ( +Gqa"-@=t3-M /^L1c~1P2租\4^ T+ػ7.@O4xy("@dP;Tn vK@-X|2vi! | ?(AT}8O P?N񥕳Z]heض%Atxc(E=MKWu(G㇅?ˇ1D>ءC|?=cm ~61ti?~LR߶,3*p]w[@߹%z`@hhG(Q#8xp%;Ø Kg 0o2;`lB+vZ175,M *ė+:}ÑA0HR1,d1\D*PD$عp>Ժ'`,Gۿ eLES3+ʻnOQ#;#ك]b83G;^!@@ͻE x%A j^QO-!_ܵ+Hb =]tQAH%cفcdX?)7xsAM郞>t_uLqn ~ nZ B;hD?#{ p1+$D[xt0x52>F -O4ďBݢX@#Pˇ81q,кzoȞ.*~'\>;@KS ptm v<%@jPz5 . h$|$0Azs99@ uh .䝾c@GՌ_~_a+ oHR#G(7g|ZqnņZAdP0cQ[$@(.-_q~G ofkVYic&? i>?bKalL|qψ(V!< S$`ka_T!eac/}/.FQSbρ05s23/bB`NzڴiGDT`;QFrdGP\C8Xhe%Ŗi }VEqQ5BeV0tRb8bp q4&Zi =qSh`tXGqXr޽T" IQ#^8qr,7}xFYFֳ Q~c_oZ0Ο[ZܯKA7A̋GĸDc$L):zjKKAHց}ZW1 IQ⍥Gc$sm5eNiFP*N׳($@>wd:?a pHYs+IIDATxw|T6^{/dJ2}&eB $;{Dذ!X@\{C"gs&3WEP7_9gLzֳ3/X:  K "Jѩàc;rn;ƌiw숍/]еy4(`/6>/z6qt',/7z_ǸˏC?sMz̡KMm3Kڍ ٝ4V _MDJH"kj*姦P\\DERGg0yld <ɀc !_odpDQo]n4eoK@cq՛Lg>7z= gbf1E"x3PL:ΟO t_2nE @p\ϠЁ]{}Mg+06o`;pƒE W-d7^z7j%qYw?cxw$|!>aι>{DPߌTe5$TGԜKEZ?Fs\^"'Ym+3e֖o|- Neo.0Q3oDؠ}y8 -p? ZCXNPOz6.i`F3fBFr\, ars(9&&.IzجԚB=#h(V!?cђU8ArE ]lMb jP)J"#G*LK>1GjZa9102p|! w7htIcxӀ5z#P9."td^[8&RޯwZڱr 06h)MFJc"Hf>}f6ǽ<[0PFѿ04h؍-VR[;S6Jͱņ\ṇ1ԓsqfڱFO>A#l3 b(ExFpc%3)gg?c3 ܑO78-W/<4&&Ejv916uatf4B ?!Cظys0nSu.=@ءkHꗛEV23 naf?ob @Խ=])|(x!M;C-{HKK C! @SK){Wi`#xP`ܣid&ǃЩJO}AMEG)zCՀdž9PB$tlב Y;,,w_d z1#T"{oSad̜g g٨<\"Ѓ|3QCcw|mь׌zAvDB84x?btfGD4(SV93<w>iZg*gD`Gu?5VaF5 1_9B:A6YG7WAZоM  (q d];'A)lgՍ2jfdoLap^O~-QK*,`qgv㑓? 90iI1Ts"T!DM ՞Xi=;Hߝ,*@7A-]ClMGU(wKoBZiwT>`{i'{p5>t!@[3<Ck+c),ee&UvB1"+sٝ?C.ZY|3cXB #G 09#.J0zv,aȎh|"0 =]Ynd􋏦5ؤ?]|3;ҿ4BۗZu&P7T:>Ǥe||m?FLh<w@ h@Jk`d^D*a/+$jCzX׳DaSC/5}\586 s10~߰< }E_BgT+f ;&hT0*&&Pira)}ʢng@C]"ߋ73@Έ 5z=++x \3 (@Raֽ}hQ1Pts*V˖ؿfAP&FD60һ֤8)ǡ( ?@ﺊ_kxo68 d24I]KU3S|J3[(oV-^x3@(?aoȐ(OTU DZOg##|hIIITO|M\h0DmB<6Z!}ܜ|JJ#FM_ }wϞfyG#モ, )66Vҡ Zߔ<G0eC!w hnlxh I|n{6gՀE !7蓒H"s)$@{s,-I47^">qtfh4O*3aNQd)jZQK3M Ϝ/77dp0fN!^8O'+ր9b僾IobP0tH}_ 4@a =${Tq,ߤHCH RD+h#YBī!B y$pq^pQ;n3zrs)f^\%M*d-f^?2GOe/v@< #p Z) R:XcT!J>FMu:{/* 1PB$Q0i`eT8"hDGD)Y#<mh_˚ T^.7a^yc΁W|~f49 p Z^aKc\ _Ifc!avBK߽!a! 15ĕ! qLZPeLr)~_fu>k%C٧[,44{+L|JK4{ڥ%N 曆403p4TꓖLE;g7 .Lb3rpPLx1(J&ƟE#F<}CmQ4+ZMZGfg/ `隖Bg&߯1 G 9S4fg(7)=s=.,E!)Ifq@>=Jsw|Dߔ9fE kKo /ª){zV6촂/+hn%fٻ7^|.nHJ^L  ch6P?RXK06n>R7fR :|1:ZGXJO/=%堪0]S) "bb/U+ %WA6w%q5% >{obHg-ʈoԨ84}4?N ηN6e2{San!++D`5.]`4^%^e/8?qu UkǍDG)X,RauSi$Wf4ӻl!/6&`F;U TUUElrt <-Y ׬*/ڼtf;GETa=#Re%St|EdtDR8)͞:&|xֵ+4(6Q$1%aBS1#] HzXX,uYALxQԸp4nB&Lh4R YBj$n4u+lȆL&Wuu5ݴC^{rxjY{'r? i5}Qq>}̑O:$+o} \o`FM"8“"z j=XRBL*$?Q,ޣEԿ36 "T4R0saC^q5^!R='BaXNN1>iao?(U>xGǪCB8'S9>{˫r--9)Du7\dKV]iimINڹCb?;Ea `ԽwS27vsOyi`e-ݶ77Xev՛(@qxm0ۨ4՗ hvQx h}cejS|Rexy?0w55Vы{6*ΐ`כi;:. )|JB @Wg-`|>pK=e:EM*)=vZE0W0*@`8r]Y1@UH:Ӷ1!J:Y>KRIπkg4}\XaA3Ɣlȯk3Ǚ~, T*rWmWxȚ#`B,-]HW˽.37kZ@)^O!!n/f9m: &ʔ>)h󵴴Mf2RK׋}C o`BTw? r2MgX-4fɓE_Cgۧ~FdŬ duz16U,`#KX5AL/߁0[40e[cjl0`\*x~7ݼͤL21F^/](ATm;-Uc֟9OR R)|U-`3vf/?fOu/GXWYDK:qҼ@0Ʈ;ʊ=WRȠQ8uKƳ~P}J1|>:gg@_аF.]:h[2N-==nHes0sjǼt %M i@˸*}xY<0΢(,F1> +3u++Lг$䛇5g|l뤉A`ZqHʯ(,WӘ~2FGeDr=KۏEB'J[TYYIW8q9/]\D=;ހ^2n1WqJ~.?sSO_XhZU:GWtf֚,C)p@ՆYn`nL3f!0`эѰ,9 sڠOɡ.K!]& fZ=^POkD6Wl`j8m84ovT(`G62@P|aX[U\@abw:%`ffh=,⳼;R}P8Ü/nU>,2o!]RH͆>_o>{ o @[7!;gF]'T KH8X0Om챗M|qt~{a &fЭ[Z|TC@8s(^&s@rvхUCa0g|Uc\0!;t&?Mf*6Dgw! ,߽_ P|zEh] RqFZL{>tx'n)UoB:aaMd`{d1&HZD(썍pS9[P/EM݌~ ( ^G]"8gFмz%y^`J~hJm3E%S{z5ijMYBv3Spkt׵ @vUU0^=e-TUp08Y[Ys88λT _X`܀~%祲F#Gr ގk6* v02`#&XFhE>o*砆:NTEU|ʫ W!^ӭBN]Mu9 ﺳ(Ұ,9v&s<]Dxa+ڞARwC'+w( 䓁 FieecX4Y'kzhjR}x=2#aEhyeM+FU䟟T0 . wgfg@7@ iІs-H0fλf{&h.ɠo?vӑw]; xb8ҰV .8(KR4GNU?&)H03svZ!0==[0cx75F |^jפoVһ|?z{?ཽjy|[eЍ>Y@Pcӊja0Õk9gl^c{WYI>~o|t^XsU%Rg DMkZ_l9( _ t&V TCoEZ:4 E3q~ #?J}6^.A#-,JQumşwFOO@J9~^?8YM0 _QlO; bK]DB(/4W{|%1#h-?7?76vGum(כA  sz\B_* @ r?cG* f7 m~UAl.ReAK6[-AwhL 7t`5FVnj mzqcu3;Nfcz@mĹ{XE8cPɊ@ Z:h)^|*?g>ocC~[l6U?.-5<W>sP~ _bOrIvůEsEM:h{ 7C7k4S_2 VZN!+ۆ} FH9)Brڡ"MZ읲t=E< c?}Y9EPX]KPY*Lpr)+YA\,^)eg40VZ&k{b|Fa4}t?9wJ> .jw?o|Uʥ,Y2cݜ@>V5RΓ+E X<:i\$)+}Z:}XR9m*ǫ@TMb\WC3,*ax< Ju,phI!v{u 0&Iqu2th%QB_g#^+WD׮ %Nz/o S/\T(̰ܢB{8c1ŜO{.d1%KL15תіS2$-%>xPZ΍]6@/>HCZުg`,Bu.t[,{{mT3 jl/hڕJ#3ѢqM7Pۿ\@ta^.k)Kq ?<0~V,ЀeaX2$ 0vV vU(~PUX͔vδQ)60E+@~A?'-^`nlQ j"($9~P?fbsqc E9Mk PVUE]T C{ ;d-"dn0iEGt.CRxVzM,D2{_$]PUFGqc;(5-߱\섧5Mn{ޗ]*͡l%С#69 jk7h u]v0zFl ^zr d{^El`Bqjڄc%")Fߍmԣs;q\fZYſ]a?>i0`TX~OӚ # :i})ç_nc6QSY< 7Oj,f*ޝJF2hTp +!zwB( XloL5v[-)_Q,3'hBrVVz.'}7SۋŒ.z5e>& yn+ =JjO_8HOLN>p< ;x#ӲrQ`Ju 8'@;30RdJ~,Y$tPrN6:{:{^Q, =V))_oаrjouʴl} }_yΛe7sod{TRƋ9k˦)Mrљ6=QE,PΙj.+kf6'5>< vy] :{&*ǀH̔?DlBKa3~HM+km, JgmcA-&6h?ݨMtnPsr.ٿzTUav=}hҥ-b> })4!U}V`Je0'D9 ҹ^ ?BS@-YH0\ڋ1`TJ,lvaWa̴e 覍ja`WU`19%5eϥ#{軏vǰ6EG>t}{g&0?={Ӷ`ZuuN'&Q]9;XiAuuRĎ"H"a,?HC.Y`> L7(OpW38`zq?9 s% opvV&v+dm# {vIq؇>z6.C(5%)Xuse*R2+sJ5&yxX}X`YNM0X.aռ<62,/٘Gh2# drjz>tuK@,䵵w: Fu%7Mff5揷Ѿ'0Su+pBO+}M5C`\x˚:slK#v|5sդD~iji f}~P'/20-˴2T嚖+~P [ɆOK@0Kwӕ0qkon^bg0Wm WV.nfR/+o^-oĄ8\:}[:aJtȢs ̫7 ?iqdns:wFvu*!( EBR 9>"tHQOᯭrp f ;SC Vh/(k~I <..JFp $^ZJ߾ /}zʮwW(vtq_d璌T9?yXܾ23l!} xr&Ӿ{TS}*4}R.2UW c=(3+((nl8ry 3 Dj) pz- qbU=XOΦ2_-wbm;/ , 2Re9 X"?œ-҉CDVf,~} VuG8kUm\nOԥR- #\ OEOfM"h^󱿏@5@' bu_i`!ٜԄu#6$Š$c*)`CV̴k{8/btxwd\*-q#{orГ]t _ZS*4 l `0Ռ?YDbpg K.G̟ 5͟ۦV_Ļ!%ް$mjjWį!01UUʦSȳCS@ea2 mFLGUss8gl^T)c* &uTV?t^e}!wzTPI6,aUU7O-Ozdp&p%25fc,ctnev/d(Dkz怶~*`a9UV_1,M;p3,dU Rem79d7{>ƌюXqkQpdS[TJu On 3>zq52 i 4 FcDz.-[C= " lվuQ@o/65(W`ʗ7(L1{lqg+j<4Gn6Ӽqfu]D#:?gsݢ 6=yg! \H z2F}E6x]ᡳ'eK!;4jtO4bDpa+0-t `] "s@,-x ;c`o5u}/ ƇDG={'cTaV;dsg[iTׯ#={!ix2GDܦf)2O5!OϺ4ZH7Uo7#}3 x%>2,x@tfvT¯woꏐCMq;/P&?߇KoTt^P*~>fkBj~d.=R OY=* GKXzAOu9t0Tgњ3N{ uHܻ]?{Z]UMӦ򩡼=#Xn\jdN+Uq>7p9KFӸkHCBaH@W%:$hفsc /,=Pͯ8-SU=Wi`cWhX0/{w^Y$7=79G~ui.}A*C0' 򃶐zwrI 4eh6=yls菈UՆ{߫P_X:dbe(|1YAF6jkh6lJ$Qæ%/N)ɱ: F<>:7R!2Jh{aPaH{<:3413TD.krX":/R%Υ=rmRKm]T&ufoÖyd%a)Mk|5Yf?|FO_.Ն?}lPoPI[H5:V,3ȧ.f?%a4~`פ)RYŋظ hJ(S+e@Fv6p l@6nb5f.KVI/ @J3D*6`q}.`)C`K'`2㦋UP@-uiZ*t6(VM7.]Г/*M;֍:J^yv(`tH|FpndHJefxlMA'6h4C*3 ֒g 0C7}شI_ 3 _QKlj/9+V%Ӵ%tvNJL:ԃo~?EQ)o]/(#C80ĨC'EhAÞccvOy2?iA6Ѫe3pZBtnHsFAʋ N E}bbaӾ/tRv}r%,ܸ@gnx],*Ubx`y-^ex2,oNd0`Td_(X2֦"u&rZ*x{F)-0&҄9t;ZWc=~%tn0B(*! AEg+ QXLH|aXB@,ī@yl<_ki%Nⶵc"SB93BRGTh`b1&F@UQH„fW!gl  !ZE@1Hӆw[O[Ù-ZOgDTC̺dD@- Ta[)hGJdȠH{qHk;]iI%&w~[|~-q鱔Ylh||$I,!PreJT&٘q*K^0hFRGR"5k5fHSBz;`d/ fl0DqV(1xLZwK$J-a"E7;X*H"dT0JMl|dN%#a7!bЮ4E),x/20O]Uw{sNGßݘ2nhKSjha0H[D{,%f&kevfpt-!~0H`OD 1HԺx@5v)T >RXGgwiIl0-gP 0&PȄJ6%JbZy"1Ha(~&ɒ@q!4GP%aD{P9RtFx':RRE?0B#j"iӗR94]W/u荮#Ӫh2)kTy<W S=uD*SSJi3փ_'(՜L1(!VS+4~-t/4bM ZroCG >E*Ǧtŋ>)qҼQ+YsnM_5b.zJA z נZh6/l؝3*rxQI`|x4&.b2P/YZX -U+Yڌ mm1lBh';=Q9ޯvM{ߢUgl6e_;1:1:1:1:1:?7o_<1$IENDB`pybik-3.0/data/ui/thumbnails/Brick-10x1x5.png0000644000175000017500000001266613137372617021065 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+hIDATx\YtUUF w320dʠaEIK!6(ՅQA% "1(2m-jjUս'9ZB}w'?ٲkO^E"ĄbB1!@L & ĄbB1!@L & ĄbB1!@L & ĄbB1!@L & ĄbB1!@LRj iƷG]=k׼W] EuS{AB;k|H] Eۥk wvz\Ogl*r%Z{^ 2Ay @ΙUwUwMQE|rlK+u fzRTQ$2Ȁ* *}KI "[nU2,uU$ yk6׸Sб @kzg7jRO*2yJ!#~ZT_$Ѷ!d@ 3rBt2~ʨ@ /@`1!!&ʃ0Auha E.pnP/Kf27ϡg2w -}!Hg DOxk+qҘ+6 ? 2@P&~Fv30n7RύW;:`!*gUb&~"؇S ܁i\i *hpm/x)2~5iT ?Skf@Xp"t#3fj`]n-= bL{V ڻmd50 :8GO޽~~˜ߺVFuH5"vMR!vXu,.ktxu>= 2ܶjB2  b<1`?p0~HeGPc=IIyFb Æϥ C%ǰj< R{4\d-eަs {Q7gukx4" o` saٯ7.M@p1$#!\>9w/).+=fמI 6^ddhs+POsXdzS顕^X׋"P_& AƘ ^L XLO³9CL1ƜHbb~6-W~wT0A#xNR:Oi=ܜp*+ y[Z N;?2!G* 0GW'yĔ#`]0dBDD,7nƘ&\߇C7 -5c;OiLfbL9G2"CAJ\1 n::Xo.Maﻫ|\us%"$&6/3yz}>x#!`ls1DgPa{0s32W ǻpmV(W;uéec=* vR[sϭKӹ"h$Q.$߭P[`Qx@0ɟD\ca,Ësm7d;1,| ]JVsvTLyD܅@ebqf&_- *kG} CݺXD[ ȅ2IZ*_ケJϔeɃ I i%&3_9(?abuky?{ 9TsLR_U8g({MAJ; @ TFGEfB-E2L0Rd P`g 9%OF%>ҵɫѝǮ>+ e2r1"qzKuQC&5uً[31ږ.UTi 8FLe  I'N;瘋g 73S}^+na" hYhsfq Hr*8tl\,'G:YoDNRY:=Nܨ.\KtfjI*7ۭB^ң*X,6vg.~g|nپ 6YWE7yue(V c0׫Mu]5=AH+D(au^oWOA|Dzw<N"FA3AOX@AP\LPThD^,gs7=EnGKYWihUh.[ UXֹ[$VH@xc_UyuS{Bucur6T!oP\xY,Nd"1PM^Ziyb`,==>,A`P{Ò%`,ؘ ]@~Ȅ[X6^fw&೪\lA誓EP#T[YRUʇzՅÅmg {|mMh#BBE"!ٚU(i39, 2^t$~O<*Ix7V>R8y+/ZV"$;LE$7[s$*kyqZ83O*ihMNuض9+Rupk0Ql"F,n*G³u2gTgR筒CAq<6oOF I#Z=l%sN{[#} ӤͣmAvH9hDp;p@5Kmy|Rf@"UBZzmMlU+nMPn"_H  $O7 q!"P{̸c{X;俄ULmM׃&UhA(EYɱ>z —xtK+=|zO񶉦;"!ӏFW.%6>8j29J<@oeZI-?cp{c2!o4F ~[jܨ8~WCSYixhUӏg0g$":#ziˆNJ^z*lؽuG^ k1 GyW.q =#:D?-$ ;j"L͋j2p;2~<_gV7DT{?0*@&SYx:=x5`j km͈G4{/&Vw̙MP/*ZdGMemΝx#|6VŢs!#-M Q3 `!@O=O?gO>j~X8׻J>!m<0z0n2 vDT?#}^-QNn*qCkhV]M[;"ĄbB1!@L & ĄbB1!@L & ĄbB1!@L & ĄbB1!@L & :/-;X۶IENDB`pybik-3.0/data/ui/thumbnails/Brick-5x3x4.png0000644000175000017500000002377513137372560021012 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+'IDATx}yTյ:F뜚ꩪg!Jc ҂ I+&шj9vJ|^͍9uT5=:oo߿sƷw8p p p p p p p p `xjB\;~C @FKڷ}2x{1Z9ք; C0J=& Lc'^+ˊ6?Lr?J L[[ӵn[Hp7,YWq`{?!Zᅤ+$]4jVrlj)naLC6v'9sgl$n" I?h|kO9>{NqBW1`cB D8!2ȫ X]7L1y^C!rߣoj&Vdgz=D'ɤ_Nd /"5Mc'Wmߙ>Ǽ7nYpgP9j{/4m׸OgytD@@|ȀU?tE.',V>7↷As<6=Co 2Lh@D%%% h"E_{e Y}Hsʸ!@U3mLZ16uW~+e!&f Gq $rp1ZK2uQ(1=؛(iߞ]DK_:8ȒD-C4%n]L}N Zo&<(?C xٟ7`/2a >L~"L#a&Caa($ExtX~L[XtgX ܭ$1K=2tgk;`cx Jb>at8$b(**~R,B !H\a9x }DHbDAOiU9 NJk{N<%.G13 2 jD_y> '%tS ii"D[T!D&Eq}.*-}z| P@01]7OY tZ1)i&^j(%y`S\ZuNBd5 łXM$fMX%\З/ժӄKd)add,V,/*{5QW\$4RX'{TV)Qw>}Gk߿a}ϺYa&HlT B4?P3ѧC0v +>|#|cW% SeH$a<:Y{Aj-*AjW}m}+ȬmϺ"'LǪH@} ^?L0" FWD_A+S^ Rw$/ cLrVx+r2^XݫX%Y,(AM+C#v󊸙'xMew M363ȀIMd 03`N6r!W ޳w'(Q`2o q䓏L?,Anϓ^%V]`@L4DdQD+D/e*hW .iS/ V"yDQBS9t>.e/.#yyV8V@ud^;%^ ?4 ܼ:.$_jMzz}, $ӃoT&d^kPR6$#"t5QU϶KMوz&稤8.FWj%cH^.D_D)ػ/ˤ B2qA2PM;T/sM_~$V M2l#/, #k7Hposjŀܛd8v˜J﹓׋Y\HRVJOG~R}kA~eQ89BT ? ?s~I| E 0 ֒1̸j|,Z_bi~Ad@PBD<?Ż"%7G?  f Iqswr/ -#}fhV @ u{8kưu`U:ɹ>],K`><⋷iZ#~luG@{ZrɃE*o8M`/A&},+ s ujBFayQX fww *!6۴|t,NMę%U[?+c1kh{E nfcѫicT g*R9 QZgYlQ>A'ir > + L-`" %0(Q_Cu]͛5\Yb΁yz?\G-%F&Ab iaβMspq` ,\|! w tZC0N%VժfkT!ǁ$T0 %[~c|yKKMAM!4#Ş$A L>?[sL,& g5QJ$撮RݾIXfK^{3& hNj,P6z>,S ΛI\$Goۦ^%s5E"8QJ} `LJk'`ALJGUͬZ"zw@|sx>{@ZC9*U$y@̞|<$En#)w)*PEZ(\?Zzf&y_nP7RX ; HK`ZYz@D\,q=;K?/@+7a-WX. 9b\z11p%i u᭣>6ۻ/j\/tL,,)K";jQ& r:]gxF) =D{O,hf ~w<|lH:~dE>n^8+ M?CXjlkirrSETI @C~;;yry%1_G[$8 AzHYzUb&_a&%\1Hwg2ݑ1ʐ]gz֟J2 tҐ: =L@."4]ghd`#jF[Nb׆\4_):$QR pNR4 {{ &rSA1h L]Z_ZZէ񊿽## x.o?q[Ӵ}BEkuad Prdf&KdaTZob/_IQڞ*r%Ah.#IRN`}Wd翫?>ؕ%X<$:niYR N" uE5EprGe٣yE-1RFɳZF . 4IO AjbMnE .S;o&B |ao m\3EsR#>vq"7=llU~+ϟ^U?PM.>^B֧Xq}K`po6j0ہ $%:G@/qqoSu W Dq$)e[ D[7xN3t56+"y{8 :VW3A? WDTDvwx Zb]5!*X%{9B]O ŚLﰇ_e.q ?Gd"epaDAJL 2BLFuwMOAITBIVaȐ! #4V}Ct|_)=x!.xR]>->"n+7sGѼ .MUX ri\?(@v 8CTcQx7xdrn8M 2TP tOD2$KT x&'KLF92æ(^MW5@Q '0_ $u" .puAT ó=g'FF0܇u " T!D0ڹO:"plƱ'K 2߾CĢs|IHf S+}2(0 \,6ؙ`f"uM2y4C7 W5nU_8,.jǤ~LuGl!$ gG`2}V*@.LLɢ. 0J3CŖElz*"@ H!/^KeWQ}e)Y<+H^>X.qҔDвAq9ǁ!C/|ڶrg#^ifyl)sG5 xP tĴBR80mEnVH$."+xբ<{O-|UB?/d(5'^"M3ήmܶyS3m@]@1c0|Io+ ˕lF .?Ą{`pf >Y‹l"`ԍњ0qK4s*?]&t(S @E0YMhi\Id!ApJT`%.&@$ N0܄L4]'$ k- AdxZ{AXSIRUxF7$BdIyŗdEE,h7vguYw5 ™_%A+F,$ddsuz_R^ ْD.ԥy@T rTUQI(s,>"LV Od1\9:3zܣ74Ӫ0kC[JDT^ˮ_^/%@A+ I|BAMf"M (De2k].󑬓g<.[fkatlDS$?W'+`""2z2:$)==>춒vAX̞?_{#,/%L f]J_+G/Ԅ:0-T! @ YJqQVZBQ AZ4=' #P:: /[#]ȀדJL  p|, K`'₋&{ޔ~u#\Y!6J J [' ^Jɂd%B&[> BV1Kf]rOkNMи`_W* YbY>8#64EĢYMx~='p*!`<>'cL=]AVn ^1 5|^" PRH`+_6 遲41zaŦ?@1dL/3!\"2ɴ1}Ll=Rg;}mOnjf2Vٳ&1*;y3 C1"@T%@3r2y9@Űsf0#*ki  ?H'!&&m/B[0# F6=Uq$& ?b-ӏAda᯹(D>ӿMݓ (݆^C3ZY6J imp|.I&f#2FooV= YwS~E~1-.$ߤFG#Sn:R`jIBRJ'Z8v(ȭF38d0X@,\ֺt5$tdU);}p?OCip\|_;( % qԃgI{|H@C5#%T!TGX$6|̡$źԳ's en*~~-k(#l пoY<᣽eiX8Kvz(%kOUT֣ 02WoԂ',=y#i-w3",;=$:'4̾paXZof+sy\, 0[7X*}\Ce\g8 \BO6^Tw&K5ZKRUH6 [$Hce-ۀ P$DT⼳&_&j+lw=,k3x 0mGVUT8Lbv6;.Jv՜hURJzh.%Nm6ͦLһ`Z$.}U":gQʶCt! (cOz~>NV7XP5k"s_Iml}|H:%6>܁] i"I ݾ!gpZuJx*C%1&5|@gAi'1zqhY':R VD sz[)Z>{4br*DnγWE}4GDP'~ Un&ƔKLډBj٪ԳGw/guw$S`unq*OҰp(C_ܩ>sq~濿)>Q!8.a[f;d[Hgj'3Ε+wdPI_UZ`UloG3=0<+O&S2lf$Ͽb^PV0 bUs|#|Dv?/~<~cc=,5v>ty|! HilꮐA#rT14nLn[o-pyJ=^KA^p]{ :>z53X $]ٹO]>P Inc~Bf}l9f|PY9xSjӖ4v5Rz /RHl;wu" K>llCҙ~}ū)e휊ATAH1EIIhHBx/J{$ G;mFYy .jÊͦO2h8'|Y k8W/!z&KԦ.Hnrn6]L=D`5ua܇c)k |۝RŅSc} 5fi"J-lF HHc2Ƀ@4*|u@gJ*T#!NcϯS[-塦`@5׷N'4I$ tڃ`R#5N`ԑ/\&p@jݳBr'|^Om8\!zSR6>w~ =<|Zg2Tv d:Fh)*%G!2 0JiGȸ $vo {BQGVanc+ v݉e2D <A [ l%"?,rmWo֣qG @i= b&@iW> IU(t|z?jMR]2wrn@c_'HqS{H?BH.#/l FnW+A,h|'#Ȳ+IGĤd{*:j<T6cd ׋\"|!nSDv4\/p IՋb9JlVzX,1j]w"u&P pRzSz{ڶ߷J>{-aj75M %#|qވҹ 4EK)1 @J" "qU`Z& G؜__&x?ޯJI{mQFMol6pPݍ(a&S,%Oi_Hˊo.g·8|v U40X*|+ ru{[STrK j%٭!%Ɔ`͠. -LM|\-=nhHs&քT۾XqSV[S֮H5*YD`-Lhۮ{Oa>EK',zr@~_"0Y˶u4Dmt0FBM<ێzG 3Z!@Yַj:Cg8pCg8p3 Ip p p >L>yAIENDB`pybik-3.0/data/ui/thumbnails/Brick-9x2x6.png0000644000175000017500000001741613137372604021011 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+IDATx]yTՙ͟#ޫ}}YEeeU ڀ""&jaFqAEYiY d7I3$3L,wιWEflFխW{}V 'LZ$`7cQMv;8 5m=dC^0<b>Vq_@2C7xJKV4(# C 7b7,'K2>Kx9@R:]EM*ɓPՒ K 1a Ð-?ͪ*S TsR#>IK- C~q[lS$7`u^J Wx%IaU8N_ř= T(aiXg|)xZoڂʕ@[G+j2OUA* zl@/2t"$C05g U RP{2~+`HaAXqǪrof&? O6Z,ޓ_}9>Fe"zMm&Jǫ=Iq-P2\*zyuLp]^7}w)exOl2e7rcX,8YbRݣOL'NV42M| [I$!Y d`bT dpQ}$}TW6կ?f<~1=;?qSv42Xzc+#W4eX_-{]\'R M&jp0K_ 3*=JTPPd fp_vb, ױ'JLJ2DHNn}J~X$$؍܀rO;wm-['ɛUT6 .;d9rWmSS lX>3x TkYO"@rAT=&Bڣ]V.1L]q!vi~^{ZW{$Q/XNE KBY(+~c=S*Nvq<&&1q㍓8 &LUMFI@r rs ll@PJ"yN1Xe&_oV6>8dXbfbVSCQ6KI̽dhhG2_ԯϙI_6sm |5 c0"9M)͜s-L$uzg ?aĵ簿A[Yڹ~ǁ `pH;=ǝATۤHHa2|_#e+vs+ r&fw|n]&r+(&Dh2,Q}4':K獇aJ @'^SW*4)RE\=~f?h 8n6qzaYHf6gĸg@%:#w20yjٖIkه58M{ <:$ I8qnɶ}mj݃1Oqh6oà x\%^KmN({${7~|jQ8|rLXe*ϿH|L~p犥rB#ʑP{ThBg+G58&顿 G#^BL?v(6ڶ6{)W"q C/ۨCq/vYIM1Q ݲB`8g!ؔ*+'jJ<y)ɐv6v)iCИnK?5x<){(eyy8˒Z>g:TO,*SN!MJ^y?qý߿W,dt(bnVM'"4Ő$x̆́$ЧUΒiާħ[ߑh:c #j⧁HŐ0V%Y26dH!1foLJvʯn߂?ãjs)1ˑ㳣QnO2εNגnC\G˚[cǗ" 2l^yg7u ps&̿Wd[iX1<_M~<8꾢F4 <آz׳cص[8!+nRF~L_5SNU-fTS}=Ch4k|bHt,MF9KL;Ǔ \-殺={h"O`Ap5$9d-PFjY3ҰsZL>s؀P!/pclW'rKR)coy~N%\tXh:r윲DɋE2K"o{[b=Q_51_ԚY7 iKo)(!-VI+1`/MΧX#etL*SS[TP%B T͜W*bѧD`n(#[ǻE{ iUi dE4^r#6L09Dl1dz{XI'R@ Iڑ+bqyO|ɷk;Չ JQ咪 t͠(Bw?ʽ" ;a_~7^o~M"HL,8b!Q{O<ɪ,[y*j;q P6t3+y1V coYyPBq(OJJ=l\cg?&UaUU}l!M{4dg0PhB/“P](*=(b&qDK#"X)5܋8!E0(rTbYvY}<[paxdmߖʣ^F4fΧ4ˏu>&_+clP $~," <$൒Ì避 )1g 3uY:۰?:LwA& EPs LN ̼2 v<- CYbpO u7<i] ]J%mxY%$R2T7,9i mK'h2Bv)n`izlz,W' biDGK ,$M~0}-"jf:#ʚtog0u3M"m@*^oW^kM{ } DsR旒^yUn)~`>ʺZvJ*{6'M_We"eɲ#cbDSG~uWй%?6 ^aDOKᲺid QOڐh@kK 1mOغ!.*zozYy,.?kU5UuIn$t4rzB"!ȼ!ӈkJK4y'0y[q/?+\VssʧՎQU}JՊ ]Bu.1fC0E$቞a aI4^_٩Kɟ5s %%M夷̐N ҈!uȪaX67(jWˣ Dg[E/g5g[_3W,Y6oFwHrG1% ωA"V O^3~W~Ͽ|K:~nCǔ|ƆUj+: |%ևN+e9/ _Wd v>d56V U Ul̄:ZrCj;HDm 巅_|nA)O31V=i(bޟbx-w~I~a@z8@~}svv}⊶$~qPxs|8[)-*9#Wt?OAll O?<%&yT(%_1^0:4thС C@&M:4thС C@&M:4thС C@&M:4ts/ݔ IENDB`pybik-3.0/data/ui/thumbnails/Brick-10x4x9.png0000644000175000017500000003013713137372626021065 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+0IDATx}yT9CWzGf1 2ˌ "M5EE@1PDD4^@bL^wo'yI^{ZNꪾm?M^{s_nɬwe.B@feYdV@feYdV@feYdV@feYdV@feYdV ^"Õ1i~]i盞k3= CWw@ y3t=xIv=`u+͆HqVg$ρ45.@WANK8'ipΑgMι%3`3Z5X71SׯmWӠgy`H/v}8c#֖pSFvy^lFx|y ;>`M @+`-I <_RRxO;0/+.>6$0(u+H`|x z=!G>! Fl${wvi W@链H>5h?x"/)ݗ%uR~?l7̐zޣN Z2@^y@7+Nw.zk0 - I`fm3avU:Oom0 H K "lh w\U)>lgx^g0x0C6 =`Xf/M q8Y !87qwinMiݶސCvC鏀Wӻ{>F/̇&y]4T{?D`y((`-7/_cSOk s^2D2ȟƿ?pNJ $90ܔ6چSM7Tbo=> K߁o' !hGw Kaݏ(YR @û' x6q7q’GFaXXe>`"a'DQ S4Y@ 9C.,xDaabF[c80&Y3%Y}s B&bhC1.eMb2ؿs\mX/.>X h0w׫i|cw3墷k_у(# 0 ՞mzN i,\3ƿ?a | ~00 cvf(-S0?Y > b >x>5h+`soG{_19Ƭ@ܿ(QT'ay1w"Xɳe]~zsvaac8 (bדR0\k5`<~ L$$T )3uk)5<P1GPOY2gb݀)8{2dJts>ɱ#&بa uÖ4=mDdI{lftr7P d{6~  l߹P,q%XAG4(j'}F/qNA gngs\o( ȗΕ3 1\ }Iaˌ4.`n\Nr 5  #O8HG PD |JN`]7i=b_'ZWًtÀipp죢V$XgI7`'f8 .-<'f sWZPڰA ӻB&@q,Por6BSmIw3\$p=s-> c>>9ZlOTb߽Ƭ͏hp %w9h!8dD̾/=Z&'LPGKa^[qArwˮ@o/|x,ʝ]l@% [Jn=QkTk=sAdpgfO2*  d@ 0q\ 1XIHXc1-Ͱ@Zg:#q|d{+q!YgMЙ x6!ysm~>oŒ3uWmh, !U: 66&8/t.TL2G:7Pk)MXZ>C/g?#m F8ߝ&?B󻚯Ydra]PղkC7kxei8~ zV/x7[֐ɋ a>^,ReK(2pՈ<cǡÎ!)zRVl3S:@KO0IP3П,R @103ၽ^n:OZ,aɆW0q}EhZD~D֬]J/ik؃L[VpL ']D" "@j9F6Q0XzkS`ToI34P,VcLus2A1qܜu3]a| .BYr<C4lõZ1.f@Z^׭A/J~ƍb|w@yֆ P,݉/~_ l :'h9ɋ Fۑľl<沛lz6R+4`` Tn$:w?{,R U~qWgrM.B[4!b8ug5{. CFk{ ^!OGreNgc큆qz@TcT 0(]T01jAnLݫ]r icTǯ@NN]oZjeEАX%[fQE9KFq tyMϲ@"Wˆ4GNhI,:9:r=U =YNK9O8Y9oR J=s5`ȱ`Eʽ7Ȗ\r~@ן?_.!6zJ;6;ryo֊_')…s1.g`(u+4(K^<͖!8ʰ4:9|[c VXa{,촩xBx{,H\P2S3uޛitS$|ɿoJ\@681Xۂ&,0*h0oFk;lH*Uŭ)-!*l: b B (-fXE0$y؟3`nME9!7epKn,&O|#Gގ4J cr阰GUr̘ܾ26@쉰~qG ` 66XeVhx@tc,u){i k) ڮ1Xe:I=9 L"5|I=GpDZY81F0 ($ʰ KI׿WJ.Y"Y>+*Oޖ,_! ids}bDG!DT'a[ߑdKfpTo2_V sl‚ds;MƩ;,f zyvԑ]'ۋv0W<1$ԑ,m9{2/ENgyj) E#B*>A_)w@K.O?{KH]>i[bҡZ: 5x/.'e[m/ p.EqɋOJf"[e5#@CzaѶ-P cWF^XO^cg~Ad1L񘦻 {=H0-j?}\)|3 nϕy@ Ǎ2Cg/,q$2'9=9 )C#6ѧFNܠQsY0f1ڍdٶԠ[lp{QyqM9$y4As5jV iĶ!Nn7^ OXaGp5V>{wRIekE~Z%&G֫V!|kmͱ}7K? = p?lWy}$Th&OO6~^$.~)Agi?Z&XO1^=8lB܆+K`u}J*|,CZk-e'<**PLDwǩVyLω#k1[>yoS%s«'xu<(VLj2*A8FRbS7{L`bhg=e!=3_f+>S@؜J&7-LF`PCqkUaȵ##~;ɖn~aa\^|(O CGmȘA @M<+V3PF!:Ҩx!sda CJ̰Km炑5`1;}\wxm]R;7[>ˢi"xb~!gd*DBe tR$99gRX~\?Q04$[ʓ Ic\7P3v b48-,rZ`*C~Ik+']4zn *6ZO$'`L5~{uNYF4g55%hN" t2nu~8ΕIB֭0PW.w"WJ3#w˵7vHPO`מh"7~ {.} P},+LC8XnKڲC|_cW[i>ofGc^a=ARg|pr?*=G=UIm:g2lci8&_Ύ_vR,.^4ѻƅu aVy1}> [>&n]U֣xs@q@VSCV2_$4O}>K"Zahc7𲹕Ǿg| _elRwlYeOޖ|*V`/f8p@Yl!qikZ P5'R ukmj Tc?{ !LMX19q~X8o/NyٚR({,~~ "5b>hN0 \5+&PT@M֙AEF4gF Ԙ1\!0T@,7@0 00Zd~l!;[)5BX:r EmQhڎ򄈙l{BMP86k _~X=OK|eLO.Vo*E̚CȺlsUD{7MB(4iצ|/2P/+kFY ;)ѭͳt<WDnw9&2:&[Wv IB["} ,@_DjƢZEB;`-Kt\]=y{kL!s}/?Q{{R?;lFQ{+L^O OPgk)ޚ+~3۲*2Qrb &tkfn)> LD"roCն1hx)pʗ{;|f\4zTƥ 5>!} _{@Κr7{ͷ(P>Y,Hc-kdG˾}f,RS1Z5Toż";|LڰI l@sC} D (P;N`1"T wŚxg}}:=>GӼ)#C7.kk}jtrd|HVΉ}վ}B)O;5.6p\ O(u|mq^ 84U%xp,~ @? -jrBc"Y\:[ dȚqp~G|eOI/ێZ:x~HTOEf ^0gy )e,2*JIǿ. {O~ӤVt<L~d 6̈75{si"QSS[h6˔#L֑̾ki,5D))]} 3c͂*"2W@r? +Dڄc^jnd7GoeT 9cMv d5sƳ+[<9SXj# "BL`pI]F)E J2ڒi`_)o`R>al{~i?}\?ߜ#ն/v<?F7%rJ r1ux >@PjzRw}jH02NƧX^bHE/I4;j2[IT@|O*D05He^A> DduKl1kVBZ$ 0 Hf?v .+ApIY)In`ڂP2FCrzDX?#kO M(b:ņ{/>V{DIkn[אkC)im^{US퐦4 Ր $@oyW:͕B"8!aD< #AwuʗxaQ\7WK/?e^('kx蹨9 Z`V4E" FNPA|-3NP,4@d RH׏b9VNɟoUra Iqfh݃f iyKQ$yط6b]ةƒV f:T\+SGLM>؉o`EǯwJxX><EYEc<V܁l, sͱbQz;*0%[ކ ,iH~O~uL|gYauuæ}yAJ#AnꁖYŭ 5kDNL.ո')˟>Qy>H^b~@raILs \#5I1]~3x44Y]r 9rۊ܉+RS꓿^d4pߑٽcMYV'!VAtE# 9>AT3tM4Ȯ)KP Q6 X$wzپIav$綾iLͽW2<_FNK3i!sz{ys!,+'m,:TJ]FfɗXqD?Z-tPdR_0>6,]oǹM;:v/á|ԝ`ffkQ4Jba?03E4w3뗙'og#|Rz}H%u(w2`[-̉*K.OL u9:;[e{jN|AxST@DTXfn(Sw{v=cޟ6վ ڛglX7!s>SL9S1#=̓'lS>UJ)f+cOkpZ f\`YL~vZgݙ$^3ǿ8?53ho`e37> KXepyoO<o텇W7֗O/>yaZ2@>TcFVzݺ>mzS^Lڗܑ,algË]6Fz;kp}Au5?c|e.B@feYdV@feYdV@feYdVU]B]v@IENDB`pybik-3.0/data/ui/thumbnails/Prism3-6x5.png0000644000175000017500000003300113137372655020650 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+5IDATx}wxTUky_I@zt&-. %"A@{ Js"bCo>sٜlG) ><-{s|f{1W,߄b߄bK1R b)@XP,(bK1R b)@XP,(bCnY 5nprV,%?(˹][Qi,$翑x+z~7mqJ):0Y$Ļcݩ%h?4q'Mfyqcư8?6)bRy5m̀ߤ\K&t9 phXl2 v.4m܄Jd%ez` l@0 w 0\._IkS6nf[p-Z7Cg˖SqQm719=6eL=pٺ5RۨV`*yX<54V(5ж{?^n(D(`8VP>J\wkBiN^ڴGo~cLETXar*f)%Ƴs /Y] Ϳ߯:?* +OK)P+XQ-dg5篿^Q^fELC5a[ ꬔcoEusRZ57 ڪ7u:e [ 4χjT68_?XȀ<P`i@GOyib,ZV g5Ufw93f?L֮]+JMcxga7`T߯Fnҋ|^26򴱵s1 @P8]~>FUCD558ik }~u>|@0B]b=V wMc&g<\II#L7gΜ+LOO4JJJXĐ*rQ%2Tf 񏂒 TBu~>hV,C'9Vs,Z(jKa% @ƈ-Hp BG6,+ MW$ |^]X_KQ 3ÔUK];~NVE|{06_f Va'F 8jQ/8\'UM$( *X8F[ Xiud" ͓ FOwey_.pB>^mlW6k Th9\)A1|4" ?He}$ 1eoF|I|uЁm߾}2yRe$QV jU^j|o)q|) 2B.+oaBB\ mV쯝3h}5b}K2-Sq6VXVTAjc1 C#d䋲̠j]pbGkRLD hL&xyQU#xeX+ ղEQŘW+e"[f_D 8?-|<߸~{XGW usQLjE]#YwPZ+Kʔב4 ϔ/_^7 4phq`ր  1;Nlz a+w`9Q,:ǐr$tn \V~ld umDS* ۺuxgf~'|R~lQ0&|L55nw}kh2yNT\# 3%LCO2Ⱥ2:s:Aiab`8Ȗ=.<[+X-XAyxfqW"N*guUìof|LmA,woHrRE8ESy\ (#_~ʕ+PNڿ?:C yJn |h`c(dAia\I)ЮWRLt|Pp~_u5@HTpP!< )&IqсԼ~Glয়~JԽ{wysk$vldo8)PP8@PCѬQF+bw+`%˩k J6q+$ Q#)DZ#*|'dҶՋ̙CwP>}:=sy@rQq+v0^qWR)#rάT~OS9W<Jeu`CR; :J ^顔omYgJ_Ȱ-@ 'څ1J~ޟװ!?>݃ ^xAkOP 0+t!nZn:(яƼ "AkS~),H0j7H-P5%5ҷx9qutA6jꢶ!>%'Pdj[d` DЉuI>ʷ<(t(!` ~9C5NZ$QuOݻ BNRJ/C$O>+9xmWō53`:)qUc$]Ͽտ׼w\] VC8}_C捏IIZ{R<ۓ|~z$ f2-M 'pen0Rxzo-Oo3d9r$uUXF.{DѾ7N=BkKZN~8|]T9YJ^IyQ ~rt,8߃ʊT(e~BN2[NL Mr;cufe wu'e7nL!y "b7olR^?~\c`8]-J6+Uʓ۪H2NWVDRQcXM,J}ԻM~8/ XU(2+8ihP  DHў>.\0H;L Ν;RjǃWYfy,=iu I/{ʎ$*bf : +i;UX^U+,:>тsK*c4ۙ"$Χs(9jjt6r:3߉Ńn@"̹ڶmK֭oYjԩSf}饗$B@H T9w*EAu$9aY)cf8}}+*+!Mݼ^oP~};4u ͧ?96T~ԑQD@dM! {#EI裏z(\Oυx"E\O۴WBbCZ8m)]S?q*4 hQM'fTvj.z{s Tzvǻ/6dGw!2 #F w?l0:}(ٳ'73A;vHm 1w%ُauc'Ř-y@y7yx$$C>S*렞!E)_Z`1L ٜrp+?5cvt^zR4ˆYi篅"DrP <~( O{R2+Ѩ0H%G-9nE-Ez*5/[/O+ QAd^Hl?Xp:AR8#A.˔2nj:)лw;Z8FR>˟lSFEѮy+B06_ip8] 7(_˹ɴ|х)&F0;lڴi##I!s[f(g [pb Aam闎c{ j(AY@j젖.jA-cfUԬByj@RFi+;xU&rP'dhۇGsz?xD/+j]CQi68|ʇgouCF457ym8 L=zCBM6yqc,X '}t!lDPȨ*Bv%CVSG-X P~+S,id݉c1wye6XỗXo{ {z(el|Ʊ|FjVqЅʇ Ne,y+<*Rs gOw #={xѠ}1x<"yGZ&ŁTW4$/HZt3TUC 籅p< 8'2i'Pzʲϰ3f'h |&M ,ۇ5#v,L?t]-8~>#C5Ј#<0m4;v'd6f<(#^O!`5kfUr|@7 kM'UT!K9g}ˢ}-d6:.Qx8URi ';SX6vv C1NYwQ@I0p~Ü[Xgu0IB Q$(_)a VB6dAEyxQ[ %hgeV>d(HSV0K(=Zp؇|I;4Z= qRgEx)`dmB@ ~%@(mȐ!B#ԃua CP|mŊR0{+Wt-]@4FUvab][ȺC+ʈ(kQ>dSWdK<_sA4{H+;oH8U]RpxyT LPA8HB}MG# ER@*H"e3+Nܮk #h%=V@jd!.jFbQr"=\$׀R@r5V>?ʇߗ_yݗ4zR2 ?ɍr@ڈpL Ic]tC=X<EK&H赨!XG>iǨ`nP,܀# p$ڵk1Uѕ}(uTnMQY!q|T_ࣤ( ;`?a%yߺЪI U!4/ޯY`?K壌"7k|/m0|j"RH ٳgZ6}CJĠ7LP#p=PǭlV*Z k?@R!\zr({ZEwI% ?0෻,%;Y>S/pu$qUެKLy`UwRi2.IFp ,h% 篩_?M> BH Rl+A$yD.1CAi9F0xY=LvlIz=wgi;F$mB}?_<O}-o׮EV?38:<D+:6DFvF7̈k@çOhS9zTp Lf͚RZzu"`Qe P1@M8Q^#~\=(OZVk*C|.:@ޠ,kʧKӳC=Ŧ9qٝF/ c0Hȷcp0 /—R1K/.RBN  @a$ükecx tlH)k%/YDn."`:2 Ul(.*oH#K<ʇ8#J.{4 Qk+k83(\5ʧ|, գUtU _0Hp!l G =wc5jXh8 S[K?P^yŞzR{쭟bs@Q5QQ+g-~a^ʇE!oc,^F' >j(ɓ`qĈ4] "N)TaF &u0KuJrJer37+DA_U[^3S/AOdYd}&³:?[mo_^ X߶!VA %2f`yNk8hq?^Ey8x~lXV"6m6ѓ}sAp fm޽R'Ζ͢AÂ|9pORX!V.^Obמ d*ӷ=T1Gvϰ<R,9hH mgG|)Ӏ9@lcA)^^>^s0-`oٌ[Ƒ9읯 "oA-ъzѤWQrPq4|Iɾbl|>sq O/g~@(s$^CGϞEY s:ݻ `<䑹a@;WP>:YC=f t>-T3;6;R/w&Kw༥ޥN)I|纅i  9 =~bz NC yNdTe䰁?D2(F7}H'']$R %Ѿe K ߷TCH!lN djX7}S~ܹ|A K.B4 0ib>b_@fF\fJ%WRR~+GmtS>{]CF9GtY+Y # ))d"hͬsoeo@Au0;n.DQW"Qm05_@ˁ a]d#6,N }43D*W)K`}(.l_XU?ˤ>>V0O*p [=$y// ߀|ʽ̈پB ח.e#Lu$֎G>xp((Kˀ9 R3 PcS`Q:-.[CY6~Q6Ƶ^ʷ@p߱򏭳XRbz"Œ`Uz{Z!c\Il*Uu#upӟ^7  E 6ТB8!y~r@^bQd`m(!07t&x8`<|)'Eh퇱<21B DZ~X`<#t?bQNsb iaVSCšy7+t/Gv(FBMa*MF.AoH 0P6)X8e+Bc#mұ+ @(~8FJ;%:3 \suޡpTzU AP(}`M'q~" ;SGQ]"H;-/^Y35N=8wQtV}W`|<tr7(]}Wz`,_"1WCiY[CDߒrݚOk^QؙCVBYs|V E'y=CRCp@;_0= ,%M~^i\wP:?-?M8YXNUG۱GEϘÅ̧ņ-طO_##uQ E۷!M`*O!Kޭ:ig~)@E{gJ *2`No$!"etA"u< Ē(қ JJ,ˉXd"p Y-3gaӢ5k ܻgt p(=M(pS@`xzl#Ô(R!Vq!K?w%K)1˼l'%Jx{](+pvbHS(GH(CAC(/C_ LBWW+wvF \;|$LhikSvm]0M C.@W \?~_|Q8Q J@쯛O[OY>xPOwv0r%ޱI0uka-şOG\C8:f{ECkTq>53(;D /͎a㡢dOm@/2oCpU *!`2N) 7G"+1 P4EFgXcyR;)JB4!pTV' qGQ/ΜQȃN"NH`@HV7?`+f+U~$S -Xn!EE?:+ E1nQOߟk ! 2=|kT6~:qvN#Ϗ wwQsmAskUq]@Jz~N)#XXODN`E@͘G/ S/yGua)dRn|ceC郑m[8ý"LQ5W C]?2IcC/wbS_أLU-x2"ώ$]A2{EU[@Rs挴&Sl(&MlFƤ|f+}Z^8 ˴88 ji gQzn `tOpËT%h&y,KDWD3+Sǘ(nM*՜R*_!n h>AFGԣ=Lxz)~ k]D+պXiFоE^>zp̒iE'ܻe'9s363b 4rjյ|#SpP /G~VMpM[ͅ"` *4mTѫ=K|>NnN}Oigwuyh @O> h6Em!bSlR~[P4ý['Mr̙3EfGUž/LOIqvIKnwS6 *Q"P3YR1W`Kh`P9Ni7tE7ܻeYkWf;"$gm:.S^FWaإKbTEMS칙k½9Dj422 RH/\ (vVmx|Whuѷo@9~B<{ڻ_W{{7Xy.IENDB`pybik-3.0/data/ui/thumbnails/Brick-8x6x7.png0000644000175000017500000003470513137372600021011 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+9wIDATx}wUK{Lo)"WV1QD#*E,a K4DR%EM^Sַs-Cu̜{{={g=k}Ih@h@h@h@h@h@h@h@h@h@[DԡݐR<沵7݇{[6t䊪O=;t0lg_SnBa;][?:204:RϺލOΝ_Dڽ߿hفwLy^lA?rJ/b@@k-/;@|7"_I0{e IEn 2:W} Gr5%ז2X3n]6okr{) |>0cvwiy[@Xʿ7 GSA`6`jyJV?φtA1bwu .NP1=ŵ[leKIL$w͝R"&j"nxYռ ] Vq8x>ňXk9Osn2;;ۿT>+LofM6mʆ;|#uq9e52 ɫZ6`>\^88)@y4Cl @%H6H}d28N ?q*o;5C;"?޿,?ΓR#Cq-^s9a(/l*!pWR.(})i. y(2|W0Nn՞,{{PΙ0ym n'㼇I_?SG/?EȘ'>g/L-=IZjf`=nE .TB[=nDmH~mƿ\{kvhvbvnCSk¯ *CЃI8GH cw]nd1 =_s)ܨ _iP ֕;&ߢ@ T'zo"[ VB6κ+%eT+؍u9Fu豌/\Kޕx(Dg*y80wm5 {7"m8vݚE54[“YN&9?4yIcL\ `% vky.J+TM^|'.Ms'K1zsʊ f#9N6`aX;v%~7uP{q;3yYgRjt o>uAe0]MdyjVÿ,:CgtfCl8{"^p  vvt[[ae4NL$OFS}\^S.]:"@[;FEcvxiah(w}ڿ)|GU ECE>+w w+Z}]^=ټJ|*miZR]:&v^ vd0Կ)lZ@hC: % [ Sw[z i@.Y¤v}\Ao8t@`nޠZ'6'z' &7ݪ'`H xۊU/)%J9<00_?f''|Rppxyko譟ixXBzZnE= pѐ:7b+O=p\Ԇa WëyaUd5 \0k pC[㧶0$K 8;T8r))_y ZE  Wī\V@ "c?p:O&%@ ݦ=C9w;ݠ GPZi^=3^J!VwqρZ(ǽ &}._=WDSGxi׽ *-0T/:@JCs2<n6$4w"ORy ! y[N $>y"|}VӀ[Zv fC=^se+UuM~L O| xcQ).6b+ :TRY?OQbvO zGIvr4Mj |Xh]܊/s__Ä' y rVHAxfK8K;YHa}uNњs""BJ=N*(=^K1"sMT5K;D_z+2&fS$VҌXGwKͧ V||W]mP%Lհ.$c!͋ʿ ĉnO=\jP3]Zg{ d3D8Eu0KN.aEʪH Co{l*vKϩ4mPx,I!A5XX.N wsBڨwϯov~dI<eHuJwLh'gPZ 5G&B!Gh}Mc6M+ioPoa|<,K5Da\oy uI+KP!&2z12's~"}7Ѳ~zw[ Em5:& R'&qcgX<ޟaC`U,k&z1VCjm=|s]}arS3&Hx bwhP[a[sq7_tQs9;o@.ԭ:sX{eßЪ,n*˝ctbV:$wwe0GV)I6uxN M.0]) 3Q)Ʒp@`s|{<P1Ŕg`F ,TM4z9HĞ%b|fix?3/i_15]tP=@K(;7 92$@ }BMEs}6C6\! կA3x!"ΑotkSXsRVߩ=C"S>Ϝ>IPVNI'}j }|Mc>N*5LI+[ } ^a޲uK)y>٬RCMn= ~uF$>V`f&(ҜsǙYE*xAFSxi rs5=&zwkzs;N L`#Io>O H8x8撜\o@r0\1G?XI$t Ov2< G3rh 3tn!_@8 6VL{ʐ%@YMqIу0RX[.Uo8?x>nO4|}E|/J>L5t8݊+&2Z@!=<-xtf!ë]9NNRmd5'V" &U5vHYe(~ni[2|30"Վ4fVE-qhSkCDB?GIw8̹  `dzsgCǥ-R*\;RTC>dptf2H.%`G2۽V#zꎡ81/< 㿤F, 8`&{ g(gwpt--`wZBL #C˂ԧ>|@2')4ufpGaW$:);Ow% S@R)}@juX]MԴsD?kuy>UƔU b4o#UE*tO}UƷH_e{ɐAz_~wqʘ jw!Ź<~j:9N+%O|65e"x1mMt1n$OKhxzh,rRp)^ pH6 ,Ɵ!#b V" >(EkY}7JTtHMNJSiQ^NOUȭqtnMIܯ,SܴzzeTp9|<ʵG5O!L0gjpX@g0?_7r$/xؐs[i|\3UB~)dA@K b0Ƈ&WWqWm ,veƏ?6 xQ>U\<oRj/MW/ s<?yP]:*a~uL jB"|gsx(V<ܝ W밲3 hIt6qTPz'\l:_k t%C_eJz;3_O>W4.:3wf3YWUD:X><,RY0IZ1=DE C⿥4OHvp\bXBBL=Q U:(<  0TX5.W=thSgpR ,<166xS Qr1M}݋t[m\'KWI h4Jq?Pcrf}?B]̩ųb|êr'^D1;_B:MhEejo ~aju8GLw*P]&00< qd$3;0/䘎ѕVO[aB. gA7ЁCw 2ѓDשkYy(>"fa<, a^ʏ<|AnH$! ~Ak&v_q+E*hɔTGϿ!?)@zwJ_>@WBUQdBS06=:\p+!C ؓ\ @\f0:2d",.]l0H7{:{ޭ*~g2naC*c؃nC^3,J*}JYR1>8>?֛o1N#<=\7ȧDĠ8-q?wb~>0U?#Q,0PhE[8Wi X >")Sk2(+ %TWl|*+m^5"pQKQ_qK{&)S_Vý=E csw$b犒${WFMEk9O* /XwP=]W2Gz,`0Ђ(VdR@f"i&+1*yV*Yو8i-0] ߙf3?M,AmZito4$%ʼg<1C'Z ǠPto|0uqqG[:/3}PN,8 .w>WwPAaeJ1*"x!_^@Bueo7~'VU[5">G?\œ|t4g BTetg&Ѫ xͻE#^ϑ6LH "$|_+Zb#4 # -aRJV,"!ujwGp}+^dǠ*M`u1Yh_*ag%G(X0 9 WD<z8_U :3s~~czGF&TO3,*Jү% P4:C#:/3=5JtIio[\l00lkRPz{1 "1f ٌ?3Ry6Vq:$ vOsa0m+.`( CcO1q!qjkZ0(x!5W0YYPkL8DLPB0 w=F/u- ʟ@m(Bm}QGnƅ!n]Hݾ!Cr| g'W8wǩ3/|XNpFBU~GiUCg$ j Tc/>'F:lD]r.y{@ `師j`f eST !p%i;58dY>SJ ANO}t*d1ss'EyR{~=Ek%T8T21_%a!P `g =q:gHm-aU``TA<~ gBLee/ ފ `ğ) `f0gK[WiPo ~=_PXV|Ŕʠti4Ґ@E @vG2 .Co!.AǏ+Ȝ~SNOEP;EK4ZX!`#ŕT+Pͨ+TWP214Sx̍4H-xyEyrPAГ ѹ6_,-1M?ߡ@[g  QZ4/q oJ$sPB#~t)~Uf:7v'Mlɛ˴g7x}y,T%qTH+ ªy%~}Kvny(5[\30Ks]qqW. )A,ET  y!*+PRYҘ[:x,9EN6"hnEr&c=XdBN&n^r  l VwQH98p{ *Vž&=LCao:)VcGٳW)^)qk'w>~[LBGX8O:{?׍eEԣ ɧc-cG- RA4y1 b} C(3`ܤ,kmE 1!D4dg)o O=M&90aHÕ_0@(àx_C>>&g7$hp١EGoJ 8֟2<` @&7/R/x߰Qf+ZRZSJTg-PYN^{K=j|aj± Y墒<.NF(@k6! ZȤ{\~aP籔8/!jpcCqAujhߋ2y u&ܧ N>8@ĝ9M-l"EE18MhZjA]$/;/nHPh7?}lh apAC7/ jClLsIO-xUpR >DGIV5I-HWQH^A$RD~i1+ ({/a;; dC *g^KH8xymc`CqRCSӋIAbO Θ)l*BL(,dSJfV`_/s@y fJ?8e@ `_|9؁0ͨO@ Gs]{#9\*RV- dxXB|E<&%\SQdJbcxuD"%_ohFY*HQZLɝquL0? 6tF9pwU+D+T4_n'l+{MT*}oGspqHb_-o@4jT@N ʹ}q:Ft璜┭%Z:@M溃 _uY Q8Fo\8Dsz~z֘"P0X7ႫZLFbX]+h 9g@S xfC*(D{xl 邙AbmE9) V%.y' 'DVjjKH#tlCA}M| ȞN{pU[o4ZØ'QDp; Yr伿MIq} 0A0׶'zLqW<,Y}5VE% _Q^jCWjaNK Z2E1|l]>OQwwVtv `t(72 YO8.Txmhᤑ#'G؝ HR b,i \oLB۽R@Bh!mu~FVϮ<— V+ChΎf)8𩮇6]idºF1 rEJcc%Q4%-4 ^CAQh~VWEI2X1@G [!鐣p4 xOSèm}hFs97E2ӟm%'d N^|7᳷ "-k6F|:f Vd+M8a pHYs+IDATx]yxU?3’Ȉ°C`M2DTp2QԀʰ]YCX -0(EիN'$AWwtWTs޽wwΙ;{T'((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((ol8xpB'ilHkcc䄒wh8>~0cQr3(q^M$:2k|/sc8s&Ó٫ 1XﶘBiҤ F d` )b{h`,e,beqAdCHN*YBxqhY7_!]J "V&{VdwA }Ne2X~[0F 1F|ql^H ~ߞ1߯ ~E k7E-5u%'N3>E+d'gI9Kvdy~ tEFFR8w}Ւ;܏I' 󆩑 @-R68/Oa1jlT:mճ B ur_jެd2QWCa'=6ERLdsK>!-6vf>5 8w Dƍ4w\rK#yGlZE׉" A}wh2| /rGx:uR^MaW; GF~}!L~2y;O>*Boi}=- *{S'‚hkk\)0f}ǘMx[N ۉ'((()!!Zh@f( )EJh濣||4Q&`0cXS~W (\ܩR}5v޿F瀶ڐ6m\:k c٬`*;-g~;Ml0Q1F&aaQ+??zB]Fa>, ;q1gq~"[Ą31U@I>hϿ 3'*鋳ORxG{Y΃1t az#!GS#i3[ `=jS0A鱖4uKҺuoݚK:APB8x a iӦdZ)!*Y؊u.ugf+6Ayvr%]xKpOMtk͚D ׼c',{wM[ Љt| F4FbwL*Ȭ|Sd$FlP{?1-w(pU4,W +´r y1x'X4-XZ,4ؘ46@B>RAߘ@7?0m42e eddKc"܆xP>F .Sȅ8<Sd<=u9{=V"*fƎ)4fkXK6=- E44ng8ri0] iҤIclDWtR$'w2|(>k/G>V`o5D:pa4݉dүa:}">|G 0rsם0B1J0BgH)t g I#&`E%.*-Iñ.bJw"o.bH_3}G(c9~?z5ܻo_| uؑf͚%. & $ -15=e,>$ L:s,Q4^jՌ sp ]?m~],d *'-n\r|EO?y?Dˮ@zgB"߹'9CT49=D[q:߉5 qJ'& mBJ6Ёr~ǒ:QfXX,C W tQmxI!W;2`᧫ `jM|qjaYUXQw!VLdtmcb&oҩQ"c9?y.7N{={ZZݻWO521E6-M%QYf|}}EA9HֵiF@O`D!(???jD}&As1 -lX x;,bɌҢhf_ch+EFU%D9\ߪ*!JE87#mu vxtx2UCLp2A:ld+ pW?;,7KT/Fc+6Y%p8+&hЂH.?[Ԑ JbG"΀xt@=Y0pXJ1]Qמb>9=[ԙjX(B<ЩS'!ϙ1ʫ"_zsI:p EIX\+UZ„Bj>D*b*ne7ȧQ>̗~HQ?~/M@kkޕBU6#MW_N6j(֢yՌTg8g@FYiϰju+9ʼn`L8յY <" ׇS-[0/ѻ"\͛͛"6zhGai[7 B!V\'_F#0c3wC?[KM D73ВY ~V|ŌoFDpX1|ggz";$,C \M?40EUouaQ0pa7?g׆#*k^>^o -Ybݻ7=zT?ydB.4r%ȥ\vY5:i*Xפ T'yu~Oz2͇}xrGCw,['3l۶͛Gcǎ ??eW0;8RN" w26ǦOGˠz|Afz:R͂ZR6?)7'-n<}zEСCp_ԩSE Zzbt l L,LXki#.F!3hic_nO_ok^^2;hCxzn?u"BX,}w4ԳgOG/]d"(ׇ['Q#GFPfpb*L^vmw3[pS]9VR4~F(cYB[mYޅB }J -Y.(:c͸[}pcP-Z$Dofԫe uQO"bJ:vډb `DSJx `^f# 2y<6/P&رVB %&%a?Qy> JsBm3#~|>@c6L lov ? b4@r @ҾlZJW 4Di@? q1'):hAmYID*uEV-uy <XQ _yŸn|_n77M%~򧙳_Ⱥ6@@i/--ubS3X} }>F!EelAų+f +O4fߓ FlǰHc2 +# abQ@C_.O>h5#y% Y>%Jf+A 6hZك.|fdA83e/fyuA[5]~gҮS :g펙V %L+ s, v:v!2jBN[ھ( kpcK>R^*p͚5"g`Ҷt`Z$yb*?1ov|$>1 '_J /9iQ\;>zm]trqk3gPDƍDO?Pž6|lC/![Y|ͥ;H7if~qfP-B-1?r;vLDٰ &>ghD98V ䷗nEa~Bߟs +)z6dy(Yre]r4bOtVIF` unkҊ:8/=[}&Hf tٞ+n(PN17,sT@&N/= W-v~}xDgAcM_},ϿvD҅QѩܿuIz"@^rQN{4WиJXf? &x`0ޞ=L_%ͬ(&j6{ь Bh &&Fu~כY| cuӹT H>)_$c1a2"䋠c!kK4ay[=,W5 X())!mҥe>f# [̐J} ߡ]ܱ  <(bj"~+-L׹>qsQMoxH8{(q"DŽ.|LeSCyb!srU&ӻ[juuuWʡǏ;,X([(o h{"Ο 7* UǔE_~(H3ذxd:͍e`A\DI `gvyL@-e۵kD^N *##o`1f|65:>& -ϜX|1#p=!-۶ّ_ %_y7> ,SZd~LimQt芌@~(BBx0w}'C7B vU&,ɟ5ٟ[ .`}tLn!^jXS6KX$qtIxBEZ͏~4dh,+rPoݞUȯ+-0ԓEo+h m&?Z?u/ +ddC-eF~@Dǐs!Hѣ zC> )ɏh C}9|!)PGGf"vZGy0ȹw|+ibZ? ];cu/D`3X?[xx(P`0Vn` >h֊8AG]=^_?{+;wW_} v*@&w&_ ~/dٟy*5=ѷ/rn(6,-W~=]#G+ `ժUZ ?Rv%&Fݵ[ E(,!5mڴI+̫Z細+k|ع^p8=R_41~Dpoplk-8wg&ؔĆ)"P9 b#ؕ_Q:&6 _Jn/_^mɿz2֭}% XhB#x٦>x*_F _L+![{S!ďW)Q(((((((((((((((((NPPPPPPPPPPPPPPW 7tU IENDB`pybik-3.0/data/ui/thumbnails/Brick-10x9x9.png0000644000175000017500000004334413137372640021072 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+FIDATx}gU뚠s< CNCd$CFPLjaETDP0CEsVִetw{souWtssowC8sp8s9;,: Ym32d'5~&{.ضTox!.yb%[ ͵Wo/^z.:uՕnML/t5vddLC?o%cWKtA~S(1ϥ!uE(:FFp#&2r'2~;(* D7t(*dsSv(:7 b"գ Sӄ%?@Q SeMBaEzCqiqiV#F]ugtO8:!an֑UL9rywHDBj"~/CQQl$#Wz{"@`jE ":8G E[~L4~y#;8T2 ?n(*(*:{5>E_Jq Q:/>tns.`bEUt,g̀;[Q/SeE@aP@P!Fߤ5+w a5 =O}ΛXt5KJ5dF:@TC#7጑t:q54md~n2`2r}`|C FȰSE)y@R*)ǝ1:k;[Uy:D{ уvG1DŎP c4&cd]dq f&2(:.{u׻ n1HE UAGt#`ΥZXw5b~ѫzF}n Gw*5wf42X1zؓ(Tw g11`%Zzc}TtwJ͠5]gJ5hb izQtxFD~fÆ+.Jp Q%7޿nM5nkʷκ:nl( =Jqz* 6ye^߂ cd] *υIUR@ Y2J0E)Ac5]QyU W2 =ADl|:&ntKU~-}V\U{Y!>ƣ\p KȘ2k@@G Ʃk 93LN¦Kɦ =%ݓS9$=DxE+hMD :^LpiLm a ݤHp 5cqp~*Χ<(2+]!: O=5r_8C0_xiW]w#'Y4tdXKhٯWc"_錰Nyyj` I!CFzu :Ǩ|20!L`@jA^=g ͣ!@]J"C s *Z7ڈ|D6K⽜%w(ZڒwP B:M8ˤbxOhX9.|(RPz9(T+s F PƳr` &k $V`($ 0#2XJ3syܧ|FM ^c|X(cFW5kT+OWFu^뀭Dms`=5d^PLxiu& sݱĒqt_R%[o=eLWy`)d]< @iSrd0tׄ"0C1G+61R"Ī"SP<>~hakZ‰DDMN^9h¹8/g}1o|C}Q@ʣPRQ88 *>YD^lQHoW|}ifQa^n=5*׿Ja`˕bB"TEq^} ux ސFVd@m> Pu5P&'=lStT:*]%kO)<:C @i؊@1FwgjH M@ mz_*o[fEA.>ޑ+MU0'kуaY VX}mL`@k qzXx*B@wGRs:Tz :V)E &.ܟKG+)[<@Qy->0|qJ5Lw]DMM<_{zԐz_4+9'.'2x,i<@L Rx7> 9]Z)<9|݉G ,Q˒E=0D<>2y(CK-Y;}K‹||9R%PH$oD${.8<* 2e2 TP/\o^o1W3uڒJj\';477~R$ڔWĠDpɰѶr̆vmۗW\QsR'2s FwTCWCΑ!#^T8MKWeB?kJ< )V[r@](|=z)1C)O|%ůe Ds ~ȎiBQέ[xظ&6Q & q+o'C3 f*/sq֦f&\8@T/UULٞ" [V#˩2{ D]|#W|DEo5aѯ!f@ QD᳝P-g˙=!cPh`u(XdO)frTHeddcO4/)"W&ULFl7IoSC(BU خƷ-S91 ZIIIjW )C(5~CUC=MQuݏfu7Fļ~&<y ,]jqﺺ`d\ RxI88BNnufK(+_*|fSCe2YRF#=RS8jyi2 e z2(6, 0DxXm03Eug(7g{0X?(GŽQ׽!_brxʹ;ǬP9]QѕJƿ_$m`'NQƹ42qn2J8W IрB`i94N)! \A_y"v &ձ϶Jx2(J۔b%PeKXFA)Y!DB2KގO XͳPfn<-12GW& ύoɾ~Z\ Rj* #EY2E".縒;a$:#UHO_('kx_[:%;8`DhIa=& OX(91л}`>&.ШPq*;/f(/vHn q GO>TuP M؁=ΙJCz)o&pX*zٔBL" +,bi"4wT"M1/YuKT[91qɶ\ңtq+v3=Jh 6\d9-M/@gQA>U }א80 ݔ>kvDGk3>ĥlJc{٫-Pόݭև1΅aq1/{AEx5j9zt֎O)^[myJǿ<.FcHL\7K*`hR=$T y*&]"T'#>pL:bxcrF1 Jlryy]dTx ) h>~}UXl76O00uע3/F]ÕN_}JRifh\'i3GÈ,z;O IV ߈,fl&9 , |ZN #ӟ!bD׺0_د}EP##(͔z9C.w"҈654h(6ޟyqo#S~R,B~$q离E+ +2sF5+󈷉̢ӛ/= T~E8=!ESgfʞ?C95J)$"5de kxÌyF,:@{8GC?W$`R& xQJj 4|/\Y#/`নvz^? tA{}$5D/RX8)(mf"};9^Ll1DBQuWZ~Hį4&}~0AyD  #h~Y)b(W_HN`ׯ'ٕ1 ĉ|>rǪ?AMN U=u`Ud/A Rt3 -u_ԀrG'"?B`&4͔&mVfT7vx|J ]?X^JM)\I`bi-|:U:! $C9˝)tDfFTxl tZ^oYKC' s\ 0#䑃a=ezh0';)x"BH4f'@/jNLsCˑ@>cba}k# )A , }w"H!W;dpab^6k>K|M;l[8>xqu&]%B]yI(u5 mh4<h0] d<ߗiJ``h.8S'E9D&EaܥY @2ĂW@UhkgK,)Y ˑH AX\R:6)vZqg zJK?D@W^fAhWzwoP?+>6qbj8PbEDBa l%spŝ;WQ0<]JDt/B%eTt0ڂ?.E  m`0xl?w\2]ɠhڇ.};\A+5¢$cDd hrfR. -{%AIR+N zUimf4:}QFd?L 4: &Ų (10#Yu9rGyݒ>EaXDc:QɈS"nr0M00`-t:A|DANbuuJAZ UxBຼä==K"yzԕ leZ+ı.bFCk8"8N00: PLP.Y_.q0ߒ1QߣuT>B'^Ǐ|lTacr#@)偛#bє'1*fTޞ|*z0x'H#<*9X>DT;ptȗmf{ހ++HPy\eP,+NX=Z??-m!U{u`CnLwəFhsozZAG2:Ұa1"A ٷiJAY'"==gtHy-oK` 2 ^0P SMyzJ<ܰȐ@Iaa¹A 2/7'&SMcG~TDFrz6qh" gUaq_Rd(mQ VnӍ`٘Df'{x9r;X7h|rt]wǨ<!HIiJꕚ@,]Wͤ6TRe`$9maUǐ^T/v@߼U(3xN %C;JGq5U U< NKVp)?#DQkt`+ Tj|wqGt^*^^K+;$:C0;ST(Ja+E!00^cYB+X(c0!JQ+/_u}v!# σ!=WO O},@vzUgG@.on)9z2~_P1:Lz:|^; qWrjP. "D3FÆe26.t#~"X?4FSWc_,iN2HTAgg黡*hܱY}#"bl?/y|@_vUŠYA_{KX:'tB3'8Hkr/X@i{ 8Tvŏ["'s|#xaVGAt}&W\}(R>B2ED QC ΃`l׻D>6acgkmڷ<!)Y^ -Ikn GVt=?.̻冥F '`񼝣 _P&rKNm;G,,A~F Y^xCL7&u8*=LLQE>zʆ@aS0 e o<zknA^gq6xxS=VxD-( ܾ ]>Lm\!">/R؇B +nltdwVsd/hb=  Ir !du u=meYͧǘ,Y_*0+i#wbA}^(w#j dGHƂykY#R> sN 57I "5䏿:Y?. O6jYװJ2-͔$W`琈;QB%D\Jbgl5R69\s45 \ 6Q!jaxTq)~ C %Lљu󊨨pW{󸥋}tOLn9B<#b*=tAT1mO,rfJ-z֞L/1^œf(1(BBƀ A=ӥ?Yzh"@&nLͫ } >``hJ+d,0 JLBAջ/'z,SL/ܝy* vO@ɌP<8"N! x-Qq̣'3f`O;dD/qXvU %43;f&Tx oػ}}&ȕEu; Wjz<+7#p!K(FH)q~0ѬLо,lǤcK%4C y>^Y^x_>F3WO ?+=Xáͨ bS1WfKY"pofƲh6R_O%~؛$>gퟹZ7vN( i RS=v*= z-n^QDTXvuD蔄CkC.F!PO!f)C04B.WqM7 eU!k+C1g."ށ."@<* r/|0'S3])@{E *ڙ/>,I,RAxOT|{Y`5C؋14[lJTaT^H,V^ b{Xn4X B*OMLY8Y̺śI xR(`|&}}ZD!!ݽUhɞY;d5've 8JH[ɚpXUvPX9aPz0  /y-b+\l(Tn.q.oW::X22H/aVV Yg xyyE0eT(8`t^Ay9A 9Tź%1ѯ# s# ?FU?/JAx@/=r*C;,Fgv^*nPRzlFPs>-Tz2-a|{HĄCdA֝0tB[S9G8GZDT "5@Ywxy m Me!G'DzkcG0c6'@O@_XBf5J GrWIN~ 7Jl:r r1#Dpg^J>ONiuvbfo XP~+<{♿n sU>qoxOS|R8mT0 $8;$`vP%@W9U6`-8JB%CRR b&X1,7 I *1O5%r 5N@~ TK!c%JL\kWMs4@GOt zOXS0$HR U)7uKU9D$qzĮr ?%ek%PGD1Crp d{=xGhx"-.WӬǪI2`d>9RVe Rl]A˒B:T `3g,Ő<~r.nm/ELi?mk Ok?p~Dk0gVW uxK`# q*+7.c޸ؓj i6 G>(`>/ "lVJ5>.x([y8tPS<|s ! J@ xZ` UQœms*7TbI8qTO`,W## dC%Y<ل/LR3R663. =<`LR'DKJI"ߏpY;O"1$wh.?Sq65#@(50* Az&v= @.2`K8aT۾ab,{ĘEG~>8T y&v*l9RΆt%:H D#5dg@6= YW$6%mpo?(@uKTE@ޒkJL<" ;LKKDz(I7d_3OLz( =ys; (u%mw_$gZi;ewa|X FZnFP|KQw/Yc?3uxZ eBPT;K0=" } OȻK|hzwSV4Uj jw!NsXfWmc-_j*~ i'XO r %Q//0ѱu7t'#Ԁ.6Hkx= 65< :̋9Quh@w >SN Xk3<_Ia, 9W|RwM4T}*XY0Xja"׆=;S(O~Lyg<'|;D z~ɒg3< ÂG]:Ճiۚ|fFt>us Y XyfU bٕa^(Q';XY߈^>":i^+HC;ϕrkkSU8/@ zYbw{??;3,$LWZ,&):Xe$p2fj`cq(O Wj?"F KWݲL}N?Y؁0nٓ)=`nu/8)r|GYlִr.KcO64=r&?<wߨs$>ljP-tzk+T~=]tVXhb An gj[a pHYs++IDATx흇ղpρILOΙ! "JT`@ (`<*0$ I8N}Z&^ӹv_/L_UyWG*@G*@p \AWP+T *@_" *@7jҤA*@%[K׮-h׮ ~"ZfL]TJ>ub? z,$?̐= *@0v)DTSeC PjbWN<)UV_fJAE]e߾}RJr0S'K'gW̠2)@׋>s3 D.u6OMUTYR%??_Ξ= 0i$i}@d,>=AHmʚ5k 0@~wy{۔ᛝjZ U)0|XAPʷovZ!߿xG`ٲeһwoɧ?mVS+Z<-O5JfӠoy7jH3gH%77W:t /=#$5 A0ٵXydH6Nߔ.;T\¼S>\ի.ϟW߿rJiii竢O*+?˱Y]|z˥)靽 PNֲu ._?uDEE)3<#jAے ^Wq4)#z7x{nPAGg~+M4ҿ^jԨ!"S_1ż4Ь'r$##C~9D)[Xa V8aL߼y<z… )))* /(Y)>N)e+_B8Pܾ}{iѢ ĉ2uT:tOңGU/B}ѮLIO Q'c_dhphsiph\,ݹwPXĿhɒ+Vs='||>_^zI[@Q@#ԍsUU2SCeTJU9' B>W ^T2,x-k3f {Wo9RAɓ'0?+Lo~?~1*x'(.VUr[/.t_,F?jRz)M "=ڥ* u)@Tv6v}P<߸sy  zwSΝߴirW\Dea[ezఞZ#p)ίT{9廄\ahY\tI裏:|IddsB?)?Л5(N-7ͳ JZ92il.P=,%rǎW̎G'NT>r1թSGrrrΖnͳd cƖRˑFTHdnLي"n[j-$}RP>K-6h2l0?.YYYjJСC (*w!&yR/?T}P% TqD N)ښ^,P4eLkED?=gUaϛ7O-A _UR,Mwk|[\.[-;/H:a&g{֧/9֐+9sj(>Wezwo\~]m&= -[T~d[0I}}Yj*{3Bk?5 GF7˽MT)TB.WH߂ ] שS'ٳgƷ_RA\g֬Yk„ .r#̬bL3|~|P9׆ t#8>w#܅b4{ 3( =vtceHTrҽ]tyHBdz<]wZ"ϕr7oV/00|ݫDx\W8%LJȖIg9=JFr:u 7狎j\.]Ke^>1ѣ?^},V &&F~GX?b(?bC!8,6JR'ʗR㌉)uŘ~ZLxXFv R?O.30l˴Wm0̙3ua6mT>J,OkV0vXر߿_{=} ^ ( %J 4 ^2KovS~c=h/2J)^>>c׍}얐ˬ㢜ꫯ>@I)߸q>NeAaS;y^#(b4U&OuTN/oFB-l`=%.O(ht9.MwZlW~"?# s+K.=?\K,QظqcqR(1Z%*mH3A^<'vdw;hpym lx'mYBr|U*bdA4lXL%Pk׮BC'׻ᆱ%w8 _/ ֭l`:₤(Ah[ *9ҨVq !X/|E\?!;H]֢)qr` խ*GMJ٨A|(YryΘQDfi?Tt055U>#ڵKc} Jग`5Kl@pE~:hQߍП#Js$: x,ReQu49YlYv02s,Y7ota;MQj~xqO kC>#Ym a-* PviY &%Kb-<2BCO*ɵӹJ8a)%e47+;%2#}g =} *99F]DW_N G|@6@}ݧ"xàAZO_u7a]k+L5mj?3 0T` 4J|n 8F_Y 6V 3J]y尀m.k_3ǦCG@ay"9FoC!H*i!&OSfsݢIogKC{FɵS9zcnN î] R#'M׮мvaRy?1B֭R0BVcɛ Ȣ׻c'%Bjbo}?֪&#"5CҲY䦇Hf@"OnI]n?!m^x!l\D~<}7@~i ~H2(;ժU*|D%3y+/p `38TW'=9D,d`Hu=_.a 8DЭ&p/='r$07*30Y}sy7%JۏpV?qRBǍ{PDB>8OzEPJ`JB|([iJ{p}}C5)R#/Ei}>{>b'KqH/IO>xB(-f@pʨXQUڴjzCJ7LnZw(>#KOOBW|IΝ;EоkX|]0y?r>/ h~9'xBYBdrkNچEttooSD!- x:Z.Z_>.n7~=91J`׽/Zޥe#Ww eSî- &c2Ly>ӯG* /PQ sͅ)%#`+yOzǂ 9"^Kr2( f.z7A oA 2SBe >bjbP FhMT㋔Xqr@~c67to]v)ɚ) rϿL_kH)m#Kf{YP]E}״̕}xN9:#E$ [3g \,|e\4y. k݇ɞhT;\ /!%"Ҥǩѫ}wʑlqScSmhZi}=zqYg l)ij 1p.0?KZ?y4[A0$sc[8!RV,? E>1Ӗ1?2'p,.ѥ jFv}`klY>#ɻxml){J7< @8 t|{(u4wڵkXJ\Hghu_Lsf䩿71@Zr oW9d9 ggKCc-i/!ߔP[o-&}CHPiħ1@xO R%@sҮL6\ BAx=X.XFgc f/{[&Z,Ź9%=Lw;qrd[%>&;V\i.+go WeCb /% p@\#}wp9t##xͼR<5Q.b2ҽ̶tU)9ȺT/xYŠ|2%Q_q[-!ż c^{h8^a]OzOjHJf9w:6"~|pt ޽[x3r3M ٕdNgד"sVXgR33;3Դ]]ؓY**J90WTI?=5҂P~|@5kK7M>fx8Wru\b.7>")" B&*d.c%ȺIVP~!s2edzZ51+ %pUN~4]4!"kf$zU@vn.PW#<ѯS5p WLpxԼVdA?&WcصX.ʼ.s@ WXN!v@1(%YSwEV*^cl}z( kTtm#@ 'HZ&>nGysk-%'l6ի,+mjk66",>^-ϿɎi܆ZQwSA'L݋`nj 4gSGpCy 2RL:3fH6g& ;AdLw&b(X\>#m!&$w+}/FztVA J)Zrҫ*`yb5@ˤ:/L6A,~3NY$Om0ѣiCrv/EpL.?vw(ٵPſvic۹ȔQqԛz{X=e:xgZ*Vb1~!OS$+~oWxqnr{I䛵xmt?MWWud\ sB(§@ nҰa/?w\}ށs߷$#ϮFvOx~KQ-wDzZCvE a!m#_ XЂ@ xɩQ( qt7AD>dPA D~(|=˕Q t@H&|M;Y`!hR7L m ~7m+'Xl*o|所Ho~F]1kB7,[hڴi MGV2Pn4`%ȣ0^p$O~1$N#Cn UksOSK{nwI:JzM (jx^]p|B9CdX>d|z /˒E-0[JH% /tȖ(#.vWklG0XT^~3AÖY @R3 nQ͍/S(jkqLH^ l|@`a_dE A ^bG ֯1}epǓC Sqx?b\p5{]GmJ(N _ph"fAI}rk}kit? >!gKW`lnK~{;A)gj5pL~ !3p#gރEM6 LF@߰aC1#w`$f1 `?;qJ 2X6;j(ᧆ(:V o`rؘj]ʴQ{[Pl0K[nTQQKw}qǎ A@<|R0|'Kp>/#L>c6`gTm^w1q^!RGP$5Lõ&mu(&hiG ۚ^`&~ǼS=A( #&+TB [{DM|t.v0 7~q4z~8(:tYc x>S޼N͚'Xf͝? /]Nu:b{xeLz4/bbX׶N C`'NNh+L~>vq{te EFT51D h%dCꚱ>MySGȕɣK 8.B [ VR8BNs{w:w{-i#P_{@P*cϘ ]#fp9 Lɖg>c52Ch򘼛>?L;zD]=)R&]sGba;%G&`ܾ}B9%? W``WH@1)>T ;4H ^j~1;8%DH|4vƎ۽&U}Th/>Ei, , P0q8z؍ 8x*L@Hv;YE/ۡtKliR'RFQz7&u^yD@ޟ![Z0Lf=GǑsG(3ܚ5 P5+ A@L,ᡀ~IN?yz `)*,fvhnxgܕHz$/0(YY]fG>zt<%b.>!1DEZca tC('u!H p}Nؓ^!4T9i!^Ps;3J| c;.{gSsQEˀ&etg3Fۮ`ߙOSVn~Qf9_дuuk]JGlj!ؼ7}OvZ'..Gɔi-*t AyjI @F`y-r`m O ӀQrN|?㍄|^Rʉ/_+Ykܑ1&KPe˽BA.㢙ʗ Cw̕}d֥)o% Jw"f?qq`AY wellb(%Z>)Y插+F":>kv/ p1P-,"T- -:i? PhFQn T0I}(qU$gqKZ8G<ӛ !D H>AXAڦ;2Aw) C͒wF mD5 =?ʾu} "y ˜lUT䵋N!"X_m гm%d"|ؚ&>RS"T8UlP~+7-ݹ7<>/`~0&] pKX:xY(`{(wR?B#^Ǻ\v 1f`3z8:&_?'Uo5!=> _Hab4T^Oa/O'vr a>J*q2`1i+ra'^<;>M_O_xzrL8$^i#~ ?L0[s+.-r=( EB`qNf*I;mt1s$)6B3GHu};DC{4Ζ;NFg˵8N\@L>:wp3  xФN|S"鎥m?7B%z/=1K'uhur+˵3aS"<2=zFWM}>DB, `Rb):VP_@ڴ5r0>#%Brmw$8* 8Ex pJ]T.`3^RnnFJߚYrwT+;0g۲´-a pHYs+7IDATx]w|UU~' i+I"twH(C5(bDD, JA!!D:gƩ̼ofos (^k_w=ݥ"\ @RA  HA)  @RA  HA)  @RA  HA)+JBfMz,d޷c:uAr8qJD:ԯq(v:[g@[-뗞4w%n4]?o=[M@}tOyqZYBFjF0г`r:ZÌw"rB~.P\չb"/q|%@^ŵlmdyf&6= lmE6N쨫v`S@#FtmBMwCp>a0VPfx `┈B|CzG2㎃ 6疄HfT'q;`!z>Y8ca}xȨ){uqOj7tӶm5i4Bz&E:Čh1;3UI3s3EiNHKKȂ<+7Gtũ"7%ES #C\IeeeDDDDt.Dq\(N1%"T C%#90o A0j(&T|Gf׌|7/[PSuf>OJzi|H`yXW|Ts`D*å$xݐ~ JA %fk`l|mT_4Ivx> zJ\_R.i=S)n_ڥgX P.K ti fe*H,} Eaad`HO<>;Kd8dSUrѦMQZZ*%pl>.e'p6 Χ Жh5L֌\_m6_}ig0i.i8iۅk,@$a`}Zu.=j_Gi!c ўIV6CA*)tvJeܸN^gNMx΂ `~eXRQ*J$  Dl `e %82h 6@bbb,L;dsJ|G[ ENõ\-Ea!jxZSjx6NC 㗣ZӬP}?1!}'v`.O%mv 5Yat)- 1'KL9瀒bѽ _T4VjѢ:zʴ*J 5uzitx ^tYGz)JbaXpz0W1t4ЬlQ5WipĂYHtlHV3q  QZs uNfc:f8mV &ĤuV/B4\0w1B*1.1-.RL۔i %1%oa(v=]hcQUSQ]{kljRHh{Ktz!\5y`m5Ba0p5ڍbU Yu0~Qn0; g$3imsTwL1Uݴ&"OJaJPQtRv+DpyY@6Y:y&TsUih#lˊD 4R"&j0d27-s (|p * 7 tN`h Ek&`Z%hO4 v)@OG J0=k}Sk^~ ۯC:d6uX -vCEȱ<*7KL9&%$Shrh.fڌo6CO{o>c~,zP$ZeϺBkO;2ad, , c_ b9̡Vi2hdd=L tVKm<0Ubg&7 x9N>93MLrd1"L'z4> H1kI@t7}@*):fѝU~TT |% @pd隹4SЩ6HUsA=z=!3*i PĤAv&9>sUɲ1b+D0W!7pE/jsNTABOFD72Oɭ p uҞ߫+\׉JF[ 0GK7i-u:_BA_IW\t9xn]h߹{yD8e1!ǿ2lE750kM6-5P:_X:k t'>"L(8c+~}۶`dVyP1Xd U-xczH5h_S84To e.mjURe3!eƔjfb7<>`n+58Z۱"J `0~%¯.gVݍ :G鶫y\,l<bؖ c>թT;#xI/ -von*bo83L0kDP='+ff |D|R RQIPcOG/3d ݌ ]5iH |q.Ј)y 2թ՛}H7 aÉйxmWOƵ 6F&qnG|"[9NmG3X(dBM^c-A3&cH(})O 3KɞX<`pDz!ѥ_y1φz^3GK6i+i9i3?5 Rj\zfPλ3})ֲkuiR؝4@xn:OA9Ѭ>|Dmh'Xărj#FT_Nь iNpuz g>$υ *l?#-d8a  ${ #zyI1kF4ϻZʆ,J *8|S AK{|P~R{.>-cI`p`gjx0x/O ךf۴D)|MyHz|м(B`xyEE:>FE'bw;msftYm%Û?&4hӐSY!djMS\~ vho`tL: 9npZ1a*Wwe!(>^zb2}"Q`A솚L'hxjO_!G*Lmʮ2fcUm[k8Xfle?,[?.e1 O62`3# OSblGKmA{O i*wB<<`^#J(uޡ@H&)o2#`_`>8(Lͷb}8 0˨x'I@K%X7%.'CHS3M5"M\}P!܅<'MTG44 6LC;~.|rj7o!ByK0}VV$28,,ȍ! S^g%-_{fY) d|4ϝmybxXfBz4|<#:em!WGKYiiMW]KFUaMԤ,b{JCHS Z燇dąJ$OZ HmY[gqlK;~t!(5HXF.$ϡfv>9'eɵtpmِvN'., X/Ӻl&?BmF֖Dr1OȢU[몼Z.}Ve6$5M{!v6v\1"XJG.щK0::tQkRK.\ie^!l)< nkzjbp C"́FA3i3@.dqdex4 .[j<%:̪n/U1NaLGd."LF+S͕J TOԾC${J k B<"[o$4,0m9c"OΒtnl-BOnжl`Z6n{Zsmtj(F<\!LYEjGg얉"" 3i#uPU2Ыb{_zYս2`8G7ve?jbfG6k/j:|o[4!vC^<<}}֋Wfi/_(Uh'Dϖ?X5'Z ҵr2LOS²q^v UO!ᾯkeMuLoBtRgD;Uj<\?P)nLr/yRkK!];ugօsЦ-NFY!dԕ::|VXny^)"];W }$8Iu!25@Xf΢ F2 f9g.<:\;Noq7嚋vM_j;Zg᱔tc8/4b\}v7;H.ʈC bAo3$[pz峀f{'n0ޕ֭2}d,#4rЈ]Da0Fy&8"*aDἑP}nAZ)zJdW 63Ӗ s; u*Ź,v#&h{Y:(\`F^,\xK { TR"'JҾ>-9Gb;glw(MdktRa׹=ٺy79s8틋TxZpGy f,{c<'$<3*k14QY K" !Ss(|d˷!z0D&h;9TW5ڟۓ*<7$I![Uk1t*s? ԍؾMےNLAH #0Lz"sǯԝ|6M 囼2u# Jih? Ӹ- ,is`#t<>unGeJ 鐎9 :uLX&uw ud7oS[8ϼЂ 19f03:2vFO ԹG)9A,.vHf󥡎Pe  h'=PЇ2D)'AL<3_Tv^f/SG94>(+~o$!0GlXyn :I Q(A1r:$`z9m?uQ~ Дו[2Y&IP3 m 롲x2N=0AɠJ80415?'o4T+x /Ȍo/}'VXoVj~mpI9лe@m!3aGUhGֶ=?ChGj'jP+:kfzأ. pAȀd;Bz`Ɖcj(S,='ol060A3tشg hJ*jZwGEHgpUotE xBDbT_r+S*G~6NU?|T*Ѷ$R ~ѩ.+;!$@]-;a ÞzۦtKx.xmBV[7=$VD`29ݻyF>C$Sw>c}3n0C+|( e)5pʎ]V. !t҇*uGNjE^Q6:^[5*ZlGEi I72j)Cb8z?Qs yx`27X_{~%Fخ-ʗTϴĔr7H/Y,x `qpsבl>9gnDH; Iȃ>`=FƯ W\@Έ8[T@&=GU=LS,O}8 'ONDH o9G~ߧKxRÀѿa## ;~fzz7}}q+d dX zRǺuo~Vsga*mޔѤVV.աL! Ll%VC&Lo8{&A 2O`9Lgȇ5LeK3fZN` Ĺ'@xWI@\*e%(YE:vF{,g}_P,_L`f;#߯J ʿdv$Fp0B.SoxQ~n:E~i,alx@pqԑ6tg\7J&j jh$u?3mE/v`HzG~L?!F>Ӛy~cg`yIGLߣk[~ۏr!cm2'\_+a75U/޻g* )dt ۔ {!%&RO\Z#ⰵ3yI%.;"7!:XRD%%Z>s嗢7AϻT1@f*&G9`/3=.{ f)WCTvjP+bDQnT['_HXr짧320? /V6]]yljgSd`$sRYchxI-uhy7Awe`>|tU_w3{zJT̬'3^zQuwp땯Pk^Vp>+DsҡCmAQUNsfDՙC5z@wmnMsDJ‹Cϥ1,Jx.b>3vZv8w=_F}yC)> iSGkV8MeIA`IOfUˆ. 2id;LYsc n j jZy}= RA˕83Տ) i6f8g1a$cb9;K/Tޤ!ޡ5]g]}m0|z!>BY0:q*] O߀$X)ق{d@Pj "`bxgf%w A Sޞ3iǞDz/>iFݕ̀k[c̩+nRfgT65"x6LؿGS]BFt ?T"S/D(_w1T$W8H%];ܰ+im4INp&&s/4/|njs[YBͫ νjz551f>v=Kfg~&߷ǎ]G?0&v{'NP?_0DX|2#/CWаOeoc@N7Y^L3}oPޣyAC)CyWQ]u)bx_Up]h]w-~ F߻T*&(۞Cߏ߻x n2ت&˳"#KEJeeٖڻ_ޚ=[S?/]0_-`_R={/gm!;!0/` []X~*KL )/Q]6s5莲|u}G }-X}<2lCC6Ɗ~Fwö։!%`aHiM]T+x'lK΅{sUe^ZիWAu)Q4Pl9l/|gla21!ccd]wHa&v&0cf %d%G6pjkLf7}Ⱦi''3Ŗ-Uu_Z`]%'M W?1MԺ&kܧJ^Ͼ×/C 'OJayX' |v?X•Uq⩇&ֽG[z{2*&3C 0-Vc,>woc7~:ٝL&z_xOyeK8o p& &s/w1ɷH犟7׈f, JTa\._DEG_LlzѪ㿵K/ʷl4%|sT'`#^Y} =Hp%XLo?:gE`ڈ(aYw) WMA  HA)  @RA  HA:3CV$,%9IENDB`pybik-3.0/data/ui/thumbnails/Brick-4x1x3.png0000644000175000017500000001406613137372555021003 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+IDATxytTUi$jK-%$EPb4%Yl-*=b"@$ q>G'm=mu~{ꥲU*IRU^{{={ʮ\SPPPPPPPPPPPPPPPPPPPPPPPPPPPPPCB>| 1'(! (ܬփA9Xly {"ﶄdm&gۃ(//_f'{{+ĽWʒ0dA[8閕⻢/M%30VaRlIhw#K5RA8[Y8?9Y-RSSG!Zi!%hn͖K+Q29ɑ'=C.0ԋ0">Af";>dK!PEygip)W>.ӵ$177W sqvp<">C|ǖtr$a_H?O'L#Fx.p0{7nٔ _gqrY99Lp_˼N'neeAA˓0X) p\@aߓ1$,PŽ zFKh<˓ g:?L"Lzs#FF0(,,!80ղYNnõB|,ӫqp>_\Mx!=mNSf\ܑc s31A S4L3c!&;4YI)m.xS & \}=j5Sx~{0a+(,y-veۙZp}z&/1鄃1U\>mNS$h<& dLGATقPB196T,`Bh 1/e^/Q]v23uS!Ƙ#_ U畉ѣe“Gf)sGVyE4@N쮑y!d2j6/0O`3ށ?UwЅ36W'{f-v.b$/F!ބ)Fv$k^s1)v h$JF.3)*v3_|.^+Մ!q Yiqma 2 %2c̘1482Lތ0inI,ğ/: L++B2{C:Gd`D!*Wa~se.Z#4W>7ۓD! ꪫq*t`& tl$~#S+99`֙Z^b,&yL8[dafLyᶷq Ҍ@lcX+f_ ONOwD!Bرc1Ld"q[[tz9Z \<b 7_<mjcbiWvQ-O{#,ن<[K@i:##)Mg Yc? M^Ÿq3 ^x\} kx~[$bM_K#4>3g8fx#_øhz' oY/^z/Ouڥך0aIn`b/D&>?'g%́3Si7&#S6r͓^\<-ƦOW.tDH 3ŧ`\;>MV ,BmnNsEBAϒ?qP0T&N(aupܕ鼨zPe5i5|Ms/ Z.~o4[\!+6Ct)?iߦwOҠN">۱0dvg0[Ʃ9hWn`nvF{q1%zxB~;i{U\0*U6u=+X|6؃o. `R tW!QkbKʂVCZ?NGuVs[Iۏ ;Oo0/!}Mgt V#<٤@Wߌ-p{1XMWtA2X|^eytX`hVy \ϱK5z?&X=SeXꝼ;{#;@AS5 =&'T܁xp ஡d^3J]!_'c`WO^/* v"N>Ztt{.82;€/ kZhW[^">oDZ,'cc~4i0sB_WC "{bz!a +vpppLFOtX[/ {4)W7͡P׸pB4{\!8҄w&EzW`2\kYa2?ыpL2W]Pt P~.Nw H/1m}1, JaϽ-BA[^ՃG1b:-"(<|^؞hWNޣ w9_o2qqC#1\-1IvFP;=ĽYcI&ɟ =7()4ى`ùXڪe6kSo8G@;8:=~Zu͝p!U0Ⳬxc4CyyLeֲ'[< m y.柇{M-/?Wngҽ.sEp{xt=of չ EX151C,VLG\C;`#‡f͸o>)~MlX5bo6\_ TG- Z8J] pZJCR25"'F@:L^I)IHpzr XA|8rf@efi&o 9$[RTV[8^]/(~^%W0<{Ǜn2L=pD\27u.س5.WXVV1 iFKG;?!_p`Z^Ր>צ`;8YQ|+,v<;by$s+XH&&x(c-7Lik@Bf68sZ\| :,٭6B 򃝿lׯ@9Jł& !ִ  }/jRwwi*JEF)LhpGAo. b 5U#:6!ZQ}SĪ(%;}2."S)TݍT]m/jǯSIJh0-|c Xx[|U)|.uU µ++|U(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(  ;LIENDB`pybik-3.0/data/ui/thumbnails/Tower-8x10.png0000644000175000017500000003673613137372543020667 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+=IDATx}wes#tuUu!K@s :AEA1+f1 Y.kXUYVWwfuouWt~0]usss޷c G=nBnBڎ6mh;vD4K ۷Oж}c m f@]%kpɠ Q5(4iRI+٘l31A?PmOk39:xZu< c/)2ٷ 861ayb֘y` G2x4؀*@82 a:{?>\ϿZ209:>aG_mѡ}ҳO)l0$ANll[9?˞#^!wZtxFZkЗS.; b9_`"c3GWZYth!@{ l֛/P/a&~NgrPd:%|:0EA>7GtD{(˵P `8C _[{N6$=ut};0V`Go gptwbPQkޣSCgؘ&TdYdg)] Y8_ ^uZRhZ QUa~8@)CA)̀E ]5بO$e_#Ǵgŀ@2 wZ}r[N*Y<޴ĕײa3 1gc wDG6(q &` jyjaqP&k0=5Ԇ/`:6M =lk{Hj H5T2m[2+eZHL'@^^t1TDf-[áի˻Zʣ=9!^ 'v6jFR$p eiDټRh|)B8=_clGxϕ9E$D|Ht3R|_]|ѡEצ{9{ ؍.!NfC=j_lO-ͣ[TԅVYUuU!~|G!7u[77b3m塘nP=z0N<ȷ kmJ3#@i^iwVw&1K N7c2>*,ıT*J݂`Pq ́{u+{flo@L: aq L7 5vmT| 4{/7Ax~َU'2?Y[F~P$v4,'?_tRp|Boj*ve!ȃ~QP \FxR/uͥGw>o nBtG<6x-:=諠|kk{\@Ї\"\D#i_OH G8r=K5:=L륧48:ٜo#nm,7 _@i7xY ًP MXURڲauCNSs$k]LzZ}eCeC^JYE C(<ۣ{ S^|0-O#h4ұKEG|&k凧j㦍Y5GiX8W+Rry|lG{DKQț_<]6*ЯIHY7ِZDA\ߗzh9À_ˑ`@m^A,O*o?+l65;lyn0" x4&AWw hR,8Sg Z7I4y&D86RzP ~* ٘ wX*2U`^1+(D+tDpQ~r1ң'Rh|mo 6d᡺b/oߣ DZ4t5>RE6vsg09+ xuD30h(Ri#sѡ]9oOKpӊa'swEY;gPg_+h tZmqݰ=Tn((BŃH݋ GƙA2RP!5 ky"A1蠕|jDG24'{8R:0!0_mc|A^=Xa$ݮ^lr ݛ/H|*dud0U|C_r$[ܔE#GT@سGrAߝn`5~?-H 6x/u3bF F-PN u@h%V a~ZsV~ytl> BmiQKG#@WYo u}WH#`կ2ctzq1H2})_'GxTx:=L25И DnLr?V\z1),sOxq~bjeXCZh:I|XNHZȽ]um_m9~DU c :uZ{:x~ouC8SS";d{_2U=d 9Jh us'p.QgfC>ݢ{.QuI'7J\0qℝD(ZN+ъ] wCO!@vq+f4p@0ij+fiHǫ$z$ܿGtU`]T7[&}V< ^Уc8g::RE\b[I_CP߬kCxJ@&u*hpo j1;lR9zr?&9G+qٌ #bd򪮘Ty$֡Zq_ P.'\FL79:; !]ao灬ax=k$y4z *|u+fiͼ{ 3NTP&RRaRSO['ϽqsM9Kqٝ \bu8]%&9o1`pZڙBPNO\۵_& \ŘH|* :?+o˥ gWK$& љ},j)[o__m@ .uzbONQarfZ~2z{*{t){4·NL!tS;GAW][aYL4n\=<>O5q _wHI9^Gl2@%_6D - 93^/b M o-j"(o6Fǖx)p\W6܈v">ob `h8 49vd:Ч,re EYr4*Dj/wse! |N1>:ԽEq`ݒMfQ>ڿ-.XWt'.&2'ZzT|F.𒿆PdI(/DaCq8C~$Q!z5=:5# fRG}Pe dW&3x͝N 塠 #*xA=aV azZ{ސK7-TQR0"'k4"4\ qg5X yAUZ9L`cGjC4xByy C!LWa~g̥O_ sЗF֋"ԭW*Gn'Xj 5t28PޮAL bo]Bނ@H =b=|!Uϗp8+=,49KeÈsI4 fF|RT0l(XN5s%H55*u\r1姯8_,$ط=O ?7f9~\}JzhSu(c_Ps,/ %tf2rr9[A[BcB݆qs"32 K.+%Jp`0Le09D2}c9|mgjׁ 5r%^;BkQ"c((t@];G>ByJ:woD)}S&}(?WH1s}c 802Ր08RH YY*YW-tE|G| U|nPrw&d:SD(^7`֤K/<͛Ukx;_[)| ˋ˟/~t~al TLKRiҶbR)ODK@,'|[P0hhz.2x2V]V$QNưyjࢗmJqi'?2E 1 n|rl@xc.74| n!?s 4E7JGTk{@|N~-vuU;D02WyrB)\!w)a|_̸\2x eS> "@$2r  Ƈ&p6$j}C*`0@@ pF ߾ù\ڻl߼XmʛanQ\).Z%ᣛs* '-SNDB T/OIu |<^L4"p"#3ޔ!i8C!.^e竴ϔ zC*0/F_9;Ds_!zi@ZءпlR|Zl+c4`|ȿ9ݶ>J_kK9EoX|MU9c?~n&0KUt@'=lÛl\9"K`InbA$Hd ` /W *т3L ĩl@҇n"'/t<1=H>Y0[`^jx_G ?+&J=wP? cIIwrYL1jq}2񛗊i>{zf5 $D^n& Ip#6I»ˡH#8-1B5DZˆ&7ȩM*>f(0 <>oF?G IE|ϣO+E#%\2d"ؿl"Psw#sЌQƆD]΅&(W:~7*gR a@ )הn&%%8Uj1B/(ȆCڼCWxɞspy)@$\ xyŏa'{å\= B2Y'$OD8L!5P4P;%Y(2fQh |D֙6 R!TftL촄}Y*!%t"_"6qU\AZ6]*L_3?0I:uk\VzOx_H2D ArDGYǟQsnݤDD\?/7zcf<WZAzss՜DC87PoMRå3H@#Cs@`Nqݜ&ltEy6D/~ٰ*}z_E T0,4gHs @\_r7n9H;uJI)Js@^j,dƱކ$Fj0P?+9PpPnW0h\oz=~IHDtL` ->NQAˑ~T wZvl;>8҂7]&"W՞b\d)<CPnóIfR(_w*l;4!:3s7QZ>5sA泅 Bo2D^/!mA#ðb 4~bM}@]% 8,"@xwY2(w齂A{s']A9oS (dj35$/$_'W4t>@9j-.:@>E:MQAKOoΡs/!?1G vVUWv7#@@&'WO|YF.*K@TC$_X-z|I XqZŞ> y]OSơr%|肅!׮ȶ0!hV^ CH!<`ʠ Ԝ@͵Q(e(1(j'”#t(_ꥌV8_Bam0T&{`DdQ Sga#aѡ GOL o8F5Mןoq8_ kPs iSotACO_D&~y!/ 9y?,9N ҇i=" "S:n99HU;n'Hߕ+ {p7eތ >:D0&aM v|ҍr=lBLE%GKK7r2DGo t^4D@;sh~krD#2O9}>WH%^y3òCzC|Vܿ#t ^Di &)#ctܗo%J9T!\B+0R'(`V4?C2ŽA J4e&~a컪ܤGnU?,)%"<$ ^w F+Oh9 ӹrxgoe@!]aWj% 9|'x )Q p(B 6,u VRq ?QQQLf;V`iK8˶ndڟ>y>t?nUK " \,Llo6>`  ` 8P7Gu ܤ~7Mɨ{e0W"D?UdJ*."s5,h4Y X;s N,XsVL H4I`QWF2SmJ[Fc FZ9;[>u&1V $+j&UA@פ61b_CDTCw 2qUI=jP D~1bR asy;?!@Ȏ|7o2ʸd{Jk؃nn@^yæV귭_<Wͳx(Cv -=R/C:FT\oyܬ${݌!e`8(G` g$ SJ_7w_ϻpqa c8XJ)7f,cmshەzEf@B piB rlkX>r@qL`.–03h;[Fv 5I3BO^M)D8~p@]AzU/Zٳ2ߏ?:xIjlQ|UYj.t6φ[9FC 1R oGX5HjN庞"C fCJ3htӠhZ)]B@55[ZJg.#?ۋ7~n:7"+\mͣu޷^o y.`뗨 `4\ez*?PBnHJ1,eXT:wPa @T@kyޢ̝D҇1'TBFUF5{s#Ϲo(JCX]M &x`ώH*Kt9gPx|| 8=ySAG ENc'%snyM iYaSEũm昳lA} Q1 j LE\L5@Ktyޥ~5Q*അ?v\! ;/xnK-5J'H@]_[9&[Fg?oJx$ Y*St0eӈ2Ч?Abm$o} `n0˂ 09:bdo^h c6~pRå^zDm$qm]Xv=Т*h^l)R'6.ꑱLS㽉AUD@O~1uD3?:lYy aTda )|{>}G.E^tEK7'4fdEFb?;L4`^B%yV$KLrG433L5-Ѝ+JN{Ηh!(2A9}L1[O tଝ 2 @x9V"9f6/DT* znfS%d;5lLY~FҘ &e XZHTLOrD wײWC{|aQ{bo-9X0p>sOc%'z8w֡ 0*y =@C&ګcWa#s&LMu* sy_Gx3#Y00YpΪpyPp®` IG &+]^;ǔ"PC,/@,S8Va')Ҳ$i eAʹ.K??4kA0$Q߯6qC\;9}5-nOEDG+e ~Oͦo >[fa#W{z6r(lށruza q)w5uڿh &Q_agoy@WW~xd>YzP=Eiݒ0^f wJx/W nH< H kH/CҖ0Q-0f \}"9f8X- Bs@7 8.T@Ͼ(Ϡ-W)7jЛOȑ VߞO}Y"=Wzdovrtzx;%39wz^)h^T6L R39 MxPZ$gÍd4` !HYװ ٽ%?uaAgA+?;zm2(' 7^_h7mf6ԑt BcS DT~:bH K#4Ʀ/~^.i--npcϝ7|=Be,AX)aNP߇*PPeY@_t`l,0T,˺]8pc-޶ 4ƅOf5ـKC'?,xL^Py>FN3f|ADڿŘ8۲Ծo j1Q وVG5 21!UOUJj\[i]Sx px[zK? Z`9CDoֶfY%1I",yD:VrρpHYPJDsH2(2°L/~}Pybd}k' 5Rr/e$CyPڡԕGBGc\A*i愒%g(ݍ!\]'_LL+LK,e'&z`ug-cƿ|zS0ju򔄌 O.aO"Yai7OX?f@?}I KS|CKv 78b~%`^ }U2(bϏWƺ(pVHO?+|1U]RghMc }BZp'e+VDsí2 NY[?ϴu8IENDB`pybik-3.0/data/ui/thumbnails/Brick-9x4x4.png0000644000175000017500000001771513137372607021016 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+IDATx]y|UյOq{=wyf " (ʠ 0(^5X*"**UlUjuxiվo}͹> ?o}|cM7~7"E00a` & L00a` & L00a` & L00a`?K7˛#MFWKoNZw.[ 0&yG)J3-/9ٱcN"z M#:ǀ('xN/`D 8 mp O!gB^{羇ob0| H–}DzeN*eљVo.3m*BN.χ8Sy`B\dD$ ͻshDzNRuQDz%H sTp #9-7} ` K [> b/4Pvvk  h kt?[ $3 M_Qnr3,זfZm<]#f޺lIVW s 3'Q1!`As5,_ N u`gfG3C?{+|E2QjI7$Nug}v]N<-C;7-<. A<&ɺ+` tyXI<~j8!,`Ag: W;G-@'?'N}{O8΂q8 a$p [ԧ{p ӟld V+9.ו0#FCs\rTJju0UsimR qAe>سybl/ w ^dڐ*ة=cԁԹ]ADqHjx |N7ozYP{꘩hЎw .Voq7{8ˢxEj[%9q_ۡ  U(w.ܮrsz9:N9g3@8+>:ff$Z3kYX.WԎŋ#^ +;^cw0NgL70TRr:熗/f cZ@G0{ H'jL?S` 3]wa_zm |p']4 PdBy,HzU"L:؁/:!S= ;,nvR6~{S-h HJūjn q$U/$!0́6YPs%P"2-a:8i8µ\*UBL$YdO\ KʽT)P ThfK9Nv$RM_`|r(ksOjzw$Oy[& Q ԿDo滇F{f?DYdg,*iS|- ,djN2P[ûs\ndA#@,b<i,3!hz9&Whkޝ9L2M:`;T[WQ6*ʹ?pp[S\3@TfU6^fˢFư^P=N +awz99 /ƚ;pS v$zM/X;U+R vxj}fC`HRǽ^y PRv[DęJbg B[7^aγ)<ܢHC9e KK[yS;9 j0vhN`Ns-O៥4Y7N~ЮEq,Õ0%ky)utē;`d ΢/ȋJ:=S+؜d̵e.P1j<̕ )cEI{ic}⟗*b0Le0@@ALˀ@9 SPTp 2nu3(Vm tMHR 50C8J'd#9``vϋEM,c%gǍ T3nR J%BŎͮDBm/ (P&ǔ/ ;7ubv:SJ{e0e8bE?;jzeۘ ڃ)ͻNɮwFu Kl_O%b>@bXW@c7tˣ8: +#&E"ZLŵ} ,o%FKNj|hUAzU#j? 8 (jP8?$/\DH@,hd0eţfW%縇cUclf.Ǿ qa.b0<`0׼heҢb&A8w ' s~}) i`MvޝM<kXP=1R?T|9$yhQ"±ŧ !X<8 $B{zyu?> XC`>>sa<3P$Bn&ef TR0y}ե6-9#BoBW)xkm n»\[zCy pl b1XBX0?IX0υT.T]Dw`@z]>C\`~*uoOj7)pIrqƠ Es ߜ2eԲ a=o^\;%D|J" ^w !(OD@@ )> :BuP8Zs5~0CgUjʧS9w铗K,H\0bMk?#RtSA&V}<@+3SO kaD Uj":"BuD-%bb&UptwK: Y<c9GP'e<oWRyEABs[$[rUSiլ,IeS제BK;mZjx+X@Jp ND7Vq,!z Eb c+"@TrbYp1')%bc Z if x;c #ԝLJ/(SVYt/?t6-o1~e9cĔ#" ?<`#Hl,L@d'BQV%5XѲyW.b.@@J߻[>DTJkw~I@7qn%s[yO_,p(@?-h 7ۺM.W] ǓS_h 'Bm M0ˏ!mF{uZSy m!~.喲,.L:?K/ ,c .MRYE_JcD?BT*ХeF$&{ca%;=)@E"\{t&cPDji"iR;o9ёjLdR%Ţbo[enX⒔Q,o+i%uŽ.}6y`.Idl** 2 Vc( nwyxкVL!Ik80>h*/*=DdO@d+ DE y>~j)r:uC/l.~6^g//s|zu- 9љ5cq Z`Ex4!S)ؽb'(@u @2\pcS\y(4 R@ E^@qN8}RM?^a}Dw-s0KG >]jTɎ{@O%!1 Iڌ".)#ˏJmVnDKG|J ɹY%B'u$3K !<$3EJ.|3-B{~6m0Aפ7o98x`zcv\c.MfWBV0Q ğ{+(!\(hT=-2Sn31SEU"Pè^H)69TnU%,P&fM +0oXcCTN74ҳddcXq unnPHi-Ang5FE\3Y!YYj~$+247 %"3U1ܬL g%Y<+*hĢ)ч xZ xL!M?%D=٬#`9Y|EIJg GފΝB #-91*xaL%S })AqQ"` r C)Y5?F/!8gJݑr M +IVnSEd,+4}ߠ05D}w8)`$cȋQ=P71XK|k%"$-%"V[ehpGTzUa]2N΋I)vU%W@Qv2D5 i%ww]%ID!6i Õ; 1a ,r☌S<ެ< [ζBV6;VTAc8T˟+Gĺu~ (VPZA$A[rM<_pt@inQv\ݦr FI&:1&saz? tE byKZWuHQ6(Px"NrٗMoi>B:Q #g؇n5y\¼49ByCp%)75;?H+kZZQ-p1%\W)w 'Sy5oEGaooGxDq\.~z㹿w(_/#6_?Vx cVpᶂ{;&9rFBrwr݋+i6+.Kc8=OAѸnƦYmT-\'N!"w x%"/>}X䵠;},tI\pUiy}hwsyWw6 W&ΘWmގN!X7qH)J(XblC]/oG@B]#}cSD\ki>A,Nb^{G4Qy-S }Եn? -ƮU{]BNzJ P2/I┺B6ߖ; 8q]tn~oMնUo}4¥;X+*mVqquD 遪DU~6! v|ĬYἬsŠ121u$BomWz-Omi'dpka5wRݏۿm?rn@Wj4l<y~Z6>… [^~Vw ŕ]k8= DSt$~{d+LҭD!VifMa, & L00a` & L00a` & L00a`.Jg|IENDB`pybik-3.0/data/ui/thumbnails/Tower-4x9.png0000644000175000017500000002014713137372527020602 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+ IDATxw|Tu}oNI%@BE!"%PY]DW *"FU"bƮDssd̄y33sf/z/9s/GqpGqpGqpGRNK]f|0 wpk4> ;;_~>|Nao>Tq؇?@׻uvӽU˙h?jƍUjOxrAkG*ڛꫪKM,YMj\鏣BO?QCkV U8t]v-RXhRͨYCYI?Q~D|YCYVx#^U\EQp ݧ< eLU" T4<^}sQ!}?!XUC$;8$AV`<قJ.h5\`0 EQHNEg3PT$ks|Iq]H:FWdj}*w"JbJ.T *JW.2TU E>ŽbvT~#KzL-ZU5 $SVu(PۃJZ+w<\~e̗ Q ZڶVX/2 (."+.\7`+IQa ^_d )4fK/bRdtFJ2[X#*C*4r:vkޫ48n衫0^Uʏud%&MQp#D_:vw.ھE,ZMP2ULEnP1E(@܅OW/q8 ?7'a*p#*.j~qA!EDeEL![aߡ%^ͤܛP^J<C,t;!b *Dx."d0$AIʿp +.Ǹ;Z,W/|XgI 0r'r޸I++q EHT`.Za`d5Vkn[[OG.9>gRp6wnH¨ m2V 0V8TS-Y{MPςq5x/fT'( utUc _%W(~b'dG;T>E7t΅ .@˰_JE\j܁Fi!,+/6\O |tY1?'J~\:gN }v%VIpgHũ P!@fRehۂ_WI.ފ-D3c0䢫,:N]|LT|XLJz*h2n;} {_obrpu8JK$HUba_d+P2|pmi.2g+ptw&/wU]几W"::T&|r  _+0DZO^'[zIChFR<}%\k1*eeYB.=(nDr`@/ ]p+ SMe V+`>CoEr2\TrZ()! c1bQн'il~)Hzέ3dK7p@vWklH@-nh@F_f(8}%*@+D0MR΂_w]嬁J4íP5MnNc_'2iB7=()22!$d"0X~,bŨ!T^"7Asڎ٧:LCKm&hu' W}GXWWxYGweم es No V a d +49MtK G=vGۑ3a(S`XLqG-‹Op uBs[Lfy.Z(2*o(?"d#5g,[zy/n \Qv=X\p 5 ZW\edw1A\Rsp Ct"=hi@6>N_s#{+(ӽ`|u4,˅Kxak:,bf) 7:GZ@'XV+K -HB(B 5௣0<ʟj[1lT|Fi|(-2jT)H|O#~=chJ`EG #%eX (9m0Ӷ""S&@u\\f+m~U9е@e_`BKȈ>J/tw+/OT:T$gDVC:"b)32!^vҼwn]+ٸ5|X<͂nt_ߓ` /fpl7|{,/g%uRA%u^(a>-9@y9#1Ċ|z$7{6 u=\#Ct~oB^Lx%,@RP<;(Zp$W⊞2~ T0WHtM3f <g6V]UeNQO2oyFHYtڄtZ2~a N٨h o旯(|hla. S*H@m} Xtۊj (lh@+\5P6]HjjT[E hPi0o[N] 0z  2`g# &@`)x VXEqn5֊~8^Б"I1%|e{[d-lMUT{Z5tbVmK"`x]M eZxO .3=ˇ-z; BhǤ$:ɅPwABbfI0j Y9br/Z{c~{IuY< Dqz9 Q0{u+L[pq׹SXh^!D8h=ݛ7w^!ëQ?mw-B=C~VKxV> p ) 5}XrY+&dth-{|T2[kGd^h_>[Ms{H1Uޔټ%L֨3ipd3>kPOp1;GL{ ݷWE[E==5*HmZnXg(} :K}Pb '2jH}׉&c#O~ *c }fq}h')B9*lX鏖~.1>>Ұc?94?܎Ç*b˽ 5 ~"ƴ#&q {_@*ܖ(RTQ8 vTzLJsxh7O_ɁO逨8eT]}ߠ oq&~ƈqؽwU&^QR[@s}`9#hG?IqcJr7}x0B>'0ّI?^xt>0A'yC&ΜYC}zkK--U 31Kt%UG+1KD,E}aM#dF Sb %rKY rY@]>3q@m*PdzMfS[л[#c)CkB0D6p# &@ѹ"/'„k][T )<Aȵ7%׀䏘꽺#2e]afi`D"sm)q.@z*JD@\HV3^(ūE  @i."j~i31ȳ]b+&۷7,rŢH %< ٛ;.h T1:'PI:%/` !{D.cakEзLn`*(Éll:k!`gPC%V@`<@R"@uR6*~_}SwލiqwhoLY AT-rXp)57bmPrh{yW >pY, Y SA3Fjf)u34P}3 P=_r5"+P]KtHgŎV1ʄ[xyh^v !}t Y2-dƹ)I" R%,K#p)9F@+\R\@*Pt ^*/?>qep-A^鋧{`[yJ}DÇ.BC)Ϗ @eh|\>#@B_O`dѣ>Ք2ϲgď[^)MH~"MX !L4A5 #G5>DNuO,8-oW-?մ\P+~HE";-d <9Npađr"V6m?t1|,?Gvf0>Lx7~Pyh ZJKtקbw=02WBZ dY@9gSnO38/ z(sa?:U2PC3^ض0s$eE"d[/ُײ "p#^\no[th+sקSHIxI FaE/\CR8\~HdzHRLf??Mi D)sTĀ*. ^ ^S)vA: %NZ0D|I]' `Ux4.h)tNy );G|P,H qЛb!\xS? jK9 7VCp dR+@q+lC`cJne xԩ1t,s(KG82:TpAn;?urۅot V!l0Zt)v%Cr<2vbCB=ԪijW&8W=~?fC("[ jЌ?x'lo_~{tfM)x iǠi~ *~HOy ~v⹇tKD3qKU{;qKFCq&{| Η#88#88#88#88Ҟ7IENDB`pybik-3.0/data/ui/thumbnails/Brick-5x3x5.png0000644000175000017500000002676313137372560021013 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+-IDATx}wTE'Pq "9($0 Q]3(0 C^3װu]uu_>t6S =ԩ/Wut$4- tK H4- tK H4- tK H4- ڄIݺlr-+iDWe7p)]Ի/85gckb2])-!Hp7<SJ~Xqu} I GA׌[j(94l9`;=ukH>hlej\L2DMigGf7}2m,SQ~ԶQgxu54: ^(lb~x~x'mQlϥ:Ih*{j(إv8- {} jIyDaՋU| N<<Hb4i g1jIb`"LZv&vb' 2Y#E ԛߡQvskǓřE[H&"??B;t#0Wf M"tV@p{Ew\ZYw4 3;JaRB46I]qD` D. #:W߹sgQEJn<9WQwTL%bA^nb{ ԧhO$P E0pXo} L}6$E) W~<^o#@t#igQCϯ|{VkT5FɃ4᷑0r/G 2222oEDѾj@_qwx[D:<u1Dxx?~Ҫ.$gӄ?D&#,M$$%n~xFEqr! |gۺ=SMnnZ黕Fߝ>DB]ÎsDM Vb.%tS_Ih#vQŚPȧ-h&DQO񾙄/cd2z\-ne0yX}Sh{zd ._BёZPK*{_04 XGHW:5],E.6O0+M|UY4D*GfNNCܜ SqJv58WX]hb@LPIa$&1(D`+N4d{'/#@zz(=2"؝15 jpN;^8{P+ȹŪGw}<.\dj 9pi2"m';Uzr"B$JcSY Shh#[JQsf6d2OB14V0&B@1b5 0x<QI{!pA{WGZߒiPd20 2 E OZ 4 n-62WL+ٲh%;[i5Va&h ⯃!KA D~~EgOQ`7(s+4*1m牜nьPA>}M0SdTq5$:@zTs-wvXZ=%J^iX2x0  ;/}s] Nf{Cd3@OgbA kF8Q HF=xPUoJ6;Wv ?BfՙOU'@U?lb*BϢ༡?h[;y3 DT{TD3˲20+;-9TTV +O)mǚQPƹECjݪ:'S  Z3mPj)2 . 0fQch?P‡Bq{  g04TM:dO,ŝYx߭:%[L ~n~g ʣ<$t3w M}gt`C!BSϪv: %|T=@ves)^FZ4QE>f&sUDA!(0'~Of2 P` >C1 oZI>oSZ_=C %"V&8hLW6[j QT?18+t;E^e;L>aBv@t]E3Ǻ>)?X F4')|}iZm.? Z~jד IicC]d&N%=_ujZQʕ4}(JKKE_t$E@_fog[ 7[[3p8  @Waf@C<^L} CMAPF1 B^^l\+9K LYǛt/Ltr"f3t"Mf&>x5W/K_>@br6a_{+11I{Y};˲z:442Ʒq6ң/gy?{;UD3Br4v w5۹)=tZ!|ZjKclN'kտJ+ oȜ3{ 7 TVdk >*u;ibY":$pda5~ 6LS-oFU=aThWPP 2\.q>Vd706,Çu+Տ_,YsB/!g B8n$Td% z/1W K~2$N$~G^EPs(C`[4l@_}mViX7~u0?Bl9a@>{LƠ.TۃGv@Fb"&3hr!|UIxG5Rc/y9Cs jEj,Ȝ<|cEcZM {gq>E%%%RM2sY+3ҥPoo^QGQ|B 7djzMyϗ靅TTk}y{42ز#'8aCD;&}AYFVaƄmVAMydOqlh(iV5 ~ٓ4b|Z= yγ-{p%&oG]dGhd_17R=~1Hj /dZ);6sg6{zEE D]΅MŸM‡NUa}0 yi\F5MZzKs+!?Ģ5,7d4:m]pΧ/>WYU-Vp1!c56ZN0|E !, Om_z `2lzrzw` UNjY7 g{EqUr}~v.gBvN~4z!;"d>{3V*&:jFp"`8w& |qI, )A1~pKwr{.b{0͟5sׯ-X`6d۶%`%`cu͡ͰIAr 'H#EjtIX=mg`:kxCbPClIlAѵkW-4kxڸ]tg ϗi3'gߓ"!cBεPRIj!!G<<"2Iߵq`JŁk0B})u4K,@#`#ѓ4xDB!B9}ߕB|qqw!H|ͽ+ f4ne3bz+W4A4P{"Q|\&rp#@as[&Zc%in,/s $W$ՌL8@=є{U̶q _vqע@ o. \M4B4D"GWst K<|l^tY- ץC9\8OqcJxzS 6'45&w%fav$Oqq1g a}W;~D}.pm3cT)nëf.7Ksm1 (@1:SBB+T1uT1(/i Yå۹6z0RP{t83ٮ473")=N]tlo^lˑ<᷒hh][^ -Hɤһ|/ }* mʇ0H 6&O Q`ȤG|AsM6rX rB:#C!L$4b5F&-ײGpߐ<. -ڥ,j$4; s˘Gfa&ŒJL:Ĵeb|晄:ְؑ!#{xKΌ26j't5G0+0sYtA!B0,FZVI|fX.&"d@e`,"Za.] {|0App$99A;wHCmP/&tO Pso#D01>1;F#M|*ɞCrD>`Xzr3kj <h W 4?Z$F%Z1T=$+ LsZ>yRd.&#DK}qN$Ak2/TiKN4'sv1i9C|re o},f'q i<5J2IP14P,DS`!!*@$X:'n9a|ǐPlmKZ2Sݛ1Wܠ|I/~G!!!b>|J>>/E%M~!i}Dr-}3M ҏH:N(M}#/6i[\^)og_)'bP)R>j.fub葜|pzSD q ',Gp@?3qLN*lP S@bg\k8lVo]5d8pPH9fX꾤S=⟟jZyfTvzCp& 4tխمB> ߪV'QdX  ʰ7= Ч)qv剀47paFKȸ .LYe'(x 0Q ݝQC VpR!E,wArS 1!;uV}Dduэb˪L*CW*xwKNVu^98ǹ?ۆ׵%% .S8j?^U2e^ZL \=tvSq> DL~"LnOqiTHcTK hsZ["xD>=oSpxhw'~.qS.rH^ zˣ),5 '{)Y{돗iw8ƫZ%diY8@ tq2ptUeZ㸀+X8RgDP]D:aZSM9jD,X6n,)1 7<^@cOFSYRY=#rfC]!f(Ŕ.0iM$7gWtLmh& ՀT\R+\ | "[:_ QlkL.A> @xm!j Ik d׽F[66W wIHnkwX{ڂ>1gGy?,"mK;CbX_gz(ʳ&pf.W$B9[$9$яB6&l-.uᬠqoLj } X8/рGT0UH;t&@ 4FN)ᣁ[vzu~rl|APL?rq?Ti?-)pgh)F@V0}~wd,Q5O?嵻; ;$0dC.f2hA.Eu-b$q~ZϑD`(!inݺ}n%n>6xܾ( wI`_捬n <.CY D@&L0S, ١spAӌbS;b@ <F>TXyP[$GC`+'juUNy8"agI,Çxh_'m̭.Txr$\S[mKs #gCvoкz9DEzSl~4S|"qpі3^IF гdB{I#̵BT` !% j!{ ƀ ;[Ժ불ABnᣏ t9pߒ)9@BX5}HDܹI!+F&0jWɘޯ~q~_Z:"G7&z/kIi΀U1l3~{ Oo# V OK!䷉ep {U`uzAdȷhOø;Ϩ8WZ aB"6st Ur3e'1Lj&D0zYd"^UcǽLa䓿Cr7P&7_t)rQq 00źs?b'uG^qt bB ")53 $i䏖|X+XH \bx YdOv6uõ^ߖɻ/bAN@G$0Wߞy;|vLq 5'`N M,7J9 $Cơt40&@f27*z?-OR 0vwl"g;1E[%n &~8.?Dw/sŐ=*0G-@!uu͡ #Hr'! ua^,M ynI+`G0Qo&&:ɨCT_Gj<b0ĶzR9}F c#ys~.m<32SFcΖ^3Sic-]^C&59LZ4O|< `DO0 T'}SC=)UV>,mhMj sT}v #uF3}R+LQZ!S˦~]|!([sɜ<IկbsGw->JBGK1TFu͒aYv޻PjC[p|'hLx~; ;vx!>İ4 [p2)zDό&Z(>d yz\g{PZfeCjT@d\ {0þMUh\|"s2CB(^}gN-_Ih 9~s #iUDR 0ਰ&h*cX,C@)XM;xOI'x#v_ CN7 +1GvJ+ܹ&<:`RP.iD!C`%r@vP*$Zߟ2t[Rd8ZDvd b($1}lRҿ{v>ߕd&]?qbh͟:kc'K) lhUIǐ5BL]bkYD=`gUlg[| @hi`dý[ |}/f.ݮtO2bYPU7DB)8-nm'ˆ>3ƒ>.cfk0^8n\6f #glE.}mldhf*#Ř\Ǟ={;OuXsI!֨kv:oW\94߈ΫT+'w,m1%HYIK2.7,p`G`7= DHi"ϗp_FL4P=' vc\JC>voDϩxkX_][kU%`8+&KOyu"o(e!: )6T dBX-CZ.t'a~Ƈ5'3Wy"xw=O^ UTIxRؚ^o>`ܟgh~yy6y6A2 Lt ? hKݻw s[SɗyJ מY)}"\K  q HU garpev&3B3uKQFZa8i" Bf3#>羸ԨSxF ?av3$&IEQ;Cvml?ɩ}) 6ۇMW?*y/}pts5 C &<~`DnC`j |!H$Z5fLb-nOBhrOSgO)3ցfG#<%NsiN$D!%v6eʹ P p9e`_{nq0>_#a)|\*wESqy.c= r T&֓#1oPR0E_Owo8ժCl=.5H,dtelC4fFB((Op`Έd=A¿='> /gn:[ ##ęD.c>j#Hqb,=Ob22a%|WewP9seG &aT #G5FGZߐdQ7 SҾSZ9J`ƕ>62;QfŎ#l|èHv'TaK;H% -q ށ~|"qYo'GJ+~#a>[pNkk F6@C8!,Fb#+1*reG զ*8wAqa]u.𳓗QII~B?Hq"u{~qpwG6@" O8| :i s` 7uV@zdHw#Edqֿ44ytq =KĕCBQ >1 #@AdN1NCii.~? we [s@0rTy6mKmz(ܤ#tQ0@Ƽ6pAjiQhWuhwQ99e|Doω'n3g'l]['O=`Ԇޔ/񮼘\7=q9hgxGM @upl_5w\9N@3e9"~>Щ%zHa pHYs+QIDATx]wS}?ὀ{Ul:$tBJpBL1PM1Li BP#Bhc0`z =\{%XZ0$Ξ3̿F:w_ KPNTNTNTNTN>*Cƍ '6_F Yyy*hع=m۶ԨQ#4#tN07=pBoYfIEU81sf˗/}Լysruu%*ǗbEà92'M*y ֯_OTjUږ*a /΂ot="N<7Գ^F_~ƠA?g,h|t!5(q?o삂27`\f|3+U(KJ]f Y:t-ZY[Zy_7BH%dGN:^~m`kժPZ̃kCyF*llN=;֭[Wg ئMCJ0+ihFF #|le871JvoQӦdW^]U:d.\`{?,`Yඖv^BkO@149X e@h'm.8UaPʕK.ls̙3G7n|.-;h`Fv+=gNIff&կ_pz,ƌX@hh,¶d#G`ѣcȐ!ԤI_ƍ%/(EYաT%ƕwŊ͍`v51wTfM1;w={gϞx_q0>^Yĩ=g0-SB׎T|lÆ3gΈ/zt9wx(}9TB>4@BB 8:%jĻݝ?E%p-[Rz__ʛhWU;w40&"yx"ӦM3xͧ~ʌ@dMj,V=&cGЊ z#,@-`(!GsF 5Q5I^zE@A Y@ @\ȏU{Q|NHv q{UQ}#/ka{e]v9UX7L]Q\O`?{9*9Z-Nv-:4 [|׳woYaǕ+Wq(cHB*XkGR=`|x.Ve7:+\]H4|Mue{pVC[v ٶ))HƉ'Ϗ{?~ԩ# >>o՝8ij wS]iȍ,E=7jڴ){s!cH5ol2s5U |Qƾ} @vv6#UFUxUbkBY/r `o" 3;©y, ᦹ_vmS @qs06U\^^^ޝ֘gKR {_dfFsO^uONU`e7sL۸qcZx!V w[\i&ܕVһbz@`# } xeY6097j֬0(,Lh3~rLٳw^"3f^@1 (A#Gb)-<0pn[2sc*U*sF޽;jcǎR.>/@e"6 j t[HjVzXZp ƄT"ii`ȼϽQz%=,wlb3,X >v= `s?^D?%@-}v{A)ZEWJ iD)X?BTKP@g+i\hя2?*'B4-8~5kh#FF\9}>rss ֭[C?ޔh?nу_<Vsu6 5M{Oœ]a(3ڹ2DHIccˏw2}ӦOպ ~pҥKyf߃߰a{tԉ]DL dĞ=qX`{si05BBB9uqt}:tJ ⍇ !<} $HH#aMOjN5-v bJd 5}_aShnbv G?z6i/\ Nn74PA`իW+2x 8(ˁ #3P"<[)b};{C!p4&x{~Q#0ae=?%''+Һe])÷|rtxDH|"R H KXEA<`{?=cc Jb iA;y0Y-s5mNy4=쩈,Ybu\x1r}es1T nAO \|iVx~a5>f/жl ]ԖAH@ 926iWS|Sb 8i:yr!R78)g<A~͍5|C40%4]la`ϗ~VX-zW`1^>|!)_ywyUaP> @@!k@P=>[()C *XrnMAEDYYbJ~:A߼ˍx|ݺu#7Ce- XO"3 X(y [pyOH[7{AyVyoٲe (H<.5>ޜ09o/l@0Ds|ر#{ϐt(U@y|g81ݜn|KhߦjݗMuࢥ" HO>|A]28%ag<$,`V%7qEzt1Vsâ`1Te5 7Ҵ$*WAȴyrq|;550:#K2/\=+`HyQ2$,ƿ/ )2T_C6[Y(l"R@k,@H . m_r]zDGyx~/J 9ƂPZXT4k3ȃ@OEm--&pJNN>.p|NJp"U / H%'5ԩcǑ2p x|dooS$HA=;yKnz#+XvaxKд"zLx@NHd\mtEY@ TMcx^H te$2"nL_o3s$ P@nNNL=CSBJ>F&d!aa:ik~(إ0! ` )Aq1f@tӳf7g Q| ]jv8\$>GK E_}$oYL>9惖mHXm]sF0JZZ9t~m۶{@CT_f<E J. 5OieR8&AGy<'L`J ieB[L"k| pX jv-,ImeP|,Zs]>{&]#)@1zʀ0xYd`ԥSBX@*)B厄K9 ǣ  ?6vo0 `IJ(>w"k"{%`P |R02>v5oCj-mJzA>P. Kq̀,*wR+2WQ=^;F20̍K@ 0{Y"!}f ^煰 Lൣ,_;'6VkMґ8#px/8 XZa| ;``sl_(G# D+  8؏e3^ߊřs.V`׮]HLLd{J¥rlX@bOb`D.aW9o<)Q AWii&Ƿ!'M*T掄K,  HH{Af 8Umk j|r$Ǿ`||掄{|ِU5A`oH2HhV.@NABhϔuN<\V14qN<;U0 <ccB]YGQ\TE@?`ZZ4Ar$*G4y1A[R/e@B$r}q]qj fe°rY@Kq| {>{ѓS GTzצZlȩsJz@$O pѮT)Loẉz+EN f{7t+W > F2 $UVd_F`~V @[ܦ{O>=Sà֡D,7M `cC;ow,Җ '2Og@xq#&66ֻP#b yb`ɥ b P· 6.! >j#+EzY8c"p`$fRԩƪ`X@] t(Rq5vqӸ]xE×4ؓn"p {/@Tu3;-G/J#rcȿ\Xu}{Җ0NGH0*| fH+uxl /A<5tƚRNl-]4f\p` _.C+bSxR--|q/{WPľbx{4ʟUz2 `Dxx&Z?ipAׇ& %D_4x સEk&q׬IGT/5>h+''!۱c뽃ht18pAк;?ڇ\?<@ kXn|bP$*!eu{|-- ֈ/=/Qh2*ٗ 9>!on2G6=}B)&$.XB;`L?_z@ urHЊ`WD2%\pud"ZFMp`\fΚj`ΝǷ$Z@k @70n3IUWw% oLtKWhXG+ @/nhij'v AX* #C@'CXHOY5gN9]  ,P\&`s K.U2N t S3cJVR[ǏG_%;4kKĨ z*^q>F:D6bNK(TC0>4X@cs6 ?8>#nYb.`ԺYSur, ]A (ئ0ѣQ=U\elb,ѷ(3 0ƕ2w̱wma pHYs+IDATxktآbؙ[v\7w %\⥨"pQ+=UO"R!bP`Ԝ=/՞C~>wfv&d7ll6s{]κkֳXg"0|bX `1,bX `1,bX `1,bX `1,J1:Cx`{bMy/ j6 ̮|y8QOœoau=+iDuO2 m(柬Vax@oFl~4fxR4qdzyWBUU*,ZJ% {lZ' x2?ס?"(M0 )V ӿ6xR,W|i„a] fmq:J%)Oܿf@8G;AFc5ow'~{*f7E'^`AӖ1+^ҝH3ߧͪE/4_Cw'z9" B m%&(F)Hۜ#>6ã gkz~:IM#/)auI85Y/J\.`H4 QFc qMպ-[?bqE6/U,243hy$ .d41 qnH6F'ў$icc>q~WpaHȤUqhB_Mc@X@cJA'ISPPP a!KS\A yIi#1ꕐb?ǛiîSCRtԑѿø{%Έ2f~]̧L)V'YJ iȤDWjpb*(G E8K8LPe1wM&bp_ tF':=Z[@":G P ؆Hh%qC Cwzjݠԣ_DEUn #* YT&q@`^Te=`e(T6 ɟu^>0ߝA\@hntPD@6 P1R*#BiiA_KI2-^qce>}8R# 6 E #_0l)prAX}cMKlEp}>"vUDI!՚@~,ZU)+(0uDA6Idiݑ#ť 0QzU/PΘ^->-w/JQ(Q ;5KYG k(] 0^iH^J(ЎDv#K{DZnѬıŚXTe>8{ji @}`eϨ- 9NhP~TY'Rk1fDA_DwɴX ]/qy]busapT@- sw%!Mz\ 1 +E8eV i̯׹r)=!Q/oȨE e -#/tHb r~)R*[H p`>Rr%k"j>>2{mWb ڔ>,켷>>w͍kT R56A"AD!ql)%Pl.׬Q}k>kpT4=R5XRk⪧\CtE,&>xX("(MP@4@Tq+p~1 O pdSSs9UDLGԜN1JGm0WG{Q-'%[E}~FQa!pk5S`$z)%H.:.J+}lv+ꌙyjVd|EH濸{(D67f1mD;N H"`A`*R(EĖj*2́)N_{z5N!o߫7lQuV${  Bv"t4m\.;PAq8ծnvQ[d/XڣC+E8EƵԞf)ecO/"0%fL+@Q~겚ߕ*q0I;ArUFDŧbPPg"Z͍ -$ڼ P`DyH|6^ ZT‚Q^Lf,VZ2OJŋ{c"E4gQTXJ-*-컔 Ch94-WTxBEy0KԘGȑ ȼQ w'FH|д| @Qtj'YG8YLyZX47:MﻕL۶w&,oD8kX}G0al NZF5}vt0ǿwU},`aI~I&vBqW؁li;HQBckCKu-OLf&qkLU.*U?n#^]ܝJ8X-i2eW{ſNaVP{T;O6k(6P+S$o"0,bX `1,bX `1,bX `1,:-$3(ԔIENDB`pybik-3.0/data/ui/thumbnails/Brick-9x8x8.png0000644000175000017500000004150313137372616021016 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+BIDATx]yյ~>F誮gX}Eda TDݠ FeC%QKL^^2bwsoT qtOuuws?Z{?ܣ&&h@-G Z-GͦGW^t;cb Z ؜1N׏COA电dչڗ\$o=vhpKK;;2d^(T7 R?_<:Wb1jEX<_x;Gpv<8yЅ뢛S -{ zw0輙jvHPCg˿OYOi9zZ2|NSn1-ddr9ZpQhATCȸ_yo_?REW3ROnEL Φ7ʟb+x tGFB^u 4CO%k^dOiO!R2b4Vra2J8[M_1O%3śKL]J %p/yMՇ8#͵.L2Pyt<&x^ۆ@# ui@qdd|XriAoGVx3WkV(l2aMʣGЪ[0ri(X@RCLM6;ĉC܇3 fBκ{;]zp Ne" =GId=5Vu0V5Vu#t^)~E C玦P5"7[.!t!\g}'}n"kJpH:'R2D2z2K@ 8K%Fh(t ,rc8F`Z}~"rNuf"5sl b2\2RjE[ꝧnʾM5o#(އiEgoC$.H7A b:"TR #Pn`z(@@جBI5~|7!5$ׄ+;(ۧnS&P鰚;͇_F+z)\r  a PϹt7@q~2 9`wGtUχBG?EdcYGW$5y Y>kf=ؓz&Ǫ￐^se?;IpJj5kXn3D)gñ_]҅Ճ/EՌEpiD"ҊbupǨ?^3BN #^H_O9F0t@o^ 07>Lwj@qjZ]ȠیsӸfȷ"]~{_ 9O3 Rv;E >\r ٍ>' ̴Jn̈́+z#B djI,3d.pL)P6YʐrZpQ-{LqVݥ*SW)aWN:;NL`Jei*\lQY XXY >+>ydH(@/l- `+O+ ]'t24J"y~% ă1)-^!XoBՔ]ᆵ#^LvN] `xST.׈^ Š`4b}rC*]̼3e L%  /ӅVRՎ\3\!:w2ǡ+}VC)72rzC6>R[6!?u6 x>&t \k+]k9}t-WVApbbռwԝ,]뛈_X5A2~DݤN*ۑ>:tdӱ.Gb{_/Dt H=PiDS6uӥd7c @ꂌ`EX5`%"l!PSF[!߭ **=;RC!ͷG?ϱS\<FLTI)])!ҡB:wSE:Zͅ\ml5:58*QϛYI0bzMȥ5^hI M8"EZ-9H; [X<{1R^ALUB/$X13 _\(r)߭1tTpva/wx?ކ "W9m]r5_‡fsMc9>4U*wlv#P\2$R4JaE*:pUi!|C*37{s2hVlr]BsT8(tbW~R$f?S :$nܸGnU1Z:ua*EP˜IDJ av*%L7>gTF1ה3ZDHC159JJYrr[Ts될LJ (^{g=i.ʡtZoU5+Xj V\DCn nY}8|b Wt]*}t=ʛ\tGP,0%L714B7Vrb/z6*]B'KvneURM`ȕץgئ\] l*k(`/!)D"7g0k*lZT4>R‹Us!s<ׄAw)B" GBx 3#_W˂of@]+[}}ĝ*D_{5|-AǽM]Vl-T,E7HvܤdD]s&*ӿh*>cgindk6^4 H. QMaHB{N+}\`~a6dsO( C(HfзDY#n%~A0ލL.mɠ(.d/ 7nKe$0(0'0Q30MRe%@WQfdM Ʃ"LkH hf@Fgvg$^SB 9 yI@|[[$n_Gn ٩Y0mݜ)jʕ]i8R%+}W^b:\o"|喕l/0g!Muh( x ՛ *-rFhŅɥfY42q5V%*W=\!0TNO3S pi⟴a~Ԛ()>N[nZ]2]D.Յ&\m4)W~+qWV%O뻛nn77k`i"D`LW̼ί04 jAuc`6*z-Vbs\ u=;pL«xWI%CRjI<ATs ]B|Q̆Fס)6_+zfdd<"VMc.y0s&Gi%_H7T + fH w6.Tp`5NPsrkדXaۗ˂gfUjuuH>q"a>JxAUZ& beD Uې>yٚ81& ^ q"?=0įzUs$4Cku i5օ7yl"rUՍ_ $Ȳaea|I['˹.^BL0[W Yiُ90G|6<^LӔWyX5dӱYӿPےW@ sgy(poZYBↅ1"q=|-8)S(Gw  Ƒ@Oxg*|0FW __bIUktŔg";88 ' UPsl38[1 0@YV϶Eq4K}Q r.D ]UxޘX5? Za `@7{oY( s)`INȩm wW@b㒆Z!\>Iz+sJbr7ᇸ:E^05t z&A ƣkN-vbZ!q|(ċEĬqӽ~lW |\`VHI!2睍&sw!yb]hzk( ZGѝ;n::}q͎D" C|t7'Aũ[c $~حQ6"C![dn*'uaqt{Xq_!V8YWܷz" V^doV{;brEgۗR<9څèY5YU=ߧZ2ջoj% VM (u=\='YN+&cr]  04?ZJq.lUN\z ?n>1B |\xWGB3(wӄDψ!HdOwp.!rG]NɊ<tpf7@s8R<^i۹IФ6A* ^U v\l  \RNFE Qv>f0tP6 }Qs,QDW=dwd9AQ5+: {o_ǚfR<T"0\y;$nWA!b~C 1>*_LԙTznic%QU^@\|(x4Mvz:r;Yx0n =.WŠ"EnSW:Ed쎑0KqC׆h5kc:⛏<K9Ws)% 5䱛%iΆ4!2RhcXlI`(!0xeLZ C7(| E(C@RTd?Vp0 {Gsk'p> ?yg?Bu_5/(nY M|0*zw6Xy-E Fyı&D6N q&@(7p=Q(Q!b=2 :#ݩbu݆!Q2BE:cv 5 %Ӭbk6T5sy3;Ah`نgH5e-jrV9IM*ʐ\Q9\ĿP`y'T>nt]z̫]C+@ H=@ m@饓uwgB  ~pܸ&Xi+cU +[Y=P oJOx|e [u+ בˇ&/0v#+!_ !\\y_~@|q&O(_X^c&z~T`]:f nl\È# Mm:hP"~܈QpęD~X<8Vo AASg2+0M讪x=6pZ!&ؚ-"ĝQ^ uF>mdq߷!>剗nf%z8`R B>#!AvO/J+)Tx{,C}Yaz2}|1zvֿ^B漞11ٚ* LlI٬t`8u-g#+隝!N:AyqpS\U2=_(IJChxwB,`R82qwVULTNjq'96L"!JgZ}`12#g#-@Bd" "*%55!)Qn|Jޭf݆SZY3zSHZ:^Mq3t  J X 7,}}WUڈ(-"Ryw n%wmW|[֜3,4]\Eҽ&ړDjgB I\}"t@@ѳ2@y~NbPO$zz0>33G zVfhPi٥m`g ";@h[KyO7:=ۖ3+bYOJA+܅̀R 'k c>g#띅XNʖuOE OcÍmH3 4x":&rv=JưN`p^!+*iUTnx,_\8V..~7Gr.3zżK~+GtiNNئX`W Wc㹴zѰX);Or{8sd0,=0MHC{ APssbrmq5Ǹ<ì1@3CN} Bˍ糅p| =O<ˏ ^ x8E$`x(&~2ltid]4@ǙiRA5i%H 0 (hK #ny%4ρq3Tyz VĬ Ue] n1^=Ge|`%FrϿs"MW~OTRDL[\JO6Ln!&$sa:+yߐk{wvrd~\'/O](6XA7 yء:dLybo;aɓ#gQ{LnZF&ePxcܱ'.)o0jGqݶW]!~'t5Gg^1Ǽ~K^+}p+9s5|E$}'^>!Tsi yJt `tB2 ) ! )9y^L:O8iXR P)(ӂ !'dJAwXͽTȝ>T`>?++KXʼaWuh۲ť|Go{B={r$zhWW< B[/՝]v~x5=ۓ^JF81X /wH8R!M~2\f_/PYOzn`!Us9R2i@TGRz!mXѨNPn@ p7"@dTplʅѮgf; Px[|~0sj) TU8$ DQbiS =-i p`#El"eK Y;z8 XV-hGDR?9TVB`/ J>.$ gnv8JJ(l͟2%'@7'9f;Vl^e`|{ISNEl7X/넸 xmsןjSdY @ ܱ]N(_@vJQvߣZr7U~,7V64ҐKY+俑N)\ ;l ]Yl^ѐ&7sPr6ѮNb:=?|+BW';AQQ֑8׬9EƏl]͈Ϻ{d/B*uH5φ@7I=7 \LZmCF"gpK]Ot*}(u*J!l+Ǩ6j7_|=Wy߮.q$= b`- +/"ߞ?GA.N̡Gqw*0F\;zk5'cl@ܘm$ڑR-dwȊ2]fԸE/FF>'R=#Z%w;lqmHMf_%%V2H˗sGsؙ]&VUzŤanQG Ţ'qX}5k̦P+29dMDS yz= >./ Xbe!MFyy߿!3x#֞  LXCw\v.dX2&)!'䊢]ZC: ̿  2d讳Z NH9DG=-C^˧z;ܻ=9HĈaCo䳼vfq'#R /zWw$2}\u㷞.B8OnWpUݯ1ܿKm<|F4!Bbb/KzwБg@n:{pLj AlwxƈO SY jR95*-r} w6gwg=J9r1 0b\9\<+Pli@r/ݼ'u`;*sdkx-{簢@e,YO S2 'aYGFR >ϳĽ+C"e`/:˛xl"/z&oqư/ qܿ< F|2w@d OcUg=|#4)k)>fk<;_ Hl`[Ojg3P hVQ(#l-c %LRCSuZkݻbyPcirg87wF+!{1^Ab@EDd~ZxR `5):| ӑ!t4B:s5 p8>1*fL"ȽY5 D<~هn֪bx9?&D QC,*a{`%#f]ۻxzNhbx T#=Ex<pf钏\s0yK[~&IjCxl{ػ93}_Dp.o.\O DC_Lu~< I^q}N v CUqa'AybDF]\Jyb0{`s[ۼ|QI% Gp7HO9Fِ SPT8]~gf~a{+ֈj^{|Sӽ99̱￿ -^x@ h ,#uepX , iyb"N4D"&[ S@cq*Spu*ryfȈ! ՇPFxLN[ B[]P*ɵ&|T3h'Q0(%LD5ky1t.N{Sٱ V9/$ ], HKF n l7Kx`xOjmL{(aș& &qr=U&sq \{Elf@je@wKݹ>ƕNtg] ng濗?TptT|0h &\,.֙s@r2V0:]^k9^dU }Ɍ9٣,nRB'<6vE[Ht GvohtWyV)ޮ ~}0W̠Jm-6yNDE4zb[bd LVxD1 :+1\QCmsz `㏯dLL-nCyL ~5 Ze>/wl(gn] !_eFj_V.E 3l/p#2@ŦA(A~HP4Ce#gq=V| }] *$Fw7w'D$~5/ 0+fĊKb"!*G'˾,c]M[)%|81|]z({=u c#H BG' qPF) WR9/ʠ+~v+҈t /ɸ`Ic`T)%sTSzFTp.a.)Ҳ5P?їd+ˇ?x bKj mS"eI@dSڇ&A79E+w,cĨO9PxoqJx~)")vs~o*)c@?N^@$Pk(ܙ_`\z hPqyASք\\dk,gy"+dr_e}?У}_7oo+i._ ESV9ܳ$JN]#c4YKyA0 䀨ʿk,en%#ysdא?%җM`s{S W99y+.ߒQAzLav}OJ1lW܋fs)$rH/C[O Kk+L]\&9 z 5i3gnJ!3 OV4SqΈlHV̱*/xP$$z9u!I u|͠# v/8r7=FdGppSzY]I`ʹ}#7A\sjoȝByUo eԞBFh~)!!&f֏e W9@* O5 Աq*!\@co''O5;X&>\WJYF.Iyi@)uV /\h;@-mEFox/_91r)ހa > 0&_ #Evy/ί(%ľ.07@U#7o$ڧl>\ţ}wPjp5qv=}jfKJiD/y[`P fˎ!F./ғ;2~NѼ w?X@xt_4] +ⱛbD_Cミ-Si@T9t١n"FQOd=xhb,`37C3ݯtXf O$rw. tےrr!>r{{t @~a!EFܱ"c?S9;gPҸ+ C:vRYQk5V=nQ"sx9 ̛Gnvb`tGncydű~F1 ;d!r4% u;\Vqc(<1dXSFUeA߲d}SO,\rVݑE2>o3=;b)y+zVz}rB{tg$RyB"P[S$JO+{۽{YL"l`ս[r4< $҈g/{ N1B0}k΄{}F 5a pHYs+3IDATx}wTU)PUrЀd dɆFb< 興Dhd|<q77fo}έ]]&U֭{o7?227!M 2Ȭ 2+ 2Ȭ 2+ 2Ȭ 2+ 2Ȭ 2+ 2Ȭ 2+g㖥OZ[Rq'iy||uj 8> xBaƿ{k06pGEJc4>AgM[] [  w)B|ǭʽcӘ[o0o *` "C+W]cx7 o XNpm05@4Xʃ1^/`N3xaYߍDZm\;$2O(v #@U9 ߈԰~/S\o؍_~ ƏDKwWqL%*:4; CpV^>Wiw2-  $rᦿk 4xp a,7CU0`xU_ \Q瘊4Aݡ!:Hް&fx-M7y}GgN[o_Fk 0B޶@^[x4G>ߏ-Qi>8c\b0,#8?T6WW]a|jO*9?!:յg7t /j}5$؆hWƓ3,"ЁXƫXNkD;` SQߣ{YS&Tq6= Oo` MፇMBKiio3@?s ~?FB:|31|{+|nUm^$ {aGMS "X5 .Aˀh 3743jk,~ذd(;anC e ޓp@x_AfF+tI!ya (T)"R)z1>a75>-&q36,W!+*J ^N$ӦO_) g+6[7t%n&oD2v^]W|Mk,C A>^#O=.&*lIBI3w^ 5$&!Lu1 ػhWך7,>&=1Ő g0T馕k~;!7zn479%b VQ֧497{ ׃&XM̛nd Gvf&`^dA'aSưhHPq|wD^qE@fWbIX1iN0&kz~)FSO&Mx<<{ vfj(6 йu0<2Rg&l35#3ޣI᥍x5BP8<Ѫ$Sшi5sA"; s{ȡxM뗷=+"A+}Sq3w-k#2L3,G{7| k$@0Amcq`fXmp~Vz hT(Qe$,`ڰ)(~4ƠY,BFΥPÛD}15i@YwC&&8Y#Cx4rw1Q:c,{ژ^=z&aQ  ~K#ETCbnjj5~Iߎ%$#cnU U^:Q;߱v%2z lݷb\K%Wp{-$-K{|]g9bDܐPNq >AI +5)R؋ϣBI|n@* H܏ViHR7,GUL^20}@ᦥө Acq#Gg=||q~v)3mPi0Q8>{9N 5}\0~Ucp"nE7K g Kg ׀ ,LECf ]BA AY^ҳ$RUy ["!x:S1Ey\L.g$n&?ck e@t7z& aiռv) 64S+,᳤k[ZghT})>E% 1dIx {lS1LwLAY>D1 P۝G^z!-ԊbjbuӌWmo:34_2n=@2=rnAQi+ @zŧO04álbb;|~-35 jTJjOyF 403I }X/RB~$*.WL U/=tSJyy)GU?MoզS|N͝4P/u8p\*piiQEC>%>e_"o7^݃#XxFvln6e45ͤt9$ aH^08M 5!AB=?/Sc#7GwNN 8Dž3ߏ69ҾX"LksRޢ1Ґ!@TI;iJn@m+4upj9I1HH(|gZ5߅᛫t a ~V3sDf@`S8EAëg'^^S?Zztݠ䶥hlCMem8<4M<9ŋ6Н9V3k0̌_2a:d,7Ϟϑ~VyfijkЯO2i~ zKPtWR48D`$R&}6}8$|PwjIuXğ/&ԥjylR7Mے i!yzYZxT o[@K~=6$4,>0`i &BLM >rp\@mD/iKi15%SUjc٪]G-[pP=>~+ Fr$cT.(AT1_FS0$24&)6>ZwRC%f6Q'b%Bm4Ja?FLH8n=al@?)z;k*cQUUfQ>]f^z\/竪r:qDLړPa~Ҥ~?_ 3a#4Dq,KZH]<"XjhSA{rlˌ tF 1A@YLz``zsߛ@6 vIsO${D}@W$LyYn jφ<_L  &o:Yr+s1OdDHȌrQcɒOAv݄媈x,3OA3)-kDžo->YhVV<ѽa2kXn_cXs5BL%k #H%)ֈ$N7;jO(юхDtƿ$6F#GFEgpiZqs\[<#Q-zcԝPGDN}GE*rX ^n<@җ-98h7=đ7@~GP-d2>G;x4sw$i H/Ì7ofz`?hj$KBtqjHc:0@^;gfDY'_PpGjң~_-@@9=j\q  uT(}a,yrTDzxXuT;'{AS pг-@`{4)_Oټ٭JiO{M 8VPDEBxx8GǶDy>^ߑ4iR $_=65e|0R243"M(TVi_XK0 M۪cSAx[Y!>jŒ|}L 2\νm/ٹ|ݗx4D 'iG?nB{jdi ejYPVn9JMP2۽y ~:>+{%S"ϛo@7KzU ]V ߦ£}@xk:Chu|XYj&r;W+tw'W^_DDW@0>ӌ,-bZ9:J]%=7l2d03xj.)09j|#%ry8h;N"~fldYŇej9*A*xD'Kɫ(G-]SO -JՑ՞TPR=!$ȞQVjh@E'{"!>x"{|Fk[#bnD(x=m N)r4=%3~? I﷥ DBHE݅ӣj˯-& "_680, ^T;69%{a̹4.B0~V[<< 5A/ f H_05=#I453尺1F&#- ||oxws}2?+DG@_G (shsGx>gXGN~[g ,6'/,'CX.ڂ! e|}i 5JDC) +ꑾ>~^թW<+Þo/P}xe@Ֆ}/ 9jBvg[YZPH6d[" DKxS r&Y-Hρ_e!rXcK肴72X}T9~|DŽ5/J"lqс?TFUQƘ,/UE[77xT&ۯV8KP)de_H{7jI'N~OfE@Q 0xgTH(mɟ-YLCƠTro `|yn?Ǜ(M8op(2CM"t!@7{ `gHI̺x$RKʦ`  U& Z0 q@Fo0cVs*o~M^/nSM% '5Mv* Ga3q's\| =:t$]#ďR/%`AA n 1s|p:Q٥+g$r0-"rj]'p.Bd?NGzU n$CV%3z%7rXVL|Kb`R6ʍ7{?ky*H;Jx/cSs_w:y=򫿡cޟ>::û ^G%nn>Тq}yOՓC)b e99:#{y^eXj)]zE@2=K9x\bS4}v|NcTQ#,%K0g)XXt&٤/9)QA(hG#B&~Aa~ꮸFgI$r Lk}oKGeDK- ]u)Y_*v. ؼ4;y%:9=NPE2O4 P F8BTrOz! ޖi:,UYKB"UuQPB' #{ ނӭ;Lɰl1y .)Ƕ;[  ӻW|ճ\~tozԸm!{J"qGuDͿ2v1Sg֖ĝ<}Ye[[bRp6@;Zqt1d l0:$"$PIԋ!P_rmpF -JyRtU,ցIbAj؋߃-4#^R,zG`| p*y|RC|?zkLed{Y!$zk~X]{ݩQNcFi,\:d'B[$k6H_c?:B ۯ"Nk@ >rDXѠ 煤M Mm\ee ˆ T K(/OvJ0<D!,DnaU_U _hWQL]G)VP +d)X1P⹘)/ۯǁr3,652--BxIx]k7<8ve,EWVf'He_xQ!ͧ^/`Sy[8["X;#O 'WrNHŊ#{Xz ɤ@I"+BYJں\M+!P EC*@*{;ו6B؟JzX׿? fwƘkvX0-/PV;/@ïVBz[C B$z/\w)+oĤH>||ԾsGw4iA^zM%~x]L@ɰĐE('BAe6\FBlO+5G"j{YUG-ǿaK<֞m 7ݶJΒPM.楜g0 C|"I JAp&\냀ࡼ2}|~G?z̩}8C;,.0K7 pJ v$†8LuebPNz땒\QHZ2;&h[Q:\}g<'Q>r`0KV0C|^*H0GOysWT+±ʈ 0JKiy[^'|ooqL}i8IUdgߒn#A)'ESH @w+u:VXLji1տWyrpN 9=d`0U#YA0s*Goo9zTM-N0O>v{\KUEǁE%&(!#$JZ;`2PYm(х vO/q9~Nqvo՜; zۖ%'mHب <$uGV=gsy3" {o,;C 0<,t~XBOԳ}|Z:|fpC9=j\T!>׀'jݏ1c诚 =K)eM-+Ή/P= zԻ[aҙv xdYdV@feYdV@feYdV@f9f[kIENDB`pybik-3.0/data/ui/thumbnails/Prism3-2x1.png0000644000175000017500000001324113137372651020640 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+SIDATxyxLg篊V&{d!jRھ4/S[-!AhJ)!%iMjԕ*-բV=8ef1纾6s<ϳ}ŋPUwV Z *TTRPJ@ *U*TTRPJ@ *U*TTRPJ@ *U*TTRPUg !))KX#X3G0+3{qAAT|XeAB Q0&FDh=<<jш}2R?zU!zֻ>b-O Lk U χikHpp ֔,IuIgwF]MɁ䊑v'N}6;$+{e&I{ "U̜ 4tfGd>55Q뒡]v|WjZYXo* -Oo7{}rM+Pw4_&@ՌQ:=YS,w͠a),,4o q0֣ úJ`HiD Ejv6=r<,[5?#FUnFnkEaNShJc4XmoA/џ C|lI-"GLʷϺ}&&dff$JDo(>>^'E m{M,/ޯ WvlB+&!x?@`p }Z^iWˢ`aEdl۶ͨ@pAiar?h@Ahg1YnQoX 00vf&?)--2n%WNc>qQ*E1%2i|4?2TC77puhc7nڵkԼys=* *0`<$* MٺQ'TH Vx8G47)d-eʕ+TUٽ{Q/ְ^+Fw>@1MxbN2_ @u`"a~Xײc+\6'SNU NjXmJzBWI5nXo2 aj(9znucw[̘4؃J Lo3[2!{%K~{!P$xz=@ק}3_h% 2?$Ѓv 4$в>E.`kM勰kB[}p,qW5{%dP\mQ +Bff03cӍE8 EXlә/?r}k|3x<0vi/^BV|IQI7@ׯU =A. #3+=xxzìt粖pkD@g.g]2BН#(cn)g "eޡlaw#*Zf|3$\6'PhGEdC9zCb)* < mۖx jٲ%=R4 <W@4?ߐݤZC{L$Jti<nJJTA0md|/55ƍG&L'ҤIhɒo(==Ə/ƎK%''Ӱah4`ݻ7K/ /@?SO=U%`M6 0IP&dR"ǕͯidrzkQl)3f̐*Ht"/ltX,Zj%ئMС=s/Rn$O!5zh 2e,>}M&}>@ lРAՋwN]vyHhy!52zs|D !gKY~ rU.Ot5f]V.k/8 KRw<'V W,Å 0GGGK&\}H}ـo߾\#G$kXif'hvm)\/,{'9:3v0TYح&GL"cK!^n11k;w `ɒ%t-ie8t ٮfدx=(]3շs)T"06UB.|fʄLNI4 ߞDw/'иr| @ kw1K'֭[K(+W4 XW3t6]"}/em~o)Ȱ/Nֆ͛-Nt"UQ4p@i^vsPΧt)O Ѐ| 6 s084 rɓ'_~R蚲v8/l̇^-L O({|Gy#IRƎb7WE#foX6ol8|qhٸt-ڶشp$iUH?9XMecG*G }4\G1 l|@ ~,_ 8K}Ek}}9lMlHw&&WJ?3 z5~WHW;U?'11e>8yIW)JnNsR˗kM8sa;v `v5hYc͛z2FfVpb-^ IX0/r9GZg>tH=2֏%d8ۃ~RcG2Ο?/_K?n1Xd+]e͏00_lN@_d=.hFNjC]I8?ᅲ@ T^F.r("J`5ȷ)O_iD`s 'y/َ q_U`Æ Vm#ftl}w#i64'0/C7Oԙݺssa]|M}Y3˱y^Uyh#fVp]={P ɕ1*WIWDƯ0?*~(sL2Nc{WzL׬['m! Ckm_HT-bh} ܲ'- _+Wމ4Aa : >~N-ڕ@[=1@C2e̘16%b҈dL 0ad>z Іm1ԁ28O|Wq5y{dLԩC *9deeCر{-f?/)W|~tn9ml^~rhn':3veq|{[oF:uqhd4~ %̘jiuXNv~-W1]4>BMC56ɟ@{7Sq^]ykS0ÇrM%1):Ѝ50o2fЎ}X.@7."[ 27\ܦ4tIO~>M˖j42)KL/oҋ~ 1<KxzZێKZo_>8ܼ%77W f&oUD]qU:Nt+"A?Tm~5[?thKNѱcҴH n9sp(S̯GoLV,((6*Pi@ ԚGg-_ꔹsoWi.5X5w5A@a0h[*wh],hb_9ndU^-[z튤yY|CEl`z Ky3zǏe|VsN9$׹k+>n]FO8y ZScZsq4~D]:R\\l`b@g8 Z*IWʡCHV"+)S@+\[X3p}&HR_3-%0>ȶ zZ$+}sK7QZg~CSo`;Y t^4׍=uh֢lszXhW6#-* d-\ >V0+2f;5Tؠ*GgԠS@׮}ʂêd 4k)sl 9`ܼy|swMS>s3#jUm=p ̙32xJά}: :nHg)htgaVZ詳CĉbJXF>.sj+KGcH t;"iHw^O"LX2ʁf4rXiDl@KIk?\Sr %O=T_+K &hQ^=*TTRPJ@ *U*TT-zITPvIENDB`pybik-3.0/data/ui/thumbnails/Tower-8x5.png0000644000175000017500000003447313137372540020604 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+8IDATx}wTU皠s30d%8$ E8$kQQa ʀEeMvuݼ;npu:iA}sznɌLBI 32Ȍ 2# 32Ȍ 2# 32Ȍ 2#" ]}|cmް1l첕{g!]gГ3醀U _c+UUjӦٸ&0>~|\X,ښucwX;dp#+k.rX)nIZb9y& =YÃyQġbi32^/i°gx{ktnv+fM`|c<E {g=L$# ȫ$/A⋬ʲƣA#0Nkp((a-8<`;ŇͩVd~ëy-96 9TrPCEAVsצ&\ SCkgC ->+0]{c}ײ~]~m ؈6f1 /pJe| ɶV8tx|=cx@w7 ?ġТuƤc})z ؽ_^W6lLÐ@G%W}e^:Φl6|> x{0~TB{g k|m)r2N ubPt9t+G~ϫY[3c&PR\~GVϓ:Wt. ? Ɠhl6*ޓM:AxMQa$:VTÆ\$i 4| 4õ'wjRC߾P"Mn j^x:8l*.3mbҟfv+r0=<#9 (xBs9:D |۴R >Yn-'~='cgNpzԂdACnޗ Sw 7oIA^qf׳ZhI6|[Mm'YMBO@2n|e$L& >ѝjG9?_++~{fu0007^7<HAGJ~k"yJ== VrMaӄ`J SÓrHO6T! 0aPëLMBc#\3 ) 9|ԛIseL _͓+kM+@2ױFJ.z =6yeRռJrb둡 d%k:h YTS:^c<*Bs%%賩WIA:X䉶!р< ~njgXÄq=$Jpd%n縎 uq*Q~eWҹ;?3`+ RS}Wt(&3vfqC} V # {×gd"[J6{ 0xnGH5  Ymf9m:4'w6zv YBR{ |{zzzO;R\<#!o{kD}Q]}&D}KԚ~'c:4{#^ǯ߮ɞz{ے<.Xzט Hҭ;3ܯ-l '0 V8h˩ !|;5n|-! ߫D{\!noxZMd҃W0@ۑ?gf7o4RoJCO F-1c oIlSe~NE uiFbuާy`z 1S  _ x&A*tQa k00(*5ٙ#lGCV ];Oi)P+ }xHW~Az0Kr̋ "G}&/Jn\:n NoD1x(y=Q@.PjevzWVt ޟ߫6a}c?ryM0ј y5چ=hMLaxW\?30O %3ʼ*o!hN3|TЅZtB9ǩe1/78 swUȓac.5@!\jw+ n0 :~Q%^67~V ' BXHڵT\ 6ȈDH&AAz9{@" c>'kTEGE Zg';}Npiݲ k0vc/}X3apHU|-/| JLr%RMv~. ~/U CW8rOb.W}V t$}| %kI)f0 +yy*hO0To Vΰ# ȮbU4M >M9V<NՁXj[G`\ݭ) o^X0bc6ʪ"s/>sX=0$À sF-\FRryH҉tV"T}|*U 8R!{ϙDp5?VH.pE}bV L FXqq<s)ʐSlr)y4ܷGW,x y:;f|;ۯZponleZl4x!y"f3\*@L .6Usj恪^_őGNb׋d˖!5Oa 0kS1~ЧO-j3``AlǸU^n^b<=.v;*ގ\Nch5A'NƐתRi(8F B=#}Ox]bH+x!]0 $*k!Dtr/?`ܧр$O=GξJd35uxqF7Qz {DtIoVTNw3i"A<ޒET=_p׿]u~6-KWNl:wI24*B#Wr(b﶐+U<&xWzVmN'ȍyIg밊Ѻ]SdxH<2rmH980 :;UXoׯY@9ƀcC w]ƔBf3 -#K(+o?PK0_1'|_9cgt(9¤.Zz g{v_o*{$B6UBwUmST`0&Dl0y5>dup+m!O6^* ͺ4C0pn֫7k᭺jNN]CA0'{ kl" -'DD1KiB][]z8h]Q[uI9Jp 4&>/9\]T)8@,^!O +}CFUvvG5Z|*D0_0$uJij};h\c0/t;͌׀ь-f f;gso)an-J~a~XLKlԵz )aJ1+QlюI`DdQN5@b FȞ$V/v@5y4A pd }-IЦڸ&cc7@*ad Q 7gL*>7Zv{B?ݫ!@aNj:w[Ğ Ҷ}:NgjϤiHIpH2"%3R.9 7e~Hu &}lھNkP{N( `ZlJwE*U0<?F}q!E|R +AۮETyANWƇ)2 T[hH)*!c|\3>04BBАq^f+*J|T,./ʋk/SuLUDzD=Cn ӗӭלX8N6o2P]IfgL6Y@knop].2.:^E6yT8 tݻ,HK.ӱ9>dby#h/ Db/S,_Ppz/aO8~ژh9J-g97*slrYaa*F:XR~k8$r*(lhHP ]/扲7{Wɣ]bG)Ҳ/QyXo>?QHۉZY}ҏ &+y*(0c-eZNY|Ô> ^srD2 sP`Q/f 3a3uM#EXILU:ET)ek* *mTky=vv 2gMU4vxQܿV@o=K8I4)n:߬:~qEݭ?@lEڒA9{{Ğ\1@\F:iO:< ,5Ոi |wT z*~lN] rX>841)f/JS^N垼@}jEi y{:iU?I~g:h@_7 O8m,yzy5V;爪ϕQQ\ @ʈ"i 0Q ѨؓXx`x@r[[6-8K(5e Խ##u6aPjc`,{R=Ɔ[Ԧ&qGCjP8(y??/TX@7Kݴ`G](?)f9%l(P7RDT)#۸RqL PA{LU3pThYьSũ M|A!UnTfSnD56TS1um~Eu5 6T?~J=2]5/}J*0AxsHuNH~;UG+x aY D&GQcvn/RLBC Ġ1:ϟ"L',yBj_PyA{9 <0B-tdB1^̴T6LP&luz[.,e]Ev%`x`s~~uMPb?Z(ܿmRARg;r %axI.Sj eb6&Wi7-%S'i15Nf* 9 m–a/ق0rBF} C[k#\xON-џr dKՌDs&t)]f=%6q\|l(=EaW̥у\?4+JF}xHkKxEUњrx SqeaX(.H ʸ)zaPODj{\&! @ybĀ0Ky kB\lHؐf-]Fk)r؍oh}/2 # 6Hp@ \@g0+Qj֣b;Li,BSDJTI :5C;P Dn+1/g6\GKjVp cU eX8տGgAB zXSuUc吗3=%#38q][ Ֆ/X Վi'UZ/S8.JYxab؞m4͌;>3/2.P@=A$6&oTm zDtB*4 Jۆ!xUgZEtKj:B><?+lC4xt@'mS<Ǧא>SrX6-E..d/Qd͡'dϷ{"u)u;c # U3[z0=v8I I)D[L:T)a0^6^ ɍS5B3s??<.+-yT -|7MxD*^6+@[VEFНYN t (U^ 9,1׏A*vݚK'if" HX14AjW,8T*0@f; 'Y>ޟge%@ޞ#q}Bzuq-Jz{uuu";Kd0 'ttP_ZP@O#080bPLn6'-)ftm25b(&©`; (3>ei\/Hã)fq.r!;FLa-a1[q1kw2k-?{&Gs1HBy/EyO毈u \&U\NNi.TA qvn:%+`1R +d  r3`*@_-@Ib&$P!b]!Ǖdq+s^HvnȢ:z+}*{tt URbNX裓!i]K"1hU:~` I -]}TϕʿlOK-ỳc3(4 dQTh0ӖP»*oU|W,|^u_*[t3C7Q1P=v׶e qn>GuQ܊D@X9GLHkXPhվBrm!sQix-aUQ RFKcsE~< oIa| H!: Aw.˪FB#+â djWspS);CTD% |ck6]:%;n㿺Tx}`Rxnm5Y՞AÃq(}j06 Hhұ4V4 FF :paY _BClp=bn]~䚟 INx&[=!|0*`l?&H|;!v?ZkIE-V)VkD "s%( NH2oAx0z Q9_(=Wr^\/" 53ڴpLqsOH/+U(1'+CG{}x0i="0jQ yPfIهN#AFY:廱J|" e[wvI q6O9YtA`)OTVFP"H} !n:L*^V:SF=7S; c>:gGt쿿^H84W ɫשokR Z"Uc t)* ˣe3T ػ '2 C\4)(^@ě) Ū)vo`/tM*"pݬhr94F!&9'mP]H˭q)Uн$-ub0c[(-0׎A<ƷNWLqzEĥ`$H(SCqɐve#]3[{sԴw`8_sړ(Bf/{ = Kҥjן_+ ds}j^pt.8lRgY/V}~-0Bq*Gy>\PO> <޴ hLk CeaɡÂD?Q4{q1p|tGuK,@u=Hޡu j~̍&~}ɻHʇq;wp[-hРYiikv{M&'p4HB!=̬oD=C.U-wETqB"19ƩF`yBnX@97p_uu\t%+m}z0UT1O'Ȯ9;pz NDnfD͋?BлZd'-7ش4:_g_S䜿ZG:(?䉽jO1w 32Ȍ 2LB#4a NIENDB`pybik-3.0/data/ui/thumbnails/Brick-8x3x6.png0000644000175000017500000002312613137372574021012 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+&IDATx}wTefs*9$HFr i8 1c"QA,ӎ3;}ٽw;}.{ߏԩSTuw.g8YYYYYYYYYYYYO_̀>Ru!@xuO{V|P{R?-oڋ0q;-k|{?zkz8м# N#%Mgd5vjI\.`}` @U.>Wm H1ݭ}n Ǣ5|0|O@c/ >?Iz=nK-0~>1x6xǖZ.uQqQ}46w``v'`ʲ,5 Lϗ9L<9G$ez>F` GtFs~6ȃA+s v < ,cr=s#""k;p`l޼?7U> 0gR¹xE~baV̱ؗ#OCUi.0 X8 ^/ag2$AB`Cr۶>6<XwajS PRdBt6`p:醎bJ0PSc/0F]iFLR)a?̰}P s?.`8S%dP h & Oϴ/P00dc[),)rᒠ_P1,Xe1C!f'H/D:9o) -0XoW3﭂6`Xl@om?SKTm*5~ RQd"И>0|=J/|eI*>X*x>z)xzxwgU 0.!i8~_v33q0 Ur$Cm@:08F|Mύ7E/k܈M V0LƟ4^u_+,Acæ3D\CS/y[ J1~ 0܈cF Q< X0L9zޛk_oXrJ?5.L*`gqA@0T<̀ 46SH[l| (5*@VqYBm0g<@; (E(\qhV M] ]р݌)ҟgQa! `&qn۝1>*`Z<:;[+H7kXlpJ=Xa+|Z5N%OC@sl8#@$-U0OXfKӀUmc HdhUE0(`%{//xΝ5paV' XV ]{It9ێ4G?\j_ Iq].o#$[lq24 gc[mFL$=kpHa5̵4MP 7>R> Zx:ƵùIA!5^MgMN06x[ Pj| Z1Kx- \SX6ugXÃI0UƣzDq,V)5c.a1r[ Dz[A8Lq^{V'M/J:dj|zU04Qgg/Ģȯa#`@p݊s #z9-z]!`r!u1 ?)?Pe;t'\ݢ M2wu0&@?󭅖'E/M*̆|Gg'{ܘ d,2;Xa/WpS9_AL^(H1뱑Η赃 5d!\塠xDL] ׹n2E Og``IH&kn}}I8>edY0!P{[ â>m`^H$KgJrgZWjc5v]m p1Ǔ7Ә!}=bDiE XTqSK^̲ G"8&jw0ŚHe'3\y)6)1bJ cRd؊!Y S3,# U .5}wxcEc@\#C۫i`xga ^3 dC:0\Ǯ XiOk?aƶ uſWJ+l(3dcnN m8^6z!0 0n1=F^i?Fz+m{m*x7p&kAX%B*їófTeح} X.kfpAR~&5}73Ŭx5#`a㓆4 z14<`xP:C\sP+;u&!zj 3xLoLqQ)fg >!>[1)URЀel{ dXN7VB}OrP7탑buH>R w_SW1O<Ǎ܄s#lhytsaD֥2T‚9R:8y=^44sD dzhB!An=Ekhyؔ0t 9YZ02`(/ow(jbS *%F s^8?$7)qscf_fm8?woEӂMUS*%EM\|L";94zXϗsbg}lgw+MOύx,;ᜬbݨj۞aYŪg-2lq|HՖ@]tW*2n)_TG `|!4}Ϥ*Sȡg>x6 Ry&謮BSVx-KO0&=eR6V svda0^^!$Ff<`x?>گOW[ݶTSx@/Up%JO pm/q/ge4QFf`㇆Kv|cmHn${Ɠbʜ%&3LFBk DŽ< "T+K\!x+&ժҿe3j̀W6^@ިps: './@k2$ő` ~\>O>q@[=0[Ƹc6>%YḰHXrw,ٮiJzLy %YcjAƹ̍'rhT')riN ϏG,?P'N9z~4|"*<1+BDH9o(M#waZZPҠ^aʻaLٙb%57H+٫{r ԛ(^kҵwR'&e:~S `8!1ޟHs}n r[͟TZ$b [#R7r^3vs&py T<ܲbm Xdvj^c dj4id027b~ ftN 8(!@R&1t4ɴRc{t53&g8LljHyԼI1}Zjp!4R2Rv+qwr >`?s`~дZiS!nX)14N(TM<&tbmH*l[ aԯ.|\ Q*mBu\pG\ÁExU %VАXyKݒEW7g(ҕ9:mn銟ǎkĹj^׾&#KӲv3V,tΑFS?-L)sHХ&~׫/'Pښv hY [n(~R7 +@gYa'? .(V8W-7QeYIo/,K@kL\R`JIe76m=T>:ދ7}2yຨRa%a5ޫP@@ Q#{Ck߭sNT0v.tl } 'k`{Va"o[I_*gWt2CN pI2U`㦚7%%TiCx#-|5gz4ǹiW7'X>Rk>QR T{]~Q}cbТGA~(/..he-3%` GA !ԜoH7fOJJYUG#r=1Tm&Z3ޔIvgZTwg@PV9wQV2ꊉRUz>:]EVϩ/XjuA8 3-D(4 Fy22 `6jt#'j4Hb|4X,0}sɡRe\Ny-(^n]dHRzEz6?V!׫&ԍr5{"\`?, z%FoQ WTbKYaR>Cܧm,az $Y,Vg˕ЖP*L\sK?ubxpi #XlݦI<\U+etXX2=LY|"NSuzdah1EK_,[n]H ODúLA ; \CDTO7mvjüc M FNHHx-@ {\`xDž%X-\8&, ."2F?bZƺ $2;5 ?[gg}]bm>`C窩Aux]^GO*- >V,S@l °v5=CC/'E ? +4J+ %/ WC-Y@iI*]:EaYgj{7kmm>5R2#n4aQU<_Q& O@L "П?(b ;OyB+ZHa(1TN%i%lBy2 ڈuYf~;\_p-*r 1 >FzFE$yӥs!3,tאi亞nա2uQ5+T/5UVFԸ>3O;a_T0dgx:/>Z]pVV\k|=3 ArL 3XY;#ia6㿃2Б<_LwN6{SLcŬUׇ.u`cϤ.]j錠VMܼC>ڱ ìH)~b=#;[[B ŃMuT :- XF>N^$ xdX {G Ji\Lw FBQq?qjV%~qkz= 2յҖt2';}V'˼)9?E´ZBd!J&kZ xb&Ad$Xꗆ\aw30/BF3P鑘``ķ`%fxklk7^ǒpoCb|zvPjH79n]VkFᏓR'к #L `1 (%_Xb%]AL*[72kopX_%Y8R.2<dH-DuTΉg7sšc~ ڣ)ߣk>~QQZ<=>_e0;fՋkO 7Trxe$iSwbȍU c!%L dS6,Y!4Ζ|^9; ;n1ZƆZ1^-RU؃D 'oQ~m}'' ":mk:gb}ȝD:Om$[7ww+#CHAhX"Iu_6*3ZO)S"􇁩Ghէ9/JxLX_fC:u==ꆫtqĀh #2vsLBCZGx2W IX@>!S?sg]+BJtN}’3> ~vnL3>8f;. X!0X6o>o,gY Z4-nXŶM`Cz_Ntn_GVwdžy#W "!K"f4.E`.$[NN)G"5^9BjH+?_KT\}9vyI>]+C3wǥG- n_SaXetL)MZva@=؞VV@KxrE(n>.=[" 0ޤGVY["j>wWEx,&:4⪦V-TÛ{66+x3iO X8yj-Tc1 jL/umPs3yq$zh7uOXo&@>rR{DVYZˉɢ\"V-rzp8?$1D]7wZWz%q>=H Ŭ=.]>3~RU&U?ӽ}}ݩAu^]`z9jG95Hv&˺f /1= ,>\Bq\^mJ>6Vյ N &j\HTBo(lX^eIxz4QoGS}gboܰ[4r6RGhcb. Iπ~i)(|W/]TSy"U/ˬ?+)>ՌK=~ˡu}7ʘyZ@Fo˂Qb]쒡B~1fj[YftQhTn_/Zѝ [2([$K}XV^{P|8<7 8_#sY--HR2f.J_C6BIPkmO䫆iAʃrS2ܧ}ppˈݯ\PjzF@㑗g :Ɩ>6!.~A.mƹnxYL/DZGpu14ͅ22T5/~aLJ7 7g<0ah;FC+@؂`TɐfіBMx}" ~aD^{O"Rx~0eAu=C4n߰ݎOK(F[`g-%P㥺JPmri0oG|VD pOZݱ"O)ԤhE#qL(f RuXiTD ,! P -萂Bծg 5?-w(VGWf17pVcn@7T,nE+ҷo/vhnJzig92X H`,!2.1md_-[57(~w뺎?=4nZ`ZI`}—\nnh)˸XGf7\91+Oq|-S7=ڑ~UC+;c.D}'`JnpG@tWT Į"֍Fgɗu~~)G[%H{@:+ͨo,.+kj vXVɝʵ]==r{)A|I\ٰ:ot9cĘ1|M%F_|K:\Λ#~fYXhނ,K\;7 ;W4w_w ޚh$=B&VZ>q/]`_i:v!MnVV< u9ILl"w-Βv;Ĥs/ط!TIg$Fr*W, Mp,r,r,r,r,r,r,r,rfY"IENDB`pybik-3.0/data/ui/thumbnails/Brick-9x7x7.png0000644000175000017500000003466413137372614021024 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+9fIDATx}wUgXι'! CNCNsF2ȐUQD<(F "!"UYvVuλ}uwwsoTTϨjq03<Olu^ g8v`xj'#)8@ڸH[k!&0<r֮#p@÷k{vne"hbB\_$.ծ\b OVpF??PBE:9|wMs8'oULt6CxiUl`9Y' ghbՍ>ݺt?y)|9M%O{ܚ9q fp` 4GiE3E2wq.a_HCF`w?xet-IOr9D.A \,z; _Hc .^rv^m*j_G >K@U#P`,ǩa1g<-X|!&_W *PCAE/5]p6jтC9[ix &o\rdL.HkftM]P!I$atEz4>i70*ہݬ⌿*oW>` F{DؽCy NC8ĦKȑH +dlJHK൥A&ސOz@ktObuųk9Aj[ـ;ݩ;L& 2(?MUt]2vgzҝAV0M@Ѫyɲb{RR'|q({hc/b6eT@QI$tx?Fj }o{.\ *F<WpM"=AL|e%jgxIZqSwVҤ*W ٳ`r3`:Ӄ39EÄ"eFwڻ#|9B! >*#Dv7S̛rS%=G%yxv74*@Y o9)TtiJ II9 U&oЙ&$ `hG.xJPi< F,u6 ht]6 AÎ42&\%~i#D@F[6b|slVŢl'F"L`ӊBO (ݳ@{Yl=exV 5ZzsǶi}5#+2eP0^\{P#r**ƵflNwh!c6nW2>caskA(.d@(6cU<`mUe ֿwCAP!~y£/ 1*RhV>cҁ*cZO銠8q2/5M4Ʈ~S7Tn܇&EƠp_Os^EtυP=dppeR^HT7ݾ_xDFʹЋ8W?|N d$!܁";qe$0|zI9{9Hzm JSߧ14pX=DVA4nn`R04o"ݫ%>6 uu-R›1(pIBsk1Rq_X<@e :&Tn 26t_2>z-.ħ%ۛ|hpA{2MQM“P!b<`q{I`(ilxp20yxP3t$Rc{Ưzc#īr2 G` uJ2bBNy*Yx3WHAnc 庪f\'^j ~f˦M]4!` :eU6E걢jd%P%˜2]N.H7 T]!(j/q3wtMbq% zJZhQXHg:1Se2HGDAY*fʻy; S`9*} =m5`#^^6ejnOIeM!(.1a!PQB$![G,tjAL9~/FrݪBѣSE$&bW&Aػ+1~Dʠ Ӑ=b< Va<TJhKJQ@"t80mMャP;navJ[VV3rBzSȉs7Y7..Qt{`B8ԥGwo择<5!ѭߤ+_B]GZjp,"g6=z. bVT5ሟ UK2U Rg[k?L#}&T`@_`жd6@|R:M/g+'BEp#L*jbaDb]h&|a̲c,7Dx. qӚZ1CY#nŵ!8ɠ+UtPe֪Wdd} f-4x?L8XƱ4x`-E7u}ye/#0^j˳@H`{жtϺLw c951gW:ܽ1>סYkî=B  l"а1YdTm>5f1j RJ?aդWЃiC"B4b|y/+ }kOAL#L` ؅?xO7)9zR?+<åbyAÙ_~U e^[X}=g^<5O̷ɽJĚt.xpjh_dCӒ4Wr|;;V  ~h)0-{ Ƚ!0yW*RJFC撱y[Y}@M;<(NSm`,=O8#)΃bQF~hC}#!^Uլ@N|Y2`h G0|d @ y>ʽ JO)&# L8V'A7][fHpSƻ)אSwƋo` 8LK`ADJazJv*s }mEWk9G{C|qH`L4{?R@0X,҄R"W ,: 0A$4C14[pe@MR=P+ PR:.$V%T'QCLOvS\ᱎ'x ޛ X #O1}1\ |x8@ѡ iwbrE;pјw6[` b+Ĉ.%0BѲ= ЅB&e2|XmX@Yɽlu4 6xj#)`jf<~J(Y$F+RgN;.SݗsY[8'&^_*|+_L}:;Ŏ7g..Sv!SAFϑ8@l s$?Jg@yB7&.#ohŸU-XUU3mͭ4mw;,=νRƳ?AjT_sJ`+X0fo_!!n<ڐȍ퉋"JLO^3XZ9OքVM![BF &&㤇@h!p.Q]Ą+|ɩ!#-NJ 4 `PStW1qlHwχa! ;23L&>G;Ci^N󋧉oRCRX8r3Uϯ&7phsj?S"mP0H6q *O+NSvF,v"b:K[:#=Q {GTKe8 U)g 8Ld^iA#@nf uu.Ac!ܟl@@㎴1zb'.F`*^tOF]Ԡ!v^2W/h؀A|;z@" i⃗rDQ&n\W\$"69>q:  FrRGNT! X S Уelw;HMEa NB:N!".Ŝ""fߋԼV8ñ1gGgz-pWx ~ZrYNd!"S6w!ל&P}΄|+|r,0SM^Yn@XWO~QcM#;!A!_l -h=6_p;܋"ׄDB64VyCZXuqU3=O9{ߦuӄ"dXzHP`}S)+x\F#qfʉ]P2_(q ְqꠈ dl Qi0qt } a x͍F3DhUU1aB.>z%W\ (^7/ Im0jV  0^iud/.S@gLJ!xh;/:Bz%&mdۓQU5&ՍeLt"aS%xC `q"|U{<޸<#~s8:kG\%oϋY[6/~#WԼtL۬ZˤBE`wL oT2",2l"I-S$w C{{mCZL/U#^=;9=nkCB|R"ts{I􍷆EjYKM]h]{G"U),R9=a@H} )fCBii8)LQ0KL65wY0|}(a%6]b֚oeP\1+ 6ec@)\,'n'1umwEEl/=q*| 9qq| [S?kwB ˕rIPw~1I@3`]J!"Gtf# @V/D@ɗ-7{u3zl2T/aԙ@tOe7Hnp%xTxX%ʸJdS !踻 g$v:: {xQ,0dd--FeV@FRzK*kspJ=30 #0ʎD#"J|_vrWHai\>Կcf}\ _9>|CDu9"N?c㚗ĩWsE2C~v[@]>`pf8H,/իCDTD;"(R=\YӂJO% .O,PA1aCA1?>*Uji j𞨬>Td8lBw&A |L`p=az,1ZV< ҆{@ti|U*H1(&/0Z1߈I7^/z'f}e ;[xKπA.Fǁ@gK3C:{̖9%].y S/cF6?[JcY>o^跇XP>z(  AMp7~aEeE59ˀ! d58 P2i2"ȀaR1 ӄguKM w-+^a;s("PRҊdcaE|k6^7Y ҷr~l:.~E߆us]Ap +∿oUT]1dDwpF a=Ťu^?ZPg̨JA@ \Ii:@8bT^*S]3/@&?>*}3GyYKKv/۷vsy?)5y\x0//^,(9qRmMV8B@\4L-&-V?3R#n9%b!~_Oو#2(:,6=:8oJh==|-hrGTT i7JyӐjXnL>E'^DzyhM3D[tWmQ]c)sN lz z{Ͷ,3= atbٺkn\CJϫf"G;}~X2K`pb>q?wc({^ F#M|ͭգ%RCB.G #wՉLFR! ܈JBF; 0@pk)y0 }G4lk݂ >z1L+@$/>=+~I<8_䀸z_EM6kXP)redU04SY*o'=`08=>My2+&p痧yǔa.%~j.  *zqTPg9[;EYuj mP\V"=LP $Wo2D1@y+Y7l9v K-r"C): BvV ?/;68 DWd];p>_!P\c7bTp gDr48yOkcN1ƍܺex_'QZF1\tƇ҇MN)dzx[boP >J }xM Ej>0Nv+Cr[Zm`B::" E&W@4wvpfHi$y\2 P%p∖1(P#>;1@ȭGC.cǸ/A)y;v4K՜SW/w Kn뒍!`pro 9%.Qѳwf!R-3 wbb~N4~ؿ+w[_|P$šhSd?Q?Pmɵ//}0͍>i oKqms|AVl<2ƯZ;a!#se"Y*zx" |ez]zT0Ͷa e'HWSϿ2/;`hpӜ,Oę?:@l ܺ,ȇBNӺ&Π@mjA >U'.WN 7ђy @iEe\B9y%Ŝ!9*w_MlO33wj"2p̑cpa)KW?{S(w_J`N$x܀x0}@]4ɞ z. DG{l-OW?dEP. i=|Jw0ȅQoԏ+mZeW Pj[wOB]_(Z6-B+$]:Ƶp"oًcigUBbho޴w4_l3ʻ}EׇT 7;@mNB tKo!7F\1ܜP$8$(1pW4!xJCϗ#<oT*]0C G9"SgQh%v=$Qt"ˆV9MyN 5J{-ًv/G>v8kR9ȹ2f&n.Lᡣ40W!.aG -|Yr(T/ZcWH[ϰ+‰8P&F3 *q`j͑2 Hb]%& 0SM4Dñe@ـϣq??DZ0H q? SoPx'*ƜSH /ʞNҢNӸհ#$^*SZrp/Țd+\Q@8XGl`<8+\0xk5$Sxg9z&' %)hh0?;k ܒ-2^O:ԚN2J T*Y%?|4;r73Zt u*\ZJQgV$qD  z4jF׸Ŭ(n|EbXCo}u~` ݦVTAr-QD!QT\5TƏU4.J!%,5 Y:ӸjL@\C27grZ/DgC>^s.4TW6.[#\N"L7/6s|Piv-b,[+zfܞ?4&\?.1?."ǹD-(qE7_֏۪εy UϯʞTF*Rsj0{ ľda:|x}SǡN{3IeTaϦ8F.WVj!XhJ* _R?] lG9HsEEum;7f-G I KwY^?/CUUg %{XК*@v%;c('/BFVa?~(o{N B{lu7Bլbk )|qJ޸8 Be9V"Fܑ;4QM>ڼ{s3f 5)Wޘ7(Ʈ)<,^wXvN =TtTq|9WY>V/zϗ9/N0}Roӳg i3Ȍ 2# 32Ȍ 2Lz"vKCIENDB`pybik-3.0/data/ui/thumbnails/Brick-10x1x2.png0000644000175000017500000000630213137372617021050 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+ tIDATxipUXY&!$HBpoPYm6Q %ZRttX5#.MqrET+:c'֙~Nsn\n_0χg?Ly~4@P"E(@P"E(@P"E(@P"E(@P"E(@8?Я4@M,z?ESew˒\ӤI@eH;z0vC&@Oţٰiʥ0LyoϐE e<h޼>PK' a<cZ0o{u\bN,9_(M3Q7t҃. 0r+72f?Lv}۩Cnp~kp49ZO"wD[ 1)ޔņj,1fosK֯5<-a H 1ۖPSza 5}w+pOߖJh&֜s^> fW|o@2&@)` ߈z!nY2_yv JF'IoQ0Fp/Ŕj<B8FCEעPE)?4l',ۑ2a~ ּ:B\dN)V?aPM· pr>* Q/\33?PE; Qk9i $ HtNG+XwoeN"ANN0LG3V]7Ī*JtM-qðRwGH @I[kuZQEf+ k}z?gp_Y[%m]=mXLPO"ZII7י>4%z)vlS|?e4`r6X32j? (l`ch+&I[9^kwn+&7>g'Db7jDV"EN_|߅(Y䙟/f篶 , z|2[(c O34u<WpJO atFc-eC'wCjF[U?{aSЭkcB/I;^UG$q7I4QuŬ!S̸qB(݄N$Hjaz+hWoi#30~,xv>mx>^\䵕O'H'1!(?dHF[-\6oHrӉ!Po8e֠xoPQhAA[WA (yJZ*f eTZCu @︖2rCcNz@l[ PjRߗWRgm\Cd 03ښra pHYs+5IDATx}wxϟH6){JoVDA"EzW E "B H JB J"{g$j >}v;;ٝsyO{ģW:YzJPzJP:KP:KP:KP:KP:KP:KP:KP:KP:KP:K$1gLei}FH{Uj +KV}]^<|SH}Ek2xAdi|䲏8ߍρm @ _ODž~ٜ?p'*_6Ӟ[O⹉̗o_7[\aݻ_~ p?0}Hf 6FXa\%Z0N(Bn'Pm|Xqns=1N1ݠRT~|6ڿ46Phz=+V=_W7ER,2~f_x0(\43"aǂs [۾^B]|kh u p"""4ËҠrejS#rZժU2N`G~}XcxQvj U Mւԉ֊_օ#' W:)m gę=IMF?O:/pz@[~u >U&.V4ՕDŽ}RAUdAHUz=238s_phq@R(hu-D%SM*Ըr%zbEZ (F<6ÄXTB3naaaoJVV4˰SYG" Kt>ߗջPʕ+.Xj5nXh2ad#x`q` +î1A_\iuP}-7`[ {4V|UX&pgϷ,ugօ5['+u )2  & '8u 6sx0} |nTꫯ\sN ^*V. X>\DOBZQPy,1 y.TOta.!fDqޑ&bDجth1l!5Qd4w9pqPc%bN.RII~B=c/(fVBNtUyHh~^AgjZveoصq+/2ݸqC.Kߟc,PrvNxHx9%f0m r5JJ8Ms[/#z \xW&|, ?:̋6 -EScX$̜;w. _.BFΝxn =?ULDէg"?ItQ9 YP`[mmy@[<3$Dy%Bg\MQ.X`M "##t-z!N [&(L~6/-X@A;vʈ#C"LhѣG _.9 {L7x6D_;N<6^N ደ4Jg;[Vj+ƞ=@%Q>ΙPɏ=Mgb4Mxoݜp32=n믿QFUެY38p$G:Vi9P S:xQ:۩]H u q.)Z=DmU<1p 0~PLf͚TF ^T4x+ k$TP}}`K!e0T{cYc~9F`MS;ӁxBHq` 7j^ss Ǐihd]& q !@ "j0Ⱥx.0wǰ *,=e \_z?[1$7zܦUc;CiɄ07cf-JRIp~+.$83gθW^= PO>YU"b}lt}BRҺfX $'!-V'xsr ]6Ov/z\:)&!h3|n=ƽ^mڴ~^&MÇbGKxvqܦd`z:s%W_,q=n4!zov>vH[%^~oxd_Ǟߵ _Ӌlٜ Pnl޽B'Ov׾}{4h9s8!_XyѷG*_P(P,EFɗ&BMtt^d[HOc~zͼZe37=qA34sDHVu>}SP"駟w,77Wfac;ӧX﯇fˊ/`:i%ٷx %|wf!0!tI"2A)AtT56{ǻt"M{/X2HRzj I+l;r$ExVV 4n"]?p$ ȝ%—8e#Dp&H~_sBK(B;ABUENr 9cC\? 0MUi,,vVGp[2$pr+h۶-͚5K<߸qX#G8"'" {P<.J{@ڍ<1ۻCt׵joaG"4 tk~ UfF8±fO4p2h/T1c6Lk׮'xEr(_)""St2--TE,Z<>\s+$`T:t /cpi&Y~&Md8,؋VM %SW{\w!;Nn@rbqԷSŮ?~A! C_w! TlXF㧟~^CyQ[W‚HjCeǨqjTF aU8 u֥:uq2i d>TAVAVALzRĄ{/"/abk;?i"vźg BHq@WjԨ=4}tRǮ]D~kϋAdgA%#BAdO_]!;V\U2<֗ejo+Kmm/Sz%6Z&Q ejBTԮ][LΙ^ϲHiQ= C1 [;pP_|Q8ˬ]$y'l8D)Lg/X >B 0u z[<.sbMӽ:7.D#C~0X`= @Տ7Ee?eN~֭w9a8d Ce{b*S'[0[XUX;by_,o:||SggG;tkڏ?w E!L?#p`,ʆ5rPLKKv MN#rt҅u믿v &Y[NIN嵒_U8%}V7N=ﻯ3(hQ+$ڨ|FR@7seU\ԩS._>=/+B6V8I aa{ijC<|Q$A?QV۽#rݠ% .|^j¯Zޛ#l06m$H89Z M{nc0NXZFmV+%ӸO?jaܻJ L",O8n|O)L55LWweFPav6HK:׽{wQ,@zW_O B>*RRRDq 2r&Nʌ[x9Ъ_djs߃SxA)Ds7D1A5i.G5>|$z~I a&|̕r3,X €`1^' hd0q0A !>b̟?!(컘?Pr TXA;\wc.Kۿt7 d$}^ޡ%}٦=d wDFG ~f`⎵ݺu`d iЁ "Bu r^.D"\DZr nAԶ'yoVMEo=aTD,|juf K_6Ǒ:V=@-ENjvl; ,ll+={/}ATXQQFx4yf}8 (_}H2ǃuiOzS\*$XԆh?q tm+}oq'Hi¾I&pQׯ_/~#( wcS`'|M`ׅcV6]J4|:r<Vgh 2cݸ4d@xM @ @(V&F( PW9P_|!;vtx1@66ogqy_/O NwMHnUagˈʏ^`'=ÃG /po3n=@ԩlR0zp DpY0XIDDx`)689u]13Tأe46螮aq*_ Re+4A"YjoRKC}ѷo_!|Xh!'RÑ7( x|7g ! Kr8:ak"kX>"z\j9+]D"|{k@n"|ouq _n,JIz)ei.\d xn?qXȕN7O&A?wM!M EɴW^d($ʸ?2˾B  YR6d^K<(ӒqV]C{j%.U2R] Rv,=-3'LW?zѩ ['Y@7CC; LPDBAؒ,z@F1ޓBV)`h !͛Ee=>a~Ԍ\/TsO9nGX8g6. Xwoﲔy([Kr]#(<؋Rz6Z9xggg ?K[Vۅ8C,<9 2 l64!@`?ߍ}y y?C{k;2x/gl-!cǎp~!FCju?o-Mjrߧ8Ӯ޲'Ajw!~h=qOr c>p Q>8y %DZك0l3 ^V K%@0e;z|t5`|W\c#(|̗q~F$24Xve+]=̮Z7bFI #_ț=Gw:6s>BKSrcG\"gD@`bB(Dlh1m}xs2D|['m\/=esnRgUH⼘` owsG/t^?u>)} OlO[Xi`EoΝIA@X2a$g}()dHb0"al(UdpLzz#qDZ5}M{>fzVנ?ֈ$N}KۈP/)QS;bZǖNվ(D׬)iQ]V W {/p\\CnP"rI!41$T6Fhkl>6x`<]=@/>&Ǭ_$.$±Z:7Cb€7v: 4=IKoZ~j%o}[ w߲BK/AnL&@X@3 ?>>ʌIFnkDh [cAք{CfWO @ٟoBC4~fAC3T)ghUZ㻞ݦq'9J mDsZcRn<80 :oqk L!SH4 ۅhr q *f5kfYü#B)9BD[7uyQ[M]9Z hK5~_n0ItGnY _B`("xYe\=(!0lЋ6iQ[Gf{!b lbhf5ȼr(2a{H{@NQTcKQCm!?%g:Y,ki?%(^C- J9v.xs /v\zu `GvYSItQ-~[;/:-xx['7F?5_/@=(1pRj"'NɠHJGŮS5Xx ȢE&1GD"|b y ]>CS \Qa^^8}j=wRE+3)[(O"Z`vj}&n#$5\pjc UJ Y>pVk.GF8ND't 9W"ģBBcH5}Twq0Cƻc~8kyv߬Qzף6*TB$ҿ|9(hc/Vq k/r07ב("#A'@`H#U1-?@ AM`_v9-Z#8xA?FaV.Vz~9OWu/p 1xJ$0'L+a>C07W8x 6NF-E\&t"Et|WEM"S6B^bHެ1z._hY2 {}} ٿܾOV"Q=D; FC є:v7AvBFH4Cw. r_EWŻ3Uգ|Ǟc!#\1Q ,$߱6xJ,V BDH.B$x>hgh <4~|/J??OU|DRncs 4C@ŖG#R.>xpY毚 & @BCfa$%DAeDq󊟨3CSHhX聴.uk/` nWo4-t0v-9 K-bdR*dl-;!/UpV߳Yzhy?=sڈ+mwO-n׺XsE.ZDP܌8`KB8p#KOٴ] R\z74d7'<+}>DS(03YF3 _[6)JQ{%{OA!A0C5*F^@a.ߌ 8GhAGX+suޛbC{ X52qbRH lUfɁ<|.H¿L>nTuI ߊnըe|AW s)fF<.;0 hhXFcQےSxF_>y3MqcJ>"E4 Q&.t0 .ti:Z&DӵPq^-WШ[ck Fff$s7 x֭. !!.Ɣrم @$a"`/nz6-sޱs7o 16qk&vj-]3/ @_x=ː!n?<&5'lU nvykwX8\Mqt_%Mh`N:5m؅ 7JEdǽ4<{ a_$2#,lfI~d 9& "/8Yj,pw%w憝;SNcp9{@5@ S'nKɬӖ/_=\ݻ!HQ)bjz x GϘ75_ dYwDjG cuh"%8cNzj(zxx`}El2%o5"c@~UJ^i%%sO#!_Gu1LrqnGn|իbi^0e۷Ghu SuH*5n%Hr2g7RZF!_v0{ :n&ЗKN B K!%J@3 {D>%a" xp>qTnN s,--}ԁr2_ҟG!n_|v' 2W K`п̈>mE!HI ܳAu ] !H)ÊZ$/rϚºCw)$Cn#>ՉN_^r :bD,G _-o= љС21  hY<xy@ 5lґcVq.xwxy ;{~-R #Ьck]);)1?MPIENDB`pybik-3.0/data/ui/thumbnails/Brick-8x4x5.png0000644000175000017500000002326713137372575021021 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+&iIDATx}ixTey5+ h@A$ aSѣmZFZ1jݶ}ctN{{}R<{2׻z׻WO7{?9w97s88888888888%<4sZck@Po99GCk<ĸMw?U`8<[ a?3񬻏+LǨg?N8_$].QC!Okm7589~m=n1C+%(2e~ ]7Uv o9}}Ae |b!^io\;@=6Bl(z(6gp Kȓ 󚦉w`gWɀuXx1~1z,@9EBCK ez !*7(Xz1M_Hkn Z--`=LBdPE"C:^: ZO^}$˾SE*uMB!&0"2;dM~d|*}2ȵP0ޡ,(_N^@y'@,=kWAq~\$bW 3RYM r,}ƞ[9~ax6<̊(y0>}/K!!#M#% J 6:D{-WƯx'mC \K)-92Tw1Dup6*2)RFD|kdjYtK(f24Sr"pHDzt'!at0UT3TYˠ>A 0pH]BݞLlxni7ul7]''ËP~Dlnڑ,6ntOޭ2J<6ub|Lz"JuRW0tO}5ZoyR(jz7N㏹B!oHYl>ɰS~"_uT?@xkY<"8-2d>ƶ-h:"CY0(tm>Ju* UHwl;!IeGڕ=$ϚB[`͞@Qb.(.rpD & (0dאtBB1IZx}`@L %;_}/ۼv݇g T+0JE^H#{e^?'D>FA{3K62e| ۂ 0T(oc Я חȀv `x\#Gܻ@~zen2cze&%L ㍡Dy28:af`}F#QndjH1oyrs8io?`2* !A "X(`T]6G gy^UNCEmd vcWMd"{+iƿ=מCz>YIqg[ʃGʚOrP@`8˻4q4mw)x᰸*:Erg SDG!CtJ(nD7U2y̅l*u32GFOQ^|f0)JO[aci ``s"{%͐zЋHt,1Ǹ؇{ؿ?7 `Gr;J́z#6{ːE9EaX KN3*8ܻkW}Pss2o;-=x!oQf)E p+SGN>ls+ɮ'CD22\ړ Wa]?Xg--ދTৰ0X}oG-tA5o3;_b`$`\GrK,p)v}Zc8x zŪ rt8#d9pcMss Ƽ\{Ρ00d@dkj4ɽ? a?D璴ԓy}(vԇFz 몛su )h&z~3y("=I@F<4t1E%ڮQE͈;id8`Gx!=n2>Jtc{(T"/ᆒᦫZNeLI@$B R*(g\jaC`EVS=nL A&uU^l4BH ϸG|%~bl,©HbTƜmW}l.,` @ŞU@`| /{M[{ ] L+)ETi-\Ld+ HPcg]tQWG)9EMA ȑ`e,EPc~B<*!2Q\<<ي CT)"(ȕY*caM% C?^ D -E`:x8 (  "9L؅j52 $b+Hi^|!:U؅iߐ @Í5|qd0,XBk(JwdȠAk^F(-ů-Ks0<=5yB+5mWCm} &x5&d+dI8E %B% >#Pa=TDC#7׿#.[WScWU7yGRnJ5ϓ0Z $ҕ>|xiV`-.)'ўe5 a4k_|2t8 GLUx0G6nI։  @?<PATU^*4e.D /S>;6Ģi>1Rs {7 ÈuO6|U%.&P =RqP*a0ڣ:?n5/PL[G(`x +Hƙѭ4>˞:?RJarоCOXd# ۭJx[oeiHi5n@f=E) D-kSZx-jb2ȒҌIiu}ٳ窖1sZ6qїF*%>*a^ `(Oz*?Cޯ7+l?XT#ǯ^n:.20 y @Jzvq b`N:T ށ72랶Z|if͠%1y(YD\`-VTqg: bHD(T"z~b6%7 n,(>' {N].(-#B<m*E2Kyތfq\ڤ3@3yo< = dL)/U!΀Y2#1HVW1P! \0QZR Y%#dtuظ8 }&!vFtE\|k4- Ε /Ktބ"q7viM*L> 7~M?* WT :v0j|K 6/Mi 0@cQ\VtF2D7vFAtdow(,3J >2B9ȠS`? ۏ$.qݺ~ }bkݢtƮnX@H&G?xѡMv'mZV^PǚK% /T*,#[ApTX  u!~S.>{+)څ~f_h\lYe A 7 n0k|Q" #q?l B<j_\:# +3&xŷo/<,D EB 4ʿ RM vC% 'L:jrnfXNx4"[\֟͘yT"`8Ili , zX%EfGP%I];/LIc<_} Qnݦt+ƮnBĤ-zZvw`pvZ岓valcGDT]Ck|ef>]~N`;UL!Ȓ@Ue0T_u ]D? oL Q_<'~?);}/%3WMT'tu lvwr" y{3tk( /y!xMdƿH=GU*A[:0[繅pD2r_#KJ)> EVWl,)t |"廗o AR(Rh!wquTOLK;5n/k- 8Et0>yrM^IEu&y"S(pNƤg#V߁S5mlDi"[ ^P(*ϼޒOe>>W X$Q*Vn]>?)b@{8?w üQH7a`QsC@$mA3Q2c̗bبPtm!-˛PT 4y?b!Or O(M,&e<Q_SxsgUKoU@kEEairq@puPGa D",1jt6f:nuف tҡ (.qH^b]Qq18~sM}%Vnfw&0P28AVM7qT%,BO`Sa- `dW+CuF{!T> x|h+ iR꥟w L|3)*NOЫ# {zSuˣ_oh\ŕ.)CD@$ݛxT <={S0a-m[) 0}PXrAx>(}hlJWKaeH\1ٛiuH&% g%bH#`㍣Nm}e[C)6B<͔!F) UE@ڲ5(}S :DyyqΕRmF(г6z } 9]h;8ֽ}}Xܼ&~]HEuWb]T-|K{W7:#u]gh /'bm̱"I{`DuV.fQ *3rD r4S)3QAX3'0_NjY}twyOBK|uH6~paS>g I!,!0cĬXsaZiF<-B:=(daȹ(‰2V.Y:4NQ21?s"qe'/K{c=B =;"H@_]t6~^@U.I#kYxR BSM7iKVHa%,uPI|%&Eˌ P*2k Jd@@Ie N\d_2!86,4ſl&EbydIa5)C_Zɳv B 1?& TuA΃ܝ0 gMl.ǻQ ՇXDS)DS|ԧE!8/ؚQf*20tƽ50>Rxa,ѬsmMN@[ CrWj3Ief_~!?\dӢgC{aFcpN\FM!@=y` I ARJC T"GN.2cT r|ׇx_//~Es홺ߕ{Ok &$[؛7ۏ1+ߠwx78*% 仌G y#RX4 a-!E,'TyuP$;w牋!c!Ϝ(!8Lܧ\q) y?}pڴ$M)[ D=Oo1Ple =E>yv(*Cv!&}8I`;P9àOwV =w4摒"Ҹ&MLZk BYC7pH,g Xc-^~/,]N;L[k̯nXm?S(n7! t.VODJ7^&yqJ;~8Qg@/y`" 6%B`X.+B&;<\lm?ȒLϭbvj7)dܳé?~Y*fL ߯%ӱ4fDn`ŝIZ %% 0Qb bun@uQ?xcXMyV"~q?g=EwՏ[Ğ I_Ccd3<^pF>}5g!@gFsoXX]KQ!M4Eem+hCM:csl=s҃11a[RO1@ y$ֻe{S˳0R/^bimPlXqpA~%߉p.=~ <o CKԻD8*+"Pwsb/K'>xCӂ;1Y2rt<:a pHYs+4IDATxitU8$Ut^tV$ ! HL28qAp n#,GhYD*-2λU޻٪PW/G.꿢@@EPQ(T* @EPQ(*('@ gc,0E}brZܺP^P\Vs '-FGjռGu9d)p`Z@[Woge2ߟ)'IсA>L̔b$UT1Fm˩{YY-SIy3{ M0q}3~y[w1D:o&e"Mlw/tmXɝnRHBR*** (atI*}zf?FXYTiJ0xtVtVZ4ƿ5[(!Vci yr77._³:({ Ç&@@r}25KVJG\D"{ffKJJ ŁZe5t; 6% _F//pgSaժj @0YlV iii h$y2 ;_=I |f>% z @啔8hR zV+dddAx(<`xA̟G+᧏=Gdh\G@qCłz0 |T*@ff&X,aXL`^@v3X_QC28`_Qg(iJee*C]&a a-€E#F\8p 6t: : n0֯RY[@Qe92^K0L&0 0d2nCB~~>dggb~u35u`H=䱿KLuIv8P(|t˃B>B` 6a/QO2Gm]r<"os$e!n"d)TK`H` uH, `ذa|݀52ψfax[8RCz#C6xn 0d4 X$$O2o~!ve*4Ճ{.inB \ÄvT+\IÈ#t7 {(h^cAVuD-&0(A?@lp:A5j.U; _`,Kt @( |1B aC/'0+@Txl8a0rH4>Kd>j @‡m"2Cqa}2nK`7o NfI]/Aj%h}n~x4ZDAx@w=+ H_t p|@>\EEM!$Ppr-)u@@+İh2.' MlR fytB1@B|/1Oe %UY yг %ZpbGPa)A8]`Yw.zmhw$e>j@c0Wr1E\A-p Ql\mHjq '!p>v<|g'P`C@ )afXմ !0 @O@su EtνkM~6 @wCvIDjyB+W6N9#$&Dl'S`LТ"@jG.Ccd"ip$Nቻ #޴ AxnBht"xM,Bx\ߖj(R;C!i$wF+B2V3Ip_I- t !Tդg$i@ $wƖt a`* C9p~\`{$}zbkz@9WfVR5cPVt#vXp$v @jm^GBl-@̺?۟sN wHpw v[s(T`Ȍ愩ܐ_8@ xg@ǂq&I : 4x8Puc-lq}  ^ e[2*XPf22;x9NQ"mo(e'sh=`"d)gpn|ˏĂ??@5.jב*ǃM 8s}1ζvOMw Y֕E_|L4?棖6i/څtTHDк 89d~SL#c1)+XL?},Ϳjj|?|K,vG6O܅pʉQɮE"^ "~@#z"$*@MsS F0_| +P ;3 Zw ķw8CX/`p!2 _6(q,*=\m *Ӕo? @8A sxG8Ef\nd%8׏u1aTE7Qpk wfOԀݦp$7+Kp:fs~7Hdϙû`|@Y5I,5g@L1h~xWo5Q9e4u3]I|15xMLYYHNNv-g/|SA! @X9ah_NrI Ռ+R^!0RxY{\:i68/& h4n=cQƌ3Eߒ[Dx@C!sc]I\".%FЏ;@Kye1ʌ(N"Fq4| ^ Qgw(T`Tt$*!+F) x'ķu|[0]H !}5!,n6t N]OB7m6K6x @;خmX1O/N:s Ƒ7[:4عuv ;|*|<^sp͗5Ύ к2Nir>1=ugB~~1ɸ9bk}pt>Fy?bn@@E7yv8)Na}#ls^bx$8M#+G P9s41`3toc_V P]$/{ tmڱLPA 1 2~DVʋB?!h;j'C0ɘo3܂Jv7$#IKٞ5<~vPG<^0顀Măap'i6cdyOTopfy04//ߧI6hg4 3=(osy_;T OJ )pa҆Fc.I>0n[yIz <q~ O~+\ ksM[~}wPQ(T* @EPQ(T* @EPQ|'d6߳IENDB`pybik-3.0/data/ui/thumbnails/Brick-8x3x5.png0000644000175000017500000002102013137372574021000 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+!IDATx]yTՕΟ#BW^M K lllbT[pQdYdQtܢ1db'9Iƨgw}ULl]֫w|t]?;`6a6a6a6a6a6a6a6a6a6a6a6a6a6N WX';,ϭnE8qϡ7`0lb0, ykް`A=|k]@ϺZSюن~r׾zNsl}XUE#̶t/v'jak<͙`~i{Oq@W;ϣK\N4p'u&)C|Q P  faeW 6O  !C&k7tU [Ǿzaϵ6]3o'2g;Z_~iiP0xh6fm:MC~ ¯YuO\k_)JFFr8:  `.sS*YRa]r~ g3CKf -Fbo:('qCY.Qg|l}=W y~VA}=H,mϕ RDn0({ Ȏ ǹPV aHy|F>Nd}S?N҂.u U !c!6 E_bЕ|.w:ia&~0<%|wc;5$xئӄ̀)okj(EZSI~!w;M&Uof-z%sMbEŁ+K U!eګO7>Sm(a.b.d8n*D"<ԯ*b@tK? b<3CE4"e/f19 ,F􍕆:|J{k<Aش Kcr:*/['rx]gǪD =˒[EJLg` ùq\eL2`wgxRAKP2\ ]g۵kz~օQ`IŊ+b7EPM}2sΝ`^tC/>1ӬK@C0-e#ZAsL_#i_c``f9c \x]݂\Ό @3d֙ʟ$]z> ڱ/8 w'As_ =8؉|1=\lc<~</ݒFaN_TaPyt-3E۝@3(!پn-Bc(2>,ϖk\N=>ߠp4|}U[m^jRs^l B{A-spfIG5'0Q2ςR:Nb#JJpF<ɵ{'GR~zS{-u uؒnaCỲf2Cw>Ol ]M)}ҵ.*b'ocqnb6M@s4aN>$7J[A]"pJnE(p,+h{@>>> 0Yn} Ľ >~m u@W(w0hnP{mIlʴ^t3`)"){b 3T W45C1 &NZ_A[Rm 5V=ϬSG9pCRMu^ZvxU|_NC+DҘ6$)E T^W>r񉤊:U 5 >?; hi6ا)թb Vq 7}{TrG;h8#/?YHG;òТZ 0]C 3d7D,ʽحcfda RP<() N/[gU`:Ic?1yHPجa%&ocvrP.jWmdy^#O)n&m}SMK@zwTBŗRN!*/Q`+yp`@,FA`\! {W랿s,lG h8U"} d/72e(_W~ ߘG]R﷥r໔9iۣqGӷ4DW+Yv!ntf|R*;}<|F>CPcHT'H>PP AO Qm>[VCnQXL@vnfIe(=*B%?]_|(.%:Y~D@vGkS J7WgЮ?нu`tUld9J+ #cTF?\h><+>ԾsnՍm]u|꿰rWןP$dH7u>L4EThkXH[ 7;9x0 {(J}㢢>TLVwB8Zly1LMp0m@mm9~~UqjQ.NG AD>;~+aj KqTay~넨#cc%=wQex T+8:I{qբtzzAiM{"2= >%Oݝ/ ݇c5 dB';՜8_ 칕kZEg!B%Z+ @ObeKW.ZS <IE+`|/UI؄Gˏx y8GC+7k\~+>ٝ'~|]W`">xؤKe PYajC?@IJ33I.O6 X`D~ON>r=+ [\&p\dSSN7x\a(y"K9mɥIÕ vus Zq΃4[59Wkl!CW)V6"4`>#с@0n[y)$> ,q lFtHayTaM]楢|G{=͝_2; 7OdnE`m=V5j3s`&Pf+P/Sc4K;;XHH6궳%W5h-{1Z6# ~KxokYꘖeW_+P[jJ+sCʇ/b+N+<RD$?,)UApPTeg K8NJ>?ƿbWEߪ!w6ڽ)#tlS}KVupˣÃDs({`;9at ĉK@O'SkX̠ޚ>X+=<p67kjfһ|MH%۪kP/'xvXY1`s*ɄrRIFڞ JW`B%<( +aIcpMFGe_,7ʥ+l.MU .$Ow( g:OSrdΝ߅sD̢\G$ R,'FF!%B:tϜۑFW(@>ƥ{'?|KnǯJ9T5>;|Z}0PS2(-\J-+㸨[*r1s_G>^BVԜo=kcU00R28:u~/?+* 3GugShTAL~|ڇteu {W;SIs?Fq=>2 ʪHY+`kp[9yk9cIiC b0=t-ZG (?E 2x)}"{D?jvN`ZVY -0嚅7Hή>@WY!34j/d,N`ݢDzѿVqe[rk ogJuOG${;(0VmTIwQ#. wU>S\ۜPvV6e0ȫ v f:WD^O hIX>Q.>=H!}g=R+1D7 i|!=+~Ů|]2M?ݵyҖgOtpHI /J֌9F",Z+ym}0Ft;t腮5gFVjQtw IsXa ܘt:v5ܧ I/Vaj)2f %=ܻ}ޗNRQnWn/4OBQ K_#L u]ͨze2܉V@ǒ++guݿ%p`ڲjMDm0amN`߮x4x5/ Ľ?~UK\vpEVxLLS pߵiXuK,v@i`JC_pful u&{v.-`ڿ~y΄`5hʕkZA;ɾBKq;Pg/ " { { { { { { { { { {:xDIENDB`pybik-3.0/data/ui/thumbnails/Brick-7x1x1.png0000644000175000017500000000515613137372564021004 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+ IDATx]pTƹ"=_%0Qi)TQ"ȇcƶHHJHeZ Cu+RӡCgvx՛Mn6sL=l2>2텃Mpn @ @ @ @ @Q#]5 S't7fϜN6%S^dfIc]o5.:̯.N~&'~Ȇ)k: һ{ŀa ~sAJVAjm}?Y8x.JEos gԨK9~_ zҗb`@akn:yZ5 B0T?WYxN8$cד2c -TdU4(V'ۂeYJ\Vp# }zcG"kCxZ0v(vdX. ~W'Q#_ث*Ce:N^(fHi^4yޙ$: %wU)f@+sdya>y^j2tn6{ƌ1/AqN&'p֐Jȓ:'BIN`O8jǝN)R0 w?1'#r!%h+.;/x2T!QYI9/ƥ]^cbf.y-|~$Q)*[D`ZOL6hvV UE(7/DQ5Esf1Ԉ1P-M*y5JkM&w+t W^`: \)sŨ5mnz R04OnC duV+?KX8}2hWN^cJ|?smIP-"wI?SIlR`CpuHU*a9y!'/|t4FE==} 9n-Z,)GM5#44Y 3`+xs }^ Pn0<ߵfS{LNC=\jkz8 fVya"׹ ʽE|ȧ\¢<ۘM `*m>+#`0-5)*ΓIQ bjave<0U@y`Qp0zfC1 ;[0=)R-e}z}6&S5E ѮWN҉Q%mTsLv^8fMz<SлOJR}">).' @ @ @ @ @p4e?M8 <IENDB`pybik-3.0/data/ui/thumbnails/Tower-5x6.png0000644000175000017500000003247413137372530020600 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+4IDATx}w|UU3M/tAދB@`cX.*:b4Q# M`bo(c>qqϹL {zZzϥ7?;:B:B:F:F:FB: XsegEGNF^;nLݣgŝ;A 0 p l'c[}%^bI\N3 A%S?YHIq1x rѻȨɆ{H^b8n>O(W?cr5>y2:x D?% Rޡ=C.{3f. >oLYn&;B?h,ѥ4zMiK}(҃Ǭ=s9 c_6x۔p9QA@owB[fߝt~26Hx0$c<\k=8_H0 8q6+o|̾+(Q\wV $9.5a 2p~ ME{NRLoWx k_IbE DR\]A?0jD*`s ;X <`sG\w,(vbLョaz xtmx_^^kb<}Gt.mLܿ[.~P"Z嘵l=fqL1BHW?|3OQa{tI 9uэf)R>t5M5i|]H#/ E/b@׋^y(Oo>{T 0]~sd &ۥCٚ`ڥs >_P)߹ePan&Vܬ9*pO4s ZN zOT+Ļ/Zx "{1 f(F!=gRkܥ\;] ln]-qF'BL {O( <7@:qGg1:/IdQ_u!!>)g~M7QC_g;@ǃj⡗J1k 8_J~.vfԽ`[jIb"(SX"trOXpIΝUt^s>~-_tO#mpK,~tVτf)L`ث|e|M9ڽJW A!}A_*"gJ/BU'XDt넴a.zQw.ߙƇ'TZ`+fyMc9<~ JOFm4d)0 =2t]:h0U7kq J9~#S4`eI0M8N4J|.N)/?Md`_]OXߦ4qa u]=%w63"kxhK5. 0L2ӔJg9|q\5trwqgeH'GdQa_͑6kUT/dnX-[*/UU&oQ!3|x^ϥ/WJmccQtE?/'[; Ԓn@={T5K^J 3٫P`ڕGPs? pno]C|W6Z1~|gш ?m@5٪ ȯ .Ol [3T%U2Ji,k <.u~B3&1A{(wX=ח@y@inMta@b#5kkSu ! 0(MzD ⽃ ՜Ln>J3ʧ{w3\&R^@0O7)2"rp WIw넣Btxź@ߐ/&t"]w[5Wli8\>_ѕv>OQ M8]ry\ /iE=ٵ[9j/=\cpi%1岀B #f#c _̤1\ZLa"BE]v3w2]'w7%{\ff_Q*g3+HX% -ԅtCfz?F^hav(YB:p^d?+ >zq =еGibq/NM*̾Үs){=k ^b]y {J8L<e>QYOvq J P#. icvS ]?7In~ox9a&Uvfe `5}*yn8]DWYsrxXY?Y`,=\)j<:'%@jce0W@"<7Q W,03x@9&@Y 4& |, GWO AEeF#͇+ހ\{bXVxNW6piK0b|{KoBASzgk-Bط^p?L| bi |튠7-*tqy՟mpLR:GnJv?^: Ƃw0\:fr6D*ֽ(s؈P&$w.w924=nyW2p 0DNc{CE>6Pw- 2ԏb|2;)g[esNxTz3"CY/8͝6gtuvYnv<>4/y5pv;QՁjej0TtN={@xR䵰zWH wĩe~X.bER[~JF/L ; yGhe|]r#%qED>)Cd j,ģ9<ҙYxO\4'jfyԽ)Ƅ0į^;Γ??B%l}g-K`&À~2D@w,YF=,Ѥ4%Gux[:{ |$X!0un ;b|4!Rѩ}dc&`| ϔg=. × Mbˬj1d-@ r~"`1Qgyo| Pq-`K\e!0cWxI* &rs(xI}pjW .:\la[ˬj1|&t&jY537J;r2z㽧70fwAgBj;+7mn=/im<_վDq%LFG0ė; 5}T 8Mfeў "Qݬ<.π!$ Gi`ë:y|zN߭KeV׷mQpq[J3qb?w|Lhg!/H<$[P韨e,]}j!eaڄL)3#)d&KW$9B䩆"5qp)U!iPn%~26a&Dk;_` >`bX)V\&lDt0 =DZ!yNSJ W@rzGc\0(r]L_} nus_R+9TL>M< 90C^@nvŲK8 .:|^ 1BffP?B@ @JI)$W)W w~L di>6\N݇=eঘi|.%q]_|{Dfon+}w@\ `8N"wi6B6!F3H qy]f\Y_@n `F20' &{-:ʻoS L=hG8>S5u-.fi&Rc(w6/g;1ˣ+RnHr) 1]v%<}$&`Un {&7m5>%,}xW$] e`n\`hoV4B M qd^3(f0koJ!/ve-g}UK(DaqpJJ&41J,dk`~rW.Q)UC52Ka.}O `˧-ALM5 |!-h~ ,c$} sȟJxZCj1LrhMfH9ӫfH'?Fp0?7@Pv50H f^,pM(ĵ!s a%1c{M uf~k gr2ؚXjYPuhc͢Zn RVzT\B4;85i {IQ|u&فo4vT0o"n ~J)}#w-_\6g_b#Xڝ?ͳdyȮx! z*qO*L,FXiYQ+SŶ?>eEX]o4"et"F 쎸h&(xQ dKBÊ%p8?;.Ve!Hw[/gOxHG(OW_01s<|Hc~e xkl_qeڗnEA CsG (eYXhgYd7GW.Y|AfX߇A$.}"N Bf/Mu|h/G; ސ,KTj7_KHS 4rseCxՐp?gfH@Ė8@ YO_r|42+Qݻ]G %h v1ȍ4 Ț{0É:/IO -&{-QGebL45ݻ'" y̔R ~My吵Lgݽ,1ykBZ'%Ht>w>3:}c7FL.^5,`W+}ۍ~]΄ą| *Q^VQU5?HzH5J >Y`/^xiq@jPHy("#ƨ9c]8ml@lh' "ÐE/:Y<.5&M!?}mV]@8OxK pea4U)g7#JV/&- J^!T@]䲅`rH22C> 3$k3)opB/`rω0ܳ.D-Up҃R>(~b}@@˅Gdhp˽JvpΰCMZ09l_^*IEɫɐ -T>z=)m?,Kx|J/c㿽MjpWpS{( }dyX:#=16T P& & IiN?d!{wS%^4v-7P1_#խisV7)y.{w%6ȋ=k) x VE8qsE2 4{y ׅ񷫈y^Tk xkOsʷިh㽂QD/? ŕ Le#t r^ d_KljEQb0FO0v d!@\PEM|7|a@HO,yXLS[ Q >8#72^-qs} Lؓ3r28̎`Wl3c7Jp2v{eءC 6VmXjMYrY@,_ca@'L0@^*n=t^HBecf,^]$xcTbY<@v3nd,^@G P>&Q&ӠRv2Cu'Y~ks +ʻeFs&jȆJL#&I{`2,W PUJjlcRoPi@m{&cŽah~.<ͷ˕O>nj_uYm$OH{{ `xYU|\V=` {wew{W^w[am y(ummV0h^Uo4/',|)A!Rk^Hxq@ o>~~]lumVPs eOgRBxpjma|`50{ژodK Xڵ}Umy$Y@fkZ]T%H4?!"7@g`M粨s%Aa=V3sm7Hޢji'Xl=>)v2YcpE^YR5L ^zm6/\ѦԾxz$ln.>oh%9UlQLxz:E˛`7JD.q}_n~a|?Ծ-=7͛oD)`q~Ä,f|ODfC+x ՛6^xz~09X=eٖ%dlaI"udjȾ?ԱvyzR͖jx9K!7}]߲pϺhO0TR>Nqr"x\ |`G'L7 5ًG*ٿ^mtzŽ k" ΃yqiֆmr-pz'>qmm{~?X xBFBnGuH_=L#W6m9xKD\]AqDĶW~k K9{ PGo;va#M@@@H1?&n65MIENDB`pybik-3.0/data/ui/thumbnails/Brick-10x4x6.png0000644000175000017500000002250713137372625021063 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+$IDATx]yTՕ?GTիj7h@6il@U0-;JРD۸o nDFD If$ډd3d&sUu5꾥9yv?/|?|?|?|?|?|?|?|?|?|?|?|?|"ro0|^ຓ?'_;ompƿ>G:NM0 }1wϕR Ƚy>>#! [odf|FkSƯx8Ε1q ':_yP// dzZ! *woht;I &1d-2ڶ$ 0Lyn1'9w93sGQBk8ɶ`l!㟈]] ̈́C=%1d X`N!H9w k0Ka4Ŗ{3?y< 3ϰt.Z'xb^=Ղŗc0pyf8( )"3Ry l & -Lc^`Yj` {̝s.[)vu)%H+`=á LbOz;=,ďAZJ;;50vl |0  t$qw08n(`J]ݖ;+0JVa<I!̹1 w X^h3xBq0`LŲ/c0, |o(Ra6p#vv$^e)7{*5f08H!ec6c>kгܔ;i 4Ƴ0wg0W v*tBcAc`gG,d, ,̰@DY4;`d1C9b>w*zNE`61DrASdM= 'w!9PWIi^I0b`Lz$ɜ~iYMع\>؁QbxM1ށa;U|24HP\xgrxj3 g,yOSGss KJ:Z)DUEbyˌU0cN6!.KG0FCq}枼=<9Ǵy}9YX}=b\3P}4.n&ۿ 9 `bAp>Jy0~E؃k3pMXc:6U(:G1_f|:8Qaf8jW +94 m4_k_g1e.PdR0T=z~ܸ?9 S5sW.Va0jt) 9{0fbx]L0H,GbwΥa:9j`] !f)7/klCIXx|~B%)cpR@6r;+\_{< ;<ùr'a^q|6lh^kK{ T l/]8U=?1~qޣ!*@h0X*Nx e5ڻeA@߿20C@ͳCRW2 F qX1c8֟ ',Cn$:[,%dt44A휳Ze@\>TفDoBM} *?aoC?H2YS  Hn4 rd4L3A" vPT2'ws{\v!_jqи=9$YAkjGReb=t}\Aر/rWD^sǮf蠁\aA'feş*, 0ӽV6MsT]0¨\y% 1dJHCxT&sT s?CT\ˆ a0<$s0=dyKI?ܳ5; 7D Id\P}`.88r`~Pp{=F:̽ k q 3l*)9*|y8sr|^ߕEF0"Q^?k"v cFt"bd]!}~$R`#zgZ 6^X B\pʒ]>29 GJGm Ƥ!T7},1ՍT“0Z1: &-l\h ISLLH¼5 c`Hl @.:z"Ց28M^l BXߖD|BD]P,WTO`Qq`6onŢ6,$j1;/a|wlX XhJs|$>{ x㽗ԨLh^2VMMX?n2x4 Wo߮zҗ\L/`W"\5Z kM)o ;sᴆ1ƼGͮ'ȜLؐ0fat֡L^@ =W[yծ͔M$OL<`Ƙs\Y`0ﱛd꘰/k (Kİ0#90oMHRM1/ߖZ{<۟Sin;O8zbK7~=?nHf)2%Xr,9d<Ċ WM`hα0LJы!deetVDv?T c/Lv!(2>c}`>0 ڀȿR5f5hHT,3& k6koRQ! Y #T~'0'`&OY6_XT ݋n3qz)TV~ðs, %GYM%ʒοʪyQijɞN ]="0n|6b}MHpV B`֜ Œr شD3``ԶTf\Fe&@㗂1G@ږfNyCyPDG}`])a~FARϓKa@< ScLAjiL7)VBsK[v4^B̻y={4,`$ژ%<H]"IRc= Na.j.?cz9麩+PA1ނ Uڹ.pK`TJL(sn0ۡ\nd=IYFȜOA<%Qa]Bgr͊l] 0@iG 0#DW J *t?(<;<{ft@C+tpB|>xd2Ph-.n! n@r8;(Bivcٍ/:9bBM>/9nFOÎ6a\bf$,):MZѻr~0_K" ?}Tz*kMv-v%Aq5.$(pThŠ;$`  wPD"c40{GA^αؔ=F]A%\Kim\`: ]QX{ WֱԳFu5%*_0&3vW̛l.ި.,.T; * vgsHfA)\Tƥ cNCC)!(qn ;p[9xmT閜fCWGT(wLb8 !'wF8o(6ӿ[]?MLnum\;_zc:éD +-AJBi"o'u kmJ=* J'8X`n$}Nm=dcC)LfGʜj|6P?Q`! aUBI! *0._sAzŚ3R ^uLdRz$[k eŨ@  t{.ר(@]*^pRuL9(C1Kv)4r2CY*BdťQRhQd ;)/G:x0K?]k@o!oG"LkcB> MjE)7`]Xfi p`2݀2[_;1Z@@eج$k@Lq#C^Psq>EuGyp?cm̙`˶-IYwYTyI^"(Qp|)`SCTN3^}8T2SFo*k]uc0(<EQhݭ-)$P@rX%ޅdIBs&ٖjXyńFg!D8qŸ+Ŕ2:$Cjt99T4\` =-_|*Ѿ>hw]ARZd,d$n^5{.: N\sEk`)FdXPƞn .FG@Œ?O  *D4ý ē1L$D/zu&! Pq谌o䆰|D&\5 "r,DsD']k0>w`69j`8n ܢOra1$uQ?VEQY<ӑ{O}S(K%|0<].&g M#gH+hT}ͦnsJEڨ)=o,3#$JJ{p3`!Im.%aRz_ީWʤx]Nʷ7l}m\prc+؊+0wp@NJ,H0YIlJ7)TE-\3QētCe9G<(a7xXF֖? ~s\UZ:d8~;6tUL:hZI ZX +t/sB<*ws̓Gȋ("LAI[ҽۊަ·@{daBEqqC2 ;?X;R&q_@&@0%O  f Bc{*o):/Q:GH&)%ArZ۸hk-1K؛vꥮWEWP e-$&ruXQ SLu[4 [(f?(E3"r!BC. {}Yϡ WUqiiG4{<[̯ .In (f ʘJ ^؟8M|fTUS{Ə ˏ^ c[r{՝*\ycmsW6t+@$r%&7^A v$g'.gUADzKMq53nZ@YZ<|CJe iP>B)is`ywa\E ƔQX#'ΗR ݙxNwVpw-H KesY1zѓJ?^7eqE& U)21. IklX]_/KeEaFOΡ ^aO4BI7r;z )Y. ~O 0W7,Sq/}mK5Nne"αU1ʄ4}g LM`$`Zв"Hvu*=J@/ +$$\a[eܶ!.׮}[S^+yu]Y@H#TJV z0ާL$ JbUE#Šs5g+ϺI0uή'K=B& $.W`'SU<*K~o8P|J%hkeSVnٚ9BL1PYn0K;WZyqP;gzld+#d a]RBTyCO@p}eKJ|T\ONL[SG 9*}UXZʘ'< Kcsc;@bR~2Xtw`%v~@>΀W>>>>>>>>>>>9w=IENDB`pybik-3.0/data/ui/thumbnails/Octahedron-3.png0000644000175000017500000003132613137372644021307 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+2IDATx]ixU~~I/ٗξ'v{1a D\"QT5 ""Bdߍ::c}epf~=URU]Iv2L8O:IwUu==?+6?M pH  $@ @@h!\Νz_\qII6M @Яjlo5)q+d7?lwݼ9uV +(&|Hx) q*!%y"a":"Ne9*9quQAcD-D [֨d)%qoF)7ܰSNBzoZ$/r< qr^" _Hhԛr^yf LLqY#@*iH5"mEpp R$%6[j"'3OfJr/id*B//%r{GeoY:5%knz-PhdS9"_M?9!$ ֎}e<'q[f9,=w֮ Oqy@QRTN !!!bxJaVJ-]$ Id!yo9"+'lyD,yQ~A TbUU8XW<&s36# xd'nz]0C %otrB#|AI#t}+-&Yj򳚢%{ нB<^/c4RƵLA4V]BU ~,]#LBO瀶%oVl[h9RvJ<.9>K8L%m[=~ *>Lh&%2_|<L\peUO^4\$O[8e,|DDAwi20C"|\xH^Fd &fеc4$]W)!=0iբ5@FwA L7 NJ9;NޠJN0\XY3:$µ!Avi%{)Hu2h#tOי" >^W-RS"~dRp^ÍaZ9 2 L4dMk{g$[ 71.[#QYa:3\|E~`a%(ɪHa3rZW0r S.Ug`Տޖkg ^ Or@a~PuH[h+***m}?$/7@C*}UJ9hO/sԚߒ IXC̋{'w~X`ʝw62ͬv*bccy DF&ї$UB Q[$'LAW)Jzu|+QHU?V̅ dX ҃CL$%! {2U aF+Tr^? ?l0'ҋ"={޽{~#/M& N7tfZMH"~@CQ# 3ipõ\71q[ |l) 3+w5XA⽣)RN=$:4 vaEC)z=A`³N7ޥ󐜜,rss}e€$=z,&F7*N*4Rhz' ?Uo%O LA520k:_0R|L!W_A~O΃(Ӵ/b-}A-lIM2Vl ~C>DBBfMRTT$ D^XX( #H3U/*+ӹoAE}L+z S$Dx8!>s[ ꙶI?#LVPD$kGpcOHTIͅrqw>i( :&&F-&NȾ4H2h 1p@8 T||<%VU3tZe!w򈇯rENjXO8y:ZQz^$>8AlE!@mMvcG` @eP*>xm:'C@p()&ӥK"C C2x` Tne cK_e*F+=H`^HMcf-I;>R?>ANbc6/|ᓶm5hKz>lX$V18(jm":\( H+'?~ݷ$ K#Jc\bʓO0sπ ߡJ 73(%'z!`uwt"GW2LiDD3-J!)Mt&)k37F kxOI ڽ{v/:*R`pt !#wiPUslYOy6`k v]LC$VҨ~AYNNU_oںZa fX%>$)힝D⻏|ȍ 8لΉS '7C_j> woI ݩ1d'P#tvUA,y;Ơ^?L/$k.h@fZҪ$9NqDD|Qa8wte{^Ҿ$q2-x$ PUoPNПS 2c!}H8ɓ;7ZLgЪG#I?zgT@qSeP"UPqbxI$$s,n?a>>A}OU;bI$/L-m~6~`)@qiDM.Ϗ;{,ኴt;;O`,I ‡[kIdax $YrP_~M7o(]٪`yԲ0q\ޚS$@p/I"&n(?|KLmo7̿:Lܶ@=>% KY` "mD+ (٣m %}XkWzˈ$]9Ydw;JQd SM"M&ϛVCU.'n = ڡd&+E6Km]OIڐJ+\C;}.ĥx٥)` '`U_6`~!q^;u$|hC& eW7dAʵ A(܁U4u^5*Pv7*(A1k/`1W>ϩɓ. "H IBA (7 ({{w $sɷѦE+c4Pos<ֲxhg IK[%4CaH_2(C P۵Ν)sܗ"訦}}3r+]FI-6hth@o9IqT{H5rr h{Dl* bJlʼn'lA;-E_,eС=r*Ȱk%LM3}ƣI4#n1du9|t۲d/%&8Ŏ q3yt* !=Wc$H %͕q '[-m1cY8qhq]`Gh^eaD׳a|׮41 Eˮ6h=KjC @ UQʲG!Xf\$ʃXcӆ%cUe> %!<FFϡC p]"rUL=#~.z h\ݸ} l2߮~]/ŀ@$.;x7#9H϶9!TE3eee|\ue$rϦ6 7Ne|WT >zW.߾g䕴O>aEVk>Tf?w@&1+p15ŠgLC+U+C!{ۿGTZKY>şGȶ|Nd|[\;;@9H\^U+̝ěWď )NT40ҷf'l}T%L}j'gyI3hIZ 1R+E` n߼9c#99%ܖfχWo50{LDN T%^Ay[E{&% ss?2^Ha&A06E8fS=r'[ s΍J8 (ȡy'h@ӍGF_h"L~.*O$@z(-ot^' ;/rqn~H2cWu(z Nc|l)f?9'߃!f`8c- lGb9YG.oUkbO$Qu$GSζ36۹Ã) H-wc(HsZ/un7?e )0&vlhjFK6"K#䛷ۗ ޸\٘RA!+nPZ~P{oe:gU&Htf& ["" >Ҟʮ׻ew(?$& O}+ y)_x?i>;%鬒;/[ʎFfcMSc}[Z`ݚga3$$ V̋~n3n\DVMwͬpL6X~l]{ b@~!@VNN0(ӧZf&\\HK !V4TOl"r J@lR;PCd_z5~d gs3Ɖ>~/@'}1C:XGqc=k>D>C:J&MQ:}D'LsY(aK"!‡Ӎ վeCO)W)m=1^Cトr &vqtGBdlN fAѣo6ukl,7?@ESG5cv($rLy{>IF*> ֓ )..Ml9pK@~!@ݱ#5j"ȊxJHjF~= T .&ˀ9 hWHm5|)Q!pضW/e`c*7{[<|Kx8H3gj}zqf _JtC8Sls9Ů{㕛~i>bz@f dunSB(clE;|abXl2m_(ݚ c#o~b-P6+Bbb<ʷ/Egls{/'j^H [C ;Q\!<{/</CKX{ۗj7Ή$pzhX3*OB`COx \K0ܓ$`4#͐ !B uDjVvY8 /0 @ˡ<>}k]rŜ1y1'V0o;wmI hS [O_X{^=$V /ށsR6Y[!EbR̓:=IlfgL]<_r%}'OOڕ(R3d} H ؕE#(x B/v'M;N<$<f tPkE%Юzz -EmB"F} 7>ϢVY [%uR.<8VGxpkYt3  橡Ojw9iO?);0{4ʛ%$wh×4ƫKL$yTzv Op]ѺuHk(~?7HMpƫdpʹHc]N#hUvsоv1.)+@;L$8I}`eC(v`~.Zgq~`,HËP($V.'nq׵Qd6t8+;i8%1Q"(VJv.$ZPMCh/DT~'/"2;vZ@ "!aS~,]ST*c0ыa=** d-c&ڥJyQE  :ax/ Lp|t0n";K{:1eA5ce p0 OetO| vVL@Zd&d~c q w,b[!hD $z-|ѣෛغ%C?0Vn3t+{:;wD+=}ptf@YXXXyDL"F}є쁚Oݕ# hpwu*DntcH>0=[7U&?{*'BՋ#<((Fre87ki<| ?}R5|u)v9(3@doYWCA(~½B54ΑH jQ 4!&Gɩ`#GdS}ԉގ`ΘpV8Wo{M[1WYjlo@0DHח X2g>Ht: v*y#msd8܃ۑA*"z.dd~HW"HR\_v,PXx=w2֗Y@: ~|?+SX<5\krg2د87U? ЧQ12aPR[dQ'l$P`HOoݹE\vOObD0Y." >w֘V?-Y+&ΣFgJΝ7@"s3QmWN$k6 (9A⍃>~lE3[؊[!ZhQG=BFM8a='OYJ<V]C)Am@9ڗ(9 ֔6EQH:c.g{E7oi}GrA07l!r;7ؿۊStDAnׂ G"m`z@DUccc B o.)B֧hI 46G/_I㔴C'96ܘr+93qZѫnFM&7S=ZbՇG IM5.edl 8-A}f$\޸Pe^j^5iw`̺5V?lv ~W -9lmXJtRJIv6n^U X[O4>Y=-L| AuN s"ح`Ixn" Fpd[rͳZ *Wב N+f*BCd"$$BcC԰'n=x)Sr3ɤ9G?׶C@'ly|4`g^fL¨ qQݿpe"S sW/|-]!j&Ca@uk '^'_[I4:ݞ$~4`(??$%ted<'\]zF.|3H?2M)]é,%ds4M>G1i,wD"2ΙC.T;AӸ\>vv"6z6@;I5[7Js \o_yt' ^c >ʽ3=Fȉ$oDuI*-jEx"HL]i[DAy"W8m!4l'g4TIb1Y0;ݗSVH3 !4A|$ž7NW-۱S˒cGF\"+I |<\3D0ƭ_p@}!p-"f~,;ɬѡ#f?!IT6BNgy||kC05*2eMڃU;*u:md)T| b}~6>\G$e(fL)8 lk<@Rx=~KqE{$d'6_F9Ia{(@QGSrbJH{Rp,s=;]g$@ @& @@H  M+#IENDB`pybik-3.0/data/ui/thumbnails/Tower-6x2.png0000644000175000017500000002346713137372532020601 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+&IDATx}gUU@{nNoebd( 9Q,$ R@RHH*(ڧlCku;=G{)?7tPk+,20WLTS " bc++?h˩}*%K0I$222DIFgAl'$f2.1/2YqGEб^:ly¼ @:^I''w.E'+ |Xcp ?"/p;i((ٴm6r%|D!Y𔳩5cMBq_`"߰6|jJ/U)}G\2_c-2rn[~ߖ!"2C}Bd6fؓ91^$hًm%Z-]֕+mE 3Q4 Vxp.j3N%\Id^-COMUBmGo_/Bp.D? Ty .OiGdk&Y*_ϢPJWt| #JuF: r9*_L[0I7bMEkL>9P[[.WK"0(I Lyi"kJ.F~d59"\D!&ѱ7G*?zBu|8n_-[.LCR)k 21!@d$+<~c&JA&CoL@LVIaXt-|J[AAԞg;Uv߬5]0 la2(& &}, Ac1*3K,LP($yVvs"Amy4\d^ܱc~rW"p_޳"T00H|}d`3h"?N`;qneӍ}Ct D 2m*J`mB!Ff <%v7M\{_틬>޷B7=ȐGar(K?MY L4e5@|>c,~SXJ WdLe*p!6ML :'M|PhPy ]5'ID"YE[6ק4GD)* dN$`1`ޠ36d3PQ uV`0HBP j cn.p 9PJ.dKpWW__j[S'Uf,*Ī"ަk FAY\l?QȀr>VX (ːƳDX+An! 999"<[hT֮{ru+X Tv/nEeU&x0Q#_bdB ILNԴhT,(52/ /g@uzQIr5 9ѥ<դ"qt;o"K4bU'V~aII]f |XɱBN~.' &+Ty:cAo`0QX,-t =DamU/sI9\4] 2A10GHbm mU 9 WЅM)ELۦq+}6&cP$XP@lB;ƹT>r@a"Ε)nsٜIx)ͰE&Ӝ6/?ϓMMDզ=U(ķ"etmmZ pRtNG a)KR0h x:zDM^eNf)qN,kmG3ݐn"zԘذgPD\3 ʔrX*ϱ.W- D[bQ9o&4a C&)"b񩂏 )R S+hV*Ȁ1\SQzyM)o \k=gE!Hf %#ܜ&q6s [D_"rWx_+aZVwUS\`A$¤a)'퓂 ] %8s=OێZxYAG&H2#*E܏jdw2D ȝD:N:z">u950m% nr1^PMx'MNw `4D]7R& BšYc!aZ0#˰h U8NK ë p CINs@^ l=MVWDO: #M)&n 籺7~4W~]Eq\]yTnM}:mS]e`|xPퟎپ۴rY!/ͧaД 8W#aOMqP?P@}u)[ h&G 93hH$&$-/?xſ^$zwzDU~8717$ЪCN_wL Y,4rD ]2 k7\RZ9K8K(A%8B2̃euX .Nba3ײ|{ U5UdW+R6ZM1;.tUyp,E _즓Ձ8 PJV]F̿+WK:v K#x8z&PXٕH2:#^1pqos0]1[r@́՗)syᘄ4q:HB,7_X FOWROOcbH`p=e!($:DxZUDTw?H +󔺇[G[=R`+zŽ{##&Vsri PX-,TEvci*ɏ#iE;?wLxXhV>{։ϷM:݇2Va%,!uoVncR8\,Q!M! LzdK.OOTI 0hj#N݉.LXiT,`)a!k͘x$[c6{ؠB~PjU?jSM)M͸Wx(L2YN(Dx~;%f7 ~Z(Q/lY_E`RlitH`++r4Y=BU6Y@|w L^F}xk0L6vJ9C ǛaMi @w>r @;\FAtct-wJfŗwgEBXz[,&0jDsC?wbEhMdC+s&=z Cm2I&M*Τ,0 A.td`U&.F1{%=D[pS]KmS$;6z Ђo[o-@ C?N"PW_)^wDXLw; }Y,Zm&*i8?Kjn:Vzê;KB SHU6.vӪsҺ\\jH-䞂N-sIz}̨eM=9-Q)x8>vvDՓumZ݊lk ?ߔom8wjcXCVaMoՄ;σÊE_*ǣ?K0iմF"ȒI2Ȁs60D%QSn :ڏ+SRF>,U:\ WD>z8 ((}/h.g8-WS\q*G-O'2t  ֤x#pMV>L7uD]P8/ PCT%D8' 0]I\%$@`$8 #H!g,mn׌0+")*7h?VϝE>MkPQGc;L[Ccʳc:u"%|ncskG/!m7cJaolj=u'.T2n۷T01lp Dp)BdF \eKH {4>*Uoªcҏ:h2G w@y)^(,d+7~|S9,  чm hN>/FE6/ "&8ط9S_S8.C҈ҿ<. -' ۂ w?[cxiB/"!Dz ;1Eg74ci5΢Y #/RbR5;S:5HjL}q:2ąsUܨS|^_|+U1Ԣ/(0#tuN!1؋/dw^x'i&`6iz$k۠*Q|cR=Y{7&]/:2~8Y6M!u@2R^s}?d7?9G@}lSvgV;UyGB0R‹)AV!W&3Y_*l,\EVa-[U+rܰ&I}H$!@zG@䃢#onXF=Kl˷l"TYr3DžK&nWaPcD\(EVdܙ"i"pSfI $FC<%G ,pZB#SDOB <<~ۇ\KFD->nM\ڛ+V64xݕ#<./y_y8$NS[qNIP@A!"l䏣|T  mDac*jwV kF> Ma` .h+M?vUGd:FD*IKz=~_.v 4d4wgW]w8ꝖF.`tV5U(X$+\H$,F1qx4XnoAFfsy& f?! Ϻ:jN+GhWL.;l}tTw *TL4ɾ~d9PϬs G?+NiE!#p4Z(Cza9] "QAX&#o<^=DY &hdS:4GqU< ̑  \,Y,HYC9pQ')oN|4[XXQ¢&_o˖&* AʚjhID$ϱ) Y eu8E y@࿝}pىG:$R K.${5}dޡW3K!}lx"gV˻Rڈ8_}l Vh$(+d#KFc-p]Y=FMr L7' !NcTq>1,i+ʦCiO!XDeȶlwsz_p/y 6%A\@ En ]C#*օ{tP2x#՜Hy61MܫL_oޣ#! `D_|O0DAђo;U.ڒ=Wo|`ܔgb,e̒ie@nI_ !P4RNd \pQTg PU:SSg\׉h:!9&כ3Avؗ$ 6xBa6ޱ.4WƏ=ONC&S2+ bq>TēAYkHND LZl\KGW"a)zH8\}hV;U"GmY|yasd CmFORU0>.7lةc&N@ɡB(S^.LGnuSiXNxDP|qD"Mbx?~QěWG#+־2k8Dt9:~`4؂*P-_n6fjq]@0{b&EB2.ټ~绹*Gd!~#Gw uߞoS=m0Wϫ=TWj4CePٚpUL>FZ`"jpg@: '_q 4ˇZ"ŽVYb L=|xK6rG>u8qb^ 0xIyK\RDžqJnDhI׻U%!,-C@2i)L.m򆼑RS,;S=`#[Բ4˃y}1uU?j[<%euWZǟ3M 1. X4bYH]]̌HQ5D*ZbEEE_EVo ۟6R,ۧ1N1j.~U?oKl~4(WymKmaO#K]6` .)#]5!iҠݛe"\-T 9[ Mѧ*&W=,&0qY#("662J)Q!@@7p<:B>)A{b<Кo}D~f,4=%0]VE?~Q$~ݫx2emEFFRvOؿmХxiD{17o,h5 Z=!.U@[CmmE}-X"5,X"5,X"5,X"5I`MEkXEkXƵ6A^/IENDB`pybik-3.0/data/ui/thumbnails/Tower-6x7.png0000644000175000017500000003533713137372533020606 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+:IDATx]wThs}Yҫ *E{_"U%[슊`¢QBD!/1!ILyw-νs[=܄38sqg38s}lYp~ !1d6f,7S'=g 60~lt6Y " C(V_FFGE%2ⶰyl:X iv<ڮKLп#$׿=xrdxH s~a:ڢFNⴌϙnrMq 4E-jm*l,aw'w:E/#W㚰U+_up+ 귓a_%C |5ևy"d~Z[qL?_$PXd:ɚL;tG鸞_Qp:u_v?ݱ~nb# 'a_@")K?7;FoJp|{ 龳F #zXFIZ !~R wXHGgg%%pyս,u᧣wh.zu#+gL\ iVM(.JD{ƟEQ*.Uޢg#v*C38A㯤{?bh=:_M|Q1d=J4eDa]PP)\}b @H=P'7WyοB֋sg{+ZJq+sԙds}Cyd*r {p߫@a:kH^sGA8ieCLLE,ڈ9|xغk2&V0 [b)+C ILqb"㤾ƾ~[~~ hv*;lۖI( x*naЪ\aWs {̧c)l^+ͫ?m~+'?F*U$q1%^Ct0" B ^r %{i[oJ!xi fͻRn*wAA^]86IF,aQ"</zՋwfBI2lz*0-^2h#EBo<Sީ>s7w8\w5RN#nTlqU0*U1KVp:o.Šܺ(#[LP}tG8A ]hZIDuSâmPX$AHy5WYX4ҭF1ڊJ\F7*gPX8W&kAt sf@爻yy15w؈>AR E wu0 n۞{%>:Ѩ4u1@0>QX`\M"{[nVԊX|2L`u @"`r %1HxɅ^SP_nJW~'1v0T&#~!D5\~$anR@LveocM%:WPݤ .KYV/蟥//{O+pWM1DHH4@lP\ YX+xJƺ5#d c]M`^mƷ{MڶmYRD$#tX,&zk):1kmEY&~@~V ղldcVr!s9l~ϓ.U 0mFZB@"dJXyp b[xvg @`Vx@]{De,RuHKQ\_ۻ;b/+FV)0`e嗨x?^Ur1>n+Uq+u@n/y- 볔 >cxr};\y՞( w+8%r|:.mK2ۈ7c2;)p%MGMĪI#Ut>V];e|t7 +V+r .PԕV.d1 U s]nYΫwJ p׏1`< M 7hpXqŚ\:^PPHE"DfZ0;ic> t/Q[:9xŴQ>́bqZ@XA<[e 7cyȱ A@ u' 3@%Doz\MR0TrZ Q   yMC\Lqjh8K#\Km@2ج-[ʋ\G2 ^QguI7Ezgx\l!L@@uupSB+٨Տ$7^J@=n&Xƿ/G@[% HI$/j!RM:M,`ݮׅҽO_/+A?~k}P_vaL.vd͏gٲ8.~3pi~G>(MoRM|6gєu" deNCe:/ҒgR@"#HxC]U^_(`/*jFolQ߷.E驦/rǭ4{R)/<׽Kp`H(h Eb"\!A˕/8I/||%zGQZFϘ&H'D K<^S.Û ğ(:bsֶ`UEytÐ!&d~ } XVCԯV>a1 WsS|%򸔜l“́IB\Ǫ ӐA%L%3kǹ=M{bE^ѽ!kִPד;A%#!ML\z>OHpWv.춙|g$|^NnPa}i޷OiZ}j;dzTEȶ7=#O~P&MYźAdoVr|o5Ty2p/0 Zë,t>ȥ*\T;כy7P+pRw@@-aelܽ/4x!$DyD.shUVК>2xPL#ȆϥwKe3Ba?ϿGۉ?8"v_ 3,%\"C`kDm /Pd/7}[ɀ(upKA:G}F9錀sʀ&b@\q»jK#5uHV_PP'~\]~pt}_lY+_)J 1iWr?+t'Pх[:ht`3=JID**Ċӻ+({Uů?}ʾ9@o]qTs{R^7.SX;Lb/ht4:>ҽ ?fG@Rу_Xs}ԌnAo߿)^`BO,>ǯ͸'~|Bډ{ p//-3 Tzy)$ ]Qy69{;OG2 ݕHa)|~zs;C#9LpOf!R e&wgd@h.OkCB7R_ϥ2Ju~ٽV|AE.URߓdo(DBh⃝l|[$ڑONev~CR?K,l Jů.iw/uR8=fID1 o/ 8p.<:C|C|&,U4F:#3]@!P>o.9@FՋ'9཮Nd .Grڰ4&e!;%|(+E=CEG: t،v(҄ >cO _@dD&H@dq":lD7G9_ !0!oWc@Tfac 1nU!bL7 L|Yc{0`"u7Zѷ)2'dAi|~+n΋&* TѢ1 @nƩa0L2{@ްj4 HaUrrSY`R]zj/e2Akd$1iggٓ?yd~^\{2uo \?"&`J(|J!@Re#oVU M"QR>[65)CtjitQ+a$<ⲘcUf Y9g 3w\+f*%?!\BKC%Z"}׬i?'RXsNs}̟sDa\tnfp8sA-C$.,Q%? @#oRfvTꬴDn5+gQG,~v~6> >Ӄv=oݍQ k q킰㽕ydU^PVwŊxeΏ2zuvKjY`ۻQ.rJI0 88Lv@c^*Ҁ].$Jmf/84>GvX {U9=} f1l R2 ~Ha2 ߤ":>]P3-uxU3L@gU/4QavྍE!zrnE|"8r9.Yb_7NӀ]0Uy՘"2LW\,Wt4yb2#DAM̺/;} )S|_+( },_4^'trif0d 1UW+j3ND0DXfd) FG D3PNq}~z@bLSbz jqwۭL!q՜8\BȽc?^G^!go'7k. co~L ܏[3])E=HفY(pL! ]q@|7@q Z9pQ9 KY0e͜!WlxFL$2TX+OT/0ZM?D{Xu!Go~RveF \ nbFu@T?}@xB>E.<ȠP27GTQ-][>!BBТ*-{ ;DPܴfЫi` Lbًl%Os> T3iN@N |^[@u`P?s[*~>_( 6PȤ~׊y$l޸$ 67c#Hs2[cI@!5,Kb rjyܚo$F[`HXH1ѱ[nJG8hx{SBD[_:޷>9_YtWy4BuGTu3ĊJ"BmmO(c|`c4ʗ- (O1@A˄vmar!ǟݣpu"Tޒ @ VjN&wqrw\64>X?:SH _X~xUXtkogmWH >8XdɚPB7!Ҙ#8ÕH_“|w#/6d3J.x@ǍpOO)iW &Otߖ`9T/=Ctn|{ xSt= `@5f%׿q#ZnvߘnSAFvN#?P#A꣋3.j9IĐR<]7?j HcS?aUnV>w$C/`ʀ8@CGL}l,goQ="Py,5'Q'|gJ5n 2+X@ _ e+ \Kp$&O6/_H!@j PV@ܼ 9 bPwI"E+X.R]@i $^!M\,"@[f7$FL,&0ЊX߰맄sLҁN`s0f?*aBأmW/ rzw MVַJ*FanΜp5^7< gB `4Yf ;-UBPFWt[GlG=~kB _X41 )"60`Aro>񔍭/& X X,8& |Kp)PcC-oSc ̖lj4_OnKH!SMa![TwH/eQ(κDyX{X˧yQ|CG~!=?0@JV"[=&uTXB@YAg˙7.$DqSj.yY:I,,;]gV bzd}Yv@gA17/q)?8 컅sx\?Y(!==C:V_{QFӀd4=xsqd(JYeDB.w"ݡĜ8e }+>},?j^?XDGtd hœ 5Q*X:h#Fs{MY Pzl3K'#{`(_>1<bіL*؛*#r}>R0n:\]ۛb'@!Tlu0)- P=Ubz0lͤ+`{A4;_>jc*샼xQ+8j,Vdqrv $xV&4nPw𖹹`ՏU(dTݯH l؅>+? ymٱ G*gl礫>vq^[ <*b`ӽ1ޢ"5n[WiYe ;.SP# (pd^t<9*NdI7 */ҳV -NxޕWy6Wj_Wv 62j'" GY'xJ t^χ'/$0~;1{K/rt94;9 bY8B b\+KiUFHQb=@p0tpyls6ߗg7zQйxoG!7~xD}[={g dU8¡M][5PU¥.Q|\;.;O5Z(FY}A:)5pih NQ >$xW }艌:6x|9J( iB~C7I(=6vDͮ 8fN2* QyVP~洲Ӳ1R!.[+@/2d`TqS 4o Ƞ';w@ׯ%l|wA#Ȉn1@df}jożL U:?A㵆YBVi۸}^@sUm $ @>^mu1 Q :%Pk9&sW@Cd}1N(縷]C6QX69 rJyz';{(ʛn;5DXujܵw%_[RRJCAxg>Cfeԥzc0ZOVF*7{! 8u[{ý6(':}0';2XAdWF CNB7xfܴ;&F!zZp/ZJx Tiakl:ͶU U+Tedx^"OxP8*E(U\ Dޫ' عĻvʢJ~&Q) ^d~'S~0km:m|AEHax&b< 2Wp<$FA F[ 35R+*7`?=bRwU]=(>vsT~-yGhl 0g OovܺLY^<0}oDNy$F5fIv0(`u1"Fv^nP(0ٹ}6,IXJ)#p] xt!_(;lk7x8+9$C=+M1)_=v 7^]T;<{ĠBMnY#ǹr@OQjG'%fHA5imct9[J`8߅Z2[/&7xd  !W_0R߫zVeC)q'}4/T_n3,R4ah*<VCiTUd-`| _FC4KV 0MG=)FAq(_LşQ"fRaIA,9 mzl 9*FF֎KGgB! 3d,Nj2 02i+&; H1fkLm,ʛ@˹@NAlig&t_qsF:v얌!=/Su/m 7;"βk}{Jc@ 7WJ$ҖyӈEQ5qg A%9/AVMfW y<}jG'OkhOA Zߣ>Q]ʾ0G]ⷯ2/9pjܲ@8oRR?p ]~"_(霚KaH8X8ȂIyHZ*''e r)rW OgQk+>\InS!Dt[~<?' VeVf@lc #aU|yW09=e2],`ƐK vɮd5:mW͞ ʾ0"0"\ k_ScKe3a"qMKd,ɑ.p}E:hz#dIkX8&w dٻ,V0,ERG(`hILn?q xU7Da22{a&!0gk}To[W7:x d %(QYp {~j.WeIR"ECrWN^)9/JCN%u}3O?8P|b`ٳA;5oYW[2n)tI2.Lu|!SNeo5<yҰ܉|N@DHΎm_^c&;5 uM#r[aMq@;*MNo;>I)}=,* -`Fx/]{wKE =_'x9k[O@uݺZNiAJ9{ ΑD}74s@ Nd2O e+y#k|^T8V f0M |ɔ~lPZ ׈' k?SK7Mɧ0g?`*`l]Lm K5Y0O;0qQRo 8 {*7T8I]mjcÈ0VO͜ 'ePTQPe0.ݯzqX<&C\lx="Een4<vr 볏 kmoqT-)((`CQ. vBbىĆ,FԪ潇Z CL^ 6#;s]\/1?߶OK8y‹VJU__':Ip+1>(rǵ d[JΘXY= Nn<'Z9kɕk',l2)vIi'[Sb9V*y1ax~ǽ~v?zMkǭ x #'I >d 1ȓAJwdˣk)mULȧ8QG7 9 b'w9Xi'0X7du=M@ )b 'kZch, =A(hBW <Ⴉ6Mg;I_'^0\ xL8'@ =6}{b`oՔ[?~fv5ŧOOD<: &)Ч!SXaT>c2 <Ak. aXnhG26Xƽ]=9>Qp4x+ErVw0@,`ՑఋS?~@yTM__˅<zm⃣מN+TЯ ,aJ+1n DŽ`B603b_ڊ~vhЫx5[O,tv5L# `| Y8 ?Z}~U P{捒* y@$Gڞܩ?$4Hh~udlAdY @?n8zꂺ~|ШQeaU팻+k5k0Ӯtg{|xDA}Ҍd|T>o538lhmШi.9=96D&UyOl~6,ȇ\;mY4NčwZU^g%W1ć&neaaIENDB`pybik-3.0/data/ui/thumbnails/Prism5M-4x4.png0000644000175000017500000004510713137372702020767 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+IIDATx}wTELyzrfr90dDE@t a$!  >a]e}頻۷o q>]]}oo|+.E~3?)||xq%bW^Y%?9GB ؽiCcMW<׽Cˣ%:NRtYJHU&?ɿ LV -5l+1=!wU{+wێo?x\xdO8A#:LtẇM7tjJ•OuQ"@֐IMXjܕMVFVT3n }v+(,<"*Mw_";*%J#0a{/ϳwt[6]#/!~q51uPс3Qwb^oZ~Dj5">I.MV;ԉ>J NQ9iUԥ=0Ըd2} øt/E("q9 O ͫ.ND͉fe4/jԨ-իg^nnHNNq1QQ"..NDGG*⃃E%\ATJ ^{5 אmtw1V@,zA&!UX@7 O;H Na-vnZx,XXXK :)ѹh&}v3&FbJJ\1ynݺ̌.Iџ\3_rrDvf& JMMq5kdhnڵjժ,xx,M0 t2#ꑡ{;m_o6w>F#IWan샡&`eNXAcO*[r&Ĭin ZaU(J `$'iQ$fWSj勢:D$͗F~am`$e :HZj#GMbgdfP|Qw 1n;d4"aN3ZTL׬A;YDもxz}~v^Ϥ9n*t`Ill"=΢2De L\^FKJW?LBxCh v%vf"*]I UsBEۯZWw3Y]O2Ը !{;TmcQcń811#YL%eqճE<ѰaC/BEkZ$o!&7fzX9f݌ql`>,xHHH 7l @7cA7@Ly 1pa'@_\$qA.\w8vZDXpz Fp6=N?J@dXclI11)6)ɤ'zu:ŠZ5E: yW= ~~   lra$Hʥ&5&U jGWt/}A s@,ݴ7 |'Q?e>> 8dNvUS(}6u!`=5A(m6 @tH2Zx'cר~ˢO>X i5bFZk׽ 1 .QK٨t0To (lix7JZۏtӜ=KT9' +ٸ1UEqB(ĈqdMs3E}>EjE_q}Lf͚1pRRRX##k 0##?!5 p5H' ВIK4h1ctݢv*bCT_1S{Ʊt#1Msv`,qD[$ 6E o:WlT2fki'S`񇱸;y7If"1c)}Ę#]bX[ c"8K($>*,,d!-kF1ƲI tedE8ݟA3uʭZ@]3, gX%:''(.C J$baQ#w<|#PT;BU i*;l#t AE@$e;@d}ltݐTt$zXrq@1"#&cɻ_C !հԠ>3aKro ᴁ 0`+l0`sD詓~ؿySZbL9Ab%iM E4C̪^+~F1Y}*I!&f'b,,(a3, 0UE)yK\bn\(&5::9AWW䫮1f0`>1-/HKPZ<CZ3Ȼqmd fpJ3Fc ~i,g{p9c [Id՛ ~{]ɾ4F e4vMBk}7KkЌ&C*oF| `ɔU"Q:swU$-YZt#MqZ(qj,Hn4I*4!SJNR^15MAޕN4~F7rBjRLƞ@}}|E9.nN3bgWLbo/fΩnHosxd 0`-`0&b-1P7u@@̄ 1 Q8L̇c,iH- aM o5-S;­RY)H)*2BE/bź@#t )-I_it4)1TsSq8]R"@|4/Cu3Řzy;dbpUJDW=FYS6 }'1[ 0 .mƠT0F@(5Y1^U}FBi* `w7nkb>HO&ZHK\[ Gf9xv|`'Ğb~Cj!M'R0P~dT(Q.}lO5qS`^F ~knB'INX%) >7( }$SN@8jt`|&]cW{`P_`^3ȑ  {E k7qrҺ\_( D=EyAp߶]>-lSH& U`L%]8i}^cE #t OLLt_ZBi-b*uuQTIP@s7 0 ,obH'&H%pNr6o@y`բ"Yof~q<24IJm$|hS0fj09t_(sy[E%EJ[ PO{t+I$V-[ZIcQ 5V "gX"-@yfuP'`80ccDg2*q|?Nc M!t+k4`3<|`vjMg :kHؙ`'$ToW"EÏ`Qq1l^ $kD&xcwZ-j!|#ԍⴆvGG] F8/t| XF  iKV 0 x35]RBѪbIOuk dX\x yT0G:JJ!U{Z$Ӄzb ꎀ6RV=}RL} 1~Qg#n1i,>$wsWe9ts`N|XVQ =hWr@6`(EDmv'^7]:w T%e&0<#<]7}~gn-C  Dg' y$p548&9 7z<pi۷ZbNN:{Zܽs\\Gs!4㦫.#Q&甛v> 4n>~9j$}̻Gy+Xb 5vHSP'a34Xm PAj(Unzo-^F~iE 4+ ` O*&wV%K\ზ%C,U,<2tUfX( S<޽O)D,veS}|4ng0Q"#[FÝ37.6Ag8QtꍮA뻓s/kC.&{AQ* *s;O!IfM6#?*b$V=\2w1O[epO  TՆv|÷[xwvQdӱ۳h-z_4R?XrmMT1 vBhmt@כ1ĺIV5a mV`ud61Sɔ"tF 7[=J4Mb(uaegCTcqa3h ׁ,(#(um0U=nݛnHhK"~e%AZL3I4`dD%cM#\cZR@ CzKL)?*sDHQ)g|.(BM` io]+:#c'q0a"*^9_Nn<ȟ7WLǫ&"g0YRCh\3KpѕvϹ˼R)gUq=H[hg 0 Fvø8z #,z&|mîN vZ䱴{stP~Gt q59[u W"; ,P]ya$BD*ЮAÆ<ՙAgm{cqDY B,?xBX*n(.%dk>k8v3>v+,@֩#@H@0t ZMu: p`kkߺ` pe)i4^wuw8>"+i Hubj%`^OL& v%<oaO$d׭( !Uްo,KTjXycbxѯBN|?_Q+ ګ^8Wg`/ 0՗EիDB~_.JWy}P<[w4YuM7 k]1JʯГ=ߌH< ֏- @qu 6F ino:̢zI" }Ht#Sg(Ws'R El0a +Z͝?R{7?|^Ç?޻,&?'ZQiF( 74U%J؍@7iQ -oRŗN@bvDq7 HT JCa,^F6yD(\섭ʠ~ 5xeMpZEH)0za.۷<x/wǏ]k=r* ;˽ uD x)퀤:|6)p FD-.#ap9=$#_z?뛹\[`hK$BVW=.ft,AHį9bںw> e\%⡖TL"vpv;|w>+Lf ͅ4[ƘO14gLp:aľoK\zMA02Obnŗ@Ӯ_Dө} J 4z]B@Ѵ!0Ssp`nI"^'KL( `c #dhW!O8BCR0h0{B6Ewn!~&^/m_n W&c|ԑUф |0#Ѓ}.40i/Rg`ݶ-h!*/ݧ Sp F]RGc!B-u+R\Es ݟLBUA*\gTn g!`#@ݴ$7q~6W㰮?i ˥(_cj]^ExUW&ݘ}{(zF]Lf^kt*^>EE9zC10/&&V  E*%u+낈ߢ  P#Ď1/$IK6ûxKV&A\ s@߉SI#H!Qĉ{3Ƕ'9O;K#][~FD6B^Gt6"\Y?gg>yք#$Fы/XpƓBvm1"He.Rb"T`Jƍaq^bT9^dh Ѱ]0N6Cɱ^%GUh `U@ O}€1 ,u{X-7AMӇGl/jk 9/ߕ L'c 8f{:z7F"Qٴ&֭]}J4t!/CR;qe]D53꠽k@Q.e!m\\Y ۋɒ mWcz~KwoL4$c>軷3 ~c Χ$^0~S[TPgB`t^6v9vo VsK b]+]׹G z?覅H[%R܌uI\3aݜΥy!!"v0ttc{]>78*El6|5 劇# ,[B2h;)c^ܟl$YD$&]a4!5ΐ .ӸҶ~=M"GwFEiBpT ]; c%" )`,.G15XZ/`l`X :3Cu _+w"+QzGBO H 5C I-Ac Cprl{P?{968YC y"/[MmHOYp۸2[4g 9ѬO2| d u޸A6TzE a7uxͲe>hh#aZ7;z%QrޜtJ n!יKĞ.50xVձAޕ*]nvzN9 MknM&M:G ߾MI ИD]Ct˖>tVv:h~^֡d 1uݎw+՘4m4H7H/@:9w"|Im{*QTt)U2ũ]I<9$ fSn@Q#"$|Us@n,-^ fm*y*yv͠I.@G ƥC- [B/IV.;L`tzkiXwo,ǖ=~7ӇI)ѶQ~#CCb>+hCp .ϳ&\ǒ)䳛mjUf v!^LPL-}fӧrn!O .ڨڵx|- @H٭jdhfw~vQjb`V://Αb[|\IyO.e73ģbDbajMu 1O6iz-fF\Tf0~s긯:psw2Ӷ\AF#K 2͋[{@ƑјpOJTno"ww=Xs#ȵr%c{ sbYIN'I#"_L#]\k"I43&XY~Tx]Du\Lm܈i~j z|QBک}U4`U0|-r;tb^Rc`zM^j&䭴chۺ: aAj\Lv7h7[ŝxCkIaw~ +H \x]] qq=˞0D ضf @}Xsg߳C$*֔ڨ!ϕ׽#l`Vh v=`|Y:2O#`.IcYNl U4c<ga>&* S'JZ̞%ý з| d05I[3I}!Ju0y86udvVlْ؃- L xpp[=~(˰a;O3z/KȺÞ22~dXݣaۄ*#_m8\YƜ39RQJ0RŦdY@VGOd\Ѻ><+֏Hr*Qw&-5W>>KSG ̖-Ǟ8.h  X{@@V;R|M@|B֥SƎ=71ogE2YS:-Zfq?,ٶ!y4?}RᡲƠHL Pxqfē!4ǓU=(yAw/Z qgDݏ|t%ǷK3 %#k>/Hq]X2IuEx`*bXb(1X'_ގ 4~'9V_atTp.oe7_I"f0xD&zP{ !:>(E۶2_l3d1~:>CZX/R +ͬ }81Ku?867^ =rLs0zXY39ܖ 0϶ =yF_F0dバ@ީ))ٌi ɖ kQCe$[к9A}^=֭qrz@.&'f@ ABMz {x0)6`x*BREcxӌôR<21v H<'y0_΀6aY#8044vbV#z+{^pP!D hXZp_:'ΰz~"?SΜ2 bwѝb}*n*R8Gj4l<&=d_Ƌ 5Eْ86 1"e*.u܋Qg\usu~SJaHjv3N&, 0:LhY2KMC"ǵZOC)ndNV?ƽpk4 ՅX$648w !4>9.>%] 7.P}|kD1gR:su9kٲ~wJ6cʡ9=$8c 8"LξrEf})]GfgH'h{9p1~1Jq3إ4Щ$D9%6t>>~,80].cxha%`<A%RkČsVO˳GGq^7~w_:bx߾iJ|#.J[( JFQ ^~P3[' cqcla!Ʈ]d$1t6 L6c_90>>n Du!JmDY :vܱюG@f@'YV5 Ԯ,\'}K `C~ =Qw"yhf4:sbU4<=L'TYy@>ִXf@QiqoebWxr@h$5WiaG`Y p @%I Z͌:W|L>zv<YCr߷}8=a-WuWMFxՋXh|`tڸv@hZ'hdm^7ؐ?TElbG;'+|>l$S hKoT~qN`Z̺ϯ@J+v#1۸m<<h[c( D.Nf!ZuCUmㆶ0ίhSDޭ{6$?J5wc~06F]wڝޖ(>b?NL'Uϟ+ n#6C>TDU3 XTj#10p6.!sk))a4lv}|oM$ch'&@`h~ihR(+Q (. 6WsǮsEpN1jmM2G>GsN2G[C0oBNk[lJ)қB@ B|5$qC>`T3Pٝ$`9v]#0}:5DبmF|a?:= ޥwt,~[|jߺ|듗Ŧ!F[JvS ג ¸0y07I 41 hT\hx | }8g<7Fސ,2o?w@p4Q56ru7 ' @ǯ ;,7DZrΏ(qةzG"vƮp1_6Y=R+b6ϡ1ojM D~կ/0N%oc֗U@D޸^fgɧ G9xqVL8bz$ZݘN:FklNTЩ[~0Ӏ &"K!REȰ{dRE @2& 5pMyttoa>Ua~cǐ/=I5E6r!d,} Dg n "BFGA"j-ĘF 4A13PqcPJ ;u6{ս:C1yY.4<;$rn{T>/v.ޥ2'SwүW|Iĩ k_WB=J;}A$0 I"dc`W .Q=:z+dѨ:>85=XѽMph3jU)5Kah8zH)^@0:1B΅d)X`z>r4Nҍ̮VO'B>= !'d 6Wqd_oA$|)q$-)>C'2ffx @c-3C;PTq2Y..,A~L;y!QcW `xiCL )"چ nRqPeg|$ ?gPApGpD&K75yV ‡wQ 7G/!@m>/&Ř#TxGpd>y{Nr%8P>PNp"$Yvwt@~s9tuOs}l>µɡF:<*ŀxQ<ǯBok *]K ^Cԡp{CtPSutQG)aH]4)u갪y(>ŕ 4ZIh9^zaŹwpחݹ8cM唱d2CYGrv?AkUNuĹDHyJ,$q <\Bd ]O^g@ H >0x޳IdiHFΒ!^lŠ\9t'tU>?awdGt#;a&NX>x60%'MVl%pvGY%L!}ʼnF;>_:1J| )'p`u%nӟ-/7'rӐ7 :,_fλAXQ5z\F $^ja2槌@DB.d ^cy~hH} (D6"F.:Rt4!ϛϜ/ 0o:hvbr('rlcYZX(y KHZcms2Pӵ{qe8gqx?:|ÇI^//o3V@y'4o)$ ` re Tv14Bs^dBخK_Koh'S'!)l 600$&EbXuy4wI0]'қ4'~%֨pSTz!\mء{Hq}>.;"˧{¾ `_iǢC5o|F@3&JT˖g .qRژv֕X*`f>N_4u? \ܾRcHkl|p8 F7qOٳ7>Kʑh'I %loB2䖡ʨPB8C<$Í~S[LuznW\j3Ƙ &ƈΤ c >Ϋx3ߢA8s!Y|0ڔ̾FZ ?.z\T 0}T _@}x:l$1a3ş^INs5s?~v(i!?z>sTCh)l':- ./s۴۷@'S?C%/ 9~D:Fn5#B$`rvKDZ.bm$^Fb8y!̥a/O9%ipAM\׺tfaO}~v x(0tk)]= UrzWu'n#{Z|zB)lV^gnwªoڄApYME A8~ICSG"R*-W9xOX73??dKgI8I>L^+zz`i1ESc* x ĞsJ*P(DdBO t:E]q0$8G?ћDw sxH= ;쪋!=84 5,F BNX17mMG执Ep~ϧӋi<_ ep} Du %bO$=^ݛ$V[v<tբ:|@n ;ZT)ًI%0{C*{#Q߷I$ V:D K!G9=\3jݞ=X D pӵ G[jgJ˧~f@`s{ 9u¶G>V^ Xl؄qn90Wkq.3G"A&FV;z?~YvK%eO._=/V1l萦7 ch>֥3{5zuڈ>CTWN6Bt M =v5Mj߿8dqJ|-% B}6Wse-6-S odOdP-v^qx͇SOQV-xb<}3':sx\82Ց|XS~>7N|etH{#)peoJVqv$&ŎG$`Bm%wQ>qU۾ &)*VV"6PV#k]- !(D+_ΜW&Y\3š0ۖ-! m>G׎erMq௃:|EU`[hݲEcYpF|N6f!MT׫]4W ;,`8gk@h?5ȷ<6Oy_-@G?W Q#xP0?;-Mĥ*{|mC{?K&<8+ֶEB|޻Cx`x5 D̻{7[| Bt$5*E:p1FP?h>bO6Z'2&&'_>nfM,}]ym,E1hrIF\M4Ƣ!F |q7yw(šN..53z7- >TZ~P5̾ɵ-@FH-c T3p]}F+s~@% Y;)9Vx `h/L[f/sl[uT;nieo:fu8z$~ ߽||/eoFbiN+J${HD{d6g `[rnwdn}XIjY2`OfVz!Mw9~; RyiVVKm.0dcck1>#j~C̵;bjXoxMj9y@PIENDB`pybik-3.0/data/ui/thumbnails/Brick-9x7x8.png0000644000175000017500000003665213137372615021025 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+=\IDATx]wUյ~ަ:4atI`C,h"DTD4"RF)AhLi$RϘ~[{{Ͻs@q~0ss^^[Z{Ͻ'͓ W3f4_h|5j@ o%l6(V^Q|qwl=g:dZ4dhmaїswC}zo}zf0.W߾1m"Re\ n [ ?̀TuB/[iSVB tH=1% ox:{W6uchbBD<я--4^zBzdjV$WJ 8ԮՑk~B"yD7pg72\Kz{ b6l]][Y*dxx$x@~ ?DefC>/wZ0џ >؊wpVFKQL.>j22c@+y콞fL;T'X%L+b'V*wi=4~l1ggC=Eqy"q{P-D'aȞK@)4|q5EPDk et_]2ɮUT[YGɝ:9d:>00k1UWB Zn01pA0ׅLS=Ow9^'WT7@UdX)\|w9޷&' DZNwc d."ZCgw2< fPI@PA EWkR!lqhi3Mv%4ϑb}@QD+{8[we{Zo& 0V0!\ X6_!cl%㧏eEdP Y b{y)* +)|OM$@?\3\so QM> 5Ӗk.+^FGn+SCM >7?J oÏlȔ.x!wڦ~X|3gRf/8S@߾>Ǒc+ SXl8Mii5!ryTG9HC!0L` v :(݇߃48h4#8 ыAVrz=G/a?O T-E/@;/2uL[TLg#neFvTxWPߞaEgw> "r2ִ C+ $%ǘOh_1+a{{\h[A oS4J-W䶢c>{E{&щRCq37F"p: z!g 8;YB_,azEA3k(޿1`C ^]*vHnK 1Ȱ z 1yOq-tJ0t&`! W,)E61:V.F(7^4] D9] Lt&o3禄njI 8B8? VA$!bނٟoR^b3vdYp_4I(" G4a k0(9~Xy_)bށ 9Egk9iŇ=cLMć edL}6#&穰%hx0Be+rXi"hyiKƒXw ybO'2얬tbK"{9 o7&/ 8D 7uH]{E"qvޖxz_CW~"p}8C}/ QEO+` bK`3,l;)l{ ΕEsOR_\ ><<~5N3R+]U'Jd_fx\^ \p }@DeP ~mR)^B^Gce[nv7rh޻*DF)) *,Mt@ZXO;Eׇ,y0xfe 7b r3}3i k1z# U裱[A$t#XJƌճ.e NGv|3Y/hoq\ex*'d|t"fgxBE%\DJ,$׎n7=eg{ 7ޤgp L|JnqTi`"wwCJ P,C.,g$y'3Y :V(p{2=dAqbK_ґ&.A0XX}|3Qp:& 2"Qe}%Zd\4/šѳ ]0ScAQ BoyDG2 _+QBs-9j Vyy2O^Fhm7T=oq0LSe`j}|*N͒^%t،qӘ2T+&6QZz`r>384QqDh0dcO̮|1oh&n!9݈{ԮVv#>L\3O;x,맘(K D5^r>2eT^Ƀ\{i3ԮLvrlw0 98_b|;X+rmڱiqXUWGo}ZOc^b"C# D% (QzZM: wR ) 0 detWv=@GㄐsFk"qA(DigFRzN"$2ѾBH.EgS' -h?@f4\>Gk:!5>TK N#Ub43S\벜  m|h7?G^aX}$ȽQRbm0OxW8R]dӸ[YnZmҽHUwJ>g{ 0\!8b٥GsQJD4F`KWɍ d0;Hۊ^+ 1q+F@qyn149 MHCMQ+|;ۚCB3Y)\3^8AgL>> J"R"l?v8qWQK 23qNQG[>_m cCg=.mOǺx9D`V4]qLE2%3S>ŀFq]Vs',0U iwXFĕ3CV7ݕ#ږC=b䀸}iH\[:5 +TH@xoKLɇ7p3yY'+Fkr@PҠ++FM"pYoI|AdXɴgXXK;"]ψB;drH4㵎_ JPi?A"eRDA}!GLJk 2S Y%I=͘qb֡FK׽L%wQ  }{!eu7 nj!_jZyV@d `%wpQE-icx[T岚Y2{Gz`S|R_(:QЯ%<˿ʈ(_u'(*D6@l$/!I㵧 1}3m D~Px _@:"|xxOP~&fW^E9e2jQ=M兮N7\iMD|DX25/\V*. >?223Gj)4c"vi \ቺ st 5y${}u4X{llbR0h Řҿ hJ8bF)ES-%1 ?*dCwmk-ƙ i'Kĉ7yC펄P ؑ^Df&}b͕ pK $UݲXې1IJ9{:ȹՆGR jKY9 L^ztc(oM:CW"oGl*=Caho0 ܡ6:'Z$~W~ͤJEUgStjo;O , U bpJ)ηhk&HE{7`  V{Mbr-K/Q@ ߤܾ*jlocݿ났a%8qvR eqS!WnuO+^1?Q@X +_VbheRv1:퉞O?wS|˝?rB\u44\߉G yQZf\%Ze=:rE(WTߪ%Y!1~W2݅tkgx(\LZ@x*]++,c;QqHS r1).\'aIè}@Yn)؞-MU )`vPI$J B*m ,P>|]~?C6yM8_z&{cN;%ND I< 6O Crc- $ 0Zm=.Opv%#wA׹;iCQvq4qeכ\bth@A +JUnFcl} ;x 82.fl{=ylYsDɼ~im\|M^i5⫏ʏ |< ĪMׄ[tr|YQ1S<,S^ Zn9Ĥ}Q,>vm$X< ,N2j?B.=UL~EÊQV3:^Nq?7YwJD߮>1g_wb-1lFH8G_>p,VUFF*HnwΆ#h`<|%B:Þ#54Cj ҅v[$_n$ZZhxXfqP aΧ4J*M-Pȡ&A 8K6B]N JlO)Ot#@L .RSc1? xWCWEU\A:"K/V"1ԓ+DFYU2/20zN&ph-?f0`͔Ҿ~]M냼{{[#>`qp{L i_4/NS馪 ʸzoG0)]; !unX(P!b!St+Ri&V>*|]㼐SƄx@ ґA&SWEhw2l-W[&`URaFp('7Dccd* В "`5 m`@K U0":rbx?y)+-ձ.-7dsi6'~<˦9?D)]ͤ o@=hHop9 lD_>;$Dv_./cM59Jnda\ߣ 2f7=cCk0c[j2Xjkgfl56 B. ΏDXG :Y!Sp#>R2/ӂ+1oȍQ,*uK:|N8+>8\;4`o3k0W=(%,VswfPM'rq)i Jׁp3 dErG0 Ag ~c.xX $ɉ|OS*T"=q^n+,pAT r˻W24r$LNPE<,E/^!Ohn!ktSIFT6P7RmG/b!;%+"ǯI@aX._r5ʇ;Y |cym_E TH"?b2O1YU2o+8i8E&;,z%Y~zb8ke⯢*bQfU\%\EDV.x~ 7?fW ? B]L?&wAq>=. X$>?2!^i)Bl+ +W kLSEJ0W)!hNNG1fpߋ[sqk|Jݓ%tEQ^0qo+h#_LFޢ"R5~5R/8NuIC yb |:mƙ~xdvVp8 p݊iƺrD#q+l"|槿O.^yִiȑ`hL`~f&s\'+a\H m,[~6?Dž&l~>R1Q3QJnrק{9by^ "?+&v9\sfh#Vw`Q<]W=4% $@eL0r{=$(/qdX/Hr|qbݓ\M% @'dC8tW̨:&гӊD#̀!! 4]zEWT;|(}iX\DlsCW {t6v0,ᦑHj @B 7ހ=Widŏ&)+Rocpj5TF@A+&THtf:*J.r F'91 Aߏ Dd aR&c}J9T=tܴ0"n/ =/?+k/% ?R*~wW(eJ /_ 4/W4|S^=14hLAjdѥiY: b$Vh{4LRQpKr:)ͦX:2"s~`.=! `tj-'cNw]a|PDv01×&ܲ8DCK"%cJxmX@8EʜZ~AZVPNi`GOͽ)s٣IkΒ2rz7i2Y@ 6dE3C^Zb]NKD<S~kw_WtG{"f"tVF9e;tl@V{!x?x?}H;7 IcT!&`pf,-%њ p!Bc2.Vn'mPom `{[ )ASwu{=Gnx.h> p#Hミ/~ID`xk'~śa b%l1qZqȽR)2Y#0+`Isx?s`z[ B!8(L%ɥb#\:ygX?߃ׅ ~F)ayƮİk[|Gb >ǡmJ/o >quGؗF nTnd(\˶ݵԞBJz"V6SO`T8DXvk8 ?tYQqh6 J:i?G6=;gcZ%ص.'a}MnF\?:|BvA r{N淍X"aEabg=BoT\|K)|md㲒gjj 6LI<˗ 8dހh Iِ)BcH8"8בЈ@wо'A;kv:7L7c֏`Sybc#ćRxI֧o1 o<˕CtT 폞/<kt} q|&7l7^i$5M8?]6@ EBBzxjyE,Ԧu>~ (`dYRP2F, ZDgޠf-O#~Y.^Z˩a2YGǽG(v'NGWE HxOMZxsI3S) CpެMY̙xQ4Ri\\BS@uz$uC {T|i8 %>fpʉ-!f6yoI5wyc綵11r(x kKehC5Pҿ!>z''V>"H{ې{;s({e{ӈl,I&|ltyZN%e_'ʓd䐑 M/AYD/z9\ s&`~5W 9DzPA1'drr|}JsT=U*~BoZZUCaQ/98fI@v/1DlE*Ltc8qxm<@J|ٶlJp \J4WX  }( uoorA3E8mۼAa!OpN7,tLuѼctxo#=g;wv@I8I]"Tf)(q4 .9v="`W(61L*k>M>A[Ag4GoFBf_cwK_̊S*D8c ]͞KmWXށu29!.XJjF<)kD=.Pf'x4 C @هZGM? "8돿!D.?czjQ>ġJ0ynk24xڭPEZ(NP$6r*0Ll㮡$GЋ\M!  2C8--< ]?6S_Cl:?`af@/tΒp ^O>@(wcuTV!"G'V:{PJjߊAq0y͒׳f'e J htrZįnر3tp-','kglw`R|^.Ov8>j8 r0<| "nyciSo ̬'$uHP@xE&i.q^DF;^ !"b"A!^ X !Gi9C>`PJm|zuq}P th >Ebiu N ,[uj48EFT;jbY"-[iD6ΜT/RV42bw TKE!a;{U1@@Pɏ-`R"WY)e>XsZ )!`yx^R\4cGAEOU0yb{'ɬ 3sܿjfb@~v.7=ڽ/aq#cDv'F@=PlL ?=\Gl7*˾A*=pv%j+UILFBSH`d"@d+Shy8=+^GğyM^z8.QVÞ1CΈ?HǍitC(^DY z3E(G&7<Y}%p@C$k 6`іRx/_{yZ Q|C M/xS;cb;Wl3=$pʭ7ΛJ-$9B^`+?7yGp?>RSrs;էPvy5xopqN ҅|'Q zqӗ6xm3=gRȽF<".n;G.2'@#Ķ2? \$)Ȓ2B6cR Sh[nPP?߸@?P̩bPé.7_UosDɶsllLř;w~B%\byaoti_ϟ @OkbbK @`~@ߟ݆>E8\5< (XPN pwҼ{ )!`ܽeB28Z"w}5׮c!rށ*7 cDyF;G/lqgyJWDď!H{ѳkHnj@|FZM Lqtu05Ozs|#PYء)^mx=nUמ{OIg$CKq*}tMBf& l77Rz.zm J9š $2ֿ%]4z:̖igۇ[vYWr!o0-4:-RdJ cAmUnr3 ! ._ |}[+7|w<vH r'i+w3NDnp#j3#< JiЀO6! (ۼKOզfo< S $p&I0%җ彍n=1Pݼ&RkIι 8Z>5,JR<&KSDcv/CU(|uh$7502p( #c\6*e`b'Xe[U/8 gZk" Hi&FY.:]3t7;A萊Zw"7&;}hr}(;c'44|8zkWtURs&td'bݩ 3ݜ{/w %7oG^Nfr3xg[m< @wjdgo3f4_h| S§IENDB`pybik-3.0/data/ui/thumbnails/Brick-10x5x5.png0000644000175000017500000002273613137372627021071 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+%IDATx}gx\yLسi.Ȗ l`܋hpo@@KB1zLbZL1c08$9iQ$yH;>$997mۣ=JF6H޵蟮w|||||||||||||wN">gxrwgwh||?Co30p{c/ϢwCnΡ͝|CAKe#`E ?mn(zo}0ac7SeRml.÷_K`dKo`ȉot+Lwyq0tb~Y@Tna>f$q6Z.~eְa[i(!aY4@_acCTP}Jb0⼁0C qQK˞qluӟxǻϡr6*` 8jy}ݕO}y&{E]ϱa2ϥlL0Ya+S}S_Q 5H 3GL |_ :zAu|SDG0|VƯͮ1`,h ?Jgk 9VY_A VJҌoiv 5<δ{ws n7vA 7f 1,J=v7;ۘ>T`6yCcWg&hwxsسq>lRyivpdz|FfC y0K%s]/#h- 3Qk8eރR Fu̟` 6 V!y% 0gA>{l vxG`0}03h6~1}O.Ń'w${[K^cb#cYʘ9f_8oxe_ec0 4,cz];tRp7-$ ﯍-*+sk nLo0.Uu0#5>R><ڠf[a"!3?#)} Qa$sE?fMZ`<syyWtUi֊xD"r$e4%;yat,w/.Ǵ98˅`,\c߈&?_ʱ)|>o&0矋|@H"~I(nè}^xM;9sF}8z+{11 I djm|Y|<*Wg6߿{",H^1h83 P($4>]Wih:iRPvf1b| >}'`ZD:{]k l~3qk f+ ㋸WS5:lP9˻|8|nޫЍa#"p01C;a 43C4X݄ 9P!o<:aL憁Wr$VfsE;OW\g{ثyB̝*Ia8u!{N!E1St9eh4%M"9%AϘ(ɀsб4/uhDRۭ54@e{22JoI& =>8Z.R)`3mu x? :C+ %ߣyփ\yii׾oo^ΉFL 0.P~ Cxkd jz\L{O 6* 2ruBn-/!9Cwx7^0ɯWl0tg}M*AP f@b4`)3_˽.+J^`z^zl{^pIm㙚j^E x2yVJqߠ Рrz?Շwb _P94a5^06ܜBo٢G,crB/`0|_ YrT BU- eѨ0g+MCkZ83ye:6sL,5Ѐ"39D+=/0=-_B-|Qp'JAxl~[hئQWqpP~l"}b՟F!Wͫ 鯉7R+3 ͳ4$P a&3Ws0[54`mbP8g!pt(I!Żϓ|10hMQJ(ws_)tPJH {\Kʠe  H(DS;DV`M~9 |5rᜥiK^LJ$~oM,5ONH,1%H%o^ɵJ-`c#@I2/4M&38=[jpt>Mȗk  OjpQ!T`d5C=33 i h |ܫyX k "`̐2U M2~~q1\ҝovm4 \E/2S 0q[Ig?9.tV${F&_K 6fhIf.#gA]\ƆĆ ėQe#'a871(oxDo@ .2FG#`ҟTC=5ңWޕXbGХKdb4p(L0Ҙ ! 29ĘǤ1sx˴3 Р|%<Pzg0$1H{Gr5lbg-Q>ޓC xߗPqx5 HNUB9*Uמ#^BQHܖK"~> ?<p)!,)5CB L8C^;S%0e2wx-lƺT~f]"ˤmLNa}`ױ:3=F2Vg/}̬frZ#4zEE ö ۭ'ElRf%γ'w7uEd51W`eJ}pQ<ßlb8K+^{׃QS05p"[ʱ5os72sjfQ`,KH(-jOWM ?PGZ*a6wg V)X &)Y8%!{ j ] H(!@0KJh("G{ 5DJ >ٯc  q3ulKQAALP[8hc&41Eۺ-G/Xm:K1R 8!a $Մۀ\xu.KY~OqJdK _<nv |T s8L`*u_O-A=PD;o.U&ݶ9.l >A5}Q> _r1HjcR6-xE$x*0Đn!h>ې0T:2ՄS@L_ah9VF҇Duc}ĭr %aRΫRm^N(ݵbEw+iPE*0Ufz_浪BPR#nKM2 01І6dl2誻hS"CwcJ1KnȺCUaD&sVIy\OU 6 X3$ǔ=^C:Z~#"zE>W* `zEFzgCQs ܱ0Tr{p $5pP- $%V<-f#Nq8j5 0%3V`[dj,LSg24FU'#̅ea1>ڼsq}|r?G{eXɾT_w"JtJ=-cf0r< ,#@[X՞H1XIʑGv+Gk*\'X/e'}w2sú:wV]?tS;؀^0#DγWp:6H=%]0ȼ{'}f8ApqmHa7+ةT͠:++I,t0̘?4 Uh:~1 HE lx$!a| Bp/C7%}9{T{hU5yOj4>y}5vMsgp {VcF0xl ` 3"D oUp]: ,WdFpB-D̏^h (YX; D`Сԫ8KJ2 @g4*vS~Td_pn̡p׊h(5Ytg5꒰`?0ّ1Zăjnf.4Šb+ uؖ/S@0!u~]ILiĄ`P4f"VPB u)/BzhDg0C788O?{{jM>:P. i!|6_Ӳ ۇƷ;-pS7nOKكØ*Š[X22zCfDPtyBG &G'}=Wp١ c0Pp.cj.#m1>E+12Z~#-vwKa0o[ljaW-槛v#mᡡ&BwI([ȄrֈO6xWsA74a±pu'Hn$ J!&$20,cjsq2MP~?5o9V,]/8-Z5L A(%W0US&25](A%")"Qb\,@kCs|%F9R@D IV92%9*lN%uKLGR*Rkь P4VR5I#8߸BzBu{pT|ELS͝C*n/ xzPXV" E P) "(3|\XPey`p.%J5a$9X׫*Hb1‡ z${;8OcK>/J YYRC@>W z\:Uޣ:.PMV!2qaL%ʛ4 0 54 GW48{^kp^B:dx߄] j熍s(Pd*qM2S6͚qG4Ơ$C9'?J b.a\ Jo/=_ VY!@vM" v:OcoFP}(S>ޒ,?/0NVaj%!%2P}G@:eN^3ǹ4i 7ꘄxIU6&{'iE4s;i"wWe|M?¿s7 n_;υ (5bB V:(hY*CotyȾc`'̺A"Wx{DzA@7<դ$*4ڕQ;#}K:DFG0@VG}7l]5oLf4+Y)@f& T'TbTOXO Ë [LFrRFEr{̡XiTݝ9~Q,Y?.^kTB)t8X0¹Σlz'? xwuܙKI L3R1Nd.>B2|gȬ8G8GtYzH-%Uw7+7\ Hi2ejQUL~wmj˜=f7 ߾WIcm}Fisiok7\56hМi]}H;0mq˞ޞ/////////>_>\gIA#>IENDB`pybik-3.0/data/ui/thumbnails/Octahedron-6.png0000644000175000017500000004353013137372645021313 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+G IDATx}w|UU3KrssSo$!PB{%t!v5 M " uԙo=k}773cܜ{g={g=k}?-?w܄܄x_1@Z]:=8}bk[AE-F7@qqq*ۅcē46[gXn$R_զu]aö*p;VsZYqGN\E%Nl6fc '@AMc e-6˭[ ru7yrw'֜R`i1ۼTfEW6"2pQ!IZJB<4"H{X 5=q.:;mӦr6uj f ,uˮ\%X{Il,=P+<G ݞ^Ì /A1S/}ޙb]:E`矮l=ppҬΩe'1|ta[O1s6ЍȢ<ʠ#::V'yj"M;|B,/~}і?c}ItwI}] ]qIgۇl^Hn1aSDoEzٳd߭[ũ)O`SSN2-@$(Vq<:2Jz\~ 2V)4_:v pר\)*/O_%ΖT69&^7>#C۵ݺ֋q[2,T Hl_AgB;f tOEl4e n2D24b 0ұzhBR(]ۃt"dXd),, 1XDgUD4BZ8@9,Bz6vBfwa&b]`^qvPX+|1b% fΥTll=L?pzRnV'i1o:訌@c1xz6= $$CrAQնȠ0# %^t/+̷^(s"%iuJk.3ws;7r[+E?!xT(c]6>* 8}ᣧ1QG Ul>"N\ic30K0F0tPA* a X @y]`޽+fdz{:׊ƌfYQI@t5@Zw`G{rTM T ˜Bi|H{MP陗A!#hVR5/\><0 wŕ{4o?18CxfE6@{Eϋ$B4 MWGt$ F0 m)QLBnr {ƹivgYHs(B4~څ>oS# F*\W,O#PK "Sf4YI:p>mo?_Y l0l$;!L_MƖ"ϳ.F 6 P ҬN1[ M%!x<Tl-ZeάE0`L9u@t+4>0yE2lwYa7”a]D0|H=ӔH 6~힥B|a C(i.ԢB1!1{E~> Aͩ6mp3 oHIfޞf<R*V)#P7(%fS-gE0.71T[EK] >ԡ1}|L\8jY5 f#D95͐E}v%qbʳ;+9_;>ijB1CSv1vAvG`p=L5!L5pW{8*5Et |`P@QPkZ+Ȕ;ɐ'RX^.~Ii$Ye7'c /&A\c't?ؤxӏW wYP2ΝE{ɓ<} ^g0JfB==ff7bL31#wNUDnU`?sB3Wyz`@kzEEn(B (,,T^U(#XÞ|)0<J: 'x }٪wZ-0m.Q\-?2`0QI^Cpq+AACI4QAgj7x:j+5G\5ڜJRz:/GҵN+>f1ͪ&z  ޟHm&ԖPWa1@CZ(ani٬ \[<◂"V.ɫo6\{`V /7DyD {/('0pٓ TU2DE1 =45LRݧCf=81eFAqR52W|}K&yį4g/gԏBĝK>~fu'mVs ٵ{ڞ焇R;x{ػf?no jccFW4eL3=LQ̧HR"U]P ꤪ3<jOBXbZ2ן}ۙ )~kgQTc 7dct\#F<Ɛ>qrssX"G̣Cv ڹM-4EQsb{kU3 s(B^G᪳i֏T!$9VfVJ>!Ld(떱{DޔdȣixT&hKJON& ddd/j6rX}$"4y3rWHΖ]; ,Hб 2,D K n>3@h.;GQ1 DL$A\QSL@ifZ Cv36ѡ]i^(&>y! YOaW&@AhR:t}(My5[hpsך#B} T F u3 g(nVtp SA׶C7^G尣_I:О.n%{,q).'m'п7oYX8j@=2~ 0T1w/QHAJ!53h(g7Qid+o~T6ڣtz(`:ucx!;O4VV3tn_Y9>GB) Yr)>x$맹Aʋd~f%%)6,,}I<8:{9Ijj%dfD vCᅬe`W 0|ja+E 0D pDcif84N5 iH GOvGL-f(V!GArVbSF3|;j6 _z*M$zä"+?N\<`@8Tj%+jd08@ysD>;ⵃH`Pdt*]n#{_1R!2rRXoTW\I$=ʅ1=Jk ;@%y';z,QTT$L M:dP@/Aѽ!>3Bfk ,=>Ё\~Ϲsh 4rFf@,Ԧ bD%1xP:nz5l1D $5f|ԬG($>.A;p wRTj$xy[ &=dB}T&W{3Dd*oN20Fr|B ‘#ĜcG `  tAe$Ҙ4l<@f^\8 ,V˜jg>,]u 遰5L FGGC p4n/Loxle2 O I⟟48f)Sjf;__Tvq ų4txmy:fGBﳚrrfGMNk [)Gbc/CHF>e@;/^}׽)8E. {M$fGKcy H/7'o/m6L^ p- C n9v]q :ȸ241Ȗ.P#_˅qW-Ee8'ӻvs(Ss;Yx.r'e~Ww$8zwvc>NM}+0/4gܳ>])BV4F.;=woφu |>B2}Y4!ʥ00b݃I3_j R4eZD~C.rJS.? hڻNep]b9\b 2m*4U)oy\9#3OPՃ짔MpDc ֌‚>*QjR To3ۅRw_>~?U/ ;(#TP@o{WvG>yo "҅BF6%D?eq 'dfЈ>p}A'_dYt'Z#F&>a( / շ*Nx"05F&Ƒ;˵xf@f jֻ|l赏40&)d HX` 2E29Hw,k`hpS=*߼7 tJjw\xNb#Ǐܞ=Ӧ@POjhdp/Rwx4ӬG8bF )n}n, \\C=Kwg >W1X˼l8SVZaSh,^.F.&yfN ?/=)scIpH%hq$ċ j@~xn@HJA[6\#4A:0Y^}&={aJyYOv6bPĴXʼn'2? m:c‡Ds#τ1K t-7ΏgygDt}V$DyG/i6|Xy <%_`C bJ_!CT;b¶' LۻH<[m;p"˲J2^ k01wSg m>Q's\W,7df;{ R8[ymG$5Ȉy951ߒlk|z}  Ej2\h+7LF-G7BtP^[ؐ⋲P ۞g i ^`|ۇ5$No4B ^[R౉%Zg9_[z.]MOg7Q(Ml'`l[H4\d̿tz#Bp8dо\^n>.DdvqUG&>H% pŔ;\x f+?lM1Clp3j"v}9[qޛ~6HdM#[@vDQy"jKFdubpP_@`D6qsFGvA#eȽC{yŰ^.n"kŔ|x0h:xs7I0{͵(֦=_&;k(+~+na.P2i1}:dN։b)q²2 If*K15;vx;q?ab"sJc`e.= \#6nx[2te`t vh+ *dS6gsΩs]pCn M!@6 Gfϖ@W\n,b 2t'1=f2V\*'pd\̅ sb1f1t.vpu/q9b5^rhnk[ߜA˩o#[#A^8Q1xx.T0ZtfOi}!y8PAw[К}MLQ|j&d>g2޼^@/a^(..fתAPHG3bf8/60>=F N#{G%K6>e:?԰c6'ʪ^E^rWg4nDc cdu&zSf?Kd*p#ƒ+xx=|cȰ@ʧpZ=/2HS"/Ix Y%hF<~l($]khӝ)LHѶҙS'l|@XAG$7 埈 vW]TtΝd8ãf)~NTϹ3XJ"d⒋Y%rewkxU^]Z=H3|q,tkSk ɶwA{L!3O ~Rq/cOe_N>`ٜD<~ef{75>ߘu,u˒c`60ӛB=]TbņT3٬v]ޙܗ1FnXFDW_a@@l͝ D;v`N Wǘ=˟>ehXa4qf[? 1BOBz˚v 0;ʙ2 X<9AʸDSȧ/d"J65T:GIO%rw~BHrQ6e2rxY-nj)JJd;e Sv00Ke#D ~+oJ#Rf}EG,NPimel᠙6a]|s?yiV?"ԽWIgE Ч s~lJïxfѳrq[w6i[t+ 9aK|/3@hŦR8E&$Xq8o BYQW\ƮAw^V?d 72x &vj : tr !C8K^!Jr,qFCiN̰ Ô0ޙ=ͷC]4zn6Ƀ=}zm]?} z,?%L0믟oť]]bD/CpE ;PW~|?G&nd:4UAc֣[KŠx G2QM2ttR^SƗ^e.x1 ާ0&d4uEѬsm*˭A3ܦ>@`!=(]5C_2k E$m|⟟F@0A!1Zyxy`jR:B6o Y^ΝB, vȺAbyF).(6s"S3;3g9sr2>aCŔ}uw`s9pv L qeSV3TOAԆP`N h(.ͿcVף~w?,)\r,J'(4 DJFZK =!@}H c"d쩻vrLeZ6zFMBzHFE%漱s> T' faQ'j!@FCS^ߥ IBn!h:Ǩcl5).a|~h8tb9evvaǣT'KN \s?$;f6'|vX.LBdLAC.T=(|fn2BXS5O%dИg^d gѷ=FঋSxѝW%EG%`-R|ѧ"I|p0#{0$( E$+.N7-Lsd!{}g~Xs`KY=OpP@h^bҎ\f'(bPխBt7+eoHNj&Red9J]9lbʍ*\97w/W)㟬:9Zn9g[n1Iȕ/C@"C-V^~0V1G]'V\#M2lroC@׹sN^ϏzL"o%H&gZR"tV0m\ |̑ A'#@+n~bCPZg_d]QY߾;ukV{쑽q9<CLmWij$9/*kn'6? >*GKb @{|=z 3MaQHKvF YdLa|lޱa(΍ {S#O~=p}P(?Ud33^?4nk`]wc/&F3 7m0*{jxz5Y>f F MFН*=`"8*l dA`Y5$A퓪ݯb`XOuG!aҙ^r#^^꟟';"ɉzdPVhVYR=!ǫ XϞ5 `%6x LRYq2~ǚM1m86qͨ@@0.M01Y&%0+Hd265}Y w-1w`d;TxtkX_*rkr70JM`Ԇ&Śx2`nj z21_Kj~3 03n]~p2 | ܿ%1l||LQC9n4:|AUݿX Kȶ?ʤS6*? yď͠'0yąchQfRe\XS"y'*|z-[="c;i"vJ0x/zKpTtCJ7弮r"x(ΏX>;KJ@?@5N0it+HUFm]/?| ;Q{;eT!^5Kvh?Kk)/|X'Rlr v(dgPσu>C* E!k-,/u/~fβ's0l/5v3Y'2VKLn*A }3‚-YAx38ORf5һe2cZS[ fM^X d;$RZ0F8c*`2q}a|hy=i ~I֯~v?}my]zgi43Y'm,Wc._4<c7h ˮYѬ-~]rb>}DVrf3պ"6X s7q{[}FޅC?*މ~كa]`LNMOI "1l3/f6AFo{{c @Dv#ϔj3vY 3CxN <<OG'PuXFu2p-zdO| 342ѕn]z ]8q8C4q*!-\y24`8򱳈1>! >$*Hgbь1/t6rQ7u Dl+ 5~Y$ |h20X?8eo n@0Dcy+ogrOj[@TyMDirDIū4`fxR˒ÏR2T4<Dw0e\cO'7osK3^o~{jaQĬM]",(]ӄ.4#)K/?g?ͩ2^§do'ӿ30|Gf1D#|P/UD|>vGx`3E: P $:+:SʇYN_")G:3O'Kۺuv1D &΋6HZfup?g z粰 8҇\o{m\邍E $yhEsXQ z4[z$)."OklM4Y4w!xb-3˶o RO be>n IcgP{4t^zYXtccHr#B}.qV =?]i?Im  hdgnK7`㥷!d g2E5ʨ5jQwI>‘\gc7(~3[eX8͞j_R&[>K|<  Emsy!+?S/6y Oqm_g&M j%<$9 Ƹ}%{n֐tڃA.Nx wKwٕA)r|!!bt|H'Ig rB7od`|,3gOQ%[$Rܠ7B$?dxH`@ |8<Ѱ1Gx] <8O+ٛorV 1%N}Q8փD=hhD${/u4=Ωk 0Cӱl|xb4`'$a9B?>l!󏤉0 c(⠎m4H7؝N쒧nE) '6cȉ'ÏiDsм'`Ra%W2a]<\:yoƉ4!%L }τWXJvix&{HqH!5aӈ@ B @͑)%ܚJQFEn S}QDn6%C7ʔ=yV;}^(曧d-ee#sQ|;IR0I5(~'{e .^?'J+yo<& n;OK&w)İ\z5ϵ6pӸrf"Lhl9qwpvbxAA 4n0ᛊq\D5nid&tr"]a?]h&1p}Iqqb5hNCWx<:sSSx!X#_^.YÝ@CWV"AIPy#o 1{۟j=n@Z4C"P"]}Ě十XT@ipVSXbV 1xFDO+xvn7L]:jp~9ܲfx/,8^ O\3BiI̚4hks(̀87f ǼSC/;t}K1:䱣5.2YݛP݃7ʚILݩۊI~! ?tk.{p8)ڃ V&^TerTɜ=qB8reşҳ0^$UFL[IijI{*>im¥ᔡVk͝@ln >}X'ZQ}CcOq{bHn{5 qB33(D7Dze= wRxI+I4c3f L4΋HZSTڦa(Ndݒ0 ,.ݽH|FVDnH'!ٻ jGl G ,!$,~N-LcT)>x]g(t uÝJYjسAOleh }dDzVSDeB*"f{{1ytIƿeQom 8[c5ʃNWbRn45 &^p r6@0OquT)b7лBE3klmNM[7{)ˆdpO_8..hjPg$$ {dWfz"TS߇XݱS,?^)C1=H_tJ"1~AB=2[E=Op wԷت6u)# *cRU$ex,QGe r>ٴ"P c5R[U]ˢWH Y( s&&U ~fӊ@-h>4{TJ6&<[?{<}XͥOKY=8>%V)` ZF ZrZ2Z2Z2Z2Z2Z2Z2S$m\vIENDB`pybik-3.0/data/ui/thumbnails/Brick-8x5x5.png0000644000175000017500000002552313137372577021021 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs++IDATx}yT95P~k}gGDQwDMKqߛ5 "ڢ"?ј(MfӓL&cbnuu~@W;w{s[􃍷;N. w\;\;\;\;\;\;\;\;\;\ADc^0~S6{*3?6NG jg0Ժ`k6lc`g7'3hyC =\~Gƌoû';ll4Oqʆy _rCŷ0~YiiSGntL Ρ`6|͞_b9Ty-cl뽧hIӤO73~n _ xKpMز`yX7TtEeL*upc-dcK8I0~y(DHPb!p| # CE2>>k;%x;3XgD~CqWm|= \2@ps:8=Wža [6\GJr͍0T 4H7|/|?50o$q5~mMubaγ>H|ؾeYd| v#7/jpLPk5X.ՙA-k' df0b^~+`|:0w5y8]y.ZJ^zL~W7L6O,8bt}=dgyk0s9 ;:~ "BN/m||og?stcK%/Bㅁqbq!hU :u{Pةtc@5 2gRBws%_ɏ2  pk}y&؝7CU KG?J>$3ǃ| 9\ RDR39Ub0Uog{+؝|rLq ?bKyܳu<~ yo#3ɏO)!mmOQ^TQ268ip=p! \Jn8E9l>)ٍl(vY N-yaCAC ^~H{ڱO'*(TG,9bY.{wg~Q A2b^v{V0Pw.ͼv.БSU&H%/ۗB!b&Lx"P ֙ɲ. !q H#;۳N PPs.ԟ)(T\b>n,c8a01:|wh#8, zHV: k콚52 ;v Abvd@O-נ͋|,{ ]f_Š  =pC {2o~p;`sN7 c l`ߣ:<RQtTM /naŘӵn?bs4jth(B\͟!S1G ^UCqj\: n;)ܓY?0@Nt 1glB A bQLOdh Nclcysx{b"yc ߧh ?E> B5S{ dw0h : O]Ld<\aƏVZܲԧp˜ަ?bNWMe|y " OeΞg~6MBGӫ[5ujKL^lRtqq̜&T`ڑОy7  e1N"-L(rRVd_]QǡgeZ| Lm;7y 3bؗ)S|ohOZΩ؄ {C^G(=34?L3`WFޤ |pll l0S,On.bꎟ2^<"m:Lko[qXx>$s6>[wg]l~-B`,ӌG[?_ Qb9q =O?|H`x@H,e7i1 whpgUZL - ?.f70p1I**L»ء@ b4 F@q}%};_ 2ʼ!#ǮT5yF㡼xSxAbq&eoNnx9ߧ2lF|/H08DB =e@>ۍd{6>[ p?,*Ǒ*4nY]cV4[=土_  $;3~?.k'k㏓lB]ߝ*yc `6c|{ n(5QExCً]-0@*c7~+?k~x1QIJP~PqFo/]~Q` []i@`r`L{!/6aS)¬QûTs;{Al.Dէ^X ѐ vq<Yk3~!}~f;C] %&RZ45D\Be-l>ZE%TC`&g OGuX5^aQ'#B N23ѳ4?T%<!FgѮ,;k_hRD NfHajZE<(fɤ0#O?R^T)Z) \{]<\=mSw@rI^jvI8DTx^ ,A>#S.Y4:?T]N[Jϵ#&Eg)[ylp_s^VpRl8i>5kH7iYi焃rfv hưߐv}XTx Hl%Gv1> {o gIo?8: #-2 DϤ0W</_84C2gx+ &0|!*f&H_0f7>6~HCl|As >i<FE\z>C%ܢo#@LB |[Cӊ9}=G_3עۊG.- :[ śIC $! TW+ RB1.{#'5} I,'ܽLU"n*?zklM L"±J9;Vjqit;1CLU:c%i`o/:ON o.?LA*-aBx8 8Sʟu8l"+珍-S#+i0CD|1xG #ڢP"R 9 ibr:QTL=k]tRc\1?")߿Si oح'>ưΟe3Eԥ/@BC0(yYBIႆE`8($2<G-zS@Z-H! LL20N{ 8'`|e iG>p c1CǩL 4ݛ )PB{}qNa+;FHF.2$*W<ڐ;+6OeǃTWAt0,F(Fh pfѭk[zL $< RڅP0y8gWߞ y3E\;x7J (@/' *yl~5^`~A@G oɨH|1}S)\Q:8p|>%(e-X .Vd( Oș9ҽ8Af+` KașKYT2ҤRYS).}ۆ8lDgSm`eYA]PA@/i$p>ԁQ';N_gFq #y0CVAX$` ! @!YHH~`ʛ8yѩ6!x(e7kw ]8O˦ϪQzږB2}R" A H C/X(n%ϲ[PЗ׍"-p CM /P.4R^BʧY*;H"C58@B)b0~T[w99:[Tqx j #t01.Ws+eG '}8U=!Hct12BʸKu; kvl74\ o{h2ZU)$X} W@|8%y08-L%qUy{FH2i;:˭A2sџ?xԐo~E*F_UF vM/ PSEi\`)g6ejQ (- TxJ^i U3ྕg(*yD!kBW4@70GJ`/ VfB$6^,$ipn/5}Ix%cL9$D"FDBa)4{08L>&}?Q$͟ 7ƩРk.Uʊ|USi~$ HS( tzIeQ|^P8TCO}cg+~K*M imi1肖CylM99%#PA:t9fn7#4XRI/T@&@a0{q]”c<^GW0.gI&ڿ=KfQz7m:>Vw EHH݌!%qZȣRN%9 tjIy~S ZA lP~",^1H K[v@(A޸:TRn-iq?~Dԑp! utB+Q0_;=?C9ljjzĔSJu=]'YKD,*)$AVPI2"Tc;BBt 5tJc!>9O,|ozQTlEՓ뎕oκfAvIBlS6) aJhH:qJԭgZ@ E,jjy T?0rKiMh/(ͣeq 8 Kw7?j +%(ϫ+4cS{ԭdҨ"\? 0`0fMx aYWnH48d֧{`y2O-KEE |ㅩoI_A+Mz>{ma\a}Xۡxt m(Wڵp"b@"us)4oLҶU瑒m {kJ۲rzi9kJi!e0r.@hLNToV?pvy:Fox<־K{K5O0 qϥק[<`k{BWA%Ee:2xU_^1?L.Ģ)n>^9e^D$(gk/rZ,N%[E!^>99-tuB(&s<v'*58χ'R: wں.Rc5i&P"! + xhw @UL Wg@Y?hʩ9bスx7n\^eQ~@ "vkP("bmx`Z.^R-S^!#KHD{JiQivi_0( ?l]W66xWOځr vz)rw(z+-&j0.>' ; ^`".a(7IetG9? ?wӗoy'ww:%gd 8`)pdP=#t:+LWs%u#f8>{wRU BTh?9'--c\qYP72 39y =.{I Q3޴J~i]C\!CD#r? D Ow<>y݆)fuS `rd1cz^?TMO?4}GmnPuhBA#HwNR? ۫wpqI;z73Yc)`9wh Q ]{{#իVnxV\BԎ gDцwf@'Oo]C];.Eppppppp]+rWO IENDB`pybik-3.0/data/ui/thumbnails/Cube-3.png0000644000175000017500000002713113137372517020075 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+. IDATx]w|UU~>@ι%-'7{jAzB):f51q华eַss= Ac -Uw:~&M8|1Ʋ(oX5ȑZ J( |7y$vQ[6Ǜռy颭36|.Ps׳SY? ԰n#a ʯ*o!࣭'H;La)i _0qf2_h=8]ʖ]Gb y㤴iCIbiU 'ЎT4 Z,xC Xeddキk/!Ͱ .SHE?@P+ )2)+ucftbNg;}*> "⮦^D'VP $b($c id.n:]z;^xlBnŵWۙ~IHpAמKa}l/)+kr:\ $&U3 „? ߓgNZMaCՠ>T<6YAAc.\$$tSӗ1?kP:ubԎX0|C+hg},C"Fޯ#%@p,eegg3΅֗\8q ӗk BG[[Z=} R8{FD"mܾG]Nhډz EEE,77eeeqAO ^|<[1 FkNnm_I&Nvڔu,$['gϞ\;\ȘC p}H1[$w>8Ma!4j2",Oa-ZH cnZ;g 7 2$I$Cff&tND[&ps}‡W4ǐǫkh_}FyqrP ܸ Md\5ok+ qݻ~qbB,a isu05~+X&.xҖ6'EUr[H adH"G--ܘD*ѬI5/T!ZM:\ÙD |-'vg+o^>ց-udLFKl>W.Ix`*^\Ee_)fۮ*nn9ntwzUtq؄" 0gJn|x7אЁCN}J֭[7=nx!-賤*W;O0igㆊVˆ^H'1J߭6' 1'UhO$ܻF`8}Վ-?Mi \ד‰az躡'E`ݻ7kdm)Zq)ӆ%3崡3iPR:>6c(|l|]]a{ M`t8o2d0G ^\Oy"A -8Sh&}L27;Z' 7'6ZBfV$~N[~.M%SQuQذaX׮]4* A@IXq0 8\6ko8̓a,BEB02~?^+ }k=ɒ |, ?oKvh5,@"y fQj R}~ c#lI2.b-@gDȄnVIG {BF貵KaE~S[@^jiVgu](|[.ڔ>NOJ[rpZB^ ډ'{=OKql/b 0Q|'e`]AVH{{'Ě2~n* vͪO9I_.ṉs5 ?|,.VfjFQf.QZ~`sÄխ(H Z`ew:llԬ7nRMmu2.|r;ON4;Zie`*i^TעsA"(lKc]B@52B+U~(;O 7X+#r`-ۗUy`'SO:8'p-LHZ~"7$֥t-Xif)BmǯO/4Fh'eZ7HȞLZ>HiK ņ\Ľrٵf̋ wD+M?uᅛ@?"plgxJѷ Sm< 7`[VD2D`W@0"VԆF";,>=g¨ugK(Wk}UJ+ݰ 8FWNǓYZW @ < `AqȜ@`$NF0)\yK]짣}֙-= őIgmskr^2XJ3tr 0@KȪ`ᓏԘQx)m.[4˚/3I3dk`@1F %XuUtt @Z"e!0䋋)@`.:yY>^/}|{'o,(Zk 71pGx*M dF-%y%Rr𻗩쯈CXw lH_7S^M/β1\2DxszV@Jה'a/gHRsȮܽHI. jF40TUUq@ ,-J/%hDֵ@{ %]R}=>s3j͚֫1Ɛ)U 8@ ƂU~#p A1-D;PaС|Ȑy 8 EZ D& b\-2v,2FW  D;+}6@n`08Zͦ{"I6C(|$I^8A5S1{xp/ea xR;泽}X?Yo2O G*,Y-Km[<b2 Tf+Tt?p@hi7چ EBF2~~FXC#F#GH,kGJLw0 "/߀$F#6t La;tM/@#MTgn75xkE%Psk&d %^1k {jcx$X'_z$nn,a/;v^[ҜXT5( .RN" 6CIwtl<]An?,\ p%6Df1b}laK~ #%`+fdo*enԘvwe*вk/t! M$"#ZN*#øhe'j[o]\K O>WwqP8JK;g٠_A`(Vt&'`CX<4%wD>{FM]15a3x 1[wp"ů Օ 5e@p \#`X D+Tn2K  AJxS Mӏ\/X . |PƊT6n}E{xk=<@|f=!P2UqvE3%L`XMqʜ=C|"oHғ@eFy4 _&c {rkz |-LiP8`%p\.;:L*)`\*sB Y$z!SI&0LIc$| e=;g "bӻ1DTIgtcXKvT*`-!nX OBih$ D?&I 2o-؎8fN)' gq"<^`6v-!/>`q@+W[9HN-$RI'GGc|lnZc]y s '5NK5GUH'fzi&ˆD")Z #5t0!&ٓG|/-5ғ0 H }yo &ew9Eu09cyfVeVݽ1g J_/,Xvvglt)Q\q$0X*+. ckfl}rp⥻BS߸>mJ8!\S_i n<#6FQ*(֐L[GìDVtPфkc_A/-D||Y9{`DWBޙ e l%z wawe/"PE!/bӀe2'1X`=@iZ`Cf1 De!|Y,߰Qu.nbY,"J8Π=z4ڊVxyX: @4P2t>sUIa4ȕs{* Ca8HO"\v퐐f~VgmՕ"rz('ˡC3u3y2K8fC QHPpVH!Jh >'7_3w"3+Pkgީt] Y" M \oִ Sؑ̓#YB\Ýf FAV2U]{DiYQ.Y:*@ƪfqlF(,ha@ѓ̷({7|sP?8X72 0 (g_I|a13Q񰟡#kQ}"S@wleA-vGlj7&ivώ^Ý(N W* VDɐ8I&&\CmK{k&L1̝dBaO?}-v`_ң숧GSq0F$sMT-FXJZaڒi@^܌GX@$yt~҈ *$yĽI~ӻƚ_*1 ? ?//5Z7Ϙ<m-A}>41ub#'!7k*{PMDOF!`! @j ӈ/ _@BJn'hFW@a?SSXrE.1yuR>kgn(1\Q$/St<kBM#Q#6/ :EukD)Q, il1X*t03 C|$ c-h4~g {NЎ\S$p!}]h#ܓ"@ZnPMi[T 0f6&9\2#V!|a9U HbE`'{_#uFik,#L&/HCw(]9I@h"ִriBZRaa`&"qt@d \acK@@+Mh;fEOE>yVv>;LK^#+l@g"3 o}6{>/pt( е2g 8 u`ּ+TfDUD`uб5 @PI'to->M&.3gbf(w? ^Sj 6NK % 1ZaRH+ AGN " 7gUA 1gq& V>=GѲ6%"~OO"MO b8E& GtK"p H& | =z9 y6{6+r7lh?I}zVJhz5Je/Vb A i2DYF@7NNQ?U+D(,U24 5tr* @QY l~܈κ>֑D!,q0΍D @ 2pf%+m윱),kLHBTn% @@Anl+j %6'.Z cL- Yn=1tz|#ez9)D"uFd  i-d2T-:$LQk.j#c/MTaV of\ʙ2*\_Ƌ!A{w9~$W6ʠ4A5/ K8gVVҴCP! "52@VErѧE~Xf7)dENV RK'$8Z BmP*Mt$ o;`B)8,`(8f<#%ȽAy3Qۥf/ W' E0%:ʕQ,ѴB@bO3f 7"` /1'cLވ!h:@)!bV6,tGNyi{FwV4p0M ,|;pJ$xDz5ۨ3s:Aa!G -aeab,g2-Mͩ~bH~QQ2z3O($ajAŧ= \iFT8rwҫuIF 7hG؃W/ƽ]GZ~_.a=7^ {r#`ϝ9iI9U-K2(Kxyu 0N\9‹T&dMoM4ܧ?R{]ïiܗ4{pwl6?=9n^P0|b1{~Rҷ{#lˋ>|D*J(Q/5^1B#ǼiC(0*W 50 ('I*eCʉ7 9yr>sßdIJX`A?P1]'5.Td=a2:IS/q䙮| d\Kceq;0C5T! KC,Uj}T]ھ7|OYM+}ciT<6>$M՟4-= ptäFAM*0>;KEL mVѦ1Jg'ݤzRa L26bf;+BqCbAF8C ?u}lN`_@ظ4)09ޅOI5]$JNP9L#Ae HOc#C>M<טPy>=QPM"epYkkڼ6^%$տƁV ?Y p vQa4:VDk02(ԉ$4fbuK@ !ˆ2pN!M$4O ֧< n([;!w5~PA5' f@ۭS#H@$ ! @`glw@ Q$QToƘ$]aucV?NLUJfLҨ`=T5>]6*)wryP/XSzto9(dO7ZM l"uggFը&dU, {;vXRrs1;cM@^{VxŇ=B7PnVi $ <8C+46@P @## 1.C}7Qӟ߳-7'˚y54Pb@FZA7"Z= !N j1>hMdM<%ncvLȚ~7SA_zv?-t?{c4O aqQ/E$nbۄ@Zcp852vV) QNS洺OjEyW ;L<3 4:ރ(+~dY g0$%£l`: GڂKb(#eFL88 Gwf'ƎgnSX~@a=]`>S˯JY+w7VM c])Tk\1ݧ #u Z`ɜ@f::^0 .]a,"z\fq A!|,)H"˜66g0`USN GÜ)||=q簽noW  鍺U<-3v\ }\ "a<7`eSN[%ط(b];Ђ0FH`jɤSӃ0!w2xڋ_%LƇ6f4 %6 e!]w0ٛa3$YAEǕ?xqr|lsRr?%F4IENDB`pybik-3.0/data/ui/thumbnails/Tower-3x2.png0000644000175000017500000002264313137372524020572 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+%UIDATx]wU? ]az:L 8$#H^9 fI@,((uQtuvuzn]3Hq~LOw:;ٝ,i%!I"$ $$@ҒHZIK iI$-I% $$@ҒheڇƏs\ c}˄vڼqumQl*v܎;~~_'J_ ;eg=nnntٛk ~t;D0';M{ `a/wÕtGeE*Ғ/zy vl7~ ׯ^r ?L`՚۱cf ), 9[.26r TѹaSxo3+M&yCE- hr>< $IDu8M*iHnRCO; Mr{z^4v¤ԁPsB: SXI$[}w+s{?P?_KO};N*<.\dkuGWA`\#gഁ'z ldnfw%Hx_U]]rssff\ #jE}"F?BIf:J!e;[ZXQP eI4~4J-lq"tfZ9XR^+ZzCׂ_H?ovR5n{{T iI3UqGxx$=rrrXaa!b6؛05<^ה_L PeܬjYͫV/h!ˊjCl4 ԫg%6Bzm ^$X"bEw`?'mPAxN:A$,83"ҖiM-Ȁ6Vi *ΌQxgܷIx- {Y,33uؑu҅0(拊"J2l"3LF<0ՔHnՙH&,W4nC,vB(UD+X~dUVew@Э[77$8!x?9j)/'9߀[ lŭuLE.Sd&23MFGAr ro@R?7r"CT;+**b{@p; %/Kd;?I8cڈwDJ0 X(Fl0vOv GнDqyf;J1Q {L5a~P$ptB Ιڴ׏'08ՒdZgiD@Մ +D?cJ;#rw½>E!Ch!g@2)Tϩ/<\Q^BoŨXsVNaeСCy())x?(;VWϙ$GčhQ"C-GPxM"SLh;{W,`'2t"7B D)-*~?vJ|g-e'|!NSo;hAP+ ~=W#bs !8d:~Q%L1g=SkYUUņΓHBkXxC 'O72 JžLE500~hwXzdbqpg=isa5>{oOV]]{55ӣLrDdY}$ lxiQ--@ȴ:+$ Aݻ%ez.EGF\+vI~u퉒P~좮ױsCzPavf3=͊;#]M#ȲZAM,a{چ!D&2@ 2 dk U):Ž|xoH<}7 Imk D~qèժH- Y{W*+H!FJ2٪ 㐆 <si.9Qû-$]|v,?$oh?x,ک#ub`{>Y$z0&ƧH(HӞ={r2@ dQK0vV6wR*. >ۋLF, 5) >Ի6cI4GR2} ^üז?y:<ȵbX >H1CՀ_^,.`cQ)fb]qpPILޔdEqd #2o)&QsXG(֦|okG0ʹUc 3b~DBD&ʸ-Hs؛/g/Ȗ٨_u! d5Y2K$19[a"2< $6l_ o'wkW~K]{:z׋ȀF֯(<2 \ݠA(oZ.ӻ 54k2\,3TJʺHL<$=D;7g]B~/.;zK$VD㠲 :=ڻ!: Sfu6pIR9)f:͠M3d,cũc@@XBbFW@x* .^ո3AX扨kJG/Ք!RZOݲ͛4pNIMO~ݭ'O|?w xmP$Ѱ!&/I!í2s 3K93M e"DTOK,XJ, 0?r! | 0,k׮l g{WgGd HI|-z63 [us}|VOOu|DeZ&a&W" ZǨ/iaaG;=SKjeDAG}c \YH.!;~nwvT[:3b^žhl8"TKE<^a 2s*!ja 7 3J]LvgپXbv([̜}<WR٣ekxޠ2Ι~@9΁j^@$YsG$Bv᫷j #矯uϑ9 <#9,>*L {)D6TH2\]ū'}"2=I%b٬|#Gjyh欂e2[A`eep,w%/ |p8"͜7#~劖 ܿH8(/0 <ٷ t ߐ߬㧚ؕF=%'ߛP$6q˳a/%\x#IH PaI`,>>\{] HUGȦA(xi:l*OI[ۭ́m}^۬HD{ةVZ;$)͂|d)^`UnGOڍL6)}% 0Gh HQG`s HL" [ޅ{m O4EAݽ0x\n`OdUnfߜ/h&NH>4@H@ː<}x4l/ձBĝ6! mϠo"hϒ-W9xDAnKwI,;>ܗ#c8b_)&fh \[vJQDV-Ȁy=Y{,W3YdBcLl] {>7U>ƺ )($]E@kO/b8^&m1%X}qU" %O&}Ш-w=a;)D4UD-nP6nb߱@R20XuKwu)_(h7 1u5C%@$HH-ECPgt(\J>^ H!BDpV9N3}LZf_q}KX[4=3W~t /lG:XazvU+^C!b"DUPN B,sv0LϤowv sϦwXb'ΩXg7j^!=ROY>Df\o∽w(/A2r Jp'wxlG6͓! ElP/e?İ5D,( RTR Tm^|ѾS7\2T~<5ZoJ?-a8ߚ&6}lJM"@*ݔd,NĽ$AK,yGR,^!K\lmǎL* 2@h"9Vߢ,q}zS%v }.ZK,Zb7GO[wCZQ`yh/ ~dq43{% o<ڼسw"x"bD^w:_BibT`Kr{3$/7lxZH<(O'̥H5"bTw-k v%qԯ_?N15uzd|q%y|.M\̪+s~*;3?Bōh A !Bjډ5@~ <0)ݒώ"HDI_hfmA$('1BA" -Ve VX|]Je՛æVڻL\,anSw w^ Y(1lv_W{M(yT@@r$3} P9y4h }ewX.`_SL^eg`jT nb|؈JO/g(aO↑xڛ/N"ɂXnǿHDP|ቁw-Iħ %yzS'D P`~hn5\lUGT ث/B}~]1p2:K ^1 ^gBPe &~ByK H|:i}3WB钃#4mC216n"J'$" qh5(qO(efC>ۿ^Xh7D"4x2, 0!=S K!Wb#<1\^f0:y1f#@82YX\U[Tv!)6ml|ػM&)W˜䍬>&oF}~("%+,&@:JY6+xe;ƫK׍ KgT5#H6ХD `a(`υy8 G)}S_"p) MTD(7DǾJR6W+  SjFIH6k|v=6Gb82 tt[;AqJ_uИP iDx ?-* {&a G5Q. ovuZ)-L@܉ \>M)ݻ!̇rC>'GSLEi-\.,\s=#@{ RS/+P.pؓ߉MM7*RG)5@eDyeeJxhJɱ핒n[(9H>@ ](7TiQcWO~l>.I 5 @Dl ?"yeƑ o) M=w];YJ}#8Jz¨Y=o#2^vz(o|݇E8  2դ{zH^F!1pK)mA pWDvG_⻀pZ>Yc?n3űʠg{TY 2FɮLASlx e*Kqoa.HR'oc`ӾYY/hHFisɐcJf1۷'0\))A>c$C<=|_~#2߄zL ϯ($zB8A"{[ 3-fV!z\X1Cͫ [RTpMN=D'%|C5 jk҇904r5P$jBH.O1s)I#fn6~!F[JFJT @U1ΕG|My>(7ѓ l>&  ğeƐT(!YJI#ĥAqR|8B"`T^[],WHw-Pfi筺4zZ컃*WPI~T5P$P͆I|7U$QFá:Z~'cix`dL`}i?%쎹d9K@.s}->pϘzתpMPbh'ͦ@~% k1/|Yz+'ͨH d9Τ ^vۻsnT [өE\BvmMt4al nVK;$0fv!=V~Х45 "+ o TRɧ[|?6ϩ +Z'>Dغ6*QJ`R!C J) 0 (AWd/W([C[!ɟīj ߱x`H׮M0MJKI!9sj xe$V^$[+Z86u-#M8Xl$@ҩ%8I#NoF#a[žS>I=,=K~TFN _F#A~h9?"i>B9}A,qZֽ @n啛@l>ؽ%*kH?ޟ>\Mk]Kڶ][kӇ8Ĩ?"6lA8D ?- _𗛧Ο{ !e$H̿SN֖ 2 %ƻ^iu5eI'1λ8v"`f@BOԀ/|Z7z)7;5K' !vj$\~m}ǽ{1p59B"X˽ƶu~Sv4\AQ̷ eoz|u%Dn'hh grث2[M?INJCD0y νbxI#UY=TpڰWåzoIZˆ?*56zsyj.eHZI$!I% dpIENDB`pybik-3.0/data/ui/thumbnails/Brick-9x8x9.png0000644000175000017500000004376413137372616021032 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+GIDATx}wTEg\p;ǙYŒ30\sg MTh/)D^*U^^I=n9wwpEJh>Rc"m5D.3;\K׃ة8(n·C *ը~3pc7E.͇ n.iKhɭB A:CMg-*MN!H 'sQ{]c0BEޡT2"\:x<&B:ڰ4"J[u.=5`'o162=#x nlwtndDaetޭ`4&e2J G) +Ppɗ+C3PgP.5JPIc&= ewHU6[UVR~}nxIDo2=HYc+[rFCχ˛f3ĝ'3|xG E/D~bfӌ.R3;11+,tьnO)&7fa!hK"U_C~[KocH߄kEV1nVlEb*e 1^ ]_QB=8\20׸jRL@>HroV3?SqPͣ000HlL6۟Nԍa#V&x'͟b2B`݌$ouS'T%S,cd7pf5 D%Mx[4Z(-^5ouygmNqC~lU- 0<i܌6~ѹhdpm)@Zؒ21\g3j Wܐ<%NQ3 ^ AbP\/yKzo@} /ICXBjNF_g7>zH gS|5t.:wVgp8ܒPE`.MykyE|w7t[x*E4>Κ>1xkEb$/~)hNĶ#Lk]HT8ďp`2HΟSN fV"{9`Ga 1? I/Z'5L Fc6S$ك;J hF#-CT_%\b1< gpPZׇZR3AP1eE'zMjJc0e* ™/?Ro8]/f5LGL R|\9L#'(u-u< Eo"~aC~ŸMC`&S,VYK&f!Hd[6 +Íǵ4S"M 0Vs , ߅A\@Go' XR>/0.@նSLg̼ υ%dC W8/YYi q08 67n\\`Q\}qC݊p4n} : p>Ott8SwKvHew `upKո Z.8Dk5V`>OXV_:_,'|\nbi60ߚD=JYS}i\n"\/Hf2v3l 8QYAT=Oc8 ṳ H7bcn%RԲ٣d;TAVRADf1>nK3zBjen>uu?{:"FCp]l6Sĕts _P)z_ƯT@Av l\{ M1L|<% R7 .n1uWGRE<.] ۭ0yNIr&ƾB\}ciV~O{ )  *\F@Yf36˶*??rjM7.~GQ:z@ >Kp_W1Ax "ka@xc5}{̑>(4,0)z'Tce7lkgȔDr` nt9s3 n0\J7u*h0 .ߥ eM^C/H`hBr5lq+#SKz躧py{z:sT*u:@AFy/.äkn\Mgwb;C77xmt!Ȁx1rc0^d٩k1|u772DX%զe`rC,f *`p񪟠]sQUq8Z5zT/%׎@k ufpC]]vшfsyCa"S  xZ!ImH|39l|b6ho=+x:[k+ 0tU3tcArbIx0`e:lyRKbtѵi03\9Llpp<.[g0ٌk_2tׁR֪P#(UmK5yTB[\ d )m2ϧcHn_cx7{ ?) c3u0.&08euLǬH%p5ڏ J|Ųe*D`Jܦ<dZ.q3si'G@(S)/8iw*7M˻hG`hVW(:]dʠ8NZCǮ@e*Ӎ*w >ƫ')#o v+ڞ ѕylVjfry7l jl-S! IesӂKz1}UpYdk 8/!*K?8 J<#&MN}uhDHIhִt o{tn\I@/S݊ .~~xyVx<_+[Ve7.qß^+#xD2x\qL-a:6>`IAm9f:n8D `>"cFO+bP7 RBט:|)yٵ!q`sC[Ivadk' m[)U?f~(4m`u!ѹ$+"Pì`aPA}Et^%J7i\C/L q%nL3)"ET!j#oQK ("FGx ޤ:1Θ2˚cwF©Aq㴀7#EG?&,ٳj5[ifvvҹ V{,*Dধ]*Ղ{mzK_qp B̹ .̲j1h1~Аm㨧rNc7`!UEOę}O(J|a H& lrgEqy &H_@h3B⩥Y{絋++ h LN G/&2K=c,x^ͺ9L:Y2T)7Y2QiR Zj aJĎWߞ'ަTiߛrx { |ZW|rCǵ4l1q5 ?zA݂>$1"( m2 R@7c*.dcjAMT9>yḋ W+NY63tT<T?zCk~ }Ϧ ^q>bH]aCl{( ?@RX:/ȅ qi6/7 K?p\TI<iJ-;ktPbJ﷕{؅;"rٵq``#uln&n'ki8BxSi. ~b9X~F_:NV\ Z1̦0DWV}Es9!&-:[l9lq6%@w}_^q\dׯS@J b"&$ bHV'X +A:8-S櫙 B6Φ̍4ӌ[8B"u5WU s(CUT!n{H0dvͮ|WVwE!^N bv?/D.+Bbխa.ul; )y z0U&o̷ TSh+w!$8ޟ_F73%5͌ÍPUeTO MV0|Teu ߅FN.i7cUJqOa!Sw c>5}ҿπ]*7=OǪ C_)/<%v)[Qj8#sVD.Lά h e s|p w$z˹*ia b]j,vԏ8>, 7)x4|!\z<ߕZ Oz]b&x8f͹W;_4 *BR˛E.h7|bvyeA\.j=f_W;n = `c DHTj!0]# d+Unq[Q oS?X~!3y2W8d72ʢYe7 湋|/o<+fL%6$8˗yo=#~Dtj=*\bˊlqB6qS }s]Կѳ"rm !A#0D3s=;@sْ^4C`(#00]=tY^eVn2b$E4f)Uv43)UܥFBXv s\g4A/ne.~X*}~ų?+]Ss~t7 EIth{Egc^,ye*X#P3XUdlwT}>p7qZ|‘m4_@* <~ьqQ[zLQzOFk-.T\l!92dP3iݭ8v)od/<H"XQo>D,{׌p'p#:+nn<c kU8!@Q΅vA2N30F.nb#`OJRK)헝JX ;^!,@@xp Hlj }}jE_#d(v-t`+3RPC'.H;.`7(͊PExsƪ ^؁ 7ku6w^vͧc,B&& ?iΊ2X!gdIgx -S8G 8s3X8/uu͞|ȨACg0/yS^w]䙾d^XTv 7lBf d98W9˽# R<(@(6HnyIMH5,y9[(7^ iT]U w]FAULJuz.`Ҙh~W@dLe`7"uCQ_{ƈtKʺQ3)*UB}sxH @y5"*!: ^NR 'ZEx))J9S9h@u )x LR2wy1nᾠNøOI t" #a -V6B˓*T@_bbϟDEK#sȏ.RVд!b7G|Kd?<<ޠ{o7cR6s(+q~ZqaTx~ v6vt:"=Dp(њ%tws:  U0)= 4e. eG8"/Cb8%xJ.>zj\hBۺ'(/ˮ:_! ']<+H􁻍 DrCnyl⯐n.YaiTEz|P:qG,b虍7-:Eg @0 ]+##^"T~b{AG-!Ţ*0~4V? Pf㘟e,A;9doGG{ :-n_~D  w_CDy *(BDۚ'}㢦N2?(E9v\ +3Y,7畵90 ֙ARG_>࢐nؙcKxT&KԩEȳ'!2?O"%<+@Kh-I$#BD+͔. DDG ^ť-/GZv!ChقcoE+eF\gGXJ!be />)vOh%[o(F\febTDŽ4(%ug{nEISgE i gv8DdaSl 9G vfz̓Rqi8yČO1. m4o趮bpИշQn^ۻ`fbn4ܒRQbc1ûE g0.To.ٱj :B ט+/[5pǽBG ȱYR.k[nB% '`HsRQ@t'кG" E+|>[44؅L3MY?w?se?}$+-z@ƅa_&$+}cM"+xsKc|Hrs5]2_)~dayQ0p\a!{ԦZTO@D|@@]28,EEk9rOpV(BsdϕG`<{*{s0A3?JnEP؁Տ:@ϋ]YT6,"H(#@O^jq<1E!zەClFH+q87c|, {J  4=Q$Yg. @ "k;Yi^- R)5T54?R&` zӸ[➫ NFG_ dMgsX|ŭ!$\Vt*,zvUך{04fdn'PK-ϙ%FaC);dǽBJIwL_iv 8χ2t@!EgAc)ؔW44Bd 4L۵v(4uÓ{+x(^Yr /nUZf59\3!k\ L޶Jd#ڴK^`OݍU#]C﻽Ļ ^]L RLuwG$8=IE!̗nqC kW,l7GkP v%h fcyc+x# `/Id ~; n~,gw$}>H1hE[مD}M0S+5wDmn_$em1r@|Hi |9 />w/LkV4* i-rUҥa[o2iw{(|\;\ !*YwiPnR0X?}~Xwxf7Ty6`\26nGi_8GyW=}bQb0Y)dM#S8fUZ]ܛjY;`}›Ir!zA bQ f.&/w3\4 Ce9Zđ0!P@XЃ w];|z9܀@a~loJ!T<)dhrO}U!^~<]H!ݓ/;AGToWS(@7 d-cJNS#[-B 6pW  \߲^J!23͑vw lu_|KjrOU{Pٷ.O/ E';dHDqoQh2. 06ҽ+x?x.gJlrx?Z8`_z] Y׷3QWs]Ț#2*$@ɹD_`Σr1,=E5 {Ix_Β%k̓}Yj*bfM6W .@_ЬL 8 ׋Y 2Ɇ\7 &j{! npM*qpوEz=1 \ulJ8 lDb+ܱdGDȐzG,(R- z8CHNP)=3K"\C?sE3/rx.:'I3 ُyŦ9vy-hg? D@֏B V&:ҮBBH@Cٙ#rB2x .~t흢8POϧpywXzMHl[-ϯ1Ld/},1Kc襕Yb! HI=>j d p4Q.q ˿=Dxؖ(j}W6tFsA*4LR+# H/ "21; :9J,F_pα=AFpw6p8 >b++<|2H+{d(jw$Bx6aBmk A:ea1UOIM'u/ܯ0ڑ}9iEe[GzQFmn=R˲s=._X}Źai[A |8Bt,Ci?>@y'G Ԛ'B >OpQ.L|.8DVɵfM UoWPV?rO?j];QE}%f&oWTc1g&cM7J!G{Xma I0l_ z$2fTBw6~?hwK6߾Z)a/#sD(UFt)q[Zt?~ao$=-Tp:. rz8,}nG` [A{'q^ԓ.iK $m};R]t2]@`><d_l&;e.~0;"P@B7GwpK.w7}8Yh/wLJ7YjRp!C\8rp QZS>ɋMA;C: .e+b \A/jD"'w`УwEŗȸA>-REp'MH\͠wvWD3c\lfq,D{6x!P+` R%mj/Af3]P_l:R%vUFJ%L/B ܐd ]aቿ!==Ʃ~vr0]Bb(غ:S> 9E'>6,q6`_b. f+qP6H !̡gykL墹AB#SPm$v0>b))+ _SC_8麠Od@Iro!QXA@燸 YA'kqA Q{ ?o!ElrJ?8"]KDbl5gij^̑GSfݼ>];ͮ,.@Zm k kaD6zpwO*v V])&APV(;:ğ퇔sruYػV^ dc,2zIT*"Dqo3Vs1K@'UAkg`I5xYjҬ? j#+C~7捫j}A"{iCAtnNEXumbhw҇2Ӄbaw;?jlv5L '@.728,h qҊ\mh#..=2#Ъ+Q egN5C5tȪd98ӂi'3`l(y>ښK;;{R=qGb'P-Bk]tT~by v5(FA|| HY-ԝ?`xHthGfxyڃ~6qll͕`gj$,qe,8X[ZakC/CmQo(l@g>|kN @E#NuF^[]ZUjf(z+21р tR;xFFɓ,%`XQB^}vqwRS%;W 6j)jݍ$!pe,eAJxH#WCc8 Fx4ܵP;ʉ/r2ocW|\eE9Pț>n'֏aߔ-!`5=Wć[e/=kNf @)l:IJaC{ij ̱%Uvo̗+lmXvMm4RpY8'бlvAN#rJC;UPk䯈+ڶG]]~G/rBb5Wg"k*bH%`]O*$uذ9Dv*8Km;< *xkX\m(AoW?0}yAGd*qJ$~,k!/3 8MmjK+TQuV(.~ oY \/}(b qc/R`C(SuȱLٮĮVh`}:`oT }- x+:`rF!Mү?`Bd[X,v'DGcWQS3޺j^7a@|y{jƖpNjI:ĬFxSn"Zr&&'\^gX`Y,C-CxN=@ډxԌ%tPV-u{M@0AqG9:Y9"6 yy/PbR;0Xm &Jط>GJ)v“L =ksfr;ػG/m_ f0jƙɕD}sO.k$+/0`K6NL oY L>nL H6WOL8r[͵0?+xM Wu1 l.]i3n(6R Kۈrmk(E~^7@,EAf k~hR/QӒ?O/o≷qG+{;_dp p0//@{v:\i$aiתy b maڅfO@Jx\{`JÉ<Ǽ`l醿#0UԜN_V@&+ydDZ3(e3*6p\ 47/% %taޟ']lh E,k;}\i ZPJo h;d'/CM.L92u1Q DM}XP!7z "Ł0eX,I Kˊ_[ f$=&פ n0Ə/͜vvsW/fwFx-@B{XSjNz\\yQ phUL~!ٖ-pse-L@rӉt5<^JRCA/vzv~t+}?cZ\*%j"r\twgeV,( Ч=h╋X-hukGϠ?!BXO?PKXxDGR^C;43㍬*)%(ٙK5 x b>h.F %OP9tw $I5HV+k)Ϣ!U.QdtbiYSa pHYs+IDATx]wpT׽ΟttW;S$iYf0H4[1ʅq\dl8nd16Ͱ4@0ĉ'ds'e^^&o^fr{Z]ϳpJg=~]}/~Oۍkz4"hhЦ M@&6Mm4ihЦ M@&6Mm4ihЦ M@&6Mm4ihЦ M@&6Mm4:Ƅ4 Hxnƥ]qbٱύր%u&qoNgi<Ƞz$Lh߲3'ݽD0%E2r/}!@SsSMg=~oVI ?/Ǽ7>Xrzcu (b(zD$s C9{۫6?XT>&v)Mkosxv0ܝ C'n(4Rl` `@NŦ NΚg/J1`䞞+ ^ expd |W8E[0yG 3t2oz\b-dX~|6Ȑ2d"P:x~ !AO^#Q. #:cH[\.1d%˽r6˛<'a WJ+4/5TI6 WVmeIU`C-۶W 7 CP"hcހ2r<a !G b) [^d}KO9`䜒^V!|рqE=-^d2T_('0"`?J@fǼ`:?$/Sd̑c<*a 5}o}E:#!զtTY|㹜ş1!  $FkI__dǽ+2dBrs ޏ&{ y1f+btZ!CIöGA4H|Ȑ,>UσS t>d`&|a\P_yLR bwYZf$a82l2eDϯJvg.1 W+8vN)"wq Mv% ,lXXz Tgd1=@@FbT d8b_\hJdLo=z9($2F7O$v׭9  BBc^),uW+i-nz; 2LXVW9OH^n [E5 p`Yj&KFv-: WeMzOTO(j <<',PW.n ~xDUItoj}\X<{땼sQm;wN 0e>ߊKK@hbˆsIޗ*Y{Q~Q*2{0 G~pL&Vly [v:}~; Št7 y#GP .W#༓y@Rz<7?A`B~U'rwGb~f3F3Rݾ"xT6O`,x DzZ`V=M/:,y{D& fz$ktɲleT9P sHWBS"PT>D SG$H-GWHN'ehmNdT ӫއM>r$}l01,s#&D/Bglo10]2-;<-d?@u?WM)9n7K)|$&{ 3"!yO$x"ȁnl!0ab"n `_ I?U!"drA@YfqU*ltd>3A+A$exTS1OY[Xd:~.yHBg'h垇q5[NԤTѰ$ðpHG WGKZ:5 l͐Oo2;{nR#Xz$fbH)f|fj` Z_FT̏>Dֲ}<㕧0 O19`KBtN!TLGTr! HiU9d:gMX_C8cХN##x|vM*>CTO v;-m1$7y3Cs{(ir+9Enu7#A5Ӥqr?UIh4jv 3=ڬAhx1lJ֤y'1oCVgՋ*wui__SڗT%Xzol'[fϭV6aż[ d]v<٥S8( =+cr!v>*8ȹeVۆ"yx HJX\9 EyASS@%n?ߗ-.ƫ^7e%2=XX̘dUl[hysې VuI;HIw3 y2MSkΙ4֫@)r0}sC1BqS*_6{R$1c1 x(| S/e9ۃϞ z[D".&ol7I^7+Urfizػ>COS:S.*.IUUpCR$RM$V;9'cC%yT~f1g0NIE`YaxEVm4^@ݫ1rf^<*Ťq1zQze%p+<'-p(b=Qyܐs䶪3Q&"sṑ3'Λsdp #Yxm,!I9#OukIQbg AUA 'SQFQED"26V.7{}VS%_iD[ԞzѠ/flpu.Y" 4'%y@9}R!O3cr7k~[+YݠZ̤'R^=[-9>0TTMf5RnVm7K $3n91MyаyސKR f>!X,>':W3C-uKxJ ۺ 5j+՞USBaxě^lP9Źr~A/Y'Z(J4bMΪJ4ofH5ӫ>LVI "CHv̝Qr(g"6FaFjBv*V B0OnP_q[|C@}ġkT-_-4dy?kIiOC†H=mKo ̟2qS{z9.JKkmvxfݨ%kPX`>~<(zB1QR iR[xo2l!opf\u͞: I_Ԩ"_(r o [OEG|V[w2f[(vf{>OB盥/+@{`Oٟ6ktui*DC<ݯ:3X!u"Ր^[#r0vGR9sy5X e|+*YuzluNˬSOj̕q޿wSu]Dh5cL,6AV!uK-|!Ӡ EV/{ ;!ᓇ3"vuJBaaG֬i v.Ն"e)춅3|!!Fz^$1auTlX_Q$N6,ӥQD]p />=ט[,]"𧛽z84ѢWRDUL@&i)XCoW^N( xT̕}սW EJQӜcJbFm* ܴz q~W$.l/9Xt\@Fwўi"jHp!ɌLΨ:BD0/:K<8 qsٍ`QDY2vq, c2H Z ɹXŤz4)r֛=ϧs^Ucw:ѩG¤*}߂px RjeH&oQ2LU s|LKWlHȓ?ʯ,gQ>C{F%p@.#$zR5 UÍc?@_rf|?NUhw!<% $@ 2BACL2t_&\; c!t/zUs=>CeV;--mGDeT̕㧹=c6Ԫc !Q￘&m^ ڟ Z };ZȻBBG Q"drd< q $~D9'C=d?T@v$HyUABۙ▀~Y MIAB#<8+_5I!~u0*|v)LSLD ? .v o!ɐof SJf, &Gۦq?"Gn,1ھ[jW\]s,Re*UCrP !$c=fɦ5 _E339t-kӧ[" ]q]ƶNR n\UG0;} }RwWB"Ue<ޣS V/ۼ}E<9 b%*@!řT$  "W2 /Dc. B#TafsVsjuR N I%[LJ ҇89BT)s Bģޢ5|)cH'|&x2*2 !~W$>?PҙC+.E GB2TUM jO OC] -fF&"R_-O0_*%Q9ϒbMguuR(Y,%foDq[DB0L~ Ý@{VaI&pʒ1 0 ?%b@[9OTXr_4q|7 6"\VPa\&[f_+T.8c!j wG@]8'wfʤłY·]߂Vytmyp:mFn5RSZpw2n=ܱ !SQ+ CK~t0f S]o쩺x|UXe̻+Rل*mj6<);$Sόo FUJRɠS`1@O7KtO;Œ*BgX /爿~vuOh\%r6mjuF$WSb]^4WHך^ F~˵_5Wj3*f\ 5DokNj;@}Mm4ihЦ M@&6z4ihЦ M@&6Mm4ihЦ M@&6Mm4]75[,:IENDB`pybik-3.0/data/ui/thumbnails/Prism5M-2x4.png0000644000175000017500000002003613137372677020772 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+IDATxw|Te?]($^&e&2)$1PJ( fEFPT ` E]wܛ$3|Bf >99y[_r 0 300 300 300 tiDDlNdwXQ`oM~l~M{v0A/me{74坔Z8%լk"jkXS׿{>=i|Ics۲yGlQ?4.Tl^0wtӋ>-Ze5LKkqgNaGU|أ%Dz;#^{uaBPp5U B&v뜟TX9mc-QYܧx)'/`׼ 4-m֙֋نplΏFf "Fx-o\L^׵Zjwl"G铳hlV& E}:tLj߾=SFF?;sYYY#6mPVns"""(44( @>>Ԇd:1Pcc‭c6SM)**Sю9.&{QS ŋ׬ /iη%K}Gd'/Е_\<i f0[MTLt wC z>v]HGЗG_fQƯ!˶_9%#2 :݀ `)!^xO |.vo]XWٿ]"rhuzuBYC,J<:@ {'!t͈>☧TB|Q %c`\逴OgڸL7/%)E2VfL=uRD)0@0,§i(G9Ҍ@c'{te~8r #tHJ҇'cٖM 7dm@`ZiqpTQb!J8/[0#CR KW7bx>J$sbj"#mƲ FוgߑzXQZ )Եk4b8;5&/m^l8㝷=нxexݣe UV [1@E@$g kvgG͋ "=y=Q԰w^n,M=LkVUK;90T/+V*DJ*M>5ciT@c hu:vλ4`3kPukXh#Nc;w=Kb͟4n^\lC dQۼ,MZ!wk~a9/P<1:XH>f(46SteZOF'79%88C6)D:2oG?L4~PU*ߦh6~>79U'w.bziۖ$edO(_^*>l0yx?jtK03RM~Q8}y$b48W@]0hΑ;U=8GACൾ^pZ;va"8zP.u1%#O#8-\Gp%]@]0rbQ3o94;2㕵=V X!BES|L8'{J ~vlGӜI7{AbZ[ rC.5Զ015z.ϣ BM=@@vH;XC@ÞS{zu|$b/.A=܈_IA"6"H;ɑ*F E/PqK1p 0DYGұao` `zwm\fCc i}8e{,< Se-b@`sd(ܹC@("%9#sR h]n:Dhh2${wa_d X^:U aᷰChpI|q-۞hOͻQ Zɻ/OaTY9 #fo0vY6*أSOoy[N̿y?*}J>n[JNNfHk>歑&2".Yۂ$sQ2sƆxv>+=#(sA@~s{rgNצOތm4ڛ{*"#'ϫOê[t{|.. Y\< C/~W,QQ!Vc"y-Ӛx͜l:*@&j=#US<{vmnO%CP@9<]?n`cC)e5 &0|Bq>rM2-^~:kVV Xn=94 ]BR"nc?!σN3`[ O S:"B[4z~xDє1N ZR\;L5.^(;<߷E@ (,ر]I$ifb'|@´)@ғ G(IB@ׯ%˗UIV|emټLJqJxl&h kPG<3d o0'\ T-|~6&{ PD§3mL0sFF =W(w/.5#]ZsH5QET*{[eGt"6U^~LE(D!`ݟn.KF~g.`^s58L:6o" ZIykOxa^$1p^LcٗjM-fl&]Vu ! jq!OjP8>Jxn]-BIq15n>n'W8$)aw"Jtz{, yGX;dIXhzui#vm>NBEp0mSREgQF%E9\nFCyZQ?*<2]9]v2mHiAPgۇvVu fcvd/6 шDj/`ټR(9~T`gLWۤC{?,<>w܊~+zˆoq @Ѿ7H(˙,RAv>V|۩Ǣ\aD8땧")rC|jV *=>R۰S(#;xj 0  #}{ k~էjUЇfҧkT 58@!I=W7kW`S cdmi@x+'ja.u@q"<)]?1{I+ccc6;mɞ4^!ꢴ{+fe}W@6;J%l @x-r>@l84c:j~y>/ڦgsHH}ׯ_nv+>3q< AeR| T4Ȗ# eZ@H wkvu~L7Kqkxk:έOMV Q8O J4}[BDHFPȚ!(c@4_BqmG8%D}c6~kI84IENDB`pybik-3.0/data/ui/thumbnails/Prism3Complex-3x2.png0000644000175000017500000002243613137372657022206 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+$IDATx]wxT.r{$^:$! hPD@AZ C r1ĕ&h.( {9{l`g% у` `5Nq-zHfx>df\l-%YڭSQV,%ҝ"'I'-xYhVdmߞyfUtӶl4$H^߆>Xc+f&IK+8*}wAꃲ %=`G16篿bIII P 3m4l U.U>^ɱCLHГ5ZcPVv,/~cݎvA?~g+9. nZ!Cl! 7$0aE=޼yÇl̙$ս1gq4se$0eDHò%jCݪ)߱"K W0gLJcZȥ _X1ޮrv.b&O?^z%֬Y3֨Q# /yv,::EDD=nc nD zI!NahĵUtnAǠDD,$r-!YAA`$3szx=MHK&GI&[e ?}Ӈ=TY5I] sӦS0YD8KE11Q,!רӤoќuhՊkSN|Nܹ3޽;nݺ~>}^z=zH) ^y>hт5i҄5h*Ix{{3nhN?"Z8>I"ZmM2 Pt4 $_'bL#OEnoۉh@ۙY/{xI_EG'6ڕ,4*T:McD‡FOOOn-Ĕ`Jc(a6]IQNEGѬWZl@Ƭ{f _fڵDر#ҥ wޜT ٠A}͛7WF6ӺukNƍsVn]VV-$pO>A2w"Y0}K$kHڜ ʰ=-||A1݌T"K,؀+Fu 鯑;|ޅ{ϔj~ QGV^uP׻Ѹd+PYlM y䁀THvtgB+:<6!m h۶-'N _dC JM }Z/$ױ2ʅ`i;v,kڴ)8qB4O!Q=O:D>rIѹ9@9 "aDTE=}Z2pMI3A \ t8wl,5d@4|od/eUh+K\l|||O?U# [?fWiHKҝ1 GyM/ "^ l 쭀##C1?bhz= K^Gd7 X&Idl֠~)*%αەA?G О={05x8o[q=tlKuM_1˟1Cr38.8H'H;0g&7|WM0'MD>|8Dq؉:<c/^[C Ĩ}f@6 XN4ŬПcgzxts)ý(ֿTfUdدׯ7EP|󍢦`NY!(Յ !l~ .4̑I>/8K`/iyS|w^I '6}J{&@,`Pׯ__hpC8|?.]FUStdh:fa#7cT໹dk?r .`o\O2}/]+yQǦW7'@Vo@]޶m^Ae˖/_=:4BҞ| VQ7FGw7TF!*t,sA49 )ü5.E>md<ʕ)P(M@Vxn'#W H&W*D*٪V}"<=\Aj APquNZh>d ~mgFWCJ_CŌu4Ѯ sʠ[*}1%?Q`)w6w\e*qsc:^Ě uێ5M ֝@#{(l\TB&YչgԡbnbS Xko#~U*{/ \ wQeZ DPOFA0Fxw۵kEdK-UϠF۷%Z*PxR^= :@hQyK6 {ȃCq"!kSDPمXzEeo濳]?# 6(i*rR(֮ ,Ta @:u㫆>Yk}Reؠ06(6Suړ D@`DDU||F#0@ss?d[zwչ|`m\o}XG_! =u5jA(|mժWڷ~;xZ\@&_E=?/GE3V-;1Ҩ0v%DhX_ 䄍bMǏ7t|'|vPkٳ;XTG0 "_"gL$H 'RkH;)Q]fHqwaWGI>V;4> ٽ{E‡=FD%믿΃J+`8)W+!AHO ss,BQkؾ`lnd׼Z9?_pV7Z"4Xhٕk+32 U7Eq(Xh+WX$yyر=b>[7iX^W 4Pk('ÈWR а_ƲYROGwKk7V~lMP@V1r'|U&BF6';pD#_^h!Br N:@iC}fHCOwGD"C4XrnU\?a)t۾=iP*7)֭STi(%Cgic"R_Fss~9 YB ;>@N- gP%7w C-7,wbw^Dp>V2a#onQ= Q̓KƠVD;cy <̇(?uvqwך<'}<W'2Űm_mCW/% _}ba"pB:f, p;dldYDӻ3?P͑)/ z{3'Ҭ3Y"4Ҵ GG,*py]TѺvcBgFڲd&?" |Fr>V? u|pp|!6JZEQ2iS bn|ŊlǎL  ; :Se] eVl!= o7/.:!=G`@Kz˖4l DDu6HMM G')' )Źڑ=pR հo7ќ96/ 2ҽm@я(!YbO~ӻC^f~E{%nb˶mz~!5b͠TA,#7n1~ (&A:;\?S"9L"Ru_N_bFv\o5WSz4 $ZϒA?cd-G ݾhaÆq5/tt-==whÆ ONN1E'Na$Q$ 8.L˅{&J!@Pyz,%j hl=-`w/۾c˿'Oe&QdQ*sL^M9wц#G(`7 +z4U/I.R>A:H̨]=sfL+1[ ņ _I2wn~d׏J( HQ;BYnBvEL"-np./V:[o;bu;t萢pr [DC2IiII~9hs9@W/Fpd}y9'{/>IR|W֙sOADQa#>,X;E-Ze|, #{j9zHMt nD~XTV3u$(w<8R{p%yxO^'S}Z x*`5YիW+a-!w}4mXy A,YhZDm\="pG8xEZvu_׉ݍгs)k0pG'Z[F¦?\9gޑX~f!׀C ">p7I 󷑊mBr| Tqf-~XSfM֮Oo͚5w0HCG, *$m~H-;x!+QFwF"jx !G$R*_[OIiO霜)"ChڰrHӧ%d,j$a4|5nҔ :܌ C6h˾ *ɳ'Wv%P<.<]x{ JEEFYo(RjI} pNW24 `|zZ{?(_ a9YYYAĶkT ?l{pQ"my(vlR,B)oa8| ،kDY``epT;Xk?m,*k`]u_Gw%1]kM X| CC'3~ֲeK?]5UDk !RG4wR|I=blŸ ?q|=6[T*믙72H LLqƠ /(2?jȷGN_^l$ll_`hߝc/OgSMаڵkî$ 'rذ<)^M t-^};#՞.hd2iXs=bYa ZCߥPYɾ}[nF K͏+g)~"lgALX Xj#RlL<̫Tپq<5Z;9M)v_U)@DmҤIb9QG VӚ p{I^%T/쩊>@M,ȡ6ճJrub$L"oZGhPp7RB\ek>0T nVe RS-S @(Wύ((W@KDGS @l%#6@iepkD@k,7pm=))I"[=>}JAHu NjTJqhR4{9Fqn Og>wq7q V7ׯ4XT. a.$r d)k SQ쥆=y0'ه=lS9fN4Pw7'v0#e$5( L IƦRGGS(xRNC//Jٿo&;mNEBV֖-zQ ,Yb!s!C{,/ {?{G~G}`9srrXH `` Zj|*H's ͝=MYݳmcQO~#drJ^5lmYd Q/8EĹs:%`|i=W_RcLd5 4VJLe#b#j믙}؊~&dcN@6b+w=:D<|Ww S<귢1u$=&*¶?MC[ ?W<_@q 3U(vεNYrLzje_爽59kG? >&N62JGL6l(n]K>y ן-J(W.M*KJB0UiŪUzf&j7w)臯QI|*ARՖR!AJUGLAKJJh?铱JI˗@T`&V+% f QHu[0;埬|~#%Kba 82nG ǤU%+5\lAoZ?bmX0셂~&dge}i8bRN_lXfOܾ~% kD#5C\aT~_{L*zT} :W _J2o|؍OYM }OW\ ľϋ`T_!M,jAwy˗;pq!8HzIENDB`pybik-3.0/data/ui/thumbnails/Cube-4.png0000644000175000017500000003240613137372520020071 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+4IDATx}wT/ewf{-,MTDzK5-D5`Ol*4 !5&jĘ|s̝~gvVݝs<<ߧ[p_/"tB_SvdWLvh|K贎EQQ(..@@)$mhGud9٣te6*2y`우nSԇBQ@n"r1N6:hZx Z廠Apm8w'xXj.'IB tw/f'18HDa00K?^B.lp\U۹sg1mEB2tp2١z]{u36uOBx-1U )$@ƿVA"sdd^'2:0*2'Imf:}K&Z >O;]]Y?MM%~Ba4z\zP]I;Eii(++c`H#S1K68"YUإUe2y\uxBw HPP_FUp D2 ,+JI;&퀘$ Fh%~/wz \h.@sxMz*REc0_pA$6Y JQQQ"# ycA*qqt% i E ].CXG.R_M"ļ DUjp,@Z `EaSShL4c^6v`0'w/?vM3Em/sd.#p^']29gB 3" }XAli'jS{膭J.CB!vq9цlNކX<;k%l $_TUUgBMBNOlׇ8"|' fzڞ]=Dn.xϸO@;i@VQ BX,k_#9,u*CT0MO)ĥMbT p-|Ei\Isjqb cakJZ_nIɖ=\O' [B0(vǃ *wD{]2[h?. ) Ofҥ Y4pozWQE/׊c6_z j[T2VǩN.t˙7 XJdH (|'@=&ѽv}K DoB=X;AxwD2~bϭ5s}ԉ}OԮ 2nZRmZJc ;r?"7PR7$DsNx6C۔ܫ& 1LгgO/4\U-f5.'N{N' b=[ DYorz%; `@`e%}aEUG>BLT1Yt%p`2Z[S`"| c;g O]ݻw{fMVfHv*|y5w5owWvnnoÆIP2Ti.NV>`V,sNl !mt=666`pt=yLE`]v+v%D2^z1uhuSi!~<*|W+8`S^0ݏTʪ@d/৓ 8r hŖ<C}&d h(!T5 E m w!y,FT>}ygqZB,Ca{Xa%mPLU0T1{_C0O;i9G`S^U'<ɽl 6 SŨxBU> D5!C@D{\OTۅ7r mx*w{Ӧ&d$1]I**2HdwW[n p>]D"|X_wIb>YÛ+DAPW>R/-nZfU?6Bkt`os8D¦-7l_ú@ Qu4+\1C<ǚӿx@!lb¹g- _/@sAAp`*IQ$2}MwM\V,BuI K'xE}eͺ L U 8]o*0茞&!ڴXCy$&p"0t%O`@t ߿޷I)DN9϶&\( 8"%C\B|/GO UuuATלy7mD_NA@EB0#SBCU+W1*%|{o|E:x0rq w;OTi:B'%}g+3-NmT*-Æ_l$ʮ߭ [RdRoqŽk0\c y I)4b,󦐍U}~{*^6uוE4Es]x)|YmD c,;~H Et,/wCBI` x܄H |j{=rQ0ct9ӷkź능=+E.fnM)i`YNx%F42SO$S^ Y>ܱglK[x73 7GT〈% rjkCܼN Ǿauߺ!zu1Q%onrG|'kVBGa`÷ @ & ]< iw\3_#zk#L=25P MIǺbaH")# 2a}JȐ\`5fBǗ0I}d{T:J^q#g(;?nOm]0e/q~ _&:G5þ4wd[$*;aO%3FU @aJh3%/r58(p&Z)0Wrv;_L4>!0єv·\:T "֯C>;`d?V?bׄ?V%OW. ,˝U"_n9 0Zf5֐ P4PBt)@t=)UlB +>͒?ι Z:,E%uO6@# SV0l0~|֍+⿭%|nE3}etX?TjM͡(2˝5VdC|!(hݗW##As]hW1Ey_Ӣ܉Cı_~\Cr|Es{gH(·|VPl0 hGd] 6*3@hf~Y1loLI^eNJ;it),0rĒGؤ UԭǺM՟]'.{`0q0`l`îe ^}ZqӷjŰ.yr:ě[+ℏum@Y^ 0YCh ĚM/D'V?h3 -|t-r!`r|`IKU⃗*ℏu`7><=޳vY\;Y}M@Pt{SwM`|IJG#g(S 8ťᛪla`2qljjXOw7yeCiʕG̸Dzb #b|+Q H hqDmx{;dk?ed@C~DwO`xUnĄ/j鴣D|y, 82Zv$okXo>W.†^k]THZO_Ո6*`b$r 0|oX >&$~9<_Po.+&)ݣ:#0YX_%kD.t 's쀘v'H;]Z 2"E"278+̼@`ɚ5JO3 .'U=AO:Mi K-WTi' sO)|w_217amAB5+oY+ M:vHC/WWG,N\9EW3509 AZ0dh1XkǺG`w; _3~Iiwt^ -vXF2(9+"" *f`BDD:g kO'XOo#Z@R4' h2Q0HRJVyDrjǰ-ÿ.[}N*1ċ1l4Y&y7~,""ȉ"C5RmnxP7AFPwu'R:#ܛhLҪ~~V(tAYn}]i*Ar@ 4|t/R7"g-Yp;^K2i gD?-=2'*캋|mخ)KIL6 }Szu 2 ?63) MfrDd)IN6!. Gk4${Fkha < mo$nKvХ>> X-(N]26+m|$,jSG\ w&BG\+H|rt3`-:)t e nfХ 9Fyh5( @O'P&S: QLCG·jX /Ŭ>KXJZeçC,K>u&*EY5"d,>*^*0.&n4`Op @q`i}LWĮ:~L- !@ˮ%QA`@&p=NJ?;*ZsP|*D%ĺJCV(/!.1 QO=r,Qml eb`^o471*g3xDM2< ~ |lN0s,Ič' ?-qc,‡ҼJyſᮈ(%.<_1'YQ8tтh pǴ~PӃX!S"WM \ƙ7pM5S/B`zBb @fw5LXMp{dJ+Y  q )ԛW^CIkբ+z68eC% |Z9;i3Mv'u@н}LIB'X3+7$ hYAV ?BgpT5pݲ/o0fG> y9lgEol>ƾ͛,譪_\*mBV >N.vNiF=y@X phJpr$ U_G`(r#?x`&iܲ#OW'8M%y * ɫUqZ=t@hr K'n,Y @1Htgp'Iw*Zj& QD $\'0!hvIzEDhk@DC&I %W b- [{y*XwXE iȱ6ShI dAp 62˪ k2 Nj| T` rAT3tE# R _7dwl?w>8qG?UAF+>Mw ]` l#  RH `Z\[0L H`-O+|Z>&QV9-eh-Z>+ ${K'e'o&`p(cjGpVpjd~ɡM;;;'wEw$8:GTX0L5(wџM$t12ĭ20"]cNk،Skr˷'^ D5F2I(B_BF, 59˖JQSn!}d^F7tԴCOjjPMdDRrL3Z!zy HEI PTR-`s=^RǑ;'EKeJ+)nDh") :{[+đ+sۯnvu38Soc8/wcu[_ZuiIg =#X?t&fBhzlVT&~R0Tn*s 3UW%82VpUEyUBT0rp#ENq4oeLHkWh6llʘ@#;9C7:A}p0-f&wcru}! %J 'Tugp߫e`# lp㍨q] ` Af32@IR)l $~& 鄎^F R8|kU$,}%ы_$wGѯb%_g\%0qz۽Uys@dW< HJjⅹ7(_U7rVMCqI|pA2G^[nZ-`W%ٜ &4Nq(ZB3iwspM J얦3)220d ^7+; l^UCBG8oEz@8衮ӏ?SFxr@ 6ٜ &^&)n\)RydyL#4f:Kc@?I.|Hu S~ @P'7m1g7 :j_N4>a-չ%+wDv6~Ht5qQML1tG,^t~%+zx b&ZtC*đX92NW &ޯ+>ɣ}n!hCKen|V|AB|q(^ 38)4 pz9wgWF@n4 K'i; F RdyAt|oD /zH`#w2O$y_>#{P"wjňnZ.[+ &T wO%`gluO?Mz`bk&l5dAeN/d @"sUHhB'և;hsޯ;WC>{Kjǚ'ׄ,vbg֊w^s[hIa*JΔ-gh=YZ!!k;9.Ēa{HEڝ$& `@_* ;x#U7+>=6jמ*/[d ?lmCFrJb;s}!~c(`6WHN" b~8ɓk#EYB0 d- :sDz=U.<""W(՟3 mr\BdJ%+9M9gs>iEIC0Ȼ'] QD uҬu7)FFDžzi:~Z\/J X4rY`zU|27I DǶ ͱ' 4S@É.]N ' -Ap/#^">1=<Np(OAY$R@՟@ҸYWxCV9WaHEtB$@xT 1ߙi'`#%)5 g4Yb?#.6o } "=⢙~KS9̧{c uV :~LvW+J=2_; vU> CnPtD7PJ;q2AQc$0 hLN@%d=p`J#t۽NFG p&=I'oZZ͠׭/p4$:8-\p!UD#0 tJLIcޜK8?2Ãxy`7V2%r@` G0hX/Wr8켵ߏAo27( {T?E?x, Ǝؐ+;\ DI2 '2g 9@W,ɽ%T慊[h)$ᣬ[\$WGm(((FAWхr<@fW|a$ "iԅ$\7X/I: gg}. E?8L(bPO˸E~I6 +o8ZatUD2%(7:X"Њ4%S k3Y͎#xlFE8l{1]T^TBEPscj.\,CEsU$v c CUNY(r f^|nG"?rimb}8wh,lޭo.P)|Z۲ Q=Tc@-Qw)!TT#%\RVzB!ɍT DR dlAiyx=dHe_S ])m~׫8wW}6~2FQy`=W7\ʆ#z#C91I+qE'enQ<|Vdi[d B%nȢ삖LQ9챛ñD uH&ةQdE < Bf 6IID JmF%9i,H .\I5x4 LD82 d^KƠ'&+Fssnl> VBxֆGk8-1oخ)w;d !RI(ݤj 8Hfu@ A0JV)&gp瓝U56Wb֔c +{Q,ً ka 8~ᔥcP ..K ag!zg v>q]ggoo'L$SEc@ 41VmYc Px~(D6V* 2 i Ֆ2l\oHwZXsxx ayC[zh)r1 U([~?y.$5x~>@IUD܎҂N`xoJZv ' _| cLHK&FH5D H(,a7+D@"\5Flt;'|ﭒa琓=;~_8Xˊf 9DgTQYL~vP= \Wer&+SBޯ>^Q@zCZq8ĄR&˜QPE(guG@&e/֠9K8#/0#7ǞͪU qq^2aLBö*h wCŊ0V}"g]r6Vr<^;R<~im=T/^U`ǎ;,<7cF6}`F<XݯxQd]<RA>B_k?zL^S2}PRIa pHYs+!IDATxy|T絶U,o aMTdYd5X-x)Rj\k**ťX) $Zčj?5Vm>=g̖Lt&<̙q{cKKlll"蹥wki|ر:=d+4)|z8PQ(t1傽m{X??I! B8.]'%h#E3L~>)gN*ÅC,!7я:l&if MC;h/"{6VC%6s%(qfiʳ_p2#ik&~pa Q(D`7w()>}:\AdY)ػ|'/}zF$ǪEx]"ssHM0`EJ>z*-_az9ژ)Ϣ/旤ήznS-9X84S(n\"??_\.1X.Urz쐫V.z_3X"sH +~X?WL_.(zB&_ Rv\Djg7RL_qELSsX?d#{3Eot0NS 2V䃤uiM/k=n`1D"HQ,PjMr*cV)۷o\c_J q1!!ϥFr;\SOrsXf( EM^#nsbBo*է&T"ZL5*ػ`KguC.zi;dVZ|FH'dT K->3QLNqÈQTT$̡ll\Te^ex"!T)^[ mgw0;d#9>0W' ,c * hzCExBV>ъnr_߂er ƿpyqXS}Rh%Ix9bWq"Z\ G/:?|Ⱦm5-{WR$;ڗ9>V>|5B.#G9~!- Q'צd;uQUU%tMOߓ|{6w+= ̦ DZb]q0FWD9 @h5k|q=HGDN2Pd.C|{".m߲8TP? "´Ij{K&f80Ef דOqT_[n@;EQ*G xkn@(n5[0<@0 kk'϶d$7h/.G{ৱJ|w)]Gk YkQ~a1n3A>P=;Zz X3abQb!9yF3J2E!}X\VKtMK`o a*2x3ǹ8A"^6 :1^4Z (rbL a"l(!xb*_bOF5>CRU@$(OFw&{_ ܌PwʅR,K.$?0pԋv&G%0,"F %*>37KyubspvI)R~|ysd 9`(?Sw5B_Yʇk.(ǍWldK?lnPc0%% HE*Wr :`X!~<D <8A4p?3ňA9$(s_"P>]iDq]bD~B\ov{vn~`FdYa/ fa"+thWIYͧ+Ycxb@,:c6EFʾ=(,?ڌLKuC0[zsƻ$QWI݆Z?}@Kbylvp9VnBl{|NhI40B^;* R/apj\SxyoT'>MSUuŢ\o-`E.mp [@.Wch)BWya2hnR L5e09+, S;!(=#SE'j_ %?3'i>b7{ulu?`i SC&",(PNuU+"0KfK=nLzt =$xkr`ن}qH l/  GW,n=/)O%(5(=Dn! @`h%74VCIh,*&.(ئbQUqpPykw &sv-VOe% k/bD"|y <)NMGt>\d t[NťzHoQP|2vk,x PH1HSx,C)x,T9N0;P^IE* *i!`y=x(G+Xߑ+MpCy F tgd h\?pWO#V K"4O0#䯯N~0OWr87]Kw_@ZL2 @ Mw#z%*g +2ꍂ\F' Ey* Vi>$P\7"& B'2(giBB>i4g)D,69I],ACn*5!>'?%e#܋?)0{'2pf`v!zOW 2cLS`y \l*ŦԽk skeb`o}[C]w/YŢO,CL?(2 ͛ϧ@P:JF3}YA.>f>#@J Jr"8 /pջd3kŤ.&%GjM|-F>*G*"&72w@+ϛV!"R@Zɉ||b驉Rǿ`p\XqC{j4R?Aޠ;ߡB 9^ v*yW}3=)CR :r'x-;^\+AsSHL_@m[R[(I4/G`5L0k(7}Bl/=&,4*q藲MILd~?@XYAp)4E/򤰔6f J%f(BM8)~9eᧀn ]hKן.{MoGx\ -7cRlsᬁuJPZg@6 Hkbb@}# )R}4RB+xh'|j?-޻A9XM A T6Ԑ0gO B<~v|=PęC;9f ;-Bn῿F<d$*3BJAV9ݝ)(_יq2kmj7`(+Ȣ>@V0x7A*Rwpŏ[Ŕnr09* ku3~Vovk|98b.>PhYư"yEGds`VlɋZ @A'02'(<{d ?L`(/p9xy{Hh@csU55Q R9@85i>OY;'3IbE}P\<$jnjtl A@֧WF{6풕_fخ|qb9hU;b6_) U征E:ZB% H ~TLa AkK^7w$bs<"ȫ }"%`%oeiSĶ-R T?U<< Q Fz8zM; y |9HePk_{P{$˸y60P36~nXEhsrHtlr-a7{6,GF)BinKfP}ޑ++tѿ,~׼T~Nyⳇau3->K%u3GneSn=]w..h8[`XEkW+t La pHYs+=IDATx}wTe3C9Đ0 #׀DŽH0HtD "֬6/uz}OϙT3s鷞zzOu_h\F4.B#F4h<x4h@ƣG#F48+"GѨ?CT_]|:ȍ]r}DF#o/~cq.džu\ ͨo1loJQnu^@k\Ʋ5-F`Lˮw)rR?{ZFFcc6zo+|9:b# `kWƯ ɒzt8k^ne7;/ِ H0E{d?㼻C ;e3rTчd1_+xAPQw^&wst#?E0d&{[;壇)w\H`/Ql$5.>/pP!E=8U\ Xk6{T OHW`(΋$ y?_P Zl>cіS9lB>Hs{YhB^$DtDn6D:=el^lWu~0ٔZrp/uc=!h& B x5Ftb0!-Ƞϯ]aYrtoo98U|d4lvL/A{c #x yx|/:n K_8ES9¸8pZh"emV0||h`"y:_~g8Eދ܍g#J`ӇebٕpHޞEvsNH2$Ap?OjPy8UDKQbuD{>Rgc0Sz}?{OMNHA6=Vcp0.o6jQZgo sӳ ЛjDs2`ou|cO%:hUE q5p>y 6) {(ȩ wy)g|ು.a"$`?0e^, ]%/M)B4V[Sys=_ IHsb5f}AK} C6CA_ 3k׈a1\w]k#c%]ObQΫĕ.r`R^~OpmQht wAdK0:~'RWxC7lS~ V5hR0@:;5/Yo7c#$t9Kdk/~.0/Z] 3K<-R@F0";9=zer=وz&5Z k&[%5sth"%$QA[4Gӓ8ig=k7G=Jx-` B0AxTN9A6"<Z [uXW wb{QiP4H|>#?f!MJ%s87Jg $U`M{+^-7J~J,V;6FP,C=mxՓn`Ãl=?q}SG>Gy4٣K=hr1@cܡ̄؋=-_o4j9f68'i0ysF\^pҵ4!a vHi{|a>ۛC;״9|߲/!-ZxOίdO@:aF;B9LؼNEҥ5`5$ Z=Q]dr.3yIA֌q >xs`GUH^Br9D0pn;\=^g*IڱP&j^_O#⎏?"q[v(ɇ-_pOj y4PM4u->|= Q"59r="L!< o^c)֧7DzQ"SD̡:|]l< V,B9*\7"Zp__@)~%0+l|c\}pO vj0lbƻ n{ yge6T9Tced:Ϳ헰] 53Tnk,]Nô rd15;6ok Pސ7#AmۧP‘aX֒.G$>&@ZS%)Ik]I{ JZrҭsC z(vڽ&SH?~qfG`>lyHεhn1{l3եR" b1Jk2`&H$5{)}7#3Ծ:ϗ2{!!6ݩ<\ZJZ>3_;Aͅq3ӛ#BW23ɝw0y(5/pЄhoD*N`[-9o.ޗaͪC}8_:{qPzƀd2 Kg\j| Z;:FbY}Z m=Zu:gd24贸A1ӠE؀9L}9 I6{8 L7waM߾W@VD ûoZqOqu,6І:j 6I Y]D,B P!ӳv{R,y #䣝 ^OzgS߆tPDJwj*,}^D]?GKvNԱϸy_[ф\M!s膇V:/UXkCN> eT)'hkwiOvgK_$LN;=/5袽kb}b0ݷR "-_zU[>z(kyz9 qI C @H q(!x.C>a3>d=yh{ݵTIr (d"^ГGŹzgG}omO<+`=KFCy 2zՌSBM) Gy6n^Će1/Q`ۭt(AkP5jV0t뤭k,֕'OQw#4GaF}<_pH ?Owfs`.5w_&Heph> ̠?U@~%`J-Z v1IhB ;az8f*7U8>L &-Srą gsV`X\I*$Dy3 H3e:})it0ٔZ197/}]Lo>M{u2CԲAz9Wf>+ԯ̠]2l wUvΫ *GfGd˜ɞWZCɦպ~?rWz!>n!6ʶRx>`Ky0&-Y"[*3i+`(:º].xxN7;ӧ BARz C~en<ՙRc(OE\&NgPRɱ5l'+eCqi:vPVh:EvGP [6iNWDzVR]B$#e*rbdv)]bNePA iQ$r/><,r{۲hx/v#X)`%W'|o=c?/drz@?.\uPbE\[xvxzN* 0#FFA9 T-O<s)a @@HX/kI^cv1s'C:2`0td0<Z|>_:ð thmSݡA85 *djb4֐No>Eɡ{/HL'̰ͤ:M1i#<ԯAO|\H~{g ^˕'f7]^x5 QB3e$݆|>)Bl飑dCn=tč`kQ12" @Dqoxi lPsM`ubrJt`7DCg/GCovҽWӗU|[+VzzˣV JmBl,y,Wl=4)Y`"Qq%fp'|9KbƟ*5=^"i4B (z)5PTA44Ã*io0-~sGHDņu9 P~߭!I_3/@?w |BеKJ3V20ZpPC>x|TϨs=5 |DijO$+"kQUæB.S`EAÖݦE8G0g|u2>dv.9'q ԔwpwUB&o 1WF%b蝝9CP* nEYY)?ۺ2Xӭ@48w.ǥr8R)"2K F@{{mJэB^hqwqj&р rOj[;@iW:eCjKz@+{9-`ƏHӖIv-J_ѵӂ- Q.Ӡ?p's~@J¿st#O-O0wORo$ 򻴅jf?4P FyH}=HR.#Buo}6 Ov}Q%vbRbzBH1 30\n״ݘJZ`f|Y(},sRI>线=t>;{JS`-a++B9ziDCy2C*!t*#FUåR H\8RހG""UNA0.+A|"E!\6(K JGd;$ŠHr]Cëz߽_ a}T(cސە:i/1F@@}:,Q~7оaXNB{w5sǣBёeK A-;_iL]NvT!w"5  |׻.+ ޟB~ANxAL-ѩ!?n&9~ۊ c;c{~{a\v/=p]*} ss<_:ezi>=Fҵά*?rzh _.oH=jӣhy#L&ր1d MP j:D=7_(On;[bȻ==.B6>h c{/ZQM؁i4u E> y-:[ryoQIH9֜')Pndw煟F D! sCfP-aOKRgvr,v ]T}/ SQ=^#%R+bnP"n4Il>?%HFRyċ60:Bȓ2[m9+ol`~=| !7 _q甒)kXIS.ҿ?+ >iECs]!.Nav<`3Coj/&Q!a$+Rz&SۿE&8ċl:S@iHL~*BD|&yt 8PuiTU⩁8vV.۹cGcO_4)@{w 8iG*u@!;Կ-D>Ux|GQ'BUʠ+_yzORH4Q*tB.ĢZ!,V?#wKyVG?HS6:l]yvu2I|sN0*U\%* Gػs!<}EY4G;zw6~go*@OE:M!Uas y Od6bxɞ[%l7O rrv6!b(JzDf;?!yc˥R&kL K"b_mϦl]Y^YWP{3_?kݐ˂qh1^շ ./@(p |]59 ;Ra-d ZBs!/Gf 2MKLTJ:)I݋ijG ,k&!ZgDѵ^ͥL #ǩtVpDkxqThj )T$9c=TTebI*}R;iKJW]j3'}H xTA}lϒܲt%D :iSUD^b'/>V09T9n*4[ϱsH3'vPJ߫v8#:E@ q٤Cd"8% @ʈ I9D`rz a.} 1s3ׅhϺLZ̯_u K"bBϩ>-@̽ᆪd:C6G15hD\2%n|ȸ(QS׫   pE!k]-l6HT]_Jh5H |TR $_W TIeC'^':׵;  (~ a.f,Iؽ_juw<ֲd|uqH({l(x5;v!=xٻm]Bvc-PFL6S` M:C'ztl|}203X:$-tgDshH4DYH0[GzqFoawxa~|a߿T Qf;h򨌂a3 u@G8Y_3{O.mcT( Kv!Jf^낣Кdw@T wmfTw$߀0p5-+u `RqtQגܓS;~ OG:-~.9yX1Cu<+BGկ`0G&D.isȒb̬=/)%tpsET f)-%•ipoI]):2`wzמ͒sަ^2a  ]گd{`ѓ7TYդOƷ3٠~QOPnΐ65S;(H 3"f ^g^0à6*%%*Ucc zh.#-o_˓Y}8C`s }/\*BǠ|:v0 gNz@%OHȺmDʹtN~#)URBC4g|$ϛ x$z=+HWU-!ˮed%Ti"g܍] CL@a|<~H|?PnsC@eVBϬYl,Rp!C\qȩ apn6y$yR55a"Xj˶t"`B\$_VH7k^8)@W S/c)9Ǘ;Əh4d2Ɛ&ۿ:RjZxT % s|YhM "wW6Jj6{ 61ڙ-"э>^(]Mh$;OZAr^C 2qW(r2DTXz?F>fh)k ߣ_B0ON/iPTwPF8!;rC2 EVOzqA "6/$D`q`^E[n L`j5[echuQu|-|-)`_#qAM XS"i=07Pl\{F}JL\' NuWז uRa@(un{G_VN>7Yu2:ɲWVF0O?T*<-̀e, /?T=tUB]xBT^7QqݩژP_*UJ*8Ei3qs;V vB(¾àó+לRrl2lJ bo"\Kh* !kf08}<z8Kzy%avZ{0Jot QO6{uIz!X)[M2@kD!䐷K DMoqs֑e2p,LX,q9PC{,9zvl^y(X 7Vf O=v{%>&yz2 I0TU9`C_=`vf ej+[JHiC2p a /}'k@"Oйs9OPlj.lBaoR }m]#ȣhue L'hzVjܡƿ?ٝ#".P?L@bzz>Dl$dW%;gBMəD|aI0Gd !V1!0G8#տL[3V `<K>ul>/g ã֊Iq$yR VM]$H>lP.j=,K>< u z2K=adLSI|xme :AƼ(RmjTe1 Z>Lґl1-R57%5K]~[9#H\VL oR?1Q!TvMxJV5,M /T{LܢfJ|!KO|t 3/?b<aD3uZ ' pkG\y@O"āgZ ac(醟+&֜'+?eUl|zG wU[ym\jy頦Mҟ~ry!|=SF>Qq0Ôz:I?.Dk)߾[ @<s#{l>' ĶtșW '&|MEɹ=W~ aN{egM3Ea pHYs+oIDATx\ipTWz,^6ĎmXcjc!0!a2G83fƲ={l06cV3̤T!HW*R7wZdjjZ['s9ᄎ[7&&$B !@B !H$B !@B !H$B !@B !H$B !@B !H$B !@B !B)U# R$ymoz%O:@zl}WO8?T}/O]Av${l|7{+ǣGb dbɤ㶭أԫ;q O 6~]R U/CQ[S{yUb ޯ~ p.C@1Fqpꃙӓ_;dH+_Y)-ܶT@B<"᱗p c_ +g^0Ue>[=i ??8ŇAU ~?)dz Ȱ2OL|F;i C3wcsVe5Rs0Ku4'b68gc_@(vfy ] KwO A `☉8eSV81'3~O1~᧛`Yy#pF=c>gf6۟~6!YH:׫{ C6-L%IS{pK|vs0U T0r ?i,}T@q=tukZ PIDq8e% T#>a1aFm@.>f)dFx42{,8f?uOE3-}8j(XZɟ:ske"iSEdPbԹ[ y8*k n6N}vߢׁ'sfzT@DhIl<E ?1`D`cܳ$|_ i4;Dݲʲz{8gl⑲=Ǯ\iUȐ'x9<%]S7}n"gL8C[h05,߆]_~݀ߘ%$l̞wl\$k9mQC& #߸ #Yu6sX - ɢmUVGmf)_Wp3l (ی5S-Κm-nj5=sʺ"9YφNk`@Ux>g1ɰCGee9V :e^ +!TwDz s- z5!n,n\&vf4=U]w_?>Ol$6 LKtIX 2xwYM"Ʊ*2e^SfLIΪ"{ Ҋ{mE (ofwll}ǯD6c n" q(s`i뭦sV2I?=H f\THcza1hDYep<~gL$oD>{&TF6Z[yG;; U@׀dwst@PAYf㹴%LmT3J5bu1LYͪQ)*JpA*r&οbp0ζє. pı^e`ce7X a8ń@v0M#J1bu!e1I,158/SV^Lk3gz]Ÿ:VM?cuC2Ҋ XİӛxrX~Vk x~3 }#$s /:@1%a:"na<u4"`,6}LTc6b9bbIRn !~6ylٟbKAVxl3,wfuL~xN0<&p};RCT*KfiI^20$.LQmp3Ƣ-ҫ0jB!͝Ȣn)Y=eSh(GB$e_A>Klt,'y妐YiM2k%aY@Z ASxfƀLz-YgC{؊.[eF8&AY4&_Bģ`GCi=pmHWۺB bsk0Q$(!'"h&~tץ:;d]njHlkЯ)YB79;* 8߫GA`.9pQx-d1jm,-ZWp}VW 1 0k@L|#W%BE!!U٪msTcՉᴈ;*W78,!@db`PR""ƍVc-Y*|@e9k oPZ+r,b:Mf2v | Η Կ)KpKΣѪh*4# B֧X$ݹô42#^4q-,nCW(;<\SxAHgPhLrP8vCxOÍ #\Yt?zPEV#_B$~5^[-ׯ럪Ֆauh|vo T8.Z w[ g20RxPU>g%J  k1ǭm\\1髂s Nc#tgH\׋XYvgá\UV>a<, A޹paw|9>ZǼ_'LfQ?7{MUJ]̛3m )8n7K7ؖPA̴T,lEs䝖0ht*x+x=wB5H:GSl?RmJ?ʃ*}mӁћb)Mr[*,b!RU( Qrnc] ChT.X":B֜z 5Χ::u~uC2zxA1!<ש.XLZ0a͞^%8KPnI/BP.NV- P:;(dUj㢥Dp?*,}3cv.ADž".>zidzMKMR&] O6$}(]qR±H<tJ^]A`1iP1̡tRqK k{fn0-ZݾVcU['Ԏ QuDcS7c{XĢ%kcQFvV$ "*#^Sax\^s3k+򂢄~{Lm]Vg:-*215>SЊAY]a pHYs+IDATx]itUU y< 03eP@y0ȤcC*JDD SSV?zдݫUӫVnr/Z p~|+s;{ylzq,!YCc 30f`!1Cc 30f`!1Cc 30f`!1Cc 30f`!1Cc˔R)G}p~<}]~Nӧ.@WZS G{=-v4ax3m' v`t!d( Uc: t|Q2%p줃\L y0apZ(!iqHb 1@zVE@=c9$4aJbn rA-Hij sPmVz ? Mׁ2t4Cdn@Z@8 Bdc1W`z@?0 Ao>O"'q>PHa! 2<{bJF_ rg-nչ'īPI <jN8{b>~TA. ""/]\I<ȕ`glzl3M t tyTSAwup4ڼk^Cd萛ChDz53gdqxvԁƿnkԫ251Q*K?w> !?( 7|$ 7AVʗ W uz<@>M'#}Ffߠi@gup"UOv1Su.!.갑g81B͚|LJ:wHI2Otw,[_/4v:2\՛m"p>ױEPf}՗:ɗ~=~$魇q |y $P={FKéu< H#׸ǽ7&ޅPs>1OĘY}'!UkF,(3jM1?HcGc~פ$MaꉑU)i:),XNJnYx6˺q>oO˘_x~%ti)T;fC2P@kN%܋y@Q5 ! H$K18"3eҿ w@*+U X#Y .xf)#9%]x! V@~Bp,&z7`3F VAkA}aZK{RaܟyC,*N1^eq)]_!GBR8pǮƂKuRP)?ǢE0TӐ/d@拐3L!H"T &j~dm @=dv;$=BW31斘_F'!A!*M[J I&YyyMu(-pp(>1;nonmQ;9;EgGpя (L襶\4\!+dc>B]&,xT$C{[Н!UZKQ,BJ9B&&xJfר?]F2\vCҜ7rb~Y#Vw~n$pVl]dֹskZ<!u3m¿݈DY"g5H%}0]H,{<ī)3[2 2dRu>0Dt![靆Ǐ!f\g\g\^إ%+m"\H˒W_3yz}uFBXi Q! n )|εln}S ۘqmepj 1RYLw!_ks"5eakwWum\hz R:w"I= )Eb (D@_/"p.[ؓ#cZ]uSFE(ק4ziTLyL\_ 0"aS21nW0Cv42QyѨȍEkG?v28_vM\@.rI YJl.1RV' .vHZ0&] x2i(':qh%Q+ k 4P*I!XjU3J9 s0ҧU]@^:b1!@"L , x󙘧c-4=!%l) @ޘvxX`!=h%_N2'g팴I1ң H%x?*b3 }Z)!ޭ g2V6N|cJsjnڰC QOc!jD BFJ* l6df'17p_RZxLIF;_!T)>{6;/?L>~\h t%ʧH@4(O wPqP]I?Y挻*R K8_Ao}?+!Jdb &OqL0AJddz2A\Bx6=a*D )L`.wgW"e:鮷cߐܼ:.s= $~{V?|YVQGvV4uF--:ͣQԱ3 e* DgEd C/ f:8sl wH ~,B12%V!vj#OtD O@Y%78D\hD>,gsC͇Im9J}_x["/cTaTaW Hz ]jj.6x+IjX5T馒⽥curh5t3[$V78[Kq/wo9|Zn[W?-q *IM4sv5{@oW }G/@bObdzU!lg̟qŰ3D z- ?v fKbH@X"!9 YN1c#|*DF[ӧ8' $9q4r&3yVA8%~H5m1ի=*4mKZ_A_ U`TY'TSډӌwT2C|dg%ƯeL~2T ld9 y@]#"j@:Ƕ}^_X9r)BH[G%6,glojpEzGπ!nFhK@"A8fCF kh+cR8yWDH.IT-D3sC^u+Q5#<<! Xd<-q궍E%UJ,ҖVq+(ǽ 0F/u[ s8޽49vZ6f\*AǍޓ s^رɜ[qo[%_ѓFt E0 YŚc 0HB@mW@, US$N֭⮮@0Nª61;pwdvoÀE\ d)r}|EZ=kL.#zUC=sBs?a!5 U!kw0_NPO.ԟM8olcx:29 I($Ȩa+sT0z{ٽjr!-0J ^ Y|_`cܳekyH} I)7gpg<܏e71[@6skrIR@BN]8,@(FU_ OB I>y#[؛64e%_gl`V'7Hxd`!2.iObrMoe9C}ً˲Я-ܜԣٛ籺le +EuCX58v (Ȱy@RUdZbdussZU%<Ã2TB+y$ⲳ&)VFT GT~9\Kn,#Q@MjlĚc$2q_9\}Whx&P[wyt71 jKС[^X鍚\J}N]!Hu-q.9{ 8[W$&<ʻWy.v*V^x꽦% vs$?hK`GJ QpnXOi'cNs? vӉ?Hfj@`oq و;#K͙T//<|K{1Eֶ!8(T2W{UFzfћϤ6@uCȣc~s! |l$MO e/(Ǔ>ҽ{Cͩs# ,%2W`KڙL_.H 7ˣC HfXWS&FW+s}"T DP霣507g^X%]mߔԑp~?oߋKLArϵ> Z{ 9@jwu?H U`YMzhe\=>zUK򿌱UaBVx66bwXˍ4٧YK{7u Ӿl,%m;, AWV=j;z}n/FU2P&&#-mEiNCқD#ڻIT+r<"i4uK;yxΰ&77d۪P3w1f6 KM@M*Y&۸GLJȥԼ)! =%R Z}9% ]CD뢫r* yQ B+ySCߔoMǀ#6UP#&e7J $U wxrXiy֭:Ю*0˜!1Cc 30f`!1Cc 30f`!1Cc 30f`!1Cc ]VV]gIENDB`pybik-3.0/data/ui/thumbnails/Prism5M-6x6.png0000644000175000017500000005517613137372710021001 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+Z0IDATxwU>󷺮t===9Gsr99 "JC(auӪ\v}7sQQ}~`y9 ew4 ?I ? ?PJyi4#Ǹ'A=7_uCnjNsuX{\ՓSU /7|G:֭ۛ\Ck#9MCmY3ĦuPmx^? hrj y3Ɏ_5jwM$J:q>q7_3sRPoS.ghу09݁ F}A_O>@ h!6us^Os pO( fE^ttsW 6E+1f9g6?CB9AA;7f1>`8kՊ>&GɉGOŨƥ'5ƀDIb  xYQQ*Jx 8/99Yũdf|ǥZ"FBJif2ny..F5VN]~_e≕_.IKRR ͒*:_44 N&>@$A#;VƒV֣kj5Y+*% ۡ"4N&9{0")t,1[C5R161Jە>7b_ f rgXB솑 qM |zݲȻԜH1ʭ&&ƑFƫ)isfV>n@FP7NՊUUi3@vJJ+ eu @X4\t>;Fn{IЙbA84ƒ+U| >&Zُ@`4iҌ6%v0o[XCaϊy$|Z4 1/ȿ|']$|mrEEdy@^Ԕ$&f9@h릧ɉcBjBxS &̚ Kcqj"2.ɬYbhbJ}7^O1Hۭ\"gY1MfMrZ#BwܭJip4@JmWE(qli"!Ld ,Dfzukha2@gml$Bnq8y @GB'| ̦`CeR:j ;bHq:Eqe(&'ƫL E2SԈ /HP-|^UH#s#oDp ߀/\@a 2un!ҭ淦H˧7Oc0> Vӿy&*p󠄇sS7R-E~f``%4 "\H|M>l(d hu`40b"ivmnvC>-VDM_8XU;=L%M0ߘ@|#!l쐙e=hA +V,V&qD`b"1΁vT?02ғJKQYYYOJl#-, &oOAk5l33TMn'ZŰ"|d  (`56I,o 8-aa}v>aӽ]N{ҽvo)yjú?: 91ۄ"*lgb"fH(>ǃWJ>h! gOPv1ORbx)~Յ/??C!Yq d3I#a&h??D.f[@X!dʍj pss+q;p\rlO)-sީn+ioV z f'M &X\s-628};݊0=Gva#4L߹_ (lyZ,>C"wȭy I="$a!VrEnnXSME+%ƫlhffj4q)jkP$"`\ $i$Č`<6q?gJD"?OaϴIc~q](W?$g}!CXg4tA;] t]߀X?84,8Z |5nXF·?P݌ @ $#H(vh x\|63ԴY ,o%?'_XfwX(Dtۯ{Z2 Ny/q*ޑH!,'>jBS*V^8WvKҥ˜|~4Jks 8bq%b|1!lù(!b04a&GIx}ފT* +#}lnB 3"ZAICtgK3Cqo"rl }`&,(n!tQ!U;f 6dAl&t$Ϥ H3KwY6(lFK.GX@=$: O"UBk.Yj, ICc7ʙY8n7}! ʣa 44i>ߣOeA̠ mn &?~$P~I4ZD•pLy}18Dc!lHB\B/CƯGС )`b>f:!KC v-F" but&j#`i^@$ qsXDÒ?Ŀȓ7uhml&moIK^WPC@bDp/|cKR&`oMpd s^ At^hWa^ N( RipOL6+3@%񛲉tq~V@n:M ~9n, Dy!&C6@Q\"@JKNa]3l]GiiZ%NܸAai55yZ:>)˺M+@Vz^$(Irb4K[X6í)ZJfw @wp iR!sי40gMLG)(AZh^ۡE.=Nv#7Z:?\IZGyMf.:;ho6}'4e  c>MJxpv(!5?HOuد+C)(!y?AHy!'ml!>6'ay0$Vti׬;>L\BeC[ڀІ-@&_brsimlX@ Mhm}A8jX "]| ͜k$t1gd0kWm4LӚB`br_arXڅ%S^zh|?x&8[@ lhkV F~j= @tf:;ᇱ3:ˢљǏWs:IpӪp4h#5y/YC93)wO*H^G_f1`qq/f=pj믪OH"Pv!ۺ|Á^d :C`ng!~Dz6q@@u01BLih^4ht~jH`PA76:Lf6"}""DYwOBg5{C>+*+׋78qR[!mGpƹ-R +jx({,c,׫bU,xMu[ v "jT;10nE*~=k6iB*`&K8hRM<6xPh[aQI(A<q SS n啂N d!op2§ Ů_KI|AװZx6릎б?4t'6 2ʛu1 vͧs]dڐ4-稴CukU-|⁼-Nx0,^ֱErڷSj^@}yxQ#ė/҇ BpeMc`- ϠpcI(ĩ݃HV+ ݐJ6up1a+E5¨#hlע$[w*s $W"@!aQ'pjM=n&/J3J\aQEd|dh3nimSqIoD۶EM~'( JQd'`K/(zUFWG#M59b RSG+44BMKAph @ fyx{Hn@Z$j8BĪ\|fAOKxRyVxBWdp +J5OӇ~KGNXicZP}A"4JȊM323Cc5^˰i>QOm_~pOjg`Ɯ<•TRI [Qo"7iHfb!mM|qlޑt>ǁj& M0ٴ1J1©k v=k}*8Db;2-7([:ȡ#͡sҥtPkns&/J>D-&LQ %J o?"d2}:{Y1AHJq s3Kw3#\%hh=oF9:*LhzW 0co?+7@Ct(F~5iS-v `|yy" 2[4cA*؄xe E4L.! dz7sr]4ppkpfp!@d`׊ Rdng ܃]D`AD0xk1:N#mLѮrc~K{GPfN~Ǧ ΑﶄlnoxBIn Ѩc*MkZFjg]WCPܫrpA tV1$&Zc!ҥhC )uZ'|\F}YH1CXՓKD4sC_ ZEBԦvVgIŅ%X<+$Ye?z45qաG~oiy/="*ԗ}['S7/rn=r mE8-F={T|ۦP) ܯO۶r}ӫUBn#5wɓԘ' VA__I$pJƝ=͙E[q[KLB杓;7sOmo@ F'(UC,?g>DyBp $T%IW?OR7>J6ѝJK֚.< LrTvC5 0ǡpTEnP6mo3Z=#?`S>g6ǟ@F G޺ڡ]M<[v M1_U&M&cH L:ϩ;8Õh-횼\F}1w@z2=s) kr.ߥR50Ȣ1໷d-nZǭVYoN ך}~>i>/?QWj#s9k7I=wvo.`MWɯ^R kRonzQǟWuPIoks)lw&+?vzիG߱I@P5|MT>HnQjF)b'i4~i&r}=lBc}%U:8%'f fb}b?BtiցqԀLkvO69O28Z}r:g?0۴VZ/)A< `>6r^#3h @h֌ <:6hH0B7߸ \)ُX8~تúN@.5#/%nI=1j >צ>/f!νL|= iAZowiIOv!!c)_f+0 |A+ ~0Vu+@Z$>67r @Q*&%Y?Ϝ,CRNM|k>}^d:lY! M @j5ww% aTBB0QGQw~~qYA.}ܘ4dY(O@H,-!aqA@c%#h@Ӄ|' ڞV.J`A/ CtST)n![,Nv[n8ǥbȒ;Qȵ=Gr̠{jQ~w]Xm0vA?bسrP  dғJjZL4/DkQT`OЄfl `ҥ\nL"` VNן]k#vvj>KǤjk s_GB͑%dI(utjT y,|SXpBy2oWCj%q7tM5>XCVOW4/646Zs-A}u  /D`XTZov|瞵DZTF,xfGe(F*}_I`9'`О 57x\xa";QȜk-^ps"V.p}B2 UZ;ye 2P n{}|$] Gf7n:5Xu S?Y@/zhZ%/ȅDP#zDAAo\?fw^oVr,0i;Ք+U̖-а/i7g, >EycXvM9 HA E0h>sO\߭o tn,CoF:g S'}{L/Kk3^g/c Pr5, Am/kNN5_E>fDj#}4wDE:C‘-K؈ͱPt]%@h/'[!#!Lb1d/05,7XzcH;?(֕' uΏ.F |L nI>j}(Ԅ%V"t:ۑ1 Y͂tBmK獍ׂ7Ll_/D. 063Biw8u"I eU87=J]>4zaC5 j53tCE>ؿ3_ [`6*^]R1 8&vÇY# -"`=8-{땰NXn|}BެMߓ_yYu!+cV>fD&Z^~~3z;GG.h$c{?y94?BDzEkjie3u/δt `02v<׿ #aiWi`+  Մ[nѼM#`xAG ܵ 2VÃKܣd¼4Fp! 9|S4jn?':" @o.8»5 z N 5 l1mԙMS$;̑u朗İP?5w #=cB0f_|m_B&{IKҡ"uʐ L(@=xnBfx%ڈ$̦l F/Gd$*p?XxOd˾dFTIY!-:Qt^8з8Ihxu͖Ѻ{QHc8 2dx 8|*{_uoc-EKLK/7mۻ^0 /'HvߴK5 iO!\)TRCdV}==}{1ß=ktc{f[0͠`N$8 nٸD@E3Vv+Bҥvq׏>Qi| @daiIZB2oQs  byBQ3Ś,W`SO/қb [мK.Nc/6{wBbbR:OdޛD!G;tPqf>dn1YG6r];I<j}C"qp褀%A 0"dR Z7 'Vs|!ޟP1$_wt:G D.վG-pKq | ղ'K%,/JqvnbDF ''/ ܾB$U|texAZ\7Vsg[3l]X.BGbEV-{edIˤ-Adq}H`|^Oi 7f9 f2jH~>ըߞT 'qxoC*~UPdk"ݯ=uZ2\j=DZyZ4Fum2yR%&_XJ *7zo\۽[^M$]{&k.` fQ:EK+da DA}?H4ˈ.ezҖ]-75[W%&ⅳEh6СHس|&L ʼWldAM8xDQֲvb߻>_L#mv)kW@AU$=D!Jcj9^YR1idQ$rФUF=B'@ ě+dѭipFHV8~9Etſe`h _WZ\1Er4"GiH {бqL.kC XA4(>uۖvBDpAh2I:˯0Z7>Y?Ÿ "/ȧn4@ S BEyء*s'+󇁥iN dJ@Zk zhj*̎ҭ]bMJ^X4޸ѽBӼ ,>f5Joe5$fuuOM45;p-<[/ ǵ;*tvхѽ0:z%,:1Q-вKG u^Abܚ!\N^'`m>c ! 4MV$B"$~# Evrd=c%9cNYp7 \.LH׷Cks2b9-̻/W2B}(gq[Ωcgi%i"\m7n`A6e$ Fz~C[ s|/׹]u`ЦU7b=Lذ|<K%cr!3Dt< P/`0u [^H0I Z+L6112E En@Żou3[%+qD&A H?w ;J a;X6Dh `妻RcBXEد<%, ` R U˦ǩ,=Hf{%XT |a٘;N|ULÂ7 ldHZoPck 2sMI(~q 6B>aC[T&sڵRH\ &Dgī\'{CSt3t~9i!q !^XcqD;ƨ8>KjՆ_aH}{88׷>;_~6:y^>kiN>6F/o\˭͈M_r]Z30Ƚs/gM9~Dw>0aZkh7#/C#]ܧ7[ ]Dj !RR(RTn`rae!'Y)S#IޢZw< o pD$Mq=:o 9?į7(vrg?9vbNL$;P0K= A}͢oaR88n8vr ]DDD1n?Y6ZCi?e1՛-dJ"1zF(E &EK3e*\n_/(^ k6&ޤ sQ*-E/CUvK9jLɖ'ٜIu/oeZM#ra6@rV-ȫAQ.|l XJ<_@ڜѬ)/#7W V ;-ڇn8%%|G L&b ju*Ħ醉UWPsGݸ'oP_%sFkA"Ku'HF[ lz|G Z8WKw_GZ($}W;R}B[z/VWq7r<Ыg"sA˸` y K/79-@}!ov-omDe@nlt@(b= ǎBrߞ&VF) ]!=|Hrk;Y\ç**RiF,z%ı%YEFmkh"<~K.տCu oNKJ_NgdG>D#noĦjƊDE9*!g" naͧQq'V `A㿾ÇZ˵hX>FޥxT{Ԃҍ=:jpQ<8(:6Ty|, |Hl"Y䎡~A틋]"l<1v/0hhvQݐӱF"d=/j.֕u`4`q aKAnj[0E46P[@vW>N8L~x@& Jpgh,(hڊ;_>S/\3z<Ӏy"ldE}[s'̱߿KҚc6ԷyuR!P TS6Kh3JL"=V= kRl! YN _8NJ dv`N{VRt\'%!(ta1Z_M'Lެ @͙gAS_RG[rpSN5/S8nBNR/3 "؏+xcW==IL5uzsh)rb1s1Q(z0yT ռۘ4 {*@Dhd"~. "$2>k T3 ]Ķ; lZ)z&utPΉ஛][z\퓺嬡FabW3_/=aoM2X.! $FWؙd۲> [u4Yh5cZh3%L Pcyl1$qMLkZ̜<D;=qA8>YZ cGUp fyG i*iD{WvzC( jWƔ:-`8øז͜o@裁d Kۦ hz|F]cpoqٙB9gC@Ƶ\7>!aUX7$Cǐ>V$euvGs6;io\*&u6F?M_0˵B/BCAK YyIb~}Zo Q5>T Q7[akA3HӒ7t{ _PMSӇƪ\[J&r@V@$\>ld2 wޟDzGG+q=>/]KMh F "csK$3K#5͙Sb#Hlb"<<Gk$L$gvb{^<ed`2B^JFD@F(Sw15x4-V J" m@MN[I䆮G|4֫WFR n|avpI )y] yp2gaαPG y<[@[`X%ʫrsX :iuH2D?-h(1,숖AYn`YY5+i)a[Mɵ@Źn/zuhIyL2s vBLrlYr_ ?/Rޅ5 -ɦT+uԇg6k'Au>PѼ7 nKiD##>^F`h ``4vb  @ظl֜md-h2 a ,ҋI H$q^*}uip =W0u H!~}|_FCl2 խ۳mm^'LLpA''7)ߛa# $bu~9H}h 7 $`HkE"0o☕S~Kh`5rKK͖sȲ h=oF =YsmO`Jȝ&< _ҫϬnHpܸRaI, gpt]@~}8nUr&ut"͊gR/o$xc׷A4??Ov"IáJ[_8zp^YDॐ ZEr(Xp-'0B}p)0%%rwlNee.wpJg4j{A$||{r cy@vUE:tK0 7/yPPX=v5J_ Q'dL.BE y^#y0} $x8v 5ToQL2@ʞG}ߪpBr>P@%p@Gl c/揇mB]}&nvm LL|# TcrIp(IFWká́-@5Nc4*H~ :DW*Sv|l!.`H׉ K8K$'ԧ XIlQ,-OC:.H-]=d됏OU[)ohlB%r $Hw@" @n'#j(h6Z?{*;nVnJVNڪa]M#lB̒/>KF[đRF|ZhV-T,ĭҴǖ}+tyUEߣ/aԆ 4 Q$)#52x87Pl,MKap]v(7^Y(3 )čX`b8qנXbtv 6A?]7p<<r?Ưz/Ne&+{G>=aM].Se|x:[W Ve0cͩ ׿k C<{zuƈ-Z`J2[ vA-~ V8v5*X? ˜I~I+~*ݷF͊p 9[ ߯OycE%^K: {n3pa7!Ū@BE~sDY;XUW̠n>[bGPBԗX4"tסϺj ׂb>/~ۼ:u./3ROS{5]^L=w#A۹ Sp/zz>fR~G7^ q]*<6x\]yItΠo$z6'SȟMZ ~&׿@7 TƧ# #̦]6/5@@"@G}W28B3?FG !=v # bjHN6Tb{mxJ]w/d;͗}ccUݚ~x$.98IݗһcaI8=J&^QBTLIΡOϧ}"  9| 9 I * f\uGIݢo@dˆ^t4 +iy _š˹TTK -ߒwj7aDw3UJ"{B`n;$i[tدtky%E$x>pE61d);9ZӅU߶tS`/#cC>ݽxxj$wrj~SM}FR#-O`@-Ev2;*tXUa) ch`lh"N+D|iG@ 9?E4.i{,ź?cNGV p,+U&4.ԣjvoH5>vWPXߟI.{TcC kB݂оtf1eXы:$\H{gJW爠Ͳm{>,BQ/ϫfxKq $ 7*?ӡмĶ]E}=͛[, cFq;p E4:CF>J\@ϵzIij}<lj!"">>&&dݾٹ ۰AN}bЌTi/Ω{Cxsl!-VH >xdpRpŕX>Hb4ag )# #j{CH cCrƧZAWo,fQO-~_`;fNq?)y [V0rp evW0G~SWIYsn\n6]V\_LQ$o-5 3.KFP kkc!ȩ-%qBS$9db|m+usk%XSɵuBhh,@D `& 0:$o+hPݶD|^kӅ<<$o%?{TLz5:0` eɼ 9d`md1+Lq: fkxϬ ,VZ=sHgh@U_WG{*WS^o,R=>^#(;Wߏ#eE37~ؚ6 Խ| Y͓2,}LoW\RUG c ƭ^UDZPZȱ Fr`78^NAq*-ŧ_[_ >R.paڧ!+DGΏI?:حVb8:|1g- ^+=q?@"ͬ^A^)̞~ϋ{kV`\RD٧d.0[ n G! 7m80]:>lgYUs*nC0/ 5sT%9`]~NOY.ÆV43HPR6 0#72KKޮ:o"a]_,pٸh^ 9S&^MIK?IENDB`pybik-3.0/data/ui/thumbnails/Prism5M-5x3.png0000644000175000017500000004065213137372704020771 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+A\IDATx}w|UU 9-vH@"^BH4(MA#M(Ы438dw3wƙϻgs ?/^>o]׼UOWI@$~~~~~~~~~~~~~~~~6ҶE5{#,]uƪ-[ !"h?`iB!K%=h{F,utLBqD Y!s:7?_@a{.1vի孊 W)~v_5~yRv%$$#;;[ddd@!bcE* 9!bl,,w@cџݗ3BK~ d$i4`h4 ^r:t /мHaTBT$6Ab\DH14)ɢܝ"ʳ3Dil1:+Cdee"`ƈ:6..NDdd$+==a||t rho,b$4im %i=L  wІ)QsQ~Is4iB1Q4a . +T۬qC2?Nk/`;E8O !$ȍt>I@[7E%O sѡ<&\T$lj2 5rİt5=M%'PD302s333EZZHLLdpfqSThgׁE4X% 9M$H8 1w;`:=(aMǝ(9J84 'OD6ZN? ʏ/xW, hN M loM>& Hc!E _hCԛ?=-QT_*s2ԦMD&CEdф|Dxs5Uc4mTDGG`%7d@d=Og[~] NeU4) {MEU… +IcI'2 ?1@sc |us4)*ܛVʡIzz-XF5jTL{(8MAc+ P} .K )eDϥ)" ʈ%x ۊ)l랝%rhGiz/9aE 9A"`!29[Rs Aj34iSpDžx peivxygxCcNw{640ght`5`Ў &P('cDNxE4D3'[̐!82lhi䴴,680MsvK&JnG܉!e;3iI+*!smߦp Bf>KNoL[6/0c PL p16{!hCbPhM1wR@( 1,)VoC!X~~Ew*(Z ahtldqŶ?D≖o Rh$=FM '$mΙl2JqHEJ9/{AG)K@-R"kk)Sp<4^ zQg 8Lr3h?RH#y)I,2EZCÊPQ P`4fhq7oޜmnn.;:O T& ]&,]m ShzʙSAfH!yV ɨ &!"K@@QdQuKIQL/NS.`0M~UO/MMƳt?O|0'#) &e4 D` 8pDG鴉$쮡MN$=MJKHfW\H8fb2 Sl:pE` hw°:GJԩ~ !Y5;TMho*ZVwp: 'wl7x@õy7"'W=H{Ѽ:l4!-ŝY56EMIOK@;4{g~v{Um,|dhJ7πQ5n8`<?*Hf]4>#Az 0r A#Z&Z[+bȦ x!i)^ ;M} E90zYC{?,`={?Qr29M[ѻB! >?6o%9Y5GLPr4I$8\Ei^0EFJlt:WԘ~K3Md%{W-}~OU?XE3F[rǀtz_&ĭ3t{/Ҙ`l`B('I y\#:фq1wF*Ǎf)ums((C탩;nnꢒKtnmvnnwT@SDSе[6.R/B " )ӀMWЌa4NVUu-|oQZnS+4䅄h kZRЭ)q.Fy ,8m|Ã.鉶u 9K፣3zy@,'{xoj-]7P>QJ&.cb}lŘ'$z0Z9l|(tXؒǬLR'#j|ˊ-|4yT=&a cɟV6-^(PJ ?zr,/K"k hP,<9ilBY8AL s&>B ϳy" x X,ZW{fڧ(Ҷ??@by'>&BM$@d(v4S_P¤d=(pW@S~7Gc}kE\0!4 B.@Um4MMGnoU8FGLK>AVhGM Liu>JB ҸB*vCIJ9ux{!E9th;6a(ab1fdWUb)IDt\pu$M|SŸQ;n@Q*=+$$h{DC8T /Pv3t-$J2EaVI@ Pg]w>h1!xN{uP i7`-T/4&Ah)|m~AX`۟A!IǨ Cp42A ,5E SHc)-m29}_G0|8p`n'.)K:޿]v\m>nt}{CۓL&@vtb  0;;;vcq,E 9R񋧿xi8JъaDM4&NIhzC9uaP$cN{o39spb0XD@}ml+Uب{V񊉑^[ +EѵFC1T'X=[9(U@P!cJx l@.=)[8]F&oDt:)4#@k$@$zO/373/E܅`bOlb^^Vֽ_̥o!Mw*= m]T޼]ٿ8Q xz ,bbpNMD6@:E>Grv X.Jj s:]PxUSL?d,nj Xϱ{<~_UN:F[\Nẅ́U!9ެCwc3X (SiMZFp 36@}E]! o,i{! 60| o$1)dOG.DSuk (Bw"G BJ_F M`•pi}qG{0d_VLq @Ʊx0/_S%T=/b6eI0_l3?&uW? 1Ճ{U< v@9| ]R4G2Bh~ByG 4߉l;izK"TPb~5 N B7T0_Gxn3W黢#I89}:$ CMb0W4 WbMڲx0|^x \ރBg}~kBRKa"$ 0Rؠ^ׇA?:dп'b]3Y= 3 =٤fk+]QS D*3+0_)&>er6).JvxpS;G6q,t)DS2<`9pT)u"a6`u1,:FԼ^aPF%@m]pE)؜? C<~4 1כI?R,ɤ.OU. ?i]bUL`h|L-tj# Zl1kb]"}{m42|STX}?Y|0+  AjeQgEm]1O?݋77Լ)^ reI*g +] Kl_M2Eb 4Ud![!&hn$`uQB\AښC'3S x[Ũ~΁s[|:Ű!L39d"2hvwWB 2VKr8- CX6.[!^|$[T@Yf`:# K)ˣH?˘O&O>A_g* C`*jm1Z1W4_@ $Ӵ|~PBs!+f U$@*n 0Bh^$6'}<&BD At#7 ȨA97=,OyIFI,dMk09=Eyu4~2)&sDeǽ0FH8lwkB/,;ma&P['t ^$|":MIۗu༫,}-Dg!&#T6m),EMjYTqrW+ѡ6ML]t 0IPmkG&͆ IQǻU%WaW[E>e$ǫ. ɈA{ɤ]t ޶<@t绤 mnv2>_s.+dz VG H1+@v OpGUC\'tCЫFl~$߿[ $2z w@ Lr%%©h2Ǚ|*˥'QKgbp}J8SĠ}:L1LoG1egb 6w qh|V3VM@A7K9{Ek*hO)OML4fje7f~}8Al<ߢ((wQ"8.3äaH vm$E6(P mvo|8xݧ(Ц'j3;~'`&ϘBs{aUH" /YUoJͯ2ծ0޷s+غ2J32C:n@Fre_[]ݬ4!g={i4\W#cG D(9^ 7!AcұD:7&Z c5Ecx . |r#+:bСU{j/bҟ1` ڳ T no1 \6~P%!'*3"d -3@'~d)D]2!/)_0na`l"K@1[25v(,/.DWղ4|d@N~Ncܶtw>ƸZuRC/`H89K9jv= &‘NIs~A|P"`gɷ˒5NtӴ 1 ڏHNEMY?kL,3ooCdy )x=H'Ss"|=;}eߓ |떰@J6c  0}=d`L"^ ( Icڇв\N8J8V8, "1I$ DHP'Y:g]7&)ayp^TYPFJG! & p\1ڹĞͱ<7!cLmeWU@+3|+VT}С۷N`'WpҜ:Bz.&=~,p7X7d0o{sm0+8TU/! B]C@EdlʄVcSI/+A0Hhp(D?Oi1?ж9&ѕy^}S4WQM ?p^9K6.f/%Z{BԊ!$WkLڻFx-t+U;|9ٖ`ЖM`mN1@#صZYRvC+xA[3"E_ҢmN$k7&?.L,rCl v\}+h|sLR[ ~S\QZ\ )p>,4/Ez~c?blbH@~%D1DN3#yh5۶*rq9OnD1k E7@!,Οݷeغs:a`ԁWetZ(oEak%0`L:V,iPt/l4&/P+~y@bNK 󆭇@s{P#%s]h k(^'༡ X;ܯb/T;dwή[JJeF .@ٰ`/[i?INYH)͋hdkĈz d;P_L^. 5i< 4yQU.ၳxQ" Mp]L7NthQKɢ[l$qKA.Wxk2yVF@62D$' 2Yav !x=^2x@Q@?w E#_+B{򕋢"86FRM|ˍZ^2&f̡7V~Tbb6 L pd6c)zz;yJh*cbaA~ʯ`A THӹH7K0t$wlN*o!4Pi) 0 _-e9A Li;ѣPi4ݬpDt_"P_ NI/ mo!" < ZBMKz9E͜\~!>}+(O}8-OA0N>Nz|")LvE!JsLJO$㯽(MDLxdQw!/ڂ9 W/s0[Wc@MFc! l5Tķl)bH^4O\kdibh+y["dF|]8>nhGApQE'\࣌(/h1Z; TXՋ4>,D8}:R ZN ICA0P,#$gA?-4i} yҾb*O Lxd o=IkU(tAIh0z{MBBa\ BB8* C}a3 j}dnb !!8|j ,ɎFÓ ݕH4qIKtP*:Hg>d u۴y>ps)kw~[ vw=ek)1OEY2ꦿrS&Gw.N{S ;Olۡ2r;wS"|^7دX؊Gކ,{*v8~#P1i`\(+qKLN-Ǹx y*s'=d+b7_c^00#5U1ŝ$/h޾rv|@D{^a(&a76T6.V0au55HMy T?HFI`#2Kح%?4`Ly\HJt4 K4v7@J#ЋXZ8ĵC47n-p U7ʺG  y;~"8r y/U¾b\҇XT*͈W'-Q un;*?.!DИԶ2#hq9MvTYAX" 6<ˎF$OOwYzO.9b-11#! ӲVBR.ȟMG%d}x!ϛ?-B{\#d _1B{5u%"deJp Cwl3`iE ^a$1r>~оZCSIknH$1DxR#' 4h!{71EqMT鐗Yh7t(,~ntӳϷc>q%4ѻ]6~ j/%ytYAn9.0N_*d}$3~..{-}$jUP!BpU!SӦzwn5w58I@JhB$l!:?PƝ<׆ôwj,,ScTM!`ij̟Ǐ~-]a"\\CF g[ (xd!/QBm mFm?< 7 k\:7o?M{yTa#$^%g['iB{M"JϜ &V0B%Q&%&٨ZJ_C,<5fe-"7#(g$;8|ľǧ3#<^ :Lգ={2%zs-rT7nqfP$B4 @n7k@`]>! ap"5^LѪdOHs0w>h&fKTΙH,!Aخ*/:Hl6')E81ga(.O!E0Ozu[,~AchCsd%IWDt-_:\ͫ;W)DtY:S)^,;8q< x∂P<@C1?L`2!f WK 4ć*ˡgtk{^Ԧm][HCC5P\=yk{|Z}`wG֦$ Li# x`4f$S8K!#JIHT)􉒪;ϭF-h7s?C}רS)$6`z^9F>v*J cgj#AFALz:7p}ŧ>ŽXblFOh^9==:˄OO%;W -|xͧ{M $]To;mXH)h}R~_?>l4aUN}v@?xԬ)r][,i27 {d]H8a;BT="5M)*"vy llcR;v}VF;Jau&+#8vHmz"kh4ϖ!ܯ/Ym;:OMh.m]ŽEh`n6c0@ h?'t[^*z߳(7w ˮቧOd't1Q !3t5J)V7noR@7i߹s⤀(LWOJ ?Et*Y{o7 OCIy@;NsHDf^e`N<pxK-:[T\K[arr?C[Ln.3"h(Ah|2|l];L`⩓(mFVex^ 6A^ | ^>O*{ ?_Y>! :yaZ9?ct8]Y#X1-LfF "rI`1۞핳-8C6ncea;հ˫(_BvΡ tc sNw ѯB\p _ !CB| E9|+|/ GT/V\KO q"WעTs4A%]>$ l>KBĔ|*EYrN걈G?5[H'fuq_y r5ʘiK/2rb(Ҽ3+wؙ $4ǜ&Fh՗= &N௜!h&ݺdRd'pc O T/Y7KW YX:w&߫lD8CV s%Io >uy_/bl'#|? \Lj54ק:v- XBW OKC09}pN$lf=`r>vb ,L4lΟ tM C{ J>,yp|h1aQߕ!"n5R1;e,BA(Vr(W'|ʽ=]<c {hwgY7٘;\Yx4˞dB:vo`)ࠨHD Sx,T1w*%v@!U{zY/Q˯#{Tc%΍1~rhɋm[wlgv1{6ĹkNu1QbҪow ,]R|V/2k5$BA\/8sO|wNykh?I(s'O,,O\^mRpJS,*~{UwqQ; M' xš 3:>_.cUc'Mv9ET{wz|uXHDT_Zl J@@C9D xwľe"|=yB 8㵿rLԔ''Z8EQI0΀΁X?Bs&Ay8M1Pg Bj{ښϿ|W`ն-Y]hF^;>>S6Ljl=l@efN"JfL] _,)/9Uk,tOQG_/;|4YCvz`YA˶YDv^,j)%($*4v @ы|bY䫗dt0xy]47jA7(\N\F#,e Vط(*Pq%ȹ%aLǿbù}dGgUUNMwfo -_&S~ 7 Ղ!ZчgR`g ,7þœ@]H 6QHCJ!IqN hN#S}> qdý</Vxi|ݒ]Ӹ!Ζ&FǢAw'gGᯎsx@w"#<+2˨(NvՏZespRO-9v؇0v ZEf^( ;n6G;h< i3ZN&bS%M}{6V*!}ɥ-!)0Gt^KQ4qF4x 9M #]5ph|XCߕ S?|kZm$?O'%* 6m*{;w%=*nc/ɫ߰(BErM r5Mv~c֞= | b AƒO^@7ſ eˌb%'EbN 7:Opwm˷Zij(4X+ V/t*:k&D " ABK)h6:8w:5}U>FQo23#VHl'ojF$1PN # w)>Z9Y}eh_?κDY6PeZI[h3+>^C,Tݻ7x{k,C {vBON4θ!Ʒ _̚׎k[c}0oyܥgg]XRub{FTwNNMufܷ'oPFIBWԑ:obXP7=V*BdE+\h>e[`ZsvG8_]:w64 zJ2NoRq`TdEٳiZ: CfwgsNf;nn&#V$4{rE-: { @m2zƼvt]T-rk}_ "?f8w V~R;{ p\B282GI6X8}:i'\&z&6ϯqsxzkYg@,g?V I慒JDx`\c6?l}ZS}bvFhо{wWY=+.j2~JzP?P?P?P?P?RnևIENDB`pybik-3.0/data/ui/thumbnails/Brick-8x5x6.png0000644000175000017500000002775513137372577021033 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+/IDATx}wTv|̽J*KE@D (m`D]5TDª( *1eMɛ3ys;{w~pYPvΝ;<<||gMɭo݄r7! rȭr+ rȭr+ rȭr+ rȭr+(v u #5s!%7'^~nJ1~Q`~Oì5mW`Eow3{nsFzG[@]K#ty:==^ӆ?F6x _nt@`}*Ʃ9]>.6wgzP Zs a;-c 62(sz6P=tCwg;Q1G0祙 52oXɑ@@yګ  {n6yHͦqDct.4;4%7. D D :J d:/V\`mIu1w=ڗe|+ً}l5PسpPPQ5 OgnqV:> w3o8RE_>=-m\lWxg#mfw8'4A"1h(pv,@Jn \N7Q"vkB366~?f_x8 z [{r>&{ *hEKoإ:ETkk%Egs_=%濾%6~MUfu0P$4+WSh1^J3N]2ǯ~0\PCኢG^ *z ^yNߡJo+_3@oY}ZV#g# OpܼFJ8Ɲ9B$ې"/sC85 B"=D?n3ͽݫxCSEٰP^Hd;H/+ #4`@/`*=MC$Ƅs4_Iod-BRpEI\bvxrPU=HwKi'`@=K̛dC*/;xr]qog mԱ7X" 8{H0UZ1@>Q"NTD(L"5?U|KlߓL2ԑ!Dkl|Ȧ{"-i% u}8Q`פ W¡X~m|+[χruE!(3p X&1Pq ZvN@y`˶ `,Ƭa9q|Apqy/ SW4cP {* ~i'xC6㧯\%j *h/:iFۮ7Dq(1aD ?-?*';7C^XkVqWÿ4="0 rE.e[Z]PrwPFGB*a!71\l);2o\qclj7NKrO %Ew^6ɳ dc(U _ތȰU xI=|/gd Fx0^? y(NCt ٘(ŵ='+iX?Yek"v~:n+3уNaY, yD"7zړa ||<ʸíxġB>67pwKn#Coi%RZأ( ѩkY_,ui`lW,1۷Q߲{Zӏ^a0ug4ٳpo11!yG-i!}m͘s<$t'?ooCC>T(E"q82  'l%z?w‚cAaM1)ƄAҢ L:4nxy|3 ;pnp EX>':}^T9||.n:!47$)nr:ӇVه5cGwW=K9_n4(#wictw A)Ќ@ׂԄsD"AØD떅 ߯aؽczܤ֌<{MBs`c_!iW!!7IY+e|\?7zK*M|7,0r o66x2JZ`IGLzWj?ن3/#M%}Ymm eGؘP)_eDǁ?3Dqtzs_:voy^;F=AJ9_=, oxDGp0KD"׆svۯ  3;NTWqK@0N1} ypq3҆7V77UYG8) .AU4[W >OqhP %qpSRF{2e/ 4 zB*k|~_Y0`Ck= wwI8S-oQ Vo2nVM n~c3^it3U1KJq)ؚ}&-"M@@!x*pZ)^z3ρ< |QZ0Bߚ Z!B3YXnRlI1y*T696_޷v٘?R}|qa!= b[{/Ћ9C/alQ TKVtMlCXEeL 1g& ~XN. O/Р!9.5)MP&y FL8 VV&R^7:]Î#L)֍"lkxX/\jdgj7(Wȟ?ZzgOoRدgfx\4 kMHQ>rQW׆@,#0`3n//c_(IcZ0lc/e^lK=NfMaQ|GMUZa6}T{Pm 'g}=p},E4s6,ҳpLU@h טfXv2G =m#<҆\ U= A@p.!_jyY@q>av6̓r"70:RO1stD0Go>U"}Asg^P~^QCl Xu~IfCd c0Q/Ju3 g߻04 yu-CpϋUpn!=ǧ@ٙP⮲) ڃ ?Ӗó-b)3)I$Dgؓdh͞视SiAT"խ0T/o&K\-҃n OUiW$>4;r=0MAP M NKYB9JV({V-"H15!!ۋ X~mHڔe|Vdnkm`ئg ?/nˏJEX2]k Ǯn߾!/990AcR\RcJc(J-\| C.%9&@J%o8ޣO|no\}l|%PkbZh&,0$"UgYi}rʋR}+/U~"@wT7(X!O(qgs\_%XN|. )ǭԃm6>uدZDzx'iԝkѥϑsDy1rdalU\ѨpwV9_C7Ӱ=nAA\m_eT&|)T?oCޞl@B; Tk߭- Q~8\-e|f2 {F™<&X?m"$_1-r4wgJn`CĹnJ]mEK-Je#̹EIRLg޳\ p^*BUt%V2OHpf k%| $TsLlu} YnHX#kfb`HO ߝ!Zkg2u;$׶ ǺAlݥAa^r')?Ϝtu k+:Nahv1SQ]Fm"('CSL))%a,or0. ̓hb7 }fN/Θ&:M|Hto^R>wi"A:LٙGs'T2oDU?Bs[1;H+g?SCƖC {q `0hlD2:h 졈*͢j2_[r$v{F]XZ٨ i  ^a;oq~ZYo-;8rԵEoL)e/Z?s!T ]JL 5KBr7%{~\>?L.0ߠ;D G㇞KaW{ެ k* c",@D 5K`PbuIo$J8C~e/qHagbбU=|x )!ȣ5YgZIG#sHD H/_tA-G$C%tټh P~g{埯ٖcϦߐtx<12(-g`Дp Z4!`{sĸ^7e /;9wDyA-`XZی"C}l`|hM\DEvin[|\A7o"!Q$GǠ7prDaޔC߮&=Xۭ |۬p H]_C &W)Lh0{8Q3@҅SI)#9D)ni+5m0c`8da~ywGJ蜾ntm]uݲ0?9#xh /hxkv @Υ`E|U* OS* k@6|*itD^FFܑ**CT(Yޝ84Q;]Qɤ\;:z!D[<=h{ImX?I&{E /7՞0T/qj .^/9ZB8otse6au~]G R/>ilR|i@1g򞾞 WjmU%:+1y70ǫ9D^nJ ib1p~d'ޫ9aXZG1Sj}oQ|C@DٖUK5  byhUM`8R to;҇[JJe|&T`P(%P%/҇c=Swgr7j6_U~\堇.4(: .5is&yW(X"#iX1~ҧt k86C.lf$!jPRr̜Ojv")?J8c%}^Zu5Q&4cJ ^xVQb_ec{<1+= a]ڻ2YJV9| |*a*|jA?qȯ<'?_Hwy`ů^U"4\=W$@">Ĥ-}(x= 1&(a~U:B{! %mq}QfHQ7**TFiJ^}k6k.=V+wz֪%|?cqHοd}|1 GX1^U^n^}4ԑ>?vPKA;4 $E5?=P,oP?hkcT|>a?~ZFKg2ۙK >𻆛%CdW!GySʚ!d %#``s2:f:z|/ŃSV'1#2T%m2 (Q`B~@.1q2f^&DkƿscL -HinOR"^(TӿhEAzlKZWvnhG~Gā## l{9"ÛAC=YxNFY-Dx($*ؖG̭3wƅ2#en(R#t@ pN202]RQH EaJm!@Kj6*ھcwݡfZ[ fgX۞oQJҰ5ߴaDff%2ء(D/@e4\/[ϚR&^@FQE4y[H(LHA7WCEJxhS\6| ,n\^25@cUwߨi9hT^gjL\r@ӍD6((H+`.2 -$OȀ>)nfTsEhwLBֵ:0Շ, X末X x}qW>ڝk M!^0Wn<#|a4{iB5 aW} $S`rz(4A7&3X$kFRޏ?:!**`7S6v N[b|v>I}돇Y}}rrQneE:\3Z+c~)sZdQ6ʠu4\!ɐjVNvk"hj8^oRW`UM2Ƹ_lܕl̀EQyࡿs$Wۮ62~>-@~Ak#\m` Đ]aQe@u)YW؋aLd.K)kOP 96-;,pvA2֣a}9'}y^B!U Pc6Q.^nkJ=U&ZܜGͤT Å"!F$0\260X `*A]<-Z;?WDqYOBׯ9>Tmf<\Yo;5;~O43q.iiFte4+ebEc>fjtM.: 'òՀxN̼|% 5jߑvl\#sa1p:"}?X~`|߹S&k9ߖ?;(peaTnu0FQ3D(S:@8*D9*  P3 Bx| C) `¸< ߑvZo_j2/Cx2y4Ep4$;%F֝H(,1 Mq+Q۷`|d;tjݛSi=qOJWpz }Fb1` EvhpCA'@*+d~x&{o!L@|B WpN==}jcmpZNIU"PFոaO)|Z˥xp6O}CSlCKؔnގԇgGKe/oM"?^B+%}'ƅ j3 X]IEd {HwdMWDUƤ9e BCc`tHEOJ7GJ?>\L7QaԤIuΏM(kJiT}p*Aho fXV7u5ТN橧~z{8Tӽs@i?`CK@Pa4ˆaQ+8>Z@GIer0{ӻ#nTE'& izB}~CW^o0Nǫ@zz 7!Pjʜ&,ȤP2*B^TXL2no8Yjt6|>Z-[3v7kN{@zTB[JcP=&=,E8JZ 8勱nyԫǷǟ@Z :9=,sA.HcM֨Q3 ZY2=9חN+lo.&:me2Uu9>R /~~a pHYs+!YIDATx]w|TU(B{PB=@ RIEEd֎("H1BUeuw뮮qɝLrg/0?޳U=|~f 7ung <sSdK >O:+]CH^[DysZ ǃ%X~MX;7TY5! h;udO,lg3`+@/LRt^ ݣy|h;A_)ytZNۊ_`lvܑ`fg6m Pft~wUӚ)j-WBOdXXS?q;ԑ]؂@upgd D7;ʷJT+>S{l-/2 VTa D8K | ~&й.TɶgSlӣ^?vgQclj 9.i]L7%/h<~qq@ wL[ճgCdd$u֍($$)00lФӶ`d~͹6L6΃6-َijN!X XGh8T@/ue5ۖU>yСpBa , *//ӼyhΜ94k,***)SPaa!ѣiĈ4l0ͥS޽{EiiiL K$j>&ْL~ `|pdKL9LydbúӬF&qսڀIڀ. '6:c@$,ve\E2Eٮ߷g9Pg8'z08vƘCE(xD2{f|*r{O{ϓhS H"p_lQIDLף <{_RbwC =@ˠƿ/D2ۙ( TwcA('⎖D`9NϹQPIh{{c Tjܿu",8))f%Y!(5*"َQO cO>pС}.NFep6&q >n8~7}.n#}ٷ Aj&J,3}$q=[ge6J嵮 -!uA ޻=¶)9쮱k9 ?ꦸ` -A C:D"Bׅgs­Dl'XeyYԵ҃>v`OPl#zګL0)j9V d,j4 $-alG'R"l*U@i!kPir D8 +z]W@}\CC:Zٵ6-p5:s#&#f=; ;9?gvmk2BM-* 3L~Y=5{{|sҪcF[R/  )B vkAԉ_ j'~v8ß2? HЏ7d2}k@/!?;sV9)2۪:c?$}I@G#DKm7LV}Eeg[ +e|0`_=LGKʴZ~2X" \ЕzMڽ$?u~̌ \sq\'JSdT6&سgmi'7h BbckQ5pY 6g#Ջ >WYFAM wg{ C:Cߏɱ(ώ:n"!c@v"u1XQ-l6OAT<|w*l!tx?N$&S/LiFX6j֯ۼjOU]F7nIVn(9 r]_R5H x|?<0/x`gpY,BX4B"vQcLVb9qp 2OO>J%cV isZEw K-<{VV?nFԎ'G@=tTp3aA}yDy4[ M fmN%khS3Ĩ:DHœ2?1?z!W@Wۯ/'s;mND%u)uD[@-i 㑿CD -<0E~E&2`DI H.{aeH ?BH:Mढ़=/zukpcCXMu*|b+E(]40@ Jd+]nIEg s d󪺫I+'@lFoR0v ?udinMJQ) bȌAx0v,[UVLʇUޠ  {0cޭ_i]>jNլ[Y7]y'A?RU=\)rL}9Ex3 A+ɎF|,! g8 |ش{4`REE] f}ق,gʪBv+wpɺd%̖[? |Z6VWA3]ޖ_fPBIS U2 JJ: Ep#>10^'DVeI*\2p 7%~GV FƩK麃{xqSA}x&F<AHgv?Ud˂ @FQ Oϯ>I]m_HJ>ȠSL{v-MK- vk8 >Egѵ |pg~r;B}[8E%OHJ>:NGMCॽw,ȸ27?H)O"@\> M%u[-2-a(H<㙭J=t_+aS:(Hَ>2 7 >?DmfK;D1Tʻ>DR@g z8G_"@ Z4hUizIH5 w|1}<+=C#.!C8f<$_aǩ`=pSq "tvh[S)O$Fնj @iHR b,S-^ 2 TOq"yL6t4n҈ :#tO/mCUD+1Jwak;3N`pHma.4V;[@d ģiօhPdbx7=P͊uVP fWIXrElꨠV çз )iS_-Z6J‡-i.x^KLu,c< >` l|' OoY/)Trf6ՊuE <`b =@ΤpUShlGTf`Ϥujҫ%A?eG.*f+{.>I̬Wٿުi䠀.gbZͬ,Ĺ@~S&7Bzy+[=~BWH= ǏS= ؠ?+r!5.}YA>eɟ;|MGjj˖̓.)=Ly9+$f'`[G-P?t{I+UU8V-Hotxorhn1g~Y4 0>+Dd7+3*Y#w7R= >W-' wt8ZZֈL=C+*i-8L$:5;S$x]DK (SGk;}(S?'͟>q Enӭ~k1qV`i&|gO;u eۻr6D ~N1j S2c bM_MVg6hq ٖ߸B'w>es_8h|qC$qo K 7DfeYL=S[ʹ@*-ЪIa?h7d<:YA=M%zI^[lE^vzY{$[PWx|gmW-#TN3f !o {ɥm`v [>74qյ&G~rV$OMeo> TXz] : @*(ť3]xԌ$XbF4ڜ [ef7w,K= '4;f8"j d+x+-OyS_]q9@ =JGחt`lhEZgg wg (V; ;^f%`5 nE! &;;VK &l"j @J^^+|zZ=LD"=߱P/5(ӄ%ǧS9OEc:xX1ϬOIiE}[hqMn%(rjEpeA f00 a 3`An{biaIENDB`pybik-3.0/data/ui/thumbnails/Prism3Complex-5x4.png0000644000175000017500000003234513137372662022206 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+4IDATx}wxTϯQ!ٚ6AE{) A@-tVXPTĂw=!`>y̙y7wo<7 >&7| |7| |7| |7| | ÆٓAwG7~aQN8'Gʗ>ghF絙Q3£-M(ߟby :/US'}TiSBKOXX9%cV_tncjvxhLti槃t0VN `=i ƛ)42=K&b\]8 ĸqT:Ur jTy, q1IѤy 4mU2>9 9>U봛0waI_m}?DFFRBl{▅03P 8 p(~^'x^4UV7`-屈A<ϛb`|Rb[e`M6] lɧdXvk~[h լY rAꨯzLBsis@>^ d *1ت3j2hi£ ά6頂>ɏյ6@_ɿT;?K8t(`oɍ1tv](3DѸqch1< yoF?=}EI^i0mWkcԜ}:8CX 6+EGGS…}ԱT jU5(RHa0ax*Y,UvB  >fܹ9q1ruZnn}by"k_{s},D Uuޱ^=4O)6h /#|&Nl'p4 &P^諯lql6(lʂ7ɂWĵ  < 0z :o7 bs.k׬\ (9HsmBuk-"t#ʸqy `شinݚ;*S1Xsib^5? RY1dIڒKb DQ[$xm ?_H#:j@-5C~3>)f탨em{1A̝;W_PZ觟~;c}VFy5̼+YVjo'bak p n?r7`0(TBL׻QωDy^@23g/͵kd?ꫯd4UznD}R! w*҃U< Po;wޡsl 8{%^h`xW4s~w=\M186]p.^(-~&1r*0'SQ ynw 'ׇ;,b %տ[th(vJa -0 WӢ'M$.ΥK襗^C o.^V|f:߳.y|jc ];Hڷ,*K]B<k.:t)ժUS˖-iƍ~m0\l Y0`c8 X|LUTַ)0{ ^* {g$A7puS\%nS q Ӯk$Q08H_/񙭱k_ׂא!> 7k׮+ x!0%mGmj@C.6QBmJJR]UbdPĊzb@J.-`k؞@/#EP@'wV®IOјԒG;XP~ʋO[]gVn!?l DDIWyCȇVEǑ:˂µ3.p@<ԹNz; ڹs1cP_Ս z'1XW|AXj"nW=(Y¤VV@Ė._-uj k kdp4O8j@m SJIjS:NL^e n/@]*Fq~@@|/nHN˧FPr<},eѼioN珼p߄ :?xu/YfyYP_ ,@n"CfR{^w#h@~<@k ӯ_'6 H!QJr -]vI Ԥ\Q ^ga[Jn0JXvm̞U.IKc/󝋣@&ߞs.jBCE+Ex?3^.B>r䈤[xРA ^xA3 ϝ0ʂP=E @҂[Puta:0zA %\_wddDX_B˞:st4p*l X{r`q CF˗e{16mW~ELDa=RIg}XAN`6d L(rX.ֆM^z/~.}|ͺvW7XSԮݣ5 c{z$ Avp+cOQQQ=zp=zv  Tgk.'$|nl᫱7ol``+mŸm$YVNoi(AE'ԯKzFQwFԌgϊQR%޽[߳gO abcǎ dKUw0(n{߾1IvE~ v:?cL()@C O'{ N%zEf%BN7zk52$^~wjjX5jԠoVRİ%`$m۶oFO6MVD4}Bw>~ =7&?W ]ou/ Y!YM)\DAngO0L4T>~^bu4$$>>rHa͙3GF%B4W94¾}<H!7d* &l'DM>I)vUEq$i6⡀FJϠa$e:QI S]lBo #Bi, ɲV-Ԧ$YT4IFp*_p^_g]M/ݍҳ{A0!<`קO0D+~xhXȡ@${ (՚Z9,i!"2j%#(AJKeRY(V *_ U =1e|_;} P+M#Ej9}ugKN @)8/jT0O05aӄ 6Zn~œeY1 ۀ:`Gl֬}'^XъiC88Ĭ "aog% ַX( yŃ?0?{GY7vXNC~Tw:DFR%MԤ\Yˣ21X#qJe+Sal0h_@!X<>GZP^5`?"`Dݠ@_x+Wzn"r U nz.v*6isVK, 7㡑Tyk&xŤ3aaʊ "+G5K3 %,2sMu5i#o JêV:!a?7ޠry p`שSGG߿ =*PZ֘59|Eu ac?FVa.|WZ вw cPrFA9[WxX4{I# WJ(6DYޱ;/ DYpcVY8"4}6H/Ǿ! nȡz{~n6tLVLtxE4fݰ-G@eiHJgwVV(iyHHJ BSgAаlI&0e˖yCUQڵ1GDDc- ,EZ'n~ z WlcLkŸ RV}% ^C1 [Kgiص˭T=H [oz Ǐ 0޼yS8  dt| *(Z!^O8Jފ r Zֲ!/ب+9WKqZ(><.\#KX[iybH_/p}jFPvډ~jxIO. l8n Pl" $,I[cu )b,x X.]XϗPצ:~(J1{oQ\-Q8`[7,<s4i. VZI`.]ep y>͛7O10qD1qSJ[;xj[o)g2 TUyN XVQy5bLb˴ՉySx?X=riBLQ ʗ ``CH={>H{O^ Ć 1/\PKMd-߳oP9*nZykv՘lHQ* wﰛdow#(_͆+4p yz$A>bhpx(5nR숣Հd~X1^{57lP}AsΉ{܂;v2K,0hp3aG&PZVϔcvtrL|i=kޟ` Gx5'Ǚ)2TS2*T=C 5y9wVH >zKd{a$ݭvw5a  p0_~Y:qP1cѢE@.$IC@siYP{N! &-d! xrs—q,`\s:: ějLwoND}X:!E X-9K_< FQ$@\%d  {l"59+"L*# ZڒmG`R5VTRjz(j.mcD]X.| tVOzh*``?.BY/8R#}Z׶S6Nt"  ,m5S2pX`Q_ā\AKc+_r=H PQ ~^UP@*& 24=_AB  |'[4χ>7f ~qN 'y*}_9hށmZ!)elc,`xMW<0R333eQ3 jxH$>0 ~T'u~ا!ͻm=mIzV sJuiܸ{23* ^RÊ120Os>()+}+UonKYg?/cG_qqo|8)?1ʗ B׺u [ߎϻؿ<^-P=Nj, (@4رo_B{d(R[!Cd&G`aC`R<>Rs %)T~W3*b!?#~ S#; ,9ݷ 7\C< H0ӿg\{Q]Q۱DO n' Rfp{='ҕ`ZnB0QXvZB`Pl lH5(dzXʫw^#^ h䓂ZWr_` @G6IwZ.dxi*~px$H@;.o| @(tNMdWZp~l-P4JdÖM֧s%x5Zn+]9Y+Ir$z _jYЛ}CƟ{F@z4.E-Umif|&f{ގ|rZ[(_ UpBݣ)TCrRITJ--[~^]@ètt4CQڸK݃r7eOjV~ODOeRt >_s4| ;„k|q 6x ` -ON5"IS%*h޽rNݺuŎu0ѩ,7VH7wv3#m5\5`KzG=e }Zux3%Ƙ$g·T @Qgp>^kcü=i`åCAʢ%"S7l u*t,!£@9XP .sy, 7{ҩ `tAn_e=Tճ]kX%s)S:4ԘS^;6{'^}008 l<.\f|׭['aм`EBy0)A㏞&;DLs= %jU=,t53>7Y-zgG ORD;d_ 6{ҾwPj]e_M:V i^h%LSLXͳ"x_Ftjv~=* !Bɓ' "g"0Q23gΔסIya/H!:2ED ~1Nm0]:)*_b3tQs`fʶpٓ }-b--,5A lY{{i~t ,cZm\6m4U'AxVr@Hb(1=(^ApXVGFoP$ҫhf>Z\c 8QaYA% 藣TF>.87)bYI%q-&IKj d!ȃ P s")[ȱSs W`+}>?^~!sHt‚A0elmBԁT8'ۅ>qҐ`|1fh!)X:PS}nx7' Q;)֟Ȃm\ݮ8b9+OF k<6Fq`^״{%~*ܹX+V*$ly -Np$Hh6"DW ‡\`:8|-kxRyӺNiHYS81j!r>zWr2T"m zp9ƕͼ|`7,2u[x=  5n< xD!`ҍ>KN4+W\0jZC[%m\u _՟v-ZzD>-B/_6%^l=] B%D~XXU"FX5H21`;Vg,?3@ߍgn@]K컋!46Jj|0~HU*eDJ|LuܽCj)&私ѽ/-ٽ]ܨ@<~D໣UFՅ (~ic8ЁDZo@l9_$h«hYKLZfv_Hõt@xwac2pd |/‡p̽,CzjY` BV;B P7P!}p`P2B@zل夋7sx4 ^cGl83C5DŽȹs#PV"wD`-^ >gΤ2;X^ >,/x/G[xU50U*D Nj H(ugtc@ܿWKqбJ+ Eo(HCd-AlK[==Ow sw/O[1Y!T|?E]G==0Tg'=ҘA>\;4aqY2½pVב%{ "GY㇄J/P.@~w+Rs.0Af>*Q7@G;# Ch@ ! @&~RHHi<| fVlW^ΈUomsk՚?{iC1*OR,N`t -%7w/% ~T1l܁2 f]wͬV?_CqI{XC@zޅ%@@9mDRpC /z*ՁT ʼal}- 5 #W9i  QF evsi声` SJNY`A ǰ@ԡ]_'TUӛ5 T vPKI:xH ^{=rTn=.!UzQjRϰ:,( 4sl'(X!SHuӴf5lԩRh>>dߎ&Њ%>X{G7Z~qXd*V9H,X1T$ ɳ)iF yi1OlWw|F|(^» w;jļ=v3+10`FǁP=*zؘpQ6黃|4-çLQs]ֽRIux\C'eʸU1ۨ?2cj9*!T(&xA;9Š32|Ch@O<_39Rbe½IR9O0_M\#Հ2##CCnj#yJ/B߭7:iDT!\ܽ#M^%e9#˗gc ad Un|CS-<>D7 Ӽ1aC eFBH-Gƍ:n zTrm3eF U` Eg@Fc eOH*Ve^ d@5|Լ?xoB$pމ$>($D8`8V aTpcJ  v0ލ1F;Y۹,*mu EVu~F3gq/!"QhaL anw=pbl~x'䋆N{pku%=#FD"(_p K_.۽|ȩt 獍(';w={옴Ax #@J΍W͈#b DnШ^? {p7=jd,<* # Lw >I/ ɣC^A"fZ8jƣ(G!A|@dD<pjpi:q /m!ڗIU*>#fjCbq: a@E}dA]&I*G0+`% D=vnlmFH>~`зzְHzyHuhVY25w Rg72rx)͡}9pdA$Al Rb'zhTJ_ n#@W?z8 Op5kV?::#=vP {kq?*=֯n0%<ۺ wF3paûg@ {U0fAP@=~Ùm0 H?NkF{܅c_C8s \-' 0QUzݻ;$\IENDB`pybik-3.0/data/ui/thumbnails/Brick-10x4x10.png0000644000175000017500000003176313137372627021144 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+3IDATx}wTU)PUrЀd dɆFb< 興Dhd|<q77fo}έ]]&U֭{o7?227!M 2Ȭ 2+ 2Ȭ 2+ 2Ȭ 2+ 2Ȭ 2+ 2Ȭ 2+g㖥OZ[Rq'iy||uj 8> xBaƿ{k06pGEJc4>AgM[] [  w)B|ǭʽcӘ[o0o *` "C+W]cx7 o XNpm05@4Xʃ1^/`N3xaYߍDZm\;$2O(v #@U9 ߈԰~/S\o؍_~ ƏDKwWqL%*:4; CpV^>Wiw2-  $rᦿk 4xp a,7CU0`xU_ \Q瘊4Aݡ!:Hް&fx-M7y}GgN[o_Fk 0B޶@^[x4G>ߏ-Qi>8c\b0,#8?T6WW]a|jO*9?!:յg7t /j}5$؆hWƓ3,"ЁXƫXNkD;` SQߣ{YS&Tq6= Oo` MፇMBKiio3@?s ~?FB:|31|{+|nUm^$ {aGMS "X5 .Aˀh 3743jk,~ذd(;anC e ޓp@x_AfF+tI!ya (T)"R)z1>a75>-&q36,W!+*J ^N$ӦO_) g+6[7t%n&oD2v^]W|Mk,C A>^#O=.&*lIBI3w^ 5$&!Lu1 ػhWך7,>&=1Ő g0T馕k~;!7zn479%b VQ֧497{ ׃&XM̛nd Gvf&`^dA'aSưhHPq|wD^qE@fWbIX1iN0&kz~)FSO&Mx<<{ vfj(6 йu0<2Rg&l35#3ޣI᥍x5BP8<Ѫ$Sшi5sA"; s{ȡxM뗷=+"A+}Sq3w-k#2L3,G{7| k$@0Amcq`fXmp~Vz hT(Qe$,`ڰ)(~4ƠY,BFΥPÛD}15i@YwC&&8Y#Cx4rw1Q:c,{ژ^=z&aQ  ~K#ETCbnjj5~Iߎ%$#cnU U^:Q;߱v%2z lݷb\K%Wp{-$-K{|]g9bDܐPNq >AI +5)R؋ϣBI|n@* H܏ViHR7,GUL^20}@ᦥө Acq#Gg=||q~v)3mPi0Q8>{9N 5}\0~Ucp"nE7K g Kg ׀ ,LECf ]BA AY^ҳ$RUy ["!x:S1Ey\L.g$n&?ck e@t7z& aiռv) 64S+,᳤k[ZghT})>E% 1dIx {lS1LwLAY>D1 P۝G^z!-ԊbjbuӌWmo:34_2n=@2=rnAQi+ @zŧO04álbb;|~-35 jTJjOyF 403I }X/RB~$*.WL U/=tSJyy)GU?MoզS|N͝4P/u8p\*piiQEC>%>e_"o7^݃#XxFvln6e45ͤt9$ aH^08M 5!AB=?/Sc#7GwNN 8Dž3ߏ69ҾX"LksRޢ1Ґ!@TI;iJn@m+4upj9I1HH(|gZ5߅᛫t a ~V3sDf@`S8EAëg'^^S?Zztݠ䶥hlCMem8<4M<9ŋ6Н9V3k0̌_2a:d,7Ϟϑ~VyfijkЯO2i~ zKPtWR48D`$R&}6}8$|PwjIuXğ/&ԥjylR7Mے i!yzYZxT o[@K~=6$4,>0`i &BLM >rp\@mD/iKi15%SUjc٪]G-[pP=>~+ Fr$cT.(AT1_FS0$24&)6>ZwRC%f6Q'b%Bm4Ja?FLH8n=al@?)z;k*cQUUfQ>]f^z\/竪r:qDLړPa~Ҥ~?_ 3a#4Dq,KZH]<"XjhSA{rlˌ tF 1A@YLz``zsߛ@6 vIsO${D}@W$LyYn jφ<_L  &o:Yr+s1OdDHȌrQcɒOAv݄媈x,3OA3)-kDžo->YhVV<ѽa2kXn_cXs5BL%k #H%)ֈ$N7;jO(юхDtƿ$6F#GFEgpiZqs\[<#Q-zcԝPGDN}GE*rX ^n<@җ-98h7=đ7@~GP-d2>G;x4sw$i H/Ì7ofz`?hj$KBtqjHc:0@^;gfDY'_PpGjң~_-@@9=j\q  uT(}a,yrTDzxXuT;'{AS pг-@`{4)_Oټ٭JiO{M 8VPDEBxx8GǶDy>^ߑ4iR $_=65e|0R243"M(TVi_XK0 M۪cSAx[Y!>jŒ|}L 2\νm/ٹ|ݗx4D 'iG?nB{jdi ejYPVn9JMP2۽y ~:>+{%S"ϛo@7KzU ]V ߦ£}@xk:Chu|XYj&r;W+tw'W^_DDW@0>ӌ,-bZ9:J]%=7l2d03xj.)09j|#%ry8h;N"~fldYŇej9*A*xD'Kɫ(G-]SO -JՑ՞TPR=!$ȞQVjh@E'{"!>x"{|Fk[#bnD(x=m N)r4=%3~? I﷥ DBHE݅ӣj˯-& "_680, ^T;69%{a̹4.B0~V[<< 5A/ f H_05=#I453尺1F&#- ||oxws}2?+DG@_G (shsGx>gXGN~[g ,6'/,'CX.ڂ! e|}i 5JDC) +ꑾ>~^թW<+Þo/P}xe@Ֆ}/ 9jBvg[YZPH6d[" DKxS r&Y-Hρ_e!rXcK肴72X}T9~|DŽ5/J"lqс?TFUQƘ,/UE[77xT&ۯV8KP)de_H{7jI'N~OfE@Q 0xgTH(mɟ-YLCƠTro `|yn?Ǜ(M8op(2CM"t!@7{ `gHI̺x$RKʦ`  U& Z0 q@Fo0cVs*o~M^/nSM% '5Mv* Ga3q's\| =:t$]#ďR/%`AA n 1s|p:Q٥+g$r0-"rj]'p.Bd?NGzU n$CV%3z%7rXVL|Kb`R6ʍ7{?ky*H;Jx/cSs_w:y=򫿡cޟ>::û ^G%nn>Тq}yOՓC)b e99:#{y^eXj)]zE@2=K9x\bS4}v|NcTQ#,%K0g)XXt&٤/9)QA(hG#B&~Aa~ꮸFgI$r Lk}oKGeDK- ]u)Y_*v. ؼ4;y%:9=NPE2O4 P F8BTrOz! ޖi:,UYKB"UuQPB' #{ ނӭ;Lɰl1y .)Ƕ;[  ӻW|ճ\~tozԸm!{J"qGuDͿ2v1Sg֖ĝ<}Ye[[bRp6@;Zqt1d l0:$"$PIԋ!P_rmpF -JyRtU,ցIbAj؋߃-4#^R,zG`| p*y|RC|?zkLed{Y!$zk~X]{ݩQNcFi,\:d'B[$k6H_c?:B ۯ"Nk@ >rDXѠ 煤M Mm\ee ˆ T K(/OvJ0<D!,DnaU_U _hWQL]G)VP +d)X1P⹘)/ۯǁr3,652--BxIx]k7<8ve,EWVf'He_xQ!ͧ^/`Sy[8["X;#O 'WrNHŊ#{Xz ɤ@I"+BYJں\M+!P EC*@*{;ו6B؟JzX׿? fwƘkvX0-/PV;/@ïVBz[C B$z/\w)+oĤH>||ԾsGw4iA^zM%~x]L@ɰĐE('BAe6\FBlO+5G"j{YUG-ǿaK<֞m 7ݶJΒPM.楜g0 C|"I JAp&\냀ࡼ2}|~G?z̩}8C;,.0K7 pJ v$†8LuebPNz땒\QHZ2;&h[Q:\}g<'Q>r`0KV0C|^*H0GOysWT+±ʈ 0JKiy[^'|ooqL}i8IUdgߒn#A)'ESH @w+u:VXLji1տWyrpN 9=d`0U#YA0s*Goo9zTM-N0O>v{\KUEǁE%&(!#$JZ;`2PYm(х vO/q9~Nqvo՜; zۖ%'mHب <$uGV=gsy3" {o,;C 0<,t~XBOԳ}|Z:|fpC9=j\T!>׀'jݏ1c诚 =K)eM-+Ή/P= zԻ[aҙv xdYdV@feYdV@feYdV@f9f[kIENDB`pybik-3.0/data/ui/thumbnails/Brick-7x2x5.png0000644000175000017500000001743413137372565021014 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+IDATx]yTՕΟkںꕥAٱAAEf%j.Ơ"QDPJ&1&$:KƉNr.KY5Tޫ}{_Wn;}L!Cc 30f`!1Cc 30f`!1Cc 30f`!1Cc XB 5xr-OOU?dp z~M[x@mo Xvd+gXii.N _wx?UaD@lFxvGݶykIX- nqxߊS,{H/pLa[}!wV! 8^\ngw}~%<#N{ɰ 6V9$yC6&Nk2tɛJGp*h{$U r q='I^}\8V |$ =Ç$~VKF{=o ig;b #CH1s{Z $K?Ȳdh=MХ|y/g/ݞHvs0畑dx/?J ,]yJaCֱ5m[<.J~`~/KXSd)FjP@su|^^-*.!2>.Qݍ29y9Bء@ rDJ>Dy=@FQ&|>1>dkYY8 é҅ԋҸ!ٚ\z('KgBR]#/ޥvO0nb@ H6+ZL~TůT51 O{e^./fmMr*q!]9!p5=wibPxPIT 5o"_yuciUrۗ%)}lb d.&9{Jx.ArYxj~vę9fy-G8S W'd`iZ-iI)@]◤ y˼.ݴ#J`- a_@!s48'jy z njӞ?цicH"HdPLٯt"u(qNҟy"N ]B `e୘;Q \ 2D| 3cu hŊ LC~y@@\2<{vޙHI1ⱰC] yo*0uKenLf" 酰6ܼ?mL"z3 ~#I C@5|Re=kf$Յ|O'eNSFJ^ä29%JTi\=bq "C;a=?Y@ٞuHIҲ sW3 y/ciz~Dv w!Oz@-(w0pI@ `ީ ǽh\>K_s_HB E'L' 5@na:,Td v\up;!]cLY<޺ib B0_CPW="繝 1a\@Bx(ZX94ײ1T 2\sߑvt]T5id=òie+( cXVxt' yB_zuZʰ("tF|v&v6gM & 5|yx񮔪֮ ʈS2{n[z15I }&Z&zmم-1M椒!0[_%d#Z]N.܊+ۄa8Il|?0Q\߈qB_D e7"~+_ӳ%6bܽYIT#1 ='6͡*"a$ȑ&R4qāun`un [VV& PwqBw5KQzEfҏD `j &YyGr/;J CM"C/.Z,+[Dqq}-pD"n^I#?b}ocFPHn8ޡ<\AL(?dPsmPR}W%5 WQ&Q폖dϻU^@2%+@C(9&[gDcD-7@0W_)xI1 V%tl6f?4`f,zȖ,qTU(Kr VPd|3. ?? +&FwhXFVљ9ZS brRiRCp%Tub\R@L52&Ps2z>5مT Y{f ي$x~vb^O~ J?|Lk _X !Bs[2;d;0i o}XdWc'^_h|!F![M2)º>Aq(My kx.XM?E1(S+ %J&F\SZx_:JvS_UOޫZ;xEbVTDCM!|_Xv v"S S kB8\3J\Eg"A"Mbn~;v[: u&Qg+dzJAUIuwW (2Io( )<ҺȒs!s9qAZcYF=3.֤)D!P> <]RiKod&F #Kp:y/BiYRpc&CM!۞( %JvVaS x.DTplQH| ^Kt"^3E/Q82|woeLIxտ`c|^k}KR00D.=ص,M%]_\B,RMI6LLU`pug{[Θ]ؐ1$"kI+<BFm U  1EC;Z&FAeZ˳{#.@6zpz3Y 9CbJkA;{OZSk"H2^󬄮y{Ee]I?{UK|LTMs]gZw]QŜ>:'#s#Q[R‘6Х| %858{&E_eCl}4*~D̟{R]]bS(Yƞ$吡QA(lja=7K@XatG 6+w*MLv>vK.MFDڰEaJClR,{IſZ ]jO}+"n& ^^]|f:y ]*]qw]*w)V1yH= aT91_iaLt!t׮_ /(Dcӿ7?CI|T- ]TךC-awGfdOzDCs *V7Fgڄ/MBThx??.W.9n߹r{e[hX9OB][ģ';v'!(Í]뚊ٚA˳ ji{UlEfl59*g|W/~YEA>A /uATa`>_Ob\S^mOzw|5_=5alq  HZ\Rk{\j9gWUJń 3yŒYbpSj|D=vBsM7J/ NG!"@]TUd#S 0$VZ@FQA ǥN# }1u g]y`9ӣF YbK:TBׁ,Ϻ˷c}1 V�S)~>ct2*0=al9K nQ >ĐKjV3VD@TcT[D$(={61SH.l0Jp#H yMduX̞"8BW'??~%_g~?@ jȢ 7xl2dZZZVdU&@5cٌDboru[]_E?+ &=\oiK/p 5IrmPͪЊr)a}[Oc'+bس)2*-e= 3 BJ߃ >C x YN.z9Rܠ!{bGOp/t޿w$%<\$6h<Xt_޼yP}}"47X\C{E#j9*3*G =v!VH " 9i`"pܡcބp\e.F t?_gkɚ.e[>hi_0~`iól9;4G&|CInaφ+ΥAO+e!K|j;Ke(bUm, -8-HpF.#.qWQ0*TQ!IAy`n{qYPǘ/WrvoЂqd7wO|ވm-qyRvo }1k;aXU- @jq dG.@ U^/B-ʨAa>pWvh2 m'wj1s&nBYƬk,vk0W KrJEndJK8^*X1;zU8 2\k=%&D뚊.Lq!*Z$G'ۓO l['w'K1i1t-hAGZ"'>/ʍ_ P 0wHjv荩XDxz;D`C.(I˓{* ~xk!S,<o9<%~] JS`A@%lsM !P䰢Nb3Vde ycH0W\Dg)'# ɥ zH-%X\ I4SMH1xʠ>)Sǐ8+9:IE k(s%XN)$2sU&>x<Kd˗u';->QA6'ȲˈV8F(YTNz}J$6OD`Z\<]5  |gj""}@0r %7dZ]l,*~Ebt\|=Lu }K ɽH F ed7).u7#V-ʭ]dN%LOp[z^!3 %(SAF-|}҈l0?%{VɷbN@v/hgh0Iq`bOpVBIi_o>?gI7)=| 6<IWjں⯏h0E'1Xm9?w( 4{ukm0I3mщ _|fj0]9P')[h?a pHYs+*IDATx]gxTպ?9zLf mfBMPEWCGEPQ wW$bD*|wkfgO{Ҙ<뙶ggw}?NEw|M|G7}M|G7}M|G7}Mj*3I09}`qk8x?Oc{f'k1?{FI-kd\xbs҇ש^vg œ%jܵs >)n<ܖx>q |+ 1:%駟A x -H!gZ)FEPwۋ=_JoMn8M'{LQL8 qp+x=JH })7K!خRܙ@OzB~r`*΢]ⱏ+ʮhy @Ж6[[Y|dwZYJq|6FH AF;*/R^;!?iݙ\cǎMj6y֪z_VmvH :hb ,Zb#.OPFc9B-لYZl[^EB}'4z*a,[-?A"ƅzwt8@\N9o*$~lU|oYu9񺋵o7Tb6!%)}'8KV( #Fp=0Xc16=\Y ʅW]g&H $K| i2L|Ǒo~ KMHUeۘ2,uѱXzJd^ ѣ$ǵkרQF1JVHƉ =SVF+F?yf?|I|K@Xݕ ~Þ[!AYq>(ud 'Et16ϋ"bرqY*UQPP?E.A VXũ8u1 `%&.hK1ۈ^Q$$Ph [x(u 5AJ ۫` []o >}S Vmؐv->}/۷yb86Pϒm6V NNP1{P@dwTݼlm6v zo2?gJ)RiӦyd(##vE|qmoe+"!: @o@c-gN*5&NɊѣeEGр pIYww'fุ8:|p?0a"1Y"?2Bn#JR7X!$ 򽟴?&@6>!=BG0 p(zݺu?`ܹZ-[͛7_~|b+v tY΢9'v+\P豇(E1뙋erls|v(po> JsTB|!-Z UZU3`0p%Z4 = @P|UA(VEC`}Ή%18e)5ZIā'[@2k֬߃n㥋9!!dɒΖ*kb=WQP&.fDrXX =Z/` m;N}2 ZliJ9,rcC!n^Xr;PF/WHɪM]OSGAvhm.,ZR8R0iq΋⽂9Kqw u>Z/``m_~-\`ːZ<*[|H&JnaKVCu#F!T:њy!@ATM_!ɏosy!z{J3f{&ĉ|a/]D| gӿ f.nz5<&HNTay5|NU@"J-q/ pIior#SVaԩ?#G诿⭂-?mb~e7+dRkbOb5eIョKZ|6jRמ+qѫ<2~xOżu{W`u:u/FӦM*_{?3a,x+có]*$S!A\\n|?{8+nN9ixP ltW'O5ݻŋ ԍ7XCtXƍoݺխqzNUNy;{5a 9w,~^|7f>iFEEDp|3\2}Wx뭷IX%VPӢ%cJ o;G`Q:t^:oBs${W$R4m?@j O+DINZE"m۶ P6m﯎Z I`+O>WPT5Cq+ݸ5jps11Yvmzga `Vτ|c(?+IYTCPA86OXfE|{KW,ϐu[nb#`'X9k1aNX霚-?:<+֣O"X8%X@ü[]haIT%npz<Lwѷ4]=H~Rd iN; XeXݻwnff&Kg}+ !f};$a'Rd\4/ڝǡ=)gaɡLX "+~~B<X:]  ohb(" 58_>2+n޶qG%naDv%|wXY]UѕݚD1 o8aÆ,vʔ)9>3XH [|)+<~q]h8Q1:P^i”۴ڀ+; y7YDl@i_>+dHSG.B}[sHC~}`7{Τu|:^@P@&}_{̣2Ed(߷o*5tRA0{9cݺu ,?Aw?Uwo&=}#"=4%!Nst]dO̕qKq90? 6ﲌa_n8vQ>.ǦMzH{*ؾ};B<5}"^NqHp h879~+^c~f G\lVft+,5AW^ "ܩ}t{<$Xb :֯_*maɝ@B?Ҏyўf>'v̋rS? „Z&%b >wceu$ׯ_wqG8}j).42D I FZb.#+cMǬVJYQi?Z HWfrNMRZJzQ'@3gΰVyP0P`DKN3!*-c@|\qte;I]ڕm*e+\ d,mܘ$4"AU," NNXPBAtxy G[ դYb1\ABY ȸ|9U /jٳgd H AD\ s.:<c,2̻'|7S健19rSAg -Yp:J;I"(ԩi s6iatˁ`ۏo!Ǿ[";Q@saxbݣ_U+'~Bb`0 lE=j! :+iб*cǎL+'}OS*&8GbJО9=Hj*qDj c㜼7!̸skd|8ĉ!C]rtܙe9ǔ;r YryG?W1zhi 2ą-B ?̱yw)'<}x(!GV=D;PV=\ ΛoY_|羼''}|=9#=~1 нwXHMZ,B< Nz5)$BFGmnZ !/ GߣJRQH JI e,ELzOc>.vaށM10|ow 7!S%Ռ0Yx]•f^{5wX p&AJ.6\Œ( gvA=Z02Ļþ .8V*JZh(ڱ0ڤ 7њQ|& y? ͛ٓ=@cu"9s0x *V{$eѢE 6*Hw=\<߾I WY&f(1+PNDEp`Id) ~S+[8!g.QV:[mˀ;!pߡb , hBZH17¿d %| /h^]ٕ3x@مWvQXVNp~e%&T<|':!-\%}LJ,Y%X!  1ejP҆>\2!d UIAg"5 s_kbJ҉QQJoU˾P|x $z[2.#NUֱ;6; 2WĜ{:.b^A?@)mQ'h{K4Bu;S|cb >Pi#Ҿm*{I>s:`e 謞 R|V0mi:9oNYW`uh$zxQ.| u[7lȔH%߿?lE="KzA'G|0pr'|`׏;ܫ}n)7 1nVyqz;X"&լ u`@r7` YDO5 >2ןMDŽX9ZE}v$cG ; ?u&! {g|Bxn!e@8-@A\z)`?$'7|]b/~{G aFZ T#AQVڽL+&SN8o|z 3a!iЁ @HŀFP&ezq@9o?o IOڝ_| (.|?fď ~5>vƍj!_:5aTfp9tuGN 0 3 r.lF5-LKbѽ_v{:Y;~*W2 X geW`A}5kt ӧOA{8|k\F_+ |&^;Q1icGy[YӏNT Ϙ1x> B|(3a] sh9.mku(XݽdQNGI3zG^4 PAX$3gR!^<8x`a+<t AIXH#Gl@@Fd&]>RVxowoۂgn sfg<\sUd7Cr;DI(A LAq_&{#MD4չ~u^ 4>@+#_A4jRV_'̲s7IoײggO_wjCC==wp`gj6䲳}iALy/tgfί^`R 3s0qѱʑ%4l0x`i"",bxBJs} 1_Y?kȎ5GO+闵?S(GL=| Т?x "d~rj~^E.ٰ!`ȴ08pE4;E 3 ( @ػ\#@k^>FpD#յmbVt 1rg4z@hvy'{z'Knp-޼x AH{RĬwMnjw/+:hտh5`œ7w.ھRG0|=AP i'LF~_ 9fO˗i^ _| Ŷ*aUX3O'y񗄤@/z/}V${tm@n [P67ϩABEƮH{sX,…GAF} Kt5 YRϝ2 DwWk5nT"J[h^>E!sYVpE7._ {q`+@?h °;to{ Ǜ] ]@yQh 7o,42c8,Gୟ ' [D7s4}&2|F9>fe_'e3 L/η ! .ͭ㼋:ȞaF˺NsjȔx 40Woݚ*zaCBOa J_*RIgٔ۵ .n֌m"_9@3 tEZ[ )^&.D=z˨ e9\h6a,G@i;W8QG%V (v>ΐ+`Qj+"c BB _>TbLs,AA6NzA8qHFG0HE"8i;hg,\1 50Θ=='Ay_8~ "5\!ûj_!b"[n4}b`pJ$2LҧtUK&%ft p1Q:{ՋQcY4"R)D)Ly*Yt'P>>ge\up ]׳U=W//"M;,S{q$V:-&"({mclGD;7@rףQ4"yAvwǏf@*]|GPO/!:=྾$.oC;_OBp9?sko?W 0KToL& ]tdv<V`"aT- (q_|-|A~L?kM{O5љ c:US%f;vJ)l׳ʭ[2KR"p +ba M niOvkٲNza(7+51w2A&8\=:絵Xh C2Đ,¶E9HdQd ggsߏs*Ŝ[(Q̽"G̹iiaAAtjgH_;f/h&k/ٓۺWB`nQ5! 37&~}j^>G{3wji +up #>`r, %LGC=2E#T7Iq_ϧ4nLµYG}0_ej@HLpE_ B׶ݫgG~q`2A {abt@z }KxEߌB;i{;5"Ii#͌/搰Ǐϯe ' dBia^V24$Ҫ}cVH ,/+Hr2Y"\B&@P7O\jV͞e͜qlvAtO{Ǘ)^'g<  $%&Ԩ5]KT1ɏSԘcZcq" ~#@׸q!"%\] 'R|7ӘuSoBo?63:*zW/^ ֮jZЮ?aBSvmw ob{[B^E N $a-2LWANAcGRd*H!@B)48GW0r -R%dH ׸4ni2{HGѧ] O@ux(G<|`80@w `AB m/GB4}p7HE|O|1q#kea pHYs+&IDATx]y|Tսa0gd/la_@T@ ִٗ={f,IfK2>I&39/z/ܕ$r#@NrI9 '9$Gr#@NrI9I lnB@<@_>p-/}R2΁%_Rj%9%J:Ul'mն>y!G/v_B>X9JH8ntKTx< DXFz49@寘reޱ4W3y6p͛zEќR6TiFk&s~> IZ-O'_:I{ߙAטc?H?&c*mӽ7- 8Cӧ}iIWsW5>839DaE)XOQqi*sU[ oOu!Y^u]Da3_ ` [t Ȅ/~*f?K/6.c!')試䒢mYaLBE>/H~(.!2|4 ܑK- f*ڛ{-K6יJBCf^F&`D())aa HxqY;f|Q=pih_hV;<QsY3O8ox2@cʿo7ݧO1Zf"T|Lũn0]jgΟ v1J6U4ȀU^bӰGL&zD QZZ*<Otli-4< WhG*:Y[FQc]Ut}5Rev2b j.y~b\EN20`kh3H#wfQ` -C+,ۦK7da6G \Ed(uY+ Pg{ԡWt 1!o!6N\aD`5CUUCpQNGr(~->jTSqi*NgP*J(z\q: sAlEU$I0 %,cHH*|?#}0D3}m9Kt-D6"DGcJEЦИ [׬Y3X{5Drư \(G?4Dg.IL>?oH9OqLD *ANb G e|dsԞ@-3 n'G_6z.'rUF.C1+XϣqzX3ߟQ\K\hHUOx XkG[ {IN\2,Mlc21 9%Tv1p,8_'އWx:=_ (XL|@g~@Өp_.|\t h&{.*MR)W#K V_J@ylԁ#R'dk$*zeD= /eY[Ǹư3EZaW<6q|[H~.$ ~l]&eٙ0LF˖Yn;i'dS=T/`'2 v%@F(q4=io '|z!Av6sb$wh˵S a.'  ]cdV\dF@d(7U1qf|`M8H~a !Cxȉ |~agv5b=n|RT͓[F:P ҜH|nᚑW=T7 Kh' u!z?cZpfFa0! .*++9-v64>e(4avV0_t.'KZtKDqdpXuۺ t@+BtZ3T!MvbS`U!V tJGmH *6{3w<;#Gds9C[ #Ji9 ֭M tQՆț X"BHp  41P]kh*$A},c"X2\uUqǑf@bxO&$ɰ/Yrmk-$2|:$UQD=)7qgIX%x9&ܧq=~GAyetL hN Թ1s̥5Ʈsz 7ɀhcIl5*@OSYct.DYw^/閍S\*e] { ;2@+aO$jo{GZfiZ"r  C]g;24;[ș?-N#~^G}On1p)RVٰ@DJfj7Sgŀc'S.!2c@yoV"ScI:]EpM,CB*irp`-YDhL1i6Kz錽d7# +L#ml/#'A; je6ub}OEӽbDgln60%%$ȟozD@X~R"32K\$M^lFM3I>q+HC ̀XSc~%1wF []=)Ow*镛f]\TIX*␬Τ.'p-id"!?ĠI@eq T9*Y_9יE%{erp~= k 2&WS$L<}p 0!n#g E&b)-[KR'@p!4ɍbMzdH j,'zq"%(U1#Fm' xrr1+8Jdڠֶ"Mj!2~ȶPW)^P& 2H PLdAOLp]FdH -` EA솔9]@DW|^"Fi^$ z$fXy${o_2 }ϯ5?X 2iME@I !bg":_Lξش}:b;0ʛ $#З| Qdkq6Nߕ3~ᭅk&9ĉmysS#U\ä)Q{a`a&%X}P0 QB.&y: I+m@gt_"-|:v"q8| {kG|JjwGKCX,>zs9ބBECOF:H~sTdz@ڛ?eYXg_HH\mB:(иi$o}OkxԉgBאxg]dg)XMcI2tUa%1LeFoVL?ͯRM.xLX`R_';q4Í &N,nMY-i q "xSղ$ͅ bG>K8%&:# F(Q@\hs]j~y!uyI ~(`?yV1^{fC * k[bzI^ίE Z#LZB=؞/|:޾?~8, \B#q;ёtOlN|^ӷ@Xto1(p)A2_ʢ#@c ]ltd̂:͋;Lqq>*- ɐ(uE/\bGܢf-y ѽl{WBĩ*LτwEV'_1ϝ.M|NEMgfp$JVZ^9~C:3DŽ0Iv(˵NMFg$#Z{X _kpN(ݺu"/< ' zDqw*½G@Ͳݿgօ~qp+J61ܻeYNZ~ƐV(<Gt8Ɩ,.֒r;"Q!@,k`Ƒ'StEJ"j#rـJnKc}o,3>~K~[68`L9)sOd?(ZHLj%W;8X ;U GCJ! @lS8jg2eoBd95[~8zOx6PK!*6~!#:OT1(getOt T+&RR J_Eik¯PǹhiTH`w# v@&` $<&| `̟aBix Yc _'Hⲱ3"ea=%g?& 2@ XYp8jF4$nJQ/C6X \WOCw$۴Y wa[ 0_IqBMlۘ/!Q,DuEW-ek9&mٍ 8'䲰 RXI" hL밉X=NjZ*$Э' V>3Z.RU,J!1@x^vO_xs`)\ID,NB [x!"k ?ޫǎDϏ F݄QD.KQGm*=l?Ja&? \$mwWo:3~>'{4~^"D=dWfK| #$̃* 63qly;&C#LWV-M w c} -PPh%֬^b4ɷq#Ga=O7=HLVr]x& N`i3T *xJOE~Zr\^NU6 din*PWj c9_OZaU<%: :G H@+ {I;#@j$@Q>DS 4FhEtKu.MƆ?LZDqL1z J)7DE&~mhG\46] )ĩ=\^#ylN8 dCB+x}^ S"2ɞZE;KeK9|TPqɩ!4U=*2kȶ闹HQ-`w7ʔoC~_Vq#hV 0}ɑ{2)rpճ|!k%:"oZdc(6tzHEGpY@/h)"JHn\_F$p (Uǵ pE=G!Xonp 'Dw~r׆lh QN 7ďFg;?8׆A'AdnPy4u%/XnS3i%t=. [ `cy6}?wWnUgaPQxhQ݂-w@&=BO&:E''=s894 NʈzD2Gt\R!]v am߃z2}[1] SåIԤs:QO(@i?r(=fRhu.2v U `:#]<3 tT߫`BGebH6lBaxtW?1{67&yqZX!@\Lg]Ki&zVphg.L B +vh[(rshh{TX/zxw=:70V iG^ְ#A6YBIPn]F@zH J`@I'{Vf3Qcl9};p6Ě3Ƕt5p;J'2}X#w@%:D67M2yغ4zXE|k*bAH N b~yػYi⑍gN N\j^ $"@-P?iġ(H!=>?᎟{Ep[WzXw*yh݆`-S8䧾YUa pq?~QVVve%@yر)o !DЃV͔ƸNHgT?S IaUQ$J\Ň'J5y P,\P~X <4onʯ%0[:aeFK֞h?'Oܱ9GX6n83 #E_(:Q?Gdqmq #$~osh"1dnH]F6K8٣;{s2ͣj-^*}{ ?aֺWRc"V&/1CU阇<󵵷 2ma?7M4gGlt̒)@^>s)a&o M/a pHYs+IDATxyTՕFRz_F}ٔA645[D#.HTV1$$. 1'vdfMrU6'4t|^|9sy_۾5}4&hiiiiiiiiiiiiiiiiiiiiiiiiiiiiN#=ě.{Coc400a@o:*N$۠a,ðW17}QM5/`/W4 Bd6Ak|n =Uw#};m*Q +S ;YE! Ya8a|4πV_zthYYˇE51JP}dq)v0 E @*@?:`0YUrοTh*Z4x*Nza|' s0,V:JՃ@=pS v;oY0˛{찻}.;݆M%f! + ˲h A{y(j@ez OqCy+JQOڧ\Uپf 0 8Uvf9 C'Byyy}J8?eP‰^Zc 4%fz 8&F(}z_pm.jgyr w؉pȝ9B17k3Aqm 8;7B9?aRvPPd&{#j+/z?K= ﵃Ğ>

 1u104J/tQ"+$&E.5)"!{p6;DTW:hcs߇d_p~TCT02T*;c*b1.Y3lSjp~sia(kMFF X/421Yb ,[,).Ra5gs9r+QY&ZDiED9*b"#C"Npj92`+IE @uJ)+fT- @)4a 0$KU^X7Ak.g++WlE^=W|(Q>*J  BWy[\@Am`f ";bU @e㒲J02n.P3 jGocEEAl+e;( s>[ MZ~7m<{voCy8 ]-@B͖oR XYaGoD@SHXC6mWy*-l~G"aX%ƺaͰ!b'tx>ok av \`9_,~ ^s? nm« N}z70нDD9+ gb0oc|6u>zqPZJx\h٪ (XgG?nm\Zބ2[%]Bcb95L5qp}CxH wd_U|72vؠ_DV#z }BQz o>(g2 qz$>?}f rlH87R=]% 3uܹ&&rdG gfʋ1],u0\FMٔ0Q{sDaJcb<m| àdRD,oh-~Plme =!T#Ȯf!EZu\s^XP$(62WBME:9׎0!c7D#,bUVBWGpQjkOX?k#`g˰`刘?Q _,Ka=S^,BDDQ xr9'VvUϲ<48J#LS6xp.>p7ɢ%3|c=k-Fyhe"7_G]I*VK܍lh˨G h݌LGA3O5FfTe>?o8kY#ӐjK ,Ǻ#kTA3(;"l1DUPP,)" Zy-oS~`(?Eٷ Yzvr[y5\e q>/UJ0;b,0gsLmjnkֆ`͙tߌ^=]8lkv'=ș&{ȗOAif""a\zAW8"|\PG(~3oDԶ|zah`₀J82$Y wly{8y?Lu-iQwkhx/MPoX鰅fv0BX@պ2E˗$8PhzOa~( :CA}oT! MzIvT )0f0p~g96bկ秷JҝW,:zd~ DՊo,;lIVH9-G fz;|K8)%[Ȗ"܆TzV,,cJeN=Q|JW`yC-Τ1̤_R3R =2O7D3W:Vo`:?FJr(֜Eo%sxLă])bcPג_/0HZIuEF/!Վ}1juQKIט ߬U'߇A ɵ9#%,B78&omaR;TD+T@W ýhۮQbHlȨ1rMW5k.>>9M`TxmHFY^+=㭕m]a'+븧+Ep T"=+YX_%,*#A8,e6)\Q4B+X&^rUn!ΥE}JV@44?;/36pJqB'Hɢn{# "IslA/@0=?{H5.2 Hю QETaN/FH;oTzw'Ԡ3@G_xWͺA=7Fҹ1@XF'iK-0u{,O=i`. ϰ^Ċ{2U[f ZllEW0YB#E`׽9.]%D8tdO>z|~&xqgug{6RҞ XHfW9Nn gAZMoF$3]EF !TZ|7q|jsh e* "Уi҅(rX *J, N )aT~*a_V9C`E7zMZŒJ!*8|do"E!NfTLǒQrt DUB)7]GǼ҆%}:ZG#-j[^/Qa%kKMVar& _PX4~|%!\Jb(|/X[KSQB&T΀7Ei"Pʕ nY =Y*!z/Jg?tsj+LZ1K5iO_+ }򻂅VRn1Bh16vH8[Վ?(=f tu2=CWZVf(ƥY>ڴkTW HTT]a3`9Ds>.roz4 6x@aAFdW Z,.RDxJYr5KK5 d-0]N+MZ0ősl\NѰc._Ն\/+$z 7R2t#(XQNXW0 n1檒 yHd4)VkrT˂(-BpxpRI+cRQ!69ԙ.͔(z s?*4PUzr:p-9LmF| 050+?T,7&r]_4xǁK!/uAVuSF+w4Q"91k ĂQlLmQ Fgye)RB"! Ĥw9)aG ),ʿҩ~w"*۵=:!)LgyG4{>:clQ[@Pk"/dz)@XGWU@#1MwJko7^ 9*S9lW9fn=DXyG9653/Iz>vGǾe~1-n_WBl kJP΂TJA){ '~ɥ+]˛iuJlX ~ [h2*`m8h:jH&,;JBz$;{"Oe˒C TZőn N_ L'vbfa!j~P,އ(LZ~QKNk? 訉CTNM=r)ŷsb'1EG0`-q^zE 3ɟxjiVux )]Uz֠ZM!bQ4IFОoEׯW׶EUA[ i9A$VPq JjA,L1Ŏ$"_&z9PcRSE|CVW Rk2˻G`S<VLm4?m) 4JJ1DlQi.;Y%SƳ ӓG6#UIv|C."*վk{|zS(nLRyaOGW|׾_ޫ[OZa C(-`*"5ғq5\; 3UY~a pHYs+IDATx]ipו1ޤME}ma-xl$ fK08ȀITH%ɐ1 YAQ!RKLf~LՔRlys^[&qVts޽ܦv|N0~! AD@ D@ D@ D@ D@ D@ D@ D@ D@ Dbﶭ[+/gR*"GZ{ynTP7=7Ӧ1\ T睠apCy? ?ɩȏ ɾE\jJEYkCȫ*ڟx )V5|&c 1|*b[Y["mjWͷԏ@!cwݪΝjpUxbfb,b8нgv _y![-OxoT zS!:KCD K}ԡ1?`嫊_|>l[i 3g8.ނhjA>S:4;Ѽd߬=zX0`HF$1ם"#:L\w@uk >=+&X #Rkj?,g`s/E屴 LD-x]%TQ:8ꔕ-I לX.n d7H?t,g:C{ϣSDbb6ȏ|"FE 32tW/b5>ɯasG@"C$R:Cj/PxXUӕD |(9#o@ DB#Cq 71_ ע:2an!ʤO1#"P0NYye}Jq:Ko5bX ӕD GN1YFC7yBBCfd:gp)?ks!`PTpιCs^{{!8-c=2 c.G#VDGJ9$'E( lCN~RC4 c{&*XƵ7A ƨF#?SzΎ-öYe'-\d)o[C>= f'-(/~+B8AmB go-DfPo_f9~z !'VX(+O%,tg MtUƹhՕ^-; Ɩa@t9L LR0Ֆ* 99}b E+?11U"#CDq7c Ʌ|E+4^L?z πOXDٜT2U.bDY{.i!D)_Ӧ⍶T"Rx]_^8]I)"MN!'3 q1=diGhfx6 !qΪ!3+uB9IPYxGA| DcF W\hmo .vA!0z3ԹR QrA1\0,dvcYȏ@R>? פʧn]gn)a形 OtH:YdW`zoCPPlwOh_.;4VW#~ܽ9:;8^aSԻ2 e#edL@ya'Am;Awpə6l$&q^bdh!b"UB4 uJK&WW,ܯ)t_-WwOu];ZZWdnUDWXF̂{`|Βyp.) q`ʽ tk7w4oDSMk"rdOu>V,/S?{BSīPNOb`?E 8 ""E4U 5sI8 xcw>fӤJ~az hzm\/O*Kٓh?VV/ת˗)?dz6b&Ȑh-pzKXFn7[?Aߐ}7吿B;S=W-m/|D ԉ%sAhokݽyɪU] ZF(5Vڒ2ʹ~]'RNG>a pHYs+ IDATxipp?j-]%wIEHH P* $($ҎMֈZ:`BP[cU(jqVѺ[缹&aݳa'ϲ'cYuTrxשR$62UpDx|>x\<6A^KL6E0ŷ^Ra` X ~?h6VO ``r*m]004Oh4 @cms`$aJ=n/(~VJL,`T}D У aϟ<2-ZDsT> J_@OW]0Y.G`_JLٓ+3TlWGp?0]1[o:j K .@0Y BoHx#:o<҈·7%VV۠{Vpl0wĸʋV/ExX+yuʈ.0(r[p_jV ; rY]]GAA?ԑX&2 K A5#a(WR>)8E2m.@ !]AqJ`axzEl; c,O+BcTx3J@3bzMq *[oe<%pLa؜ZTRՋ%a-CSWE0_^꾆׫rV*!MN'[Aj!>&LÕ6^HP/uAxe`N @jpǑ2ap+#}AKT-l%O` >{ lAR\Gq9< iN[<іI` >|DjMzdEЏa C ]ɋA`^ཿs>hokr.I w ^){}8X|̉g @T#@bfSs hxC0:.K;k"ͭцp2/w Yf$Kgj~`Vde0 TYY¾&$DzKP Hǿ]AZS#}@Pe0R֩EOMW`RF`⹖!&P8`\y75Zl9@-iABP3S711AL TX؋{y5"Hv2 eώrZgDR /VmH(:KGxC+nWSD:$ ,|t @Ph"лQg $ TG<wᑯfSl6EO=U p 11zc1T4bi.V{-%-:G|)jSA+eS"@yL!8j   П- aS 6[Bo  :!Lj*0 O)o.vܓĖV`@^NL?`|ħ+oEp\P'# `}/S^@LXl% ˲xz` 羚`a6P0iTWwy7@ ~yf Ô2NX' `ʡ10v n"&i%2V8라{JPlbx{h`m^B<xzi 0oY[}*X.J\wH4];=~(ΟC5 `iêV?th;)^ckþgOըďnb`-fӘmm[7;c?X} 精y/`ȵB46*d~7;6Z)ab0+A X:@j 1cTp/p7bz5 qJ N&(z*\; <f2㿋i+Y Cg9HyFFlre,>o5 v42}Iekf^@]="}^G@~;];xW?j2w@뻼8S(b N $/"otv4Z|!$Gjl$\'}R"@ n;5yfo؃½".TݍtC~m,@x{> wsLH;n {~Goj+ǘ:*lhk ]H!7KØ>*Ya pHYs+.IDATx}y|U9*P־g "".YTl4P!"مȾDL{;im{|v}{ʛJ-oz{ss{n_?eƹ;2@f2Ȍ 2# 32Ȍ 2# 32Ȍ 2# 32Ȍ 2# 328džY;/NB3=GaYqmyy{' o 6!C< Nnu.@yNǎ*[׌]Ɇ Rm8lBϒ aX BQO8_ &~{+aA"$WEH%;]JuڕI\{;=g8l"{hٺMϷ~Yo'Gi(= w$]q{wJɺ$@ w2κf!IQE${IHL 0y yYJ;&G+^8}6a݃A!M ms&;&~s:7 6o!~*d,Zneb; 1?vJ%K8v"TqنϿF ?&{gĝ'^[ oXB/"Ylވ".WpmVM RDQY _zi:"{%ىƣ6q8H@딕>h$H%0 $>ɜ+ KxU3* AZF׈999agg t,ȑ46L4L^/%|,L'-C׶ҽ\E.L 0]E|af(8so;I{bm^{5P~p.^|tl~H@|>L7{, ^Un`e * H\㲈rŻ[J4 z"IP~U_gD Џγiikj`.+| ȏzi>W jՓ 0ʡr?+RJb Bh*"3Y.`^RQGލ뫟#<ēwa.5[R&Mi a"rop^SDk :PeqE?AO>_BMܬHG l`˵)z(F尛(,,[x[|y-z ԙhB `x_d8oPޘ|igNbn[p-a_v_nc;=;H8U˕`PeQCqh=ϡ4w1jN@sv!8}Š$U>WN Js8.8D"s$”Bxtub096p~ߢGqo+r/Ԥ DT| |M U@S + yx0HBJ4yT.FJ o㊰qJsO! <6MDܲmf89rЙ/{xv^^Bn}gW@3;HtW~zGLj>(jT`{ɪJz71{!{o> @ASq͙]7p\EF\4h+U7p K=y b:/y u0\D?|xI*p ^Ad' tL% U}#M`x!ٷ8ރC(_Ƶ3lܲӍGB5AGsq=$&$yG™,C! ~! W2H]% dAЋUFˇw]=?X$n/%Zpy)4~\ ;U\<ȜE\1dh+ ˵Қ[Uvf뉺 [|/T~x)1#Y%MVrpIڠ $P3eB_ Y${J 4_9bφ/Jms="\tJ2!kb贽^i`a4 :.@ߝUtMλ0YDA|W3he$i Ba fzɮq!ܛGp8K`"G5vfcM C"cNp@+ rR-<8L/aoKs n1Z.kBNl5g;MS]H(` c `TR2^YC8@?MނyOt .AU݈( o/(_kj:`w]Xq]U0`~:g $Ӳ#~$ɅSq0%bh$ٝgk6܍[Ew29 0ZI׃gױ@Ul}E<Q.nDP_axscm}Opee!RC/ @&D6CC¿g7aMqx9Y#؉jZ_E8!  ؇UD 5u(ĨQ|NXdOM_F&{W<>|]Hix^q~+VBL 5{g֙/CɕLhJ  ȥW)-=#E19KgzHr'6 0\Y8%a5xmv#QP}fitp…4&M[*˗\Bc!<6:1pL 0z 0af+1ѩFwG4qZc$g­c 0п9lB< j?OR!wķG"~Ӿ(ʷo-_tHKMնBٍkH[@j>d G ͼWVtd.FS\/t''&BL&;[wHSqϐ2CU6݈ tƏ" t9} MvFoSB&D~{@Z߿(H .JšX"[4uHS(HFgد_zmv;CEad ZZ *5P+?ף_MMa>TC_(*<>)#I0$`SZ{˪qNjl臺"p(PT%ƷM%*Uj_^֑̉2Ҍ {5j0жtJkf䯶oW(3 25"O.BPA D !K&os<=UC䬒BBƌ z1]tT^9qWeҁ?r 7q!-(A4tW?Y#=ЯP#5`}۲ި1\1' >+E"OŕCcUhEA2ӻ}0.;=ۖe_V+r&wLzŽHzk`_U/Iߩ,v`}M|Rռ Gxh%. ++/ni^CJ7cS ~1c-@弁7Q*ܗUȷF>iʠc&LeDi-@J; ^ @4=+Z gOz =ƍjaih+3z}|}{JOo"l٦&׭ZBN,YYU&ra8s֝B۝r s('OE{%yt<^'uH.*,o8‹/7һMdwM Qƿ')i8N`S@kw`q@׼J1.WXb6Lh BL2(Wf%٧\^!j-D5 UٺP(x~‡k *"/z I8)I>]d'J*_)XF 76 .JI@`+< 8ך/xxGc5 0շHb2wuOAϑ䉐Pl[7!xsx3%C)z)  `py MEZ^h[DyDレ+1@ /,x}u( ?et1G߾>KۂCnXF7I {]k ql-呖 gA+Ի)OnS-8@UBτ*dJ5HC?D=[J\@WY?´N_Qa]ۻ!Gx3OL)[ oD Fк% Z2^MVEBQ+` DBb&#Pt#sF!B@׶C z~_ n3i r%~X=+C?'zq2vg j."x1v৐ɇyxk&>RH_VHBlLr @G78O~ۮ R 8_F/%-A !nY݃ur|4T< RM% `1 lD $}Е U7yϏ;k}xVY5`mA|~p|v|? GOswlS϶2aD*OkjCo^2ăEpu\@C'_ҊGT.}DY6uE|_'9~AdPTD52@d}Õc塂izYZʾ7N5Di;bk֒d@y12H2$B23(lD0pDaMh~9bktW}˶$]$wiWH%|DƎc9GeX9>0#@x8No7 HTЇ^~YI#\+D?+{7r!?"~7'>`l#?Y=^{J [8/& -a ೡ & HOCƱ3]t1co˜J8Ce}+d G2h۳-m_XsIo HҷրX1'nV7rM r-('۾.o׭\&qX&D ᝀhK<фO?27UxQɨm+JJ $=dq YEuRxcC._4M/1á:9{KӝZgZNj]FSE$@*\ HKi:d:8VN;{K􎱶@w\q+]=Wkg{ +|CtD霥&DG@.a&| HI#BM`u*E^wtW tpaYz:$>,b&ۧQN]=.=Vs k]-KpmX|&g`r H8`L :#8xZ;$TTT#BLǡ_>)w#w\aӤeVe9lE@J Zlت(`K3ɹx)Œ+@]ᓃ]F"8J.12nfSı*# <^EaOxL5=ܛf^={X; +:Wz_,-zĝ <+, ,HȻElX ?7j-dM pv3ZX|Y:4XCRM|s2"USwd!}gcf⍼Vw=m@Ӄq~AT{/BZ"O'{) DCh`G\P傒 "WS)ij(D !mᄗA8| s&K> [}9nnfG@7pL.QnrN ̗q1SUg)DS/@h"d}@"ސG6sD"@_%k7]:ڻ!KF^Bc7{ڽ ]w*ws5u[4Tq&Y.wa~GJ~NH ex-*\Dcb:U]8 R UOpRDow!יY߿uGd_9hZwOo\lƥ}mC}-ͧWCLo mJ P2@wJNN4QA\Ep =ȡ=bq<7WoϏsH#0CGo}b64Ʀ\<);GN%X|N?|^T79~ = 2d D y.\G1&]f,͕uȾØ1|r`K\&L%G2Ɉ6v-z0ʭZF.qq$O_;'pwmNK"y-S!sCc Er O];Ui\,VAONoU\I9X9~bPo gu}Z̭޳'Ȟ>U3#ѳŕ5|A#bb7;PB r: p_&N%Dm*pS{ţXX kVJl1ͥ\*ۺM4 ~~0աFBK2 J9\1k||/u=Oy8RY2|a/Kk}=bN #(Wsf?b!wtlEnᛠjX|9 * ȵ0Y^[@ۈv &!DE<_ɥ\_DGB\^2Hپ#x[Y15x9U蟤͒pPl)9_nn:& *wrp=TKй|$lgR |Q]~TF||="p.Ydi*I9 L RݬX?>U.2$m+DgKGu:V"8u10GW/Kէ,5@!;| Ww &jѪb+S`5gQZa@{6s<=쭭k}w]F\RV4$7V(Lܷ.&wB>4{G-ޏBY#@ܽ-bMq7P. k"j Splc󝲟"-Ӭq(o+|'e` 9t_͙6gڄs{'s)Mx b*;%cyI#`vw y}7r[Y:ʩi>`2>vXDŽs%,oar"#CVE*%e^;8˭^طoP?m Ǜ8}9W4ZmՅ=,)]kzAہP ( Ovt,=9?*ĭX߻ϻ{O¶smI Y@}?yյrB[#[T3kp/ZB_Uy}3y~R0a+ƌ3mz)ĮB^*3Sp C.Wͪ~||N:#}s:čӬٰ99͇>i:' 6azޏ`IT"uߡ@~SN+՜ r,ufQfTZS;pNÖV8wәeP9R6 K5M$Pg^/T/0{F4ݿHjΦ?RfVEA~7qlϳg`=kL,cr5bg`=|PkFF5q`g;fn-[b+B^/ɝk-[epCCC3Ȍ 2# 32@f2Ȍ 2#8Ty#IENDB`pybik-3.0/data/ui/thumbnails/Tower-7x8.png0000644000175000017500000003773213137372536020614 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+?IDATx}y|T_8ξ/Ζ@@V}ߕ=[FEXjQDTȦѺVn/V[;y;sg23%@PHΝ={ss{;nǏ8{M8 Y=?:G2[}[[}L[⬡8i]ՃCt촟#7w\!5Щ73XD}6z# WZTTG;_T??I2sK󄅌!8c^@?_;"C1\_w%?lfVUb ~v õlyb'zyOD0ƔxVZ.8m«irg f1^|%.P^~C;Q.anNӴ0=sɘ1]gPJn D^K7{_xyi *D `<@鸋BD 7wx&{fwQw~MQZ^H"~XӔE=KUXEƴlptN)ܓd X%@۽K]4!9̞޸f#o;_ۘ#Pt#SɈ{X5 ;q9gXAH"b2;# kglDv5`L2f⽃\tXRB 1eZx-t0Un7+ޑR!e gzH֐wxzh+)f0md=:~IA7v]1"~NSt'>VZɺZ7Ma]zL$P9O) }J.\Qz{grU⣕' 2@{󡔕l H)T\@.Ki޳~_ų@ 9||k s;DxDO]r ul^Z[ |XLѮeӘj6[ceJ+lp1>DU76[Jh̡aE2Vu&sBd Epm,xBpz2Lqe|\\~j Rnƿ}:KdR Xɸymߝe=F7"s[[q^y.`Vi#VtV|xex]G`!Ї%Q#EF:!{UI|t~n换iUo֔/a2]04 JFm%?fZɩ|FcVўHokey0>NYa.bN)a!qܪBe| Z[pjhenz#݃ H+qPjHB@%3to% u!$klk49\\o 2 ;z y\T d CRRv#$ PqJASZaJ BFi5pE q =vY`b |tñ:KƁ8>F3&U7vJVs?:Ϧݍ0>>?uс^I8![} [`&Qh_n'*)$D7DS 0jva픭O[)}m\bi5'X[2$|Aj42CWb'NV"|!r`ǏSO=0l Xmd0\v F1X}HVωg*Cp>"W  bS@ {M7ny0J)5×?hi TZ܏V#X$)Ì4)d?Wx;EDҿސeS1T#iBУ\6r烇w'>P7 ʼn2lDzAXmЍVq)ʹ 2b&ӊ9.JХ7K T z%@7q3o\j2̀Fl(N]iIHW.^?9'NDj%6G)g(& vW]9S@}ž}z\nrXm) ;7-)0Jy %Rb3iX'O4p@`#T@W ݇P z Z+fſ/=:_G+;J },+ I@2 YD`0>6^~JMU4 %ƪ@ Dב] mD<1/CFQ0$dHҐ⧕62BE <ڀ E[@NPQѵkIidN s0? ٝ۶ͺ WkQ<~Gb g{4c^+Z[ş^))?.qiZÐ;rѢ#0 ;-Qdo"QpN7)B:?+xaU8܀  S@@6MQU/o`APGF9E$yb@*W,[sTPr~?5YHu Rt +xh4"v&^qRI\JFMd:1uSȇ59H`whE`fu4 }mևEY+3^~E-qH≪S c/"k^ -?¸]L g6 T1+y TbHaK dZnX&=}B.!0xi#>Lt0紳H / հ - H(LaIذ" >؟'F_9M âXW"|oV);/ d 2 c8,@uZfpX`<js `tm! qR~4{x8>rXd"xk;ŷuz"}~]d@eMSn놑1rd9ect 5K;`?PaXOX4˜.y6ƫ9.Z?W8$( `ʠ0)!M "w=-a!}{{@|vM>B=#=j&p IŞ"Y?k\g`|ոV~>8ag[9@i(e 7'.v;N^"v KO ꎨع&,lKq\s3B68kGuE#sb|JFoC`ȶm[Fԅ &"]{Lp]$CgP&1>K|nAqNV (z=j?1ZpF[p]rc;YFÔl=Z ٿ!L^A_gNnu],60M|p0_jbq[O * L/"P$E!|MzJh''6xL"0G"Z٬bUf0*5QC^͂MgءzVo]Be @#1+g{Ƈ/mm9n 5I۩XO1Dzvv{")w^#PҸXi1G`pNfIM"c ?ϑocEܭ*O7nHc\N9xx .r8309 `#`(bOܸV4^ٓJ_K /_u]X:*o?-X솪b MR#  ;Rč'AR"гsD&FjkV_f=82wpM /WtܦspbIa&Jǟ?#6dAaWv1sX&x+|E|Np19\҇hh.Sc*^0C^lbt{{\q6SCO'O7K͍QL\:+z}AZ}_|zL!Ldy>>6 (74dA67_gn!@Ҫ#,ry<^Gj h%Gx|WQP&Khsj57.xo31q=Q}ՏO*C>_WxEMK5Qkt0W6%CX2+Y" w61O;ldC`\vO2 p"} b)Иy@&]ʬy.r/l3FkEoK>\1^|2X4#^`muڦ=/$iBWU$VmHX e-SSJ@-j#y)fSыC;*3o4\,*K:8(Tb# xUX,,B;v@#ٜ90 ^ueSQY`v܏$OS8{41~-AϱPs]_v^,hV)AfY@6$N<jm BCg1OcKqKtDwō LhdHlWl5]\u7&T#Oi))_);QeZ:e0t&7 \Dָ"ꩳ6(OV:ru5 9䊑E"oG0_&>ٛ+ZW.8-*`G]xG_>-`} ǣ * ESn4_o曠qڗ $Ġ4qLX ˞> àd& &Jxrv)TFqE*~@DJ8@Za#`@i{$4}lv^ع1)^ShC} p@("٘BBU;r^ؚNP踭%!j*c6tj!'Dnr(]Av/и˘0Cac9kiO$C9J(P yM0f[%q3u2`N+[XH@CIUwŠ G ƕΥV1kS\{GTx4Y[ŔGd+?K˙'L4$)b&2K`O>j\ +,5,HrQM77xWv. JzP$( m_.lgdGBʢI.q*WԀasO"IyR4:v[osd ,='@8Hlm7 9;rB{d%(1Y $"v }|_ qcƷ*U!3}h%b0 89 "yxnC(/6 LN* 'ttpߠSg",BQ! Z@ƚJYVv#d?hei0:FUJIћv si5FO'Kl>)sbXCUAXdRPo1x&qq _i^wEszDf}ɉM!N.&&RAj' ӊAӕ4<*Fi Fxz:w{7xB@?t|vizYb4z -|nYǖ0[rD{Z kn<^9#1':i|c!@H X.C8+d`d„f`qZT;Z dYX,I)jClJn"|)7%ſ3&#׍ mp<^`@w;/ )ۿ.57 f%03F J,Z Q3@\ՋԯI56ۤ 8]Npȗ z d[0#x$brGDdҶ(wcoET:IjO~f(Z;JkT %2Dr(F q3Dq&0(`Af !NPNrme*?}!?n|>ȹ$ﰥ+&}tw1<}"Cؿ9,Ru 㥧6+,xm5ƥJk/*[^=!औqn``Q1Ԍ+BQ4kŌ\82G-.z "VlAu#ᚘ腡 [^A |]ėoJ[x(,@Kkt`èԽ3(>Td-bbYDGL5D\Q0$Y<$y( !yւH6Υ6R/, ToB苝ۅ, rK,~W7+pY+>@p:13Ϋđ1YxB{e\Q`"Wmb![Xjm,=t:xD'H5N!wrt ʹ{b]+'on0~.Gh;` e}F ZžeV75ɆM . @UBmbh(ęBee@OHpQ&iGh}eYs,䃛 3RN@'f$x˻x쮐MI`dtvhc{VhV,Lpi. G.$"P<n@@ż%, RnyOniy&Kiw'*#/D(@(B{K؊,I)̻D<*w0^ss~& ]n.ojz I|[2˱ [Nf hgT1'P$j z]}468Jz`k`JY2 v&赧cYf]@n\TA0t Λ?T?c@ >t9iXԆ*NTTYqfHr{ӆ8PlVv (7&p-A`+0eh["*1`a4Df_+;wC-Wu(e$. )׶Ewh-B G" O@̔VLFaQ$;хdo)ͳ+7 $@qи~:] D~^η1rc @iWNa#Bܱ; {vc/mᕾ{t #C2R\P,`;r 3`#mxi`H8" B?wXn PwR/=ߒ^Wm)%X* _`۽!nBϒ)x/(;@=RC`6U(<ܮ@M 5WJǪ^lDxp3~z@íQy ;|{AzZœr C?` e}yMS}4GJM!1 ǣY( @8x0)yl\n:G4Bq3<كu5_9~梒QF9[&$u.dG3r`^@N?OIK'^F)H\Yo2OǬ4P|-0^~?""Mޱ4M fsOPȕ<`XX.fi.č#sg F}C {w+nxȷ_#+J^reWX   ~П|VEb#ҷgIsM UöN?ZxfC 0҄1p(+ =#晌Js^'Q2%qoPr=0L*\2-\d͝؏\9?d|l2/D,ɁPboP2_Pe9 &۹10h aQf0`d@Pf%743(]՟Bn(w-20 Htg Ce@:q?_Z>sm ?+kݜ.. a~]m<?᪓m&_0V#\QJ%[UnV0⒰X~LN[;8d`ȃ21 ֎)?>O{;1PumwD택OaSM<@X)s "@&x?QŻR9֍Z? 0A1ķ-hًFt9oRXRa& ͊Aja{ pYaez@EgXKb^(S ^ת_?߼Pb˪E[X1mˍm+60Z9!r8,kSZ,[M߹nЖ!X `G+_|4p`KDjXhPE3~~[W1hbW E(!C@DoESm&8 egkq8]T(h.^ `1&w$`1 •$DU-B $\NkDǮ`-lX{_O C1C[5b~5M u .Up.}{K7U9|J9n H C &Mdڷ-}a)dl%W(Elߊb#Gc1<ۇ~N t_skTtJYIQNjk% , 8M.p#x8d1Lٙ<3@`31Ulc 򗭲W༿m]uLkB>#_ߩv yOy +;gtќz v&vKZEm"]$,[(s|(lF~pxy?6Or3hIl|WN7) A%5X gv)SƸY$ƺSÃ!.Oa13X&\ҡ9@9g\%vY3P$DUU~Fme36?!H.B%Bw{읕'f A)LʽqMrВ0b7gK7F=KhRI(.F .U~{4wq>1iR;|~ ? {N>teuC9H 'LQ.Z4Dz y2na0-mg1IYBxmD#$dc?_ (۷Q3H3)pZij*/PG0ʽl򃢛?mH"*jvy4`ɸ‘磔qpא7y$ @^kj1Z3rHV3GWDZ˦e/n֯aQa]Us2iق%#sw1˸$YC}-H}mIn L}h5JFx^DeX6X޿$65kcY=roU <}@Ms3~'ڵ*4{GSqgN#ˮ!l ;uM;' RÃ/[ηBZZ&>\њv0kŏ_yvv٪Xa6C:NtFPy@OG~^n{TL'?*p"'1',3(+cHm=Sŏ P3 Fs2WQ0=;#]Y)@q{< < 7^[Y}&g&<@Xw G.;,=XY|r&%yDVx{{$kB9/TF>[(ӧC:kHŹIENDB`pybik-3.0/data/ui/thumbnails/Brick-9x7x9.png0000644000175000017500000004145113137372615021017 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+BIDATx}wTU3̨UrPL%#HQZbFAè#**"l@3c2Np{t9vjP@nݺu:{>巬{B+ZG+ZVh=Zzh@ Ρj}z5|+wV~C -'^'MSumgRSZ 5UWyg 4xС;kFLmߧF[[}'cx};<\5Waqz+bAn~ UϧXg}V3T [Pd{i3{5E{d+NVi$x߯|,5!~Isw H; 8d5u27(VcUr:1FyTJ^U0 x &o'0+x}&+L3f}W"ޯ׻f4p"o"do14=˨42tRpQny3(;\pzK wGr3X 3TG6S#TڣsO3PA\@5Ή34pVocT| #>`lo0~u>n<xVDjMxO; .=]kyTz`'Nʐ&#m532h$7`?#żxd!@54{pN$hn2d}K7/b_bk #Hl`6G@u}@ .{ܮGAyU [Z:Au7.Sk5z(χ^#auy !j|tBy u×"xq{c/x'U <cd`8X$"a5s^/ `S`t&4*\*c.@[g>C5U\$uecݕ<ȡǑUx#s C\sc^BN9XEli uhf ;YF< j@vSt6~ F*Pp? %wmMx: xW5MEXT5IX 8vx69/?4OC+} ;[ӭF`q(܅;CBD NJe4ttX!]f#ao2񞀼s}2d0$ HXlk^dHGȱ9 p !ZD =.w^ӮgL5n7/קz>, 59f#B%RqAc In fzg󀔼a*~S>}T0ޯ 0L>"̳Yc0wA>j|]P39bifYy00g1@UHOo2>kD'q{\ 5հxT~=`Ζ^pĀ6-Zf,h dTFXdb=s'MAL.u9s 9KLŰ@1erg3;hr Cל๋.iGjWP! *:3ެйK΍U<_9i( S=&uy\ݼ.cBQr%;NY,ц}C*#%u+Ox8㏿ 2 )e9^X] 0`jfެRŒO2fVRhR'\uNQm e8B |~EER*nՈLkb8c6۫1]^l*l*Ξd60&VkktèH@x[x1~LM"DBDX&<р"DapBM C,3`#a;Z]V~PS@oȊM%H`k 3;y+m0Y86Aay8:vp43 f݈%qlKk }9?z{p\+`h @/Mf1(辂S̀GiK$!VXjꈐRQ?]G#8j*o,;dL\fHߎc/Tu n8lүc&7AM$}=lfs$kUᚋ Ct{ЍҽS]=7T0$*n?j dQrT؋8?N 0Ϡ$w$z4a5-sˍ"H d_eC'0ѰYcBo߽,6ݖR7.1Gn>f` :JZ麭Qcd/zsnzN&2L[ύqs.SZ0(=HKȶ9B}<0 ^)]=ŧ^fSp.F6>kTvZ(20r{W7lIUaT|eh`ǯ_63=V:T[Jkc 9~4S8>pO>ô4Mx?s7 :0(nt!}V!} WzTQΘLr֞6y<$Fd` fr<̹]J@KF$bzLֳ{e:ohPv`R?yGGtK;?\-N.^MȮٵM#ЋpsF?LJ%tD]nVB6P^5{Xcq{ @+cԫm@Ύ, Ț55etL&CTc}<.wNy]zgU}Ru I*u-gm^egciy9 ˧ i̾3 7iD\T8i{RWGV?ZrueOxz~"phfDل3eR$d=}s L%d(ݝOoyl ټ;l=of(gHW_^7xryWH,sE71auUIշ_MiuT{pEp2]#[(Lb<&ߩf?3]@uG{[?l3}%6``OThЎ0F:grQ &T9i\;fJC {:1  } %"JZxρ/knx.k{$",P*ƿE m8~t,m2CH{Sdddѝ-xMF7ojc+t؏J΃;aqy58gHܖcGC%mkhT8Mo֥f[xe+{qabSwpPs.R7]W/RCF^ :SG`|0P' /]Z`d3y6_mlB'A/YB .1ެ #jv)bqo x>+[0>LļC:|]2}$f1c0>qLe@OߑR'D;_ޯRg1/7(Q];.\nTiq:5֑M1d,֞4~LXѻlcK0l qˤquu:4nrP(U-7Kf3 F 1;y;{.r9j X ;5Q=E=pz<.>O@1yO^H7pj]ߩv*\O忽iy䭔| s@iv "9M —WlJ#g#[Ƭ|$qSଠ{0yRkon.W{V<*^- oHI"DIkʺ W@rqd2Fjy6KZ;sLHu0OդaA5ܐN8=6q|̐QBa&M *!{'eܬ}??&`  $x?^Gh7J<7=N]A6~6^8 3#wQi؞a-Ha1~g3x(Wݴ,.Hjʽ%OJ= SxBJG U,\f)9.TrbK~ ;m(VlGpHiYM/BB^s.6!"l;J8s'[L<0|N VT;#.zoA!<&bZ潐?Vu`kLguas0G#4 "iK9t4.K``6gwǛ0%ם}D0|/ir}1hDwpg"VGQn4|sP$}LoI2>{>Ϙf SGh٧/T+-dZT=7NNm|%%^s[zE$>ͫRKnq;׫<=B7,` =B\U`Se<}<&ϧq wD|'ƑG$S\.]kLhӽ}-E$&fޫrs",Um*VKEsCI|rZUNJr p - B6{=2i`Wb{  ,n_yvөdj1BZ '5ѓL'aN1@`CJEL55|aqx>Wq/ YĜ޼.5 aH޴@^yYX_)_wI\f?5tzT>swj޸AfQ!$-zр7^h\ڀ^ )i & /\HY>F'GrnZ3tV0|χ1m/~-~ U,X7E_ Nٖfxt |z-w3wR߾V.dCE].g9 g,; %1Yq% H/Fpi(}Lhd fy{TY^Mk- G[%0B_4AZe|L~ݨpdA8 nhWcF;СlJA2l[#i#hG<<~LUWI闕F=)?ܒV_A EahÎXz?>o8B Ł2=km! @3>X$LL!"-/Ӧvpe*zh- <,l01шM"Of$y`vf-7w@f6g @?bZӫOD ? zh"w+կy +r4s:%cֳnCCSI*LHk- 4 > OB-nlnLcB)Pu*w'!%3{ 5O@rCGu-O]` l2(cD\+<;M1Y.?PBp@iz!b `MPYQbP./p3 &(bƐp7,s"ͭ-ti^1G@]$EqW&{])թFw.8iϫ>AO 7aCU(mc6 0=dQ;搋sũ: aHqxK 44- vPL$V+lls)Y>R Ih˿AHm>&}1}pIK=tC2<ݔjXjEE7-Rbd[o?S>%L'N|p:9@6EgӼ2{H.!bl.-ћ Nmwɵ뺄7i ' Q!m#6Z.fvڬIdp$S2[J|Mlo 0x]ovq'Bf07h|R-U_H *DŽH7 Ǽ"dI89ÙBJ#plLc\o . rB!m}ٰ |gHafOϙ~2<`F Y9g;H8kai 2mDkϋ:})V͋{Rp @ώG |ѯ_#ؔ+sP_hWX: ,` IFR1j2۠I9Б?)%Mgpo]Dj/պզ͔k ISJ~nau *zהvy4.'@F`x{)P+fEp-*QG??TydQHZah*vcS%$ 3#WTӵD`O$T06Q*`C ?붵flƾzAKw{ܩ}~ilb47eq50[SZl~̐~+RKrv7,Ie~\\=@5BBrK_^s8f37K5jlI.qiYդԌ#k"R+႐x*rEV#3U$nrgRޑV# J@t2½M"q7/OȌf=MŘA1>*dž3or~.bk/`h7rPPqg r_LYGO?f= 3۵f;^Kh#1Q27g4WWxC\B Q&rDg(P>}MoDoN@߾>%=b _c-bk8( D>4@& i`\ťf响ִH/"^X/1vY k "iN qItFX# &Xy3}T!6}M7T SUq˓jÍoW]ەR<ڸZ#O2RGa.ETY_dOzDLyb3{66ˤKt1^#z`N/\h3&On Z;,t CD"n*C1)?8c3%*𨗘1?w.ᡬȫnZ<% 0ҰG0 ; <};9ǛE;TŽۍ!YCƵ+u|}mq-b΍E"pw+[!ހ jxwG 1&5:iћe5P/IH2h!|H9"@^ .Kp,M6AkT/b/SZҨj-;7U&*"ERءW@r.zKSiG "kW$0TS!gi?s|z㚣:ii?틱 4&d-X52ظ$#>"Ԕa`'$>î(f 7JT t#G-ҽV zs'B\|˥LRTPb_S YرfOfJ_ ?C>A+9J^8S4R*qj]L3vAamh-VN/!!n'ۥ11ӻ  )i@;ؾſ?{Jڷk|0*eڗLJ??b 4`hc~س~/2Yvq@_i[6S&}&ח$CG'+ oAnoyD5 [ЭGIΨI잙LXHj' KeVS`^ݨw?2Ëd?7f;ئ[ 6zi\6|xx9Γb?0t_9!ijϦH XGRAbHdިH)C*IP SUH{@vL{;PiF(R/…-aO5!I+fp++wh)%`?Yچu!4W_y°>Bm)zO4pfE!KzaTj ]l0wj,sT!EC2ɤyEALY0Q.bREz z(O]C\uFOcߤbvB gl_GoMj_*~?yV}a GظQC,T *A2_ _@zjȄ4kS= "0>`8B: :KI ݦDO)BQ{K6];ņN%*1{!y*P۾7Q~~#[NH<˼ ~ P11} IkT4Tkl0566 Sp,$B6؇ iDzGDHƵ/h3d6^)D#RkotI=v]] vv A[$W,u?°Ǐ'n/T{?_J>PW_"Mr+7t2u[۹Һi$\>PG_Uc=DIOYr2Dդ W0R#ʘoX 5᳤rATf<,Kg/۽7;Sj8?=yفn\Bg-٦ΔϵTaA.  };__-φ{k%R*e3ڰ-T0b/Z@7P.F5Ǚ=컧u~JpwJZ ,3іIY1,;D F&6Y^.i@&~23l:uLx!lȵk6$bؑ .%i.^cҰbi@7BA _ ~!%d̔{{m!Ryꏷ@X†`VZ rX Rm=Vsv 1p4F&7w[ޓHyQ!dX-eJhVWg1n U7RK⇏pwsAH\Wr[Oa7_e ;WuofͷaءI<]XK k;; ޭ$hjꘃ4D̵R9M U62g_m ?ܿ, KS fKމ/s8Kr /=yh(I4+р1pUFYbR2Up [&r h W8>-xqLZsgSrK^ŒreQ"fOVsϊu> ䷟coVMh e#:Bh m6 )E/jSGv-$<Ys*ͤ*MVI6Q20t X۟5&(KhplxvY _+6Lb8oV/ Td ٘ڥ(8 tQccVIlI-ҸlxҘ:Dr}i]Z>+>^*PաcU?&/)bv`WJF Rv&Jci#޹B6R\0DѫƖi0>C@Q4I^H]8EoɆ_[ [c;|p [|Bu N7o};%M^j"?((oȽP6.GFmKcEQ/ao~dA8Ro/ͬdiXjuբ4xpo>k4L|" 烫x (;}nP?3MkN=Є'̯k"[~VoCP.,= #O(Im ea>@tn_o|H8y2}npqIn+c)TGdI$ ,ʶ2B=&]ʬho&0} 4 S, 'kV.j7}>~Y1}B L1)2YڙX!7o|Bݻ[[C:+q)+[ӽv/@ԝW))9֏Hi % PV5!Ygܹ, xW>ۼэkNZI݁OX|'FR˚H~`tln#_7. 6/,k'F  ']͚ ȁ&0{֏ЂIpgKd 7nro$5.ktr$4/ܨ 0VC_->;Zpx–Yw(e}$ ${q~EN~U?),;~rW:*7uMy|Toi^jgKNx |͟8`ȵ5C+fG|8Nz22#wv66{p/ǰ0yg.pΣ ͡o} c@6;]'r=Ȳ ɍV]:Z xysU]+Z9?W60-JIENDB`pybik-3.0/data/ui/thumbnails/Brick-7x2x2.png0000644000175000017500000001137613137372565021010 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+IDATx{tgZ>܆\ (H*B#.᪨5[^EvVD 6R[ݵzhggϮ>LL{!$dދ}~3{G>'1rC@@B$ @B$ @B$ @B$ @B$ @B$ @B$ @B$ @B$AD78E j{E*:츆'Ŀ"v5U&Sa;ov ەыgtRf9MSz~#0\۱ݼ /nr'k4g/P'sނN8nkܸa1ŏJksւ!$aڹ)QN_1J(rci ,0( 5z?P8DZϙ}|o0@mޜ#B^E/9⧛6rk G)gF/^}4>à3,F 1P\ ~gebOqE^< Z|IN" ,~._|{?Ňײ`p;w$F2 uߛ8BJ\t]k)Wk!t]MOkKQTv)*=n~l >.|G83?3àߠi#<͍=K ,69NKA Y~Uh1b:>BNgm蠾vxhryZ(1R00c>3դ&N OEYǷ+@XZ->fo YID/gןeP;:! t+Og.)s|GPbIUy3X~SI~t˗M,f{S-td| WAZ|f p00pd'ӴuE*+D 74I kd<4 4An+ssf dlf~2ovM2 @Xh. y q6m0w@iXnJM!ZpKY0` i%a/_f * )KO#+ j ~4@꘴/ZZzz:n" z ҰRQ2 Mx`1>CE=RRs^Xwqfx=C}Ų(7S@y[%"QLP1*:%C|!_[ķcA r$Cw2\ޮbcڽo0 ͍-EIΗz pTqQ rG]0 3 k:xl<$yOugZ<քB<=t:KCaQG{<p' !rq7p+$g]=T汩_X`/8ǭ5 ArxJv*c`\zaW(^>.op/\n}2PLioAwa}(U wB 2 ~!?/Ym\d󥙢/kѨ2 N*_H '}h+] ,?Y"Zg 4h'.JJh7g-w83\r]G|sn =_?n(V%"'ik#WܡR8)A[ M.)'d:~PJ1, LZB5{44   \&0̂1 mZz>Uf>`5)dBaSyZDTkofrzVebS;M6GǺą*&,"&汎3;,] ֳesthӅ+Q;r:{{!L E*+*W"RvVr27}*022xŰC,?XXy`!#yQm{m%ԊX"sY0y08wip8e-Mߘ)4VS=?_?1 r(PQ"|s .'G  /l̳ QO#u1jsR䶷{^"hˡ=O{$Fq-gt mO ' 8>_%R{,>2L%,T\Q/~=/ؔ+p*JuכjD&|}ZRYaZ雐e+w0 -I` }Tc@v gں#s *H8t%@e(,%!:Cpv􍘨ZxVzF-BYf-B1pC Ia5:á)4.kl@~pO`bF 0 JĆL13WPnf  MAW;մ\7NI~\YD<봆DƘtz98 @h-O~dgWv)ڭ'4X`^b1ғ .@QmHt`% (D|1TU^ڴ؛`-}5RB\ >a1fTYTg.Ū ,l 2f}ì}@d< =!@~%G*;1/DP/O0dd6*b/"wNYǀe /B`tA|j2up a(÷|aEe>zjWjI/wo'ۛz|wV;D =WH`Y@M1DH}j#f w7')Za*Zf93ĸ)SozWйb{ Dn}T-f^"AiL1G*"|W}>} Tih}+d S_{;jX5QeW@?D3Yf9b&e'$Z߱C}8Ca=<)@^`Z9GX PEK 5Yp_YjWDSe|?Lo0G-2g.qԓ2v;3lenѰƩ? cwm硽)ODG܊ov=gw0,fh3nU<ޤOr҅~WduNgt{Ȗsu1}h:~TK=UK?NrVXe PQn[*ir_ S_) =V'W7`95ݬ haˎֺ{/mܭe,:DX"zwwGɓ.7HY;JB;egxpN~rv4olI4Sr OV%.P\|fgWtn FdbM!>e^@B$ @B$ @B$ @BM$ @B$ @B$ @B$ @B$ @B<IENDB`pybik-3.0/data/ui/thumbnails/Prism5M-2x3.png0000644000175000017500000002325513137372677020777 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+&_IDATxw|U?_'ހP !B B' =@ M)*btUT(łHЋnY7ոnuw73C3Y a8`:{=s?<v"8p\s0s0s0s0s0ʈ[X'fk+nf{m=:j\KOFTD i-_jϴҚ-lozql^8[.A?sN4xSpb7gg)ܩk*xNt]_c3wj0<◱-ClomS¿@|DH 0(;;LC |/**ÇӰacx^AxcA;wX"@!G)^g )p^/ÖɐeA\qll\~K1pHqt(p;hГVQxM;x@*I8_\<>n4ǃ"Ynݺ ! ԕ (wod@244 :rssTTPP 4 11Q|6(&4]L{xX|V{ ^[}Ugc䎀 z!)k!$wtp H&w^!}t tPl٪J,k) <@@QQ+"˵(q_Mf n:H; Ӏ%,NwH= Tw@@\dQ|g-OG׿2cPx:elbo $Յf)Zv^,K5c:G*$0Xsld^"^[΢w!:~Fzxx8P+Oi>{.ټċ7 ϣ=cݻp|!i m2ow葑Lub-#>= B 0p1bn{ug~BF׎|8~V?ױnT`~w6;!NvnjM5n1Mx*sC}F[lfx,6yk*8Xj3ưbM|C}*X/1AF= ?EGizSB ^LON&19˖(-E޽vqzG PxX)C[eׅ}J|ڱ8=t@ d*] ыi ќWô_?Y+w@)Kĸ důDŽWi>C0U*;xRq7m:A j9~K \`1FWma syRR%''G#ݜ(:|/C {SR(1g5?K6`nd.4m7gx,Iup|]BPבE\g\pK5PVż!1 zż(׻Ĝ}\{Єb,,A lQoƲ? (x2A|1,Ӄ6<DC]" [-~%%Cf&AC}B8iK,Fb @[ЊAŘ{)R?y"ia@Ngce0 `gP"V![wj,0YLrL$ D'յaׯ)-  \LlVA" 9A]"CO>On0 j|^  Ut3C&2ݚ|?i 3[臏㌢Kf,S wmsޢsg)!pE2`SSSpwǻj?^#oCYC!2@-guo' o*>?ޏ!/Pu}f>a@T] 7cpJ/oTffhF˞ǯ+3T 1}3.a ƠnBL9^zWzx$U7!>쳷lZ MȦ NpU^zFB%` pȍPC\,/aآekDrW Nh^&ć]ièoMCާ@Zg`tġs&BS WbhZ:D0**aG6z%;rpjskEج,q6Эx f.Bx!AxA8NGpD܁xq~l0/r;S)}V:};$@nfgOӀ 7"¬'A)aNGBx}@Oڸ2/(,륂昋<[`UUr۴Mv=-ZXk@  ^~W,W nHL3K`3OJ1 $ܼ'F;,%KVT^J& 'S9ɃG=Je>tv~$y-ć'X$칼twy-Ll?~dl4mcb׬_#=} hXXB'RDoB|XnJ%'|RZ^8[|طW;^OΗO=r#M@0yN5W 5oyMEne {+JFxI|jH)U}}hsI@?g~H?i 6="yxA*(IE !@D-蓇{[/>pV o|x QŇomvg.LQ=fq&~}B^`ʡkV%Adhy>]P81p5Fן i`T`#4#uKf?htc ج-4Q=}R#sanL@et R"7є Q֕T^#wm?[:sJ]Ⱦic`YY0aXY!ps-gEdP?Ll}CK;V1< ڇFm\O!t'u{ e B !4[7UD r&{Y->660_2(@xQl]>0¦S0hӫEgLp.?dC;hzY->1f|n<މH@B$No qC=U@*%.Fa4sz0UQW1{ s>`@?|/MMFO&S/r w7'Vm@Բ!Vu咨FWM<6=$-砰 @J)@Za<iֵL_+^YxWn^xU2‹?XiĈC":4 v Wn()42 *A]*f?f(qP@pxG55hi 4k!0T7/O_E P`;d/}|9"lFxiG_y| nm帠cCG-; =&kK)Ǵˣh|k*]@5p4A"NK{9qBMp*J9ܱİ`Z!xglhKRs{ '$>*Ѳ^w UuUrpViHn6>ρKϡD,=>b}  J˙3ȋ=nl&m06. 4 ho} E>an/d"&TtN|>U:O__SXԾ}߈i_t ];5i. >\d,`y`JݬoJɆ/uH )g]/Ķ0 @<5nl `W ЌGry7.8o! c+) @7K^ZRo(n#66.p~).:0/{ QBzTa#IpRx zn e/Akzuq5𿈣{  n?^^/-#]Mu\] ”n2}=@ILk``cH`j"S;Y!"R* 7sa4XzJ"nϺ`)Jhڵ0,*ZVbqS]Š.1vrf@p h ByN}).{xt0N5R/%ј$w[D찯oa}Ξ s(A1KZK|ۯ.}[? $B[hػ1T}i~J/D)G|"ZlHo0bڱ"{L!q[^3.kma۽Zk/{&l*j 3{uD*Kߏ{hx*RքVw0۰am[>x= XLڽCPܳ5w.D=z &Nb t =~Hc=|[`,ihHo0i=>Nr%bA\\Vo]QXyOz-a`XsY2|ޞտv iQYр^Ud 4Vt@Hbq;`A+V q͡kۋfP`6y YK 7M[NHš{%pn <`%`Z$^M4V>Z/@[.8: ^W;߸{S}gw N}hB( u8&ت1@G~d_Ut8\=tKxrF@݄rz/8@V`8HB9&OpK8 '#+ʭ"- ?{4P&j H50}?_.Ej?ul[:޲Xn77_nnN#]~ebj#9vlq JQN+XԠZw(dEzi3K0$ qXtIQh \F`Vq͚Q;zE$!r9Mty=vh;4p zP\{Pz|E+:/Avuk>B3xQqߢ[upeTT4`z[j&zWX%s0s0s0s\a?wCZIENDB`pybik-3.0/data/ui/thumbnails/Brick-8x4x4.png0000644000175000017500000002116113137372575021007 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+"#IDATx]yTՕΟhj{W{4 (* . Ȧ&Ơ1A4I4"&jՠ4hX;5faq'$3dΜ_ULAUUwC7C$xNoxoxoxoxoxoxoxoxoxoxoxoxDT}ph߃_CE_ΥǏm?ZG9jl:n`(a0co&6z|g0]k~|> ʄo0[6zA=-+=<ga>LW7gFp_eƸ<}m g^8rK,9׺*~ dh3I8/0+#us/WFÝ0 9c0T1KLFʠx5),\B 6ݼ`t #;n(;_01ApX0 @x?OĊ3|+&u?0<0y>f܂جSą<7^xkrG3M8x^ml"|<0*`IBpEب?%w_Ͻfz^jD|=20\~`*9=$9;yn~n93Åa #x~Z:RO羍SQװ<}',^e=4?\ kH^0J;yr惽. tePk,yR?#P n|O.>iRso䓹_쓹PT' 3<\`ᠡ(K.eFP5\@k`gU1~h1b;Xۜi^@qS%'9S-DG9pS (J9%1:kun9/ )́+FTRo&@3#f)e\\Z==J| h t>ڏS5SVCx"B)gM՞@ǝhQ>Tzrߦ):W35ۀw3ТG[`as8@ift"AS,zX<茠Դhgz[O$70;Da*1D$Odך3kwqa/'|` j :U,@' ˸U+P qO t-Zo3 L&iZ:mݞ߽UENH)8~W,C $+l @KH#bqbBNq>T 4| h /83as4ry yRC`4cu>ч`Yy%c:,ut`Z$63P@#tMkl5ցRVyM h0(塿 TSphCXiyz!ܔ頬`L{笂o֦"i,9+K M?@ExF?}DIHdH |jDŢboߧ1%SK_0^ Rj s}NJV}&ba71S+YcXP2ԚB4^(߰hڟW 6l`.MC.Yi|{X,,zfA5Wx8-7ܼgPTR 8B .׆sXJBU)d}]A/`R/ C39}ϕ|U2_Ћ2TRN=ǩ`hH&qzMii-rǶ(x6-ܖ \4X_R' 0L,5 /1>FrS&MYXiU 9uh>9wdc*EĘ@!le5}V 9֥ i>~GЧԺ6Jo=[B5e7Z+ :O1@|{ڐt U[+60 pET JN~TY\ןY[˸b9PM 5#g0W" e0 /JS1ݯVȪo]wTy ]F5!UAn}LkÉbN*7R$lza&z`:҇߯u(vkFǀ^t>*ha,5PVQq*PY = *msw ⡋ esBP q<'PԵ9lW'cK0%Em= Fi#80ҰJf4|Q8s[X-D\ëUJ{v4O[Kȭ[ lxDJ7^=7iKm\ɫ9R "1,ҫ?\W, ӵ %RMU%i&$&)}#GHאN/ ke Ʃ`0b㠏btd=t }LVoӢAUű }\'Uˆ(M28?0Gqxۺll4]"l!0*?' BZĞ[ٞSJ3+E(7X\7h\=R-Jd:.Ch=3h Z[nßNk6.iAOy]V9!S5ߗHq4)|#uIє#E(Ӵw5;YP+8Rt>_$ܘYffR)z!PgH: w@p﷤CxnfvB=izWu+"lAۯdR&ߜw^-d@а|IعuW<ظ $'(U"eO +m]dTmFJlx= -q>`RkQWfJ[^i:MSM{ ۵;x1wjbcc~% tۦJGʩ¤CI:63qTziM ;3X!{ hb/iC9)L!^yk~q*nJq.`熪dOAP5>Rr hvN"[KoQBzqs&Ϩ9o_{efcO3&?86vٓ\طKqqGN N[8"bx JoGlv!]tO<2t) (UD:|uK`6L++4uBX+~ u m7iZSʊ +*yFv)Z**=lש yYUJ2U5LZ@:3M#m=]EK"0BWd"ݓ (?{.2` ~T {S4 c z=gRE5 "6@XTUWia.t!oTL E=}Op@r`S>V3“MIaW>`) d̢<|~z/Q=;EJ9]5+DG+!HzF@̠] ug0*K >ٕAsX&]6"ea4;6f[CRC_4>Wo3iIsHyRp]I\aMY }>w`ol` ם F~Wd%>wV9iDw>T5"3z@J Kxdv/oW˿}? M}.I>9Jsr:v/mMNvbdD_S1!Qu~Z#b;W!i-h>@yPaU켞7fT`T $L .puPzk]N)ׯj-d%JyBQjVh M$N]Bq@4tKzC7SwP\qE`c%qU\$+DVKzJj_A@T6#MvMH.Jˮ"BT"@ekz4w`1,:jW2*M[H^ 2|\)̊v溂EyR(/.Uw AtDuH[5 TZqӆ$9hg8sAg椈r- UGS#{K\z?n\UB])~eDA6qh] 0nVhԎfRJCGGne'P=.A.y(GC2nv({|j[ yp"s~A8-;S4cb@J~q]='D/^; ݱ56<ҙireV+}/^@X]s r {40meC9[s5!,&8uv靿-1 |#E`ƈh*b~J8u/ M=aR' -.?Mz1HGJer|_JJ|q`l|(/?qܟְISCgoegѕ\Jjc)@o(\*>P`׆ĊN7py~əf %Dj낲 E_wTH t$޸ږm_@g&;qg Ͻ2v{.3˄ NJ `ԃ}pMP*Nf6\Igr%ݡ}Eb /Tخ!LL!}=SBtks{{3+5l3Ɍ;,ڪL"ٖ. V̄`@{ȶUʸ`bZ ;3[pYb>{o_h/Wп*9t/\m{ܛkT] Df]Z/3$c~s`&F=4aN#NvypDJ>ʦH}[ 7hHK.?uů^ƭnjG6~R&cO1UÉe*pWO('rC}43$cbp?5rrzR|Emo uMtdTZ@_a$[Gp h)pFuMDb;q43iN?&3Vt}x[Y#w7+OeKWJ q7R͞y[۴bNH?7>0? f IFmYJz=r[ꨰ|_P64"mOQqt"z8/ȟKRdGK1\t/@;*/wqN#Iroj`0}`8g#>?,ө[sv1L'&䐭1COeMqؚgJ-Bmw,Z y WU-`tXj+Tn^i\G xG۹aŰfmeg_ybVJ tpK\?3Cir<7jޖu,0%﫭b`=?/.MtkYnnn]}鲝6#g{/@KQ 7{exA; aNfc#};^0q=vs7AC Y=ޱs}f/p]noWk)H{; a۝3ouyA$xNoxoxoxoxoxoxoxoxoxoxƙ>C *XIENDB`pybik-3.0/data/ui/thumbnails/Brick-5x5x5.png0000644000175000017500000003541313137372560021005 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+:IDATx]yյ~$z߻gQP@AM}7ܢƨkPJ\Ȉ"#;H Kl/};VuuO/= twUW9now|sW!htƨ_CUD&o:o믈L~.<J0>\u/E4Ҍߡf *,C h4*!`. :CDzU<#E:Y&)@Bwhi>8&īN@4cUO==9>ˈH{DН" 2>J62:w,.гU$ 5|d 7tflq$M6f3bɸ/Xj$RQ. {vy')QYYF Pd1 L\W$ a,Ɵ8ydWp+njjyL 5ןD;xG fε; zϸK87unHX,p 6^,)1~6@L"fE&r/~Kq݈1NhHπ;n2"u/i9fv@7d#D%@K ghRt*ƹ!p7o17k׮j.}:cdjhf>ZduqX`!̙fx<.X<]P-Ɵn "׶ q B#{;tt BJ"oLuDng>[K?M?{A i_` 0ēd& 3G}r0vKУIxj1ȵ0LazgP`@z]M3e[UϲVZ@|( !%wC l?MǡDZ*p/-Ygu,xRPv<Hl[5.>v%n7d3HZkT^GFpXޏXzn-1>< n:D#"pwhT/n;rT@$.Pir75 {ʸ\wJ2c|˜?jyx4KsT} Z L0 S!&zX?A+~Yʜ@s,v[f?O7P@U4=- #vj` wl \aB-1Ut]t.tߣX.Õ|^ǖkM7G o#|nC7,1" %b_Eggp](C+oUy @ND0AC' ޞ>"c~uXA7g0HRXs( Kyؒ'm*rq~]tkdA9Wzo )SSPseT'ma˟ܽۡ'lT?Vk"РAr0ߦv O`!0߫BKD@54i}3@z\tg'1<5W4>>ñbD~EHUoe"~ʟf8\3nD7@Qpg,#mlcEN`hP`pqq@N9 - EK$0R/ih:ac+S^HhǺvP3,dB{xdXF]n4ؓ-18Η۶!TQWw7 ƇܢBbk bJUYJ@0bJ!̨\K5-Z?\\U%nXdzY׶)`X0۟(/F·1] <\U W:1f~\a/)G[`{yz4'Ee\=WބZ`zV\MH110S鲤)sXZ3OxЃ0dI.Pnb1U򸇾;> f yJ8dt/PپW&,3F zX*8v?^ KF ?yo&Ű3ݢ"OW4bG!MB  ֕5喇Ek =`eH _[2d2Fgy%CG`{GrTEh&m #E"s/S+z4񇗫ov%=%=ŞC ݯ3*D}nوJWz>ġ۹ڦxlF[{.!p0V:/CO1{/dmX~@ @ 8sH9}?\2Ş*Xx(a&v[맋xe]4bVBS6|"PwK,ds&:$m8'f#ZÚ4>rW0~ح o@a4"i|x_?1"j*4!ޯK7Dس4 NU i>Pn4|]iU'g4b~*eB:7ZaATg w :Idex T\7ocX)3H }B4MZ(fVc\>'ĠG~VóՍnx/bMٺ Tj| F(`LG%ʈȰOfx 1z"0Dkg1fU i>0l' C=.@D}}=/5~ ͵T?w+fĬq4cUq C8t%ֲvel.ڀ@2OӅ4r!DD-V[Jsn!Ry|04:5 `Ť^e|0>DnB8Ew ÓUػ3{%Ž1;. o{4* 9Lͬ1ZQL7GD^ Tm-HpX)CmzMܱv`621׺_c[=*ECCܯShj o|7sGܴ 뼸zH#Z?S,Ĭlz*8NOoH͕ =]K.~TyzhH9x=/] >~LIۗ5҇cm (ȡ4r>7e{3<1IT75!Js Z(TdkPE,/zwX?&Ғ4c`5KUY~&I^@_Tb6lB9[ WEd)xzh2{z LgfXè^>/{B/U$[Y=Nl*o8sm*{WY~XbAjm^sX`΄ROGt.h&fxp]:(-{n2NqO Gdo/HP0>9t@U̸o^)<;(ݒt|x׬b^H,$>{N\1/Ձ#ƃõK̤avmǭ_5Dʇ+- UThYL^d1>d;a|4=%%G8X aec=/?khYyyDx=qrT @fDe^DiA9E.Τ#?X2=XÈD"؟^8atlP=-G~Zy< vd2AhhTfNq_T_'g5o%Ÿ!!(ě+ӄCh^No@! ]_=2 _E7=3i4R..̌~R԰!wITKUgX;!\=8cfo-*]2r`O*uK| MKPP䈡OxKWyU`uL]v6#p6x:بSDtɡPmqnne28y}t\Yބi?"tRo@{֕$BsH@w2xR]s@ (E9@6 %DLRw;< \M43uRŦIQG x"cIWhc,.WV_%Şw_?gc{ܚX T`ӏz(E Wh?^=B>KsOA.,F}E[H|a4yZbJC,{1#T=Z+? "e| ;J Jit2R<+ J2B׻RٿBTD5{O!}ܦ`wLm(t F`ϙV$?WR\J@`dj3,)::{jt)`t$ʣ w6?[x"+كj,%_11LY +d 4mժ'0j& o"D΢5J8`pho$8Ik.Py)/;ز,+fK`A[7+z` i}_*kxe!Y3Um/kE]lI'{+Č1^7  DO\"E,?bW-ko-XUt!oyHX~W'4s5դeU!spW^CYR;E|;). 04(e#oIQ#0fDc88˜Rr:[nA  ''0BRz,H Y}tɢld|/07R>w9KzHo>˧Ŀߓ%?_)*z{K8:ogpx&P4 sP&fx9>Ӹ%bgWx{dP<-<ܡÝDphS{z,у 1n<. wU`pUfؒFS|cėDx*S3D\,2A2/ћBz*X{cTr V lOmuOg!>S7}nqkTyX!;+NR8÷;1p\ p5HxOlpAIZljșe鵐TD#m "Ea;`n" ƈ-q<Nу?XapRPOԋaj?sǒN>̒)~. jZ6jr\sG{q@A\ Jrh,mnAsX5@O@`@rj8^M?Pa||=}4> 02jpGDCϠBID ' _C;ÛǴ@sbFQGz )A~aEʍ*(Y.u>fN"Rł `݌ȁn1sOTW\4I%847>7Zg$Dm= o Edi`[mJ l3s{yjG\!R5A%XQd! 36/*CEnஓnI(;x}z^U6 І q6ڛ v-#բԧ#hxd%Xu9+A1IsE|Zh X6p,<\0w3ӲFzV\<_Ȩ<{o, |Ґش:JaM WEGjCw:I! x^̝ ]fa[ExOL ȻY@wK lKDaYfJ^?sۇ‡xWdO?67&`!DiX97 ,]QH HGr 8)duL_Mr隌:/c rFF.1cse9)59U(/W R؂q[YI\جYoCpܾD%P,zòFx*ў ,:<c%[P2jə89UA3-E,#E !`~ TtLQØHl%헅Xpd?>SYi5Rm!?4P=O}!c0oA "5.gr{pwS!q:ب]dYW@0`Pڴl=Oa7e 픳ڲ&yFP #2@(j7=~ Į\'—^@\!+@8)Nm|`& ؐ|HeJbHT"(O Qt'LsG|'ρzqUڈ= &Í(D4}l{ql?#ϑub Z"R \4B2fx*f|ǤqWTzpQ ad.2L%V !_7[Ӌந{w΀09@w6}# 6{Fm]7߾3֪GoV|Xg೿_ \4I!CC>k;8?{H&y̒Fn92x7)ld10F6~MӋH^ u q+#3rF?;{f|YDL$-uh"lWDjx2h [R%`Mx g3DLԳ%T|D]-oXݞ\)e _|?RF6|D/ul 1iW+ `|T=|>S d#7o=#]Ic)8P7I(Q}e@Itfů'BnLEFVk0Db%"Phu+= d9wm{_)3\1%p!&f|yŕS|pz+Tv%=<X*7/](f&ݤl"`Yq VX1Ki|&hY1:j>cPyЫ_~\92+Y$`'>.FujH`u| ?)`6r4_4Oi<1lxeR;6^IGZr?RV;f܈M)KSy-NXyv@Uqp5 eFӢbP7T1$a#Bs "X<}!6ױ]bLu^$ CSf34JrG+H<< l@gՐR<psW%PySt\Z5ެ8Y0{O,zçJ}ck%'PM] o?G;6]-pS%7$+Cm?o݋`Oԣ0.>e4`7d<^CbڽҞaAfT2!Z ߅]?|EsO=_\-,x_qu˥ ^hN"j f^&p^pfj l>ܖZ58r^,C (\EĔQuBe@]*oAgZ$hV$mA5;:Y`Hؙ;X~N4'}߫WP1~<0b-G NX@`H Ns|.`JˠDr(aD-sH@eUD`Nq]I 9x0MIݪ'ngX[˾P82Q-EL ~OY+70?o ] 4Fh/ Hr c<뗗"L9 o "Yv`,OaRu]sHp%iﭵQ Y;[TDC/*'oS?hGTrFI>3$"0TՋ#:ӌ?= x3ʻX,XE߬pr.'ȕ?0Cur,"}#Ws4V !!TU[UV)Qݦp+_~B¿ޕ!7#lslX`%SolBL@!2CpzTz(^NN #1M0p&&it4 %e5ma ײ龸J1l=H\(d`Q|:Vbxֵ+c# sSP ]H@ҐJ<7ԻT0J;4oHA(c鷬:.eiz65D8v8|*r >%3`G7. 9zUE@6]<= _e467VGbjT{uH@W6>!?K7k٧)]x7a~W]\ S0꿸+HGf> yC9EnDˇq #Bۍ"#'6 s#sa߼]NzӴ}|怡@0_E +aPy=i=9t擆නXnd_94]4a`}B]:j28?o`t^?QB]\!Ö\PC j+yކ%d`!bmJeOCvX?IvHSǗq~ "F9PDe]ɍ"+d @w0?l>; kH.{weH"^ f|MOLh9\{~N$ޜJ nX2*; p)Tfw$DMΙ^Ij *5#r%; p7*$q&q+'&E5pSZzV+j9͕B/|v%p a̷; H=r TAdݲ9~BS̾2 v}WG) x'{"CO/xdp˘jA&! E/02z:k猪/@VxaETmj6&up8W_/*˹$]:?'n|yxGBH%C*FI9CTٝTq,6t@ڽ}_?w8] # KB &JnFY! I%Zgr%챛S_x3ǧJbLj! h\dʏ7H [=by^RRb+성pEQNXew. wty176ŕ7_xg_)!98)1rQ7>З>}e0 mhXve]mI,|QJ])Vݤx8f_[d*#E`yކF9Ϯ>YqQ-%et_{d.'ç BetHfC> (tВcpl;IENDB`pybik-3.0/data/ui/thumbnails/Brick-10x3x3.png0000644000175000017500000001344413137372622021054 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+IDATx]ixQF|w{aa' ) d k #cHѢ lCtƱ8su:f:y~='_NUI x-{?<9|o?5n7A@ *T(PPB@" E*T(PPB@" E*T(PPB@" E*T(PPB@" E*T(NAD3>~qo3~f)1O7uG~pm4~ K5cZ?:Q*#~S?x¸32NKo/$ƍn3L ^L^ͫ rjM,MZX}u=hH.SKVgH+ Z0< @'@/! Zԡ?BvATpUoʹڃdk$dhq$9#WR z<wV NW~I?hS߆27, `3 ru4~1ṗY" ָ2]8r&qreOn,GZ?h\ iMxa8&ji4]G뽍sǽL\!G]P ç =OlnyEyʾt`ebek * ?WteR1?@:;}۞]wk =b V`@c! 0ߕ缁? vKu8'=g T,Vw|N kC<>c^C&]'R8W,Kp`n {rSnMq\{µgǹ%P98ydJ?Zdw,[Z!C}N:rCf@MYG\m "<<W4;@`Pg<8 (ML= c㪯jev.)kNDS?.%<= U@^TO1x=Gs4^'\I -I3&z!;6Ȱ#CDnAxN hP|Awdi3 2b> p߱$pH3CxM oU/c>l 'g0ؼ9M:& (LQ߱43cv_ ddO Hp8#52J2(sN@̨IyYPopj7CӁq VJS؈#ׇ@ZTǼb௒qF^g)i۶ ۤud}DzD̈́") i^Ln 5IHA-8vNYYP{ Vݝ}G080סy!՚D(L9W7Qc 1Gч惌lNKs] F e ~f6B$̅1= "𚑣YS%?|E ~j_"08d<+8aw( "^& {a8ifIU"q4[70i,n*)4] wyت xQZ/vW  4o@Ā۰j W.-+ie"N \bVܘtd'_$H|K3- Þ- vkf aAPM.ıA5X+ӓ '1+j?+Li8L"%'O&ZKX=XE0CKL ѝV8k݁= 2|t)CK^%kD 5 8ȀDm냴.sMގkBGi+74৚G-$&1m# <FI7 b\;1Y$^{piы =2Zj/r]jPhʌ.`Dnӓ~N-5*Q ﵀U8W)4d)5M¦s!ϐozӀ {=xU^OIkdDF N*0{1x"/Ɗ3Ŋ4b9suM9XM|LMn1l̆|np87=5N- w Yr9<%g~o܈"@r/{3m .s8Z*Q\)Ć[ۙ&̞;FTrGB!>Idych)\'Ȥ?kz`EBA RgF<4*Q^H4;%kvmQy&#Y*ĂH~HXP5q&'&&`F%u 5gB#$E,rwK8 "Pk,*KA7]#@VOz &*tĴw.#RS? yE1Fc5 ρ#2#&I aL$$)%^BTBCm?;`6$RV4wz0VW!dNWx,&=z!̣ zTH9 rdqxczK|2NB%"=8F1H=~, HHT#A_s Z=BonI%@V ^`EMOk]ZA%bbEq!hWu" ` FV&M %zIxKiZ&2y~T eq"撐s:+HqɟX9%ixE{xbE @t L4PtQ{LCR])bfd}bMN-ҍF{  :#<CA_ߩ|Xuoq}Vt90$tdbiTYӶQ/m~S(״cVԴigמgD(5 ]m"qWdV@5 !$+0R 675XEG&?̪krYv D_fKϓ3i@cHu(K.%>xZ|&/UؙM??SDO@^Y$b@"7TWZ  kw/ S& t[雫{{ց,S" UģwdK#=٦;",*;5XSKDњU]ubKwihi 2-Dn}Ht!\9\)GL~;|"V ȿ9,E`ec"3ǥCOe㧃`UpV#o a`h7p Yrv8$3*/IhC&!ny}*Өd Cw6eUf ކF /ԥ~ FM$ !3L\AH=\!D4 ?¤ûith- x\;Ƥ"|}Էa𦊝QNGN4H=ce y۹rHt7Kb+6~DK 4Ƞ oשecW ~y.^xE}Yt7551׋|f2R87$RQAT{I|Fy)bdAW%F*!HEm=e|c|&T!`?sئHQSo!ї:#pM5wEsEjoӯTB{+qWB]svn2ei ,؊ΛV"!1 M$b4+I5zhyRSkӒ[]A-/qy('GM%\ؙm a`Y! âd$=P&=%i]a19Rm#0('o{mE*4oKh%'>#l[uFܡ!m= 䯢 mǭi 4CN&A^CP/ AB <1BC +ld~~[_i- <WG7^Q[sFySJ}mV`)p.*kKT0B" E*T(PPB@" E*T(PPB@" E*T(PPB@" E*T(PPB@-=IENDB`pybik-3.0/data/ui/thumbnails/Prism5M-3x4.png0000644000175000017500000003215713137372700020765 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+4!IDATx]w|UU~>8Jr{@J轷Б DJSi (ҥ JE Eqt&vG͌Ψ3q}'7\=`X${r^^[e_s/FJ$4q(hF4J#Fi@4Qp;0gA$$w4*OW^ oq6qCIVL |٤ؚ~'NnNYY8!fUNZ6U} |tl٩ W2"lzRsEcl4,E&MX!^"PX{9>w؈ڕ~[Ky"ɝ 23 Lcǎ]_BLc@V"=Y@@7?Q}ٲFLI=eLr@MI]P@;x,d  JH:dg\I[H#@iG TcNf w FW~De|t^"v;_,`H$E _R Q-StQ!&T Dq"aۅ?)*@``YYY3??_剦M-[X(Upd/bbbDDD AAAϏA0f\k\.$ S6 O#zZV3V 7@IXE#(++[?J+&z'Dr۔QH3r2ĔL":`$( 6YB֛JcH/Q~I?~;`X nb;}k7 d '5N{XIncƍ0(=e':@RuƏC1HA,YxYbE# Q10 [zf7kVO-|iE - pm l|襑x-õ[%m mZ3LV'R V KoB*m|nUc_oUɴbIY{M&5~2G2Qh0!!;4X t;+Stm 0Maa!"c؉ׂRZqqhݺ>c@8D I%(!M-B_vSi/Ŕ|JLTMSijlWL'rbf9 [ݍPR+vpM0~$~Z!!Hػfb߹Z\wFL$h@U b}wArG)?uVEP3X%X͂!ب9.f o:O/*/A?_6fȪ>>+x(MPLMjXՙZxTx3?@ч೚5vk=pw|g$b ^\! 4CpJ /I0+ ưpv7n6^Ix^(5"H鏒1q5t^II0HZ+nCCg|g _ފ2ðQ ~ɠ@s7F BN&Os )\J(beݻӫa` @xn:&մ0~u+R iLsPlHx(">+M2XXۖ JGOmmLlqzÂxx4?%>6&mMP"RnXMݘUd#53snPw=6wG1::<0@L "\VV!0myeyb1$廚d#IĊQG<|:;@"3 vC@G;7PΑx`0qc.<..Sj ;ռF H(W$  $,3g a:EAX^a?mhAQ4}.@AΣ#E _+m>RON;6Hu&0G0+@QE(RnՉhaCVXPV|W?xJgCϻ `@Asl \waGg+7b9՘tU~T{\pkN9C%p0P\&1L H?G!oOa),~ @⣕љ _FP62q](>B/2L OLЋbgk)]ܔR+0i]僁_P9q-MlW\nf@hG!t(%䖤2"sf N ;xأ)WpC/e$Vbu0cɀ (lbn` uӿ3V% 5bu(>74DɄɟp4.No_ǕB´<,GFŠW/w :vO>sJ=KjuqdD_#p4Y(]orQjQu\ ,zs~=6Vf_L>N+< "\H Ya*@(>Ó>,'zE?t[WduE&Ǚ@-*R&!n1` ?GNz&oHXXa;~(+ʣ& DoA]K7DQa"e(W|Yٹ3B`浫b±#pb)!Ɇ *~s45;V˚k@fS@hM%g|\ h~KG׀ksؤ EuJq/琶FG1:BN4!k| ׎ %o|o:P޽>I!f; 4D =.s& M +]p  @ԒKq7&f+]-[fH Ȝ 4ӻ }>{=+jEGMs.P4b.' Пֹ8PKCȇ0~!J@=} `[x8raXaXOdnO P2 1EL> p!dP:L&: +}AYMCsuHxBx>*Ds"AB=]~8#]C7< u ^Y}W/Q{U dT ׭m1/``U;m(?'^B^tNn >՟u6kT&Xmb6w4P=G@H@IԢ0Z.ߛ7ĜOu s&O'|oAI5  w\:zx7;:!AImdBqx]AȄa7@81GF@QP:E(7Vh a1]?G'pX*o)25yHSF0eDҍ=/>M 8tt=L}U᫵q޿֯a wɓXa9sDXR"| iL6X8B3ڱ d  B&C$Poݐu~@@σ|vuebA0j|Ȉ^|O;)sP ГA#33%[6@`؎<,KY1:zM:CY3EHǩ,Y4_A>'@/:8>Ӎ5-6N 4&Dmb\ JiIrüʇtm-;''y$ )ؽSbF{LpU>'[5 IM򄷥Ъ|&}DEʸSٟI(:d ЇVGo=Yɵrg2̢'HgUW=u#mﹻvѫ'lф@Y(Ü{y|jvuQHׂU#W8[`JJ*jIO&3D$t{K >v0.2W>ɏN $/<@tj7sYM$ VVt> ؋,7{`kWpchhT)U{HtU%lۆ aTS B陵â7o;̔0n߆SCs 6>_؍}X-*.. %ԙ^8 b6*ӯ0Lvވa"o[CZH(Fiw9҈|A9dь:R/o|ȧIqvSCH6 %VJnזL#bRfCIP;wM%寿f g[W= ;t ecg $s@V0RzmWNjE# n4- jDSCO՜M4U![۠L\fw D$QL (%ysӊ!I Kw%E 4f ](l>,I~a;Ԏ EqeL w;px[W*d R<U~8_^IKUcEI@y wX:R5)@HwMt )ed 0bպ:@:0ٍa`! 'L #}+^ ػ`]2A%I[:f%6.]9!Bnap~e<ۃ'xHM>{ŸzDN+d%+xSpn@;@CL#4V=Av &mſ>H:xL;LkkdTo 1Tp͔xǒ@}ˇ@UwNc6֮̓@~d_T: *+KST[C |{ k#zύW826Rm GVDN%z, I\=L{u՘/ jKWJ$5sS$mcRtnVezGgo$A|AZOl.|Q󟿤+DoCFI%$o w_y : fe{ &OHzKu%OPyy|EnA W˫)nЧL@ .̝$+| %'#7̒(Lu$ĺ#Dd&(Xn؞VDfy&nrN:uB*hR) Đ{kH[ g^=%hj_V;{7qݹ" ܅4{xDJ, ߎ|V=#QV9Z733#<(zTΩa V)nT1¾<*W5(Ab Jؿ> W6w|ȽtTk|.rdbaei6}7*4e$2b$c}Ã;=1kVW0 pi4+ '{T+eZf<]BHwHlՒ&߭9_SkB\#e"< 9aq?r'{(?2O>m pyB5O6@)e|uΡt I@ %ڈD@ް2ئi@ 疰n>*T??qRAc|cBD F2HZ/-0Odm H丂U|ө:顡Q&=w{gĪpPu6%{0+hT dU>|DTOD M+gsBPVPY =6Բ$s|{dW7H .: }+ߴL_4}.(l6DGad~F(M8#`LLNi@IJvY~@P'ʹI.' ?XH'-a\=/:;.>#S*:{0 CJU|Y>@hhzw$͠H =Qdz /Oo788X@dHQ+CU?eDU)Yˣ <$'wSLK?2Σ' u*.VE"KV,)b? zL<Ҧp Q"nxJL7EBi`@ )}; ͫ~vW;_8tT=g|zm?@pyBHO?ZƣP `CnŒ.bH1~0z $կ$VV%?$~0gk6OQ|-{ڡxX$lW^CI?iRVS&w`E*|e2xƱq?)̣G5Rk6|@hxj ` L Dh='ȦV1*+#L{(3nJ%EL$*z/*ٷcd֤sH9ėuK )<4S>dlzν(Ū>I"2-Mfhu@̹W="fi(:xpEr#_\'#L Z6+ԢN9ću|z%gS>YO)Jó!0f*롸nKD==z c:.}D]JڈIV'Y3i ~b$gJ@۵Er↻ -9-VOջ|8V%t1_x1˹A`L'lZ%& g=Rk4-P JسS H&r<=|x fߎ݃xçVv;ɰl޸"J/` O Eѡ l<͠F`*{ƻw{A0ye(cP Pp*NZ=aH]Vxn9{-3e\dvIK=G~T V7h Vo^Gv/4fꌡ(NIG'q\|#g6R/tթrPj|z5͊0{ܪ#Az JvJ V͋h'0tjW /`i?W O[MJ>LZ׽N83 `SHi[ʇL,#cڕP+pH+rR)l')UNЁIr ᩩ 0MhCSU܃*ZW!>$D&Kާ=M$D\yB KL(x+nF% :96u~`Cq(;O8tMڿWKܮJATF\ۻ dfcrk1l]@b`τ[H&V{ @]J e M!(])S3{$^Qz`('>> )Nq`H";};cia"5^r]FG) 8l}4v$YwӴnśBTf.Cb-<=}ƚ B)4oR^3N@JUrPT=,?ڞ׿^M1Zy_\K#w=D&ʆP"rzAѮbHV8W8=ϻs B%P^ sXvʴkshWs@GXGȥEo^{t,9V$Bf5189Po*qSI R\9&-Mt$ hز,Jtk#<P-Nv룗OF[ ?8Af:R.2[ѝf] @>?AI,"f@id *S4i"Q.%dl) +ҔԪGEځR R<+fG0xT dXTJԸ%OVo[@DnJپ2Jtim8DK(u4<׾\T0y|"WHꔦߣbJphfd$0ޥ?[?Jk|v1IwO&^|j>E^f0g _2^6`)>ɔ[Ga` ;ߑZ?J5i_p%(Ä~~"A?J5$}Dj7@^{׻AJF&}sD]ViEtR~=zEGFv7^c*S z&fțp ۾F 3IƖque .^ & gb$\\o72Y*6^Ё~z A7&EE xlӒXb 17G1ny|Y7(Gc "kأ48JNXŵ?ZcG`D@?9|zOIT "Mx'!ߓO@ xB?Э8{NA]īq"14B ub0Sngdd^*o1Bc`\P0n OhI'Tw"$&p/7:Q\M޴|vg QB9Xx:7~,AT6G ukxgIbc5‹*\n<=H(t'Q2s$_D7L_pA\&WPyqN#XGx3*I"Bb&h>agF 6}Z6n o((`EmVЭX:'߿oJ(kKpE 2<E) )%mk'L,=zqf8 P];8e޿y+>>wJO7üc5P)?FSv3|I AX'DxdZq!?X0J/n-^Wqi5+@YY{v2} 6R@^0\JIl6QC j@qϠ}j@^ _BQÿ5S?ljU7ӊoP0=_, L|@dJppy@Y[:W/t9dۖz 5N9-|EMx=߿OxfK@Vyo vpjFک+ at e[5ІhqpO6  v\BA$Ъ%?F8B)ͪmhVD"6aP=={ܥ7%R4sF8 tn#l0Q3,p@L);2kL\͜}#X-oTWv!~q}B2~KLu4_y$,)cG4ye`)]ɦf G_ǯ@@QM|YR-c5V U]9V(uXs-oY=-@cz̔y3oϲS_ͰPY#Ggۣher C.D߀^ BGΗ\}jqƯN(9ڲukkNW_5(?v=W_%Fi@4Q($ CAIENDB`pybik-3.0/data/ui/thumbnails/Tetrahedron-6.png0000644000175000017500000002355413137372643021506 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+'IDATx흇{UϟpW{^W^AE@E@ H("- 4 DyATj])P@@ٿd?yfws׵/$̺Z?̜]uC!x^xw{^xw{^TkȠ'gyPwީ̴4յeڸL/VJ8z]zuPnZ{wUCikrs ^Jޛx -eV߹sG}*,,LmZoՕּS+xPIw֛~wNڲe P?lKijƘ**#u_Ⱥx2k*&&F.V]v"U=ק~~zPI%2~G\#G'T7/OVwr\l\ R kVj^Tpo٩ٳn֭ja`5gJT5aHZjkթ_YsRߝ9?~XXB@1gΜ,-%1VzD4SٓTPP2u)Mȇu4@(ڋa%_ԲQ&eyprB\|M>+ڵ;v1|9ůj֬)YZ}.iڍS*gAt L֦!Hq3fdUr36_vM%z֭WW*omzgdoh}t_@4Or(EgC?ϧ}ƩOVr9saիSO=-W΋8TJǚwIzxp=~W͚y~ĉ\<ϩU=z(;wv:@ki!D3O PlݱJ_r$VA׬[Jǻ}^RǏ}Uƍ+C^AkVtmQM(N9zUn"zF{,>@ 8Pbxcfի*_F=D f ET c#m$dt PZ!|Y*=5ܦ˭ӷ꣏ ͩE5KJ& l2h ~ Zk$(q?_+cKcTP RMK} _0, 9•=c֬|'Q5Q'N甿5|P^{XYPçJ,oN}T_zq|9AB峣ls@y eE_{xS"V *a#ڤKX*!;^4eVN"N3SI߿~dڀt37@aNk};߻B <9C)*|aJiH/h!*zMB)<ԺjRBn@);w,Ҷkʕ6w^9d7  BCCEn!dEY,T:6L` r%?Uet T!D#m"^˲O |QpaÆq( C†IXFNE 3$қ@zE=7PzsTQ?jcÈx>V+9ʞZ\'%KGN+ 'Ik۶d駟Cd0,*D pW~MW+%J)CClϼ'v`aQ^?bO=S˺\.yd y umRsdž=|4KvT8Z(``@uH{((HW# \6$&OSe_,ʂAGٞ;Y=<|?l09d8 _`] 0|0 T:;~ׂD.IV1)h*}W*u TܮDuPu!yaY}Q-S8y=_]J?|-dy"5M&$UO)^z5c<> 3>sƄK1bn8VTbU+o#]rw lXA=\lTӄP[Gt8h:i>X\&N99ڵSA!;wvF,xմ/ؽl~IgPduAGZYo k 8JxEWZr/Oaϊ Bռ1#ϓelwVӦM``aPh P A=g}133D+AP7O65́^"?3{=O<"ӑqav7O[Q!q:"ISiv@p_hɒ8hYYX8 ƉO%)_k~' ζO?mHΖ0<{<`P\ ڻpFOIT!- *-A>vUM-+bG:ڢڐ~|߄ܙLԴ<-=9r8{J7KT^>K./Ra%M.@s.[7p`y9âJ#)tlkw}YJ;4Yڀ[4RtNK%6]53yTgu!llusfRYk֬#\Xkw(N\@;:I5o/հس_ ~ \NWj;߫}pD@LwypcBK3&`unnsǛEl$7F 4΅o׋n8{v%n~/r2\K8^2$Ӛ+GZ_qO@ FND'P=KJyD^ \%Lz!*;s='OΟCh6|pLY8v>c caRxLkKPI~1Oz)CCm@ `p$¿#'?Cvf 5@[x3cyQnǙ4aeZt@к2 lI&٪8oUk!::͇ɿ .C(lEJ臆ygT\@ pN(`pI)&f xKAPCD"w&EX海77NZSj&ex{.[ (:QL>v$VUOHhKS}lڵ+{СBDDS p&}(.Y x yLYÇv'Yw3FB{6ċ`j|x1dFvk'Pt:߿;9BXY$yhB_^k['~iϴy Vd2B5F{KRKgr$`y a'_wp fs&~*, ŝφ؎^:~ԗnʹX(=gAPVr^?v[d ig{k`JDۅ>vQkKDt)M{DVyIf7ozOKe nQz`(z)BېAI~?ڷo/Aab&=*>g8},?rk@PFh!2~XSXTߕ(N֏cmdR521ꦵ} CI>jϚX;'mKpr Lw%24n4Ϥj/>QLP5> 8n) 4N?*!ejʙ]b\v6\+y9:̞'hEJdz cpڞ^!fQwx:++K@%O@$!qbKmaz3epF 2y}Cwn!{+#=N`rpC\>ԠpY;cU`lf':t`Sp9|q'+ /B><<T={ݫmG V7N{Ziӂ= aGGZ._۫R IԬ-sGGd xLYAݥu= X:X$zTxFЪQB̢0Fm,rw(} Q2W?6e[L|$ 0 #jX8}ڸVpЙ)m6|qhGιbaԀ0"hA8[!qa2iOκA9* 4piʶ+HnU?Je|H< =|wAr 5ؑc*d`G )`PLYm rYB\8CG-],&ejjb|.I32SRc)r1wA& ܾˇ"3كvY4Afyf-E @@'ⵡa2- Z0ueڞ('8oѤLT NpZj4+' {"2~A2{ԼŰ.]fJp9Dk !W@عHv!E ?#Kh֬7#S'cj⢰ݦbv h@@lfRhB/{Qx8MXllW1ߏai\4i0i2ymS#c&L1`\@z\@۾kA|A4ZJ+Sf8=D8wbz xϑagG |]T?r/ݰ>Rq3(JgTH ĩBEC3^c2 LR3'э q? J܎Tz8ZB%ᔒ} 4jVC腴D-DyEGi h#xb(f. A*cǎR9&/!fkfQРj.w)խ!^' s~>D8l"΃Rxb g8D(2P4Lر pA<,!Sgm.G|uN~Ty_ޔ+!G;<NljkPl'9AP$͂ir"a޽+G y'?x=<= >AB>H@t$}P"|A|On7M ޿k\72i{_Ɖ)@> l*6%|ǚw*_weCœgwP&l_(^dEu'^z ` .5k4,l=CZKFnO 5Bgஎy?9E#!x0b?~p+A/1㩢hO~킲ׇgϩDf&d±"LQ*FP826 z(ZҲ>l L{ TLT Jz30BG 1jX ܍Y#Ish"9&`2 ;ȐBq$֯k{rTT?)C_8`q (n%oʿ< u ;YvQՈfO5ھ[ 5*OӠLo*/w H[o%*+£ "i?`Z ڷ$M`mT_ |ڑ(bpVN)PCuWTbηĄ!_!SɢTH?$_SS唰e+V6]B4{py `8'p.Md x l*t[spƔo0,lX&U&uyhoâr3(\@[\Ňi7auOʌ%t#,N=[0!//zgRf?@KfY|J0X߬+!k__'8nL )4-q<0§2I_2&d%!eBTx'(8H p\?e 9g3.0?5{zٙ-KK N:}5PZ>&Lvzs8Ež3>ZB+?&Nyr||#Y# 5Οi(g]D)#* 2=[cኄi_j?pQlݶOK:j#܃KVZ.uK}VwVb,(F6?8tohOd@)wr (G# }UV39ѧv$Hhmmy>Vӧ#Š 3#%~GTAw["a F) YG5u #/ }-@oСJ`ݗ;N!,BΡ&qԳq0zd qgA'[ɢS{O旿R]ˣ̭`dS mcNp ^NU*=_r 78LL #E\+oRф_.e6HM 9N ;(ԓxZ H0&L0 u;dQ @ժP6Btk0Pa VI#܄OO=Bg@1kЃ@'t|onW`՛D@G :*بc#|XJF14բMAW7oqsp$Zɢmvc_@H j f\'YiϚ6MG8lZis_'k[>=O}e6h4:>Q|у6LX4j@ӎSV.$^)7A3J1}uboƩZ.ߠ$V{%Q"=)ΰ&i(WU)QszʮN i`@Tl%'.J:|0Q0b,\iIRyz@Js+:™hƿbMxW=v`uGDpj5mBF_W;I;q.Q>wzKQ󧖼>`WZnJ)hR 7Jq+_^bff,~sL}oBȰjҰy-0}5ؗ{oa0&%L$Фl7@l%0Y@ >$9L‡<6JOG VfVW I, v- n ;e]TB˫+>]r$p=;܀u9V:\;gA|ߝWÞpo+ {v^EɸVԒWߟUӯ Sg@!4*yތͮ"1~{N.3mKao:1~sw\@.ct vOZ1~{u` ӟg7lO1~M2 R*W9`ۙ becԺEإW9ݓM𛜴E/ʹhиq^yw{^xw{^xw/DhQGIENDB`pybik-3.0/data/ui/thumbnails/Tower-1x10.png0000644000175000017500000000426713137372523020650 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+iIDATxmpTp?ڱܽn6ل,yۼSKB#--2$bih?48)Cg:aD+ӂTiSI ZfXVsnI3o{~s&#C 0C 0C 0C 0C 0C 0(KpQԀj\k0pc+كHs>L~Z3SώtU>yO|2Þ1 am+v:u8^!{#{,h.\mÛ#*`6H ]2j+ǧ%0ķ(ll*, ?rU.[x|%Ӳ[ib|p5vN|_*ß?Oxs@Sd\~^,jl<}#g`u[(k%J=B!f;_U҅BdY@DοAewۈv) 5qvu!=}`vd~=6bwz]iTbw>8 `7Ƕ{s>|o1!@㺀=}j_PecdlgӲwpW0&+*6ޕ5@c`7 -+mV6p0VLۯ@ l J*L0 @5|ʬ.P%GK8`5{D;'MbB-yUo @dEg#RW"bpK Ql0u(\+4[&M`İPNjwX %z9b0FM,>\N:Lh D xp; *=_8\,%lJUxo`賁KZr2EzC` /KoEV *<|{H > kEs X47ձ0K3^tӿ;}\$#Nt |v LT!TV ZlIOL,qO />8%Xpdi5~HK5@{zB_!Qϱ0t^` 6GxP"Pkrp:NMa0@ux "!K__@Q0*(Xd IWU+e5Y/P`˖ИxR)#S+]`A\àr8spk"P.pN$sPV"Šȧoܖ{B_}ȗ$f} [}<\JQ6Οg]BoedKE %1_ 05ᥓT  ۗ@GJ Ԅ\+P[.E0M4jpjͳ]&0Sm Rh _ X ^Lvql ACP%3H_v$Sz*(B0dhӳjXh`|?`o %гI<47EhI*0փd%v>a pHYs+IDATxkp\ej)9gol6=-iJ/ii)-MQRkEP`*@:KikFA4cPgVGQ||-m6y>ٜq K4MHLTS@Tt0X,R.]*`5 *6e1|RVVVBmm-zǜ ɄׯW1_g~i 4h8JDU@.OzL za9\]]] uuuRX_PuAt|)}3pt.кJPi-t! $^xTxakԭ]\ RRTcP@؄ߐr/ڧ\`w;X8 jh%! 9l &w ,UjDצe˖萙)RGX<3h0•7f~>b1 )tb jK jh!d.-%A|rXdwLVN`8? ObT O:nY 擞~|r./|?,__4f4n#Ѐoa>%LhW# eAtEJ lX/d"6J*Y3MIph$I#w͊Z6K[Pឈ dI+c VZza"*`\z}M3mxB0qCMEVZ L(WP% @(̥A 1뗨n_ߦn|VF7JRT#5C% Z ;ܠ?9fQ/8ZM`+N=]EQ*)`Up:FT-FE *" ĝB)*t5:<4vw, g bI M"k{8l͐F -2:䨷`ĐJQ@4Nr$>*o6n4g,FG\4d<1d@ٮaг 3*0L z#PKj!I/6_m k~[mg G Rk2u _],pKQ&i{ wlB<\߼] 6vxh2J%SiIy*hl}w=$oI8Ec JR "A`kijcpo Knno?LCP j|-E{KA6?ܐ ǔ9Z2 \!s !ӁIC@`.l̅O>F]zgL+hȄ) i1F.pߣGhT?1dڣLm?ז?AGʋKNǨLGqx=Ŕ{1i!N ;}WwSkxEXQv%`A)]n[ =xT9fV]Jmn9n>`D-}pؠ8G W>bX '`1,bX `1,bX `1,bX `1,VzE=IENDB`pybik-3.0/data/ui/thumbnails/Prism3-1x4.png0000644000175000017500000000613513137372651020646 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+ IDATxyTTgӦmeYD⾟o={ZH8֭jUL(8p :(@wA TpW~}; fy=s̻[Kq77 H H H H H H H H H H H H `?Ȝ3Ӱc왆+$ӓ1x`4Gt :@b tHr=!qm86%drstőȽnǿzn(N58ؔQ\C813f̀N:1 B0XK |}/NK81֭B;}N۹ʥ|Hw|7 ܽ? Xw=U@g|1yr5:D81;L _WHYF p[_C85[nv $Xh^`[ b#߭ 'FhՌF#2_w`+칹{wwJspbc"->>^bة?| aYރì÷ c(I?~\T/^5k]Iq` |Ic7|䀁pjd 0o_ Y;! _#P!$|Shcc#,XR(]tɮ/_իWO;uHfHξ$(++sXnnn???p 9 ](**jS9%70r{dyAž= 1pa pl]OHaѢE`oS v P@H7I зo_nJJݧ@hhh t%$F>/^/9V )$l 2`0c|Kxut,W5P H\ߝprJŋ` /@ί?Ư'@RJ [ ~!%WҬʠnjaR?!-Dpm1؞(pY/PTpAKp'Ц/78>]R`kBU5СC,AaeR _pww?oWHk) n gl}7%KXzziR.Z ?ߕƹeH@ dŎߟ= z2O~7 ?8Nb<ϵ $$!!!lL2k_|O@ήr@̴{KHrr2 /§;Yg!$qD-!#x…,|///(ݠ, [:$( ٣/p׏u/+ 5 \fcos([ƫjdZ`,nlqƁBh-Bq{ .@m6͛EUxT9SV%%%6 2ġaGcwϪHpQԧO=C}-@_>n;?/IPXYNLLdA/[6l0׬x…şYxfx7lh ̙'NOko3Y9+ ~vD~Ge+~R1xnݺ]@ol#Fj9^puX+$$%Yl8G9F)̤s}X=pY 8nH) o<{F2Šyh}mu {LPTTز3)6Wi"!@+^t P<ȗ# A)"R#ܹsvxg{"npT#$0Ƕ BJPS_`e܎Z AP6vX6xQv--Mk@  (:+v6ph t*f ]T`„ (=|Wo%ĉ¿z< oW8kym *&@)%1P`Wkm62pō~ rssx"~ O rrbQ)S_ O`W'-4uT&0X]"U> 0~MNQ" @ @ @ @ @ @ @ @Л@$A$A$A$A$AdbTϢtIENDB`pybik-3.0/data/ui/thumbnails/Brick-7x6x6.png0000644000175000017500000003503513137372571021013 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+9IDATx]wTյ~&ƨ9gz/wJt)JKұXbGbAlRT$Q1z_sIƒ췾9sfܹ4Aw攙ַp<~!4!4y4y4y4y4y4y4B4Nj6Oݷv*n^ݶO7G[\bgxs(veU̙kbrw ^V:N!gH:bYkÏdE3K% KOѸ8VwDfple)[itb~fdl_{2|+= ɃD×^giQ1tcdhw'-DGK8Nr9$q5蘾0Ph!bd9ZwE+*~J6EX],ߣfDq-_PQ.B7_Osm׌qz!]N >é FJ "G}>Gx]Hbp't`0M%Avn,-6na^ROw(~0W${`O F|6D%Wru4oBAhCPit( 6y[דwxi/ɓ~R@|LJrCG!5{ 7= i"{78fRPNi`91!L^o(b9\=)-DCP bs1y*C{S_rտy9GGP< StI_;Xƽ6fFEgz0I1$8vRitMtYڦOrVptO/3Lݫ3^ ɍ>?B"+>Hl~K6u^ob[\-Tv_{2^^fo F`Ohxp>uth zX1L_5pEk2lyL(^XR ND/ 1ʜ2D}650(WЃ?GIp1y^L<\a(QƇۿB.0SA Ii lT>#<\1 :{+ڵܿÇP:%UE*dfjF QEq]*M!fUzO` *@J0{[ؠ .`hx+BE*oCdx|'_T|dӳ} X鉶`s1͸r/:g$j[Ba^=g2VJegQ(&Z<{! kְY}~p2E>xKS{"φx0l7)0F &EFﲊ#n|w_2WϙXo4{.̔ *mg!Lhk@|Az,(.Ϙ_Tk ];"k9)CÀ뛡w4!I觷K/Ni:H`"TmҹD>! wp+0e,aB(r$W'h/"0w*`+U9;8=|NL_!7RJou`qh4*N6$/A|&{37sFmG(^J>`&dC & 3'r+W13 ! |.ÜOH^w2\E yw\BzCD!7켆;)VE`@v8*)aVRIM_|t6oWn1dHl*Y%e]xg(>3@yp7pFKZyxz54f|ƥxUQH!ZC u.ւi|x:\:2"QE)y*ۤoӠѾ!Vǖ_3bbSas = S<3AQy(S[ĵMm AQ iw-|1 ^7TdX"]#aw*!g(K/;m ɻD><]:G'%4ޖV xʺjʣ')}Gru)0VA$_ɭmD0:*\X>OMWm1{"9-#CJJ Dmf#b@7gToj?d>.U, D/ =0tB6C CIe٪c|a>`@`.@) l!:kj2IM|_<^u$ 8<'|vx7&!N{\|$ckC<*"Ξ=5u)Wbu~9مӂcS%=T圪:?4ӮzK z ;:$u}=Q,g)<0D``ƑW) r烉r'QkT?b%X(NSY_(ן zRꕇ~=>4tmW]!V%_@)r6AL[~οJOJYDzkRa|%=o E2t-4z* ׏RnnAP#fxYDUV@ #k6PS?.WYQ7zҽza7H%rK7}W5)%*"A97k\b,ծb@#2 z>&{'E 'IO" xRƘw2Dv1Xډ>s2~qG5 TM%Xyg*tH}OY;W3=+ Lmn?A&:2Ċy~*ES#C3u[j"0R6pTg.G嚼ÄTL5_I=Ƥ ΐ`cy:97*/_fjr X,0l7VC^3t[Lx 4U୮_-t}mLNvOW;m(M h4 O>"su #YBVsX@S mylAz 6bC+;:bq`-Ra]j@} [X@3p뢦$7PofnKr;b=q1oJ>/30>@ǺC=57o* ajЀ`sbFaօ0>їʦHpN%d^rM3~b>/dG جk'(Ap0Ft)Y@˾ 8w]b\<SNJkOfz܀f~h. N9^U8t߯)_e{ŌsBff/pG1DǤ}$c3KORU9٧/?. \4.14 ;TD<&_h we)v.zivmR31Dg2>Jԃ4Y tj#!3IX,m| |It..`7E biY xU"wxB9+]b8ov@<2}{9޳bet1:Xo?-7H_8ާ6(zt#=7bj&V+el2yIc)5,P*MT`")5"liBN +c jCR⍧ޚ@ 6ܹo_mL Az 4u\gMxR(ט#Dto bj9P5C&O1hӾ %`hvΔ `Xg!fm+ n1u\m@>,_%JS%"vY;PT0ؕ'^ihZAg*8;se%cR% el*$\ ('PJM":2ϑ7݄ dl UWť!qL>wJj״4Ć[b@ 49d" ,(wB/_˅pJeٍ նӜİe^+8C1`*4faq ]fD"'p3ͼlJ,ןbc۽O%!rNIۺddj(z-I=+<5wX^!׀Rː gL;?WbXe0ORV+6vWqd!sqInÆg:C!hG`pUVRS=tV5}HSf/] l譀Tel 9 #x_TQ2+OJ${70Gd'|~@*04!`mg0qVϕ3`< Dj(b ydVzx%dbb M!C&f'ހŞ ]F^z9RE#N5iH񋏪D24|˅( +3wD5þ<<5(YDZ{IC 3- kluUWhICn%4,¼^8Pkn-XlNd1U6>*tb}xS%%,(\ P^!UKhk3(,1Z9 Z8E#%H#Za*D]3JY}\M%O#>p T;snjY7,tPZ@D* i# [Nf(j'pEǪs-bj/  8E 铻Q xGYlj<-?zcGTP>QaeAі<_qHxp^"C~$P0DsrKXÇxϼ`ywFf1LL ۣѲCDQn.ϑU%CH"by KRi^w,l[⁼VN[{(;ҳJ.?^1+G@cGTM:N>fɘ W"8\YTÕT\aV#,g7TX"3(A)m%d2\S*=8C9dUwVí sVq0l)?oIl~=_)x'ۯSto Y}+8brUpIn`fz֑:1l(Xcnp];gD)EE}4{C2 +[^3YU4rHCݿ+k!.~G@?4)CÚV@_O%4(fN(;b@U`AecH}H@qb|kEQ"s ?0#|3#)Z,q=C/0K%.KqzL_P,@iF6]RJD)uIaoI+g2R7GYB+8f[ UO/^s╍ JTH]a p83oX1{R{ssj&F!"?QYz9Ѹi[[|^JkQ{e!qAk'SL)orJz s/8H }F'xctu-u]kMQ"Y< D0~ar' \ANtH^(0DB(2R*]L,E}!rHtt 뮌AmLd,x)R!u;$xq0jT0@x`Uaպ-cc 5&\QֺβhgSk J ճ'!И룫KJ@ ug9g-Ե0 hPEOc}Y#|W,co ,;]^|7$?i\9dWN.u~]S@npZIj#5HQf+ *Wj%2 =D,iw[yN1x\,% A_QF 8<åDL|N>":Mٙ=W,pu٥dmMUjV7S1p70WK5~ZFIcћi->`{a)too^M0:*|wC|LүVE?ba"Pj=Z&N?&t}C;7Tk}qWy,Vj2-Q {3%7JPa?"]!`^!Fg.zy/9-kbOq?u,|qnBm;F+8<`3Yc-˕+t˲ mݻj#署HHrguŦW@v KN#]cXSTm͐f鼮b eu+}t4.b_.3Fz,pEQѽ!q{í1&SITꇖoX`,30l/S6FhL;0XFjLuT ўjC54{r2o`<G751@7#b)@.?V,::,P/I-()wqc(dlb1 )eV_L4N#E# tG_5D<.~-sp]4 CǘCnڞ}K8O./hY?)+$^ÌsW wՙc@u-GQ5&nKy,zIP!YПEN?!霹;?V2p_l]g/YM.cbB6Q/` H#9txB#D?"I/{ .\!#p/cLJTq0={r?eZ ѭLk!?{g_{8|N$</sY/-E^)WS1sN$^rvY^! IulHOVG dBϋ` TC7/솀m] [>KbS\>/=6#JѿSP\Ll-'Y̑ `q>l.Jn#SW89W@)y.*P+}:ASaЙʳd0r~wfԦ9*}?Q"6K 2=M 5Ĺ .0/\In$k؜  ^Wn 8}Hd/d3=dޏp2ib} dsaHA}@4!2EQ K0~X!w8/Tse% u93;?ޫ#o`dPs(zkF1XݡpTG^-tOVٙZ^<;"Sz?;jbt4jɊ`2, )مY.#UBFOs1ٌ3|4~l?)@.Ȝ6A`L&JCy(^zn{5P"ˤLIHY1A4.lȳS"gTxyp%jr)OL 1'_ߞc#íޟUg;S8, N\tS6n#SAŝŞ.r G&gI[(82ƚ{*/˽٤d,"(>[GgtЊJh3nG>m!Wgp^C`4}<:xAHl`> J jf+‘$)y9S^9„͸<vl5{C% /鸘CC_ï 8T$Twu,Depߓ% KĿFЋEΆX<+ao/r&0!ɮ_ٵ !ABM0LאŋJBrYJا.fƕSh鞂:/iC6"PYT Yܹ85tJ>$)k,gKX^ק^G& >ӱ0b6*C5Qpk#cY3&w C{UE 7=@Υ5ޗDKbn OڡaQHN =}a=d@`ሹ B.~qmbGN~<{= ΕC2t-'\oֱG?D&B hHxڂI }U_5i:7pBD,NC`Opv=rEЗ I"Om~HX{`oyqzpX37 G|qC*}kj(րCE  V-}\r3_㲱e4^$ʩ^<.~t[2>һ{wxwKP` ?]HnJ@e9],B= B? O_ÆGvd=A)w%'gʢ/=Ry]S[I#&T*t\%PrKo[u]&Xӟ7>ս~[!^P"}|\=<@< Cg9ͽ  s)\rloU`vPQ G~GQEtb+5isGL77fǾ'zhsr'/; '?hr5=1Q3@vxXbJT`xQ'tȔ1a&)Lx)W+TF Fw`%|;BFR.>|S{A#ւs&8?`溽5g}vN0 wQhr@z4WɄ3t7$q޽Jae0~ _H7^C?a$ drOjO@}|mܼy{a`ny#Y$+%i<(^;+&un6y@[7X?~EQ)ඇ -yl$J#s,L (λe FLV0J n)2#SX,iDHˆfX :aw2' %`+aK˳$ D7,]|ztx'/D e# hsIb庵ˏy4\s2ka &%,VRSxJU-Nk w&&nVmGsG'" @X`-ڣ7 ,}Ӭ5mPFD%|t >hbxuߺd_o RVu~\]f4!l?Wu%c; ^,fH9xĆ]V6olJOs6tmtq]njoH#_ei2=8Fݽ=?!4!Z uIENDB`pybik-3.0/data/ui/thumbnails/Prism5-3x3.png0000644000175000017500000003622513137372666020662 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+{{-wg֮+7n ܐ!7pCn?+BMϯHYJYKK-m[dէMpdIvy%_8u|) #igx4uFVM 8I-"!$DYtu:|d7ΰa7IV!1u2geM?G[OīTVuHWMHwaݫ"}Br h%LBw]7ϴ s`jHc >$~"`31:6}|jjjM" ~Ns"X=׫tԚ՛6.@8m$H6=?EE|: Y@[=(hG#[UmYc?~~fVwH~?4K$R&PM,:MOnc wnch&0퀿Ȓ4*O0iAD6 "6:ގY[Gf!O?&&FDDD%„C I" `AhhA!:gic[wcHՎ&"I$seD54O ح$8t ;J;A;E Lu7ފ uWׇ/%<~I ][1m1Mߩ(AkNtQۋݻ]={>}p9?m۶[-ZM4"''GdddIII">>^pQQQdDcE)$yDJ3{IJ$pHV9 n > $!"c.C;It+k^+SpyP懆wPf$l@9~{YS̋qbZl,feYibAbnqS1 ^I 4HdggKpEΝ%z!u&gp2I<DdQͤ˧s"%%E$&&Jn -4N =EҌ5C"Zw$2"lj@?~B%:s9*lGdCԾKi R+"b]7=.BTċJ"\EvS'l&*[63[-Ll)zyv&u"5Ą 4HثW/I:>gݫ@RdB=l/8d-nڐw09@t-)\f$ۅ6e-Wi9%/ l RyգkbgDvq7Y`&E?c PbM~?LwnP I,C0i88]|A 2N ε fyfH܀sM1y8Wzi-*N𐫉 2~?>Bl3-3d\df GϯByZ` c't | ~AaamrrtbccEttwE^!=H0ChF'$p3 8GuMuC0_2K w;(œs]D«%7jR|xV!dI1ĎΥby(!W߾}'ܿɤ`oC:ȸUVy梨H剬,13B0'{|h mCDS77I?71s$DC{ȶ.K ,gn?HӪ}w'`ʌ <ބnRa`g F^1cQ\qriabrKLMiIbJz(3i͚I-mJĤRX{uA2}~%@aÆ!C7A`N4pX̔I&h8$e6ݒBC<@+"(}k,a?–7[01 H|#" ZF>>:o05\IX~܉.FEpX*FEbHL,AiyRPή]:I{QD*[ "p ᐥ9;k8S qlHS`OR{B!QD,H'"ʔe5  '-:֪@z `O8G0U. EijS)C.KF_B[@ Kc\bQKI2Ĝ [ѢfN,n.Ed ͈#4dxaLmϳ =q^$o5 {tI9]BśϏL`G#h!rp=#-)D6T|$I͚5;9\9S戠=].a(C ZyOς@GTbKr4YMùv16K'@ÃJZ/>D ~Ju߀s NnsV jlEf{eB:$4dgGXBۭ%9j.LYz?fV(Y9B<2 %CҖ*s9P/ kjƽCv?J\U t+hL#/uJ&"`ZxX\/Py4gW|G@JɎ2LTG:T;5 d`"MQYF;C FR {pV`JCu" gUn joqGK%W|{ip8g= b 9O&"3_)&Zz0we'@C6wUD@# *p>*ӗ{D!..N'TdHu-i`s8QqВX3uvBS@;'48 g@ҕfO}ꗷ3ا@qWB#ISB j&:"eiib6a8s\W;9 `{!ɦXk,( Aj8.LDN|zgDmv)..U$k!#Ήs#uZ #ɹo#V6,Qi>La5C6Q`oMP50!a:W:AVȓJ=Œ!";SmhlnjBv.וcya,K!ݚ;&<b)i5Mr`üGf7xE>B&"@mO̅|Քie{NDWD@ sA;T&M q*p QǵsigxE^U-jcҜ8I8I;jq PUV˞s*؋C A`D/UB8q=85yWƐsvfffX$9\|rJZ=caÑ/㝆3wL^Zp_%Ri.\} d;,KoAI,a}8Ӈkr9J3T~n!1 X Ȱw`퀅Mu')źb :})9Rhgcr1EE)A^ZTBkaw09xDO֓:_?zdEf9Tۤb~pZkxA!eOU' c'nav\Y(SnzuJ:3iUM87Cd/ t.&2al64+S*#+˧)C<]rNߧNr5Ow4 @-S<\;MyLJ˦қS4P Ah/́TuA>cƢSHvʏ25*)Ch lOHO/S]M]012Dǎ-|&%s/+Fl,2;u7W@FYɲGNwI 3E[1ȑ4ab}N]~\l9?-!As艜{V:RO==PW3VM&i&'egFZMM>$Z`I#"T'Yrq!TN ] |Ir~BgS9=,[Sbh۳"Uy%xVR ꆉEAp]MViڛ 6\vm.~ul#bD 3f -0 zm,s/OkS[͝ >S,{BKه52s-Y1Vqnd۠q= ,|F9)'< >{kRRkr"u,mO V^Z&s$ 5Djw/!vFC}hR`Qe_e'\PQIK 0 &ޥs- `%pE9NiF FCñ&A!lUfX $9DIHvd27g,]NT+ܲyô2^($dHs#=!fJq<̹}i_^]2j6ouMuw B_`y`j< ]UHCy<`o; ˙><0=P[&0A,[!&BD5)CpYşmGyggOW:>0`G-NNk0 H)]0O3 9xc<@D_j3E(ކ$UJDHW*$:$/3Ŀlgogc9/jNe+]֓$xOiazwAO yfdtnhvVrŦ?FdWRR"gQFPlJ>~Sa+[9xN?1F_p C'*PeKK rhi1n W`jIkݜwzR$5oCBGF @Hl9)]u]GNaNQl$r?Li#iˍ62sIp01ˑ&'G@oQ.OЃ@2>y,Z;Wo~ޝ'CǏjDǍcӢKDLfND^ \OEr= r r1Ñ?l۩@uPfksA݁T]lG8opp<ߥ&:LGFi|њX2[ﺀrR뾵AΛ!ucQP>wV8:D\1dƉC,y^:B nSAŖLG0vM:ni*-Cfna {B%6J}^(`ƈ(Cw?-ԗK1Cƍ Γش&@jH[/ǎ46|a&8u(fL*eo"  Ӈ6 PN>A йXrf'Eސ 192ѵMjEKFݧM=Y̞/-0 P`]:kLzPL\c*׫$oˆs$ޔDYN(yh Mlz~B|Q\ Ι!Q!:щ̠C>8!ߦV﵁h#Ĕ"fT˝:Z"@р:=j cAj#f-fDߕ20DxU"lGNZlAʣť_ o N&XWI 3;쵅{KygLZtf9A̎LxH*" AHӎ"LiKKl}&!pg1U a&)e[\] 3ڑj |ȧg2xɍ7Bſ>͵Dcn$v\u~fK&;`&@ɓ׾̛^$@ɜ>VtFY58m#"%2s\  9\vBl Y/JLH:L+b5 p*sObҾ=9jlӍA`y`<_2a%2ܶE,rY&N&SҜ Ld "+D_پf{W5ATPĬstmV$}5yfoe!w}r&2= h (+/>Ch7~191hݓ">7ǣ'9o׀"篃 ͇ O/$ Si!<- o{D!rED{)R @;!f41Q> `"L@e=&藶] }N k\f=c:vgKm-۞H [rT"L:2*FkԮ࿥{~x,XărA׏w_z;=YLìK/i-&j 2:vY5E!N8g6}w M!RhFXB7<l%.|Ͳfinu(ZD] <7BkiʔiFQPױ>H".'GoDU_$8qdk]hp6mL-CH平/qّ9dGSKxfyۿ ,/$Ͷ >dŜ8dr*´XBsR?bW>W{`K۫|mdQygB^.yO {ʚaf;cI 4>LΣ4 `//^ 'r, c!=­to( /lxLXܞ4)^/-!`&GF& :w%I `*&Κvg?귁,68E. '&T6+*=s-7>F`H|^}M54 m3}4)| ]LX*M$d͡@//e4>PD K (=dlX\ PԿ_la I?dZ l|Ȉ>0;kIb@piIwsbϑ'SBkW9g"4}3r?YR1/0^ݻ,[R~ A{ !֮95`R,AْeGpMx;^f&!6V/53X+`"3-oki/^w/5^ܦy xQ9[yPeA[ H?3Pxr2 \$@m) ʌXm  kC=cg$nr; >N9QjyXK(~Cu  KLw@¥Z&.u0z)-7 `r<(Cki ņɗR }"ta*>喯D04`ޟ|;&@ņgK'C淍wܮ*jFdKdu( ּ/%7r 06L Хeo{K䚇ZWՂ,xtqlI۳{҂iQ/x$Vٷ|yA9c[1P2uW17Ӄ$i#FxwyELʵC'3YyU{ulÉo{yv͝X`C+4vƦ@N&Q tאYGAX'y Y70@gpH5Ir($gy 0WDPEN⻯qqB}܀Hq~w4OrB7CrLihzGph  E 1*" f;^& S &A1c< C8Cc ?1\X6"?bP OOed>:0^o rI>x/ wLF1B]#b%ѭ&3 hקy7:]uinX0Nft'E"#ZK|Ofju`ձ}"@){]$xL4xZ S'A G&Fj݌r%geeʖr~~BhLg |H6ar7Fŕ7ӥw E5\yLN.8+U>:8mJ)hWZZI1RÞc k=cDlBAWCw~BHI=`q6sj,#>,wKyY \,o{Q ny>(+X:Z6-_7zH$$|`V;ͩ/"@u,B<_c%]8UH?KX ܃:V3PpwG :A;;!#M{u]Sc4,6/D#l\2~ei`!Q66dM["~h[>M:*d޹X~L@6Ճе\˧PlqFZ0IhxvcM}zy@.H>0|jkab;X HyzDS&4/) c{dm."cUE۪x9Jy'|=L*7(GT "ukA#ĉ)⟿ Xٛ88R|v57yR}ݿ,h>};V_߲Y 3;v`MP;msh?sF^B2z dTѤ w XC3{@n6J[= 謊eYA-o|0%M+R;%c9\7E-R]!"tQvЬ-3I'F4{ۘrt vwۈ0}KӼ؈u͊yFC%@G'xxiTڥ5'0q'0Fߛ=u_SW>C`B؛f(Tf Js)l:AxHo.&&VXk^]ϗ'Y_m|`Cz/[ӱi$x:}bH ) a[uK7擠Ns":=MPfI3)߽'i&q, `ӀsX d:cqtZ0߃_|$Í!5=y4\Z<<2yXڞEs^coo0eBx&V %zGjg1()z& 4E/ga[zImt@jץ^)'}[ұl@ ű#P[cFC=^lѼh(]Kbhj-m^ , ;[ޏUmыc[_KDr٠oi7Su.ah4a|LҪIL3wAIpOk FWRVN>0S`@ ͞uKnZ_3Y3=ny/~k$eJy]bs+58j>ݸ]%6t(Gر$,\XJ@!j͢W"R B-glDÇ%`\>olHMU:'^AHf|r/;+>95嶼=ũSh~U埤KFEǓ6l/2hemY e˖E7:TdmށgreA$P1Sj]:ƈ{c{zL'"9tmj7 FmDcp~Y$[А4ʵ l"F|~*S"lA*0mM/>@Ǐ? Z&S ow o H $)mMgPÃwNqu`70 Ⱦǰ^NPI,#{<|GL/@9T!bY/*w["7,_ǹr_ o!2\ep h`R'32cHߚGrNER0d>M Ŝ/#ã4D5׊nx5z+$M%fA֭kdId +; '`eSiLlG8G|JN5-&_d+ T0oTy6Z[g }ib&@ sN336Ӧ-fiL=to, ,.ޱ.I 1VJEң<%vO2J-xzyB@!5'3֛rO>L4|b#h.S@B(6'G G_2%d/_G&NA18&A_ʴ > Z̻WNJƛ0 ' >F( >EL}ɝp$@Nk:odthod6r@v?Vw`+o@ 0ժ=sȰ^#Yu(vz,Ll2z 0c1#dHNfYꁳ |Y@ B.We , @ 9I2 4]xY2KfA aYaoJ9l ֩]>[wiދڀ7p H_L\}% 0v@]^@2"Tn-Ws\u \ yl>G >[/n Fe7nb;Y:fV=@G)@~D0m KIu $64[Be+gՆ &PeUުЩ||A'u!K\״g+p`ԩb> @׻kOmbk1jSvR+I^WVǦ?$ˌe^d  b+y}|gy7i&).%]uxl9DT h DD@I*g }m}z}WϯJ-n Ool duѾ |n,SkB-Z}' 8M[@?Nj^Ϟ* ,U+lf >vDa{ K!;M訠Cimf`MpUj7L*D`'@;@PQd0{ۧE DDbT 6S&KE+Lwy%q4 D{K,y`ab0!i *M `n)+]kn+c AH=5͆ޮ3X]F=S랔D0Mp~{:Sk mb$6 Ƣl%(:=&}q:~S~&W>xŋh So2p`PpIf(~|X_R-F i2GridFqng-(Z%њO ~{9~`}lEwB='7o.){P@$}}-f )h !-Tp$ٶiuM?ے;E3$ȲxxH ȒAyR(*HMu7HAR}7`1as1v a0t3 HbӦ6%[yG~GqץG_|a5 Ax]m!C4h! X@R5>jC5!$odc"Yt73{$H-) : o+~( AG1=h= Pa pHYs+#IDATx]iTՙKU}adG@dEUMYBm`"!NL 1df$3yTW*2 qu[7w߸"p;\;\;\;\;\;\;\;\;\;\;\;\;\yJkKo>Ħ}W@m/_VW{`y7?u4:yוQJN[p矕x߷W.[GS'y; :lLhP..NςXU>0l]Tqԁ8q.ju?lup[z;5Ɯz}* iჴAP^\1ǃ`~xCGg:8'`RGU`, T0‡0`} ru`X"㏄߁9ЀZ>dPtHh {6 0\+ifc&۵iՋ`PǾ|#2X.ӏ  "=_=x7n3 @@F0,=F]1,ay]j9n1~&Y7޲CcQ~g1U9ic}F Ow2  4 InhtT|2Jfְ 9C 5  7=Zx`bo), Va < :.xoC:G`i/xğ٨\9`<0xnׄ)t~ ^zDeL}As`RS-1#kEρ:Uiw'MGҼI&a닼SqX|L=n'?eaf7>aŢڶ 21\|ّ~T LBɠfs6EZ sA- c#XYB_ud#!m@u+>ϱ9ksU!+ P@p~ZR. ҅;۲Ԧ[9z.0Mga([(G>Q)].b+<5盛c_ez1'CEkqAIC}f0q.^JL,gqM2)`!Y89?,s2+10TG#&\)q|vylz`xV@Kq}C0>iy,X}7Ko;R >Hь44, ⳡCEzq_@ƣYXkT|PÌ4P9)49~6 ut; {yYF6)1qx&L3$&C,{ǖv'l&:#‡aL #+_~PiiTxR,=J-yE&tFB!'=zfIse xK YM>`Npgoc sbx )a?m7LgY!X֭2 < l# u5s|a>tT{11AҸʧEZ=8I:gayr[U<.W1h =8z4qQìX8FSEI ŧQSfKkO6nF‹x*lzc|Ɇ,^FICGFRJbFȺsry):Z{Lk*̵Pz ƭWc)&BHs D̠s綤չV Q^(io(͢v,,Ϙʖ.*YaWo;b0ŠKsS?\m|"r6'0ƙE]oj^BA$"%؈la̱|a=&K]owks-Xs'ԗWOs)DxU*KWa$7_ ϡXi7upn/t ~5!\6ͤpd,ɲ:]C:Uرt[|*molPHrO,P$uif <Ǚ$/Z0Yjlj%d*37 @̐s-yr'/+{/mhW ]=!tyThW d|9}fM 91OqTf[cF'@osc/'ƀڙzeJ%-獱P) 5(di*M㑳|M]{`fJ L8L8ynAL"Ҏ\5cѢ &; p+ D(z2DdN1ҷ2*}q8 b^: 2>H1~_s1H[a xH,x)0CM=cfs7}>Eb^Hh= 7g7Ny3W颏Bf J2];7|R͛RM?-W{ԗQW׮MykZ tWYq|2r[*2+ *އjIC'M"uTp> DPEALLƧڙ8f:f2LOf_V,w/ <^(_2ڃoRe!$eߕKϯF\WOܙ<@0@zxBΊT`h$Z7(" H㸩"? 9AI̙8>p0 ;>=)n0,1B LeZ10bm\Zi2U>+Y/8:ߏܕMG0Daj:nıl@& Kc"Hgg}+ ͼv8x 0̵>]x;L|qUI5y]W6cQs6޳6Go OSM'oKU[*: 46:<1DF,oR8a/K[%"]$/ t#t}h{lx̻dD< R{|d*YAXàa0ƀsF ޶ "F߸4p|Odڤma\ <%xvFx}D tp  9FgZcX> |5Qv&賁JdWKN"N+ڿmaL-1C? `[R5W5zt Y\ ƒkt&ohBk$jgykKpC4-b}I pHxg1jSbg&3>wxoF9nY#Ϋ_U L {$߱8~ZO}s/xls X)`}`_y gtd XGF"f`} &t!f(bmFT1!A1uNwHOx >7HғYR&>@Ѵe9=&(RU Gz|ylzX*#ν&쳛>2bPG9#<^ ̐`J\r28|FMoc *!.Yxr=y'Bif#e@ 7ux NZ* P&"4}Ԑzǰ~u9 5utPx՗V^T?! >_z;oqȉbPJ`N IoX DFFgBC0]hb|@0N{TamqRcԊJ(:#.pKݓ #PL9*-ˆb|u;^>`_UO,R%~dEy  Bkar#PSAf`@Rĵxz~8 ( c> b3`A#R ?V ۵bPw( ,ICܳh; e`(CnNSCbZf I6ЯO*M?.SmugQlMT Rhf9gXL:DI,dФZ +M`r[r,YJsE'>KlosQaQD͟V^СnHzPp.*HňӼ*c7E @.7{򹼵iYك#^C"IMoL7>tIx+ZckE_L݌gK֘0 Xoء5z];cJ@W{._UGhj d z$ #mQ Fa==F@ZxTjw FD:2GJ0Lxbmw¤vS@\,L|W{gtE,+'UUb7Q3uw緒*_)ߘTE^M`m A4zKV+3Z!q" 3*p.1L.H~E:)՘lһ+b1@+ +LZ9=dTBQT{2Arql`yE&{lԒ,]}&Զ1uUWzy{*+wlLHԁbN8/w?ظkSޔXv=k"a@B)de>,id!#)2ax2$Xecww҃P'yG20[ü_LPer{VF #'+ow=o'/.{SN6NX6j?=BQUؠV3FmJ@!D!bT7"e!nI2茐Y#Uҫٰ \)_91_E@`8 H/KU?[B?-W9Vf^XIk{Sy'xZfqÂW}v{YYh{ڦ!#C7 i`:r`:49k8: \n7z 3J]TübtZ@j ;X`&4wSB=( -W@?~W],o ߚT?\R5uLN*vF+V̛Vu!o(idİ@R!EqDj!MqQ A0N':42}Lx8Kr0B5d)73"D}~Q.ehC ڨѿ*{wmkJ,%ac@#^NSǤ}IFpUON cB3g@t♍+"QdKo\IRpHuEЭܧ=h΄zxs\nU 0ï!yR7p Cj9`^+d v@s|_igPCHk[v%[f+gGD|PJ;A{QmɨӺz۹ &HG-X!hazς t2n^Dv&Ҧ!$U[-~e CQ/1M+o~f!i7Ϗ67~ߐ#BP(÷7xZ`e-k$b|O\"+#( 1X;d{9z?V'wokﵹ~$Mh; l b$RJ}?`kLnuMy|gjdu^;H\?ʺ.0Y? } 5+G4+0s0 5idP-V+><\CIKVr˱$ #H"}DeLo:1IV){}Ln=-RUQ> ک;N!\=F͖c3%i4-g ω +e}O s _6orI[ x7[ǭ6@+D +pl]tc9(~5 L&Iȷ8@jhw};WYVwǤ Ȳ(՗*{/"|oצOR,fvo5]>B{kQϵ@bՑu5drGx0#O}vw]Gv׀i7LWzk-sppp]pppppppʍIENDB`pybik-3.0/data/ui/thumbnails/Brick-6x3x4.png0000644000175000017500000002150513137372562021002 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+"IDATx]yյΟ1BWUWl ;oʎ۰w@ԨQQqEpTd'H45fKL|yzU]+ 3'tUus]nl;{; 6`6&m6l `Mlf6&m6l `Mlf6&m6l В+'kow@ͯlS-cSm259;îs;Dv[ӷwGǏd.H[9& "#Z; a3Wdc5Wk1BiBb5g-7!2>3O~}:^e]NZ< %lІ pfϟrKgiEBq~C RB+†wXQn#m Q{Ha5?B:R  Wg%:cInQ5lPSY)"۔ػbw؏P ^'a s X~+MI pckXx$"EF BVG+pvɀ9 2\dt""2 [sדtKǀt:wt)?qYDxRu h!Ua ݉ n >!2,H/Pz%_I;ztstU$"_5?4Ъn >ki\;Uzlp=o ^7'D(beD,D,$s=\}]|Uu{Y~&qXEC5%N 3qۈ$R/9%"r"@νЩ1#~N?}mdeUс=L纾["H= f'v(C*"`"҈|nKh6X>ΝNLm&"O$ 4鵁A1D]2Og2$ޓNAt sҶt|[ZP.ui,?+!<ѥW$qq2{yw6۸qZND.L7D]9` |mgM>dOx2` ̷jM|lYV>[c9 >o#2 kF",<"^_!@3 5R6Z,'|5\ÿʶEBAC7n7ࡱVK702 PM$!9D] `UVͲ; ,2 b$[f* *,ݬP%y{O-/THK2tZD 8[Hs,&PMdKʹ  ׯ9D&Tq`cA+eiY&\?ef(btbN!iՀP Ofy~z7 >ȴ#<= U7 C12"ýt\ ;ac;}v1º2P諊U/gٟ#yyEϩ= /~A>s+7O?ޏgi(ļ<^D88G4/W6ޔ^o,K UxɎOeSGv*{7QlCA+/,Ձ.^/Z @fl8~\G3IIMXx֎fg@Xyەst!Jq}@NPj|tAt!`;BK¬UBkzЇxV#i{wo>/aW:tN{2gTG3Z <@])dJdef.k (ǗH3>ܛ^n" b$g$k 7//to߿/>Vfy {Dj|m3PGn;3WzrK"߶祸P2YkϪ(LdwgD Ye|8O'3j[V SXa:8xsZ~ӿqxty0wo''&i)q:˕̏#kXZqKL49uE\6C~e=ctqto流ӼoJLm1^2(hɡT.7 qVGMFA]ބᶭaf}TF8։\v$Ret\-/JEC>Γ d)l#p)0g۞T|+*ydWe9@;^E) 17঺˵(5䎓A17p" ~IF:*KU6zIg'8:%%.I*ZFr%2$U$ >1.d)BKeYd詉Uz(NGUb7yH#u ^}5`~&ْB~}y$'Z\4*>\=|#%BX9M2VECw(t_5r(!X@$04JL^#{cLFU]cŔw+.I,L99n׿*g5Kֶ*TEV%pX͞މEh*BD.BC&% &Hqz?r͢k$Kf o`(~d-`5 &Tdko3Yf}Kb0Gab"':sL`s6DVI% W /QCNPO7dc-V~y^Oeptl ߭s!'2A&RTX:C@` y\r kNw_icşؖFo.eS4G/`Ba 'A` ɑ\/PW<" /;RxL2`e:IK%HO|h@Uz= sEU 6΁.Vo$Ŵ$CII +V;؜,#M{ `w{r*/}XZ#`i98{ceD ZT!z$B=iD+к52 [-=)ρ _Cv7JUAƾ(;@so,Z8rzY00jJ2521S5Cafձe.1\&Y r9MX0eQw02 S9G*C,E_En^oD|v]_wN)\@{G*|+: ~j֒4B44%@#2ɻZ7һ2Uk^d0*lzra* WfO5w|3n2zڧtB;@ x.VB5W3$ ?+8\C'F?!9 s ry^(UͩJ;#+G6d=dyt]L;=tεN UnN\? &!U&f|JA'Њ{~iCxWwAP%-\yX9tj"CòC iumT7pn.ڳ$ e&J=74gy}u}X7tok4$\{=^nGi"&$@x?B:ȣxniSl\ Ccr$-$F3RE #əNB$\|(՚I e_MߗP6J!^&꩛DkSDCA#@hT ŊvP 8wp^1hf "r H^ۙ)e:Y6xPsx%G|$f H4Ju /4e0`ݳ*T9G m۸Z2';YDpfP* " LcT2V,C̓UߑFdʘ kg(CC!h(2 Jg-kJ)ػT6;J.Rp~wML9{' $h7@!

Nxr$] E<w.^Rhpk1߂3K50y*Us rQWjhL ^,HѸ;R:D胩Ͳ4Kv)5,v4R*‡ϣ] ׮`= >;\6kg4˦\< L#׸1Bwo +Mi3{]'? "w.R|@("k"ϋUI~6q(OJػ;l2D2T( Sf!$IBKhf)Bz! Y4ޤ 17bJ&V?H@sZ|}(yp^{2y)50 B:Ǜl~X<ئC Vdy d_(E6>C\Ԩf  i^q*%"D}RBt$-wܟ]/_d`|U9?ۣ]wQZeEkh@`c7, 0B'ȯpc#/@  4|% 4,?.n0!BdS5&&)BlS͂*U!rcuI%>=&z7dKu=p]b'πVE|GB KL]Ӧ|]ˉ KZl>rT(R. \a'oALL ϑ)P2 NS`XD\UXqq1""!v|T,WBw3MVE<<QwkP VppN!]{Rp:zR :OϽe<K%\є]EEqڗzA-a%q}R^?y,wni{K}s>>ٞ Wo  |cd{xw !G<ت  OIYj#~HDS7\7HS8D œ1q5S-S?h.rJC)Xb˰50F!2h50F+`GDE=C ,Gʲ1\9ch|A8zv`@N*C Qpz fp|+*v<ͦtIlp1q?qwiN1Wȵ- "p38@7Y0/xpEX̗L%$Q͂(DO0'\{L,]d0׺yQksի잕Fkk@X .g7W8Ok]Mk"c |5YHxW^j+B`Sx/\>)8CfI >#3#/2 wМh%3pLDqGnx!\qeFj5v>1?v?_۸'3DWT4.w5!K3'~R JxX" n۸L=Co?q'9=zvv>ٓo7:lT^} t$oМ P5jnj`SC? ܸwowA' _S{!-"٧E q9(ylzgs 1]OEǾ02iΜ 5l\=e޼ NH=zY_5"w|∼NVyY7  b>PӋp /LLE8w_^n qۼ>ĸ~m TpZ?1j˚vja<X5,5 1WϦ{D Bӭ‘BDƉ? Tpu|-ĝ}Y >-t-k_~a'jN7KaE1Lؒ1Ir%idWnPz!QmtEa!\)E|樗c_ :㱕AvzQϏJ.6m 1oT^ W14gV O()#< (i``bBR!AW'Jgsy= _'t~K|bwS6u?}ʢqAu '̘G֬+3W6 *8HVi&L&y"n1rI׊ 8GxB|ڑg-mWFRxL4jpC$& W 廁+`LBR;:!0ReSz9𖱯k|6;* 3Fgܵ%V\4W'zzZ u>]=N x,b>eg3vʱc}&)^dԷFQ?qEMEE D*!UGlH5+ 4}Bں7'5ȫ*+Zǥ;*3DPL( D;ֱr0 cUR.Q>Tv$I/<ژW>auk3O[WVYySAшCRfc*8ȱv%m #%q 5NC* i>lW/5Dcf4*|`!WN\ vwþz҆=/bq*Ecl05cd < \PA@lldExAvl3ed6͟] T:XêgI41D$@>ugpƩFkügݣԋs}Cq'ԝ?ߒzyu]V&ˆ[Hptf ks _/n-h 8L&lS·6h8ݢxdMg@g]ޭiTE$GhleGCIa pHYs+AIDATx}w[յcIWW]ދ{oqǽc۸ T6nCs8NH &!佔y%o}\i0ܟ=Օtk];_=ZoB+ZoB+ZVh=Zzh@ ֣G+ZV|U4}pjدv^wgg3CqÖq#;\ s5aCH9^zW3Ǝ'[Kvh5`>%}3߆zۨO-M>f {hE+;|U@z:Go&=QeFoe0|{a!:WE ǍO*G@OF}m{` O y߹j+#pF%` ǣ7C8%pJ5}y4r9 a#l}bιϽ:== ׻7_v~]-cnMӰow}x dFW#Tyς*:>xߩ4;4w!s<?/A;=Ʌa=@ gQRb${9p܄y L+&$[d$~ݝ,J rV?AKa4s1 88Xp1^x K3ͫs=LC߯xAKp]׍Πu|usjvS -}G:F#:9ln4}` { Ҽ0s7yLy ]?Dnh ﮰr ~Bf4"ԫSUhg`aUǶǏ@vh1߸yZzWH>&n(z 2T\XcL6Ux@ `8 &z"F1`3)%"-"  T#|*s0(|}WiW?kFBճ77!COJxc 8A^3 3\ ZDL0 w,= T-3რ]b` EF_ hZ,^\}ۂOl102Ń1y:ob*@X"x]D0LAOn  C44J7>UD ~~d g͡Ǔi>͜9oFu i1/f0+͐8ځj?`2Sr3nCk{L3{2Ll£ O~ѯҌ3}\¯"ګ|sGq5ޤyWf`&EOcDY= nKgZܠ`9J_m ˳ xl1LSaa`Q]\|n0@rYrplCAna= E | ߃wZ B2qx6k`IAڹKZG¸ǐ"xͷwҫ"x-KfӇN3@4:۵ˌF3˜0f}(2p~XTP I.%=e #a5M ldcLiPBjvl1-bƙkbk/Ҽ&o71uנ%]3܊0 ׳4 y|j] ^Ui fۨQzzdQ c!Mc?[m @rktGa>6&^vjqZ@zQv_R4CK*;'UʺÛTE6ӭ0X el}&_2Xk op_vRTf,_쌛Wh8z+1u&40 d,F@f|. 9d ~ {|IHj81UHю ɬGR64 .@8/Mf5g:x4)(9e*ʳw^(T_dqmII0 W G+p09|j`hx@8!((rL<A* c0 _kk&0bM puXyBd>{x0={X4l/X(shfXGU_*!S2+ρgμ&|@nXۙţIMj 0$;oM6*a"tIy~߀mϘ0bWe}wC<#q.?Dr4Ϧ+,ƿ~^|OGuX~( P}uT-8$۾4l:ŗ0#JDy#ԗeIm F o.ӆ#3J Rcs:!8W`g=xM+| f&Ϛ SEtoKɻنWfj£# q>!1xkF&A70=-BFTѹuzoo8V{x~O R2NV&rEa,R5*^nVϫPz.#k6cLyR<7Ԁa.!nV.g1O@dR;`egt\ ZpY6i4:TZ;ewn:9%7{ovOLTzH!Đ=,M7:,e1fIl‹͐F6mn0e("4btF:=o7` }t+94^VP#惸F0$j( _ŨN*zE/ g]*_ah`}mUN<؈赗茳2VЙ !=mF XqލFe07ʑL:B񏚬S1, 掸F XL ZAlD:g]Wĕe!}!?R'\i*^(miI<5Ε&c<5:^` /M1^3,2Fd9IM`ERjJ:Lſ(d9|k;KZ5)jQOن F)>C)~YϰYZu۪}M\{"_^%Wԉv ?F_y8!%3=c/j9n*m4* qŞ:xCH/t,ݣ&VIW6 _=b3mDM1q0D6\`H)^_ؽ#-M&8BpHɶWu( '?P+gDԱg TjKy'DO*.1 VEkFպo0Cn[bcٌ0͜GLa@} eL2cx!YhT%BUa$"B%?8z_.?}tPMT^Im;i`C&NixTk;՝L!k\9 Pn9r+=a4n?9sFqxL@={jceiufP⥥5J-opAa!hVv r 8@E00V;R̃i׫ySV#D𳔃鮒YMs&^uP`H3.~_1=^?WqNi8_E[˕9l>،'lGwBlwRcР'3F.8hp[ƣ'xӕtVvpiq*hd$ Ƥxt82^nY \3RA ܟծr]Fm%G W~zecj[W8V^@]6;t~!P@f9>n)/2*W lNɏd6bAco4c}!ΣPz+2lKG= 5Fp- w7ƿF>2qQq Ȟ!c.xpW^1l=XmL` nj{\A 4_4" [yݒ~e]͟mXP[ŇN 7fN6c=(^3tI߉\Ye=p@ @ʥTڽbugZ;Ò]yh4y9'7 0lrxlAG)tK``riz- qf``=5Aސ:%v ?W.?qh@]ݯ,VϊWc꺥O89R?#J1}w7=2uaͲ)= pܰ"Gڴ|=Ǽ1#>DzgYʄ29 AcqSlr-e̙s${ n6 8 ʺ;CK˸zJ9.Te.Ȭ,5k|Z3+^~$OyE\=wO߽]~f,MYVSU31"I?C?`I6p&(HxuÜePvi5*"!zv}B=`9LҸz▸ꍿ/(JulGe buTN-$&00;3Mqy+ƈ,%8y=47f lt{"zo1yYd%~~~9/?gpB0\bj]@֋l+3 Щf*ٹa&uq{SZ4Uڕ=W gFԀ~†\5vXº/]9Zҧ9VTbOxc+SMwn.͠/O,7Fܜb {Pƺwň~2U:ײ8$gG4l 3DR*͝Fen9VRwVQ>N9GM`e޿_"!:W[HlUT)HoXQ=\N=,"at tO *wK:fK5U9Ab+^C ^i,A3J^B FqԹ le>i9 v(CFBm#Chr&CX'se0b.yX*f5o3T#!͑RF)3of=-pLv6>PeDu3z,͙lRqn(nDGrOsmZYCAK =jj~*>F_3Uϳr7ë] gR;;,ߘft,7ںDgt y"^GlD!*ɤ頢91bVaz,tT5aϤc0E0̕p ^ᄉqWz+@o'FOin^U?S$sK3.oӞhWyU H,Cx 1sH x_UQ YX}Gϙ)qv)As 7VY σ>[- 0S;Sp kXXA]FșDa, 0TYݱRz U~HkW=Q& оKpܱ T ыM*bw򊗻3tCl}!NeR8KtS,YfKY, ȚT Ȣ KLiN9Z1q)Bو1X{us8|T( g#1хa+M1|aٜ yJ}\X+cxAEoK>,tGjgYRAP`ȰB1F_CazSvH3MVX@g#8ڀB#`F~b τH g\٢YuVf&l 1)` !+n|k?zVW@kß@FwZL3<3"q_O ; Oݖ+'rk[Kݲ2]0K;ȕ,`E`xN55߆hh2?j HY#cq (N0Dl2Z}DN}оATJ"2P|3MݍaaK` !6#5r0uX?=LC ,89!Y9yjK$]Wbs|;sՍˣRoGOΏNɐ B+\bĮC[54k>CIs0y5GXWD"SDos&iU4P{]|إ9Nx:0\.7q X, U#%a( =I34:j`[}v&R#nYAar~T{UT l[WEՒ)aJ}Pܿ>>+cpR$;TZ3uD2b{""/o| _ ⌭R3Oۨfz`Yզ&]9;PDf?j.şzYr㌐;`Qk 0PULffJ0!(G=F= ~[sd KO+Vw]SgO\ikqm,~!\MRGdNhTxWBcCEԚ `h irA2"fx<8sz=R 8q-3, }Xdo7q0fe:5̋{a~m+|n_X>>T#TݔPK8$rRbZI)j[G2Cf{Avد_htmXeiSޯu JN1B=[bGMoA?[ xc{sdc0fBk:2­CܧQgGw ׻_:h|,2j~u,a`hĠ*ԸA'ZhĜ`H @XDLp(7PV|675مp"@hF"#.sjqz0*M")p=AEq}'PmNG2 xajvP F;>~JX%lAgZ%}<=$ lΗ>@*~N6YI+{R)׬@zx37>F!ӛIp@2D(j<b$Ŝ+Eq9~ 59f? >[oz#{X}-}c!{pjAT ue`ѰW==(Y"xXP劐O*_4^! IBZe "c@-8yӃy &v!t,2!bꓺD8eb"'E6&w3)q*A/p@nƧ\5c{s4nj)Uߺ>_?kT? O@d wBk&AI@ zJ5$kd !BWrZ2oR0_W *ia)2 5Cqm>!Dj4#Ou('՜ pz:"Ƈԑ WfQL͛T]`= 9]0*6&1ln\Qw8 wfz6RP~dKN{%SplaǵԺgz*CL d)9w+K"r]. r재/vT-ͥ\Ͻ Sx2 hoyyEg$γ ikb"M zϡ 6.V\Po?W >!{lZq]E㍥LSrTmz8=q%V(¢tә~MZ"IKX,Bd MT? H"b'm+vopَMjQ HgIsiG^ Nz0?>DϳسbzHMR{@\8&OfG@#eʠϻu- ՚iL0ЯzW:HʚҼCРd;w-Fs0Gz0 (/[uC\ͨCpUDtY=4ſw?0hǥe^dㆆRC̱]; 9lC#V̈ȄחA 0kaRA|-?~k)*VBsSzr6?fAj,bތb*|- \= Vf H:]_pE:[aN2`QI! >\E߇ޥg[8x5Q{|8k3 ŞM0,8yi\R r/ث{T ` /7{> Yھ!GD&#|r>m]ܫO j`wFhIe:ᗰ#e|Tj`ppq>2`Tq-c)0- Z<ɘ:`%8+wu@{S!"xdDߣ7&T g(vA6qU 0GG|owܠ DU|xGYd#C=\6'"m:\V7u"[ 'I/BB Z%M!LjD4۴w|23k\Xz& oJ!d!e!U`F|~\GtN w&v,`9GˡN ipU\<6@[60.aKGKE=>W=|ztg61""Th"ۀ>6dt!Cg :#c.& 60cV JI:ec'N&L^G C XH D:N,29Z=`F%b*?SGYAyTOrն̧^{<_U#ْ/,@n:v)RUȌ~ᅫY@c)<|#ؤr.U]uxyjߡ'~->hl 2#V 0xsAtO׆ eo"ɘ2Jax󡼠 zt$ ! YMFGJC:#i(e0ח"HUHJsa毪o '6*ޛ.xO5]ŏtO{~XKʕFѢ!cB5kLPAT}Eu'c- /$D\1h:ŶPuRSaXIN z`,TVpB&"-MUKirT19%(pMy#x~jaSC*sc_lq7+WZz5|ꆓB'?PzSHƼhfP>B(>h2U J8@JM&iz`{KXo`R9R2S6(YzVzQM!e\/-sЅfCޅC޶:W7o5ڨ{ԀvwT.U,P˗UCˊg!|\ׯ@BDźE5%d8>S[4x/7Fו>;Y-{zm7)0Y*&t/_Pjt`zvź>Ac˺G?bsKlv I<e"_V3b*U@4g{ey>{^E~r??PNf o<]V,dn}B'ͩDd+9:Hр6}Q@LvyV ǖ Sc8-`6BBz`(; =H43!5!R2 |uKb0(ub@ fG#ӻʗ9ַe;{EIDe 'N$"]7(<*k Xm\X闄_2]'١7%`6rr9 >ȬB*i)`&T }3ҬK}B4~\Qe<1~.6R;gd#?8$|_xV+9AFLLaL vN Ż]"n`nX7=u,![>B5\+)Yfܾ1P(uv v~3l1;Cy}ByL, Q=)\?oU5xg HRB(gqIHl*EsҌ {`-9ɿX7jǷZl ߶:*˺8&ƅC@d}IEU'x0g+8/9|r *w/L\ט֭FK|u!Ü!"їځXIr\cHU ib$"i ,!́i94.C}L*L Xb E2u7(ڄ_d:*'SkS0/ |t0_yH{rFCb~eS '|b͊:)JcH!s1zşsSy~ OBIxkvYhd!`V>q 7hx,o)0ӀR Z7q4[@~7RKh| Ͽc>aJ'?˘N/d[lr('7Xup;?b4էe뙛/o:MD!ADowq$Kd>R%ʑQ߁9{x)N&QBfa~ :Y̤xtF;!;Tqɬp9`'_عS4 J&NO2οW.vFs<[zRp{se뗷Η=_Yr/GP()C73PzxeIdri ZF"6ƒn ŚYX"Q4r^ ]R\QE}+=/O/ټ6oR\38*MA@/r'ڭ6ަaY@xho卍$_# cshvqZz{cz Ԋ`Wq{ɕ͟-?\<p{ [~/ǣڲK{IiT:WNu>eȵCzd1357ʢpqHV!:,HN DEQy/R̂wچ6rz9j}3jAD]>'$ #nGPst|;PDlDz(Ct3f #cdn&1|8i_jC}Ren<5颠4zri>^ '| S~ 7f;och7z=3V蹬"rM u󦌙IAjnB R瘚"IWFRDc0OTñRk9 ,:<zlY~ܘ#˾]`8ة(CC'4q2AzGi$CPO:g=g>UJ=)LJc 3l;IGk-[Bhr+7N s 7>RjZ'%diO3k !̷qV%c?L R0%qNA#bly3/0!?TC[4Ա/p\!jKl5_Z-gbecDxȹ(ڐHcN\4qntφO^{*Ku+¥ #O:@$k"͏h$38nZFU"##W>/nVoH'hm+kdI*1ߓQl={YL캖qbqfѳ(KЛ_i\ľ|-+,8Al$/g% ?@лP@zx軸.dt/SOC=#CEl8a);tBBxՙI_טE=eH}]:|k{l%2)LkDA@ZwlXY;۵@4Y. `ᡳ->bGpBc#hJY%:Cx}KE×@J=ks4d1(AY4}@JxX'gXZ9j2ҼG)#R2ƻH'zٵNI`tpa]O\@VdR?zcK={`ƖzH S(O*!@ A[E: v*i`vE"pPE:MY8;ez价~U-ooR˶[_0Q'pČFJ9fאHH3ekAĤ)6"q?V>:X"S^dπNmk dAB"'3M2=scL%c`zݝ# (umKWpNa pHYs+#mIDATx]y|T23dJVVN l K % ;"X>QD,PVv!쫂(.mim~_k}ss$rC?ds9g~|r9 &I0 `ISLb0$)&L1 `ISLb0$)&L1 `ISLb ElGXyپ=~7j{l{e̒m7wn_qr[vXqڵ/&Ikek$%  uJLԜ.cr.b9 eye_p3z;VX{^{vXڂ[[cɱՏjdTY&[w 3bC ^;9DHcפkwͱ>Dq Lv eiEd ^O!.WY1gy֜3-cB%,3A0͘GYS/>,0KbVZdk?Pw1 LI # z07t}KYw@qY|M #zs] Qqs_}-kD"VOZ:֥pƈ+[W&td[;i>d܍dRЊx"x_ 6oןf`ҕOe>\/эXli>(yve,",C{ 45oa` X=ڕI&pl K6e:gx;Php\`'Y$#O1BsV/_qK%Mcio`aL!, VfСd@ Qii)͜9S/^LK,Q_h-X}6bZ1Bgb0洴4JNNjݺ5EDDܵ@o* &&] v]hY`(&&u,/lk<͂D)X1-c l`jܸXJ *IOI rP l2?FdN $٬Y$.\(HVQQ!#+׍ @& R9l%#}, %9z5t ;XmmV[i^ʣC">R(rVwV54d Ÿh+j5H@Qf0p%EVJd);9JIK+ @M X0< Db BJ6 "ee-)7@Q ?o(36DPP=J= <<\M烟~d&SGgN/eBH,ZyFne&cF ?%3MdKQ )**дo`r!Ѹq@f -(pA`/$15;r|X /rč8)o2%Lk;ݘ1ja2|5|hA|Gv0$I߉.; P 0XI%I*'XcA'I%mAd`m_{6c1VxG7]Ad@*aQHNDPqa<~ d:QQ6 |짗U-48.6H)_O7G !Jd I"`=V1^)&_BRI>]XG"JWa̴7( md((dcBr_ |5OkuO=9]mi#L0b/] )u\?c۲d}`Z5HjGk4Zr5u3߯6uD&G¯cG:h;#c< ݀L l>kqҐ1Sțw CX-ț xG wQ(sLNR&+,GiACjQI1vQl@ '};3Zi8 X;X@A:[GzꣴdlA\C:27XGEH >Avln]un7 (t2S "%3 4 "VĜA֫W/r3\\`91b3CI0++/ {R8EAjd)HOQ"Jc mmj .SGQ83O>\#Hl/k-Z߁' }nb`af~ޝ-BR_ D D1-|>zRֹXhL[?̀`02DH>\Y]o/bbEd .q&ZaUe?p f:3:c +FA!OVfc",4{|tїx!΢MG6n\Wq2 H| ybE$,JWtxFt:׹sg`#=Y5̋! H09WCAFvbGr6-?}*VWdPLţm Cg?nIpKȬGLɓ:аךd >'&L 萧Cˇ.knk1{sdg- L1xQUޅ! GJ+ :#`ŽA\;Ge ZTqmdz Ԓݨj"v*k␫E E[23ml" u ڞמbsh%}nueBBX3hE=sXl j)@YJO!^|t*I4lA>V7nCEI?$d h aG%J^.a=5k?hg2@Bt"G!ƹZIZX3X6b2R~I}y Y/ۛ<>SaIEW={,";(D;:Y.&'g;$A$7@Sef[{WY3)@4dP$0}i׆X4A׀YQI80Zp`䦍$zr\0M&IDܳgG ڎZlCTLlcq xoLkDRLa'izNy 3^>dFAk<"@S,}ڥ@>y-fb,xē!sd.hlua_`/5"rKicJp[rQ\\$v~Z)eyzL29IށƌR~"=JxXLMLV QV4AA>}4RDSF1:92dA)4A0YU:t.N\ D0ō ڔVcF|<ߔPzow5 tβ}Xd—*KJw ۺ"6O\$+UCLRk^aMPdp+RFGXYŕa,!K9P3`|ȍ5%@@  6{wuկ'f: {zCuWH6denTv0p|pg=\mv?lZ4A4HdHd'S BTеR:6Td3 BuuWA^3Jj"C6}xBC;m;b8-UTL- B4f59(c?҂~CmBVdAv!vxoII[@[){4«3=& FKSI*=vD{wK+Yx&:m2I-B3Ta2-kuֶ_v ҰL0Xώ& `{n+>_jk*|Q^׮ O@l8vTG,I)'WL-GO1h" \.iƳY%F|m!F/>M|*6.X0ڕچX?fR6ϝ;V:} nOaO?N zu섅Ǫ#g,#}>Vfp (hW Yn6 LX<g`;~-Cڦr:q|HSk$>w9VPXZ%@ǂ.M޽tAd !dԻ\m2+wmLn)%"yp*w%ݸQtx[k'X~z Y ԫ]i~X?C V=~Cu=*]!fAhA.6TG}{jkKm2ɮʳRvC,TVFLry!Mb\ V8 qjX,ߎ97,!^M*A},dǹusvTC'{,yƾ"Ű˸uyJ04.3JF7KCVϏRIo٫D閄 캴L )ah2 0jWмy `X3LKS&0jsR~,^Dqqq3&;vzkc}t=>Y9'҅µ,B-sC~I258jdʹ="A1cox췵ȞUj&0gB$L~-H`0':XE}$BGX/]b :.>ݰa5S]' r.QË_}EXK$A C%cCu;}oxN9|rc`D@~=}.\Hvr-k ~h]W$Nℙ8u7I{t]_0CTIsj$(;}-EC ֝z (59[H; >>D#U#K֯_׫|.ͽt^,5Q۴:!^'$y]Id* ٽMGe3"\O\wxA'jSqР;^e[xEXKwE11mUG?I0GC,-wj>35Q.>LIQxܮx*VFp\}F)Eed\,HWTyZ tG*8t.LX-J]wx8Vئ~NN||6NE.=3Bmrg >4b_HUL$z(!,ͅ{v܅} :dw9jtzX1$@9 +oU'\zt`QH/\y'ѥbu[ U4D4 7 k#(bIIK=%@$T8 _ڸ޹De|qa<Ɲ 7,^#LN⤟v7$q$ǧ`d`__VA!aa5򜄜n4~|_ Xvc`ШAyrjĂm[t) [SxR$Ju!0g?o26:UġkV׻ܓxk qH3EaCMp!w34 6u>T59oR`㏯hF&Kϙ3n{Hjdh| 4Cokk{L٩$Q6xs vCE| Am +ua%R& ]A1c-]L׮fĴkBQ}3|ȓ݇GD3}ʡT+ ŶCԈ$h,@wr!_ P㟈>Qe7yk H#3X- љ$YNoleO[@-'wQ=fI;T;g۟A)wxs@ZO?.{,uu o|q,$Mś'%tͭ2\wFRQQߪ{VsV@.6<ƌmrIAۜ1/>/Nq&A!.pcG?eShAq8U.͛&iPK<|%w9-L2^#vsy7FlXh53p!LX8~%}L9qj8} 4n'hBUtF m9S_di Z!ld;Mg+h-/gLb0$)&L1 `ISLr?{IENDB`pybik-3.0/data/ui/thumbnails/Prism5M-1x2.png0000644000175000017500000001113513137372676020766 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+IDATx{Xg6T'a  QPA" Ax4MMbm>k4 !1XXk!Mڒ$_ڤ>̺ܳ.'޿yyf΃+u&(J %@IPR()J %@IPRȧmmNpؖ &KmܶmeKQ",Xۚ$LG~N0Zbk{>`z~@IK|H J}1a;}T)Lb; bty IL 4@I0#aVC m hZnf;o;n3 <'Jqq/a Fmtt`͏ 麏Ͽu¤V',z%Juc]1䵺`@ &->oAaNOLG$3_h9 ֭[ۨ߻ ~d4:; PxHEtOVs*Lav97\BDքtzTAH u2}F{KXzu‹)$iJHOѼ;-2݃<ݳ2}{B.(}lV =wxP4HJu1@&ݸe,;ĺRoIB.-EPpp0 b?f]-@8)z H3 JB~~~L-e d (Iy,հk@˘Ju1}Jp<{2صQdd$%%%If@*2ƎmZJșH@ 'VKk1n"2f_Ǯ#g5܄JNN_qx]`PO)?DΝm/R 斄a),, B${}!3` C5tX5>>RRRh4Nd)z!.0w[RѺ!@в+{Gq=t ccciذa\qqqM0*av236 Ljtt4] =A%x*>`=CBN}z -pdslX\_` dY0CZ@@;}tf\ H`L9r$7_כN~N5?+&s ,_JvaN5;111|@X_Kл*aD;ZQhĈ<s%8/_X/4%+@@ 7qҤ^Mm Z*e 6~:Oc?6CJbb"7===z'~ƏjB~=}dd`,eK` aYϨa>=9.1cYvs W6FW%*16@?kBM_~i_xƏ ؐ kavff&o혰Ǥ/VG&]I5?$A 5@ó̂,8ՕQX?{7.:{ K#8MQܸ `|>}:͜9wbR Сh7ANoln^p" ܄j8wf?,y aс'⻒7 .vyt`5PL6h7 oTKi %`f5ڿ-ZT@`z5%; *p!HΝ>םףuҮ T/@7)yyp5=X=T0H@E0cAy1 ˿8ӵ/ (%,*t!>ck\wAD`EF !>sМ{'(Π\k+.uA2^_<`>4yL@YȊt '!H]` D@Y0Fy7z`Cx|s/AW}̩n<7,kZ4?$I[ v{8fjOg@G CW:J rſiCy5f>R!%"b3 t-.UR,+;7z~̇Z襭J @u/m ;!6 ṫ6GI[ cLf&n?뱡 |qK8h>ԃWӦQśiE!kA\s. c0Wu0*0<2kScnwUVtP ( 챔K',6]CuwSUc8h>NtϸuJ 0nn p^G˽2VD?4qPM|+|bA`qTbciة#<M+.;p>Sx]GyAͤ7b7 Y+2}~j~YTMF;ϨZ !5'Җug^`GWʷMCJFrֲ[ - ],ӤO ؚE7U3WMrW 8$vZQʨX@>ݧp%b,FDGPKk=-jۣӃhv$FpgOHFL2n+ /-.|>0l8y9mǺ@ʆ (a]]LPֈ/b8zz<sCX<_O`X ~H3~"YG4]1'RI5p䳳)##gOIMӗwY;f?6~l˼W_f;PwieN0F?l# &BD/;~1$f/w饮J L7AUyF[8 `B 'N._botNir=׮y:Q _\e7jHm{kFuP4y'?V~{|ẇ # +isfE:٭6lX%?;Pfܛ+}%d P`J|Z" 99}<8V'O RH+>@ 7à +0($FO XDy1Sg##}SQ f3AJ Zr5n@Pګf3wYM` 7*L%f z|J* 3- 8'x|eJ*;wn'C-1Ro bx{vyubNJ捘9!pb|6x|hs OA0fWxJ 5?Lz͇X!Prj9;_A \ xӼ9i=nW|FW f?xcf"re~ ǵ1J2l5J-``dΘ~K!a pHYs+PIDATx\ip\Օπ1zS$-kG7ɴlxo`k̈!v 7 d 118ecE8(T)*UIUWR)Ÿ3߹j=yflK)[|;{w$zoA !@B !H$B !@B !H$B !@B !H$B !@B !H$B !@B !HDOe`Pu+hF4Ե]l21+} ]{%>^0҄TKBHO[7>mm|&Z}h>¾e !C kidj7v:U ˵D x5IӠ ;j 11 dS ^LzG5?wݸg roPF^>!L&|UP^ox0i^̊qsJoQiȇDé~[ϓ \2 xi;V@ 6x͹{so!C Y[5M l0!Ÿ_q炿JzemDz#L2Ø>g\DYՌ7kkߗ4lLĖdJ.05p/借 VYJ!J` ߍǘu^jXR? &{$K=9̌}n<2d0;7Ե|%թq$ɺd,Xtx'GNR L\eg<dzԠ>Fm%f?+osLP=go'vfn̆2T?`;x᧝5ʟaBy<ޢV97&b9WVNC%aLAWs(|X=9&ߗU's sg~l޿dd*{r {d\ģك4cMǪ=^i x%.*G <\Yؐwc=C&V4jؤrJ-YWzdP!zk`Y2lɪd~Ls7VƬx[ AVFF\= YZ0)cNiV(V$o&eK2wyŷVMG)X/TXfLny`=jm-5P'Ha1eO0J L ֊< @o) 2XȹŖB6;FA8"])D*FP?0R @ffn RU=~zs 9؃p`>0q(2ݩU!0ISP7&,L7UH ]7)b TaVÞcz0J!_@Gŵ1K>;-&V7<+do1HL1\3ABVҐ ;[\T5чDVUVH 7ٖK{aXמV% G\SiEϬj6gr*s9@H6'@9%}'KlYcJ&I5:אv,t[7nRu RR-uz;'+ur&i7ɹK2W %Uy1Og}ԡUݒ $90e[|v)N]304(rk!@e I6zMʛak%ؕwh$\ %^WNT Jj@ zUFg=\3X?ŻMpV8&F,&]1~\:S>z$``@Aށ ޱWg86xxly{q_9c3ͪ ɐ*LJ׊7r㢫6W"rm/6^XnEwJMW JJT%AxH0'@z2)=^e\BW>&i&CK~!Zag8tDq)nv,Cdݲ2P`MVaA C-%@.x s dp/D##;|R=̤s(uqU~TaX8Krw72"\"B h"B=e.,:ZC Ky/E0}\-|rȰO+͝l7UFXBե:ocԕg z ׌qRU!d<+Wh /h'jڕqWY9NRWBG`Թ}Sn;5hr>_B}2}\7xh4̛MVyRh& f("Èf72eipT!['P$ ӓkߖOӊ"É.l/bU84NY>@q%@ғ*TQx7f{"<"d41 &t_O>DvleI&2iߏߕo|q m2q W:uiZv $>PQ }fjlj~XJ##!*?X:;H}mY]["4vI[)G^m3HUN6Z ZC:!H qPa DxN7礈|@aBzzuշ;&wkU(5Ԡ?LE!:\m`ZUƱ`CSQK<&#T2%}5h;c"ރUA0YO:e}kp~|\Nxq!FxJXN)+uB !@B !H$B !@B !H$B !@B !H$B !@B !H$B !@B Xa' tIENDB`pybik-3.0/data/ui/thumbnails/Brick-7x5x7.png0000644000175000017500000003501213137372570021005 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+9IDATx]wU~>BWu3=9E 1,fT:T$8U׸w}ϝݷn{Cd?O]|;eVW鎖a!"5??s 1ݪŸ?>Ix}yWo^[Ml1o[}sG?u P<:E, yzy-~$xi5NMkx Vw8(C'o5zmO ÝE qtou+)| xn-8 &]rJ[nީ x |E7tU s K`pg0#Tx]PHh28:b]Ai+(yG;SMD m!>'vу|E=,{Xnr}kv 6I.Vr2.R@ ^a!FR؉b;BP &޳J >h3u NBahyD$d t,ieL ZJ3wT:$h3?[Ҁn\ޔ0HC`eP1q9t]SspܿRaH&4VO(h<2]B% 40x!H׉b q7pʆ(c^H@Fx#^̹b:]lϣ/KOpx0`Y(@` `:3UN{?y0MJ-)!`!0 ɕ_@H׾ϒR"@P e4{y]<{Hah9{Oj2v/5;BEǁPx !NC2~D`TvfOuHs3 VJiDV yDO3:9DrS>|l4ً4b"zm#av}D^f,%K+EZEU c@ ']CZ(Kcd;:R@lFE\K@[zy*\@ޞrQvi&>Z gŇ8j@A3%wìKYzs S X [g4nYޝ)'0C7"0FMb TO.U "B׆ &=Ne`?ع&@?>O&lڣ(3qbxg~/ } x 2!j8}}5q6.RorH<Y bj.P``yryaz+Tfal) |j%'h 鷌R^{U+!XmLjt, oyeҝwߤbغ.O`9# sI/Њ%z"gUyzX:G+[ 6,'<fY„g$ ~ňA"8PN$B[i1)2λ3D8Bq3JFe:V:ş^/cz/2~lE*;;U Ĩ 2c\TJ%JTA@:@3Q W,2m>Wc @k ]Dj2]`oB0d7;uĀ|ы~BnP 4sD>)gwp"ѦDGD ++"/SiMxV~rA Y[D.h?̓x1Xg&  5*xWثy{# $TjyK,Drv n|;) S^.ﶘ~HP+@ ڸ:3)&rq~7Da/߿zYwW]F%nM1.j%O`rFc3HB.K\{`urFoF)T 9~ \~>\ܖxX+'sdfkx]uB&@㘞*݃@͆08,ݺЌ7^-}vYxv+)Z1ka 1NٿQ"N_έPA8AGD85B^eJ+ f~@v6.$Z;e|;l|E}nz(pwsWB-Of1 ֽ8<=nI 3 7Q.(I=p}dR@lXew9>Kǻ`ZuSP#B,Ĭď#F;c"mAM=6&fD7eJ2W ^ϩ8sWw y]d᪐ Op *S=An;ryx<۫>ƦQ^1@t1Xa?.% ]tt%A[% ~w8pHu5/!272…QDo2 RUlG\!a5ўP@"ƬmM)b2Tjas)'#п"oOs=pj @O1~oA2JRR1l5LX8#>ﺰL.b=[|~\>nWǙ.q@ "3%[]xb:->ȒBD:}2>)pCDHuQ>ƪfa*nb#9݃QwH {s(v5vI,=1g Ȁ+Xs]T,RO*ĝWE?.|@cp,Z{ :suY ?J1"Q QD_4O/`5tяTCN/9pf(p1xl$.'k^M,ɒ)KÍ.gY D )=^u\ sdc"ĴaIЊ8KT+n{d@|1 A/9"W(Nb2߇U#dEsSٻ56>}w>P9'WƟFa-~ ߹3ŠSmo 2"Kg% Q\"`0 =ɕmI#cAFSf9T˸YP5᪔FK"""|;vV9)L<½RK+^ݘ1XFaeo)rV"5nY 3%S O4Gl#)hG1(պ! !",!` {|v6Y;#TʆZS.ʽ}Rpڤ@P;.~iegѡB_!o_'ʹ ħBi?\ZL:8*M BMƛ!&Yd,AZ!o>F]l/D)R'@J4HS!gTޞ ()Dl Q. &n߯ϢT=Cm/faDRQ۠@kqS?~h *#l߱XW➫#&~__b5YA, 9+YL 0T,Z-nK^!$BS="xu9Pd{"uh00c;bөa(cPMn&0MSeh(G,GC<PhRe Wb ؾ!;.ѳ=|GQ(F)8]M[{*0 7"Υ5Un&CR t>trcpWA!b Աr20ec!`wZ0poDlBk|+_txKbvK‡(i~}*pP`sorv@].L_wGn5 <党N`[؀`CR$Ï8e#tI"-3 2M$̱M4'*=b9BbKH5ƒ_2n] )WD#ڻ[GlVұneU}Ec= 䍠1!{,"MQqadڄefAqfxHS92MEnΣX߃44:~rGv5ٕ4m o"+_X bil>ipdM;3xS^h BA՗dwKzo>FpKT\;?lH-uyиlZPLS/0ގVX]~KeϕkaD}qO#<%p= BĹ2D s%VdŖ@}38Sƽf2>'Ӆf(8i GJm&Zvi|ZȋjKw~O ͌YA3Juի( 2aӇcҀY qpƤ-ap.A$@Is gRFXqK`iFO([H7X6z.#dm ^|3~EH>9y>&BGP\G!q[cJ(+E=пnE?P_D3~y_+ gqXqKd;$tq"ґKN9 kJEL[f/`U$n_}2mc&Q0 LSZY G4]q"lpϓ!02f>kܓ(]T! :?5ӼmF<iK -J7<{_bi&k.M{2؆19Sj׾IK\b)f9Ι1+Q7Gq,)?MC!&*5+ TQo~ܾc%^g&e"uo?1yaf i_w͋B{D)~XvU„s{ tx@ W H >Mnj /w /t8) GLe*TEKjU94I@1u ,܇drɁuGlh. e@xiQ^WǬY*լ$YH-񵉀 d\qtK@ Fg+D9!yYCD&ܦrtb!<a|j)"HKTm@5~AHWlXܹXRX-|Z0pUuggz8RFȽ&6x-m(]>C7bZWz.+Śԍ(&?졂Uö.v@rQjX`p,  0ciE>%Cq8~ܐ5W*{Ol< jcN6I}N.:f8|.P*D _U#ȑz9%;y0[X8Bf1ۼWĈw C$1;k)"7l <]z|F4 F8%0x r#҇IƊ0ȉ ಩~a۷5VOZWs$߬c:ë ;%s>?B3]CBRU@)4u% zbyK oU0dk8SHSidi2<}I/4.eGKyLz+8RoP.:-b qGg 8rpc@AyzV3R(!7͚etA,?vc'`7w(@E x&LobiX\F}0KꍢXsDpSk~B6xzki!xV; f4=0<dV)L^Bg+BOdR2LxH= xa %`gj{' ß%ryGc?*3/q@p嬠ػi@xo^kӹI~3*]r e7 T6ZKrsp~Hx `M4R gߣx<)B˜3cJh-lmZ>8X&5{v/7/r٭R1D `hfPX*JY4!ɗgEZ_d~pIy&`37ZB5/za@4ڽ1<`v?gtDNqe9 >GA6g=X<T /׼JmKd bel'K.b,9c.1Mi1";{h$Ҕ4*Q)4=sp\<$OxtmQfdK۔8ŝWY_:9 SBuax‘Q}kKnۿ&>2`xxF;W,FY'ļm] #ÌYs'VE 8qW2@F:E8)~H4p^,KݾxB"uXtJP\=WOD#?ߓ9eGk º4lӲI0 "xrQ)ھ%d }R34m35Y4jO׍ \{H#VSJ%7( <^I:uʈV+}V^@b1{_(ewGM|P#qhp:v t+HԪc#3I*k؀"S8r4Z«]E*,l*[W).͡ 7{wݏ$+Bv~㞍O7 ᾿kί??/W:g=@` f|Z+<-Jf V 4+w )4 Q\˨αQEdZ% Ӭ$k^x" &|vo"wǽbo];c@#*f'A`wT2e8.Te`m=#iedp@`-4P.08wc*6FK7dΏ^C7e/^%M{ 'D/ 0MqeM)Z %ιu ܕCn !݋DŽl*nR4.P G.oU>\-M@RaX|y2@=e`V>fመ| ,lڻdHK/NI#[:!M qlj2Z@lz~=@;w;\'>Y7X嵩_t@2Mͨ+-]L_8zj%W(:Ftr~jP} E[Ǎ]?ّŇR ӯBAveWPjeN$(E7ZΌ0U:f9ޯ t.޾+fw`۷߻X Ol0<#C+qnDx*׃=\8y{G" (M 텼㖵qRCv}x ybcU?nЄ'YQ\av`G. r.ZN]A>;W/UT Xa\%~l{>Z`Pp\V l}jlV@\!j6rh( بm@yEH>So rB7E^?}3{4_]\bo=q F6e𕻛`n \Isğ瓍q V^l>ǰ BOx~]MɈLJd Y%2PM<پidӸQ!Oi7bXE-^_WaisHwhYH2cd  y:c%&dr89wXbŠ6dٗ|Ha pHYs+FIDATx}wTF9s7A:R. Mz)H{'#*E,XHѨhzycbg}枙;sDs8?39׳zֳ. =̓ G3f4h>|4;u(G70x5yu/ǩǫ[M#k6I8Z4{ m7\cv{2۬ROK5]ks#^jy > j;qBI*j^ @;<&毯3}=P =c>Fx~jrRatfa8\luZmwN̬vaBWTS,#?R!4 u. ̤wh3WK7ca*=?9W; *o zYZ_sHwC;|'r+00PW`NOM:Ihð[l]#tgH T TNOr)Ήᜱ0 .CN({m̮lݿOᘏx6sV5ܽm۪P:cΣ8Âa,; IA8"손AްdCNs߻;xc:o(Ke3T†AhaгUo2dbbFs!9jqYư5,TW|-kL! w^VZ7t 0t'ͻ{(fgm"La* +q} ` \dܟF[D|z~ghE\|nԭ]Ҽ÷nZ[0зy+oZG<1K1ٽ5C`R[mx[Ө`\Ws=ۜ-~`9y: AWy+s%GfS3 IW0^ 3ܟ 9jaVGUdLG!*ojsOC \\/||&л<@ݡ4Z}@_/#1o1f¸X:ހj` 2a0Tq 1LhxȗD"d7l0Y|evS' @(`$$dx#D `k@$owxo%הQ?3nI3_sJbIZsscy1t$|xѕÿ/c\p EF"~"1H >* pU0,7Ɵ՟^"x<s@3_ 2boE&:ƣ3Hxobm W[1H>^@#ӥOQד7\{"Q[?1.Ľ8k2  !XLv!"y=>`KEz2JܧCfL[:T8ָKr͊1z=v=/H8tK;Ѥy׶ ^#ZE,À2#iqgF2yC u $#Td[@Uְ}:f*1!xrk&=lѾ ڶz*q&u3վ]*yEuI̊c\Y p#dzmڽV`vRy{ <6ų)s8e嶘oZ4r\Dv=&i27EhEGD#'ԙl>=Qsfod40Ťs8P)INRCsG%gؕLtS-2g.3 JΨ^p 0l,al'{ӘF⹧ՁE}K)S;~Ӟv2Ì: jK:M+W Y@- ( Ֆ'eJm %9= ϫEh:#K tG%ݔtKM^"tFRn:ACPQ{L1%3a" G*"c6yi rjSdHZC+3;}ٜLA;eL2x6+jŶv.,/ke~ W)Qi;  b =WҜN4אs[p 0xT}f:bLwHӜ0heQ-%Vvh"F43Gܹx2x$_uq9Xp}E7s|[5P㜷ѨIp5wIV Ϲd#A"q}qg;l\|x>oR&̈́zIKjAەͧ8w#cИ $\=D4c7R3y yՎkf}."WyzѸ5*pM(Ü3.X(a4ʍnOb()Ji8Ub2!>R\YTm? -| dOƯCg!DB*#v(&u5!RaLU4Jr!}(_W(P|~y +9@g:FaIf^w`s'AD_j8WLyq7@HDh,G});wgXf}zzV?lCW-9zwfc:SmY<i x,10Fj) ~qTio>2>Y:V% JS7H#kgj}|rqhisĈ!TRܣ`N:s)Pf>ljMPe/!}gp\F}RDac} j+G{a*MG\3uXXM.z|aL)9aF]4-ddE!(?Uw_WΏ ͈^]ިP# ~:WyK@(Qt+01x4ɩm<`[F>ođ ~(P #pF/NndL8xa^ P6q8DS,fe.U^ I7/DzpH/w-=d$ =p~MyM„zdm:x*^(VJK(x6u_!RMw=a0ƱE;cF˵qԧzwZvSL\Wm"̮W՘Rm.#L( qp [&K3%Wh`@ WU nÌs& Ajw{ ^b[wf]n$We5pzA!``rx =wj{0ċF0gd&qʻag):@xHWe 7)?wle!׷__/̾>"WVݫݐ2%M[#,ZkjZ+v[8s9ךLy\nR0Q.Fa#>NZebҋxU; ȸ4 'yX8.|ub^gFW&8ٿϓ&3`!JcljJ5L:OJĺ?3L?#e@ό;pd"#*8^ΦM kH_1/cR+`l/K ``}됓dދ@3ER4tIdc}m#p !)h9>ُ{L))0b=Փ j'C+M_YWU0lm,uqt\:˿,zP aCioB=k38[16ɫ#DD x:P;qJR8L?]8"DzCk 6l{;qOg*0\LPo2#dMx*K˶x|}BcC^f]tf4\`iv!al PL5ySZ[VJ|20מ(R+fGՁ-E(ϧv[l]zL0>~.BX],)~!'!>!m0_(9~ uH ϝk;P'Pt}V Md&X"rf|ܣF${_k+jզ=&C <xPAuC7Cψͷq\Pi|uj_L대zwG8/)ܖm2ı+;LyV䈥Jvpy."᤼NDWH )o2w|,8ϩ2½С?,DryEpF7|SƿT u !wE ,CYOX:KH)OcL?#5pvD_]ٿ]t bf`< (FHpX*w/_];E ;gymMq:(ě5q5&aV1qgP(hǥj7A"y4, 0LR31"ڲc==fsħ fỵr_Wp8ԑRvMhQeVg61+udI6dLLJY'1gqeqR+q+mۚ0><3 UmxOp?QftiHAfӉCb|{aXD/^.o#f=ş1;Zbj;C7d)8̫t%DP WCDE' -EƹdgeqHiVPg Fc72+:d PC[d^[1/UUJS_ޓ6_t8BU>͕F; f^l}$qM!CKpt&S-'mV/{ )l)V̊./ʕJ{C{.A ,\ "ϗ" ︧PY_vň͍RٚǦ,Xky$!RZ7HK (389y^Z+ND$dOB!:4[y@BGТǬ @(.iAr|X"pmXGl@z+Xbd6c:Q_kZn#eĦ34)ye8C89"^a+-B!<36~la >Ej?Byp^HD~pΖ0 41iYƠ3PLH؇H"H/3u^SbT4Usj+TnZWԀl+p/dn ,:A{x?XmnT7hǦzsW ~+\*ҍQVG ɀ t4{vH!jʥUl"!{)KWXd :481܋<7Mi!+HkL7YeyɟvohtW,{Jr7+T~;qhrH[mTwX@I%`lB{ K) ~x * ,R/M)mH0(\W} n"Sh'a~ l6bd#uLX9.cG?q<]{ q zBH/]w|K}B3PU=6vjEE Ӥ-Ki `FwY,8nNҗG$k`D} Od-"jaD@>&yEO|l~¤ܓgGPb5  =`u@fݵ]5L{g< :r߯GϘ^mjP}l"ۿI\/yW;5:xH 3H Ln5eb@8_# lq(ovNj-J@J '0A1ͪ?SulcɽMI D$DB5Xwb>JC~WUNC&=HG_^+W;*T%_:/vl,P76xSv>P {%&vوi&{p Z!K<fS +6xZa k%c*i˶ʳt뼯* `6,N'` G.8*`8=r8fl: p .M2f+C7pʄ8ϑ~wK{U`\~Dhޘ}`@[}O0`b(W_w[&\{WfktqǛ h8a\w8=PdĈyݎlL <HYL>L 5  t36%WI 0p)HR?C&$}Շ  Ld_{to>]m}SCjE7 Hg?]]uq+z5%Ԭ:g/Whpx.9 |5"6RadGV3yӼ+${ekV $!{QQ\Jq=yg~@\Ve}3eG/V 7W}RqK!DP?߯T(JRZez8_Lb,_Pp)w8ѻk0`O ;Y H>ѥG Y|XYRӈqJ8$#5y&L0w笧VmlzXÕS%g7/&*,R{I!I|puRuK?YƜaKhZ׌VŠZ@#~0^2 c¯р JaNEJBUv | sBpnn"ӭn_ klochzAzq1( KsR_cb Lgh ɘOOSU}sŪ_7^ RWL7,/ޮP;Ƒb'!_cBN/[Ya( dn#F{`6$+ၩ"`,Q*J: G(]"J&ʗJ# ۨ0N3d y~UޞWU*W\01uq &KQ% o{c Di[Way@ZQIV\˜AM1uP,W#~xtaYZfGg?Ԛ `RH/#C,dRg"a9 c1 %\^"ݧq;uˤg+Tύnɗ9S=:d- @\1+,K>EWJGUШ(DW?+Kz9T>2eߘ$&禋GRIК}ʽs)WC(%BHe6He<-FtG o(8֠o}Y\$e1[e\{/P$z Y s6J ap^)tIƊo__JTpg7N$3Yճ'Dhpk(lQR=UhCKg%pIP2 _47It 4JO,? 6"t^DZi+FXHMk; G&iETڿǺ_'`.oVH8ͺ³}mPv /Tobɍ4|K½6!@;0J+n,|Lu$,J!S $3~ ôK-YCDy 5, {M ?Î[A4ϟ+_4-+ >a}X) BOv84cQggUk^w 'իFG gD%%$CJ 5WyWg {fWboT@   EA\Smt0c|N87JS<=EđZtx*ן*RV,Q"R튙au91- C n&)x~Lm`40TW.;?7{P'Lԙ^:.a:WpB*w]0Sn?MxT!,OXD'^U@L&@^."ֶ*1D.0 s})g@H^u5 /R &%wg .](>>feO͟T\(t1"%᷷:rͮRu8~3YW72-[7@7ONE"n3aCiG5l4!dkyGKYU^BRRdP ZD,U=rQ 'xdaB[JX%F$,IHi3vJ]0;)):K %ށi R;?Vfϙ ۖtA\W>\?qP'( vEQƛUB~R/J05P9U?VK="dV{2NqfZr;e^ރ WwUSzqyTg|ia^xM悘3fE+R>;:{Xf30e$ZӦpAß,HoƘ,y# 5oY%d',opx-欤gh@KH_YB}_7^!\Vreo;P--"U *?=`amR5y\T=n7 bݛ U~Qգ-wm,T @0C,{X1]Q y{;J_42 `S m Bmt,em,%@ :.ZpCiSVMl7}UR_p B'x=_տV.nn5z U" N!(yR/ܕ/Xd$o @فkVN Z]fx6\z|lI:>Oc60ɫ / h9tѫ49t*y-=sQ c1! EZ[8%ʤL,K5RyC/_UKE>{Jt"WPc_7~bV`CB" lX^᰺C% *Xf]D^k]v`!D/HƳjzQ- "|u6:+ H`C {УQ Up"*A4P}|7q%qUEDfs$)L՞Y Ct.qq^@gTkЮ3{(\f~/ыQ0}AoN1RdK/qmQYH3QR̋_f[/uS*?dXs)Z,%(rQ4}UhPCxlO#ċF6pf(C$b!5$2RIub5̟^-w+ P|>wnݭ+W&)!BbW-gE(bϺ&ewYO㭭G2~ݧmtgI AV'- ML!kN=@#WܞDO0ח82ʫ3jT*mt!7R7b!^ u C+es#5;:/q܈Z97!!C$BkVIFufE< <ݛj"F1) kf{H)9wŠS,bp)*}l!6{iɨHUOJue `Fa O/QQ۹>Y#8X7 2~tGaZfY!56['/V.k)=_{a+E>s49N +`,<#`$Ciw!#*zP[MX\`7;4?W,i;f2/ R]D`2<(kuzX_@Bn(fE_30Vpɪj᩺~/I&pK,Ž9mLYYaZ1C~~X:=Rc2ZTb-!+)='GR\#2'۶;՟1wU>lĔ r(AogRcϻ 2 pv C$z'i+΃a $\幾V9{CMI[X6~V-tD .G5R-LzҖ,#>1G(64. N%sHz^u"˯G"gccOIwk ɧƎڣeCM!OTܠK,4 Ed(wyjaZ7 ;1!cAJ,ye d:.#?Ȫva&WhhgHYU^lwtۘ|Vɿ3vqk7=E8튄V_g@=kaGejxz,nNrq]-glly0p\ D(} s4jkH1(0`*d_1VbnSBhc4c_\A xR?[p4>̛a5I;:kF)~Rr3JEݛŐR.6bN4(V>]at,ww릑0f6[ƳrG(B8mvpuRw?eo߈%3Doʸlȶ0VIYJY3{m[ǖotuh=]0.p^Ct1ڰ,]At:Gh nL"[ULtN7lH"av@@PbW-IgG?yP7S{;YNԍ|)1|ikXaaTK=+ϕ Rawd_tTߞvn*FUKbz?o1́G>vHZǬ6vnx~"M458amռ$T7f’^Y1LA V o4^%_J\5cTPX>#Z97"p2L<&OĐoG<Ǽ O)՟]K\n "?@aUe\crədMוG:z` FCN20ZYn;fFT<k̸hEܧ6q}.]8)<o,\Q˟tus QNr4reSڸ¨+~\Rq0?l]VHrgtm$l>Ś [/ɪ,"cϑ~'[XƂoGiz3Os76ZE~ Vn0˜q:B*b7fxul %@2Bgu;K%pBh?=:#xEmkpao/86{8_lQ&zeJ(D̕FEK%K0Vo[C.6P)uuqA7QA^X3.y|i_ׯ5}V~@fx aLa'sAꘆm~ö 1fԾō{ %i;"٭,! Fm9T8v *S$eo.\49, C56u'Lܹ'%0SB;bKkxfo(ZpyPv w˾6r!gh`8bRuDg;)վ)gBU^_8sci9 FHĐt`įBXii$CEj%sHd֋>Lf YHVLbPQd\n {1AQ~".-\"ѨA#@avIu4\%_I#w s,gv8NhY>{Kdoi~q]Jܑo^ s}T;ko"'<8ͦ\rKT`:@YH u~-w#}l1/axԫ~Tlsc@4g-E Swx-BTd }*~“nfTZI?:x4 KOؿ \ީ,f*C.c)djikr;w|=ȯxSV{F gF{x>mN- kBD ?|rճ%?:7JM굼g4f":dvII#]khtʽw`3hwWM9o@~i6DtR1Tζn \nfd(lT)O.L_n&qJ̬!(+Hc`w7 Wj+Gg{lox0[\3Q OYKZK'U uRx赸gmM7$Rf|˄qY E띐n".F}Ю,IENDB`pybik-3.0/data/ui/thumbnails/Tower-7x4.png0000644000175000017500000003210613137372535020575 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+3IDATx}wTUPp躷rꪮiHA$G G1cQQ%h#Zlsvu͛otq<^[}R+q?^gϖw2I 3 dF@fddF@fddF@fddFgBdh192|9X[{uӱD?VW}qHZ{+v@卫 =27k\+[M^OC} g9`Gf?/иCbaw9QXC!*~vV;vѪœ^!o6^G+H@dBKXS TA ,H =ǀ" xMD]l6rD/=Ķp,e8 (s,MPk:6>BOn%*&s^"@OiD!yU% / K` *Ǎ럸lX*h78\z>aZ[f%Kc'#entl'R ?U#T>zTH8g!=PK d)/Q Ńɀ`[P C ]Z*K缚*L*E1a(T8H;bVG2,D4Qx;zzCap^q?R#;qHW7$?p& \;"QYֶ+G Q}9Zu"*~AS*N;ٻ&b>vMn?؛hb_P 2PSFI58(!%\F^FAow0aYJNG'yF |P0|8XL}`lPxfV}N> ^sȼ؁QBZ؝c#7`(ixox] /B"~_tYXO%Ϩ$r.Pq֓:-_rŪ'SJChBAzȝ_Bf!]KL=/ZLkwJO2H*yK)C'C {?M$SE "pxhm\/VwDE;Pq[җ G+/I@b3,6*fDaܭGR |Z8!Wk@ޢ{@<* "M%7g.Rbma -K<.zO"QM12+_F` mVƮ^ӵDV_JF=.W m2ꢜ? Vt4yE#VZ'SCߣ< C`+P1RyDϋ~n"VXG$bAҫD=:4~A G8\`OUX H Tyq:cU4]$P>-ox1#́K׸&VbzEA0bwG`mM@a"@+ zY*mj<ܷ$5[k*E%E OAn$G' =9U|xw[X|aH7|3{`7=̵*{8؍ z2N"ysI2hi|O~??@k A24c MbPMܯ+fFzFI6J ҳ#03D@^"7O !sx0EWĂMs^{uwTnoH=8+!q*wǸqL,)g12/+ (w!ĠgEvŭbiE|^  Wd ]'2"oU~(eW+3rrr$J Ⴜb: $8G3]pJO{4AXݐX#8v SlGZGbת@JV!΃kf7˿BHZf90,8:Fn1`9΋{jTBe7gVX:r CLG4>6 GpE6ѷp3;׿$.b#5;\_b9V.v_'L@0@Y{uZD>qK7{"MTȷ#@?BB?>F3qISި%xɍ3tT`K&/1Lx1}3 L93;// #)#8 "0Tl? * HAG_K4)0@P9jQDo W+ヽ?Κ%04Q،634<0쥹ёNhG@ʉHyFV :#ɐش:G,abInlؗ˻&-@j֊Zyh S ʹ&XQбZ3 ?\hj󚝇dyF`(!r0A2Zr^<TɡQhF r(y9Myze~?o |ǪsUA! Ӈ̻ڦ2AjծNv[ (<Ha [ o=yJ%_V<5*Ul4r: ʂsoQUh:c울(7s4mSbx}S;N{&R2 =@^&*tᦦ2/ՄphA6$~q_VpiRcW9":7ޓBbך1Ln*N'0 J0]\~>dv!I~VJ&}c@ر6$>ۦ `*l6dY7]Uf(ZA(ЀC W9&83>wݨz=Q0\"Ρt^yi{&uTCϵPśxDC]5gOŜ.1]#ÛSjNvlXkĤ"C N]8WN`XEp/lkvGU(T:}F4:ruALGwjH}9 c0䐱pHp 1S1ODo'4}\F`K0н7;OWusZaǸ9?~hO:I\ 2b);|d@Csv"6X>]rø"O2C5u4I HhoZl6 .??YS`{U Ɨx##?9"d?5,f^o ̡\J2?X2%B܁"cēy[KBH(UYAaxAZثoh:{Wb 5GK?cw2A Y6Қ%:Ӈ(1H&03J:ۋTx6o;(VfO,E q?8C{&lŲR2vX͇i@oI} & &bwJ޻ ).2rQrF4CLQ=sW n b ¡b p[2dOJ7I}0{[BX|+O-eÞsjs"HpЄ5[g0`A `@mJS; m3kȸn6,qU6iV+{I">=16OV4ۮvV/]^nMB!Nrm nT!}y>ߗUܢ.6Q&GU$j"{dVYALkIWƳJYc@3:f&yj'05*6U vGwܮz xO`g(%p_]@VxΞw׭q/%V hO]$BW"u}} t->hilLDž$&G$ArjE!V.Hj4J* ^U)WMJRƞldqTadʯKp:EP,1kܦX~Xj~D5\Gay\ںʉ sݑF#b"v_cA}d@[Dyr-]E{ ##A/4)RM1/)C*>&G@Ev)I)Q 7$rpzSX( $Wn `Knx xT`٪6  s<{r/FġNM~mB|Q"ܾy8y4;J{ x.t/ oqI`XE>|O:+ d]  `-z":* nQ|F|tQ,H8Tαe{p0XW%|O^{.W|;j l8^'pZ_U'B .Shpz\b8*,ps@0.GpS6S]C6rJ#2cJbjب O4uu.B>Gvn:>S^}E.~6u!1nCM$ã5-Y+%3^!eU`Opp%E^UB!(4pm  m>>se-6=X=}] s/ ᳈}*ks)ÝV]Kz >I!PYi EXչx74<8bs2ݷb(^r$ιxJ-Ҽ-] dv0Hm \7O)aHDpS=0>jJR+V #H"ѹ$"~[ϜẙnGzժi0VN$NX8+4"Lg9T4oB-{=ZKPXՋ5T\7VgJ Ҁ뾏Vny 4!R8`1NrͿD&)ǣL c:Eq.zVD'w}$`J [1&ҭ!Za+|?s7^cBSUl"qtt"]vJ6[f:7vޤ:qɻڰ0^J RK;VƸY'?fCl}8GxT~"N{E-NK֭XN"J7 gU'3Fut"1/1ڱ2lea 1z.xIV$7rJ4,SB9@r!0{ 'iANmQ}{u qy(Kސˤ("c8ʓ!f70~!VW֩?3o[tx{sXԗG< 8K1"3 +,U$T,kȣ5ez91@9tTqi܂oahDCIym#5esrρ ×{= Ƚn6+?$o!KA <>*}_@ѽM|K%+9Ă.nD"?ÇXu_ʗ-78ò XO{ wBNņOِ C/,?@q0iGg(䍖Yb-n_"l [6p# D?  pFw%IeN `O$nD_;Nn*La㜆BY!1|HSkX,@qVl3eX "G0h$I6l`ڋe.*ҨC<̓ZX1Ɗ6?GWɈhUA 5={/*˷{CV:"!n@߫h:Q?xmUs!'k׼dPi){X WV%b:;:xwh5OHDƴ1s@ G Az^hrNx &w?.Vv$X9shLJ|[,x|ѩ*?S~e2pX>Bš~fof%MkOcBX31QOpdè.Y{@ wHq ]:5&{{<y f2^Z=IƢzc]\R6dedr;b0>ڿ& sa}o +;i] Nv7:N pRn{BcHp` 0V>g1 +'0Db49Pb\M޷GC *KٓM޶@ڽk-^Q=v@^'oߵ~q FW:uPzM~lfއ&IPaoa9 ^sz7IkOIrQ5[?Y#A_rt7 $y'fIZ0\?a+!юe#KP jQ0Y&9np+TRKzADQٯ1c<4k톼=OߐGr`;E o'w~+X6MtPf;c3 lVAUI%Q?`Y+FJƂI~S!&$\Ny0”eL-ܞUö-0{tD^N"@=-`Xj{M|I`@g޵d%ᛦIIʻ[r.qB'L6FPwk<8 GJ=ek zO`$@ָ<:T6q# (VnQTm>r$_*{D[ )Tj_.%WdY\`Tf1`Z*7Dq= ! πWb[RزZ6'JX#_LST͓Ksⴈ~T͟Cz7&{9"F ?o~/o #eej(^ Ӟ>Bm1'CU@+;+9 SFà*P^H=/IkVy;[¢0mè h(#Mε6c_Rr³}'U=ZE+a  إW(_v#tUdJa(G7h s0f@dB[6y< c q]ɕ^a$8~PCwEy_ 1nE}{7B)(u{ < "HFr&aTndsr#0ƶ4%Foϓu@(@ҚdDVC\bxd* |?@v=!W8U\bVo:|)u''cx#"ⵑS|wX~ۈ& x_Aޘ+FM>-udtO sJ+7"of{eB/=`U>>btGD|w =gzMcqyT*?7qgd/KBfmg(Q'.d U-l GG=nbԒc@FӔrw oH>4  w`b0IHV 6@9˞,s֮&w&C2H]>q\rHii P'psF >Zv3 4?|Xؼ&(.4eڧ䮢C5?y5O~>x|2Z4WL†H @fSzrf4~pK[A%}Vn~y![[EgD'&wF dnZXDGOܩ]U癜x:'L8@.^2rߗ%>fV!"d=Pnzu/h"#_m0Y,ǟlcjE8r#/%.*$ۢJ6z #& _{:~/C<_ ɞ^BY3xeE=E4 Kh cOLu3ErGvbzaTZ͖X`Agw\,/F)x/\7J<M lM~34cՙ2g b}/z @^76L;9_l). g'zƯl-#0~NAD$OoU&3Md$#Ǒ9\ 'K 45x(ĭ Gx|<-]WylTeQ;g+#Q M͞I6b9Cx ʭi"mXXj;#Qw>G@lbUuU-4=T#@`$wC־|!tv{/k~jPVV7a]\b@O[(U`u//%hi++QD W54MH׫ncG?i8v3Nw,kĀ3ym,8֐a O]82*H+sBk V@)Ûr!d\{vGx+#=e/@n.{Јj&]8I4J6#%~Ǐ}w_'!cU/s[Xu6}s2WE=K~ \fF_(}Q"=3Hѵts@ߨ q ~:ʸ9V6k6?)ѓF 0XU#MgwGH1j`epd䄫g=}dF@fddF@fVdlIENDB`pybik-3.0/data/ui/thumbnails/Prism5-6x6.png0000644000175000017500000005460013137372676020666 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+Y2IDATx}w|TeZvdfL$L2I&4zC (* (lH@TTĶjֲtw@Q~ w=99}Y~IN¯u _ǯчR*F#y 1O\Ӹ[^ٴq#+Ԛz/VjczUĘ˗YUA7_]^Р?xXjN86'# J&2??5<F"p\6M|/Ώ!A,.}4^|Q_ MVe[Fh5-5A MKVn<51Ff E`'VW_HˎU~~V VYYY*73SݳCnN5OTdM gӿ 4 t^]AGtk@L84 ckXt46 w;}$+X 6^eNov05l.E }hK0n}3!ӃgAXdޯ yJNuKMV-U6)#0ܘ~^i(Gq:@א@WJ5NMC#FǧE_ѽL)slw*<᠐Rc<_Df;p{js {gp%t13hZx:h+~k凯Bν8YqѪ6DՃ@5ɟPP `' Ud<)Q&%T*]g@t,_&\:Vu',EaNPNu|9L>~(PL>&"H/΅m@fIˢ|us?1Fg>Brh]' COKXhвX@3Bv5qR5mƃ1!X3\ktE?Ca\1A6 \L<ĺDB7LDAL>@D24Ɛ;g oR )*(! e :/gL>ϧIpM)E5l{ 8ZƓg瓹B%A,x&tQ<$wLҭY2|673D3IF|!A@~[ȶf HD]D`\\1~2+}a%`-K pVvsOclN!šOU-p0!@Aޘ{ #Q\^Y9& Ӗ\8F/6f?W'cNffѿHQ ](46F5;/h]_i9$p&0i4Baj!044nӍcTÄ̡ %3J'DOxtWp&d U?A)F5H$0ILn1Qt:@ւF h& B 0pD L:3v&֢k Х^H'#yrM6Bqj tvp:-4yBo۵hq;%Y5DRBc `~9QedGFj/^'Ȓ%067[1 W pZdRWVr[D X,V C@hb6Ҹ% ևvs'M9g<;YR0Hݢ#C{fvC3d2 D3|haޕ)[|ퟏ$BŅtBh?gsfӳxHcd`qX K/,),<5&~h8ʐ쨚L#5HTO 4 zƌ/"N'v&v{4xݿwʑI.:ϵ?" $+!$E$ӕ<M!*;u Qt]s<NeذjEeP=!hXsDL* 䊐FE7)^Ah̄|R&OqdbA {'?¦FkM"ƭѳqp#}&TsB{N+0m!  p}WpQ?4(1=/|;an`hM춆7M'3Ņ"1QiGy8m\8wz~`+W1ύ # q d*] ^8^L0$ucTB(E!p|%->ZeX;q䬍' :$a$0ӜaOhqWӷp|pe0 H;oPA ⽪n2q. <'WJS:= k[@-@spc e/ ꭓTyhys %-])]M0OEᣏ.3ĴB!6Ə!TLR&I_@CPǷz>xC@$rtEEf;@.@@ ='"-9vF #lrL,І惏_ M$$pVNY =C$b~Nߟ-!H`;$cn x~U:~ QKkq.6a[h&\Z,~$!#L:ȵ9r8=ms̀I݇<{ tF ^5ޥgj,>=^G."0̧~Ķw&ָx\ΰWG4@Ń4d t4VmKcxYr$# ڋ͒0q-|d~˳Z{ #'#6!hGaG39~$K#hF0Qf${7؄AܝO K~^8 :Ńu<ż1|$jA羀ߪ&:týwkiJ쿁+V ,Dp TMeLz 5"V;#7B_ mV@&Ҿ&^i3F;0B6`nE#qpP,L70X"J&k?V΢i/l٬r۵c@0mEBH!CzEKtnM$=# +}f=mV=@vtgp0y;dUHB/L䵲|'L(b42z^bN18/L8-Z)1$R UB<@e`/lхaFI^1\+|XYDNpˏ"_VK˜rY=ADKYlH pA-Ԕ}-@',ABB - &/Kb@.j]D}urz^A{5T!)9t-D*Nh=1ﻍiCKMdl @0gQR'H cnh'|L_ XBR(MBt .Q"\&r d #CFc<%H+*TvU]\C9 I 7zGbHgt#Er &ifFWM%f&]3A L((%Y=-p!lɧe a6a ܿ[VHv.JOW]]:6h4vD&Y(@ H#oܾ[mz +9hB@o2QR dH$RiZPcJe@^*ys5_~j9ZML{HGnK3IP` Q@Oځ}Rxtz!N!h&|šLDB¥(-UpkR!!V•"Z:a7 mjm7VLNb&Hu퓝F0#?]@-#ýCIlۮEjolQ.MHE ]ʦ('å?{WEf'J>u\@Cq>~g,S$L7HSxZ]:?տ5I}%g[HǸڦVxp$`m1YӺWy(S)i:xD˧|oja۶X([ySSԌW^P7od`L= L/&L4'*DZi `7@f|9':ZĽ!MINT{;x *-kh4.¥? m$k<2FIkKM!`s0\$$yd+F[vQ3uMFK\$>F>\׹\ddg=/kݩ*)d˂7YJ^@T\{'w[h0z8@QJ 8a m!/ʠy#$1qX(9۝ BPt\N័i>4ּOVW{MK&~ dsI̼+6.&+3^y~|hr gĐɵ+ꋕe'FūY?:s>sDBg=7T_l1ӤgO2<`Ct@wszÇy;:~J$DUj_!wk, ,C'i#t= k%ב@P&iS4ԯ^~|{SZM. ^?%dh[0jb4 =vX3jcXTlrUG];Jl09TDC`>qD9l I:LnIk K"J@Xy< ;"L "|b 83G! 0o2¾GY ɫ3h Wh3oFRc ǖv^=ug”)og&.mu `S':BB0 )"qHHR鹊?Z)>Fѵit3t4X !8q]d7!;$4$q tğSa<@aB5]nHCHqOs/.y0qㆪ's稄LsEQuΝ-?|Pnj`ܡ|#u f d h AjVmPrm|~ 5>4!ũZkU&+<ʫ.k& `H7/t,!ͣkZC dX:Jc: xNq-[c~CphF=AiSӺ\^TPؽd44_%eg3hYD&sqkxJ4܄>Y!ӊ4k>}#b*F8{uWI~<[ Ӗ4ӹf3"fۅ5 Ad"f:{> t7 jO;;-c>3\M1oa^:6,^}vH|̯tU]MBp0#餉zAZ\Ol5A]t2۩Z:,=p SJpH5>AEN,fKO ˫]/ bh|?ߎ}Mn>*~HGh} c{# 't 2;}t &[GHs?̳}7 8g֚cAn-=ʟao%~oQŹkNg\xC v#MPXLpG-rȍJ#mh'1 $p\96@KR1R( 49nlɵO+$"h b4|4k&d*v`"L샜}97Q jGkݰj>f8+ljr_}͠sVVJ;G:-]9[ 蚳߱;w0v7jrK!!R&Ac&F086dF" LJ~}瘔. P;-U pavp$G=RphµY>D!^Yb6R!䍩mfxgrJG +n<n5,! ݴek9l-v wa'QdթyqDH婏*5.)*4jI /0 tHĭt#%$Hhx+"AoI'w7qmasΑ .8dIl@@0R0Zkԡ!\Gbtl\CѪIX}>P=wZxw>t"4^x2@޷;* Z !x"~@glM>M tf6iDߪufnV 3ss-ۯUE:sR$Jǯ}L:B '! ҽCsz| <`W?vO*II!Yw[9ANORE1,` ?W}NH٘uJ)n5WVEB&70"GEpM>u/g*ӟL=tMٸd:g%Z7rjyL++brr8 Ic/*R Fp)e<m_ Ydu@-՜E{ud!6ѓ0h;8$2/ھtJ j$Y% Mv,t\3qok`ncpܐjj]KNԑ2Dy*'usXnU]v!CNZ z~ S G14ѵ ర'UaC-箟%0R7c0|6>j/std>LV?i+|`AObEe.O8&J6a:&* jˊamOwsk%|SXpk3AN78#|e^}u^++28o,H+0wNp?mxvUy@wnz k x8V~C/)Q]X42I3?- `)?~'g 3etXpN"&ӓ%b0:FX4I9woI&]ԣ`aZBz‡P'C[8t `J7*A3EumMP2o"I2Z8 ]?1) :#u jdTnRμ޹pBbr9$zXힻBu+P[_=2 ?\gGDD] ΋F]tUo !qy*Ǣ@(7>I܃ GZi|J/e>Ƶ#.iyrR̓L]X *{pxg6D|nϵ}2Sֱ]tQ()@ux2uU9E@t2{mA0T)3nP+\Gb{<@|#h$1 $[h=l,YL%Gf(kFL I&c;9->LHCO۷{sENڳ/8@3[2bMp޿"۽u=|Wq ܱ;Y4mi`K\$ߣs"tY>1ƥnUՈ9wF9ǾeHʺ@CvZxE ߽TwS(iSvf+A4 n!#It*Mk^.9v޽@:ƾ}^f V~?vt^u~|`ylG]<ʗQBD J9+'ä?3Qڍæ)Ĺ'w¬էZԋz,uU6՗d5n_7B,a ؅INz89F -_U+,^` dxfTq>2jAxPbPͻSHiM!j򖛩f`HQ?_sD7{¾ ܒM$r@g-Wԭ\+tf&#"E Ae7. ض"ɤrS#[Y D΅lnj^r}  ~ GUW5{~!$~[Wp~ۖk9W /wpoRN(&jR;ZG;N軜DۈByOy*sYAKR'(on{(U ggt6erI:rS@cAhҧD9Z@a@axX &m&Fvmumj:ev$М-DrOe@!S ¤ٿ_MĚpc%zY0ǨUؑ%L8Y=wbЕvmg5$8a749\8}ud~mоGJoZ`ݾ|PZ(CIHC8L;|tN.|{ )i\C=f 7Ŗ@}w H ~SU϶:KJr e ٮ &v0?4āXrs2p'Sßζl8TEirF \L7y$.2Oﲧ!ӝR:"xZ/Y+Y*7qq]c2j`@y A.[ Cb>|_3ۧ'8kbw\iI!mu;'PBKO3cA_FSI!K.` ~ۭb;AX:Bpy}ݸVsf9$:Rjb:fg1IP&2@#DS_|@4̥cdLo:4?d/ؤYZ0H`)IZ =YEn~.xѥ- xF'87Im!VҬ+$G/f amQm  Twnޏf-@P\&`R n;| H$11 })z1dmh @i$B9j_._@U}MmEWVFi ]Xl~\ۭmS\Xouwnx@j%$ m&,d#0E79bӪXn:KxőYZ8D#FHBX}c-ΝS&W^4; G[[HIbv>iP֍|:;ٿc9h2>`핽||dg$3ÿqB*[{SӍlw[do_dF?=,->׋.ⶊ_/hlݨ|<'i ?7|4 ߠ=V@q >,H/5*}N9xy:򻃉O ߀{Bω~e# M#N==?K __їO[uggZxk%1Z` ʾdod@h:?4.Hm\J?XiBn&Ial ?ZWI'0(d- =>!XX4UGa aG(YԻƍ5^QM)?fm3Ȟ///d;`<^pqܰ4E5ERja O >_@8\DO>d@:ċ~wE`g/&u R)4"jFV[ٷsE 5cIoԹ j- U~\v:d ēCV^(2M,Xֆ,%s `%`滷UXI~G4uG``' ^qv0A7qWKg%|'YA#Ta M'S]z\ 60;; r{[el!h5g6? to$L848&ͼ SīWZ "c{;_k"5p p Nwi`L(%_!LJ3.xzw2لA. !GVW'Bz51ryդzǧBmUͩ󑽥s$bڎ~϶^kQqKDqиe7T_WƠ(A! Ans` -llM$>Yd!׻NzBi_1 ]*)!Z=Lnzu(SoĽ60S9ޤcdv2(]qq[!xb~EdmzӢKҨcȌdC, rq)yki@!xľ}i B %Tmo{CMGJqWnɳs:h┅8k=nbAvna-sl? 4)ƒu{}}&X?h?M} c6?-}x`uo3@ܲflSأ;3"g=-"hEq f)#II/.b0á 2LZ*Iܣwj&^FXuݞ-5NbεY~@u=>4ȇwiHS_x#}9;u9/c@;7~'TSHR$‰n!iz* WZk_Vh@ [C{mՒ{"|m;'}z _j-bUzQXjTmp' %?dT<gE|r1}?ۿS܂=mԞ ؓ.0#{:vlbݬDqw:vvrnHBf !%z[)1LXJVP51>J: }BìGݿ^ׅ;BʦuAEC]?>$"D=}ujsNzvh`'0sg/כC;A!6ŜcRj/@wj=ݫ  V"Gb HÝF @?!D[ׯn7p,)f>w:Ch>WY)Œn>S͹  P(+S= }h R96sk$?No֬r*7}_PV]s( hǬ)#ˢk g<}ջ- !D r6l6Gx61Ù,x+%fLg^KqvRv&{ =*'(q [dKCV ܼaT^[ mo;4]ʗ_wڨۿa^0u!L: iæcmXL`do>oD)@n,ބX+"JaH罎%D#c+UzZ"'jvh.N:Ν.5~ݳ t6w3vR ۖrqiv"b5'9,tŏ3xDl5nRloz³hZ4}3/ M`azs;tЯ{|>Ev^2{Zݺ.Il1s-YkM9214-PTȡ'8ɳYmrJ8?6˼7NJpԮy[}|kf7Y3Mxa$B4^> i nZFQ"C*i@`R%5>XNʡY5t$~_fؚ͜'<ᶲ3UIU^,|,xp~.|SnWT8t3`NYw?% 7a' nɵI(WLJz2.Hshh(&q̀j@g]:jhzŽ:&6Aܸ\:كY5)றd}9׋RܳoxR[SGn1tzȜx:H#8ҷWqhiYOO(M= !W/A`Z.T3HL΋ o qAJgc -#`r~FO̼%Dh<\7pcwX=v$sOOMR)DDg[=.QAYXQ4e )؉X,^$}AeCr zY /?vWTҫA`Aa@1;u+ "d: 14=\X`[9/U.*UBċQ#\8B߇|"9oӞg߰h2{.*y}ӆP׷ǪaABXu]})m֗94pfNܷg("ɫ 0qWG( . oV2 0r`a9R f{Bnh(5q?oHc(Y& -+Cfbu ۾y 'V->|Ay1v2|F}Ax P:t7~G&(ZLjُGȭhrIvqtnt8 i?S.)}E~#GGG 81@Q$WH"J06Ɛ)*DT{O8Vh e#nZs&^2v5Hڏcݪ~ 8Il5ZNņIOC5Kɬ57녨v61YQ%Ri~4 bqƧZOzDXa7yr;8Y~e,x*8[Kg}@ 6o扉*3](.Οހ?d1ۏ애lc%dQirכkoFڿo[,0ݷ+ plZ0x07Hx)ٲ{-Pwt/*^y_O7;_x W m}x)_N>gH6;gT&˳8Җ50wp$!YN& I #hol9 c;JUO-}Y]k0eեcV@uOo1QFy5@wLS LK@dQ. ΁߈#V36tY#F@g2pn !8\?dgi95H'īeLJI> 0mv0`=wWzϢ!15^(* ᯑɋ!5![ُS8B6CUId}lזp? jxOG .وϷ Z3H v8PWT~v t%Τ]i ݥܿk {ޠۢ;΢x(,&E#~G@/ޝ#oT)}&D>$Cj^n",fm~9' M> )dE\34 'FW۷1GwpÈ,h;6zK.n ecd A U#,ppY `H%0i6`2t` Rs7`;w iI~*?w 꺑E)be}t.l ro̿j'H"'| +i9?{Bnwe?9X}ey,3y>-`!Ta T(!2' Uqbbd-xլ@cm> X6Nʾ"Hvޫ}3m:!B68>{|WO_R+lp=G TB+zDtcRjc[ueHNP!m͝R[pѧ0+. )WȡA>{Yw?,`:، <\40[s6mZt Yu֘r}BH1#RF0(!T]~ pla޽#n`nϔsoue j5i}>yك.~i+ݲF617T? ~T6A}׾/ˊ 'T>[/ Q//6f"kR|~}z~~ y$P6_DMq Цqm@~N0IЎ_/}c=|v_6j?[c '`TL} v \M\ k`@` ۶1t:U9!9/7[|u~"l8 n.>5OeR0qYYCh؀3K`AW`9dYab8Swۼ%)<ίm:^e@0@Uk6[vݻWVy6'HYD4 9^b}p׏];ۮU4)EBOk'ilBg 1B/iVSOfs"~5bq=ԯ7c$}zU/Z Ff6Nܲ^ZI-mKgG7~ٖXXU|lKi`6|낳M'D$N[V f 'ɑ4BzbWֲ G8G8⎀X;C /i+gE=s~6YpURKi,}3@?MTAEd'zިa 9u&? XSxYjp#[,m5 ^?lOd պ1qޕ,"7P'VK K oB[XٳlR50Ԭ@ #q^8M?%]Dg@zݟ KQ,l#h`iP^Zf:J]/ytmdqu"[!/թ10`ن v VqRNFO]{Ŷ58vq_eh/RQS^8?FWV8w7p or ծ{UE ތp.IENDB`pybik-3.0/data/ui/thumbnails/Brick-5x2x2.png0000644000175000017500000001311113137372557020774 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+IDATxyxTeq{ڷl@"dD5l"N4nQƈ"" ;BG[im{YLw=OwsUu+Tn*PqTݪwy{?q-9[v^pS+A*vB;`XM0/a|ؾuKmz=;j, o kM与}L"[ `u<R fobYi3OQmnA^wSfh!3ۥ]iտIxn8Gg?s\$0P_Bȏo6ױ}"z$:vPv U 7K.PҜv3ò W&g{05a% Ep)uCItOPzż^/\&+ n71|Mmxj`p%fw?N({0`ȡ!B0L'_%xI|zĿ1^G}ZK_16J~7O- ]$m ˄BePV`#aM' ej pn[LY-Eר72-IO~گH'CAb * `E┸.b}]H9J\{χg)9`HA׮__X0}>iy B==a:yGIcHX8fYYY,@a W DZJdMZzfO g.QrݧOWȸը,X0tivyKŒaC|ܤu]eI(:N0NR{"lac}dw4rXBNmԸqn^-OD`ܷUYdgNlU?.d$hC|k?$ǫ6V 9`xE5u%|`tM4|*fSfعuK(p\1LXK0Pp rCFkWLq>& AT$m$@`'!סcn g[MC:.{`x"k=Dc,^À#|V~!L%Ċa-;nJ iok>vQ~8bX!mvQBac~Aj<# `Q#Za$nIl0A)#5Uj/6 L "lׄo9ʳR|nԍYHQF.t&H@,(}G0^T:0XxD8XsGTv&ߋA(,,PUl|=Y{a  62:о m}>RI s][J`XE-~ݫs(#o'SduzT*襔Bc-"{tǻ >LRV)XGL!L]oO \O^F``~PsD,WPz?5ɢ=^%PF@>}b>Ic] hXo\ڑUԒ1&wU>`)<޻v1IMs+mBX2FoӖGǟ@ 3}]$Lr?eC 6Qww O6ȏ3U1ۻ9@hpU"5ZGY`IbV@]XQ`0LI:K-!77wedğŝnQRxt}|MzvwrJ >0e( ӷ.'gE}݇;6!+ʟGf~%{4OU3@XǕ*QH3g\sJ\|~X)ltPXQ$aȡ eQp L+LKGc`@%m[Eḙ8,UcЃџЉؗ/$ eŢ>|њc~XQQӰz鷱~/'.o)ؙ babJ#I;Mv>@^;U5O #;h68v!5_lt06Φ ܳX"d3 ũAՔQhjxRkTI5fB+z C\5ۣW6f,NEEÍ>C|MlY몇8eEu_{sW?ŷ(@ XQ0 2W'FMlju_ BbrRb[@);@,lpņ<sUto1ڽhjzwć4LR" |ޔұ8V>UWZX3? 0})-{+:A]: .Wge>{>#PDڋ@;x07lg_?g 8[ky=V&(aqsRnQ: Zh$qPQCS緶H7Wa dۑ|n!hِqA h Clq- $!o4KL @h 7w6״`p^zb`"b_E1XMACʚ3YQRCMXLn B~)s4 !N2%y?&ΖQySAh"@p&B.CK},m|3¯WoDzFz[/5y=g6<_vx]92|aM^#0`(Q9?Wwײ$>X_@9bac NUWhD6NATL^-x. CH&f ؙ#K q id-P RA?[M(,J Y4+3I=w>su-!wŧ#]8nvΞYe FK><{[j=wy*T' É+1 L@%b$l<}ҶmbG.Ji6qo6▌eIWhgKU~ﶹc»(X'So5' XyJ%~s /as/W :+/>2a^r;~}~*| T-+S6/&а15MVxD _BOy{#I8w4Zx='m,>{@L䯚"0Άߨ#=_)=C#xV8KYaiE#9"@64 ČZa2Ė2Q*װle|l,]㳛es@=a-{';xGQK:o +}~fբHEs#U`R35@v<|)g'+h%'_ccgwUs<?it1YA3L AgH؄2Pi `D?l=y<a_T'v]"6ql7^&0"Sa`n7`,AHq[ZH> la-^V|l$=SW Zz!0WhĔ.'GndB$ ҀE _Fj>ب769}c|E<gMFV[hv!a[]D.ⳏ^v=un#p¢F~KYu?!>,cQ = b/ A~RLwXz't>&xPӄX+X`'#}(h#+쏦Q/ӏmG"+laE5Dؒ܋f%q(=Kv%^t-J:l n m/j Vpw";5[|Qox1~g)|GYa)+PPGLBP+OH>>  Mi\^y~K"3.%b<߸6DY/C8C(!^pb?2Vy!" w*|QPۣɞIz PVl'+, %*Li> @ $%ىًnIENDB`pybik-3.0/data/ui/thumbnails/Brick-9x2x7.png0000644000175000017500000002123013137372604020777 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+"JIDATx]yTՕ?G^U MȾJ"HdP"FQQ6QfZ%:FMLLL'L&,wDnq~ շnwwsUO<]f-k,Xf2 Ye,`,Xf2 Ye,`,Xf2 Ye,`,Xf2 Y//mBBˑN/ډNW[pVJ]Co1~ N?fv6"÷ph.Egb8h+;4Mem( i[2_\`(d&{588xr ?0`ȁQ7[Iؐ鐫23\`hΟFYc9 CF9f fkߍ'` cJY#Z|x:1$8R*2Cw%.괉Jat2ǍT#5|N(H{j@.T\/`hunv]r9\D.{ [ǺԉpSY*v`L!`p8i={@ D9e#Χ%0M0mCyϛu7ȴ;pJ0 *GMA9`wYm`^6x >a_.2h8RQ]0,c461e! LկMΛDo 0@UdL8s GU)l29UVZ85}D &g[``'`&WNYxa{0[ڈ9Bsq]jZX{Cy#3XYQpWhgT͑)%n, b{[Y&Ϲ }5Xrcwd^#9/_\wr͵xji~4du:)>i~jXny<^׍L9?~%ثPy1zDhD2:}G8cWk b'c83YC1"i?gJ߮ 0 #pda&^#/i/ \`WGfuK0#˰v3yω83]zzVY"ʚ-ffé}< #3dB֍Ctnq/qq1HYRXB 5 0RC{sc\>@B`Ψ~< dBc*|${aO ӊWYfCZE͈t6, #]v΅2LǘXFfDD>w0+ü|=S71.|p}fRpRotEs﹐CO\U_Gv'H `F;Ww8$.iC'y0L渭SˋT]r=n9Av8H: Nza_q``IZKZ15gf-yLյ~<( 0 T#i`t rY\K^}C:-CL@rD~"+z=b4K"l9 yxJv>C kZmD(&^;v("A,r@/BK8}VJq#H`, Lp,$1w9,u|f`RmdJM~]LM o< 0C wg17{W]ax'DI7fs5e@8yΜ_\yO[XQ?Em=L3;.FNxP 0 C wx@L’1/q!]RQ|B+bNFh5tiu\Tͥe SqU*FV 5tŜ2oB(PO'RO7o5v,&&љYp\&Y#l#LmAInFJC}y< ~6Q "hDDRDKplS/'9P u ~/3c! @w8yv"ίEgt]ԆN?Xdw/b:CLY"n`8{G;Qh7E3 J/RCtvSo8Oa( I#5zzNh"2L?`=k9}/0` i5D0az-y]k$pQ &qlfiYF |:"^Jk FæDMQ]76DN#z: _֍#jf:B73C/Ǎ3mz?#ќk R'時u`ӠڧKĢ)^Q- :0MgsFX4 0 .}bJB)g3Av2J0}G.U ?{ HP5>|d@x?hQ[y! 0T=BAqg$VA.we2H͝!z#罈.nd,dqX,".+lԽ†Q4IUӣzE$l;_f+ۿj`>16,$Ӏ"?0U@ďH'êb *nz{_G-ʼ!OI|kÙIF&k ˒b-d-橞dd)<JO 3#"#pcqMy4Is)]f0 ׏.SɃ*s,<4+|s*9CPf)Oo/Q_8[K쿝臛=d{bH8.bUb1Fn:l=]9p~2NL}a t=##xVP?"5U+bfnA?`vن6!e.7 F4stي&̺xW6-ĿOzȼ- Rk%{"9 rS|U!hu`,2SvDޓi 2LY>f24MQ yʽn"೉NGwUbޭ1 MǪ*Nv =[lq- >֍|t%3—b.K͚n=əsUmm)qc\hݝ'a7N뽁Y `I %N~gji52Ra5x՛K8Yœc A7UwxŨ2C黯*H;DxCxم$N78T˷đI@fMzHUxsf@#;̈+ `~Qnn,wnk Py VqEvO%3S0(DO(u9ɡL!~V V >]'7\mfEr% tU{l쌈`7VlTE!nk—ˍ7]ȍK͠"t j ,%bˆiID\Si+ћB]2 dw$}mbq ̉o?,? ԁ !!z.Lyu? tT >poDO r|57bj:NC:NzkE?@w@%@Fx Y@vD}h5ic* }hk+fD~CP|G 8LGea؅.:Dh:{OXXGK"BIE]>YݥYKD9tF2Ef~YHA9#s.n4Llёu~:H_/M ?{M\bh_?+g֛R {3#_O eaHcY@;:Rզ®н{SeS6#3+yT'kѡDޥUzavV])gD3Iɦ/P AGjt QXc,anD)=u7<-"j+Z< R n7*B/5+4Op7@$h8d6U򱯣c\TB8D2<\DIM~y8)Ih/%e[wXrF4 @* Ύd/1M&Luc>xH~]l{8,<%'ObB6,RuHs >#c XE9.n 0C2c̟܎MT"kpӈ>Xy70"(X{Dr4AݣY<$ɬϠ/'>~/Cݞ*B~xd{˭|M\tTw%qs1 #&8-v`6pۄsE}4?(B7dV -{ #‡:y;ΜHZghܡKDQnsVnS;A,CD0POB}ÏP}g'1+H(WwUPnSKӔ^ I.BV0BRIq&YN0$W5tP|=6ph'~Ǹcvr y9`d/j/ZAy\) ;Lq~TL4taWYuWMw!HИhaSZR'@E0CQNiI/^#5_?'[;{xUo@^}4\ 0֧BXwS4A\q.KމMTH0t]nE6ߩ2[ ͆Q:)\>Ŏf dLp^@lr&p(&s>dCIߦ4TR$'#2/y`! K`oȃT?͇w+ZՃ!<̅ʔIp3$vwB%YAr|(EI.JDh@* Xoc4).q2{#zfnf&Cy@ xD6Vْ}~\󘁆oV@y%MbҿK̚`329[[A#j*,/̈́c  z&YRMPH⸼9^C (q7+9At􈦐=j7P"M'r> ^>uR@yʇYSQQYyX"NJrgł|w2i>qLX6'pnuW$PWo׳ܬ3m;c'LA0%Gp6+|s۰ xp4 rc9-F{1-0dZ%#p|ѣJPa VWJG>-^@ (۾>I+ ~xS}ׁTt۹64[YK+h4[+Yݩ+` 9@l Dγ, +uS3H qu=סxۻt^W*{xT4 ѯ7-)wr2ҾO6z$>?!- m¢ Dpe[1/j$蟨xOgFYjS;6_Hg 9dPukg3X @joӧy:E7S{5ܾduUeaε1+h fet{=D&62~"r2I$@ڰacHɨL|&{;a-~`IȺOd%1K:vyaֱr~ ˪yJ4E (.pi pdvq6Ah0o>'%PhFͫHًL [Z@翽)Iyԁ˳w}Qdl)y@u_ !fAH ;:,!JA4{8ik9*$!( ՠl:'᧣%UDfR.F7QR`̪8=U߸h6۽zC MV .dWx|dg@5"K`R܇d^/l)'+(F8 Sı}C +}OrEnL!7~6+E_#ת>Ё/k*jJ~ w"e(s4&$@W@H[`RP$!+#FS e)vr%>x3Me:ĿΒu{w|ɘҙ ܘ`us#)4]5>E$ͨz!^[(||q8S郓w} Bj*`n5Ge Y!+vDWqlH99r2䔩^x[UŪ򻂯|2eb0id,"4 ܰYLX&Bw?/p﬐h-X}_T-EV*[EvHHJ\2SpL$c$nNw18WgֲFc=2i@>ގ"li8tburv-0d^VM˄]1Y {C̝/>$['vmMrL€˪Pho8\It71l I4jXy{);!q 8=%YavӉ<ȶLJ[ϾY!|EOȯɭߓ/ZVYHtVPUeFIF]+71A` YA[gƐK[~q&[}>$QA[PVͽűwe/!ZBeu_[w0!, 3!%EPɸJk~١ њr{*ʪz->]?|+%߅uZY;IO W(+ܿg͆ԩdʿo]E)nUeQyez\ܬE`-,Xf2 Ye,`,Xf2 Ye,`,Xf2 Y욶}p%IENDB`pybik-3.0/data/ui/thumbnails/Prism5M-4x6.png0000644000175000017500000003372213137372703020772 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+7IDATx}w|UܹwSrIIrB{ DXX)JDD@Ez XfTiqF׷}Owg!_쵞U~ׂkWms[ vjPjPjPjPjPjPjPjPjPjPjp[//:_0$7VZo\LDqܺs[ :y>'V?SE9wS2=1N;W߉|QݺWE9~A/FmpP=4qmiq kl)n߲˞kӴ~v]<(@ڷuK11JN",-#EYx[= Of!:﹇b eq; x: XVf ԍPu;鼋FMfDV>?Nobbnh/3/x\hZy|C ^/KdddPzzD)-!AcM"sdyP2FpQGj  XǚY1nXOY-4<5v?b/3ؗy`X4{' i'YPYԙYC 9hf$ X2S3hR0@2i Z 0.2c}x(`JLL41A .jdEGR'\7ܨKk/49e>-1v=Oƌ;jŇ 5ڃ<#X%0-ڬD<#"(ߡT~nTTu9i;f1'zijR,uv5n|KfkJ z(Nu=nͭ +Y`ܖPO/gu{!TWYL{ S3Hj0;C@C!ũzg =4YPQ Lt`|v& HdjD-(U8`tSs@rp0l&19#s;G*!g 6>R% M[/a"[ 1q:nQPsx1`3l;t} ?ff7=kA=3óXÀGCOKPQIK0&4۠u%Iiqqk-55ݺL&ֽ҇U:Xnp AC/Y i7,L-|0sZ'Hsv lkw]z%~&5ha7뺥 KjO>vMPANʠi&O)1>f GB2SsXggg:Oٖó.֒sZ}GYKDn;x"j>ʃw(ePsp[U u;hH&ҠA}u R\cj6n#9) @k\5)֞߭/_51!nǶn.³˂1Ca 68L 'xgy p0C3}h=nm)>~.+7.g? Ёp=ȍ{hzLN=4c,sC0FrhRct03ޤ(TpxA47 `p!J&A4u&8CH؞G17&?R$\xD5j~ f/84;=*Rly&?Å@s4Sm]/M-t`:k-0N(_j pgJ(LV7!6/9neeY@dOT-|zDH~/_.cg? 1ւl' ;x\d~>~~?n|~ pP"|#ݫ? tC `5dl"^ $qILI쀅%:AIjJUYwB+{yZv@Ԫ{|f_1|| DkXx(#'[# 9@<$f,`QxʫwƻꙎR5edY$S Ց,"\fL%)Z#  k5knMjwCl'{s_<6}>/ #s=ӘBB/ *4@­D k_dWՄ'0u1OZI១h>Y_䫝.ThlDt1Me fz t% B錢D_{P,L\AD~Pdݏ:OPEΡ-x? X @@!  I,Pi 잯q 0k@M 4݉A&~& h0;A407s2>x!] H=陌2pn=خ#r83Wfp7hY`C *N;k7h7i浫7?9mCC H 0_G $0?6{@1cׇ0k('@CJ1%,Zie\~硑 (yV=;u}OM"TdӪ#4Du\ii5Q@P@[@HҦaZM@sncXIꜻvH1 HGEpOYE;BEG,ৣŭw4/lסh"πfI֓AL{>|C3jcX bNzri<iWV#Աc3]!Mƌ7ɍڼ7zMB9[{ k!>'M;BGX?r@\4̂֏TiZM}9%σ!v b72] Rׁ !]2kUY|U׹ed1Cɡ9k m&ZϘ.lWhO*pA}ƱLra`ah 8땔DI<{x\&>`<$>W2<;h1.0VASTv#0A9X@23Z\VT`{To75zýD}QXF %'?j㏊Gm`ҫ'DkVSbz&Qwc0`C{-7w/spGY-<ͧĚBquφi hIO,ϯfЭ5kҥ(/a޺ D vXNq+dg-P|x*RaC#dtqCa㗴5X`ҏB!d)|tOq9<4d>bJ[p|EKMVpY,f;.X, ~s&Pe* zicr lCs1sZN,JdJ3, ,t&|EF,i{BIzihr=AQA7W*ACߐnڷ1ϊCRL]9*aXShe;dkP#r.00-&Nž JΫG;U[3e.&sj}QBlaqʻC<YAĿ |=4 z _(5f!IiT!?r_,}zW"3D$D-OB2ftY%i RwCvm)Esz~Py 3w/j;wX`},bg H740-2Ο49B0)j=kpSl7b bMRqCZ[5g;mAb*.;&wf?,hw6`)jT:vewf}\<}B>6e#wT [U XDZjlMѶxn,*` fvy 9ٱtQ @=S +Ͽܽ9c‡X(F`k%|FڙD#wDo)qabŰ& y){'O"nr,Qu{*<^bA&hYi^n,?YgWl];;E}b3:D_IG?=Fԫ*d?SG҄ -o@f'8n j(!;8q†zG'j|- 4@Hr(VP};iC tqwyxMhx * Qy/B6wo`'_E_Hf(WSTTZ`FhGu f]<{` \B 0Alqʠ5g:h=T~AB j_?Is7-@ؾ_<*X8WIca A9 Ԥj"}N BzYZ;7?h@)"tݼe(L[ϚIgO0a[1B]aN}]nجi`P i k1''zh€qGSߎn5-^- XّlBH~az+Ke4PI_n_KS|6HT + }W,/7`sg+P0 ϟl2z(T 9 S Y[Q0yԲ2bXЫ.A '7CGVS-kTyl+fT]JyeAo:v_y(`f ۻө adwj b +772OMhx3$ݯOtb:iuTpYJЫ}dGO&4lR;mށ@0(]B ܐhV=!j?>ž0s^/,>P1_kFfJ~1|U O) ah;JV}z2`wnJwپ.&Ǘ%W^IC6=8/T^#ʥ_z dB(͚Q~LSC{g6$P9eFnܘO3^p L|I8*+r+J%kH H$UD\߫X()Ғ{y=|Z Ch+5R#ܹbӻ94lvu Ī5 3Ϭa>%| a`g"&EL)̄A1 LVg_ z(z8ne9 ޷G:50^|:%%+q;-^j$d vY3m7e߁x3XW CK ~  E`|N C[te<ݺu>oW9{AۧҿrNMҙ?̴ z@}(.RR\K2 ngӪ|Ϡ*vϘ| vtHV6k~ {`C pZB4eHgKw'7vg~i541rD ZdyX;?mam=[f`±#2 V' ЇE lśЂn6n+8~,.Iʫg i9L "J%] ߼-pZ ERۦ2Z6pL3&gGA%KaؑuqMLp yvn*gσnS(PC0-wAFÆR eѶJ"4^_]NJ8oexURA77<}_z%8޻}3 }xV^̊Eg~KYJ UlvpWmH]#l9،tq`97m:l*nǟBnghhT@ ^Hf^[nlOoC"Ųi>TvƯ̚Sm U`yYQјq50&Ae IIrE`&afr sg!${}i u$v) A T!|*?п)^7?&y];mhŶgmk{֌xE6jQ`.bX[C9HbbVu\ !`;PW:EjBıwRs xc!>{#el+G2ӟz0:n6=ڪGmAUh=~jL~$u8a/l>Ax4CV U ꠿`GܾTy )'E36+,Jկkbn=y*@]5^u ; ?IR*`xjP-z Q{vI5D=`~S/Y;9x`!a^zLnOe FIZ0EJ}doXl]o@DGBZ8nȠrWw|o˖@N,+ )4il>DZL$O9}VL3gUDYcSGE1&|ItwSR|X/F40Im8?Щಝ)TFW9 Ԯ2=I|9V*`A) 5, GP ~dZ |k XHbh8U|5OSi-Чꇢ%$sK1~ nI B|\+2Umϕ@V1@1i±WL~Pq9#ZBh gNb,6(2/~F2;U_<!|4DFLRsa0o`#ke0'=+v޽6~QWSrX'Ll5ǧYĎ`V>Q@}go(- Xkc00jB,|("*W+=>;j%5Z+ ݶUe2͂a*̙m~ rw7MtA$Q m!lJ5R:{bWl{.:eC՞ oo?b{EjX6+n# !ԯ/U>k=eEXI,U?[L,} l7UKhݎ-uk~KbvmP/}>{* .Qk: ݣZ4p(!(¸qe PvG)gOS%G + ,4% $xMpyY:(@Dž%>ol]5A95'w$1R|4=8?NfHUǂ~"GO1ҙ[H41I0fs,3#BlH}Y};`2(72PHFR5<5jU8E%McS$w&) 9c^T~ ?X&娣XjoN蓋ixZubi@ӳ5hz˖^DN[-DC>!>+\ aS>GUEAc{TxUw6MnI~7Cʾ! 8c BuT9|Kpga ꢲ뗊܍dAm?f34{ ŊlZJDjѴ0~ R[PβeL:k _ hqfVoب0w 9 qSa)]uGM.D wzƀ85dG-u\Z}@ZU]@ }rrd6'i"&fҘ?bX!X}DRk /K8@p]jGr/$I<6cMڊ )]dпj^|4=Dr O\S=Qjpc7P$n.v* 42 #3{bO%e_"s5'@%{EWwprr'<@`AI(A3K2[dJFjc(7 R\=Tծvhqq20#(@ua܉bAT~2fbvm5`;W ٘A^;0);t!]hUAf\Z2>xqMD^>f\~ $?V-E5cI _ewXj,sOa#RXQEL q Oj @?b9U8ݐH]+RX!"D˦)GArWUp\%6 ϪvHTw/PeKaY z,H{]#?6j:/]"}(!e)lXUMde|kiʌ'ˏm>@?V CٓX-z{. rT=C{'`$6u]> <0|؉)g !sjVkmbbY`[@&Y`sk XKgIҧq^!'mXG NkVag/% 3U0Inl$Vǫ/ XlqT`0ٽ f7HmH%W._RɔM Ҳ];+2,D6)':&$B`U~8~ھe||Z5[IrQtj/![* x]̤LߜHHXdpX- ebH a3Hw뇀y>Ѽ8x&~ِ~C717W[C)dv?{9TðZf*?iL,@/gSFђ5b1 jV+ o;/_&3Imnx t0'@TGl(9)bFjFq&7ز@ z.0m|nZ37"#PJu3]^y얎-AnYF.(WKo{Jrn <R9nl?QJ}q*ma6P;XZD,r/mԕmz=l8%v&v[,\~]]ԫWKo+X0bú+@'ر AD~"$Q|ZΙEjI A6Ԗ8BkUkO Ro( > *?ppTWԪڃHfɅ4zhUկ-`-u-5?tD8^."4o6a hWlOXesVz GAx&Cݬxq㣨]hZ*^*$SfPҥjtn[hma[0!Qێ@-QBBt <}.Km;tzYgzE|FQ@^;gDX͋x##^ّlSYW '+Ng+Ia-|ytXIu43޸"ϬϺDOOh_sʭw,Oc"Px { pe;PfS8j~``0\^Z62vmLJ!!(L} 86=IYj~ V lt++RD =ԲZed~PI>.j${LU-M˧ݖhg"^ޭ)};FuH$au- U@-:/,>3Z}>>2mT,$@n[߇]pO%guϊHGxw[X}; gSx(^=qo``3}oTR*[w )dp//.EE!VR7Z Eɮ`Hx"~ %`e(1@?3hR L7OrqlS4̉yBf1 [}y$Q[{yoGI?k`ݥ%X7OY@@g@HbV.)BB?blh73*qcSZ{ >\V б'EB57nn@"bߍ :9vrh`ŭƌ*Gr ͚@^:.nj8ZHuu!5ajF}\U.I%0 F,a%{r߲m[ֿR_#`&-ԓe<%$4e`X4*-i~n8XA&|ƺC%b4?Va?Tڥ;V8l[ R\:E~`3T⒥%wqוa1H眊_ڝBWM/9oKWb[ tش;Vw$ m2;]w,j[-j[-j[-j[-j[-jP;mmwj?={IENDB`pybik-3.0/data/ui/thumbnails/Prism3-1x2.png0000644000175000017500000000740113137372651020641 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+IDATxyTWd 4DA4: F:jL2%"qE#2YF f Ǩ[Dv݂ުˤq>r߻O!@"H $D@"H $D@"HFiyyLqM0"kժ"[*'a)ii(fZ4,` z? cHd4«$nH˔ψۖҶ1Lh$g`cjAȬUږ-[%AwijLU3md*gei5!<[m|lILCh;owBB}{j -`!%ƫV///N;CŊ` Y&/g=CX+^p~#G>C fcߡ]w[>TEয়~ &X@О ~Od @Vol~^zعs'`\rt"@?l *|UX6fyAhW0jXYY |:t"""?83[IJ^==:G\Uk.PRRƱyfIᛘ=^ְFJ|M7ԲZL>|C!3@W2SCMGe;H*iӦyܹs, 2ϳd4/Vj#.k,@9YY ׯ_X  W~Lwl F2 JӃ8~8g0Vf~RL?G0OՍ[ *Xlb!Θ%F3}4x}杉6oٓhŊmx Ys OJ|L\֔15ilowE!̠F8/e3&76_ 7o wV_ q HHHM13e>g~@ϣi^8 /'\̜l݃0NI!fek3gM3}G`I5au E!$5jjj]vCXf53u/L_Ro9GhhhGTt>kl`02M1K0u V XtwdeeY pM?hk#9ٽ\UAz[nLv&{si]`n u`۩XL?:wl?ޣij+Cgcl2GҼ0K`gܺ@QTWW+n:Ok#͗O rTTT#rDGGC``iǛ/Sʙ޵\s)1cƒ71Οx! Lg*y7^}d*c'PhL4I~̿s" =(Z\/t4ES`hjX/(\ZѰɓ' jX83fޑHOO FVϩA7?H1K:~{a\FncPP\R"eY6l)*)ԁ8 S@B~Sl~ҟG}]5p: 1PxbxI[Q]:f;v&3fxA&abz7=]/v <^f>V+jYt֋qG[%s5gG TT9sFLq*?8,-6kpøR.ga@Ŕwfĕ̙3GaUrx=b$<"yE/MezOϝ;@/q{?رC`޼yds.x[o4)\_>Ϳ:N 3;`֌fK8,Ybp`o!uY%̴>ѣk9bG %^@Diueee&=m#W 55U(;@K M;7͔Rp$D@"H $D@"H $$M(AIENDB`pybik-3.0/data/ui/thumbnails/Prism5-2x5.png0000644000175000017500000001475713137372666020671 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+IDATxyx۷UM$e$@VH$,AH[aDYeQ&]5#JV*Zߪ=0IfϓX}3Is=suk%+G?@J %HI$R) @J %HI$R) @JKԚO=-=ps9aYװ[V6:T[}e+KQ6]qb?V)CwEwK~AbCh~M4SڵkGsĿg%;k:zu2yaցгc| H~[G܄a-1woIφ~wS ķGޒXmh<.^h_63ͳG_BnݽR/ &6G;fß`6أx_גj Heqs9o# ngf(Yk*<]|% ,h'epzG(?zjj*%&&RRRS:tts۷'Fd2(<<\ X(+|~ i('#XXcIy jm `5Òl04H~f36200N[؜ AwуhQ5A)R%&+Ƥ UnJ2eY-d(JHH J)))B|VeddPZZj*31AAAԍG'{i~Jhbw}91/rn9G`pssjXP]dh8b""~׎6pӼNK5\` N߿f7=""kh&?~B 3l^c>¦ ???ah ɾxʣߓƆSjnA4%\Ks;- UKnj6AXXjr<O ELt,7zh!GTKV-Zf=D sţ8$$"hj,/Gc3nj JTT"?C ^(Vx>{3^iǣx<2f^ `dk8amb `N* vq mRY ߵk>{ሇ0~UMwyP6#6`0HϦ's:''DL 6$uv:u8 @~):%;G_}M@4ϯMH&[J "OɑS xi.Q`5?\uޞsLCFz5/єK%KI cSK?>1U8ST~; @11'ЏV(9~1'*!S= d`8ty~'DQPfnn~>H~KhʕZz%SS h9[,`h$#_kutԞ?x0w']y Cl02<9 @1>2zӎu V\gܻ CS_{ 7z5 I4\*uK3z5*\Na.b0Bq'8V0;..NoPUI8տl? ]8*[TvB8D!P`s-0iwQ6v*W5w$63UT5VN I"LIS9G}+us8z0Orh?l G_ c8i0w)r -^͇.3Һ;KZiRL|0`JQaWhNJݙ#+'l ` O(a.?+6>OnMbz 7!ZOj/VHZIK09'X%f\{FMz #2KDwND ɯ2DG$ztN5aluT^*._yFA3ߤgwo:?,.0}ȡV&yc83}o%hM2A=X ӓ.jCn\X|ZU@n5bIKɓh™Sa]d5G}Te mi>bNQe9I3^S-`ȴg?hiU4+N ib}ti`fs^zriQlBjUK,/Zq |lE"fʛ=^&?tQ ye,=z@h#.0иaz{c("<$PS_(568 7IkV*n ALǎlnM=nHX~XG+k)9A9 ztF x4^ \Kswväiʫ*^-`dT[ )P&&&+lԱQM!/lCSf0 w$fML#`c^/VD(XL;W D_ 5%NM!cEw@)U@ @7dj]# 6:?(f90A4w\8\,_mVX(37FʷzYt:Ds"&%ϜM)cV0t|' yFOEHLޢtW`z;wx mD(<ĹEY:B8A(ƈ֕?L; vҢId !;Ӓ4a>h0uTx#}!6 %:uJQىpq$pCJAȤ B\M*RN- $hٳcI97+|pԿ(&aɆh%z UWi}pY5  |\s\ #LwWqxkTRлgc[wgTu84Ay ga"(kW[S(G"T@6fd\,ϝM.6d @nb*xþ/ay$ڲR'h %5_NPv5UcUQw<\|h`x| Fo0QBT@ vl'Svg9'.@o~Lt5Y!4 {`RO!5H-@n U0rŲ,0Z)zd)(KNEV~ΧP^FF[/irQ(ʾV RM7ths +ц2E? W⼚a 6)(0bƤ:CgP)".ֹAP12O`a:68-Jo`k{͇8nUS|cnC0>ٚU 9L068`k7`S ڼXK_\KPNاdqp>'$'Iڨ)dnP 8n`K'(mTHcccED;8^=dlq ~D'hh>)3G=@j@k̤!۞=M!%R͝/[Fm)vnڼyG@Mmɡ?$qc5'S^&,m877ʫVp3h`E̲R籮^u0^ި@~foZu{%Z[Ӻ8Z=#[BT ٳ%Dp>g(">N+5nC37n/j>UM(}n=ZG}rCCP4Z<)NlV0 xE}{).q~635ciiUX^vw Gѭgr hK5^BY+,עL&q\v@x]_;F@e4DCFصcNЖQYJۼⳁ8/@'j^B#sXΡ#SSAPe}\AүЪDuZ-v~Rd-6'G\)iD0Y 4,#=:+v47ՒH @^`gXXމ;d L !4<\~fP[jg^vqG@F^.w.SRY)#%y2S#]?{?s 7ثдaԂ[@O&fbtP{8"F}.J75/ث!"x3.>;PUL5$i8,anُi-ʵYQAQSy6e Z|P_]@M!S x1_o]C6Z4\䥶=A!l|UOsIڸ)h./>)]*+Dt*+Ibaӭc%o)k*7nߦcp>oKRFvBp~k׈듓8 XެF઴#fk{^) :S 6[ JN26Hڸ)K<%_]@'N|PN Nr[(rOf/\/w+OdG ڵZG߾f5]w?8~&)wL H@0l@S" _=ѳP=Wè۞lC82utGRi9)飊EhR93UHh7DĢPzYiwy-vmukmb)ւrNvp`r@%tD^jfMjkTR5¬%P `di Nε{;?E\@)V po>X5SY07",[,SRĴ~8/2G 1 U.s/=P@9  wد\Z4*`S'.5# wN=<|yzT ޏytSM 7`C,l6-c0j߳5W$ufYo# v=W/9u[V/ B4B7$n;qxxS< T5hpw՘gԿAPf7`Z B{^&DڷAGGTlU>0h劆fa pHYs+BIDATx}wTϟ-w^WX;қT.e( EEKE," QbX%$MbL1y9{gޙUX`Qewݙ{9d# tkvz#1]h!QK;X iwxk|/؟w8)6sx< qA]Oοw{XLyE*:. .N]^Mnw ޟ&V).̭a"lM)\ gCޚׯ~w?~I>/Z[Ԯޯȕϥ]30}~M 7Rz~EztC័w8)\U͛ɻ 0H]EwdȐydx@dG M512&:Q)zw@8wQhG@ƟBWӿ |>-!fO̢͔⽘f]*ϡ_nB42M1vӍ (^qy^^Sx T-;t!=9 ahC~Z*&'`?fo/n3n< 0v! G Ү^LzN"@}!oGk[˜%yl\Bx/`Pq=L&/ӎ$'pF #+CޚS'A8Kp׼)obH֕l ,gaWn%g%]]Mς46VQSVJ5ot?;wo Mt{ WLqg2(\ll/<8Չv$[y^w@F,!c&[,P[rhG +nv.uK~6(V՟1Ֆjf Kӱcu\~֭&^>uӭ i2De!Õ1)*4 6ZE \Mk(΂G!)5@YChgȲ8D#@E l $Ѡ6uV??`3$s'Q>(\Snxܧ%R@J÷RϧqGBy3-RNn|(vK&oI^GN5>[~?k;);Ժn3O \(9xG#C1EHB`%KTG  }&Ib.-޼A.Z_7i0Hp؝njZ+%{.jP.O;$7E@f &*nnd2Ŵ@J5(i=h|֮|>gkN6Q (M 3x H)r @JL,ݫ *5cv$o:v%;?.$ }lє | +bT+ƇՍֵZrɭɘhZ$wB!?:7g5cm( Eyſ[*Hcg%`,7h8׋)Mniʼ5eĹiL?Ӻ\Z4]f ts3xm<}@ r%dٜilUP UZh* P oXƧ@uj &x@8c"V.R.sXv`/ R-@g݌tz{ P3]L]g0 >\E{+‰Sufސ(k L'Phk BLKԎ)ۙ "ldxeiQH\f-_4t]y <⣽E$_5{ gzrlqN ئ*i0xc>g"e[ D+/VB1}=n&+x6E3MG8@xߍb3>[ ZN"#, ++}Vִp8r<6ê}H 9.( &IPo-*Jt:hO,9 _ Ve'۝ɻ.t;k(AQ0z;;jCɅ&_d c(q7 8 :7Zz_ߒxi& iMB}6pAB&q س1G̻01]bܣp ro݊c7t?q:$UA6/M*Ȇn- ,WBL1 Dkdqkh"di8O֠ΗO_ojPH>.x+H=dp4#!WF@ !uSbqq匠R1sObW*5~ fb@:udI ocJfO7aw&$ o8ve5>^ZE\Cy}*!#0M ;Ŵ2\Ep*eIe~.ad9ٮBK?|KLܺ8$ck? HVg9Hr'QJtqs;&,7|"r ^ i+`suMǮ Ӡ1u돦"N߫WJ !%] pu$MFv` {WQ}= 7w\@\exCD,"{4`q5K/r_n ?];7r b ("Dlc\UB Vmy2^W2lڀ r}˙f9Z 8Z_j<g _4FnK9dN%% xJT `*Lܱ$$&%p(-<*&"I!ಹ OF Ѕ.m ɨ-˰۬ j> q)_PL,P}vA"ޝbTϯG7CLFEhkyRwC@j(€Pa..j`.   {6hrea\1$}:P$+B|Rƻcy9AѺM uIvфI.36d ΝUN>4}|gUE_KDF{˜74zmU?cK#dMNF?$UV3h`5(u`( ;q];o SxF4r4 "L}K岩~݇bS"z3DA\g_4/vncIk D|;qf9n $atc֪40Q!bj;(@+ig Rj2> n:ʻ>y2p՞eǹKяढ़a ]{X]@TΙv ک|AcSe]^ԼEyӳj6تܾ'04%g#2HS^^CP*PփH.@I*.q\qլci޳0WO?qw5bع1nw=T buV 2D՝ByC\.Z jHW#&[;Cǚ2(hp[ %<$zFX: xX@oWwp]mV{:ݣ a ])]=OerisW.龆4$äo1)mhE~Tp &#)#0~V 90s4od) O }Y8-q:VYƣW;Go("Ulů?#e+=L&04'5pp:~-3)~HV }Lr1|xyS.KEQ$} śOʊ`q i #iDC>2}w+;X 7j$Bȃiza p٩nuaZ9]L?_{=0J⅂AJ 5~Se/ 0 赗( d\Vy& W%DV1'4-usƅaqED /q6'xAu&\A`),t;^~@(_Tb&p LThSѐv{TMe\kAf"{tY` CNS` ɲ.|J >zsm q~oxOa*dysG; ġ>N hMt38kEÿ)I^?2^L`H)D E/,_2N*љz7H HVPSsqcfW,ɘϱt ,nE/] ?g2u)m}\t,A>nI`{X%q `muTeF%>H]9-y^53 t6wKXBO@oiq@懒H`i@?3dეo;KEeLC&A<'ղ%ioEU?xϫyAn(%L"B.\1HS}dvπԲe8ğajb(י Jv.4)e^OxK\hg2ArnU=* ͪ K  A@rV4۔=p 9 ^<" ݈@s9.պ wz^=EݙX:R\H}c U_`:Z04pl_wJD(ÝlZ:#$ }JA] έ KWb?n ;D!Dt_OMv"Bc4V&"IL9teY賓f ƿ@H;( Dn(;U@~&& xO_- 1WeF?aT_(a u&rxa^3?RrZwJW9FĞXXj ҇bOR ⫔ +Xg5B]z$xv_D^\Ojn{9y$ JVD<.#rWLb*e=LG~4C&'$ ڴ}j P_EL4ЂBu2eĪK>W\:5Ydr0AmhLYen6; WLr'.|BP9)5Bci-ȥXeT n)_!(5J3 _,Bs԰I؅!Ry|6(z-EOu4]VD9M ճ}AlZk5} 0|^[¿ 0ev5#@*3w*'IX h&j`aU+#uፑwhqꉔ3QLLb eC y~ '\\!Q0K)HiOz'yyT,n+` :wﯯ!=MѮ[`U'6_ QE', >D-dWp:u&!#)@S[rEvs?}<佖XlDFFv%H.k } JDWȹ~+Xw\fbxnXL (S$jz%bxrJk^^Gq*) &t_Cqа˞)$@E0-$0IZ(sJJ+(>h^V} po>/$M1^-ɐI"Qo-ChJ=:TYFX_Gy?xCc5a4#!עwyC(=8Ɉ7W0*39ud:,aߝCle8+OaD04X|$}tpn×#ż3 ^%<+j#k#wdP} k m}Rs@`Dn(U3)e9xKnZ(:2LHKߕ\>H$"#cG@0u9bHb,seOJω#X}`kx?|]LskpuvrQnRS_g:?!|. ?J' 5\ ~9vqcDuޗ3<6! c-t_g~wRlӲekIA@:'|˳7. bϣl|pI1<>G'be s.<'61oz/:!%$߱Wj\NIi ZB=m r pwQ1,["7*If׭7z0C[XgOĪK#|grAYEy閇ZCx-קXH3> \=f@Q!CRAȝqxKKR{˥w·\ RRtVN /;+UL˹d۬-I 1~9+Q]p&{*`  kgP?aew[ >f p++p@\ao R$2ix3qTYD ţZBF@gվ<DGCz+[^ }$ z<&+(;95yO[&švUYRAk|}x1^ϣLauA4璩km\2>zX5" b&KƜA0Gsɂan+9| 1iU,DUP4qsZ35a d>*e f6&'}?ڑσ!8zEzt joB~ <thRaBwըxˀD+x;V9ŖЃ ]$;]o@"@T ZR #W< $]vX._(|^Π8&oQ(qo_(.azA J5_:^5Q75nʘ'8R㦳V*"j!=`ZQJLϠqXGJYˑ0TD^B9 HPO47ZY ibqٮM;S ߂Q3>"rŢIX#caWb G`c<ϩ)h2;y91_[^g?IdX|BI(YB$.k{3LيBg1yH>#ٲ:ʙQnB΍ +ޓ?F?fY+~(`z) '<&GzhtNg& ɩ`'֮$l8Ճb7JeeOyJ ˻8kB ق@r@Oz(иAM 0f@vVI;<+}qla!k(?qݔkГx~0>a yԘ~4{hnR m,WpHAdw MHMj Δx O(̺FXt_!Ct+#TLw2 /"P! @`FC 6aѴ B=_ " 5@ jV)vj`q=qy:eUnl2PD0ae֌=a:d؃.߁=<|igGnL6|{4H6s=qRe/Y tjipz@lZ C Bb4 &WhB22 ,Lax(JV$%:qqPMq_^~BQyY8)N")Σ%g;UqP1W( ŲAS)V! @`[0AE \|^PK-k@(a0Ц 6Zkqq\1{b G˧DA_ m]R(EDخ!vϑ-dÕs( $.{)^ʓ e()$N1NM LhϾ ;.va,qm^o}@e嶨$/b|u+N7ԉ ZVT?ǞPx0{cdxI! `%$:@K!C"\FC;/s*Q> zY0F,ex>~c@7SA(\f[Gs]a!6b \ M fңR}܌tZŤqT!0ʽ\  !*3PCs|ɂ O e(+#cLWjhM-W(y+ Da'x|q:k_.έ[bPր~X<2 l? [-`K^d<w{60.F1:^fus, G 20u>fna ٚ4Fv^ M"l[OK V=@,hpOO(wDGW/N*?h.ErfO 0cbbcb11cezO<"wϊp,: EDs#êIS M#Pr+MU*C完}+Oz`~@rUAMA g2!ZƷZ­)_k"xu} 43D5zd x *f-$>ap(Q|u{cizrh?NJAinrG#fakv*;U!xM X@|綱c5]<+A dbuRn_a }y0 L>W?R= ,R'&9,@4Z8qM}~:@÷+~aψ+%.4JGT)4d ~HjwHɶTea>oT* z*LM(ΐW Cxց+8q Bh\ @(PZE{!hF& yӭ1~v>xl1*OkZ!'a'W)X#SZJUU $"KnهRK% BR'&qR1ocF,G@Q 07Pu1lIaz{zx|hc*q?8x~ J!-2- U)OTkjA^J}A"|ͤ|B,(ͧ8 W…! 䃜<;1A8xI޵be;^5y S/)T>^bBC,D&'C12> j*uWM#5[/W6d~D!J%΍~ZjBv8_!_|.ţC|+*7]s.ݣNpQ/8 8Tu_o=xfoS7K\hFQLL PjTp]=uRhBUhVWp ƎaSvZDV0vTy5OQp/پeS辇rEJO!uCizm/|Ec#xT D.W>3 7o~l!js1ihR=ܝC"Zƚ 5'KJLrgzƮL@NU o?]8@)R~gcpb*'ziH|N)N:!Tp}j <'JOvʠ|=qZ ns:e㹂FIk2+O'*"֣.>@yb>tUQT HEYK0_.8{c`!pS u vK,]k,~'\Hy u=9d d/b;\XbjC)´]n{rd:k㖲 <&}AAQV>{0 #є~ $%b1"ymKݐh#_ [k \q@:OTvҲX4z :sPq =T9HJ_Ӄ/d:x 1* Pl,F^Up g`Yr\/ œ"v`ܲkEm3dbhT ~)9`y*lA`'gTW0~z>+)Sc0^,Cv$o} y\BFF_DJ.aL {x%9#5`,l!Z8Qtn98jMU!ГɖTuOCD 0Y -<4|`7J*FOA v ھ~Il@Tl=a@ᣛ]mļBZC  7Ȗ9_XK֣^1 P3<֥8 qH }oFӴYy2eC7H 6aI9Ȗue 8^X\P8 p<| ںqzX?R:W0'SaW)!%$]E &N_6t8@?X>>߇?([ݐo0b=glJ©ù"~F=Z*یaif8 7.Ol5xO:'/iӹcbֈx#JÅ')#Zs"A, _ds*T‹FE Cl7@(`b㪘X0>pۻ~ Pt p@W$&[A>7F ?SPppSPb<p^8Ԩ.'}"MG.R6o+f3@s:y>i_xڻ~H9拃UWH\BdV*X@ o91N@PPG7Cv<>jt~H>;XU<:9U=($$;4bAXޘˡ`ٜ8Az~Uӹ1`d1^j#xTɣۖE[JpHfVC.3U1 pruD@Sۖ<p+&0v>.YMC?(gD[o}O6S BV^Gr'? ͝v5BZo~ʓ;2|#q> Oܶl^ҕ'̲!kh]p,;Tg3<P9EX`7,]SNs IENDB`pybik-3.0/data/ui/thumbnails/Tower-9x1.png0000644000175000017500000002157713137372543020605 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+#1IDATx]iTյ'@5>Jzh_g+~ak>70!@ \ IdX2{RbP"0$xxm=UүoA~]Raߧ [\>@4`:(L[]t-#CQOC9<Xs>s:_2 Q^wt`1w"ۋq/tL2\m"]\a7)fy2xvoaȰ\[ -׳*k2 CX$$ {̵"{=kzh J2 | 5;q2:Bo$NTltp@%d`Aj [@PQ|ގ{ m_7m] T| H0[[nvS1WEd82lh.,xV^aEol:aFef˼<:D#?ƂO>_|:P2d:ߗ# RqK_ "g=9ǥUd߿Rc`7qf4VO\;5Ij$u镕4=/OdbLO ASZ'pꂤbs}Au`p,u!D=qcԳ/h́Ze8~xjl (ci^3H#>ec."Z<dHzPs> M22"56Ѧ^Rܬf Ϝ2DzuD$0=Rݠεr̀ '0"QJ@N; aϥr1Ge*N5DzT ,aMÖ^L\51|qU >5\S84d@2Wxi_gBL f'X 8{?EȐQT<Zv 1%E5Sš-VI G4HrmB36p5*'V&i\!}>ځpJL'!ߧ A0_՘'7V,ɘUA3Z  چ$L'c@4G0ļ];d!i/b9ɤXe9LVY`3=:w=\W£8'{mth|v@P3q 3Kb¹H() d0Kg}ֱL)Q&:#?*7mQO$|I7, ݌?F). ]QQv=$AgzB/Ø"vŹ\]ͥuPsH0`]S yB~v'!ħI_gOqa\2sWT6ՌL,iݺ4d%{ ۇ k(m OW$S9ӣc%u ~!!5+-gu2|L'\aHH6Nw~><d&U "ǭM>hF&!jm}3U9Ȑ>cүH ެ$8ͲAey_Ȑrn4=k.{ 0's D_5v$D'`",S*߇9M 91[7͝c@D͑\էM l.񀑣)W IU <e@U= _p $=DU/7\mYI0sM>hZt)9$aNUzx*)(6P@@^ bN%I9ߕ?W_Sߴ$ ,i,*#$m6R>.*| ¬hFF 29\$ ]STM@IZ#ea,bm2 t Kj^J|.OA;qf_׷vQiL@/J- Vf5&˧6]xN| =EUBCc"X ґ/:pO"ł#3򉹸hL3%,mnQhٶG~y?ѫ$ոp7@dEgtmQēE*Y};@]kZW,[/R.? 8NP4*,J0aç 0yn.Jv-[j4~E2+ F!B}fS5h^sddBt^hwTsJ.z*MowolV{ABŚ}<:&[̵,ckTo؄}zU.]? г0&O4ƈB0cWpnZ5ww@<9x#HJHзXu&ɜBQ^gȈ s 8XWW{wF~FrO/atcw#S *mIk-a&u+DtlvHIN0g(dAM~&sf@~j A>7jD(u tǥitMpȥ~;[-~q G}UW|;xcTq'gXvQ|Izi,qޑ;|#ƱS$ȧ\%]RRB:IŒ^h鲏&PLc0«g xT1g(.IEH9wX|WW-4\v axzC8nro :sL7@<]OQlnpCݭU\97 ύql;'lH1,ɽC6!19s0X6"?T P^$WKS;i`ǣ(Dt {C6{7{}VSУEk؄M~[ŧ' 1tFE}w}R/၈lЇ< GqW!w"z+Z %=UDpSuչY0nĿ#rH66r#qMdM8'-[m16|D,#4m2}|o@ dez>c[QalZU5ChۥOKbx\yzz]}>C4~BwZT;#р' ?P4EZx.DY B&RCKgTL[ƒ "Qc!/4S ˗A'$ 1n{cFYI0H";YEaUW> s7lj=6و#Sb~^d , =, fW%k0D3GX`~|r]CD%JM@z~pMn:mA7$fMr͞ =UQbC?/Ro<3.=I9iԝ)#ʗcuw*g~MZĹUߚD# OrA=pIJ&r&KG 7 H(2Q'TJ뢧QR]t?"c:% h>x́79!7/<"j}|"|"θW,ZaN%|8f:pvq}#s̻Hkz!]>ZUC?=ET͡{-nI~J%9ҖA+LA\]G H|XQ(wч2?~ %D]Bʼ9>IF$dmG !ǔ6se< ^cIx^C$»ϥi5nD^x?&r[m̓ sat+\[cLñ`De"ڀo5zrx Og#3Wjݥ' =$ ? ;IBY) JL^}Hb#ߊk}A)<Ϙ94_kݪ~i=u}ʺ5+w)_˖YD"S$w)xh'c[fo;k<Kh|OƲ7+KK-'Lc̭ (è2ߟ E`H_>Տ _~X/b |Sw2SX  0!ܥJ{#[ jz,cNskGٗs2)1':!eRx>̈́sʑDt± }?ej%MhTg\/ijͧ#b SYŚ> |%i%SOᛍsy=Gʬye?aQ$޼Y?%^O HTYI9Mb+ibcc ٚ>RrԠ|gY[ZSšETjO˶.A>^%B ;(zc6ʒ=L)9ؑ|6X&(2# Yb٘s~`EbsCd}JP5||vsI+54F4;^#hT 2f"* ZЋ ,4PqW0L% ^\y*wgH4=l6w8_0S'ҢrimmYZ4FS|AR itCJM=ًx_%otn#JH0(Q8֥E~ ϩ#|'{KX>. Esru1.r_HVl;JF6 wև[xc{\B{+FHQlP%ZIb'_}V{u{CQ-;:xWGuRƣTF\{`X&ID]4 #@@l/c|YW-]-ҧ{iKۮJ(EcDcJ0D[Vf!*,1|SMb򆋄m)a)&P)2z>9Cؘ,jjk@]XFv 4Gও&^*2ף;v< t(ߗȆ)6SLTnߪLMQk~BxzUX7z?j}O\;ضKfj&XvT hʥ;|}vZ0q#ogp >*nIDǫ^4ܒ>At`Jny{B}9O&sW'tT|'If m|ɏ&״?$u%LF5Ԯ\OD`5o>RIJ716nH a_\4XD 'W}Y;5 XU&/ 6$"((]kfp̭~qabUV{_/hj3#5*9F1' @[nnNFyCqh('|2s׿*ҏri/u$}#d.[rL 2dԭ6/ *utl; f @̥|)BRZu[(?|Wh\]YG_ š?9P.Coհ<6h/+&N8ܝYF*=nꈪ?{\I8 ;R--nWy!%%=zk/%C819p!c819p!csC819p!cJs&IENDB`pybik-3.0/data/ui/thumbnails/Brick-2x1x1.png0000644000175000017500000001077713137372554021003 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+IDATx{pTgŰ{+wBJ@xC%N+REA*P-*ER Nֶ8iuf;vv<={ov7;H6w==]EEpq8\.pq8\.pq8\.pq8Ouv+7MݽK ˄ڽСܼA]s a!Yìn  +X0LY<oaHqs-5uayal Cj@E^FNNz<4ҙ]\z ahG[[ 7\9#ۉ8%zv|y6gWq4w:{{V;0oLL `WEߊx;a/0KM0 Pk?~Y<'a{`prTVTt`֫xLQZ` I7+v,kx%6<6Ahnag3&c)7Xʻ5AϤ ܡtuV\Q!9C[{fhͧ1F=5zE! )CR*J08gͧhOc?V^1lЈ04X)m%XP`o|z͟柍)[= 6z)a^{k}m]Ǡ#j? 6AusqndGc/bxUNY,!T}3 w&IYP .f=~GH aÆA 2Jkt#4az;'UߌPXXYYY`X~pw5~cGYVTњõY3T:N0 ubL-wJ/@hP0Д35մ @~[r2]P^J"JKKp(q/W|r"g5n>}v&v2HUF=0P8V `$"$3E oP/e~.S擨@> cXVkYD/ô0Ӄ՛"(PJqȑ e'A S]F~ ` 3l4@ O],~:{W,%]C,ZH䅁R`RNb"°C#m:߅˜?ӎFF8[W]- @X[iX/ V cǎedFFLŅY`>"Hӝ"WZ4 9Elz^H+fR(..f hkI; y'ą""Z<к}J]P޷[to#w.lfmi|D[^@xS)EPPYY`ځvdj al޾}e>~6 |*flNsfo x0n8VCmh+Հ}a|COz Bswggq\?"YE֠(ITյĨQXJ.3 O1 OR:;7d=H #T ^3U<;zN)GPcm$A0{l*h'߆X/XO{dk _šOzOP% J췆`} ^X58Du3E9sɓYQhz8?)JT gK ۅ7;en 3bl0Y^XD[/h]@m%m3h6&_h)ei>՗$9W}@@WiqNڞfQ P`za B#J ,&VHmhwvFc;N]?e[*gK2zw Z$" 92똝vf͂ETAW+i|r# >Tw 4f<"+@E 06 cxʖn0|Xx1{mF/;2$ Z B@Z֒nWbB LL2B Vt%W^c U) 'BA N!AԎ06CC7*gI=Gϫ;4ff1)։h"\EL0>DulSLg?V"v&8Ǻ@ AKjCCn w5cʺS &5]I32Q!}(Bz !` i@FuJkL3v;2P_W햆Y>桑HB^,b,Q R2tmlEVB:QAH c.R7%ܠzq+⏩ݾ{+*LŨPQY`<^oUl~LjzV‹Y1gd@/`Q1Oc ?BsJQ@ә{G>p݉Zw~YTe}PggpQA*+2l2)aCUTjOG{o(NäaިPQaFՑT !"5C _GNHG$j,U6Ը#m@O$Fw3bV45DOh.ᭉ^۔{-`z,33TKu X@w˿|XwJzS)*aqoxdYװi!0W JaJS_%E>IENDB`pybik-3.0/data/ui/thumbnails/Prism3-2x3.png0000644000175000017500000001543713137372652020654 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+IDATxwx{z%mRII"E! . A@Фk (EKG$b%1tBBGDTwvw7n;s`l~f̜3I *j' j* j* j* j*e'}ue;"Ф&1ܤssئ(TfQ58uwĐ9Z-azq{ߟtYY x ]+fcf %2,5m"  w` f6YNb1&E<Ӵcf{kf)lvf7gZlժUKGhSÃ`+LZaL!I[X7G Mw`9I0o4l0+F3QFGDDc/r3efk%_a~>|]F-[:`~ wٔ/7{m%{73az 2F9yFx:!ѧڵk@:~8iZu 麟g3xS~`` p {yj3ف/{mB xڷ2<~zmƍ,q > )ld ``1`?_ʒ$eY @UEd۷$Rllv5Obײ;a8y|l)?c~1Dc#W"þ+)'VPP`&ma <&/))q L͘,X E!?3#Hl"B}[r% s\->L/ײ?*܏M1yN}0^f۷;`7oaS&F?U׿UhI[ߍ3G>kT0#s% u ;cJ>jM)tM .ӝ&y>>i>C(;ܯ_?rt(G1bU'`:_3"&Af ޜŇy(M`|?Tz4GI! 9s;w.r d޽{ȡ݇S#^\ Z"7`(8סDAN;B:t.pucmVad7Mlϼ'<1}]g].>O)|?#5s?#T\#UD޴i뾽qs}O7Ynagۓsq?Y㣬B,W`i~=$N;b޽{J䲲2.Nn#8HFN&=)kP<`ʈH}Ҿ%IpWac*u4sE|8ؒc`!F5k{}yۿ?Ď;:fffVq 퉏m- `~ZI|}(ߕĿwJGGGJ%K@ƍt4Y@vŋ|ԨQDΞ=+:Q۱cEGGKDBş`H4OB|/w,E%K]ٝUCwNhHiIA)]:=6ґ*o?j D}gCZA _=ӹ BxTȜ3e_.O_KDHOoJ9:*̋QGmVED5ի85QD͛[ Ξ#4D0]_:| s}:?n%->Iw*VPXXXE@"g4j_CGFFҭ[\ )_`w=aFJĿA81)֟v)lĿCA|3gx>W5u.\p ,1ܜv#|6įHLV[^Ϡ %  ߤI , UVI| x4qv oĿ+Y1/9T#g"aXXڵk%~\@?OPa@kߎF4g^]R&,"#(N=y,^j H|gvcǏ.ܹTHD|gYDKl\wߣwFHK|+{R/®d{A .t*$r۷/9Z&B 黏@*B4st u"~U87x͍'Ot(yNj[t֬YNزenpuo*B48%>lW@SڥK믿9r$#99Y1H45 ̏uK+STo9Al\COn(|?=*+NFqJmĉ|駟Zm Krg4CF)ػ*A\#KON N҅TYʕR@eQv)@ O``(E EL8p@`7U0%RtTot>/`G 5"7ri)`ҢUx%kJjTi)@9t>kH[ Hy8',:J"εcZ>'6[ XR5'M#R[?xG+8uU@yC88yX ._:=J ~`|f8r)I`#"LZ}mLߋ;_jB"HL =s3RY }So/Y(v g}ɟrr:z/M^fEC*/P`,ڤ:笏+J#>coCɷ ${5tx kW$~r?mŇ8w.ljn۰L0 աCxL펚|kN)Eaf(?ڲ(֮8VP;Ν-Κm Nŗ9bI?F0oh>)zj;0Tl!a142WV? *.RfQר $߻6zxfQ7n*9돒0=%!0.֡|!R7]̜9QS^BM\ѽ#7U:-q@3N Fm)){EHX:& twg>eP۬%+q6jt1Q܉qު:9,rœ6v+9y( 1-tཬpgSĚm}wuy/9,X`W`̘1:ꦅ{dսLL7=:|#_(w㵀k Fpg P(DR P1gG#lRN#%oFҢəFoС+V*ٻw* (wG9!ǃ!P5^VJ4Y_Z<_}Zf TV͋8w#ӧ[%8\뙞Wǟl[GҤ}kN}Vk}j$ũT v)l ޻L|xO3%mwm`<ԗ_X'ΛoJȗ &-AK6=Y! LV%Ц֗تDxW~PEL X@*k-- "x;Opp.ӝإ:Gc?V[diӍxPXx4tYXH^ES[L>ڏQO`\nn#0UWp|9GIC#xiwW- kl@4<Ø;Bkn~a pHYs+@?IDATx}wUgZ:3 9gD@, PD]#bZWT`BŀHD]Wװʮn}yuWսyν:=99\qpǏ7G|?b?2z䧣GlzuDqGϮt%G_V?}xsx2:tm^o#͟4v>^ ++=BEݏ; >rk]'57uCt3Z')\ս?p3~Íj24w7ʔ' 7,>Yk>b;|g.+2̥d.-<C3d͸"dx7i}{5n߉ܱe`v!9""L`4+ɀ'f}f*{Wᢑ @!tdg[x?EVșnCty3B!6>B,R2m%cJ5X6~F?_XM T~!"@!#ɸ 0>$v2~c] ::tɃLG``;q]'I2yÛc5< ]S=QAlM۟GF֨=X p}Pa |΁P! s!kxε= ҹsӹve?V&#pϘ:1a|ܐgq0qshgk5mw$=\y*ḑc=KEܟl!N <m;{짌_B1BR>h|d[v }Ҳn'r^`yP)dhx2 ZAsP%4Ɛ&?P0nS'бF@&PdϒL}8嚵T l)8V.q}.32V&>A7xPܦ 8ЗN k GƣH1< 2 ^h<L=Wp]^ΞAZ!~JX8iݪbo H$8c]n$+$^v 3hJ/[MZUcHT]`ocHa4]Ps HkgsV!'Q^^,0ncsL+ϮpneI^(^.B:%CG^H!+;U9(Ю];M0L }[;\Rw6y,ǽ@@|@p`"`(--*| ECǺsULtuieE`a`2X6082B;fjR 0pbؽD%/~[k@|y# T`̚.캱4_3ym)]y ]Ŷt:*0 0~j(e?@Q`;.-$`{+N^ * SzA:V0{D'@P1Ki/d kb%$! z ͙6}II@J20^-f7B( >3#xV]帎=JW$5d1`0>>T xI\*(+]NʦZ0GdZ!c׊+bD#R xO)&| A8ȇk) xXal):UIIAIIuWqVFq.[kA\ޡ  $cx\88[s!Ic_8;$.b4E!|u+BC/p{ ]"RK^B(j)A/؛ PO[mx(ŌDy0,B1Dt I.B@{E`%kƟ='#.f8K :<ܳb;t׻lJ}KF@FK}Rݜ\76upXlXR|W맊2ǭVCì쟊r,a)S*&Cuks廷 MƈnG6.&'݅I*x nЋS-ӆ ާ3|E4P HNЄmr1a}Kk2&mtC#!i5tU3R:KEZ+84xX6߯)6.nkz(PVQgU =KF!Φh݈ Lj⏕*vt=u=EިtLK@XHu[b 8@:υNU`9~ cx(y#nWz4\]!3% Y*Vg{?_:] nbdǞoS'`lRFq p~TG5c(㗩}eCIENJr.opDf:q]ݟT۹p@G ^jN>e<ڬ5[BoCQq13A qt- 1S "jZAY@<.|=/*c Ϫ"*v!0e'wF]%}߿!Z*~|F ]8Vů}^M2p&%75>pRlGvѴ AR%0|T=dL5a\>Šu,ƟGpcqJqyz)w ѱ<T~AU;[ &#IXS~]\xJz[9˾p(\ (C79U%)DO /q BS&݉2 ah$9*&@lLo"onBRDW{eo3mE^ rV c#Z2\58 9קPs۝fkhU3$f  /co?ðH*~#EY|yKOhb3W6uI@vFt D{.Kad{y7(M^L=z L+z'sf|@":Ȧ$Бr}wQCvJkIwVVzwZ{u4Bިp@)`F)wAbvV;rz蹦$ڰhHᆀ4/_^C7BB(Z_P6+O7Z2ھf. h!:PxN^@jX OEhUa/H2}w)Ye` 1uBW_:8':Low "s$̰C Ұ}0ک7plܬR[)Tb[90.Z{&,8'1 9f 3i|+Si-2D`?ytO0 5|+ar* #{DoMVo]jLQEx:s0p!;n)"ExN:ԋBDܔ4]/ O(c`fH7.ȳ4`u;Zܻ}sT|)g,vF hSDTUU@XU⨘>ߜ^L8z} Kg:%Ư\ݡZW׻Nr8Xv}48?kH0<_`M"HY;,-0DNE'^YDs12>f#=fa#/qj>@y3i|/a|}^Iz,O9!0= n[fC ]%q+j[pW띑* 4پ6`&!lA>\A Ź:=;"!c4fÀmmƇ60'Kn ʺ>#-ytS|FpK(؎ 8+'Ĩ2lqYrX8UJ_P4Üz';C. + }O' O7PbT60 JƓ+'ߍpf|ޗ 0 c-0FPmWX;\a&Ha>N`tx [.2CD ++W.ZP8o?]{\>!ݣY8-`=eh>*=y[,~U;Ȣrqh+(HCxzPn" ,HGM58jۆQNJ$o6C c@PHf>P' H8<Ksa37Sw,Wtf2>t?ΖŎq.x\n.N(vϠ/ʢ) N@rіg: vNS%f"Ά0poSǑhK^)a|F OC >E,4JuW>gqRƱw ƿ풰E&UGQ|JeJW$hQ pުO)s(A<"8a\aP3ƍ'\^m))b..j!ͬ=@|Y >3+s:j/[RT^`o#"dCDcǗXf>nq(wcHE2⭤ -G|J!SkpCTMn޴nYtAn#VMjLw3*sDҝU&:Aᬐ=(E i D*'l$Ao~!^DK4qqQF@G9?ZQUjJşvWpqRo[ZYrgz|"7Y=H (y|oUB ; 8$;MxxopQp:~!x,F9Ŕ*wfk0AG㛀pѠDj%x;9 psO7]Z=A` 1Qxp/ \Eg0#o 5)c'$`pp(Tcz:c& R]bs%qwyBƞh3>j4>. :$nvc|"|z p S,DCX4' @ \\ =GmDϡ!3|eZ@>F"ux`0q*t) qZI@=' nJNҭ<OQH;.c{e+ ׇē?3V]V)` +N`2>(@4>~s N %!j`|?MuܞRCWisܬ7 1FؑzI'I .?L,AiwrM1^{5L\,|ꔮ ü▋7, Pm\ mMG q ~J`=Wzp|><[z 9Ce_3036=h[+ŠxC~@~C (1BMOӑRctE)wȩ_&㣞0#^F7! m[_DAT ܧs{V'Px Q3v_}ҽd<&ԑ-gA_2N1r -?JeX?@@ҩz/ ;y5k#PBm|d amc40{/-վlF6Cn_  nX "_DZ6Px!]&m*420n[amL#H2_7Pm\SzmK]RlBVFob0n#x,o*\Kgdu67y_r2_V%3dŪ Bu4Z"h&\hp"} $a*w,jZ&zT@Q$ HN0Æ\;\`\η@sW84p[#/gia箫)jq~유l+"_9J%~[g墹ʻpdYG17WUE,Xl>|rjxFa$xmHd&ဵ9JWu Ax:o3>6 oK>y_Jq"u_Vs' !=ڻĒ~N#_TJpxc[CGQ@ 1@Z@ZR wGt'RzffŠ-Mh3BD,Jq/DR`@ p7$^z#f6|\5 j?t|GCSJ{tp@@& jww8xԞIyL ׬7oFQ*@Q6!3DcI;H@-l63v L- DN*Jݲ܋>nWԶ#Czm>ۖ'KީQ%z!2$ԒGnvP:Lkw, r Bz `ٻW@-+ť]-#vcEZ|lK 9`a!$au3VA[j헆or E!X * $CE^Mn$.1{OD)bݓF,͙?P_Džȴ+?ݕ;s .ep("שK -".?.'u U d}Jq~wYỢ>$δ;LMvg _z7ItyA#>@9}4>icW#l r,W%S2uSNiE @X>V VMOHV&ꪜbX?77r>xw,BSGZe7.R~} Æ + . h^l  X'ʕD30x"e iyZzW8d4lıPuj8KxOBDO3%O1ݲwp@w79~)j=  {Ls _nV(\)Z%j ,>Aq8-d&EpXD4KBAksIc%{ kt;m+SA @⎌ R~s(!DTc,qp#?f< rrϧ7vX2CY@RĊ T )ԗj^(g59\ȕB9&T* EΖ5<|A| 1^PcH3K_đ{M~\ jӦ\",)ED}K=Vh|ztkUB6c1K6  {7u`f{P,DC(:~Au< A e~Or?U&Zh xGMt( +~9 d"^~Z>rx_@bM_q-p(2M(+Zz 4z=6{B_Gpk$|7ϻjn_1? PRڷ1K.5G7oY,jiـtǃe%QRȤ ȼ5;RԨw)2 Iba1֋C):g*OU@T [-+ vxJ|Z{Yj`fV3o?#ѡ:~sV{Zָ^`O%q^Rs=lrIպÒeX{`yb0M^߹x\ VK][ ORU U 5y,Z~]~Fl{hp>C2Y譕{hKGAy0c Y!vX.mdje^þ$6nsu6x0ר2z9W1j\+V`5ol.mrͣ+PXΙgoT9t8_Cٗ˻ vdWH%^V0Đ2&qe1I^!K;~D^ XҫZkx-c, MR/>\8z{?xxUU'ֵ%q>~?F@հj5ގf^`A cNaM2=$ofɔ]?X"rr4 p"$Sw\\s)Cyk\ho-tsN zɝ:񂰨)3E$>_ i</ >&vXC_o "Nь쎸 W*π(kjqDj]_P#H((L ͳklzFR#h+d;64bsb T@_w#Af#eȎ"wl:E-<.\%a]:kxgsPOn&]k[x4_4CZ;%GK 0p-YKFr:x"4X"=:7IROq#Џh! [ k_[OKKЃr|{LY m_xZACxڣp+5^ jPB,eY,4{T'pإ0hQ ]n&[`z3-N ΂Av)ܳ|ߝS˹Z|>=AsqˣP&`@T<|}˧T sfZ񒡼ŝBw[ӷv4YjcA~k*CKFANfr3),(oڳSl+K#Ĕ)#߷}.)5\PJ/4yk7 =N:֎8CΑ 7u, De 6v4 ,H\&z>vjC2‹C/^J>MVك.!D9{u!sJ96#Zi "H.4ȕKX&<]۹矯Im_?[1zu nՠqzbG7( ]C Gu*?^5Ⱦ,?GDTJ6LHB.!&&I#W#`ρk0 ٱem=~=0/]^ߐ;| l(bg"?,XE! б=8YwKWHUAG`Mb7 2% TvXjicx-LZ'Ez ߤo6@=o#HAhF2gK=ܿ"(+{di: ;Ed٭"9DjBfٵ+ | x{/[ʇ'^^~5eߨ?l؉ҍWL B|ld2UY7E b7@Xd֕E"߾E(Fqpya؋ɦbP 6T#o֠H^|bzq&u] E`<&С}=WQ0 /}0o@z71Ʃ`Ӝ12JNjzuZvwv$7Ζ535HyDRNZ j 8vԮ֋fM%ӓ?8RA7n_ϷV=ghbOk7sWGEf.)]δTM דOnf %NV)<#_ϭ-᝾=/VGx/l V`gaXT d3LtWE,GaqO&&*R5_T=XqnUA}4b=a_T>"~{VX &qD#kJjp-<`#~ڄezk 7Rww0kʅ3"n!P!lcDjP<⭟[<:.Z)~x 46[|)؁vx͜ %^OZHsQ_:=*mky ">#{xZ{eg +ݵ",~#҇;u>xC+ ".sm4 Є0.hJ ) g1oWV*U֒mM(VqHZ<?[ꍲ.KѱcsH!g7%E4䖍^m o$֛0ompaU6ݽȉkEѯ"b돥} 0Lb&dg뢩e')d^OM0L`.p{mЄ0blMI<@(#C03nx0d.z3sH'׏ĩ]>T)L3Rh2~~`ywpΡh71XZ~+'Ǿ wcKjt<ȼY"B\> a߷oKKsc^~'Є0_Sp<B4N)' B;ֹ. s'0ou  dDtlJ]gT+! *nNP+c}K#_:f] )qǺeCP`PbYDХx'^Y^`ky({ϭMp /?7t >?؁jݺe/_+ gcW @CCDn|1_~c3hk ڙ0NN$c1.b>ZRqEhZ|~H<+O!0\/v!X|~H'Ⱥ?141>%x5{w`N0]* }/, >? [̥o`/Vlopw~6ƸmIׯyIENDB`pybik-3.0/data/ui/thumbnails/Prism5-4x1.png0000644000175000017500000002536413137372667020664 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+*IDATx}ixUUv)$wJH9H"2KeIdA)$ (@B$5|]겪R]U_w=9&Jc=7g}]kk}zluŞ$-6l` [lb-6l` [lb-6l` [lb-6lpuRxɜ쪪]*~ BL,`;|Brԧ[796~dKM'A%'-w񆫍 yߏciiݻ]L\{p~v\*UU䝋.|Y-6d! |!6ZYڱb)pʧLuU70]zhGb3.,DOJ$1|N?M@?'ϝ[^ulU1Ά]iqCh{/*ϭ|#o-=q˱ѢP>BR~nhtePZ~XG.Jz%7,wرx'_MiWv9l :A[^Q cawBLNL ISM ]bw*Op0UAnp8u)zf rquLVfCq^_qG\ѷW/ ҳgOѽ{wѻwo'Ett߿ׯ}.''G6TNzlHIdz<% ab#T(FAt`{Y j$B^A EvYm4y z@`6Vq3ƞDp"`OBR„ J|AlB^$h*'@Q("I@1\Х{xm*ˈpI/XQ,J"4X9JLL% Fwb.6@g!C]ff=dj+*+n<v3~"fw 'Mω~YT$o'3FC\T\= dZYwq8"}N}!$61 oCȎ_R‰aN2&RT&0P+SKE̓YU@D[|mg@6b*sgy :#kד^_ptxv}T:O\'TLDJsAw*J&c_G㳠@$$$H0̀8pYڵT?)ɩXfnr$M+l$6 LU @vIsʓ+pW34B C΀Fk0:''* ]_J8=1$rh,c ':[X~Nb1S"DIL)%b~v//W,#8PLgd L#a'ŠAHo֭[7d *s Aғc Dl >G{GޔPϸ]nb@nO3Ŏ@k  3PK6*fN Ãp;EYGG07.J'dib~NY *z@ފuc`78E֓V~?xAڮ0e&KU@TKV ~  `VOfs> j﫰A14Z/:]sT=DFFCAMV%^J|XTjb:LP&̙mKi1G.Vu+ei{>H搩R='btHXv_>7\Bx1%2Fj3A xDNDQmE,ե^_#e+A:sRO*  @Gzmdyg\3):vwn5&PBq);*C P  [DZ $( v?Qq.1+#fN=S%e1 a$h(Fo0N2ڐ!CWM$grr#Yd!CI-cҽ 1J]A7P'!ǔ?OXT4T-\hEЃ9XP:lX85XJg vHV X$ƞjřZZG*+7Q]`3~2z8YE9Tg=|I8e)Lp[A}!biHi/{e PO|g#1f$3xwmŢVb*.v8k'Xk@%Qt{&#iLfl[cM^&:Z٩,[.G5`Zu4cxco=$_Ck«`՛H =iV>MOSϔ`$T.п^՞b#$Z9}G{ǠW|4Tܹ$L+*±7' V(mk,.k=`!b <$6ei !9B7|8e0;ąk ~E4I[~'RYg ؚb귿c\˦Xbȭ7tCc3|X!5@\RI&̫obA a/a_ !M^ACvO[g[a,S{Az1cp\kM &XVA.pe'2P#SH7"?&q~BOBa)* ⊯lrLZItݣ1XXMH^ͪѡ>°G :e]?W6 _}{1dd*ωb{vВDMטXxv2fO:{E9YzSZ#ˠ*S.h_3~RQQp3i߀'ArKыA*MDTxRRBX8fes l#7p(CF u~ЛEvi]$\CW^ [8РÚ0tltu^W\4rWy [ kjm.+4,tM> z\ދ:9#wBs{f>ɸw  ϻl6cNVSB}l?%z9aƶ@_0N9CEs{VMqşrJe`)$GTF `N0Ts1Խs"EkשZ'x<1 $bY1a  @fJ XoE^޵|a=011᪚ǁsv8!&>tI,rBLF\ނ2V-$QM'ʦE K"+vG#۞'J|*JNxx" pGz>SBiE}ZM[a5ke׬aGtl'wns{ZKy nT.pR4>c<-kLE}C_W;1|o<hRiii>L"N)qq<d\eB5 &Gǻ fI0̓jahGpFל7:ͅX |WMsZ7 |Qq I2ux ril03*ja Z#n 2)FbO`EHST89*&SA[tx_ ]rm)korW0:NZ~ڗ:}J%2^cM)c` ?ތ,5Uлw a}T AQl 'UashnK 7d)g' @qj{*k׵>ի@{99ٍsƣd[z8 CI%2m)d>w;}-u$%TL6rÒqۻjkDZ1"./tb>.P3練ֵL $ń˂Nvo>Ty3ҳɜ~l ;>?-"q/8Ź{7Bv@L`7қs >+gh Cj/R`8'ηz@];?2âkqiZ ?iU{21Yeq)DCA|iLn5WF`yO`8&*hLunuJ4mQcc'{&PAHg{8*aJf0/sʸS0EdT"qJؼ^d֠m,k+4(K>Py N>]*'%~. f"SdFF\PVN맀)I`Խ±@S?lCq'.."tz}^G|$c|q/[}MD^Θ}C83ǚ~ٓ6ux%\Y,|mgKI &, ֭i,tH"WB0g+.-!(,[M j֮c}#~\*d"lA 28V\6+&dy mbItȤURQ|CJ6,1¶iԏВ_Es="`}0dz;ߒ.{qǑ{gaT<&iXWn k.>fNʢ[Tj(_FXtp+\,7?'b23y&|r;%ZM@5ֿ388&v39bpm>2FB$XhbI ]nJ^6cR(! a_AI٪LI0  ^DiqZ5KmV?nrRɆ u(K9BX6;UJ>)@By3~]iiQXV*"-ʼn,7E>VOƓ_P)^e_'8|E,;*W5{!*EwYw`+u/~y~*C E' E[5dY7"ݳN7o' OX`?B"T QFÊ`> #yq(._VQ)b87zqp+_x @H-us͕G{߭ta(Rv$~(lx[8hT0I ˴Pg'@$53uۋ$| &"@􋤩dXSGWU4睡|Sj(7}c^XΠ2P 9 ē*K/PGן<IGgʲɮ_]>rڳ}7A5i )V+*⨿*3H$7 V;}1r*d4 C 1?Ue Vk4rQ i2u{Q!P':OYqTu=kLܾMt5JN:?@ȑ(XP"w3Z }!$]+',ř&>&&5׻ͳ< Jcg yz 'rަ EXzkh D] 9IXoOg2j ^S&{Wiɽ`AOC94hZ;./*ʣ>AGV0%g!h6*XǷ]3r[d`{z%HQ%iYg`m#>ҽ/asn|JNr^όkZoCHK| lcGEN2-ݻ]+> XGbm"17WZ ]9'Pkqv(d0q JU3审n+b^fg.?Aj~ΑFKΞpI>Cq=wN Yy҂%G\ ]R.P !Xmc_T~)5l^u.h_, \"NxxSi[Z:/7"F|3(]#HZm|M65j% ݲ vMO4HB1$N7RJ{|rhr W^8.rB9tzc|<]Pޱf/80 @l($/'7xq}{/}59* /rK#{'UVVO?(*ww0O=ftW,ZP bs,9Wtח#6:k֚LUCYo`xS/gyo^qd[_gO;U 9V_ezy¹Cɖߛ(^}vXվ-䚽(oʓ{h$6Y/X"2xMb'y*6Vnj/j6/AJA M͒7k`~}m=|‚M6H]1XxJUߊs/˗yUxw(9 ׭2/Y?sC|:煵]k*9[sme1}pԫ0) p0yTp| bVthW*g a}C`j" EZ3m&ȣ~k=l+nmC: )ȭT >6w o.DEu*]ͨ:e|i5Zavn,S md_]L΍_r?T9eryV/m,S26cAy/]U9W2H\HSbJCR9|\{uϺM?6h`12 &*uw=7p`J~Q`=!SF3rFO(pY+:r7;e`N>o/03Z(1Ɗ6(ec6kXt6N{} +#{rª k2E5AX^Vc6^}?|Wo -6l` [lb= 6l` [lbB> IIENDB`pybik-3.0/data/ui/thumbnails/Prism3-3x6.png0000644000175000017500000001642513137372653020657 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+IDATx]gxTպ>?^&*QcC轃C@)z@A: -zP|w{Sd{f2gk뛿>/Ҋɛ o$4Ii$IH& M@$4Ii$IH& M@$4Ii/FDU/ţ΂&,%Jii Z%J ["loOa3L¾ FFު^=iխKZ2wvY9R/L[m SPGbKHNb_5 i?^oDP zK|xonq'gw rmUN 1ԱY[ Rz 4a_s?=:6Rآ3|;sv3Ѷ ٭s%R4"Ik.ر#P qxZ<,^!HC%Q>^5zvbL wbyw=s ª" }ǎܛ7oRrf7yYGk ԽҴʇ? ,V ﭲ y%ȟKV0҉ @UIu6pN8Aqqq|Sbɟ[+ @wh.\tb7D{cZ9 !: F1_Hx [~}6cÆ 'co^(K3| pʩ±2I7xvg2tׂURi]-HFQAu <vۓӧ_ W  5RSu\iy }Kt$XF#1kzѯ|5$ v`l7$wӀ?PB цڛ4&.^"6PoG!-.:[c)9!:)Em%1qy|0G^V+.]P|&11bcc`D)#iq/i.]r!@NNuCe[3Ә(f:sbj OV>6Rl*ûR^N}س?| rvPgV@%d~kUT œ$0uCo]/o ^vO$!!> HU+Zj2yk zZy4rHH >.YuR-ً2t5{3N{Q:#7+՟Op>\IWkf³Æ =zcǎqK.w-p#5 -@Fv|X^ س~ۑS_0.AGMx/Ӏ* v#//mŊ|-[ƀ5:wl!!ޟ6mmۖ>,78#@??.JǛ($@g([O_*?@OQ6IWWYeټ3gec۠A|ZjҥK?tYׯ7n Gf |!of%3dx x;Ej!G01syIE D(̙3vP AWvmI3}T+o~¹-Q.>zϋv#~ >bxM89$^} .Yo4Vw! F#X!@@?`Ԕ`$B>A }şR+)C SKU>ۇnСDϟw!@B 2C&?'{3| 4k"HG, pX=9U-Kxu4ޭ'OT0>g(]rСCygrd|-~~ JI JBh@Ksz?O i!`ƍ\4Ṷz@Nގ}k5F IeJpB"R~v׍V*cfR E/J2 .a4aYJ~g{g&M9A?@@22QXUX8 X)jK”?;Wc+lP*}<7of=B<" OƳOl&XgRp}1+CT !D3 tMq۶m|UFիLJ*Q~Q/a! z(n@+icؾܚ+ VCBƎ7dp.X!RlF:1ҭ?@\YP& ,sL_ժUuP{Y#]<:ەNc0ja;8zz$벋yy)=frxQ@YA? M_RD~sؘ/ `燂(%mĈ|GPGXB"ܹs(k׎DmNa!kLtSw-p >xHt|3$^E~*z`FϞ= p~W{ )1k $ \;LO+ xb0{o1K Ѿ#\BI@r(:~`<!Zeaz0b@'aDoB /RLc;F:>?(֮lq(/xݢ{@2.B|`pAN"(C=t1osG)C#* wQF'vt%r$% Nxf4|r^{ej!|:!  Ig~&^tdQ IC!4]&ُh3(t BG5Bp)_A'''3$҇w9ۣiPWaRr3N#j8| Rs+`O#@UɃsפI>si%qs:(]=݄ZeB݂{-|qb֛y_akJ-$%~Fl6hy8J-s|~~q_%Nc~}$cX' PA$88{ڨ[. v'T PNB$|X| 6?w4e\8<ӱO)ç#zdj_28g?;N 4xx*k3l/`" 9Ə?Y=8p _nެ PrPWɃ'gr$"bh^W!`ǿ¨<hnZ wAmGS(66pJog'c߰$^ppbb*b4$ЅVGP6OE#Gly@18 >Ϟ=c21DG_V?qs!~B4RV>﬈qf!;X8o+ ^eCE>,$tsth1޽C4!5܂9|ar=8o?2(ٗƒby'Y >vy'fjYߋ$W. =|5[l>t0Dbe$l֭eԩ|6|X`7=~6nD)oYԺEYY_@+iC4 O_H~8M6~6eB뇟hej(DHJV4խb,=ъ\ؽKXG+ y,^cm….I h |&@P3!ȥr&w+_*o ۢ.( gdWX%9V}EPm~yo<Q?z" OŘz ݽ1y$`._Nу"O$}M6<{qTܹ(ѧ{u~|wA뗉xW:# 'ق mVٿvZnu@SN HK= 4Oh 2TBO鳪d{Bc @k 0D3dHM<>}&UVN~i! pp쿨2V0@ogy K?Kf::#Ν #3F y4V4Yz~g(tB~T_d8%7P\p2KpB pJyBP|JAڹ >@޽q~"ŋ9|B 5?c^/Wl4O%Y 'r)-`1S̹Wl6Ӑbuȱ:TaC_&&[/,lwhк)~%/HnJPOxm/p(R=ZڝrwKe9DO!<&B.[|H;gG3VhmZ'55=$`In{$*O&7S |2 =+T޸B2PQ_Yy,6fGP_j'e$@c`1͛$@A $:5ND8H[5PP$L9pk8[\GHi#GgcTLklIo9gԢ>1(_$ ^VvA:+ ;[AaOJH& M@$4Ii$IH& M@$4IIy$]? =-IENDB`pybik-3.0/data/ui/thumbnails/Prism3Complex-5x3.png0000644000175000017500000002625513137372661022207 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+,_IDATx}wxϟ5TBz:"i{`T RHC!0\i gnfA>yv3;{=rv^+^xKx /%W^+^xKx /%W^+^xKx /%W}Oz wfԭ9nO7ӿ{jN[Y=Jzjo3Shwv25R %σ{(W9zeuepw̱>D&lԡNZ4?a}҃-D;ӣCX&WLȝDe^ʄI\sge&"EN N4#ux p5;;dɒS.% cf26D"T)A TR$L&JwmgZǗ,bgX1>[$Kn2&LIO+f/k5=-T:ĨQaT-*U^+RgV+PRb C r#D@eR||܇VwPu_ճYDM->Ԃ;D{A҇" \=\l: Zqt-e5MyvPMk: ͊b݉B^p9Q ֐x;6tUF 50Fj=w Etx}F2J=DX2B2 `ZjDc#o| N>SI92\1*pᢵTVM싰07EEEQ,kATGL4Rz2T@~| t>/{!*&3nƳ(qA!_%2ydiy=q ({Wt1?àܚ<%~C}D^5T#8l!1%%KN rOzo\M^e?1  L {S#4UZU ʕ+S%րМF!yT(x֭ړO>I.]mJ`v\h/m03ik8}~ۮB*|ܢ}~\\h:Mz\|/xZ~*1 [wn&Ee*8={Uxd*xW4vH-X;tC satҌGB/t$\EL%p [h:’g$&놦ݗ Hs$]A=JYͣuofxlۚzE!@iΜ9oPӦMLk,7S*=:gw&GC B'n&pA_| hpu%^~$^z\jG_O+OKшQ}?OtkG?e X?* iĉEC(!<5jIEʳ C c -%~2:F nnSssIj%!<Nzȸ/(=d WQ`D3?CtAƃ]G3yzjy߰ƇjWRHy"J@K*E M;{+F0h )p&^GG=AVRRԱTtB+W.UM*A= 2*~jdp]D J~TnL2-\\R vWB﹛!EQɿeA2 },arAsa o.>w#:@&ڹ$.쏥umdvȚ,yұ| խ[Wl^z%OpG!a%6bZLGT:_ <$6F6M7$aOl>ԃ N6^tt4Ue-.$ULNժS5S&)D&4zB2h9C׆VD8{q?C.싑99RF=_:K][iChI۶9ק]vgf͚b馸oK 5m rcFp.@΅ CT^ Kh0 |Dղee+cvrj{_jO^g &:O?m#֝9 hp/v`BLPR#jx/ߔAޜXKP׼&s S'p.um5=X&j>dcwO_ ":KbP@8VXA $޽{N:I&lQI0Ԑ/@ [1+!od ֤|;Hn_+{ ??`w/?V vh[{>HW1FU6rHz%"9Pe N̏h;vf,R+z\A$w*JJIaҲ9P#NXܟUUM:.0n0Wk+{Ķ(Ʒ 8RvvDhB,?X@L/2-[Lr/aW gF0(H*a鯸_kI`շ NJ, 7V^&$^NWn Yh?~\oVZo?yD9!CӅTºݝkF'*q:EM$% ?_6%Q:lO$L7qԪR {Qe' >!x(ˆDžHW4n8Iaj? οZb.a]-e tk|(^I)Zr}hD /<Hl8Ȟ'iZ1J&":@ Qfڱ(܍šk#Ja>@p[l PN\>M( {T\6Y-(Kf5; Gn3nTAIlp/Q[ |:HzPښk~S4F6Hߟ㴀ЦH{K=sr۷o ._,Q3~P0QhH3FF6"jFQa\D?&F0LIY|5O'Y2#Dy´~{Xe cMdx`xwiC^O]r JǓtɬ(qF_rc")1LiKS<X&B~֭[1믿JȴUV2= jl{q?=BZv (B&}h /MR eJ?Yf&1 =!+Ŧ!!RICCrPoS)&W} FL2ARQq?m.02Nek'o?\3lWdϠrn+rPP[nU{WN4I?uocH&sgb R41!Uw^|G9a#<(*k RցԒՌՔոByʤ2#hL'4`5 NakėFܾ& 2I"q|wU9|-ϑ8Zyը`J9+5?i`('(0(S-==]X;&VԩS2:}9(RBTu~wU Cu~;$M`#Ȕlg|L+F1|'jiݚ=|jn ,O *embNL o^5Fh^+ h2H( F8~,BՐ57ҴgΜq]q%NaΣ;D"9[R.1 ;ϝ0P_K  8r-0Ա!F?\!V6>\6Kb{ot;,e1#P*m&}R4@ O'@s~hgϖ(@G5PXDjTСC~[31 RG$ug*"dr]y||DgZkK _ׂ(>J#\g 0E <#ECKֽI[$@Nɑp/";"Sŧ~ZG1T"ZOPÙ;3.TDp0l펡r<~jnVɃcec-i2a= oW;*v@v̀B_~E&VjgϞ!ڴiCJs"߱cT21>(UFwlz:F_da_3%Tvn]O#k0L-鵁бZ5k~?=, 6Ѕ PV\)>,n^zI!1e Yp  (~>*R=Gލ_ATA:N31jfs9,o ڕ5cw! ^`$_&Lg;/)p:@4ŠZx  )!M Ť>q$ǝ>vcp5翑+"ř=_hc\|r+h6,|m݆ѿtriL&͏Ѯ< !>;|jذX9&V9h H0ځZ܁E?j(@o/| |mF7pJi!oDnФ@,o_ky"\Ț&־Ȋku8EQ+hР8q05ǁk֬Ѿ} ؙr DPn#4Bh "A)*p5/i䯯3T$5dcq\D6.Dc2WЦ4V(򨔨%hѾٚԨ6*PR0m?Cb>H,pzii&1u{ AT^M?W&)?nP|#qTf*8D,xq-D~C PǠ>k|=֮s­m۷;  *ڇXa$ aՐ ¨GSTرcv1;DQHA}T˦< l#Wj9Ze[ x:,_w_'܉Z缮_t4 (</_ʺ~a#E"tbS-Z&H<do|!vrG7%o H,Cx0U:utږ+C+UloԮYSAX{spXmA^'$q$E~9U(:& MrP=3"w"93~Zi~)Z).LcD=-ZQ}hԚk;3ÝQmɒ%p U mƍ#k 1-ŨPPaY. ?*th:YJ|y--SRA@N߹BCKG%׏{?$. -3gYY1?GPunK=qE8u 6Οڽ{Dht2Џ>H[$b6Zi{v1)&S|_ Lcb.|1Xق z q$uwaQ3@i;D!]i߯Fx@q۽]ٟQq~ c("Urr2oP"&=c( lZҍb-Z,A]d|Ft6&WYuF`|L)}s>thG_]o%XcS?^>}@`(Pyՠ=Ə/9LX~F݂"d+fmCLC |X2f B0õh QF4EV[U Q}+}1kVҧ޲}`lt|r*׮]1/s#Um v J2#blTI ?lx!N~auXz}v`wxnʝnU>yTBN~#w 2(Er$=ETuш"&Pa'Dj`]ZQZmY82nnkú tbLuvUT_ (E$`Q*dЯ_?1=u҅ڔ N(Q?w*GA&0}{x[ԳdMy5e$½Xӏ 4`uj(m&g{Y^7|],9NcpX{C0.]* #9Cywhx 6j( -cS*k̸ ל9]Dmc |ٓ Z|mzBaj=$k\zcޤw8w6t^ZF=\= cOD(FI͓DI9" h>BA$)Cn2]_J9?we\7cjiZԳY#wb^5VV Ulk!޹BT #ZjߌIwI"{23ݻ%c(h;wPN`!=zw<4 akm14n^`IjjTj[>(%B8z pFOXA'xtJ(J>kyKln[y7#1ϮA: <C(Sd;P FjX $?U 5X9KYyHjZ(k1z5Fr۹{c(#y[{_HMh1s(χv̏#=Al.Pl1ŷf;m8B yd]>d">+#a!܏+rT۹cˆ !u_(Z4Ñ#[ J !XORF5b`G\j" n!6l]`< G+"H^)(n5n6/=gBx Eg͚m¶Zc;`pcblw.sARĹ{QxjV"oHRB,u@m-,*v@* GC*( 3> j@ϟ/3zI+|ȆՖ _pˏ4r."yR/زF % zR{,;8\@%dl,216B]<{U\decFA&;P +A~u}CUGz$`DL= հ@րۈZy Ɔ@NW#ʴciD8 # BXٯPFXZc PJ(ڭi![YQBϙoh;^Z _4+:=`99(jc|{!GlYRO/3z ѺUEoKV,(d~Z.ױ6 ᆵz <b.GXF$NZE !;+P"= no]ɝQ _78 |xV*ov!m yzywO@ٻ7X$$G)B8g?@U +O_9ha|Zh77QylǙ齑r\?_`+Q,Au0JȐD !E'p"+M@PBɻp~?9oIc)˾RkkbMʾm ܾխ)';\QG& ҇'C؎]vBh$$#[":BL(30̓ 𧿾Sx:_2=T{AB;|D]~?(Y=Oȴ3(iܸ#j/DEJrgr(zgpjW[ LqCҶ{ݴPd'_ bˆMkn{>y=ELj0øS!l}U2 %|k #3Rjұxה0Š<; һjB\`OÚZ?դu ORnKn(P E2.">Ǽ=yqu(Z"kA8nHPޞ|(iA b!^܁ͪ-PvLdRP9H:0!DÃ,-u-۴"| = !QjzGņ DሱGv"WIhl  ¢L|dm>8*s$ @V~Z-\%@$5--8 @,21>D3g G(4G1slh7rX2ƙ)T`q%a]cop!AÅ@ phIԭlmasKT=% /_NA_0P/T=P2E!p`s -d,m Qnc[Y7+1T@#jp6PZN1ڶq;|-i39yt޴giHt)V| JUSEP퓟֣ *)R`tF,1=K@8,ZO"@#}Q?ckפrYFl`!B>OR+xl^%2,A12q5"U:&{-_jT%?_*q|j>7eSb7 f`A(2@ 2L"m1Rx/FKt8532X{/ݲ%C=Zm7g܅ )bY(\!ˣXO%vQ?}>+HNbZj駦j. @;/Е .|e_9L1cFz~#d}nnz*8hRFZ?Cv\8fnq+*b X>tCx^ ݻܼZ7Z?xZh>mq_ SAvv1!t1!|<||D/Aqf" ek  *}G㮣Eg܏{@>c'ՓH?H#r׎p_@%ʒŢ je%d:0KC$8gb׿ [8T+}ō!ТqSL+^xKx /&/  kIENDB`pybik-3.0/data/ui/thumbnails/Brick-5x4x4.png0000644000175000017500000002706313137372560021005 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+-IDATx]yՕ?'j2޾fߡAUdMfkЌQ5bPEhHb"n1N&I819߹{^hqݯU9ιoC ȏ<# ?ȏ<# ?ȏ<B83oį!oijnQ[ny+V,xqv>7)b V<-CL#86oS7LOeDE:fC[ a~;b@f, DCl6QDEyB5g34U<iKvWhq' Wh >w')~pY -^(51I;SJAF;!6>edf@ - D$]{զ 24kg:En9O'f+`cL(q3<{ DiV?E\S|>hHg /BA6tu'}~XO!C]]'KYhEy `4Q.@xqwHnx?D[F3 F Xxk)^KiCnҿ71~".Mq-Gx4q)rJ60 f"Wh2#^O`B:[sd)@ RC1o8O[sRR2bD%ZTLe}6 t aC! K@X@9cJȔ$׀a)ʊD j:iƷi\=z`tP]H^Oؑ'w!hþ{qDSF{YiD"3pj tB`|xWp{H^ӯ;Hsv/q͎U^Nm,@ TѬ R/#<-x!]598d0 ך7Xŧ -ƿi )+(T JOD `~+'7i02CBtu|νC] T-$m-1I]SgLn*FmVn`8,?Z:#H$b6E{>-x,?5/нAv!]A>{qN@ b}dD10>j(* nv0{dyVT>Çʓ*Oc-`Sv)멥kq$`ghzfjy&x79 B8Ji|~sF̈bz؈Id1 , 5CO}S6u~JATnf]=-_Drrpd^RX#XxVhpSq_|DC])s˖Fݧ3A€6ߛ2.מ26Ze0>(aZhtZ`s1jX??ɀbqD:0܋x# {Әh}.R(^jOYA;b1nR9& Po`{,$ }ǻc.@gpbXM2""D 3g 0W{p(Q 2sG8?ST{ s*d=!4AZi|(54Ū.C yw|to[׌.0bpoDiJi|SJKDmm-sR!#h,OQ*}06^e_[Ekk\L\3?u3;N*[P5q;L^ uѮY "6VKNdI#P"ȿiF%?}'(&t`䳝Dv d z-oi@ q yeCpr'Oί_HaLuCgW;fa?84!L4Niim2Dީ`AEMg.~{̬{K' FZِLA\D&yB%ˮ_rF~*X?bpYf E*D.9ecmLN"d 9I?ʱ%QA.{0ǺSi^s@k|˹ >Q0簒2t!wGl4=;S Zro+)U2us@0QDO]pzB?V2]Rʤ,s^-3 ϭĆ]u7^^&c48C>T/^ |˓x$<8?[O.!/3P+%h15S;0U>UGOcA>/{^zPL U[Ia"8-˥|*0(Ο,yǟ߬On%T O3/p>\ލYքoFExnHxî`t䑀S J5f<-P聎DƆ;gO> Lj-nMbF r>Ux( _WGe\[ꂋ <0[@͙Z&t,g qyFfhgkt}cLb2R N\LxyA8W|}Ş/Y&(S@,Qì i{* 4dgTaDϰ,@Q&Ogo"&`=Yu0&2>@K 9H ='@&ы΅ Pc\* fOp-7Jz/ rh﵉.-b!8z?h$uB=(T*7(1" =ɫCyD1%6Q\-ƯRRt{gx(Cbw |,DX~] O+DZpWtɥ' w 3Yk]C5NbRDÈ҈~ZVTu@b!VH *?HX~{p-c9h{P ϟw|;(jkDnȖh 0 GMje6R7&@*bpTVc d,%fF LQguXv[c|=\ J߆%qy6Gw(([Y'ĖD>V(ϡ]hxMu dlfG E:i6w-*Uز@o {Y”! ֢|4,8Cbx"w8ż ݯoe{)cO rK/4u"E!7ܥ&F0brDAYư9l"VoS2vd 4A!HH>W_X1P2t) t^d`\eL>Bo mvIac0UV(;hi 2j'hk)|u@A[ \5fȋG^Jv5X~x |( ^LBߪE~Fs*ʶzJs7[ ZL@F[X)̤brÃ=@w w1TBG:X`^F!b]Ylkݻ7FqmN>0&Ns >^5tMyE?b YyHڧֻe 3MGskoa%'|4%hN eZI ̉!xζHxl^[ au\@C@qRB5{DsL"^bGn>tSU@}n 1w3ۻkXN#Vy²V 2gKt+t.&f.u0^7KCiVBJ._ ` O ׯƤ/.rOwO/g 8v$%7?\y4Q?k';jZO.ausFKm:a:Zxs_a, +%;v0! @`H: A,"0B ޮl_"bmwʀ7%g?y3ah\3OWMm{Ӹ4ͫ# Èm IF`jAi8 ^Z"rrxef|?f@`  |B|V=K?TK/;)z g DLr;7ܾk`sHϬ@ѫ0Ab,;^%;JpkovIK5 KGPbW- !^\!5p*Aȫ(dMԹ$̩kR0Jgo 1>>5^Nelj|WJ֯O sJ OP(+x9XIzcА8 .2a.q8,\a; ˀ ^JK >#Rp6 R)8`cPL 9Y@|Gߣ((I>.T-7d/JNtE ĴNԖCeg/ !jdKBāb7xf D9 8Ns[W GV>iz '0 vDr ^MĜnѰ8vb?{Ь!(fs e;OU[h&ڜV'D8?[@ỳ_# ,cl32=62.J,LD|)%2D!bm2%LGO?H\_qSXX_WVϪŢ^)gwR6FD.Eɮв-eV,E: ZetPR!9"Q'ODr^u#6dýe8ݷl&U=kxM|zID#.xe@Qkccl쬖ES%T3J=^  Rqxy$,g$t0l=LZkڶ/0嬑 ^`@[ߏ>~|^ ~x\.lX~V0t `G5UQjX2h&.tEgzTC6 XKː*fA"++`9!###ȶ:S#6ȕO@?!jfI-}hBho($BЂ).*n R֟Tt!{ac,R{獟~S;D~BD~F"/-be2HWf \+kI#sMm.jH41r]|NO`POGj_~|\KG06A [{KܲoE\;YXf=bR(XI#BD "@/~j|{&c^o>qs8lywÒ-jTaKd0 < XH͍\v3\G^NK  fU0"9s,:}W ]}I\n d;+7^!7? 0"s~ch Hł^rځ$3rKo?M^ z$ IP#32_3uOF}C|sxG7v)oIkH ҁE׀pBO5}s2j&zQYv.,*r5wjzwlG/o>%PguF8qh/ٗ;;_hj ұFE1o^l(d|L].o=ڂ04R2‘gRz";bwZ`WJ͍ k3:|ϻ/ >;̷׍xd NP0;wD* &l%&UP.]5PqPt-P(; k`XH#"+Gy(zsX>:X&!C( +m mWtTXe(^ FkLci3V!0%,":Ē+ {&I4#-#8$8k^I]aN5<,B-,s@=DX%~_@` 6rta,-*)K=R/d QSOnPOgw)M |ݖIH qH2ixZB;H**8Gԋ]..qnw\I5<-z6.M_@cHT~4h-I"y$RYaћ<G65Fnoj,^rI@@4C˴P̚CO:){ z"Z0O5%Iܒ>ONxn Ceo5k)@PnKyl,ysܦMG W^3gWFվ\0ʛ?Ԉ]r 1JJ#/K# H骉E@ Tp8MgyDrkKJgQaIt,b#[X4X(eؙ J)9{utȽR,J/z*$J^4<}VgP6ux &{Ci$J#+ yR#=2nC7H3/(?!XFDC~@\{4Ծ߾.{>}]WV 8~>uĆ H70;G`-Xޖ^q݁_ S]Ƥ[%Jϭ_~J){CX \WgnXvТ't. j{T-qN~?ߋJG3Zݸ;=$*GU-FYf[ذ@dCܷ:NNѣn+ 1hVIZH3_מ=Gq14 xY)j'Z aM=  Gg&rc?+O?<rmVyfGexUq?Gw׉jq`Ė /RxoE E0^cK"xN[ԑ@aGMa pHYs+6IDATxgXT׺{( AQ4FcIn46L^#5D1`!X@D#b*b(,]wf|aXygLZz㼿H& $$$$$$$$$$$$$$$$$$$$$$D}b53Y0oդD]6֮Eڿ~=<6-²ekg\4()^tP_cjqvU˖y?LX:d`RAܗI¶ L:1cJ⃔ ׄVZ[vx/^AS-"" OU tFOw(s>noѰaXNBF!y柴O-l&R:]ёIp)>hт,op˻A|ggg#F.Cq/k+#T~.Bod$HldńTn]f?Cue[!'Ώ#H!̷@/ O'yˑDgKle$8|0ur~0LIb؟)DJϢp3Ә%xKL ;\* o'JM%fPg%6;w?70fQ G1)&&\ŐϠgj< \O:Ht+BgHldN4ZqF ỵqg _"П">A15vap,| U+5U l߁Vѧ~J&L`L}C:Xb7pvgH^]R ,}C{MÇ)66ݩ2O`'o 0s'= VL`#ں%˗f QF:''|||XHxd2]`ٷꪁHp@hҲ W^m묬,9سPݿ'<=Jq߉ 7USNݻQQQ~I?Rpss A+2b9ƠokpaO_T`)1/k's6 Pz͛tY^((({_9H &ú>P(+'ЧxxY#)*LCA~NT3{Ϟ%PXXuڕh4ȑ#<N#$FP*aL?w*?w";*n(gޙB F w$6eeIP`,.A8x;`Gyy9ߟ#2#D?M+a]!>0݊ds-Y>Ž`:Dr "J^sP,ל@{.5lؐEr|hI|~ƽ )^wiAeE+-@``*.!CСC+ay AwS;v\O duv, 8B<8w1OǕ+WAUć]ާo 'iHwz|>j%(X<ٳgop1_X4\Y%0F`p M@ի [ |x`(K" m]O}:@Μ9c!aTk׎7nܰAy,>JE1›:q_ |G=۴iK?T#^,YTLhKv!&u~.Tv4 ӆyQOHb lHK'GKl>-\쑞X!>݈%?B,^zqix9pjf8'`H7l!>슁KloQ@Z^YI.?.ǨPDCI t ߝ;wI&1;v~A9)e#8 ]o 7UBY#Լa Jƛ#C4(ZCw BL^lG~>үѣGХKڵkGy s׉Y V4~bo͜oy<)5Q`ϟ?+ݳgq >A-՚J@8ODw QG o,nP¡|۩S'! q 3yd9*&Ǐ+ =g*륣<,e 8{x8NO Ȑ @SS@BBb V@ K{o#id_wjc<a$ !ԋ#==+xZlT1Q,3zOQ;=T@}vߍ"9Sxh ^AtH;&NhR?pfp{hLS mg&h/ ū&CҸq F!`3׭X'I'GȬYXQFY Um@xWiA`U%vbx61nݚ  o_'7( FFm\[ w?R&"+}uB،~e`p o V-?7ٟX}H;!`L*\5UڏN"( 䪠jPe_˗/@wժU(S̙3ؼԏ<5@?r@\J C3].P-#ZDIQ1 @`$}֬YéadQ$ /ﯷ^KCs_UKJpJ[1n.`C9Cp'QA {/jhPW7&g.x9J} zXR]D%cyE*! #"Pma(EXZك6Ң>ts_(5{WSCZ ؓ='uYhTG%jmza=cݸr׿hycF.1tm]@N#nlEFuWP<8 DթSK-}}}?+C5zhBm@/.FR沦E; =hC{SJ6 p vy@xS*xy9DC"X+ X2 )cЦ<:A]ö.c녓Sbc0;,[ԈAR?m۶X4j-*:~P3e%;KkP;,}k>ՀN3?HM~,>6] 2YL !4;m_Qɟlcx$T#P BebV=ā,n Ɖ :.0Г!wh`iJ@l#i_{3tP PI xHY>[ Z'.) 9A~ ԭ[ $Q9 o?e$ :~&5s '@ݛWa pHYs+*IDATx}wU"ܜc 4QhhPT% PdPmf$4uè3Ì;owWOv}!4q~ zNSOչxƏwX` ְ` ְ` ְ` ְ` ְ` ְ` ְ` ְ` ְ` ְ` ְ` eQي{#Q$`c/>ys#q_Dk]i/߯ 66t 4ŸoWQq} ?,YvUJcO0q)l6iv򱯻/!-3x\fb͝.r:ilW\SO5< g®+{W5Z0Y}bo?e6T6.'MƯ\KR]⸄c[E"/}p2x?֖MC"_b`(? U\^ـaw$!~ϲؠϚ zǛ|õ'8L0r$lL {[3x?4"j;k᎗À.;ـq0`0ƭu*#aoȰqlA Y^/]kI-D>@"]`hqLꪺ7VV{  !C&q7wd[a|>v)$BPTQvoPE*6>b+R[ݳ>.lQLf&}.<9 g۪=c1F*r75(4i8n1PxoSiIGl1L؉t+< ]X66llEQC?^k7j1[P0D;׹R'YEoCRJd 8~59 "V?q@@5?Ėc,6Iab\;VPO%qp+ِ Qvnq>mgH u ln^0ٖ2pnl7 cu m ;m۶|J"ϳn*6Vbl2C9q"C2ngOHs̈́"C|=N9ž{N.ıH3#4?՘Pb20@R% \9L"Dޛ?qx <sA''dLhc{9 끱8=̯d2DPC!ӕN F;McxoW'juSBN(Dh E2 Wz`ᾨzvٳn3O"ωӚ>&jΗAj%xSy<B8pzC x>l<4Lbk`2Rnf@ƞ$Їf4]Z=k0\o>WxsBYuRNϭ*g<_L}|FC"):kAx60C3Aa;}=Niy&vUuɆ`V)'V>ǂms"W d3 cQyWF%7dJ. 7UǓ2D[PZOvݽBڈ&PL]2 LI<8o6>:{è 0p?rEl|^&p b{шnŦS`(%<a(N(}QLH 9L0i#C25vWݭcx]ƛǪșDMd="Z F})<Y h\1`w8A(HGhCeX ]}b> |@>褅gt:e翋O6l3V\!͇gn˜{u'ЍfqIOU=ك釖2^M9k7Cc@2a4t8~K[# ]LϳkZBQar`#>+"˭*w=5Êcx2`awwɆ1a.|h^ݓaN2?X%.uxvy&i]7CRn-^!11SG4 >Ӆ9=x5M.~_`8jJ'_B1Q8Cw (z|^?QB3F hh/͝OL2M805p_J"0\H C""Id6tѩ! 8e)\:2 L2V#q0a<6&Ѝ;d6ܺE{"]&m`^Dw}IW4J7dzur?LQW n 4^2?ISJW^s EW~"X&Mϣ7F|)|0Z*x)Wv%ρ/n-Ĥ@ Ml8<5{x#τ.>iAe h41Av(_\l*+m-Jؼ647L Wi^ՋX$l>61w)[{6OWKy^.2*C (_o 9ٕ#B3B˴7:pƦGu/&il%zTc[G^,`ɌDAڽ>>ٚK}z8Ap/#4. oBSV n^(&'o"ZkoOֹ\7M!0|?#Y a v0\0+ܫKlAw=N' mPQQ_kҗ풜__<^H9izKpȄTndP0X*gW>Vf'vt|5B}-](҇! 5͸V'B*P"J.? U\{6q3ul?6h}`T?߽W h9 esL W^>eTNp<l`Oq5,LtW05Oc@J,DEsjrvMt1r@6JWWwt@{;n-s. #oL$]q?ӟ~^Dٓ+!ƇоA˜teSY#6Gq v民mI=]ܬ'd쨉vƟV03_&JKhk+&G٣?1 ҿ"W91|&}60ޟCO6[ zlޫGEL͇EBf_ȧFCt Gw[N *cL] f͕?]t P@?k <IBeT* & | ctՎϙ@{bPqc3RJ#K8NJ4 W<~\Zu{Q+rO XjO)ɖQvyI0^g ySqW*W1 ٪[HBqtXT!94 CuSI1TK/n A# DX5Dg.fxm9d.8+By6[%;C;Q2=8D?|RD_Q{N6@hU0uw'EfbVݘ+@CJI(x) @F)P1="3oB u_SRلtnp.||&y32%({ϧ q~1R%zuvQr'm}&NơM=ӭaa0k< eGTFNؽ4OIq c+T0뇄lוkD|h[TY@4ܧ]0a@ivIFE`poK.l`E1P@swbWDn@s6ab]jQ+p錸CwdXHі7Mth~t* =`{[vN襕{wk<|M]G)O_=\}^v5)J pWN*C6r>l4uDxTUb8_7_7U3qDFzVCba0R H JnID41J+q=|zG[rVo/ v=f?gOQn}=5gwR ͜]EѦYcc׍P!)8xT k1\a_n#Wp>+^lw5]|=l]&B㊭;D?Ǒ*3AL#۹%}1 )7 @Y b/#@+4 Z{@jx4 u+`GJ8MĊF\>ڷn없|VL%yvԝa_nN!'g^;_ DY]C8ިqPҩUgT*~dn@7uS$ hHB  [ 5ٚtu^ܹf=z% {W62wl*ͷӯɕo?-m;8_ο*D4r4 P2 t*YCSʍ[tw)JQBR69S==:*3(8uܿ!~r;hʨ4u3?x#O˜_rXMD.1p;$j`ohAs uRکBV$VE ^asB]oԯ棵K}>OyY.w_LQ'|آ%fPۆmF1F{ 79t琩*@$DzLI 6xs "a %b(ϔqc7%t6s-\WFduݿ#G;_ߢ~3pաuK"őկQQɔJU?˧ALK\!ۗ hO,J.;U1*cWJeJ  Eg]~9^znuDYhIYYJ\Ō!$w2,ieUH4?Mu)C}%(Af G&~'=Пρw!xtKkגyaG1.+*v>)T^ 0) nbY1a^ 4e|[ow7ݷ@ub/v÷^nkNwkc79 ~'hX{C*YSް{ К.Ĵ+++˜ vwpJ{>U^K;DDwtՎ'Z^p?v `Z)ASI)AٻP-fV5&fώL{]{;Q"P zW/SKi WAV[$>CB@02N$$Vc ܄C"Ȧ^D^HFWWxEWHOV>ܪ}?HVh 7W׉ARFwRHX‘0y+\btp(݉/CH7f`( ݿ/>;zӱgSrV]NL<(P*TiIHq{ 0Pq`.]yԡ!{eCѢ~HW{Nz@ա.͎kWę Iuy ]]& {a|~v. |A6 / 8dM˃ h ,~}(_q΍ZDSxcim8&5&t,+c4YSI#vq4#ZЦ_)>jdml' 9P|0NJv`/db{lFέϨ"3qKFظKFhqx+DBtN,]ZےG 3o\Zؒ*,G̱ϷH5%|)XMԊRJ^]lUur֗}?ٚb> )L+Eb~`[{!|N^:vߏ$mlPn b;/T/Kؓ ؔlcef$ `R5g z4T$gz]h2L%[zgaaa5 aaaa?XIhIENDB`pybik-3.0/data/ui/thumbnails/Prism3-1x3.png0000644000175000017500000000667113137372651020652 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+ kIDATxyPgr_r.jc1cv3lS3X *&+@Z A,r6F԰ȍ4!񾟾ow_va/4}w|g}{2 zHzH H H H H H H H H H H HU"fxo !ATnH(YWEGR3>)*o358|CGE)huY9\%G/E.OCӐɱX,Dÿ9ٳ $ywU&L  Q8b1&)H+QTZ|:==t%wS$~wdlky**n݂+V s =FDžyA `MJWb?̚5KODmy?纓W껋(>)d"&.|d2oYnn[EEޠ0 ){uxh҆Gw^$5_Y9F$xǿ`'`VymdLH^j" @}6Y \أ^3ßqwAA< ٙLX47Ԯ^ sՓ`!w7 {bu_d4 ʌl{ `M2 xk}}}'g~3,.Ն Ԙ`זI+rxkT;w/[6pG$ݻa0תUoz#5 <ȑ- 'm6 `m\bVBvv6hsuZw/K÷@$z{{v,pL$C1.I>R73U*Xp3JͲlpҤm]DX[vO[h$@p%)$Qxŋ 4'NLv{$ ۶m۸XdZ_#\m>~\~Xt) 1m#Jn 6eH!(b@[{4ז-[1 WCL3('.wa Oi -ۍv L |r/-_4 BhL@|½W^y ===FrBDy?yKMM[?.fdeg/BDD[6ʕ++-zM=R* $@e]_~!~/55 U ZJ-VI qwni~L JwB/aӦM|1( 1^ cB{%o㌁Wl]4 eeJ݀]SEF…  `JK^;E !zN&qDZal x7YW mmmvZF+_>磝hQ$|. EEEkN姁D0ӢFŸ ߝ h=s$8rAچX!q^+q_+ apŻHŠ_se%78|$7c6 כk7oބ FW5MmCYegJ|D%m``bbb'y­ɸG.%"@֯_aQJep^^` :7sCeET$ltև|A=d9sFX|[k׾Qf <̦|چ L `"i$L%2%^pwwG 99 k@ )q:uCd#aL L `— C}at< ~p֎?dAZ*@בC}6 :Bm"خfmahXX[=pARRR ` P ?8@ -RWsc@@pivc7O M03U$ظqC"vX>z`c~/w>Z]+}ih)3v%P91m8X4%@_H~"||AF @H竌ɓ'srr 4^>r`? $v,i@y7 i`U~|_UUݻUibEn|H2$/!?˕9B. sssyn^nyiGvdgJ/L S^{88h1F % lI5|@M|==patH /5Je{-}n7,&ؿs݇ g{废-V K ;B#+/O  0~.pyv8/sa:&@ssXeܕgHcSf|hj 0p8p:PZZZ8Yn'wNmW\%C |ZULtS a WL%           Hz/ӈ)IENDB`pybik-3.0/data/ui/thumbnails/Brick-10x4x4.png0000644000175000017500000001676313137372625021070 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+IDATx]iTՙQcu[ukf]Z@1Fh]ۍ= q `ؘw>Ï"lyMSy'&'"0f! 'y5lSDc 2w͖ (3k]p(U]rF G2p鼐c@lG0 (ƾF 6Ufx]0ԂK]쭇X];:g4Z { N{+O)9bi`$0,y Bö"sA%_GxauMg,;pb A71`dbCfe TCglJ aYQ!=cA1֖Lx]t`.k:zbVv 0aSW aP(2+G#|W(0|Y,( y.UUB00tYұ-WL:d89vE&_[iaیr؏!`هа=G;Vzx$sy@! Ws<>%[h`Ճ* Ž*3CR 䧃t:kX Q +k;>O(-<挸'>~P-?h:pU9Ey[Բσה9o3DpU닱2%i n*R|ǹG B&Z;N? ;, !H-7M0+e:W2ouį`($`Souu&jfhCSPR̝ wP۳pb3c>j`\qLvaJ;?gY b*L ЏF?}63|W:q\ lmTRgie l:9xzyYwQOMpp#jv,2nKaGu<@ӣ:^Wq\#leJ"..<`^_m4O$X gO `蕃n|͹, T2*9Q;\xVP\QZU8+C;?q~!щu*E,9@x? e"lPPCݲgho\=`G yeۦun(]>_j@0$"DTU}2Vnjse*#8> }u lrC9!`Ts g "nE(0YSI BH23]#U@!<XL#Ht2ēyegNqA-~:{ 9P3ƨZI~PId`}w bK 8)YI/s}|ߗ4pU>ڍ#V%O~ڤS ŏF`U1mI eɉ0&PA00|6G@?C }LկW9ot$dtQ =hؕtGMrc>W$_]QlQӘILz2Fs³Q R~Y'SD4ex, |Ɉ٬q ,fF؄Pŷ n5To ;гN_c$tKg aq 00ؘ`{/C]e5'$O-7ibe9!"5胵8Q$4 q". Y493Tu?I'r|>:xT 8YW̴2Xc80i2^ !+ωgjC=k> tx4(Az]#`^5j/(*yF`՚t5r64C3OR 'PH1qNKJtEr?fkMsmnz4"C29bX=(5"GS&-' rgukr``Ílf̏Ae. ?=_ ²ݙt+t2?!P'XPR&O<8TG}Fjvى:^c`@@9$"lJXL߁ӟ H^We. H&UtDRG֜m>3c&)W:Xyt#DP@a9!%:LblLE`aU6%͠p*%`t& {؊|@Ұ;M"{YZ +VD~ ?{qfGo1itN晕`R|G,jxVzO>\"32A 0TJ}s_* 8lz-`*wI ~(RL~!#SfP5Jo)X nZ0![Q"o.g*)fm3`1HuN>\ D.%zDX/~P< J0K Vc:.mf5v)pUίLt)!cJ=;ڈ;s>= 8:b+3P.__Z-\[2 nLrT Gh畺5FX!tH "Q4R@ O$`%L~]JX (+;֍".F* ,PᨺW8U>W @ 5w0Ф˾Am\%1ݘPs d 86JMlsmX,@`p9n&TB)F"T4DתOjeᬸ̜Ȃl61>w_ۗoRxH_.vBhvTIGX?Dq,d DRn(sm6Uj䴨!X wADuwݴ.\˗۾[t׷m*_qbzu0 7(R0ֳnLLUmahQpP(`q?AiSq^ J N>aW`^v)G+~ @Wuƣ2{rLFq奇s`J]pgWjHD@42Ê"t~#j$6`x< Q Klj`Ab,'ڳ1Z9*H*aT\2>q{NlOO%$]}Q% X*uo?5@>K91H(W,T;B3/05&̐VUma~ձ^T40^O M$iAnG,rA@cӭwćx@oLL20)v⹁|rQPN)_ooeǶMeR@ӳF@g&&9 ErhyFYt!>.;]- f>+ EH(KH"P+N7] : %1 )I<~6e$_6_ ^S"%)G~kȯY "Qqf.3aE&$( zrh:#xDq $6(D`f,J@(}@E"]ݍ uKE3bX5?/7HKCT6 i=U?{͇~xHTNOurCpG>3 LݠX!7 h# 4>pt1 2nj Nڂ4Dy~u̯(S@ɦ$&GulCI"Pϟ~hONn ɤS<魇\Ml=w\Gɘdg> r)_FcBt;qZQ,X ӵx+"^T-s*D ;T$%NJl@g3)ѢozF/2s/͌8Q4n\(Gp'MBXa9ٻ nMD *Vhi"j h8hV4?c(T$R+<(w\-{O*Q+>{r,=3.KZ[d|OUX˖&  Hx\ V`/A``oP$[܁I&1 '[$2($Hsk dxc% kS j0e'=zMF7+5L!H0Q0>yҁcy!+T6tOYdrZ;$b*N"@QtɀUZ\5 W`lBҮ S'ӒL&NfG5+Ed/OPmW'>|}߽p1 B"WգF`YW43*&~ש|(] oje-!YKljbĔoPWiV ؄Q9}/&Uaa@kkK7қO,϶QZmC&*` F>Z,S*̡%/֓U1s}jeRQ{eGmAtf81laTOvw}}7nxҕ+0S(Rܓ@`Gul A Q srꔮ-&X4:k R7ܑ?O+_ #+Ve?zx"3 N >AjFaSP$pL NK/rU`̸ ㏻k׎*唡i߳usL=pW.Jwtj{z*7&TF[(/XIF ZLIqm/hdGyg':C:&NVx}CښG{)ҽMNUA=y!~Q(*v3 SH_5Χ_0gpf yæQSgp>a٘s8e^9ݜ\wGӹYfV8w5 k,YXf`5 k,YXf`5 k,YXf`5 k,}.OL(IENDB`pybik-3.0/data/ui/thumbnails/Brick-10x1x9.png0000644000175000017500000002062613137372620021056 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+!HIDATx]itUU$!oN<yHy(3dT8U*%J@&Y0a,jWWWwim֪^:ի{Zݧ>T* x~{Ͻo:<f 00 C3 00 C3 00 C3 00 C3 00 C3 00 C3 00 C3 00;'vUCꥊ_^P3~Op; @;2|}j6&n=h.x f{TZ| e 2|@R (r0~>Z;OG oʊ~H3xo7aЁ n]9ʏg|GE<߫x<Vs Z(B BOMW'`] 潰ѭGeU:4'eXQ~c'V7ʐ7SuPQ؃96z`MIk oI4̂o/?h\w$:`9: -bcB:0ۜ mԼU |Aӿワ<5QoQ $`eHye H|ױ,)p|ɂ$Tkh7VmK0G2tYx5d =aT0= =h K*czj.%8⃕yQdǷ M=:G@4uaʹjZ2.x MAb1;naް!T)JĹs0J9(q~+ւ"\I('TWuR~& W]T&v2]b+q(?_u-R 8wgai"&![e2[$ݦҼGJKCV_Ԡe5X'@⸏\IK` * eȆf fdD )D:7 (Xx Gcȅ@wT*u+q^ òZq/>\; 'Wd0{E%HĞr/7?&SPFCi'D(3=/88 ^Ki4߿Ls0G?ùOUĀW~FPb RTeޏw BI(\Lb oÍtS3f O !ǧł–BS!A ,86 ,xH}(FB!hG;~86 dd`zK|*s?|c~! <*vvS]jįt>|)j"QIoJj$#@Esm0;/ Hy`;WP\m::cilЧ]@}J\L27uX* E !5D (B|4_Ȯ5NA_Hfk<$Xv)ԁkxnP%+R5IQ*K*@ `N9dRMx .o;H@;L|Ry7P%$1v1nKa]gqO7'VSD fW l<, ùjus2`ƠLNOڹnc'AuHuX3!a\| J:v2OPG5"&Qpk.V:qsMNiI)|X(nīCڪM#9,P GhGqB9'-{jcx 2A C1*!h c.\T14󡾿j"Wh Y-am'nZgn $XP.f߫6ڲ_`8ܾ]{D|A総I"ýeU'`d\ ~^>.buq@B upHg"tG7Tq,}>nFӮ1٘4O| \ H@iqιk1`a!*_cx@z8 d)v$r H b7.q2]Nh4" 7Vޔ`0bp1ڮi?9"J_6@~B/k juo*% t9+9HX{6>\+xA3q\qc:-*puXu&d 0*]jDbjS`*19@`)+ΧDT:ޟǰ M] e0#P~![z.& =/j>sǼ9Y݈܈i/H d7_]Q;8;͊(,X(*tˆ5I;LGav:%.b\Uò k30X |qB4\Ġ4=c}ӒT /l]QQ6US]A.Y-B:oCs$yP2Kfy@J`m]{2:nD,`Y v!~ee/,g<ê)ܲ^-@RAqx3 ]|R\s؀_5:Ǐgvӯ/f^F]l2p>M[ +xACI8/zSq,4n4J$}`t9qn:eY]pj!1 RYLsaͽpn&|~o(CD7 lVVUg%*/_ުس\hZ?^Rۏ~m[uN_to@t@x^@* O% xyYK-cZu]F3xYD+EW!줦|!ՓhՌSp܎yheDN23nCU$?Q7ZVrUkD KnHlraHPgS`IJXS>Go#RJK`u/R.bK⫣*Vqu&a9JC_|4Rb+c 氋=3VKL] .Mydqtْ~qɭRbڱ9'18굂^" VJZ|9gDzjaTgN4 ?lEz< ;^!EJ)xrvTwT`f̞Dw(]鬐]),[ٌ|RB>0̧yڰ81ZT ܜz')C/2/rųmڣEb^/çaڷK 9)tI ~ޘx\`}!%h_N2#{yIaFA0?L z13z/B~ݭg0VcZ\7+ͣe~Ҭos3gS' FL)~߅vJ8BKs[]*:;!V9B16p_KZx IF;^ wu{6gɇO -A7a(K"m=gbHy6U<ʛ ԰o7H\&p?jCV@d '>?ZG0beXiK2:cpXs*. M"s$0<+9t fa0#%ܽ-Xu8dIq(j鉜8cDr0K}~7W/T="f@n50 HelE$}x圃dbos3Ջxa9yuVx$AЖ˦"hHA'0N piA.ɚ"Y)8+>]1Unju C/%KW~>Y['`!Q9>^p.bd` =E.P}ZR q%Gbc.vDhD>], O?Q<]1, 2. }qG f SΝm.uReͭ]IγOoNj2Vkcؕ H4.*uvU$v`J-HI|uPߩqi!R)nV6Q7{ T1};wvKՐ\-P_񳪛!rQKdar%bs#ViX ,?5-:s;gk"%~ ],j* |!9$ BB/TV .t%5SF!= Zl2g BWUq#pvN}JmG,kЁc:CRӀ^䷶v1hc]>LhOꐄ;$Ss1o.!H)@ ߍ 9B5$QpgVùX>젃ݹX# 9>U,-]S}|†b_|`Zi*aGyOn v:*ez[~{J?pI k%}G̀&{a,G1m0d,'IRj#[/.~FpY `sNJGJ瓹 @g"$c6zUehXS] s$ܞL_1C[uSÇ7nu#2RPqPBK#g\݌ľ+}F>K2sE&jQc +Qs˭'yKҘaq;& =W\gdLBd\B9Y2l\+ctЮV|7hNSzTZK!V 2t6EJ+p$I5!uvr1Fz,?\wڻA?=YJ YɈ .vmJRN>vE&9L2#x|$VBKɜn ӥPRUej6|#]kSx7ţ^O@d P^P$‡gĚ2ϒ"{xS; m>*()šSY1O;,C&fuOKRZ^?) 9g\Yi8S1 -$ uf_Z{oYU~2v:olN}Ro3'">@eG09!- 9ְZj vzQIDK 2e<͘)H;7qteϗ/B޷pG>O[LRu5+Rȳnc lHAT͖TbiE-hUkk0HqYse+xiB6Kz\u>A;òR E$W,T]pA`LzDHaKKIf(ȣY O!q/@3M#<,k71?x|k֢H?Tu|=P9FB{3huscNPX0^膜V'ŚoHp9 Xt~`gK(2dcGy;|PwvuIZpwtiS_+UsQk P9qV9 FU)d{{w;n;{omb $E)`M f#Nz]LǮ@'] vtԮ`ޏohVX=܋X":H1,F|?I>][uBD 4=υ( Q{X[ׅ΁I !U嵬!83ZV͉D\<LJ: }z@lo ">k{!BֆW]:*Тe?U{=|C#TVWAo/}g[;^\S>5R䞦r:DfX%jUEk/@@Y"#p~8_G A}s.`/N8 s{5iyD9=[Wqwϒ,T??տ&.VP61nGA.=/jRay|n_ %W~ڽ("۫?V=g sι@8;G,p:hr% LPoJQ/h(NjuH%Gt,(&mk>ki2J!|E>oG3gd`6R㯴II!RB{ '랪0xYymDoEhR_LQ UIPH4X%>u.Yc)I8':An۝HT_mϡ:XSΆ*!=tvAUz*`nVF>~0[-teH"/,խDG:VgwgKeU?lږ(:diՕIxeH[a ,EtEρ5#|AKr ^ ܡ4|EIIjm}R_}/{&՛/wJ@*YB ``*aT!DzfSo .pK yՑ*iiW/bɼ>?֩䗗ז6 ,Q3KǻJ`ьY)MYgESv '7n͜kB3 xf7'b䅈XU<* &MUCO_omkoTm'kgeק,6 3UT"UAGVXa?~O_VK' iZqf OޜxM =*)']eMKPm~s*HCt P"Hx cVl6Gw^IWk7o?m,/qЅ{4OW{+|V _ZSYix$Y\" $5*WlpW5`Pד ˣ;|G]U> #{lt "ҩcpS5սͭ&ʫ}[R1SR!fa`!fa`!fE00 C3 00 C3 00 C3 ̸}f@˯IENDB`pybik-3.0/data/ui/thumbnails/Brick-5x4x5.png0000644000175000017500000003207113137372560021001 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+3IDATx}wUkZ:ɉ "DIəaָ̘"2HPu Euu5,uoǮuwsoUWt&q ]u{ssWᎶn!F]a@o;kbDqq[-o1i30܊-d]N'GWVx+Wgyo&㶐w4ڿO;x׬ߑ 2G"pxy ;w;wFwi|xAǘ0Plp$~rû?0p\@XL)I57x2a| nyhxTQr`[ՁC'c<‹dtH@9@h\Ls;\KsJ5p d{iq9D7`PJf&N,BEC?NE3t` Rۯo]oRޡ G1#?A3ty P($n@`(S.<@!~:L 0ﰎѼoYfpRf"s;$:]"wtv1Dd|tWy{7yn#+p\<\QDpH(\q]Pq%T]G2?X$̼Ye0|/{ 1?`1B$PbUxdZDyz7O*(| \Tq٫"nj/Z\(ϙn&PLMc L~>DGB?Ks=a1>dlߝ.:ʀpTdn nbt}^3s\^e?B}hۿPo(hTq+*JJDii)_G7U@e4εb;tMUpW_qfUn8`1[a doP@VIhA/6(9FuneqQB;e Vq{ppNpcB4w!ECrlrcӟO7CnSb\wg53 ^wUc^D}$-Jbp6[ ePx7iQ̸K`Hې_C\.)C7]NI2m)`kSپYl'HF|ee LIKEȇ+p,`߾2q;?Z {N1.hP`@_B<{Az:׮ie|CzNE P1L]fd=FH\ ѹ !0vHa !H$E*͊Uh4#F$`5^0UikwPq62H3^oRV_N^cgxͤٳW5 &͢xfE@`Yp]MxH7E4h $K /xę_p*f:[/EJ)fEE_ RX\"鸁RWUG=f0PE@i!6C4eHG n7F9d~&py&@9f*Rq!D]uvԉUYY)rlF:\?Q*oA`\$C7?nget->KJŋPR`@`r6X#nrS|Em IMI@3TS"Zua!>1ߧa.4H4م*^ -*4 w{ ߽|x\@_\nbcLc`0M6ݴ 1"niqd"9 ZS*uϦif%VwM(֨)ʇ! c|0]I߮ZuXx!{^̈uY LR? .\ǒ^J2 K܋wyۃ{nN/ҥgؕ9,Ɵ?11;IdSz @DVZ c.2 ҩ>wk Ň}hbvq2흜a]4ٚCݨzqs_sѭc8,# 4+vn&`0kL;J>pp!>#0Ƹ"oϻAr/(rw q߫g)2RGTCGi =0@/!8&oGnVpC&00ԑKWyac `zp" U,y-TsjށB0Mw|mLbb$T A[~͒@*Z -~&i#U4߁EUXwl2\1?FYE(zZ>doMҳ :0q-L~u{V* >_4Ԫix_@F0U1}Nvj@߹Jx10 ~!͸˦]vM\ m\qY 2{&ry]ez=[TJŀxhhh;v.UHr=#߿V.*K51tHx P0adm0R779<:Tt8.4 u^bt9u\gQHG ,ǃ_M.~_A)a1bfU39SEI őD#LTxxC0*񳢍"0S78 h  K3Ž@ G;=w_,}N 5bt*;Pxfe0a9.aZh[nav44IĒ `sl<+v :uԡ% qGT;/'?g6IV8c tw8!X 5P7sL5 =Eq0v>/z,\s"m1,&:u7pٖRriG:/ _NV~L蠋![ oV|[w^&]D?Y'vCߘ=W[;f-TA FBz ybfitAj>Oo/: RMJXtN-Bb }2|$/Iw]ߩI?z׿lziիbD0"H1y.(vl Q| ?-0(-at-G` ǐy0ܼ/ pǀLˋNx敾NMt"P֩-V/ֻĴP:#..*J4Oa>wc·۷_@enݕBD@7P+s [o@ ޖ!8:k:"䉆BXߏ^ᡆY^ P\3t*-0yC{Sw?"*FN}ٜi|_SY cD"0 ^A7oV+VR^1l1ng(gbPOlDqĩa,;M @BOk)0йTZ+NNa*Jߗ G{MzT8uY ` >oZ],cSeXp+˿t`A77qJ 1ky?SE%ZC,53Sīcͳ4T:셼$0KE8G B;MO,QcfοRtAnѭ?^U _= ҃ 8^2t_ =3usW[ǔi9Of)ubf)p-BeUO`濖t3a|4w<\}&]tq4=7- oSˡC.~M/wUڼR2h q#sG{ IxԲ&+wPWZTO4]^fðF@iV=KsϔV^oQI|42T4:ֿUu N[[W9w].M 2_7gYhZ/ P) F/U77pExJ14U9Z& XϪj%>-J)HV( ׯjw_.;/ q!@d)"~kVƖf@Jf@=+g'N!t|HRN`r^+0h ;{|ޣ@."Eȣr# )8~"8A^\?iGC M@O{DZ]ʰ8$Q ha{Բ )XL@讙 `_@7{Nwn6wd d-8 CͣuWZɽW bo*3$C_9?$N {:8T 2{{?0Zʇ%tf"`qorW@(b<Ց0' BXJ%S璫k@CNVJ+S OuR*uiT+JtMP.*J5QČQd Ե)pȧa閍N_W&C5ac+w;X. B :ie]ž:3)TWI B>sQE^ *o'0 "2:W_-H'aXI53l~: _ԉ3{˾>!T$ c2QȮaٚB 3V$|:W9~$\g4in $/T'CX>= (jsYE [:Vz쎻$\wEh1E8Y4L,S/udJtC^(|z=Fj 1ht&H}WŴ>1s5(7ΈM"{ ѐC|jť?}_UŇÚF5@ͬq$ePڑ",2 O7kshi kx y"Uu Əѵ'd"py2>Odw+x#Y", px۟]2$R@q<]>Wd 2-3Wi;.((L'P Px6G !oryzuR O-).H2psS@+! O3DuMf /.n-s.24e %fpEp"ȏqPnkIV-bD ↘0k 9}8cS 9w5A ͚ #_(dr3;Kܸ4 ˧X\?bBO.B7>l%;Gq[a=\ L&f` D/ KqMs+e u4"K(#G2zB>fxUQ r4DYLM^󗷪D:'wZ@E{Q\8+йlȯ8x Vh&e t6FE x;UAr j 3-XT$&5c4J{y{!A%&שE RGZX#r _ȞמR%aI@|LTfBq^JRxP%3l}$NE! W`@@ql7D[Mgܸ,%=^3{AI?7q,_S(:b"8Б2qPv D5 }X~|9j+t1f/MɫV_a7rkrBb:V )DO,<]U\4%0BFM&Ψ17|;YOxjb84@G#ɀkWڵ++>1.8Q-)9{(@'DIϱhV  !W64=B$R1k(T+96mnO_ 7W , YAE%"3@Dpc=q~ԽhIB&׏jWԈ:8~9B;. w%BE<[(B+dntB*kܔC{n~x}`&tWrdY@Cbԍ7%n)2RҳMgjkFt4بb>mMӨ?KU5e+8+@x뻿g@P5%!\ YCZ )r $C:( dK6D.LԶ_xNrJ'AVk/[ 9~n-q |7T3~>.}fԈ c+~CU*w' 4ÀF @ޝZvq8ـ&9d˦J'+פԫM3b~BR77ĹaDgs੕lCR BghX ⮒"y;yYmK]md4M 0LG˵ ?;5Ĕ឴2+B%ZYc}R9_uQyË>?;P֢Њddm>\JEcFb>BJ|#bT% CQ`\^/ghe TI`2Gy}b_+ ^Iz 'pfK}x+>& , Y1yH+ PT5E)E܋K .'0a Eۮ)0 fDz\-p+ffN\NM6}z/&ф[lpw+lebr1<SV\cnp rz K?!HZ@\}uU @ < PچFN!j9sD?1+hBhGdtVp^q-Gѱ`9{9TxFul=1 Sا@@ 2NRT-x!Ag k2Ka,@ ^7f?DݽHl5bPo/Im_GU8T?_-Bz@ec8lU1&f":~4/oeLzLuG(\K荹iE&uq>ߢI^רn{DTFA<(>yY( >:<&WUP!-dd03A4cem+8:E)ߏlOtڷ W%pfϖѱy 8wo\q=h{a퐖CmP.ېbyjfxM鲕>Z2qiĬ]\\"ՊstM`5UwwܙÄ/楰C᫋'xwkY\m戦,~"+S{h;3w\fqȘ;<Ԯ?oE 9" T3G|b?;eϸ즏ZPm#q@(T4H^M02-dKZŎƠӸO>"zS@RŨnqAtle " 0LH>-wP KDNb 0w&BAЦJؾ+护y}߿kG$z-R/&Mq6Sk c,x`O,gz WJ6:(xzn+\9I=d\TkD ?;!nHasD tFd#+Uŀ޳OO}r.L10f748aZt~I˺w! ;UA~uvr*y} 8[R%,5+hHc |Mj>]vޟ ̸D>M.1-:r.CKZZ̑82[-#沰餛ofyM䵍Ayj[Wc~G%}(ɥ_[uY(oV aG5Fpe)ZKbY⍡Q.!@;lE4TDGZҺ^q*XMCͬ&@S%޽Z?v9}(;A}ɍ1ߞIKE5-[ ];K24@@jR\Zn؈Z{5dc 4T]#,&LX(GJZw2۵.^N,ۻܴ,ۺ3ߝh5 }rh!Ni~VTSb&K .A 3 #$m cƭhPt(OKLZh/T 5. xGok冎6ڮ/Ѹ;Y<#[]v6MdQA 8X`m S[ ^f/ !W<$7Ś+]d}~,MS&rPjlr~Sz'/>GܼfeC LZiC׀GkhyDxJoaݩ 7N:8&,9MwQ7k/!7ǵvuwX_8GYm'&twjŇݲH 53dΨ!۷ E ;$jpՈۥU%dnl ɜǣ(X٣KY̻\܂Ƕ%я} AXaOup'b˓fuEA^g>ȷ{;u 'ޯ_Ky@Ɔ̫Oa"u!NOf_z㯘7lOۆ8\1VV?Uҽ>&fOl+PAg}d҈ѝsB+tz`| 5{B;/Laaf=n$OnVa g[bQҀ0;%lAMRTE3i#Z^ 'l[2z^dA6XaGז}fd.cO Qŭ ?10P -[oQ^ q=bM-gKe)}xp)Y~YԾEz]{UD2X%RyB {R;C:,LiXEm2#\ jo,;}#w;Ε@''`sER&.^EzPs@AW|܋N^ jIyW6w{ +O %0x^a P04v[ðX_;$-^~ uC˴Xds[;r0E߳ౢ ЪQev~` K 2/û EaڭWs@ R2XCڋX?Z6>(r\>m8 _my6xB[mO4٩IENDB`pybik-3.0/data/ui/thumbnails/Brick-10x5x7.png0000644000175000017500000002661113137372630021061 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+-;IDATx}iHwu=+/; Ⱦo"~FE4Jp \F@e5$Yh$oIbr%y&~uO"`;<0'xG*`].T{4#Auv(ὧ h8x6!Is6=`@@>Db‚{ Sk,64PAaXƂئ>p=@`?nu&eښk6Ww&w ^hI,|!"5ĶRa@lȾ(D&_$͜^$kЇ\θ? ¸+o 0l1؏l;:hEiЅ@fn tEw!N"k<u,yW 0삀NQ0vmaLa(``?? J xݕ@YYP"[5٫WE*ʵa0&րʟjj7Bl3Q$- }_m@tD?)۶U0Tñ/b_|5i7>>i/jZƯչL]0T"^3ޗ ׾ږ9 ϟPWTP|a'^_n_]3:i&)zsgM'<34rm%X]R^^T~-~. jf _ Fod1,=?mme m CC ξ&CB_Vqdg>єDV{5i/2^;\\paB ,Lwg}{dıcAI$/q><.=hsӁMf 0,.Xp'@c_mtXę0~C;m؟^q<f0~@✓Q aH"iϛ9EȧD6>'zY?Ez%*/NܞDfqChƳ@ċAtm"2| ϶Řx:bWg< 0k#xMO3{$rjguoBfcYYڱ|PERΧ{* C0gRH1.?$%^{GG*y اC-d1bk`np'wB(roHXM{&IswpAN*$lVI"XN3)oI #L7 rp, 7d<W363 11Ra9#_b ,o '{'ֈ6 @Df' _034vj^ýifkhh6Y؈6[Xӂ~)REѨv#[5_z ځ ςyƍ6=g_Ђ+[ 00>fECmŅ:"(a׏OpA7 dy eݧH6Xܦ`H Ӎ$u@Zr9OľC15\2T4dFjyFpېD %g4حӉ}Y蕆$OQTCP Ѓm3V=21w$>l k|\"rt3óF40f@9؛\?Xֈ^\ 1el@6Γס' sU*$Y 5d np)HپU@ 47W7=-hv)i;1b.^R)h0ۯ*0 @6Jac[`6?+ HrЌ×3r$Z\1WӶP:GGv `1uypZ3fȐ'Z ,_ yX 8_Ld,2*)A~qjEZv|S$-ߋQ^zJ $5f{[1[[ed*gdJelQ 9#[L~59ˈȂ M?!a{< jDΗq$ ݫꯟ*x^ziȨ##UHwmf kzA e+Tl 31di"a*&o ;Sߧuu$/` 3\_0I33]@c 1 ,g M,,y)Om;< u0M%3'W?|#|pOz l|`gtsE(ix"7tN.;gOy!N4. NV5j_GlWbоJbpc3e<*KW+ Ub1a8͹gJ#Mzp$GoQ*Œ`! ,Ͷ$Z2_nD8ɒ*x6.ѮfBALO7AEu;_"ev-֛j_M qwI9}"l1>0$;{Qg6@/2 BQ tG F3-0720xnl`u߽S^90`چ`=A+9og0,ʣL }Iߕ|_64nC1x%#>k?mfJ30eB1J_,dC 03 #) h(E`ӄșY@ )@iS3I__[b?TRN羇kq7MܙRɫ,JJzY xH9*@2p|y 5y_Xqw9G"6L-Pfxʨ90M r1Bw!ؙ3<0 q`X 0bHD7lJVŀ}\ fH\F@0Q({ԨZ[媦G@s`;Z*^yW[*~_D(T=-xwaw@H"˲ P;ZPq< T҄y"ɶc`Sr!FP c|,F -ƶAS\ Cv! z$z%32ۧ`΍+c w&-WLkD'9>FA;F,*W*PϦcQJL^x44&q9ڋǮ0Ɵo~,f3dy&i)$xdr @bn)FyW d'@ 乴\ýv`.~Y~Pv Kc9(A,NV!TޚJ.TxP=}ih~)ۉ0sZLc-$33uBəSlQ#XN2[!<$eB(zݞi(rYjv s 9ML7nhH-|UQl(VNձ)o 3R+wJU҈<o/d`c|1ry; (Jb) s;, Ϋ\aF>>s0>\Wqsr1`*`>lju>F:FSeg?Cƨ]f}&f|8 Ǭ $Dq"3=:|DLѰ|'rՏ_.R9QV͎JdSPYGQN?[`8ԚܔGOadxc009ߒRQ/#PS9"* wgV%a)<<`P.I{>_"IH0lOݝ~{&xUBs C`0Om,A*0j6b((,G?ץeZx`3J@m,a@7sٻ/1C$Ogsg3'M ̄;o0}c.f?G*BMW6i R__W\TPV̈HRQjzR^8>xH]1*>;M c~Z{yȧl u9訁,54 \T|M"+_BMIcj:إ M\ Ta&; yW80Uc jտ7chx{z,nGPq*ug\oEO.v=mQPݹ6!lMI nZ6#l-Pˮ3qi:X>a9!>Y~P7ޱ:R4T7bPrAsOg`òa"[%7M-y$` E ] &g@/=_[3AMFW?)) _j 0;v3NE FbzYu;QPGDpYPݵ.!q/De96$8`[.T Sb̖@;.g!Th@0 iÐS[ <αRh uC^-ˈVG_FppTnTÐlN%-*gs!Nx3 }w/)!5|2I\Һ+#3z|3_*UKI+aQz\I 6!bRյ T,>nP5B~Q .`WiEPD~-@͹Ax_L@_mD&S=hiXk f B0 5E ;$1Y; UEPd^Rm`җrq㺤ViIb ߺ5GM%:AlӞ8cA iWdNa;ڀiVqh|-KL2q_E'T'į2 @!36Ij}odN0 r}/6!aM+-5b`PϵzrA7[LQ=SDë7:Q3N[->ͯC2R<2+@r2Yg =Jgb/s& 4\21tzΠhXE ""D `Pw*M 3 [e\سmCYH^ O_@ѰOH( QnS3%L=ApKY p4~-/Fu VI&K#:F7D: pHiFdSLF6mfk8GUᔶT.f{2+X x?`lDoR$Pu ѵAɡi,cRn#WdoL ڶ<.`+Wof0%0D].WD3hX!8)Uد#B(r54K Vg <3Q'&X"MB ++0t@u)=|>ogϛ8d^a0(|YFO jР;=W nQݕg?G,ҙ=&q.$DаB$U-KDP-B+ bș%p)I_ +Og Bbk ׬xA\$e듃%Bςk{.} {$S#W𫓤yPRpJ%g9RZ}i>X1;iLm,vX- +H TRνa>CF)29_ B!̝ >CDRGRI=&UrKd}/{|XFF /U+1zZb3i3`Ojf..i37"!dn8q~~)p3VHdz= /Rj&B 5(DL$d[XCD_Aዙ;}z/SUnQL9@o$'TҘ0>0pG]jBW&ݾ{KV$4l=b>Wח,:)Ü=|k,i0J!s`-1\$+3+n:)JO@'H/@J"S9~(?%}mQ\cNA?އ1DUr~_~XUmo[krǦa@uچDXcаN)W`R49 ƙ'tOB]VVpDH^ʨY~]FҐ¢.k~Njv$j KhT%.V P̝8$o؀Z=7_Wv p̟B>B0O/PsE)DJǤ LtPQPyB}j8BDmݐ>ޒ *>cw6G͟9yn9T/ d`feE'vڰ;eI.?L !9Vf AǤljvz"`x㲄sVߜn\ɦI8CmF0<`J|X/b=/O'<&HR0d$7bo1h:!8,(6!AQny#`09|u͂zs?]Q [uNB" =<[7z4 ` +ӷG*RT徎'"ɈU"-ESrsy* HqTK8!tP#<,oCH Litsܷ1K0>ehSDKF+cPOt% $HB>''9U,O?.Wv܀v.y[їI㵵 B*'tv`bH#3Y RpKɬX,* ae%^')>zyS`/K@AbP' ]sɍG_R[G+o֌a;Fo 8CGGQ N;pZTHSIhr&Iّ̍dIB]?V;6穁=müDϏ0 ŧXW#i\r J Sr (H浙8HʏXi{~&yBiGoIF=Mq]Tƺ%A֒xa,aTl]έ gqzH*UF!% aE #,^ ~{@<VQIwqgW;KvMD# Z`ES æ3UvvLR[DeمL 3'||aXwɐǔ]l||nuH4RT8;:OD} )]-wC BzaVVQ<5ҐLs WTMy% z bYCfP'=Iď#ib$/sl*I#+^SBTAd K-c`Q 2}yȮ'Zzwhֈ:kn(M`fqp`/lm2dDv"{ ]c20Jͧ e;6&H\c?+Pu)p&DpSLk1 = q}{7wŕQҏµRMU MhGηuñhjLmXjmb ݹ{^gϟնrMTH^0%4#ųF|F͑R}8MU&K IR=~h1#mHdnHY4ٙC e.x/y;׼aۣ3u-}/=ܬIEfd6V.J2!VM)swRs?nG=̝m{{C+jbL"81LG{cJTT .TGto$#uJLCeV P$⓿_]=C$ycL##0Edi~Z8"hLgBKP%m=]$S5A=\Yߟ>}g3nY-#8}/9{;KЖoyoyw<x<x<x<x<x<xף&LIENDB`pybik-3.0/data/ui/thumbnails/Brick-7x4x4.png0000644000175000017500000002257713137372567021023 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+%1IDATx]iTՙh}}E[UAEiY4J{l7נ1qI+-ʦ:1tԌ:$=>:~ܪ[u?Puo9[ewؓ```````````i!;NZo nuz;hpfv׷~Ͽ>Qb18b||NSt\+|>qKɸ?#cb#tN%sxg/pn|ͭwՀa2@.13o %N]#c2eUSҀa5%U*l"Շ7h4}@헑ax2UT-p?EQ'8넡dyX002=)7ܶx/},ĄB&}WTz_&)0my0-^2 2bLtCT nJ=wҵ˕[/ ֹ7y0eE;'E%& 2=`V*£B?r̯U &*i@ W"\젯3޴2~UaoL.?^Rd{^ (ult\x}6  %q8k`y`_ˈb ߬|w}&++6| t: VƀAA,2\'B  {~8X&*=D2~=y f \viCzu_6B =9&?Ll{'zX&"^gkd( 䆊]k^C̀4_G?W[€+Bbd}}-8d~W\2yA`Xio'q]a^nW  B|J2& VD e{-VbzoC1\V>2ַ`kL)D 8$ƿދjØXO7u^IV0< XUXeIU*_Ɋ_$Dg-g@uI$2{-}hfv#}ێ`ZHbw:5ܲxn" ,VS_4> DCge(M*w!nhUdLh$ sGQ@`($v6ql]'d9 wQN{L׿qXpa/ j:Y. :D8l_u=Cϵ`d F^{ @;s:'DtPX `wj!pk8@CM62k|cRq.j>vbspc&yt?g0#3@{65Ϯ<@7nE5NNM  wĕlj\HD3r!?pɈ+hX U΃⿣@F8 n]"L0 0zu^X!*}&RoO~5!KdQ ]FuR%eN hݨߛcR@:I4чyes7F6?!+92""=L6zS$&.~ܑ1,Nu:4&3y@m`xMi(D koVO޽tSo@m,9'p6*!>;yNbcBH%px(~Po!sW~GaM$sYtsA("yu1OB <"$>B 2ރDz>iq[9i" i⭭B>ɚ%蘵" E8PX#W=V!Zc#|~'sA 4 =sAJc`  bG,_Rw0x>ŃGz#H,@l%*{BN@!6@CDqk$0bj6Z&uSt+ئHPP8itOP1{xá+`xO_ K6z%e'PzkGH 5$I Y,{)O ֘Aú}| |DB`t `0¾Ԫݝ0I2M,[M`Hbpr ٝp`腚2]Xv? ݏ$DI6#M~ aRݒ15RD$Pdlއ)JV;1ja1^7>T -Y^6UH@Gb|ϬpHfe 'Mk"b WNm5ƁЅrznY0Oh שz|zS@1wt/q4f_e@=' | YLdELA#u.u D, Hs}&@ԓ/VJ/X9Uhd;n 6U:sK|vX=/ XfcD(i F%^x[5l p1J"W7V *e]ę08#n2k$;Ɛ^ّ F;Wk>f|C.Q(Qɞv&MS.էu:X=LY*@%k+R+&)q:qw,k%)`y'23Rj.LOOR(2;,Xc/q7J}P2K(q!CxxsksI\"DADW\3IrD`oid6p5Bt d!" Q svP -R0ZB#3xyIB.Z&AV^Dj  ֆD]5~zL5O7o/#׳`Ey^>VWie.E`,̢]JsI,W( >V-#0@׏^ 6F\I8`ġ"˖{Ro^)"Et;HjJ3)}f.zJ|\(z ˲, FSa壝 q:p7wg5T\ш"I>vrEd2fqhh=b-2qDI\*xLMfr+04+к8 j?d\\K;(y i!_'>A3%nsK&+u$ G 1 Wҗie,V.j'v pA/վ" *ff * I`u$0Ny`j eQ*=WD ]uUX|oY"C_*(7xc^ 8+ll`?&<.C2d8,%rpN2ב,CE=Ond(#k(I3#%" ( >CrT*,p%\:7 6"M7-F5;;Nw!e d;ZvsHwZ;g E~,ӭ`LE~vz!SL`]ww{)>ū<{H`MH.V eC[o~>χq}ˬ0M` 9^l%8@T">Y:2@yV\TQKY8tgE}(Ƹ#7EDDݩpШZTKIĪ9GĠMH{@tuc͙s3,t"S?.Fr'*WXaڳ0GY˧ `3J"{hN߻$sp bǻ2'L|%uz4pHP1:y% %+ ,d*beÝ(D!V]`O 5i,#^yS(WY 0HA/M'ˊd(L XNjħlayC#I ΔQd!VǠY X,I`կᛣb|?@B0Wwn~(sX[Kt8UDd " UD,Z9ܛ-GbYf8V4Hgq )Ə[/ rOsb A)G귂j7t c(E\@`ez" }MLX{cl}6 cWV`V$^` |< id] kE qzZ9??$Z7A+&i+=D ⏗2r]&)ʚݝ]Jd¸`W3cf>2d P$$[2;mw0?-Gt1#T=lOir&ꪝb˝1~!#Xr8K4lC[|*K0;LIH+JUg ;Sۓh^Rܭf_2 jN@\nLឿc7pY4vhCfTQHc5 B4a~g`$%f<Ex<{6<?| g9[$=?΢ͭ;0;8##BEDUD@Lqv1_8R^3 xR4ӷ/xJyz{t %4tp`ew0+VZhE!׾W>"U1K7 n޸X0USu$;y}[M+&+r6pj4j`B&13(Į nRq5]=i6,Gӊ=Q5CBD#=D+;XX 94%! v@CڊJK; =*`4F20 maZ-,X6*KgZcܪ62v}skt|+|jl7wh}o61~f$|O\}qm\qVcH Go-iFl ÜMV^I5;H>zM.c7>Rܿ1*F,ñ7}>B CJ>遖`12Al"1?mTͭG٨W^$>}nGo!{iEWM+6-wwB # ;I46б FpXGg6a6a6a6a6a6a6lؓ`6a6q܍EbցIENDB`pybik-3.0/data/ui/thumbnails/Prism5M-1x6.png0000644000175000017500000000530313137372677020773 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+ uIDATxiTlaa` "5($n=-MRAh66]5bDDm֓jzm9we/$/~>s;J6oz//P"E(@P"E(@P"E(@*~Eۭ֯M.\UvKOڝ\@A,$i0$Ihِ}j2|==; e bܱnx\*j@51HEpeem^oYb×_cL}D4> XVaͯpC K/#4P(n" `ťT쭁vVT< IOH, 8k+8;;C.CaΎF]^8Δ/v/#UL~q8᯻<] fzQpuAwqqAtj莮v px[Kad^8oՁבVwɓ9M۪ z&b.]qLX㣗LXEh AC(Iw&"pN|>a(N!H9q<}y1r *G~]*#H>1KDsFhN6= ;?K5wѻA70lO}26Jؿ@РQsc"o"݂剐Olh@ƙzŚ|= W{2 sچ }h{<Ǝ ۛdȊ@DRJ;I)K3`9᳝ߵR`t 3zixLo+]pJﻀ>o,s6 `w8s&q|%KQQw]  K n!U&E?po *~"la %@_t<u-S- ӻ:/\pqz EVe ߴc#9'ژmlG;{?Wx_p4"w&MZOmbb^AtM5Tӧs,]o e+x]VgNvfni1{7Ry-3| u7ؠJ</Xc+[D[hT*xs/ Zĥ=u `lDؘ 1+ ‚Ρ Ҭ@nV^sL2;4!> 65bR-(-v < &_D8 9g^8ܬ'6'ai=[t?7p(캿g+:=;@ТזG׼@B<xBG^8END.zvo Wi4 nqG420+,\}][}E@C͍+Y Z_w{{9#}Z+_:@f`,9 xD!=ik7-tNVU1krj @.*lf@0 %T]@?@~O r+*9i/pG&"e_mD?а8L~=7>"J3ACxt[cU|<"~3 'j| &LIO@c +Z@hե}+V@Ch>EBkjl(@xYϛn% 3WAcZ 4n ez׾6?ʷ*[iMбw<XSB=7.Dz xCP>@ q9<V8яYm @I>d2~*(;!pŕ^jѧ bza>vJ2W ߯ط fQ@K@¡CO]7v7ܻ⫀A|Ȏf/hCn%~\"# a?0!+։ v_-`m /WWF9t/ ,5:0o,y#@T.` PiݿH 8  =L-x~-?'h gO%qȨg-/iyfH7m'hXH#+Еs^?w8]て*K_qmM(*4xpC <|l}H eaQqQ=P<n$#EE(@P"E(@P"E(@P"E( L`IENDB`pybik-3.0/data/ui/thumbnails/Tower-7x6.png0000644000175000017500000003771213137372535020607 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+?|IDATx}wTEgvι'ϐ88H$Q2+YGE0$:(QQ1gUWwλu-b|9Ip1~W֌&>@3 _ E% :6;'Nxv .J61p+yM4۵od_~.v9Oǂ?NǏ^PA$?ZU>Cy2#4Y|n2|!;f2y3`Oщο< xCQ̾ 7{ki#x^# wӹ8 mO3qm`+hO҃ߝ(K id:!q ` !gY-ذ9tyWt%֟;A;-d~lI񽊌|! CF[ qqg|xP[pܓ(Cc'辏uϽǥ{Fz2! X.rlDF hAoh$^:>F\ILH𹅇 Г6f89A:F&q5.8Ǖ_ޣ&=;\~pX;M`y0\dEd =G]6QvqdrFi"teKK;|{yWFCJ#?H?ϥG=Kh!$4Uh22j &*b~t_е8-cYE w'Oyfp\ XK/QƟA{ANWpL"{U^|@F#| DE7UXJ`5<5W^Vs=!6(t:VNm8rwzەoɘqQdcSy\1ܒ *㗐a-4崊N^s!:Mƿ֖_@*WKĽw;`.vg#  p4g+K00+u:2$2~%p.=Kɝ?A{X% T:P6 7}>qUf,)" D]=3y>dcWwzaT _rN RLGL <^s:RC+-w)vPSg#b{-*C̿ɟn( mvj0~}Խεtݺ!pL>4Ҩ=y*.f}=yf2 aQ@MF;zfvp(c\g/ܯRD)gOTqP]y1!TpE|re'~X 8.akkMYs2kd`h!KaB zKMv{FD:z+2CjAeĥdl$4b>HD$ y$|?'D!V:ė/1jȧ{rJr?6PCB%U< 3yp󒠑3~hGx8ľA^T{Uo2DQq\c߭`yLNa -Bn`M׸7@]eAWEo[x2xXA"{h*&A`ŒqL7d*Cܜ@Q:eҽMwDgPJ-z/IdohG@P$^t -w~ENv!>-rQekM@d/ D_@ b㜧c}XT9J# Wﲳ7 fLdҌ>vu hF37) 3[-jH۴=xxqN,(i$ ϛ1%Axw{8ų_ą9ޫW]f6T/N.; uX]JC/@R;{eMT,_'hSj7:djC<]Q%Os[xAfK03bU-Pĕl@DrX݃!C` j6y!LsjЍJˁߩ].T$B_рq; q㒀Lh\ _bpv|[>}  b9F܁0~&v:+)Yۗ<_iG+! WI>P3RWfd!l̼ 8"7ܪpJ/Q0yH1oiytm`hoض6 ^q%ѡ&(+lhZ{25ne ({aɦpRt1m&]* Ӓ0޳y}MB_K 2~;(vT*~.,8@SJܐpT 8<V Ba_4RChE.qim!n#Vq۔!2~L3UD(Ή{= -穐x[RѮ̖?|&! c6q!~B!<,@ҽIpRu<{1{W>xTJZۘ^Chᖝ<m2wr<z> ;&{b6n;ϫ"i;1 qE7r( ]je/ ֿ)}Xt"2 [ŷ o? hW*e|. q q iK|q"]Gbp26 7#9VSY6փՅ0y6V<#_Nv"avDMYl :d缀Wb1QQd=/]>f~r+{E3w7;c˚4FX|1ۙz^)޹LNk!0V9sqb>8GDmw1"wCV gIҮUl N9&F !bdIr482~i2dwͪj_2#OQNx:•/N=,l>Jup&I62݃[ K*sê+FkTwg1\A<~x:k )C H5Uy95}'S6 =^Հґ&P@F18Yg3 t "v[Kxo?QL5DdUYE`U& Ĭt4kT+e//@1}:w2c` vР|聑PØE })OlgvpZf<2 = o6Rt (tt1:]m$ji]2qlXuiE!o}qp7JzhZpF)Kx,OkLtA3bH?'gd|Vi7*04>K&O>0B!0@L$LzvH tO/qwn snC|PB ZGc{- lXmvXw$pF+D`U8d܋(We YGUK(Vv1#{l.RmVk q5N<Ǎgh7J2mGLCU4G9XJB>k J>+q'3W"PYWB򁗞p{`u ?A@+.!5o?;{q#@fzc @ K,A |[2td7fmB O3N$G) (OjEH@^]3$A(!v"~!#u|876[b0fk:U_cX,mb~|_Nf.'@jG &^a0@Bs9DЅ[* ]:l[Fd߽P2ovqД-0~u9c}LY $Sj+SAfB2Td+^NΫz/]?c2:\6VqC?I>^Z%KmJe&\S=%_)%A1fṗ"' @HhK^,Y?UvuD4w\Ȣ?fjk W) Yz b7ISXR."B:)B'%S%hfM9dkDZ\)* {ICyt0,{{ C{)Lr|2bp[(|Bu߫1އT]7e4a88DY b+TKyFxm  R,uU;?w@(Hƥ)g)%$=bx6hbF88xEIn~:_^.&h`q% jp<"02t^. yV;B3wʈZ`P`,m<=+`R2偢$C {; JH`Xȯ8/Tͫ{a+06D.Xv{O\A'k`$*$C [\ԔR!PaM"k)΀\}%9ߣ'6!z7BHbvO`:ȻM!i/k4[aoh@S'߱oo'pz3OP:-}X|G(0QQl7T<7w<ߖ lLgO1-+d-8qQjvCC# uK-/}6J)0~DzYNGi:=W{(؃{0vbhC_EIV9["Fp!;Ji{ig` z@9Ļqi "K6)W @F+' Ã'E $qtvRӘ<0Y^!bRV҈;]E0^{^dzzXEO-Xç@ƼiY: _YurWJ m䝰`4ߐ 3\9I ^160mQq+5ΰH8:d?UCM ?p !֜օ&Štyf 1xg‡Ð@d۹]\B WE~e?PV# ;ǘPW.>gy;mX,BC 7*vY 13  v ,a/T* ϠTNSdEY *dڢ4N$ t$2v(EPm\7|܍ bGV@ez {<㆛5  rpW%qCBG}W14jbTj\eh1",9-jbV8B*~(zCr?Dq *Y#hA!" 1*.!B t/$>_F|Y#?Cz9K!߿y_tnC \Э󳷀#A|b.F@Az! ]xh-,E6pIlZ2"xsh%Wb0^zH"".l)߭4s^X^,e`{K5Poܺ(?sXhE[C\FEED]kC|[Y+셋Xi4A\a4 #ȳ0~6)Q@zzK7^ F{^47FևI <>*}_͠ArN1?!!c@Q }75(Y?/.pLm[YAh'EL]W$=Q7wa6f*#'3&ecC3@|84 !#p]MX0.[=_%!}lo; y.n&0K,% ~A{6=@qy=5^rlkUݠn䖍g/2Rj` :Uk1dBxvFY`uu I_OF eԜ!yE|;G n^/[8eBV-x8߼)`^j.d0SxvK\  2wOU7 74P`.{{yK"4Vl٠LRmIvʸCxgE&Y%GG;yCL7V8Gׄ.^TwA1cn#kq; S`>;uv͋ "أ5gkJw%ÐV60WFCi2 P\yS\oKWE)m@}h.س )^=_ڽjIyr< jB܀ y=lK:M +`~^vUFk^7^s9:]TXlt OѣB ^ <0*#GW̑T J-lrJݛ… ,x ]59A anP>S'yrc3ڣreB-Fj9@FeA!֣cUus}-[s٨pzRoxeucAX1qt8B1<RQ8x {Wؘ 'zSy[.Uʷ0_N6)R؟oV[Sѽ#v"C̒lA~\Ȕ!ٚe#ȵK H5}}"sRD+ע$cwDF"N"EEEbXأ 5zwnOGou{  0rϺ ;3T bܸuG]Oy282ttb ^AU[[Rmf!h%somLDggX] ]d8( &1JI=M̾}%%+/񱔋/ൈtkD33z1MG7)).;]3d U0#l c`!(䓤kls0dk t,>7"Nڍ@`Fh6s{XcaD]'WvW!5ׄYm⫃żWՔ0!)wd t-ʽ^WC-Ni\!8.U;ASJ*ybp\\bO+YB T'&I+I#BY:{ KMS%G(P|wS\t #Q1@GeI7!( `6-bޠ r9XEn)@ GljS*nd#g〤1&Dc +pOA'8<|w ̭R$mu$o3sƸ%G7R( ^ԫÃX冏1Xdt=@)ٍaZ.w;z70P ˲4^8@zemucISiny>4s!uXSq\^|{y0-5A>X&^zw^S qU]\NPF]Nmg7%,f p*'|ӈ3i¨ R=~.hAT}ޔ4FvUsd\$֎m$dp']C`+~t8'7\dx0~BC6}vFwή`FhU]*L-kC9TLZSh}@oUD(.xW1e'x;քC=.7\\}{aw"t04ffG;,$JXG?o ^I7(pUȇ jmkLe,v3D|*0+%yް_Dᡇ$Xy4_pieLHr} ^a$r79{Cռu/ "j7MZ:yaO(-8xϑ:0v&z%NyQ4FLn4 dE8]aLo7Ԕ@ BH[)#TInD{!P7^3h ~H5W=f"eO?aϾ;:2e\<DՖR R:-uY<b?w-bC} Dp*-l,i\Fݍ&c Lƞ1}{uʇ?^Q3@:_ơjcll7ƛ1ˆfBeOWR5"xi"?v 25 9]ry P'@pC~>$QFTa!oxE o^-ջե `5Br~R Şb!sq7wϝ-KZ2 ǵ4 '.yR e?v3@+U4e䮟O?|҇ʂc US)pn[Tf$FBj,kQ0 $A_` } s5*Lf.-gȼnfuEy>Ev yw{ (7; PϪɂuf .M1L CnmO( KdKVݭܩi*L̾Dqr%9A{Ȁ7-30k3-F˿,݋&y\lK6a+j}"3`61*Xo'˅XkajH{ sg!;L:@kݔ?#9CR'0JbSqQEzy/{ bϻ[}q)#speݺRo=/_/L &E3p50)?Qm7Q{j5[bKAJ+2@/ Vp k*^xjɃ_ b(ߡwY<+!$>~~ZۃhjjCRKc>QvyBg\ /IL&ȕF7I56j(J{%qHnmX;qqO?"|e r0V; Q;54 s0O l^yŽFʥ^ ZyR+ҎNeyLYJF ~wSJu[3*&!-g`#+2cXAB;hP57dw!lq q/T`lER:gwv^(,On B( |?)@f}3t 5|mM&`Fi9Ò3 Et]8k t [/۽|K;BQ`۽Qn]6՛o]u?һJZd3j/L ,7H#A+| %_#G]O߉DʗrGnsQk˿18\⊹~twUu#k+}9@t!xkzn5C]oU]N#ChY=K_x$۶ ]m w"^xx L@.{tEMt>Y.1Tܷ?$S?O;G2D`HӅd尧1"76oXL, !+x9ޣi^ >xmp% V N c %߃+~s;I7%,yB26UnZa pHYs+8IDATx}yTՕ9.(tի}z_eAYee mT4EEA ," cɘL&,d2s~]]UU={|Ϲ{C^I 7 9rW+ܕ@ wr]9rW+ܕ@ wp^/zoiR/9~KcVv={:G >Ч7ρ ҂c ssTy^;u[=Jzѿ!17ۨrm\YmTN k?x?΅ nhBj3} j ^xq@y}CYI6ȶ!`e_g]F,tTWv [ H !`Ɓm%{xRx +VTۥʼ^5VI70|Cx:kG_O0&{cyj ;[sF{7Vtƿ~ۼ& $|PxT+O{N 2e9 "^=FVY:Tr8*m1"==n51aOU °OYu/Qv؁>, Psp](y;T۹ϊwhI&{.%V O@j]gb~16Ę^u=^ 0^s=$~{܍f8!-CEf۩R뱘`HZ{NK1*S1~'O wxC&SQ IzG?!^|7ݐb|g0Ww9U:ӳqb˭(HiXWX{3hf܃0{  ̸ frRxY 5 x=5L~v*MT93CEFx1q7eY$F`㾋q\^:|bHނ13܏3%h6o޺:39j8@] 0b%ۉQmqd3xp3a;NO 1 5Ũ>K9'n1 Y;WPqڍҩ2L'şlk$fqyLlG!AK0e4ARc@ֈC\٣:,1ΗNݖeE;rxdrR:4}7prTOg;*n[0oݩUxSڣ?ݎ $O&wɓ٨[b@+?.jEh Oa!o 6`ںe !x~H#2g#p>ߝPqZɞDq1#FA6] w!pUo9 ^"L|9R?`DCĽwtץ*q@@ Cل1UiVtS+?G$%@*c\.P4?pi2=j0^s^|g}{ ޟ"f,G|ȼgzܣFgAWpxV1/[R( vFP3aKoTqh~ ;O@VqJ+n^Oc06մh7Şf1J1V oQ1€4. $H2ݏcQԐݻ=~fAa'XaY { h4s6v8*Nd (mc|8 S a=x^V;'^6vi!{D)ZjbI|= \ly+yq=muKyT1< Uȹ}5 dؚx_gI#a;P1J cx[2c,A9S[/׬> 9y$i4Q\QC0M"b=Cb%/ X%Ors 7 U4JHک= w#/Wȴ!"#*$]6J>mD2g*9]$[W&b2iP"v_wUDDq:34~7ƟE4G" \a?,%m:&y1}:ʓ:^,+ƌ2wS2)TztJP:l+{'ʞ*kq 10au ]aFYCI6j4rXXƄcC؞g^kh^cZ(,AFgw%MN 9R|a&wl_59|L~z/dt]8VՇe߹$\;{^wR@dŔB`=W3&t汭fI^I!Pz{8,2(Nk>qHw6pZda kL?e8߻!&z`(_ .;2|k7ۦ!u); ` @;_3(Ċ`6r.JZ]=)jW=rS񾾤,%cew J;\ xLsb9yjƬwu@J{;^1lԋ^6:+̽`SU2$k TPیea\7rH~@)6*y2x SAuchLzZS:F&aCAc[͞W; Y:ʧ]S'wYg J||IkT&s%wCۭf1(ɠfXXt\+{'i]oHRj f{q/z>x&?}Sm)_g ?4`@*urϰK|kXf c a# ^橣/nj*?j{\59 G"Kyn8Dn]m SZgYuHMAÑmS' ,Dg[Kv_ٽ=A8xEFfcKg;1~r^EJ,"j-6:SıҭfXXzu$Q>~˗y 1NA [JfikKÏg(#Z'gf1vcx׻lOJw~uQ/Z{}? ݭuGOX9HlȞ0tC6I늕C``5eǪICɴ 0y!)A?`Ds%RxpN_ Kk8=JVp|ZF ͨi9stYVko'ұ}6r*$ 껋B~Du`ES/sB׊Qu 'N5/41~[ =S&mA kLJ{c;—o6s 7/5:AJ k Nih+By GBz dc Q;穣> tOc$`֪kid̐x\RcI޸xznw23Y@B 3f6s<&2yˆ9,^k!d<@V:ܧ=Qigx Ihq7 ϰw=dȨEelQjuaV2{uj8!3T (Bj}bkW7>WՏ%1K=O;-+.G@Xّ֤t`6c\9T{t6xp,q"g07$._cb"B>&qy;W IdqF ' Tg:<[c|C+-${,񾔰a3 THuܽ4*uxdgBO͟X4%.QyWJ3zaFOK=\dOI\+To<'EX:Dԙ-qe,1%ia(9ByY+_㹠YV2j*gchY͋>3gL18kuSk@2z,L`*JfVP`Q 곆*R 5įus)O\. }|7M=ЅR٢A %SJfEE繒hRȄvj%pc!%U G7Ow4+'[-:O:Fy\je6p=Mӧ6#\Ɋe$,` A1++O"WNzFP702r],5W_+U')tM,s+ʿʭ“<jZx x QHXՒ/l8`'_f$y¬ߝgV3F˰_~(u}iR:_Bª|V`xATsӆ ;oZhX?\~ĥ>J1 BrMP+ %+:8ܥ@#?P9Yc,f_IZfI9S?pc\}5EE3GlJh r$bg>ä8~:g:KCɹI򽃓/$1(JQdLR:WMdNU% D3wIO04-W{zC|RxeA-ŪKGONeKDꮗTun 6.o%bhJ,m\;ŒQe3`))g3$'fW5h4= nH/Ƹp4?PSJNo;'5>bS? !:,UQ]R^,R ղ!o&Ty~#o,Rz^wPjB<0W׃A]6?䰖?Tɚغ?e=z.O`I99Ekk>I[nij~Iao5YS׎vOy_9Ы=z;z@{ RTj 14WEdS]< 5W];+$nԂIuw"Ji3(' V[z/`x ]LcˆoZ'`Ən{+7uߡ[mþ̱0f5>ݛ%Mf%y0E#۽\~*uUkVV?=(^_W&jjjK ^f@mNGi$oR\*@SU!/-lRK^OGc$Ӥ6c1$bAcc&Y-b)+\KB󁯞f7ĀWh)^$?|$XNf i=d!|\Ӭ%;2-qӑ,dzv1hX$%o"Y܈Bk=ͳCC ꔲs8(N7[1>=D Ķ^3pd251 %9C]8j\5&]\F;G}oY/$76[?>R\dqڈ|L8]<]=[{@t"8 hvpm )ce1{줸4Ÿ[T+Fݲ}a:u0Mpe2l,pHXWnX\fOUjp2ҾϫqR! ?>C1֯ߕ/9vBCb]+zqXdrx =_KaC=OXrů^@Wy L6݀nc·U7Ȕr@vj܈Bٌd|xX;x_gSSh%8b B|gyDg E;sCj3E72URR>#R?=0}ˉ@[rTj7W3ֻj=n؊k_F. jvi; 0B MǤ^n&pt垛Q࡛`!݀YmI2Pz <0Aor_'LN\IGkƷ%d[5>Rn]R_R6~/N~? U+JY}(8F7 W͇au/2oT}qlpL)WJ=XKfFqk?8H1e* 3eay7خRe< {T @D1ejĀ4vИ W$O? "q: 57~~X /?J ^4x–nrOEf7 bC5զPvJ}Rdn{LkA.㚘1Lp FmFʦ ae1~ذ' mmjvÀ2/[yn;e0 &v."{7,T ?>y{Z1'(=kF?R1R< /f *XW  t5+4QDfNd>4 B*.OM^ !Y 04cQo< –x`\ UO%KNsʞ4/Ԃ/ DfBoBy*t>ەP+jmQ%\i^W9AY+ۋ|rGf隀2~R^ )X>hmxk]*K^"6]0(\!eޡ?L&W دU\l4vSwC @ofKb}RW< ڣ @0qW UnwWx~xI;&NBX4"V+^@`6 c7z0Jx˓gBK/q'=\( 13RetInJg*Jau| lC˗ ۴j|v O/1t^&&J.UC`/}EH-sA7:1E*I (jg<nfaA;_Wp]H>j6 2U0 /zW H'!}}0:ݹG̖ld_P\!,1 yO!+,ދE˷s'or~֮_؋}R쉱$i{|3Nā8Q!tTn5mD+ &82==GHz |@s@W4ߔ@G#H\}՚p#vioi\naqkƿl9XL Cs+ H^xH9`#xռ~dnb[zq.e9YxC@-Eic>%'A*h,RATkށSWuU?߯Pr~70"[xB½quü:goH=W"W~< `!\`5&z4] Hy^K'W`C4=@ȯр|rFÿ!XIdScOBDyz&S'zQUd<2#'u;+!aMsBjQ?Z,?,Ī!{hhc<븾76ϕBTXڽR/y_*g(dHZeO?.T=53 ŘL59)bFtW1ZuD-flJ)x1w 7.LA;bXj=oR@ ?_-~GOwi lm Nu% %]Bv1d/ZH!D I]20(6u4KO7+#$yi/j8<k}T!t<?ߞgB?{T}D \^V.zG7k=+٭>3d{\[l%c5I Li"@ANF02! \Q«c|Orzޭ d%{k $K![+D"UmxKw xˮvT syPVQ UTY/x2Ym#v=-ib;ONm+К]:CVuSƵCܮ( O7J"W8^'Z*4ѭWR`At2rt^~{#ROb?I ;GOw ,Y[)@`=R>', q5iLB*HF&Щ͗4;*T\9Gp<6zU՛<}*41Ysi1RֵWw,̜Mؤt}${|i`ǕRXi?Ш}D]3+ߖP~'!l{nX4W@~Uvq@GR0[6pRf}&חCWw2<]'ނn=XM*YɄ%HozI'e|F3O,U=i/ 6}o(7p=n`aqfEDvh<6=Nb/LW  ]/l DH%_;28Go,޸ [>' ]v< {%%[IR(;4LҖ=yjGJB▦ ꦱYtr 3 *FXCjW۞,qn-f޲dӂ7V>J f©by#NG;~@C.O1(vHf'ݳ$%I!$wp55/b? &TwDZPcцג e髊vE.Qn&}7-/OF5߉ʆN1|"q{>PԹ5S-d 7zEÃSfE 5iHCtqM͔f ip0 ,-aKdVDUϰDa^ @PԽR(za]SOw2ÍtR^(Bd}YҹxSl>E) >O2iYQt@:@dF\ŽPyv9K+ap9H|ELg/VVBϙFON7~YziGP4"H>Жg})Rxpǀ]]%5UJo[Xh=tB9T,?ʄU>.Q=;ZGOO RHde:;t ̏ '8D`Fgg'];6^,IK4Aݜz7DKt* H4s w$d)!;)3%ܹ3N=ayf!<4ǞD `iaZ{$R^9GTY4V ]YLI)<ïpC_xn c;}_|@;@4rH#Z]<?mGM > _$jW^0i%>S;V3Nd6Q_Ȕ5nS Ÿ>~ =g@Rӧ]1o3t (SSJfp.sD& C!) +w:P0ngn^X"I ԕ?}\]G{V6<@jx4rJI_Җ1ud[=C:hNEnfRJڨEI*Qʈមt?gO%ziQj8CGFNOXe;8 tpvPX$鳕F'itw]CW]VGEx||NH}zQhF~eYctDi,M䉇p`4(j!Fyȵd!GC4 @'lNh7y1קs}zzPB>|9O} 4n1UF@Y#mE7Вوuk( # ހNQӽ~$a_U[GԢgFV|ꢙMY $e[Ȣ!/Dj*-OŬdO9i_*|k, RBo=uI6ͫ;{ԫtewa g||F[d } 4 S, Ǫ#մUcˎ ?4r &4ߐFLC=/锏gj__%ܵ~e|LX0HTz?Ofw߳l9gI#/7o|ET?pn nE'@ j$}SrֹNyiޤzUϕ3y~ǣ)dTYs8AlJr]9rW+ܕ@[%vNtIENDB`pybik-3.0/data/ui/thumbnails/Tower-3x1.png0000644000175000017500000001573013137372524020570 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+IDATx]ixTU#k%UI%! $$}1 ;( Ҵ(jiDl[P"*"FEQvبtϴe3{=U*vR{J=y[?z-?5}t蓠@7M'n:t Nt@7M'n:t Nt@7M'n:t -+A @,ܸ^[?V|vg4`-턹E%Z[-ggH~?<3e|O;eNPWYtZ 7Zjo|O;Kdxܝ!WqXESLN.f44l+Ű[Γ$l6d 3Z4l. r7;(9c6/1uD:tDY?" ^윆 2XZFF HPxͽQ.H;0o0X{ɖ]+4Ok{'XGvyuD>BAdCC׏J1?s^ ;D}Ti1[h)jk6Y2z&0FvF` cccY!~豎ӱ~n 1@*tRRRȐhcc Oj@CA6W0="\֪DkʡQ7D݀֐G$xfc,'' Ȁ^~ >ӛKkEduU7?AiSw+ioSȐrssY>}d2dOx_J juhp7b"7ZQ_$$ 2`5 5n."??149z!~ZH%  0w ]V"l{|N "@&dOXKYAdHLLPPP;85:~ aΛ0pY4SE . "#X|T𿠋DiޡgQ".'2$%%AbRRL€xdHP(᠟d8MǽSr)vٍ'TfQG *4Lv*Mht0Xd؋D&#/4Aȳ Aj"#C >~H 5#(UJڢ5`*(?ԁm%=NC/% ! /@̳VVgPxu!x ՁH,a9V>s~a"2#53ma -@JKKyIaA.=r}cs-\mS6 99rq&)&&m w kQɘ!a>įd(Mh=U9\ƎN#o7?4t`^d0@zdb)D}M~߯>/&껤*~-@ʫj2`/ed]hUd"_ RAUCQdߠP(7?zltD|uO2zyLu$D2U]HS9on8uVf ".(Ytd "z!xĦ 4|xۍpwG̣Bc٩">j,Sk PÇ~k3)dX vqTQג ? d^\;<*)\mXH+.ݻWB"ș/W7)i3  w U'a2j.Mnf\yDžl!g*6&z ,Yc6/4u$w6Q|jهA]1^kCa*?ʯ 0rHVRRɀcWߨ$DUWm`_rP QR 0N>乘 0b`#tR)4pn+L>ܒ;9A]*2rU5jDJQoj EN4䶆")5{`,+.PV{ +"|<PyC||Qg4qC <*=W"E1M, |؋m + /33Zz,ja)c ʛ9B ABM:40MΠ 9 PR}6v9a#4o4Oˀ Q4Tݓx FPH"1zeC˧^|8&|/5Fs/;6R h S@2 qR>h8=/қCB"_QXt"uW$Xu|ag;y8nciKi8=4o2j3VHVzI.;r|S}XX*5 IwJUDb70x nT-LJpyꌮ*v /()%H0l0^G\'btB1Kwg1͕؟QMAlg]C>;} N8TalI\8A}?DJ:||FܭXm2vBv1C q/)Oa )eEE'h&pc:<2ֵXv~oWl<#SK,7rY2&`Dt=&\eNA8t}\}˴ƈ>۾ OXNTL*` `DJdT/@N'y!ۗD c1̛day}]> oע"k2{$n֡D kA<*VbFKOJ`Q1 01Q^=m@`xn[R^ٜ !_'|>Kr+$u܌"G QUDv KֲHގ0 [ ӥ a\:x$j_ i?mST1*VHZHF$~xڻ \L8|DHI" >ƷH!>#Ur;$@+P{8zSR5 Cɍ m UP5Q+$BU*`St"$ÑRqMJoyYἃۯ7MB2/@@ B%BK lGIfow( _D{;࿁8_b׎R۷~IcnM!t&Rs? FfNPD`U&DֈehPGWS+cؕsrK<#n|]AcEM)"O2G AKDM'@dهVB(IZ4-;糗7gFkk~n?yA6[ Ţ ELgƀ+L5`/ʾڛƯ]6JD걱8jNDX< Q([ЂV'* hD WK2Jl=쌵7qSTJ6ְ)~O[*gT6ŏ0>Pjh2sv$P $+"I#IjW**`W}vb(y˷ӝ6.s[?-lw u.knwT[& !|Qv$ 2kQ%'vLn>Gқ&AO;Gjto6Qj->to=E 5y'C戌qdipˉ6@ ZA+4Y3X\"tC.&zK)֭߰t;^2#73q&HgUAbZĩnLc踋(kR4* 1bDwre[1\UN"FH/ `x>/HAl!PioM=jئ|!@&wp Hfp9 hO^}",RIC|mn{tðcG?<ڭ4F H#D5P:~?-~8Z9U!ݥ Dx U"Ule'HΒUea 7PE){;{"eW6%6j n<{S0֝ (6uդ sڪ^} 7峭_! )_?aGG.勊 !hSDg-\?v _gqw*$$Up7ij9]x#l3}[::;4r\ا1A@n"pUKPB/61%)}nwU>F+b&V6_(.yʃ7KՌ"UHus| |0QoؐTN%{ՏrCZTJַ!F[`'_â;KyP1 {$'kXB8"@a/HFk4uW AK/}q2B1CS&jN`^rClإ; p4z!ق;stH){~Zck{70KYMx#kAVspxWjC~Xߔtc4D_w -v'yP%]8?ՏǼDSw=!PJakLY\m;yy#dw6GPw2VV67Jcq\x½)vzkhΉ%Vܪr@&hz 6h +I|?#a6[ϰIMDWwSFWqAي\'xw$d?cpnEM?ܞ~AVܙ̷KUfe>@?MMv3.Mn$~7O{P3bvUnb?D~ONH(;j\c]y*O'@(ɕMʷ.̝d=:"O5*쭸M`"^laLMMo*)Nt@7M'n:t蓠@7M'n:t Nnٽu`IENDB`pybik-3.0/data/ui/thumbnails/Brick-10x4x8.png0000644000175000017500000002625413137372626021071 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+,^IDATx}y|e)j|29!̣YAdF DEi硃,*8 *HdKk!jݯ_n{ow﫤rrZ!?_sԩk/ܹ_]E]-----------D'X͟!`݃շϔBsV;( <~~u 'E {Foo/O `iG| mOVCݢ9NaxYU}IQ/VP&؏yi+gۡZDDxa ?Gp ƿ9~~zۖX%g;]H;n?J}<מԿ ,m_S Mb0j'wK`@Ah/GaBmMvuE1@1n08t˻aa2.BH.,|AG (NBj؂} Tvv{7p*6yR{ $ss6; &=aW`To %ID ;(@@r26ƿ? \sۮ_C0X8of]ZhC` @^ na󽑡~2Pd^O%$:8*>yD)O 08 hð;az7B}=`nx!^(s2 ? 1/"䱧Y0>E1*ULy80ǣBW?Y  vI2o6UH T1aD'?`^vd°azװ ; +$j|7qac T@iRDpHg15k#G$?m'}qAv_H 6⋱X 8u8@!ylD݇YphȒ"P``7?a F@Cd y͜* V!ξ7I# &̈=6?7^]F?Ǽ_R{!CS(vCw䐪°=M9@`$zE|F})^='eAi@BtuqV~D !ůڀ,d0̭&;H6A6"?C<=V\1 d=«g<*}h!hdVa0"ddY0~۬IW8N & !͐xL〔=sM"X:(Òe·1*Mx6Yw>80H/eKFw;T kZ KWE.ӧs1,# ̈hXf)p7>#&؝s=HN@)V(Z% 48ܞMP{Vc[h xv 0Bveϙ((*6>eAd&\B`5~#hFUxCܶef02(# &';f0bCaL/ɚ_r9B>@ȹA^d´Mo;T|teȰ_ KfhE朘y|>p>8΅M ëy~%82,q|VUoɋL5D#g$TQ*qm8??qxrm1M#Mtc]iC|}~R0oe09ƴ{?j~K]S*!aL%ϫA#+YEKlcK3( d p~JC ?tD#f x`Lr /aQ `1` J1RDE,5~^W더ryfaMSVR2z l<|baPi^k鄢XmŶ>$Ã~E,YJ1-Cao1|  4s؜;Z!b"FAI +uiR > %y# γR b2 ף*e57DD/yVN:ׂ ە n*MNg{x P 9;拳KٟiH7!gęݮf, Wa$0`X"MΝ@Y`ޤ+Ce4"SG6Qk9'Q(Y &F2 5%UR=tseI;AT.,NtBh& Lϼ4jFLLlH(I(P.y2pq+`1H3{z1E7i*,F BʫmUZ3 9B":6d!a`(9H˫96dAi!X; cRLוT Qm"uea|T4̗b! 43CӛY ` a2ܔv < + 7,KPޘl\wculi8Qwl_>,fmI@^ڑK /2D^MZ:s%q> ,tȢ)/g|MR3O=9 X\@1%cp3̀-2С20? of ~<΁`Jk)P<_V Pݪ ٻvЀ:5P_Ko$ItV|J4 z:]y;Y*AZ>hBMsaF-dqcΛ@$Э2)Y5`"(~SЫYd" ,/#SUySG]_?+oddz[P,uҶp\~1.C/^x,+z5s«W)ӮQa9v(}9O.`5&Xhk;>KpUqo}} C Y7KXDrlsT 3?S(|A:BAmw@2s!;;۽Jhn2KQg>>kMMPbE|2ʒP|}hnG#bE~y;n;3x4YC8r2'x5Xf`4C' ţp=+|CҶ`:,F ifTC'w:QYFM(:ӫ)l"$H(.:cewͰE{,5В\ni+ֵ T^eI^PXIM8žws|nQApY=E fx9=QbdP~=?aHfie2%X}1!}&BM ƳF}0܎\bmDiKm15PP^L!ɬa`+"_|yu`@T!4ÛKhƣ'* h~b"AEi)iY,m|ZwR C%f6ln$0ǶP,*rAk7<=vQT70d Gnqg Ρ4Dt; Z-Ov"*_5?&;ʓQ˜?Y`i~`ӪE6٣Ox4C`SFtXb6z~1>ɨM)+ 0U M`xܤF11\<9#Tk, }.A7 ->ni:b5 9;dgEE~U!o= weˊy1OKZ LZ5 C7F$.-}O񞔋yDŒuӠEdf2" GhAήKvf0)ǯ9۶DL](ϓ3Y"Nc\idFxASnOA<vq\rY97&W΍?gRX_˕2KOkn&%&؝zEzOʣ԰gMkxF\.JA95A #HI9~S1Q lk05cut!sdb{߃xjʅTu138ݴ|vT&K͖mk%gɄ!|PZu \ *ꋰ?2ٗj~0q.RC.^!&87^ 0S\g* {As;B+g%_@Q߈Anq *5?V*۶\۪XjR01KODG\C(Ѩү@OzA&ԶlM0u0H]2ni<~Nsp'O]} d^Mp0Wv9%06dvޝȺ:&*e\IƑ +~^*g kkJʤ,-;Zݪ;RMsLO+Kr\ 9 BjIj#!3`9 dږz$σ$+Lp)x):I&$jyYZ;u ȐCo47D.O;۩sa?.},Eҿ{PI S$sB,yI<,$vtFY,ix/Cq\hCi@ಊ{Y&aou_O N>A 0x? „Ol"]M|iCtU$/( .2q궭 `J,8 ]9r~bގ]SFQز ^3}W,'Qv{tclB 8m-_#|m'1F6f(?@a*"5? c`EmUc5 ΊMԕ!+tT ߈MFBE/|ݽv1ir.`4\|pSA\dRIHP)>;3<Se:%S}JxoQϝAFWrn?[|:_U1! xxc* нx#vzfMйp`>;"=L1"$}J@j#H,qD& y6q0(%QXFHx!IcaT/^ϑ.uS+e&Jٞz>Cq784E.AuuLjK튄,>?ú$ ӷ ߇Kʧdg}ǻXMH7mLPn 5qCmCʲYXAEi 3u%͉HwM8'"1#n$vjn&EgQ>9 1u'l Ǧ5?cPmg4&v7]Q ˜bS':(p,j l4b(r琘ABdlt'DT5D;jsT Ql|_i"z":ܔT$#rT'䮫gywؐ2|Q.~my\Tc7%QyՊo}SHi2(A`>ep״m1V51"^*Rt-Tj/D6`j  4 ?WEpsXt )悔Yˇ":7F QfmSJ BWvFuTW/ܽ*ƿ_'`^~l6WMڬ ~Zu(z(\ir=Md&`PF֊! p:EǤ#@VOEh•Au.c`VDbfRS"Ģ"}@rbEq@S@@c?ZOrg̎.a5a\8.$nʒ D>1;?겪:qLwқ<}z6#ݵ4 O1B@z P5ñD#Ff\h-pIU.%Q"D6tECX(W͋ʏ/KYH Tzd+BH@\{iBx"O>}'%Vn^S3!0 D7 BU\,'*c=1izƥ{:5*\!ZRz[PƠ07}pRU#'!c~y)bI\wYYrÒ<oLꄈ?R$zܟ+VV%"F idTcUaUCYʥ`_2R PkDR422RdD(kPi 2yp2B좨rjA\;[o=+ewdHw@eVx }8EUuJ\ Z1, ÀJOPaG蠺5`# L W\ $:`hn"M"S:aNT%2G7E {gX窄weHg +K|kW&˗~'HFJXCX䴋UڸUBeaS<6tCAX 7Yi L#P3 dȔmٌQBʤz᝼_}T&-cr6R}O-}EZ =M_YxdE6zٰAU 4]èSPAh#@d@=96|k K~Վj _B|eMmެxgy h,*~ D;թ>=8qbNT]UU>%H'$ ETIctsV(@)rKJ/UM}Ծ6CTzػ~uߪuZ =YI5l?8/&m ^3pb(32NujjD)l1b()E&Q}?p]R}j{Rp7JAf+1/?\,]~bԾS忆 qzbH9#gk9lHgsZuӠ TuP UR=VtⰉ$d4~P+ζڏvT[ՀǗZ"eX,D*B\U(ϱ91zԟch{_;%@Rta>S@!R0V:A[@IAUFH<,a3g6'Ds91I&?7R;xQ!6 9B_Nw~sz$-9y"םf8Ihs/Ωi7TT|3427npHM 5UϼSޫ>_wåɚ1͆G Ο ^s;[PUO(5$˰|zjHG]UU猚BDBkDO-1 Q,e*&^'P'>Q5yuվRò5kjWM g觜D"񣆠X~Mf%@@>H<;=rn\G}v,]mZ}/LS81ःF!0=pA5zpdIS4ԬA\UI0zFВY US_nZjẶth1)Ә6aT ]*NJzVaq@ݵzAЪzQ  *'dv]~0pMWg70Ӎ$$;RItEӈ*l0?J{E@tX>xڶx~Ԉ"cH .Ǒ3X~Tz`>Ö?(lގ'{ [ׯ!5zy ^q-5>}m^xqq%/SO5L'Q3oQumyF'[+u;$|7{=_֦CqGԅ0_N dy#=TV1kkO86VVUVַՒ<x<x<x"xoyoyoyoyo}y uMIENDB`pybik-3.0/data/ui/thumbnails/Prism5-2x3.png0000644000175000017500000002146713137372665020662 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+"IDATxw|UwUHeBzI$@%PDT*Q.H (]c]Km=;sL2%ygB?'0Iys9^;ݽz.\\\\\\@2"j˖uڊ"#jxvymeh2{iǽ$ZSmAtXmۋkc[vzʄuL.[9Q[6TtK3NG~'- }dgfyOnnnf/^rE+o nw:}ɶmUl>4m`wb4*vM.I)WTau| k׎bډ0Vp4=Nmi .h}w/6nɯ% 5^kh-yh> Ý'/O|o {(tYu`}NwT!>]Z |Sk裡?۶fG.p`E,kBA \/0L3x5|0-q*hc5fP#rm<ض4ê({ J׹gho5!>N56Wok> pu@}uu!!!HKEAH nb8hX fv3R, gl[0P*/lla-, lQg2d 0K}PNN 84l0 m{:X/KM,һQ,!>>^ y` @t ĨOyLY'E¨G . ?sxaajHRzZXXxPd !8'ղQ}Gp"0Jekg}yxd$ f#>Ґ= zGs:VQVyohR\,rH=QnXKaav\wc.FAN){r ˲$CVB@ӡC}#=߃g=eoMyoOxΆQC>icQ>|5J~_N ("8ȃDͽR]E[=HNHWyXRͿa B@3 x\hw^xf{o4WxTZN߲0%xOx(pT^1;zFAU oP[(mXq P~0ʺma Av=BŎeq?^V6pO'܍F94r+؃,h$/Pey7S(uHr1!Lx"VPuznݨcǎbezypPvp=tTj/{}O\< <eːڴBC?OctB jVPP{c` RAab4-zG*{bctQxildy)yD%'@6(0]b~ߗITQo$ħ[: to=A 9CjL  xI<pxН:uN1VQxYEohFҨ~ P`귙QC Y Q tnWV/' rж}3.Ƽ^Fům~}#Ȼ/[ ͗4vT@.7F;2P:% 8 kUK2!M;sJ d2 0$vfrvȁ gh>I!p\Q4$>:MUW_t3>>lc@lp`̸xN=$d;7@2,t]dP6,h3ٻN?+oPć}=QӪpf34쫗@1_k_(g~4S i&YUv xױP7 >lJ W3d0޹BC;{hA;rV.^7wʌ"DGs}X_ć_Qxgl}uh/CsV@>a@ZQu+V~$9<|E|}=lDI?mXFć=Z:>frٺ' @Ɣ*È8fO kpE >ll}'< M@Vrl 򥊉or>"FH|{zx9M`qRk臽w,W[Ɛ!P+"x zAC@6z|t̙M9Ro K79}J{:ڮ*>lZQ--Lhj:t @V~d{TuAPz 2{@x {4Y|"r42.^ sg8tZǂQTeEPR/*;lHC#,Զm[ᡦX?O;"xR'NӵZz-Zy+#SkLh-@mRM=QCs]Un"AtϞ:zЦTaY]P9!мu{qJIЏvQxW{PHO q(5\RV֛atL!S#D0[v5@lf@lM* *X8%H_oiC4y?=Z!<@Nct8M;s1hEOlLnu? ؄7@#eg)nCt7>!C6ʃ&"Ty={Ѫ@o FmK ,(,Ae{$ @MNL]96@t ~1T7/ [WcE(: 1N9Gءoҥ;_30*?xxV<ԑ#Ŵa+h3tnl|B8Btt ##С#v`ó#^z*a3iDzW!lD-ߟGUuZsӽDJ,ţ (bHөh}z᥽|ó w\34AG%~-20;0Jw[Z'J)#_,\;[jw;gɖtl3:Dl .%%MJF1-yM2*^&K]ál <>3IZcrTϥ0r ' Y3.S !۶ew={Bͧ^yn  1:~]폗a ?FO;ćM-wʧ86@5o@Jxc>T *;27~M9jA|i IHh6j/_" C|\@viU+!r u67/D!sqС:6 SAvq3 0nd1h<ȟ>:aXˇ`gXvIHϯeMM:l)_?,V 2OPQ#{/Z:9\l[ÿ@Y45U{"+OJ]|8twwܖpsgl r 7ܠ/REբ%"6X9O9xK8)7/S]@qu<ϵv㝒t N:r L8_q1zY"7>I%3%`#Qq9$S4R=l$hSl\I'/)O2Ay xBg}rs()APp@3; F@4h6 Xc K@/b 4%h o]S<*H&!C@|wl,Y@䩜E۶6@NT'>l`9>:%B}E ˉֶ>tvG8t3)͠NK5G C0W ᇅi][j"10w}_PR<$TVd{8d{H?h_tbZzӲNU`  {q>W@ή @ApČ < ӿQb5ڼBCY]}pHE }v>[Z hGo w: 1cCm("pj1')h,`)uu_HCJJ'pJbo:d |rEdNUHs23šf0@ AhJ/DT{M?.})ii`g|\!KFGw ć5k/?u"=ʧ*x|FP ?euҕ}, /m٬` RhVT$FX {XpaZpZNʕ8[Uc$JC=l_D;^t*u+!@, فoG͕zɦq{v1iJG|uuw1Ŝ/lU|XyCl1͚qU H>p$d`ԱP8p M#jh <-|Ƒ'zqd(-ѓ6<J2}o;?$墣OAZpP GhqƮO(_HEF~ ~~hҞ~\#~MY|4fvv^ة{ƥ d@߀tݻ&zϛK~[@Ń0=F6df(峂W[93j`W֡fؚ-- `c?JZ"Ge̳-^;S.~b)cDFQN 9l]JkUww4%[7D9xKAf ZćMé^z,{l'̚u@&Oo/W]@ں'*IT`>1ra"7wo҈Nsog(2s+jǣhi]õТփ`pK'gh[ M/y8DB#>h=T99U ߪPTU@F5@+򖗮uDoпtB͈^$5~@?{!a pHYs+'IDATxy|TWo sΙ}ϾH. ;* ˢ@صZQDU^H-uD"ȥѺ=umo}{sΜْ 0<H2939}=vٍo99~%wrnBIII!Dpјg6_?_N UmO:N'_C\~W\wr}˛G79Qv>ܸBO8At{!(~}G\wY#b?):\~O뇏_~J͠襤dbX>w՛7:sd򗐿I;0@/l6"F@>no _,Pɂ EQ~"z}0vȺ|ݡx-tB\qJ?D!cM&64|>A|%@9tׂuBOHPm!k9j)Nwh yyy"HvQLʛ72H!&xVjfQp)uhu8B!@(*Za*?@8)zZS튨 E8f nfd"n8_WP`w|γqEM˖4=ӋCV;vlّr҃hyE~~>gW1\2R=:a @|$\?L>fD]@ fW֡/?sZZzs{F_HA(,,d Wo1n &i (UF꒼ǎu~*4U W0ɩ1 uuul5M!&&®"%=J ?â|/)B<WuLpC'd;e %zrD%PPUp)4A(r:ܪ[ X^m"݈Iy`o()1 "0S0aJKKJU΢Sz bdﱗ31FOsv\y=ez}-A/?A\LۢD|AVS0Ң"QQQYE p(AS'{wE(PMEmX9Rߣi1i-Hps F0 ( Bp܋˱bjC10SDF~t })n%71`QUUpx3J0#ξ"Nqŕ++篗)Y uxv^eW]{N'fXqrK+6 $0Rk(0"u&,61a4h*.ĭ5ˢe3]w*xRS]nj)1:1"zDM€LqOtdC,w\+?*>Q><Ɔ CMM dz_jiN#߇RxRKH)p=`DS J3d0ށyx\[TZ ? {Č (>@?ե߅zTiܬk@1!fH9L+f ? /pޫbљ|N\,|$EkH0<̑y]Gܰba)P7HJ6gbI 0@Q@ #OuδzrV|MIPLiͻHjM9`a cx7JEdr)ƃZJ߽d [ Ta"IPC@!'2 ^ 0"_>UZ =Cj¿ze|佽=WvFN^'JQs=(B|#Woo1h7:ª|4.XFjN~ce8 ѢAx_\$i-KqESʦ lISh@ +4=`H0P̀9Ja5ʟDM*|h -FkETO{)W!E+>}mt(K BS߻wG~򿢔pl7Snލ`Ba*U](IzgO7YbXO0:hVv:xQك'#m_G)E](.r_7 ۲G7@ eW*pE 3>a~QDlUH.;TN`:86L <- ϯ IU-giWlp !jUobKh=mtq*f>,C$:?`׈ʧ_FVl0ܧ+($A.<ެZL YR8C]- G EAHexkO5eծI 3 $ (H+).ȗm`rnn10n8z' k'ʿ<Fpi\qBC\` ?P"UhS?~tlkX-$3I=CP0 :pqʺrDSN%R>YP#zd0I(SėT%0^FGd1`5Dkc çwX?]#QG04$`?jL%E*(?ɢ5XHvsp,7.͗E I~S.>*`0hJM+Us52CLbS2PYYimXanW>R9j?SuUCby~KT0k2z%SFވLq\PtGNlh Hl<*]I*0 k0]p/@.;V=WKC,V;J,6W$ഓX/R,zz`_p%Mj4 ,$pgm$H%ODMS L,k *Mz9s[ Fڼ1:%E_=RW |#{~޽1$!Ai`2]+# 8,Ct1H)Q ha{UDZ'v pS|sX*WN1q=HamƟ^Y#/e_)[ ABYMƧ@ ֓eXLb]t3 ͞p; =><׎癠\b3oB{",E-︪(#G,5n$ζ J|N$06,+:bAݴ__VH1_<lzEO_-Go+kQ1=rA# qEV! '!Q\}b*-r2`a0h\EĴ^nS5N-xbs/Kj߹IIћVJoWDPU&N!푋bP|*ΓA@BLN*c"؝3@] Vgۃ~C~AOBbX e<Vް/WoT^!DvӦ-q)'P&f"_cx&) Bk4!̉RIx]yƏzFIXWz8̯:gkDֺŠ"qSAvg }UӁ@+dEZae7]vu[%^"j*U.N;%Lwɯ ܠOa{ c/b]>jlj7+;R CYPK^:N5ן*J|aEfpHhDH߳]fgw/)&Tזd4%m 3#P||-]v.PcCG;e`#6HSU|ڳB3͛p']֒H<[Fˤ%hX N0vŒۋ>U= @pͻ!eoASheϙŞ9!!{ԑ=zsAuӀ@+紉FJ"` y"ɝHG`$GT? y+Sr*b9az'Tgg1nH$s|8g&6VV\BW !ct"\[@8MQ9Dyk!p )j%Y(_:SF8DU_;?zwSNvu }<lYxYeގ3R 5zeLj}`d{xB7*C-LW"^ *g #/sS>҈>\:MlLV0nW <(b@*~p?V̤= @LT83>FVDޠu uS4! HpBJɃUHTYl~kwQj`s<~Uصr_:JOuOӒDAX{+B-m`~+??bqQ' x&6Ě0tP5{[8J5?6ć=oX(goۨ|Ro*MȢS;%P"FUaU\Mi4E.BCD8bN+q[~Kk{ۮ 뗟з|!HBb\H+Vxş>.AsP vz !:7pxJCi QݼK% dʤ}>,y &߫dڈ! >HCZfŠdY2_-"S.`j0:]̴b $ʇ҇?VěODOb~>g_x"B3@9FVsy!gvAD`!m ' ZyC h^b8 g Uܮp{#+7P"N0Z89}zV`AD#f\k{aX~!W,UʮB9N%|ll3mb@"mdP4 ~'Dx-4յKXS%n?V-unUp!@Uf/=\(2LP `jqAVI+*o`/V4 D®\GJ6^K|XVD)߼SLhbWÃAbyմ @x&ZI02"s .wIpOLFv47)Şad.>:mM+e/>fbChF ud|M'9;LZ^dcsQJ35k\t_;?$R51yVC<B3  Ҁ@-8а hD@4{x_b'pB+5m Hiwn Mv/ߕܳ9yA~8C2!4̹hI,EӃ^uvuh.Xc88g^H)+,Sj,?F?{\C$+_!|kT>,W6 =>M`q=^A) +1X`NI+SdeFȗD>kur{=z矏k[ߒ;ش\>daԋ_or,)ʭDy l7N|Ɵ\6nl!CjN3!j qq'Uv>g>?>Pְx9vJ/||s11Y J n հtra79J,PM89*9ÇsQW|_﷟ ~=n:Px{OQ=W=<=d4颽Rd>8;.v Lqe [ZiЌhOVpqNrp6} ,ᗯr,1O)u  1 ҄w^SHXiULPp.ZŃ7suϛ. rm>В*kXQ┏A0x (hc)$5ҁc^Po*E<6^s&39iUg0C{-s`~9(ĵ-]E֥T`j<-#>@u+WpcoP~MTi2G`)O` DP_0 *1[pz$LglvS5<`*ColWA@G0 )rqVb. Dy~>᤬DP~lx,L[ 0}95l]6{[vئ| bP:K%59 pIE&8g:,8ƅg-_~KfDQ>[ş:؛IE Em(p %!|败Qr @e^d)]``4[ǗK!0P\4-&G)+=imVKPhL S 5%\cjP`|@0('u2Y@0P2n2.*"{3'8ŬI=d l)1 ܫ4gy7 !1$":,"h=D @{&N`C[/]B} G뫟kx;6)FX`׈HGA[ A'w!_WY "?ruD/K /ϏX5+OުcnlpL ȍ8-d#. ܐ<.P%d3N3 ׀4 s*O$MPSp+uv>|~pRax|ެ^@\ira:M#@ucp)މS RIW7,OLuh3wE?7׏#>XRz6m U55N%{.-ƦC(B c@*2 0:h_ Ď}J/}}4?ێ&Q\6 \Ve봛ӏAN;<)=cP'e.>%k`=a,auj 8B%AL8 0Ah#Zg%Qq1-3@*"TrmTL^%vlR~`u [k7[ñ kۥllT.ܟXnɶ{Xwl ,"kt`VuM @?k}}Xаℙ2N@n4w*1 /n?a6+g4k@L ٹ=:3?=;R { x9;X>$e(+#?ВUn~pcĢ6:by",yyGY{E-qi1-3t ^OB-_i{q\Ֆ޴)<]oK'`E.'il  -kvƖϗ]j2Jp$-An_3xY@/Нq¼1-8 #f p-});훶C3fNkk_NǹnBM999FdIENDB`pybik-3.0/data/ui/thumbnails/Prism5M-2x2.png0000644000175000017500000003001713137372677020770 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+/IDATx]w|UU~Nr{ B kh!XAD#eFX"( RB*]gwFef=d{N=%۫}UAJpW*U\+:q]/}|Æg 1EQHI"{~U7^+EDʁ🈽?Iv3da?%yd=aB&f5bZ"3|uF _Rnde3v֌uOl&&m"YqRLT⩤KJe\u YmZ6mHYMedeǂkK{6OrOiq"]F"oH(Q/q) ![CZF(ގ 8OiPsc$dwC,O;ۉvZj%T{+ i-._GEC:9&a ^"m~aN%zVgAs>8cIx fdJy\Ht+)n׶ z8o6M$E|\+HG_CTu?ffV2k(~_r׹ࢁpw( :ӈ᜽BU$|v;F" !ok~ ]ogxpȆ2B 5MhΛD7nX.Dhhp\RBBB i!$x]HzRԇd `J ITN<yp<fI~uLAb1uT1yd1a1vX1f1rH1l0QQQ!(/#JJJD=DnDNDEAA"##Cd($|K%\s"\F.""ȡM'L=xLAPW+1#2Ďc#H13#ELLSŬŌN.Ť}ň2ѯ_?1tPQYY)I?~.f3g-uuu"''G'#Ĝ9sO.L"&N(7zh{РA.]:mۊ|yL.""Zp{;4luE9w t EJ0wtQDGG˿1`ch1$.ZT$' ?;K-,Ep׮]vݻ(// 4j()ƍā֪555RΝ+Z >>^ ={.ݤI9 KKKbEΝ% ެ4\BB Z(KbO ePo+͍ffff T{reuѭA5gt F< +׈\׈jSH&h&kuaEqgzX&nM7/t,nE,.*n_!Ys^z"gp@tvkܦr'RЅ˗ 1489K <~PU><#׽lLCȏpKH𣂠*f$ F_"aoq]@Pb?j#Qp*B>"c\0 IpC =27693lJzI.w"E&M#%X$&j(,E!0k 9"##p!f"iӥSt|)b*!*h"t* h_Ō  03xP ?W]Jh)t1MrnIid¤¸HUO%f"@`&f{B9J"̥9j4[:<Vص^L*r)))2? ܀#wPˑJR DDة7pEI?td] ٩Z'm'tGT]LB&I!XWH+md~_A`uBXI<(t>ON#ܫi+OǝtB##َA 8pHkLu*fR<a"Dz|iZ#ɑː8Z ܭh,hÚ9<#D\wڅ&X<{/B 76 ?laZɫ"X2_tl, <RI"%dÄ@o6e!ƶփfPEF._`h&9zP(@@!3wtcoXTp IqJE L'#918*~x6VŮ6buwDU>3|J_o%ZCB#ߘ)L`9.l%n{)VB g_@*ADS8z+-{Rıڠ1LT2BT'$&#",!%:t +G3q-%_YBG kPs\yb!?n 3ZS#EއԜ3%r<*ςϠko fˣP=Qyn!@G0~~.wbbtO D4y3|vҼ˳ ca_ևZUvq 4#g"`Rftmڵ*T5Mqi7ۘ Hބ+S-o Bmj Attb! ϳB]vgѝ4,Џh I] [+T>Z,~Xq1޻E !Iiۚ!º07=``+6k"`,ܟE p"*H?B$grъFyTsZu2Ydޡϒ":-P yՋfORQx _JZ 3xZ[(= wimIe~?hLNAqdh.9diN`@f7E3g0bVmo4PNҋo-ts.b7-􌟎ėK7rv0l/W")?Qd)58]*2a1 |h &RĜmX52(f5αqصi@"`FFs0g1Mmn#_0CW<;rҥĂI12@|IPU3wl7K=+xKXF$kkX6"yf2#= ~!m^ͱhPpc'r_W@od!{(D0HB𬂏ρ0:~ta-R :+%.W:A ug@#dâ-7 dVME[tR4@ jAat셪Xd9P؃xs׼"9&a@B|5 7wpo{rP]   yX6*Z &T*:tDK<[ U G`CC$)A$v&Nj{o"A3Q'7]0sZI9moeM#1D-ݕ!yw5!x݁Y Mo XMۻxgWc1g rcM "U<:j`{܄٢MZX@Lj a@πū+.%W4p(;l* p%b݉ws}>dBEހf 0eʆEgNqۻ%@RΝDZnDTIc;z~|#u@/;ɂ%i>.#4Ae}''M!;zc{~q[`p1wl8#C|Y}= @c+~ќE7HC8L̞2Q__/izEI}AI4"ȚN)]e dzc"LnB_K^C@ym Ye>?'QZPDi!"AdgmGfB |LRt]`o2 Ne,WS(B'Jo$wv,5ȝ_6 [Z 𑐪 CJdi0퉢}A >**(C*_z/Z_kA{$h<= I}5v07oJ*u~h+xLK#G#Bԅji@w@YWOlt5&Zܖ.i/zgsד !w-" b%3f\X|OX`"bgn-Ã;|HS'I&@fIQD 6C qb"Z~(x#_lԏݖ :<=eż%L w( p?-ۯB:}Ϟ~u񹹆TgWG""Zi ŦM{>tnS{.'oћY:T>vGbPU=+F͛PŽ"AQ#ud{pYF*Kɸ 0w |ș|IL#7ܸq콍y-t<:F!+W2 B?WpKٷG3[k$k  F#$ 4glncNC#O!&6Q9:89"Ғ_L3w3wr!@a+/7)@;Jh"$(1@)ť׷]5 .ʅxHَ~WkCFH}~|C^X{K_J5&psuіX?5yw_иes, pXZC6,.BP76M];xȜ5sbz2^0hP$;on]*H5"L {Hˎ m- -JN>yX8Hݠ|c-ǶeĽ;)u<YQ\l#T-שRr;m uO=@S{2:>H9_[ O՘q/gTt03>Az@w>o"mܸf?Ж0:6'[>th:n 䆗lcoV) 3w]ȧh5W֡ 8^Q|W+x(TA>d$|]/P=;uH{MB_" SջzT>keW+io 9 0=S^iPqC7Ss١Ewr; Y`"fP?ёMevl೟+D:"BH'mU32cVbL;,Zy"k~|Eؽ1U|;<{&>2u'ܻ$!`!vg UqmCuɥ`ƩUo5TdܸL?HAuC!7͌ )/,bI ޶SZ쥇:&'*-&t⚹ AϜY(Ϛ/SEӧЭmhY89@\۪yzOڙ0lo!kyڝ@A@k쳭]{r=ZS@g_z~h3tv.Њ3Ar/l Dod}t<+`!3셀 0pĈmŇdWG>Xxm$gȝF&O2U ҝ5 ژ'hIsL:䅺2 C#ukF7)&ݜ e(/:)58Rw/Z!sH0c6dϳj8zn&d; J60~AKJY%wVݔxlgGNCn*h lz١VbRSEzs\ ȹzY$E&K%p.㜽e=~Hrcӥ݇٤+o!oţ~tรӮܠq<-ۼT < 2KgwG!LOY5tB}v8O,t >SHMt5yuv_L~ߧIŝ$.v`L(44$V8mT1{&=B!Rr],unh)xm&$ ( ֌UQP|y*GHPq߽&9T??+`wjc{`?1Z$'4UAQ@ukm`{ES0-ۯLL g4:|_j8E+{qg_`CkLp_|_5&O"l>06y/NmII+ 916rFL+7Q#${EC0ҺvXp ໨n Aϓ K@gH'SdtR^Y$#6bhQ5go ٸa=-&Q~rj#sMTXuh:fA!- @[0?`=C`~-w~{?yLOs1zC*kx$`7;}~5 5Y AzI~n*W`Є>'ϙ٫D' /hn '(/ yAPl}:ECY^@& r*PX]īٱC԰Te[}~j:& V 5p< pr{̚)2{$vI0 Y=࿱Jg&|yڜT>KpQ̶to3 $ ˖6֟9%!ArNB@?Ǡ*z'=L|?9a|X#G<= lmgX[䤻įğgn -Fr2èQ~x;@ ۏ%( _$?Cnk @PQ=:JcPǣ %_ n3Y,xR?Y3lx7I'!Qh^mmbFYǝ:J_\.'{%;t̟_ý@XoO\8ro!p,B Km?shWsŻjt8AnT ,c6*^_\x;2XC{ Cj0̽I;]>*б;|ʌ/sWW'Q~PGsڛEA;q ,z2r0%]t]ϧ>*y Ԃ ]DؑL%ZeWIԓe--޳ۚ#YdcDzr_x74̂OK KgLje {9K|ȂC@0 3 }T` @ԌUB| K*y5b 0/ bw'4Vac88X.>cC|‹R !_@ Vf iQ"V !.b1#p9CHr 'F>\ j4O;[Rň~56nXi|}zK,# Mi`>F>!_Z5GH"9#U {hy{ɛDv>LlNݾ͒xݍob]k;0C$T3#D6ƗoJ0} rA> 6tZ x6xJ ~=MbV^w$/ʗ*b22V4$8oGcO!h6Z0=B?ĉ,w %S3*#-4~ߴ.D (n|eKVP  l纂54 ԬƝFvƏg5 r餚ѮеdEo'zź0iba51f=B9vb"Rs9w"ݒnj|$߫ןJq\&)G˄ :p 80ƭjeOFt1aAYLN&X}M?'_K3)i=~onJu;bokZO6ཽޕ >ֹq~~`=w7.xpJ, S 3[u9s[0C*kh.K8&dQQ~+*;v ; ETjl"vjg3M»Q.C>|UYI`ЩjY`#kA Lxӈ:NbKWXx0 rj5wLn[W P&pl̪$}9#D[U>@y/I`pqhc7h 9A~KEL}THy&`v5X Mk0X}9mڅIjm [ c*X"tk:K +09/J#^?YO%n_8_fpp|kC\xgF93C:c:߈ݼų]N}SnoDIS`/3|DzLK1_bUi `AƚAL5HKvIob0vq}v_x-IwxcO~=@,́bk]@?$཈U|t,+(C_LriJ+>B k%u~/s72B\ &4z96 M5o| +evee>,!"@M88G MNկ\ -_ L<9?xC~V(=Dfk׬~CVo9-;D? .?(ڠhLyR -= ?jYW:R]IENDB`pybik-3.0/data/ui/thumbnails/Cube-8.png0000644000175000017500000004424013137372521020075 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+HRIDATx]wTյ~M`9۝QH ҹқtMTvQ+X ``$Lї{3"Bw˜9sfoo{U{8?BVtL#QUZ 8qSq~CՏF7fdO.ŕ7o~y?z3pǷ0>vұ}(qet\G`:d_M⏀8V k0 S]?w \?!:9[u+8pzߪ}/]xfplUdȽG\1eVb51AG?ڄ+Pp=op?(;_G}!ÈqNv.4`-@iLn5ߝL.ơp QJ,*}bCiAdUGD69<͸ӛ>ޡǏ8/)+dhcgE=d̶DE{QS74MQNG^J@egڧ+/qICO-d.{fdGhϣ8t.BO8)(z;O;X<k1 ׮!o[w1@&&c@A0FL~dUL Hfso4: trـV^)Z=.QGawD׹CՑݭ {-dQ.n-ڐ t"M^O !MxWWF[>>?FnSʜ (Up/}^^q8-!e;d*&CP2umncpN_IdI۶7QD* NPh6/U!b=<R&d:{ޡ޿}[gۦIyy LR4DӀ3-&XI`W{l }J ȀH !=3DP Ğj&( =JVZTɡy_ ^I|ȔdOk22`8ţt~ ·J&Q}`UE]ϟDEoD5xH3ؘ00Wk&^D^fT sr{v`0ׯ$3y #du6s(0gzv"M8!BYcy(d7v.{1n=KEƃ5"@/ G蚵`|Wa5MQO(N4bvFZh>1ukڷsI8OYvU(o(]hL@ `"{K%jNܗHVA!YS r말[G(BUʳd 蚐Ch ٸ;ULx(+v[kdJ73Gy]tDf4,3~֔ V7ḽRlxb q}à (;;S,O\ 0њ>Hq*0N=d1y#x9\+e*a uIޯ=ש{q{Y8A xDY".R!>Hw@v3 ߞ=R=0~4_Z!򩈇lw߽CܜpT@ ئݥ64}Jbt4!Tn3264 1tURLrw2L% ፘ`P9 j񨍇{ yt!!ןSw3gOgT|oi \35KmV00"6+0Tеt%c*۽3WE* a"C$8Jnh):WPuQEC5 B4h<|l.FĻϖ2y"F~@W`@~& V ׈ D mb3wKVS=xύ !^Baܕ3pkD" ?I: Csvx$9I 񽖆IxIc/+o-zEBj l#{8_]%Nn!6v@[Oy9+i@hD#!OHר01]u\q캇ia;@$FhJ7r;$lKp](J`z n9)T,@*T g(P#*fzA|WvY#ѐ~;ֺş^)JTxvaD,5.Wul-[=hCl_WF߿Bf7&DI+ Ǘ&m͑Ysip TCvo7k C[1񻶀0`7n"ʱ9e#F1`-Ϙ?)%c]A SE$=`G!o0N@"|"SQaNim1}9+TĺР,&2pYЌW)bC:E sP MI0HeOy 7FqdC44p nGe:Ao^d /`0(8e^+7,Z/E?p*M(qh'Ȕ ၴuaѫ!D3xvC3 BIz*T?9Ū3geFNRR.S x"u2$\9owZ1t2.)57/Р^P|Y(uH!hXMT*3B 29o `|'ZBVϙ\S*&} &ŠSJeƑ.qUoyqK!b :+0N= б%$`FZ:~6cEAD>"P nhdm"{-3V<.ȘWt *g^({P0c!p`=.#ށ` oB] !>y{<_Z6(@{Q},CA]$S/RSi7b{9\@FڑwY Kai9 >[' 1[[phm(h%5=ɦ3}& "!r6{O='ܟQ#>x_{{O˿Hv7A<+JIqwH@:/3m咰ۏ`Ev R  V`Ѱ]0fN2RwvCjwԀs\ sδlJog!N wzZa:{\r#?gI_졕Sư'fUM_3-=<}Z% 0Tnd >Bt>@sVAqܮ `ވXu^ 2a>S`H DV ! V[ZמaHG C|BouI"\TiUXM`QvsgJ>PWpceiFXm&A4iN$>)խ| Mr2T&%gGk0g 5 e3'L\t(pU5D/kTTweG|dE5ȣaE%~4L9+$'!Io8!JǗ9JQ_>p,2%\"8)vC mYYe(җ-U:0 Sui phHx->t ӹHs-[o1,1_g@qt0B%3TKAHO]Ã> DOCHo8J=(5Uғ|uK9LO-UpS-u-"]?P ջ,1Պa@C?zC_ejŐ|ed  1~K"vYF6ݢb;$XNAD`:Ra?MU -YfGugRXQfp[Q`HPPzVمg!Momɍ mt;,;,Mx3"El|pOcwEQwUX9+(*Km-aaCs:R 6H/=%S\ӅR?T0*;Zɺ*GLE-dCQ^̍"hIhRB5ײrjwP پo/ϑR bŢ jt:d}cRݐ!y[+zb+gG7O)C8<|þG/\QR O"68uj1\FSwq9dŠ2|H`YB̜b `|Y'f>K@螹@C`J {3qjCUKSY񜒹Y^ r 2t,J!}"@B})5>>@hMYP*ˀE:9St,K-x19\l<f0p҄8aji \7ZʹN0Zpes>EAϷ(u!]|H+>!I+E .vn55 /i Bpo{M^ן"* %t.z.w0 aøuJ*0EJk=Ƈ+u}h0 07UOH* -ѬGͦD!,ugP*+DqɄ%"}.r)bRJԈ7/)8@$ 78E`SD`ܔ: 2Cz _75bD(oO C-o0p xR>d `p!j% J!\-*sͬf|s4s=!0CRHa* MwWe|h(>ݨZmb/+k*mi"]$(&XD"tw/\èraHBNOt wYv`vz:XY&B/e5ҿI8`aV)n>%ft UAO2E x[ V0ǕF+lpp I<$|o+5.t; `.n0".>,KAZyT|~XtioZ愉#8[ i!-nv$w43l= CCBv;k%,("3]/q3|6`LFn2o32J)U(SSܐ@F@kQ-`hoHYP0tU`hnulްM^_z0!~P2$,JM b__Unq6s!JGho!dO`>Tz x&qe 8efx`^ )fQJˎazsI> ZC6MJf+.Q}8Խ߿T.>A>uj׾Zow!E\ [tTi 򽽜-CD+Y/`f;@D>bpF M H{F 4~q}=|-1$*OK-!4c?:rT"?)uHsɨ) 4!"X/'!'*ANo& ."^t_gİK 9SP -tlfZ%yD@@E5;/$ x8 Nmwnjq Zo(3310Y >=lY6dY Ќ,߾f:.CG5z4"L F=sl 9T__TytX0s #f72.,{'BDzHLtW)=LDP_S4(`GR$SfkI/מUVVxfw# (L|K@yb|Z@e-Łn!g.\7]7 K>w3 Ok,QB O Df΋ΥTo$-e/E! d(=a@)j_!27`(=+b0wт`+{jw ,2RLqFL&y} :N>+_Ysv g*-d)ݾL b:pNgӤ'ACy%vUSYbyHȮ_G28Igz y@qܸD 9c7IprQWbÚhُ"G]ۻ9KT J‹d,OBp$2Acg( C: 2OXd&R(Pg!0'% bEN|b'dWsy w?yǫ&Nxo(ys8x<b ?swӱ%x$=H78 \Zb."f~A #004ٮKX #. .+1Zd tM er;Gޘ\>paC<6c^@8 d}753/0"3),gRGb'n&>B N&@xvI7`H*8U`dXx r6PgVL %n2Պ+}2p- e^~X4R>(~ O'?Dl jѽc%_?CX6UJHoЅ8,A832)χ2>Wϗ`2wJ?O+tJ( p}\7V h`9hqQٝX *W/$r *4 dcAk)_2]S^ga"D p0i&Z R(ھۘ&y=:$,\(uׇO: 3}Š"}@wTܷ0XdKm;yFq@] U[Apxݬ <-0[&1@ ˞*9 /4HߥDxIr߰2 hPO⡙U-~^{9a1q ުd:4ҵ<מ{uߍVnYoAH^!.{QIĵM[!'Kr2$c+␽]n*ʢLgaWA wqjC}:+x聼i ;{tP''oyo݋Ěe!QN!w'\({`w/~}p)`AEb1(* ufIn7PCv1 nGJ ģW>v郭D: &1HƜ a_i9@7P5:"@%w w|]wlq9\4/79yjm| /:? ہ$x}()/mB\?Bz!:)0cG1xF{Ks=Lh'cirpK/J5,,B`TmF"*Dhaɩt_a&0~ (B}}}fOAi 4s+wqo6"ʠoXC,E!GBAq:` Z&Z>|QFZ&NJS[1W8Mz= THp^H@X@i 6k2nu4}}xKCY,G\;P3^s0PF;[)L-҅l=.Uĥ*tr/z Xi2 ͧD+@aj3Z`[Zy.tF -jّ-' )uJr~`Asr˟?/f)UR"n: X _P1y"n8Ia2ttlRn_{E2@_PT2ٙ,.^Yd'(>B3n\ܫj\+7Wa oF~Dиm[! ;)Ep,^Q93bH} zt4GνhA'J <\PTZ"(x}*cz4n@@$env(]V0+yg$$Y% aW"#ƣg\50fNMwULB @d迫U11@W*KJJ>+CH4B>pXZ&{wpPfȊlMNuѩ"("i@b)/&,F&WsE>-bඩ.UE ,.uՀ"}GQ:"gUսh#^{<y!nn|lG) =eC =3[!i*ES,H4/se{VDoj/;yiP!5hA\\a+x="Bll!++=Jz1 cR.K,#׍?Һm\'KP 5 S<>)(%owx"ݨ]4(NGRJl b[6-a 7]& X^).`@A\ H»zy)ڢ&TK0,Kܹd ITOAfUOFn#/ 7E#h}w ߯'4],k' tTdP f`Rl hc A͇ǂNBQ319 b%fJ1P{V1DS吲n$=Ә^gU Rud(RhJz9J ]y䶶At]2V}thqaj\~FP'Yy7;Nvե.1iXj F~΢W-}K!ݔ] jl`#< 1Sh:w^K&sT*9Lrluw${w@ 7= 0x*_B}`PX5 Y7'{.?4S!B e,nH_)(cTuB\~FH6|P@BW_Wa)XAgdg+R/K&M)bHuV$F6 XQ%>؋^aEoAed W6^KKd;FzAYi~ql%ܐFl)aZV 1hԘ͇p]h?hV,-ゝJ"TdezRswf]m b$OX C܊!@]G+4č$+k5&`]ߦ-=;\ 9pC0n+彀![Ľ {Ιϛ0ڝ~/,L6F>F=N!o h~fO\jA$i="rG4Y;}HԔY>ep/T?4o?/7 m 4 ާ7?`(á(Aj׎#Gdsk1I:1@(b~ ]ޓ= 9@re”?!U!V%bZ hM ntmT}];H>z?0~?W&L-/EyjL% x gjqIOT>&+~2 t7/G1t-WGn6r&))W%B4s7ֱ o>yJ19+xSv^Fؠ85~},"ot>`<,J9 5D&OUHW/2bv.{LBB6skH3ֺE5۾J)X̹$\+P?:n,ۺYcgybwj{s,P T.&hY]I򄠒{fxHEA::jA#f۷HA8 `$ 1nWs[DŽSj6-{#{R?>h@wгu/tx ﶕsz$;j?((ܟt~MvlX2ޠ,CStwJ.!vvɓ &:P/Hcؖg%+;x+94Fe ؎ǐTNycn䀸:7~C39toǝEj>7"rDX!O^ĞgG* 0 篶A_!,~)8"( 2Zf miiŤt $ehނºyP NC/3buÏ|A ɰۑ` {/mh 2n&6j! w@vF$(H\Q)sReLA{JDD/|uF 9}^FޡҸyt8*ǸfOA }у7V.M7#}bWcG2İf"V!PUWz9V-YBuȫAڛI qPv)óWE&Ė[dS#;@z(4MJ.NʴdTOPz@r^k[?B( ^ߨ*4)Is.JyW~a(:YXCgj@iw@@YM?+?yltpV cj:q!(R2_'7:A0s@ IVmbK,[MrvX>7cr@ y"k%1\OEfɺ?naWƆf)Lo)`N;ǤxA|xR-t^^O71i×@o|LScq^ ׿c]yP^x7:Ļ~I{mhf0Þ#`:LՋ̝jwqrnb2ּe `"#!;}g:-%:ʽYHa'{e{e-Kn3/3uޭG 0B.̐[ں->VxӳXGˍ:qwN"A};cf8o ox_]0=].R-7_QhA]+a|&\RFcF0;DaCg{":mb;ڄ ,gs} Nw+{3 %i*]pJm͞xޱVn v0<@/@ 8&[tD=MȚ'[8<8 { l.A!ALȏ8Սo7 .-m%pM!'dP G"Z !WLGWZ±,"=>p}Xݿ28T*i+KNn_yڃ vru@FE!%! D3 lOw%׳(F\uVX̚ާhc-rIy\jj3wʎ%2 Pa=ăפ= e߯ߒ%G@&aDYFٲ2 x;zoO@J  eƎhkSo?-Fo ̒43QG`0LEPbL̝@z=֗ SViWxA'G5аP4;j1p%\'`Q \Y`˞'Lu2O`Yc]LlGohGgl++r+0lFljq ,jb_z!R<{poo Ej-}~H26 ىX'a pHYs+IIDATx}g|UUor[znzM!ЛKzS"H@@E$T)A:Džd3h̸9^szZ*{7gwgxǝI;pwwpgqwwpgqw|Cщ >u(;cחG8K}x@ԫWO޵r^s6XWr'F$U7-nZu_JU/XGqC+QaksE?h(QG (<@6@ϐ8Ac~L4f:ug g8O8 *gdg_nH:o4zd_*jڴj~QْU>["[ U]8[lƲw4fxYi*%enlV&TGћޟƃoIJG\L{ 9sI`q]ΉQǧNلDt}l]%(:@؁8t qXa5z[ZϛWϖӓń1:-Y2Effphȏ)QQ"..G2 Ǥ4#|>HMM"Pq"Sp6zK# _1N'U[Nc  ,A L LvA `, d~Tؾq}> S;]M&M2&eLh`;Z" 4 H!!!~P]13!&FɱbbWLOm| gB^SE)i"&&F$$$x"BCC"//Odee$%XHE p p >8G=z4JiNL_dX%4A0кtiH-G:z $6^M9#{UjFDpxł р FqpSRĴ41)3]$8,ݳЌ495Y4OJq AcT) ?,LsfG'M)&MiE2ЇїI\?J` MzƙHc숲'PB&z;w^*SU\W6r%];mr ?XfG !_4&\b hC3,1Ls2RE>iJ4iL60znC@HA"1uDw^\(.V(4tBjrۈȂ r߶} #5v6*i6mirJaB7& `9 I>#"gi<RW,"M!OO{LHS3S,1.'K&.07ė&! P 80\ "*r\IF`hRV`zach̦@D2yȊ y5iUf!P)gӤ`V9hc0l~>l!j֏dp"}}x7@w:,U g4/ULJ lci 9iF3@MT6\&ܼo^H>ҰlK:, bhG}e h)~}Ԡ^!%+AgTO簃 }Gݰarq8\GZ+/Wm?jQRL$bV0p 9(1b bdnHj8pK?ao$wymE0)"0&:~;"mkSlTa@p C42H"#dBǵU@Z{uy@٣o+ŸO/>=&)`lODZsX} Ǔ`j) :,Έx1L18 Ę<1-+S"@5HI)0pb~ ׯobɢ=/T&dؒ8ƜF$+YHe[gd:v&n$T~"tskNzTe>ۨXngb8=` Bg*s'ک`\K`G4#B$hJ$"S@2G3< lsE+`p}:Y-,Hfŷ6Tg(_Ą172bp4j o4JgA6X>766zzq|W+E_cJ2|bNd~Vm7rv^w ݻV7#JSEMf{\蟝%hF7!997)4>frOONt =0C&Al ?O=&4ybI$HF )ʢ!Kyv$}W/Eva@0}jZu\h"҂' Z vfwr t>xd#x<"&l'H &??,*L jAp8"S 4yf~>Dxt|$$ gKi&\d;2ҜRf^:dB/C49HP9iJ0mk@+u*@[gШ8 Iq,D9I *Dd1ڗ&JLPDw"h'p2U`U/$XEEEA$ ^êVЁGW|;t4[;H*BF ?T3ǵ#&N<o2<؍V +cz\UNmZ . ~@@8p zު?R.;xU@TrI_=8Sp\@SSLp> v1-J}CL\  %}\I"-5 `qj{t>0]wk+d_e)/g28i$: Z^Tf2;kA[畿`@!TX&qU@Dd+0u?OٙJ"9[;ΩckFؚswg+7W $h0W^|G'q[gMxN)YĄo n/#y[+"\@Sj9 L 6&4&PyOd b@fnv _ :??bzNE(hUy ۲p IP $ D"@&o_ "ҦQ-T ؼJQEt!+eCMoƝB04vs9 A,0*PI{0(k"9DI7q_dy>kڇt6mxN `'pOl-B!M%˥n:>oM et7/$V?n*!#.o N -u A/u&ܬ>D_wM0kоxzPtAe 9k:Or:ݕ^6Eyv`)0?^uY/8;6Gr7"gD*>\bHv!Pzv C  nΖj v*Bq.yf.S ֧i!A_e` q & _}׷9*[C"[09^:5׃#(uNz @r7íMAj2C_k5?6&TXHt9 ]3F0Hm[는A6 QC}+gwKgrHCq{+KvS0B]P"BpB&;II c6XKtɾu]5Q0]*ɃT,=z`PV.͵d/a"݉t ^ L+3黋HLD\t{o!2IS-=g tDPz?5:𜮊S xW:9hsgqӪ[g8`-ė/T= %W1װiJcN9u}TW@GPOG`I ,{nډJ,^GK5n<(Iq$N^A@[f DV&wT"d(cZP8i{y\e#?\s:8 `N՞j5)C21xeq2@]q4Lq5XQ=݈!Thd+8?X0gnlL7ezώF9Op)!FvtU̼R<a"5tS}hhk7ښ):;~ V7I`pZ֝NGmEa*BlsIkx(9 1TVtݻ 1mNWystŦN:FlֈhZu #6]Etghͦ^W Y0ѫݯ GFGv*PCSщmov;pV'Ye;` n-Zgw p{Kx"kIq㈰YWB#F")`yExV84+]@&+ , LKmk2xC楿 Pd1Qzy1)kG3{~pT*u4 BhwDπB(n^hw5z]WpCDF1'!.Z6;hl,7/ $Jtپ&+R] ZG)ok{,yx0h V\zia) b`& ??n8j."z:F8 H!碣zʽ^׉ ɗS%m"R[s8`_alu;[2}0/9`CI' L&} 嬚4!`Guށk$|gSq= 9 9M|pl2yU?9\3 8*C0 Ishwm"UP=|mu1K._'*5xV1+<&_(6ЃT;^q^#l˒`*j һcSO,L}_%ki( 163׀zQgO^51mL9oU- B)_ɵyFNgS{ö8bqҳzMf UTJ^4oLs6g]DE;"Kg`ٳDM6mu ƍBOmzKWﵜi,D\=v(TG>G#) ݾ8nJT]˯d;ׂb4Ǯ!t@cwA1J%{}I+LpE5$$X0oCܩ).:at4q@LܶWDA8/T G.B$@Ib3Xa)B8$XN $%&L0.E`+&K)|p!u%[9$';ʳ!phjSY Λ=In M$%6.UzqU>4:Kmb7&0uwVMWۉ, ^Xa@9,׳Eb諕"Qnj `E#LߞJ+q/ Tß8N/ 7f-;h04yP-`@`9K _4K֚; 9ez5gNi8 +p0XPLdZP 9L .[a~Գ"",6ljVES"6 s޹l`-M1F_/,RiRдZHbT_Eh9|&D{-wICBKrD˙n/(_7yܠXDU;@ \,'45&ߏI'=v\n-׼5T4ViƚUf 0!ϵNYheqeB|&GyYfMwpPhgZFfѣD۹:˗LM@8&>f'U)_r 9͖&K[*ѿQռEՕ;Xh}5BF]2}"};2tvpzL#l.#]b mcʯ] q`sױvʚ_8h [q'D04ś6đ@t+y$gƐ 2|C3+39ItmJpO 2u?G u8HߖbE*÷ąrrP\eI(ionAjmh04^#ӻye0%J~A*=cN1_xHw>Q+'ǒ, Ԫ_] |C~cU@D 3[;d^\$b"x$Xc':] IUaTHRk!01)@J3ղ5ĸWM8|ܢA@)R ^3~[o7?Z:⽇)w*J+m}tf~T)?'WR-y{.\((}u% NJϞ60LؤI-ILOnFrb% NH&:wa=5c\uEǀ^m$X4d!4P[;=sn<=Smv'M]` ߬y7s EcWCx1!otiwD$G=ϻ%gbƿ.LKWxͽ 'v*j'd#_;`&roX@J)]/q= G >"듶vsdj8I8bpDHK;IzaNKm&f1Q$ ˧T75^g%d쿀 r8aas<#\1?cc>-<6gDOLx+qV$[| <@|f[Wƈk ymp|PI"|>1ލ; gN3P*U (ȲUyb$ě`GJߋd h,Cګ7$ԙtN*  ZAϣlDz.yG:=3n C)Wrb9ӂ~h(:X- ktP?dvRMuv!`sKYBeJ#|>xVC*)eٓS `GqxDJHh%@LhtȥW:f]v۹ׁ[:|%T@ # :n?㴲.m²໵XD5ar~")qϔE]$N <]؁'yAm`@yO[J#^2iFEБ琙:]#oLUBHQIi(~PDfzUxOr"ײ@4n=jמVzzʽbS?M g$`d)",ǘ7>qBm/OYs:{$rO@bжW8:-g0D_-7U 'OFbKךa d,ؕ&{چvID8%Yµ`/҄gIיfn6j0U"9>Ɓ\j@HLTA`髹0vw@lP<#NU%- ニ.hFrԇ0$~h?-?@ҡDk bp$@c \|(O ln0y'cs͜ETz:k)L<LqkgC(:4GSM@KuxnHUg:|[~nN%|gKG=&g#Me".KìD "0\Y1!~o2ęb@n&qMLQQ S&hi/Cz@Ո 0`Qs0H)FHT_YU>dKkikw='z^s&nH GC >i$r-]v + ~ec"3G~t?ס)~f!-fFz?GsMڽ  @%pfŽvY,W.3&_禴hnLxGcU ۳K|=IHӐCڮ86fS;'+).ۋ)_diä^ x[r^'S*YyDzhNsr]zvMqOŴ,۷1rMETF:'h?@4]%Z0kyqoEb3i",U?HIW<>NO=ՔwOЊ ,CGC+cmst{DW]!gh˸f!\niC%byB\$߇ ; ">ogTmnn}f%|A ;c捲ea!WCD El$$h9bϐ`b‚eo?}qOVnӎ5x m# BGNU[ KR\#ߎ52O˂W 揹L`@Ю̉x,x hdYK>m#mÇq=tEvF " f4Yt_IofЋMybuɻbLa\G<?Kc4zCHP[B[]@{]$`Ip|nh ᤉg_ӣ5 4[@gu"P] h\~S*Bɬ:X{@&Qw)cYa"@ֶ)a!/'sZ*O"0tU5%ҵv p~:N ݢ[\!m/B8]RFZA,1x=Ο(5 + H}:+p7XF=O\t(Y_qI ~9srL);g{TB>#=(̐D:+C j!tBҚ"Gf&;*% 0`Aurhl$TU6f!ܴ ӏBSpl [G!+{§_I}0oW-SD}e2A ˅nGxZú_&dC@S, I+W@`>ѡ=5-:t%M 73M>|0Y |߷۵E-Iqlⅳ`m?Hh )^z̙DP7UAƪ ΕD5c/)nZ V۽!"| d4t?-CDN( %9E|0srكDkc'nd}u0xǼ~>&4T]As/!:wz1G6t9ݻ$" i%Ac*G3F2'\Ε3s' 0c}@[^#C#GQ]"'55AO@FݥwZ;\"4XI]5(f;Ho+T*:|wRf2M0H;Μ4P.$6Fi^ A!7$6nl~Z2,@I~DZ&khR? X6|k pF>^`+ㅞN&!r}vx؊lA/nAcv..6'>y|>H&8C}P mMm#‰tqkdp%OhX25Q IZE;w|B8dHzFO̴ u!7RӌuzLH_(o̠;5wgb?~.5}nk4 Ǡ.~!#owE[z7s7);+40|sI xi^BvZ&1 KL0:fL@':/]bIa08ơ zh{@|jϟj/5y+ \,[G SM=pHڅ|Ne #K):Ì"ЭCVP MSzS\z6vj{-@ǐ+l5D/fK/BH&'u 47EAQ+|< { &5^aC5 l{R,X~F +aӓ\bp1ilÖkؿInf4"|<" 1Z1!x@~P`4r`Zp-[;[4!e63?v!/%ހ&F?ehS\ܿ5H ƁD?clzFB;wgiMA]da$4yp-*oۅa+q~m.>\ǖe":2p9N:~?"[Q$ j&j޾=FTXXW4-/z< mNu.?o5kh")͋Uᨑ@ &U+VcprZ {L`j6c_! ]OnٰX$! 3V~Qs~ǴLOsD~ftvs-êEn5|^;(#Y.ƚ="wXLX.!63Mcc,OY7@ㅎtK@9/94j$nX/ (KC9ݺgNI>ڥ % p" YYr!#zʕ9>%s0`qccsFTYN;E/oPqPg/Jw?r䯣|>7ۧ$VmW`r'^©daNa}Ay]rz{HAXbqYN㓀W?-w?o~!gl .z^kcús_J,˺~cb0J!NxYU7A#/=,ۼoݯ|ɥq'31YX WG4 Қɋ1SR8D 'qn&E F\a\t%McxMh+_ٲyaL L6yh>6%zfkI )WU¡C8Iv- H41 8G,m*;j*G$Yaa,_&W撋؂灗(RX65wΈG_QBq+G:>"y)N6f>@j@E.yIxzecϗSDq#E w(e['q((o2Z'_ mpm)ቲI`b9 Sebf;b_+E^H p=\~r<"H081{\E#V6 9zvF9(m-2?(GyL[F( sE"T#4pD-H :w8I>,j@o Zq"@K(.2w[IJp{HQjh;',?wM&K˼~dtݨ>F 7S|JOϑX*f4B>ƺU.9/#%~dL7zhmn%xtINF&rKe]m ?MjgV({ MUSJCBjR`inn^ٛ906G?KnS3^ o2vCs0ki2~W nyYnyZ@@ʶHB`!GufP49D__[& @" :w|-ڼ4X<]f @gwk%60 v͍9\ Q;s#eH>|N䋋KZ>S+ lBDaF F@7$#?8K%Aٱ^Mii$r#.Ƒ{xǥ' 1n 3G M*Zpl#QoO P_>`!aIH!#cEn@(HRT8w`shܪD}/-;wM?cǸ(R["rՈٽ_7ND@ӳ0xy=U>GU#Dqp#Ik8xvW C^m<w-TO_rbe{Z>D 6`0{CKcc^Qf2Érgrm@3@&OSh=aIPȜG 5R[wjݻ13yդDnK͔vB/{ AYQ=*#w y*7G-X]A]:z-ѯB8Ek<%$2wR- qtGmi<5;v L@cUE&^&~=<Kn ywu{` &M>By3>ھ feJ@ N'|^ǃ2]p;z0zuR'.ʖ/oSLt\sF+$9 Lrō~2'c)2ÉtHۗD_"y^_LdֲFӷJ]Dخ[d ^BVq!W8݅|S0G O0 0fWUu{B\ '~ se x-rA\/)1OL`!C-EY/>o \%]Edo߿NaqÈOtB4X} |h3s|A'|`$+[A#s#GY $EOhg2c7o\HN#=b1r'Lz:~qXojzDY c#ՆV4/=eI|t>?r{~8ZW+Qm3mJ9:u<8H^/t'C< @5%$–3z{| Y;I~U?x^,P$۲>nToC(%m0ZwqIl.?jgf+gs%ߜ43D6| gd};}W%н7n? &@r1]F"@ "??v MǍaР9Kt Yc0R X̣bޢe >v Nbm%H7vMOy?!&LMxQ^{+cT,5@ Ozu[h5 *+9LâƚCDkx k:Dr!:9$qD$b,=AArIb)ã@H@An •|C[C9d u;N=\?rQn/2 !e:tj.%|!O<@*Ws3%0G ]-FeL1%H &Ёυ)B9v.nٞaHF;Fw2y-xt`N|)|kޜ؎xiNȴ-*[F&X,[,znL@~}:Iɬm ʞ{<#'" :Z5S/JM"h"O&IT`p Y6?d^хd1wly7pơk/b@`8A]6$}GO3*v&Ȏ}b-"=xbV ]Gc3}7Cn+̣cHٻaīb-0zP\ Www$`@|mʶ-}ㅟXU[ީϓeݻY.w~38W !Kh@"Ra-0~ b;aZ~We2Am]Yz֬;hkȑr᧽XSנe F8_Qᰡr!х?p {5"O:y;s'H ]E i.Ez:]=5S/E;ĆU_0s>˗Un_a 4x$̖E$}t-17?RJm\mrUI0oFL(dI~8Rˆѯ 2y>Bcٗ %dfTz[M`ew,AG7by,53oW#lI\AW'#@ǐ <bDv^ *\ A!%NV ԋ7?۸[+g`}WF~lI/64IyG-Loh`8%Yc717al(@;En*~ y {_Z.  b IkC}h⟓Ub(˾0!`D} pM$ ? ^NFuDY9GGHppޜ\֪[/ξwֳ̯ѹ}tZh2XD"4BMFqz+)rrD/{ XŮ$ܨskSv_Q2o^yŋ ˿kN@[ÇW"EC2v1RDJU?ؐٮ-Қ ~G:_duݺ{|jmЩYٳ<,bBROh}.w 9b:PZq3%;5z;sf`R];/I4]d1eSF[1^Cx}^ީ {,;ŗoV|W5{ ޏUer Op5\<Ϧ?L<<Dbqne?O'9i ]bW0ax4ɳfZG Y+Uw3#,/nY+e .|* ej ]m:plDQ^y:E#7Mif ] C #a ,!8euP1ۋKų}A Ö n7`: ġ݂@}ňݻWN?"8/J-y#,ϥ7,Mt О܅zl:t}HBWʄ)l3a]N 4x4qzGA4 =,ĠGVȦZxsˎ~—YdU__?Xhk0"XpX{_w:wpK{,_VjPNMY/^y&5Jg rٔW}W?qFFE*A?f_IENDB`pybik-3.0/data/ui/thumbnails/Prism5M-1x4.png0000644000175000017500000000656313137372677021002 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+ %IDATx{Tejk ``4,!煫/\DDTRX9aID"/kjN(֔6@l۶Ͼϋ32̅s~x <{  77PPPPPPPPPPPPCRy,k”U,,š*sEGIJ{a^ʂmVl-{TLhA,}'j0RY9!4C@6 9hj,NŸ_ j ~_{rcN1Hb+<&Dm߬gR ܌#E jW}ŷ Z4S@Ca38Y+ D"? gK_Yz߻aS䲯7}]hZ3*&||| R)zz 6sos{u8ϡkCHHOPrCH*Bd LbjٓŽ; Y~͊ BCCARqPWU o'~g0Ў 1xyyX>ִ 7aExr .%)*WKT!! …mV-W nDNhS5^sXtF?p^VCTwoW"<lp-0>6Xd,vTTDDD^ KX(;EQ|̗%P˙%+>#@-L~4cчO!.!H<'0S7>ϧh]|L #3g*L{q}t2*7T^1 Ca|r~ OIv1ԗ*5.9W-B@_R_y5.yFEq6\ui_qu+ @ZFLҾ6Z6|;]}'PQ[SF،t3-q8r 9bfnrQW[]PBU7V̇S'lo}X_x,c)ȇr`F0ͫe<&BN1.#R jH߭Rq 4  ٻvn8/BT0zI1,?m0mCsxz"üLAV3t&Paf“E YKK\=̪ῇk(hoBs0-Iᓎ[Æ ` fwB`lĵg2(rflʏa'}B{c͵8K @} CphJ/lc([ tF?@ ϼo`~BcCHt~|Ri5tvgn@~~u{'XRt 7hȑ#yLZh;d~@9{)K}hKx ]úv@m"9 lc.:3Q *<־@ho ̗Bߪ 5ݻ\t  0(NtH|<<`Tn t" /L,_=9{tOGZuâgo/kǿDu-Ll~c׬% Nx_a[[AK!nV#!yӋPߵDr>0<:~`vHKS<6&a4dn-VC39뙳o!gdzZS=y<==l%}ש3*;|OK{&:3+] ar 25cN(>晕r L1hk}8bc-b$$'f?j cʗrJ֮&_w 1W08E@ș7lg΀';E08M5-Δ@xq(8<[Q ō { >oy;b$Jx9D˯ur(\7N mG>5dOBFT*'/ qekM`|j< k>B3 H]A,82ᮠuNT?Q] %p=`  mGx ]DbjS׵c;ɘK|ZBYpZ_1{\<)!g(!B 9c8v')·AZ7 $bDu-L2V`i':\B@CR^t B6=GСC Lzfslt E؂|3_ r /t`CjMۗ]29*%2 )4}jcVNXrEgPUZl9.H._oƁ3p8TygX ?hXW&eM igg53Ϡг[Pn`+C!IJՉ%߲BŶO5 @! B(B(B(B(B(B(B(B(B(B(B(2`?o $ZIENDB`pybik-3.0/data/ui/thumbnails/Prism3Complex-1x5.png0000644000175000017500000000547113137372656022206 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+ IDATxyPg#5.DzrGm38N[fbZQ4U41fCG(8J8T"(܂Oϻd/䏾;W} HH H H H H H H H H H H H H#.{v͡/*QFp8L+^D x4܁W^xm~0|VCӭP 8m!.@]PP0+V77I PsQX}}}i/\ "xa, xժ_vy)A$[[[!22d2[¶zj tJHY7@;N x>~x///TDhoo>;D+,x[Heff`޼yc ̊ucGJ˾f#Hhhh˗k.&ALL  .Bnr}&|hGl/^E1 N߰^*v8}R*U. 8F+ S#Ibkk׮D#uq'䫼<!@ńBCj[RqZ!۷sXh ӧI =+KCpݻh~-X~w <9<߿ h+| ъkIy$px…{'K ERl~[:- !._ƍ86m[aKg/Ye 7/ԙvX`F:TϟJ`yEP{̜yoz*7ndjQ;OR͘G'OZ0446 ,B?8x-\RzN7J C>aBFRY@B{U@\$ PaVQ\Gni&vW' gMͧIUWillPń ߯MMMe>E'@_6b3I^ibjZZZزe]+1 +;^x( V6=#`\;rx?v@$= )x\g]AZZ3>3 )ц @ſ85&`۶mXVVf!2!(C'>o7f5@3⤰gϞ̙3!**2^|!=#$=$T*Ӎg $Jlǎc\si/ #8 dR;i?|qso@ 9@/nxp^j# W_[OpQ0[1t==.p.Wznŋ[<2fD>p3RWL^~?>&`F7W@8wxq :p/gH6CLAz=dz#ppǎޞx7ZϪ _g 0˿VYY ~~~lA$ @@Ì(1[6 $xp .]B@ w"[)d< msHn1xTHOCn >Q?{DSTkkkm@<0XJ!uh@g#i7Y?P ?~st? ºz`3:riJ^ii)vÇ4 O5X 05AlV™Ñ:G.:ӧuDg#Vh `M7N8UN'Rե_IOON&;[N)r"3SwС1e+( `+BQ'YwZ؀e ߁S `Lq @$} $A$A$A$A$A$A$A$A$A$A$A$A$!*8c= IENDB`pybik-3.0/data/ui/thumbnails/Cube-7.png0000644000175000017500000004237313137372520020100 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+DIDATx}wTϟQ{}Ko*;A c, AQQ(* ǎ5&~$}9{ܙ4A~ٹsgyss?.~>~7g8~~IM;!V;N)wŢzg:l1`O:O\NFȷ'õdBS8PZZݏ*i 3y 0dvZ a{y{C; ΰJaP$:UsFkb J^A͓L_Ki7]NvEϥUX?]B e3D2A&VO2y¹59 O`Ѻ >OnJp|钀9q:C=#<+gO##C7>;?Hj3{O`2yBzKypfpO0?b;Vr]MoR"\|DJ y]F=e-(LnQEs|txiEIO 2y¨z7Wk63v=b0h=hϥ C)oW!5Q ";^P5 -Ye!(dO 7u& $+{!/bE^Ay&RйVng63;L[Fz0>>OT5׀&虍 D5*7As"l4nW77U]j5"T;/ч@dz%Tp-th g%3CaϙUJ׺Oy${b|ߐ៱v08ƻd^byjwVBM "#9.:ڥwHdßT nfoP ^f2~IX,{<.-5yV0~4Vy).@gYƍSc*5B8byK h8 3JKPOJ 6!!@I9]qmzK[ntq]] GLW?Wz~賊E5ozrKPMu%TQHjHO5Vq3.cT>7(Rgx&`Ab2D yJEeDքp4qSn!nka"z +ѫ%pA-  ,)P:K@;Ld)o {sD0w û%DSIae݇a&A?#b#@Zɻ1 3[ F 6H=T*0K?>s!+H`>oy/Z={|Ϙgj(-#YLƷ?@;?7^W;tS$J497w\C0BzkBs"/"l]f{Tzw p6~p3sţ<:% Pwp/ϘC{E۞1>5!?輫s& pwؕ+;)7/=J.RTĶ E:1 R 8Ӕ(t p=N6 @N0V.]n5)."Q`=D]l*V!\,RR4yyȊFS+f0'g)"|Jcwj_?.˿R΅@dUG|"ag)-` /1n-Nwof)]|Mo*1~ӏ'9o?MptV8Ȭoxڙ  Cqγa1ӠObhAgyd?eExsKB|RsjkDɕd{~ LkyC{:ȱr*:Sk9c-Y@3VV[[boOlΏcI㧬`,1a([:}+ߒ@|K-; MtQF@u]<~{T_/T#6Ճ-#$"GۨV&VYV8Q1BnVz_0 ؟>c%ȟr2=Y<@- =Cr+x>!*چ[J xQ] "L{>H+t!ޯd9!GN1ժO`(wJT`I7I74Lh !_{T`2ϧ[J*k Ĭ H3{S=-Jߞp+6Ga5竸z7xJ#C{8^1Vf)U/ח[Ptd(|wQƇڶ3…0|ҍ'(\ U)TF |4uCdpu.&^v1o pVހӌWI! hr!"GxMgQj.=]k}G@A ``͛ -_fas6^QHz_J+4- +5sq:"g &ٞ :].t#( ?OyvqF4¡" :RD*_MyB֪ )[[eYhAMyRy X0evIF2C5"$ єNeP !!))S `ŲKt\Ś,:Aq,&qݞVH3"ೋd7tVj2I7gΨk:C4 ed4xz2!C5իU38^,U(T[T{siEtE`pχЍ@kŜƥNFD I9t3_ 8tompC]T 8O2´jժ];ӹY4T[ULGށb:*^!EEȯޮ`|F}MtiS_(Ưg@h"#xE |zZ־'FRuH(X߃|`@Wjp(SF 1>BOe|pTHbbDX5ilQ`GRF[Sc/w|~_1ݳz"F1v- fX?iGvѦT:~!mB؀C7Кn.utYo!ϲBﻼՋtkBFgU }vUv␍w{s:bC8#Fʇ.'\ͥp/1EN!.UçžnyU\'4]4W(M  0|[;(=|jnpaP(FnhϩIcs 8T]ϘE/A,*RcJtmi1xAS {nx8x51Bt BV5 c$#fAT[_a=ڹ 5xpne M sR%fU7o3Sˈ~5.`cƹkp.\AƩO8,:QUL:'@ޚYPB0Scr/#H @:KoMḎ]xk^wcp+,NMcpwCxWoJ^AZ랒xH1v q+wMDL`(a&Yݑzײx8Pq,Qu3soL *5vQuωY NGؚy  "8} 9 Ҥ#*p1U1JV=NC?A/2J3=q>Խ\N?xHSCթߞ}e[ZۀߌpQ54&-|GT#$_Zzi^`o|GLL1o}=7DS4*9KV[x)]wH4P/%p^ ʱ[)"+]t,T% V̻VX12rXb~'29ATˍtz p 9UD0>]`))_FKoy =*ʫdo8Qi^ @fYX5Fh8]f"xȸuMӔ0J˒tk-SeV!Jù^d\4/ޣSFyɺ'DVvQ[O$ĻFo8,l:>< TL lK|a epC}5!7Y7ztrj+'h9F'˘, w> Em`;a I < =%}B|:& M+bT~]}MHL[ao CH^v8- 03 c (嚙'ȗl|c5zPUs\9|r';~mv!godz^PX1$Y>Z'qt3̈́*߭<+rO6#Eb邐t߫KkxW|G3<?8;p8*d <"Z*W澊/deG@0R;rSƀtsd\cTj3 qD`@0ˆ7# `h~H@aMuU>BX$̤2߫y;sukyN#֯OF64178FSH`hN!6Mɩ_@m S>*M\]XFN*mҋpﲧޡE&)䴜{m86'qߍ)u4#^xHI,!%>]9ЩWd/8#Kr4l`dnx{=WcŦ^{EvXZxHS2~#\`o*/ ]u9u cJhw#TrJ-t08FԺDk"Fo LeMu=\ ѫRGM|z{߾2"BX@;tpK64/wtzьb@Y?\?騧rDG':NN^^YIK7G('CftE6@ BSI`d *"pCYFH^PRmI+[DfH/ M0tT= J5!UƇ aQ8ǡ8m]\][,! /|6p,Ry4Tx0}Aa1{J>7/ ^ܘx#G[sV)2e H1u g3C࿬i&CLXlK`N @_j}Y8a*V>NgoJ+O`@Xj?HƏ߾]y%ӽ+tѮӺo߭i2{51a`#ܳ$">ϸ #!;;@E\yRqiE[h&W/WMץv(BFIM~e|p;so*$aqJ#w+-Dku YQF<.J 쉴"A2eaN'-G^ ڱ-d~btrՉN?GiTG+^Vp q 7]spQѨ+ k$gR$ H]Nn݂TO;w!qa1R>߿_)-GD߈?-.%pŲ?Y~Dc7bjQj#5"3t[q|rϭB.Ԝ F.2x?l/̔r_ȍk_Ela@T1߱-(`(D@M#GXNOYJP}9k`a~ *] x1g}sRxck8*DqQ(#!]U=t@q=|!9k 0EqXۙHlCD1G6PW@ëUj3 *s1V#w-q~v6q*׍V~s!Ňom/WDEyB|CGe8PA| ObP9ZVɘE (t^宎r WQ"1A1h[|'\7csPGFuxg~usOTH5`:q$ruOKyUg3GmWL|7J_{C5b(ܺ~؆PD`& } 8V9{ʙIف=~/KL fz\<>[iU`u̾X1{oatT㪤M2qlEO8ٖW%a5)-߿| !u&reS|⃧5 X8wGNc*9ubȃaBr1n>L!,!gYCĜ # aQT*GF mc0TouqY)C#(aH1>6g8qMɮr?)k sճ)VHP6}`կmX\2»5: 3(H3.W w(֟!xOSҖH'}$bN!Yq z{B`j0Z$3XJ76BX^%oX8+!XƖ>@r̋lׅ\h#q0#p0qg&bfYΖr.Q$Egot3^]2/RBY2D:/g31@cl'?vpkèKJe6ﲄs:;ėoT_O ?t !ރfN#$KE,5(b玫B_Dtw2_ &[R|?SZ!>(~߽lz]7HB(z籕Ð( _%c3 "b ӽ+.'/ݿ/1kh5+NUIϯ68mC 䁐C&AS<Ӌri^+ -%=0zyԬaNL'w1( 3D4 DW)! |I&W*)RtL pK,~DLAz< C"}[|CҐvnS \0ݵx) W PCRlOuAAcfi=x(\m4Q>,=%ZCL!7txDo9O1ZG`Oxf+Iߚ*;~+'Ex,6Q.b91+T.0\c 0s}Mlx&B-gY*`3CQpwָWq@tTFa D#,bѵ-c NP*g`JIp ` Azǜ ܩ.VLY[K/ ̢24+뛋 c(!P)FY + Fш3EYFN2lƟ u s /t(ՊN/ϕ!MctFB@YnT9:*aߨ\ͥ+;"yhyaP$(D=;9$Gؽ7vouXPfTPdh@(uyɪ,&WT bRuTs`Y9\8x nl!D(g3"ٳxFh*Ef!KdyAn+篔-d4xecw+ͮΎb_\U>Z#w:+K#OPx :P1c(bF({ QPOì^Ġ\[R%W+3agh'RP P49 G,!=H@pPJ7mY9v1۷+Gǧϗ"_ d/[0wAvpu!QJ)]]K0V1DeàYT|F$W:c`b )V})V2B := #=VRv0Zhz3s'm,uRn[>Z{lqZw{i.n]˒)!jylƎ^bPVC$axh1\О y7/^j4Qi,Kc.@n*|8'W*hjgTKĚH)Y#eOA ` `!{qǒ]:1!O(>*},'p;m=w*cN~0Oskv Xj=k(R%XRx\|N ¬|P<Ϝ';x+Qy0٢t`< JkHY4"m_/U?>Szܱ^^@A Jj 9x!L4L, &"/å z*nFQ\kq~ΌYq͜2B >ɭr* Ѳ6VnЉĂوw<0Hial#kO9C bW(XN ʷ_[S,'w*˦d=P5Zp (/'@A|8I[8΄.ݮ#5p?Kh;j LIAw@ {r 318G7"S{6TK8[7 r)4?)*'(9?2#yF/Q;#HR8$AZ۞mk}HTЛLΑqCpc,NTj`̅# j& 但^VaDdj5Fx)̚B!緗VIxo!/0c1?^@㇋<ׯaV=ݮ*J ^~$9vjf pV lˁc`XRw^(1hD*i4\vKYDJ ]@UvK7CLwlzR3 ]~.Vwiy c Cآ@̔ &PL¨͒p pJ@j?V P|CճUѽ؄GyTD py9.ېU /W70g-) 49PZ/ pb a_xHuFw]I= CJXSP]fm_d$gp;%_ջOL$nnJ)zgi[(N`o?`~$,@<@}zS^BJrВjf.(6 f@/)>Hs xd۳C-a`hGB'*%>CNA 2v=+ fNi a_|,|C! |msV75MDe(6`˞RE,-→=H7nno(2\]h)J7Pc>5v~tmP2Ej]zo[5={)Ts V K%]c\N1b"0E&;8% KM+Ĺg8?oȕ]<1viDtimonMr 60"J}AZ7} hyc;hbKv߉I#;[ْ}Yb7A-/FKz#4plHcu@JRv({ rM&fn6RAzѳ`(0>w(}>>cg(r 4rb'/Cxwf}l5V|t3i?kO<׎aF=70r{Xpx:0\0KWpkr6 HUSdtyFe붞Z0B,9Ѱp& ASo/w+1pj̶;c&^C5*紒1K(ZD@_(}; s K)!"L)_zĬK9"> ;>3H1UvPIZqGQأ@yt$3y"IK.h._ܔH_$sq U>x3jxd0&P許&*A@$oAVzZA6/\T\#S2K)Mm\{;,`{C |9Y49I<]P;{:#'?^y؉,3p0A^9Pz.o+w. W.GTQop7+/ ?*wk0;}al[^(3KqK'Xc : <+eu#61ws:q`18G5wP8( RJ4id ⽐Na_Cʴ*xKE.rq\4/KMqEE;Foސ9cDyS (#B,V#N9D pZva2L*E۷$y^å|kɢQK܈R_啳4i0p@yVRe\׮-Y}zL\qP[a]bP{iE9 :_<6~4<`G(ĕ1SP++HԱ#b[Ymibf jm)C(<-GKBܳo`lP1:lj5C=UN{{]%+XNCn>~ }O! ?"pQh cGX=cn@` f|^T-A^trtKs+`l@#dʇxߍkyt/eez´CEAEdKEG.1^~1)ݿ!uOس;[ǾX2aG 礂 V3Ne2n2`; *ٲ:ڄ+A/X[ϧX; Ŧ* ZjH_T-ln6'ɜubG7auanE7"1cWt] 6V~Z8nrbY]L ιuNpG Rb!*jUݤh?\\ު_v DA{ ,@U9.EsR`Z1ɯ͖J b4s(;A|O;npDLTŷttȗ(m܃?olB8f>'*{lU%}|e0>!VprNP6B?7y|' z WXpAAcc R#IORŖ)eMͨ}ap9r GBTW ac䧗 .&fSS>^s_*aQ0|{Ʈx nr\`]wYF M2M%d|:pРCؽr@Ү ʼY҉u.ރ(W˙0`,u-5mP+C# Lq߫j ,1dvYOWr\T\OV1<ɹÅݜ<!!lQv_lVAV;;ε11R1pC'?!KZ8}YjT;zj buNPi3;}ѣɅ~7t-`J h}}d' p 0N(~kgiOQSn5X3qUMUeUPy'Lay@fНku3vePh@a #vAY$61u!TВ3 ܒ>/~e}+"ɢQ@韽EC`\VEy8|kC >'4Y]w27*wa}S.a=o17pJĄػuz$⩞Pg;y>zŌ|Hß  ugf_pvƂPOJEw&@ 6:B s@Kܧ>UbƖ =xvACxv~wh@x⥱0L)>ַ@Z2`* UQ<ϝ6tXPG6wQ~E.4H!;0^ cҹ}UhuU< R8CU@/+.)7oV0D:Ѱ#gd!F 9?2Y4VN#ʕbx(&wr cj؁5~(|Pqn}eˉh@% @x8{ q b=Fzyr.e<]O@Yζ @К'p4hz!]7/(^}r_~2H!0mHh>, b*&Rx}S%- ' Լ`=ƑIn2YED$x4i <˶`Ӽ\hZY4|d?yXp}.;|C`lz°`a' IENDB`pybik-3.0/data/ui/thumbnails/Tower-1x5.png0000644000175000017500000000577113137372523020575 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+ IDATx{pTplkk1{w7Mv7݄$<4"T<Hxv,4RюvEbŀ>bZifhwnvݼc?sw=׬5%%           )VA,-Ηka=xxBIvM_%?߁-ߊ5Oi߅s[Mz>_Ю{֮Eߙ}0}w~ {(~Χ_'v#e-+MЊv=@7oXxo  Np0ekk7{7<WB^4H1li|r|˷{ϊ? x̸C0%Kc0cxc1Guľ yp9@losU{T222ğvMIÏuM:^&?*©7BMd.Ԝ{X|< lc9.dffAuPu|d+T8fO1 y@E|tp/ƫ` hC0@ h^9NelJ duTk^jOǜ@@ G($$#KSb$pPnJs }@VS<CP>ZJ?M*>@AXb: ұ0^-UG0l!~>BS, v:稢8_lr" gŅ*~FIFy6 CXx:v8~?[ \ T%m =Nu4R+L082~:9589hy+G@{1gkc1dvI` C&0Ag38'+>Ֆ IJ>݋TUp A^8bC >Į_\1yuF+$ZDx뷚cX12dj[uWr1o<XG|Q/\|x&/yNZ[ A'o߽H@IxW8\8Ldpc 1s. [@Tؑb}]|< o>oɸe@h5WOD5y@Ӄ4ȒI>@4MqNGFKxVx~& I߶Qs= sxGYfX?=ů51H$IYͭà lj*^tcU8!ȒUUɷRcAxBpLhPL-!e0à\Ȓ55͞:|)-}&=iA<"# oe6L!?[^o Gܧ[ T3 {j#b-/[q*kFBEsX @uA)@vofX&8+@ijMK%T1)Ÿm`xؔØ--%ab }%<_%Z?_ pYw?T `4KR` # ``p@s[V;K $9:y3y*S`V ^ "?Ɗdgpc W~ ;zm"<66'(AYdj=8F=_ mh\g¡\(. W2B'Mz?R{Q1~'`w,^ 򿳚[F,{Xzgsl_H`K8Πm-bs`3;8wMԻ\:f`dq:pxO13@`+W\ۘ8G,㊏yo925k2>v q X6ۖT|?d 9). 븡 ={B+ @,4Ky[``' lKw+\Znl. }ԋp<O޿V][ʗ%Q9*Voiހv#৛s*"]ß) !Et;& Bk ~5EцЫϛ~ s(Hk=d`q@,DTR{B͠]tۻ"0.8&`ؓ@pz7+a7I25́|cTQp̤^@>7 iTda pHYs+:IDATx]yյ~$z߻gQP@AM}7ܢƨkPJ\Ȉ"#;H Kl/};VuuO/= twUW9now|sW!htƨ_CUD&o:o믈L~.<J0>\u/E4Ҍߡf *,C h4*!`. :CDzU<#E:Y&)@Bwhi>8&īN@4cUO==9>ˈH{DН" 2>J62:w,.гU$ 5|d 7tflq$M6f3bɸ/Xj$RQ. {vy')QYYF Pd1 L\W$ a,Ɵ8ydWp+njjyL 5ןD;xG fε; zϸK87unHX,p 6^,)1~6@L"fE&r/~Kq݈1NhHπ;n2"u/i9fv@7d#D%@K ghRt*ƹ!p7o17k׮j.}:cdjhf>ZduqX`!̙fx<.X<]P-Ɵn "׶ q B#{;tt BJ"oLuDng>[K?M?{A i_` 0ēd& 3G}r0vKУIxj1ȵ0LazgP`@z]M3e[UϲVZ@|( !%wC l?MǡDZ*p/-Ygu,xRPv<Hl[5.>v%n7d3HZkT^GFpXޏXzn-1>< n:D#"pwhT/n;rT@$.Pir75 {ʸ\wJ2c|˜?jyx4KsT} Z L0 S!&zX?A+~Yʜ@s,v[f?O7P@U4=- #vj` wl \aB-1Ut]t.tߣX.Õ|^ǖkM7G o#|nC7,1" %b_Eggp](C+oUy @ND0AC' ޞ>"c~uXA7g0HRXs( Kyؒ'm*rq~]tkdA9Wzo )SSPseT'ma˟ܽۡ'lT?Vk"РAr0ߦv O`!0߫BKD@54i}3@z\tg'1<5W4>>ñbD~EHUoe"~ʟf8\3nD7@Qpg,#mlcEN`hP`pqq@N9 - EK$0R/ih:ac+S^HhǺvP3,dB{xdXF]n4ؓ-18Η۶!TQWw7 ƇܢBbk bJUYJ@0bJ!̨\K5-Z?\\U%nXdzY׶)`X0۟(/F·1] <\U W:1f~\a/)G[`{yz4'Ee\=WބZ`zV\MH110S鲤)sXZ3OxЃ0dI.Pnb1U򸇾;> f yJ8dt/PپW&,3F zX*8v?^ KF ?yo&Ű3ݢ"OW4bG!MB  ֕5喇Ek =`eH _[2d2Fgy%CG`{GrTEh&m #E"s/S+z4񇗫ov%=%=ŞC ݯ3*D}nوJWz>ġ۹ڦxlF[{.!p0V:/CO1{/dmX~@ @ 8sH9}?\2Ş*Xx(a&v[맋xe]4bVBS6|"PwK,ds&:$m8'f#ZÚ4>rW0~ح o@a4"i|x_?1"j*4!ޯK7Dس4 NU i>Pn4|]iU'g4b~*eB:7ZaATg w :Idex T\7ocX)3H }B4MZ(fVc\>'ĠG~VóՍnx/bMٺ Tj| F(`LG%ʈȰOfx 1z"0Dkg1fU i>0l' C=.@D}}=/5~ ͵T?w+fĬq4cUq C8t%ֲvel.ڀ@2OӅ4r!DD-V[Jsn!Ry|04:5 `Ť^e|0>DnB8Ew ÓUػ3{%Ž1;. o{4* 9Lͬ1ZQL7GD^ Tm-HpX)CmzMܱv`621׺_c[=*ECCܯShj o|7sGܴ 뼸zH#Z?S,Ĭlz*8NOoH͕ =]K.~TyzhH9x=/] >~LIۗ5҇cm (ȡ4r>7e{3<1IT75!Js Z(TdkPE,/zwX?&Ғ4c`5KUY~&I^@_Tb6lB9[ WEd)xzh2{z LgfXè^>/{B/U$[Y=Nl*o8sm*{WY~XbAjm^sX`΄ROGt.h&fxp]:(-{n2NqO Gdo/HP0>9t@U̸o^)<;(ݒt|x׬b^H,$>{N\1/Ձ#ƃõK̤avmǭ_5Dʇ+- UThYL^d1>d;a|4=%%G8X aec=/?khYyyDx=qrT @fDe^DiA9E.Τ#?X2=XÈD"؟^8atlP=-G~Zy< vd2AhhTfNq_T_'g5o%Ÿ!!(ě+ӄCh^No@! ]_=2 _E7=3i4R..̌~R԰!wITKUgX;!\=8cfo-*]2r`O*uK| MKPP䈡OxKWyU`uL]v6#p6x:بSDtɡPmqnne28y}t\Yބi?"tRo@{֕$BsH@w2xR]s@ (E9@6 %DLRw;< \M43uRŦIQG x"cIWhc,.WV_%Şw_?gc{ܚX T`ӏz(E Wh?^=B>KsOA.,F}E[H|a4yZbJC,{1#T=Z+? "e| ;J Jit2R<+ J2B׻RٿBTD5{O!}ܦ`wLm(t F`ϙV$?WR\J@`dj3,)::{jt)`t$ʣ w6?[x"+كj,%_11LY +d 4mժ'0j& o"D΢5J8`pho$8Ik.Py)/;ز,+fK`A[7+z` i}_*kxe!Y3Um/kE]lI'{+Č1^7  DO\"E,?bW-ko-XUt!oyHX~W'4s5դeU!spW^CYR;E|;). 04(e#oIQ#0fDc88˜Rr:[nA  ''0BRz,H Y}tɢld|/07R>w9KzHo>˧Ŀߓ%?_)*z{K8:ogpx&P4 sP&fx9>Ӹ%bgWx{dP<-<ܡÝDphS{z,у 1n<. wU`pUfؒFS|cėDx*S3D\,2A2/ћBz*X{cTr V lOmuOg!>S7}nqkTyX!;+NR8÷;1p\ p5HxOlpAIZljșe鵐TD#m "Ea;`n" ƈ-q<Nу?XapRPOԋaj?sǒN>̒)~. jZ6jr\sG{q@A\ Jrh,mnAsX5@O@`@rj8^M?Pa||=}4> 02jpGDCϠBID ' _C;ÛǴ@sbFQGz )A~aEʍ*(Y.u>fN"Rł `݌ȁn1sOTW\4I%847>7Zg$Dm= o Edi`[mJ l3s{yjG\!R5A%XQd! 36/*CEnஓnI(;x}z^U6 І q6ڛ v-#բԧ#hxd%Xu9+A1IsE|Zh X6p,<\0w3ӲFzV\<_Ȩ<{o, |Ґش:JaM WEGjCw:I! x^̝ ]fa[ExOL ȻY@wK lKDaYfJ^?sۇ‡xWdO?67&`!DiX97 ,]QH HGr 8)duL_Mr隌:/c rFF.1cse9)59U(/W R؂q[YI\جYoCpܾD%P,zòFx*ў ,:<c%[P2jə89UA3-E,#E !`~ TtLQØHl%헅Xpd?>SYi5Rm!?4P=O}!c0oA "5.gr{pwS!q:ب]dYW@0`Pڴl=Oa7e 픳ڲ&yFP #2@(j7=~ Į\'—^@\!+@8)Nm|`& ؐ|HeJbHT"(O Qt'LsG|'ρzqUڈ= &Í(D4}l{ql?#ϑub Z"R \4B2fx*f|ǤqWTzpQ ad.2L%V !_7[Ӌந{w΀09@w6}# 6{Fm]7߾3֪GoV|Xg೿_ \4I!CC>k;8?{H&y̒Fn92x7)ld10F6~MӋH^ u q+#3rF?;{f|YDL$-uh"lWDjx2h [R%`Mx g3DLԳ%T|D]-oXݞ\)e _|?RF6|D/ul 1iW+ `|T=|>S d#7o=#]Ic)8P7I(Q}e@Itfů'BnLEFVk0Db%"Phu+= d9wm{_)3\1%p!&f|yŕS|pz+Tv%=<X*7/](f&ݤl"`Yq VX1Ki|&hY1:j>cPyЫ_~\92+Y$`'>.FujH`u| ?)`6r4_4Oi<1lxeR;6^IGZr?RV;f܈M)KSy-NXyv@Uqp5 eFӢbP7T1$a#Bs "X<}!6ױ]bLu^$ CSf34JrG+H<< l@gՐR<psW%PySt\Z5ެ8Y0{O,zçJ}ck%'PM] o?G;6]-pS%7$+Cm?o݋`Oԣ0.>e4`7d<^CbڽҞaAfT2!Z ߅]?|EsO=_\-,x_qu˥ ^hN"j f^&p^pfj l>ܖZ58r^,C (\EĔQuBe@]*oAgZ$hV$mA5;:Y`Hؙ;X~N4'}߫WP1~<0b-G NX@`H Ns|.`JˠDr(aD-sH@eUD`Nq]I 9x0MIݪ'ngX[˾P82Q-EL ~OY+70?o ] 4Fh/ Hr c<뗗"L9 o "Yv`,OaRu]sHp%iﭵQ Y;[TDC/*'oS?hGTrFI>3$"0TՋ#:ӌ?= x3ʻX,XE߬pr.'ȕ?0Cur,"}#Ws4V !!TU[UV)Qݦp+_~B¿ޕ!7#lslX`%SolBL@!2CpzTz(^NN #1M0p&&it4 %e5ma ײ龸J1l=H\(d`Q|:Vbxֵ+c# sSP ]H@ҐJ<7ԻT0J;4oHA(c鷬:.eiz65D8v8|*r >%3`G7. 9zUE@6]<= _e467VGbjT{uH@W6>!?K7k٧)]x7a~W]\ S0꿸+HGf> yC9EnDˇq #Bۍ"#'6 s#sa߼]NzӴ}|怡@0_E +aPy=i=9t擆නXnd_94]4a`}B]:j28?o`t^?QB]\!Ö\PC j+yކ%d`!bmJeOCvX?IvHSǗq~ "F9PDe]ɍ"+d @w0?l>; kH.{weH"^ f|MOLh9\{~N$ޜJ nX2*; p)Tfw$DMΙ^Ij *5#r%; p7*$q&q+'&E5pSZzV+j9͕B/|v%p a̷; H=r TAdݲ9~BS̾2 v}WG) x'{"CO/xdp˘jA&! E/02z:k猪/@VxaETmj6&up8W_/*˹$]:?'n|yxGBH%C*FI9CTٝTq,6t@ڽ}_?w8] # KB &JnFY! I%Zgr%챛S_x3ǧJbLj! h\dʏ7H [=by^RRb+성pEQNXew. wty176ŕ7_xg_)!98)1rQ7>З>}e0 mhXve]mI,|QJ])Vݤx8f_[d*#E`yކF9Ϯ>YqQ-%et_{d.'ç BetHfC> (tВcpl;IENDB`pybik-3.0/data/ui/thumbnails/Tetrahedron-5.png0000644000175000017500000002207113137372642021475 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+#IDATx]w}?὇ܻ%jH ^bzt# `pL/Hcz7>;5><]Ȓ,@gS̝̿/mޥ} /A4hK4hK4hK4hK4Z6#)%smR=*J  Fop`RMRJԧ/(=EF k23o޼IUTQ=M#$'5 moѢǏΝ;)&& vzr9z-u (UHMOO{.=-YBBBh]j(d ul[%O }g$>}5rHCF* tm&M B999G+W3`IwJq߸:#,SժUt6,˓48yƿxϟ[ڟ7nI+q6@49omyɓV5Q*m#-/teB2~ͳ>3z8I'e@z V.Ӽ23hW^^ &ŋԫW/cwwjCE.I9C&$S  pj\K)++ˊD7. U6ƓSBmMcrTH]WC‚3#_ruA+\t3y___Bh;u]PB9gbݒ4~l{$<:)!(!}///_ÛǾFsX:$&NotƿAL~ذalHt޽QcߺuˌoժD9O Q=( \ugk!;ͻaܹ3M8fΜFO :?\=( 9`~_PP޽bccipg?^AI:5y@:?rN<Fݻ~=Ѽ?,[VilٲlNz :Edk֬+V(,?jb'?hl_479gpNC|ÅCԉ+;;x$u7n`gΛ7O1~JJ <,# U YO&^^5@ Q%3w(9u* \ Պ<0{I'OVX>BP?3XPx.y!z94<|n}H 󢚕L%_i#GfP4֭[Px`7] / \رc n߾ƌCkAbe˖YkU(:CC:r3D-rb9NjB8Lҗr%Ӽ N<'~-x, РA?^S>Bh1;u?A=Z8!ڃ 2\%)@%}ǢmG |G8vI_fA).v$KMM%]*R0FpxϢEE A(FĨE"_5GTJ!&*e z,S;8 jT86HѾm!8.u?̒5Jyq :TIYAhą}׭X԰s%-^zI9ȟe@Κp]bO?6GP+w'=2k!._ /Hqv_ ׀@V[.C&M@0f҇Ʉ}z[l4SNpz߽U WR %C( jA'7,ȍgI $x`F(U$QF>;p v A59$*~ K P-hF׏[V\ ]̴ cz*sso14_QrXUPBЩ{חbbȘçfdd.EߩS'%W^rssq _(< R"2P"#۴$Tflp)ø?J쪑v) ~tT\9q:Kع7?]\ STf Wūqì?D2̬,fh!]@?~CL^; D;JI $LaxV |[0ؖ )}Ї˻/J ߬~6D1?ߗS a'}?5-- 4}0*?\`t¯aw1H`ijgϚ5₌ Bٲ7¿S99Ү R(w ŠQN;WEg}Ut*:]9%xU6 6zH6m$ z0L,hB ӿxYH/%\~=.rH{}So8o> (2RvoE֕I$73X7SBG;lvjWMƙԩSgyyy:ppǎP6sŸ~? CܨP@cozp$խec+m@"2)!F&Dxb*Rp|M`G7E=sb={plWgH a(!FW'u(ƍǏQ%="zh !.w֍"""Y(@P\[@tr~9 Tz(6V*!N,4άpkK:Nw_zz >hpas֭[dX60\=8({0߿z`\|6Xv>"jT !#J0Qx}8)Zgyr27-#L~n 4$/!xyŵc. [Eՠ-]$[n͟0^AfL t>*IwUC!G.ҺRX8%$"Ɏ{Uc}7%SX ymCkX7?˝??G3+a)/7Khܨ^;EDO}80&ߩUJصƾs^$ZjV4oJQqX<;C8EoKqٻ!`B P)<1\ X34BB cկ_w>[iq_r-@~ ~sz2NQA30iǪ0LaaH_$\W,;#y(٨CW\>۫ -ĺ|v:~uS~cbֆevz"pV1;[$O w@V>pL'|^hd1*F)&wbJ@~_pFǡkWdL lC.@5e)7Fsh9 %A3.ʝ3J2S?Srr(MC-S; P"cj:Y@6/- ^ {uUP{FB౅ Xk{ߏ$: 9qgOQ!Ν|}dưJ]e>cWP(R6q%  _x5eG`3}0xK6Z ?!S_\adq84,*Fǟ#,ݞ,"ԋT 56@88꧓KD2!7kYK@z.[S'+pd% &(^4{/_R !4D @9/PVs.11=1dqPdG &1;%D')< "蠔/W*/+{Q;i!{>AB'ܸ8: @#` ;A?V\|]J}Kώ`r {p إm &)X]Ŕ )9o%$Oqitg-[-w*B4 y@:+ *! &q@qH`+ƂxK98#Q=/l!P4sUA0\8MN/룏>bGO!`HH!`P]qw3Rr(x%ޟ;~CXn"sl[n}sPy3]Z8L|n'J bJi ! 0>w`C jI #9)Gҕ(t4q|젥PиA1ly }5A\͚53g9!}L%j,RmJXwwq}'HG_ٽ8`:%ЪU,M7h0szҋ2>GL$cs3bCꡏ!< "]FPYR\N=(T0:!x9RCkpU7[z_P6/;e"bahrtt1^Fx>h`ȕ=ze. \i+WGΝz~O J>x7o6P WA9 qת$v`Jtpp.G%'|CaAeZ0'v)6J>X#BjˡǗ:x]?gqD|^&ޔw*#ɥ4(k֬ɆE ɡP1TP![>r䈕F!n~ /)w=6}g 3CNZY?(\AkDTٜH+N %ne֏?ORd# ?X@xtОJ_Ť hl 7CӻP|VK:ä<̏}e)8A0^A5Qr yvL܂D1 `d)X|}&Q=|j;ͬ`d8rrrWbh ,/C<0dY?V o[T'0@{T·ޝn@Z@A@b+ՙ>`90n:2ok|)!\JpOebsguu{9#g8@7VṼ(D w0d@Z# Q0q`xxǟ^< RC:qCچ*;J` h!Ņ1!A`8C5r /3瀻A3jyG5gqr{l|ɛ$}s{yG??Z\@1NN&  I$P`ZwNy]ZPX g~Dw*j~#IitFZ>#a}gkXP`(1bƬY9Ќ?k$U ~~&HP< d }xC"yqAzv+-ͷ (==]yn۶ml(Ɨb8w<{aML ŮWw*JsGJS'xą顨 `$T p`120;0p pBQˆؔL< ೪w;RD#pcbxB5LDS@pFVUuSof 0%SlNyCNshc?<<[>is,\<}\Ń VppnU*n- 5ipv F`9.Sp28D3-Ts OQ O)ǽ ǩ`[B!$XC$lɝjzm[ãbp%aC>F lٲEEX ~muLߢԯU5 c˖!D abK$p@36ؼ ۭeV1qR_֩< qdLG1^QIÎ<][-]&ua!,11,?& si;-dg%9X8-ZXi8d5)eŮd}+eU[*y^4M`P Uw ! Eȷ4w|$`W6T`ڷߦ!2̨y0zr5RhK4hK4hK4hK4h?u'OdIENDB`pybik-3.0/data/ui/thumbnails/Brick-9x2x3.png0000644000175000017500000001233213137372604020776 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+IDATx\kTU>t/0W."" *WF.h¸Rј1 1QgMhF@GtR&Tq'uwk7?jf陞1[p}=y}Ne_>7"("(4J %@C Ph(4J %@C Ph(4J %@C Ph(4J %@C Ph(4J %/>;Dr<"u]3E@"'Nmk;y(t|3x~y<ҿV%9F{A/eX tA( BpΫ,m[ùXc?ϷI9^ ƻ .v ȐRP"懒w e_pb#`P!> H)+ A5HR4gJ3ovc?2 p#9_c20ΐ22*<(`劽xG|* H P Pz7| xcJijMaFܽ{WA[0sW_P_gu0/hIqdPUO}19L$wfJSHp+<+WCwX^ G>PKlKKh@Ui :A2G_ Y$畖c((is" >Y,Bד/@4$@6I4d2w<%] rSS̲Ҿ>;pJeڱPnED 5P+b{wPЅC!i.X dRMgr@0(#P_d25?ʽb:< o`3 ks0n>ag_CܐB!pQ*J<䚋Udz(Sa9_MYۯ ̋ W0[}"`4qf PIn@ Z; uñ4u߁d[/B\!èNw’P,ױDžm3ݽWQ?0gJx;y(j')c 7{ ՉfoA3A]( u}6aT'Ew;RݑͶ$n%2$Fgb%vy;1 *e~!#(t]iƿ |Mcd?cf1>6= v:ẻee}v80s. 3ע|s@ZK<͕@aubE %y<6=\ ?q/UjrHF|1W>/s!Ƴ/PEףm/Om&@|mdp#m\e;+& Wa%/Y}\, kp;ͣ_NAy@bp)ƸMAfE`b { ߅gXAdT?^&p 'è &ފ%E8& 9\e{aұ r?僿?uSƘ(A,}(82Y65bN\4W@}.|L /cza#HVm>Nd>~^uu+ 0@xe ѐ 4kϙ(gq!3E 0wŸXPIւ 3bQc~f7|WpBQkʸz.\;:dJQ9̴S"Ǭ*\.}i ?gV X/Dy ~گ 3#ӘMxL"gN1ebǐ0 ]ac__涃 x2uN`}p*Vs*(AP%=6L $#LD6S(}}sF_ UFax\n++9`96JM?2x>TIϐPqmT(+Q CemV^yf(eH+O??{s g5޿#P3) [v*(97y@%?i{zGP)ghg}YIm-ܖINu`*pUG~W%B,d)Ish.GF%Z1)b6== sq?)ES#)!TD|?|lg6@b{ \x,qnڳde&A~#`S(skށ!< V6\(N4${)&{d9ʭ;{|r 7Y7J5jt2c3@X 0&|t]XgoEgcg7#f<±KA~_ ~_?h-h{>rw y6aOohU^n[iiM8m2|I ^pA5EuP` RoBPYٜ͜)3_; ><'0{qkє&O?}0LxԒGFh.ucm/>4z්Zt_e%0%! Ն];ElBj2# W`<0A߼"*8\&+" >eR@:jv\, [똆; @00@K+)e10%4p.QiqAcD|PvI7u>[];r]/Pۿ%ޟk (hSc1?V] ;g¹M$K ~Z[-avɾAd?_~?&VTC\1͑ ]yrGR< G>u6aX`cNa#9x-gJWt##z-DQN-A+'yyFپ!nLS47?"]J|䫻:Y"~qGFTuXqԨ"NVj͟h.%?_peHJ>%C/N0ɓ@n>p2U<w{'U0)o 6!{cdu?m  MɞBP]DQq7&d73pb*6%e.jfb*i6&sF}΍q0Fpyq)'mozcw `e);yf^!{`E+rwqL_I؟+>./ C3)/r|%'1pjxZɔ,{Y. b_c~sBw:Gnia娖}J? Eܻ+% wL̡9pWwt=@SV{de4R K4S;S^EpR;[uNaHf I[}w-)*{*LwwIc!vu/E9y ؉ [\G-]P0IX[l]&?\z?~t'>,3^A(5w{9z:7w4v 3U<6%=StmLv%;Z΄RNñDaLF,Z/@C Ph(4J %@C Ph(4J %@C Ph(4J %@C Ph(4J %@C qfLU*SIENDB`pybik-3.0/data/ui/thumbnails/Brick-10x2x8.png0000644000175000017500000002166713137372622021066 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+#iIDATx]ixTU-qU a%EVY$,(4* v("{XqZŌ>=ns}=7T23 $=I=u~9Uޝ==m]Ӌ A@&6Mm4ihЦ M@&6Mm4ihЦ M@&6Mm4ihЦ M@&6Mm4. !*`]51U=K&g=W' od&wΜC+I[~ݼR//s4.CrR$ n߷ ۠ e)C'yaCZ0P s]D !l;Bԁ5UΠp5V?Jzz u 7Ȑq2޶ s׈%\-^@iڱu=P oz  ,bda8b6HrOsP P0f]NFc$C&@'wԮ@o%h6x|/z!;Iw]ĝx|# C_#20GfR\ube*o/m>s]KY}uC =t,@ + )fC&MǵCyzѼJdP SY@2_EWgg2@Y2ë Z5JO8g3)%AD2qdټ[ :"A WX2}`0 d , qeC}ځ - _T>"Ȱc:V⡑psc#H(iދl&@yƼ\" #@"R!pmT>"U]%՘#o2Uʥ &>mD W܈ 30c6 ExdpI$()AaF& (CWvYVT WUS93u!;$ӿgz,c+c<#d@v&6A1>D@  p?cXcVrOKDfƂ E>TuJ k\p$!D_9̑"q5jjո=>&Eܧa1{d1Oϒ@R i_KШ"cU0:^)u=8qcH/$> 2\Rc9F9VLǘI>Hz}besz V,K#fՒ., 2ܔxHϢg%Ձa`b~2MJ5~, $ET+7*ATwiҳf$&U!/ƱSy?˳%}Ѷrd4e ]l`'O٫B\K TK9ۙE> 4bh)gUH!BJAtxv(ަ@ ?`/6vp߻v=6;n>ZU|WH;k)uX0Wal>I\&ߥz>3dOjcXY }($igCz|}둸KD} q.k !R Ȱq=ưPDL\0. 678- ^mo-`3V6vH}(ա|txe]u>YZǰ"lSSIBV"lEco ALx\ϰE58 㶀}AU%S J2E%'7Z-%*Ccz57 )!ou킁[x{"R$z9y@ d> 2 X=-Mh`bA+ y&9ЇLW`.+6Uc C~ F`Ku v1^CB? pv.=CoJ fflt?PL9,WbZI Uy`,6t|^*K4hl $bV|5BӞF|s $"L}E8&WFc]$ӳg*ƓX8MWdkKAt4U`iT\KmnW܏y d .H@0"$#Tn0"B|}iZdůNk@7ƏMX~›' HpC^" fS $&{CU|.4D`Kí 7=xEv͖#ߐҳA73 7;ݵg0ySHeY'(}WTXHV$#jھsѣhF\A1WacuiOq#ep':yW/q:Nvr*d qQ:Tڨ*\!GGYjj.fQ;97qkMOk2{橃=״Z\+;O )l7:^{'ۨaHXgæLƷ3iqt6: I#V6 Z8pX5Q'=NHIYI4ǰA5CeQ7q"?ܗ=&W3<ɓ2KsNDaImpxX $I[%]J PRqHB7=/V^$=\lkcaQyrD\\=um~Py~Q37 ]AyM+ M "S5-8v3'GA"Hâ q:)Qvg. &z*Z%MUVawըr^ ˁOT=_C"XqAbQYF+ uK\qrn}+tȀWx,UssxΰI,!~]$0^q.C\VY xd,%!;!`lpf8zN9fM3RE`$|U#bw qc7Wt嵀2q˕2ˬ܊-Jog#YB.-Zm!S XWSF ac%B`UKUY6zÐQ*zA$%~}@V > a&Fq($s&GUd1uW_!J'Uu+V-u[D= Y exwܱ *˅dZ;T<UD^HsU;* C;?y"ϔ{R܅͚ X6^'`m۶$gDt BVYqQyC!+u⧙Rp=&Xo?+|GyyJe[U!dȀWsoZ՞n/<ԪTjNWIJrٹZ\ZE#1#uZq,drj < ZPC{"&xGoCؘ NęC+A96G1Dޥ6r䩞sF`E' ddHU=D 1ܔR9"3#>?-6ߑ,Y|>Noh!Rn=Gjpa7\w!+*9cI>[ŏm}2'MKo;i^2N[c^] ^ז. T s T0\z P"P9yR.ց:jdLO$y~CTO>(I27:gB_gB-<H G&-x=6D-?j O8qU #Hy7:[޹pGm& P(գ퍩ؤue)-=~b 25[>0=۹1W$<40sF'I 0sd+wDD/~Fן}hS c/ 4ِ`{Q3Qc7Z$b7e*I ~_bȉMHƇ15>+Y;ȐOG'ykb8GlXvl:6F7SW  0Kހ//? 8Xr'Aey9d!G@C`kH]qD%)HE-vv1 >2ɼ; R $ ȡvjj aKd`ֶ}N`N Bk؆/?g5U!qx{~&otѐ h@H}KfX~Z]kl(5C*cnU8ɣ܊L{b‡]R"*n/*İ^q _(wFeܿi[|+Zhzn UY{)F YZ+<:J /L+<q8I$@Li$y(Qjb}y:%=TxZb=A Sa)dⱶD1 -T~:Lt!rHz~~$[e[:ͱ'j' j 2G1`Q9U~k&dN%!zp \POڼyH(~=*se^1mdh &l (C&潳Pb=0WG48Ov^Ie}A2S|7K\OOR*2j &[ޞ.KA#iuBÀoԕ3 Ey2[xcL~1{:3@Y2`nTYH0߮<0ir<'7V7R%V#]_lC<\,_h/~q%0feU-dyhZL`C /02rT-i1s RT2bbnk{~bX}icQn~@%8װYB\l j|;?X8/L Hd'4_6]/`} TaFI IđITFP*T9"s>sxd( %vv@x 6ݼ0` gՐ*T$FO<<97v&,􈣵i2cw赦LIO5_/_ _63s YBڪB 7/; 6 TZX1oUy!_;%cj"V_i0v'TN~ȵ$ xHXDAXt|>woe}Ea1+6 7Ey_kæ (VYdb2cHUϰN8l#L4Y~|Y}$R 8[:'>"--l% XV6IcPs,hLCn ٪@0Qg4Y "@/u5*y\d5*s(({L,XI S+!f7yd2GgNcbD(uE\##]kqX\򿖒jקN7PI'|"*Wо>x.ZXTKVoʹ^ɴEn[~ߕ<@ȇ|$=4n]֐#b}g2&'HK3ߐ>U!eaK]mÃy1Xd%|~gMtk *D,σ$ Tᠨ7vx-B=q{Dt<,fmޯP}LG|`g!]7[>{TVLΑ$v%( C)^**Ga"4w*XNF檦 =oLG1[vKP`J}I4";# Ŀ*b`O\yg{/NwIx;vI{S$i$F$f",U=VښJJWz3?Ty3AS $>Exy|ϒ#+d)?ZKF݉RrVR/<0q4. ![s"8P l2ͳ:k*feۗ~ 캫z)u%c+>z#C@tx0# ;PjB+LVXܚ ]&P{ClJ%;*2R\XGRDv!6Y{7uw _wOU.*N}ЄTpi-$&J1{(/ { rӉd=PW!&XSe!Q('xUgBX`\9T,M^q뜠{.M4b/|a7R+< CFU-UdB \CUIx! HDLGȯ+ϑ n,󊷞H8F7uu,=jْ-mDdRnI-U h9v(٤dS{Ěy֧zo?*;YFXYIfL;8 4AB@Bd\8 |// Tm_}l~oܙ6; (%g+LL@P%Ay%$ YB,_6}m N 7{N]w) 8g,"5EMʿ@ϳ unD;kɧ M@&6Mm4ihEЦ M@&6Mm4ihЦ M@&6Mm4ih'l~IENDB`pybik-3.0/data/ui/thumbnails/Brick-6x5x6.png0000644000175000017500000003543313137372564021015 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+:IDATx}wUgI{Ν^(CUޑ; XP`M( 5`J411obxI|M>ܙ[ rιg={g=k};-7-7-----BD_w=]b`+K mu&^ qM}xӜ.DzU N ^ϹO8?խ;|POӍ53E7{fXpj.I'f; pИi%vǀwtyW3~yUա%.2Z+giа $h,sPs;pq;2fCCd )f+n[|>qњ^;Kwq"rؗH.YrCm NI.d\v~Az%i!d0~%]軙F:f'jSGi\@w;.v67~/.1SxǣJ4~ox}xg鵻țMaw;ƿvs7H)b,qa`w8p* ComdRedr8o=}ޡ.;|ڵCT'E=Kvgn3{)r2B2Ne=46QB`K}" bK C@Ӗ%LQYB(S%ß^?PG`i@^U◳HzS8k)^M= "h!||/k3eWx_Ҹ=x :&à;T.1Md9G"G3 G<_B3$1,| Pe_@P($jLC ~B@yQX]CP-b3MwwLzH Ư}*׋YnXJ_2@{C\9C?LǸ ^DFBHFYEe(((zXsN?%7_='d[\H)(.:t왫<ukW@yw. 33v~gSr P+# s8fXB0.fkQD#?sRFx;|| 5#5ym̾4Cx" -Btz㑊d"@&b(sAs#G!b:7i~7εë;x?7?݀۞ܶum,2D%;!L j% t l`0a;t4> /3A?C@)T/)P{9^Rpi^ nړ܁ZG7n+b6dt.y\Ob"Ę2GKg! Gt+ͼ^)f.Ey2%Kۯ ᾰ538^zBl*mn$vDs膗6~O4J7sbx9O?ob2D?GA .Uy-QC}%ϱ˖iMSt-Ho">-mfe2:yxP!GCYH`2N& wg7YMn>5g)*00df+5>}v2~֭ :G=L1J \5NS sAsxQ#g|BhjPN|ٝg1;01psl)_R>>R ?~y7)H!F$ͥc_`gZ`3d}) yrzoh'3b|2U_]S|ºWR5\/bEbu >\wo8|~XfL3oo3G\"0\hT%>vw.\ & ?{C. ߮ &n8!WLBˋ9 d. Mۣ+>;d cf>"0J.1X> {mƇؓG;$KZ0QTT$|Zs<b n⍍EB|sǪ )/iX*ܕ 8iY7ٵ\)\/x8~t@?3Yuyx+Smܢ4soƟ%[H5 +y{·bQ@®9Nj2Ǜu Wu#ET`@QA@(%Pe2Ytt^J})xŶto1je33Np-Xctq[/B M1qP1KgSh:WU*lr\3{qz0Pdof m@d)SZATޡ}%ib ?1S\o>XjG2ۣ6ҰnJP4*l3k z+PȩH Ét# 61p-ZauhT F8'2'v,r:X)yu`M1KSpBe,랑{T|ÌtGا3Ġ^ QC|X4/ЫK6d_rgQ+//iod)Ղ1v2>AqҐX1'5Q.rmIthsDf'_oG7 2zSk} eR tOa p0pREV3;=cATR@OD<Dx$OUmp]3@+^p[KQ>qҠ{MU㯠xMq 3A2 Yw:-ݜU=- IjvnA2 &~e60ԧU6Ҹ6G gp8@A nd1t-L_o]E&B$ Cܿ2LDZ?[ `bmogEg\S( U$:V5%k- ym|x*%uzo6!YՃBr4l`l#q|tu *ٙHMB/+aj"|M9Cqޗ}6y|& AϢ'Jȿks_3~t{_xAL(&ݦRZ"@#o O @?`!"IUz"O%o_q۪&<p8d `tP1{>Z˄12=P.U?h˜ƕ5Mys^M1PС5g`0D+{ sks9wlƟ}MA5EW'5?yJ{eXToψSw! .5ERSDfw!ex,BAn ۡq0<~%4S \D`+ R|Zk}U1=s4}lS1%Dެu8ՙ ؊3X x0GFkW@cܹ^1Ok/ߪYJ SdX)b8Ex)<¦_ck{DH} GEm%Mo(frI*$d…!)wZzlݚM=hCю@sv]p(7:-{#C*&ր.*x2QSfk=WE%~Hz'@@hl kcH]/%W QQ3 J_Yw8;mD-Imzx%Mz QJ#\6> o0yC{dzQXy8dիS)?$^,vs=s]oWf헆_7#ZpꕫbK Ki %PaXFWCvnRGSA|!=@@x8]mRe3>Dl Bx92DBBƐ2 0ޠq3jեdg 6cO&.J\1/JJ?z]t^*$Uc0M0El A>f&Bf}V997 Rg$ MqyM,$ySZBd:9%q7- !~'I?!>\V)Z! L oO~m|< j"pCBɡs)9:ܼ:.pX?r3~DU=)%{a* Z2W8`()J~{g}| Du}_J׳K}\݆RK~dACvrQI"C'pZ@ "8d`3xH'?pmRlѹ64On3>d҂%^u7 ޫyq̓JA^v3)j(GЅMS2oN׷9Jf}ɒ/)|r _Ys'pVNYlP)Ҡ GvcvZ523mƟWUǪ۔AD0ڕh kD d2U%8D>_Jjj(]CBv+mqpGD+S8y޼p E4^ACȬ!3ÕhHJ)#/00JYmŮreW35s6AqpVl,bfƈ@ %O^ASf|$[R>GDkooJP|+T;e47+Ż\UiX5w\w;CL5R.d 1ye/E=T&nZc|%688+5p&QªV{=b)7uߐҚ~1DbѾ* ~kG9.6}8!ݼrݡD<@B%ԣ6p:a|,!}>vLZTyXwz ppHsYf^-c}̓jB@t>dW0g'ѹ28&̲N$ yHͧ2$b]홌xlU 'escTP=s=>;Ns;8ŧ;Kέ@) 8@q)!p_n*byYE!@g`'jX{8#4cZo (V۶~_D) 9s[8+6Oe|4O I wObК. ]"j Z Md`ۛ^o'~920@k}ڰ#zֹ~sf0˦5[3 2}ǞI (KOr#zJ\6υOw]EP} §Q9A*a4g˸o<* -M9zDkJ!< !84l wV:@8j0qQ+s*ЇW<]4<`K#Z\AIl>+Vs\g}.w@"P? e0@.W)^ݘ{'pNBKӃ3i#f;T/Dt Z4UD`1> H~}c̾ X֥;7-ߦ=Dzm%0A ʠ;Lf澤)e\@T3 YRPrx?`x8'pN/sE)>ê# :mVg{?w^&[wl!O ~AQT蒠8/˭ 9)`V \:tT@6D#\)kf~v4&|݅*1mUy(?fdi ̜ƒS@C|{zڱ׺S|;->X 3py~?W  Bt7).00 |开h߼{<oreǻ~Q0N:f&gpLdO$[+)r8{s讔!@kb7Rd01)I_ E>(K{y6&@1~0DwxH";Jİ <_z(<ɺ[dVL`ɐQ Bj=]ڈT>n,1gE!H'#j'%Cd" sd52W et2^Fl"N^{CRB6>RGQG/)~C喡<&MUqbEn1?+u\ ]W>&sQh|S@_KǍ95qhwJIHިB a FQ`PYYɀ3 P.~|}A@܌H\X)vȆP^F.ΥcYc&$?ѺESf! nU^zĴXc2K>K`8F'%B1 r~07m?2ċĒ4D _B)gLCzq4Ki ȍ?v:f+n4ES9h 6pѩz adWT /fT0+5xSJ01Ƈ@7ƅ:b@O7pz! (~G(4}>QNmǚ~_'p^blpwPڮθa5.5t7/< 86KFX ~< ."c)XdS<@<:຺=}W&`}(|_p3MN6~#G|"-.8P IE4UiRIƋ$WlJqTe202;K b(YDɞ$)y$Zvas=nPgbnHEoS\3/*V%#oy0.AXsSXL-D =4vEޝyutfC#.!_,?kzL#S*31]s HQ`Hkv<70|1/ XN:p@4}!%M._WɺGi5zbg;D {WDILP\ttSHszʗ7 T8—T%\*K11sH㳮* rOA@z _Oy1`Q\lrG@K!YDcȘF_`2C`@`M{Ḙ8K^+ ky!( -`Ӛ~GsN|q)ИGVۃYeۥGX.=ͬVwaOK/4,5\,̡Tca @@{W0ϭhN9N+oSFxYֽv~r% MqPRa f1~1spv8| CRHo;m } v5p"[n-'|[CA =*řB'KXȭbzRԺ43$U;/o|z%6b='3{ՋnS5~`?zkW jY7|8Xw[u=L ]P 妐ixKF1,բ @iVAh\6nry|ȻPximׂtrr:j>s0qj!$wd%3FzŹ\lwXGAs[X4ǭL(hK^a~mɔXxy GY9}h򪙫Ӊ@sHД^=z4V>r NSﰤ`<ìBFg 53@TEQ?0|^&V>ΐ@gSѫw몽 Sr0s.n]hB>7nxm0ʢGy9}wxI $_K rrTr`9xJv w71z~V &%WYX." M}~(!mG&[BSV=_- :f2 o_ m'Éh8(kfу4[cZ T=1q_RS %˻cr Kl/k ѣ- N\N3|#(܁sʾ@C—k*u)"r."t^ 1B;8#a yRnƶpZZXh?K?uKkȮWDT,s+!x "S8@7n ǒ2Mt7rZb@TH\3sBI}HJ㱔밪5Sd7E8C%˾P.`㣏~cګfAdme(*"΄{!RnNE߃8[ {S-7J"5Uށ b_顐7ugb, DC`:ˏŲqea~-@)7pP'<&,];`s=5N%CC䛒[ bZ8CAZO8d|^6ntBT OqQX`c( qAƖW n"G"Vgf2{rR0w!PO.¬ھu296lߪ 3Y&?|2>GDoą0T״u;^~/ޱ#T?M.WH=ˌ[y@hfoV]q]0{{.F>pf  y@s}eo AZT@p_=+{bbg:VQD{GoZ&d"ZpAF5^)' '7N=@sUENpZ$hr0t_%gޥX ޫ$=~g(6'pxB|K Xu TV3qv![ . 4(ŌMe`*\M/s'2fTzn/>v4Ռa.;+hq5SZJ^! ,$]*Wu}= r02Vo((J= B+{k8BQn BG`jĈ;6`Wn4HM-Q-V 4l ׁN\ H:lmA=` Mv1i+~UɓS]e[wrnں:.J 6T_y˪cmP&h-!+jqUBf53 6E&#fޯCvG˿O^o5Y}:/ e Voyb}tQj`AHG|5ZC'3(MF| ֑vBxI/mN5 #O@4@^^b5`otR,1ģE ӽr whxUzv0e\U0&x82)҄R6 B;9h pkMZܢґY6^4r$,R5ٞ.-S^awCv%7}bV,QÞ?ھR8.xٟ^_P̯m]VwvElP]֕, ˆ$cdNvgyUPc`S1DaQ!wIGZӇWΎpW/?KZmbQ=K$O/0MպlIA4 w9@ HV4xC;V} 0.׶͞ v#ib x]6>?g 'G1٫\-U%[* \TIO SV$*W  i>4>.4]'cb_, Yx +I'l'0F@X(f@xWE_[7+5hل4&}qge& ;^+>7/rag9?zwU{* _q`³Fk bjQ)ggLH 9'Wl+liL2ǹ̺[iXx;6l4 t [l_Cd7qB|gK1#iOs0NGr0-;ϲJ͡.B$"]UxX"SɝiM%4*`M@S&IMQn!dBOV_R`pO[fPݾ%T5/>p_{U k$=Q߷6XA2.[T3 1w ϛCXl?(%S<US EG;wÉ'vQ5R:^!KB^"@1VCC㛏O!}<< o'}!o8d' ,A,Q*]e]/(J%pfQWkoD$u94.@+y9YҨw0C kY:K&{H^8[࢖|y~}8{(( P.Ij6 %eYc\p8DI-aޱ=Ş.C'^Ij|-0[42ΔF1%6bF99Iˆox1F9==}u%|A{qN{'ܻ{튘 Ps;j~$lmjv;D׏p+@JA7^2/|<Щ[KjUS=B71' OBqek=znPzUk1r=WXvJ)OٳS[IENDB`pybik-3.0/data/ui/thumbnails/Prism5-3x1.png0000644000175000017500000002363613137372666020662 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+'PIDATx}w|W0rY r$9 A16g-pcmFɈ$`=chgv^lfyUiuW ?ί[]uo:;*S[E?\`b,Xd" YE,`,Xd" YE,`,Xd" YE,`,-Qя4?4Sm[uy ;MSiт*x\>G4na} %Yx&%6sv5D)00PP.E\'3}H]=L2 RС |\?+7l ;hۊN0}iC?۵k?i&dr:E( dpt2,|n >((vJӃ" F OhXX ט>b` uܸch L~U[׼6!) ɧMX-,)|S`:k@Lx~(//eet84 Ob 0 $xƱ.߮n&C7v)ؘ%: E={?~Af`H0_700Q(|3\y&QE:o;\j|-D9 5'sD<ݳk333i4j(9r$3&L@ƍ#hذa4x`4hSHH`tnsRbb"RTTShh( N60ФT@6?CYNL/fdfz1I&k 7qk IR\A#\N\r'tAdBC2$Cm41:GdgjdQy^TGд"9t HkرXSL} aɓ'kù%%%4ǧsgϞh"~ `t:hP& 8  LhSdLspi_@i@Ŝ6}¿Zca6(A c:0 ;*$`~3}}h U3*d!4.…!h,UQE <| H  4iEDDzM:Uyh>}@fgg Hg"X0XxFU:"`5fOoxy*%^bd$'dҚ1< g= [ +phZFr2[6UM 򩨠 =Ŝ2!+L|^m"`ttŸk 18>D"AXx@SEJi|͸7,\&Z敕, 6CkdBg O w>\W} QZ+"bGn/g7pi\a: kBZ.#@@w܄ň(/Q/m|Gco.G&-Yt#~ﯱu6e}@[=V 27ZYPPR^^׏zEݻw,z%%%Q\\EGGh]k8VӬ3Q4bʳ)Z5֕F`s[z ^ea%Չc:̤:i&5&\Z:+ +pJuAr|/Czܝ{ i?~LLH"##)i~R<-JMZ+s[޿/2P҈b''' !/G %3fiڴio]; $bsssE.@z@t-,,-a`ԗ)AfN*bYNi@x jV`ݜ%eu ~a-`J/ɠf,"qO C "_0ܽ{ %CURZ2/@V.'[Fݙ`lJhMٔ<5i 4BjUm`&-F~.M*'+.|HWz*$ؒU[F b)?5E,P2,hi{PRX*X5C=>[<!Ke 7MՈ^\f8*Q I o{oP# AN@8 W%iVF6@/:Z& "A&ͻ]|9 5\T3\'R HQ {&o˕Bb{;N#~"'!׿3(>xC@SbU!D& j̭ņ]CnyFIi'$*9A%Cpw=} jG;:QѸ 7#$3!+^G]~O@1 5wh)OyDckcXfFyUUS &J<~_ ܈e6Q%ja @Ad`3`ȲPv"L/b놔2o!4?js 0qفu EG_Q#ns 7ۺj@ASߓx#a +y;P˲)E9g`Zͽo `-ГR ҄nڽ^[@psg1N9$1T\):@qv}0X#St  mB_k@yWx-zv%^Aǵm]0b4Ş6dmg Sti+\bsuqaR8@#˴xl Q݇]fH6JB SXRNmͿtq>Zٯ@q"s} ;Afσi9•{3æQi`V4Kp61a5<@c3 e9&چ(X  pś?h^i4N' :13i.ua^?&5ByxŪEcyQ]OXbͼ̃`d2Iwg3h uM{y4 0+L6\f|_`*:hц'7꺷](F!^3{;h=eh"Ub Z|7rO! @(`a`\KZLV~ IjN^[E}\::D͏ дf]ׯ&nQtNX$6סּIb6.] {,hf kB\8z5wOTa) 'x%㗙 /]|?+kO ɢs d }zӪ۟/]Pp޹mqMj65-I-BQ?e[H 'ױtZEdה}ބPu,Y^}:S?+|] ȞsAs!P;ܲM>5ijA=e jt@ 2@m_/W{p|hso7ӿ|aríC^. X0_KkE 3v9ʻ ⿱0nLOveSg3w]E7>Lie<={Y!6:?qC [|&FrlRvfR)4Į퓠\KzT DחSLz{W@xh7 dkU]DUɡ>P-vJY!!{=P^G` Pz mimb FYLx< Tj!z $OLKgiS4 G5P>%ԯAķ_K'W%OkQJ}6~u7V@֨#)}:0Ьdfbob!ev/>!܅slc+]Xd 1,2:k70~Ry? ;ʴMWFi;>0oƭ-0UjӓPS gNijw <лt;UXAp ck_ȴ4-F i࡭rv'B:'Lٲy{@[hckٕ8veGk1ĊH=ʴ߳S*#4AV 3 ~ xe]!,) 3Jaf-mYtAI5{X h(ݿOn3 ^s^T+)f QF}"lnw5qꆙ>=V|bo  FJ(%-|TV_, ݓ?GJf@ i1E r7/z`q$LXaՒlXj nK`A ~ a߂SL^ٔP}Z)~s#U>R $m̓;Fotx$=⢺/dZ:6}4,M|~KݚXYҪg=sv"jHe| AP>7Vaჾ6^lkOGk`P9%nqm9C*jZ Ч㉥֭ 9 s ?0 g#`p?dSIrG͚, H~:d=@o?6ǓDy(a0| @Ҏsg֬W>`BV7]g (1&~<;Fgk-f$2ePt^$Ac,~TƑ=&__7ӷY~dҞc7><~nެ%( H)PyLz -8#<=N E-,kv ҂ wlgpK+?8_]K5,|bH{n^5yu$m~aC!RE-Ə0H~oS1=ƕ cw{p ݚn|@uU3}P#I3>q%ŰjО97S90 H'7T Vo`Sgr veYbDw]# D .>)- />*$f6+}hvu&G럜\( V@:ujEqdww(W gQ8~YuÌ}{DI{LC:<2ͧ!-( YJ<{r,^\I>d9 oh@면}sOV@_@ʯhXڼ-|fcmBRR3 >b,Xd" YE,`,Xd" YEwjoC1IENDB`pybik-3.0/data/ui/thumbnails/Brick-9x3x5.png0000644000175000017500000001763613137372605021016 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+PIDATx]yTՕΟqWA#76*@ 4"Ȫ $nMDM Vqoť1 Ď8I~qK&'}1MSիW|;9-_3vY 30f`1c 30f`1c 30f`1c 30f&4; 0cJKt!8iC1; GW*.w)xw :sQNS:ﴝpwgYZ0 '㱎V? 5Оcp~%o㱷`/ฦ L~n[6X-G`+v8hdp`#=[ [Drq)=Os~U~7쾘!Iހ!8"iiI l#S/@O`(y%3liM, p~'@^q"M\R;0C:z818򍄨SW9-in(lf(t8~_| a˘QL='#sL C:f:L0 B0if`h^VZa|u'Xol# > !p|l[?{ς|>bY<%`‚SGDId2$ ߀kz3Ez (Vjy9qFڅ3lPtit^), [R 4x¢ [ępp)]/Xp0 7AĵݘYRTifh_g`_[E? z*׃$N{N) tOQ d!4r?ih̰I2W N0lΟ(EC86}ѭˣoGTu!򸰤K,8D4?Sd@E\80`9 +1ji/ִo?k#[D0\K8!Kv8ئv.զ{@Yu4_:É,^LPtr]_fxmGT3DۅbpT*FÉTq%l9OIb_8CE0 :M]c\H6;mʔrҗin}6 NN &cXh*r:)wJ ",8r(O'r^n~<8M#4GK)mynUށR}Cxdo|cfzTRtߣm,;|1!bkd4ܭ3`9Jd>8Ioۛ u:48DQZ~*L:T%`^OU$ _CV"HF󼦟ϳ`سm}?ѫ=fLmare[6-_20T?+E: lG:hW='+6 H; OcWi_ꚨC. *' 0<-ҹ$w K<7] X`@P\8|!G6nm^SK9q9y0:-G'Zlwjs22tIH5?DG"KӠ{5ԋsKrNG.0=zl@=!]tu7H0E`0;x +9d=nc6hmcImyQR;LcHqź|KiїP$;gfN*@"wq*H>J\C9""uΖi\ pΫB5S"uIA\3$0."m`5s—Qwޙds10 cћ9s,U"QC `?H[RN(Y(&༷z&a*F[:™: @^q+i43SwzΒZ-ɑ<N0<,#Mät*^;5P[9k-*2K, 0S;Od=ܯ@5Ѐ$'PG^u"a9(,;L ߛ5Zli\7'6shj:_r[{E&GC<i%郻5KlhْQ :W@GZ|%-V\*XG"X׳kGbQOŢqCz,.]%Ү-"';t+P+@Y|:=vs<%Ӂdke+ZE:9),1%$gbD:M&]^Y-MUP ȾZ)?*B/0ٲ%6͚ԋz@jM6=R9buV*:e@/x/}̀g}pcs@^ wAò;#8\;ܐQ(;swSDt.R !v O߆ܛ"qsP$6[@ͥP?jfT݂]aZh&XcG)[B3F".9bMD2Gp> u|1ٞuWF`b8}Mw*jW'FhypL%>MRA\Vz <$tQ=,8P<aFZ݋#~^HB؁&5W~=i$-z)Død>{ *lMb?/*iϸVgBg5`GO p*B8z +Muo"PY2 ~YO6;>85$0 Wba4Χ6a},+ YS6tBFy)~v_H7u.E_"Xiw1`EbYWԇď^(+=[2KA Q} X_vXƫ:zh8?vuE*yHG0Rh]'sҝ3EDdO%KiyӀMYzYЧd%Ond( wzkH鍣!o*$'İޖDQn7W)PP|2En 3A`[}ȹn!<*8y =ۭt'ߨFDO!dGt_R;sVՠt6J9U79@0ĹCbt>*wcLB!#PxAA;>R@.贞" CO%<9g"rKFzprER@#xʻRD|Lu/C?(t1t O/؍^(X)JKp^=|}#q:(h}-]9$sIJ9(>-w^-R&2V q| @jzlY21Pr|U$3$ 1" )Tt,ϒ:)"7{f *ڡy#8uOˬ$p: 1FxlѺ#O\{eXcޟub*9N֫qzKd[FׯJ(^p@<_)ԛIO2KPXϟr C8(AuN9RѼ>C3.A%s#1Ono:.n Ke?+\VXDv+LR# lXEYL@ _TApNH#[ֽ$SUp/)"ꯞyjZ1Z43 <$b@xj`wX8# ~F{_WaoLoɛ;J(T> C,J U)teb5k,g3 PZ],D \ܬGK3E}qш?l]>b 4~X,>znda_U+l}qH D*\gPG ,&N''i$i%˖{!~g<]y FN3n%JB"(* xP^UAn/,qP\KD~w`x\y˦L~)[#up XOBxS#g=EbRx 䂈ܭ>Vu ]x_ [9()'s-s~Dܻ!*Z DQ[|RqM=JA^|!P2h{F67fMt N- 9ӝ*(?@uم~@ 4S2,ӥH+);P!vEK,$$[ۿG䗈1`'E8_D/fּin"@ C >`:6Uhcq< Q8-Yv5F[GL>6. VUSmk"|l %+H).@v_.A*Gw5W z;zgTf%>)E1Œ;O3N7D1ĥ@ ù2I6` :!Tr¥j)qO6yHF Ac*$pw A+.a2(S->Tsڨ}?S6o7Geom˵;X[͍9Ӡh'Mt`R"!MݬDR < dY+ GE<'.+2N^%xXTL qg;ڞ@sl2^Ǝ' xKumCm;0AE ?os T{jIe ޞR骈ʾo޲d۱ZjnscHG*НXg˘ʟb/V="5qb@G;(8Yd_!Ll!U"G$ܐ}#s-gwߟ#cavK/z0ѸMM8: @0.~@(*E#&3WCsǻ d0T7mlaV"gsn!fb?`W$xluoٻK> ;RN ٷwm$Y5ݳF}I LxϐV~gSzb3 L.K|ڟK޳)S>qWr}~}H~`$ɒuySVa-gKڊŏvc ;75̓Vh O_+c=RsŃ޷1=|o< 28UzNa{Y㬾6f5N:,Yc 30f`1c 30f`1c 30f`qj B~$IENDB`pybik-3.0/data/ui/thumbnails/Brick-9x6x7.png0000644000175000017500000003246313137372613021015 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+4IDATx}wUg9;eHGa@" ccױ!vDQPG"I[k_Sެo=ks̝sD =wϹ{={g=ksn"d],#  ;Ȏ,#  ;Ȏ,#  ;Ȏ,# DT[cYC~PFuI}^F/9b|]n>q /pA7deW ؐażǙ6N6"Mcb;J!4(0 #la 㱊2 oP wnk/]]qQ=_Lg5HfͣlHdg21&9N(,0B x 9T|}m~w6٦! ޱӀ cv<6u0>7EÔ0(rҸny d=;w:gSNlxÑXý&yy7Vr?!MֺB: l$8#.~σ CƵ<\A^%~\>ŸD9.1z ] 4. |=VV9;qs3ÎF射Cl`7x_%}0n:,怗O^&09+ Lp <E55c|YE՜?[.n`3  ؉02=pl9Z#qWz. ^F¼2̉8_#`\߳6> 90RBTtc`&C>G3tnR!!U?=qlȷHv9j]zH [5E"b e(Ϻ.uta^ˆ>g0 R7#9円eЛȨE~|Xϙ>nq%D*N_x-!MkWu-viW-k1!+;۠R 6"v4@tHk 56@/?HD6*~Jg=L :ޯ_ R?W`&MK&s(8"F=q8|\zN7o޼Ճ0~ۂa񧚊mcGw5A.)j^\ѕ 9񗱁;] pXy|kOzOsw/ i$lR׎) k`BUl qy(b ԕyÕC̈́-Vd ^ٽ ^cۯ L&===ؙ E.%Dҙ:`F&0\ f7gG"8DIU" MT7l?vcgDM6S>^TN;AĵÇn%_pOj%yMk0 m+dZ|xx>/=n'fn~XH, C(RF=bLk19dCƑF uWOh@ܩzҹR,:kxD|g(`ʆk-^˰kc+xܓ$RxT^j[ P`8tU28qtm!0p%<p|_ő{T˛ kN)Dܙ3k=q>/v3m8#6KvjW< (N-^"5Xe6ny_x.DXJu]?fs˜ͱ`!PBOࢯөn'E=y'CEȀj _4Dk4ybӼAo/( /-ʫv(5BL?h 8QZWϴhB⼴v ;3;kW~Y )!Hel\rRml G?9)[6L!fRlBj2lG#a=Ӥ4ҽN-keYb:hN&{N1*~ԊB1p߷Ty?ᘌ #p.E sՒ1T{=-{ pxIT`m,ģ\ M#a2oJ.3ಋdjPB:]]=*p3,if76r/M:rk6kxma%9Dj7W2or͖AٯKfb7=ւ+GylPJ W\Jd_Czb`nOtvbsuV!>$-*(3x{2oWsf+oi7#ƗA]4"Pɞ\)% ];ns>@XT%FO~Ϻ4\"=.hPFkB~)zG#Vԩ̤(Fu zׯ`j=LـPP-kQ==#{ t+E\JZ 0%Ƽ,x~e\H)z>ءwn>M$g}Cu}3HtPGp|fw !ʻ=nffHי<3"SJߥcx:Oi!"TjOX`{&mRlv%"|3sf!nGH#f5HQCY0X&>QcV {v4?R:0 }C4pwgtWA$ z|N/ـLF"}%Ij$L0 `npm rVXjR"|UL[GN%e1h3ϕ&˦E *}nw\=\>{p&ոSt(;* gqP ;KL 4wX (W]8Xa|@s xU qJ M @"@BqW >a3>,d_ўM]TD)K+ya({-*LBzwG}ooͧUn5! `ⵣ1ή:09,1H,sStI`(8}T8D|]RR6'`BVm|D VXJ^SR<ɖh'ynKASZP ٿkSv26\r`{nqkD@ua-QhO{4u<=~9Sx4c0tg0M0 ¸EB|D }hCt%ato?ˑVwX+js q7p|=/0)4F̊}X 6 )DX!c[;yu/B]Z2K&T^_(g6J[Jl.L&Yo;y<>c>Ⱦ8k ^r~ _pO^OKQz6NCe_^fwOñߠPr󱋛@8穸.\N)!0 }h)mEJ51Hz|7n{WW)D+GK`.2 \LhF } kƣ60 L:SgVnc.obz6[`ylJ]\N5$#]j j lG2ȟQ{Oj iD]yi ;]oM!RǟwV^2α8X"dI$6Уpf I7MbRӄ |iԅϹem zZ;}x_/}ex]Q}J&-_G څk .3c2k&]wtU`i"V*x*]I@X"4ߟUp, s:a绚{żS!) 2ie "&a>|~CX46= (6-2[6>v'dc_Q.~N @1RtkP"3t/ut{ڪstp_)\Ï}Tg l@hC X~յ^ 7 :Ô>_1^.9 o IX<{h~@V<7vPt 7APA2]=EWW{1]š^!0B)b2%2gcyRqYRnL]yt0͙E3[kn\# tKL1ĽL%FL"0@$:1)e]<ĭ:|v؈R!2tj1g$aCy,&2:[I(C@seZ5+$Kk.)c L:¤5UBgФ0ώ |Lm95SA4ӫj1b㎫,AFps1)8P1B;W`:Ā,ƒxVQ ?%l<P분I |`E6PG (p=O)/{xukW3y M~R!sea&m;AzzhXQ}9ސKzBeCYٿPI)oLu "%F̆.R H1*k0"dtfJ?(}@j7C1~+ a33~ݙtJ!i9]>'Buk4jzwgNp򰤄y5wvGD"cs)4KU8^ WI>On(jh}S*{*6V5%DC^2C`yfp _O0T$t)FMZw'U.yF0ي+F`q4w$IEliji= ToQW&ŇsԮ|ξ'y1H๷/QPy8\l&aê*Z,_UzF>L#3Z!b b\Bѽ? p]~)?r}@:g7~>2C/#`",@E"Ӝ=Jp08\!餚Y^FZSdJɞaPNHSjFv}4HdTLd]BA}J"/ɘ7!{+XDΩ ]dEDPƁ|f9JH-%'Pp9jQJ[;C"'Rzn8f5Ys[:ˉɼx%l5'w=9d\U_+'~~˹>ouEN /#\8Lxc)pi ѻB!Ky|:; y3sz~[DrUTY&wi"8d!lPA@B0 T!=PQ3-΃5|a('@(`w;8<'`G/xnU5sA^y/*[Ʃg'#|" K&q!wo:SA;mS 5rP"(^bLj!ϴ.Rޅ X07ИN.S]ԽPt? aJ1y 4^` ]Ld;y*D],4nP/yy8P$+60b^jUxw[>qJ'%GH8>}pxQ׀ubvy. 䛫RK^!ߛ p_b`~3Չ@*+ApV65c@AW ^g)\"]:8pjwpn;?aqy#4waH%R9^CCBwKT0M7DMjU՞[3H@WޏTh HU CT:)RqįZdrv5;BXHyb"fZPl%I +IYxww27uL@~; h eNb9{ ߰$LؽM/F h<,_n|mqAb+cl\,!b}z`nEb%H<":?4S N& ွdJ 1Pa  sUJy+)]=zp, (G)'5x<0@4(_(A2`O Sustgw'{<)'ԥx>1w:+*@,icuX_D ~o&x/rP\(Cqj vQ -N:w~ &\!T2!{2 8\De&$)H"b8D`<ȁOK){IFFK8<4lU՟:wv1t}qP 5,@#?Syj;?I^AuAY8{T`*5Sl9Auz|AO} CPĜ:‰"c@_Th8%M"U7ꑝ˱g@rR Azwʑtב#\)*] m&i`RN(YZI+x*ԥK'QVG?zOCx]qÉ ݀wbR8&܀JRZ6Cʣ|U%ji9. /894+Z G8p,''O 7^^ )E!!F<}fhr]Ijb @ 1=B!}?XVRn)-C 5}D}i°-pݩ*pH 6NT8R-B, 4+ +m^l& ,c(F%3^&_ԋ@Sl[NHxmN[{%>/8BSϏԹ34G4}45_.V?SZj_k9'5"c r졳GAF Lp֘%TS~WG(')D [VFۘȁyT-d4 tqoo7CA3p1]t1 <FnI&ŪM\n+8ؒl:UP;Tx%#Dy]ÄAޞϘwc2 =tsQ9_Cb(LY5f_[$<,lT 0)i3d1zV"ᣏ3ĻpA=J#ٙj\ɧil^ἦPx~~OѮMRӾ~@D 屲6z {Txus5k9O E!tʔOv {&ZsWAB ҃#c.b9%u PZ>d\S;~fBǙƗ?.p$nӯIS^}B Dx]*ׂ4"@?엇A A }J B,Na;)GMD ] 0`vo*7n |w\U׮ҥCdoX nU[9wP"O^URGy9T%_~ RÀ%ꂡPR)$"1ADB@D8!H``lvWHcg-M/x:^0{m}ʼw\Sۖz~.1RI"ut5{t4آĪ4 JW3d'O'PPnY~bAawH}:VKSM^Zpi%z{G,4B#i`~XhZ`2~ p{Us6"Y!(lWAS)W WO%w&rX0|. ]C*= U8營'8a%a܊^]4,<n9u'g 801Nd oqPH*P7{n ~ g՟? xg,0 ߈w#XB6gpkC&6s8û/rW^xaѝ4G`iPe~dQ8 6=|bI8a pHYs+. IDATx]w|UU~>@ι%-'7{jAzB):f51q华eַss= Ac -Uw:~&M8|1Ʋ(oX5ȑZ J( |7y$vQ[6Ǜռy颭36|.Ps׳SY? ԰n#a ʯ*o!࣭'H;La)i _0qf2_h=8]ʖ]Gb y㤴iCIbiU 'ЎT4 Z,xC Xeddキk/!Ͱ .SHE?@P+ )2)+ucftbNg;}*> "⮦^D'VP $b($c id.n:]z;^xlBnŵWۙ~IHpAמKa}l/)+kr:\ $&U3 „? ߓgNZMaCՠ>T<6YAAc.\$$tSӗ1?kP:ubԎX0|C+hg},C"Fޯ#%@p,eegg3΅֗\8q ӗk BG[[Z=} R8{FD"mܾG]Nhډz EEE,77eeeqAO ^|<[1 FkNnm_I&Nvڔu,$['gϞ\;\ȘC p}H1[$w>8Ma!4j2",Oa-ZH cnZ;g 7 2$I$Cff&tND[&ps}‡W4ǐǫkh_}FyqrP ܸ Md\5ok+ qݻ~qbB,a isu05~+X&.xҖ6'EUr[H adH"G--ܘD*ѬI5/T!ZM:\ÙD |-'vg+o^>ց-udLFKl>W.Ix`*^\Ee_)fۮ*nn9ntwzUtq؄" 0gJn|x7אЁCN}J֭[7=nx!-賤*W;O0igㆊVˆ^H'1J߭6' 1'UhO$ܻF`8}Վ-?Mi \ד‰az躡'E`ݻ7kdm)Zq)ӆ%3崡3iPR:>6c(|l|]]a{ M`t8o2d0G ^\Oy"A -8Sh&}L27;Z' 7'6ZBfV$~N[~.M%SQuQذaX׮]4* A@IXq0 8\6ko8̓a,BEB02~?^+ }k=ɒ |, ?oKvh5,@"y fQj R}~ c#lI2.b-@gDȄnVIG {BF貵KaE~S[@^jiVgu](|[.ڔ>NOJ[rpZB^ ډ'{=OKql/b 0Q|'e`]AVH{{'Ě2~n* vͪO9I_.ṉs5 ?|,.VfjFQf.QZ~`sÄխ(H Z`ew:llԬ7nRMmu2.|r;ON4;Zie`*i^TעsA"(lKc]B@52B+U~(;O 7X+#r`-ۗUy`'SO:8'p-LHZ~"7$֥t-Xif)BmǯO/4Fh'eZ7HȞLZ>HiK ņ\Ľrٵf̋ wD+M?uᅛ@?"plgxJѷ Sm< 7`[VD2D`W@0"VԆF";,>=g¨ugK(Wk}UJ+ݰ 8FWNǓYZW @ < `AqȜ@`$NF0)\yK]짣}֙-= őIgmskr^2XJ3tr 0@KȪ`ᓏԘQx)m.[4˚/3I3dk`@1F %XuUtt @Z"e!0䋋)@`.:yY>^/}|{'o,(Zk 71pGx*M dF-%y%Rr𻗩쯈CXw lH_7S^M/β1\2DxszV@Jה'a/gHRsȮܽHI. jF40TUUq@ ,-J/%hDֵ@{ %]R}=>s3j͚֫1Ɛ)U 8@ ƂU~#p A1-D;PaС|Ȑy 8 EZ D& b\-2v,2FW  D;+}6@n`08Zͦ{"I6C(|$I^8A5S1{xp/ea xR;泽}X?Yo2O G*,Y-Km[<b2 Tf+Tt?p@hi7چ EBF2~~FXC#F#GH,kGJLw0 "/߀$F#6t La;tM/@#MTgn75xkE%Psk&d %^1k {jcx$X'_z$nn,a/;v^[ҜXT5( .RN" 6CIwtl<]An?,\ p%6Df1b}laK~ #%`+fdo*enԘvwe*вk/t! M$"#ZN*#øhe'j[o]\K O>WwqP8JK;g٠_A`(Vt&'`CX<4%wD>{FM]15a3x 1[wp"ů Օ 5e@p \#`X D+Tn2K  AJxS Mӏ\/X . |PƊT6n}E{xk=<@|f=!P2UqvE3%L`XMqʜ=C|"oHғ@eFy4 _&c {rkz |-LiP8`%p\.;:L*)`\*sB Y$z!SI&0LIc$| e=;g "bӻ1DTIgtcXKvT*`-!nX OBih$ D?&I 2o-؎8fN)' gq"<^`6v-!/>`q@+W[9HN-$RI'GGc|lnZc]y s '5NK5GUH'fzi&ˆD")Z #5t0!&ٓG|/-5ғ0 H }yo &ew9Eu09cyfVeVݽ1g J_/,Xvvglt)Q\q$0X*+. ckfl}rp⥻BS߸>mJ8!\S_i n<#6FQ*(֐L[GìDVtPфkc_A/-D||Y9{`DWBޙ e l%z wawe/"PE!/bӀe2'1X`=@iZ`Cf1 De!|Y,߰Qu.nbY,"J8Π=z4ڊVxyX: @4P2t>sUIa4ȕs{* Ca8HO"\v퐐f~VgmՕ"rz('ˡC3u3y2K8fC QHPpVH!Jh >'7_3w"3+Pkgީt] Y" M \oִ Sؑ̓#YB\Ýf FAV2U]{DiYQ.Y:*@ƪfqlF(,ha@ѓ̷({7|sP?8X72 0 (g_I|a13Q񰟡#kQ}"S@wleA-vGlj7&ivώ^Ý(N W* VDɐ8I&&\CmK{k&L1̝dBaO?}-v`_ң숧GSq0F$sMT-FXJZaڒi@^܌GX@$yt~҈ *$yĽI~ӻƚ_*1 ? ?//5Z7Ϙ<m-A}>41ub#'!7k*{PMDOF!`! @j ӈ/ _@BJn'hFW@a?SSXrE.1yuR>kgn(1\Q$/St<kBM#Q#6/ :EukD)Q, il1X*t03 C|$ c-h4~g {NЎ\S$p!}]h#ܓ"@ZnPMi[T 0f6&9\2#V!|a9U HbE`'{_#uFik,#L&/HCw(]9I@h"ִriBZRaa`&"qt@d \acK@@+Mh;fEOE>yVv>;LK^#+l@g"3 o}6{>/pt( е2g 8 u`ּ+TfDUD`uб5 @PI'to->M&.3gbf(w? ^Sj 6NK % 1ZaRH+ AGN " 7gUA 1gq& V>=GѲ6%"~OO"MO b8E& GtK"p H& | =z9 y6{6+r7lh?I}zVJhz5Je/Vb A i2DYF@7NNQ?U+D(,U24 5tr* @QY l~܈κ>֑D!,q0΍D @ 2pf%+m윱),kLHBTn% @@Anl+j %6'.Z cL- Yn=1tz|#ez9)D"uFd  i-d2T-:$LQk.j#c/MTaV of\ʙ2*\_Ƌ!A{w9~$W6ʠ4A5/ K8gVVҴCP! "52@VErѧE~Xf7)dENV RK'$8Z BmP*Mt$ o;`B)8,`(8f<#%ȽAy3Qۥf/ W' E0%:ʕQ,ѴB@bO3f 7"` /1'cLވ!h:@)!bV6,tGNyi{FwV4p0M ,|;pJ$xDz5ۨ3s:Aa!G -aeab,g2-Mͩ~bH~QQ2z3O($ajAŧ= \iFT8rwҫuIF 7hG؃W/ƽ]GZ~_.a=7^ {r#`ϝ9iI9U-K2(Kxyu 0N\9‹T&dMoM4ܧ?R{]ïiܗ4{pwl6?=9n^P0|b1{~Rҷ{#lˋ>|D*J(Q/5^1B#ǼiC(0*W 50 ('I*eCʉ7 9yr>sßdIJX`A?P1]'5.Td=a2:IS/q䙮| d\Kceq;0C5T! KC,Uj}T]ھ7|OYM+}ciT<6>$M՟4-= ptäFAM*0>;KEL mVѦ1Jg'ݤzRa L26bf;+BqCbAF8C ?u}lN`_@ظ4)09ޅOI5]$JNP9L#Ae HOc#C>M<טPy>=QPM"epYkkڼ6^%$տƁV ?Y p vQa4:VDk02(ԉ$4fbuK@ !ˆ2pN!M$4O ֧< n([;!w5~PA5' f@ۭS#H@$ ! @`glw@ Q$QToƘ$]aucV?NLUJfLҨ`=T5>]6*)wryP/XSzto9(dO7ZM l"uggFը&dU, {;vXRrs1;cM@^{VxŇ=B7PnVi $ <8C+46@P @## 1.C}7Qӟ߳-7'˚y54Pb@FZA7"Z= !N j1>hMdM<%ncvLȚ~7SA_zv?-t?{c4O aqQ/E$nbۄ@Zcp852vV) QNS洺OjEyW ;L<3 4:ރ(+~dY g0$%£l`: GڂKb(#eFL88 Gwf'ƎgnSX~@a=]`>S˯JY+w7VM c])Tk\1ݧ #u Z`ɜ@f::^0 .]a,"z\fq A!|,)H"˜66g0`USN GÜ)||=q簽noW  鍺U<-3v\ }\ "a<7`eSN[%ط(b];Ђ0FH`jɤSӃ0!w2xڋ_%LƇ6f4 %6 e!]w0ٛa3$YAEǕ?xqr|lsRr?%F4IENDB`pybik-3.0/data/ui/thumbnails/Tower-7x5.png0000644000175000017500000003501213137372535020575 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+9IDATx]wU~>BWu3=9E 1,fT:T$8U׸w}ϝݷn{Cd?O]|;eVW鎖a!"5??s 1ݪŸ?>Ix}yWo^[Ml1o[}sG?u P<:E, yzy-~$xi5NMkx Vw8(C'o5zmO ÝE qtou+)| xn-8 &]rJ[nީ x |E7tU s K`pg0#Tx]PHh28:b]Ai+(yG;SMD m!>'vу|E=,{Xnr}kv 6I.Vr2.R@ ^a!FR؉b;BP &޳J >h3u NBahyD$d t,ieL ZJ3wT:$h3?[Ҁn\ޔ0HC`eP1q9t]SspܿRaH&4VO(h<2]B% 40x!H׉b q7pʆ(c^H@Fx#^̹b:]lϣ/KOpx0`Y(@` `:3UN{?y0MJ-)!`!0 ɕ_@H׾ϒR"@P e4{y]<{Hah9{Oj2v/5;BEǁPx !NC2~D`TvfOuHs3 VJiDV yDO3:9DrS>|l4ً4b"zm#av}D^f,%K+EZEU c@ ']CZ(Kcd;:R@lFE\K@[zy*\@ޞrQvi&>Z gŇ8j@A3%wìKYzs S X [g4nYޝ)'0C7"0FMb TO.U "B׆ &=Ne`?ع&@?>O&lڣ(3qbxg~/ } x 2!j8}}5q6.RorH<Y bj.P``yryaz+Tfal) |j%'h 鷌R^{U+!XmLjt, oyeҝwߤbغ.O`9# sI/Њ%z"gUyzX:G+[ 6,'<fY„g$ ~ňA"8PN$B[i1)2λ3D8Bq3JFe:V:ş^/cz/2~lE*;;U Ĩ 2c\TJ%JTA@:@3Q W,2m>Wc @k ]Dj2]`oB0d7;uĀ|ы~BnP 4sD>)gwp"ѦDGD ++"/SiMxV~rA Y[D.h?̓x1Xg&  5*xWثy{# $TjyK,Drv n|;) S^.ﶘ~HP+@ ڸ:3)&rq~7Da/߿zYwW]F%nM1.j%O`rFc3HB.K\{`urFoF)T 9~ \~>\ܖxX+'sdfkx]uB&@㘞*݃@͆08,ݺЌ7^-}vYxv+)Z1ka 1NٿQ"N_έPA8AGD85B^eJ+ f~@v6.$Z;e|;l|E}nz(pwsWB-Of1 ֽ8<=nI 3 7Q.(I=p}dR@lXew9>Kǻ`ZuSP#B,Ĭď#F;c"mAM=6&fD7eJ2W ^ϩ8sWw y]d᪐ Op *S=An;ryx<۫>ƦQ^1@t1Xa?.% ]tt%A[% ~w8pHu5/!272…QDo2 RUlG\!a5ўP@"ƬmM)b2Tjas)'#п"oOs=pj @O1~oA2JRR1l5LX8#>ﺰL.b=[|~\>nWǙ.q@ "3%[]xb:->ȒBD:}2>)pCDHuQ>ƪfa*nb#9݃QwH {s(v5vI,=1g Ȁ+Xs]T,RO*ĝWE?.|@cp,Z{ :suY ?J1"Q QD_4O/`5tяTCN/9pf(p1xl$.'k^M,ɒ)KÍ.gY D )=^u\ sdc"ĴaIЊ8KT+n{d@|1 A/9"W(Nb2߇U#dEsSٻ56>}w>P9'WƟFa-~ ߹3ŠSmo 2"Kg% Q\"`0 =ɕmI#cAFSf9T˸YP5᪔FK"""|;vV9)L<½RK+^ݘ1XFaeo)rV"5nY 3%S O4Gl#)hG1(պ! !",!` {|v6Y;#TʆZS.ʽ}Rpڤ@P;.~iegѡB_!o_'ʹ ħBi?\ZL:8*M BMƛ!&Yd,AZ!o>F]l/D)R'@J4HS!gTޞ ()Dl Q. &n߯ϢT=Cm/faDRQ۠@kqS?~h *#l߱XW➫#&~__b5YA, 9+YL 0T,Z-nK^!$BS="xu9Pd{"uh00c;bөa(cPMn&0MSeh(G,GC<PhRe Wb ؾ!;.ѳ=|GQ(F)8]M[{*0 7"Υ5Un&CR t>trcpWA!b Աr20ec!`wZ0poDlBk|+_txKbvK‡(i~}*pP`sorv@].L_wGn5 <党N`[؀`CR$Ï8e#tI"-3 2M$̱M4'*=b9BbKH5ƒ_2n] )WD#ڻ[GlVұneU}Ec= 䍠1!{,"MQqadڄefAqfxHS92MEnΣX߃44:~rGv5ٕ4m o"+_X bil>ipdM;3xS^h BA՗dwKzo>FpKT\;?lH-uyиlZPLS/0ގVX]~KeϕkaD}qO#<%p= BĹ2D s%VdŖ@}38Sƽf2>'Ӆf(8i GJm&Zvi|ZȋjKw~O ͌YA3Juի( 2aӇcҀY qpƤ-ap.A$@Is gRFXqK`iFO([H7X6z.#dm ^|3~EH>9y>&BGP\G!q[cJ(+E=пnE?P_D3~y_+ gqXqKd;$tq"ґKN9 kJEL[f/`U$n_}2mc&Q0 LSZY G4]q"lpϓ!02f>kܓ(]T! :?5ӼmF<iK -J7<{_bi&k.M{2؆19Sj׾IK\b)f9Ι1+Q7Gq,)?MC!&*5+ TQo~ܾc%^g&e"uo?1yaf i_w͋B{D)~XvU„s{ tx@ W H >Mnj /w /t8) GLe*TEKjU94I@1u ,܇drɁuGlh. e@xiQ^WǬY*լ$YH-񵉀 d\qtK@ Fg+D9!yYCD&ܦrtb!<a|j)"HKTm@5~AHWlXܹXRX-|Z0pUuggz8RFȽ&6x-m(]>C7bZWz.+Śԍ(&?졂Uö.v@rQjX`p,  0ciE>%Cq8~ܐ5W*{Ol< jcN6I}N.:f8|.P*D _U#ȑz9%;y0[X8Bf1ۼWĈw C$1;k)"7l <]z|F4 F8%0x r#҇IƊ0ȉ ಩~a۷5VOZWs$߬c:ë ;%s>?B3]CBRU@)4u% zbyK oU0dk8SHSidi2<}I/4.eGKyLz+8RoP.:-b qGg 8rpc@AyzV3R(!7͚etA,?vc'`7w(@E x&LobiX\F}0KꍢXsDpSk~B6xzki!xV; f4=0<dV)L^Bg+BOdR2LxH= xa %`gj{' ß%ryGc?*3/q@p嬠ػi@xo^kӹI~3*]r e7 T6ZKrsp~Hx `M4R gߣx<)B˜3cJh-lmZ>8X&5{v/7/r٭R1D `hfPX*JY4!ɗgEZ_d~pIy&`37ZB5/za@4ڽ1<`v?gtDNqe9 >GA6g=X<T /׼JmKd bel'K.b,9c.1Mi1";{h$Ҕ4*Q)4=sp\<$OxtmQfdK۔8ŝWY_:9 SBuax‘Q}kKnۿ&>2`xxF;W,FY'ļm] #ÌYs'VE 8qW2@F:E8)~H4p^,KݾxB"uXtJP\=WOD#?ߓ9eGk º4lӲI0 "xrQ)ھ%d }R34m35Y4jO׍ \{H#VSJ%7( <^I:uʈV+}V^@b1{_(ewGM|P#qhp:v t+HԪc#3I*k؀"S8r4Z«]E*,l*[W).͡ 7{wݏ$+Bv~㞍O7 ᾿kί??/W:g=@` f|Z+<-Jf V 4+w )4 Q\˨αQEdZ% Ӭ$k^x" &|vo"wǽbo];c@#*f'A`wT2e8.Te`m=#iedp@`-4P.08wc*6FK7dΏ^C7e/^%M{ 'D/ 0MqeM)Z %ιu ܕCn !݋DŽl*nR4.P G.oU>\-M@RaX|y2@=e`V>fመ| ,lڻdHK/NI#[:!M qlj2Z@lz~=@;w;\'>Y7X嵩_t@2Mͨ+-]L_8zj%W(:Ftr~jP} E[Ǎ]?ّŇR ӯBAveWPjeN$(E7ZΌ0U:f9ޯ t.޾+fw`۷߻X Ol0<#C+qnDx*׃=\8y{G" (M 텼㖵qRCv}x ybcU?nЄ'YQ\av`G. r.ZN]A>;W/UT Xa\%~l{>Z`Pp\V l}jlV@\!j6rh( بm@yEH>So rB7E^?}3{4_]\bo=q F6e𕻛`n \Isğ瓍q V^l>ǰ BOx~]MɈLJd Y%2PM<پidӸQ!Oi7bXE-^_WaisHwhYH2cd  y:c%&dr89wXbŠ6dٗ|Ha pHYs+IDATx]itUUm7)#1@$A@p@QSbY8a9J-eʲZ)U]Wzu{N߹{$W=> "E00f`1c 30f`1c 30f`1c 30f`1ceJ^ƙ 7luW[F4ux-8]rNIaEj;R_o0t-t)8>ޞPyު2j݈qY`4//*j[v xCe\jڇc+n^ /ษ/Ùx.V>JzKm8Pvhj葍Bys@=>p&#`J>=nub);JbK3}6F^`8/nhYD.@P+|U-?`.u;X`x/.(1$*l}x6&.o }>5KmߑN;_*'vKC`(3RZ"s݈}Gٿv ]Ư*(? xTp9 `\O݄(?HXX|0!Mxz71wSoA0<UUوCCU\R~z#io S03ñ/GD6>pj_g̰ Na$CRH1`xjDg4ם`ο 1 U3+Pzkp`:0BD1sQ8gp~T`Bߧm0xM`xc G!~M' ]Ê [f⟉4:/<) vcI "gb ,}-5"(`{Ս;,F~p~=C8z?Y-^_ѵ|2{ՕwhGT!xx0yBL5in z\-#4@!+C{|<؟7^Dn߃]XwD4eg01ӑz:Q<>haZ8|Y;]K%,#:p=l0\D&YHڟXˁoj'gOw CsNH;=f5ۚs=Q98Z9^[s89V?u5 Hks~>_e _϶CPfd/256n) va٘c'KOwD[;"DlbweD_<-t&-o.UCY70ԳxcΓ~`s׭n5Q‡q{{ `0p g^9 ܟpߔ?-itŢrXb8b"QT*wqnꆙު`胹8fo>ky,S' 0,5mpd󎏄43TCHr\޻.#Oֵ.}t!; Oᄥj]MÂ3?3W Tε+t?1=n,RC/Bz1s\"8ߓP^JYK5vZuTMfXL0(cd fq7b(~%Hk&(~i40_é\װxt~?㓁T1fߣှA.6,NX-˽.U0d$Kk%M oǹؙ4j05G⟉-:{6k}ڟXM;Ծ|X<:j<4L,[hDjVyTq1=¶,ydW]™_I:qnhK1| )c mhX%2؇`?|}o{oף݂!`:S{!Şc  yG{,!16].OѤeqϬF,ߠ΋У .Tz]L|Az E{ VBTb#۟A>o[nʆ A!<4#,pt4^M ڇ%^k}椐3kt -w9CҭF}V&~^W N%6S"$d3h~f|R8jJ,eZ>L\ 8ϭxKngLhH_?,0ߓo!wk }.pu As\rQ:)Etܟs M~{˂Ss*҃fF-hq$qS teZ礵u1' F@H2em 7lTNsC5<xwllK$Qg`ĦοYK9.wW0\sFsl2ZkjJ' KQKT1Re&f *cHnɌM>ynf[jCߕ֖v*XAHoZVy+/'>#Ez`yU1QiDz7c0O`ίMFLe 9L5qo<4;QLy{C 6HNWRt lIyGL99?=ʰu $*:QIߜ ׳]6B6Ȅ="hꞎkL,\5J0nۓ] ~+GO8G!uo`()j0ǽl3 َIWrV)syS? .RN nYǏEv@[ϗyYNJ*ΉA+H~!"g!)[c@ y.A@@hfT{^ Tg04}Nm353e>_;&5vJ#ݨ2/͒QcfG)Hq6H;#AF.T h˥cȦ̛RR<Ðcz BE]lN.҈rC=B:b̰Sۿt"U H7}i0O7 `!槫XMPm|c翅  "}X6]( JTSrHON_w<}rΟ8m@Vg;p٘ =nUTZ,w/>P'GF=<9Rdn"s;lI8`lwP%^ 3EF[il@_ 5curԟsL;{l> od#=' 2ϧ<:cD^'|Ds-Tz] 2j)h|΅@!T3LE$;QpcΜ Z0E'Սwݵ^ܸaS||F4J;I9тmRnw$Z\oj^dަHEo*,:p&YΓIs1'g`pHyB#"KQpV~Bs,HW. +RᩍeƷRPv<^>۷Ftw~(a42sz?A6T܏*xoe XO& ,FOZv>".iFSeVZTduzm.U>J<DΔ[2+3Cm'CjOYwu+\RBm}C[Eu'"-[fygH?sB\=ShfAE#cD=S:e`Rt"3axp=d6/.5o8|',1ك,2]C2 SP9eh&|W8˶w:(D{?,f gEI?^~/O"ztɜ??NGnT|X¢>pyrV!!5Cs2G#罚HS@l̏\,DEsd8t9kH~^?käm="q-0S_.'@ ~ns)Ƕ2#?KΞ 6ܲu v@o0Դ1~UQQ_K'{q>+BuW"*asZAlI"ޓ|ʖ1 u)VSTqV#_/=o(x} K0PP13|D3fMn,x0񲣃ɟ0"[}US/#GԩBvqkg6+,ZZ5;TbQX$!@RN>.͡z gzs$2RH3 D/FϱvF5KߞL3꟠Z6`)Aoktk+syxex, p0-C(BMU[7̟7y EL| Mquiڑvאo/Z_F,_Z )b90 SnCc^NwHⶀr7";ٜk1)2Qh}1ge)?~ciu9P^^ѵfRFq5xϟn[VY[Xы ZR,OZ_pEvB:\Ye]v*ä:TB ĠK}q@n`_>t0Y "Yk<r .q)]A> 6_.ݸd tQ:nc@b(9X=3VBK΢ދ@K}G;viҟ0@uMw. ,ET|&$)Bcp$R$MT^C tf~aōzڐ"U5ا~fRDmY3#סLB=mbqwCSm̶w$Y/ Llá!8{wބ*ɫu$wWXndc,7gz{}C/tsx =;vIC<)6OӸaá$S5Ӓ:q(7^+͜B=0b,O=G&v(XLf"4,niSL-)%]Rէ́xk6e+tii8"WY mU. "'̷'p()U_>H q2 Йf1~M.n1nt~yGE?V sPJJWlU *6ty[XWZf#Bsfnl]F mc ^ء'`+)$W2=i5ߧ(M_CCH{!h7-39~OwS4z)+ |̾ 2fRxRrctpJ2#Wxͭ}܅uOsp"K~ In*4=ߥԿXG\יk}>)f4D5#`!l˺bKK#ph&ՏRr9ďfX0^;i94PZ<+>ݟ_'9n`mT0!?wآMVЋϢxc/iߊkPP8sLND_7?~O{.m 8K?) J -!IuN0 jxJ&NQ9&RyW2jYmucWZܟ@ѥэ<*!p[.ucb4{ n 2ޱ:B7ʁk:)- k3?Ve EV/?lq90֪$VX2` +ɆB*ӶY!T;VF44 |ϧ{ RT#Wncs) Ɲ]Jf0b{ ;9z_$oceT=rkLyt ,<w{XgYx5z"g)DZ@1R%~:D.ȿIgsWD&ZxEܟ@0ɭ +,YR/$a{ h_Țl`Jer}t ('/ /[J5鞏?VA{hg 3p>6O-{]yݫs@Y=p[2#V vѶ$ϣ|C_\#Ecd.ۃ,1«iI1R8Jə(%I cɻZ 30f`1c 30f`1c 30f`1cƾ?}KjIENDB`pybik-3.0/data/ui/thumbnails/Prism5-2x6.png0000644000175000017500000001344713137372666020665 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+IDATxiXg;o*kBBXB$]AET\XD**۪m*K֪uڱԮ3ݰNgu=9IB ShY8ly<1O=#B!@H $ B!@H $ B?C/Ps *άH"@>:>O»!=W'xUhRSg,\XT4 UPHߚгfj]Bl곅U; &VD?Wm?8osf}2=Acݾ=?w,:0%iCےhSmӦJvٞfw7##>"^rӆrLa4y*WͰlG:[f/L' V@[1JTtpc0+~2jן!dhhx2~ @2>3dSM x?;6?J0_ޗ:vzRPQc2B*~~~P( 00"""3hXN`z?r =WHlڄp{cƿvtx{{CNIX h'e iX*d\ydhTQQQ T=ZQVTDWG|||@ dLt>r IZ߻s#0xСIݽ3q;219|@^ [0ayל t\ )JРzACAb5hGl5a. dC2fO>i؂5M5<<< |`D Oez< T\QUj17{q5Sɛ|Qܡ ]Rq8P |?A0\ݘGt҆ \*rQw%ۊV._|M@_4>Aj Lz5*+0WsT^}7G q=\%hL.>G¤F}=;J_ iX5(D/Ehh߀'8l'_C^/p^ټ|ƕK{`D/f7Zd F'P`W;dѐ|! ?֘+5^gz$yzO@T4X" \S'aG xtyݺW2 CF\W{ >Vl1\.@_ f/%W(W e$᭗4S#de=š܄BId4pG^a&qZ0#Q˽xoO66U  r5|u)? 91T*hϾs9fUԆG\(4yXkkU2XX ߾noMзk{wK88h {wC_NafN6z6sY YJ  oֳeM̷; jh ϞoCSoN2f`Gn[Anm }b9gAii0zF@qx*@"`Qɹ34zVY)`2 pS#X~.|or ?ĵ*:iV`AM>qG1@_|hNFO% r8WT>)Gg(8~Ԝ6g8TP;4< REE )__*O.RdbwìWA5s5 cٖ0 b@'+.xjAw5+s/0Km=\ܧ{TX|<vGN];8o  ^sf417$4[/k -ɗDT \ys]<, i0 arw5l!HY"xʩI\`Fx.j/ARw=WxW*tVO Ę6٨=۾Jo]oʗpީKBt?t{[n ,?~4JvUA҂XG/5vhxP B082>;zX5_j~9y3k P/ .RjhY)J(@fmwLMa :⧌SA:; W74bB3!HƼrAV|Q1#GC`}.>mm ,O%q~xT E'PRG#aM/tp79pn{V\L!R//c <fAlɅN7F]͕%-P[Zpl`:|zIPt4rZ-O-aNд-`2Xw!|-M >9s'AAQzsIATen&Os jTZ`#ػ)54v,=u:h w|0A}&yuRv.0*;)=47%*fNeA'vdܷ:ƌtIⱰ{K ^ nVK;oÏQ ` v0+޹04+ЧFm6P7w^!|O|< kW޸!qkBIBRptc` |I"p`膪Fl (:uIO9d4ED3cȆ}&_8{rG[P`B rP=/mrCh6 κ~mҼe/ZFФQ YrRpr{0o9-F-4i&h<̫BBذ$Wo]>L}8kn}Vmқ=M@Ѥ44Yp0xi ՞BfƵxj'`puk"bc&:ȉ-3._d h?KM"&ghtL5De20b@7}R&ܴ`+pJ-ޅS$.bU<~|(u wat0b#N k 徾ioJ`%f!ݻ7l zwJ1* |P kvЭP(I:.V&sӭy4 ; /$ӏi|&xFbbZ*  7| @J-z+p7.Qr.ip[{q-rb9[7W5`_ Gݤ0OH;ŜvHv5RAz/]hfx+`(ex0Pc@DA /PW$b =Dl?ELp9LR ZC/VTV@5t(nPL9]Ӧ?&4}L:%L[u!P:tN9mϗo4 :- GebVq#)cC\9Y>i' S%s*ud,5h׏Өl8:~ R_t#}t_>18`@+ŌY*TcaLt; GC9 $_ίM 0lAq[.7)egA}{O^g' M8 Xt`dޡPvLt_xo :dࢺ1+NO-Ux1 a \$<@k> qE 5ǚp`> C$$twF8i3F]$d#2jL{MgS'P?/@ t[Y#S^~{A`x9oבC|gPIv!C1܉@!b@0 @}+s'E1xIƶ@rQ}ft/tgt@3P%sSAuX7" C> (K@rSÏXiT٧AЊ!G$cSo ǡ{ Z-P_k x`9 |fz/'Qݿ< wχ0rjl O z]5޵" )C?oޭ|i-uh|ҷW#z$zQ)CR|/6*/+#$s zG@-i@+oQJk;U+h n/$FN;N0dSrN`nys jn`Ht4$=PeWZ8h~g0)gӡQ@b89̙`t$^_F}4E;s+?IrXVXX28/DЪVH\ӷ>ӧY7,t] k dK3h}-n=d-{$#ܭ+'X%U {s&*O=5 94($\L#h64B@zζJL9_a[qG@|7iGL,C"e<)hP;$('zO) P w4Y+0#?\N 59}n<Жpx[ +,h 6mSrkA2oH^ &@뷄8n,~|F:*mb1jw{pCP1K@=V3O uWPXsCI7V՗1N.J]5c%Ia pHYs+4;IDATx}yxTUO辽I:{$*컀&C@Q]QD7PPQ\@#""ˌ:Egپ8Rz۹%hV!30~5ϱM'}<ߧcFm S30XC:Û`l6 xu mu}P cx.T\tёih1Suf `l 9c/ nvi_ $A=^lQ;L^b߼Fʆ>6_zgoʻ~с\N'ubPa0̈́<@gQ@z_xSuw,TxyuC/M#%"66}/vAWv0(>p=*]-g?N7/FkÞAer8/*,l(= x0 whL=:~0O!.!obP幖sVk+۲>Rkwh8x mwzm[,`(f8ߏwb=`v/4q{=Mg 4}72^$2 4:gpmS gR 5m;hW7w9daG^dY~(w.ÄU|{L.z_I|.U{2g 5>g?PY '?EI;p0EnF1{ŋrL݊Cxo|gy"sc 4C4+sfpgހ0ѕC8~}&SB=X=5߷ 'j ?;/8"N: U/dܟ,|K } l:DLLa{-]q;|dKxy84V ,^%Jy}Կ*{_ٯ~+335}q/Lgpbߤ -=AaOsظ烛ޗ﹆?EQ!y [ى9p]{vx {9TpBq5~MEyba ǣy-dax7SU&*TOJ@Ws兼kL ɳy' a 2U:LS<=Kh5 'ktwfYKl=J8|ޙ͍ rJ v3-#Lbw^ &'ة]:b|RM`x'{ H=G[/pa/&Hd*qUMgrυeJJ 70ց1{;rLsq ~, a/EsO@ب{?~}Si V·)7=ºGpB Niuo+0)2сFBC:4rC@*Ag:!0+yV> U {(ƁbwOܠ}=/lV3$j'^nixXm ,bY.?W{~AQ`!zA8J&>hjβW=dtYġ {PB@UFI%/ݗBkvb'S,Ih h *;k` `NlNۨ>v..w n~s'z Pse 嚳 ,m`A2qэ||n*PG/Ɖ> rݺLve!(訁/P_tP7gvةV!fNF T+]| L^dO|'~.e0tb qd0Վiw% LvDk0M Etvy )Y3 e_I;>Y*y} <6 cNҺ;3_ e2`@m.ae[{t*]!!9p2 `$tpݶ2L7/ >xW.>JMPR*my| HQ㽭iO]sMx(/zY xS[„ {ܧҝ~23/`OƟ-é~:|COV396Ci1A@cV Gg(DKvyM4v{\j+KghCyC%P1S]seeTrč#oK=\jR.v^)EgƯa6Ӹ_}sEi`=bq?RA2jヿ៳}))^Ri]0ߧbȠB|}twiD]@d꛹Ի$o84Ǹ!wh eZZTWTvbRݿEFAi tN a߽s]E+ g1[Vrj1Q&rJc$Z@g Xvy^&|oQ̰5AOS3a2}2I_ixg!wzR=,2UƷ|"|ti0Pv}RDD =%}6@>сjW󞩍pǝ`W^߰$(geTYlPiNƆ:zA}vod0}Rk'U@Cש:~)-6Nd3=;R)`CzʆYo) XvR q*8J06PA숆@YkP IJP~PѳЎb߿S,ѯ#жUGSϰ3H^!/.Cڌ;"Bz(jc!ϒ]0yxa֩? 8wmLs3ۮc{w1^џaz1xA.FCF鷲 ^fF}cJw8{&&ADKB3K~ZFSF±g )G}ǖYdP`\]xթn+K ;y0+4ϴp&sG\M04tx>aģ֒&#B 21kJ'ܗ΢iv~M]`M}6մFZ = ]?f~n,H5t_vXTux|ͺ2s2;B|^&yu΍p(Wb1I i/^ ]f4,6l/9}lR cP򇝶(ʎRؕg `qf/Vı`xL`k3 3A'{usy9QC9CnEHppkISH @vA}+DW(ԽJD̉kew ~k}ELFH[iiC..Z<bf 0/»u0vU aTaldc>"_ԩĠgesks8c޳N˗ j ٻ:Tc&u4wvN@x!FCDxpT7̋^}!@cbcL338\|ƿ[^zp2Y`!n֞lVMV iQb˞a&zn-@v| IiYt>,@>Eݝo;f=3Dو.uLU/pEUW;xVv'MZ]Up`B֓IjM2 y{SZɄ0*vGk2[[]=@=j9ߩR(ׅe}1 t,~VNUe;B |X޿Um&}Y@Q` R1<c*e;M7i0u§t74xWlcNع P0(,sI*C_,}ϨXd}؝U⩜_ݏK>yi ].6z]5^xxt62< FJ.T< U,pqG}Ғ}jJ2~5+f:UCzk>ljӍ]k90TB٦8tRm˺s( ?rszuqА.2`>{6_ח]4߾]LGzjU@*X ]jQnJ{0猖Hx)K)Vl%a녻bi<7Q `߃]mo%T?hYk@0FgJǸdf@RUi `l>Q3( `ě2yےYܹ*D+c_mCO \sy86ӣa oϨF2tUݝl <*mie 9]b5$D08<5?@*:g3+q/?*W9'`;%2KJG'-1?ҖQ 8[Ybr >9bT,TaI~q]a* P%qڔgfůKi4 YQÑ}OHq*3ҍ ?N 0l r/?XT-1>pI5d8l9Ťu$Z55_v؈ngAZxW |ִm ]/T0˚ WQ(_BB ~vix( `CтfȂb8-SihP7y _\ye[2e+Nd׭#̻/Y#=t -䥯?-c«QEA3ҏnp蠿pF @t}׷;nz̶TPZ]=Qa +NSipV1 F;72_{, %GyT<- wxGW Ӵn $p..;1"y?=6,rc 7}~^_(>N`_CGW?qRҧ#ܜ0KOh4I @@p~]qfff >/+$BC+Nfi)wNPΞMs̖]m+Do( uѵf߽U$) ߲!Bgvu?(?.;2*VЩ*PL*z؝FkQSMCx'Ҳ<2lr D8YRUg"?9O!sJ?\ɳfaV!q4;oڰ]Rit%!pY>Sd!G¥ N1}ӇG.jB nD|S7Sd/7qw:FRT g(ySE /Oj{K=l`9<4I @j>PPJ+)`8СH/0@71о.ttC.U@[R~遘 3Oێ"%<Ϟpb~l$:l *kIN'|;)I!le4fR EUd{q:徂 P̋EZ\d!!!Աop4q72 &15*qUwNpX=ڿQk op㒀(\oʦ訖 T z?! /hZLac+=\9t f%4Ui +/`pa ie`-Jw1KToOv9KV0|V\S`c##>d ڤnpX9;@Ʊoim}LpXg *1Ckyj5id B3_Ч҅I޼lbeZ!F*q1jX$ЄMh3?lvDk2$}?ܖ/͟y= ?( >/nZwvo*u*C!,՚y[ /" HZ@GPɻ@9ߋ&$.>P(.ӂ8|(gcز̞dsy*?a>*.e.Z@kc<}R\@磟wADx䦈颡R@+7Gv:v!{Ia-r4LU<ܯg;ͪL3--$̞Frs.+@kP;6d@6:xCRt9 ccjei=WgxZ8{3Rt]X$ab׃y?#t~_9GK]zPmT@9sճV$SHsQD 0(:v!NeY`r9t)ee *|R_(~ں`lIq"&}W- R&{P <'Жa쓮߿q4p.1 U6 f*n]t (f6 (vp H3hiZ ix4s~H5u2Xpy~2M(Qia\i2?ڿ{%zGLK_9'_WI.16N$=e|m >䛆'nL&Da)ٮz4Oj !||@6aNp/ x…b\nKJ0ڦX/EL! RnqFMG9ёSAȋO \T#p,'CWB$b+'puhe,cs}êG6ʞ(g`\UE!} `~ڕtNo6ǥՋ#]~T:x7rI|L/>|3N%?>XP&IH!(n_Wh6LљE&Q𑿮ɥ)I)Gp BqxHSQulti FBE20aĎF\>܌^Z>' X^^h3wѐZ^`Pd?:X0reT{ X?5pY?9p⨩ Sa T I9yDXЭ\! JƮT R@A7+po+F{$ N8mɧ";앸4|Qm4(RB+ذg40%F[z%S!JD]UswvHYy .:C`+k1W0( ))'VNe=)a26zѼgT;ѵi=ڽ6]#x7-3ŁIRi-@&5^DܪoCJhi"B-h!~'4+=O09+DUdak%c7_3z+arW#'|Ͳ/2<'-ig@趕!zcېcmj̫i 9KN.;zL1O'`۔zSBT`SUҏRIT06 A [ ;.M"Rpo@k3B <6,8eva䒙>P9 ?1iʊ-k:'$T c:r.=rŜӶM**YRI/Lt`*XK泎XXX>< LʢY66;=JwWU'1^k9ϗ>zpFuZh J*~1[ !1~8 rVYA,l:,`3F VH+^DºRW.:yɆƃw='>̟t@_, ?+ Dx]| Ġ2fP䑢g gh0E0?_UMD6Xt}] 7<"!p! p~pnX:|q'; i%AibA\0{?|zN-ؚϮY7%ЈZi B+YR@vP;h87eU+T=aخ{ ̇WW^\\@Df3JH{u0;T^d*e_(>dzR-7o^U٫[\Q'@rE: yTy SIC Wꠜ]蚹|Ƒ&Ab1=>]C' PxMHRB! 7;?H*.TZaMN0O=Ir<{(T7?$T<#ngIjEh&R?mx>Nqgd 8MM>k#@d EęeoqɪC9}eM2ҝDJYP4D!q*;\+|L Z/x   9s* gGRn߳yUdQriԩbPj I[W!XS:li^M fi47i19̝19AïX@r UT=֪ݵB8:dA~!`R%fŕL얹}Cr {UwaG; TCmeMO*ӵs|4YUO'M ZrciBJVn>ڃنhq+D#\Bf:3~8Ջ:L=no5 *<0[Y`kꉡa3/H[$'1/guwܨ<5(>9Pז5y?y%] 73}ˣhhyǥ{ׯ;YcЭ-B5w1H<qqIs&= k뭏A*mƟQx{ظ@#H#"іU'(! 7rȍr# 7rȍr-BD%)IENDB`pybik-3.0/data/ui/thumbnails/Cube-2.png0000644000175000017500000002227313137372517020076 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+$mIDATxyյs tU/tֳ/ þɾ >*l&EEKD"]ThG dA2h$/1їw~VWwWwWwW LOOu=w=n|ބ g8c.1ƺu U4G!{v>K_֊ q@,(_^sÎ:!g[/`Mg{A-OXןuF`r#4>9l<%%Em0ltl޶m]ԅ@<nF  B~CcCr-svy*FiXhTG! Mp|4K~3 lA9CH~RW4ԣit~AXy|AaE3MLvݫ&Tz<RͬOndr Qfj\w H0ڲI' 8&IVxA@zALfe7n]X#ZjϧwHtnShXHfɬK,Zet~׮]Y}^wwt6,J5)tMH:8MGQ_L(%Qt`SףC-*{=K[p>u>VE3M+R9 [t1zFE6{(Eq~9}q*m4RtL5Ӷna!p7J6"JѠS?;hJ _9ja@SwATs bCR<wF]je*DQQs\J?7n8ҩ(ܾg5]%kW*Kbr*ݛIFt+Rm1yE[,u0dhTFAC>F3]'t:Э[7VWWǪYaa!V7 }c/ެҮgPF/3 5GK->H[D#j_7U4+K p>"C^X=TCznhu Шq4O|fA2_Ĕt#^o&}a;XG8D$d {f={d?44 a!GDkT_Bo2V#Z\6- %voQ~/̜n*E9o߾O>| Z#K~F|1܀`f!q]njՌL=\tErQ*N4 V\d9U}S!uEݴ5Eʧda|p"AGv aYoW:qlyZ@sYzDFq Ox Ç3giBj +bDp)5e2@ cf)E8!m%C%giAf(0!T<CAAAn(=DJG}.u[ر_qNF?]}`<׊aر|@w!^J5*Q=eeT[S!m%O͈RN!璘t~aT2 DF0~x!u8@i͗ `J{#OWEwO:֩FmݬR7DP(M1O F![8 (I#"L87PЮSZ¡ɦ-ϲ|]DCU6iA=7 avf; '%j $&M hDk;87=DQ(?TEݗ$ R1 ,">ztR3|]ㆡ49?܎2 MdC a 9/knԅ=DQjBtyʨ·}mh@ՋZ:H֎$\<~>O;Z8rr|@FQS`6m*^rt?P|'JIa-Ѵ ]h9-B9ŚlTڌ3-D#`@Y_b"b@7h2'K:uS֤(*)iΣhBB DQ­t#Ku;iw9_/@n(E*腦&6o<~Y(>UاVlM!Zr/sP Cbz(--@RfQw97_٬a|T^be"n|_Mb?v{h7}a{yæ@Ͼg UV#3G$O*@pȀݮ: a`-&GDRiM%svX%bF?Z).{ZO.,q<3efA0\,בD Hu9MZ]_O8?|O{z#p_\}o0>P[@kyeHZR/΀pȁ&|O(9L#d&aԋ/9f|NvY}Uo5# l,VXbj+- 0\fI _peh 9;~ {]<M<"b,#AUlDQ歯U>cx\e) iZ)@LCzAΕ"L(@D΋׹݅I0@< ^ yslqQ K?RwebpU@/saSJXQ CR78^CEq>ʼ/ nԜ2 & jkI/,1E kpXNE@EN#wB.eS{o*vM)p׎ R ආH" `w06v~uG;MV{!ݼ]~מ,2l e%w p`{aL(f: @Y󤐅)Э  *`@ŧxHfa@}bU%q}~ea8&  >ZzFr/Iq pRIq<VKzQ+z!"j h@ `@2<H0 ؕxtu}D'Ul`/%;9' :_ojb)}Ā "Y+p-̦I@uhJ*#DA3Ơ=kF6F&t_pG3,MtO@Ȼy;*UV]z ֶ緭3 I3Q pP@V#|9` @[f5`օDIG6`v!G92Q m>ImN@~T[UxbOL|rݚ2jl5HC8Q4EB°\ I/x吅)=/۽}@ T~¦ _s$ Xߙ\U1P 3wEuOj1<Ý7_-gϴ"9P{ a+lHO.Y]OG <=À $ mlrBkc97iZD!y?|X ~5=_8aiS Y2FaMmmkR@ qE)X Nk@°zRG%|v, )b`*ۇX_ke_ :.{|x@ [}{OcBKM?)~Р@x8_ "]+4Dj#@@{<rU#OB8_DZ|du NFV(/p(D6 p1 1RΡr^H` HBb~?ZX-!J/xnkuR5|5<^hoW>ݭXZzN`>\#g%Q f BФKqH)Sz9"ߑm2o,,~)]oOWn[aߡ}62ArYi@QA^XRz1*NV.L2P:y?Krq62Y"0ȐL h.?P!^&9$ Ĕ!Ѐ"[^,:bZ&SAEF?9"hSu~VW*IpC /> 篈@z =":ꤸB0|WP4"`Y))%SL)joo_<.E<}I:`Ԁ`C̣bƎ?g>b& Еr(`>H$C&N fI j}y7x+Xe ƕZק*#J @ qS*n9{y{aR_'R+P_W%_a<*)p8  7@z!P@ȩBU\Ib}>y\Ir]ىE!B%?3!  Q(«암.,=XU{-{x[űQ>Wٸ)m, N^&)GAN?I $+΢tZW!*kI~]yCkez2f];vbyZVĂ xZkċ694 mj {(W&7ʒU%PiT#xY)aյ~<7P-1{hWSݠ佨j%c.lőc+w·-iR{} ?Sw^,f.UJ=,u*?soTYĒ5߭H zycPܴ;m YڟE!w#"^?Bьz ^OZ<9nc3!HPIT٧^"a[ң-#|rH%DBEB . ` UIU/@'%1_3/XEZG.2w*ىvK;J寒B 9`kعС Z ;e#pMMہ yCHhoq "z_!Z2p5g$pt IܠhKEdn$`@&$E]U8D2uZL\WKXYi 乽aKIRIE!FNʑAX+Q<O@: 8p#R`Zs"/e?b7?e 9Va%; <*&P>P,r F_A+\7=&CcUM?T = ޫJbtU\l/`>*>%PnTS4b#']@b`Q7XzIiݙle.Pr>jQ嗺& uUƞ}T(=- x*yXlAш( >*SD:3Dt"1~MYԻΟٓr1%'&ߝdޖzO@ D# <?!S8,X Q8tM)!N<VjU1VtGq>[G]!O;X\= I=6w筐A SV-N BYlZX,>RUK}}<5X,cͻ I פ'@q1"0=@?vY)0͊]`2KEptg.G, >cao?iy< Ho)߷ПЈ%@& ^pc;xP`#eEj/0 罭VnF7ԟ57''c!Hnr/TX-hdPS !0mN9d؂9M3:Sjm#@>Пc"`:Px21rI|I8j ۹ y1: %IBSLR7yBe|C_U=Ԙ. , N23X]B1c]?Y|oۂQ{eѕwlMOO(Ϣ+zuG?l%ǵ!53@Y޲Ap#>xEԺ}'sP@{ c mؔ.'@MVjz QR2VƓsBPr |#Q!d 0Vgc_]3H#hC`LcCw3! 'n d ȏ .DDjO)j)5x-|69ĵPnz,TxF\3!"C8цS޴2ާ t! ꍝ #X(:DLZVZjgO8J4@* G&%u<3H4H!F {ЯuhN` #S$rz:ﯜd_X{l˾ټ.?iBlxwQQ -Zcst.D8ydn+7Q`!PP7rjP П ]p~  `2+ȼM(iemhD3+j _SyI6Qkl.2'{<^C; muOQvB,]Ai؎E.T4"[@y|@T.c^̅Eb۸_qs|K6(ҽE]t. F5a֬Y<:@;iG`7Ǽ| ) MԂ|B!N8^SE,h v/OGTb.g1׾yǣ2|Sa̠{_Jq4XzNA"jnYk6__7&Uw^25 ɚQ7d+q0\INؼmۺܞvhxx/j=/G\$+c'~ug$/ Ƒ1&#0K Jb5z(!9U6θ8:a A1־CS6AJ [׵D_Q ${[X.NYIT H0%aã!Ol'1|é3 ⧐Dg)oX?+u$'+QT+TXl^qM%]#ϲ#gႱVp2v[(ڂFG U<#g%q<  fA߫ׯʚПơZPJ~Tl)-Q ?+.+w=(IJ뮤K!owYy\) C[!]IJ @KQm1B%aYN 8_Ðd&B:''@=2 k-j2A!ϟ)e۟Fǎf,C$;,YDʙNݧ{2{C @Da3C2^668@6fw?ӝ$bǑ3';/`Gq‚1 q"`ܐ+"X+M%~ y5)B-.YxsBxa pHYs+'IDATx}yՕEf_dwDVi6%b[ Zl@hٗщ`1|Lɗ1{0@7q URus}|Ƶ;I`MEkXEkXEkXEkXEkXEkXEkXEkXEkXEkXEkXEB |朂܆ͮCk-AI[-Wpxv"=UFPx~w?h߄p;ۋIEX(ۄf+q3vb~upłt:E%&8X_t>@% A3o\y-+GC~G  ^p8Ϸe@)<ūfݦ pG 8@%^E㍗A<) W cry,u:$r>1̞!q~lx0LOqc'[v7n?z&"+ ~WOu -|>q#Cw 9f9p5V"/T|'LOwߊTiU~) ~_ pb;v {z Dd*"[z'ao`g`{y+bEM}#5/ B| Z% %nĿqm 5=&hcy0] oUwV`M? 椓 T7xxD IA W p|!,5}:uE D?C 1=A!W;feYĀoۅ,@bLI{1L`s{5apgMd o1)BE!0Qa ]'NzJ(¸G(A8fDĕҼdVܞnu<&n`0Ppt ~GO%/LE H!~k'o]uL|6yĬE$ BOZ=iz fDe 0g_]d"࿺zU4ApxX.Ar;'Ԝ; psI&d"1dP{?2U8!\;dQ5iM*MpZD>uDeO?f4_;&z[r(G9˃ tݑ@q>q\ -$ab dh=f m2T$ zrD"$dı9^N)j 7uMu|EoD\$!87;TvNLL*oa LV b׎%2@ !3,?s!T?V6Yl<Х4Of J 0<邷gTT(Ncx\ɞ|"իkS4D6aDNn"7yXݖk*aŇLY[%`׋8y iYj|tŎV]g>\B&Z<Injx>b"`sv\ӷG#Ӎs1Xxӵ,D vB&bΛqF0$K+d2!:!L0^8a` 1aao E!&ъq|.N1wO۟-p ܓGmn<6+L SiY@ᄾv&'__d >3CO|'MڨW av'p2 zW~$&;Tf͞\\6!C$SjI/|G &uvw۴LJ)h4eXrJ>*⍷*prgxfha~=Ad^TGc8=,(@00[!GaF \0#R1_|+Ob4B|cd:UL,a˥?b:9@X.s\_F=4F`r¸;\k^grӻo>42x>}Gťmy*sE-I516L(2DdZ#=(ݩ"işWr5 BCߨlά ] @*1.Al `ҒA?5BY\sb'VGހ -xF@viOq(E9 k/X.ɖ h5 eǠAs? !XW H#LpjS):<~B?{7O _ğ?+kYW^tqݞyDnpVӲ5 h~AdKp9Oa^Jӂsia - 6G'4<-8@Hfm٘h[±du&:3Dw\kA qa'c_` Ddf4>s_D 0sOQ(@dGY7Y *BUe:ȜQ4˯MiG=c˺PxQ/tO)۳[zZs@0̩8)SiJS5kyl˵̄f#$.~s%>|;W?|\,*{"#g/ٲp0FdTxnJtɸ˔j+V hKշ1Ys1x*' 4ݧk3&xRV7 *>M1l7ꡱssd@&1Vn.m'!S pX8y%?.=;:kGUh8T(FCl,U @C6,GFQt=ę'pCto.8t=)@Ku),MBE-F^a{jMӻZ\HbLul mRe CAPw)sߞ.s_>/& J@5^AW۞K™c< ]@"R/#M@B}w"X߿Uf)M}v~X*{4'L^w.Z,G:fW<%tA ..9alQQ!GYq6&}s٦U5 *u"_F\u3A^w`IӚN颒k\]8ܺ&X,>Ro4&@e=jGl;:M y u琪_ }%+E_ICAlrϗJĹO,{e&pOb{Z?AcD+nH]eum3,xjaƄ~Gw?ԃ .E6STO?M&jAUd*Xw 0bQ/ ~ Q')~y0y0SuB eb#bJ׆˶9#|y TM7#@>{&\h7D~ @G1~xvi#3q NrNyq\x_sǛq]w/0م{K8 \ӫSDv~* ^.Yk,ރb?D"eQ O&FOO_V`|b8j{ UJ+x3~zc1"0 )3cD Ulv+԰c}Nv.yϙ}'iuhP[$S$=k]]-'ksdܿI_)7jE#w WUPv9i:]L@W&Zw]z~:Wd5I Dq^oP~GZ2ȅ)?t0`iJKw_\k~C*C8wS/~',~sP =2ON%ѯKt.OO/"\XYgpZSHc6bLW+^!60JBY;}|*.)=۞Z/P5X_[q]Z#~H@2pw(BsxcovO]O"JjE;V4,"Bn!aRS+7eaỒ :Udץ[eɦT BJdZ6x y%qQſ~u>+rξ'k\g]9ĩ`gg9d.Ou۔LNo?MۍJ+ WPjyN >[\k^g 1q]86 |}.7~ 7 C] n!b BNnG/@\'.T.ɵh!#s+K4-]g7]uu+#RPM-`Ph␱ޝ:S,u-V ISdQY|x#hwCyܲL gV]<8J:38$up=> :KKBO?)B7ZzR5DUՕuʺ'5\%hwY_-V(R 1Vjl  𴻀l˩1l6ګohx&"E~&OGd\H~?DXT.֮@Mt\@AY:]LR u+(.CSp& =pi}Gx0+NCg zvrBPVPx(IyrZ[uH>BN,zHV~&!AB)÷rspcG'3B ݽ%~gʺ(pbB dlD5Vze@Y*/4{>\H0!3߉@õi0(@=# z #hO2EU>W>ޓ/~O\}Z֪)FƑڔJDv Io%4\/DBHlkziM4vWjųӒhʷ٢vʖr>)Tޕu:bּ !2. x+P`~H ^^L;WH"l>[rdiW #0!|^g.k)[i2<$*p_?첦|Xb^檚 ,j#Vl5b{tSz > 3M)Hpe L8ςW!q}9r_?/s&y[=#%_[_]支dLuծ6Lt @SeeV'DiT>\U 0'^G1uK؁ +ql[ˤ|W/>{ve`clOa1a)X7 /1! +<$( Ꞑzc+Uv7WW. ϰKmU%kT uțFCL&H:L#y_ }wdHkZ]Ӛc=# GBpi RKf&5WAbE/<~Ky~^C#II5%] JYE2 j%4#BLqN>q۷H[)UA3@&jpm%g .CSLNV.eT:-ˇ7V]U #+e 9`j.dixC8Ա$BfIX~ýI*\E^bڗ/k;7 kswUYGr$٦ڭS$Zff - .=y. / NǦDpd#\';d7跉_)JU vck:f rqkf˜Q'2A*fQ"(w?3roRx!%:W*ЊRkMw:p5R(&^ۅ/+C^Ip.6yG= Z$~>?W=c+!Ccၿ}|=y~tuTj}t$4rʥiLI^6hd]nTnW,,Xٺ&{RQΧR w౫CQ㲟T_)spM #5,hT )%f)] auWw+<][%c`% XX"XѦVY+6#<7: $-×vE 6W%DLKΘ)'=Qs%~? fUq,MPxSÕ-\ڕ^W,\ڎd+;X@^Ú$XEkXEkXEkXEkXEkXEk\G4$HIENDB`pybik-3.0/data/ui/thumbnails/Brick-7x2x3.png0000644000175000017500000001333313137372565021004 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+IDATxyt\}g1=y3,YMe6c;-#lcܢ5$$b0!0. aܞЄP&%MN{hB;hPK9#y{w}]Ek!(CP(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S|I#0%y :3.юp׏mS0'$XGYSHێ  u}kWy:ClyǻT&uc6G \f-ƥ3 u Ěf}$=q<|~1^oK C>l~)58L2 Jl;,Q Iv#‡o'x B!L4} w:;[ ?b?ޗTn4}~ 5JGBaMV3T_SǕg\2/,N{X(t9Iu!H!&%|l4ȼPc;w-"Ӈk5FTv1v'yg Ck&/7L01 HT! ~.̟sh#䈔 ,B DqaRtR] Dž+WEpA^{ϙנXuu}y]uEq<U]4%1\`O>u.NxH6G),m |d:) ,B}1o{08HNpg# oYC< =\|^\,jv5{ tJ{rB"g00>O4" õ<73΄30:SAَz>f!͡Pv:d&j)>B[E7Ӫ& 81:{hE_|Ox9Ic]ف|^5k<;{+~$b>"9+B#ݓW(f?ߨLuv&xlg ?s .R|*11/3ˠ+4r^ 7$cA[eؙ7[!C\Frr%A0!@E& T y4&şKC Z>?jPhAU:9jdF =,\-Z)A>)ǻ6!JI\IlX)Ǭ|>鶗Ŏ٬3Ǯ D%Q!^1>ptO.V44%@n5ȷD'^PiPU9pT*ҏI!<4.[T ^T{O+Yg3 A ZKh0QVOV Ayvwo(/61@&f/I Ȭք G㙻,Xׄ[ *xA3) А%/=gZ!Baq|};s=BP0H~.gqM^hd?Aa ~t;[PÂ:4"ktr]!03 ߱)" ɤ.1@5"0v{5@LOi$ a>b}!<#!` U6՝+L7 ӝ-='XMF>vCX6ur\^!H%?٭[+/⧗fK4'[ ^Ţ }Xp s4 + up8LSV>u<-\m"qRvM>xZqݷ8 /6+Dhd6E<1٥ KH..J|L^W)hڬ5F8-baoIhP&=b!}?pڙ֊μUI]N_|TIC"fP5se3_虣 @'d()7pIY" sł%e>1%3<H y<4"7 X"=F( <1mLRNN YDM I&V:u>:k(f.;Gд$5Y_Vb/ @W[фPu%,ny?V ځT"10A ج67f?ȥe5C5UDREWw@{WӬ0l9B*Tb`<θ)`EIgKrVnXmV{ |'! r-gPHs,TË=r1 Ce)6$&R5dhކfP&[˾~=tuJ#? x$sOjF:\nz"Vg ~IQw$!y ^Cԕ fmkM0:ne\V a]80d͠@ MV H16qx2KHAY&pr\Ş*T}qyI?KS' zA!{=3sOJ>dY &K8, ޳QnOdvC/RQ %{O00KpH?9T`8G $k߻+@1>{L%gWp}{>ms>C"0r]¥cRX.-MX* 1>'"T zRkxFQd< |ҘhD$1! L2_X9Iy XA |A:M`/w]Uwƿ}J]hSs1t7kt{bV9b@tYX#̉`jdHIoAog BD@Pɮ4%rCf-W% f5L A|o"9M.)Gf-)3 _&wdIN]ƫNFc &9tv=_4AvLRO2msS1sn<,_-@#Dn!Y-ؠ%)TpߘCؗt퐹IB q ]Tph1Fá G>ǖunZŅ:H4WY vϰ-SQ!J˃ѨyÀf8)~㟑/$4u[;bolvUCu +ҽ¡;[65%;cK 98opE}"^Q^[@H8/>J 앚=jtQ+p^2U<?UF:56# į7"}Ζ\ 96`IlZfCP[7"Ԥ'H$q"BI Z"8g@ z#0"~Z ͽ/enToп@?Q_;g\rKSZ/n9`h$\a%{qER$պi{ 8W,Fq^a 8\(Pջ~7wt_apwwilA/#i~PAx_:C}-4'l fn^ =l -4j`$(Bb0C!0U‚@@✨+@@@";bAy>F~9Uh;N~zo{>!v$ PU@Lz)}`8h-UG rN$M&(2 H7Z9WDZ}]\"$خښam+ֳvkfuL-:إ_RY圠Js`b'?WѲN}I_Z`nACs+LYӔ@)J Dpˬ}+՞F=ը2!H.\,u'(ͱgzB“A:yE u-8~I`dIfj 2IF5EZ&Ce!GT vk?]U3W)1)!HƾIHz;xb."0e1 \[ o1ĸ\!:}T_ɒyň+psp%W@2(Us1kC? '{ IԮ_1NݝeXA+ҙ|פ+%bd˭ V5G@?Uez T)끿RYT!%c1u@?}iWm33GФ@HS`gVk,"z Ʉ\/ \'oPp칆sM ,^a;ۣ.ނ c&ؐ:Z=D70J]ǏpDl8WDcؼڔ-Ͻ{Dib0]sTw0wmS2f{mwp9r zQlǟTV^ĹSeꖞ+FIs>X}.H ۟ v@?€bYkn-? <':s6N2"mXcϜOp6ZvL-r`P%͎W}h}tJF)S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(ldIENDB`pybik-3.0/data/ui/thumbnails/Prism3Complex-2x3.png0000644000175000017500000001677513137372656022216 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+IDATx]wxz{'t^P@^!)A \Б&]$$B MH;=5AMv|ff9zTA%**TQ JUT@PE%**TQ JUT@PE%@ ˜+~u35|l` &{M>5mBR LBD_0΄݂I=0[FryAWo!3+d:ELҘ?2z&,sz:&< ܆m#۲jlbQF,&iL1wWO!>pn~1ߟ :ٿD7x  y+ΓkQ{ޞ<<= O]Oȵ*&Ɍ\2`/odts&f3٠^Nmbj@LHf tRPLa$D #<}y3qob`p)Y2 |Nlg6IrJ_| ?d3v$M10a3;J3ߜ`8'aG6KWÇq20 ߇e Ւ@#R`+Mv 6M3g`˗/STTL* =l.i wh߈O~̧F8Й׼pl$c] & if )ӧO)..N&V) d+L</Bh& Jkر#ѕ 9F&@r/ٴ'[`/TZ*M#w +m Z2tyv{Œ-K? u`f6M˗ԯ_?~Ak׮M 6A K}5nMPM)֭[si߾=uܙCz@>ӭ[7^m۶ԪU+飏>ǭ_>? 7CBBq@4ooo 777N4gD y2)g}=,'e|٣Òm 0%T*RhYl- d@>>>6̾^lOݜ35wsV,҇cfJTreԮ];jײ%oޜ3ϙtԉk׮ԥK۷/ݛ u-A!3_&4޾k1cHrImlGK>f$L%"Z\=$}#sc`f-޽{ 55k.Zh/#7_x ?f_=7;XZ߹ խ>+X(<(((0K#GpϟO9=(b¹3UG# <QOm3BECa&?,N>/ĉsD1+bŊs_` q V൯Fx(z%"BQd-xѣf (!.1c_f@f䡿#ZqV0>~w|.B&6,IN.4G7n:|p=1e` # xѺ~z62(V]zq"}>l "@pT G:u%Oi} B9p@0//E >d͜ҋX6qQhQ8_6Lޟ=#1%>̼nZ3Oshw=!ՎZTC ƪW~:.СCϟ?n\`PRjUL!~ 3#j:Rt#{Ԟ`N_S!*,Z,\+V$h?1ΩS " Jaڟ4AWQa]g-\kc{Ж &,Ѵz/EhJ+p&v>Xy=?QQF ßo޼Y/gB$8ٕ~o3obcy ?o&. _9W6!?2)I%kIX`3~nٲ%EGG`ܸqL9r8m4ߑ)R8IR?3zv%JL7<⽌t?o֮M˦%-8Uٓ,h\ )Dad1Nuݻw˯=~z £ `s;k]oyk:!jKFrn(SuWt*|˗k%veGN LCLC?G2H/@hQXX(/&L$4h ~g0֭[3;ȡP 1P ~eD3^[3ψJ^q=ef/HЁ_5#wphnݺ%֭+l|);wȟA*! bCDJ!f<cر& % 󰦽ᬭ HWC̃ŏs23'?/Q4{ >#3TFS֦@ʈ`^Qv8 Px\G,0 x%*3z^ 4Nh^F‡+8+cU(%yr9Q?%͏| g^6>/& OE߀0(s __K]kK* q`9O<)+sX5+֫gdggbo>nn8 Ϲ{MMV~%GhJ* }OY\x_|Q:0BO."AoN_xRJxz9FtUJ >?$=eJ\ylEA0 #\H;8 6>IO.E.nr)Je *r$sݽ{W !0pQSq1i!o4AḍLUשD^R6r.(A ǃŅoh/8~3!o4!w~jD*7z j^1/*HNN.@֛ {s\ iI.8 >BZHhϞ=VS6mJQ PoEd o>~,Ţ %}:Mn_XaiY#b5kAZf-Zѽ{wyF"ѣGf p9'ROy |'ٍCe?qljQs J3 wpdd$n;vBGܽ+LCe !p|Wpw,jUI#g M[Ѵ)m,r<dgs[fr+W^`fΛ7(Ȕ3I Ǣ W{tJ#|-,,R*qF% AO $bDžZj k0"J(LC1o pleaZ}X}ںФ8O'IӇI/y@ ΕRo۴Q#|ɣ D|4s(0 X%x*?pV$' J/EҔ!^;eNL£!QDd6flܲE 5k 3PY ]i nH٪^Y5Ou~⼸?0{S6c´'p"3D%)ٕ*ы>+WEPpz C8*!pDbS|77zrYW ==0DHՂlJR!rIh\+8U@N^@!D @vQc"zr&(DӧRjUց?%}~57ɢ 1NZ#FPk lq$@I3gA #̘M;cש*hϵC!?8UK#rL^U |@xRB)C2 (&E?a3ܑ ܼ8NX#T%QCCP `> dK"'oٲer'Md6 LCj]e'y._W$3C% uYJ cϲV9h0 'q1 >N`{r 3f)GAAAJ[TjϫQ `! o2ɖt `Cn:u|5xzq5ʨӇ9iZ_fn ζq=.em`mKU `))$u>PDVZRq [șK M{JuR=X=3y(Yoq$h'P``E! ^`aQ،#wףdgrk9 >Ds:VKȄ)S40'+b'O{ (b v xm1lpO9VB"z$hN87l>/5[ع"f? %R?;=ϏⅢZ7%,O1aI<*ױRSo`ʔ)<^{s!@SՁh7oϮR9Cel/dٳgOtG0IdHoÃ9cxkws6, B "hyn[@ƌ #"2~L G{~G59(rwy=y~1ptyILєeAСCfA-N yH7wp2-I.aTozȲiA%MY5x@AAa >>^CJ, $Msì* D܀UN㋑_"8hU=6CѤII T!v/yҽӧJKH6UVH']vc118y{&&(#me GV$D)K#G)hݺD^E)3ƖmGM[9@VvzJ$-V\6GH^e711:;ƛ'QJrMHöh7k7i7c@=. ! c4pR P#=]7 zjCimT@10ـSC([&`@m!'g^wюQ GnE/5u:C"6E&NI޽{u|/4Q4g{ѣ@v-E$3*ڄ@!u^MۊG%**TQ JUT@PE%**TbkVIENDB`pybik-3.0/data/ui/thumbnails/Prism3-1x5.png0000644000175000017500000000547113137372651020651 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+ IDATxyPg#5.DzrGm38N[fbZQ4U41fCG(8J8T"(܂Oϻd/䏾;W} HH H H H H H H H H H H H H#.{v͡/*QFp8L+^D x4܁W^xm~0|VCӭP 8m!.@]PP0+V77I PsQX}}}i/\ "xa, xժ_vy)A$[[[!22d2[¶zj tJHY7@;N x>~x///TDhoo>;D+,x[Heff`޼yc ̊ucGJ˾f#Hhhh˗k.&ALL  .Bnr}&|hGl/^E1 N߰^*v8}R*U. 8F+ S#Ibkk׮D#uq'䫼<!@ńBCj[RqZ!۷sXh ӧI =+KCpݻh~-X~w <9<߿ h+| ъkIy$px…{'K ERl~[:- !._ƍ86m[aKg/Ye 7/ԙvX`F:TϟJ`yEP{̜yoz*7ndjQ;OR͘G'OZ0446 ,B?8x-\RzN7J C>aBFRY@B{U@\$ PaVQ\Gni&vW' gMͧIUWillPń ߯MMMe>E'@_6b3I^ibjZZZزe]+1 +;^x( V6=#`\;rx?v@$= )x\g]AZZ3>3 )ц @ſ85&`۶mXVVf!2!(C'>o7f5@3⤰gϞ̙3!**2^|!=#$=$T*Ӎg $Jlǎc\si/ #8 dR;i?|qso@ 9@/nxp^j# W_[OpQ0[1t==.p.Wznŋ[<2fD>p3RWL^~?>&`F7W@8wxq :p/gH6CLAz=dz#ppǎޞx7ZϪ _g 0˿VYY ~~~lA$ @@Ì(1[6 $xp .]B@ w"[)d< msHn1xTHOCn >Q?{DSTkkkm@<0XJ!uh@g#i7Y?P ?~st? ºz`3:riJ^ii)vÇ4 O5X 05AlV™Ñ:G.:ӧuDg#Vh `M7N8UN'Rե_IOON&;[N)r"3SwС1e+( `+BQ'YwZ؀e ߁S `Lq @$} $A$A$A$A$A$A$A$A$A$A$A$A$!*8c= IENDB`pybik-3.0/data/ui/thumbnails/Prism5M-6x3.png0000644000175000017500000004073513137372706020776 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+AIDATx}w|UӑޓJh!tNh () " H U@P@q8ýs:g߼' *"c[zZZ{}mO[t[` B@hZ@hZ@hZ@hZ@h*<;a_=\V/CRè߫_8Z}i^[] H׵sS;W5 j6lfs.][r mqާzP-+W$To:ސU%!ɊVnnۼꤑP{d &_ި*4|_c۝$|opϵ!Pj#HI$wZOm !1wgj X*smw?" 4P~0RFW8UYWuض؞?v`vo=W&^}.e۲l,S40S|)%q^5%9^MNIPII*>>^uPTQLjJgyTHH uUDDz*11Q$'U$,.V5TnSy3Huw4PW}$1ICmq9P+`I؉ }>I@z0!i+Ԋt)t}g m !4'd4% 1>LtpQ'SHH-#!+/ P5!*L)˥Ƥ& &eeQi)jtR )Q HCJIINgddpX `GmSolk=Rjs. |hܜfҠ P+  M!?K&$ ]N ( =MM+],i(qouԿǩ*=C,ejAH5R.:6@Q%$\0qZH.&Z5F*ǣ1~R,t^$'FӀ!)IXՆz hTxu>B+\S9iiIbʣE'Tuwn 3NEm"hԞq=,{Ճ$wpV6ULРzLRĎ0O`L~L09kWP'GI`3hiPbH0!<h)@1)Φ>l}p8T>@!7\(Ǩd54rrN:ؚEG&*F,-EGGL[c,>NFE;qfwa@Gg `3o$=C,WnƳÕ b[*ʊh@S&BڋE%]c6uS?4l ketLU-_M.H 4X {UG=殧FI-IjفD`AT;d3F<7(/DYj7 @Ʋq!41FMNSh233ٜ!S')A"ވ#4?1 PBBJl'%f1E .',4' ī?L/( Fj[ 0t'9黳LPair0o*ǯ `m$+m]dK3} W7'(^i4 v[?VIgC2``J"-\Kׂ U6}'|O&?)ʣf$Ǫ"2XfLvIIWM䧑F RM/ +LJ@@k ǧ`GKm6=XYԿy EjO ȠJz7$gyqMRj|(몹40} 9vIf½4ТbStM5ÂӵNkB%t߯q {N4?&I7?t^m.f V"M*$x.׷g+h/)hzw- IӋ̓ywmcVd$s 1C}.pA@4xM?5Z\\~\51|fbea$P Rd !K3Dv 4)"X1NS B<ܔ8H3]G9|B"1eB&^|2}ɤuy0xq D ji# HY+ B\ 9.C` 2nm4B2s9(F>`@DЏ"X3. 4D,ԏVh`ZL8~tX94&|_iE;RDfKM1/7S4|ͼX9Kl\4.$ig!t@!!2ЗY&`&m"S@=C8Ann ``*4X2;#!9\.i.'=яd@6AzY46:li.>5 1)=AT/0|MK@;6FaE }W Ia9B -/,yd+1wDC5YWMsW`\u STqJKI+gvߗڤ$| < d{phOV8ec٫6-`vy 09{>avs|8t0,BM fKd\-qF p 6p e_&  ltC=O[lBwDt0-"n%'1V9od QI"'š+ٴ}pC xƽnX 4.۾ ;}b1es#dhK$, xxN[M$# x^ 4bHsUE8Dp5D#- i/WUHiUEE(EzҦ3A+SD):Y1AU1'>EBB4ĵw19t<L!g]L-@˷#HsH5bg,!3ML7Jczf%k4k:@Ay :=;8v\N߆T7=,4/|3އG#l;b @7e6@C2XA \`B40 N@x4] xIk"E҄(kn=J,%s`*}͸jp,C^*Bmԥb |p$0Ft|X(x % $F"gRi2\Ĥ0Hp   l?Ɂ(x8 (ɦ&'HɵFt-VD-p[D>=&3#"%Fz\.6' p`E5PCn2M|/fW97UkTg{TIӤ@>R݄]D ͖Ёyf^=ZB|DhZyS$BN&TЈKAs +KN\KB0HpnC\`>|(ltO( > 1Kb9֯x>rW=δv '#M Wd`vi~1o= ƍUn"A8nC }R ׷ %C5 V( I@8@K:_KP |Ldp띖B=C0&Z7./Vq%6.3:Xp3 #}%_b Q#\\%Qb<1fղx4R[ ۰Mr~QT٬+0ZOʂwj4xv Nf_ء,X!vy$觜:cXzq fZku)<ZA(R 7Ծ9()fM@CMIP?yjj X}'mb$b{%e˻mS.]` بj;୛Uh8*a^a.}BμZ)~YɅ]08.o?ߏicoG!;gʹeTiKQL"<; J VMj=i)mUK!r31Kϧ5CW`,$~J$-+Mީ_6⣇c Hރ[xGT_uk9Ў&C0}CfkldoYZ#| >7S%4̪@`d/08ӹfV,B bKk{*-ltǙ@nyPÊ^0᳚+Yͭl搹f&1%O'͛&֙;3&=&|]ēUq &|SX¢Ϙ0 kGdm  I S]腜;Ida70GLHA \4AcS-TqRNMf,:BC^I`B'g lM>OH,c0n|&7Pe'lb@E:HKm4@6W'?ԵL~/]fVa@"کQM-@bgC=AN84n4sd_ UrĈ#=.`"d uB w&Q1$`W\]Ýq?(SL!eL6r?;]XLJ,,$Rsb!w`@.phu`M4f݊h-|j]J 0W*g DN׭2A))%U7*2-_!Cx^?C/ slV Ul9!\ߡP H]x$+l[gj1dOrg@ yz4c/cb>p 01~[DD9tON;$W]&hk9~x8\IeD""T@~$ S#!֧v德$Z8+Gh^}ŤjS1jo3~NCzC%īFh5u -C70p62M- RwPf0Ps44!$EDRvS!lf(luZ tBp&7-c*l!D kshes BU"h z`"_e!p?6q\*sP%hE%?.X}s#w <ߔBHQ*o`ȩzeؾ)m27nvk #ŠT%H.nNd2Kcc|X oC$/{vtsx.G=OM]3::v\?եsQ=]ْN"ޫ68 p,{grc < =_HKxKg:%^(&XR^/2Ttdc@AW_\+FqDfXb. ! QyYh7g67d%|>lfr bXkDQ.!4!iUCr U& ecF:Mk)d:pwh};E5i&*tgK/2E0?gdk9z~\g鼭t90]?DDM3k#Ҝ̋C u!/'Z} {`\>?vS K:0dbfm{iګTj% ܒ G"56 ɢ\ (:uv;J<̩+q\C>/DZK^k #An#>L ]5:hh]ԷM~ 9&+-Xwhz+!9EB 5}DRYciV<~GwY}-F;Vv_׮*{7Lpps V kTV& o\QVK"f1C|ưȍU}34&R*/ϒС@(vQpAB+ @Vr>.f3Pock [yOw18ۺg/*r3ϠgUi%)Zs{յ7RxN{VY|gkBF~8Jej^R7IL 1Q &gLs $zTqB&Y,0^%ce&AAv" $@oG APvKBլ:?א!V]ZDbX #|ԗ*0kHGP~3 t4 1-~1n<U2;XdL4#ԇUB5wX67ڭ >7H;FUCwl㇙Bd͌*4&CΝGm0$Ndt*R6~ _oޗd&. 4k  IW=N: t,Gf4<ᤙADy r dX`=PNяBQC)bT!C-m_8Ƭ+a# X:M=Őcꯟ3x>VpVg,&p#xhތtJIVE !۶9_{߯TUBӦ [iz%՞.bAdه'%$K$!AsWUn;6h:1ak.kc$N= hLDs5 jsN~fyt&{H!vjb7cd__.cܪ e@eڷd-[ґ =~!͇KΟՙ*r2Sڴ-UtzH1lˀTr3nz@gwvUD:d QP -$GmrɝP"Æ(L'2!ևXKKJ HB$!?ǖXbWG YNU525G-  vxmfMK,ފY*'V &ƧS.2'&Vkܡ0tރʄٶI"j a4ΜT-&MPPMJPP<_ѬS.Q4$@t->W@aABCޥɢؗ`% `  fnk{X$.dGBTv:s$O×Fp>X\'pW?aK3nG/*I׳aԄn1{SpA%B?^fj1~%p{I"+os{$zG ݜYVBxUժd.?# OKfԭ]C;\ZN^XaV Aj#iU5V GujoR?\IUkkS_tu (?>J:C?R;Xn1T>,_OZÉ7L{TzNlʐi[Fo̬aV*~[ Y TguԿG:c@ADPMv"밒$i;\2(OR-d(3f 3볟5f \d @.`! a,Ԥ򙺔ȋq~@/is }sx,Zuh'WZʝMqrwMsMJg}ϦF9i@Lbxa;_j0Xӷ摬[:BE t3b "A#p3,IO|r ᆬm0ݖ=Pz)/0h&GU+hf2*DL8ӗ+n De[h0QnPX8fZZ%3̫~OfxD z^68jR')ϫ/N&I$xMӓ\#՗爐G QPyB^%uߟ_eѯc ?׫(_4L|bH$l rJKIQ!xץ3;k`CqztW]>"ZX e!HW ϒ~_ޟA:/SJaғtLHsjAx_G`\"o1Sw=ìE[Bj̥@" KfP UM]uYoBshw Q\mDpxM剋*#A!MU0s`:pIw*ϓΜR(^ 5'U}FU$|RH1 JIXt{4K,|0& ukY@S >[>"aϊ݋ oȮÊjREn m:):p[!@R-@͗H"L{pzPIZ,i{n߾VP!+EԲFT3^xHW PK;DnxRJiBvѳ2[D.EW]Ҏ?D@Ot<޵6t75}xPe?@$o[mw#0|t"핻J 0g% 𩨈 5iH#c)Ru2(?%n]PvE a2 >o@bL!ip$ٴ׭b"i;tZMjۇ@s΅%ÆڲWy^h]>(,-QtN,b2ugo0a\"KkXXQ'h~L$UBJOd¥5\ĐBBfB–u 8;]yaU87 %^jh.fʡwXEE0 8&ecxޫx?`2(};+Kc1̫I{VxL:Ǟ6N!!ir@9f FAd摎ul>k ?A?? s `DÚ]o^ v.տs dKDVH׈|*~m !_Y[/JH x~Im0DW>[n\bnTf&yGL\25k (t%A&"I~T'g~vѱ 16{uZP}pU=|@Eeeq"ީ1\(_ }F.YČ}:jMǧ+b۞V:zEnUE?ͳ Ic1zZ}m[cå*3-LhnW}+?-ϴo앗r t $" #|MH\έ y"$m=Pdo^(Fҽxqi%q\V<kޱ>V#p'H@Բ%s a"Qs,aM$D%`@Ӈ ܮ NpA&O(Ƈ`pZ[->?"h՚\9B]̙bw'u(k&`_MM)d#[nnW_>ꕽx ZhBA>6EF C*42 @:6/2 Uz%{萑b%?8_ TkZ?KAÖ`"E^.(Ųdp^U=bT+mr[dat`6N Ibi?"o;B ;gLdHA FIxiJ6eX|EA3ų?\BX $dqcx:<$xDA,L}n 3~S{;m1]ѡ݋p?Öǣr V훻"X-kr7j37=fΏ>,nB&2@ d%8$Idt1ѣ0Ġt1@${أVȈk4I+ ,E7"lT$ҽv kNE<3-GpG[%O RI/2TRl' J Fڛ_;ʾ"5( Mn@Gb>CA# y2zIz*h 00ndM#>o96BMrjkfp ~\ ܫ`k'u`eR^o<_Е@|oR3a[7-s7to+.[o?dEEYQ*f 0s(B9"❵۵ t"@Gsٞ]jTF.|>Y& Va'}P_^?hӝb3Gj"~n?Gs&K5_a ,GBCF% \j?ɾ*i'-amIMeGqNKg7ȟYKaypW/神ܪCCym6J߃']y[> J_w\s͚~}uHlIIG)E ɿ}L!cCO Yg1amE+rIՎaK ˇa=+x+dɗ=X4A[d`UȩK'DO/5<[3d{\MjKK)j_7%ww5:~˖Vۧ##Dtx3\+wi0 m`ulL5sژL-oǂ:ż8Iq7uIO]6wG^_6d-?~|"I5LS0(dT+eVnK[ighš@X(;gLҶ crRͳj Ĺ=P]-e7UϊP}KgLȤ!cK:OKu>OAfC B; ď=)׏E0`c+-_)eb0w(M7k_D-U' VA$gamxMz=5/cVNͥ\؁A+yѷhj%}m~T@LiC|k`ڹTڬuJ! L'2BIu\Eo'|IA>s0{]?WO˚yO.Ϫ&1w5jDeQfѓ5|~T͵lXTE.Nմ7 *Lq9@$.x=L yVBu99*mgaR6A/6eXPыApЙ-H.L:_4%RX+4\=Bcd…$f8,E p2X6_o?Z|bTv we\/<ýk{wt 0osZn/-y2A6-ue-V R/V,)Y]$ vk{=Ϟg'(')U})7&)oSоKow6b PxA`9}Қ95 >mZl:AQ-GҐ'<1!<.?`v4ÆL~8xpo"IH޵KpݷˆlppxJʰaº'}oU0kyH\[j ̂EjϪw[O.]̵i fڦC k& J>fμب<}Ua[*ItY=m/, y@hZ@hZmO7Q2IENDB`pybik-3.0/data/ui/thumbnails/Tower-2x6.png0000644000175000017500000001241513137372524020571 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+IDATxy|gmm!2;LI@F"BYe "@ DQ5*Ez[) B SE\X:?TEsyw&3Lɀ}߳?O~~"5C@@@@@@@@@@@@@@@@@hB }yiԩgzCoE+LWFl آrvΩP&H!s]]/ߐk;<'⿌!Ll~L@=N PEAAc@ ko P~0+JJ,l*(}C飇)TOʼir0ʬn;dJ~u? N[wtk0Eן'q݀1C*<d*K"k$Ŀg ›/dd6/.I.cTx@/*У,vy-7D>I=Ywۘ?=t@2lZJna|J_˦d-KA6U{NIE z XUfKڑ$H֚AsiLJz|+0<"E00Aa`9 N7Q3_HZƻD0BbE0܏0P2 |;C(jgl3zld?J|g#Hߴ]o1Ba"O0X{1w]PwOc |nQ{f vp C9ց xc7EK_zaxzG0P9ş:dBʲ 28YOY@Z2 >0uZ TpNCgY1EL%,pA;AP8b }u>Y%S^R+HC +`u^ ~3ǚ1r^?dx%(W f YFX\* ޥ6 6F7>,|jۙ92Dz񟵵Z _-h]`HTUsCđp|O G}Ҙ =e+ù,"H2BbmC` s@\lC  HkMqK`$s&°4S/|)3Odkg:(X$3ebv%%lT)>~l:ĚzvAchB_gG@ҟ?2PYġ/% m8q KL=:@/? sp n"AE$kw+{ݼK(}|Ç<5Gj{2,&wh3ܽ?bԳ sd  L  "3kW SG\JM Aѡ,T.O2k׸g Ki@Qq@"UU eW :~& Ly&`(,8b\J'atL @[8g, T2%e#^2=vASYh|SЮJ;|_ؼ?8?gramJK$2iX 3bܼ{CO$<|C +z?ڵ^rQ^7{ݖ <@cz+ch -:RBt(>O*/iصW`L=?6,KKj=Kh  oZã*xMAٽK0a}!>7WX%_L\S:p$wZfd47 |+'50Ȃy&ü? h-v3m !ppTmA@dWojO`!+R WԽM-&ɩ={- UJ 5{~76|~,ӠWPm^[Lqp9%xd0K1k᪏]:i2OT&rZ ^dYӴYxј CIȓ^&Hf @FC"Q;8M@@NU0*WЄkXаHЛ}pIP@I[zLL_]dͶň\WVir*̳sy aO8" !0 je&tM6msdA }RP0/ؽH5e0 d#,}}}+jL5O@w5tbh{>y@#gy&,]2̸ O6~_o5{2 a +sU |'6T4^8_0glac91?FY%N,C T 4BS?$ r9aǐvM Ysap3[LЛA j+b!g m%Pnwv@fː!o5CT(Pg؅PC@#[\tx=񺾵% c/=kυ 䛂O)5zrݬB:e &v* nɟzOw!d ef”* \>d*rKHM#cA1Bq@/ n[d610r${ ̛̗Ccne a:UJ1FriKwb!Ce2'hA>=LJ&xo_$JIcMF=ܰ )N@KA3%&5ҼO4 `b^3p, ||0.ǯ Ao;ah VC[uZMsCOx u2tfi~—Fk Xhj +fhP9Kc{gZ/\;TeSw U' 0Ad6X^ /o 'sTZk[\`C;Fo@4 55  t~6-/0A=@fG*|IG"9&x}3A:7DU "=KoB]e({ ,$>l`6hCl { n7oP@q= 7Wb,г?.6Ahc 6?K]yad[EK2oQyԞj:|ե|z6&*dQ;ezd~ o%Qm&tH?>ͩ  "~6:I1TEN`3 v[vs\`AL>x9Uyn{:F]|C?r; ,^3_ x]@3Q-d;m}1/}  g'2Vh6'![ؖPT-Iz)|k)g˰6 ܹz <lpܜn^GY5Mͣ_:?@cyox {;F ̟„#N AQ<3JjSI|{:kbF` ڮh>rrglO*jS%-''Iz#0uXaKnw/u՞&D[Vq玈>?Q? ]gO-)u_moVmB@!&s{kRg EmcҸuaotHc\.b=u&WIEzarR6_% ٥bI0GIm^Ulo"NG FG L L L L L L L L L L L L L L L L L ?000ұIENDB`pybik-3.0/data/ui/thumbnails/Prism3-4x4.png0000644000175000017500000003000213137372653020641 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+/IDATx}wxU}WȦ Ji7(E[  D4H8߹{vvv@I\sl>yߐ H\)E(E("IERD")"@HP$E("I%zW[ _X]ql3-".v|MuxM2;ߌo|eP_URTڨZV]:%׎R ę>~s6̟r`O."+&@``  *{_eٜ1H۳Xwŋb(ƶN\@d?sY'.Ipӹ_s 9tѶG$8ne׎ItLJuqNp94gC{n:&@d.p0?swpp 4` z) i$K륾אڐֆw<4.lgZe5hK,2,Yp}?փÇ&$UdzC&q-e3'Z.Krepy^za\g3(u  }M!b9v*ll2}m4$ȉ@;c!eM66pnxUzFmدJ,I(Yc[ *'PꪇaQd&@iPukgG:o?K"A[N9$@  0H,\%>Ci]Wfq C"YT={'jU>}}8B~1*ё~l]p<֒_\AuR z!ukqҿ8 <$ ~%BZ0Ydaˈ2HgS' RQ,idPwϟ?g&L0Uc@H Wqj`J根I$`oi |.5%`kM@kL-naGdV>a-Z0~TU c=jX FO!5Mmy##$@Z߅{idoGdB?[QJ;%2Qm\/篮zH~Pɲ?7PZqXQ@ Swqq?⏭rz+.N; /Bg W3[h8O= GTrda>dI;ٳg2֭[TzGsBºMza&HX T`!=Td]TPq{;dGUH$yuV*#W|}gvD|v%g=_{(2#ӧOw}G{{{3___2ݙ srr2 G hr mj X ԒK.Q= zH 5HiJ fAvn/m!=[Ⱥ@\+رC>ce0a\ IAy0EAaSBoSy2'X.ؓwvvfnnn~z!dک؇6l`A~ 7رcLqqdGT~AI8霏s R9q:(J0>k`ewh>/Hʷ&ؓ;h};O71eKlD_6IC"7 l"nGCɻ9:&~@^lFE_h޼yF\xܢ't|L#o r=_NV~}){h'zd+1O ssZۛBv8};Ճ<;&dLRn <尰0^ :d5 u kWXk=UMuU—h\ b %$,GspTG"wz[US Xy |O~0{vrC|Hx7wRըAr) x ظqck),v\1Ws(X!{A=\ 楆cF_}@F /o;HjKgж =LU)Ʒ|{nvرt'OL`#6zh A:ZAcoe?2%_(bPv_[mշ/nF$>4\`|*8j89H 륀nF WH^2GS?6p@Hk(uȚakM9%T.~H߷Ҟ{= j^߀D45^XU.^0( |C._ >^*ʅ}Um\c*K8qPfM֦Mֽ{wfHNN&q>¤q+-JG|>2֭ԩC9RE ҥKS,"KE?h(N2j^$PN*O9њssi ֙N1\Pjj$Y#Ԩ7\3! (?~t=;1b$+<~P˿"XK 0?V.ğK+WWZê:%2HrFL9~c2Y_O"~~ &9&_2~d=;>P\z9#ԩS }i+W4n(Ā" ZpE <zIaۂ)^9EꇬKoAk!g}u $BP_4hx _|CFQNW0,P#%P4|tR=%gJ <|Ia>"pNlTqd``6~>ļ @ٳguU<I%b@اO;33,xA\@فRS|^D )9:xޚ$/nDAJq~ߌHSWavd>y߇fP^ޢ0 Jwɓ'fG81BPH8KC~MJypg;vՀ?8PFxƑuA6W?;:վ,/ 0`ФǏCQ/ 2qƬm۶fS06[bc X=}'~3) ;$i+1ƇV>o~FMjro[z_R$@dll:|h1?ev(8,O͞MPA9/|^V^Ey/4>+ÞPH_O;nW ΤoЏMYN6.>1_`)r@a86oLe˖p|Dqcaq+߯{9_*5%c>p;/YYH W3sC3%lvK1sر#,׫+ܿ1g"x(^ '-֧U\` ;_1c DR`˾?V6aȐ!fcC颫|jXʺ2*FE2j|-*_Cu >*} Pcv.'U[COa(d~A1&O?XǏي+9sÆ |ڵA}ٲetA 6E͍|Ij@m6Q) f! |c. #e8Fo#CRC(2Dʕp`qطajՊB^*d /5}t(8!RHSNlYKu",2}p΁v0;5WCi!HFH1D~d?Q۸&{0_"YocOcB2s"@ K.0p>L_޽{f2f ![Hhz s12t4A vԴiSM4a5d`",2| u+IâDk{CISnB }ǐ2OW"/"+ykWkCY򬗏%!+iӦ*p!H.t>@8ۏ(sTV-[f{7rPu1cP!*4V j(d4 2Tm!2{Xx 7;~>D qğ ]m޾1<%@ڵ2hF\:֎-[*IJJ"Bt;(c_Dl~ GR&MVVą,,}U ޞ Eh rO{kߒ.11.&ʿTRJwꞷw^:o1y|.*eO^B_wwpc{"]<ž$rm!u9:9k| *ũ8m+jy%8}j^Fsatq:h ݠ/BJ"uL`ɤnRO^sxwCdJa+^o(o6ݼ`'2KF(?ڇ@@ڋxe0A ,}yXf @q"` } j`R2 5n{̝h6bSf?#hYP׏R *by)eH5$5ktga{x>#͛dy\./_P6u,[D v5('bϐνmoOk3W? y2%(K? 5kF;ʵ5$!2"m6!(SׯnX,`Vonc}M&qoE|ԪX6q>+P6'׫Q /IQ _"Qt  aq~!Aџ~2ù1zD2޲ FMB{>(ۺ)͚[w]IsRBJ3ZFտkYU!lO.(-e?ȏ{j_Ph总'M1iDhkctv(FVs퀡M"Di`kg| /:+AGKsSWzz2YA iVDOXOpcW1ֱR)Wtd~(8[A E|̞=G!s=H 0Hfub(~s!@5?vS%g"Pבlz$xh}.lƿn`f\@bwXnbX×+Wp*y1W{HX 2\MJzy %\-uв9F+(~vsz}&* 4ck>roсlfBJ0Ue>kyr/* 8o߾`q[hUPwI†A)D|HZf=lO@cShOÞ- hzV&ڑ*mKҺcܸq ?kTWVEϧIIrڊ#A{_ >p6v)MIu.փ(9Ow#<ZAŒJ`j(Q pPDb?&dDx+HՎ!zQ \Ln%G|~ޒC ظѢO3Q٣w>`uE$"b[ lm6 -p)>/>~&eٽ9ý,b2R‘j'j s=c0329 |}hzaj;`l* \}6&=x!1} pOC&JdD w@wW6"Y42,z%1ћ7 "}(5CW^ܘ*pn{־?}>Fs-_5%0\1u~{AI[4рOJp^(.v(V3<-4VasUD-FiMeB`۫97X6xaR)%nI| -C!5MBrO"_<:[7Hݚ- -Á)!( /ʽ('TĤí?s y3"-wYp~E-\_Gì89ٓaeMP L-ؚ!T2:q0CH'BadBN!!& ya<Μ9ekOB|1etj1Љ+`s,%Z5o"!'GK9XκHp ~h Aŋw-a‰ |7F{tf$t (I5tG<_?;{ytDkx!jJ_#'IXuvr섲%a?;pjcQ_  g"-#$##A 5s9;vPc/:0!L[ Aqe`ۀ-R~k'A '%KFia\40*Z⢡Dkχ  ҡA#ݝ=ր.F r`BL h+:4v1 [pj=U%%aV@̀C2Hj^>eLz!cPk 4?{ o-{q#'< @E]m'Uݦ߄JeшO4[G.܍@ <8ݹ1[) %$lp!Jؤ[l991hl_>_+~5ݽ|K[1m1p#<@UP1FM ߲u*}LCf C~3@*4~`"nYv+3Oi!\ͬkýUBy`3s?S  7vVtcBpBf@,-Q]R!Ԍ]ߡݕnRQLyܟM@uϞdQՃ`|uHh+T܆UDYZb"@0Wօ VJ\n⤙/7|LʛӬ3v<:iOٱcV>HBpvʾDa(h-za:@ :j^9Gv=UmtW?GcXp%D ط<"3/<='N$An"g͚E F NcT #}=w /wl4~q`V?0YJFس&rb]'x 46mْ?]"1P1p R$Q./E_:ʁk*x{>hW>JjB˕Ę(Fc$d-!qoAlG#YxţzyeDL/mh;~vQBA@r$Q*n9Y DL>|#{+~1C(0)<( dPHtc.mkA d%u Rf 3=8 pK ,)1&x = %P$!ZF8X{w C7Fc(a(t[v v.g>t>FKpvY/! C"FgwHie+ޜ_"܅c'`+ҾCHjU{(A"Ch^.VItnꈩ] @h{vyg{ Ԩ"c(8έr%3KO)\TA%Gc~ . A߼y3Ǎ+տmV;}0-FɅ BCh=eE1QnJh&.M xFP+#bfDW.HӺlvma2#5gN^+9*-Q@jK f%ޟ@' KFrk~WH]. 7t#8pBl5Yŏh:Z%e>+\ ?bNIENDB`pybik-3.0/data/ui/thumbnails/Brick-10x1x1.png0000644000175000017500000000462313137372617021053 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+ EIDATxoSr0 ?qԐ&%m( ?hBKQ҈N\4Z^*n(-kQ)cl%E[5il{ιz#Ml+l+d|~<'G^ Z#@ @ @ @ @ @Ђb:{Pp_DoK׽U:drbR_+%s3vPd^R/S) Ō/2=t PHI1]M^fls1l .=㥨t4 ūNN͆N;2Z[N\w׬Es+%ܣ-g#fgrU@kr)D42I|c(za8\)*t&U.NXDNs]07^yaAMɡ^; ;Kgqo``6s?OfagQ:H% \ƿ&Dz e:!v?"4n~Os^8@ea9ð)U;bElnY)saa:Ы($0(@$S_ tA=:˧n̲ ׯ<١A f$[ؒd2S4 7҅wlN;%{cMM  eaP-DQw( =ww5qx/Sz.XM: |:;*9 xphGu ) uɲ,'?ȩ|anFez- ?Li[3Ⱦr7ٛ`1 CN^zOO295lPQ;4HPgcXAw/Bv& wy]0&ZMF( r^PtPsD#ö<2@Y#D29] @1V"W y!`ٵz-bc-U f;_hm%j4Nэ?`1]݂C*P~)I_L|N Qy#oeWޗ$ vO= Wrv= v\=1y*cG~hhV*A1*"nզ  @ @ @ @ @ 9cZiIENDB`pybik-3.0/data/ui/thumbnails/Brick-6x1x3.png0000644000175000017500000001156213137372561021000 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+$IDATxytיHbK6˲ݖWp $ٝ 4[Ò@h4%&!K'eJ%$e̤d<9n;=%syw%l/=ҷH~7<$nE" !H !H !H !H !H !H !H !H !J C.w_/@<#Jk o U`@"8Ҍ zUϫ86׍>V-YFǍQL _{ 0<Z__\~ b;DU߯|>*z4g'!Tn?ӉqDZw3JMpCo?gbBOr9T03Se ;P(S7a֘suO&׮]` ,[vd( 3{ CO#ϵ0|Q&}ϩruL Cj/hy_J4Sīt %!eb.q0\>dY>~b b"`lz ]wce8;y0|z afs.;ָTp2&bgdB]kYdPQEh.!& U3m݇2|jF8GI2$$ @g14r\lrx㸱TjAtVq{]RY_wSyszpY#3hL{f5 LݕFjGz\: l#"6DL+ U~~*w15>\N<93t;5k[NQ2q`F%şFC0z$hV_8x<.dPTT]N3,C;xqϜէ3@ݚY{Z 0RŖբDZZF)JG^gL=|⇃ʴ,R CY9AFx$s3-SsygY8ǴrD^n1nK=!5,>P|> ;[ Q\ A`=T>Xfۺ1ZX;SlZ=ۈ # lpǮD"i\+iqL} [30G+9;bO=ɫr~Y6\\E3ؕd?d7<+Ø K{a:G`-\Qu]0VRAZj_)3> O0-~5]5Eg*lΥ# %b"+uF-v]ŧ5_hB7S6y!Ò2,Q_X8{`Y%{ #qJY0 *Kނ'29/>2σxŝK(לb7udK/s!ݫG6e; C',e]Y3@)L.@2M XhxN~ahV CۭG8EXgqUQlOD{Y\ۚ9۩rVq#RBA`67.MP"_3N Cxv}8Ժt;O|qo`Gsu1+ H&*ܦ>#O;}ߡ\?w: N8v4dqY%`L]"VD,ʊx˕QEvR#j` 9< /T =~=a&S<P^>n.Row+o[#j`fCMF<4UdXLPc팟%+ѳ}C=&`(*-q%M8.-\Z @֚1?xWt"u-o9.p4eCqm|w8; z]I{kHߏA No1s$JG/Թ Ƒ٨ ˱۶>[5,3mw_jmZ`ic!EuMÜ*s:JD}a@`6hƌlfML6z 镁sG]뻂Wֿtc,dGlA`%tV@JH "f?M1[O7@s @w[Wĝˍ:+|k F+ % Gv~V(^3K8g 0z0"ϖt{w@Rn=-XDGp$Pf]iLW^k84=ߩ~Caw͹{"aUn=[z$'`:hj@U`0q!@4Ʊ鹠Ͽ+ӏ㣐#{0m|hӦܺ@Gb e@>:xnd1ś]Am"u`<~Ã?},S?;Pz[pxqkԶf[z  0ۊdRNA Bn nCFSoR[IK(v߷-=}M/cE3&:S N+_o,A-W:*Q",  w ռgl[o\;y8ny1toq^JrlxJmM䮴l?o/%GO v֗EcZϡ ͂TV4ܮ3X FQ64zM? mK:Nb+DzԵ t@& ]g0frߛ/glm*znCamnIx஀p}s'WnퟓSl=T3" Y ݔ~Ԃ.ݩLx(oi GDYGO7MΉnRa`X0ݧ Δ־D ?WHzM` ucQ"h=`Z4azjOC@ @͍}=P=Ř "1r @B$ @B$ @B$ @B$ @B$ @B$ @B$ @B𐩫CyIENDB`pybik-3.0/data/ui/thumbnails/Prism5-1x6.png0000644000175000017500000000530313137372665020653 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+ uIDATxiTlaa` "5($n=-MRAh66]5bDDm֓jzm9we/$/~>s;J6oz//P"E(@P"E(@P"E(@*~Eۭ֯M.\UvKOڝ\@A,$i0$Ihِ}j2|==; e bܱnx\*j@51HEpeem^oYb×_cL}D4> XVaͯpC K/#4P(n" `ťT쭁vVT< IOH, 8k+8;;C.CaΎF]^8Δ/v/#UL~q8᯻<] fzQpuAwqqAtj莮v px[Kad^8oՁבVwɓ9M۪ z&b.]qLX㣗LXEh AC(Iw&"pN|>a(N!H9q<}y1r *G~]*#H>1KDsFhN6= ;?K5wѻA70lO}26Jؿ@РQsc"o"݂剐Olh@ƙzŚ|= W{2 sچ }h{<Ǝ ۛdȊ@DRJ;I)K3`9᳝ߵR`t 3zixLo+]pJﻀ>o,s6 `w8s&q|%KQQw]  K n!U&E?po *~"la %@_t<u-S- ӻ:/\pqz EVe ߴc#9'ژmlG;{?Wx_p4"w&MZOmbb^AtM5Tӧs,]o e+x]VgNvfni1{7Ry-3| u7ؠJ</Xc+[D[hT*xs/ Zĥ=u `lDؘ 1+ ‚Ρ Ҭ@nV^sL2;4!> 65bR-(-v < &_D8 9g^8ܬ'6'ai=[t?7p(캿g+:=;@ТזG׼@B<xBG^8END.zvo Wi4 nqG420+,\}][}E@C͍+Y Z_w{{9#}Z+_:@f`,9 xD!=ik7-tNVU1krj @.*lf@0 %T]@?@~O r+*9i/pG&"e_mD?а8L~=7>"J3ACxt[cU|<"~3 'j| &LIO@c +Z@hե}+V@Ch>EBkjl(@xYϛn% 3WAcZ 4n ez׾6?ʷ*[iMбw<XSB=7.Dz xCP>@ q9<V8яYm @I>d2~*(;!pŕ^jѧ bza>vJ2W ߯ط fQ@K@¡CO]7v7ܻ⫀A|Ȏf/hCn%~\"# a?0!+։ v_-`m /WWF9t/ ,5:0o,y#@T.` PiݿH 8  =L-x~-?'h gO%qȨg-/iyfH7m'hXH#+Еs^?w8]て*K_qmM(*4xpC <|l}H eaQqQ=P<n$#EE(@P"E(@P"E(@P"E( L`IENDB`pybik-3.0/data/ui/thumbnails/Brick-7x4x7.png0000644000175000017500000003210613137372570021005 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+3IDATx}wTUPp躷rꪮiHA$G G1cQQ%h#Zlsvu͛otq<^[}R+q?^gϖw2I 3 dF@fddF@fddF@fddFgBdh192|9X[{uӱD?VW}qHZ{+v@卫 =27k\+[M^OC} g9`Gf?/иCbaw9QXC!*~vV;vѪœ^!o6^G+H@dBKXS TA ,H =ǀ" xMD]l6rD/=Ķp,e8 (s,MPk:6>BOn%*&s^"@OiD!yU% / K` *Ǎ럸lX*h78\z>aZ[f%Kc'#entl'R ?U#T>zTH8g!=PK d)/Q Ńɀ`[P C ]Z*K缚*L*E1a(T8H;bVG2,D4Qx;zzCap^q?R#;qHW7$?p& \;"QYֶ+G Q}9Zu"*~AS*N;ٻ&b>vMn?؛hb_P 2PSFI58(!%\F^FAow0aYJNG'yF |P0|8XL}`lPxfV}N> ^sȼ؁QBZ؝c#7`(ixox] /B"~_tYXO%Ϩ$r.Pq֓:-_rŪ'SJChBAzȝ_Bf!]KL=/ZLkwJO2H*yK)C'C {?M$SE "pxhm\/VwDE;Pq[җ G+/I@b3,6*fDaܭGR |Z8!Wk@ޢ{@<* "M%7g.Rbma -K<.zO"QM12+_F` mVƮ^ӵDV_JF=.W m2ꢜ? Vt4yE#VZ'SCߣ< C`+P1RyDϋ~n"VXG$bAҫD=:4~A G8\`OUX H Tyq:cU4]$P>-ox1#́K׸&VbzEA0bwG`mM@a"@+ zY*mj<ܷ$5[k*E%E OAn$G' =9U|xw[X|aH7|3{`7=̵*{8؍ z2N"ysI2hi|O~??@k A24c MbPMܯ+fFzFI6J ҳ#03D@^"7O !sx0EWĂMs^{uwTnoH=8+!q*wǸqL,)g12/+ (w!ĠgEvŭbiE|^  Wd ]'2"oU~(eW+3rrr$J Ⴜb: $8G3]pJO{4AXݐX#8v SlGZGbת@JV!΃kf7˿BHZf90,8:Fn1`9΋{jTBe7gVX:r CLG4>6 GpE6ѷp3;׿$.b#5;\_b9V.v_'L@0@Y{uZD>qK7{"MTȷ#@?BB?>F3qISި%xɍ3tT`K&/1Lx1}3 L93;// #)#8 "0Tl? * HAG_K4)0@P9jQDo W+ヽ?Κ%04Q،634<0쥹ёNhG@ʉHyFV :#ɐش:G,abInlؗ˻&-@j֊Zyh S ʹ&XQбZ3 ?\hj󚝇dyF`(!r0A2Zr^<TɡQhF r(y9Myze~?o |ǪsUA! Ӈ̻ڦ2AjծNv[ (<Ha [ o=yJ%_V<5*Ul4r: ʂsoQUh:c울(7s4mSbx}S;N{&R2 =@^&*tᦦ2/ՄphA6$~q_VpiRcW9":7ޓBbך1Ln*N'0 J0]\~>dv!I~VJ&}c@ر6$>ۦ `*l6dY7]Uf(ZA(ЀC W9&83>wݨz=Q0\"Ρt^yi{&uTCϵPśxDC]5gOŜ.1]#ÛSjNvlXkĤ"C N]8WN`XEp/lkvGU(T:}F4:ruALGwjH}9 c0䐱pHp 1S1ODo'4}\F`K0н7;OWusZaǸ9?~hO:I\ 2b);|d@Csv"6X>]rø"O2C5u4I HhoZl6 .??YS`{U Ɨx##?9"d?5,f^o ̡\J2?X2%B܁"cēy[KBH(UYAaxAZثoh:{Wb 5GK?cw2A Y6Қ%:Ӈ(1H&03J:ۋTx6o;(VfO,E q?8C{&lŲR2vX͇i@oI} & &bwJ޻ ).2rQrF4CLQ=sW n b ¡b p[2dOJ7I}0{[BX|+O-eÞsjs"HpЄ5[g0`A `@mJS; m3kȸn6,qU6iV+{I">=16OV4ۮvV/]^nMB!Nrm nT!}y>ߗUܢ.6Q&GU$j"{dVYALkIWƳJYc@3:f&yj'05*6U vGwܮz xO`g(%p_]@VxΞw׭q/%V hO]$BW"u}} t->hilLDž$&G$ArjE!V.Hj4J* ^U)WMJRƞldqTadʯKp:EP,1kܦX~Xj~D5\Gay\ںʉ sݑF#b"v_cA}d@[Dyr-]E{ ##A/4)RM1/)C*>&G@Ev)I)Q 7$rpzSX( $Wn `Knx xT`٪6  s<{r/FġNM~mB|Q"ܾy8y4;J{ x.t/ oqI`XE>|O:+ d]  `-z":* nQ|F|tQ,H8Tαe{p0XW%|O^{.W|;j l8^'pZ_U'B .Shpz\b8*,ps@0.GpS6S]C6rJ#2cJbjب O4uu.B>Gvn:>S^}E.~6u!1nCM$ã5-Y+%3^!eU`Opp%E^UB!(4pm  m>>se-6=X=}] s/ ᳈}*ks)ÝV]Kz >I!PYi EXչx74<8bs2ݷb(^r$ιxJ-Ҽ-] dv0Hm \7O)aHDpS=0>jJR+V #H"ѹ$"~[ϜẙnGzժi0VN$NX8+4"Lg9T4oB-{=ZKPXՋ5T\7VgJ Ҁ뾏Vny 4!R8`1NrͿD&)ǣL c:Eq.zVD'w}$`J [1&ҭ!Za+|?s7^cBSUl"qtt"]vJ6[f:7vޤ:qɻڰ0^J RK;VƸY'?fCl}8GxT~"N{E-NK֭XN"J7 gU'3Fut"1/1ڱ2lea 1z.xIV$7rJ4,SB9@r!0{ 'iANmQ}{u qy(Kސˤ("c8ʓ!f70~!VW֩?3o[tx{sXԗG< 8K1"3 +,U$T,kȣ5ez91@9tTqi܂oahDCIym#5esrρ ×{= Ƚn6+?$o!KA <>*}_@ѽM|K%+9Ă.nD"?ÇXu_ʗ-78ò XO{ wBNņOِ C/,?@q0iGg(䍖Yb-n_"l [6p# D?  pFw%IeN `O$nD_;Nn*La㜆BY!1|HSkX,@qVl3eX "G0h$I6l`ڋe.*ҨC<̓ZX1Ɗ6?GWɈhUA 5={/*˷{CV:"!n@߫h:Q?xmUs!'k׼dPi){X WV%b:;:xwh5OHDƴ1s@ G Az^hrNx &w?.Vv$X9shLJ|[,x|ѩ*?S~e2pX>Bš~fof%MkOcBX31QOpdè.Y{@ wHq ]:5&{{<y f2^Z=IƢzc]\R6dedr;b0>ڿ& sa}o +;i] Nv7:N pRn{BcHp` 0V>g1 +'0Db49Pb\M޷GC *KٓM޶@ڽk-^Q=v@^'oߵ~q FW:uPzM~lfއ&IPaoa9 ^sz7IkOIrQ5[?Y#A_rt7 $y'fIZ0\?a+!юe#KP jQ0Y&9np+TRKzADQٯ1c<4k톼=OߐGr`;E o'w~+X6MtPf;c3 lVAUI%Q?`Y+FJƂI~S!&$\Ny0”eL-ܞUö-0{tD^N"@=-`Xj{M|I`@g޵d%ᛦIIʻ[r.qB'L6FPwk<8 GJ=ek zO`$@ָ<:T6q# (VnQTm>r$_*{D[ )Tj_.%WdY\`Tf1`Z*7Dq= ! πWb[RزZ6'JX#_LST͓Ksⴈ~T͟Cz7&{9"F ?o~/o #eej(^ Ӟ>Bm1'CU@+;+9 SFà*P^H=/IkVy;[¢0mè h(#Mε6c_Rr³}'U=ZE+a  إW(_v#tUdJa(G7h s0f@dB[6y< c q]ɕ^a$8~PCwEy_ 1nE}{7B)(u{ < "HFr&aTndsr#0ƶ4%Foϓu@(@ҚdDVC\bxd* |?@v=!W8U\bVo:|)u''cx#"ⵑS|wX~ۈ& x_Aޘ+FM>-udtO sJ+7"of{eB/=`U>>btGD|w =gzMcqyT*?7qgd/KBfmg(Q'.d U-l GG=nbԒc@FӔrw oH>4  w`b0IHV 6@9˞,s֮&w&C2H]>q\rHii P'psF >Zv3 4?|Xؼ&(.4eڧ䮢C5?y5O~>x|2Z4WL†H @fSzrf4~pK[A%}Vn~y![[EgD'&wF dnZXDGOܩ]U癜x:'L8@.^2rߗ%>fV!"d=Pnzu/h"#_m0Y,ǟlcjE8r#/%.*$ۢJ6z #& _{:~/C<_ ɞ^BY3xeE=E4 Kh cOLu3ErGvbzaTZ͖X`Agw\,/F)x/\7J<M lM~34cՙ2g b}/z @^76L;9_l). g'zƯl-#0~NAD$OoU&3Md$#Ǒ9\ 'K 45x(ĭ Gx|<-]WylTeQ;g+#Q M͞I6b9Cx ʭi"mXXj;#Qw>G@lbUuU-4=T#@`$wC־|!tv{/k~jPVV7a]\b@O[(U`u//%hi++QD W54MH׫ncG?i8v3Nw,kĀ3ym,8֐a O]82*H+sBk V@)Ûr!d\{vGx+#=e/@n.{Јj&]8I4J6#%~Ǐ}w_'!cU/s[Xu6}s2WE=K~ \fF_(}Q"=3Hѵts@ߨ q ~:ʸ9V6k6?)ѓF 0XU#MgwGH1j`epd䄫g=}dF@fddF@fVdlIENDB`pybik-3.0/data/ui/thumbnails/Prism3Complex-3x5.png0000644000175000017500000002164013137372660022177 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+#RIDATx]gtTU?w)ޓCEXE4Ф * 0#M '@mEѠt޻w}r&0~kM5sfΜy yL7$)&L1 `ISLb0$)&L1 `ISLb0$)& =bEKsHwߨv!f27 r5kF yTH3zay k슂+iI&YIQAE~g-Y,jβFKCĵdϾPm/Uw~#U9c$kֱS̓gL9VK`a%ٚiǐ#LQ;٦M*jVYI˿B ۦ~|OxMrgq-\3?H~"!7b%pj+IJnNI ۸14w\;ۍ7UXĬd8w_+Nl# HjZXV]k|)x )VrCo$@+W0n޼I#G-ftCZ)KEzR yQ/@89qMX I8L,^d{3^ Vj{7Vcזl[⺳ `݋XƋZ6X f:>L4/A< S]g2JIc5)55@r\t:5))_y֮]}jժQJ(99(22brQe/"%[te2I Bd*R4$&@cWBf$ 2kum@Kb!cQ_#@ӧ8^}U ]"Yp^Y+fj&Z!``PsSHutWQE+WfD7Rj ԨQT䂢/ˤ±#uCΉ" ,MÇ{}Jahx?PjЖqVcɆ%1T a~rw1ƏύZQϴ ؼYI/u6 ]!C𲊛H Nxϡ;* ݗ2&kHо S4cpiOO4 Eߴa¯`ԨQo*ELe,{/4~1~]I-IV}Mxfe`ٿ~:>sLjժ8p ۶mhq}:z7+AٻNۑ~L/=m;e"A>颠 D 3Lx;N:A_v-5nܘ:W3fVHY;ߩakB >~U`۴= vY~O9oI8YQ/43 E[+31|^:>yd6 1>\7 ap:b!^x$@pf-qN%@1Msr.?[XW>GkDN:Ş:o`TTݹs͛G͛7˗/ /@zݠuhG:\}hᚏ{qka0}ES ]ٟ+@$9/&y; !vьߊ+B¸;0Ճ ֭[zj

4:QPZsPI+>G6|a醮dsY qo|u{,KŋfB/0 |ذa'ӷ(b&"4} H~ AhƏ wE`88@볢u]!UK+ oA4IO:ر#PvP yăgZVX  ]ZАR7rY($Sa2PNEu!tGD:a|Gy%A=BXZF@$LW9iW&{%@<9ښ@6Spp0GT3 p_{pPע pDhUNGO$Ai/x]N@RjNΝ;3,XN0uXmݻwgs+i&pdTicUʅ"xrPTv/JV[ZOVA  0 pI1ݻw3={P0ƓO>I+W$TaV $xyf~C2V (h-/IEIUltv0~N4 .D ST*,@4Ï!>M?^n]tߟzŀ"P_>`a!lo|fNd֭<t2o}lST۝+# `NcJMDHg meM٥aXJZK>I}oΦ }FC;v,߰aaϟϟ,H&5iӦ9+'QA4{Ԗ^Q2Dž:;AA~şv-tJ#z8屼UGN g p…LܥI&1h@FjL8Q*zb@mze by9:lb+!/KiaRȸy9|1I8brL>c }$̧ "_|E С+} |:䀋%(A(iW1j?%R,y 䪑,oc^JOk-4"}E1av&P$ ;_ 86%d0)TYZXY /. ܱyI2D׬][@S~ }]K.Bb y'AFn@@0g֊nvt RBB%d\-}]d^<=VٮBbhH  KHZ*a \8/$@!_|XH؄o>Q{ҮJ>k@fgg|ѐ0r1q)uĸ & ;vtc_A ;vo5k[*UΟM6IOb} 1184- |(k)zPެH==r쨪/#)!3q>G#CI=v4tp' G^;XL ʡ`!A $'@ESr˖-\/аaC%.#'̛E 1Vx g:b\19T߹ZEHбdB/2op{2˄V46mۖ4h6=f7=P89K!d̘1zЮ]$Q q%(') p/Aq?U6t$wød'dCc)qkK!#ej>\`un.:i?%%E bp43pzr钮Db rDvpD-6I˚96N +|ڽJ֏`6At#S8@Og* ?|?P/.VK9[dQIhջ/2wr~H"?%|}у0M%"H?>\׬de/ଋ_4=pT&uE {s/#DۏITC}7`!@~AAr 7#FP.]Š* d S! c$.xP1H%D";S$&@M4FZ9IITKn(L J?&Rd 6Wܼ<ΠU[#oFy[*I x>`'m)DzNKH6qVsZXA(*BSF"S")8"i\Avf$>s vQ{z/[Lhw8 a(0(4gx%~byk׿C0% 0pslf\o>dbEзew8hBژ|ؼ9ƴolbΝZy* B[bV|m/'xLmz< +U2PltdtupH %:d'@FE0QFf9>tB=z Ha8~.~ܧ]0 *K = ۿLj9-cyy "zb/駟C42&6"&%j)L:(vxJSh^[*i[q t{ <0cgfnhтs;@c)4.9R`y3MN(_ad-ҁTe$%\E&ܹ >~'}1w>Ͻ;~5^l/B; z&@;~$*CS!V(AyHT#dܹnI Č=Q2DQ{X=K@}w '{ "$5H+Եy%9&6."A2ݑ@'N0 ol0PUS(tB~6[A3HRC;. m=Mh# ^x^ +b"d TѸ:'Ѳ3}ޖ @Vlؐ{pVқC!L28B4q.XSlOdXDtϴ`4oxq {5Ye#4kbj/rCƌveE7QMB4B+WɤԱ=%;PZAo[Cn͋{]$`= p)Ɗ7?n4wRet/PYBYBhOT`{3Hu P An^pv |֫)GVO2:,f_jU;J5Rll!>%1jf5/OvW"C˧*AGH"Iq.<>gH??M#lHH'Q<z].S(stlQy\76gݺ"|999+Xe ) O@mHE.P&q.1{/L=g!G6 epӽbU/ 0(] K#<|5`,DxVr#$txy u|E(ZƑp)lO 1CX;g]z @ Lߵ$/ԬU˭3~Qv -%7GVɧ{?.yZm_TLGpK@9qTNFyЮ3gH5kgcV1hLGCI8n>l/hl}!c("q*AQc%ԕ+T0g[@I n׎Ohh7 i-tO,3|z5 ًT^ 0ý *- IwWAM+poqWqb!4?<߿rOT(|p#q@n.Pg!DW芰hToGﲯ'dΝ@F0+y/j: lYEs/DC0 C5y( mæGPE:9Ƀj ]L)wϒbe'w"=>5Istq$Bhs69TJ~\Q(rϿ}D` p;˕!L"ݔ?z3Y_X\}?)2<_ELKVgEQAvO0lܡ5A?c @B8o??ž?- peg}FBHGi˜P;/ #sAH:Ս=tŤe%s_~P` YI B@U)vВ:F )Xh$@Bc;yH %TPDϊ$jөSO#G2":ΥP޼䢇B.\`,,M}$C fCGzNg SMs#F'N+&xxNCElT~! iF*@N\a`g,wLI绹|8͚;zLxwIv??PÇ7 `ISLb0$)&L1 `IM0 `+  @ܻIENDB`pybik-3.0/data/ui/thumbnails/Prism3Complex-4x5.png0000644000175000017500000002765613137372661022216 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+/`IDATx}wtTUB'& D(.khҔ(EP@EЋ;!HGJ-γ=7wuaZgMΝ!?|v&x ^xwz^xwz^xwz^xwQeL3HM0<6LV?hퟴRThŜ%4iv%syLpƘRWby+-hR/SN)$&OIӒ$±0 ?0bԢER!=sJ-S"}f'#s61AMwd>ttAp"#3>;;yV(iԣ]L۵}v1sSo͝ PhT B BPhxq>L&m*ʚ#/m `bv7?Gfq]$?NdttvM*@jQXM 75:8萌bBsjJiB@,fJ)Hz+?|-QׅB¨l8T.|57]_vBۜas-%H>fq-y.1? Ҿ{$OT$}X_Y]v-nXX-E($oo ~S\ ?7 Ohumط,v?I͢ x']Pݻ]uYoÍBU!HqZ` 投o)*AK@Ku׊4V&Ju} @фc6ߘ֡ƄD7\e=[Ao6 %KRbT#!D+:Jc,((YlY*]4'$$(**BCC),0J.SIYLTCuErvB=Þ0i}> qIx3e|+nь`ñ$Jk/M{pݶOD^r$@Ѕ H[l[! jR]!%/sŜ.ˆj"Vf#NMk!NH]ƒ+z\ԵtIR,*SSxqV؆ RBBbP | /wJ(A.mp s:JڬDu,>-@ F -1Apy v^p~BtU6<YLv,#‡ߕ1LC2Ο?ϫiǎlj.+VG8WXf?g,Vڋ/<^((M jnm)ʬ1fnDLl)OW&[Jn%Jy <K߉ƎhYtCrtIZd lْ<Ƞy < ދw7@XTUiq=վjnX'6E̯bp WI'G ?ԩS &MЖ-[h߾}/)S$nyX0i*Ws4 5myCw|5IT,:m?OO, f͚?ӛoIc-?!*-T,X3 *eq~JõHQ= @rSW?>gb#h;,C(ZtK±&= v%9égϞ?䏢G&bp^Mq[{9LHp DkIpђ55k*NV6,!CY#zҫUmn0ֽI'fѨQԯ_YI:MZ"'0A`t@9{] v/22_3ϏJmTj,&mP Ml.ZX'!X蠭Z巃j#@{4Fk. pܱݻHd@m8hP btJ~ ŋ/P:ux{wYXW^%9[ɰ&>?b稟(uP:R 'mti*Թt)\PYK @~C '!@UbE~1\t2+hJ媏3ֹwSkcۢ}~{^{5ڵwb%Ī\ OarW;. 3ZӴՋϚi6Ml7Ha%^;ZP{vvBvG}Wq X*W@ <"B fNVk]A::iΘ`X|XNS, X Y۶mY@a|24D}޽{Zɓ30=i>{y5Z B@v%+K}SW`@*]4cT/҉#Z>o?q8q\0?g-йsgRT1K.:!FG !@8c-8[sєe.(-mB) r:f#a6uuh  ~?|,\%`P `{`̙:>jӆS 9bʘo&b0 h{5f-Zjl;%Գ_co8J30f % xJ*3g`aUD"nZ{az ݄ ufVvߟUR,/e9pB^y!c Ͽubh.`ѣŨ[.g Cذ٭Qb0yСg2|4-Tlծ ]:@k|14\:Jk;>Lvw 4Ǒ@a+l^N=8+{l.`AX:P6l7߯2 FǏgEiVZBȊ${NMi$.-O-y3`m~ۙݻ>tM=&;@ ֛;%H1!Ta%l6ll8ySNA0F>} 9Pj nУGI , uZbnf'؎@6"Cܿl*U=Dg>9.MS#{~t{ hPGjM3F=E iӦMiڴ) 8a,\P@2_aaT)Z/HժUYJ>O f: 7g#؁(jRK$Z&iC׽n'%f լܹs'p}SApj||3>Gq޽[;M'*V򱛘/fU` GWsQ#?_m~- ܄XSC=½^l2/X_8V4? RX'tKqA5 P!!xqa 8ùw1_J$}$X1̒' @+{cmdǃNg?'#rQ4n` IV<Go=ya-Z)aD } a?lj'U=,~Tz,`&HMN+=1mB=!CukJ .$@_d EafV xX,0lܾ=X =.C=g!dW!f 5~`cL{N% GwpPL<+ x|~be-nP>-?3@8|G9M2=CR^?,0\7n*M`5!>G n6\IOW.#@@ױ=C#DطB>^Xe$=@!XE(bOBv0nr 8.<e0RE$c(U>8ƚш;;jsÌP=c~ ut1!ԫ@ \7X@rP wd~p @̡^zI7a@8v@ z-|7E` ·Z|h tM8)td,>G5W O ^sPղVqn81X@Мy PJĠ_y}D>e `0&`&;vi޼9׏= I*h='bC:;8O;K #bwX;p|p[͖C )f !Lָ2KXz1@Aj裏01@ѠAz-@(cD3\ `y( ?!L)bp~\T/P7U{lJ!fP)cCri| ,_vhҥ\"b| _:F-8j0t6ooߞc` Ǐ/SROA!:!"8s[Y?Ȁ.W8eu?d ZrXz2͐5d\Iu<EaM4 D X=ñcU nݚ ({LKݐ*\RYD*P$jqb1Q |80H?I1&0rÃŞor)w@%W.Y04;Xl z|`O?eaգ |z_}scǎe!ct֍j;`1*o@7or?VU qc |̌]Ѭ>n͝Ty JAf_19D*v,re1s16^:%8[:E8}:a80^}Uʆm}(ZjIF]M"Ɛ}pL*,Է-X%׎u|͏bѻj|CJhV]=ߡ ?w- 03Cw$ϐ`CSp(RIԬ(l :H?~@$}@0JA+9h p>B0&l K mѬ!|"]uQZv=mھI֞lb#0:\|g6ߏGT H~W|J VDAN0 e>!_ R `úϮU;V?25k+Cp:MR '7cd(k%xaF2kdy)+=@@To"QWo'@pS"p HvлjWB}HT)6$s(46wYxbM~7 BZu*|z/ڨY05]τh3_V}Rl2T?Bqj gs ŖأL pu>`ȁ " u]J@a ;mpT{JC{eT,ΗsA{!b$ЍJ0O# XH.?}z0|M!I! dԵ*6w<ZV To v)lp WG8&:%mC>8b juxx] D8:9 )[PJȠ/$RSQu" YxjR[&pʘzͽP_ HyVPɡXợQ>pøv@7xQzX~+W䛌^D XDp!mvh;$\ObA Wn3If S#Y3{HY Rw{m;!F40 w*j &{>{ylA/f VB&RŠ"p;sK]ci#?|B Jh{;]u)g@"}#k7 6dݻO]Ϡowvq-}uadV$P $r(۴iʆ7&@+@D>?r U4"ڿw^-C?[B gyQ[%ɔxvcݭoL m_beL¨|T'Cd F%p Ihc∞%lٱ-]1Xh;@A*VͤOZGx !ڨFA,P‡EVm kfIkmУ>5_x=nY?٨ޒGYZs5=n4a ,pޝV["X=X@`qr}`B;w\ql#S@~6Fp}+Z/e]T*JvR'^HvCkNjYASV?J ~o޸`Ckҍ8N:ݻ9Q իW,acq t|va0c47aąd5n|Hv۱X dHB9؝z1`]3GyvG>?Բ@`a!,\\@˖-c2|r7n8ʕ+nm6{]#l咝 ž>F > B`rl˦JYhY$uV@^6EL=< @$?U j]TE0T a79`\Aj4Bh}KPL7,)KJxQ Ԙuv"T# U:cɜ# ,#zuLgᩲr\%#r.[x3]M~-8E‘ n;=sPA o``J `+PC:>h RpSX!(n$5U{XOȚߤE ) h9[ C1p14}t05as TH^Z@]eh!t<, %V/KJ){TsihT?п0!Hhzx!b\vhЌUp”dz|V=Q/e|6kT! Ԃ:_k xp=\gA>"uS+7p_Xnr:Chƌ92v?u]QVn7))ᲄ[o612H3ZrGP87uRwfĹc-@57=>T[?.#+!cLJ m 0n8(c EpH3fc P??nELZ))a,T8Tqҟ{ j0|9Ͻ8Er1)Tiڼyz_XլV=@l/ $$e4pdo!okczcqǿ -#D bA/#Awf. ̧EO-V!y@vq % BB~V $jl߾-0y~,:t}|F hsO XDM(FߔA 4ܯ\|;|LJY;S@ůwt]d|I 9!cLyj0D5PŤ" зEXx7ewia.$e(Y:P\AdW.hߧi۶eqz8Bp篢A8,auqA{7!XaB!l ? /`JOWhEU VAw`7o;`ݴP. 2,԰&|z#ϬƲ獆=ڔRO_henMWV} ѧC8ƇQKvpUN\N6V֭vP {F1 X4dŗ] Y*Ac}5 02TR5W?stWџ^,Z!>|;0P?F_ LB @@tl" . >l$Kۣkԩ"ߣ;?&d6ϗ5kO\'9:_ߓPdͺu02rt:@ 4 0!ݩiQTet-Qͬ_0 ְ!|CO3>}&cara J `u0GPUX%jtv, klq;yWoAM_?4V,oܠ@` '.\gf)1$B 4>a ?z0س 6!kf~z07>.Dyע/{Y(pʕi]<I"Š7>y H#c+ su\Ժwso )m_P#MOo4x}}17g1Рaq x!d#~\$k@ $038`.IM05rbݳgGk?jZAfaM֕A @?H)>&✵r}7k`Z4!uǼf]0߿B9|T \ArՀsVȽK.^" d{:sxwK)4n/r1lMTC+BS˧& Q@h-^4Pi^2kM'!\AibT%f8gɔw_sY+{ː/OG+q*`ӸxAPTU g *S3~SB9zضjWr A8|< i^< 7]JĐ@3?n^4|U!lSJjw$ 5(:N%:E}@6yZ"K=..nzG m e \ -p1T4p 'wpgЋ۲*>^' #n+4Q"-z3ˇV}-f;I(H`N< Bvs>XH>?,ۃ]&zg]M_X`ő tٲukH֭x,l~?.sy/0O@pq{ 'KU(͛re>k&r(1߰w4n/yd$!Fpf}$eЮ˗gTUߩ U?SAStt<͚3Y3CgΤßpq{7 °̚բ3<-c <wzͥl%=IENDB`pybik-3.0/data/ui/thumbnails/Prism5-4x6.png0000644000175000017500000003320513137372671020655 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+67IDATx}w|UUT!-jJM#J RE 4L,Stęw3o=ksrM~M~IN7{=kg#WB@hBI!  $!$B@HBI! /-<3e\1*/+'߶m*!,OHkpv>>)o*3:c?u k@ 6N{$;r婈iSROifጾ=K!)/!b ˡ=wl K,\VR  @ۏF{7o*yv('X(+{hؽ.Jv7TX ˹,s!DXe|=c)i  а{(7X}3j?=PFFy^ PDDlE")?!uo@X!ް{1,Xffl|.[ƞC>V,'Yɏq.}AR4<d`r'{;^> s'˫,`Szx-5 hAt͈Ѭ$'5NLHXIA#PW29X'bKNn|"] gQj쌡<:DEP0w@  !,@׏8nIJ $6)UAf@Dy7Y8x|(q{Y,nsS8>c6Lgx?RA;א2 l4#)nNt̀Д,?yqtz;Y91#YIpYy5/s@ڼk;=mr:g(A;ؒ# ``3A\MJ _Pinpv}])6%Dє@! p84OMxmx=+'Ede@KJ]3zZ_LEPA5颁&2 |&NG.9C#[Su\Ey+j [3H,<)!& gyiK4Fl2}U$jq3Oc:333'dee^3:-:11"`k޾Ӧ;MNɼt8HY-y1q2v0\Ῠff9iryҔWS 'ت,X%FGDElTȤtFrpy,BxGSnrr:j!]cxG Ʋ"',`%  ?l"}#$Vg@6"ܳ) @2z3ڠMAr|SIeFiD\ MpR~_bĮdL? Q7<;N?3B8Kx95s8=\Y P2sX $]̢{U<*{Uܛn'r{ HOp5Ȱ(`K{>JvZB ݒ8~ 4>j FhTF$Hw b.0> ⿻y)sxP shI*E xyyIZ j;"҄JV `w6-X)􁤁;?{i^Dxd ǐɿdKށ D{*P]:K>u;N6iX 6V] 8?X:@]RnOg >lt;v<ϊ%M" ^cnEuYk},d`ݘ;]:(w\oub8jpyt~pc1QQ" )͔qT2 `"@Dd &_P(צb׋" Gؽ+a'JaP7c `? LSy(|SHGFK!DK]k;C'- ֳ+= lgSAcͲ Oy4 &BBP"}Q'hS t wqة8YOf+;g e>אgj̇ʟğy e ᚫoʊ]Vks619- ̿T78AB$XOFL]z>Xõ ^ ~+ n9?ӉX:KfOp.5+v,P|6M]i>pe/R0Ǯ~ެ2 Yk0=tGI3:5& e ,xT-y wb?'l?GY9RNV-e}963:n 1M.팳 L9vTjD2ʛ0pH1pfҷnNɢUzzM z:;ݡM9g4-kiax]&s}g(rT[כZ@VOk!Q&z*`00%@SlWҟrϤ2dS\thfiZX7H#,5\ }4=`UR˜<߯(|K^xFF6z|Q[u:26ZQ_ OrPoAVt}Au-@.;?&bX FCwo8s:ΟG zzI ^ֈ[@@ '82/K/vAQhxYsvKihEOLnYd+UD_ C̈PU@zJӦ(w`0x |ZQ3lejiS'}qb|`}ˤ|T㈾+Îڼ ןpg4L"==D{79/ש.(ސzwrXY:;v*/ڿwWfAO# ˚#AT0)o &zUب2IXE'D!;R/U,Gڶ~IZ#yqكGOxA 8ɜZr SdGњ8|x(~|%5N_l~ЌWK ϼN\vw$ 2P$Qvruɷ`ډ7 8{J;h M}Z1Ya`hȖ KF@2gԀҴ 0M7?Q vT 袼S۪})Eo0&|}C-B92F)Rc U))zG^H{D ʂ72&:H;eK ϝE7<xF<"S*P ~t!Z/M$'5)4IciIBsӇ9DnI|z!Mu1NL}ez˜+,,W@6idܾb%Q/]@HL Mq^\cd /-@z0 ,PV4+nޭYo]]+ĵoT'}|KevuWW >Tܘv_aFUSz?G[RZz[O>;-Ǯ4u\0ny-9^ӕJ]X0dgKlKAĚMC rXHd0%)&t>*EޛC\ \@ (RD],@̠#[ix,~ [S27}Ml\ JބqFn`*8:>=%7QTuXɞ^u@$ttfnAh2l%Aj$&#GP$6<)'(ŜZQ"Xw׍c7x~fZ}x!Ӈ)<UE ;Kd^_?ʠ}&QL3e~MS,'S{'<kZ$rt'baftZP4yn&6w/HcLMQQ 43Z 00󻴶WS0dP Bp.W5U9W c(fRY>=YG{'ͰE2 R[Uõ~˖V8DH(kIQ$öV zy'_"a$r> ; szd<>'޾y?@jLwInWU8]s_뿭b}`hI(kLZ5?PY/RT0?oaW| XG40:ϥfH&s͞%5iHx .Qn F-ﳋV|s٤".I"Hf6P-ʇ,]R@٩%ΠDk$ Ϟ2*frؾh ,Y&KC:0m_DǎönS(f }ӵ/㥒Ncኞ ~kw*}r[{ C6o20j7kx;2|2yx֫F}Rv5!e,,(hlvO?HͲmF= `Vҳ@(``W\E 70>JޕLmMa=U %Ie'q000\9Bju3.K Ђ 9Ah@F$::~O=!JAG3 V>-9GOqiib= 6{HNhgMLt%馯zwT}o)IO3Ceۍ~v=!:e)^e:ઑ2rÿ|;4Z UPX8v6']l:O#bxjtVG8_'+bo㗅6bof wD (,P07ULۺB۶f  $QK1H>̟'$ bw"LjIAPnN VrN 0Zg#ڟ~k nqenJS;ݾnQijj@x:fYSK@ІjN#|r ))>?&v``ؽ{82f_{GgdK+bc/LjU+0ǃԝ5u]4Fy?Y?RYYJɡ>#;FC@?oIɮmޡRy- BGMD^#zSnA2p!¸&1gP|B:X>\K_@h@Jη0P-:/klq ysW^ U=@n~Am ɹaţ{_rhӖj)a!p2~ L#ʿՉ)#MhuqOђ hVZI OJxDPckгʷ&ufۑ1'TX4zڴ6rL sJy G]D1.C-[U~ASU -O& ʟf L-EN8 q݃.*߻^@tc+FWdΟYwdM/$dfZܟڤyPR/iY :44W|C.YA IܲZ'u觖'w8=(Q=H":V^ #3( [[czH6> i')A.YzRD&2PD5${rV+?~@4E3V`?| \Rp[DQLB8mNv@{8ch ?X+ `S~@,y ̾<Gz~1opn$U|>Tqpط43F(o5sce7{!;+N{=T7Z7 (`1@hÃtZ:u_pME:0`0$mΥ`jǫ.[sn,V7 ->v\ 0Yk>n<]x.5+ krjA94sJ{ P{oXգn$}$"~8(ٙZY:@+5@oD2'eF;ǵ)KwjsƃR5Kċ%5O8$30O;*+P܃k`jDF+NaoR|Jb4Me4ny<ѸRK3nndM):nQn"CK$`>54*4r9o;p<8IKU;&%@'G+&nVe>P/Sa`M JuC̈,``ue~U3HM@ȍǚl_Ԝa=k 7 d%Ò BKY|f@}.sSa$0\ULJ=S9dF8+=B>g= G\^XR,0o]HRGPz9\J ڢDZ`r^$j^en/ r b[zH$Ć $gR2V%Sb-LԽÕ\PE?=oH!u%u m׮l?57W5OL A u0꥝2p( 33 (j `sJ@PUVm i RGl8UE٦40+>m@bھq/w D}2I~<9*ƯZZDH% !A/ `|TX@x7,P_..uMH,UIKZO`ʛR BN (QƊE kQp\ϽC<)4w1aQ>b8c|Ψ>-{77+h&?@}ʡӜ鋡G75@҇D! 駵iC}X'&:PB"6e% @P{5)LrF<-nYW@!ҪHջwKs:)/a<B~-hEchHګ`HwyR2nFFCzةj- k;|+R oxXv+c5&k׻lh6R +4нFvH4FErφUVEB@0:4`2_gds*o7qP4w]'͠unK{ Z\=0t>XR[aÍ%Pn@χWʦݬj rY@ť_W5AF~([)ʎgm,JcU2$"&+eoEךAo:*v J#ٝzy98|DV*kxϙ-sNbX!LORܬ#lkXUlM(zotLlvo*pl]Ww/Llz˷D Ѳ Dcurd|(K)^R۳L6UC_`zT^k/8rN-` ۤMeZ,bNfV/5!hl9a̋aXnjWJ2p(HR'k\>q\ ~ X2TfQ>d{r  ceF&9I<yUwS[, #&*vIlѩ#uV/m঺:m\d٪ e(f`070Vz"1?ɐ・WgJq4'Nk]U`S:`ZPΥnl 爋v=4`X9CQ)l=c* nƦA pX~SugDgusxGrbŦ6ztA,}|>:,QV̊.bU&~2/zvr`>_JǗUT5= <*( NoDQt`R([0x0#w2$W "[YA? j+j.zGa Z xP7;qsʢQ5+S*h#/QDo:P U8XQ$ hk4` >zCɹ2{ܲ{H%cേ8|m6q`{6$Q.˝[m`?yUKLQe#BhZNؽC  !˗#8tCBLV>-L=!÷oҷBs \/LTL}i xX{n^ȁ U+j`eN;vbQA};~LX\WY:D]럒"E+bI)\ kvtaG&&c~yS(+FUiѕ:a&!BL,;{+>`84}v3gpץ^US?V_5W, XJaH ",Ġx^7p7o&L_1I#s_!4bO)؄/kF]C5ʛ>}{}-^ӄ- 1ƻMjє9uyF '< JԜP̷>5rlLtܨ(ѧ^RRNJk+9&hC $ު|8J '+K@i$bc+9>MxdQ|ez40`J0w} +`p@7p]\r ݾH!idcd N"޷Wh M,^]34~uc4YUm3TwާOgV0g9 &LqR]N5bWl` sxV$g]H#Z@xgn,fv)ǵ ".@nrO7k^ł`Td@S*|ڌ~@pşZDʇ|ox:X~G wNZLtL՚BڼQ$Jz)iфz\>T!5kZZWZ`%bOFkXn}cj!ֹ+ϨB/b˸Ts^ZWߑ0/!Y6@CWY&g +tegK=X6jp s{ԬW6O!7 7A,`.v)|p˴bI3.<᡽W|Y O*{"$铙:}@Fa ﭧM'.p-We|}>8=#.716@6nN;1c_x[E]}? I␇W]B@?+]- rPJDZCXk>Got-ut G$cz0@'{Ov{T F]]$rTA !w ]mZgݠ 86Tzh2-kUBFHgQ28BRr4ʜUF N {(>- Kv+زAeŰmT>2V7XRRV0R:^96o.ٸ|- J0C8O/N6S$/ j4Kje_+O$Ѯfeb^ z\qc$qo5-o#GRON&OVr9SFתE*Cж]0I^mRy%?/U:R 4S&Q/h7P<vA HpP<_J||rޫ ~o4ơ܏Q?zAPrmaWGGSf ڿ̊GU*_phSJbL`C %i-?42ośWJv!d>(^ ^Y9qi>2jOWr?pxXrezz K[][=U|u׮̾mn, A]<زǧ`W_J׆ D#6o ` yy)tw 5H6cSݩts(PÇv?@'̺kW@~ɛB@HBI!  $!$B/!IENDB`pybik-3.0/data/ui/thumbnails/Tower-3x10.png0000644000175000017500000001351413137372526020650 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+IDATxyxTUVj,B!@"` [ 2,bj2 4Ҷ\X*" Nc[9W27LQ|WUg7Xt_zE """"""""""""""""""H(kXx٭bTg^ iKx]%YҚ/[` 8IV?i6ϞVC5W ɮ ]ڿÛ1,Zʯa°QԿOI* *'udYSk T:Y'QAT~ <[rx hR;qWI+9K@C@S! aH 됏lCHֻ-#7 C)?*kMx/Q!(P*] 0ڋ/B x~*.9qCRyCVJ5ƪ&Ů+؍v"M %U>KXoY@#;:w<: D_EE;RTQ QY:*k(X>iQa֡B;b)9N@_i[As3 W5`* D0RPYcP( P >7 c EG]8𹕳QSl(?5*_;J 3  jUi?)ҧ0HFwZ;{Ea峜CS.a.$re1ad_@_K'H0OlLldh,5DW#Q{ځ@ )l~P)ֿQPDDi%RrC+=$vghBde]1b_V]ʿ2~<Wy} z'4S*s0P|6+\ &ލ&>a>|RO w !}JSoW|g #Bі00a -['ʧ({೤ "RM\]QsdzALU.A Vm !23r aL=R=T8"e }~aP !?KI Ws a@n`-*Vj N'rg92ܷ (A/]C Sm*6 2Fd0 DK@y6 |.jAScF`N߿j~Dp @: RZOdAPK@}xG 5id o55zqʄ`pWpiN3D("ο  Pt+P`aŮC=qGԸ*зwHYHp<)QbWv1哜ٛ GSy&|)29(>*\UO}6s+י 0ʞ̍7V`D NK|)P}ش=m O5 $LR6YGFb 13 d:pt+q.́z0 K̪p>N`C?_&ہZ.rRAa^[<4\Bx+ڞ#T =_&)60$มU X0AKbO!#ch#.pCouE]aN# 3%رyl 2Sl$>T$c _ E2aϐ'CBfSa!'C|@ATWOcdu &*>鹰e(op@w´ pG Rt1:W'V)F%e鬿SMÁa@Pg}aP[aAa_5wzx\ܟc58 :F7{F/"B߿5:#$-6$ZO>ym*X2h紐ra\]聿,š $!A`h i-i(>@bd6/@лcoY+[V K0 a,O %fI;Ornxy[A$LRexTT Bf ga 7T4ap~lM[gs,tT"Mi &Z|MyG&S|0t b)@e.Z1@X& tkr(yY8 N@V FȬ:Xn $F a:wU҉\n?\o?2DXJV`)D`i|T dЊ`{h F)X:_7v$5nظ hYb3߾~DBPT(MѤ鬧ь$:K1k 7U Y6'xŌϿk &4 /S0cpCƐbY7>4]>~8-5`ҦN@ei.nHghB밼 zg$4}[Hd9@tJ,T4 oeJL< {;K` SGzdP;a|`hZhfb`W )xd 6(Oa$'y!)q*)DAod )wn-O\^zO +%fHV:4{h$W {hl/~i+pF 2C==۷}ݍ t{rncY}@x.ۥr >g)5> 2\ ,hQhRO~10c ~ Qh[F&7@D_ g \/AL1B.;7 )mEf~~*< -oK&(:`}͙ *_TЂ>#"lwtm{2"~+Ш1:l~|ϑ; >=ź'XuIxKM>j `F[EZ$6EN({xHb#6Eo*=i,l,})CN8 H@*9lP| iPBiG5J:c,,L6DYӯh#Bc8Oro[@yd#  a9*Kk1{d Z䂁4Oe77=<dXIJF xAf Wz*0fM|` :fy0fF @e"G+@U (`gr0}(^g_gRLdC+"CJ6C m⎼ 0| ,t.ff3 k5 :@  g-3 6}sbplx~b,)Og ]@F@֮y4\&A'!@JL( ʬvhqL2= #,/@8+l{2k!ԉw_"E20Z[-GP`fأ㶋=5XV뀹OO:R#7}%pR3*ҧGL@E{Uh6>O % Yٗ*dhB޹N8Ԑ nu_0HII]AIoHh8 7~,1,U\>۽?d?@3iN_`*oO'٣M`Eϫ11R~xb@ #gyR46!'Ķ줰I2[ՎB D0W7X_W|rY1*T+TgSVNlBkbtz  2 `pfG ږ ;G{d H GoTtl A<% r*QSHp`,#`aJ5^Vcb I-xlMϙh pR:Fd6LSj9F K i}QI!:;>X> O%6@KФrݴ!O|S3 =Eګ3=٧?Y:޻{ 6  \4LP( WeE"S䧆M NHd XAE%)lٽ:Vn)|r SBC:l]eA} <2xtgC=tZO\BJQ`ߧ " L`1CdJ4D*LccM6~jgl8;'RO*TP/v4IJLμk58FK ԯ L3|7CP~|7Yxn:6 ITcotf ̟ڕex@B5X6vj\)4SDž^SOq MP]KߦQpDf>} J4F &0X{ $4^-J6Zh{^S@U3NahdzI!Oqr q,q a]WPH) Zr3`̎*hD̺*D t{8„UN+`ba+|1;KȗX t>L*TX\:<os4 4 b:HD ,;HPݣPYON"mx˗|QfG~Y'7@D>u82̤I* hzM~m { U v|?^Dlπ4 gwS`-ܟRK'$pqZLA|25B3l} ~:i. hJ_,@Њx׏Bz:d `r F0f>3{99jIO-Y:6{ Sה)XW FT}0J[N>^7‹'W#¡w4R|Z2, Y*RmU5 EJ+TX1 yUkQI@w/Gsk6I ;#Xs@[e.X8dU~iR/s6 ~j(%n1Aj_n-9~uŰd euʶ#e 쯂?x%y=VaScX !; TعKuQ9Tfc-8p*^ҨuO񣲓#?XdBBBBBKIIfuIENDB`pybik-3.0/data/ui/thumbnails/Brick-10x5x9.png0000644000175000017500000003232113137372631021057 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+4IDATx}y JwW 0þ  /# 7"+u&1 1|1&b;>OtQPLwUuus=w_ۻoB雐@zK Hoi4[- @zK Hoi4[- @zKLٔRت'jyks7 367{6o\lU۝x}1[>=z"moVxϹj,a=6rR| Yj}粆t|}eZa> ݪrE00, W}P*9: UT5sAֱaCX[`xǣS f7Vj:۫ r؇nק.y[w.W?]a*^5sZoS900?y4~'A&h1 ˭VQn; Ыb\C'('(!ohb)(nz3Bv C9yЉy?%oiFEZx1\Pû{LN zS} qE(!QQ GѤCa{A>mNT-,p3"`S ^ -Mcnf7i1yJn,ǜ_ 2oL b| sFzE |YX`T%"繏(x3L#.E|j`!c )|vDvj\$2Wݱ~r6{CwmNG8]/վu&Jb 52#q3w7zB52r'Qv43=eC! >?00#=}:r^< !1&~hӃ(1?r o,=Z_CJr r*w5}:2/J#pS>QڱG0!1405oKC1U,z*b |Fkp~a*~aXAd3QQ Cd@s )xCy<`F6 UA"ߵ_ՔxH"&?FLE/$ƆVNv. 9;Tf(Ы.'}!AN:%_@vp'cG뿐4_е?1xXiwv5oPNjRVzoj/[nxAWa$^rxYxmE:cas1$c,2r[qcMٞ`PW3ڷs/Ft* E]k$q:?h pSTݷlA4r/xL Lq7 F䋯تmyyfn^ l/0, ncBj$JcN"rep8(܅)g!աȣwi0g+yF-CO0S邛 oFCO)?]krbnǾ$ 7``QX6~2w}ab$epRZ&'_/!e,]q!$ ##5L?8IhHHi efl__ ;SW|!V.QX 2@TR6[%Ŝ;THKe#opE3Ĕ (;K*~ ːy Tx] \CHИỉ $te%/iFr'cdfDԴ~>,Uzx_|`ke`i|+ ӟ m4 '3p'8>H(&0(տJ7zIj#f6+0a~yhOz%HC6Qm9JP3­1͢#F)5Ó V${b^u°ڸx AT_KdD:I8$KBv8TA'ۭˮsim0) A'`XhnkSߦŶVMshS8[% I \<ˆ,^3grzTa8RP|$xms3xCOUyG Ul<֪YYZ"_lhNo<.6Yx;WHQc~`̻M+NJP337j -FiB6t::zGRq#)3T !_ 9[V$&_#~Y2A Y(m|j&أ{g?+QzJ<_úc4Z>jGKKe90qn'>T(2V >+x ~gKn7MiB0$I>fL7U.#$`'gzx|}f 0[5JjzE?y۫ 1\P(~eyb5W]>?KݾUM~jVƺ<ӼÃ_g<ۖ`Խ~Y#Ҩ_Kre&I2 `(2`uL3'XRE%g aȎ0$AdM l&X>r4ŵqCrGD_x]Z__5`Itx_EjބyTzָ=o| Sn%wK؁<_ =όxQ R{*2y)И9ڊ^l??\= yņ"̓2&OcM4 ::9*\~N`Cd=FT^{i3o1}ЀrrЯI|Wx8s8qxVCLIHMd Opu\;WeZJLbk:lN2Q3B|&*߇QTQ/#_o~N^1a~խ<*VUf]/ң2zT?=*J S#=lmԝfCF#{ر_F0*C+K"N>~Zo*~jzG&U|G#*zI_KJ۽+$̕WXzj2nV!r<49ZM-fcj.)ygaRmT*cƨz>6J=YH{7w Nah# &xNa1Fݔ(~!UR[Vy^U{x~zm 6{hfQV_˼ԣbs=[ D"xtxXN{ʱ҈ѯ` !ܸ"#۲vʹpT $L=pkL1(1*;ssG9Y{y8]A >8BD@TvԌBɏUe^~0K5ګWԝGulwz5r_GnܭܪEzX@ 8`X7 DӔR @\h~_S@t(~vQgK3Q]9=:WB*Kpg\lE/d`%0:p\ʨ_4,ӀP@k93V2?m(RgT)XzDGEiQHmFڸ_t1>R^n!>ȼh&).X 6Fx~*77e#_R|Z3j22M=Gs^=9BB74wl"Hv&(G;C7GTFn~ L=KMjbS.UJHM7տa^ {W Hvԟ.VW-߉/s56r6/_WVԣ|Ez@ n2Wsf$qzȍ6ƿܔRY{S|S֪\)'p̈YICT憀ThDM Uf9B|x 籟aHchatL@RW%rՌQU͒ϼtZXZ _tکߥ!Ð.yl1=tm W摛Vκۈ#Rܬ:G?#t6G9 Ra=ł)p`Oa3 =~*3OvoՅ!/ڐhl] Ðź*X*8wq%Mܼߝ@QBG8Ztd_i?tͧA:E aӣx*I87zuN87>@ãYIG 8[fFIb/ n/;./QO J1/{Qex5~uAOZ۴D=? hH_WB>#8_'ոe.{"B. du(y2]+H_vj^Pƨ=zomb*h4 \ dTr"~<$a0#8d՚Vٞ~]MLm?Km!CFo]h1 >yH-Rw^U+ftO~\߿dC þ4ۇP>y/M#2!>SUM p+OK(ѡm^G枨P1Ú˧=cʯ:V*T1ZfK{$n'pB>,U+նgGŖ~5ʫ/XC_tCGyPLT WAz%Fn~@ ES)bGkQkgnpa;mPJ~F`kRI*@,=x?y9 7k^THyG[,`M(;P2ٻ%J}TO |$K] n">W ү6(__w0n疹>6O| $@8Ah,f#IяPoh&bUH?αƛ\8sTq8gMFnp "+0S8v,٥RSF.;Чn,*y_45((RgKMqշ~K&Gh,gI(1;3tG ߳Af"=p``8T޳œ0^H{XL"`av&In0bφb`~1ߥ~KCx\jlQ gT;7d LJ{ kNC"1|ӫ< NP1J }m@7c$*R-ZdZ@X5VZZ ٺ|u gOsO"8WXbt[Ͱi̿a Q/ߐr;}o 'PUZjDO}TW ͟Ex}n_AhL~RoV{ZeqeC#nU쒈`7b)dwlѨ\AQSsxUj_03aDJ'.bq,Ak2Sz ( 5|6fD!ba ٻ } J>/w\W,Q|RQp_=vsVz|nI\}IRj8RnÛA"W#7ޟ0T!q0B`Y*OW&N$X +N^_ J`@Q晼HtI}[Ow+2Ѿ "WwbJ]qT?`w>[C'` @B|O= O-*`V РT sr O9o'`ˌ howF JL1~&oef~R'q"kSapy o0O$VSIWTb_{,6_yU%޻;W\<~WHţ54]6 oz0hPOؐFz61Is|O uS1î^A2c52xěC9A `GeM3:Q_%3MHRGO떆wBEܝq,ReY/p9U/ sc@wףZ^'=|]ړmPK"m4z67|mdd4 }R0O3Sh,_Gh'Oaw2˷`GTp2$D)cG|,;;g53 Fl_roju2Ѯ_"}?P몘iYXR/?k/w80mꥶ|`^НCgy%:,o9+hH;% Z%NM i$Wګ >dz |l 5RW.ảCԻ0|fO W`YR)L!tT$j Zid!y,*+jB;|]HYUj5KZY^*&JUӚZwt)v]- 1xvըI(vKYja ?ç^̚DPsu$*5~^؇ԓhKŒfHNDU8}RЍl0@`"=Ȉ=tDzH%u}j9F lu}Mkys>Ws/_'ЛH nv7Ć-k dAOI&nHS5 6A"%Q)4h$#FdIn[QSϧ˼ε}E'Jmθ "@D"9^>?^b_?|洏iw eg~ JX9B^5)AriiٰJH)IG Nu w3I)G;i)~w}q]\uAc R]81 ;h|NCQױRB âF c& HRg=.3-\f =Fd0$ݼD:AXH;JJ!@ B*|T!\nu $TVx S'Ւ!}bUd-) 7m8Uo7VzKLw/ h/ͱ iJ W%;}a/Y'sJ]±g.s\r-QBQ#1px9vHhD:5=='}X(V-0p/o7?X? mNkh<5_'= WPHP WQRR4*uشeYCÊk)0 ԫTLpTOpq'ήId]A"5WazG{t_Èl:=ávULARLLTd0#9 $xe tԝAtaGzy-cJp>J&n]LU}V6lGO8F 2y'E${Y9Ē)R4\@M²4$$FL^I4QDx/qygJ?>ϏCW{:Ӄ`󵈍^%b lE+dz,:22Ib0aVW9g h`$r!PB TcLȂWD;;ESBjL5Lݘ4/cH+ui&=U@wc񝑣f5M(=PaPWVҍ'_/QXPN2*PGPl a9/B)@登3_~s% 2x\:rr12M}x8GpA{GMru":1D/aK/Z% 3%Գ߳ҫ?#3? g<."lK20Is8A$aOZPc#in 2P *HMs酞Ro}{W%V~*&!=x]I˚4yQQ@< )XzP#oY@- dJ?J25 UqAz \/|Δ@bThDS=u klL°_MטRb1)h0Åw%뷖k aN2lBV%/^< ꑲP5v9h'UEʐ :g m0g>ЁC5C !.bzj3~ТzťddlM,ekW]rx-bu$ej񰖍h=;$DDΏ\/p]ӷiՃ'd,js52BE!ā,HJ݄r.LRr[ElCfx` T3}*J \ʮ^oXSOKϖa%w>yU+?7 raF#l-il.dKH!:|tn4>Jd6VN$B\-ef/Pj;VM!jilQPidh32+*=:&>B$x$k=i|aiEC*@;-!V]u؞d^:-֯bNg=V zqՂ Ճ]-?P7paXP| r Ԕ)j;mϑX n1(B҃8QA0}V9ciɥclIPx-qS>_}zX黥 %ӃZg3gV' VLwشhZ1{ظA2֝_OB雐@zK Hoi4[- @zoB{s(IENDB`pybik-3.0/data/ui/thumbnails/Prism5M-6x4.png0000644000175000017500000004507413137372707021001 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+IIDATx}w|U絠r{5@TiKMB@@Eqt&^ sNz^=9F?/{yֳ߽=W=~zPIR*fqj|]YjgZl堔ʒ Jٵlwiթt^-.[4sKs֍s94:,cﰍ@J|1Dǽ*$$D N\=<RK*Si~"ͽ@F`Jfy߇={o֭qcĔg *8 |lKt///_* .5nlPnejjJIIQiFDD02"LT;W訥I@oiLԪޫ9I$ԍ*q<><.T/&\ Dz,:pO9jZ4G @XJhA͏ 1`޴4TOϩ8H4}-+4Te:B{JϽjiXM5P)*R"85%#EMHV>Oy^/1N*6Z5Ti^p8TtTQ*--M0rEz*=:T権RCCx om56Mmm ӜBa9=@R[8 VGײ_%&4k\~;Փ^Z hNZLH(ҡJ❦5!L"!yhXq!u8I߱ޏy#uNZXXGM sjr|=9j/ULW#iOMR^UV-## ˖F#0֣s.\ȯ N]هHLLTѪ>%lB. dzFїl>0r A2F.0Vr"Ah/(z/7iEϏ2o>%K6X44>mYa!jXzJv?/[V҂-#^]䮩vxH#( Wb$9VKOe%0&3M )IcBTX1Y YYYMJ$Qi$p4t _Cͧ';ޟja~ V=+\BoY9/;z<ΒafDh5 _ڏB[/k$ȠO7e*BU`&Azg,濔!ƕ5U"nLJ|)j oj2UV&ƫFq '1$rE;{=n ;kw> k0샐eVпk ("MG؊4DAz6w%arjM\Ji ]WL%~4nIAcS2ȭ͗<\wL&t(3ym3.S["%1a8Ϋ&G~y*d?y\h x,|fz L~i'8D2I8=Y("Z ї4-ib>z_g@Ƣ((Mgd}vj::oK#!D3lpciGN<y$TpdLX K3Ji> 6+v鼱Kod։ƔܩydEEf@4D% 09@htb-'5lKO$lץUƪ9:+5./[ P l-/$H0ќgqC&РvqitjJۖ.N `C6VLc.4>a{9ZCjڄd%,AMZjDO I1Naa/ 񕏑\NBZ`dS].5:6RKMTcҒt"U)nL# #'$$^aH2z&pt{)|$Ԧ}O14SF;Z hE^t:ج 3ma0wdX(D`O/~-Ñ<_CTF⚔m=ǧ`}".DyW'm|2H#H\`w<jhrX JNNfg:\Saa! &g#tl"l3;pz ,OlJ !2x7 H^LHIr 'UX{QAZRF E^zV[hPv=)6as. T xλ94 >z|' ]jXS So'9L_~D5H*,U e3@㰕p8xB¢h huS+o[@ r*N-Hb]ȪA(IXh6[}CkA.`xH*|^ }lнGNY !E!Ekwd'!g!= )0u * pdw =D@,A)o6Y@@/Um@upAL'R Ff`~^mMsatQ$\5,m=Hg?0`WbF2QaY&@a^z4 +yq?O1[o#>ud"=~R,"\ӛ7nQ)߲@$ w--Θ||Z,gyGb |Tq*mV-FA8nGΒka .N3l` ~ WǗ/'GEހڄɚ(7haaP~5Ϙbguy@I#aYyF?W9DR\ók{fOOSo%[ٝR\!aQ.BMJZ*ECwekf,ȔG2½7/8\k[h30h`B13bޣDI d kd#!ݣnq6N0k8 PEu@4W5}EU ~A~: R0@dy I@0c 0E!z,HpP4upVpD ӂ@r5G .g7@< *#Ao41IGs!}xt̰q<%? & Ye6y(} 7T9Ew`L7]p".n 5S%R^6-$ mȔZֲL&D`!9B8iJ>!VqK&7\=/*ۮ*%CuX~tOLG imC nJ%M>^,DCY#([AZM.rrg+gI9Aƍ l|o/IkR3ISQ 䵡\Gr$ Ã\}za?A@LTЗ#Zxc]!CӳP,w dM>}?;h J$5D mud-j~ T>j, mĖʛhrxW/6P,<"ۯH,q9Id 78Lt8޿^,iE-B=dqN1I:Z\f. К$!>I Mh..Ԗ' :MoO.!;d7 dr r)]+N)_h.DHhMu-{"/2Y*'wǟJgh1}/mJ!Cσ' 9oW}JRf>V"(9jNeu`EES^yIMoe008anxhOKa@HYq'!ڥk0ih!B :FCLkz J\x>'!t>D4JsU5 ր׃ܡ M$+ӿCB\d9ץJ^AC%dtJ4ƣ& ~nv:[w}#>Uf*`ECaٮk`-pc@4xn5Q-,_ 8ˆB1fwnab7Wl-"=澇i(14ؕ*n!76FG 3.Nt2?v :^Qґ]|m=QrVmƦ(\ zO*C?[ ?43uDJ%ۗ&.'!)[͛r-qB+c o>pҋOGPا$/VR$kSGB8t SFDqB_&-([q |>%{~-  YQ$duE r'ŕL!0 ȢI7w Uy {h@ȺtΨPwl=•<>>ogZsk}!z jġGŗ.*'΂Ic&TRQB.<q iRJ-:nWwcZ$h:Nr"-}Z得}+k9a~S[pQQbZIȆT^nde^)גPMlw܀q'*ۤ2ӕ˻5đOLr =.a$ ai @hХZ7 S3?(vi_}ҸnXPXZoa|Cbݺ*u+K84! э9C<>M`HZa, th>5~BM{g9$hB42^`÷+{c$b¿G5h}g2BJل,S0m4>V9r$<6;Kg;uTQ$iB G?F"ރ̷ qcا7 IT%FtX !I %4t"OdQ"#d!ѵtр>w5#v\%Ip9'xttN‰6 y55iѽյcgY/tf<~6,Ym.j?=^[ vh6P)YI)/_aLy:z[dP }Q΂lsdIvX)10}.!>qıI 2D5uy>7n^߷}C}n5JJz㺟y:۳Eؼ"?+ +v~Ii@(XPtr @yFjs9Zݿ m75ts* ]V<Ho _ ?H MDZhA)tE^ 9?¥"b/tg#(.QrF :zAF fP#2(>ԉ *3մ^ggX-MJz0f ˚[$!ǯfA^CBU0  AviMl&`|MϧBJn6!W?MDM3H]({F@Scޱ M\, CHjԭO]7ܭc}rH{VFEzUog-3d.E* $\EKcKBؼlKCi3an! [s <+MܸK]'?u3t͹݂R !p4/j`"[6#&ps ƏEd3E&bIΒ\s tΐf/M@F\CRD/xbԾ/t&MsP%.t-Ba'@|3\4֗TO- ;(uqB]9`@d&^rǪXL;WgPq |#zm|Inl$nPo paX\Wwl9dB6[shp-zE4+8#fv' t7o$)6\ 5|k"V?y߱%EHR2԰jYJwN?a(|a[ݚ_!!>2rpu#h@G/>L-> 2#_ `O7[&{Ñٳ{ ůtǓը^|o|aK>{ёZ4xwS= @ UA f lԇ&8j!s'5,0emIcOHb$[J:=Lr9҆E?xd#&'P#nb9p(|~ةC8 Hu/D ]Zhޭi~MϷt"dW7ޟc~{k&7,QNVO.s7uMԳ,骠gO@aCY8S翮F>s[6[BnEfMՠ_qI݃. 0149!]0d0Ef84FL%@?@{&9ĝ9|U@lLbԸ~͓)~+ӮY.NH*&A@QZjeúA1N]BxRsHx& \vU@y~¹3~~q 1>8C|~j2~<-4@N@<۽/OªGf7@mϠؗID|['qй3u+.%5d@b }8oayӹ[}a~<߾KgŨ:bc܏-UNHa\r[l_;Ϋ>Tt79giǗ- FRIk$,bo=AJMNLQ@' #3@OULҦ^WXӆy65DֈHw2:jY@d 9ý~~ ֬hXc ykqL`+}7nnxBR*F M؇0/-6lH5 I:K;5S_j ܱMoJ! B:zqv0PG[Q7\_H ]:_j1«*/j-^6<T+Ռ\H qlu1o<~m rQj@} kU"X͏@,[QYQ*?S?&&U%2K"4FL*j '{[c#ڂ7KE$R8 9l@ȸ\\d~H!n:I%BOOӣt3,ر}u=i1A?\cj>"<8WĩCG~x^W޿SëXǚuGfGQ7_(5ke07@XjmddrMmc xLH ضE `HCA~Z̜ Wf. uɝ8J\=E)+6%FБK cdpm˦i޳6!Kk`ܙ4st@Z}:>7TMy-C Q¹&纰Tv`q~N`qc\` _c򑭏ĐxBAݯ4B!7뙧Uk(Pf'3`u\DP[-=s N?#dx^;7ؑ?H G}pU`|64bfsE1 +u5|t6s};6{a9+DZI!o ЧGmGt/.{`]XHɎ}^'kHL>ƍ! `I(B@T""|&B{ xSd**UgJ"7^h5g6 j+r%|p@fMKfa.QK&G?$~t =bn0/ytkG031% GٱQW̱{?3w{x4_X tq2ִ*8?v![dJ=u'8H &H 0Cg܂) @ǥKz?MA[)B 1ï@c1ԇ~ =wh:9hҌ4+tP5Eœ1RhkDO j\&MŒ$-f/! @0(r3z)NYVfe鍝2XH8A4|&݂ ;c)Cx|I'ӛzT<|kdzímsawWfr]*.Z73G84?V+0oQGߟK^m'`?>1/ƚ]I$ԌQ7~;BPdZp,|8~㏄A`|ęF-4a.bD&B;$sA@`8bS3 -,r .am0KxOBТUq 2.uNsh۵>KP.g7ĮNTø7px $D 璬O}*9A?ÄᅬcZh3%_}.rp 4M}Z@$cr7 N22Tf۶U8#:G\.b|nur)LZ]9v3Ѳ317`gWgbc"ٚR5q& t&1tU[j !en ]Լ؁?joT8$s.{u~F\%SOZaT QiL!nh@ao-T~8߀1=K8_py?Lݳb @yUqȿ{BM=^7u"h6]5mb0sDrVH{;}ivD:'B>qLvOs!G4۸^kq)&u $&fW.1P%" a !d׀=z=4[vb52RıcjI9* \It45L/١VQ`Lujs{'}|GMwBQ[J$4g9>n񝏍NxBHih2G؜ 6du O o֛GPp,S':/sF;eL#>``2Mޣgvg@"56q Eˉ&h{@N~/?whQ D-:bw@aڭZ5Y7%sF<NQiI5}[gR~_mʔF 9ofHk;H9=?(]렋b&4a*27aL4 %lw ¯Vk~4܁AH (Y|ז+ӇyiG=8)[&sSy-.il7I { ]^p)]7_A?/Ys+VT>FF}?0h섏O K<@PY$9K(ZȜ2 L5֢0Ľ$8se!SɹT[2۶ƫ/?ȴxH!A}|x_jwl{ڲ=z/aegZݺ};? Q{zE.7t W)zXFMt:xqmXWyK7wÕp0 $5HJ,)A>Չ<99cG[!-C97ӹ3dYa[0_ l%BT sxr@^ ZJ>z qjsJ:ω 3@xd `>xGQ E?z}oէ|5oS[ c J+EC;ٷ^|0A" ZN9D,x/'0BM/vc]J K.f`:id2[r49!@h4q&Rubݹtn^ꍶج}l"M=MK (/%Y^:UGϚ+5i-L_|ï$e\=%㦤!YRHJs'&dlg'{",U|`yv4%{1omʐMndmHp?[֮۸NN6G?٣t0$qsπ`sv\k!*>$ȹ++Q`cGJGP7}` C蒖rN?*?Eq?jxmcVnX~-g66|K)D+Խ{ 0[@@+7 >8|9:] v*9DA=d֝W‰Q*e ||{vy@Ze?y֠+*4 "m񅅜1$M0/S:6Wx:D zV;w";=7k6055Tɚ {lN޷OB:Fbt a+lxݫ >ݡ5`Y5q;eH`KtQ&>blLKjtoGJmk; Ч[nHsX(ʏ1fXQŏ)[c V9T޲DGqn0͡8X M[a=DpBaB< ~UEM!HngTӉ{VY&uo]dL$1:O ÂU(dydK&q}OjGiFj{>aae"w֠dтRtD-8_6\y?A2= 1pՀODq$>"o !!ݷF͎`Y {5VDia-^w/49AtW= vkRn;9ϱĭwb)v-y"3l@7&+S:qh?g@T(kS1icۛ@]ýcyֺ"֍W|G=@4e НO ٲk-"JH]Z~q[˗U'&0 b~*v]D׮(WrA8d$BLɩFj1晔*rq^}ӛ/#U:%ӓ@d W%=>[Ϥ;cMn~6kpßy&E̥4iUF1aDAo:yGDр<۹T鯟N ,*I##ZƩ}קRGkOmG%m ڛTV~^c,-`)4nӺ7J`>SJc]Fc*cZ@ aBVR*07ؓlFzbI"/-j86^}e(Kt ϖ_-H.V\vXfl}7HH T1?/ Egs&\}%)ttnpo~% ])/pR NJazu*@bIQ ̡#h:=+SyUpnKTz8͝ `!>r8c.'-hK[m~ tB;zO(^G>ٶmǀE!\<&mo;#>G"T ZuFh&RGƨxϼݠ-S_@ 1]8DD]8ϷB8nţO/*[WpaR۽n6 H 7o|! gǰq8}jR7 fq_ͼuhYC</vnhJd9p=3F %>|b,n6HOAvXg5}|sO>=?(bN1o nlT_%ռ FN5jXuu_Rսr/؈vErgu*ιD"`]\TZ|[͌)?Fp@%bx8\ڴ[-G4U/[hX"qؐbKt.|}c'|;5ˤǴf!;OZ"ڼy1|unl6!Op7$%:ʁ$uzK-Uo5 Vᡍ( `>f| /|~&xR_0p6 5*kü]({ۮ:+ _֏]]}nTt v35gOvܡ_U0#}S Q Q qr,itIENDB`pybik-3.0/data/ui/thumbnails/Tower-8x1.png0000644000175000017500000002136013137372537020575 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+"IDATx]itTǕ `ݯEڷnI0bWYW0dxm Nl0]d$NBINə3'93I<5Wxjz-$x?߫~Vַ{oYvE`E,Xf2Y"e,`E,Xf2Y"e,`E,Xf2Y"e,`E,XfMO.TgMF:/>W񪣓xy|Rof ߐyۢOMv$궽]i$@-Y4v7߰iabא tZ񾳣%?~gSi☊|}?qfU7;EV]Q"B4v{Z` ?`l`wf($Bg 0K)_$yl]Elx.ոɂ-$͠>x];("$%f)BvT ُJNҿgKI0GWi)"p =nq' ^Ƹ"~ f;Py_@E khYzat!kEoPs1@b̃[p8@4&p bq;}y2!0) RL"oC6U=y@0zOy$̨AυϜ$'RB}.cT8Ѽ$ 5v4CL/&bEFBFtg;wL}z m!ߧ݋&En~ܡ{\tzLV;;rPN0ë{H_IU *Jp0d& HbVcSezẗyqps=N#㱘{zn3AWcG|{OdkT4y2I,ƃ 1ۦ),]ғcԠ֛Dhe?N ~lxQ ;.UE7#":eQO#2ze{: c#=ښ 22=XWI@ԤgΦ`ދNf#J p(~ޅ2=xi NO2$*[YNhN^" B6I2UM{Zv*{P^~]V/F>g._.ۺuI4]*E\;1B(cr ɏSxL͓.J"=~6X+ %!}2j82mVUN{fkz%} c .܏5\Cy٪V-˼p(|ty"Rĉ{!ҸA>nMr wL ߖ_v =N@d(&6=1 / ӹg*ʬJĭT~cշ#(&*gES}Trn S170JT[FI(Bz9ğ?+TH\WGir:I&@έXz/ mXz Ią鋸LntHYQFy1' K>=y*LJ 54prއF)2tO"qfV;SD,5 Ś~!X6O|ծ~u"Yt[S]8'/yS4No%Js --%,v]93:a{(SOG'87+)恏\Y0G2tC\4x] ^{#BA=!Wb8H$w[`/jJ$a;TC*Lһ*Ob!UϨr Ⱦ:'r35 <7 x0ݹVO侪Z|ꀥd1 d93҄TIӁVk cdynIH^6/ ۳ ėRu!1o;lۍ(Gڍ +$G7,8ywB#ǔ,);͙DbeXw[Zt؟h==};QVPMn.1>}9-56Ϊ?$2Ľ0OC|iX4+~~8O7cun]R nhv.;|*^|:_vHkp c o"{8ٳUF;خ*-Y'0+żx<L8␱vL+d /~֒Uf<%ZsxUw ^=.8I[Qdx/+-Y;]@\lF 6{fJfȧz=0zqڰ@Z Ydo\iP\ٝ-'"_/=(d, .'\+xYmtCwu6 B}LaaǦMzog-Bߎ|o7T)p5PZrGش4͑$$w;m]!JG($}xmT, e}5+Y5PفӋ{:2T~Ȇ1u`|_p^YxDs;4h$WlKeDݖw<$oP3{ M9o f^a"# ɒiɒjbgY.jT= ʖ':-Yl]U )'){  R,3 Xp4SqwU(h{@ P zլ늉Cb{UX{rD 0сqs3A էD]p,V9 $9} lpvnp>蒎=J>`j"% ̹X#jα'$*C$%_$y à֪~tz񡠸_|/GSUݻ*LvtHMO^"Qu>pnnYx Rvȫ3yNU/DO6z ذ {{Ԇ9)Tq5E.nR4z?u(SǼ 1a0SJ4"fMѝcj[/TdDjM+4"%h4y _ p,ߌ4MpT|.[dH/ƘeKO&E~߭ۯ)o(W#utjNTn{.%))$<[ȓ=U1:^iF(InH<Y\ߟΗ͞:ľ HU%lTM8mL&>F &;19Y)^lWa?0}we{Qf lrG$#î` JU'Ovz4onFBަD2G$py/D"#"g)?1P{gp&BT ͳj0@ ~)mJ{*PQ {Poqx옆BH` cw1jRq=GȐ2I0ꚹ*Pk^UDž2@# gPu "|!)⶷|b>!93?=#קuNY6m[;r.O"22܎|Fu1c 5X_H R pN Bץ @J#\B&*7h:|$\9#v pɒlHڥ̇r^ϼɺI zwGуAV q(M;n]Q,~oTgfL}^q`b s4C",">;T9Ԓ٠嵁+M@Є'BD#ތĆr|'Q_I/$^C1g 0V@g)*]3Λ~#9f^NvS5~n*-5=|9(?ܯJĝ<ѫX~~M=N6nj̜h -Qg!M$#&Pɜ FM\4.Rtxh: ?baoUψou%;;[,><MU>{l#Caf6^\Ӄ|ᅧߞ3{cv[A*Wײ$t& I ~RTz rt-ec\Ӣ%ÓE _c(ҕ&sG*Эˈ|~?H;$7 0'71)<0x9 ?C/)w`~^ ="?.G犙w^nͯSeUWfhPy/ `6F,' i,X%l![W@^㴉RŪ,sxj0넇/xxFVܙ+d}mX]<aI Œ|ډƯzM<NnwӘ*8'=x(n̼J Hs{dKi+*_ F 2枉^H;tUk?M<vA Q 2*,XCPJO gj,,w]j3%lu BW @;46*S$ZØBorC+-&x?}X1+"(M:*[v ,h,Iƚ)<2Eb |"`NG^?Nb7 ty: bc!|O@bh٠e, ͚7>^y bxz~w-؃[Ժ$D?y57Yz0ӞX[Wֳ=2)=:xnythN-]/)Yv2jx\2G!1 QQQ`q軈J>N) {ҩ39|Cqmqoo.T_^+ 0=޾arlMXiE(3$8yoHdPjdV>%G4HI4%7S"|_|h d@xsCWҼ`Sy$ |_)nx44VWfLh\ܜZrzv,)5mq Gh.lȓ=CWutm[^cS+hу`FdLݠg8Ay-//GŁ׸\r[c7͟Iq*5&%ΨkbMnOxs<0P}['[Oi^xMCBY%=.i*V(\)8&V07 wBHnS݊YYSX8.5`"@ZvlS^&9*l: 8Ql9{v| OkH[ % 35XU5|~]^=p Y3a86_D3vnIO@ue5 zn!N>c5DtM @\|p]|Nx2@# X^{O=߃Mn"X"e,`E,Xf2Y"e,`E,Xf2Y"e7?` DjpIENDB`pybik-3.0/data/ui/thumbnails/Brick-10x2x9.png0000644000175000017500000002340413137372622021056 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+&IDATx}y|UUn R{Νon2@300A (K-($ /+WUʮUUz{\J- g߷C[6;.Kw\%;\%;\%;\%;\%;\%;\%;\%;\%;\%;\%;\%;\%;\\!yࣝm1nώVZ ]hh G׉fw2.VҦ׋ IbaKv`yS Xx^d:M|:%{ ҟBlzD d2b]g8Y<X ϰ>o9ȺM8gK+S-?c{`yrGĽ^Qn|^dᠧi}k<2|Pr+&[;"= 붃ywbht5 Y>kbp0\Cpf 3\ d7Ș4\\_O``LI'yl\+Oc.~LSM1QM9!Ua32 z0voXm7 VD0|><"$z/E:Ea"2Ly-T8e j5t^݈PѯԠ3-jAН>uCz!a"/Ǿ"YD8en ^9 __dJ\\5e],b>Qg Cg a+<=M  ; Y??r8NcuD-oV7*,q g\RPr e?i`!,Ȑo $A& &^] C6E:Fy Liy>coF%ay~+HE7:;aK >kjp @Q(j N;6;8B0MEblĽ!Oq^Fz>fU⑺.]k7ٹgLd܌Ede m:@ 3%tܷRKѲ CHd W|YtjH c)|  O]I7t j @X.]{ X$#-(1WxqleD/B:]g f!k2L'p1\u rA+?&мF 0 'FF-lddT>W9b~VVsUX ~ߐ`хS/@ 8>\@fvV㧽lacl( B8)qf(Vgj*^k5t :-[?mʞdXłò'K@nzK^cst! !+Sq{~@}f) +dVama@2&`"!ͪ%z_9T$I6f'Xx\d x-}, CVc ZXW8 JT?@G3 D10Ӆ> PH^D_>Me |}:A^ JN ?35į AjK71nr/ p<.XBb.,:BR +@~](M~'AP` A)┢1Cth'cJ$Ca@{ؚAK@5.5%ZgH0 ' yGԖV}0Mh!p jpx0?Ze Y Pnj{u:E͓1iz J^],DQ 2Nו$# $vaQ29pC 1|8~a#)亜:6-MF_%׎P{OmnBB!pOY>="EX 880p:i׉ڪI@q*p=ħ~L+oX}羃yw|m~&C!@e];O2sX|nµjCΖ! HIQl#:^h{"IIh 0_gYYv =/օ8C_*:.Xvn9N5\\1 `}L~KZ3!YW DyGz>e?Y!2q~ɶMjv$ ?<7uyPt-&ZA <K7 SmߥCr% W@&8,wFխDHF[78\{Gp=1J+-u{;K=KdZZMӻ=*(Ym*ny]Z4˩tǘ7EZG360HL q|!I9Ochie7y<7/b\Ex7UDa8n> QYNz-+kH8QMQpXD`XMH!3Azb`S篊wi\?۫dK%_.*8flL (~;b =^ Zuo ?-hidSc H2rsU?vD,LdɷIo0SA=ï7eC%o-Hg紀BNȠbZgIQ̙$7Th!Bk"8xh'1gж_HV=窎e_G:<麁= AWsߟV(7Z;F`9W;TUdS/iCOϬ |`܇ \,gZe."bdsHs:IV}.ns/?\ i=U6V$6l9DdJK]g!|,5+A31pZܘzDڦ!_ޟ-AdoB #׿kYpqCsH>Ԣ lrsZ];kR%z5p'"yۅ^Gh1o@l젧$l4 HK^@dө~sMLd {Kn$5В}SP/]"⑕U 8JuNf+:'VdcN^/_UVAL]g|~Dz6@ *C̷AVg hZ<*\}.] hXz)2wPcȾ)`IJxfcAHz2CYbi~~v$+h>U3y[7{eV:^)d&(Hcwܳ}ԯtZl喫j̩ڋ)!LC!}&$MHZ3:I^X+ԄHHj7s<ГҎhVt1̈{/>e;gō xfHφq7@YB.]Tuj43r- &Km6{HHѺGZՄdY=$HoZ fe8<OSНaX97,W'DnWQ9/8X缏&ͽgv͂~[f&ŰwIJH>* | ]ΣF٭96cHZ$w΋kQdCvHVf&lUA;_7 43ecAJ^^~LJ{%^VĺeW$L wEPL&swŗD`Wqr>!4@`$1rN)E+ fcjТpv٣`q eWPOZe ݷqV O@$;7USDՙt cwP$, xx NiކCbצ4"gfJ_ڝ>gODj_KR%{ẊXwkJ-. żsDŁeܿeb@Qb4~c + ZabvV Xe8/.V,j.` u7Q#Rn[`1%2s¹a 36%4`I_~YܡS3I{eFov8,M%\{bC,˸bNXLonN+Mq67IOP ^a 貭s'SCa>QS9=|; IEAxbwO+=eS'%O2 0 21s UY^PFJ%Fk}&4քGBMU.{Sh}#A` 4AWyRDp*ʰ8 챘tǷKekX¼I9]Gp/߫;#>8,s%jY1~ϻmgladgbmܰǰ }kb78Lf@K I8LĸQouN[7l VSc N3nx qzJ<ʛV\gIچEE>G$~cDpwr#z)q ܃`WOP#6UO"W@R=)o,* r; q_qX6+$} &C@K>>C\--@d HO+?oGX~gX؟X;xǺF_8-7cȐ}W #Sm]k/{B>!v&\> 3$T6Ш5$gjg/ ?σ7l消8քN}33mY[O'bXG^ 0,CY=7K<< UyVd)Ti\/_}ѦH)v8хSk*>^kӢ3 k-`jH`m-blGO3u;"R1. `x˥z=[ٓz{L$8B1 73Q׳}MϢP4[@F%^\ &T`9;6!? oWXh0<w R+,9H-qY15=dM Qe `"eysƖ ` !bLFgLօ4N5ȘPxJ7[קIolI- MƸoN]y;+!X[Y O'h~P#U!P6s3eY3vWaվͭZf3Eߟ?֖L>J+ޡY< F2gM`͵X˧ǙR0?^n tރ/I;MqXw+m6괒,RA杒cY9 "bkK$ü)K]*/%`a,+КMiL%\gDL+U8 `RřYx:T9UJWȒZ? 'Lo QgOc m %jJQh$d JX^` H00 "`އUy|@ǙbH)?|9% n#ߴfOlH,J}i+HD,;4+؇9jth$ HP Xs< "H$?@|>CI< ID2,R7t$ MYk[dߝʖ|731~qSr};HŽ{oʜma8Ly+2{8V(SekyEBU^ S=}t;7EڢWH>EVne^Qc30߯Oʭ]-n֯8X1M4+}\F~j!ZAk=bJz  w3/L j~d ȲqϭрL>Ѩq4   pX1\zyB,m͐ӟt1_ \DcMVϑ,<+rPT0\czdHn`IBmcTxp8(ʟ*X̞IE1Cވl {W 6YzsDqOsS@ho--z,Yv %S\LJ o*K;Fv-WGŸQ{) ?P-|ހ`t[ >б^A,Rxϟ䋪X}{Xl7&c~32wwٿvshlV(ct*[ }q!?#EM0i ~})cBp"9>_!f f緍jwl)skIx8չڑVsCUM:2{@+3)1:SKt  PސG$CM%5Тo!BEB=%/sDa^+|g**WT{$K+,UP^PZbDiUW"$b6PAJ2}!!Mjϔ{yƄ~E⑧o zEp6}6J۾, BX5r8+$hv  }6DdTo1Kp"!b A?vWTlˣ27?_QY[YϭgBn'fV!{ᜐ,)KyA^_x P+ qxrMT|i[_Wy)U[+{oEZbgX|ٛ8> d$/$^uA; 5+ܡ6Rc"0lOH年V힥Qγi]Hq?D=AE`MLKBAJEx`9+#@sIKEFZDD}|#W6ĥ{~D:U'Q&챺sT^s +Dj3Yfv8(|.º4qER=+#Juі(@>)}INx9ؔ~O/歾M#9kOsM+mӊlde{ڑBJ!;e1)|i] qO6nkrMNvem^h88nhfDH'$X8#$V 3cʦeI4~yvlDUhIP#j Yve8,"Ȫa~1^gu+2TO5ϪNgv'%ȳ۶csUI4-*SAJ\o? SJ=DhZRNxpITFߵJx^oXQ͔\#lI4[|Yyo=js;l'[e]| n"zyOOn"~iE#Gܦ~AMWs`^N~7..........}dVqFIENDB`pybik-3.0/data/ui/thumbnails/Brick-6x4x5.png0000644000175000017500000002717113137372563021012 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+.+IDATx}wϟ50;lJG\H]P+Uʢ`a-c4c#`CE(hb11WSɦ]vYtݷ{{ssYMSQ| E_BQ@qPEGQ@qPEGQ@qPEGQ@WBnjnCZ+=yxq&l}͟ 1(k 2poǣ_r'9M~eÇ;F 'W]4!@ ./;a$չ3\ ]޶&2 ̿Ք°S-ƿ/LWSVqtExP7 qr߫ vF]gXfnVO qtQ2?0:6e d첋Mu '^kIt etURБSĝeyƋ%ޯ\g2>bvr&#oR| aTvl&E*a?AW w*v]a"\A|pH0SFaK T7xd )/Rԗt0Àr8¯+ x|d;lMw>6b|Y>͵w H1|^ 0>2l5d* OPh9CŝkR֐!F5)R%!2@d3@1f5p~qd2P=ydB{`fQS^CvQM " (ɘ?P@t>Ș# #llGVa%\n<saCg3 p;͆糼0뀛_Jc{%Ow)g?R>#:#TW>ۥ&ܢPRR"bq(O)yܝWyW8sgmSLny*لs2ͼ:u~Lx s3`gϫy 3bֻ!BVj>T Y_=gw yx|zxT9p4+Ow9L0 S8wAAz(#cx":Ti BAHzgRӝ%[ٜ.ȌBj/;__>Mf8 D<~ƹ7J1Eӹ=|7d pQ3W >A 2|H!ƩRE{,k V/P`\iDO$x>*c.A(Tn>"lXж5+{򅦋ܺEf<9C{4{"ofesqJ{[x&c܏:nV32/{!GXXa tI0g墂)2SV Uiϗ_퍉B`{ۖFc6`@/wb@<R1}g4csDyϡkmpd^oMca%pO\\f'nQ#{%ec-]F D$PJLf~"OZ=-X;wZ8vYwen  T>5U9d80xU~O"VZʀ(#0u5ۯ$-ӽ zL,V  ,-$UmٳvO(2\6r {U i]O 㸆= Bi3 Kx^t;Jn%{@b|[=Ðv1a4>6n0:ܰw)^#O )s~QE3"^r g0f]!π"RJ5T!`O\@| k~>Xlo1w!O@k \tPPgCu1䷉[/< La@Cp׶mgҌ יA,!ŏ%<\td RgHwc6% ㅽQةoL>K `8E蹌kB%z.^>z7s8CٳC)feP\qְX{Y=ŞJwCAFܮHccd 0$$0snQ1 E  &Eހyz.z.&J; V|(یWe>_Ո͗,tX1hز&DM8j4f B6aue||W]4d)faz)c't Tj, IvE ^O}z7T0?K{Ӝ@ GTdWF;-^Z"֊;Ж`^5vYmEpׄnhwaȁ d/@/>_4H!@:WS3 6~%L h.U5ҽ%qhTx<. =+uOl7/M&~w'A2,7w$zhd pXwf7r@/4Fϒ*G |a_^ J7V^TKyI5D.q*tgkd*㯛|*!&5k7B;;ݼ dkg&"/A~Tv5S'hˬ}< @MPT@*{=  B P Kt |'7~~E3#+qzHAp!^mxPJa5/fI2ef/$ #ĉq#']z2Jh=W|3{U5s%*++9ŃGQ?MȸITDM\{Ğ{28LtxW02hMפAxZƞSU0D"P8yfboT5| ma٘<_uA)@F-`}$QZ`_UUU |湓\_$*| }↋2?K?'p+gqM(sNc: \H[.D0Ncy7Qg\k"42Loc.d$n`M$v8zVk-?Aާ ߬ nqφ+ %!gN30E3^Pa2PJw"ZYo/FeOR.vLRL7EB`y}ƟBd'EmXf =ᣊp0GǀJ }^ƭں.M|~UPNqCb0ϪM^1QQ,杤, քHfo tHs 0SCq釡:NLD\)e~2یe]d;xMTCu$}W 5>c΄Z"OFA]}O_2G>vb`X5iC '`VpNZ@6ϗƵIԮ7Y=gyvbcYXF;_}ωtNŌ`׃H5+|bQY?zpwo>Y&fwS{YnP0VK%E`3ul!s@I.V1B3Aa3@A|po/v3H=vùFI A] %F5*A樎3:صނb\/ca ;])ڳHA_S!L dfny!ZCAmE2dZ% U @N(ؔ&j*} ѿc"%=.{߸ x/Xg>\W.~zgeνlޭOU%;w^Z1ўiFi5&v}$9qtt?P;Uְi-H%py>qr?ЎRJm)|onLtC z@AYtlf8*efъ8*"s8|H) ˯nݓRJd uzw35gi H2>*}H8.atHO-oUvSˏ* ܮ!= q] Wj ́9@Y ! Ɗ\b; \'V*vEzJZi tE vHL]v'fn̡:Lzc8 W%\NI'?@Q&p? 5Qƚ :CGhu~gh":{yUAsbu30?gL:ØD SG/w0jVp$pg6\H%ogjbi4b9| .g, {-bđBk,"LGNoو#5\}$rus7–$ظ.Ȯ/of"ߟ>%#ʽ@ptzd/W":_~ kig]@*4`b 3% pjOBߙz3pt2Kv.jx =-qd P请 p^X^.|˺֮buA~Ɨ/ߟMLBZWgǵ}tҮ6=TdKY{24r,{?a|X8-ίw ,fb4M'}BkJE,mrt^;0CveHn/'G5pW{vҘd70ԑV) Գ֮cs}p]w8?CxeSX;'*x$ߞ]†Xjl@4"7n,dv:?fPW]> J]i 0ֳ*"n8!yMn>lkĭ4s^J#멻&~BVPK^ASlJX~qx'F'fh}AbѭuiZFSN`9%hUv>\6(0-jYu9 P5D0<3=yzR{}8FFS'W |~|= oT)ӎ#L6Ny:^sdarrujo3BOG W9 %pFfJ/ps23ca3=7,|.L,{* h.zp!{y5Hf\ g[N%+h43H("㒽aL,DhW}骯! E!X΀TT@unT6oz agp岀pT+`MYQ_"uF6b6-fv@3 W"+Ƚ/,⎞s+Dub) e阷! LP\{`G)ھa\}!3g9El(RovjnYX# YB&/ oz˹}Y~pH*((#s9Nk J{},)~y};$ݺ/Ƅf.&~9 )`箭c:R-+\fʹcYx]弅[\ƌҲkP|jd \9¼Zϖʮ%ߩIQ>Ae@3^#pǦ0QJN60M[Z:Eu򦧷4V]~5ߴ@Ak /lWnU5Li]i ;͎`An1 Bx&[`r,Ib{tЌR|W}s:GCTEK=4k$, p\l%=Oʽqb{'v6 U F ԑE%R.I2EJ3ɝdl0~|zS.R/MW?_ {4Q֦7D6@w !3'eوB\CvS";!aDs\ vZ>߻, }j\ 8%vX_Z&(˫|~^->|eNhym.IayxgiYc/g]+/M#dH4E ?c[_lqkej%sŭ:7[QK: gQKg*XTf;ۼ׭Q->l5V1)#>T*~O) JwoqG$R[̱"\F˜}@o)q[h ) iA`x<J7[pRSgLn)5 v^c@Ӈo,1.& *qGG0`cn%'#Ji5!~B"Hل-꣌zz\al& D~ bYD˿}Yuυs|;랾c' d:*d)B/>[ϡݝ v.1X%7WQ2X.=b]{k4 憺x$#KkP @7c!+`k璋d֮OŹyAߣ>x4u@jx: Q8#@rŋ*a1s~o^2J76m*;c j k O[+8n}eޕ^*oP g*N (It{z: 㣐d|OҁD'VxT9O뗼=-)H 67 ^-/?rm=)zk5spe'ͬ @uS}Ō.ڿ7_c;lQ] s#X @c)x4jAM LGb=VU1,}\SWy4@u =,MzrBtT-k=}›4n3#"^_|Z.VHRwoiZ~XSזH҈|@(*a1BqΜ.y~GJXb?o<Z(,p@M(<@h18#3)DUq$Ib/_Ka`c{Z6mC:5> /SB:@)ao5}KR$psCxL#-TAS =|z YaF}Ѥyw7"txXZa%5<5@嬒5GJQˡ.Hja~ƒsUj931 :_yQ+Ph 8٣MXjtϫLnw'랄G_@;{Tj˹өyRW&޹~cWE {v83vi_@-l(<, 4W賫"l-lI|7vDp)(_dj^tǂ/H4F-"fBssñ("(8/K(8("8?Q]e~iIENDB`pybik-3.0/data/ui/thumbnails/Brick-6x2x3.png0000644000175000017500000001431713137372561021002 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+IDATxyT՝TW}eŭ"lbi"1Jq'-`ThYMDd̙d21dƜW]]jCSv h hiiiiiiiiiiiiiiiiiiiiiiiiiiiii:ˈ<k3/Z>8yQpBimv]HGzؼ`>0@KNł'~o4jX'sڲwܽ Yhћ\.޾mOh\fVn0$>t:їp]L3laϰ=g~8pm<_⸟ ,$g]<1~ Z=/dZ.,^/]0,^aMuJg_!~1ټ<Ó C@n`=٣f/ \R%`(((a<k?q_H s 0R8=u尖۟>=gs.X Mk`(c hro"%V% бWJNT/ppj3Q/U 5mʔ)O2\be ki:`5c+Mc{ozZd+XDkY\70 @|>08Ux؛|JS$y_Ͻaw-!6y,@Kro{(w˽^b><DX30 ` 4E}!y3AdCyJ,Dsp,˓ %ŧv' 8JNl0+Y9a6Q/@_{?c:$09F[}.BJI#=~W9îYw^q*N4#m aC8"nq;W6u*_@@¹/`arRa(De^ xY,\oKg8JUo<Vk➤ϞG T0LЩ G"mf1ױ8ofyʕFm!.2|n?Ɛ e'p#0\@wdy턑oS|b6ԚƃAwQu-mD3 Nؠzu))"+}'a`k7ir<#@[c `\ヲ*T磖L'mL{W{~!,yd4gHjBmdgaԋ]aR7d e¦Vm F5H EEET2EH>! ᳎V/f6ap 6t*+i.7 YlAZ'Y֏ @;/Sc&%v N*NR-u)!j Bb9$0 drsA-|,mN. ԙ:= 7H"?7\Z >@x/K@\,Py|Os"x A.C̨䙚wI62J)aٗE#q|o??3R˶T2]`D2D,5)p"xf9KXt 'v祥9x Ta!Wf@|||~x ..1!)>Zr64)TC a@Вʣ;_dI i1IwkkT~wS^ sfWȌ*9v!4"XQMp὆=ǦPI$8\Hy<#Z8KpBRYA3],~ u;16n5FµN/6@Sp0rq}T`-Vj+x\:rcyIvy=(=SDN|)%ԣ6|ȖL^gtK@\H"CY#r*dI`!ˆ/Z |X9_k}O/P\EmC *e |H5Ζm}6۶:<U`GY A2C4}pRN$G@!Dn"&wXOs`* .ѧǀouQ\mJk9ytMnkTLd XQe/j>HX2/`acT lٍ#M D*b,gvy7A@8̡!/XAZ0 tM | N[=Jz8Mv;U.aA3pQ*lXAx,ٳeu71ZyVbqJ nhoJ;6s_ i/.PcfIBQ4(ǩrE1%5CFx.3h)w) Xr7Q!q)s9-J%}M-!Vj/Եmp0dsB#ދչYEBLG%g[bƟZ2q+=-\aؕH%}c1z4J ^qxT/=[wںꋬz7oj^!vAE!|;,T}~faqXQJb:D[~[wuMg S-:pK\YmWpKhf`< J}^yjt{ {tj2E8 R%E:ߪp&G 2Ap\o{}k_},_{eSy[WY6\ =ځA $}㩦U ziB:7l3' 60Zk wPw|YFV;xa#fdDX!FpQ获EEʥO6Җ'~"׊XSd6QMŐHm YȺ8$v-FP /S0/H4Hyl_~PI7i$JzTw9+muZ_[ |{5P&|K/:qLG8}滃 A;i:5WH&i;d9id'y*]5)sZ2SvZ9N! p@ T !SDY %!Z!8πs~ʋ`*x/i9o;+,P^aI1{9e9EVP! *AOCan5>m{1ZW?/#?ۼμMb?^kLaz혏=͛SWXuM+m9C=x -9/`о716%W/;j%O1CC '93<ۯvpM@-~\!Ep8׻Aܜ" v&sN#^AFC̾9-jVҞ5Q W(hpdm3f|a pHYs+nIDATxyXT[)3ll~M|rIMnI. : }DCKC EDp'݊\K?̹;̰0 pzޯ}yeWU_)T"E )(RPH@"E )(RPH@"E )(RPH@"E U[mȑ >.Mˌ-2ǃCDKtl'qWkstѿ]Ӌ>T"7j+Y90[gccC[:U::*d`kfJefWfĴޮ&}δuZ>e롛4$-3K@ [~!hWWW@o0S v1f̈cSTgSv``Aۘ061}ɴAɮ?] n[ʘ&4cMİ84I3g-JLr]hV >:u X*.N>p~= f`1k4AkǞV99;$^DB^z4ӷL)BV62l)LӘk`0YbXO㥋`i )L$nVu;vA*\/V®A c4s`umﶶ6׾ɞShٶ z'7 eWjƩSS cUF%m-H)kBsv2@;07POV{ `)/2;%ZSx"CfDEnzfq=Dc)4_Z,d)gӈMC%fϟMݺuAM hy)UbV {;;;wL*xn~#7 PS:nV]^4G駟GAfVP>JG<`w7b~5]ܣ< ʕ+ 1eUTb/Yԯ_<< w0D}~AG#zV|_:Pn^řɓ'4z"Ė"Jx"{ hoC@u"8/bv _1_㡢_6:c{=zdu5h@Vوb=i&,bF:vֶfL0̣_^Q£gCyꗇe$vFvCɞr0>cK\@t=*ݻWh.ɑOP^=rrru &F+W#?Sfz &'xJ7t:I] L%pm! 0V9#"fCK6Z0;js |r?4m4arXX04@QQQ4rHÇСCiРAR~wԣGҥ awߥVZQ-7;|&𳋋@s7E (~bfuPס. l?&c_٧Lq  .bڡ]mhMf;9 ۉ'riQFB}5Mӻ͛ RSN ۗ @4bӵkWP/sҤI&NH&Lرc5"""%i{3 _ \;Pp@g9L&5߭ R?ŪSRRJ@ɖ<1E?:P1tme)[%քEel^|֯h6lHM4~[0pnZ =| 2m:w,^"4e:uLbbbh̘1`ɤx_'ȨA=uvUfZ]Iܽ{W`.tōX| ! o].&)pSgtӟ0"K. O1x3 qu!n4Nj|5@7>o6n͚Q-]v{ jڴ8DXNtÄ&xp6vdj( K40)mcC&%0-^^Uf {0e׸ _2S|LMojsfe8Bk@e w-K:oJŒ/ϗy}ǜ5h sǙC0o vY5kl ؊;| Udr #7W_I.TԶm[ X+m.ع7>g-X9 Y}F鰃kW1?1֍4t +PTM o%5*fɒ%?0s _,a_k]q:_ʷ;3@5P|ku6UBKqTɓ"q4am'OBj 2Z%`Qf>ń]_ѯ u@ ,Sx£58*vnZ\Kϵ:>*|٘kg1ac`8|M\fWF&T \til޼Y?Xs knT&oa"Ysdzb񓚿`|nf1ʥ<7X|ӹZDL aYzPHgF9]< * "H_^ }6+WIX:tH0tBl\b2/8u ++@P ҡ&gfdCk25Hf q;_ܷ`A7o =&-ꏊMNMM? wR@iXP n?@'_9n1ɾY̏ԛg'z,16-0x^>@=9׃ilzts*YƶѲp߀aȐ xl(`C̗M /j>t;썚a#׆eKk-AT}\> Rj sӧ2t`  ߢ-ql>Ա o/EP8%&V߿PZJ z)ƶ;/l~aOFj?O$+>S9oywZX¹<­l.=ǿxKZpw>H#uֲ֯_/DGGGӋ񕄐|%/6gK;32_i@e.IJΎս;wpzyZ?'޲/fk)S<I8X3~>s-Sزsg ½e->Lb)'vx>K}{UlFOJ>[[i?5<ҭ'|V@O?i4`Q ja#Sejjjj8s ,| $/f<* fMBIib(8[@ @^/yv5捫G)S@+ܰq+U=>ZgUPޥ蜜b˓oWZ?^n̨a:Y+OJٛX̯2`(ԛ*׮]KR54wf(n{JqF"uj7R0Q >Lgxo!J)%M%@*7g0J|F1#V5= hŗp2q^͈:j7o dKoѪU)Sgei}'rί_ꓪ詖@c7 *)+ RoP҂U2Sm@7,~Sd%{* p@{̝*6MCU@O@/؀ \U;SjOq ֱz=Pر9&Q0k 篫.kj]f.hGh/FܨQNu ((RPH@"E )(RPwf3ڬIENDB`pybik-3.0/data/ui/thumbnails/Brick-5x1x2.png0000644000175000017500000001040313137372557020774 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+IDATxytT"K2sܙdf2K Ee"Ȓ@FZ@"FeFҴ6ziO{Zd$3TN=Rϑ @܍JLƓT(02-λrx0U.;`ۅjca`AO崙pܹ9 Apaf؅a YAU8)"& ?6h cgRœ8~1Ng#J@0uhyA3E8ߎצA߄ņ8BT؅[ ^%0tZ?֗ݼ#ufmB)‚Q?/WȈp&3-|I@j>ڞ C?mȊVh6V>"FXr * `@+\;9V;Q;PځX jQ0$4k<7݋J+?UgekW,Gfn[*---I2 g*]}ap1Q9ڼۑ} |&eS74Db= ?t4h*>3`ߍ`Hډs4[fIa*5=_b\0nt"zb4VPP q`| Q#TTDo1]TݕK$#TkUXf UhK*hiJ'h{,!`؇i3`JsL6Y`qv2)'Ç]xiw.ϽpF6,4%{P1n0)o5R EUBVV(VF$Ѵ0 %8{ mtq&̘E`HډnZ_OJR`;@F&:M1FI ՆhCtENNPcP܅k(7lO|xL:H9i>1DK I;˗]E"A)BU X50@DKeW)0kO4f)``T1|#و(BCk#`80$s0{E0MB䠇6Z:Ǎf"a毄gb0?ROb;a|~~ 77WhZ4b=]W%Eub; a>`Ͱ/%>w̉ 95&+"&BT TσeAPON /50Es[T*,IsEif2au^7҂n'cԈYj@SJyX( *yn +jJKqO'h>Pi]t'̧VQ0󉼼< 0U$ʶsĐ̧qZbu( \[m7Y7˳Fy"թIhCPa` &V(-Sq0,Zg,C}qCU@"T$uO hn2 n@T_s,Pl(@+a h22ul`S1b9\Z#^Mߎ0} O܁+q%>|߉$j>q=tW)nsQ7t,p{P]!K+B3EaYjzpL׆ՊFQ1,5U#u3_} 8E-E5Dd\J&hkF.g ǝaۍ:4\܇qZR Myh o0re?ciy*V+r ,QTT$>t3TTN"3n~W;Jiuw(ӪRdi }rD7XJ)BiAʪɇE/da Wa>U * **Y"bn@19N~1;VwYl CTd6$W,Je:j){z\6(p! +>+?zDͿW[cx_G 0TT1:_5&Pϋݥ={)[6ԺF;!nj#MD18m^<*>SBHÐ"\Pr(TbmXqF|znWH'ZX ` %%%bРA2-)z)-V_/KIol+o ,͛knsajLSLEcPo+&А&7> SOX0;[1EVQ|W~/¼CE))=µ cSڪy'O_nzTGryvciG10*%"h$mrk2"PNuX4 oZS"`?|6Í'L2Gk~[[OȨЄvJAhU/TEGC@r;rG#g"h~:-T?HShbkmF+~vNC;9pfq0}H$SSrYQA`f|BZ57Kxﵬm.w5u"&̘xSEgwa!=Ok&z&[z0UMEul})A_80 = a pHYs+*IDATx}w|Ten.6)3d&eR Ԅi*MBHU6QH( UB/""RFQ]w>L̜{nf|ssfx{G4] NBI (A%H  $@PJA  (A%H  H(ua769֤ݟPeMԮg޿ݸl\͛- pҤT{f3,.gfA1/EXGBQ)loLǝf_2UQQm^6f:n5==DziῥajݰOn)q&f&^`atle77+Ic@xB'nVd:*dq7;i|M o\%]'X^KgxEbeogdR+FZi.Kku翸^GVո"G;ğweB[ Oisk\.A(77ZhA999IiiidZtk 9##)+"ڄRqhu mN^ȩΫu,F|V8k'yclAvݯii/,k[$?AvlXW*&Y۵-Pfy;JbcccITGS)4=;*s2i*KΦ8&AluʤRSR(11Qm1R˖-ӅGJC[&\-fr4@ &s?df" LI^'x`u<{+f,O1VfX"cpQdLdE,y4oA,@2! 0m~<~ԹM}=6HЂ/dBp0=~|^OV!V#VnpDp|m^9qhZ-߃P,n&Z3&i K_Qv6kӶ 8ypWp:NaJEEQ%è(,:U&a8,,w3X?ҵ@wgX@c,'5Ph~f!RM?i?33&5. ޼jZAc-"ˇ +%QNt*Τl[R7v(#y9s]UVNjq)$&$$PFiB[leVdCX9# mN6$yL@{# \+D.25[;|u>@`̈![> ¨TBb-4Msst1+'2\[QL-i`~KꕗKlL0A4~i^ŝ D8fXvЈͫ7o&j4;䎿f Soa~nfb!feFGQIAIk <6V!!!B\Vw28+>4t:@W~Q렍ا O`gzj["lD~KkAa7K%!>qbMctl|4܁L]Ok/|th3OYqZO>$~$/kqD۷fEqY_x n\Lu@}E+)9,TT''Y^EUZu2U'u'1L[?c7$0jhM"Xa GŨ=ݴP"@Cj5ib znI]#B:# 8r :}#`u;2hO`-0Ca:NpbK"#h›[7Didd8mXo-Y s$ ,_-?@_,NT;@>iFe_w3LA6 $w/5@|ﲁH"# dU%xZ&VMsZig{5_8FILIMk(,3 Vp`\ՎtќDw\"l~.:t̞ zG§ aͤxDS)IȈ w 4s] uT9{[M~{ (V}OMo b6Q"s o+.L_!0X;:J-bi{뵰 |p@n 03MP8%˿Pῃxix}5/>'QTDcŽb5K8Df'ybF~A kS-`?$JGy%K #"Mi<_sR3b&()!#E+<#w& cqjjաcl<Y7vr%%RPöI~fn^o_o^F7=C]F= DVWH, /g[ce+WT}|9Px(^P%NicYDa{ $j$Z~o5Z{Y@ez.gY`pJ+v]"ANev~W7&X W<; qlLT$UWv۽KT1N`=\s0XeNM vAJVV+`oi* \R۷"vt~KrS"^qX#@Lg Q'*{j'uhD >يF[ {8BATa6bXBhvr#U׷2ܠԦ"QT_ssiWLVPJ6E6?!'h+A#@wﴲ3j~Fqx pC\ k|kҎYOj~(˔۟Lj>F=++|0W)Wh. Kc*DHIVðX8Hpb2g~ |~FxVNz=Jt}-^?TYHo%3\MޘE׮PBN|ևgN ,<}=BIXmIL"@3<+V!Jc> LE~863p8;,aSE#*Ht n¯Sk(sL 0oѲBjޛd3^yY[oд )!/σ(#g_8rXYlKٮrdKGvFbaPQİk)^=*9(6rfO=| bjmBۖ-UAWbWo?t0 VpΟ@.L=GqYY2р 5Zsخ2ݐsĀԈ;äղAnbO<6 Okdx1_+:&F*߻Nh1pLc_YO ] ^qn"O5c23Hl^5xl܏pGٝ⯳&-KfĩЈXZ/c >lI`υqhګIP8j|#6ot5njǎ?l8Y=zPlz൬^/"WX*$K;{{Tեt7RE3Z`8!][M&׻&E6nSڴAO=)*̈́ـU+M ޹Jگ}I‘#Ӫ$,KN;Ka IDw NW@2 =/Bi$T9)&ΝdKiXS 4q6MHzt5dx[P3nCs|,:hYl k?4Q*w&qz6N[ b=pvI˜;)JK/ %Wof)+%@hUY2=/@.IRe6ʊy 6F#(Qn?| njp N @!̰g{ x zIlB&3檝۷3%.V6T<& @F]n7L -zO@CK踱NFy-v 7a >de==ߓ&@)!ݟ@/mLjz@~ n?|@&>=;|E Z (t):N&hng_ܸ]#oIod4O8z)-9*GGR?$dj&Ac7JfLMdҝ#*@5=|XISLp-/c G0 A LWLWG{RȦ/;iqʾn6<@ߠȠeQUlj e҇/  $zLz-R=/^ߕAIH~O, /6Ԝ,msvmO?^Oan͂83Rȇ$~3%B?Q1|Ȝ֦I +u@#/R$ȄxyG⪩k' Oׄ׮&4%4VmT^i >}M9&ߺ|M{GDqtnp{n{adY~3 1[V%MBImB ,Gg:?Lҟ3*cP66%Gzum@,`h9dLxD^ao4 FlHN(cNS+Fdh%Bk/QVA<}PHڱ"Q}IQڗwDM '5J=#yl cRGm{΃Q\gV+Я|pH !!@IW!'W72뽇eV;FG?O utpjzר kWw'MO.IZ/\3Zb~/!^:("k^ zj|f٥E ti*MMI+7tq|ȒYqb.o.:5 tߢNA-  NM!8k/,PyucYX}v k|Ӯ=׷FsRT!6%Gfϔp,{ߴXNm\@_4V3h YE EWrJ&VQF ;f#'U:{j7O>~ڕOD(XDW mZm|CVw-Y&d+'c:Je|Ft_W # Ȫj?B7m vr\ g젷d. .Enk|E ar:Z]A'FH#;51Ffu7K__~cϠ&]l41#@NRE pdݝȉ1'ȫS(Y-]8J)R2sl㵃m\CSNɇ /Z3C|R:@r!@>w'giɲmM|S)+9ΌTu;n< 0g.HO@v;xESKB4;͚!^ƄPU9^Ȅ,B9 {C<XW{ #(;=}~2˭1;|)!BȯH7%@&MU{VOedOuL~FBV^|)dG0"V^ݒeҩv*E5$hEb =P}V$K4̙T !-/6i`bz( Mx[(]ZE[ 0S6i-6`W?<4QmP{(?"5}wpp| ŧz)8Y`l 5R )Bm'U."bCd#M1me?E&Șâa-LMq2#:+辪X,Wԛ]Z)؋߽F7{33V;j}оL%єS'Y$W&;҅BДSZ"B:yAI) n!="0{M,>LD&KF0@jV{ڵhp`{\0'Uq,v91+S MFE^~OU2X)bOho@Yq_wNr${LFuc6eu. :M1;!ի6xP,a#l^h-X2[ԍd|AS3{d*Gس!|ȅj[8̈WKnE{R1Evyp~}_f骊w_TS^ _abE5-Gi$|wzJh@4 PtMNv>J&OoD~6p Μt `(0y&uպ|<:zųW~`괒7`XUˏ }ը> k 4 BYIoUoؑ].8V*f)1\V|JX[\O]< 9W/x=N9`#hƘh;xm۹ƛx5Rwc[X։#>M -cF x0fao3bM[po0m[sx)V?:{c@75.HugNUHڗd$mVVwifǍpwW1Fy3!ʕ :$yIS'w$MZl;6/Qi>n @ aszcWO !v!hOM""rg 'NP>T*mgV.gDC#F2a`]aޘ53qСkN A'HG>ibDresj_6ICv7OpZ\V.33|qVpw$鈠EVtէ|u|g̀yw`@&z:.ǾW tA[P&hN̒n'%tpA+ݱT>2.$D YAQ[$6x[8;v0"Yxi %7t:,sb$ $\7-xy(GeǹC{DgT35:TZ|D)L@[B P,W;@'zcc`rBR!Ь%P7@Ѓ˽a܌T̎.JGU  @+\G>Yˇ9y*H;'{E\8SqC1CĐ:RO(sK|:u̫ ^7ogKƩ$x2+|@#w+0Uh O*kLێOҺAze \җwS)Ri,K_v%y +9%xw~N$n˦ZvH0}xNA/`|"m2[<0/x( aRdUOGwFl*>pX$,8ڷP+kaFѫT6Du"M6z A&QrĉFY]F_mqO, %}@Ş(>Y" ޙIT9tϨn^t8~ׯI+r /9&CWI˲1Cr>PZt(\j'y/0CK&ޕ%Yz~nyx^0'udgM" fSo5c`$ꣁ;'%y<➥3\ 9Ēy{s8@C qO0;By~GU{K1~d8(bUc{y|KXN9M ^bvYf]ã7oQ#18Sb7Pk@i!E o-j$qr)y|/X`x+-f h;ELo_WxhbB  0>D{$~z?T!9v .c\˖: $tW&`?ad\''9IOH/'lבdoxne/X# G^EΟnL>^+># #6mk8>PY]Ҙ]n_mk Ih$PknF8+!#8"$ż{S$`~ZATOowdەy} kA|*9t6%Nx.@G>a;gёI6$dOIT/|dg~& P^\w2z&&8v0 |z ]C;=VGJ:>ǀ[-tlK2UOV+|DSu$CnB;x@X!rE-&bg1 %r-n/4P^Ik$N"L2'x՛D)|yK7A9y럿0I%.79\U;$@4 ߏɰ,6%E"~c\#p|Ya` R{*FD !qCDvmuz:x⑋{.GIA8 { RRh33yt&p@^s9ԛ88rI 86ٔ|tp]:7 4m/>d  0NvDNQIda@IXݩxc+|m.`^I3'd@eY[8N /R|Нۗ-ہFYgtum!r{ :VQ açڷ$sOd1\$،\](_!csK֙޺'t '[i-axav5Vx9~?8hyX~+A^+%d# %MCyxi-~AXjۻV9yviǯI@ߣ% һt?`«Hv6{|i-8uoB+jy2P&EҲG%)]~/d]&z?~XOdoH+k~ `L [DgQv2ccLW7}\O(c-ii=/Fx1'";受"E@7 [TW 0l:3|ϡ_;>MgU^膾`3_`(|zIϯ̭P.H &a pHYs+!IDATx]y|Tu;sgߒL(EDvEU%BuK֥h(FPl_~ۯV~m?~9{g$3d GH޹sw~pm߱5&o lf6m6l` lf6m6l` lf6τa[lT?Qlp/V6]{zCnڸV+vLjG\lj˃= d'=^:iBi8s#$0\41yǦڼJI>[{8Vmq :^1Ix6}Mk~(u1yl8@և$_Bv#|>"9[o^M̍5;6ȱIk #ꛏ6E%EZV./$0 $0 *Av:9_Oަp{"/sef_ HeXDqwxL4fD?@9)+$ۛȑg )"`&Pw?ݤ]5M>&  ]eQ.Ht S.d\A|heLUܠm S;"7y@38fͫg JQ^+7 T/s=b9׫dߧ׌&0!J ţ1L#tx]0]\~_Fufw7Lzz99n)3Tf;W ՛;q 1DCSTUDѭkU*A}pT1Dr"Wwe۶;GLͤ: S*k*N>LfPy"qK}cE" eq>_2s)y$%E*,!IvG5pqI5>;ݨ'_/ϺGT!L ǪD52ޥ X 7kIsfg3QҼp)[xF(n*j:n\!!̞cApta =aj>0.4%br>-܅f OJA"3tp'pY\"=t ˅@y &NTBj7jK= ]D?YF_M: rL4ҷ\_[!z4xGh`S*"j t=>l9 \aXeegyV4-Q9o}DE"U$'\rPC7u "5Pd`@ J{8>+0\z E˶fm=#Ţ+ O=B=1E r .rs-ADy\;ɱPPiYNUJ:!B SFv/ ⵽8@(ѹG# j.ukūYSgmHϪ[x8ږTeNI)Vc0iD|1Xc 9_ec6"PJ`rt䠽pv>*m[uH_ +!P<D*svqGJ!oq )`:c 臙 \څ|, XM/;5\8HdR \#he&p$qF4@۷/󗁺ƭlop_sK9;OWoqe襺y:Gnq /0J ),DjuԹS,mt}Y,i .#X<O%##gZj}zWׇRzHH׏KBM8|We},82#t0u%z<2D<yl P3W0{1]𿠛O`,D?#0O9K-"*gsVE/~S8:)tY*S%/#@cDs7r44=Ӕ0upDnRBs)})t WZzŪ?*~Nq`NE5|.pav@,bjX-~}|V"H0"P׷7-GߞJ5C3>/<-D+ƏQuq>xI"'i.$|jG0/;{#@|AC>QJJ_F=1 [qsCpօ0W1xhC~.L"ۏ07.ۥsOQ<_.>UBo?[n`%u]FSsNq>Duf߾;n$ Xdѕ&#/j (rГ d+5z 8xӛ|_R 7?tCic/>Vg*`xa>Y=PK*3L`<B(-9N ,/!L%0>/FqkxNlG{b/z[ߴVu^ꛝ'f\E+=0²d0xIGjtNP"ǐ4q t0`Ja)?UC1| 9oAzz_f+l=gyſ>bρ'c">rg_Ž'mzz߹xkr0dar đR,Jgfpʂ<.&y.Jk{DZhuQ}׻}H$xAg1/Lio,Ƶ=fY9VBy;[4fOO;7mZY'zTCf{UI)lH-@X=܃qhNչ]0 21A7v ZqR z!d SaMp]Kmm-ѳHL&{k%<*Ĉ!.~9~Q2΅6Zl@"r"8 FPd8E@aTAi" O缵Z?0Lj(4@El!,ėIh+/kE,*@A'@?\th i'43{.-wp:r*T(T|!x!S;>QCef&k 0xX0(C}$Y#1Z^aoG'N2й(YjUEn{51)8(ojuL\@v @ g!DpMz9?zO4>HWKY׼vS׭H 0j4gh=h P0"5"R,܃s<99&y :2:/(E.A!ֿf~PL;KDe.fwSDϥ/:`.@~.]%߹[ ( <q\>*5~D,@ - ^2\>B;qgNj=|xV=(ȖNzejC 1)~~cX`$/X㉹ˇɟUAeqsdEDi:7Ngi u<@ -XP0#H2 8ixj0`K/45@_@ 9IJ'(a3yes7o|噿M$GL08Y=6.:S*AUDΤӾ?->`@(S $0,w1H4o 0`GPn:6%_[hj_1O拯^%PGB!(p2ţ@&tUe;LMS@I rYk;')0ٝjѥ.H`K|!|rU u!QE'd_s‬ŸR/n5* Vn G|~G?E|M\@4$PGcT5G *}lj ـ 09zkAd9l.QܧU44C<}O<<}W *|_cteM)HȮ|osBwμ"9O`ޡL~<xL>(@\  w ?~<tZ hx ]|l" |$?T?ZsNI{TwQ> `*_Q:Cxgd1P9sXr4nAf=?Hj/b'+Tv>LbPԡ ԀoMp~V)*[ I e'sY߱&2$rk'x·`Y^5C88 :TNRJfF6Q0>.ODl@`JΊg !SgTVS(PDfL-뱧/2gAi`4O7|U߲"],KP ?w.\oc% /B{O(9@09LBhDܬfWApqnwr8I1@r ͨ"cZ:#8MrD@7Η{Kƾo$X7@v?2P>xw_y43)"Srbd|!``0Y}1ʳֲ&?H}{t1s;~Ňh틣4RFDlrAU=A|W=(Ð$h~z?ܕ^>',J 4?ʒT;քĄ1e{z1i@ђR#Hp7PF[RESr,=,xP{/_iƤ#" (1n tqO%AI ⤍¼7$UQ c@5S7n-S;Ŝɞ$c_1=kh㱰Zmhq`#O3t} |LDx`@({r6)O%fԓ^Tr8.Cu6+3G`#5>d:; TT𩨀9^*")GU*qǕA=*W- ֶ|7{8tN`@Gj ek'{(*3Cw sR <8sK-E©;H{ߠvͲ?j4&;7+XG%~\]]A~w)[LmrIK>Ѡ&=^G9jО4b*ZSL <8'/S\txTJ .ktWeJ}bʶ# BE ;r3Kf5dX)*CCʼn$_p{[(-|@Ƶ5-XkNt<֏GK3ڂ b<{Y-&>n.>~τL)%d 5p P7"=NmODaj@pk3u$EB8~ٽQqVGbT15fk+L?/T=]$f*=e/c߱~bC[{:Ԟhe/` =Fѓ&54 %_.{̧?`(5ܸ7}FYw̤ irw^mҘUyd u-axn8\q6~:w)h٘p!=snso~ۉS[P*xp9^!#[hj;(7&o lf6m6l` lf6m6l;:uT{IENDB`pybik-3.0/data/ui/thumbnails/Tower-6x4.png0000644000175000017500000003174713137372532020603 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+3IDATx}wTյhdL3/Ҕ*EK\EQX RBј!ĒKbo}̹T%sa9g߽(o(< (0 ( (0 ( (0 8/"L҂Q 19~bq_ _@ -֧COo.O:/ba G;}iTcM Śڞ ß{/> z"0l;ʸD@E:} s"ŝ\g/ XI352wPC~(s:p uX@pl\LÅOޡI?Lmkp3 ?Kh< h=f+z}.Z&"^@׹Be %dGgu4u'ϖ sy5yEI;KE2=HHޡg5`e 22B6$íp BFw :uBS]g=^_;֠dt%W.i2L2H/c:y'2@u5*kK7s蜋 {9LAatG(ֿqe1~C}MD$s fIYYcב{ܜ v"|#!Z[p)`5$ B!']F׸\ٱy S">k)=D9$G(wY & qC 鍤k#Z@ J5pӵtޡ$0&W[ֿ3cGY>SK($ DBPrry%D2\wvWWZ sBkv,3`6H È?!Ug*F;meKZZ/еr ;0$'Xxȣ7F  )M뾝@6Y,Ga"[gXP: !)榍fby|, b"D0{j>GȀq) C梳ow 0@5\ 逇6mbQQTT.53s*k=@Dr28=1tx/[C):M/)UWt*M<Y2tdd\YM#>QFXy=LXB^SV a0#ʓ \,N3)_YKtz]=2D`ƶ o-dGaktcp/N qr>R%ݚ⻿L St()a#џVƿ*O}cJ5ws[@ܹ,v,Kgݪu sЗXf51`n4krH'*9_=X!*#}5VBӻIGVƇրrݝt^f C} Kٌk(7ď_i윅ψ"NηT'C/q*:zwDwT+2X2y@_C?^ њb8fk㗪ftKy$es}RZŘ3 1Az≬-rhysQֳ"ڞG _G/mq!Fq2U}3 =/#z]+q=Dƪ0)K< _ >tT@g9"Nh%4RUY i蒵gsk{rbtȝms f .4~\tJ4uUbVGGrQ'?oVA|d>" .'3npIxYx-}@`@ rEe>=wX"(f?k5Ϙx_;`@"sfܺ%ʩqxBw\T}"XU~g6^FIn{/2NK+0,_tumt):9{pA{:2*qy8?=@;xPP6 UC};0"hB/.x+{0K5pJfI*={q?^FUPKH7Xҽ{xO(tSi _Bi\oQm!- 8mJ+(b86Jxƃ{6w{&6oNA D1!ƇߞgMOuoa,/xA?ʻ치Cu++Tu c M 0L転rR Ze t/g@=ZN?B#&?L߯j9S@N3f?fa!L7(iXr]c: NH ua=;wXܹq nj ҬR| YkV_C!b:/h}Rt}Izؙ41:[i l&sC?Jc0az&0Re!v>RUX1]v)@_َO#K"p. F,zHqTb< S?5xkO//ES5^,CGۅiUeFuhxd)nJZ y>BBG .)6=N-8 YAFu?ڕGs#)&h+Rv]wyR_2)jX57`x`ePTEQ.Q 5 KWEl!bK47Hqrn$o|%r3&@qqMsΩNciGd>}n&V`6b67 ցsBZ(a`FK>ͥf@]&a0 Gr;"l| rlG}Q~|A$hSĝ;KSWpޮӀ`)6Qi L?O\CŽdV>Ov7+_R`6tcow^$'h 0c&OD7^P@Vd|.Q~}cΖvk00^.[Rd!"8*_o/v!0^ ^B4:"Ҿu|& %9} ق$93a.13CF{Pgg zs} Ed3H7BD@kGQy=Oޠm\/4vnkI{m]q @wlQi!Ev@cw rr;Ehn.  r<6:ߐM'g qe<E )wec TbӎǮv^b0C6 D== |1)>6qL(tU4>h;ICX.:Ck {*ú>Vc9*s!$}ㆸYÿAԚo_%_ Cpȸs LuugڵpGosM\J ܝ ՆF !c.'0`@  ;k"Yh4  y5xpӸ:yQ38CЙ`TAU$ZQuٝtvq쭸9Aь篪3}ޟ=, N }6q r[|ʓJB@"cǢ@ <_#ny@_z<! nE5C33. H {e< 5JQ aA=K{2z{GAǡp؄ְb5c'o?wr)`VE LLld; :͍cpL\pRF GF0f%+4Ş*O n*a1=b%W?#EU"7?\[r"N$Uep^A7ve@ܷhjr o`KY7,sBDax8LR1U2Ooop7e +P1[][q/x~8" xPi-eev34xU* Ŷ,|A| 1^@@p0@r|U(e<*?~zI$>ժcqd@TV;5c<:}QSGzĀNqǒ * GMhǓEb͆ukϜJ[Z|9í_A n2@ l@&u@{O:&0sJug YPPb49hQK-ܓ2HJvuq@ś/ }e\{h՝ͽs:hۇG8x8-uFe- K =ZT9^`M%q^Rsh!f&l@O{M52֕RRTHU* 2 s]~O{^=?/(Ąf C2vvx,'eejS@_o(ha%\J]A<װV6MZ\žW>~>#[_ ㇺEy8h crd$g-B9A $u> ^x0AJ@[{Nzh`c-ݼzyԽVH|Vg⟋{v՚AUҗU l:<`(¥˦ 6v Z;g=Y[=^g)9tnϩ\]w=HR|wWᱛgް"lƆqf4@!vaNL22_ q<3f807V9ı=s=`O!Jw͏5x,*??#?UgexQz@gႳvq^g֨(-PhaKf:RVRW.@Xoy5|,Ԇ^{Kb_nBJǯ>=zLm1R-/CqB c=Hi(cϡ;dhR(zV5j. K%,jmןHm3J޹M?~FOcQn=;_3 +{< HI EZ=D%i({ch%%vƹ~Ѻ?]b_,^߯|\Oغe0(f馳i(7bS gs*{b5sݡsR ,} -iZ_GDlM-asׇ_/?w,=RNz0ОߐCTxyE9Eϯ>N*E=QY #-e_@W̐=HvteS'o+=5-,mY0,3nٿ{mkΗ iv3Ӻemo+g{9\I@rZmJe/74tY: 6g` aY|T1P+ÿ{uh] υ'\ҋ6LnR@”f-8=j D Dڻ 8[i 1O0w} F=)+0 ( QB7}$4IENDB`pybik-3.0/data/ui/thumbnails/Tower-8x3.png0000644000175000017500000002710613137372540020575 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+-IDATx}wչaިRAzoR"8Fł>b558*RCjLss9ɜ{u]۳g.`g=ͿܰǷw؋`^```````````(:P۸!mzcy,g[:nY_a޳樧龁6a.;1~=ϹY-8O#`l+f] 4~0a>O8YmR[͡7 6ޅf؝b?}p|qkqg7\71J5 y60vsS 0>A=~>fN<d0ݏ{^5P{+0hw~F? `^ʁFP?2y0}[m gƟug۴| ¯~+{Cݗe7oƵ%N*Ƙq20Z0~1V9 c +T١C) ʘ 2 t`nv:j~~Dvs Z n1%Ϊߧ|p=..$זZ#@EEpm%݄onG)+tbFnf(7 8j~^\[f7sc]T"+03}dӃU%y'up~!Cbѹ5>,|P?Q]{/n'`(6ɠ͵BVOi0t dbtG. `ҫĿkfPCkgʻO-2,:wAx??GoS !02 !aw0Li/z^C&khv$tcC~CPkP<|7p 0t$]ÐBif` $#&`MDavЀf0$AGd6; CA5 n㻘c:p-{ws1(ᷚ:}%vP~[_O P fhq=dwA #~C%=h+n~xE&\W9v(v:%N\۽:Tg?aq`}4(w5)ؽ €y1,,O-Qv)/=d[I`xPyCsh IzX! 0>F>vxIVW%3@PS76}x _xa])(tb[/w~%v>&^܅U7 Ʌ9-QE܀{y\j $ >Y Ia& ˴Џ׹M= >*rawu qAŒdc5{Uјv|\N 鵄+h;'ҷvJ`_>~ܧ_CTܝU`Z,  ]NU0YO%; Zv֠Hku`PJ"X_I/zI(XM xU!\DA,&,c,"^kjNt\A..LqE˟\b_) IqYtWE$[qv.5 u&|6_XGLITC*`kU@m^jXb]aϣ"`7 Z!MCn!ùH# ]}y4Yi"y@>w2h}(棠z= \X; g8*b7F'{#` ) `+]Z N@.ifVw'&SVDauFYbNjPNL4ͅ`fy%ӧWŕ~jC'ye'{\rDL2~X|1v?5: 8~8|2BDɦT%a D2 OW1yLssjv'ElOgt;}> iT Y)Xy7)ZSڇ^խ~a{Z`)Yvڍap>k` .zŵeϙݖi,5;e&Gؓtomc\ g`sDMx$fH7QdJ~|Cm,*;q>+q4hm$c*0xVP_VxT}@{lM,4A2{7yBcSiy0VgUl5h`yaL :52v J켉 .5ww8H1^KVS; S<)xϼnh} @6&` yӃ`u]Ed oL"94Sw^>~Pu-+]w6|-Sit*"s1 ATW^i94ۧ< n[DE Z } %}N>;1a!B6f sJ `oa0 ^!X# T.P0 dW,RָՌ1>uQ*ڵhZE[]Sf3wZ#oH^2^4Κ4LhDC>~h8Kg۩OVs7Z<ք^H{ߡd÷slC3d Jس<("T+x_+p=ǂ)&C_yAu΂zGK mUܱ,2_nRۼં6-i$ɑe` 6~\@bK ʾ^ 0nc\kh{zn^Rx6D=dK<'oI!ijK`k"Ƀ0s';l*ky UoPLlnp_TVzNu? `L'=cyأƏb2ILkaheB&WX"36!Np^+{ K J=_0{:3e7kMK-,V("Pl0֣=F]UO2Dr= V ƥCzN/cѧ3c&טf2g~`uZ'| Bp}9ҝ;4Iv%ZBt>*m/{5{ XRJÚ-l9'>*!ydBut>]!n1e. T8C&443-As|aX߈u^q~fy]0cY)3n1OAfoHc=.µxK0 *йlGǴiIv$1q3l }7!߉gwk%p|%hx(Goצ7Ol[RWTJAxӬE#/_\4V͋s?A`|0O׳Ȏ`c^3*}K00 dL /!F DZԜ+fFTziޗQݫ\a*!Cj8J%봈}[iXGR1-^m5 %sfr {Qo6Z'$ ]-/P> )y7y\c Qեܥc~W՘^bx?2§6U Ձz2&SS#rSnV^_ |-pSB!rvf$ԉ#5fI N` &e˴WF’sxd'}mpo&cZGAZ NHI}?ٯN-V;bq. UVT?PWNC$q{^E.Y$$ OSj`r֗箩qi_e-2-;>@HSv\90<$%?U>)!egUսcte3i]\ wg@PRyro(R ĥubw _T6ûO~4zޮӝ*wK+R BpJAoA؝ªQj6 +`I`% Eţs{n2bG =M5_ u8V }ުjjc♏u}rOGO0߭"cj 0),HpC+T^Í37UL]a_g*R eb<4[p, -Nma )FƯ_ aǟnxKߧ)aݯ-х^n1շ[=rST 4uP\& :uK˵V(c L+2+8p>o7hNml3Jc|kDz5v/vm+n}19T^ qǖ4gܴv~ :l:ڠ韱rzyė*hgt$Q.AB"(X;>)F墄.Mjq +,-s ǂLUKL>RVǚ}0`m&#s]m&.21#B7b7=Lj1˙uO,RFgxyTI?~T&k-1a%Ӄꙻ!Y/S3u((.P}1LRWe(i#Qg4ލZfzrJ1%y[=sT_cF'^"5QFٟTyː " j]N}|iFV9R>zGJu4' t]cn } H()NnJsA⎏ }B+}nًEO4 y!/!una1?lMh4f!_]G|f./tCV_P_RP>/~]Er U]jl}K}^z[)HԜK6{!`Рm':r s b:;诂/PT L FK\0tҦ q8fev1Q z2 O+QçbnVhܣIcX<3o>0g[_W?\sbѣʥRP7- >xRX سeD7J jfȝ͑EēA%1x`$XL?ɟ0Bttn 1DxJ3(8_hdGiHxwyt"Sw;^-xYĵa̗p]Su 9} Ssqs8Pf%†\qئVpl0vN h`5}8|q~KSpqLj8[ un]PGyPPa ˄hý%9Ha}T^c%pc{{9*U?| ?BuOՊYAu|o'!m@sQ9oUDb$P&'y`d@_#~u?CMCyb,y2-=8,F;!HGj!JssgzF+_R Jxۭ8goq~~OS\t0UQ]yƀ G&BOWDtW #CFb?ADV " CieN&S>pW7GA>4&P]Ghqo>fC:==ꖥC?fPd݁6];:ܔӌ=:ja6rFhl|'XPA)P%GQZX,2T0K,*P r>b"ǝF+{WGV`p"~6~ś_i^)j̀eYD˾!x˛tW!S"Ц9UPʼ -Swi˚ .sJ%1z&K$"5gtR v;`qعOxGؖ]ܚF܄/jl$7. "K叝>t ݗ#=j`VG6G"FŲŦ,<ĀgrG K*c;sX#@Ь* u)P+ӳ_cQݝعۓ9#JcG 0.dERB__,QGz8U*Ckxp&K !>]P\s>aҳz.piX&kju!47 *nq9dW 3y #Y%xN 1am+"Ϙ?hћuYǼ Ow"# 7hˇ 8D42 ?Q5xE qBli7A}<,PY@bK3`@5rW%T@7mTR5[H񩌟<2pZP=uWKnNP~{yԟ?-T~D E F /.:.2>~u3k\B *Mwv3MTV1J4 U=1.1j+\wk[4tg2;<-t@8hc|5wR@¿33lAP^4`_-H ,5DUJi"|MH@/̅?LX6"~ZrןGR+k>x@?5OVůUUU$ze߼]Ǥ|{&䜃< SOE "Cg)L:ZC*pΒm IF]( !zG; %;MYZ}%Oكzxlx4Z>I %M@w]VAo 05/)%p~HWNwFs1XdZAXT2lFAn\Rc (vnSgի$ 5}O1iT_za]e݃;L_$6(X3w(' uj4a<};?`RAaP !e1.?ι'3qē;Ń7ĤO8P L{tSb=ovV! GO.''/NnHIdYB#E^O(Q7'\!Z^8B#Z m_-zw7-." C`˃/eG,1i1:%OS }S`sj=(vr%)a4XMB 8B@8{ V} O{uTM1t8I.m\9\jrW96Xg.ƏM}{0Rؠ*t$$ܒL`>p8uY`i,W l-P[} Ov+f% QsA-ju:y(?(q+sV+%"o+DJԫDt }+`Ov2{;pZ 9x j&]㈾ƛ[#a1*:bog#cisQ+Q). 1!#kU+cxBz ì߇QQֻ]xaNj1nK2F"e s1e,%` hseHد[S7/ #{콹j2ݱRuqEUTwv--,b.c_݂Ρ0 -z ;U䛛 `y$Mݫ[@g=GF3ʎ)i|9{ zZSI71~I,YG9zvȩݿ~S?!~=yqHsf|%VtwȥOĔ"t"յ0bp=DTnniv׌h@@ȑKY@GR1]Sn^pq?}Cg =tsEc7fSySRf)DbȯPW)y ߟ3aMUHӇSu)Q@`#a pHYs+,IDATx}wUg,s{g(Co"]"R( .F%XQ$jnp"1$31Jbʛ&&={I~qQ7p9{ֳzֳ>?6}gwx7w<x7<x7<x7<x7<x7<x7<x7<x7<x7<x덖J/x v]ONV'G kC⽔gO1heGi7B'g\l77T30h3*ˏ^ #?:2^ *++ȮDk7o!P ѷbZWmK,KNW#Jy=bP<ھj| ;FvZ$u5ըj9U߉skq")K Hd s7޳0XnU@ `-c3A1yx{ =<t7 VS/aƀ\#"; X&-C!x ,㿈y1$n*9MNU%{'VuqVEX>Bݟ'xYkU׿9a+m s`ybs"ŝ;[?K$~Xyߧ IbH8yWF2 "}=8~Fqnm0(,1ۂS8l)|W- vy>a]0@?a>aØ_Pa88lU<`Bô_5DDN4`"O85aV@0݋ϿzDSۇ )3ocϲ1`ʯU\8ʌ`oOpywX1L@"cXۧ8fVT+-zvߏާD|:ƿ7$ hRLwaW | x9á0f02=da x+qd60ױ3tKż`[Z|sO9l۝qE*3OPmp QOÒ>nsxz z'q᠀iX( 9dTQx6m l$!dw77#'cgN@_ ?1`V0G`?W,jc|Is4&[sk@Rdzu<S@r7p Dn->x do:Vblƍʡj4}i Jo5ːwc59 !2+{,`!0!i*\j"eCKK C fn sSXӧH+EY*Y0*] j] 2cEGpJǵF{\tN86d  J dƐmg< =]6 lq*30H#`bH]}{9MH13- {ܫ3t, Qc΁!v\,.6#^ c% 64CFHuЃ\L3,11@\ \ Ks> \P.8+2jWtWR3gU3?ƕ,yĢEcF0R.$ !-qt 4ygk0H:12Ŧ`D7^+۪ݎ[`q]c[78l|- @-+rVӅpsE~+J,o@AM "]XO+Hh"Uc{'咓Y(0``Bo2_JcFŤ@tSClZe!j@i6xG/QIzyI/]x%8pi9aغu*VY*1R~JMH' w `TE ).>CV|Sk}5 Sc 0dZd幍f`Ĺ 'g^!bK,(B>\3ianCFקa2!qHA+- _3ywOx"J:i1U;lAUѩW\ َUM_l<-f}  ).J ~]u AwoN#=:@_=:R+2@4 ց4|O ikiTijuy]?sJ_/p _/00E 9'2.uS'] y4z F c(W3M rKcrUԷ.W.#ON8zi<ʎhc,~Ka@ QtQbL^ od4yn޽W.cҝsf7MQT'@P1IH7N*M_hi&/ dŜLZ#kFA\Kрᬡ_ZnXW}lBm$)0lDy"`mVxK=H" ш 77ԸBnKBՐfInM! 78$“E ɵ0G1N%Rb8drI g*xs-Spt=]h]X+;_*Nm9Xt%scIaxfI P W̉B׃rm27":ٯW|/l <' vmG@XROKT273c ;qEXѼFLrиfS<3]E&[%e y H\g3 (3\}.+ҷjnT}ZPJD}?@Wk-e'~'L@BĴ.'O`X1vx(B@Y~p,u!U=eWN$*_{bED4xƧ$taDGڐЃy>8CSo9$hɶ/VyNTPD*4Av PN!HGP8#v%@%JKEpπDT蛱#fŝDcȾYLmb he.NV4 gg+-rK)u<@ƏQW}FIVG}W׶T)! 4li^F@<H*kj ŘEr @99JɥOIcr&Xe.W<,?U`Esrit7&IMt``w [/{ ^CIuΟ*KV:PL g*V#&ڻMC*`>g{ū5}Zt1fS[D=9/(X76+}:VtyHzf ꠩xZ6l]rHjejҘ*5.Zke!E76h^I[V=5 Q- 2Acd1TQ pYȕ#M dtd&HL˸Jit` 0r[4U5pl{wjwϴȳլDZHsu[ԍjh~Dm^Wj1qITx 35c@|_T@)a1 18ex54-A:5\ؐ<M2rYLנ7gg@K\ьNf>?3Qf#<~SUPΘ_{M uj릔zdKzܷP ]tٚ Rqk+p źL-|=>#;Bl%^ ܠ=B= 4 ť ~kR7fXJR~7* +A'7cGWF:1Y@Rw.?rlz.hx63Z$ pgo*|b\9b1_>3*&!!CD| f^`EW ֳ8r 8VkBcjȆS-Fo߬Vc[sa15bl"?SclzALHuƑ. ƕ34ox0-򱕀!YD"@K #U8c *cхzhHu@EV4Dϲ$DH+ 9(NpŞLW '`&3P)d a`:FDb5-15?S+QINjg b5-ScOo=C@H,{sy$WGGʒbR^`z:dRP:Cx*Rnؕ+HT5^˳CӮ][M`5/ݓ} Q0.A!T)*U^bUo=?Ht} $pVX9BAWf %b;F쓩$ff"?hqD KYUo%f"!Ó=IFjKJ y ^[45& {LOp'D%chW@>-ͮў1-a|$Cn!k|9AC/+4(|!-6ε)US2I (YT)R3[/@0pMy_ԏa x% q|V[5w@݌1GmR _05̥ Ѧ5 ^!dBj> -]@{ W@ ':7- _eLHfP' \eXITV;L/l}pSXRA`Ŝxw_}Rp搀犤(].}, >`{6gP $#!3efLcAeEZbfw^K:J]g0-81+!q 2KPx6KNzg Ub|zէR}tiauRߖ$~mK?e@?!.۠le;W07Fk+ ^K3t+ 0C Xn+Vt*IEDgpNP7صH1*M|-gCg$8FW'+9 T>`PPfxgo:m86u:#y'S ČW0SI>G3Y1g(B+( f"DDz2s$ N6T u'R2ouꏴsBiI/K7`Vpaji]\Z 0..UpSwu[4 E&%.2Bz`>ۗtiimI'ٹX8 L i0Nᐐ?@\LaVR(L4?QCDGX!#1&2yEB=qWtKgՒzד[!k% hKկ4r%{m[q?q-$3IWgcrc+8es%dgH%4(du Z|Җ*V~ER k;`9@Ben)k_Y"ďR/AAA`ISB[X~KwJg$\&:IWX9+͡;^r?}Sl{ZiC#aJc:@p<,+hEv4˗CPԜ!vҨ._WcꎍqijG_'`.[W)ZO R 's}f0 mD*:sIB'^a ˴U iQ"G yKYd*ɨ,s@SXNo}W+ 3eTP_U/ -"!I[*-_Q-U~*yg^:qy[.&g ceqW4h~>>C˺T߂pDc7Jx/; \Aޛ@XBB◷Լc)s-oʄQpoߟޫS?~JêޯAejh߀(Bwٲ> (FC+[lM􎵳#3)bK͇zOA"Rz6-k4g+~"]?=-W#j}%"͙bqح7@`ZӼڿ VovL2 bHN"WazaLhO:9J<*"Q yAʜB>| 惟7 8hj97|ab۱Aw`!e qi)"N"L$^|/8LޯB)jLa\e@eT%>CH`mOԯ\ư0Di\[DrtiC? G0S: i$Wೈ H- ?ֱOXEbUEB Y?6qm.yӧaWo)[ow5bȕ͇Y:;x^_+$6eC+:\A6veB>ة¯6/kl凷l9 wZ7Tn(B K(8IIqrٮ"~&!_]:W) n8z"~aS3Wa^4PQA>s8 A(X_Ɔ)3 -$%H> dQW>5]6C,<哐%cv72u.P髃(K@"!v* yûϕKh5idP EGxw߹iˉWJ-#66~<H:tp`?@Q)MIպ".W=tQxFX=yxPS񪨴 9m{z³H%4fHbl8gu,3#LƤ砲4~/]Y~.iuȞ &|+`;y7RɩB[Ǿ:uswu46(#7B>)a pHYs+JIDATx{XUϭM2schfjYFjPEBS{ZZ,4JAQJ 7013`|?}s{XjH7C C H $D@"H $D@"H ]S2\nHf( s 3XRȴ09{|fvƆ|tU7/bd&frfV*dYXDYK$P(Ra@RX sn3`#?Ϧ~~~ `J"@xl,(Z@ @nԭeQf!4^ ΡV0 !m=; /M0H t(هrBCC!((7'P*<2Ӌk`E΢ 00x /KJOq?Z K"&sbI6r _Y|f:F4M7L|cI!w g"lT˗AXL SCxx80  tk1]TQnX@ p5O1\\'E9{EV在/<"Z41r%w@)3]3Y1ח=&@@98Ho F񂦌 TPCB֞jQpA;x HyXgS Xf3#0ߕk75-Loh#5;BPϵ&C@HNN}r{F),R?*?Ƹ4^ЈDhE hw&nw9J')z^43c[w|qON.:T 攖HGG[Vc=7u*]J2KA*4{>mo!$NJ2>&>17 ? ~$1QM7 NgM&o1@y@Hpm,+zp˦NE՝6u鴁"GƯ}9. Sv=4W</0']VpWx >='-s1 [^ܢ:7^ aV3?ΤVUkD*֖ӧY |)f$'}*;@s{mYx(bƯ] kNzCfzzQ( nNܼüj' < ў N:}Ra K <X !TF#wO2f4L/~9WG[?%mhz t:,*ֆPQڄ]0t4{0}J@㿳gz(֟?a1B(Oo(? ygjaҶ7xPcH sJ>vwѰue8OmZ8cbbkc- C`Cr:蓶01,`am5LX*QkjZ9:4/U쪣`d9"$|C. G m7juC-ԷTQ= X#`DHz>jA7>͢<qRxei\54ZjIcD}uXpX;ef+tZn4h(Nu LÂ| u0,Ջ&Sq)4 U[m8KCr!oh4B DFHׯh4>ړ`PxA)];@ϘRVOII dN S{p+sAAF>;|G`Zn^`|_=}[*D}gh{rOg͝0ŢLv:8s@ӄҪ}n"vY.9 5+.j/\<,)WY@jVy@)X:%`QseKye y=3Ycz^> qN:SAޙ.t QutS/Cg̴a "GU/0~mp/ՂLt w _Jӷo}`w!0i>-n{vr9D. =a=VBu—j>#CإT V)+qz9NgDM8oן2l";ާWC uq! \( {:2;3|^2``{v P5@԰h3Xnm}}C=pܿa=RgS^0A%9vpښB"B_JG4 [c(v`}`9niBb1 +ڊP-)G; }ム Rn~Р|om´*ׄs  L^-[0c ?'.y©?6ھ xM옢@e=4vrt6m"4o߿? Sd0ScK=ԪtqwX;ε. eU! !n1)%G; ixC赯M`T@5maxfyvCGy\\X/4xb.TY|)`S{=xw k l`A7r0E ¦gCO}Nk?8S} [kp+c]BpGE f|9N GO('b;՞ 2E6NٱctI|, .#X`_`-3A&u! ܿUh>9@@gBENY K6<3+8 AuQ,+b,J{|1䜬r @C^DvH0q!0\x$|W ֟آFx`gh3*(Z9wثn *^Ps 1#.Ta1 Km3f|P]wq]h|sz1)BcCy1Ohlml9@ovGv!vtCw75mTzsC4l{1 V}pp52z "`xqn 'iJe#2oJoZڂp @"H>>D@"H $D@"H $m3:g=IENDB`pybik-3.0/data/ui/thumbnails/Prism5M-3x2.png0000644000175000017500000003210413137372700020753 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+3IDATx}w|UUsNz%7z =z B F(QCbt"3L6X&z;{׻>'"Jx'g]󬷭w_{敦Nh"@S'4I$Mh&4IMD&i"@4I$Mh&4IMDk.BfN8Nrx洊ܻnH.M) %66I&bS}tNq:Y/rT/DVp S]]%1vOЭb'Fymimb-ɋ)1cjH"fkA謉pVݻIH6Ws Y_xp-]]" @J"ai"TkP;i~+]u\s鎑{'CIlNJL-N}HefK;Tmީa+pp˺ 5:D4w%η.*) ]n0]=&D=kڧ}MpᝇG֡nJө,0ࣳwXZIk|+D]%jij7ڽmnjךLٟ)nV@\Cvz= fV^a$",?yi |64BL.%i1i7 ~k[j%rssEffHKKIII"..NĈH.BBBDpp"00PvpsM߭DGHzhHڇ"0ƒ5ol$6JݦG ;4X*v]鹎[4m]\B?{¼ܚ1;!FLs2Din(i#k#J䋙]:I$ z^zv91Qݷo_1`ѯ_?ѧO1tP1x`1p@ywޢGk׮"44T䈌 "DEttlAAAph #h-I:H@ PlIZ: )c^$J$ۡv/X%0~]%_8G'pܒM8|:e gIpH31+!CC$)I bN<1S{G71djnb,i M0{) %@#Fh8@tM独,dvKMM5-,,̅lp@`Ŋ?K}i>p$pJ#Զ&Ж p8Oj5&ŝl13"H#6%1N Eabl=1nd𙞞.Whx]Eo T":AJ[7a\JN2/޶2$eG8L|⊟(x"с.[U[0Ȁ81@nn6*a暛ts? #6T~c$OStgpHK"cx4qೀ|=|"ڰB-')NDD Lz@14!b@+.Vt]H䈼<Ѿ}{AJ "4ڌI"I#Gcr-Hz"Bd/%hɵ?  ѐK@OE8p/:hEGI:}e>Ci&/-Z'znZ~xGq$v+?L+6am.L4qo^(k#th+u,u*J{}$#db-_E`PCQݼq&e.=W)K_ pZy Q\g$Xtx f *c#BRch 30G5G,3X* 1ky " fm1iV}v\uEwe}Z!ʉ;C0_ ML]` hx(a{9q{^6Ҕ/&71c@ܹ9U c0M.* ɡCzSƩKݛSeijݠeWs5 fӌ+"lIjDx"`ND{xsxxHQJE&kN,N1k@A#Pj ^a6WA?kv$l8o9[QN<+lSYAO׀ijHǃeVD@ St>^ugϞTNe-t"ќ/! ;%&Kx告8SDqDMPLHWZ `xJ]Dϴ]Z0nx-jDʹYD{T9<<eU|&Me71 x6*ܫpc2RR҉n1*|/umtt$ҫLyBmCKt5xrhkwXv2Wikz*ңe@\8ڲDo bЫ8cp˳G/;^0`,<7ETYjb@h+݈'9D "AuDDTǨC0:lbN.xohnh3*g0 qo8Cv̑L5l T!ϱax杺Fӻ^v!u[gժ>n3~C^acE*HlFT9cjǓɡBf SWx߇ܴ@[sHRK n6-eXnooC m;܂)Eebѯ> O 9Ѽe VTݓ;Iks{-|Qh \+rR: sG/ێ<9,,O1Uj/S=^?+z.[*%,V_jkX ϼl`AXc%"hB׊Sa"F\6m3KH+s :E-0EF/S6ЩE +DE'TF :4jb(JNxh7erxt=8W3pqӅ*fwL g83A@MwRc^_F? <.kH8PPۈcVa/2hƈEc3KN~(4&F*A/qwjqċ;=B" t4^::CrF_={3i6`5]˛{Utj c,2/tns< C+G&z_p`ӣLa<4$TFgB@hXT{ x ";-j\Ս:jvSb?n7~p'NΝ;Ko>62B[k aD3%\G+d0yH=٤L'ғlbHyu_gI!a]XXX4Af?zmƏcDCUX6Jl:[xj}NxS8ţy2hFhAtʁNGV 3v5Ø4k٤|ݡ:h 'Tmkc8]nO'$li& RA%}pA.RvCG<(0!}é-HLjt_(&< ӛn(cm2A: tjkdx( <:U`ze T4SGY\'fVlr!e/N4.} @]1GEdZsvkYzd;0)Ebt,nݺtr !"[%Xg }029Ά?B#'R+E^.GG\Npfa~`eO3oK&-ʯLQ+pnN]ٴ |9~g}wYA$he$o]!nYF)YlnA?:Ys;K"Sgvob`dΥk `>KNHqr08DH:oJ]əC>+ 8maȾ8dR_w>'N~u)T7%ŚNH#Gsy~@Ɍ"{B "Qy(:~o"N3#O z>l-ceQxSmVb1_I۷5 :86'~4SwΫRd߽+ƼN I_2S`{բ{EDJpacuj%,z_Οt 8t(ioF Ft#$'ԄoG%9@=X*_zK!@O XߟbE#~ ?gLٿW}XH;P:YQBbDْ@< ;(Awxm/LɝI?ej?Ρa"fDpr#!"dyDmM KKo%b_T7:mz[ G!k~6f_8a2+I%W[TJ@b̠v0 xy"ܙ~:Z)Aj+w |HC۬^<kiŐ_,|׼'©ѱ9"$z`fLI>E۷D|.Kd@+X!MBc` zvö&g=Pg ,\a\ͫIv(.kmҡ$×bh 棋9:Lk:wψN/o齑 {7cZ5?-[J}.i]4V`k4؃>F.E=E8"7$@1%uJ=l^tN7ێL[;[|>q85G:uApA`岺}C4 #4|L >dPaeyK{yÆ/I#ixs)s KNϜ! 2DPpk,j,mmӣ\oItA!;$]hoq3)KATw!W d4ч5{Ա$rF 0[zQ$,xbسDtVHfy"z%vT6xw9H#Mhxy{'p G9,$@C|ȗ5]:n},-h9tH]<3ZL?zXO [6$@!F$@#Xzs 4> H+4 QLk;I~%8rjQ\[xY*!|ݿvi4ϟ =w: u C>8یR/QG8zjڡ"gHnTJC=.X<@3Z!14RN:aЁlƠ;;o'8OSަ~`-w>2T|N3}}GxD&Gc1h 3&2P?3z}tiJ|}іW [fK ^ (iY;<\ V?B Q'%ȞH"X˥Yڣ琪c@q:;uHs>| \ plwB}ƍ"/}V,d̋m?gT%IgUܚ? ׼+`v5< "a#3} y){$X Q+ܜB:?6/W`oȲO<. R4xF)/Lmb c0$6!}0qnW87>AP8 9v@_!&k`?F&"\FWDXa\R~'AzsACIKw|{\aPdΙ> xWw?,n T B^K:x+hca'OnceQdK'<{͑$KCc}rlӵ0yh.W%y%%pNW8S.`cfW}^*ϡe(BB-od6xQȌcG<|/?-,Ň#GQ b"VTO #y$p}B8wr9JoN'k| o=G'٢w'?NϑoiTZ!XY5~hU#h'= Rq㡢CAs%Oy$:M/Bt9w(?>49L$(tAm*;~ \n-cp1@*|qWlIݛby0s_g0#"$cS 8hE9F(]5dQ솚E.z$T>$r!cRb,22 Bhz Z ]MG3(SYQ+|7goST}TOɱ|; XUDjxbiJ*mg@<"Ď3g/uD N[&[wPrMXM?/VA_g{>]}k/Ss&،uNQ&=GnxE`|B!7Ŀ̸>6d(xZ8~!V=̂I=\$ְ:?=J"$`0q>̇|;)b6LKCNҶr%h}N-Bt_mR篿[RxlTЖ}691z %sɤ5d@8'X ZA }KٖsJ$aq.ٻ(R˰ft2~=:p qt.x;]߯-གྷ r6)^C3Q"/#XwD/bDRP&<ˤaEL 0NWB!s =N;_d$_Y-'h=vǂR3z,.Ӏ n$R:Džr}/ƹ˰D#;ʩ9ٻ8N( P>3\&{!, Y|766 =ZY+$< {c*WjI $2;<@n`U&>Nը `"A]gXX5l|(Fh5 ax1&ܧ{;غ&VFnshO@4tm*8dcuLwSf\Qd3OkV#!O\ 7do({rMyJfpM0#I#:=z&A^6"+Rj3$辨L'x#;t NQAA=m8+տ% ZFF@.v%Y @#ӿhP6Xl 'uS.צ u졐;7e;wTz$ F&`7`ځ%`X4£׹hd«e3 &y] g3f)Ŕ|Vd n*E9D)o֫$>y\4tv]bR<'SqE>}:&@Y=Ao-譞 !n oħRi"#5J-.MSzYXd?Ӻ$\H7'6/ΩA; 0Y%U7]cX?mc;֬,1gd&}L .0r.@ުR' ::޿Ki~ 09w_*?[{qV ^.<| =z^#_|܅;# w`,#vf;f|u?>G_C B1([Q$XYmSzw ҕ=if&3E\A$NPNm呭Wׄ?t78[PL${l:#<: 5&@bv+11ǒjFm H$r x^|(F #5AU?vAjct$M6z%>9"ޓ]O!_鯆^So0b*8y0 R0N\.06Tw0e8a<@h >x_Lݷׅ^פ `?2ä}أG gF"N8x|/]K_ŻpYW9Vè4ʝ@8:7!ѺR !R̙()HjM&_KŜp.G(mM,/!N Ҝ!'+t%"$^LӀJN5u{\u+X _jF,%1 /=_$@ 4|s:Ml8Oʭyk$SL ad (LGQsx` V8Ivmh$*ӈM2[jЏ?pVՖ_.:!i+ @{O#az<N"HBͣ:=69v1$ۤ7ŧݖ,!o$P,k{: 7YZ;۝ߗ|Ϳ}XuwAߍ7 uo=uLݿO*3>"E.ο7 12w/wߡT:g$3r i]n/t܊h?DFjӋ95o.%z_G[|5`ÏͬGOZTW^@U⍽McHY]c8ݥ#fqO$6(.0FgXbXx' 0G =h-3Þ~d㿪I΋fd+!ƏQ\#T$=A6 ;k͏ԾYueEMa^ `%&s{SEXxx2'v-?6`ߠגEuN=EYx{O|%j- &X MByALn&|y7?[67mJM/!][Mc]eo.0k 9{Z)+?e(qSS@k)S)5`=t MCOU4G&i"@4I$. 8r,IENDB`pybik-3.0/data/ui/thumbnails/Brick-10x6x10.png0000644000175000017500000003661313137372634021143 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+==IDATx}wTUTխ:n$IA2`#YT#bƌE (P@hFG}:Ì= U(q?֭[wks?#2< 2G#̑@ sd92d 2G#̑@?RqM3F6;ug~Yq,uyjVa^m6eV} ;vK<*%ky<1rfaR&U`xuӭVqˣ.4SfxwSWY7=WTУii[rjw~ǭn{}f'^ \ywʵ-:V7a͛U HOe0l`uۥy-5ia~="D"hGRڰ3Qɦ" H=}9d1A@G[zbY0(; B 0C7Q JW؜9W,E8,Gd8)6~;ô::U}Xk !{코A2߉/{3u% ӹ3"Lcu^}NWra/^lESھS$ ل_OSFF~x7!ٻU񐷙O_laN\G"A~^lOr {}><)眇s^M"Z# Se^Տ2#Ɲ1lfTq*ۺZ;qxxx|S^F%p9g#= r%7* J:Sť8CLa'ݎmtD|bB,$T0|/4C!*~5?lǗF%CoAގ޵Q03iP;R4'L9ŵ܂Ͼ?{$ԷBU@0bFRf :L 3sv?kFukVݖ; w BXySƌ TP=[$]zJG<yƫG T˂w2`&:Nh,#H& <^@pi~i)mtRE`Puw6k&%gڳūHļGn"̦5=Uwûzm4Pϧ1w0N"0*_ qvtf"ˇ9'iSG@K#Q,-)O6W{U_ #^:ېtH3 u TiKL[9uV _/F0J^.84!ᑹ,.0?=Mt wJ8GNt%{t!YߤrY$y$gWJ\5(PA@EYbA$?:u3n6n` K6~#&:Bü:?_ȣ—gt<1FI$4sШ:xxF||<#&? IDj ꦗW7*h{H3=TqïyBϱ{`; > F]{;u7#z|L僞oKOt^〩4wT 8|a;3T[ѥe0dR7ؐGF0V/@BHyu&{nI#oiݜS[@F M/0?1?S(2%bm0\kI E񞃦b;Øoko+~Q&ͰZ|/=|0fn 0^1%a) +@-a.Q090:畟\0_Ӻ0Y*/Y0 K>loAp#`tLݿ԰TbطKLPgLP_L4 PVFEQMPy*3YeNA X^0$ЯBx?GǪ4$;`$I5]&5uaS74k@$WW\RQ0X/7l Dr18Ϯϝ8"qc@^5|4i׺\ii%:ALyxK+)aL5;t=ÜOsZv9&GE$Z{ԟjֵ')5ƨ>)x9铸*9˭Bl"ULCУk+S0dȐ W4Q->M`=˫&2FFgdwqj(;DFp["4N@bjO.W_> #P)!܏x\9ojPlRB8QRN8^Gm:AnOB4`KT-ҋY3ѠSM 4!}盒ю OѨ-|\35c^&?kT>*G~)q,D <0/0GL&mzoҵ9ģlr7WRD8Ey]|/ZXu0v0:h<^;!_fyx$0L Ld,}ɳ=K5HP= bOG 4a喤Ͱ>ݛ1Zܑ"34%y MFZpP~|#>?y4_{ AdxRį3M yB/WS' dc[MҒ~x(9A iy܈%yD_GfYB03YMMq:.)ad!2" !3f|H(w} +Z :ɔN ERՎ6xƊo8$ܡ9Uώ^?}}5%k]jӅgDL>&G }}ͤ d!/ЈBc!x"KNp x!nOaѥ׀ᚤ`b 6a70ywm#@.5$Vf >DITD"4p~50 ]ߟ=G{x{1149"W3?g86&fWsJ ˇ1RES]?7L׌k|J $ӺFJ*gg=by@Za?CgDLvE1l֠kJq,qy;Dkͽ <ϫ>D}Aʉյ?v%w>3(XT8A0hy5˭iݩ{hD 1U#ZXxş|@YV."uu|_«1S:`,& 3Ѷս,ciN^*Mrn0P00V9<\j3Rs^]@K# 3g^e >j&ڞ]#+\w# {&p11`GnZ4s';!E}.3Lľb3p0լ1AծR='$)H k!ǒ`ڢuM57q3xz^N_Y/?Ϧn76Ŀ,K_IcA mZ _3ӎ19` #̒V=x5_WgF-*?ۣvm0 G@C-0d}|B.?UR qsj;S'?jvu|g70 |㩛tYRG{LStA``YpRhjtۖ`x?+4qD1 S>tFA\Hрo+G] ZWX~BHȥޟoq{U_KIR_Ǎ|QӯR͔8K*x4(\&S{Aڀb z?ר0%7|koca!l$r:g?^[xV~{B2:r EH&p`pX 42GHIb wdK_5/*`늘~aPbṵ;.][ۥ/yth?ϣkK}[.3[&@N2 i^'( c$iiyz§>*pb!;ZӜ$?AHыjP@l'~ Mr)Y>r2!M( ΃ &\RcW<ѿW-V0ߖ3=*:5<1R48KO]t (EMг&7BxQbIc٬(6.7%ui aK. ϻF9'SEYi S^ȀJ /p t7>>{HyǣB[ꖒܳ ؾx`~3 |ytHXVr `o8S<:~BC K@8J@NÈ2UTҀh'unJ9ؘi#<r- /0m0 L={L@25O}J~PV7.=:H@Dm`/!n$[#s//]s`o%+I:ĪB.ФV; Agrgrd*"v4_p6Yqo67#d{)g}!94LQ#a?x-g!Y׸YQ$b??Uͪ#-iWj^e$,ãLQ샠7(ԯ3a_-Rw]WOR[ϑ}wkx;I>>k#UY>ـ92$r}>R!n0ՈM⛤ s<_ϟX4qMh(yA=.PhJXFxT]13^\%~5϶;gZh=8`d):*-S+%$u{->Ѣ/[j%3RzfL3Zpd./6}c1@1zrQd9Br(P]o!S2~Z0ԍ+.0r[/-5tTFk4wK8vϜ7y v)*{AU*,}(5 #n%&F.{ ĤcW$$*QGPayT>P J(*,럕mXR_S~ګ`Z,L:-j)()z$ 0J!% O"ZU+ }p @J@nurl7Rn֙Ѵ,\x4yHf#lOw se9nFH%uںŤFyfc{/e4+ __-R9tG㊸}jXo:Bp0$A՗oyjHו!WKAP;P3pF!ĦEDXd tG]*Kpm"u3)`Qi*p?SnSL'}F#yl򍡝{/-j Ph?p'\U^A_MP{bjҐ Bj);~ҩaf)bڼj1"&<-%^l:<<?K6 $B0ψAcSSk\"RBhİoHщ Ç%'4rT7q"ӗ[4=q >{In>WJD;DI 3Eqgi7Lq/LqꖥQlG%W݌9gՅUGݏ\o;l:J ۽&{4)CMUpƠ_oP>. S-4uf!!j&hf =џk#,=HPmo<׼أ>]"mp|;Ue@i 5M!_<5!,9:ܨFlSLCj2R)lA5[zfhE&8,vZ $2Xl;m#=IcbvR*CЉz4"u7rVtjH S%4/岭K w\խ^C,(bE@QFzIBqM:8 iMBH$de]RGU//W OFI<.N!52 z^;0S+DsHI7€H<WޯTN,|FH|QQw{'dM! BDȡ15d7j:YsGI,C#>סQeJ0D)В^"RmCK?" "aes[3T ݢw,֯I߻!G^$20;;Y5YB|m5OqMUKWΪI =ݗgI@{G:v'p!21 (Dձ!YFi* $P82 *=K3d5Y$lZqD5v_7 JGP ۯOݱ<"_c_'`.eʈs3/zx=@d+6ŝP |vIH!<Xj)]zE@N--P_+ :SB)Dz {9̪o@`SjYpᠺj*z$Fd@6w_ܝ٪%e?U>xJHz9T\{X^||ű[m A〨|(I!d0z]:* EȠhkV: )eߌ0iBhPJJsCy|e/ GW0yQ` fL"n|YɮBjO/J5}\{zg+ YB j;H~ 86'FNԕuRƵp`XE`س k^?6MD^3H0:u%bID~|=o{)e j(_{J ]'B=yH`,= q竪!>S_2Ounm(oD?,V-~.9I!y "(pk:i[P0qhywDGxXČ&> q)\eb9 R R0+ f/!;%z"sd4'Dx<<6>%S giR ¸L u:9#S\]>3#Kt=A;[2Eˏʤ. u?=s6OMkǾ$6K.I#xJ%L/Ni(ƜxDN):%V{d0ϗ (U Zꕇrr  HTWDͤ' /qBhֿfIvqċ?G ϰ~Qg' J>;:gf?[oW%7cL6=7+>n|NkJxeE)l49Jn р  fr5$&H`6KG-T$7"<ikzAFp>/JbZfǸqEO?qkyK(Cw̰'?xϽ |gmT[q&~.~N_'AYpi# :˲tB>I5!3@ !ZQKtG0* &]x> z0+S;n9ȏK$3?Oۘr ~D#(F>cPFcQE~F1%|s0aTnj-Oآ Lr\7UWX|ȹ-^n͡D]2Bx1{ ys:ֵ aUf) qO='yZrqXcpX<9E z?/ےXp6 y:WHWUO> *D iJv먷maoIT+`?S͓R/C~=q /p^iTUFU!C#"Ft ({*w{s0Tἐ&IUBAq%D&YV * Bx(l݅' Fd2Dڝ]j԰q2ܺ'5UG zT'@X}[͐e֏ϵ7'9L")X1$4:e5{8PM,>%)f Z bC,rb$:`Ku Gٗ<#^$w}DdS<-RWϋHjnDr'GUlK{TSaĻlh;N>*8.=d xb֖$2r1PHCzYrR3N)U(FPs}r4ota b) 9U3Gu!uE9-YjcGN_N$NdeqA)[CѴ ]ۓ xNGu`f-RJ2\[Ea tD5rF`5/j|R FNol~ٚ'O4c% jc35{\2W]7_MO'^q[Eh[JSh~E 密1=O#:t t֗,_r)-N%OSVah`_@ 7P$9.Q`,($^BJR2`U0xdHA85#h4O\k<2"Qď#ݚf-S#(B9A*+1kpbB06C/!m 6./)ˏ/ ms^>ե5H{7=?;Xx¾ +GDؒe;J}u[^v萴 X&nj^IaY*$O uIe zd֠{;GzCx3ze"[qc D8~I ' JI=`(wS[nx7CO!`\!D(s 0jk%bP8nJD)iɾzc$LvBzW/ ̟pum,>+]tVHNgX\mZ ܌bL0ͪ#, ȆK {p =ٮNfrf~,=4C޾aKL30W^-+d y`"3^5H(/]y.6* , P}eLBocqpaʺSA]c"R.9*ҴzUyDbN`$(h IRPsb$O/-cmZ6=&)sL~;ylz`OI+#lX3*rDF V9~f.eF`n#8B|{K),ңjnitzޫ4"dI>rueskOZ ީ8sf$ (Kl s,U@n#$Jf |D@!$&Br4}[$逋=8B`QA FQ,#e됏zWS SނzzRvLߠrOݏ 3.yLuSyvp).۲jmdT]ڷᬡ$Mly[$"As(BO&<|{y},N gzm۶:\9ʣ TGB/Ala Kboq'MS߳w46!5*x=?$Xnd]TXɜ$*ξA^HX 7%a>3%rݶ<ܽjP'Q4}p. cg0Њ; Ʀp ?Y(;}xߏ^R}h$O-Uly8԰S%b\a+QB0>{yMC/ġOSS9 Poyۯjnu8yb@'Gz1҃' {H5TC|~!5qH`(S}`Pojؓ z6B*\96'ڏ*jsruPK=.'o[6\> =#?RRR~}_W G~SS=L-% F24B7X=D[U~p/B͛UwqL3k"'/HA^?xaP3odK_C ޚEΝODz USS;L-?|728 _&JXsfώMO1w)#f3󀓆g?cwZ{:}d 2G#̑@ sa pHYs+,IIDATx]y|Tս>Q+0 ;!a! B"aGEuW\q,AVY, g}V~3ܜ3O{{~9?|.?_> p}\'uNr?<}{ر~ݲ'ׯ_8 ^L (HH 0oBo' O:zdچ`҆6HIJِheM(=7ӂ"4Ԅ+X4$\yl@~C TrH⩤3 JRJ3GnXe[}B=@{x-};j v1鶳le2ˋ,ktp]vt%<2*~jR,  Co`?&"|H)߃]/e v^~Nq-kϊpvG|Iі B۶mmH0w,H_ς$'| x&go~m<^ 8 LQ  J >ؕYOd7(uo΁CX 9}"٫oAO%p:% =xۿQ-Ym^M_ou~r`Co80},Z$P=CI\; `#R@!moMfJ=hH `3:? /A$kY&ߕv975 V>+Nk??@K7S5d|sL |>,ld#' e@FaRK ҧXN}'Ya0 Yv | 4Ֆc4#PGo{vH @!GQ@LԡCH0 !$bboU cIePI`xe)&dfYPhڦmKHZI(-{,_geddP]]͙3Fٳi֬YTSSCUUU4sL>}:ԩSƏOcƌ#GҰahԿϧ޽{SݩK.KYYYNDQQQ6 \xxG, ZK?6C4:^nS5U+{ҡ깟&Ú3,M"Ȧ`1p` ZBsCiVL%PCjGKM ۭ3wBݻR]A< ibر4n8A*++iܹxb:tf.H(W__/X[[+7c YnҤI;h4d0`Pǎu@ 7"4\BBT Bd.K:,~ψ p4 @0x-CB8dPx/l>l?|z( z׮]dI<<DŽSiLM4--&R9lJ4gѯ L0AH?~]`ϛ7,X Yt)-YDo…4|AA8h MF'O 7bA؁R߾})//z!۩S']lvIuk_-a"~bt,= }9@4U:~H[Pڈ-zndu}3Y4S{!Vye)VNb#1-ғ.#`mԳNz!T7*pl$&NH00 h__(o0_1&*Yȃ ޷Y`'Ghi^ pŚaȋ|'}t|oY@p#܀Od&H\=6^["y$Aջ>RKv Y7siP({khs'KĈ-|8Z|uwki5 &BB8P $80p ySg?fρP߂/YjŰP䎩Gc0&O 0-t{ D,3 2ٿ@$VIһdz ,$2 =}P0\.ʱ0`&#3 Z } ?Iq|Aff;T<|$ガa7Mzb4ncA.j`#"`hLQFI̚ca7'kzۙ4uxD#}O)Dj~6?oz fXpe@F8$柨6nݻ e7AADb`NvvP`DKYScBkL'#+=YJՉI9$ h?aGul;L7uta{^O FbنY dHI%a.a{)% :lYlg2}xe%lbb}pH) 6kRܑC sY$^ |ta%@BI@$u X_n%|Ƴ'}KJTu=X+-@I!Ho !k"|=Yơ6 M*ߟߟ-A]ҽnӊb$oXՐoHy@+< )0TEA J!d֭=C'"&vx:VshMkdy0=S`> V|χZ"ƥ'paT8 |%lgՋ:wnڋD̓׵_3߮T3r;IBH{-{B7r\ gcXgl 3pZx=sF= r8$ƨiXgMn:#U=F@Yf:ZaAݧ?.hgA|q?S>#4+;‰@q?G~"ܷ,B#6u dK[hࢅH x 4KmPAm c9}qj!<  ۰X7u/|hoqdK dI7D3}fz]D I&fFLUGeA\>0VΒCv⫒Y)B? /$[r/ E5A[ψWgiH`<ڨX8PV {O8:PN@_-E x*ĸpzj-d 0y޹wɈ ߻H;Sn(G%<%P䛵Ob"ZfЛDDЁ8=>}{0p5픗rB] ^BH!,# >=Vh'Z`ɡZcC;!) 6nH5=ۑ-L}ӐR\8G6nlEb֥ZQfh2?fYZ3<8TF%T뷲]GhfOANjibtE)QYLgz9ήKu6qY @ձNDsˣ#D__+S,t]޿DΞVRΝhtVRݗY>zh1`z :&ӛam3PxVc"@ sM305JN̟ka7g7\I1Ciã 8)WK)ngW3]@#S'hȝStjM;HQm\''QiM<,@#YC(Н b*h(!rd5Wb )ʳ5cb[e[mONPCialWQ"v9yUXRs(<>A08J`vxxX<`v_ C~ 0" A>'72ŶmyɍVf(5zv ώJ@ t]ҝbp&N}@N"C5prS`HŢ}H@z wf0@~ ]6#-T?-?B"5`xC7--tʷlLÉMқN"ߚ > 4Z@1j1.%dZaxAɡPN 0iS^i2Yi@YRWڪM(N/e?a! IK-e0Խle(Znj$?lgXw$M=tiwIkhjMz@*-c#¼!͡ѡὋ47t8rqCBh}tr?z >˳.C@-h8Y^@0~zO$lDXt'Da&!EqGv3CyfM{ہ9/EtyP Wp0|8g_$U1oʔ}ȃk֊ڵ<|Gy PoyI0ud8 +x*!kΝzJ= 9 Y@t3ZgnF9#G$RiAHpJFbQvM.zxj'}YIm(އCVGz~ޥӮH`Y{a lq/Sj6EpT{ n˞Mtg M.@T8z`ZZBCu M5~2s|-a6E .'cN.)n,[`Q34(63Awba7pc<_Y'Ng:5¹z)l'WP%g>dB@SûL%zz2H<,)L|ؽM" 15י܎v,sG=,!'>=ZQuzri,}qNd |ȟ.g_t [y>d(SgJ5W)suov#{ԘNIpY2STx2aլ:0 ȳ^v袕 DAN-Tft|s}it)&|3D-@j> N"Y5@7 =M8' @?JRY8SmR~ՙL+*C!I, HO8m|",&hJ 6 6`&I@je^j#ǎ0dG~DlG=rrW~ߙL@4" s=2ixρ\cƶ&>Lwran8xj!7=Kp{ >d u'*(c4}nE=\ u7Z5V HA_t$ @?(nH85^y8= =rdK,Bb$P гԆ)c_ # Wu9@!Ɔ(|hĺt{8|YڀTeŽ1sf둀/=\<\۔,; C {wn_4Gz|FΝ"&c)SGs]N9+n;ߴ22P>e_IYz~R<\hǏo#%zef? сh%7" zN>2c\>Ҕ;UfKI )Tb d"zc[rN]%{㴕[ 4$o>k ppgLD–i CTb" Zn;uҔuN}|DG@ iv@(][HZkϴo]GBƧ{qO=I16iW٠Ի7 @ ׮qPM~ fI%{| YB$g |$~^|( \wt{hfʫn9NISR9CNIfgC10nSSЧʐYض(M^ orĒXN `xS䕕^ d1e !e-1;Z }c LJ Pk0"M|*~(4,rt[Y$%ĵTAQ@DpgptxAstD0"2flor Aѣ6Oٳ |q6]_([˰Ko7ǚEuRrKSci*)/EܽqS0 #kOI\%@L/0q}[O|ȳU-Ңpǚj i̠0}3,Tݻ(,=ՕDRRK}ajxh v[j`< +~񯟧yK!v:ĭUF`>7u_G=sր _O]Ct&R:ZWt Yls@^2&o6So^\v).wnCĞ=*Mݘڢıxh~ e$[V&TnID2hrsK!@` `K8hrQi`oLJ BΝ#AѣI߁yz@^bmCT=%bT/ 7K@0&iz&Tǧu/)L~l:.w;ZɆzn.85C.$d) ,AǞky6zMc@v9Cc St& 7Y cebLzLK puHs&A$@R- z 9a,XVF KpkV07~[u73K"BߔH[> %* +Y=wۗba@Llى\n  нTlT fD%;ue=eU 3;jJіfPu|Z,zuzxAeU{xb zi~,woQtj`DMOwi-F^O Zug,fX;8zt @\0?eM!H.5uJ7H0p|}Pv1D3],PBF r؜zfH5 Fp'hIU%'Bw2keXfIfRQ;jz*W!SKٿא_o}m_u\"35$T3cҁ;wt۟2"_tE oPM0[]9ls04I7pJo)J+$At!_ǞBs߱]c w(D^}u>[jk` d8@@]Ǧe ]mpl  dT4JMcOȦs<0aQR'}ZbM_j[i6pYXQ1&q{3jޒ c`9 MY[$A? 3Rrڑosf7wRsw&n‘ w 'i#%ʡ `Z+J޷;T t+:?{( v|bߣW`&L ))iwO{u{5/:m>qHm0yS+Ӧ]j.ĉ@%Cb2AuuO=@j@"v ‚ q]w|ѭԫo~Bꯢ3 ej}<) -=+)Ar:I 9'u®X _pM@j3-,2;_!wG fج5,X}q]t|it{M]RSڠwu; 4Է/Ip546Ɓ |ߵd!/\Wy Lp5o`Kyz"Z[&rH8E؜ه?z+oCaӢVq{:;@ʂ{]QIi * ދTdͪ`\s=/=%Lu]tՍbVJ{v)t'2V|x,oC.LџI^k&;',$-]rEBՃEt' >f\࿏ |mIp ! &_)oBݴ󅥺 b0I>y^ʦlrfZ%wY"%/φwV{'I0i~rX\E5Nèw g8æN1h8ΞXJ/!w8(*IOi/afyZG+\PҡA^%@|uskkEEWpG$l,1OCS3Xpg]55K ҒQ=H˘H3jG'JIRZ[%JίZ{pצgRSyZ6>yܪb OIy8hu9wKoص~uP @HG$2qμ;5 ƝEW;$Z\g%ٓ=Z~d.M˫g%68;sh ]2q3Ǵ3g 2{WqAURNHY'My+ فVUvW@-3?EzWt mI?kR/3cJ9*Ц1R&Wx IENDB`pybik-3.0/data/ui/thumbnails/Prism3-5x3.png0000644000175000017500000002450113137372654020651 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+(IDATx]wxTE}ٖ{Bb.X0" @BI(AiR*%Vx~{gwv'eCv<޽;;gNyu{Jo'x /%W^+^xKx /%W^+^xKx /%W^+^xKx rO}fԋi({mӿWƖ}2ְ1zuѼB B.DX8YBk(}T%n\)qC2Tᩧ2#He4t2)\4!.:%eBYLlh36d`A:BV Ru _ʼŋ TBLWL1Kq2L͏oL djL;}{sIe<)qM(ϵRY*:dfLabeFX'/cЀڵڛvvʽVk͓M=ѣG ͶcB' @hl#Rhh'|Х,>y}q=)e2$@'adk+ (Hk~Q.?iBuR\ 8'A[¿?^&v>hL|-8OgOn+.{ɢt 6IڷoP_8tFs8i|8:=Jk-G">&G#br :XfqYn0jd±-r5-;#&>Fhf_R~&AkDohĉуѼ/)R-WTzgb U~,?N-Lء }興HJJd!իWڵkSZFTZ5~\\EFFRhh(Rp. Z1'Y2:puaz${e9٤xpe{-zB_]Z2сSU84G'݆gKs.B> +<*@cǎ:@u{{g^0W*ׇ!#2RZZ N:Ԫv-jqVJԔ; fғ mNR1)&]}w0W$ཌvtT:b#IխE]*.^(x;FFTgKE?Z0,\1b0`JA,.$7P$gcgR\D=J1]K]Q\|lh66cM`=4zDS8ꞜH]R{:ԑIֲnh''%%E^/>aE {6_bZϋnG ݁ӷi0>딦Fc6'>{d=71 &8PfݗOc,JqmxE#fPFAvU\H,ݣx: ?F-[Ν;믿dnShxi-UD.Z=yҁ' T{UM]{KM(L]:Ls9F>Hu,9"n7V/P H?X:C`}C9=) : r փ,sf]-O5CH_|ԪU+ziΜ9ԣG~*|oѺoZDP !x{!>&L!L"xUIɩҜo6?RTT_plJЈK#DS Yؕ/5999d(Ƞ'xۤI 5jL—(MTG $a@;|HQ2GraPboaт2PLCd yT{8[J |0|D^RV2f`0H6Ka"l'a;aeG` V )S Dv;pH<;]}c?u 1Q.>:Hkѣ##ЂZD:>3t2T8~Q !=(S hd3gIb3 %H93e-n6$[qm,d Qr"9_=us_I47C6w1[F켼l 2<駟pUC#K;Y U8f`~$4*R+3kT8u qԱZUP6=DAjգ <Hװ_cAH!h;T-k15"IT8mO;L23@|ok!DgY#\cHHf@c*@>p }mŜd4e:@46-`nGS "X` 0Tz+S&XWZKu.LN%%P'&X&XS`956Ј/Py910>D-# pGu  EQnğD  zAԣpU-D!zFH5Q@I1 7tN2-Ĺww >dI5LDYmw $=]Ϟ=t-G <ٺtBFI#ľ5MH!zA)X2#yW b$cn@:tuڪc3"_`~&ZtKXRHJrȉQ~:`?tNhӦMB@ 6|uUGfb-L6h+ }:%O =VSHB8RN/P+t0|_k<"~' ~|Q"<,\ !fq;#Ǐs='4b%J8jwg yy%l<Nyn4 =Xp!ޏ3է > 1.U!vW\1!2jZ=˗/=@hOI&O /`̘13؈02\6Q{O4ثz*VƜ2jt IO=)EcN1k%, z w0.|Zd3V 6$Hh,rfB^G-0azgmQ@G~!( C'2`DuFnhGT0 vEI-\ɦYP_Iq>]N#Ljkls 40[h0 0 kE嫟hlʲNP*־}{7~x/ =0;vXbݨ n&PS%QTG/)2Q@h|WGϬ; 闽1ӏGisAԴYUO~K FX(ݣ [/A}ԴiS(oԨuЁ, oZc@N B(l+mOpoʘ;-:#z/oOc-"%2Ul6|v VN 'yͳ"W; CP~qT3D jEݣ g"|}m޽|t έP5[G ˈ9|ȝsMAT0[0-YZ+n frvW<=r<&A}`8D9 #)"Ġ`"+R%hBhH4I oQt_L#|btmbb$/ciy7=̕sd1P?3 ÂuD' b i7nl#$ÆQE/x="jÉP} %mIoP$uz|@uTu+PȂQ[OQl I40q=Jճ pL%Rp=\]\\4 h-msT|CP&J6RZ:zg3?*D >GQa_%g=3gΈtٳ@FxeƌŒE ;D='jK<B0F |W@5aUd6()%W[U٘;qlX#Zt݇M@LKnN V1@WO?-c0>JoթtRA*;ҀKe2d}ꞇ QGZSJgm[IYTEPA ٗq"F 큵snN oo_&{[ګW/RرBm#x衇Da>}hGĶXD*!cNq 7U*v@>3tygcYkw`1IZʩ音^(-۰am޼~߾}Eݠ ͜9l^zI

K[-s`H@/6#f]k ``[PQ`/H퀌l:-dpz~^CTi{Je+GM:@M1V ~ >\@ʖ;m} v8w„fڷ>/6FaF54K(t+Ko&6m;/g?^|a$C#Yf 1c1;7b3SegpdT̀pC¢% ^K\/F:HXE^l {(j&[ݞ׌D|)+I7F.^{a F"i"մ0 7ѹDH(IR@h| {l6zr.CGЦv=3PĩuCrizJAJ5үshӊEt_)Vr[7%Bj &վᶊ\XШ6|4꛰@-xh)JUk,y6>TF,)kH߉r5>oBjg/<&3kifJ5 4вSIfV[mߙjVdh\=t,Q >H jWraaT))ˆD1BcAf="3)<; |`X|M[7nDx|gxu&`23{Wx_Т{F ì[m' Om sr`8m:ur$ZB-^`Vq٨#M :LҲGpFUƍS0#KJJBX~c*ߏվӫ[-k<%0nPEӢBeb(Ru1&zժU6@`FvOÝ4hҊ)Z97b. ڏ,d >|GkQ?ղy͋~(iӦrnXV6dun`ru$ !CP#-#(8Pٟ͉+oB-hh:,kc[e_6FkV_LB.#ѹ-\VѹL5_PY2iFocpam~q$ d8@ȹCܹTL͛7-/y0lЋ6_rH mf^m&5hۜFknm1M깫nF(FMD(7a:$u0eZ2Cx- 6-Ù.}"SdAj̀l؋gff%l#H֠6o[5\;$Gbc_âFO3ɓ#fy uw}HdX6x 3X. 1Ryؔ$aׇ@?RhΙIp eƓ: vB&$u+W2~G5S-b5OuO 4Pq^D v >y[>t@`@c7EDvݺu0p@W}]ݹ_n-f]ԷxA?=D/i`ȊFl5- Ch!@l؈yeщ~d?4Ed[5^~ 8#f{RYc:9n]}[&Zv@ލ {`tєڰ%-?09R%@b>DEg >P!5@_6ݟW~X/vXhPFY2CHjjVRbuw~jC ZϏ툥_.@/ eW!7jL WođZ2+f=]VLe"EPBE!y1bnݴw񧫧]]ާQ)mGut*o 晾]C3ԍ]"(<gk_Dj ({C X 'rr XؘUÍ, Q>B?M*6Q;7evYL@&߿_X0+@෸B?|XJΧЬqa=˴}~Tٽ,`A]JA&U( K\Dgm6ut1Tt} *`D@L,Fw}WZ6=RiڭښײqI?zlw -]ބJ.sK(۝#)2L ܦ%})qcv[:ep6nlA#%dHa+z-^X ?!9ޗҒڿA#aʞid iHa ^b22wrJqL8n_J3җzghA3,;jZ@;'bbt`) +P# KxSݏb#>Y%y~V.3jI_&`eۈG,4G~ʚ n_i ѭ߬KQ_+Vptk %D5Id\?M捴 qnf4Ee׿ ^.dTTϊi_$녔bŞ; ^+pa01n] O.N5qD];zkwXb*zSٳ.d F2{ԳbowޓF'y ڱX2!bID'݃tlYy5^B>={6]B6@M}cInk8Dg6*|rE41)` !n*u>_sn H  wC܊e;@ PQ,klC_90 0srsmn\]4~Xp1}rI,eGGz@>6Mh b>Y n?_. %#*nxm\38<_.)8vd`@.K6,7~'ӧhխ+!ЪEH&Ay^+^xK88nE`IENDB`pybik-3.0/data/ui/thumbnails/Prism5M-6x5.png0000644000175000017500000005137713137372710020777 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+RIDATx}w|Uo@2I&e&mRHH(!J!t!X * BPzT:Jh"EEQ,k꺫u|=3# y={{sp7nnFnnF禔|r/e7Z-jK2HuC?a@|IGP\O6qS :o*}VCqz2fԟ^֥ˮ~oTOKKT@W]7a=W 8δ6eݏF~GmaX$Љᷩ{V/$geSΙAǟ ˵ݮ/P?~qoFo)vmJyV;ZKN2zMTգ.j;W։@YUN;KV-W6WM5_ fIqDo&v~`A% &&ZQKQ7&Fy<UNf S:7Wy>*zU!!'9}Dj^Gu P~֛70Zݳ6`$G{a@Nc&iP8Ok)3l R~?F?nC2h+D 6g7Lw8s̆Pq-&*#YG͊PbTZRr:ըtWc|i) xjEG@dJccc---MS 9Iէ9-N]k3s"ld܊*7LԃZ" 8- pḪ0-(c= x 4oL0qQ bB0@55ִ2!qr/{Ӄ -϶y][nSSI%ƩID3)5WIFpoY43'y"UOJLLT~uR4#S2 _5+t(486dDd`{T}2tnӡFhf!1w5K=@iш[ӱ>LvJTix%:BL ¿4 y-4$ = ՕbDB$d2# a p=wR]@ɠ߇&Ī22jrfO@IRTh4{H퐟e.8  ppՂ4\6iuT7p.4CEﳘ8# ?S |ɒb᪍@?3L< @ z]GQ,x4`U`c0Nmm=9 'ɬY}.m;5to709 Sx_hx57I6.F ? ,vR II@lJHH֓?4f]sazdN ip-Iz&6KmԦPf$;F†KC1] n)q+'ԡ~?d>EOӱ1px~68F‡7/ 7*Os%FvW.5΁@-EC& fRR]uT3B\.Պ0TRSi&N8f@N/SW5&5^D+RdJ*м.|5r p 4V7LdݘG{Ԗ kd*xtDǠ#2DTXj?j܃I%yYe?bLB:ΕԌ?{g§*9@pj3Zj;g;T`XbI3@N{d b=RT)'W\2g@+B}4|VD-5T~Y[ D \h呀O*t٘H.%6aEh=L#H 6ZfV@D ( ݨ{cRSsZvN" ~L&<#tmxǸl f$X|_4W i?-aX'%z6Q,$ n ?4AM\4I3Aggٙj$)Q %쳫{\wf%9&ё|2;0f~!iOXtr|-00s Fǩ[;zdO6o,Ii#[a܁۳gޭ*]L:n|F"c0s?nlic@$s4 ר{ dqHD ;oe8FkrIS5cun1)FdjndU _Ē{iȪlY.\T'>NzxuO#:Zӌt~T"G-SU!t&Rpz0u]aO >O@̓7%5' j|lu҄Y@rQ%{@=-$r/54f鷛LPKv/ٛ\4ArTQm?庘!&|y$ $QP P$ߦ2̂]4] &.|8ks"~rzgI(LUjI  |"f+y:VN9EDڐ-`LP>\yH"!f p9ąπJ M <6a]SpM/G@7f7 .ZO>fSDo$cf ƿWT3x9 [nQ+I@PvaFmD`{N$3\'6XUH\fIvIncNQ7W (O1ʲVn]U%Q@f0&K%fC8Bե4N+3- Cz6vaXm!B(DI~0ik¿G6'4תC0xЦ񾳅ĕ!~1I ACcA" #l& YTc89kydiZ ?0&҃$CX=X B0e3&>:bGmZ3Loߵ݄ dpMA勠D֟![Xyq9ӤX刐RQhaGWh'_5 ;89rh+#tjh^5EXw D+`XuS%2XCAE"4dLTAm%sg;/sɦ`>Z,W?/}餐aN $"XMRC va:!?ma ѨNd8QD @=+UsڄrW)%hDsͶ~9, Ó% hL%, }  7 1 h5#\ -< :YtҷfwCR(VTwYA{C cHo/~ 鷖4^h sxmMnn]v l^F 40& 5̍,6Ћ5#Ͼm<$ ƿ9DFc;N_.!)N fNGo{Ӹa2A=k"o5S@AW@ j{@xMOO!axIO $`d01)6Gغt=h0u ::=- ؟-Nf !OqC5S,Τ %w1-'@8'ht"VYlb ZwHT{$`a2Fn@V?AlQm}õ{kBs Tuii&/X vnjd@@k`,U FF]ƹ*ƣUR%E>IW ;Sf$ROd&\4B;b=0ʺ{sa]4^f1\B9?O, "k O J@7:X5f{EYo?_4SJ} i67L~;!\7`O'W(LrE&wJ`+BkY~G-*aG̠a1% ~zE)|&LGfz"#UW&$o2cK!@ @9rLVi!#:ѿ^"Naτx0=xOZ*8E@+n[4pwYkNzn7B4 '27/kŋ|(QK"n z tr ‹Z-v AB\|PBCQ@jglk6fHS4>']O:oPjsW;Uxe榺]2H;`舟&2zVۘH]ER4ȮQvBXn$hzŃZ2i63)ic4p&@_Y{T\z" wXߗj,! {4x:Pg^lQ;ȖD"Tv^AXK6>Irvi)40ҭQ.wH>yR o5$H'r zp8 GB@f%jwi`e899 Ef5CL0 h5kܿ18?O5u>:1A/M@<BH H|{8of5@z I CgCF2cHTC0d.M=f1 G\: ((^5,r`FZ Өo&!v9p3v<0AHr=bRujr'0oD3رb yO \_d ?Chs4~2#,cŮQc`C#6D =1*-t݆ AĮH%Zr@r1^n.V \VbIŶ3t[&]!t9wLg@yxo Oٴ u$BphپV~CqMhΖ4?_vy `-*!~}+Mr [t;W0/ѐ3x5 B`"&@'>he&  FXD L\J]0p0tJh>-Ę6SҚeХI2c8n:'KL&wx>FB]|zv5o RH⧣&-ZMO*A2JH5SX>4J7kfj hB!8jHSj['<*f`Wt&Xp1Y0fӕ~F^7UG%䨩Gޕk {*};+97Ym)f꬧ NBI ܨ{Q$#uOJR]#ȡg 4NNrFsiaP#Z$d=6dIt^Mϲ8\}3zDB7zMR;׶bISlކ-ŘWT3R 1㻙,|}O$}'pYl &&<`܉ce¥k6 ?ܸd>liVpNƱF7h h90 1Qj]ẅ́AK=zYh9t,ʎE)t01 p`d~'B@vO[7 =E4a!c8Tz!P``)3IMshL8iJ}ꟿXXVtU*+;}w|1&IE`t]?yFڬDWePgKh9"2D-Vl +eQXˬ\4hD`3lPj0&&@cve d`["t{0x&%U7`/[! $HtD\̢wLey*#o` TGa"qZuޢ`x;3ME``K4P]y 'XRѰ))3yT,\( a3p7p vQ.5f{Ch` R p(˧ұcÿ)H[3% Sz[Y ؘ|+>4~3Cb#XfJP'Ǫ_KUGmoHL e @8tY[vm7j9kݻz5a~HxZ ;T4 @0L*y!jRPbG9n3q BoH*0ge暈B8˲4>*r 0F-묉6' џLC&DFk!|9\Cp_-KD&vneX^8% #ar>e6wl? {7_u=@Ghֲ:"hL<{Qv>Z+` QcU SN2E%oPAފ&f:qHg>'L.\71a򓰱>^lhT ic ÿ`-$fy+ S68Kρd9SK%\pBLHSjҠhum`ՏtKد` rE`=US^yY|l=40.\>,`y\ , ߷G»Z^gճADC6T 96΃F8 3j X5}@& +uA"}]!c<Jb@=#6 x/ZGl$#;_soBM?&ռ1|?AϏ/ *ʧJ&O@pYR?5?DlzE.D ` 8`Dn#b8d_AVO%!,v%0vlŵylw2'< Cc6ׁl`-: K@[Lz&sZFAz6ۭ:)1ќ/@m`.wG{&p{G`żxS"H YC#Dw,OP[Un~&hսql=\~6(7< CxUVΜc  j2I%mZ0ܬy1XmoL#Hf;¬4U>*vѽ0{\~i p}v=ZyHHlLpY%޸0պحQo^ԛJ:gRK7piFDI.+0bXY=vH \p^Ȟ?axKM34w/gx"$I4rHf@MT9 7la^n֞tޮ 7!'¹Igh+U>C9=GKGcf.s쓂?~ sIpo-:JG?_>S5kL6pb\PV;'IͿFDqdOSi)jΨhTkGY\>`x*n|4e"f*UcQFTn[?Ĉo@oR@Vpn$6wjтYד S _|a8A)łiwE9#X HCabbe@%=x@G*Rfc\ⳲŘa8|G"tsFppp,Ts{FEmR ,\F6Q[t]{v%E`P=aԧ%]ccԯN/՝b?J;Gg˙)A@*iґ==[_[(2 D%FZY5M f'3CL1pMWvU:{+EPȬ=˳Phǂ Öi$\6!gxH#?'ZNfa68-Ȫyp߮.լ2o,x&%gSY/m{jl={E DGЁ!}cD4KX}q*%V>j܉A]"t$??Bt>NG9t9uL.5ŭGYzC aum'uVcN%{VQ^y iV_q;- ;'en+ پ۬bE Z!6.L"77V߈0[8I%U[ G=VΑ@&/ ?1^T}=r)M ׀23EˌP_ݵTkԏPn;\m]ߟ% 0<ߒwJcMԎ$3UۦNբ+ 8ӷ|^Nw]Zf|NKyjjvsu S`*Ia{қ<ۄury79~o]TS_{3Q0Lvy7]A.2 Y>ttF筜]뒶1 >.R=)z !CfH"_%p))LȣOyl8.MTATzva!I[Ϋ=±|f@LLy妙D4Lg/OPۣV/ҡ3 9'ą_У *od<i'Cgb m*+GY9j&`ay:a )&^xҵK0KIzjFG?>NB$l@lfP=H.AM,IUN(P_X @@.ىlgAV1'Rբ*'C Nnj/~ SD>0c-f2h[ U!@P`ɼ·aCۼAVQRS3 3:8^f%^E?y$!fmp 3z!U8hr5//u6 EzhL_G@( _D`Cvq|͏$M7Mmmwi鲄2S@ yPo$P$OƳ?A*Qmb"xvP&D>[XǓ,Uc\;; )y"ԣ <K: ?o@\g7Z@7f4C,RZSu| "$|՘oUa⥳T5Lȵ%'D}wj?TiU~Yp9{/du7\߉#бw(q>o% ;w;]V@gf]"  <Cl^sh5 V0;{%E?P 3)A^PLmCE*GxJْ+:2L$_UX1 p P?@U^S} .F><½+TAy$ՐGNNZ[ukAlސ_Ï.ig"JM ڦ.hh {ԏ:yNj#2)s%?YLS-3!a*&JJ9B-&F}A,{*fa`&fٍܾE $bXPAkA QJF&01Pk314bj%l2sALݣ Y A2L۞CBײVH2D?#mܯ{43u9Z=ܪS#`htY(-P-:uH= JD:/t\o?`G/*~+Ɵ3%1d _d ǎ-qBG^VQI\e^M(X:$Ƕ_VױAF0 c7DzN0!o4NlNbA\@JbG~U~ p_}ٯUꢍ4.GkQ@]P+xzgzoz\Pv/.˷֥S.vY7h 7xw|+ME9tLx4z<& B=$իDZk o+>Hm4A:k?K۵qpR,WE8k>'g~Zk_MPZ<{ 2#J2Η͊Pل[sg:.c |cԸL<?H~'A*Τ^Ů#m"H`'xFg iP4Ǒ8wUD 3ZRd!$j:y)Cx= `^..ed#Xj*Gѯռs w?3cяDNGGj *3-#[)ϡ @߮ܗL e !^`5rr Sn6GE[Z-If j\dʡ ,@, 3YcF[;{-n+WX`<hŠ3Ru(f2C6>p qOT;.c ͦMZ@'G8{ jکg7a H:i1"1z74wip(բةzuBXZ߄x O!_|Jk#$Z܁0М9ʾ׍R }92 (%G* ^<9z Bk 4"hV7!; ½x4%:W"#@d*U֮cC@8~M0DQZؿff }M#^ y'*C.gi}R"A0fPߥ描Q="hGdۯwTbN¾5[m,0e51B:}5תDR%Պ^/B B}4*2erxTvFȀah,6m=]G&d*(C цޥ]Fvr: _Ђ,r$I8ĐQVQB\R\>bY@ N3sLO9W匱PX=p`H[9 W;J!4{@`@xĤS;ɝ*Do$zegM &Bΰp \J[&" AmF. q|ե4 ujbPJ~&P?{]vVyaRS'ÍΥZ6rymOL9~ڹ=5GSs".Ԥ0ߊ?1MY F~xՠn;H ]:1+wq06kfݢecv!20Dr,{PL͂l>P`"vW/La{`&}@y^`slyܽj V6Ay_`e^]_?O{ ր|9[j84,}&069~253cuwl WGGʵxx^ *!l y(&AL">͞Z t<@+k kg M;ۉc_:7lFhE`J]Af2CCv8O%z}$g9RUZ;B*?` W%416(>}#&g3DjmE ,$Y >ʺbPhkaa{ nxAFi^&ր @Fl"zl=DJPʩ- (P l}X1/By_i&?,iإ6U$}JfzT 8?doW. C>5G| A%++=IpM۲k]1tٷv z2 m*eYui~P@tH6>ƎK.o9 T~e$nmPFBG<ۑ}׭C7/ix吖1n`5jDъ <0Z,-(&S!{L!Xr? Uq@ ?9F ]6W|M.𖤚hKSczGZ5x'o,A#4WӜ~xygߥ A&*¬F =MKj."*Y2Q4;ch0 y`0F1il+u'u$ͮjq N]6[dG^_6IFѻSU'UKkʨM|\juT Vu[(4X =ۈWG\];nY] f_&٫c:M<>MhV"-sP wQIq<-zf'2x!JlQAN/,fFcէ舚qt#{Ył88Oa ] 6v(͵3K@"q15"R8ZfPlGE]m0rm}Dtn_]cN2 l0@eϔW3,s[k4ݬD-U' ZaW=smk6X}ЦW/cVJ/4כD`=! ;p_ Z˛clmPs>5\^(_vipWeZ5|oKl`#:k7gG鉭I&S]jɴXp^cm? zk]ӶyWK.mЊ: / *'æ^a,(vq&} p,"z ǘ2.U)EEAhN4bm~Skmd˰8T7*.Sudo oJnmzg$>ϟ.zäundߞW|â-aG-Q0c- V#G !Y :6Kn*%`9Ȝ#ͅ$&idGRF޸1o/ dE˂tmrxUQ֦Ϙoe\kjw~ 7_A9nfM8_{VE/!\3jC;CHF 7[,1$'B(?W"Y]K` E`X؃ =ﱦ"!zg_Ix|V-"3+m(q;|, tq, dNk;M|'Vz-Hoyw;6haxIu{x=s˙3$r9^fEWp WlPfv)p8V.AeK'rP(+ͭNmO˳ zڷdS'J C@a=Q%p?;}ԶYc.z\h`=OWqi$3kX[7Npف JL*P2>a PoLE炴Kai'D.-gsi~siz)o/Ol DQrV?Oo>o^K˧61oa`lzO%v ]Pkאl:fuB\UзM3p!'ۋJD4 A2X@‘IcD+.ЕXuc4`Z0m 9'K?׫qk!BfX4r c"q1Z'vku o)ۼ!|Y#cUfGvsst/Bo^0Oa=}^#NINW%_؃pdQLnP/'7W5Z(*@MHo ثa]c|ݠi:/^ʍ$PTd/8#aؐ<.ձ?2dO<^?6%h, Fp Ѭ;4;pU2$@m3:&YVc?n>D.Bۀ9y~#7iR5oQJL1isbs% ڠC߾TT /2&˷y/ʙaL  +4IJ":#3Q83l4`-jNSEz(H&⥓*h`S'+},Ǡ0" "@ Q98.?`v4ÆLA8컬|k摽ՌajH7 {ZA.XFiע*y}!,7!3>$ssT1[f+)Æs^9䫩ˣ:1Q5k)uQ%ֱ*(!68ⷻR#;܁RUF|!/l?;"Vfoz I8/_v 3>6FaD1}Rލ-Ic_:?jصA /a A^d*("Ǝn*kx1~xs3ݼ=,44@ 2@ۜ( ' >jZ;%WK+i;vdpK#ۇj@%0hm.lFFdaabݪ'$+RR[Ϝv`ڱP"$$i%Ì=i#NdH\{ Pj զއި;[JiTo`fO.T[HPJqm|W/T"o@t`Wӛ? %ɂVڼ]w91pltp]C 4.mkOaIIժu +~[ӑ50ZUI&8˭= 0z$z'<-]! \zgU0 d*`|d0ΚtO̷}6X720`UyJ3,dUk#{VwF P6UXks_˺=Xq BE1 [~f =oWo- g ̛Wnl]4ɥ~F`7B֯.K(6 K&gLjp6أU10eh4Wzf|h(~sIENDB`pybik-3.0/data/ui/thumbnails/Brick-9x6x6.png0000644000175000017500000003036613137372612021013 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+0IDATx}yT'jҳl.:,0QktA}1L̾O,WOs{{n7>f"t>}9UO=U\['7Nߑ[r@n9F@n9F@n9F@n9F@'ÏٝJKnytKMi=уnkc;̳aCyKq6TUM=h ?|,*q:;`< ];Y{\gϲ`b4Fkt.\ 8w5 A$v)cKkoy.E-3~*`?ma4e%cl}| @ 9|]|.uM3[6z0{ٰ1aellڍW| ju|L3z;7UHp#`Ԯf8h ϳ.cc'ǘx<b~Pq/%yx% 4G=ΙJo$;Kޙ_Ay ? 4 _w9eNT 1(.`u2r6  [A;_RЩ~}^1lr6hGOX;LkoN|l(^L" xtZ\c{fAϼ?9zKbvk-w^ .`ԲaA8l}>{z6AI$}@syKyEayxD-Ưwf5b:"`~}Zg:(;z2 t|v:B,׹\ 0 t֏fޘ!gu øy,wΦ_"u=7ˤSf9ߗKA̾Kv<D ] R8缎6d!0:p&U1OH$&_}.:x1oh)Wk<ŝ"vr /Gq<{!%o3"6bsDyGF/ǃ_r9,p^dăVmуF_U>: C߷$v+6 TqߔI" ~tA> "M!MV)&> Z)$Mwvb{ C'Mrg/qԥpKlk]#1'wK""|;tUG(u/y B9o*.q;hP/Y0Kf"9L{+=3|{yNisAkҶ=\R6 \6,.i.~%+o)IY RiCD~ {xwiȻgQ13Y\5j3@gӂi!M]sB3yHI {(h=p=M잱lrq~&Xɻ_\s.Ѧz17!R8~}\Ag'zdxR!vˣ d*`ۏR0Bdә?CD V a:ba'`ͱS i(.hFEj.HnSSIOFiԯ1uQg/tWa20JɷذmK4=ܱPsu5a)Ḵ*05Y "֠7_~-LFQ. XkY2 'oRP7uJ XkiL^$/R^1{|0{8=-uA /<}كʽ%0B]z V"!0=C&|.(~2vj`=AA!l!lP\ Ӡz&ͫNi acy}RA[O)66mm ^$wO'%!(pepiy{&Usz~b3jr:6u `G0H z/]Ib.Xȕ~#ـ6}PYBOǽ|-@:夾 '04Ɵi`ڊb^/*!pJ# 7) hC!hNοJkXk'ѹ}!h1Ʒvqh<5001ݰPU4e藕 w9r31bL 7$b ULIzsV" `ѳrtĿ 6$\0RKFk8#1"Mul;0EsUJ8!!"y"ʷgnF0$i3Hg IҔ^kyZ ۟ڃ: ]QZ4'8H3TV|5N ճ9hm?Z,lE¡f#ȁ G'Acx08bP0 `PWi{`mЍڠsh0 )π5 T0JN԰x+DB3f5xk4#tdg!m$@2ˤS.! h w1/lghA ^&_-1̌VoA=qeHt;W_JaDDW*k+x<:wL{i؛4?(]Fn|fA{&iqϲP~Q`@ x5@)=nxzi280 PXgxxEJJsbS-ߧ9%c PY5L} $G!\ 'ѨQR3pH Ýg[tͺL"|J;u%\`t/ Y2|]4:nTZ4  ݬׇ^Oi$/:S# `y} m 3Cļ*bx=)K&]Wr][ڱ-.I2el8iWu1c(m$Ρ;_=NK z!Sfd=[͍Laz cK{5s0Z n i'Z I#PloS$1h{bb en!{>Hg0 IGv8m'dž[n_N/Xtp y1_?^^z)t<`p_*n{i7Us4gW~MN 5|9F LqJ )"3a#AUa`G $JUN5<Ĝ{joH2렮E"nxz|KY67*_wA ! X ]Rल>}_/ S8W̧{DԆ8{^j&`IƮ=Q@ :Uti|L\}cĔvc=@L"3 }^:uS7u0 AC,L[;:7ԧ ;`7ݺ)Dq{Z6K29'0&\9)8)txwtL\bTf+Y?!B{!)'Psg"?Sd], zg[z_׏@3cGZ @9"-Оb:n7xf ѯ* h l4${< L{Iqb `ۛ;6#%4ݢ׷F ۩ қ$^OUBfeo2#\2.ԗ=N.R"0pD Qkh_uU2p պ@?^wXfky]; {wн[w^&@1kШ.;?'!%Q=~ d>PB+c&9%ͳrE$DK ސxE"V?V5JjIFʐyီ;Ч-!7/gpsd#B[86hD?i͙3}b߲W3K׸8ڔݿu= NF3Nم gNc'39tؓD_R *UE d0uD$b#3,6Dmd*#èh >A2 =N\&uͬNghF r*7SSCOK!ꔴPII$qRI!n勫+Hv)98U n4\ma$!J}>lO Z>OvW.8ty v>&nt )z3RWd@}2z<ڴ0@?U(z)4ݚ'\562 4qdDZ!A+kXiC[ &pO $C`krA AQQÓ.J3>2W2YP`FԳԠ_^,jYɞI6yT*1i;~' m}xܖ.q4ڈN1(z~s; MtbwLGOx b`,pM=DZ*U3F0PiFjPu*B HOoT^X9F?\50lpA>˥cӤlx`4$O\Ԯm8_>wuJ wfiN( W韤=] =D xW(RZw C2{$E(%鵊3x 9~=_uj|>K(2 v!o23랼D? kBrD@B :蛛 ~FL޳wDDk/QGкCnl M  E{HXBx#9%d@`!nڟR@P,$Ԧ驲U`(!? "4ܹ3" bKŰ{wn_; 4wG D ߾Q"=/ t "̘+pH"4צid64ij>M B 0BgJ'^Q,_ HCBh8 4m>'`fo:o5P$gϟx4_;Rw`y4It-s FK+16R/4cQBNx^NE+Hͥ Xlo{Q@WɔX9@Sbw&a ƃa|$/X47ɋC[ok$ RI֕A~]1’6?1X@mCms*qgSNA7 8eF֡˩7/nzDI6ęz2?F pO)U1AP#( ì<QS?)xs7<`>c @,R07A}S,`1jph2:t.;6 ֧I%r$L SH6BHLt{W{~JjwR1XH6(^pKdaVLɾmӉx!Hr<$i \ȣ8@[6*҇Y0`7!tݼ}\$B?sMiLjT|Ac!]Cōj33hؓ \+9{cCPBT:j.M=L$!WD4RVC%~y'yA,HSoyWA7EnQ& P1e׊oܔK9:SAA0:>e)!ŒB.oKS$ryPntf85Oj v'pCS 3(?h ^}k*<(],HֺV{[Ǿ.4pOLA;-4@+l PӕBq(xP_U+9@"Uik;+T}[*yf@")q*PI=1n]fmMF2+}RJG6h$S˥}fyg/+g%՟S?)aAIw_ߡmԪnc㌠#mLflhr(}:%Uqe@‘# aT4 X#?/?<)R\#4E$h z?vu0GIepC fy1C\/̻{Q;MXTyVn4{ V*8 Y|I$K?{VLxpRar\#f9fe \sB1>ڽ{=C}J+"t-Ǿo0 Df0R@ǒ9ܠU]\E(sdn{h`jQ{HB*}rSσ%g-RSK Wy 6' QIW7#YU~}>i_]}W@biP꽂'\=)o3DJU7J%Ce V;,(kIp*A#?gfu# i\MJ P% i5O;B4ӹɣ/8RwGˤq-.a ΍iƧ4d%a4 xΡJ!׹|(+ ½;M5iIrޟQ\%XlAnr=K/)k*WšҠ6y^;&;ث20MR~9NQ$jSz(Hw_Sr2nߡ?>lcmsraBAY53ӭf~N8bG‹څF65$1]0(T^#!T+g䫓>)&BHC/3|S·-;|/FZ{360{9.yqY3156On NWBY49wc8^ ] 7g/ǵ⼰#Π{ (t$cp岓 >G,>CMc AEjb tD|7 J'D M :'cஶܱ9;*WXoH]^QL,AnuJ8R8c1;֮Kè%g9SB }5L+$l/!"'<ĮE0( f|򣦤}nu9P,w IώeqUkkCR nd__G|3,t1)2]"lv7ȟ!`RZR9u \# h&/|;- k"?yWIqﭝJEMR ֓KWCk.۵`n5֐$o˱8aa+0P }az}WwVӌDߡM@WVTˆp<6Lp[y6?*]۽Pqޓ;߶C@¦(նCܻwER}v)hR;_U+}dkי @ t/1 s `}h4/]( 7@:1;Ex\|Z|D"!zcuEpujz0" J*I)WA_?O~F]J6=,/ZB B" RKSgd#B z5n kBE"!ڈ#ϔte66mi̿8؊F!$kEn5l}.i1Cp9ҊP7D?W9H_3TUE%f3p X<'<G0Nv' #<4?cKs:pֽWvl.o#,Q > 8^Տ{yՉd yr0e> 8[AD,4\NaUD1@OHyHj!hɃGY^Z7O䔰WA\Eӽ P|鱱ͧrO#< ]avjx~vSu/PG¼}LJ-b9l;1ȧn.'Tia9moUc9W<=r7j 7@7=q2_(yqxXbOTr4R >qV d)/KA)%Krx#g,R .H U?ڤz AN@@;Ka6J7SV=0 4 TM$`U1]bV(8E=u©^i*xӆaϯٴh{gCC4JSI 6RRNSE!E&tJտ#(䭷)J`qÕ#>Hk_@|`% C*Ȩȹ_*؁:=,`C5dk*9lT>"rT}V1{K~kV Pۜ(-"@Dc҇!_phK7P\ã^'"'؆~9t|@;M딦^f+i-W}3x_m @GPͪ*u(T;/_++[Nu' Kk.k&B2x\CM+R<ҝ@gi }VGD5 Ás8 qMm[ӭT'y4UvEן@GLz)l3;6&T!}; p&}9F@n9F@n9F9! 7rȍq?^`XܘIENDB`pybik-3.0/data/ui/thumbnails/Tower-1x3.png0000644000175000017500000000741013137372522020562 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+IDATxytTpu)dޛ}&3L2,d@6HL RP*E Bp,`S F\pQ"Z[cQ(hz^f$,Mߓsr?﷽^.YK(7C C @!@!@!@!@!@!@!@!@!KGN0WV`"5sեp@xAu)\ kra2f~s-+>Vì꧰Yfw{fw@7{}+`JCUy9g` "e_dCq?:ԗB+*Vb*i$T,Iv%c񣃈AdS*6UϤT*RJ9eVXlQӾ `_ /+,~xP^4P( W)S!Y3:>^HB>&C6=|_[W'c fضeH6i C`gbzV+t:2Y!clcb[oYϺ9fzrssaذa 5bsðaء­Ê?q+GR1m;j @ .RN ''F#`b0ldw`8҇*c~m]HA't"YT*rA~~>G(pD0g-hWbQ1deeFWObn|7QS"ԧ[fr87+,>oGX/ѲBBY!TP|| [vYa*0N!ޠCge*mN|\66F EG,0p.`A) 0h ,> _6L" ;3- A F9[/8|@ii),q-G9[6 @C/Um=κ7uv5#q+##|"S@Y%Ӂ*/n\=uQt Wp  &bf>Bb!΢d,781[D{DxiHZcW/T1n~96ؕG^J[ݯAtK7?~IJ$:oGG!Ng;N[8<XwYp`$}dF-=:!7d5poOXda!pP} spCt M ILi|6\`ZAQJgϊV{AE!?oG(i`YhbLIv c 6zˣE *.|ƶz={\`Z8G6u E~dWx06[Aq@*6b ` G.F߼ҳfcj,>8$0}6\ v /`k*VPKhT^@l7Q6E,[o9X@X2بK jiT@ Glš_?I1; #]j [?vva\PgZ=@;*਀#PE>$~D53f1:YY(h`s=ePCyyy'yE8wA }n/8D7 YҨ{ػ->ƿw{@C'On5%. Q ,{3j7g@ %=8$1pC?D!2={r} `ܦ )@;VJruYj^|؆[* !;㋚SCN+Q6}wzd? X<0~B#(p)xPϾ~~GW)@c* @W4}?xs*?%A>/`^AF= H0bQώ8uۺT+~FMlӌVCǔ|{ 3-GM-kLv/p A˕<ڼ?(CB6$6=.`bݾA zzhװEc?080Zg×?jSg2DL--kK ҳMPŠi8M?QP12+{@|<֑5PPP        N$Y&1IENDB`pybik-3.0/data/ui/thumbnails/Cube-1.png0000644000175000017500000001333413137372517020073 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+IDATxyTg nUWW]]Uu#&l6iYw8 391ȐF͢AH.`&qbFO391QynݪԭxO+[W=}/~/"p .BBȅ I }{W:T1~r[ r"W ͎!t}=[tr]AKi,ZIi޵}}hyr w8E2z}9푮gCpH`AJWZ|x!9.ε΂;d%yju%l@x{F'C {-ÇE-OdV S G9]ew.b@B{xvIC rC{X:_zJe|aՑZ ɖ_+>^R,V3gw&4,jl,&3z1 V#|ۥEyL,?@}rݡ,DeH ܛyEaMv[g*r1Y@#76x,| C&fl53B|#.t(gp30:Vt9%]I|h53&߯ tA| :LJ *+ȿ[y*VȃubwDu?P9 8C׳;Law(L t W8v/\n[&!cOH,tXlJI(G(̎S{U#3yN;:)Srj5sFg  #*@:|Ttij)_'^?9mP'T< ""-P+gO@mD|_]݅ $B=r]eH|iϦxC#݂`ƿڽxYXL} A,g`BO&/˓0w]ڽX_?^G~owoH{!SƓEl7t?~ÚTg]^+ ӝC gB]ax"h |b; VE4=ө)\UJF}{H7= ~W86i{JK;#6]}#alI?>$j{ğ4E9,>B7,h`+E5}A8 {kYkDXI|O c ڑ1 }L  g*XzFi޽rw\Q=q6z &hGRؽox#(&L%%%TVVF^n7I C-Npz8_tueN$ c ãloĎ \v/TCLx̩ᘧv!*ąC욚f +0 M."QGAg+>b[x쬚N 0|F"J҂,$F'?0<,ڽ+ط>_5`\[[AJHt T[[+\\s54tPF,)&I|'; )*~ZwVw]`xX]_S좪M)bCt?l0>|. CxPI%k_펲#[$o1@>UJ".@tQZJڝjrFѫ,+**®71b9R0ЃatBl>voI={*1aPDvU(Q$!arh`"&:E'q&?jG?Xm\fЊW<ѩ @ []T5J]AY8bW5j;ƌ#0p($ Idz:M)K,||`o$[n0 lh3Hl@U^f[SIǏ_*dP`0huND'i|2:_/o/mV0@D'w Gpp׊jO,It˝t5.MmEˌo`Fw1A$k(녕\/ P;EG P7&NH&M &p8HMzN"T݋'~#7m`Cs\ḙa"1h!,V;V=V?j8u]'B xQ,*$ڽ 1W&Z|m`CJA GztS G mmm4ehG`J hbzCH96p"EL- G[asԚ> =;'oor#l`L.6@tSeS6GàNHHϧya8њ>ŗO-DiL\| Gf,vǧ ðM+^E ܡD P+ POO5PpʁU'ŷmI{Th97lO ,^X|a@ O9ں*Z谲 l 6d/"vq%)B?#E`3 m$\aɒ%K .u@ 7; Տmo`ھ:< nr9Ez&S1r Ӿ}H jWv{/۷kkmͻo[Jr0 ۸^XHvRc)bѢEi&JG/OhqVp;sp녹"Z]A"0qDB_s_?YU![BZ7Lgh"|+N/2'~찵m`ӏ ! -za$]w{au4> *3E)b `"oJ6iD+ؠ@@w>V;,n@< )!pE@JPv|6XJo šZ;6d' lyS( !hgm)-o[@%sta HI!BxjJrGc L?*V `ZkpR︗ML`U=a zK4 d,>"m`K!R 2M.C{>um`KD+Xz⃀cg}rnv$ l p+i` _6%tޜX h}r UkI}XgR @h;-fA ɇk:+cp>p+IBK7ZDf2BտeL9N+k0u+i +-H6/@GI/fxw/`y')/}}֟k:-YAYOlpB|~>Hn`\f#] 6@<5d (i@=?7g!WNJVpMT ^ xt_`;Zx' شO6ЁV M%>x:gCpXIYEP:j[ !H>>`ZOhꋉrGt-lscj8 bJF}~ N\wF)0x`^k(;(śG'9/7 |1 KP4q{;S=Zݕi,:q1 [S} Wj iɒ?eh8Wx/q6<#Q650ƝʞZZPۚEP΁g0U[A wU fx KJqDpa?cPЋG:dH]W lfg1K~HQz q87s?c,1XjwU.*D 1?zz23yT/N57qaY֟UhF^,.X5x`OYV<$v"1Xj,w$ W(=2͂1ʗFv~!E+3sH VK:)l>0bsmk9@dn8 ୟ+s?g*%.&S% x BO~L֟D]CܩRBI6^ [_|4K5&K! 0omr]u1XZA,szEVXY'xT4 ƕKf]5_@k'5X£rn1Mo/`dui ,)-*/`1X)RD<  ,@8"=nfDIENDB`pybik-3.0/data/ui/thumbnails/Prism3Complex-3x3.png0000644000175000017500000002723113137372657022205 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+.KIDATx}yxW_߾]d}'֪6-(E!vZVUyR-ZkI""j2ľ5-y>Ϝyf&LI\J2yfsg?7fJ_ U U*TIURE*"@TJP%U*TI -.~Tǀgck:88ANOaߺ<ɖrYe, " &5i &/f*-\kK&d>S%$N"ܳUU@o.s9_e/P7lѩWT\c5 o81/M?&N?oMa.O8f֎] oJ;ɶ6.'M w.L!ZKLDFɈQ*8%ڐ6ϲ{tcё߇p/{qϯSV==?l7$ZϳI6n5'R. -BC mF+ԼS6mE}zDe-HF#\m6ٳgYZ4b  7Y&Hlj>/pS{pzV,|eڨ~<s2,ٰVIU K_VrY|/:'ȌY3[aە+8V77$NNN.M6Zu K=xj&xa?+O`H\ /͘1C)XpF.rCBBM夘g.' |~:?x7Nml+8F>-/9n >z8Y0xwwwF'qv1g WtUu6&&&Ak5x?9\ ;c)L.\`իW>d;,,2ٞ`4K_Lt~\$\$22R|֚3.3Ֆ5P|؆]e󦥔+K~!qeddË%_#7mP<|r xl9c8|gDi48@aA,siccˋa$+`+_߿&Ol\|f 4%|v`/[e-0r٦5^ۂL2̎%VnxV 02TPEҊǃ kMQ.sd3v%V_GX0+/$\z?d-Z y{{0^<<<suuƌ1trdM `Ў\"uttdgr tnoPɶ ]\FZK&~zn*9K}̝?OQf$~\;!Drao8+w3ԩSL?N>-M6e&XfMY.^}UֲeKAwyuY!4iڵkz-oVZ5oޜˬQF~ YLL `,00P>>>S(zyÚR2/siAnJ98jXuD[j0@(x?3i{Ѱ RWN역a&Crօ:lVܻwb$U.!Yҍ,(zX @o8=zp3º{.^nGpȺu[.k֬k%&' yX6mx ֡C־}{om uI ^kK^P|I"dmlp uMGSGS8gv!3 |]D_.Y94K??| ߸Q7 {(=EسsgY?80;taÞM.dzp#._G+VJkHjӺukֽ{wA<"H^kZXٰE{:`>?oۙ ve |Ŋϋ͉ >Hf4 @MЧO#G%$~cWPV =ϲ$ؖ=Ov:3r1q.)OdtnV A6l/1+͕KK~u>kzAI3s==2+N` T_ |^tx׳`\a/-K a,L"{.4hL>`+{[Lhbk]˱C [Bdg+Y9[E}to pD}6'u Џ͛7 0_U -iXnOؔ6w4ԓOk34|D?g&@v&fJ-WG&MN#x8NO&g8“nI3+Ccu bbՉN3g2ě;X6TXdcOCYIDlMÇ_~_p߾}_U0 $4E'J$˥ 2vCD 91mF${Nҿ7~-2 lL X׮]_fҥ?Cтv0us!n"H0 _cJY5,Oa-'dЪԻ\ /S(\zib]cǎCۿbccM]ŸRH iJeK!0$|7I6"HC|1׮@ϡC47/zpRH,-qb:W oOzFR>Be?4D;2?olt838ծ3_n25ٳ7pR࣏> ಸBZD޽{QF/y-qʕ&U|T)2,1D7E-CIs{I*$i>d۲`Ee>jDz '= bfc N/^,0RSS +@*#r/-> {IUC>U+<|_X!'A&-|7v3;f>$ Äs&(^M~ ѡlϊ V2 @ܙ3g4-^xQ~[G P:uU6 pax6sAzN.7[=I/tH~F,!]w5[ݙ]n>9 iBq3m[j cb5="'-t0`ŗ!? deeY\Y6x>q(\!E9"]!O5gp1'$)LχlWȔO$'ѓl;;S%Y]vE!0igH7oy}iw8ȲV a圄\#dΝZfWl>zxK?@\n6̙#nE?2lv*2lxB6XAL" ڵk5jh\K#[_#e'Y#p-*..,޽kqV 0xۯ~Vuf፦P'Wa]غ9Jhvrv]KR`޹sG($$%%Y%͛772qqCER]r^a8{.\&IaIo~sת=r'{x߫PC4s[aiA6_g|^ke`V2 /+=zJpgi(%890j*9iU3@%e >+=g%"zb]ޅ#oύt |E/|Y/E 5#egػ;GӤR D"/` 5kbN!ӳfAIq$_v?/hL+(qX݅Ҋk)>ȟ,+gDm@,MK?be0J (n{Ҁ M6 P뽸|=6^5JF|>+l AXv='Bl]9 ͦ&&}I[r@iY8r#==]&0f˗[n ( $핳VR N⛩V9 (sUpp63Lq`[ih,?,*mQfB-9x߯VlpVWnݺC1?X`ro`3$&Xm~-ІG. !a$ԏzFdPQm| w럜$&A4ǥKė۽{Hrz2dAhXB(lN>rgw7/=l>䏣QF<f}q<wFIBIHUyd eBtFK)br ,T,2DT?4 "aرCСCMH0]׋#XE:)C{7EjY -@Ճ%Z[p`WdrD2OYttRiH0"3f%pV3mM1ONJGS[ؠ<6w3#ŬH >#{xj+jc$z;Xe.Z- dZj$N|ѵkj7p@;tZ˗P6!Z 94ԁ5ew#__O_vkS{6㥁l)3?uhfc\ܓ$V8o^P'"k JqD`%`ܹӤr_|m W ȝhޜYk1' '%ykՕq25{AQ.EEJ92VBm*EB& "`سiM 9h|HրI# FF+N>A+ CpH?eE߈L'YLd,QV6]\oHW/3,,@CO棁|Mg%ˁ VNv>F#~{m^dL͟۽qtb %hQXƠo1|E0Cx hE Gs>|T(F(- u׮ y֫WOKRQ|A}EU\?ncH㖬3OO@y>dto3Lx]fGJo}cGl;r7y|{0\w:[qu*Y "B`l.L9 Bᣠ$B Rt 9{4PNszr^FZEVl I%G;g|u3>Ym`v|iq-Ѵ?G9|7K5%ո%)f>R'>3 ,[L<撸L??Ey 3t K)}(W}ؿy ׫d$|Gۣ)\bsZ(b;$8فYc?.hK H m p`1Xk֬ѬcǎicPTjm t,^W@5Ώ=f |=͏ QC|2~tM&=<#L y <ȑ=| a(|I&pIB5Z%⤤QH- aS2.p˷(.Ίp?S\嶽4B ma&2.DN򕫓&A[WQ@` ={K.IIIr@JZ& VnfaO0>A&R٠ @c`dO/q=54d26R҆eM?'yGJq3Fm@ |hD7ɂƉ'4,_0LTb8mGA- 0[탸u|E A2@S?,B Jt CQ&&qh@*0i$qcA =nI1HN B=,wT&/ 5nĉZ.!I'_@ `"/%S2cQkY0R;-CiMJGѢ&+Co'$۲޾}[ -!bP8, QQ<na o֬y@O0ܷŗiz}dFօa^fH Q>\^&)n-XlM]žǗ% ~ZTK)۶mߵk[QE, 84 -k#kQU=vG>953>(+Y!-B  g$ӡRguF|yQSi9 C`H6kM&0F!E'>1A:Xr>H,lx JeܘhmRa Yx¹[l-t1Q\i 3gCa^I݀~xeYs)3E-Qͽ9 pdT\I(ܕ=8z^񋵝LkUf2J2%7T9{l LDT,ƒ'vpnjc*Pq(Hm^FKɧDe),ֆ7ET(ҽ.0 b0 %T{ {?3آ :zT@W N"ƍS)S̖prSb(2 HGg(pq]eL!AV&i5!S'E(yS|?(ɠ"L&a~-5r%P)t."xȋH[LC@#Ql׃? cCY|#fvF'M~uUi M/\B"Q ?^ W.MOoذAKBJLH-gC k=p)ON{H7 | `w!X^r1לV>r`c(9*DY?{up-ܬr2Z7@ dcoCm߾݄%z[ b{a>_3Wk`-`B]}}o3@eaj֏Rr ؼ(H\{< PrαeeE6,4C@:\X!P~YGLM3<5k2!čOgg3X ql WLӾN P:eLB_w8pzC%RT$zZ̛ZV8*pO Ơ4zҐ Y @\F"ыLWci_+:8}rb]- 2I_@dt P?r#e\~8,3Y#a-!| O!y(1Aظq2/$9L\I{.^KNX4M]uQoݽޝ2G#+F./FjvGZ*JAR_ Ք1Do+eK#|7ЮΙOG׾Ōc*'aϛ觙 A d |  ؿQDPlzDl_QF"׏?ĎJ].2yRѦY=`fg$/!x3?w| !FNގ%'bGKX}@>7{7FpMVS<бB9`|9J9 վ!6W8@&}2٠dQY2CJS X)㨫ˍXS]Jt},o5HDE!4`l੐j@Ҡ^ ])17^yli+{~>΢U~Ś xr8I "A3 ƎhQn@$ADisxrO[8=ߎDYA(Zu!پLq}2̇MO.OE&w0XDTR; `mՠ_O '9Y(!C)@/VJ< ְ|=Q)";0P^J]$KRn?z {8cbp XۅʉbhM\YZ)AN ~|sIC4nQ MȜs >1k,m5H$BDoaE|_h W# VG<Y$=+Z?p@6oPT..PDߠxc'l$B`fIU(dL;JFGFIj5 MQWNS)`D;Wn-O $*!?(Ft,rڹAg S@#`%$|8i wAj.(6iV(`hڼQb(Yp!K^^2k L f5G@DDӔϞϵO$e Z6F>.ET>)g+f##4g/I 5JTME:Xڜxk&J {{H^?xm3S(_ |4D-%|?1&6ooONgCXq<`PJDQ_@}/:#K7uлgbL2~ Q2"$׭KH MC'OZc QpX;;@|N0ױ(m 9l[ OM[(ʇ,R>R~`F }"BGyi|Dq,DٔoU_ Rj-S~eGZqJN'vu_~7EERP/_ >s0,VǨ kկ-lpD0}L"4} "s'W7T4sR7F(PGNN 1?SEQmW},i@ QmHW=ˏ03+D"brpb~& :~nugfU1<+sAGԏwz%t!ǧU`[2CA #eX'B~ȡ!2ZPv0N%&g?a pHYs+*IDATx}y|յS5}<9'ae LAD8QQJVň "Q@jzS[oo|koֳ~ON $ H쵞<$0'9L9L9L9L9L9L9L9L9L@ !Dck492z]&[7yȠlWc5wZGJl[|Ζn3 [7Ҋ?L4^!O=]8oWB"@\h,w53b2b5>:UC5Py g@Ɣ7[VojB?߳u12-oqH>f/$ICl8uD`g)ϧ] !p ;~2|Ҟx<<<} o췷=Atto .Ibl]C`N&T.j{Pq  ѵzuk(8'PJwE%gz7jw$ 2vMT}uiT{e1Y*XZvI";:TL>b1'cåk\IXF 1=F?!>LGo 20M5DHΞ$0yf+㗐Ae5ۙ1(kY ()WXLqi[Ɉn:K7K5<Nhcd,? $Ql~FUK[sTZ߾/Nk읟}8ڦ1*ч=t , D!^SWكnD,6\ze|'9go{ !h3Cw ۟}4wW&aDM }dz]1 %r麗xE͝F,V/\4iA2 +hЂ6?\lw!Lj> %D氊Z" 00/K<ͳI٭ġɔr(ρj]|B|^"vnioJ?b䪐AAe#{8dM,mq0ЃoBlecl4p7(F*ן<JXxJZHgY ew(!􄚣soSUh:S9?)B|Q*bNVT2q6 /TvKoyM( Ct<&\?A kd4r ]Vq: 2,Ls쌏gr+/wTq}:z&D]OU/"1#Bz>KàShJhD"I )_Db:#Ф )&WdE4@ U\l g 1"8jNf0q[_RBq*:)4b qP*3Eր$vgppELhbqGX0r0M !"y@ 7|XY-뉃R]vA0:f12.ٻS \LDEJ|^1Niϵ\, iߟ>-k[:] =WSx.RV طg,B7FO 4ۍ]QEz<~@B!K1ps1A-6VG`pHp`giak$ChTR/ZۆH|N0;'=t{LX .EhU38Q|W(m+[M$GMMZ{Vpa.A.KePMTuXOa)] COS`(&oɘ娘K-*8RNk+ p_"$XA^! |0[lOe0>V }7" oF6GK$%ؠD[oiDkELD!*[y- H)La>Tt?˯rޥVh5ر{ ALcta+a"D&)CVYBE{&qh+]rXQFY{8鞯+>f)ÅO*-k *O>M_(55?S zXE$?пyHjIX8)? 5ҽR-Õ߶2Lx'3x!=#|rUyAIE{7LapiLq1Y`A1@kܡX~X=&jT5@  D3Y4V> R" p<(D Zȷ7pϝd%|ЎR\QKCA<5Q^q=6 I\!,qH!ݣ螴JZy)dA 9G1T%16*(cxB;8zs;5qܾ'\TD,f0š8kf}ejP5d ~G?Mz(~Y48H`Ȓ++pR"$>pd#@{X{gJJ;B |l<7YĿ>5~F8ĜNխs=L7tƮ@XP9K;N' _c~֍tϑk1>-i0z,30\C:g$J)=a`@Qg]JOn$ 0:XA L>* -_'.A|GnO}~ۑVhqbt +pa`n<ßU 1t8{5#@ XV%#Y@(`\ҚYS1B /#]T>POX չ?w u9 "@ tG> c7nclSO`!/k&XrW?h^In|Y+_"MXlYJ.+ aW Fu>."3R})SJJ0 66 op`u)?T:۷(eP1PaKR!hKHW-@i*՘lX}.{}e] ^* }=I,T_rH{J$'85*W=NVg $M|,@{Ri\7*v>e0*Nb: jb͵^qrPX)"ןA-V]ħtru, ``R rlX݉4͒"D$}M."%a0iD R0-An/ďGg*(}ɥ n)'7*Il0> x_Q?R*Pt&q8O–.uᕭ -'5<mG@Eh,A$J<6.o-e,QhtY9a ;πR+Q =C"T3RZ+`/Xc!_BL g&n՞SݜO/?exR?d0ګ)Z*1/TpRןs SŒ`OAYB B#oa '`9+ɻE  z/osګ0MV|68ߗo\&}E1]z"] ~^,F R@*V(qg8Du)A&_9q 8zB/X[בΉ ì޼2;i wj_C1GBlS?ؾiZ}뎥^!q TNҀj3Pİ1aҽ'$[ ~NB(SdHZ [ɗ3;dJVjU-x#T#X]!`|"rI `|;&& gsg^V#Rª9-M wԻNcVOG}G5&r¨p5YI qBH`P{uh P|N`5Sg—N8m K8/H! !RfOJۻ%B`pV[,h/?<3^*i7ֿ+UzF̮B\Q0LvkTB)/ocW\hbYNsaRxQjebA$/mKSaA뜺%QE.AnBƍ/iDG_b8Ela3_upTYCL7xT# jhvp-Yb;! {8UqwqG {d: !y$8~Ou _-rSuA-Rh&]o2@%F5t;rn\s) ]A1{*’PH #C[䠴zz9d q"$:  y@O]J@:IoY Ʈїؘ5)y9*bg{ -y/ ~:kl@0{t ʷPo,[Tco_:X5L%t dY`+(yX&q`Ao r_;/󈿉4~%y a\d1ͣ>Y@)^l9hdȶW^զ>[q@2q- z/s%RO; "ޥ^K~|;?mwj.s'K|$}7\?1i@ń&s<pSt!vd/:wR2pPX,C /Î_U= Th!CV( Z,yD ? c.#^_~XJ߃k|*J? !DeͧmUc 2brc vIjB9b+␊`4 j Vu""Dv%+(T Aًh`gE7o33&{|ai?^[mA!qϐx>f '艸9:id 31dEL]d"-`lB'BQ8_nDE ASF:," {,aq^1|M~~O2i}]<\kzϭhb= O0)C |Ko {P2P eIǬN N%6dB:f/UeT 8ItDA5= u"r/s(xgP mm*EBͧ$:Cf:@̊E)HJN]A1wjB[$x8+x ],[b F!s2J1#CP% "(#Aљ`0sCSo# +K\$᫏K#(xBVIs@\ViMNүv|XSw=rպVIf ud!dDL%_n)psa8KA{|@@[h @6 Jϥ@ǫ|Kgyء"bb¸Me3<`ӢG3JN)adLl7?\`׾\=D33?{eUʭ ?ʈ7FӡζowWv צ^RV!V;fu[j`8Κ'ߎtWeNbl{K(AW*Ti) Ft<{\ tVXE8^&{> k\>4z1HàU -K sSL?Rɠz?:wЖ.+S)' aǥn`4"ޞUUyphsmh"Eg Lggޗ7FWPnmӖ>@ ,[_(_#ysҕ!|YcM 7S˸/1wbwRP8$=&Bژtu݀7(7<-wZ<_/ 4ib=lZ6PW, 8H^}}~ݳ*.a'3HCxA/ŷ4R1[u=8(zY$C8Hn2/Ѕʽt}]jo`H+ȯx]N)HLs=B?("}(}B@$7D@Uw96kk#-hRxE{yrHopI5e8=Q+{ i:\9 wIpdۼh0!yn0 |rq<1uw̞>\dh L[Tj $_SQu5p:ؚkj@ X6uk~v= 1r-n|z4L̦3U$U5E׈ĥS|iִQ8:o%7-.FTMMۿp =&NW>RL6BN^l8?iؓEfx[O~Ӯ'Xo#5є= "|@a pHYs+ IDATx{Teݶ]n3a07PAb* RL=ǃ˒m:Jfo *hFVӶm0303ζ9ρ}p#ByC?@?@!@!@!@!@!@!@!@!@!@!@!ɫ2웲ۛXgRy' /n[yeޓ'k>>da_7_Ia}B~U?,o9r('S^ wGܩ g=-4wm.3/28&ƚZ ]h41PSSte3 ჵ_iԃ*!_TV+ V?qqq"X5*-z$iE7>vYx+TcSqv\+3* P;{8kLd0eOf |׭0&Ȳ xgo /ŠѦ@ _ob ^@YLz3=|*u|Ldz+sb=+CrH쾅^Ey]yp}xl&2muֿ3WzXv0߱ǮGpSy $&pς: ؼ*`G7l' $܋mH=R@8D X lCyaJ;@yAm6 KJs(H#v(o'wkTDm0"##n`TTrƫLc4>2+6HM d,{ GPYa,;C(j=g[;CWTF${ Y!4oE-Sh4 gq55y\Hœʊf IF*.8G\x,39TirGYiKĤA{<ȔUn< 5oz Sl 'v(ư?w $(/Ppb):<pA7fYѾ[~֐H3 .u@SKdJAqq[ٌbYiR}pxnm4%<H왅v-tC?.;,$@1D? $**O]Fnm]6}p_ <|L _?C@%JieE3kN?*|Kޑ.vzw<Tj EO|t?)Ʃ=:&}xl˖"\?ŬEi*=g_"f5ˣL7KOt/5ط x5J8{ <0tfͲ(Ho>l|i6C 54 ) aS^̪ @?!oW,:j`>s D*+_4B*^; ^ f <)UYy?wH".: LzAO oς; X;S#y4\ƖEXB3.=Y,.& _9TP,ow4%w/tSCŠG!35t8sb(Р$_D)z 0E wuЎ'y30yбWs40ݿLZwL ECl8ILi|IIibԨ,V|Qr0+>O~f0 g6p f.dPP<2 ݿ>1)(3Ɯ;_X=o M Up =s &NH `[ex>IѤ#PH xү7{aNI Х2'<| ʼBxxqvhǹW>g bz6R;,cJZV&sݻg H?^ Ǩ{?;G ^sx/Gk`%d/c4 "qY[Aq>0_"`KV l6wOF#}F,i6WmP>;TkGjhXUpZa{v}dv |ELҚ^`Xob,T;OJ>K6L1W{etk,{.H$R`pWmll"eZ]m9ە{AHFIENDB`pybik-3.0/data/ui/thumbnails/Tower-3x7.png0000644000175000017500000001615313137372525020577 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+IDATxyxT]n3wΞL]6 )JX"""U6RD>j(E;Qƭ`[ZwwylL60<$7΄{o}"GHHHHHHHHHHHHHHdD*Ç+k?ºPCjR$Ƕn^}^p9]wNx׏coį_H\;܉H]FYV&,zhV?)> 8C" d]Ƹᎄ!Qd-<[-|-;]h9%ϛi۞VVnT(e+?#M64ï'ky!vEhQ+PV(Ѳ~J:8ҿwz2E QәImi,F4nX1E^ ?=_a$@_)TV Ѹr0'e:AEoO0<^d+V%^k,7%e!0yY*ٙ9BA/j|Iľ^0{` *" nϷh>^?Zոw5r" 3 ~1f{Tσ\ .z ,OTK!nWսjqe@Jʼn?)lG6=C1|P(o{BxRFUcwϲO+iGf 3:`!G#fG||O˭p¸+LrCV pL;)ak7}vi lQiKb=v-}>Xc"v#iõ^B6ߜ,$%lضںT n[sqaXv۰܎ةRw];q*r %ODgw&t7臣Ggd?}Y}30_ Wj#`?'3>a8^S^FSn" '_*h?ⵣ}c40P0~ڕ ʌGyqgQ#FVj^e "4azNT @y8QMxc J~!mX5^uya1<% G:c?pep7fJ}m!H?W]A ]4_ šB4f-號cJ8p@1FVX?,a=3ƹXkr) .Ҹ(\a N V`(>RA^'B0~ĔORc?,솆V˜dd7e_8B4(5MXc5pvW2xvXo( Lm]tMX'ЫD=Wōv*HAJ `q!JX4pA K1-I,]ճӹs8h,C.]|ேZ$w eHCO) Y zj *P`XB0Qʯd :Y'{#нPE@rbo6G4A#Nk-6,C & ~Jy -$[s&7Ŋ\N;ϼ]D!\1օq7VzCzW[:1ʟB9F !k$ g0d/: P1 8~ LoYnRn†IW?c}xzg=xK* E@T1Qɕ6aGZ7!` -)'"PQ᫷%<~&lL+7I!qef;br}ïX 8s 2Qqb$_X5[P+x08Tމ<+ @@TE!,f0h- NBSP'0L-wנj£?["z] 8@=-@n"qDdҴqta.{IbX6 +fz5 E[0 耽 K.\!3l= %}ćJ 'Ox)_ vD.[d h #*{sW @Gyb. E`20J_ji:4'BnWba:牠3Ɩ@4 2rN)>f7mJ3h*6n N 5DW7&} @e9 -@ʍ./ RM9h-q 2="4CCo~1l_<1{j? 0*(tܣEf \ N',J0E"F\)LBYV斟o-"I7FD!囏YtNrK E}bZ*bĦ E?}_\9qt~0!yؼ?f e&Xsa.1I#+7Wt0 AOE,Ma E(PF uK88 7f}}NîlYM% 6@97Y>1gBӈ-@Qp\H%y)BCOmb@/Of0HF@+n8D <sC,"F` Qb֕q\dOmB!W#%j Sp{]JL hRSXjPs7>;Ãj)aT]f d %<`E^tĴIW2a+6{.Z[،=tn :C |#4S9)gF÷;!ORB,p ."&r#t//ttT'0j<= @(޿`\s՘'ŒD|xvE-b2.\S= NAQ ~ͯ9m =E`bEz @jgNm$/FB- 9@ݣѯ.S_@G0>_[-\A3K!q\N"aiSJz g?*^NuV|<xPi]$o.ЙHCRh w0" m1cII_5YtAv xZ @JٕeJtRͲ(4yY/0Spdw /)sB)Zώ>j b}A| QL@ PsT@КH0N?h#T?0R ,RJj$tݫxә1 1EJmf$vUЅ)3Lj ϥJ H4M3tpNXYfLdp/ c2 @kԐ(?T%h+UGæ+8b O,0Uoȁ4cc)AZ[cx}S5vTK:Pkn|r'WlE˅iBQ3@;͟T&qdIDO< gn^ʩB`p ؼ.?\)*_x=bX Eg3Al:^>W@ , q8$a8qu¼@}<) f>Fs(]0Cf2LrtWF-bnV;NM'$0Gm#`Eyxg"/,ޣH*еZ<@f20'*b?DBLiTbb\{&hS(=?R|qR}̵%^8ɧ~&)t$Fvc#a"`vi`ԥ(O7qt/a_?y cA2 T;PGa]5 4FƉ9tcb uEyt2r[X~xa&`R:0.W2{2#N cfOwϕ7Zv}?m+%(<3=aPӶݗv?r(s*H׀h_"m^ؘ) O=H7M8Ba=@aS}9V`hG=/l |ÿqzF]hN8?3d\R~PΝ@ZT!$0 T`V!zH W2m>9D^> ^}ߏ@|z^{喚LR~F_W9\Sb`0Yдg\!~JN <g! wNȉ!Oo <@!_ȃK3gb& Pwh=q0{n92ԳcX1z;7"~\q78L 2A<"\.B]V~n` uy3G2[OrdT'c3jTP :@+p"~1g/W< em~׵h( Ŀ0}˖LU~F f@ī9" CTd͌M7k0Wܰ:(9J3Yx1]-@S^OkPдÕO!n@): 0s~F-ypUeBqEӹ?Y-Y s] 2͞Zlg@?|&~h\遯Ҿɨzi`мZ*SԯwuHGۃ#3#Nx9]vא>.֕^ * ikk3/t$Z T{yc \" B\8}W^Y)HcK Z+0Ů#XO-ର)~{[V6m&- /4j'js2f9@{xvKupHE!~?Ш,N @"3պ=F!}@1?.} Epk;̺g+F1;\D?:?Z;{a~;`Xa$ߗRe,C;Ի9`xzs} @ êkjbOcń!Y*>{8WR?@$R$R$R$R$R$R$R$R$R$R$R$R$R$R$R$R:? 5RIENDB`pybik-3.0/data/ui/thumbnails/Tetrahedron-2.png0000644000175000017500000001374313137372642021500 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+IDATx][eJdaef%wL1LDT CR-TJ,23-_difG*nkn73>;; 03uk|9ss<֛!H> HD$$ I$H"@ HD$K+7l#ȴ%۶m# ++bcc)oX%}Z$Zv[yyJwVZQNNEDDtLIq o@0R]o@JVG,K,8k׮I|o7_ON1@OF:{, ,` 0`%8qn6m7oޤG29S,#Z;?EOIh,… 2p,=5p (m!އ~8r:aیX2`Rpn|(]V3kfΜidhۇN8=8~i_ӿFpQSNv@iPAM6&V=??Ǐ7b֍ܭNm);/T  ׯܹ @KлwoV  gS>\"/EAe9SNngdd(@BB~/FaaaNerD,gQAP3@Y{a+**`f:V9~GYD簀T䔨fχqWne;vX8,XfQqhR(4vXcU /`T>>hpC,`X{Դ8ĸl(&@߇3Ei3JB3%5l0j׮M2ÇX^{*;fR Pp CuJL? 4s'Z "sMݺu#T ;yEH1aVkO"Mw=eYt㌊ { [}\.]rNL&#tS/Ab|իMjԃsVE%z(xGzц塌FH8fP03Gf߿y2ބv8EiwQ g={(Bw^, W#/ר|< >?]`gGZa3~Y}y]C*I͈"uܒo֢XGee%sVO>ɓ'3eqn;k4p2|bzqT ^A:bh4< S4;X<?>tpv6JͭG}T粳Mk`oT4or|~އxzI]#=IIIԥKJomT> # j.4ka?c?#{N8!3$L@۷IG-%unĩC53soF W ?F8E(]$#UB987jT ƵX[ZZv,_܄b8 HX@8o- #yس&9y_8ڟjOY b`2dDo=M~M4׷k {#tZ\|,[eZ8:ή 4 /Z$BW5?2q\н*6ƿ&@e(Ͳg0QЯ(,,d!Ν;gnW1no帣cۉ]Q&_ BFxƞ-M4y)7e}Rok!- `$xOX46(;OO1=E9y z'Es9|  cB{9f Yc`=<\@V~&&yxo-/ܡx~^9OI1M4'tά-ndSno|s+P_`"8"M>&h`&Fc~Ʉ﹯ ԩcsMLPfO֭[l7gBqsO 28 ~NNrOԊdje 9fi޲eME^|`GִiL;ycC/&wNDZk׮ת(*WFdݳk.9@8Vܹ3S>w`|~'M_?Em fmۖ;kdFez =x iZ{x + tA 㕟cSU pLbV+f994~2QRp!v~ VfѴz)_ws>GЬ`-KZ*Zx'rvj:-!;@ER1ؾ>A@aͱrv渺f-ki!1'/^lr N|9ҩ @/M0D`?jHJVfM/[V S-#ËA];wI - {ѧ+ e<JN=)tѰ)0޳BR͕o(F~P,J70`n0T/лw[3yf;V |!|JII1)@.ጷxib~)ѣ+jJC*oD jEtAUCue/sVg.Q /Y>p͋A?KŹ@p AP2#X<p*TƮ%_APJhB 2uNXˋA{l#Bli#077)[]R0X00 ]G6n49rĨT@~E(%ÿ@1pdb)>`?:)3Q̊\@QNG, Omq z(,}D !n:@g(JTB).hVc[[/_v([P.M=CjbtM9>O?d,?(@8_Ŕo1v@kv#APՑvZ "L! xxrwm@I]M|kS2o0pP "@ c^Ŕ`n-| :UwΩX?]nUPZW>V(%$h\n$JQgS$8ؼ8sc-YM}ȋG!(:3ʦ!/1pxkЈFJ|F">>^^GرW:%s 2ZX!0iH Lg_qdytV% gqa`v HL@= ,@xbMllÆ K%3dA5lkpeK?_>༊|[1ÉMiww}1R, S#8^ Fh1ba?1}8ث{ӆy>(2ea:2 "DP-t;XR},R;r,z)7{mΗ1Թ tãwdg`oo/CGp=* 3%A!0"ڿ~Tl}uхs(*99eu|<%`w;|@ceF i]vr , @'hd_>Пlj x;+s#\=- (B!T(Ұ2!Ρ\tҸx'Yt:F-`2I5~8ELΩes⦐Ij5M63r`͔9\RN*0ڸfj""pF0)n XGZıPM uPtsgp-.tiK/O~9,D^z[]iϽ|a$Ðe,8^7'-Mg+Y@0hEwZ@TlNv@Hhϔ13xVL#>ʯ9ÆFn}s, Rv6`$Y3۳%c4n P6C'`]Qԧ+V{M$bf~X@qo~c%uV 8@^~"6oX@T"'_2KV?WihòPJHlrm 6y,7 G50X]"A3ǽc|sr,K,%ˋ2}pwϫxRGy [BY, tkn wk@  (,m[,..|<&x *Y!F)z |`G_MӒ-eԩk Xky p$U5|u8OTH{8~+yK8z,W4.u[ύ[ ӋKbg@sN m_>#mx$ `0g}X@LYЦ@p`@I7a pHYs+FIDATx}wTF9s7A:R. Mz)H{'#*E,XHѨhzycbg}枙;sDs8?39׳zֳ. =̓ G3f4h>|4;u(G70x5yu/ǩǫ[M#k6I8Z4{ m7\cv{2۬ROK5]ks#^jy > j;qBI*j^ @;<&毯3}=P =c>Fx~jrRatfa8\luZmwN̬vaBWTS,#?R!4 u. ̤wh3WK7ca*=?9W; *o zYZ_sHwC;|'r+00PW`NOM:Ihð[l]#tgH T TNOr)Ήᜱ0 .CN({m̮lݿOᘏx6sV5ܽm۪P:cΣ8Âa,; IA8"손AްdCNs߻;xc:o(Ke3T†AhaгUo2dbbFs!9jqYư5,TW|-kL! w^VZ7t 0t'ͻ{(fgm"La* +q} ` \dܟF[D|z~ghE\|nԭ]Ҽ÷nZ[0зy+oZG<1K1ٽ5C`R[mx[Ө`\Ws=ۜ-~`9y: AWy+s%GfS3 IW0^ 3ܟ 9jaVGUdLG!*ojsOC \\/||&л<@ݡ4Z}@_/#1o1f¸X:ހj` 2a0Tq 1LhxȗD"d7l0Y|evS' @(`$$dx#D `k@$owxo%הQ?3nI3_sJbIZsscy1t$|xѕÿ/c\p EF"~"1H >* pU0,7Ɵ՟^"x<s@3_ 2boE&:ƣ3Hxobm W[1H>^@#ӥOQד7\{"Q[?1.Ľ8k2  !XLv!"y=>`KEz2JܧCfL[:T8ָKr͊1z=v=/H8tK;Ѥy׶ ^#ZE,À2#iqgF2yC u $#Td[@Uְ}:f*1!xrk&=lѾ ڶz*q&u3վ]*yEuI̊c\Y p#dzmڽV`vRy{ <6ų)s8e嶘oZ4r\Dv=&i27EhEGD#'ԙl>=Qsfod40Ťs8P)INRCsG%gؕLtS-2g.3 JΨ^p 0l,al'{ӘF⹧ՁE}K)S;~Ӟv2Ì: jK:M+W Y@- ( Ֆ'eJm %9= ϫEh:#K tG%ݔtKM^"tFRn:ACPQ{L1%3a" G*"c6yi rjSdHZC+3;}ٜLA;eL2x6+jŶv.,/ke~ W)Qi;  b =WҜN4אs[p 0xT}f:bLwHӜ0heQ-%Vvh"F43Gܹx2x$_uq9Xp}E7s|[5P㜷ѨIp5wIV Ϲd#A"q}qg;l\|x>oR&̈́zIKjAەͧ8w#cИ $\=D4c7R3y yՎkf}."WyzѸ5*pM(Ü3.X(a4ʍnOb()Ji8Ub2!>R\YTm? -| dOƯCg!DB*#v(&u5!RaLU4Jr!}(_W(P|~y +9@g:FaIf^w`s'AD_j8WLyq7@HDh,G});wgXf}zzV?lCW-9zwfc:SmY<i x,10Fj) ~qTio>2>Y:V% JS7H#kgj}|rqhisĈ!TRܣ`N:s)Pf>ljMPe/!}gp\F}RDac} j+G{a*MG\3uXXM.z|aL)9aF]4-ddE!(?Uw_WΏ ͈^]ިP# ~:WyK@(Qt+01x4ɩm<`[F>ođ ~(P #pF/NndL8xa^ P6q8DS,fe.U^ I7/DzpH/w-=d$ =p~MyM„zdm:x*^(VJK(x6u_!RMw=a0ƱE;cF˵qԧzwZvSL\Wm"̮W՘Rm.#L( qp [&K3%Wh`@ WU nÌs& Ajw{ ^b[wf]n$We5pzA!``rx =wj{0ċF0gd&qʻag):@xHWe 7)?wle!׷__/̾>"WVݫݐ2%M[#,ZkjZ+v[8s9ךLy\nR0Q.Fa#>NZebҋxU; ȸ4 'yX8.|ub^gFW&8ٿϓ&3`!JcljJ5L:OJĺ?3L?#e@ό;pd"#*8^ΦM kH_1/cR+`l/K ``}됓dދ@3ER4tIdc}m#p !)h9>ُ{L))0b=Փ j'C+M_YWU0lm,uqt\:˿,zP aCioB=k38[16ɫ#DD x:P;qJR8L?]8"DzCk 6l{;qOg*0\LPo2#dMx*K˶x|}BcC^f]tf4\`iv!al PL5ySZ[VJ|20מ(R+fGՁ-E(ϧv[l]zL0>~.BX],)~!'!>!m0_(9~ uH ϝk;P'Pt}V Md&X"rf|ܣF${_k+jզ=&C <xPAuC7Cψͷq\Pi|uj_L대zwG8/)ܖm2ı+;LyV䈥Jvpy."᤼NDWH )o2w|,8ϩ2½С?,DryEpF7|SƿT u !wE ,CYOX:KH)OcL?#5pvD_]ٿ]t bf`< (FHpX*w/_];E ;gymMq:(ě5q5&aV1qgP(hǥj7A"y4, 0LR31"ڲc==fsħ fỵr_Wp8ԑRvMhQeVg61+udI6dLLJY'1gqeqR+q+mۚ0><3 UmxOp?QftiHAfӉCb|{aXD/^.o#f=ş1;Zbj;C7d)8̫t%DP WCDE' -EƹdgeqHiVPg Fc72+:d PC[d^[1/UUJS_ޓ6_t8BU>͕F; f^l}$qM!CKpt&S-'mV/{ )l)V̊./ʕJ{C{.A ,\ "ϗ" ︧PY_vň͍RٚǦ,Xky$!RZ7HK (389y^Z+ND$dOB!:4[y@BGТǬ @(.iAr|X"pmXGl@z+Xbd6c:Q_kZn#eĦ34)ye8C89"^a+-B!<36~la >Ej?Byp^HD~pΖ0 41iYƠ3PLH؇H"H/3u^SbT4Usj+TnZWԀl+p/dn ,:A{x?XmnT7hǦzsW ~+\*ҍQVG ɀ t4{vH!jʥUl"!{)KWXd :481܋<7Mi!+HkL7YeyɟvohtW,{Jr7+T~;qhrH[mTwX@I%`lB{ K) ~x * ,R/M)mH0(\W} n"Sh'a~ l6bd#uLX9.cG?q<]{ q zBH/]w|K}B3PU=6vjEE Ӥ-Ki `FwY,8nNҗG$k`D} Od-"jaD@>&yEO|l~¤ܓgGPb5  =`u@fݵ]5L{g< :r߯GϘ^mjP}l"ۿI\/yW;5:xH 3H Ln5eb@8_# lq(ovNj-J@J '0A1ͪ?SulcɽMI D$DB5Xwb>JC~WUNC&=HG_^+W;*T%_:/vl,P76xSv>P {%&vوi&{p Z!K<fS +6xZa k%c*i˶ʳt뼯* `6,N'` G.8*`8=r8fl: p .M2f+C7pʄ8ϑ~wK{U`\~Dhޘ}`@[}O0`b(W_w[&\{WfktqǛ h8a\w8=PdĈyݎlL <HYL>L 5  t36%WI 0p)HR?C&$}Շ  Ld_{to>]m}SCjE7 Hg?]]uq+z5%Ԭ:g/Whpx.9 |5"6RadGV3yӼ+${ekV $!{QQ\Jq=yg~@\Ve}3eG/V 7W}RqK!DP?߯T(JRZez8_Lb,_Pp)w8ѻk0`O ;Y H>ѥG Y|XYRӈqJ8$#5y&L0w笧VmlzXÕS%g7/&*,R{I!I|puRuK?YƜaKhZ׌VŠZ@#~0^2 c¯р JaNEJBUv | sBpnn"ӭn_ klochzAzq1( KsR_cb Lgh ɘOOSU}sŪ_7^ RWL7,/ޮP;Ƒb'!_cBN/[Ya( dn#F{`6$+ၩ"`,Q*J: G(]"J&ʗJ# ۨ0N3d y~UޞWU*W\01uq &KQ% o{c Di[Way@ZQIV\˜AM1uP,W#~xtaYZfGg?Ԛ `RH/#C,dRg"a9 c1 %\^"ݧq;uˤg+Tύnɗ9S=:d- @\1+,K>EWJGUШ(DW?+Kz9T>2eߘ$&禋GRIК}ʽs)WC(%BHe6He<-FtG o(8֠o}Y\$e1[e\{/P$z Y s6J ap^)tIƊo__JTpg7N$3Yճ'Dhpk(lQR=UhCKg%pIP2 _47It 4JO,? 6"t^DZi+FXHMk; G&iETڿǺ_'`.oVH8ͺ³}mPv /Tobɍ4|K½6!@;0J+n,|Lu$,J!S $3~ ôK-YCDy 5, {M ?Î[A4ϟ+_4-+ >a}X) BOv84cQggUk^w 'իFG gD%%$CJ 5WyWg {fWboT@   EA\Smt0c|N87JS<=EđZtx*ן*RV,Q"R튙au91- C n&)x~Lm`40TW.;?7{P'Lԙ^:.a:WpB*w]0Sn?MxT!,OXD'^U@L&@^."ֶ*1D.0 s})g@H^u5 /R &%wg .](>>feO͟T\(t1"%᷷:rͮRu8~3YW72-[7@7ONE"n3aCiG5l4!dkyGKYU^BRRdP ZD,U=rQ 'xdaB[JX%F$,IHi3vJ]0;)):K %ށi R;?Vfϙ ۖtA\W>\?qP'( vEQƛUB~R/J05P9U?VK="dV{2NqfZr;e^ރ WwUSzqyTg|ia^xM悘3fE+R>;:{Xf30e$ZӦpAß,HoƘ,y# 5oY%d',opx-欤gh@KH_YB}_7^!\Vreo;P--"U *?=`amR5y\T=n7 bݛ U~Qգ-wm,T @0C,{X1]Q y{;J_42 `S m Bmt,em,%@ :.ZpCiSVMl7}UR_p B'x=_տV.nn5z U" N!(yR/ܕ/Xd$o @فkVN Z]fx6\z|lI:>Oc60ɫ / h9tѫ49t*y-=sQ c1! EZ[8%ʤL,K5RyC/_UKE>{Jt"WPc_7~bV`CB" lX^᰺C% *Xf]D^k]v`!D/HƳjzQ- "|u6:+ H`C {УQ Up"*A4P}|7q%qUEDfs$)L՞Y Ct.qq^@gTkЮ3{(\f~/ыQ0}AoN1RdK/qmQYH3QR̋_f[/uS*?dXs)Z,%(rQ4}UhPCxlO#ċF6pf(C$b!5$2RIub5̟^-w+ P|>wnݭ+W&)!BbW-gE(bϺ&ewYO㭭G2~ݧmtgI AV'- ML!kN=@#WܞDO0ח82ʫ3jT*mt!7R7b!^ u C+es#5;:/q܈Z97!!C$BkVIFufE< <ݛj"F1) kf{H)9wŠS,bp)*}l!6{iɨHUOJue `Fa O/QQ۹>Y#8X7 2~tGaZfY!56['/V.k)=_{a+E>s49N +`,<#`$Ciw!#*zP[MX\`7;4?W,i;f2/ R]D`2<(kuzX_@Bn(fE_30Vpɪj᩺~/I&pK,Ž9mLYYaZ1C~~X:=Rc2ZTb-!+)='GR\#2'۶;՟1wU>lĔ r(AogRcϻ 2 pv C$z'i+΃a $\幾V9{CMI[X6~V-tD .G5R-LzҖ,#>1G(64. N%sHz^u"˯G"gccOIwk ɧƎڣeCM!OTܠK,4 Ed(wyjaZ7 ;1!cAJ,ye d:.#?Ȫva&WhhgHYU^lwtۘ|Vɿ3vqk7=E8튄V_g@=kaGejxz,nNrq]-glly0p\ D(} s4jkH1(0`*d_1VbnSBhc4c_\A xR?[p4>̛a5I;:kF)~Rr3JEݛŐR.6bN4(V>]at,ww릑0f6[ƳrG(B8mvpuRw?eo߈%3Doʸlȶ0VIYJY3{m[ǖotuh=]0.p^Ct1ڰ,]At:Gh nL"[ULtN7lH"av@@PbW-IgG?yP7S{;YNԍ|)1|ikXaaTK=+ϕ Rawd_tTߞvn*FUKbz?o1́G>vHZǬ6vnx~"M458amռ$T7f’^Y1LA V o4^%_J\5cTPX>#Z97"p2L<&OĐoG<Ǽ O)՟]K\n "?@aUe\crədMוG:z` FCN20ZYn;fFT<k̸hEܧ6q}.]8)<o,\Q˟tus QNr4reSڸ¨+~\Rq0?l]VHrgtm$l>Ś [/ɪ,"cϑ~'[XƂoGiz3Os76ZE~ Vn0˜q:B*b7fxul %@2Bgu;K%pBh?=:#xEmkpao/86{8_lQ&zeJ(D̕FEK%K0Vo[C.6P)uuqA7QA^X3.y|i_ׯ5}V~@fx aLa'sAꘆm~ö 1fԾō{ %i;"٭,! Fm9T8v *S$eo.\49, C56u'Lܹ'%0SB;bKkxfo(ZpyPv w˾6r!gh`8bRuDg;)վ)gBU^_8sci9 FHĐt`įBXii$CEj%sHd֋>Lf YHVLbPQd\n {1AQ~".-\"ѨA#@avIu4\%_I#w s,gv8NhY>{Kdoi~q]Jܑo^ s}T;ko"'<8ͦ\rKT`:@YH u~-w#}l1/axԫ~Tlsc@4g-E Swx-BTd }*~“nfTZI?:x4 KOؿ \ީ,f*C.c)djikr;w|=ȯxSV{F gF{x>mN- kBD ?|rճ%?:7JM굼g4f":dvII#]khtʽw`3hwWM9o@~i6DtR1Tζn \nfd(lT)O.L_n&qJ̬!(+Hc`w7 Wj+Gg{lox0[\3Q OYKZK'U uRx赸gmM7$Rf|˄qY E띐n".F}Ю,IENDB`pybik-3.0/data/ui/thumbnails/Brick-7x5x6.png0000644000175000017500000003243313137372570021010 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+4IDATx}wTUV9wOO!a%d *UPT #$9;꺮bXuٜS;==M8?o=y+r;r!C 7rȍr# 7rȍr# 7rȍr#s!W=3gvmxdOW?z{^#0{ 2pQ#j*9_yD;_:`+ "_uֱU"`A]:7N#*9 [A3;1v8.,ldR[;^h\\8 61op:Zk'$wo;yv&'A*Ny49s]K$9.0(&Yb:2l  Pq2z&/l߀ C?Gf .<{Y!c 3R1}3;X9]ƙ\Id]{(Ud4ir:9΁=hX]Uw27POaΉ;eީ%{0 0!OQ?}nAG.r#A5'@P/r>ӵ5N/Y$d0P޸g U 2#-A{)E,[5Y{|X8o %ÛHگ4 U~+ӱآ*@Fa:L# !;9Wҗ ^dyd0>vd৑A˴p}t^ȝ#'p9)b|2X ;x ӝ/"0,Y-3H]v,cM҉0|*^P/!Eh3rrj#=nJhCA^ʂ#i&c*f1ly^jy3xB'e*psvBGn O;>1ed>$wSKU2OjxJԴpaQ.4=%߾4$&*ډRx78AD3 "\y.h,zT `Sv)qd+{΂,Vj4Lshb#kʂaG@1}]Wg@\CrJ21P2VB `hNH3{Mɧ{=^Lq37 DFA>o "χCV*W#j=ƖV5YCM~W׊R5p()ouP ɕW}Pk'Tkz^bw{J(\Ge|Y %*l?璢ӵ^:P%^We P.gBEQZ=WsH"։0<ҶVgaDaV v_HƁg@8 E BQ^׳2n] ŊDڸd#캩>+p3IWQ~E%1(i+ϳ ej2f10qp#/nXr5&3nUN9{"`QiZ$`ζŝ&9 =a)%<86J*B:%qrCΪ.S**ӹ3a~ -!ҽ1?Ut%) O-Vpk7y䱾ƈ-F"/ Pz~jJ@ ΃z= hPu%d լ+ipƥ! Xܾ 6\͹b(nҫ!DIft\d'"]_g‹kǿx·ߤ7A9:qbd 0f N 53@R}*`Cͮ M,Q l$yHq p@7LOL:2% 4&y!& vMʎ [,kbE4ЭXl.dtU fN)]?.5V1c(5avRij@]}yTĄ谉&Λ2<JU,RX_+b(a*ռA`LhgȎ飮~\6.zH`(@]O< EbOI8-% 8ߞx%x7YIl BM>'#%ч$ N!=&DA}"q?FqO_@C;=.1^{(Mu3\U"`,<0ԲoTE$]췼I0cqR' wJdUdO/en6X cX^?//OT2Sh%w"ѡDpt<|ixo[&_c=CDȀȝKn=ʅ-W qp2zp2^@c.){ެT &;tQJ, ׼Mǘ "6[>TpWDC!f] |HdqyKG; ĄN ʎ{-`ؘ1Cޚ!Zf"S<Нjւ K1*VG]qT@nI?h'ʈApp X*_Ʊ Hx fH½Sw{d=gAFIUd̯{Q c1fvi8h_UpٕLj eR "YҶ6t/7f);GW3* ?_J9hy2x ( 9x g K:/V}0yL 7Fg@Fb0x=b+{\f0x#;~r@!>|;W$qAq^ѽ.?~lqjCO"7F]|>:f*s`0/s'aeq/Xb| J%,m -\Na`-qɪ Lq`&c^`D:5_;~g;Lsb3yq\:' w_ރ]yW"LK  gwCP;S~jf&.5d)Ol497F7s0#z*W(x0 Tm2~]yP[G%}b%v?ۤ{ s3 3}q]W0k[3Ė9kB $0x7AJY  ӗ @l6ZT35͏{CClLÅT2\,qXw'b:xɅ/'0<8 7`.UD <"] ҼM+빷1wJDQ.~W/[c"F?],fZV,s#$J% tHwZB :DrC8nYo\I^2u!qE>) 7n5xG.]4@#9* b^m/!0<9"Bxjȳl&a}<5p.$H;{;hCxJC>Ε32 tOb|q:V>29+"LgfO;b(ǯdr279pbQwkZ k0{$@!/%>Z{γ$P`x~m!H:jp#}=u%)㣜b]i UgKUc(u}+?U ϲs|AN?bqJP 2S-F 0ST`08S㷇iqvp["#/Jߘ8DR]|Q)se4,@04lL' <˜pbZ*(e\f7f"j37}*{.{ynSUqe񣨕}+V;Ǹb8!7_+ܶm`c8eZi@$QsBXgG$t|CxIhK҅nTr4E T`\!JΤ3BXUJ6sŬ tfRHݑX~|` r*s=[ ydOß?` ěx ǃ8B*AMƦOB.R*q;ڢVOZl2pSP[[%UrJf 8$o\! gzR҈0,@0oz Fu `Dl\7g{@h<Bq0mhwu'#pP~tR#db 4,Փ'СAu6YRfVܙ#8æ4a?'Nc^Л</\N&}خ\nɹ |M˼O [ϩN @83wJı4vDdBtb$Ƒ.ClM'n\!n'Zكh(1G2m^Fpt}Q/{jJ |!E 8}=%gx#^+WyfM !5(n@>b!%X!G%>-Es]%1f[İ\s-?U+ɗ'KxԂR@sEUKaRIj+,ҳ ]

4p>1aમvG7$~?KDZ7<c%!8{SmKnqBEUhLqA+Ϝ6F+y%WpE)=>㍘߯%T&}+sF&O-_`l@m(ũrۿѬf*s <|$`~^W >MRd'azm .@v#@/Ƹߏ; >̛!е~)ۿ]1{d[VYj^݅/5 Az$g WҭKf؉jz" xQ7QbngvI'CI;ZAY`!@$= jV,+$Fy5SbHC8.__D/&)B m_iJx3HTmv 4n&8*mBO2WW*=+R#eI\ gXUM29c.9k6a Z[{zkClDWpؙ{"͜ VF!w4&^a |I@'dZuQq׿uu TQ@\UUOEҩ&BUgK^:{2;xҺ-u@hĻѠ yA hhM[(Fҵ~{Pn rxlTj`*ƼFCLwdJ*0Vk1T8n?73AA,it-mi&4!sYF3%l#Mg,JEMو0;$^Ml%$BwuHe3zS}`l5$EVoϡ^q"ge9#}:?` rt%_^#X$AZBE7u FJyqOmX"B)Rz4! ISg`vq;x6;׸x^`?xmӝqVG3H"~xP9S^R #k\8qwaheFfPʻicp ڷ7 Nћnx\W -F oVyn WpOW D!7E{;o H c- ((my[BGu ֹPRzK3[CV˕@rd5flOIHS7$: ]m+,!kV3fgMhܜjz t`6oŒna$/A?zv#Cxh\/0mOJw8޿,vT'ݽoJy72 z7`tqЖ2G; ²>PmI>x@Ti~f&PO[E fzX@^IoS= S b`#$Kdw) ”fG̐ޤo>CC@ 2q?L Eq$V><bF^͞O#<( "n C.-:͞h @/<?#w? cxKd {JIeho*J7Ker%h#+ @0a42wBt. ! ue GhM۾27@Ko[M nTݾ"!n &FuQɣATR -D#I/`C,L2/wvPɋ @Щ1ޢJ㔴Y#YjP.He2d}&/n|qww F8ok\'soH1dŞ7n v񙤠LrlR1*37=` 6l7mUDǀGgHG,-쎺XDr2o-+@);cvQÖfxGL=#v@B^LXV|g R5[t[: ABf.bO{'Ͱ,fFʃ<)%DP/Yl Qd2{֤GFW> "?{3@fv,@ b^)^jӱKozuѝ$xMAQo@1}Gu6+p"HU%Y򅂲:2 x f"̚gnZˁUuy;k } ^}jp][M~=WOy@s+ 08A\ y-70 R{ U#N`n$.[z]ka21B~o@{f7vDx1|AJb{\ 7k╿23K2Vf7f+-eFZPϸ:=PUfQ慅*  r6>&y%V!OxY|OTaA^2]r2/ O"wmfl~\e4YuEd_BKFx_'U~edxF EEx󊎉a$spz N8[9ʔ:~d5(j2C.!~"?=rShQػhn<1]Yli%2E vzFLHHII@/ zpICY9Ozܾ\uğ^Dx' @)F|\ *=EX UErAs8RL`JIdњn9.>xu/6Ҳhek䞼Av KwVSXtr;.$LU-mT&~^~^-m^ 4zA2`%Pz4rV0JܿMQe{򇅟+P O9 EBbZФ{dЗveRAoy]d{@>+[_p> FhD]FH&H!V'ܹAP3'|yKJ2 ,;JlcF@obLv"?,C̠+jDERȺ-CN@I(C `=@ OcK\JF0>V ;{she{EuD~4\K+؋՝,/g#뚮LNTOĞJO ן4KLyDNן/_%qW\>d9cpɵW> =9F@n9F@n$n$UIENDB`pybik-3.0/data/ui/thumbnails/Tower-3x6.png0000644000175000017500000001727413137372525020603 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+nIDATxyxUյuyf `+-8סֈE Ɓ!*BPMm{s)}$?9ܛ~{{pǦYr!XX%XXb`%XXb`%XXb`@Xʾ@ŏhS 煚q#>R5e^{g~0 `dϖGjS~j(>7ܣXp0ZmߡzO*?Z l!4KcU\֡]{3rM;pUFV 96PK9|||;Y|~ 'jdQ~\YĻL)y^ʟk(ᵻ^E+Y gZ&_ +1tvCȮ0Tj3xc 5k I//s@r f?DH3;X?-u5U| .ۄKP p:_PO_P~%T~#>Wtl'"du }m0lʯ]v#h^7x$#z^B$QyP/F!+[` $ۤT^v(TT)?W$9qZϊ!݌[(*|NCJzٛ7` I6b Ņ1ݻ#zTu78Ty<↋ ߨDbiiHx;j,Oݮ{qnd)J%<6x ex<&}ys1FX\ P bfMZ|x'hhHDL)&pMޮ0lFeJ\qE򷥉bJ둫{PVHP|Iᛳ+k-Z!0[kjz$A{sP|.[3_&~?Aȶaq/ ʿ _/3oU[dZ]:~lV(f;``p7=&{FT'X* Oy=( ViRD@_q{)?-?ފ2 &䄛`Us T 1a6|I'T艮̗;ǒ Wh t u`K,|t+{'ژϕx WaT%G>P1M~ [@T$zh(aP(`X3/Ea1y0 h~Q6[*Ҫ'-蛲q : b00k r5D)Ոv:@vlˊ(,ȃOlUz *lGLC]) < ~O8Z'(6(0.%,aIGY\ \ǜf!d7R֭1=fTf2P HR?[Cw,P^dxǔG uX!BY0(z)7O٪y#h͐A*3D@egE\@z=R0~bڗtȾRDtK\fBEw(7&GEG/[eΏ4aX[B N!da <Wz{/G(mD˒mLٺ&l A< L,k87H)*yZkIYYY R~~-x6~Q@2k떚 U @ ΀YVѴ(t* eg"t{0.ƒ]üINOI`ßwdCA V[:[gGHf;~Ve\0tI zTިAC=b-~r;|7F$;jgT eI_͇#F5X @2ddy&r%Wɢz )kSԗK=0R nYa`;+!aL@qwh6y& . 120, p)|wa`}7L/z =U =T_l ڙcSmRCuX5X 9$*pFT@EI`I;r?SyY2l;)ʱa$x|f7nHuGV(i!pWPR,&<,ì"aV$A]4 |#(1|y#|P ,GNui.(H!}.`/=N90G03x/1#a(\zϷ Q~@eofJb{k;bHh:YfPeMBb!pV,pAZU10a謀/lfzuU=|oOLrX ߾ aBos mr_,S>>\qVb0p[ ! *SozxA`Y(;{;–ޫq17P9 b8C 7=t 0P,2$Z79a g eg_ڮ|~7| )ԑ I*h*|f$b7S1U-928/U/>TSh)t]* 'q9(W7i-WAP_#G)wkcHusjIɲ`5eVէa GW 1^B`*xEKVЋ 1'9v-QƼ_NH;bi|n Nc`n ^]x%P)8@ ؍@-Lb4$t^>Dk(OW'=S?hσj| >GW=K3э'9_|v ?^/SJR;=jN><||ZqHn[ʡ ʬ{HV 2+ @IO_-sYGJd^˽T^ _(2c{F7Xd\?l"ʨXM=G5F(P˜I\VX8rv&aݽ A^`J(8cjH4Iz 6x)ȣOR:YY ,r#K3jPЃu,'e 4FҠS . iE@j48Ǥt!4"R,TwF N*Z 5?dT'|^ZG;]kޣ}!na4:foƹaO,/ŸGEiX: qr²1H^o e pY_;K%><\cy=ؼ!;B(= 2@G/sepB+ǹh^zޫ08 p秏J 1yeϏPk`8z"."Ol2l[L @ܦsA|]KYtPgQF $*ɑ8VdL G> 䃫;#e`[Y 32˱b(GEz,Ѓ7[$%d9#S5h*j1|C+(݋eX4b[xXWK !@(N`i]llvy] 3$Z9:Fcyj0Ռ.gh7z9^jϳ.~}z~cS+ZSCtAQ-e*sFh!`H PsТMT*zb-tT|,.1zְPemK=(A@#=T3Vd 9Q!?O`Pܴ;p*/4'7g'ДP Zw&,@PT|lX )LMqǝqnЁ>5ap1?(8L);-u|@^,!}y>MB;xJ9Ufxug@[Hux)~6}}܉pb`%Kf V4 \#D' \d4j= *0DPB L )1~Ntho4æ^p =jNY?G>~pҁEC=|P? uP'QQ\v(SಾjJ-|O|c B~X #ͻEdz VX J *I4㼔~"H>;3:F?w! Nrv$?f싲O5WP|ԋ| ݿ@kK0ʟ]>~La?S:%} ԁ$kC)+b b?E>R BbN@8;x ilA@)6\·@%VY6y{bN6NhQ]҇T xz{6ߕx&|f@B}}R%JB-$3FX%kp AKP+ )` mTU:y dÚ Os2t@9q1'W *}3CC'p1Ljcӽ_cL〞e pu<ӔdGٌZ߸rp5Z bd.NTтX٘eh)bs4ȋ *{"z}D1d-f T 6oQwo\>AzOVXE0-2` lK\,8 lo!MC1Y|)X6@]n*~*cᠣa 1 MݵDP|eczV> TAQ:f&89+vhYc>ߗ`?BR*G; |y;`͆ YM8rϕ2 `hxz`?Lb11M:*dvYv`'ϽW'8X:f^4L 5WH|8#`* UikV"P(q~v'@@@e2;݅o+]hE"wB~XwE^V?~bHr,sXZf|=ǿ|~.Ĵ@!bl\vX^8v*>=}Pbޠapx vݖcY"v d!BId%h4VЅV8{fi ob޵~p9%/w#Mr/ywT:{gYϡhX@ F%0+ozq}/F45m8v4o*+&<M|kkd"bAP;UY%S=GP㳀@*Ia@ GugDg/C4˒$4 m tmr8.(X0VbA?5čVFؗ9uJ=b}}}|?Jt$lЯ@>C$gߩ8j)!wJe[㻆܏k1 򯂡R T{xG]I1EfDoN*=ؗ;I+%-v'R:vd9e٘!Zma< tYl—"T{"&iɇ }U@S./!R@c^$:\2]@_6*p8Zg>ymHCVrAY ǾYaۿ8O=<B槂2M @4uUa_Ƕo{HHq3JJ e6*PI%U kFWLΞp0P5}_oBcͮ|S0NL'R3}\GR[""cG44J%6L¾2.;U}Lʯ?toˊ /+}&Ρؽ߱|SPR"%|bX5 ^wԲ) * h8pqǽL*v}?x~Z<L?ęR;H,L4B(ul|.oi A1p|o.h3O=N)`ҍ7y\A'yc>Vp3h@G+swᘾȆ|S@ ! 0hyQw $CsN/|"Z@q.2~n~1v~RL/YWny<:h{/yT3,]Ezٌ ~;R=dm6&8̋5 -Ev Bꀋ g'|u07.pAy^ż6 z_Tr@Հt=BC# ƾ9\ƿD;9.E-FHBf:vf܉"̃oac[U~ -Z5R@A" =q-Cq;0؞GC}â囅 Oa pHYs+IDATxgx\ՙq);ڨ$[%!7 M$qh! ˽ xyMX$n6}XRٳsGwFic|>,kΝ|O>iWɋ A M M M M M M M M M M M M M M M M M M M M M M M M M M+m͛F׶޾1V+Żx-ZagmĎXb[,Wœs/7$on}]+$8ďKU{h0|ybmmW>Upy@GG+<ڟU((lΌXh `   xz;R8 M&.!J"9,II@$y 8e/s?я9C'· ەC֜ȱۚ;s\܊Il0!nߧO7Ѫx5 װÅL"ٛZYѾD;L# Ý$qz<Ŀ ~-S_WEɫ~ ;.SPՈ!2! [I0Ji~卧>U jltrCNb,#^T :R*wӅ?Hx^~Ee@pf3C!eR?%'=BǏ,lI8+ &񰂍 cl8 UTd"-XɊ^wZajփ}xL'хKF w G!c?{$J+1Ѧ'p `@Mr<6? *:35lc}xh75Z-\WUCƾ| G!B U$-ֱ2WC o c:t|S䏋 |4>WPyVo1 u rqHQ 'KǦ!AZoBn8j0`ǂ5t#A^D0.d&į >SȠ.>lO( Ъn5+bSwC&sWP !8.+**Fn ͧy8(Ѿ|cRm=|N$.<3oB*8`X(9! XӽnjaCCɊ0,}!~.=0y^T&-xq-}TϺ*\  Y$0\.|C|ﯪc$Vcb6.${DNPdECe9a T{ʬ ]]?\Bc>IK7y\`J[c6!TVΠm%C'Qv^j&5^ BOmj ϡW'^exey 8*ͷLeIBvϨqјXxďzvFtPCyH\W*✷(PVVs՛1`@Q Ҧ=}R.(`h%g uw@+P `#<*0' Єgb %)QJ=@={"4B:C_0GRq9 2q=ޥU-Jᙿ/1ݺ-Y@[դpޤM!B]*sUA I(WoKCxػ$fq1CɸQ0 y`d}֒5lھ+9P1 (n`otY`yfSQEac w.H 㚴V}>N6 zя;'F F/у!h1yަT[Ӷ|g#GX{c6LA ;pr1t7 ̜zO%$0?鋋6IpSEygna%(EY Ex&nWoH=/?L Ժoymb|pϿ,mz8M̜ror]s9a?~7jY7`YYTU+ݣEQڴ{Q8' " !n3s͠|\ad*JM ]|l0yE5i#k%ߣכLc)y&x&c6xZ ;b_2D5}]ma#_H1"4d01(qx YNRg ] Vбy91PPO .4y`:X@Z@@QY7Uߵ\6{nvҦ 0|!۹-glrgc($h= 8:ŻH f][Ŷ +nR»<ɋ.t]"!y|cT{CV \3*) ݉]9!Y.HE(h wvBWdl +} 2 @gV< pM1F *yQFԈrF](Tu^T<eߡvzE Iݤ: {tkk>o8ygX8hzf^_+ `sYyf[z-qD,E@8qȖR9ΣX寏D 0 yԷw7Xc,~@~P*KI6W*^@b *I ]}1`b.м:}N!rYhո]n !RI\ᛏ$Ӫ$ENObP{t/h{W!6;h );fc. 1H&RxCR%$}z檱T(I=>`؇ppg`jv> ߵaYFYgz0[*#TOŇtUGP@$2nJb`y $S]8y8%aU8FI܃sNh! ܔL|14wX[4w 2 ?6@,`>_a?y}~Io_c}K w'/PݢOkecS~a7{lZ;Ժan{=ش[o{!BQJ>AV3X؈oFÉRR85jdC 6 4Yo=`ȵpP@._p]n,q͛ngGے͟@xEP6lzjuZ < "_+Rdʷ>V% {5Sovܔ3-psK!E>ikO$[K)M$h=ov|,H D ?gO`T;DZtd_Z8u[]*vo 6"S҉#OGv=[ЖE,3h mu[O g`x7pMD1N"W|0lA .OoDk2w&PR_g-ܝu KF@sě" )yھ|X@!~T.|𝖾+ WhXrw%eP+1%U&v #e6,Tm)9^VVǚ68|Ǟ}ǜ+L^=cW-+, P)6xA^^5=BL`Zo#Her3ob'6^c}LݝWCCgJ&Y@G=laי"TUHk"}t5OZݛsWl/Ѽ<9UGu)"y4%}#q ob|#ҧ|8ZC h =L;|S;|tg峀GvNjK=8+>!88CyB@Y-M)0ܹn>&jRfҦz ^^f fg'_n|G}+ggɜH0R⎓a5% wصꅡ0.5)Q66יó}{b΀+{sy-iTJ.}T>KmW6|e}L@z@sX`-OK}6׸`TQVqF|OmOn)g[s!uuS'0'_eUR$a5pgCB> .a'P?s* 'S~['f{^DPuvK,Fh"fxVAkTLva pHYs+"hIDATx]y|UյUQ!;nre$ QFeȌV-"**F1Y[^lk99c$csZZ{slC?5k,X`2Y"e,`E,Xf2Y"e,`E,Xf2Y"e,`E,Xf1g3ozx`Oޫ-@/؁qy;헰z{{AyJ ~"~ןu`:3,;}ΆC JNl+"9Luǫ.cGDhtΗ/u$ 29Q48 2"~gRBDeCNN GSa~{m3e`ڗE<F_tp2I^{@fuu(r_GVg.HR-R/ca+]W6 "×3ҟBJ?E7b| X?M{TNb?CU8=>>g'2t ~, }t,=ю26p^}m m'AM8P $cMEMli85$z<^VHY coȽ[FǾe供2=mQ}Ά`GHɕ?BVl%(d,cN h _5&>c1 Y_ +[GqG8xj9ZFsr (Z57/viHn~ Zb%oUP,/X'B7E۔& t~ylKSx}InE/pzd~S}]u\@m2w-WlDS^'D#{2xfO^!"//u!6IEp g>͌⬂Ҟx_VЫl"Xyf (F&> q SF'St>7 F||"!:J .{r+zخm%Py3ɗx&P!J PpQ:pU.p.]lhY}xtDAAu q`$k2t8~XFu" ^Ik\>co>XMw#Zߐ_b v.)l66ZCՃ+W/d2wQ{w,r2t]EO6;2"2\M v8E !QSLig%0'B}뛥(W ] P g֭xnU.AXjTj=ˍv *W9T/H1<q5LB@<xM!i /'>X$!klC\P 崱BA< 8~lBNlUukE8P C S,PUZG>P #6.`sPEXOQ6O3<qeπQ!ȀoqAǯPv;q}_E^MK]=!7\:Εx/yp4xd:l 0,Y]<_]niC՝J=Md{:1ǟ;e܇?ؗ%V3>Bepp`>.b]hKs%MdǸQ=״r?ݣkx 6ؕw1>dGV946D75"SU6^ߘ#b?ىkJ+VGXka!OrI7 |4%*0}_ eb6-M|\* ZoCbEqZ aCX(Д W&C0b/cw~e@yTzt|cH޷4N1?՞n4 R='Zy]۴qI8}rCcEEE|쥸?ٻ;B즑NGt,@0w@e/PovWgi"RTp$q&c' >>< M(JGȘ+Ggtۇe=.~'I vA1Oo!yۑ5ze+}5yU]Ƽ,!-J[#U#<bUb4zdX Ǫ"?d,:&̫B+rߨm)^::bʽ7>Hweu1_kanؗ'}l|l_wm d_;V>vpe/SX`}+s"M[ ;Jf klr?,[!'Z =щ$D6UBOq! M&Rȁ:Ǟ4nȔtT؏JIlgF9vDZ% ~2EkWn "t&mܰA("Zm_>eGߔ)N9yo.5BOn +$1WP@*!4 H?7aola\vO-6*~.3Saojl盬$%@6{%HX$Hc)T\M_zlhwhQE1T`NK#u8kc K4xhL>}Han (@=ј1=ȸ>ƾSӚX| 98YDg,oPYZS4 LcȒy6ʔP:. ޅ2gCKDe8Vh|wkBlN !Aۿ$;\p oРZH^'wQxQ(Vڻ `Sypp , ` ޕ E.W~W;ŽTaK׶9eNof(zHt*ZG|2l#vg@BiH'ר `O4~l-n8d|@5jի|{cpH `~ZM~q R2|"]=9.&} {-gnѴsO%ns}+'K#C[QC^+6׏"E1? rw?fw' i`N >Vjlsz P]g7Dd/$0t'[Z!!o(:ӳ8l6qʬ#0p ;htrr6N*~Ic:G]ZF‘ 8JM;Il)n߈Əfyٶj0#\h‡6- "뀦$$غd%@2ܮ!{ח\9|@&B@֥ It^X:= BAH|f[%cY6F: _Vi6ZqGE7}5%Qp %}^w½F, Q+JM2Jq%"N߽#R n?I+0mpxZG Aê]N9d$;Č^Xu'_c+ou/2IINv%Т=ᶛ`T5H@1 ?f.&oYJQ'HE(1N;cMs\aJHMXQ! qo#A,_rn-˖`y8̊ټE"yi{@o½' y}-Kz(CF :AǡRt99EdրU_oP@1 BK!bA&kB;L`J7sZcK?4NEQH8bS'JHB xx-v/GMMH-'d,ƅ#QGnUOjRF# SO a۹|^Q-E_*v7vla-Z9Ş{@S; g둵-:`R Axoyp,h%M BmL?Vߔ3!5 }. @_!Ǔg d6ppMݤ{+ "o4AvьJ&1$x"P8ӌWF+64 ϗ3QCG;/ yQ >ݗ^8l>ᴞ듺j4X>)Dސ|@NgR=rq*!E \4 n$ HKT\xӃ\| IWp xY3( l'ˇc=x_^Y[pV~ƞ0yM7yP#d1hPj d^d|p ?QvDlրh@Ւ`;6Bs^)0R!)FPȖJҝVxuNxXk<>?h˃ü h zO%ᦑnNr8)YPA9VJ#>xV!0y$W$]NA`,6o5BխI[>+_.{;jJ 8(c:RlC'7 PM@ 1k!_$@'Dcޑ Wa)W| yX5}!3WƢEuۇ#-*hkuS]^ϐVЌA$qLbVRRz'%>9PNlh_;\`~*Ӯw)}-~]VЄy7{8U빾}7%+T(<@ZidzT%ePq_p,v*ib'QzSRX6xZww?ǐhLЂ*֥ڻKws-_(vE]!. 2 bck2mck}_Ñ-M.*;Fv\4NqrSшlJf&!}_ 墝M?ǫًLe:򢒬Rήr5Gìs&v6.fe=j_9g~4|ie ^fnr:aVƵ|J"t`G<zact ';zy ݽf|H5SùhyhĊNv S~yp U{e3e_WجqnD6}۳֯^?;>V4!UOIo(K|rgy)Sbc1%r]x5,l6qGNCsxh̩$8;>!{a4WϢqnR4JMEmR=ZfL20nq V4vRv qO410SM&qA/l/x4hFl$x5b߯=R^W,d(Gytj73nnpU`ŊPDѪWXMexm{g@4  {jE3vo^^X_ߤ$r YEV h*vw/xp],@τh,K !vY8D\ʊY"e,`E,Xf"5 ,`E,Xf2Y"e,`Ek$$?IENDB`pybik-3.0/data/ui/thumbnails/Prism3Complex-6x1.png0000644000175000017500000001621513137372663022203 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+?IDATx]w|TUDdjN2B^#!-pYWpW@-Z! JE# ({nb =I&ޙ{ o, J.%ӻڴasc,s9Go"OܽjeּcFg\z9mUӈ_UGkhM" I_> 1֣(%MBS7dag69/Χ5i7!T).3=9s&Lri8"F# 2%oQ4csp `!x\l`5Sj< 7[=KmZ-alb nV ؊\2mmcGgd^}i|8DVp,Ŋ(Œիh}u!7"R6~=ύģCcuYU<0c _' `ױiCHٚ=/30`#o+ 3'[Z` &U~&#ypCMf"Az~U Xԁl&Q c=4דFP{H~ԷA4hn‚Ȁ@p8; ғQBN]=j"Qs&7,Q:47<[" '#|)8W, ){-eBt,h5hO%{Y@hN#m\[7EDDPHHZ; (!2oOe A'S+P @&py8p [#ܒ-*e݃dӷPye)Dd{$DH kS^,KtL&1Le!-,~R"*x! n!YMY-F;؃(!DM[8qƴn:ܹx .=$ ˤ7W/ǖ&"=C-aع1ѠC]\GY5^,"39Yf~92GA³@,J"YA6[Z/3;H/\UJ Gu:Q= &ѣE 2Ҥ/X,ԗlOH+nKxKa[+~;, SW \ 7B@jOcrw$M%/(m폾E@Zeh׮OH/^Hj p叕>HjW9UNCSRM2 7ˉa\A[]wI}c"5i҄># zM69?ƍ^zy!6~+ugl 0*|8 Qt :0(a&*,>y. |S47ov"кq׏>sDA^i~}cy}1if^2n1 oZ}?6HzN|U0%>L_-[FbW9H{\B6}_A`8|l~VDZQ/J2r*p͟90(DyHι~.7*;T)MXL={/"by&уqzqݟIB4rK1f4OJ 4җB%uwM_<Jcy_wwVI:a[aN<)zS9KcbDO#80vJ!IcDS vFݼ=/#8kgr+2] Q?~o)>!-O';8alr!C/ _Q5kf{CÓ6,˹r!5iUzV}ĦM^ +f۠1FED]2֧Y8 ~|.%sޝd'ZNl4$ЏED*7A-0=  q.iԨ4:;BIP j>V7&@,CٕiegD!"H\%4Б%6MtwWaΝ;_/ ХKMp0fMgiU7ywը 2y Уd׈>ZpTh&r7AS/FgH0[(T[@81 EeǠv=W$xc"XeUڣhJ:Cx ̄,+'@G.ި&25Sq C)<5DQ=׿gȻılB`|I]Nϻ܃+n^zUd08:u$S:dF9Pbri1AV Ø$!ɇOX_ &w4*"MX)&{Wfش|.prЮSB^ViǑ#GO#F\“L@yV`L1L0X`c!v DF0ԿHzs?$y|$m[Ti)))bYٸqh4wܢ 1Po1Tzh-K,ZVh{+p/k z@8^ʁthM>t˕1 SNA5k&rl8cI2((f"lBPgW>HI4_=QI}E%K +J'Ype8rrrwYk~nC#.RoiKEo6/>[tO_?3Ѓ^ ੶Z7Y{L[07#==M&pΜ9´XL4_ *b\ݍ܊pud1LbٛLF* u!_9s L)Y$o %"y|P_>`"Q&?~<&~@#uٶxzDFPBÆXVp>ĂW‡ɩ(-s15 M\ .~Ǔ:{X{3Lnb~P)Q50" W{+z_%]b}ZlނL@?U68@Gi\z>2Ș`KQ{Sobvaa Xm&EaL/$W2oX3m{'. ]p]¸ҰǿoAvZZ6͚72ϱK͈AAk֏oga4f[{JA1i|O1i | Wz?q auAtƕ]CYYL%(\vMny{on9ArKJMwa]}r@9г Y?53}>R\"`Cn 1&*a ^:w*Lߞs#XOm;!}Q&F#iF p&\x0wWU|`nLoN/Ac/"s/h^Pv6+ˣmҹsRSSEfs'p M\RQs\ MA7>FegXުʐ_=w0O>bKf̘A{ta"_A'J/ bQ&ڰ&>.G7i.loYjLV]-$$8;FgϦɓ'۷5ie+xT`0̤0H w_5y904Hښ(&wЅ(1 Ϊh(=vc,qeQ aBgҊ]&!>kILn"/f=*F:.\~珆 uQXaUZ} `A~`Pa`_=1{J~ .}sXRVua`?NN~,hŘ ӳӎ8 R$.ޡFP/E#Lj$_T }oh_jA-f`6RD!FTD>d*~~O߯қJW/2q^2e6#{^vp-Hh{pS}G`?6y{7[ $5 vIbc@t{LN{ܩ10K2oh`3fAz6%t'!lfфs5u$7xa7A'OIWi곉q`6Ĩ"/| bBMG\>K[p7XJC*R2F/5k .\ |?,AYPyFCr@!}pϠEM'.\(6WGyұ~#z-XһڳW(>|Xl?u`cJ:\TYPC6kfa }j6X /"ikٕ~uڦMhРABp"++K.Bo'QrC1צPXA'{4 HږQ5;A<l?/^,|{?N]7Ϟ%HFTMq\?F8?6XI[ԯX~۷-OP,dOy|W)2H/O6MV;VW& b@L*|3dqhA>rQ2WwaMqa@ؾX]CxE@ؘG`H7+~| E ͝+}IxUW0< ={fCs }Y],tl}PūP MIW,N>p)mY-5^Hٲ3]+{7*bΌM+jV89 }c5o21J \s#WJeV O>DsWߝ'fTS>Sm7[jg}_ ov3eIT@ eb)Dx.36.q֔B @_C;I_CA @A @A @A @A @A @A @A @F?A7:IENDB`pybik-3.0/data/ui/thumbnails/Tower-2x8.png0000644000175000017500000001074713137372524020601 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+IDATxy|Tmos9gΜ3$"X "XL"Km5JSBuDY)b7\ZZ<;%d>!g&0<{{߷{B=WCA $ B!@H $ B!@H $ %=}5R -c%P-!hLQZݳ7P@8WQֶUA02hVQ(EyQBݍr A֣V)i{ÆC+T hЧBʏ@E-a}z*/yBc31{ 7E TU}@]pQ4]ߝ^„:ܯ,y?0W~ .cƏ 9y7\ N`3mnYtC1"|k~dI0`|,[28OHƗ23$voli=KO 0@w`4. ߍ(uzPH0C&4n=dB^RV`5?i&{h&#wgx}|W}]½Z0-A x+7>A6țmz`Xh14xLɸ#Ɵ?$Spb2X/nKc19V*+V&7``?aL^GyB]sES?)jg4 :9A\EQ  KϣSd߈ըNj\lep1 A(vA+Ew^`2PH +0Aߔa|r_e|V.66vp!V- X+30o0_# a2~>.{wt-dC`WX &C(*!ij~*=΍Ox RT]Hۜg݇RQLY<)>y)[/^A2+F:P$ *̹ࣣa( (п\ewgk@ 5K%0ɐ7/2<K[y-$'G,xigH`7joiV2Ph& @+Q` i `/P8UZ(̍mNY x0H dRR8f TJW)N.rg+h" Ty:$  %Xx~;SPa#AJw/J`;I CP0\A+xO@ƞGwcU@qbP"%yh [vZTJ ѐ 'vϋ;B0i$pW 6̉`*=Kț0\0`o,|P\ gM?^uUK,(jY;BxVܔr4tԢ*|ɫ$w|xyhv,B#Scn .xAv]vJ>0@M`b7Ja>?ӓ(9D'i3J`/lyggK6 thB^7 MC@Xgxj}>sfa l'@`BW]3HPz? w wP"X7,$Q`;p29wiH0,*% Rι&E2|^XKnNpi] "ڻ)l1m> ByHEBPUq>,cbG{=6SxEÓ@O2k94+#SjLF{ߝN~n!&&7ys nQ)g F\c0ʦ.YbXh^bú~P`KUOi;! 1\f?Ϯ.,{CPYj,;wx`C:Q7Zy& 4p(f-nX8x؊͙ ,gDs0<2hm*UaDO5aoR|l18Qs`i6]aK`= |J@C,;F fˡNzfcmlBV%aB\ACRzQ~*l ֿ??a[ ¹QvO<XE [ PTOxyL3=p|7WQy%G96" CR:M =YO H(bÀqX4@0c|B3OXՁŊdxKBZ_=lS^#Ⱥ Kym0.tdoszbm&>މ2[Gư2t^ (9ǟ,Ob'O/J@vғ|@a1RMyZ l}0j} t;p^ U.+3wD/pu>7iD`зTf  ?g,z! c}%BJ\݆P@0-Ulp`1ItK>h!C["^@ J•<=td{azs6 \Bm\`SJHay p 4wT=i@O`yUg |?G`W`Q0zFAsjD%viLk^ƶ l~>: 5Oh!T7a`ʮ Uwn\%ujWY,𲡐5%9=!xW~6<]M>Ú| l{8&wϝ@@ƐY@#-~Sc05O!qL$>U' %#Tm9x2s`]BBŰ}>$8!87B?IxjL3#u^ \*pP1 (96 `[f^Jr1@=$2 ^ Ѳ9ë56JgC"i HSÎ:8l'5H'y"H >?g[=dU!zjv0{ xwp8WSѬÄ/t&|?v)bBj^`ڵ:ԍpw󅑎l3//. X$w"/gխT0:O gu8@+"c[u >Jx'p3೶l_O`=#֟C:Hc>@be 6K=`\-) &@J,ۻ!k n`sӌ<| L;eˡXw6[صid8ty}`!cXԙghf?`pc\e+ @-&_pgh2@uP;e@}:/Tg+b5}z] 5P{li 諓Q8=dz5Ϸ4Ǚ|a$ uc {ZzgңƚE5Tu;8v@I f^I B!@H $ B!@ >@H $ B!@H d?;Tt&?IENDB`pybik-3.0/data/ui/thumbnails/Prism3Complex-1x1.png0000644000175000017500000001161313137372656022175 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+=IDATxy|Tg+&F&3IH2 & A*^-䍘BKB [e%V,BQԠlâlVT}{z 7Lsg2wf|~JZ-<}ι44ihФI@& M44ihФIA@t>krr#"L&Klifh0$zCtìPxrr@gB/?_x(@{ ̌4F|m zm"> ZGTI*aXNVF nmpu'T"#Q TpTpf.Pϑ]C t%e ܧMTN`{_M+yw&z R!@jgD%0vJ IgDc<5| F/%3E3ݾ0!>,v?7v*O;\F5K}3˜ Uѻw_ BvI<'m>c r g(-- V=U!egGav ^sr .qO\!o$:ѣG!!!.Dk nes%1mS?rJ`Fee xd 3Y0?=9õo@o4@ԩS[y&L4IVuax@ ?kΧ= `JKkT>/^tALx q]tp~W|ԁq^hhhpDxa4so_SÇm>,ZHP0H{$|yQ*(7 ٳgkh>)94]QytJB.f "+5wTWW @} ^_//8Ƨ: @aN(H, X,ܽ{M_' jq_Y։,%DVӧA"⪔ajUxǞ4#Bc6;)<(DV089t8:h]D\Jf_Zr|}|Vo1|DVcpfY7`?dsA<̦6?00[=Pn,11|Ǘs{:nL|.' 5]JU5|4f~}h0މЧq zuqABݴJT`|=f~C?E7~?1c@̠uqAo0GLCXQg>v%|g?j~q$5YomwOx+qR_K|8 ع<;< 0޽{VZc-EĨ p|c;:e>jDvHulʪ_@u XD4)l):l]tReX?xI QAqF*! #2CÐJ1?88jsK!;6b7;& ."֓1|fGW.󭝻-5C`{nj`QFF`H<+1ʭ=?~:.N|O4 J\;z};hg]>b=4|4>$$j~^v0\9vd 7ӧO 0iJ2Ǭ|k.6o͗qޜ-0RI7 ??_0d?֮HUEL=|OM&̂pɊ@_;2sqv6`0 ;;|CPsF3R.qk (ĒFip3g~e//H"q|'Ǡuqu‰Vxlϓ|홿hZ9?IFEbЏ?("`"ʢn$(懅oʹs GkQ,a)WA"bC`6÷|ܽ͛N/ xW_}r V&B3ޞݳvW`KX ڼyܺuEnbGh~DDtji޴gBl-KrDQ,XJ Z]yKcZ m2>BL0EVH3.f&K7F|]Dw |ݹbTfDIEǛA]DlATTd4ڹ%]#b5XQrpu]śvѾsw|MX8ĕ]Dǒ趸K r@Fwx\遧_~V0ejAsus+5K^P,G$\1#}OWz JF%me|4|ltُH$ј p*2Y^yDbڵkTg7?P4LF?7+|EPetُ?HV0w\kNqĉ6 eJhDXEԾ4cF37)PoHK%*ҤIfUb:u >-U~wMP:!\W.  P|Р+%KRPYé|9^&%ujtFFl*gכ+ahU2wn9ir~Z(8`&*ѣ-rq6ۿg_7*p<e:-[zn 7MBdKT _gx_q5~3b;iO5S-L@h$gS`Ղh=Xz2ğXgp_&һIV`@8l0F:\:l'IT n߾]6q..="-J{z<;یGT>_ُ_g*0rql9$ gͦdx)7D.5\#}XES?L^)qM67c/0`c$[]-KkGSgpbג扌FWFn>rsX; B`ke"8+m`%K '' 5vL{njX^^ uşmur$ TEQ;RہGil[$ݛt-`ڵiFB& DS&띂jJ\FgFAAzgXtm`B%ܙVd^OT.zJW]XAԧٙ{0*߫3s{𡖔Ͱ`Jd㷂zgD*U0wGƔ)STIcI?}OPP`^?cڴimNh^aڨP& \b`f̘A7cp~>էo_o?7g c7xǷ48iZo8@zř%(W ~޼yT[Kt{{>q.b~ZzóT(K<qSWf\ ŏoi|jT.qo/$l1fwO/;ƶmۨTI_{ ˧Z:ٝ>4]?hz*щwOH<)Uݻ WRc"tOILl/ڿ? 9g|?J)(3a pHYs+2IDATx}w|TUϟ"Lz:)H"^Q,7D ҋMe(e-˪{nL2~eHקחu̸y1r儈eʧmR/lh޸%xdԈ b}ʺY*YH!ڀ[IgV ) Y`3 C 0AAr *kz3yI?t:ҽ`}6Iį2InI&Y Wϟ)#(uS|G'݀tn)W [dzHƋn?UwT2@:F#3/AߗyN]*\ i|9{ Wwfpu{rxحX__PO}gUۂ*aN,|Dא?/Qғb`l3vh9*HźY^Y-Ty#k'*H,CCsQ}N5kؐdfR (77xݨQ#Φ΄G,Y$?][#ܫ,;Y0 `~i|L~*}Ο@@IJj~9ϸ,s|hFr(%%mPMLM) hbV:ʠl*QyԂI5dI2/aaaԤIMOOJHHPy,wb*zZ,Vݬ Tї39ϳ !z._d<ʂ,Xa7pX2Uho=C3pcCTL"4>Z#ܘt4{vyt෎_ T57dEw""ƐH̫QZg@;p;``Bk!'BOu3hξ>ܾu5pvj1HjBspP ҈I&7ȼȷ>Qit=Tet*FW?,* 0\* XFYpp0+sbxV6a1,hY0{,g$K+ҥdyIW%[-;.}Ax_rD:Qbc9?HИ _lATNc#$F`}14 [>߸qcA b<hbb8݄K$MB|d1ȭX2):֙o\[ M_nSD[̃]vF_-9U='D WHo5vd`6F/f=h|Ġ@d;9!"&ņ'hZ;MaWrB *) lۢ9fudB5q $bqq1lْvݡ\on2kA80z%,U\us&0Vq3-XΑ޳yh ` b͑!l{Hδ. &B0@iQ!01XE(S%|jQ%0$1XBRt2na(4R VE!R0ToVɒ؄#:DC d@&2h:j{pOdxmoKs l}}@頉]rD-5ca%+2{?D1?jA8o6: Вl ʼVYw!cL DwEw$k!sʍ++XZ^ .!HCl[,̚[8f(fsʤmScfaIrA3 ݐ[ppm X$ U >D/?}zdһl&2(\*f/o{r~S#@LbHjXρj4ptn"|s̢h<`,7H =!<z I&Gg17g:<X3u}fS9@[Z|D ֗)֋e4̺UԸ(Ȣ`#Td,'ݨfgoN (g}#9.T"`6KaX< :JB!ֽ%xJN_!"j:?v)ؙ6Fy^,84fn϶yDCt@h85X &|W g,}AD %22$>JQw)7֔ {a^:MznJ)m8!Ca@[a?(HrdvT"4hpU*h'U%g5qh$x,><{H%HR \ޕ`ũ*Cys#[#F)Zt,UY* "f}{i:˔+ Ԣ h0EH0T|M \AK0p+A.{&YTCy`Uq0T;EXb–i#,4Os@o&4(#N+W#l2EHk`QD01@#d(F3>ALM#׃YDhtc$ ,J" ҟϏK@ϙ, H12SՊl`; džr! ; -j= fpԀG̗.xm"fj%ߐ [UJRujf N&}`~AP+vSV~'7n(L6"<=s:VHmז7’ LCND8(:T>@,".`M^D8V"(nxw,nNR2 t0J)u Ȧm "t!F: G4P8fJP ͢EMk4@.D'OffOcՐi'; y|rO?XF8(PPoQ҄0cO~J>mZ ЂAA#ГBGf5ה߿N V(8>NIFX?vHvgmu7A)LD_—^n&Q@M+ "e}xLϛ|HJP BW|njH '6cHP,%`CдHSX>^S"0Չb 5 1û+G+Tmk3W#<2<%eryu#-ŏLUrjz Eff` +D&38|@#*/fc"{B zp{f l}V 㷁6ǚTaKm_*aTl65Cz$h.ffyu($&q jK) 6!U9T.A|D;GVed ǩ:H??o >vAeS! *b+e%A&u[&]|W ]<&ÇUHuq ֑jn$i([Bn]{|uД3D-Cf.u x36,Ύp >d׺hqoLi;bMLR;*X"a@z͔ݷ`8L Rj߿AS_ {Sg%"Oj#65l1V*LW/_XE%'"vo'AoL4}dZ0fŲ.C]/40D 40&0BJPI0e T Æĸ .u t!"V6 ( 1Zz79\#7WL >'q#mr0`/OJϞ3`vz @ JϝLj. c#5s t x}6P3!=Js&g$x)WEkxs[[h*}ެJJh/eZqx8ڲ(nytSIO -Aɘ7m%{f[HH Q# FRRڴٵ"Ms܂yHͭ|HKSܾ#|JWSvEV`` b"Da.lo"t^K 0qm}GҨܧ h !{ )[ ":vI΁"gD5h P-ӫ`u >GXa#+t8Zy{ٵdzG"DQ&؈vؓǩh TrҨ?Ӵ1~ic@GDR7s %p&mrG[%׳aM.# 6 =TGO's&yKc0kf ug; 43ֹ>J$RC6|)kp<#@77!@ bss7s >d.p~NR0g\E݊w'=B  tel ><ģ#K*48k(y~~~||{1iK(͡kV3Q@O& 9V\HJ|y1ur%#W|gJN.@|¿G~";9%F$OaQ dF̮]Š4gR=T0D Z ًΠۅ&yC+]@ LF|Xn2xd*`wث1Կc10c-`< iaF]k]_[k-C4ЈqtSvƍxLQ 3~_cɈ Ax%)̖BA2nP6&LKJFrgl5G(#YT2 B~lRFę=-2/J ΁* M%Eu\FW.ҘcԄ5Aݮ#pX h hؑ@wvѰnJXk;X-Uv'mڱA;%S[=ITsbPÛq|ڄHT>v]Z$` fc"oQ-76,D#{:J`4`%ՋgGU}s9ɔ-<,f Ez}e\mH{wkBB}6LMqt ų54Dc4Ϯ 4R*-ylu9μ/.T컛fXvi,7# x j%NXPW7 |52 $aM:apⅷhd1r%4BJG(w"o{8׶'XI\o˸p:AXS!*y@XCƥ d[P}"EЈ oijHUys q/I#[IN$A!'G$_]4o\9wfC/ Us"ynzGFN?V>/_.<1A "EŏcP!2- $ځ۷hWv~⵬ek [A jTXJ0OUf})ig\vkj` >k/I><zC-@߇'zP1x11\KC@h/ٽS#"([)&و,b{ jM;Q2:/>VD,?2af4+Dӿti\Y/<vHvIreDDQVȐڭ^('BXD { hpObJQGkS`/%fV16*3IUn.\7%cJFO30Zq S_pd-ȶ:B}g]@01ӓҠGwďEˊg }:UO=`f1P mLuLM)L.{⸈^b-bqGk]|T85|"!W t|Oo~qrG0_$6;Dxnǟ˫N"jz -0lx" lY)$g-D_]`Xu%=}l\CQ;SQasGɔO /%)-G@ @΋PEvy!ty KJԚ?eY9< IQdp*jl"O!x]A0Xِ`ќdO (oiW-_X x)GY[x uPH/ B|A~|(l rmKmۆU-`_+X9OW8O*|nw >iBTcp]m>5%.쉣wvjF)8K/~ B{2Dg͢SxGcEɹpDžS /5m8+I#g.pd+bG je1">ͤ~8Ąãg{zA'˗QLҳٍP{@_?QO} 샔b5 ܘ cdKj.QD' -bǚl-U\wh@$/732Wǃ@^!,ٌ.i@Xͦ4ϮV#}5->k'%.VvS£(<5Ei2 $cv3,|}oa_]iגa|>w(h6;s9|*  $6;浾[ >?_ؽFWVr%Fd1I6rj4kWȞ F}S5+&Y’GjX B&*7S4npS!cz+_^ yɭZj@EgK`$_( l6/1XF_hVg@CHf9z&x%"e}UV2aXqf$=<~%j?Y I)Y.6䚖u|٬jb@n`5q&ɧȧt J$MGT* ')m[ vp>ޝT9n$kDZ)jD"L 3>K;]~=+.PbFB7RCr_~|JmJY!HA/X>GRDH`0PZ6qDayh»=.7_܈Pjh(*z lG2AD׺bCiؼ<1pQDvc.%$U6,G($T<9iIZV<^4oLrݼ٪rOMS'C aHjWT4OD0H%l7bbWG Il?N L MԙO%@tUD Sڶ `r. N^[\(_ &?K4@5ιx-FQ/hB'i8Zd8d(;j`E[MP.ARf4@+KBz"f@` pU)"Zk|`5LU;:$͒0BY(KM .* ؎k?Am\p\Ǵ+|x8F*fj+̍R'h PF@tuֵ$m XZ/#S XhJJFP1V[gJ60Q:33FbƠ \ XB$Vf& 8rD__"=MK#5OR> $V(CH]F}B;{'5 )½N@tO(nVhAƳ`Ac{R*W bPجIѽ?@I3â?}Pf[ {'5 V@*709|!TQ)d \:.#]Bbf͡$@Z Ƿc;b]F 9VaD+ (.v<C3PVț zr5`' 4 :{:`6@D5ҲHJvӦhGܹvgƹa" "B{^_)Y#DhJO&F%W iU6ӐYr:Gg7d-*_*;`XfFֳW^3Xڟ.8~<B1[_Dj`SgMJ ط_v7gݧ<@)TЈD*;]k^{ Iƞ:nii7oF4~"[-z&ǸdO$x."V ĸPSl\ W +سlf]Ud~b"BպAt Q%B݀a΀[HI. pHct-hh7e y[µj<A/}=ޒ#L ?[PhǠXZCGha{xˈ]5' Aٞ8gyBZժu1}I}#E=dVŝ{WGC=?CG}=A-1PW&ݧOh7on](XN @I#Abx~ ,[] ѽʖ4!@>w;:^PRݾHý*pxC𿽜DhUMU ^iD}  gH1XAc 0xe c[oWcd)NseܿW2\Bgߦџ.$ҖE!׮GxXKsad-bcѳ2gQC AE/2q[ǣkt@Xk4Uه6 ̴ʟ w%dsB84E!7s6`p1ݔ %gkcr8+(ҵYͻqys6@U1sɨ`"c " Q>!0<\+RH`_Y8~Э7/su=Lu_ i=ʑ/9RU tZZu8&ZͰI^nR]dFWa pHYs+-IDATx}wTU"Tխ[9v@w 6ؠD %"c*IbJl]wݞ{[}R+n:syù/7_;ғ@zH4# H =H4# H =H4# H =H4# H =H4# 5>8Y;v-Bip虧?ao#pتw] ҆]:b(?z[~{*j>#Hg2f`NNfݫdcdx~iHX,л]b8Wdgݯ`?ݭ}qHqYB_*;<ԅi"pbvF>`SƟ@b0ػzkf~I`8>g6,_E? XJ&v8rRz1MLUn{/Nn+דҏe@CCo f6+A3SL11G?Sp^=j^"#&Z_(ɐ~7ڊv(r9횘@` wWƯ0mf^EUxwή[B{ߣ^52jy#ڋ;B.F5T@#Yn^gvQ\}7.^p3TPtq5]YnOSԑcNR}tC5OZnh1boTiSޠj#vNJ;N#m()!^ >H=ZsJo\3ȷю@w3h< I`(d4h%>NF8O`|}ns`H${n">aqRuNZ@ QM$]E1ωkH2PvZDXZ8J-}jڋ^fS qT C=N-Lrqb` xs躇_O"Ӕ> F ۚ-Z`p; 꼷Zex,PԚBT] Dv]{1&zJet)rE]ߩ#5zbW oߞ?:MBkKgUvzQ*f1)h1Qh^UXeUs}z XO\+U3>|;6_AB'D@Cs s\d{V1Ͻ Mbvt9c(3Hϩ[hU^z2$ӡQ'fF1#{o̪o S ! h'[(49qn',D ї 6A_tG /T y<|5zrip/\gе.H0d*O@C^bgLރ#C'4BoQ EtQ{Tn#\@!8eoA!X?WW@sEE _q4y(W{(-7p02>&DO03"׆҇ ^Fo8߭0 {!RL.(LzЃV/y#Kej_w$5{SH VX6-"!!ޙw,(^nפ"'AA9*Ƈ_8!x!Vf`p3=0'wWFy#|> (xPBPYr3Y׻`Ew)0/Q*=ɫT`d|@ĸyb;I؃17hM~%WL(R_Eƥ*۶Ee ?+/9_W3 -*]?yka(|8,* uE~Xe*5b!AQw(椋w7;FF P 4>|kcQhwL]D3 I#U9ƯjV[Pe H RvB\PHa(~DCueS@NUϸɰX`;g]AY>MJW0@geāᡒAҿ/ PV]2+֬;$[?dQ[LS~P3  eOhAWQD) <$X`#}b;";leپ1٩3PԲN^[L߅ʈ4Z]a0$maeAdk,p,|:w2]AP4;ʸgJ֗м1r&B1K4և8lM|`91z#69+PB }FhAGk>#˺ō7zFw(+;&ы_@niQ~Sf` v4aiR\BE2:>oW&nsq0r.RXŨKq/QFDr0rA_B`V)4~U8QlCd`0үtV.>K|:: t"EfyFt%<|Wx\y!&vT& ϵ˜Q~6uqLf#UֹffʅDEo01\trW-h3kB0 GcM3Ef$ ù|!%y~WW9ͳ|e~6{}.+~+&@6꠩ EDk$ q$`ÊK? h F\/m#`(}\êyo(Xj||R`94 #^i< Ǖ73LN0+"b CtCjT嚘8Q1Wt$M,Qc%m]~ښBC4 IO G! sتI N~-/vJD VRj_œh:(d͘gU+7V,Pq=nc|~z Wpv 'ts5<Aɰxż !l_{GP8+v;r~eMxMε HB C&JH⸼MRJ}YoD^ULv+ <WЏ1&)7H@%0`łKXHS˲r+Tj8כzd*߉,4x&{W){4Wt,nh,3FN݉f 0k2@^K!aL#7Jl x,Kx5ؿ uIĊ*H}3z:uvS? %(mK]vCkT&&)şkyd[B{0`@N\[VDgf@#[#b2Pש Dkc@ mmz)_y IĐA @M6(}gح4I? 0p.%,Ty t> 6L5PuE *:hɕ2з.:+/t DD [O`?O}`uaSfU.Yk6XsmI g#"RP/ bq/dI/TW."L qGFEgXj*V9^fSBgXĉ"a"0zNfS:}YwP}h~($C;X=H2gU&#tVa$8]QL4BE aAlu]D^0uESKHO_>S"π= }HY!M|w2_;,S$ z$Լ3;xMU[D>sdڅ(?0SF-;RP;N"xH2AЁ+#އ;V5KT>zީ\]Bf!1bOwz#v##͑\1k[l~$~kko4! %#FP<|s@Eٲxj$]}`9Oj_D/"@SWB'7BnBʆN'H*EF1 >E~".OtBEMNrO d̀8edh*bڞ%d(+͚֘C&=$_ 1ՠ}dN0&u#Xx`}-2sqVLq'Jl7$k R@)M.Gkf0AN(!od8@gUZS5H"(ϡ;E}w(t_9)& vR|Q_DXM"$q"d D6sxZAt@"I<= Aɀo:)v"RGc2ӹ De1ڬa6ƹxZWE7 ,5>kg#!WrI九f_t*x/aWH\s0ı;#b(4*60WIzw;Zkȳ W+~` & E4v񎶱dr&a8 -}<.6BF-x .gh-G y!? ;|A<]Ȋb;q=i OiU|q ^sƹzÿysueuQIP((8t"06KeRq_aϗǡ`v_IC‘w;ڰaS2& 8 x, ;ZhX+' ~Q玣6#s!qYZ 2HCdZ{TsD|Xr;dDB܀F9 V(Y4rdF˽LqAf3L#t!)P6 @%0 V`jQĀp1ɚ,%CeggQKp`J0>B7zq%v7v}/-8 =EyM|Iէ-^:ףQhs!N% (D +t9Ђ˥qpN<` 9%'91JuʣQ*PǣW5cJ0 @L,Ԥ`3)pN'7Ϗ3hP?&p}ǧEZ{5ks<_`en6g%fp. B+5Q`D盔$,f`ph`m3p-7en "6c:ǻ(`ާs8"賊Üb䆺?=!d_ywL<> 4#Թ+]oǩ &dK|-v ap\lef|k0Qx-=@e/~VNz9F-p~ dqZ{~$PR(؆2p鷊ve3ܖ%]sG[dl.^hmΖ . &?p^bcg=#Nd ֦ &äH4bfh  *䬐F=(Out̟(/ӱr_sAXQ.~SE4)bqv]8bVj@˓ !c6-5 ۋ(U*>l^e#SpHH}wrsUA>lw^:h=_Ο\~uX*uUu O%&4e'+&)CZ9$pkSe 6U!g*tcVx)luuVT6 mh=F]&Nx`gDևC@kZL?9`#cM Z+qa ʇ-yLZ2$ v9ԱpZͧpritb(x*,c* [mlH_ zwDx!zˊ4'z ?U]}AݰC8, `i)\a'8Aѡ_l-M^bM;GHa&B7@.Hˑmg 1z95]h7(E9N=@IdtrOlHO `% ̯sW& Necvn^l70 $Cgga j-Nc D5YY/cLHHm!w|kVF&~*?ڠJ8[?C!?cmo}pOC$N}/IVp:%dd`M"3aG<-Rwt1G1HP[ up}xgw & eaۇrexKx:$zvG`տ]|_.PAI%w0[M!zg c[8d G="_&}ط IDu3g2A%*4Ǘ鍀{!w\!ߑÊGEw]\?(FN<,c;՜-D-Tέ@rx­e,YAW !2SSl F2 щ@m0@bk8D6N6)}OeD7! 䋿{=~[(3NO޾sU63;_zq%>P%ZT`7w( 四A'ގ,~;2"C[ܷ/poBo_Ő{B!FBnAae?I0oƗ*Fcadf-WmbAZ8+$q6} pU*t& 0\2;o+rdP^WVHۻM9?cF+ȑ B< kn* .`b*%ɔq̌cl )tIV ]=Pw_>>Ƿ!7#b|}lrX9 7ɨ?W?"yn U[?@j/N^ 48 GZS( 2 { JWIQ )1*SܑE pcZqoO|V#@*E^N@!xsgǢLzaD^íY9M03T ǴJ߾);|ϠUn3Ghu"KYהI6h\XYvXE|6@-g%f\~HHv@;j1̰ůBԑwgȟyr \C[;kbͭ~/#CBZu= Fص\~9О3*kLpf=P./ |uʢQ)GVݬ шLowD." ?oJ+ྚ"~sk W;}_W8A͑<1g[p8+mJ #ʇ_1۷eG/;پ"pٍA_8BHI| Nzh:ϰ䍩!^;tn9׏Q/'y3%q=$P>7.C+FK2CYF+z| "4J.P Xޔ<)C4/SՆ [ܞh=̪pNʨz,#:x^2^ViA/ڹ ޾_ aѽ+{](\]82*K`V >F)dZa.Y]B@N~VhԣkQu+(xUD:p.q3 z 7xL`˲? |ޙ {0'B)*W2!D {ֆgsD!xSKb`VTGHx5^@^ @:r/sfe g9 6HǮ룐Owgg.mGV5J=nu8V3c"#CUHt#XC7|>Z rok>G?kD*k` MKM% , ^HU|;;@Qj·y{xqEu8ml4yE6nc[( e5@{^7#ëwyJQ :}iazl ӒwyGJ|O቞_s>}4'tY}E xnMc܃yL ?Nl_? 0ѻX h^p:VmEkH1^ײ}i 0[2Cԟi—BLa pHYs+)$IDATx]wT幾^cW3 QĆ""HEij%5vT"+*E`ѵfcIL~̜ٙ6Dz;sy-+wW!Pz%VU"@iPZ%VU"@iPZ%tED}zydDSG`"k?Oz3Zi@;ݔ{vj8O/z`Hqs:/i~ W0F֡!kZv[+~M|CD. <[l) MOX9-gP[4\;# ɀx?_=?u}|5mCW$|xFve]fu<=hۋOVuh(O4\fyK5ˮfv= th<|>4puLL_l[p/ʡ׼2j{u8DV{îi)Xo=ulȷ=8pd28e@54;6\-sTKqv CLlas&O?6$p{:Q dB2K `l]n1 k"\W1O,&q}8F;L6?`'i_vͲK9 ֆ@g0&pG2KNUerPw,?XNݖcYӃ60H3GFr?PvXX&2误TR{;/^6ls, I r z<5ҥSMHqX bˁb ~wm͝SScTO vx\Ee2?ZOuD 37L=?SA1b5t95ٮyf]`g_c #,E@4\WuR p{ΒB(FIژ$}moS'?"t7l.{NZ~H'Cy}6 -_p&˱ד]A"=6y?bf,\IgjU U큄Qݚv5 ~'1^k S8al>j^[v T-; 7|yS@+km~.j*M"#7F>K_,]m ڻ*sf7R? :ic̀u?Z5^4ӽ}+V (KU] 7X]vѸ1 e'c Xyyl'rLOaAJc>r>׼AI5l(ܼ'Xx|~&Du+.O4U0;M8t b`s 36Bw0-|ULbX^d[Z i Xo}fZS q_ai5[f͠RY/t0` ʶ2TJ!∗mYf0ѥрXTH{ǵDJ7ܓ=Ѓ7i0wj6R0Lor4pZ{04k&?X^84^ae >[m^\3z(/G#&''؂H7=I_>ڥa>ޛͿL6g9Cw Ca dD3[hyfA9n7߷]dpGz <ﱁfHȊp>ȠL~05ŧi-~qت )zAStrr "N7w |7 ~X .gqnc ttrǕcÏg(yx{ kt/zU ~Ѵ?; _o5&E[GcK Vd>D\. !JЊVs K1ߦNҮXor)QCXly` ~l }'jJy ?ٗ5GW- Qy\3'yu5݊}Nc'@4?pFRQ(&&3E8nY*nCGܰU޻_8F:w˳r>;goYT)}t  L?MO ?kXp瘅GiY8ExkYjMq>Z~f ~N;*{/oح0e٬ձŅ *}>~^^n$тSceTW+$?ߩiWp`@3w }gP"Ь 9s:BS $mU 0!@~wl_f0ۺk|R`>֟_$'#QR%hE&5uuM!|#N~@xXi[ As[u%B_f<>*VS} Z8-H '*(z˝J 모zInI`@3l$``3hS;8ѺY-֊.kbF2#%x+%+|u>v[iɌ>ۂ@6T2 \ L&BЇZv7\ni@ z{+ `7ޡ `G&G*-3>AkJpbKRE+ nqnfȷ{-N vlZ2OCv]8oVPfP$B%<~#uٹָ6:E!M2 Ph #@x"dsD22h+qLDK Arw<̉~Z ҊAy19['m+77ȫ"ܞw>@XB:jJJ Cr  U/aQL^l"!qX F=dIz\Q ^Z6'߿r[4lLeݔh=wK\db cX]G*ԂJ=O43r@ !Ȁԛ/ InGfy-_quKuܴdu$w5@˷Icwȝ"3$L?|,p q('HPp8@4BM>m![yAٔOΟoޮ (Ct9A2 }s%F$ f+kK`5b"Δ =gB 3@ 5:]vvh_>iП^ViRgWP*Cɋi Xd+Kjg  ޑS(B<=ZjŒhS@Z: BלjI.FsPSOӽ3NET)7z' WRae  uqG1{X M$XQa"6EJߑe?b+3ݛ*J+Cx8nkDԤ?ޯEv%@} ӤO_P\ j% tq RdpG\=)ic{D}Zm*:}bER?! (́CtġQGA}X:5ڿI|mxAA,x7w{r 5bm]@q$@؎Io re&xc2y~IU6#B'klYnmOU+J8#@Q =?p.sJAmT8E9`"ceTi 'wh~*_l]uUi^tչAzeCnM)j}#5VHP@4` UeB8Y + 'x$yU9-%fo$}ʩAt8x{rvzo+ny!p8ӭ Rm?; Q#9Y AbiRa"sT tN)#TW+B?&Y`]%h@oTP5O~x_?.73tO! 62p C ̱@zX s}`Ǩ /WU{!@F`Uf(JL'`n^8-"A;O'zn âҳC AN)gƮO2BQtyhZl$~r, ߻.54;M#ο[T+Ayh-9n3۷e&sѼSr&70n[ׯi @Z H.Q#i}xb sFs6@Ok=?Su"8  - $CXf{ jyO|.E?5Y>Q_[5TU5#;D k T8p&`>W|8H\(ky/* lPF/w0# l/k2C?Oe^ù$S5. }. m]"{?~S4u>AQghYH8YL}3)i_ENSm&'ͧH\PS U>IW. }t>%> N*)spoT3(hBc5}!e0!`bKl^[$ `9ezg @q[ʘn]nǻU0PPy_=O`|!Ǿs6DX8G4p꼠ΘM`#?OouJ1$e}a:41Zbs(3[!X{7d߫Iu!.ޏc,j!ޣ}U@vpE1MQG\@+uQ&FG%r2T 0=3'ӿ6@4z9@n{|L{(= 6QRVshZv"ș^"޴S3e:T61x|K(N3wP5okj%@|G"v؁; iܪ,%/J3RX؝PVa&KxE.ѳN\WS3/_~rټzLr}LuR3ク_Q؋,?Bo5P $;vʾ'kiuoIb^oj G#sxPayѷ{OK˽8Gl&F^&sVݕcg7u !Xy_Z `[ @K;V"ElJf3b ᪻"y\ KܙlA@L[=v *dz WWI鮾Mru -YBί;;7 <{tq'QLը&2x3\f!J0 Qݢ `^z9D%{j\LZ16 Ǻ$oUT$b|}i ysC}.DGpn5- tP/`G@E]`7?n)7yTG(&'b0iZ9+<*CP>^琓l[y~XҼ2yj5KTjF>lp#?;wGh  {8'ؙ`iRF, M""\YHaA*\W_,#tAHs٧y hz(*Kgč[iC P~dIv$vudnn+R> =]>ΚF[qCEz- e5R74 'hCEi: =ha7󪏃)N8Eԑ_ @1 ?r@¯:+PJ“ LR TEZ,IzQHAȻhENJ{}BZΞYKAY4X_E XDL PQFgJ1RIt&bdmgyywlQ=fNU&]%:0wגu\ٷS 5)8s!KEanzx) J AAm58?UGr:qnZ=fM 9@U-0Ia?^jW. ?d&`!ZG̘ܧZ+rxTsDڻ8zt/`~Ј.zsa9`Zfؑ:jmU"LPj`+NR2GPntæLtZ5L N1&+A`}AW- Hs=A/<7(~?Dow8%КfI6wSNψ ]018 0@VjpCdpeHC %3&}!+:/"] NAp̡!"E>ު)DruS,#O=5I3⫇֜BaOia.hMZt[_Z,Podr &/LBX`/?d-@ңG f?O}@gjw]N;=гrbI0C%rsRNu1pLWD)mܜj_&@{q$["3^pitjőox=A/q6hٿw^O%)R2w^+ߥ`'9-_h&!@`@(@|@|*x](o!zmзT.?K^~Lʾ+.Ki f|[#=e,5Pc Ar,lZc9sCr={_?ImRo%}!>nz_]$FT9JK¾rá2cqI=iϮ[0ix" Z!@uKdNDC94[/ ^ם3杴+?nE{vc==ic}.^n՟U$v5^G>PbQn66rAgy|r8 p*XC|WtN%7._1|ܘ ЀO}TK ]>G45"#la pHYs+LIDATx}wT_FK,;K[P,Q QQAAE*(1$SIbL9y93wfb~`gs>{n^?㇛?Bq'ѿ~0 dEc;\M;gNYG0~0wG_dt'*LREx {U!9N%CO+16+@$[cȐ&/ъMm@؊x Lntso[ 0b ЋvͮMdo ҧq0"*(|d<8,J<ћL *1&,(8AewK =ÝiwH1qht$|k7]lcBGGcv!)3 8Ԙ AqZ^)@KܩLwÛ<5bzPe)H7 2zc 74Ni)Y[{;Gzmy'{dX)OiqA@8Hib[ pӚw& mK_A㌠qTyAzwXD߹Q-iLjO, >VL)UwNU=26n)`}(G/R,~7hʋ D0]#qQz%lqwN10Hfϲ_e{ZVgL}qhDƇq0>@'@9 3C&v-ż'\q;i=*sqeWnbwnJh$ZoG!sT %b󛔗u ?]S%e f.Ptlcie@j|>ѓ1Ar;}'Hi-31ɛUYsr VUƢر8j&|wx_Dǝ#QO)Ghדdټ 7׋a@6>sLjӍ/I33#݆(1jZFL7~'#." 0yYO㴠3)_)A"~GkUTb=#d0}Q۪JG.@?q[0.oT}_q\t7*%P1?f^JFfSً\UsLMѺ)/QƷs/@1_pątMݦ-5< <޽ց=f`ш~a/3^qFnW B#Ab nVӌ^ޤƅ+7nrP;: 'H3qa'Tb(BzVJZvTP>H&?Es}PDχkGZQ7wYt']8n:{]"`gJ5+e'?HdāM^Qb6?|B;eo [x*HV҅ zR3y,-5=ԠuvVG\ ],3P]?wUoUu|_xͼHO){+oPO22Ci4WҹIw1R3J|P qEI:c>\7Vt="D -#_B(Iv t; Eeޤ*f>KWu_+nв2pûL7wȋt-ǃЙg,/:dnߜn>nf:wgX@UR2GV [)ORS<۸xo2`Ck"kV'k^}ק qz0q" .+1ZPdBJܤO+;&Д+ >JܮmJV.qaMvnNIԊRF8Ǫ\<ۍ7qޑ-0}vH0JMܯD x)+Yb^q>ՏM%t]չ`A+K 4z@ ¹] t[q^+xEB_.qmFs`,@{t!їӏF2%XFQ\BrXQ-̽9n<bu`4Pd7\Mc=gT0AuFwrU\U(Ms4hX/Zv>Ѓ{2 E.!>ǏgZuqӍE/"Of H!b EcT1/ \M h& TK]p.(%0tY f@Oc&%C}T{r0V+S{;_uWĴa^!>o3XY?***F/*skK{@P|C6QL!G7 \$`!:ClesZ)k8Vk2D(Bs=T6Pq!=HN͸E*;QWD xE~gQ(UHKxA{ŒcbT?{4;vF 9;d,rܤ&cU%k[]8%+ަҥ b vrheʣ@AqRd8y ޫ2_p] |,/M5y>CwW1׏3f+Wy$ 0\.> @iMÜ"#!젭|qVj6ٌ~ HEיkl\ܛxJ׆N8zŦP^x|ѺC2ewG@e 'iơqk-IG>nq`iw}7qKlyb0y^nE)0\b-D \H? .ppkU~d!%du! AN.^or}Mdw)(s;ׄ?_.]Z;x\}eX8_U` pHoZ(W(\6BB3Nzo 6p)QusZxsI8`n㮠+?A EFps,@y^Bqq FTL{3_]N)]0Hd~iPkiBBxFF^wŤ<Ѣz8HHi8_H,iba j&W)04%VT. 45$كئP/wI΀Pa\MnbwCG4ط\|ޡ~g*R?g岦"7Tлw @+h% 8:,UZ e|kI|VeH@:PR*n񍼧`:'*fPoFqyi"WAx\rkwk?O4"XjE<̓7tY}͝o\Ie3V]ۣU~!KTpóMs^vc0jƣ\f{%Zy\ht)0`|Ml_zeoh=Ay\:dj@4qAYz>͐hihC`GXn ne|Js! h")Q)ɵB?d1+U>m-ZPz3UׂjոZA+$A,Ssݍt~P{G])TtVsx߯;1q|Y O_\qR:Ogp^% FuY$pnrBP5xbvʍ{kO3G83I f3un5 `hFw2~K2`~`&WZS7~"#3?۱aZ?߯bq"Gz`hQiW,Hzó vjF`ɴ E7%]sCTJTylWiCd|T:ft 0)m1[L`HymFpk"z. `(Fg'}b{(yDfrП<#⸇f ?>UQ`U߿P, "}9o/0*<.wF5]8֭jFfZ=ޞ%;z;N7gΆoȭRz@y.\r ~?[T 0 .$|CK@oE.! `*[UrvN1}W7OxKWJEN^ѺxAP8?F %Ke -ת4CW{&Ý4/GhhCj,3yZ7iU9SgYt7QW[Dޯ*zs 5C@Ϫ]2M- 8u0WN bɘqL̟{Y72PN"H O-G2@^`4zxfWtHP4dnޅt o@Pi`SrRb:߮fB9@?^ =SYU;RArU(=B8H[Cx\=W^Hf9^XwmX;bhF@EL,rGN / v ##$C"F _6)Tp 6KҐWi$/Q?f"!@nb1-҅8_o p/uO<, Ȃvl[n9.8yŌ^|c1xuOs}])E״>+k?ʳ&Rz-*uK`) 9ίHhҪC||?/em=*fwQ&ָu_>R Z5vv_L$bγ>@pr#)lX\t(ޖ/g-c>Ubyvyvף'S͐[pZC 4N X߇qƋ A/pkxe&!VEEGjO՘ЉTd%O_*a]nŒ վPn~@v8{ qq╺S@ dBrG]mΡ]mKC]3{NFV72 xi|w ͦ\"z|Zaxmdj0 @D|Us'U6~K-S"U[(rC|lTѮCbŗ-c7o_ սc,l^e8eG|B'lS # 4wt#GKim!]t4 OpK֏r .3džF8*0f2n3䑲qlȷ2L[ĝ5-eywͲA(#yJSw($X¥)g-*< fَm 66bxUY.B({;Cfԡ^z]*}0tk]L4)5M#/;+sf2>Dt nA|[C\ :S/ t 0* )}y,fX |]fweRO@&n#*O P8F!1nM )56``FO`!78XF2U@Wq;)y)Γ{4cfЂ0^Y#J|5hZqt@Ȟ٬cI~q hCl-2 lXx-`"}h}{GȋBN* ΋kQI` #fg#&Y3|FqQ\J.&K 8tTٲ 4QPY,Ê}w3IHN"bqAWhOW,q i&S) 2/U _ ]s@{oɤFRMD?b,~S`ӡCtnŻ{i$*(EƳ 2 |D 'w>RrO@|4"p$g_,aH`:GIDPZ0MX|1(#;-M?Vbl?-e^(}q beqb'׏Xelxt ͡EO6qX, jŲ nk1` 㱘x_O^.vj 0̙B4cLSdpȀȗ^*zs2$x^vhTGyDl;OI#ko(e掿xm9W!q vbR \_u/X5Q[T"P [YF :wޡ4-ޛVF8$p,M)3~AW, ,=ڹ<3k^q sŊӶShxҀ, 7S\GݞBTzw)<]<3 B}l5@ 5-u]2~kQ)%f\ aSN^!\:6]XI`xFyTM-6~qyowrmR?*f2ٿ =WFŪs$+17G fűg) aHiOP@O`q6`CXŮ"ۜtgHi<Z(@h#DhA]bXK0 TcAJ^ !`g҇XlMW>m黒 _,' ♍Y3KO@}3x@]D߯| KYsEFBA7#$ܺY.Cӿu}hYJidT @QfKq~4fY-lzN|, .(!@%vrOa6><.Z a,5MǘCcbU!ٍ"%^D6EuocnQ VF@xz `x IҬ<$E`ˇ!dz %f@R.tƞX&%kpB *`Bd$Id&®trUR^7 =DGEޣ 3qvںu \57q% ;y5˞㊣e,A  M; 65^ Ǧ<k{4_%A0k{P|6WpYmtKkb5\A\E|>aܹ@nn¥ݼhljb.7ˆgz3N !} N+EKHN'X`8wNSHWE%39:Xe]5Ue :0=õDҩ>\I|^G(Ը) SJBVOUn I%Px $ot&.V9#/}d"yN,Y+9P(ax[e02 p(` 7 ̀h^~{⢚BxEƇ"81?/@ 9) NA9߼ueppY v;r\<o~Sx62=Vs Ts`,z$W=xQXVV/ss:{*T+b.ԴrfH@E㶋GVI߷Dk#ܡ/:V8# \7\V#b`e) dg\Fg+Fn^yqn裲֩ ⿝x>*},? MLR*[9]hk}nCun+Hqf);v O0go~U?da˿oU#=0w%zup8 qUSø(493@KTg0p;j ogi@F7D0i*-,.N+5 .߯% сfR>wcw4![|'[},(7{уf1y_z %P?>P̮ @_*6XŊ62 l[{lbzF*X;% @XKÑ6p{ם1T>hө 8]j^Ft$@#4=)Њ#$kHt5}"TP>>$7{QlB/NZe c!.u8cXy HL%_`5He2 ˆM4wXSbbjEu~x|\ 1G΢r\b7xeA)=p 9WF!92G tXJ.(V_Zɪާ/Jh r]=|vRyKxQ(TſйyNu0y41gT^" \ A *Z{4c~h^vZ\*AP<(9|cln;w1>H.8xABv~k g1? \yޢPgyn)~a(\4G/Gda7ČqFE4HnLt;B^ (ŸKca nt2H4~B5ڰ b},GhC R@d^4s<ɚ~*}8zP/$IӋ%b1NQze `V)@.n}Ο."Ѿ9G&`_K֝qRS~.r`J*8>ãfjIR;A=z@RvF1K)~Pju@{EHaqL ZEn੤֟α?^/U:Nbo=ggφ<l݅l Z!cv1ߡA1Bѹ в3>ӆl@D 䍣,2`&|↲hD;gf?Z4?o$ cQ| UDY hzN*PḂWdS9aylE }|ݼygiF-k b;2%c;`V!HRhf["܁-2n߮.s?Q8 Vk_0/^> `hQ^NGo1Ie_'J..2Yvq;q-djWr}n SxHy<[熎vj32UDAV4U!`)˗"Itg!jAhpb'ڕv5`)yS( kןsїg2O'AN@iYn[ M'` *7jV$&-T?"SEf/Ov d&>'yx\ ^ML`-Rq.SR0k5nO~vŔ&J ~"? s܇yQ"G?-|Zt虬K 67uIHVDRM=6{&@0e,>f86R߇co8T\k=zH϶8NnArZ~=yS(8xhe}=&] '|.N_-atsMl\xtxM/0ed Pܔ=4q$Ų<#g=9/xcGo\PfO(Gѻ60WF g黢 t\JqClPo/#փkP  'iV $֏L@+FƳ,slY wr5~z@zXzZ4Bi-@aOVK.w *+7Mt ʭU^YGp9 |qE!"o~2CXorcvp_? Hx<J O 1c61wh(ch!Y*E&N +5 d?! </PD d[Zȓ;x ofHej몢10`?^G|VP6ҭ( :_~2Z+vuoZ?{A(Zʀ8tźm}xt$EՎ5T^,+1cwK3͔(}u,IxyX:7s*w3Y?pPܟYZVÄ42RV`O$3òYr(P[/ 1_K;|q ='R&ЁG;9?駇s6OTZMb:.Ů]B^'ǰY~}- f9v {Bv۸**hyL+x;77%:ZEc܊Ε.0'IԬιM#<7 x9gZf!"*=ExFJE1̇<)Y.nV6P< QP>Jf~D䰂%cE!⇍'|i3O >ayzф-:p͛M(3[ڑYV4>pDx ҇sjyA*\ , T{haor@xwJCC h-rĒ0leT_9ǿ(|(Q׌Ģ3O 6SE7d;C:J&,/Ə T?b4d"DHV4o3gJx@Fs*}7Ii!{FI:Q200t P۟:K`phX0˙AH_k@:1XWS T0]atFu:7}Tɥa2#1E5Kc8 4tn1 cU@>4IA_0ț۸2*n:4pZ4-kUVV3[fa8*r - < KE6 JZr+~.=w+ z~A{7Xnal I-H'5kRf v]&EmHpD9"qS/a 5Xy $C\-5wb\? ?=w|g?#Do~@J0X՛oQGod] ":ú@3 -{ fHy )qx(m0acta &b0cS߿PUx4Gh7mo f¸+ďiY|@GNw9˕AJObm]J OJ4)1ؐ fY48.eT4cw.a =gU?&*.FYY3Oue!zRT//klKA^|;3VqsxȄ?;*s)㳸9{v`gPyzr/~[.SF'WDxUHQ?<\W2&~ 7]+Q;}8K,pr,#>DR` pdJ)g`AFa.}Φ{~V 'tE<<"_dj J=\L Y:Qc冗u'a|2C:*A.S> ӽA# ~?Y s #xGQB{DVɅc 9zuɍb [oUK@X@]}y>`&ر,oTmab~h'B o{Id"304e6kB|,B]X;oU?Bߔ@a&F,'c8=ȟ#Y \B@f^X -C[Dw`(:X cQ?"3,!SXb%OKx|FtbP:L 1}dX Hj#{E7?犸?k[\o=25"Dԧp_y.WγX8VqqJ"= Q<>ۻ/;w) LIt@ėlM$3mioW$5r;8?B%|4̄qWcVT0Lp ~B6潌lbTOUG?le DR0;sm2rJX s^۹/e߆{@86I` ЊcB9gM\3/(?(l}YH ԧl(m"#~D8 e~ne3WQn]`|<\0p[p˘Ϸ^a lgg:lT}V,AbؗܰtHQ[""S:emb/7?|dGv[FūVY6B5ޓIENDB`pybik-3.0/data/ui/thumbnails/Prism5-4x3.png0000644000175000017500000003752513137372670020662 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+?IDATx}w|UU {s{JNH*b ы "ˌ:iS'7$ (?ևp>wVFR"4qHhF4R#Fj@#5HhF4R#nʅu}߶nL1 o0B47S#Soc foSλEfDdLLW\-{}!^$Ah.1اm[T1iW~<;yUU ͛+4mM.ƀý@ؤ7a>qbj1HkT"[;CT渇5mTOP@]}x78KtTW4q^\>26>= D5O8;ª'W mܼG@L$`颕_N j]_OL2*M n7A%@5'l m*iW|4/{mk"Tf.Yg '^^w4m`@Sэ71?Qb(&f&I\L ISDkpF&MqMpFaV/>kbس^/Z=n=)Խѿh-6L c#CEYF(He[9bTNsѧE ѹysѲeK̋!RSSE .;;[4[j%D֭yaaa"))IƊH*DvD" 1T"`q2P <]~b ۳oG5Ic'@/Ss5e$1Tjc>l$l(TϾİhI ?lNDkhh,Gj&f9Ŵ1#&LL3ŜT1yd0c&# t}ZrrDbL 3 ˡq@p@24X pX__Bc4}v!AC4hLjS1^`g@ZB,$EX;Pkw1n# w>Ĩ}_}*Bdi4ƅ~bVt(.\E) bvV{Yyt'0v3wێX"vydpThO HHދT_lM*jsf+u 5/Eppx7yц&lQ`M,Q:b<;&-?y;XCJtNcc,B՗vZcraG[2/>,=NSRPr2}dPIḅMĬ'FQDE>=3UL%{[N\yA+F牾D=ȹ+X|IK;wm۶EEE"!NvS 9"$$D[[.-`lKwf6h& ,_CT^r *%̟'Ӷv5$jn,ԿV~Oеvc!?p8GhŸ#o@ o'Tl>b.Q)BAb.mFN4rȂ|'GST:LE8z1-l!9KmOxa>8Z=#k7*8W9Z>m˽݇=iRٙͼ_`Իv^2mb~.1#!(dFQDEӓĬ1=+Mt7uS?26]-N`q>rh.CM{cKS02|*>Rvcq/<R2.U{ OV=7==L65ljkEpn6|)% ;TӴXȭ,iwc _Tp}AD<|OK>=[pBWnXq[_TRrL*nCL Eyd%2ɮ"[8$.FrE?]̈́ZvxlTTkMg`wMl~X0"TS4'!3SҿC4pqD[#DLZSb;] irSL @̫UyiO0 aZ1q|dΏ/ )xݴa*:ϝg_HTD%ofީ)szhM!$Ё6m0x3sСk.0JMG [4i5c dN|"Ww*r9$|!r/=R"8Ϛ o)=HɞB; UI qʋiJ}ҋ]C0]0@a %XHnS# *Zf|S$~$)DҨP1):\%) q,\qmۈEʬ41ͦ?Z2m?J@oqfu LEBB>j&n{IHb'Г&_:@Oct/;TiYkDyJ@@xe>bB"-*%5 ܠnxwT胇LPڀ@&Cg^(#'MRǘFgD0~ 9כRY 0AAL^d ʻ{O ELC >p@S'zH"jlʣ/wX0QI3qD'iUfǸA ~fqϭLS^4Lv! < " #& /M_ 9&iF_%H;`lhQ@v: =LPcRpR7~ۘ@ +`L^+Bk8,i/D(pt]6ࣜFoPT/|fG鯤6ylr##9= h<"9/Z rX[0bN#FAV}%B#m|8eתI "\]G "h8v! bobSP ! WZ8 vEU7p8BBC*aH{3G"f*ʔ* q۽av5p=4Ij\[ ֵL`:CE/ZLLEM=t;9(M <g4s/QA_ڶCli0n9fz(lE#u0v o`Qp?i>Rwӥ]x.G!;CO*~EhF 3AȠuI@]z1Jpur Il)4>JOSR` kаy 7D4s}!Z#@2 yp@i@=NC}#IϿ?5wJSr(; QSdSAl";Du2F\tY){G~/B4BxNdZs4<" -Χy 7F:$HSzuJ5h̢u5t=l;p7r#|0氡+'q+"~)N ]!q#/gb&nݿhRd`0-ݔ_KZL2} @VxMV.03xT>JcT:Ŕn0hhA/ww{1f`/Cׇ:62n9-KI>@biIdlbIbJN*GzOH[{[]<:;h/Ӹl%XpO)p]-1f%L`HD޻yb =80œܠy|ME3|1 ҹz2Jemw!5PB%;eRՄRH_Ӈ”ETvք@72ցDC#6dv=[{"@~"H*;hRf(PTы0lB<}Mɤ}yF.^Qؓ@F7x Pv;MV*>F,I9sHh>ր 3sAʥ8| _: Aja0N۵jλo/ÌWY;o>ReةY5:dZiѱe^dNǫp @Lr۸=HG@:T4>=^a!U<$ l&M~κ:|c*U; gӵm;50~&6?LAQ9_@zC|aHlNV =SMkp1Y`.:6X uKxyJ~Bs;RJeja"!{i hp..`n'晒=E*lƤ&5T!+n^ckԌj^Zkz?U&kfh>pn )!}TI`}A9ݜY?uahd,l$"2hA:e7U{[9 05?0w:O+<h-Ƭ;֔J:,R 59il ֖%4zCΝ9-Z#`!)ũ@l 0ih6t&73#4w<<9\4'Uh\:r*Hfo"MZĊl{gH&8n?2;&S 9mt!WtuHp==$-G7)#zp{AkzTμIBʱϗ}],,hhqC^ԂP+I[XPw{ h3ɤ` k!25¾D]|!<;CE6MلX% q}-ܹ"5췮Q/I;;i&!`f"AMY- 3HBFh h$ $4XrZ4jhڨMk:[*-P0ШI_mוB *3B 0IFA:L/ DX=?T|zLzI @ɎWSǎZW0O=!H"a#y#7?k:2}rlXxH:AٌBHe*h܉87-`K"$}Xlb8tfQbx LXVL@дwS͕UKu[yQ}&ҕn(Iañc/Q` U(xN8TZzA*:a>8`Jht_h* 3r92nkH'=(SqJ ߾&[dݿΟ5q ,:ot. H8b%Ѓ)O>?(vW_44l%.yptx >Tk*\]2 +i,ExD`Lm mR^X.p_%dftToKvW_#AZy7#Ř"Kg騨p/)J@<8ӟ4F|mr9|ҢqUt‘B Md%K͸tz5H  !cv@ݬȜCYOdhvtNQW}N5@^Va\_Ƭ"*o?Gڡ j>=}0YB`Ǩ0#kxL@&):0 Bq1rNjb~<ֶe\ΚL7ѿ?J1іuG@zvsyJ"3`^܈ ?8`A u9?1HTMy\.| s?PO`>x5~/!`6gveG3\60Y$Nq@O|:ם~p/I3ӨS:;Pݻιt]@p0tKG \,tMl0Iш^];go'Yh83zXHA"Eo]2reHn7K})Brq知Ȣc~$m#a8ё pRBMf];o:F!gQ?5}D ۑ=MbC I*> e;fU7p7D7_|Zɽˎi#-D$ 8!$[^0RĜɥbʫݞїk`KN_gHy`KFF@\PmѰpаpxHf'ʊh0`HtJrH| sqo}]4+gZGtW?d;A?[veHݢ!-*3=I3a׿o[x/Hh1@x78rZ#DZ§}Λ""KFX4I_Z"\A,m۷go>TXgS-nEgHe8dZwD)yu-|h/P ǂULq4$ @ u_-d1A),X[2T>Rn+.\< BϋpPǿݖ>(fC 4;U#D*rr ZDIȡO#U~{ X6IuyNK~POn@u`rĐiAz+je-w1N Rh2|!ѯ¡&P8u2uwMRj xV@5@yYo!\ߟU'I$7|`K$ ,- чRcFu"c 1B=A$I;"sɍ24o6.eE;`tdC g λHOj\V9>JWæ>jH^h 8>WW_c^FXS L<!9<! ouI&@<㺛d>w@@N m8FX:{<=%c~$29 Q\o~VLqmXOEXY_&ZX/$橲yfzNLٶ3*5&Z"~Ν}"g` +O ڽG vx\yv.H6Ӊ0Ȍbj!Xvʶ`2lvwq$4Ax>}. ;)Nѹ_Z3x~flE?=gW$ЗA"!F:ϺYכG/>[ 礐 $aCk@p}lA-G`os"gO_w Z6 R_P5/KQ0!\2V9(58+ZQ>:]%AHR5?o Bn'rXC`um0?[BD}W(ƕ@.,U^' 'e`|@2 Wj`捼A  9#fؖM"KY^fB̾I8"]2T%9SSD筘:)P0v=N2mcUeCEi4H||!A'D]Q yj6E ~2gO ҥǥ L`!._.[)EFz@B$sug?F87m+#?~MZ*~hwf7BK, E<ߟeWK.%:3缂&茒7 icW*Aٿѻw ky4rUx[䑟J&IWT%BMzlJN@# toP|PvR{u2U{yaۿmm+ :@aH@G+Qe0B0٩I#oT[qE-Gz24lߊvrg ֙vx5@O`bQjƮ[{ ,a3J@#:/I¡:P]_EzԮU~O<.CMSZhy- t-ؾM𹄋 E vD p}1?HfiJhEF.lpcK4AHc0%NQ^i Uj=t&dˡ\>BQL80Ю-ԄTUpPd"Sy_i]M[ɱiP󐨔x_tZr̥V}: Z 1e\GgDY}7iڝPzD%89TC"BTLb L:vDhݛb%~dQA,}͂c1`j4>K$;+UCo_kjy)u64y@vsʰ@{ļ!"4X q ^s~5s'}JXartbi/ĿP-GAǪ`ܩMڽ tұfB 7&iF-fA d85![l ҊR>$S3#8vھ\n,XΞVpp;"innՊo]ΰ6ʉtnWC iEw1P4sjZ`i zkO 1^jZU)p^_l'$]+}_<%X|rIyX (!OOsQg\m[J 2K*Th4E -n(x`ky|Z(\gҼ[(bcV9i{X4.*Y]ec Ѵ 2_21=ڦ-Ax39a5O cO泂IޭiWYNk0~sL_K zyjbJ'^"3z-s7?okV%ĤÍJc4f! k$Tbrxe>2]s˖ 8 $/RśC|BkyY(W;ڻ1fTK惐d Sj0wlBw"xb=ʭb&`((a'S3ҹ{ |N}yV X0 ͨBMOb3+2т,A>o`3bHѻLwc}mO4ct%A:˺򹡵@Z얨sX~z0 Ջ\<4ކѷ;n:PD]Dt- zKD6Sldz:l>1@د`)4-Ascwe>蝪8i,`<RKȾJfeb t{y&)!r:+9Ӽ7QVE/_4JȽ}PbxhJ`8=9! >ѫ'g4[%p"yKv$d>-SQ@m{Fp2jT&3[),h]Yg;M\|6FUr-LoZFSJ6] YæR Xœ|X~E#vj-;nc7w.U\C6ZIƒ%ZY-5~$r ?XK|zTrh?aTw#(iyf mm BSdDQ{(y0Zh p-b if\0|JT%`J)\7?qqO f,(Y^l(9Na#k^-q̘!e`nϞFx¡48ԑo:n$K atvTJrRXŃ=AoL'48ek]1Y rnFh ?LaȆ\ ;GH[|un7 7o !f!Dg~Yᓓwe_`>p%Luk =};L-DZav =Ne i1PSS`ښ:s;;cux1:َ972|}7-2dU8 S?BWїޫoP`%|S(zlXo~mE<0j=B=]FSϽJ~FC QA!0@@3 pƂMTn6+^Gɾ75ռޜm-s' O6)6c_fDjX>;DdHSLJPF8DA,P-, 6>30>}>JO0O ˯di'X!F4pN;QzZU ȼկ +Y77!4exMd~Y-ZuȖoQa r t4͎C˃g &>X#+@$2 8X=?!=qrz2YVArO[)S={R] @~$CDR脂ݯe%d88VZMy<"*CT8<@a\# §L*:V`cVA`FQq|C&_ɶ-_b@[?rfrka%x[ܗz>mHO&Okz)'ΧwwgMdMǩ(&P,t?ܒ)A 6/%bבR9t?*f5kmbug ;a^V`z88!5vs @xYJ(V 6q PџS5|a>B-axyA'z _Zcl P_ {y4LBfwHڅz-Vk9B 2c. HVbd%5=OUm\w-Qӷ4( e>Hw ' cql"V/{ۦk_phw?K}7"#+FPT1eZ>3#;^=,E8|G8ϰyex=JOi!^_M2{hz-Am[JnƘZQ(7'D& -a7Y@l}$,А>E P4i`,wycOhj|ľJEgJ{eg X`rug&PdvlR~ p !-(VxwKO<4<-7gϓ!r3Jf| -TuzJE )oAb@(/ j}v jz=7Ъ5x| ݟ;=P"%N2N#g❢lxocwzZAT.? ]Q-оAŋ"_W+Q}z={y@ao"HZ.5N(M>Ye0jE#>6 p&aݗiƋ3ӓR0痆zQZrL"u*g@,wq|TbL$O T4r NCuE'%gK:R`'t >;k]Qn|0ii}\:A6 LEI0@kCW-m.h1};|>oTrC9m>E}!7p쌶[J`t__*?610tz^ X>.t1B0{>"] ҇V#vsnYA\h@c :r;FO P.^0K2`ʼnEn.h~jÙ q|LnkK $qi_泃p0 o=t>Y><&MÜlO{ũ"* gMT[zQY3c[Z$+hw=b2g= @c m'[P8veӃkXL5<gwX1*V.~ҷo꭛+}@8ZkJV{ 9LΟwb>3$)c71_WF/sgiyubqd ߜ=f ϬZ]2x? .{MzGIqu%DrR+ x\-_h)Nuֶtt0jݕ@+ƣ:WewD*l P0@Q :j(niKM1KjSM'SPSw'#Ź݌}{lYa# Nd8C ΛS]rP[ 3ƉO3| r‚>b$< mf5wTi`H]M䷔=E,ǡf+Y4c?:`Is Yy0½kŏ?zAcBVcFBV^{1&< #WM'UT[ua pHYs+#IDATx]yTՕ?G ^[W7c&*[0bШh"FFEEEøFMLgΌ33mruuU94oݪz|;U ߽<;sͻ3yg<<x3yg<<x3yg<<x3'~汥:IDfºx;ʎG7<k<[&-w1@+ :w vQeɌ|J3T6sYr}|>Y"20JYk'? #Mou0uDCYx !guh}w{2r(t {~!`۶ UJ<qDZ|r/m,n>t󍛱`}Z)0 [a'"; <Wa] 쇆<*)ly t>sJT?>Ȱ lYH=ѡvbkxn.1:}3D|0J$lUn :&$5Ny1'Ep~P@,˒p 3ﳝԑ~=߳A]apܿhޖ?aZ)u d/dOw N 0Бt4!`NVCA{`x`O`@8<;Q'"'T9nWrp @mU@q8, w=YNrp:O0iP|ibDX"u\r}HikHXy<|EWTx:/.m8G8`< NSW¹D2D48"w48.}S7bu A1D] tO;ؖCm O'ڱmOp s.3 G]c@ORC%@ź|g$Xe@2Eԩ^猎pp5܎9m5 ˚w<|E<2m NqEޡjwI:q"CA)X}*A=Y-3ipqp~SV ᵇEB*&cV9" StyLC?)Ya,wcnfoqr#Yw!p@ 6~a\$X=`Xh? ?<7bK0t1 {+IPF&⑖}ot w8@ށβ/@0N,GxwN~6({?򂛱_Tu$,aV1aY&H`5q8](,1#`%ly O'ţ-[C&?(X9 N9= 0LPቧZmaPH&wvr> {I"T @EFܟ` mL t8)TX 'c_`j x` ?obﯩ{\iBt1!rd ҄=yҍ7F[o`9!RtHƺ{MzTU6w!( ɚ!mlj ': ̞k+[ NV"@ŵ==vT7lX!ek|%O=q8V/smːyg u)%!zkLmѦ 0L]kۓsi5d!Tx%^6Zy876\ONRd0 BߏqK,e7@*)_^0fR?2bm{_o G{1Bֺrν=FXC۬wѧ/QTc{?eC c90mK|9PND׍"J0p8!UV4i[nYEKG/"/&E|21B NbL ^we9m`QbQѰCD: ֔e}&LV ~hTyڮ'0&>Udk{#ه5t&.y<˒@¯NH[w9 ŖOS^"s#Lhԝyl= , p]&Jq ] ` hq_dOb2`dez #c p>P|*# ՓCԀ<2ڈ`W JPCڱՕ:K%u-J u# !mT'/+ 1$^5yB?o5rw/ X7)C~IqD7踽 Kg)xv΋_E,j P~lRD}~z)(QJ ?@z R]fIoLdl5|lDbuL)(p#| ɰ݄8͑HD]0h0|̈1I ! eGC~ՖD d}M= _i6ג<&LY;O9l|MQc.0cF78󝙆oW+ȟܩ@zRV%({"9 G)0+6fhNo+"}!8<ÑO Y3XTYmԚs%$~=x\r~I#I-m~]9E!}cRz:˕$3;V48wQMl[bLDp L8-iOottOg8NϕO]pad[M>ڗ` ^0P<]^.{ʔ0i ջ(8GXUaݔQ!*dHPZ @թиZyj[ IN"+vRBbU{-@mC9 OE(FMϪMcՓtZIg.;ZUQ/U"/ކݑE#>酔C0`Ϟu~OUʼ}e\OHGuw \S\Lp >#Dls ֶJi""VF"\G# 2skh ,N c?9ӍC]2k>?@bʩG71^b"M>ːɋ. ȯjK$>]&oht߀@tC:kG*-[]]np?Ej)BT߫p':/9 *\Fy;^`ȵ'2PO& Xj\~I,ĒzIPjZQDP^lWKuvnZB9p`<(HPJ0B+)\DX,G#$HsO]@/2_ )|tP7".>A.$gq޾шj-0Q /f`ؒ_с E,yyJA4rDU.-*dqdU3&@23%\5^pR)"4d">6He:Eۙ_TYٵ|=OU0䑢e3+0M I#9r]|gu$0$EZ))cґu(&8iW.- 2R``h T H'3j'nBإ> 5 $z ^ۺJ W}%JE:&/wY"68_` M+/JTF] 2+ҒF߻%_Ԓt*?zkUґ uoܜK P_&gS$A% 4|mS.f htŀ\ &#` ėX\˶0X:QC9Et 2Q}8He&a4;jR[f;;Pk)-@=mWpV^g%Ϩr Gy\BQYOi/ w0?_%(?-y"٧s2ݓ)T9+:DY 11+EXOil,iKZN$ *ZpDI+S`A +O( d|s[YJBvQe^H;*kD^q#UNCGrոlٓ"rRjǗlhHΤ \n ֓NǨ=xBojYn28:CV@GUuA20Xq_5SK4y LtuxK_RJF)E<_"=@>O:˾GtfT>=Z)-[ujt_MW0OwT0Rk3D/['X9Sp*R= "I<" PJ=h4\n&шbaO; 8m) YG}JmXW` (8;nnNwVH,wmOh㸘|/k t@pͶ҃_U t3vNn@?R/SfRBGо34f'jM"Y+u | URj03o$#?|@P"wvIm!!^ W)#5szj3+* d#25*_jo;p6G>B*C;JWd8s{4zFyaJmErKp]*R*Ep&3v'hzDzB㤯+xZuN(0 BwTxp6nfww=6"r,yڵh !1gI<ђ K  q**Uha(VѣUeS- DGeqس[@u{_U)R@OO{ϗYQY7'**lHF *bG*UMs"~^T>);nJ|Q$ƕM20|P >,Fz'_`d=,ה84SS #70fby)RĴV-@4 pv8ŭ% Uk+W-M+2o@OH#~-M-?aݮ=b-y!F)\XAF544n&rUG^ʣimOG$R"**dzk[ēM)7(ƅׯTE!Lz4T6JAF;3*C]ؔce*5SxSADbh"p!^ؕDWVj3vm/ HU)m!V1άzaser!)ʨj"gr7m>׾3ɘ럽ysxt>jkQ!=LrdOebk0QW`X$WGq@W_<˰_Yb{\0.[n-/n>ԩjIc=Sc 2JХẖjt(4RzY<{l9zrU5RE"/>S{d|i}l2 Y>C:+Ŗ bΡ&JaNd fT K"W $Ȕk _;o, [>B?F\cZX%0mCzZ_5v^(:2Q4Q )@4a8 Hژ9:Kd[yVZW 2c|8U4Tfsd]{_N]'Q`thV a` 9Yx"CzYnD.O_M\{EDſZ=04{SV̿{xF>=x[`2g0#RHul=^DpsBd>~K *'#xl҈l33c*?FډPΈxC uJr*kZs3OU:ǺG2CNSݷ';C'2${EIhr- 8C>>>_HMK2%C7';ީOi:+%-^J;XW@!W% s#N V055nR&d愐\TΟOԶ?yhUKJ`ڳmC=&C"Ygj="Uujq!Җ:IjKThڶ!=;!"f9Բ 15rݞh v[?)ҔO~j9~lS= CmlNy)Es`$SݵJHQyR}tw |OvzN/$;ݶ&uȚV:/ ѷ%{`';آSRy|2=SƕvG$J+Z@t%=qi(%3͢"HȧaΓy8cKilr@9gA" zDF`dA]wDD *olR039"oZ3oy'I$Z+1X'9*<{L5І=G]E<x3yg<<x3yg<<x㰢巺]IENDB`pybik-3.0/data/ui/thumbnails/Brick-10x3x8.png0000644000175000017500000002403713137372624021063 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+'IDATx}wTy~ ̝>XXR.z&EfYT*Hj SK`J&Ul+ڱ'Mv'眻ܝcKhYy{ޯٿ涭᭯6 [[[[[[[[[[[[dZ|kœ+̐`d e)h߻eݛ ms?<[V'0$D$,wa-›P7m'"Ëu=S=<}_huC,_]%`"'~N`宻 `Ư<:oƻI${009L0CqL=\pl> ڇs6?I.+BQH-d=aE^ ]?7þq !?nz\')9N2eW O-e 1NuB۠O"˒PH"0>CNzLx^Ё"awr5.F- XdQjk0|܎c!BВpH&!|98H.Ӟv .: C) j &L 9`P»o_0>0> KSH>nD L k[-wv` e~!Lܝ 5mz(=S'm{:0FυA&brs Ǘ._[ ]s݇ }a>@cw`ƫNe}'RD@,7ϧ3-`$^,^{61w5\םMt" GuC 6s 5jHFNJ|;o0FMJsb|d=? >`. :P'F:uCԕ-)(_&s;a&H/?%klFZ0r'3g4(9b{0HHBЍt0 sd :T6ѩSʷ ZF`qi-$Xm l gN/ 8 p;i=;[&q&E,A0j+c`ktNЬ1xN0{qqш2dڝ&T% 3N>G0l 1n= I?! ɽظƳ l<li64S;81N9Ò0 kL|^vxl5{ { yxId S]N" qvneo޼6l~FO9UEfׅ8!i~>~vcTFxTwEEdI\)vp8,ٸ'zcg|Tʰd5c yx2 ]Ad咋߿ug2E(ј0fGXǦ.pMbcaa81t>M|hgUJe)P8o\ywh&`Ie$tjAg1{aѠ$~8{`ժ\|?mHU*b/,k1zc>6+66 78فI~2<+X陓*:N17y>g̞wqO4NܓZ,{n0mh&fU4$I7 O~[ӈP9j$[2tzyQz_jCg >i ܈Lu:R==el;1,j6^GLLϧAƙ`f OW|DX_<w\O|= >GfF6"Yea&@fs>FYbأJtC6Dh$QMy'x&p}<:\'Yִ_Jq |&tܜ)/o˖$0 "uC|a?[g,KΆ^O_,4ߎ86np{7#?fyfİ E{ G4]ֵ\v}a4S EdWEJ IL܇p|PDÒ!崚R_p ?%k dFBDn_6%dĀLSonn`bf@}`VL M;); s3qhdncSU+Ha@?'PϞflmPa62T|( ->&m(өd)] v)2t!bɤaBOJeX`4X"AFp= Aj3z YXeWӻ)'),gQ.Ӊ"Fq13߁юl4A=34'˿VK$lҰ]8MPSD2#b`q;Lng*@ 3S C2obDޚhL>/hZLg+6i ,1p$hS{G0  8ڿ%HJKf \ːe3"_ vc;2Øx>uC3|-?g2ˍiqim5  ӳtF3R0SV,rq~1B$EרԖ tc&&k1%@G#JsT=dH}0i)gG`mCkU:&+$ʄ^W$-z |f[,XPD28zW{\E/`Fe}tRr} 5)Xhz(/tZZDJW^#(OseRywAwHQq5!Uc(tI xǔ=0hʘ.671 8TxɤĐ²4˰Cղ1Q艥0|[bO/0NCڣj,N+o[l=T㟁:hgEYhA,}b!Skeذ᧥Zc2&(ruO=vfgfo ܗ J&ha@+/ѡف2P"+u2hoV+yH 9!V^/4cT*0BbxxxmFLcc&JN\!VHLq"GdDuPp| @ l4Y6ՇJ +tC0UW eZ f<'9XSA-G:9nn ؈R!bM@I3!}kwU*y!O'Y8I'VşPոO0aqY%3H?/^70@n i|P~W.㲚G?0ԑa1ytSR C|CTUY`bs5@IN)̶S}hfgpaDG53Ka` l"mQlAC&[8 qO'c79nCĈk`ʼnQrʸ/0!51Hdb "_ kw ޅhPC :!%ѐ.`ptBᡟ߰MŐ}HEYLH5zϤqcGVc(1?+{վstG((DU_ W̏(OQlg@m5tf *F|I03 s΃6$YAkˣa`*<약Re`gЀo"WEf]^=YDo~o/xҩ"x4!z0(d錨D%0v.|r@?TY1;*Df9.w^E$nB1% pS=P  mL>~0-;\UD~dT (̄9xr4bS>a0@17LyX,qǹ0YɗTWɦq%ߗǾnm*۲g7o2e>y?4V-Ly! Fژ7"(bВu.AjGt&[I mРNjY>} `hLc|c "C?jd$_DB 0Yԣ'U?2=d.7$؋yr\sh0{~lmAW>#H5&C|mgHQx@H7gΣM|%͎H8z2<={ 4Xdz7?iX!քNfB `<"$I9awo1S;sd19+O>8T^֮Rd#`6&sXz,.+]i tT&靛+HNOS̀k `#iB?_\eIYa)a5`X/ؿ\|;3>,ܛ)ks/zC~PdMmM= v?o;Nft!\'aU4Rť6M$ɤX&]b0fN+`2.WX*PE|~фm d5koKkڨ,{Lȑ]C峂ݺ-啕\ZM!g@}ZJǭ:l$Zjͳ ɲL7ZA1ҶeBldBvgRY45*By6WUd2>KyƔ~W/mjO($_5GP=ҶD]M!et0-D7,5; ڱH#`bjf̼̝!sMvԖ}dQ\Q _fOͮR]iGqJOwKzWTr)>eCcȉuS!iHva*f,HVX<'. 4}v*Ϗ*QX>Df kJHA2)}VY!Y{Ly\C|{}Bf O>zp˥O:?gg]EM幬m@#[%V ORId -Tp, ta'ZT\wuk $;QNpl+ !'_ТO~^&e8]|z8_w|gӥ 8|WPA$#͍Tu`jFW|24'cĻΟ5 ) ^ʓ9af࣪< M oBKg.\;rf%rNX*yh, %FKͪ J#щJ'Cj1}!8çw Pc!yzsHçrO/yGcLX:ll9c4!olaLɸnS3/[LAx<_~Y&ߖlOSx}S Rm6o[hfGVeڶTc*VuF?G׭kC`H饫^̼<2>}EyHRFV*vC+h\ݶD?@snz,@ }:{p?#&PҮ]>hZ^y.Ñ*}&Z,CIh DzbyC#˺q5sҸS@qh3@Ҿ/O3pZYV+d5X_96==\IsGRXa+;' W^b3pj=zȍK"/.ἠtgէyu@'~(H%dՌLDn32g94Z@oVW]y#hcheI{s]B~aO|r8_.# pY?f| SH~lދg/Zi<.{b,@A."u5Xæ|[[[<x[[[[[[[_-^# ~IENDB`pybik-3.0/data/ui/thumbnails/Brick-4x3x4.png0000644000175000017500000002660013137372556021004 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+-2IDATx}wUga'灙!%JF@Q EְİkFEEqaEA! Qy]:npw]ݧu:LwuP={ι?YsƏw&!$9F@n9F@npW\eՍc 4# ;or]짱=SSs.́ nҒ¶SA34jg{t;$ih xVB,V}f37\1k')^yie xBL6f!ޏ!{o.f1-'ԏL;TŸG8D^ʅу^7{l&9H&w$kr8cK롅C}giJ'嶮LQ.Qu*8hem/̓@ =cƩ]$W,j_Pdity {4* 3Wvhaf^MGh\@u`0Bs,pZ+I]@`؟@px%9|~],D׸v8Ր@;Z.9dA3޿84Pn. # TUeȖϧ8)9tC;r>)D>MG6'M0k h[<6*Yx/C;l&L`N{?콕Ih$0y=U#9L`1::;C lHs/.?ޯz㔬8*G/?^F8PZZʵlI ~!8N˒:m:y 9GAy܄fݺ=גveUy'c %7=?JJJ8 ^/WWPH @V@jb{pgcuB jT4.$Q]]5r S BvʖpdXdRyMVc"I/N6VHCM:0t|7}G~ b|Y.V2'GN~o$h&8a`ʠTnԐ>sV J'B~{ZW~̝O[q^bL(ll| =H!d:dL:l"F>ɧv]o |8q;~$Q2ș&moqa&H(h ))8Xht.<~_6?pG#Pj;0}tw ³jl1V1`}1y2vr្a$U-﷙NR Ov ]c:A=_j NߍWzwT1jK@'k 1Aյ&ĽDi1d0 !좉iqVQQ&u7΢_}Y$|8_oYY>}qaÜHo~]۸{RWH`i$//l0^I&9R2+?Y@(_J߁1z2*иF'ap|! kNq TͰ{9fp `C'пݛO8xl󅑕O7Yig7M"jg^ce_D`c`.Qҵ9 hHFx4q*_/ IkEQc,=1qfGQ5Ztr^`~:MpG K5QdY(bQ0<҅j*ipQgNɣԮ<˦Lхݽ$Dh$j,da}K~}oԬj+ p9U{}IZ7Wg=Zqޜ`ؽȮqV ,EY&~ -vi~L43/~瘐e6CA(-XO7?7 Б>̂_g@B!XB{9.T5=M!A:΁ޑe#\̗He*{ֲoZSV5'Nhz(K^1>yFc(rH+)^~T&+ $sU + ;7 8 R 1ƾ$|z{?mS*ҝ y2x2猰cxAzW"s?M;JFHYk/{A; C[8Af JI|9}U'sv}ŒbwN0P,&YV0`Ұ ȫ!|ˣg (>XȈ)dda8уk4/]P \\appoVraϟeƸUlmVJbX7iG>S!YGGL0-Q;dQ3gYMsy4~ݬkaNI@iUG9V>5?DNxǴn(`ťOKVcBg&q7wrw0Y|qq |c#L-0k‡Ȧ1^})|7X]Ì PE`۷/L51Q5դ/'mg% kYbZ齺i{9DJYjAGwӐ#v z =ۦd[53cs`QGɷq"ĝOT?]?x_UIÝIN3wwo(OSYp|UfN`p*Cx@54sx~:Gl"ξXpS$YVzPHbu;p6nSሶXKfxYUb:XƬhq38$ cƴb%)B!A[wP]4@-pي3xz@PpGgvk,>.l[/qb~p)෷3ͣ JR:nD2j żBg^:ニoɲyzJap.8ڀ3XsƵ_jp./d$oJYn& ++S@or<$Ll"JgI#0 _%7DE %%i>'E"v<9Ooq-hgʾD%쑟H9>aówM·R NA!}|SD g?E(r^PݻIվɨB 1*"ޚ.&Y .ZZvVX8(`&w q!9PPJ1>Ɗ~طV?\ۥ@)eH U4&BT B3`B(ê2$xB&5oi>N;+`uZeIA)7p _E&8&8bt_(,|E}lPo͔'ZJcj%pJhcXD}~Cx':~]ˮN#‡Pqurm&i]\la[j0oݿ}}Y 3ƹsF?vr7+WH o )`+W%@,f #!DpT"u~;fC;8H:Unhưa0!>="NG&cdgs/tsMf`y.tܷ"*UU&@CcH5XVQ3*ZUS8(T,V" ǫO N1#|ycՈE`We*VBؕnCZ窯R__/>#Y^nW_Y>v0I8ΨamY!wٸ@ZL"ظOZAğT&~r3o(N.߿?" -!A {HSȎ$8q|׎?#?n.߇|=mm>Zg"`?ޯ`{'{}$| =)dH^=8OPZ^"4@x MsA+1k/'U+W:S@&gQ#$a"F^@m?=KD97=+#<6w<_h@N -``VG"R `pJp ZhK;H *Fdž4DDqDr>R^{}ieǸr!ȿS^]+>2Xrkk6DyxߣJLcKi!`JBӕv}R@c y u G 8 ""mʏL@`6B\\m#L!6lxnao [Aq^fcQ̪K5=xW |4Sco5P <~N}`c4|Fv븾0X3i@6{"4M)%:@M.&^A `He(BVN_cLfzil`'GeO&=Jv76^.#ط**>5$/Z@R%Lr'ՂVdor&'1WH%;eao]۸llҗf/^!(Dt&ԵMCX:<%\&A@+}VG+D:(ef*~`U  3ƹe\)t_:_o=[OKoϭ[! ϑ8X QjKA਋Ъ~ѡ Hեk*&`@]/q\J =#?уE'5(:. k{ ʾ\p^Z Q(kx0E"tpFNLh\ h4A ZAD p -^*~aƎ )A'RV>߫m޹}u6O_LWw‚V@G+E Gd߷WТM̌FZd$sԴh8ȢoJ>W| l?oVQ]ڎ˃#yRh9Y@UO 9Tf+ i@"NUV(`Ә=H((`ׇڣ?l}Uʋ/W/jcgo?bW^柿0ݥ=l32}x"I;ػj?[oA"DՑDJ`s B+opb"V(Rm"?tfj?v=#O 7|lb8('u*f56>PNX0a6xEp X\"`pp,XVF_R1$mBaoO|E"WiCC|Vs/G [V.% c"lAC. ?")$hdIRYe2GijGJ!KR8):k S"S2ABZϚk:E[O ͍ RՋOdQ) IT|gA;3`ԴL$$ϚKX%}?Y$heײ qWHBީ`۶ߺo <)4C1 ؜`@Ȇ@ag;nOH w-^ƈ`f`%c K)ث @5 B'c@$Y!@R8a%5/ hܲnD~OEru+B|9AvPnAIZݏPm ,#v%hɚN F% N+&طGc7>BxãiZ"o]qXҋwMΞG9-:<\+,I`,*pO76yъ"?>^Xuq">MI"VAAGb+P=Û;1~H8Җűd(@yxDᬡzY;YwC_ʼn=Xm/=T~Vd__ccsQ6d f\G26h';zyOaQQ/64"+^y)e_ͅKѥeF?! "ӣ nE+O1iǏZ"u呉cFB@f0hcZ̮.~œ@~y)c?a'j5"!`sbу.iq]T.j\=gyXjMe@<>B&gBwr~`qK˓lb }{v՟rуa#'-(_{R<kMQad=@AQsB"Ҥ鉮IE98=jDMFq:ش۶,\{" h>!pO@'Xޫ@JQD= UE\3%@V8B3ؼ>ѣDP'$ yWPt6oxĕO wg \t'֭Wz?Z+zVܩ]?(040OT,U/! csp={\HfBGoEkO&~:Z_m6'<vtc5eV<ɻ6 !O}Cdή~<b쥗o]}XhRxy>Upac3 8kk`  Htcד'@ G GǺ7t' $?az)|(@>`'>Tƾ>T sOwg|2kNV UNT*o\xWNi x$p~rBͬ>d0#7 ?öKPIENDB`pybik-3.0/data/ui/thumbnails/Tower-7x7.png0000644000175000017500000004237313137372536020610 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+DIDATx}wTϟQ{}Ko*;A c, AQQ(* ǎ5&~$}9{ܙ4A~ٹsgyss?.~>~7g8~~IM;!V;N)wŢzg:l1`O:O\NFȷ'õdBS8PZZݏ*i 3y 0dvZ a{y{C; ΰJaP$:UsFkb J^A͓L_Ki7]NvEϥUX?]B e3D2A&VO2y¹59 O`Ѻ >OnJp|钀9q:C=#<+gO##C7>;?Hj3{O`2yBzKypfpO0?b;Vr]MoR"\|DJ y]F=e-(LnQEs|txiEIO 2y¨z7Wk63v=b0h=hϥ C)oW!5Q ";^P5 -Ye!(dO 7u& $+{!/bE^Ay&RйVng63;L[Fz0>>OT5׀&虍 D5*7As"l4nW77U]j5"T;/ч@dz%Tp-th g%3CaϙUJ׺Oy${b|ߐ៱v08ƻd^byjwVBM "#9.:ڥwHdßT nfoP ^f2~IX,{<.-5yV0~4Vy).@gYƍSc*5B8byK h8 3JKPOJ 6!!@I9]qmzK[ntq]] GLW?Wz~賊E5ozrKPMu%TQHjHO5Vq3.cT>7(Rgx&`Ab2D yJEeDքp4qSn!nka"z +ѫ%pA-  ,)P:K@;Ld)o {sD0w û%DSIae݇a&A?#b#@Zɻ1 3[ F 6H=T*0K?>s!+H`>oy/Z={|Ϙgj(-#YLƷ?@;?7^W;tS$J497w\C0BzkBs"/"l]f{Tzw p6~p3sţ<:% Pwp/ϘC{E۞1>5!?輫s& pwؕ+;)7/=J.RTĶ E:1 R 8Ӕ(t p=N6 @N0V.]n5)."Q`=D]l*V!\,RR4yyȊFS+f0'g)"|Jcwj_?.˿R΅@dUG|"ag)-` /1n-Nwof)]|Mo*1~ӏ'9o?MptV8Ȭoxڙ  Cqγa1ӠObhAgyd?eExsKB|RsjkDɕd{~ LkyC{:ȱr*:Sk9c-Y@3VV[[boOlΏcI㧬`,1a([:}+ߒ@|K-; MtQF@u]<~{T_/T#6Ճ-#$"GۨV&VYV8Q1BnVz_0 ؟>c%ȟr2=Y<@- =Cr+x>!*چ[J xQ] "L{>H+t!ޯd9!GN1ժO`(wJT`I7I74Lh !_{T`2ϧ[J*k Ĭ H3{S=-Jߞp+6Ga5竸z7xJ#C{8^1Vf)U/ח[Ptd(|wQƇڶ3…0|ҍ'(\ U)TF |4uCdpu.&^v1o pVހӌWI! hr!"GxMgQj.=]k}G@A ``͛ -_fas6^QHz_J+4- +5sq:"g &ٞ :].t#( ?OyvqF4¡" :RD*_MyB֪ )[[eYhAMyRy X0evIF2C5"$ єNeP !!))S `ŲKt\Ś,:Aq,&qݞVH3"ೋd7tVj2I7gΨk:C4 ed4xz2!C5իU38^,U(T[T{siEtE`pχЍ@kŜƥNFD I9t3_ 8tompC]T 8O2´jժ];ӹY4T[ULGށb:*^!EEȯޮ`|F}MtiS_(Ưg@h"#xE |zZ־'FRuH(X߃|`@Wjp(SF 1>BOe|pTHbbDX5ilQ`GRF[Sc/w|~_1ݳz"F1v- fX?iGvѦT:~!mB؀C7Кn.utYo!ϲBﻼՋtkBFgU }vUv␍w{s:bC8#Fʇ.'\ͥp/1EN!.UçžnyU\'4]4W(M  0|[;(=|jnpaP(FnhϩIcs 8T]ϘE/A,*RcJtmi1xAS {nx8x51Bt BV5 c$#fAT[_a=ڹ 5xpne M sR%fU7o3Sˈ~5.`cƹkp.\AƩO8,:QUL:'@ޚYPB0Scr/#H @:KoMḎ]xk^wcp+,NMcpwCxWoJ^AZ랒xH1v q+wMDL`(a&Yݑzײx8Pq,Qu3soL *5vQuωY NGؚy  "8} 9 Ҥ#*p1U1JV=NC?A/2J3=q>Խ\N?xHSCթߞ}e[ZۀߌpQ54&-|GT#$_Zzi^`o|GLL1o}=7DS4*9KV[x)]wH4P/%p^ ʱ[)"+]t,T% V̻VX12rXb~'29ATˍtz p 9UD0>]`))_FKoy =*ʫdo8Qi^ @fYX5Fh8]f"xȸuMӔ0J˒tk-SeV!Jù^d\4/ޣSFyɺ'DVvQ[O$ĻFo8,l:>< TL lK|a epC}5!7Y7ztrj+'h9F'˘, w> Em`;a I < =%}B|:& M+bT~]}MHL[ao CH^v8- 03 c (嚙'ȗl|c5zPUs\9|r';~mv!godz^PX1$Y>Z'qt3̈́*߭<+rO6#Eb邐t߫KkxW|G3<?8;p8*d <"Z*W澊/deG@0R;rSƀtsd\cTj3 qD`@0ˆ7# `h~H@aMuU>BX$̤2߫y;sukyN#֯OF64178FSH`hN!6Mɩ_@m S>*M\]XFN*mҋpﲧޡE&)䴜{m86'qߍ)u4#^xHI,!%>]9ЩWd/8#Kr4l`dnx{=WcŦ^{EvXZxHS2~#\`o*/ ]u9u cJhw#TrJ-t08FԺDk"Fo LeMu=\ ѫRGM|z{߾2"BX@;tpK64/wtzьb@Y?\?騧rDG':NN^^YIK7G('CftE6@ BSI`d *"pCYFH^PRmI+[DfH/ M0tT= J5!UƇ aQ8ǡ8m]\][,! /|6p,Ry4Tx0}Aa1{J>7/ ^ܘx#G[sV)2e H1u g3C࿬i&CLXlK`N @_j}Y8a*V>NgoJ+O`@Xj?HƏ߾]y%ӽ+tѮӺo߭i2{51a`#ܳ$">ϸ #!;;@E\yRqiE[h&W/WMץv(BFIM~e|p;so*$aqJ#w+-Dku YQF<.J 쉴"A2eaN'-G^ ڱ-d~btrՉN?GiTG+^Vp q 7]spQѨ+ k$gR$ H]Nn݂TO;w!qa1R>߿_)-GD߈?-.%pŲ?Y~Dc7bjQj#5"3t[q|rϭB.Ԝ F.2x?l/̔r_ȍk_Ela@T1߱-(`(D@M#GXNOYJP}9k`a~ *] x1g}sRxck8*DqQ(#!]U=t@q=|!9k 0EqXۙHlCD1G6PW@ëUj3 *s1V#w-q~v6q*׍V~s!Ňom/WDEyB|CGe8PA| ObP9ZVɘE (t^宎r WQ"1A1h[|'\7csPGFuxg~usOTH5`:q$ruOKyUg3GmWL|7J_{C5b(ܺ~؆PD`& } 8V9{ʙIف=~/KL fz\<>[iU`u̾X1{oatT㪤M2qlEO8ٖW%a5)-߿| !u&reS|⃧5 X8wGNc*9ubȃaBr1n>L!,!gYCĜ # aQT*GF mc0TouqY)C#(aH1>6g8qMɮr?)k sճ)VHP6}`կmX\2»5: 3(H3.W w(֟!xOSҖH'}$bN!Yq z{B`j0Z$3XJ76BX^%oX8+!XƖ>@r̋lׅ\h#q0#p0qg&bfYΖr.Q$Egot3^]2/RBY2D:/g31@cl'?vpkèKJe6ﲄs:;ėoT_O ?t !ރfN#$KE,5(b玫B_Dtw2_ &[R|?SZ!>(~߽lz]7HB(z籕Ð( _%c3 "b ӽ+.'/ݿ/1kh5+NUIϯ68mC 䁐C&AS<Ӌri^+ -%=0zyԬaNL'w1( 3D4 DW)! |I&W*)RtL pK,~DLAz< C"}[|CҐvnS \0ݵx) W PCRlOuAAcfi=x(\m4Q>,=%ZCL!7txDo9O1ZG`Oxf+Iߚ*;~+'Ex,6Q.b91+T.0\c 0s}Mlx&B-gY*`3CQpwָWq@tTFa D#,bѵ-c NP*g`JIp ` Azǜ ܩ.VLY[K/ ̢24+뛋 c(!P)FY + Fш3EYFN2lƟ u s /t(ՊN/ϕ!MctFB@YnT9:*aߨ\ͥ+;"yhyaP$(D=;9$Gؽ7vouXPfTPdh@(uyɪ,&WT bRuTs`Y9\8x nl!D(g3"ٳxFh*Ef!KdyAn+篔-d4xecw+ͮΎb_\U>Z#w:+K#OPx :P1c(bF({ QPOì^Ġ\[R%W+3agh'RP P49 G,!=H@pPJ7mY9v1۷+Gǧϗ"_ d/[0wAvpu!QJ)]]K0V1DeàYT|F$W:c`b )V})V2B := #=VRv0Zhz3s'm,uRn[>Z{lqZw{i.n]˒)!jylƎ^bPVC$axh1\О y7/^j4Qi,Kc.@n*|8'W*hjgTKĚH)Y#eOA ` `!{qǒ]:1!O(>*},'p;m=w*cN~0Oskv Xj=k(R%XRx\|N ¬|P<Ϝ';x+Qy0٢t`< JkHY4"m_/U?>Szܱ^^@A Jj 9x!L4L, &"/å z*nFQ\kq~ΌYq͜2B >ɭr* Ѳ6VnЉĂوw<0Hial#kO9C bW(XN ʷ_[S,'w*˦d=P5Zp (/'@A|8I[8΄.ݮ#5p?Kh;j LIAw@ {r 318G7"S{6TK8[7 r)4?)*'(9?2#yF/Q;#HR8$AZ۞mk}HTЛLΑqCpc,NTj`̅# j& 但^VaDdj5Fx)̚B!緗VIxo!/0c1?^@㇋<ׯaV=ݮ*J ^~$9vjf pV lˁc`XRw^(1hD*i4\vKYDJ ]@UvK7CLwlzR3 ]~.Vwiy c Cآ@̔ &PL¨͒p pJ@j?V P|CճUѽ؄GyTD py9.ېU /W70g-) 49PZ/ pb a_xHuFw]I= CJXSP]fm_d$gp;%_ջOL$nnJ)zgi[(N`o?`~$,@<@}zS^BJrВjf.(6 f@/)>Hs xd۳C-a`hGB'*%>CNA 2v=+ fNi a_|,|C! |msV75MDe(6`˞RE,-→=H7nno(2\]h)J7Pc>5v~tmP2Ej]zo[5={)Ts V K%]c\N1b"0E&;8% KM+Ĺg8?oȕ]<1viDtimonMr 60"J}AZ7} hyc;hbKv߉I#;[ْ}Yb7A-/FKz#4plHcu@JRv({ rM&fn6RAzѳ`(0>w(}>>cg(r 4rb'/Cxwf}l5V|t3i?kO<׎aF=70r{Xpx:0\0KWpkr6 HUSdtyFe붞Z0B,9Ѱp& ASo/w+1pj̶;c&^C5*紒1K(ZD@_(}; s K)!"L)_zĬK9"> ;>3H1UvPIZqGQأ@yt$3y"IK.h._ܔH_$sq U>x3jxd0&P許&*A@$oAVzZA6/\T\#S2K)Mm\{;,`{C |9Y49I<]P;{:#'?^y؉,3p0A^9Pz.o+w. W.GTQop7+/ ?*wk0;}al[^(3KqK'Xc : <+eu#61ws:q`18G5wP8( RJ4id ⽐Na_Cʴ*xKE.rq\4/KMqEE;Foސ9cDyS (#B,V#N9D pZva2L*E۷$y^å|kɢQK܈R_啳4i0p@yVRe\׮-Y}zL\qP[a]bP{iE9 :_<6~4<`G(ĕ1SP++HԱ#b[Ymibf jm)C(<-GKBܳo`lP1:lj5C=UN{{]%+XNCn>~ }O! ?"pQh cGX=cn@` f|^T-A^trtKs+`l@#dʇxߍkyt/eez´CEAEdKEG.1^~1)ݿ!uOس;[ǾX2aG 礂 V3Ne2n2`; *ٲ:ڄ+A/X[ϧX; Ŧ* ZjH_T-ln6'ɜubG7auanE7"1cWt] 6V~Z8nrbY]L ιuNpG Rb!*jUݤh?\\ު_v DA{ ,@U9.EsR`Z1ɯ͖J b4s(;A|O;npDLTŷttȗ(m܃?olB8f>'*{lU%}|e0>!VprNP6B?7y|' z WXpAAcc R#IORŖ)eMͨ}ap9r GBTW ac䧗 .&fSS>^s_*aQ0|{Ʈx nr\`]wYF M2M%d|:pРCؽr@Ү ʼY҉u.ރ(W˙0`,u-5mP+C# Lq߫j ,1dvYOWr\T\OV1<ɹÅݜ<!!lQv_lVAV;;ε11R1pC'?!KZ8}YjT;zj buNPi3;}ѣɅ~7t-`J h}}d' p 0N(~kgiOQSn5X3qUMUeUPy'Lay@fНku3vePh@a #vAY$61u!TВ3 ܒ>/~e}+"ɢQ@韽EC`\VEy8|kC >'4Y]w27*wa}S.a=o17pJĄػuz$⩞Pg;y>zŌ|Hß  ugf_pvƂPOJEw&@ 6:B s@Kܧ>UbƖ =xvACxv~wh@x⥱0L)>ַ@Z2`* UQ<ϝ6tXPG6wQ~E.4H!;0^ cҹ}UhuU< R8CU@/+.)7oV0D:Ѱ#gd!F 9?2Y4VN#ʕbx(&wr cj؁5~(|Pqn}eˉh@% @x8{ q b=Fzyr.e<]O@Yζ @К'p4hz!]7/(^}r_~2H!0mHh>, b*&Rx}S%- ' Լ`=ƑIn2YED$x4i <˶`Ӽ\hZY4|d?yXp}.;|C`lz°`a' IENDB`pybik-3.0/data/ui/thumbnails/Octahedron-2.png0000644000175000017500000002371513137372644021311 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+'IDATxy|?_mdMIB=YH a @BH("ʢU5Rds)""`VԺV{3wLfyBh?'d晙|-'(_ ބ  (A (A (A (A (A;m2 T<#%<~DDT’b *(3K~an KѰ鹰-!4#j1͌lŰ,aXVaٲsWXX:xi5!!!$Jirero-TɰLgXf1,e ~HX ] @:[XBଡ଼ <Ͱv Q RVF{L0vr|f5`A-k.5nx@[r]JCyF#Rxx8e4CɈ]XXcX6&e[lY`W4b[j<-FycA߰,ºZ?d0 LiFe(?3$_{ x=oreX~-gw/eXf3,eX::niնԽָw:ZX  1#i g2hf3 S9gX6qRŰ4o2ZEpE)`w'PqJve #Ht1P|dd1D\^d q{A0,;sϟ?O@.s YeQ,|TT0Il CjD/g{P2 ꗹƲ͘7UzaC({;C2aTLj:{z7 @n".~ɇ(b0y}%d*V?|1@ڒ#]]3|_{/Pl uh ԩMMWYtSS J:o^#!Ia9FVi?Gq1d(=/-\KT&&F[z+yz(tB'ؤ!0xs\^УC({F-*O4w+u ir6P|ll2?ߎnx@ Af[ CcMv{ٴCyۊf-DŷTXl]=Lj?9}{b(x[.+GTjAWʗIPjkZ<PyEA4r^ApCu{4╂:4Lwt>_lQ7'&&6qS>Oe`O֒:MUZy[hsʼnQcNd}>OmPjV@{y(~A^a^o!t4ɨOGn?%EɹlfK{`]U w{A:w99p ޹sgڥo+oڹ +*^`yC딣^{tfoE e,uic |Q[o] ,q7Grs< ~Y)'\eZ4L{TI5a'l|;?y@ ;nt jjjHXfΜI3f̠SҸqhذaԷo_ҥ Ms) Bp)+s%g#Db>r(X4RCn!m+=LΤzVEP|H);(4*-q|bQ Ӿw4dĴih֬Y4g={9  \b!Q8$^2?Z͗2(?gPv1(H_S (GFf*,;e UM+L-LQn_m_$2R0(/,, ;w.͛7O`U4hу233Ep E IYgP$ۚ@1/r|/=sƌvS>nFZZO>- b(ŷ 2Wҿ1bI`MϟO`*++.hر"Nٳ$rl&LWϦ5p0)`IPTE+{ \]CDѻEvPPG c젠Db1%(1ktUa%L7g*_o?+Wh<8FF8)7&=G78GH.]-Pv" :,];HP"&ېᵱ"j|/ |#T(E7of39e5lnjoUP4axQe [9'?y"4j3Cػ SNy 8Gp5tV)UrQh}KXl(b"x|^;f5w4%spUufL%/j<a9:{U DȍalQQ.WN%<>e@椛siI/ء @J&7 6k)+d#FnWX!ҤB%鍵1' 筭v@kog,LWyGYݻ[69UgV<z@p)Z?|y{Y/̔P:hgy <xI œQVWX?gϥ;e`@PXW림UJ ?ȄGVb\7#0r#uN\L'2޽nXF]{3zׂ`O|:\_E ]{VQأdѡT^zq 3~v?'3vV u@U0ފurrI{bBW09y4u@9/ vկ"o #P=fJ @&=]nG+n۫-76+5^lLiC]Dŭ~Qb"$SJ)ʁ$X0#@?7g\쉶{Ԕ F^ :u I <vSn/# /;)^%u<<<nҢ!=LpĖ "-+7VX \ jV-WϱRdHqbyżhwp=VP s莵w4ʏgtj3+([7)@*L$Zvx|ncC)ϯ{TV"xݢE5uW]Yhq@BU@~ /jأ 4[D_ %5W (\ `]; MтxX{m+^|I\ zYɬ1+*|E ݧ oevp)X.<͝oNSC _p,2դPstDy^wNpM4qlz)EyԻYs1Xpߜ{)Ş+`Î*`mP\j2υDY. 4:wP>4FG/ >z=63\=\ NrBU!Cz|'+œ'5.ိ!Rf=P&Z^&X=S @DYZr&Tډ,cC\*Xlg{ 'SX8x~Sjr@T9=|V[)]Hu {@&?sxv}2e @gYj9>M~VG$kan$ k HQuG[h,kث#L `؝l5!C}XVL+qC.lR&_6|B2=(r%]]>pOUF?@Q/MY>?p0%wndg΁~Pʥ8L(LtgE`7r6Qgr4[o7|Ȫ[b Ƞ13͒9pUeY2/HHJjW|!J6)* 2A3ִ?}a?&N.8e^&Mv? ɡc4!xVL(WZiљm;DbPtS1l:+=y(Sc#2VL%u2Uf]?3<\U|{5[|XryH(̊@~XWbӈs`&Q>}>>ϩ03&,|{I4e/[{ @;-[ tKi5V(ڲ+aivk& | #~7;7 #,gPOTL  .>E3:6X|X8hHL5?Vc$SvZ[+g+uRt|gw,Vl4,"poS?Ydq4x{wW_9|~ꗊ/_^#­V:J Dt!u[[VN%Ķ'F8awդ̥& >dc[A$,&ƣ#B FP.̄ض&8WWCfDRA7ҩϭfG[TE ]fӮ V &]•th[~b(f\RY@Яjpc\aS,ռzI[|-%h V~㗶J4 }*%N3cL"㥽~blZ vV8$N ]@$~`.j)mfPt YB4m&>-d3H8]${ӵ2o˲5r6wUrDg2Qt1^}:ԝ;.`߯  NhsnD\ytGOVBfJ ËkfRx'9xD"S*5 UKzGpxsT`_:i X2է}w-+e7Ab6y%]7 gI*!]a6-syM.]&wR];mӌ}{<+Q&{\[*Z'1Rh|t)M%UeÊcOl~ ;vR@ٿ/Z8@8pxN 8=/%34`nCmhTS8贽T>#Xl$+~ ;ׯoj %bc]DπG`WX+w3%!/Z0oh0P3T$1/(dR7S իR87_#e`OGM{{*_ >K}:w[[PMqVg9okO(`/k-dA[64*?@#"bw@ a_6]̢#޶D+6^Vξ,AxT>%_^l$zE{Fs^}YvHEkԹkZ ge$y, MH_FhUwI!bE@ZH%}7@ QB21w AAXn 3%ьVB2E ,Qđ\,?}NOf7Ax@NE O}srTDeEPDP /bm'fvU3yDm il[g8j0qMaO3}, lӷr@ _5=:&riYUQ(k ,wSK̜'b%L'ZPHaL&S2)& @ ]܃C%0 b_HVX(_vUZ}\ٴteE  'OPZ h_6:Ca`f GhնJKK($By @ I6@bHu6y@2. BOv[yR[n}ז5W( ;k8qzVU1喩a=qNnV"3x~%B>(8`sӲhK2HFQ 1V3:pw=Z*@g+={4ǎ`-FԶ%ڛyBlg_-|sUڔ+:vR nffMӭd@B2;z nGedP 0Xk3.FS"YTXWy/"kva}JmLb q;E;4 |O5@F (Fo?% IJoTbh詬!G) o@B3i&ѱ>gkE12돝4uX4_h 1z"ڊ!`) H3w}wT[eiXuJZer&@KKDA4v%:„K0>۵Y72[]GTF|V\UPbԑͨ!(EԌ2/5՚\0PX z Acr ]OZ+c_d{`b}@7Y5wd-d1Pț,ݑcfq}ԏw.;{N0?w idEZ?oXM%l=F֣(#taD߆E 3]mKsohRf3h5Ӳ5;;zX:v~5gUp昦HJq-34_п_V$5cH]j~榛+p XM6Z:vʰf K bp\ ZʹfStbgg\]"P?bXu{c} "@uPV/nEktOm+.9^cwb+3 =DA=J1sMyCmXo=EaLf9BZ ?ztjoBM A  A  A ?x(AIENDB`pybik-3.0/data/ui/thumbnails/Brick-7x1x5.png0000644000175000017500000001474613137372564021015 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+IDATx]itU#V}as`%;HDp r[;Њ*(;He}Nq{Q͒U<>{W+$I00f`!1Cc 30f`!1Cc 30f`!1Cc 30f`!1Cc \|Bt6]ُ7.+mjJB}?J{x}x}eж 㖇z%wTpHkgOLݓ02:Rz1{ K,'B-/a}d8b#Ç6gOt8)M S[N$Ҙ.[ dx@1V#]]DYV!:u$AkL5ZApԵ m a9M.Ktx(7桸H@: #@@̛0fi1Q;[K@$!2ԁ ;Z6@'^<^`L$p1C\NQ2d!: p[b6ε9 V_ K nEa}{}M0*|~r{_ >.K9OT>+sf Ja)A@ *q|߇ aoa|k},1w3O~NEk3dL2C6?-t@G)֎'8~n E;cYB@!ȃowSo;1MkWV-W*"3 _dhd3M2KAmzav B8p~3R|S6&?r QQBR3 B ɶ% 9O_'! Iz,S+%eOyy5C)B9{"?l;Pu ]5e>SMȗwFp;DT #,g,%y%Z'c  knaa33tCMk!eAOG7Ð}6a[xS v)'b>קcI>NA>@kj&!+|"᰸dNีCd8dG4t n^dd(σM/뵀 u/ "RF^-d7)珖Sp/-7;dP$cUF_0qO+A p/rA9`r^\{#:FϏd&O|]}v  \#ʗ1ẓs"d5 |Tee>@2/维I.]EtS__5 å]G? f.AX/[bxpxO@>b|/Z. u9D>D[ucX%eMXA5P@('G20D/اx 2"C% $G2LXN΢įz@Fw3Hx*;%,+?2?B(p/7 dNٞ4%p}.zhd"ᒀ֭exSuX'u0Q$ LT/¤2@㽘eFͶF KzD^܇A dG=9cf%d*qd8[])B2PK. IL Kyr`N~K)jLP&V]0^/}i Β^~ ys#* 1 ,KvWb\.TODHbL,ʹsvZObs+@ABAٖNUV(ML |ֱ.H$qwD<-PZv1 L!TADpRngY0>+DHP ߬k'h0&1:LTgg~ x-#Ny +VV 8S"y-{`N kyG^KgەNcx=(>=V'/I|2W8R,RE.P ǹˡy^ J-H4i}\h| @+ {D'fw|QƏ>(xΩ\Q/"9H]|~ϫMMuLqOT C^^^ܥ+Tw&"bOQv~"T-Q}]Ͽ-m/-Vyf͏} &4~n߮sln|]q'7/~ߐ[ni2QΪ1m:NZ^.΍륵c:bt/Yµ-I$]dBKBrTɗ 2tgKCωWȨp}'&0P͠rj}O{h >M~6Zl99I ڣԣ{"+tbүZNy=ZVL$#zĂ 饈킚>{3{ANIzn%EvP |0&7I>A0g͠~ yə 6Ȩ^護 wA2Lv%jyZ)+IY^%)t](w|U&Wu- l'@8bp[oHl2>'.)Z"`Q×҉[ƊX,E8fR > z;bd(bOjv2ZC;XM.Pa? Oz]NC;qkgKu[pX[׻b\>{IF왖{-B|Dz+P<?6AI@,Ej!;M.nL 酧=Rs"Sۖ4zA>}']H$3@G?^7eoߖH!Nmͥ <|騭T`,pG H44zo\ , cͺasJWH;LA|~/0]PL@nV@kcD:ǙHA\!~((eVhò:zwB!E"qF!v.y]0D;c䄜bp=D߈QUj?+GFg( ˠX%$.IiNy<÷|yу'}Ņiu(z # ʾ;xr<R$Kъj[ 7@+D2=DkN|V`3LX:;ekҲl܀?Y=c^P tRi i'Nڟfa^Q$,L H/K #MT {zr:D10"DM6U;Koa^Ȅ+pL1)bGQ3ً1ݱzV)%<x7z\^V'QQf?,N L|).떰hTZ]5p$,vČQa%+z# !s ]VUD w5R+۸w!';y{@$36k(j jphCgoW4^͡m[w厄Vy~H`@[`"@0=**tC.2`A4߫RIvoHRB>W)ؓl#5I= |W~<l9!!& pߝ^oM&]z3h 5Us #& Y^S7(E'ӆH{ڛQO&#=ڃ=.aky2":cę[Jބ맾"'^_$*Srѿ yMy3(Z=lP.:Ω-4V`"2=RD0WI# ?~i~+"~ i:pS32mƖŖRݬM6o6fPk-64)>yȞe۔3|k+.٤m2uRߐăy6yХFSƄ>`BVǷm\o\ZZaֹ$Ȟ&{MjSRU␺"+/SD #OGz`$b4=,b orROXe j/NC0=nK>{f³ֆ' -a@Q>ט&pds);*=Cڒ.VD00 FdT*c+XqG\]t;|0ruycM9xd$(]a,=r{ pܨ -#Ia/γH1nFUgp9J6_0*jl><9*r7Q r2xBBn 塠 33= CɟdXbD4N)6eu-5m&8cm`Py*)]II`'@EJp-qˈ\~}] i{:nlZ#}/\ tCؙ -˜ `3F8j:E $=@Ɍn]-SW;@B[2jkXh9Gt[ dgT IX7,Cx|gZz_fTxi>SzGc ͆T (SD!p!Vz:C25\-mGFrKUJ9tس VF:蟞QUh9= Ñ"ʕ c9~v)؉Pc#m*k >*\_d/"zm2@d-| w^e-W -$JDHEIDɩQKETꍁ?P,}ny]kzvC}m&B$ l +)&)Tm{=>UT0qK齋 @=ym-_\@T&U+OH @k[H'!*܃07xPnwԷg2Q&\,=*m5%! 3H$'¢w2ċ^GT+pw@ 30f`!1Cc 30f`!1Cc 30f`!1Cc 30f`b]aIENDB`pybik-3.0/data/ui/thumbnails/Brick-8x1x6.png0000644000175000017500000001574713137372572021020 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+IDATx]ytTU?G@ U=!I*  ʢY\jG\pPmD@d %n{g3gw_|Tja*zu{_{~{.^Ӌ A@&6Mm4ihЦ M@&6Mm4ihЦ M@&6Mm4ihЦ M@&6Mm4ihЦ pfL^رa]ӮKa_ǡhj4 >Fw{/ﻻAG4.h$')@d٬jaEJlVc) @!`O`u^2 ᵭC;'A2Fy!nh0e%eǶ8o!o{dd @%|[$r* ň&l_B%CVL3jՐjRx+[L)2M6٣ a"LC 2|jD %,Q<' fq!j|;7Oh Fo(oޒƛ41c׀8P/`1ޥ z.I9/c ۟2\dȆx35 AX 2|} Aup:bߕ{Y\7&rA?෤yj"JR W5c #yP߾'$T^G@a ;"@qk 1ϝjyTL@\̓Kb1iƵQc8LRŽٍ<4 v6xnh!:E7mQ5Mrx42BzR jb1!?ׂ |qGUmHf/ZXW5d8g5~#jw==~ \.mL19 I@gO2x+7`7A62 jq@w0c68dH*^NhNY\*2g! =Gl i+V]S.|ےvuw=M2ǜXRD )cKQnN{DDA0K<e%a@HWAnX'˼ 8L#c|.!6[؟ }65a"@:hoڼMY\"t-BPa<9Z6f|q?{dO[Z㿖3,c_ /28+{<. ^:U,g"X1oG|g2i@K}(/'Vpi,GG$xS[iMauN%.nLV=1/Em)<cx2ݹVyA^K&?;pE$J*+LȌ?}vã 1F. n/?`/Wl ;la:i+eri$ dlizbS)8I,dJ>l]zqڰi>,a&I۔5/5kϫƬtySx&@'}԰$7&J<Я,5Esb*< 5Nቚ6~MƗJเRx*c]%o()/Ubid>'f+H9R%L^?϶1ԥ(Tg"uuܛ!׭.cXLL=-3:ħۂb|^Y'! <)"v!͌۷%OAYq| ۔B.:+*u6 `m0CϝBܤ}XR x*)Rr>T(Q T1*ٝwn'KU{2{ fO`$Q1Yq1g_mcwN&,]jmvJϧsT~Ȗ1tQ5% -,v}+>U$i8=;K:&SQrcb)OW]12sV@V'Iw:)lI(HP_?WWlj:AnwNˢ_EpJf^NXrN,Yw$5郱"2s?I"1?$jS-^VY?GN|*@S07nbV6TP} n5>l ; B}Q&jceE[dH B ok0(Bo3/!a ~= .` W_5IjK<[TD[I~j|%E m^"8cOTx j$y>oUn5yń^vSL >/\d`(p ""4 dx"sqOpqD]}3_˹A$> 8%O0CWŝ7ŧ[ !k9rSn]/wdy!j7\cui<1JʙMJQnR`NT6V-a98%jjk)1URGu(7WԹLG )a߿,3D"g<D"pUSYʿQ! (a ӡ U!Sίv;F =.I?`-=ͳ@n~n(ut2e-*rPiJJy'{VH$X_ ,c/fϰA.3u4zfsOxKd`~Ol-yo(>.be`SswWO3OdpD'CI^T?ioŌq>q|ܣaTuByTR!¤@ i{[Z[[ydH/,Sm^żl(sSYRy/T~^*~T(f\W~6 o$_`B F.labK0 u 헫rrjfGAqv׭hܙdש6.sMx=8I;oKiߍw/ r'B4$p"Q,u$U'4 *5IzkRP!3$cx0(ȉV2H3 f}M|YT9X^廂k.mfh $E 9aD0Pd!q=HH`N]gTDljbNHTL q?q57T3!LI e^gXt _yGs_{`#Y@,|duO#>$>3۟ UT^z0b{š=K֞`򔪰jjó $@?1sR9@=SL'\U(Ș^G92bAx9gkde]ȑEB|Q֙/usQ -M:<,I&,0 TMhaD`@LU%xv)$~!M?Z X\߄-Uر-\kWD,;l=޸[J8].+UHe-bb T:&&Hb Ȥ ?{*'AhIx 쉣J#a"PNΑ<&U0Wx枰l[eOqq`9ݣ pQKk#MU`i( 01 `|F&,r\3 "q$Lyup_扆qݲlˑTII0H`9> )…!W!LLCܯ,q9\,ėq "r!MJw%JB~ڟ.x==0,Z)>&@UrC6=d8ErH ^}s6~^ zlTKTH$F1Y*3̆4ا N*VX!WH,)4NS[ใ<|5gg~CS.pʯq9}`{{ i:JUCw;/·WA<\a pHYs+ IDATxilT|l~Y̛Ş3 feQĤ J8BiTm B)RpҔRa%L!PHi͌g1v>ޙ/d!󛻜{ߛǖZ&AAAAAAAAAAA T`*M9M/g?al3< W+#wt@n{͞Xu}8lN*4'`eug5[תJ6u(~џ[sZRϦ  xxbl9h.,"?B hy c;-D. z ^Ky<q^Ԟ?9 VD: X~4MGPK bh+DEſQSxy}zs2X*e0HbO*Z7boAB(~Г_ #Q8f~Ib3(QCHp8 @$Dz |(>0DezG #K(Z?Jd:6MN6{ڋK@@ڌ,ҳbBYaŧyx `z7x `(io>-\n,ּѦ:^wu ,=N9ܝ|y*D 6h~kah~#áPCu63.  =C?~+zt Q/s-}[ >+qQ)!2"1nYO6`##ZϷ azX +p :Ak5+<S?,2[L1̥&"np%GQ? .!a;~)*e;ENe%2`z>mAKhR y8?,5O^/)YL )wf~hh8;<@T'^u;<g9 < c\ ֵ8u k:c;3l_@?D0#,O]T5[#tn51J߽k:xy <kGbUD9X*us4%~{p+}o!QcO4mL5{6JsRC P"p5hq@Cs g K`qyta@`@o(\ u @?I+:bKO c4U"AqWD(Nlw;A7c +`-c6u7L]ItYDwTgG.phZZ^k@d@ۡv_.`luV h/m + KA]|n',X͊+]&$ZAM[^"oW Q3"Z-!_LQ\NO/~ b@\GDYO0F0Vs΅4yxW-KaE@X#"O9+9 aw{;A J{`/,p/gi;͐q@y1W+ 5UF\qb'xEnEM띋0Z-k6܈a z h>@r8$IߣO?}`nnfhk~Id~pX;> y GQ y=0L?g J#T 8:TCn]@-? !X^ko [Bsƍ6ͦwV~%:. v޽ A@`?N_i;/x'р8kT|io/[B@m1eJ`]&{3DB19EuڌKhF@&,>̓Ml |mq[A=Duw܏ò}g ק`vDO/ u.j@t4Ap=2a 7q \˨`,%`{&1*$ J/N2]EH>oHg@;,0ava >)a06 %~-}iň7 X'HF8ŝ8ߋ0A t 0PX7}@t?4P_+==8|HSy+  6^G m:9EQy xiEkg[Dp}opw @hU.HPSsp8*T-=U&*C{ϷE^HVXo[eeX>,`` %            ?|brIENDB`pybik-3.0/data/ui/thumbnails/Brick-7x1x2.png0000644000175000017500000000725713137372564021011 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+aIDATxiTス, F{@Q֠ + BED1KH`jDd2&&Q+HS|kL7m)=o 3};w{.ϞDy%o o DH "@$ DH "@$ DH "@$ DH "@$ DH "@$EDVʊ[m]N+ [?^Q`$^`>t=Kiu5I|h.B Hț<9m~/W.t[.Q&^lj^۸J0$E]y ='F86Gsn{5`x6pnQFw z<䁮5 ^+mu_N=0x6,q8Ű| 0Hx+tB߫NlYRAn^/go"2 ÊgDSz EcLӤY!_rkf8O*.y;1 CȲ,*s{DJuM&U -+lAz\VF+0 p[*2iэ3bm}0P;qy~!z9Ap^ a$/PzeLD7p,ތO8.qb~qX/ kz6wb(€՚.*0G>q(F@NEGuL)a|8ۀv@G)u$x-ӹ-81/I^xy)EEVKq/}n'˜&He }B-e1`)c5yq^s ۉ0:"C_Ǽ?EJ%&6["w])F>?% q^hW0y S)*&&筮` 8}vwbϙхk\D$62LTlI8s(>ȡ@;>")dIüر B!uA0t*h6 sRSk2 yIh6;,BKwz-j}K`h!1U Jc&E C> !?濗%*Wɕ1/7Od `~ib)~v/10[ Q/p)lh񔱗\0#y,ptQg6 5RvO3{ %RG@\ bLAVM C&n33QأƻW>~jqmTϫ:M+h`CVP=zbSE;ųVt pț&~@@ut#2jh J[`҆:=PJMsGx׭@bv'GwꎄuJy\!<Ϋ'fBV#k`Uor`:*C[&-ݢ87 dp٭MI| K?©cWux=W _<

~.?4/'x'MgڥdN-1h)E(jF{orj>pVe9#f|ٝD *\OkwQ8lnww<:敝+<]d|8F ~",j|Նm7c9)a=e6_TӉw=[ش)3 5m+Ҋ3`hԆKsQq?K3(д?Ca*s_P|:y7:"l!_O*Uh)D`=*j @o{ q@@5tއxv_sc`GDžB`~f>sHAuDh:OVyTUF.  BT.à?(A.崙*gB;+Ϟ*C+ EL|SmLyjL82t :xP27MǶ hmSvJ<D Њ.,w %l| Wz-GZ$C[%4}ԐpB(ɣ㌳;DFNTӑGzj?浍wM\!6[ѕ9F|Clq u?gySj ǻ`/ .߉X?ڲ)XJ, uL/鯇{= 0/Op' pW4ey%y}Ŵskl, Ǚv*3hd{kG~PDC 0.1GA1(ߛR67>ʧ7ɟ)BTH "@$ DH "@$ DH "@$ DH "@$ DH "@$ J^IENDB`pybik-3.0/data/ui/thumbnails/Tower-2x10.png0000644000175000017500000001000313137372524020633 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+IDATxktչ=:o@M.A.r"-R *uRDEĮjQ΁R Dr,ߙd~<+0sw꾍`]bX `1,bX `1,bX }q[ЏC=۷5Dd Fl={ƾ Cnߕ{үoc\uU+\Pd6ݹ^/BχR{x6" ﺽE! / \WsmCMwANɸ0" inBN`ۄFb.Q)U55zԂ(-L&fz I+4\8Y_4pfeά:M: + CO0&޴x2~SVQZ ٛ`&pkv˂)ʰc"Jx:5yeCdkT23Gz`AW6 :젍 cO~sd]P\yg/4$._]U5X`v't(BEB {/i-B&u_-0N@2R^e(+AV " N`ƤN|463TJe(x`V9)`"C`St I.Uz`pUN?3^ 5:7ѳJBG 98B_Mn?o$0 fP0ؔ&F t8UocHKg;(_. %] |ONt v5,wJ[OBrh`<@Vq1u F\`Hdh;\۲Lkd׽ r*e,?}M$ _iR|d-cKL)?aUa\Xxyk 喁ǹe`*gF ,W?kmaθ~ L^v)@0T2PϦP]ebu~vI/z\RRerm@/ ԫ\e w:?Bكe Gk,t5SSS@{ NS(/1tP>eX @NIlx/,~;#_}Z2^ p@V k$.]N4,`Cqhh0Ug0 PN sL5w. 2OHM 4)۳.khREq# LHKӤ45 'lg\l |&?c{rݜ8hNne<"9,Z1* s#)$۪kG K#"9*$\6xErF @z(@hT#('G(+ؾ!['1^Q6bzFw+T˷ ɄI߮YjvyMXyW3Q^U^Sd8/጖} уw ,`=Q-,#$9;6Ύ[P#BC!4Ũmbb )@|rV+嵥W.R 7;5*B, R`D [[C 7'2r+)4&'A,[gg1 Q-룸kQHvc4K[{I@VM",/Siu+041^kZӄr]H=u|{"4- \3U^?հ ٖjȦB%{=0HP\{/N&2zU1RSju_KCn[(v2^&v7aZ(jX8F0Tʛض1Žlnl$D dPpei;_<ÙTr0&䛔 X dhHñgrT!'7DwHOCd,M״O@PN :2?Ha W9ͻq:ՔS.O{{I+^V|V56r3zD|߶f+)˱`R' l('@B8(uye<ۚen 1:l[Ukg| 6 o XA,=z䨸̂jMm qVEx28/%" %v1בɶ\C#ܞ"gοRxImnпk ?#Wͨd?aY_eQ %β`,rG*v12),' 3nG'|@|xT%pp3^ y ZQ*æ ]EQbøz:8$*¨ d/H51ph*O/QI g#(hc9 g9ؼ.kwJ@~ϝП՚z: X0bB $mz( 5Wh=t.JA(F}W R[3zrkL8D+zqI?2"'>u.5BsD) r(ְ8>!w/O~P^/Εvcwkb9 B=>\KM Ej[`8%_R1 +xiI`RrAT/_z" 0:S!e+D x쒈T9͠t QFG,4qA0rpge[%gID"[J@Sw*Xz2| aU=0B@Ou& -z1Ma pHYs+0IDATx}wtUU> ^EJiґX袀"J("J F=T)(g7 9k핛[Nr3?#??%%%%%%%%%%%%%%%%?B+TVlX( HSV̺3Hc}^+x.7<.uϗ9kk#D%`>Oe<ۿ(OPOf>tϟ?I_<k3)<rGĄGGԪW7Cw/kysDK\W `޽bbҴ b5|`ߔϷcaD`B|>v< >W#6&'>&&pbC6-\*[lکoT -m@-\ȑ#4n8-EV# Ye=?V Ak_IM8Gu&V[=L|̯$X`&9/^2&Fo~[ TSכ;.S\,Ev_qrNB?e(4o$޼4gs7K@:$g^,a=O_g/H0_pȶe8',]_L0C +/wN4րz@bEӧOSRR\Yl:1C#4Bu, n^%l w/ĸd hehR4`ou#|ҁ%C&Nd;$;_372-+ 6lY|hi7n#-Z׶?45h!_l L7G~ IT>R^xW7I}XLDsiJ9ENSsM4I@eˊU( @vUPKy$Q˿-xSٺ|f~fre} 84}Toi$$7l;g>5Idl0=Dt%Vέ]d ph iǕ+Wx,aIxlQzP`?@=Â_| NT;%YȂLb)*]N;Y0t/rL,oTV4M~ M33f&.6s\̇}ͬpLj A+<^bMNy‰77 ptԢL7otrQΜ9Cl-ap35ma_/:AsB=D0y.Djf>aW$ @UOs CC`|P/_ aBLL b(=& QE!s˽w>,8q>pU%1JxHp}! 6gZ3 k۰v G -^[h[p#)"DW{&x\ P3=33I֭[Ν;={E@ݜalM1ڏMBB1T믃X,c_7aLH}ATL?>'|&UZi Kt!u3~=KִH[#FvU!@=hҥNbY =A0c&|W?"%4e/Qp@ k9m׈RS?n˝]!|Jfh魁AԴ3o%Xرcx= DǏwZݻw玤QCs2hC9X0 @zd_W@u0'knO/D'; R:5u/zPjf,6lݶ-&'|B: >\? $<3n< {xE<|Q~c*1-HK͹D꧁=ldV,NN@(R9a]醶޿2/n)V -ذ%=Nɓ%t5jX?]vWK ԆCeS&Er#\`Ar<h>,y"ڋZFMXaAøLE#GuU0A#A{> ?N'i=:57{8 pfs ULRr&H)؜!r7YfTF ڵ+s^af6 i#-X9,C=m3؟RpQ)):''R*]\rTlY!"W?&~W$KNN*UPJ|X&U`Uc DuY@44H[M,2+y\T2B-[w`СԥKF"1ƚT10&ZNgSd?^jm[<>aRԇW$ 㴑tk|2D(mv8X%BNo?WS<~s/_.֪U\o0gḎYr}G~58tO8?mYT|}2*gT5y7J:|/w~I l[ 1~2yJ'c_tɨbKEPӧO]E\z<EiF ^ZW!e>3-|Q&,·:EZyӷƹ#, |# ({Pq +_zԴiS pYڶm|OZqNmBY{`X߳-gjP xO^A H̿¦QtbA;< p965R[]qy4J}6gSѿ{נ6hIG 8լ"EɇH 54V fI%fy ;ǘI6du8̐"᧰_M}Dsǻ}2}FAW1~vq @ i>CfСC4y4g J'n1*qTh ;BPSZTg$tlbe%W+g˘ >Ʀő<dIZ9}‚t/'ɃgR/ U࣏>駟~`_xڷoݺuw.oBXu_4vXHebCk $Ex/?y)}?CMLј [#&A403 S~L7ǘ@#|W }'D߬Lp)`7IQ Z(AP! /:Jp|?۷\%:@Q3<#J"p7@|\A bU(9%%Eދb{' <&\ @J9 @I6 6HTǞ|Wr |_v|5AK1/Q/=uĤ` _^z%ձuVq1 r?`%H{+Z_1BٽP?[)igka/C !QIӭjeX 5QR5 S HUZ5Jy?<>ȾԨhDҍJ|9ņY٢N0Af/Lo`B'N%K7aX k3sBzf^w|8CuLoxl6}Mh~&+úPRiɼ<@BE|U V(XeK2u=d(0P?,DDt}ڽǻ p1kONB?0@XT)C~%$ONJ #~)8p@g^bbL*H_*6p/1c'Ot!ESE#8AT ;J+X* Xf WkG:yZ9+\џױ{w{gz9I :D>kQ~)QE =#5*!=hv)yaR ӈ4( 4MX.W>&";inQUC7xϨӸA^ddu4AS!* s[rxaRt… aO:<ʽo N!0 P {@æ @%N$O?ԙVcǎb p?CQ>BK= 8 ^у : '<PG ^+5R6x_>Bkgcv"ϻnIe.VHOO"F׼ys:xs ?ugO % uLnjyl?e+ElÇ:٨c:R!Ĩgjwm::.%SBUP2preá q.z05*!iŎ6ńΏEsΒTI8QF o޼Y;;6w<0a#@z|LU|q-.hUl.;ouYŦ Iv ],Flv>'&.fػ*ڃ~YCGç}Nea^K!eavzU\zKT4$h!{矧oF_vMEX Ucӯ8 `L|txbz |TFZ$v?(<~[~9<*K ǹs@q(@R{hjՊz)1fϞ0BMDHM'@F@@zq1l2wο/0-;%9m0t8UWsnO6g_%Wѳ5rpD_ ćd>|}lËoҤ,|U^*,҂U4? }<*DZ>ij>`,>G0}6..r VI| ^rp?kt0:Ў%t㇇Zؒv%@RKo!% *s`%t,jc޼yDFFs}0փ@XfDg^w@9 5f%;M#w"d Z*Gwz#x{; @,4vm^pdUǖ-[D Œ5 pQ:D^>޽{K 6I?x͎@GwmsW!Z@O|?m-d 𡩯* %! bO֠3gu@ɨVK} Dh֬Y9DA)hRD<_וA/Iwoh|xlPM}vYou24v@>hٌQ Hr=>`w@j3ǁ :u Iscs*wl@MhC ٟ^x%$u,&I_UTIP0[1.CEnd`<m0D$Xa P<5 4_t# kX"uk'3TiP@ `X^?B{ѱoo59@ְKHvvZr/Te>>ƺy Ea k7}d*4C`@&<1! &ƌ#~3 OΛso ?Ϻ}AkSF#d_ȼ14xD I(ht|Nz|lMq13|(`N/De %X`>.%P QJA? l6mҧnu_ /6Ҽ_L c9DE.|NMe`oO`!zr G6y)g7H;R=eg(g>Q S.I%AhH#{;`9V٤_~~*ϟcM^Y&s@i^ɫb"=|bZ*)6_0 ԲoըbO68BL"\B*4`XRuy%40>( pt"{Aޕ"B=ѧ /lh.s'Rg<Jϐpi_P@"PիJχ(>e~W#* A_m%4x`r2]5P,yB"[P|Dw|WL>~ Y 4o`GcS V#&u` GZՌEiZ]= 6]ԁ4XfM +T\>WFk ~vq@fNECaXz3Fia@ iA(#C4>2?K(UD4z*ˀdD8Ď;*:s[bw ^>#=ibyB gC4'c L,t`|jU!b&Uً0š(W^-Q #C 5X8' 1.>{O0 mcSR/'{M+:.D_8%THyI_>#̹* E"P沇H'ReqNˁ1#՛k~H&|h !A6]gu `8}:bx$fe˜] .0bPJ ڸqǸ*@B 'Z} ?7]n6 |nS6L]c@|xQV2ANj}QAN&Z9dTA_GXgdS.!$~Ss#`-WuJ P1voVN mZ.;(]QGt[&OvZ) f/T<+uk頛'.Cm4 cs}{&N)kH#ܹQV[ \LsC@@ɔ *\OVpPxŸK_;8KkL[ecG}oFI8||\la#wjkS@<@i傂~ ޴iθk8@CǐK k?8("a ^wQ0t]=Հ/{Ts+^m3G3y Q>R<0zD#( JR8~ PB,nNx{mHEi7f[?syFET\ZeIp7_ܖ;䁣rNA|<0=D U>4ʽ?@6xbgO%Cl_D >7s#$^jdTls/@?xSĿ0ל:G -H3Cru}QzAqfl vZ+0w}}D7}^vqe+,*YyGG<AǬE^*5q>̾Z }( E>}q4oq6 @ pe][³G*CP E /!Ϟ=+Z]6XW/@;^u?ڥTkƈ ;9,;65c^#i#G~.rrREX .I8v0[DF}" UTX(s(]KɿѤqCw.$'Jtgj&((QCؗ18QΏ,0v|:>5(2.P/,*P}h@Xb ?5:輿ϼ-H-{a IЃ7`y 3+hުUZ 1j4 X A5*:(g4uj-_B3ǝdހ ;{7IΊ~_o*zW$ `?t9Y>Q=_#@-:V¨Oyvת져H[|lӇmHZitswCG[vngsͯO erU0Voܐ<}H.dD.]U0f}s8qWտ8zw>4slPxk`Pp"1 CH?RYVE2q KSzvi"qcGG5.3XЩbKJQX 3_MNo~ O=tywoi=4׃FMڽ|{ 0ٓD~(X n9.Ig7 Ӿ/u ߏ7~ޝR_'., flBW(")2E _g=o['Z%E蹔G狰/6p(}6GW@9 @ Fo vvQ -0VYwC Dɘ! 3*:> 4jv9.$f/8\bCx(SؾE"^8mZiEQt8"b۝[&' 0_wl}l@Fn#?=*V^VO>̄ :E,nJĕBJ R6B 87uL?J3_,NH‡Ga)<׌N3t jV2(Lnvv@: Xډ-pq>ٺ-#֙o [YQtR%0B{J`tcX iC.{'0O >a pHYs+5IDATx]ytTU?Gv^mI*%  "v&b"tkҎN↢( Dq<9}fiw_R$*:K T{~~w_͛~ = z4thС C@&M:4thС C@&M:4thС C@&M:4thС C@&M:4:(6-^TȲ1 ^&pv>Wqw?MO d @s?~lS ùO4.!hبqCʟxV&;1v%n {?S<ee\"U]0 mHt% 6ampb5õ6V&CjWkN44xD+`+d wđvkm>wJ 1y@qoP6.D%&*߂9 EF_W ITGq NB!. qH~l| d2GJ{$]z}Ptb?*a ?i (c0 !ǢTJ8klDZC~.%2t7e}D@0B|Q؅4Q BvJ"dffR!Xy[g *8 /@Wn;Y@]~)&Ck7R~@3@Fz2!p>L}~1u.񞷀 G/R2tˠo#>\mb703*/Pg L@^cVY0$7`e&Gm[qǩJtMaC=aL&gK @p_goaab[ҝ jn>X 6עPqc읮f2 | 'qn%JSf5Qv%vDRꙟgb7ɐ%|_g^WdX uc`mIOY` !XpB2tӿ 5$r8f^%JI?b ^>hzm@+OsW2%q"ݩIeRySbId8"dc5QÄMn8i>/)" 1m m  Ia, A(G ~T;Ju þ]dksÍ,$(`RJ Ƭr^b#=Wl vZNORrMrĠPP! 㑄{gbg3KN$8.Y~ЙW<2d,R-g1QP">vRYzK;pDJ%xWw=+v1 )"cd+ª%Mq, *3 `68o}ߗi:G: rѺ0)ٹsnR_* )8ҝo@8|+v8] n#sTOx/p8h56 za 1F;jR:O.I'cVgq7 ;Gd(%)ܚ= 1fgK20 qji[={d8hǑCt+IG @Gsk[qEAG"8ݯK1LTV}zq[N 2|-LOIB"n~_h '`EjRNٹ= E#2.tnsϟ=mM#]qV:i#{H836Sn/1*-rrrd!Myd) &x+Y]Q=uge^EnN{Id; q @"A+؁G?! ic* `PސG-X;#;$t!¦!%_WwApSȣ&a|V`2 *>f)qQa`ALxE4 nXif=>c Bj`7d #ý$ 4ZXjDuf*LJG?BTf}7YUwUI׷)\%; du(mւ c8m]3ݼ,_ "0c3u>;~#>I;vTk?) It: Q C^T>֍08S8_5"H RFi!L/\+:0 `E ~CJ6UMlL¦ Xl<|zg@($" ~t d?%Nǧwϕj{2\~B,iKE8;2_5I|ײD%M)2ohDG0Bȇr7Ok=%mgMeV # %}-IYUQ^OpNRjCV-ox,+'&iXI)4M{k4U^p_e ݌9v te[QN Q |l[zUE ykz*K?UesqeFAD)G}jLȟ?|^! swVo[1*><*̀G *,Q]@oن!ͣܬqR1޺]U?5v /,,1zȵH`xGZbC2F+xk)>\ i/+#Dj| +wZT Ry2%6jshYcO$/ƵGCyXS P^S)P)H,qfw1-Oؘ2AOoI5- `EpC#U )S#V\}<_ 6ӭ6dz]ܘ']r2`T) JQ~j7[-S5K~iE2mX-oU߰+ĿmOIJ4w^#!$oWs[-0SJzfKnt_bԹ{ec_j;.Ya?azOmxVԋ$}dXk_ʐ/J@xZ[ğ(%toISG놪uw@^W$ zX#lʃ2r:'o41oh^$W.WhڒfN"0V>|_Vؐ@2SQ2A8fq!;g|{fg?&s|羷a o6VjU@U <6Ǫ3 }i2zyoa!&TcOh"7p1UaB)ϯztcF*imu*_Ϩ/m]woO#Taey\A eqU $d;q8"@ ML|J= 4) Gâ3 =vyg3zfp& #Y6@"dc35>(*4= _s\7D 'F(vx0,z=n?S?q%_J}9X=egf`,6 =@౎bx5y(B٢[|JL"dļ\ě!]=EY(%Y2\Pm,VvROT7"'6 s$MXTt2$;}W)ONJ=h| H[d_`2/*-ؙ@떦X|_'_w7uŷS홀R%M3 BrlkkbBv ;"s<->Ipn?|I pܖv%A<Dw'pHu%woGr5?K9*jL]r>T!0^aAWhn!G`IͥQqѰ#[t.&@W4~Mr.e4T0FE-cR}k:IM(+(.nL?#:VO&M:4thС C@&M:4thС C@&M:4thС C@&M:.'IENDB`pybik-3.0/data/ui/thumbnails/Prism3Complex-2x5.png0000644000175000017500000001355213137372657022207 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+IDATxwtն{̤2 M@HGJPP)B @C~LC䭕aM8gdf|?sg=$KHHHHHHHHHHHHHHHHHHHH+&xcTɐJvx ܾaaVI ^B6R [7/]ve7mQZ:a9Q>PKf\d4DU+"oԲ1v̴>= ?fZHel&sxgϞT_* hx KGM%rssڋ9G+.l-uL}zsլYky {{ՙ{!L<%@,wHP_~N:EqqqsW7J\2i4 1G\y~XCcn?$(gΞ=K_~ w ѰGH DLY nRFkf]%5P:ϟo~')YWlK @$ޣM<H7&Dih0lg%I k$l 27nL;t|g#T39#mNq_MP|3C rտbg}F;v۷? }hC5߿G0A}CX3Og mؼѣGS۶m~8Dy0 uatX4?^]S(8eg볰_|hт߿7{rÅ˄ 7W{l~UvF2?>'.\h3w>$OOOjݺ5_p=KxriQf^frW9b)r͛ XhzjlXjԨ4d1tho=Mll/5~ӝ*@FR؛Kَ?ofʕ+,zZZ?&^O6m"D cbb̑\踹ELхXzz)h[8pF4S_-u#aqԩݾ}(**<#@w2W>M9N Kb*Ou5ԷYzdvY֩ٛſk*(=@*ɓ'ݻw/Տh߂ @̝;_!l)cĚev*q$6m''+?nUٳgg0f~MW(شIQ DUŇY@}l\PIׄM.=h\38UK.Վ=}?c:5?G[+#w ZkFMO38O<1 [PP@!!!,5i҄cFlqp46هv!?fNbѱ\v@_/6 ;5\ *n9 _C{qP(55aÆ=H|p޾f?P?~-<2a{7վK r\pf͢6mȑ#Eю?1*|ߏcWkO ew8G Q%R$Ι* ;v{.p!~?dyQF7m3$*iŗى%/3IuQFCCm6y-T7Xt:'2))N E&Yu>ԢH cgg8ɶ䔢< !>g׮]kN֭O>GWR\VH+xlNYWOg%*hR 8˶egsbuX'r `ʕfWs hҤI|8MiI?c=<M_е7unp|c䮫BKVJdڏ/}뭷{u׾}{wK9n?{gnu BϵoI=[{ё4=ŋ#"@pr j Tqoܸ?.;~Pr;w6`JaeNƮ_ZA- B3e>:Ͳ,=vD 1~GvA x{{Bmr 6a^W</L+U y A7z͛7B~ TVbH[ BQa_j k(8ϮܺeG< @8TQqjG* 3Ga .r>} ~w_*#Ag~?6>Ja1}ہ( [D:x G1M@YKSrr-ztwq)~(IK{ڞ!MZYWJU Lb5dRx@ZH<u*j'L`NGu:wa:< GBYi3"F52N¨c\{t%`̙,RNN9ӽ{w{nvP.VjUNQ uT0դ'c=K _x1А@L$$ پطo }С 7|PXsJyįJkXhqڢp#Q=EgEhڿF`Pgӧߐ4 Oj B=Qb8^mPG0lwi89/!` r T#xv{<7o~vf߮C Ŋ9J M=׆z1k51)SctqsSr.ۿxv4Tx|T\x=,`)>,{u %/Ij u`OC"@0}? ^3Qklq~AFbaÆTzusPJ/D:#l?^& QbڏTFډ+>:Xl땒n1cf@J8D͠@ Xxn^@VOφ7;M&pǗCZӧAիWgE?~?G7B. l6BȌ fc0,s$>>EP/ʚ;E1VPR 5k8I @d \16nTNlShʊ@~̟déZTEC,`@ VpF@K9J9&h1.B@~X@qq1 5W`8%T`;+=5@">؍n%n;EM11y <ݿolիW9"/@=F=t*SYÂL&t/f4pgP0K{\=\߬CǴao` <q&3@Xw , {S=Q=}]Cnmqu(/%\OaG|T[5kƿB;j(kI]Wߏ&J =R08R%/aeN G04T̙3S1 mUf$S3Os:Rl`PfߡPiƍVQ~ÿ8AҥK"o n6;֭'%wzpHA=*T"s9b@HE0l ~‘01'՟U~;F|,iۭȐjUk~ GQ@ +¡/q)8z=>!zޙZ65W܀͙,Yb.Ж]1vϟw8>B) i)~Tү]Y  ibd{H _hiDT*$8O$i?$]u_!:d@_ T`>?>Bj={PG,^wҵ Ð.^!įp@?sW^\-Na8 @ #??0F{,ȮaϏ<:U 1/m^SQ Z02} NF@$Ţ8@rq",{5  T$+$OP5JaS[ɢII;"h˂`qShlڧ "7]KA}F  @qp<#!\ پ+p=})Pi/+1T3AKDZz_㚿D,GO^{Md!m]@ӦMyGϋ ^B ͺtnb %`Kp䡽 '.<8Y6slZ;qa3=!ߗ8 233n%>˦~|_edGtCR J 6v9T.Ӯ// 8`ߗ]"8-#Es%Oۙg%q$6K{ԗYiiii $$$$$$$$$$$$$$$*`$ G=IENDB`pybik-3.0/data/ui/thumbnails/Brick-4x2x3.png0000644000175000017500000001755113137372556021007 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+IDATx]{xUwo@5r]r'@Vj(Z4@D"xj[i؞ǓS~}33^r}'ٝ~}efv|ʹ+E0 `.ILf40$i&L3 `ILf40$i&L3 `ILf4c޿Z&WymRͯ>^az`=uUez [Ѷ !vguGmWD %Yd `G 8?uH=jK'i^[{؊í\7d+3rQpk""iWhm5Ed&JdGe Y,6E^&Blro٠G`+/j57IUIHC;.Hz /^a"]瞫,XDg kE/Nwt>w%)c՗nM.@#L3l6DdȰl Gݧף@DHID Ed{s۠؏;xE u焰0~" mt-_G $b8F% ɍ}aw9~RG#o'2Ldpq2%r 3hW$2W{%- v-"Ù$4-1jmu^V}XD_!@\NȐG!##eff2ɲ qϭsw7cu|g5^r_C_*>؉#NxyM@,r A@"'qlD b`KR\,٭A#@+XV 6 @1j1L#xD"rx-{D^("]Uuô# +P}*āDa^eo"0uzlnԁK?u",}\1 H1FEr x|!p"屴4^ lz *'!wدf:{¦U+56*%ʺ(bab(,#_A,r D!??|Dl5:?hퟒFZ8p Rަsαn]~ :#`'$?&0r8* 7 Ót W&Caa!^:HCqgm&௢8h}!2MEd C ;dP! 1͛ cqG-D lذaTK|:ӵ1^sKl!2fJ/qn{!}$rQ2Hz)e|سQb -v>^ES3ߢ}t"xs"$>u"k@B-Q"áim/Gͼ֟nr,~N oG }.N_Mߙ@F0PJd(..f\HBQ"6x?I+/%=FM?>JYXD8z[x?<>^C5G>b9Z"ʸu Z7R2@xk )}x㻳X0[g4='c-,t9LJh$@b4^ân|HDŽЃNd4h+//NxG31mҥt2Yk065OAaPX8|&rX8n]q6+o ~4-MJʦ R>l+Oԥ{|(z-3@<> x.:;>jFQ+Os}زcՙ4PH0 `b@UcxC=C'G@v h;WvO;nmN);$"$M2ל@3eo6fpa.k6L7 ݖ/|wigX8/'Yޤ5ؓ JB=>n| 4DcPNd@&1bQkt=G<} )dw_S27N1r<w(V K(tAjw+2Q%hs@|&+7<nZQ99Jh)0d6j(Q`!,T?q6KE_2xn iEkݴh}<2C$ J *3iIa* `<v]O;<r=…7Q3 &>(iop!>@%z P6{"+!"M[(Sٴx5R𗅁2c7cۭײ)9t} on Q*=yeţ?Dduw!T pU賈2RGT@xlQk] )=TM凅oKE Y3 7\T'†ZD$6ƳD^!u+-cuFpVPQᯅ٥L9\<=yD d QMR?`w^Nk\,ى gWTʵD&͂!b y -`Aw>mC $ʓ|aSc8N?g Au}1cke$*ѱ^ OP#W)x@]_dG {l(Wi%1HyBd$YXy SP4y;s0 CZ,i;XqPqRptN YICr"o&&єB~шZh+bu5qak![/n67zD8Ovnqȑ#ٸqy›<=y9lҙ[؅,|񛍍=FJDApq؇O15"@\PFHJk ( DhA6តA=fE'T e^==솑k|{rA,@Rxb߾zt  I-kh"aH_-#9ra,ځBzl n!U 6^{$I1YaDbs&YO`N $Nh K;jULxH# [:z r\!} YI!.rGk$vu'ɛj>N "`;] >/H^T Vxf ̻u2];ySHJ^3[K3,&;}:-/KG AdHG,xYQZ'Ce!7 sdɼxkIcW ׍bxeWnZ% lA]2M  F~8W,!Jf*+&/Y==> ȯqs N_:'A Hd+SB #8J4V$I44}`1s#)\G!!N*cq' 9?PL~kx/%S~~/`E  f sT@0 h^`I`cX eY(kx00( c !-|{ 6D&@\Ǝwr E`ĘN Nͬ_4=> mo%͠v-;dIPJGс;R?篎gvG!bOo {#bmptB!4~Br!z1ܐ^?wi &<8  !sUBEE n]o6Ё99>P4?v p^`[8bQ#3y^dx0H&R4nk$& `eiwHO6yߧM0af&όJؑ AU?%mhB-{(+ Mø6J8kȫ a T!b l1Sk~D%I)!VVz1R$%&4 ۴G9h+9+5txw "A\UFxIs^5(X9 f[ { do&HɃ*k=_ki!'xSi&["^0̽8uX=0J_~X89\K:||RٓO?$ yif{ `՚8ÉLyfi`!$@ھ58WF5SJ#$p E}7rX^*@/>om*9SiO[$*`8 P<(O_'Dc0_#AVl6@ZA? : 8>T&@pI4q`SXXMgE~fp~/K3bhDH k1A›J47(^$Pۿho rߨhY9 1p$Yz t #*/vwu+6,"D|I(M&@M j tŽ?UGU#Z$o͎8C~| ? إUzF DzOX=V#dLGaW({4@G@f3ߝc<Dz SkwbwaғVPSӛ9B$ I~w+^L  A?ލ7Fk#,d-rG1hXYR{|MWr@?YI$vVF,W@>^mdːJd{ &Z_ i5l S=MK yMUc)ڞX>)T,jw"$3ex&0D0=x<+ 4fO4~sTrWNNOUA%BRS<$9ֵ}-)޴.W ½BŢf\>3 TCc X8сo*jIX5776'X&yw~Nk޶W4mM#AL,i^g ͽ3n5-߃&hp71j^0淃mg~)Ms` §Uí-F;5AyG~_-7ggx_ֈF:U>,Kz7 rOz2S\!Cho讚‚fT!/lm oŽdݎ m,k+mw&E0 `ILf40$i&L3 `ILf40opmIENDB`pybik-3.0/data/ui/thumbnails/Brick-10x2x2.png0000644000175000017500000001002613137372620021041 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+IDATxkpTXR{$Fȕ ܂\,@@5KjN-UT(VD١iejSt3INyٰh;M={6{}D /A "@$ DH "@$ DH "@$ DH "@$ DH "@$ D@vksp&q!j:f_N/WҋS=. #Ť0U~zA.BC09"VˣW+gxmTꮉNLG#"5>Mofk<ލ׷Oi> .vr/+Tk6 QTm$.NB?,YkDg5}a_iw`)#b@xݬ.'| 4ڣ)9?z"C%`X75XD@kY=`Ŷ.#`P)R簲U|' m0};ط6ͯ +)}Z<@9. {]G;m:idWfP90Aw2˕V/:l qtP܆ǿ ͷG?U\Gd_5)`Ö|?L^_tH \0@Mh%CԲhc[F | Vztxтch+/ŁS.h 7҂ FlNeaFc3y ǽ‘#w`c)`((!)Fq) r:qhu@j* X, jtq0t5~0pu _9=8H5x*\{ W2ͧByN܉<.Ȑ|4ܮS UǙnIG] 4Y*s`ðv2r-i&T0M-P׋q]wkֶt]l~Xlvי+*.!>ߦ+Ͽ008f~4i6`jƛK0澝xm3q"SS)XEb892E'?B?Gm]qí3 G=#+h![jr 0kar>\hFp];L7m< +p֒a: {$l[kWE`K9 |u` ]95 g`a/yXH%\ޏ`~ ,5y5Q<$_7s!raͻ[21;pA"8h.)h_?0#([[a4{am0ډ~*<*"g׉$R^I^xٺ,-8;chDw2syB˽b=ehbS`U"6@Y@"x|2,J#sZlq?Ν_u!\#|03 .3L vpCS}E͡]:E\W*m0,DW@ąYdצwM(*oɈe)^pxO @wqH>ϑ< -Y;H=Sьa(|\qsc\V|j¹CzzG0KtU8- LDk+'h٣C;q 6!2jT xkS\@> 0j*r068~2 ޞse^zx(%=$X=<  Oww, rOB<0XɖJ-U:h6`z93t@UWƽuu4k/߷=fc$Ezh6֭m_j8B"ģdNî(1i}cP.9rL R1ԄNR4PådHO<zqaiVڹu=<3mMꆶK8*&E65R{}gV\s͡ PV5YZ@P< :t Opi5;1X-@`wDʿ(Qpu?gը)ֹv0PѾע ^0FT #v>m(qJJx?U>N @oC] k5iXJTsHN0 F"ěqQliV#N1E']^ z9L7 yl~E2]kLCTwZ¡gh[ v0:1eP51j:s4@-:[u~@,>r8?'Xp)܍>ЊfHxcA³>tC(1o1/!Tຍo).-NOvlAP:X= znȩ]DV5@juOvw(Ԋ.ro/8ϯmHn_}5ja99R+Fgm[ t"&'F^s둫yc*HNJOMp`ޛ(:y\jQ|"=TLn){J<:άRphow?+|f C}`E1:D€**Ulx_Bj<ש x97qTd(Aq@sxw'M E?Vgo!VL @wLjwڧxsf'}#k7&0E #pYa&r}'"Ao:Fyni6 'K|j* y=S<H-|YtYf(XP&sf U Ad>"t,KQHyʿEϣ}zqw =[XƛR^87OUDHr $!{-dU"K NСIv3MPcPB 9-]p_~c7+(C(gNU:?Aؠxk [O%=%D_~Ԡq%${퐿;3TQw>hp_}lpز8xuW&M3TcfbWV{ygBl:})\&3]O ?ͅߟ-יd>~ VӉ;Wwcl!y t 1Z45D3,zbG6t<'_mΡ ˾D0=STؗ&]|FiE[:]HkCtq/8&T.c;3p`("#_W|TN{Ҏ 젘MDmQ1ZAw[BSb½kh<- r>KŸA-LiV_zp$2Dwƞ8*GylAhjoĠ;x|}6T?3TRJMji/\2=>?"I DH "@$ DH "@$ DH "@$ DH "@$ DH ф-8qIENDB`pybik-3.0/data/ui/thumbnails/Prism5M-2x6.png0000644000175000017500000001435713137372700020770 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+IDATxiXg;oߙ&!!aNDET\DAʮKE8Amŵj[RQRڢvZtn3]f=y}N\DK? `bB@+V?qu{~o Kp=L.9Z0L |6HOMm>Faw70J 2 #xSP@|\BCCy* 7WaJF@>L.CJI Wh(" D:OL|V aaaNUߥ/Ӷ |dS9蚏ٳxɞYd"B/wKCzX%CC@TY@X0ryK ?xqYc Xo&P\eOw(+C(6!m,.@IA)(uV&}^< &Smiƒ!~xń@0&\$P(E{O^ Z6:}p'{s.d&9 n߄⣇oTk4ҪFa]̅b*t#07w/%\L%dH0F0ʾA G 9l<y; b'md=@Q rXI8OmmHF:yjos|7npqJԪO?ZJ _1\5=<{4#wPf&Wz  AX\\KOmplZUq6~ʀ9#BHGtI{ːٰ4VE3V+*7= .ϥ&]:z5\ٯTvR K`~#S?jR.H ձcǀR1xI`ګdcB%k{t 6")(SàmUwjWj}?j^NLظz s0v-G?dP@@G6cr@t`^7g6z৏+C:tE34!<ia 4lcj זl%BაFNYLF`{KX%yuqDO`{Ԩv:/([v7CBTi`{iun4r X @09x=瞈V",x.[O<'w6wCS3swF&.V#~@^AŹ`$(ӼYb0/{HT.z@OA;^XTJ7Sbw X\٪3eCtbǮᬳ :@ HN6g|@L>ƚby5.Z-R۷q6P\7^!ZE@UX ]Ů=q$޶k Cz #wlIL`(s;h^!> àl;#''|N"&{ wS , a߾߽k*d8x2烡Ǐr| COOR ?a mGVnf8l[)ܨY$Ju#J iz0%\ P7I0àTuv ^&|WuDϽ~@?zǷFI ?='[;f뮽 dm`@SDc7c`c0t@(w;hsUPu>+ޭ2=)o~;isz=z6LO Q[ UM͢ڲpn) *"9>-[z,$K4[( aEgW,gyXq W@4E>rxrA8?o{P;C"Q gվi:aTcRSMT",g9B{s*dl\p%-;Dr_,0o0Ěr8oBsJrGC0͛8V2 `OkHOѵGy}U@ZT* d$2N ɸg*G(1$Hu,bMy`Ao/WQ1Zo8}t_I1? D"o?ј3Ҩw<7N-k"wbaxDtd,e y!\{k< r$zT`׆(l?;K:4`x,ŸllAE}[9 ~ɞCx 2`Ò H0V⤐8|=RL-KC˽ <% &e*st`$6gx[``/ipe|I?RC!)AbT> 0of_m0)tRsV#ta7::0 ݼc o4~u,tBeyʘr` :X32 ** ,`>7Y{z{2"SO;_ sуmm@3ƇFX(tN0'S`f[fX8ݼ (^-q/VI@M]>w3rB@6>qK3_.z9Yf $7_4^"k :,nAp2`tr  NBR }<9SwEÏZ`-&~<:5dIl`猃ȄxDCBj8 `Iŧv !>bۣ> n@x w^.m6~_NM#G`1wfpL>jI k.pvUǠ٠l?\G9|>dbh>037y^2{{>tM#wJi"^)YJ)y[~eHX̽qA <8y̕; K 'e%K, xB)N˨m\5(8=E@>-tt&& \ 5?~dBl}oK#chQ[C74H:E,mk\ceHzw6~@(j81C펖 ^_=<@ry)@arOށ{IS|GqL 0*BCBǒн )V AZ1yNP,&"咙`@g77h`P4950c<X k,lŋPbh}TQwkVA߄n$`s~N b~'Oa?{hK8Utd! a"HCpxpqtG!;.PH-tJco 7]z64`㲲`V1U ^'}P` c\ťAOs{?v?Zai~=X{֚'XY9`4c˔n~$'XIe k4%|H8uW=v|:}:,?$]P3.g6~v '|io{ow = æ}>%왻@O1_BY~DqCZ>PظNT8(@C %}#I\}j:< d쏐-r֣:x|ʽs_ ʷnn);y` WKg.bj-۾kg}'} #,,_{LWk ?A L L L L L L L L L L L L L L L L ޱf7hIENDB`pybik-3.0/data/ui/thumbnails/Tetrahedron-1.png0000644000175000017500000001013313137372642021465 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+ IDATx흉sEr$ 0MB8$E@ؘp߇@ZDX\"e Rr@"DH$ηϙI&szZN?ׯ__ <7M bL2"2p(. 3ŕFB&MPDDMiӆBCCurQU QMO q vƖуH L(??7 gB 4oAeG95_;w5jGw}eX& ;xP)Шp`"8jUVt=233N2Y@0{\s j.)m p9@ɇ;6$$$PiisSJKK#Μ9.]'I К#Ԏ^ݻwS]޽{e¡CJ󿙜(?H)I!66iMٸv횃,**rP/ү)yzsǎÇN8@z,ॣI I:=s@;ݻwho/^`o3ݲ0Qγq/ӯJ ۷K^c+\L!Pe˖t9re̝;b Z@:u ~pAGVQdd$m6Qb@e@U;~Lq؁h?vX.`**&Q 33B墪ֶ֙<aEA 8A2rg\~^ 7 ^&QEDNi޼99 .k/KtB<Ejp%]cǎk=7Dы7w~TرcGi]D6Q!#c??oF|;[ZDQE2kEy,&Q7ޠ۷o7ӝZ=ݳ.ZH@;~l*++[?,!z$PC ,GIɓ'ɛ)3 ?!'˿={Qb%}WԩC-?>EQ?JV^͊79n__m4 ľOLϢ7T@m { xb__j(R оsSSSC/^t `#xo,,V*8?}V:ȍQWqzoל7k<%"|6ٳ˱k׮nw xEoh\pJe7ݱd[7ۄr(Jo*׮]Kh.DZ2~P/7u2-(>'5 L<=qu - nhт9C!"|V:YV>_nG~$ 8i$fq7L3 N}G͛яl: }1:wL}3ev _֭@wFEE1v}8l(}fId@;w)UUU>feeP?Q@\(Yo8ѣG>E")))`ѣ3*HR&x|5rlȗ$@^WD۷gK.+Y@y3g<& (N}(={HR0X@H @2Z@W@@ui*; *m_e˖Ie#=0?[@[H(%'"Ϛ5'@>`ْ[ I#KR0%ۮV`@yzx{!ψ#Xqhbb"[+v(E@)6)f+ \p„ p(epM/!bJPlT0͊VQe2-BB m۶k29㇈> 4H{>U$w̔7\ Gq2/4ު $qbE /,uiuOw+W% ܽ{w^)IM wqR=U`^8qdX@T v'b6'vXӼA>ITX"{J`@C7 &* v5)eL`E6DXb@)Buf7Oi?yK vW^\- .{d6U#`z쓯X“#ZaÆѴih,<@ySd)US!99٣2*ǏϪ e^Wxz]u lgQiU}X [B4K},ෟz +-ɍTCQ.x<~)'8g%z454opդy|5̙3N(//?n`BIn4yhRBtp6N:%I @E[\.ZBTT4uH`Nw֑G*M4 g]Xݺuc}P ԽSWYh*#Dz?G|aP ">1"So?Ҽ՟i95d͚5_|E (cy#.ӼEӴi8,p4rHVD585̬o L~N@1(CE X\S/7Nh/4XM|I @q$^C'4*0PF.J oJ`gK76k4O)!@cTTT8<: ^/eiJ#ZM4[(=}$PWBD >ykG>t j<ح{!Ɛh İ1Q&Nڼ '^S@ }- A$Pa4'3瓯%D1/Z@\ Gindn; \x9%ˣDzSC\ńYӼPM4/`Ő< Q x6>})U ŕAA =jP .G*o @͗ ]DIENDB`pybik-3.0/data/ui/thumbnails/Brick-9x1x6.png0000644000175000017500000001466113137372603021006 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+cIDATx]iTUcվoRB  P,*t٨ #-h+ҀXVAiv;ڎ3D蘨阸}Wzd&aUqȼ{|;9fhyM/^ m4ihЦM@6 m4ihЦM@6 m4ihЦM@6 m4ihЦM@6 mmeBM;&?ٸ]_TavY׆hGƚDcyegi 7"No8ie n kgm'z{cFOo f 5Oi=j'}E'zE1p`m.*m{zÇk0\'`.ochſ_"0)=[p2mHyHlffFs0R?yDYpV1` }|46p ~{wsNQwknV0t:*.43W* ו(dUp6 0L!PN)k^ M ߈|5M1C`ep~M=Siq}N `IH?tS?pn_+0Th}YDpÑO㵻@>9>}"yĘIz2Cbt 08|q ;C\$n~fXLQ~Q~S@ۃH=&: Χ~l e `X9~p'xFbo3>(gСy׮ڥpA,xl:g Cp\̨͚iHt}p'.Bt| 0``%1Z HN^&x{ ?Ƒeb`a%a }ꉺyp\|N C:?ג9}h;~ `9ri'p! N2Z_hs,)0 p3-׻CP&Ld/2Cm,|fu:Dנ?*z "6C;g|b}N8ҙw*J!~X_pۘfRŏ9F]Z`F5^1^0_1S .?\?#etr#pl 1N2L9 c>M0) V #àfFXt{h2-!2'a)"{椐sղoђhe>j)E? +TN%R"4| l]C1w~ 2Kvl>JhU_?M-0[pv_V{,v>#yxD G'3yҔ4~!ܟ9"pI&]&w'{ʴ\39$XX O3yI{ADb(bHߋզ$ eP'2Ć$_, S@[Xʱͽr0=3տH5 KQK \^:5M{ȀO$ 0"mA0N[G4I04QM˼ըO-\>5$̑07q>mJ9&mXn([9z9$V{n#M/WVa20 t;S}167![ gSlH"HYqC?:dI=ׯ 2c4)Þ d0L2h!8Pl5YHurHdt Z\/ 9MF'>C8(*`QMK5'y^Ebr,S_KQj1~pqU!JG9hPtmѰt"}WK}zϠG<bqg@=C@DM %,$E\Pj 0][Yʜ3ԜwDfܯ6CU8dlkTޥhX,T$0ߛcs X; /Ahvd9OQUA 2m$J.B챥J$lw9md#9'2χd1"W\>_Esjc`=y.`*@;˸y9T0Rh0wNa(RZ̙0Ěa!\|y 2{e "04J5NEsۉ UI˱ Ug+PUZVUEn*,aTSI sF0''0GI$,AEaEEw2=AEPb"p7dg-m';EK6Z+a0BoX!/|W) zF/Ӡe\&"&zPyS KG4!K%`Ӊ͓jߣQU)ᮐ_DRā4)T)~C f w<%(8߂A }SBpys[}{O0lͰz7h"T"A/+˴N`y@qN/S&`hfAE8Ǩ,u*UPt"3ax'V8 ILN>Gw%|6{eZ&kQ0aq_}J2?8*nXi:.ّP"xZQ<=JE20gt9խB._!7/^dÊ}p62*-+G4OWPV\~U4ow,)+êck\I&$2Xs\,/$NS)P==ڜB E +^8Y,WΟuB_͢.Gc)Jܥ6Ѩtlc@KK4*@pc2/7=E]6A}k}U*PR[j8xfay(q+fH0Y":C酰_n}$,V#vX>%8Lq#D9H6Q{ޱOvǃ b`>]o:nͲ#b@W-_+^'<}/Dt 6@b i$+`PvPmܛ7$Z9+?3*߶{(H<I"FW,4CM@Q΄ dvu~ilruj{ @/񮣃?gbbybք%g뮻!+@(D(Fl'U`~]7,:v~uyiT' ùnGM\U$Ofg4=O}Ty5cFCH{<:^[P~O3/x-J?pB֚ pi('Ó^E<&'N=Ki% vj78 ms}ߞ*3'f6w䯜?HVzZa @_ /9hܫ V ($SDXc(֩4Cp)!yWgZ?.q; { 'q>*of)we}?J R+UnX}aK:Q[O$d9i`:4јDjP|u,_t ҿ S<* 5#<!W@83T%*u}`{0/R)8N{4pCjE;xVf+FӪ T cr㧲D/\JXpD}gzVZW C[gsE͝?Ҏ;XAjY#-L {̏G%$  k ;kE؀HsJ 5xs cqׯKw߼XG;rLm\Zy?K|VNQi3+dO3J$z&.:Fk+ %+̳ 5~ڹɤ.^6 m4ihЦM@6 m4ihЦM@6 m4ihЦM@6 m4ihk[hwIENDB`pybik-3.0/data/ui/thumbnails/Tower-6x6.png0000644000175000017500000004021513137372533020574 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+@?IDATx}wUgZ:3 9gD@, PD]#bZWT`BŀHD]Wװʮn}yuWսyν:=99\qpǏ7G|?b?2z䧣GlzuDqGϮt%G_V?}xsx2:tm^o#͟4v>^ ++=BEݏ; >rk]'57uCt3Z')\ս?p3~Íj24w7ʔ' 7,>Yk>b;|g.+2̥d.-<C3d͸"dx7i}{5n߉ܱe`v!9""L`4+ɀ'f}f*{Wᢑ @!tdg[x?EVșnCty3B!6>B,R2m%cJ5X6~F?_XM T~!"@!#ɸ 0>$v2~c] ::tɃLG``;q]'I2yÛc5< ]S=QAlM۟GF֨=X p}Pa |΁P! s!kxε= ҹsӹve?V&#pϘ:1a|ܐgq0qshgk5mw$=\y*ḑc=KEܟl!N <m;{짌_B1BR>h|d[v }Ҳn'r^`yP)dhx2 ZAsP%4Ɛ&?P0nS'бF@&PdϒL}8嚵T l)8V.q}.32V&>A7xPܦ 8ЗN k GƣH1< 2 ^h<L=Wp]^ΞAZ!~JX8iݪbo H$8c]n$+$^v 3hJ/[MZUcHT]`ocHa4]Ps HkgsV!'Q^^,0ncsL+ϮpneI^(^.B:%CG^H!+;U9(Ю];M0L }[;\Rw6y,ǽ@@|@p`"`(--*| ECǺsULtuieE`a`2X6082B;fjR 0pbؽD%/~[k@|y# T`̚.캱4_3ym)]y ]Ŷt:*0 0~j(e?@Q`;.-$`{+N^ * SzA:V0{D'@P1Ki/d kb%$! z ͙6}II@J20^-f7B( >3#xV]帎=JW$5d1`0>>T xI\*(+]NʦZ0GdZ!c׊+bD#R xO)&| A8ȇk) xXal):UIIAIIuWqVFq.[kA\ޡ  $cx\88[s!Ic_8;$.b4E!|u+BC/p{ ]"RK^B(j)A/؛ PO[mx(ŌDy0,B1Dt I.B@{E`%kƟ='#.f8K :<ܳb;t׻lJ}KF@FK}Rݜ\76upXlXR|W맊2ǭVCì쟊r,a)S*&Cuks廷 MƈnG6.&'݅I*x nЋS-ӆ ާ3|E4P HNЄmr1a}Kk2&mtC#!i5tU3R:KEZ+84xX6߯)6.nkz(PVQgU =KF!Φh݈ Lj⏕*vt=u=EިtLK@XHu[b 8@:υNU`9~ cx(y#nWz4\]!3% Y*Vg{?_:] nbdǞoS'`lRFq p~TG5c(㗩}eCIENJr.opDf:q]ݟT۹p@G ^jN>e<ڬ5[BoCQq13A qt- 1S "jZAY@<.|=/*c Ϫ"*v!0e'wF]%}߿!Z*~|F ]8Vů}^M2p&%75>pRlGvѴ AR%0|T=dL5a\>Šu,ƟGpcqJqyz)w ѱ<T~AU;[ &#IXS~]\xJz[9˾p(\ (C79U%)DO /q BS&݉2 ah$9*&@lLo"onBRDW{eo3mE^ rV c#Z2\58 9קPs۝fkhU3$f  /co?ðH*~#EY|yKOhb3W6uI@vFt D{.Kad{y7(M^L=z L+z'sf|@":Ȧ$Бr}wQCvJkIwVVzwZ{u4Bިp@)`F)wAbvV;rz蹦$ڰhHᆀ4/_^C7BB(Z_P6+O7Z2ھf. h!:PxN^@jX OEhUa/H2}w)Ye` 1uBW_:8':Low "s$̰C Ұ}0ک7plܬR[)Tb[90.Z{&,8'1 9f 3i|+Si-2D`?ytO0 5|+ar* #{DoMVo]jLQEx:s0p!;n)"ExN:ԋBDܔ4]/ O(c`fH7.ȳ4`u;Zܻ}sT|)g,vF hSDTUU@XU⨘>ߜ^L8z} Kg:%Ư\ݡZW׻Nr8Xv}48?kH0<_`M"HY;,-0DNE'^YDs12>f#=fa#/qj>@y3i|/a|}^Iz,O9!0= n[fC ]%q+j[pW띑* 4پ6`&!lA>\A Ź:=;"!c4fÀmmƇ60'Kn ʺ>#-ytS|FpK(؎ 8+'Ĩ2lqYrX8UJ_P4Üz';C. + }O' O7PbT60 JƓ+'ߍpf|ޗ 0 c-0FPmWX;\a&Ha>N`tx [.2CD ++W.ZP8o?]{\>!ݣY8-`=eh>*=y[,~U;Ȣrqh+(HCxzPn" ,HGM58jۆQNJ$o6C c@PHf>P' H8<Ksa37Sw,Wtf2>t?ΖŎq.x\n.N(vϠ/ʢ) N@rіg: vNS%f"Ά0poSǑhK^)a|F OC >E,4JuW>gqRƱw ƿ풰E&UGQ|JeJW$hQ pުO)s(A<"8a\aP3ƍ'\^m))b..j!ͬ=@|Y >3+s:j/[RT^`o#"dCDcǗXf>nq(wcHE2⭤ -G|J!SkpCTMn޴nYtAn#VMjLw3*sDҝU&:Aᬐ=(E i D*'l$Ao~!^DK4qqQF@G9?ZQUjJşvWpqRo[ZYrgz|"7Y=H (y|oUB ; 8$;MxxopQp:~!x,F9Ŕ*wfk0AG㛀pѠDj%x;9 psO7]Z=A` 1Qxp/ \Eg0#o 5)c'$`pp(Tcz:c& R]bs%qwyBƞh3>j4>. :$nvc|"|z p S,DCX4' @ \\ =GmDϡ!3|eZ@>F"ux`0q*t) qZI@=' nJNҭ<OQH;.c{e+ ׇē?3V]V)` +N`2>(@4>~s N %!j`|?MuܞRCWisܬ7 1FؑzI'I .?L,AiwrM1^{5L\,|ꔮ ü▋7, Pm\ mMG q ~J`=Wzp|><[z 9Ce_3036=h[+ŠxC~@~C (1BMOӑRctE)wȩ_&㣞0#^F7! m[_DAT ܧs{V'Px Q3v_}ҽd<&ԑ-gA_2N1r -?JeX?@@ҩz/ ;y5k#PBm|d amc40{/-վlF6Cn_  nX "_DZ6Px!]&m*420n[amL#H2_7Pm\SzmK]RlBVFob0n#x,o*\Kgdu67y_r2_V%3dŪ Bu4Z"h&\hp"} $a*w,jZ&zT@Q$ HN0Æ\;\`\η@sW84p[#/gia箫)jq~유l+"_9J%~[g墹ʻpdYG17WUE,Xl>|rjxFa$xmHd&ဵ9JWu Ax:o3>6 oK>y_Jq"u_Vs' !=ڻĒ~N#_TJpxc[CGQ@ 1@Z@ZR wGt'RzffŠ-Mh3BD,Jq/DR`@ p7$^z#f6|\5 j?t|GCSJ{tp@@& jww8xԞIyL ׬7oFQ*@Q6!3DcI;H@-l63v L- DN*Jݲ܋>nWԶ#Czm>ۖ'KީQ%z!2$ԒGnvP:Lkw, r Bz `ٻW@-+ť]-#vcEZ|lK 9`a!$au3VA[j헆or E!X * $CE^Mn$.1{OD)bݓF,͙?P_Džȴ+?ݕ;s .ep("שK -".?.'u U d}Jq~wYỢ>$δ;LMvg _z7ItyA#>@9}4>icW#l r,W%S2uSNiE @X>V VMOHV&ꪜbX?77r>xw,BSGZe7.R~} Æ + . h^l  X'ʕD30x"e iyZzW8d4lıPuj8KxOBDO3%O1ݲwp@w79~)j=  {Ls _nV(\)Z%j ,>Aq8-d&EpXD4KBAksIc%{ kt;m+SA @⎌ R~s(!DTc,qp#?f< rrϧ7vX2CY@RĊ T )ԗj^(g59\ȕB9&T* EΖ5<|A| 1^PcH3K_đ{M~\ jӦ\",)ED}K=Vh|ztkUB6c1K6  {7u`f{P,DC(:~Au< A e~Or?U&Zh xGMt( +~9 d"^~Z>rx_@bM_q-p(2M(+Zz 4z=6{B_Gpk$|7ϻjn_1? PRڷ1K.5G7oY,jiـtǃe%QRȤ ȼ5;RԨw)2 Iba1֋C):g*OU@T [-+ vxJ|Z{Yj`fV3o?#ѡ:~sV{Zָ^`O%q^Rs=lrIպÒeX{`yb0M^߹x\ VK][ ORU U 5y,Z~]~Fl{hp>C2Y譕{hKGAy0c Y!vX.mdje^þ$6nsu6x0ר2z9W1j\+V`5ol.mrͣ+PXΙgoT9t8_Cٗ˻ vdWH%^V0Đ2&qe1I^!K;~D^ XҫZkx-c, MR/>\8z{?xxUU'ֵ%q>~?F@հj5ގf^`A cNaM2=$ofɔ]?X"rr4 p"$Sw\\s)Cyk\ho-tsN zɝ:񂰨)3E$>_ i</ >&vXC_o "Nь쎸 W*π(kjqDj]_P#H((L ͳklzFR#h+d;64bsb T@_w#Af#eȎ"wl:E-<.\%a]:kxgsPOn&]k[x4_4CZ;%GK 0p-YKFr:x"4X"=:7IROq#Џh! [ k_[OKKЃr|{LY m_xZACxڣp+5^ jPB,eY,4{T'pإ0hQ ]n&[`z3-N ΂Av)ܳ|ߝS˹Z|>=AsqˣP&`@T<|}˧T sfZ񒡼ŝBw[ӷv4YjcA~k*CKFANfr3),(oڳSl+K#Ĕ)#߷}.)5\PJ/4yk7 =N:֎8CΑ 7u, De 6v4 ,H\&z>vjC2‹C/^J>MVك.!D9{u!sJ96#Zi "H.4ȕKX&<]۹矯Im_?[1zu nՠqzbG7( ]C Gu*?^5Ⱦ,?GDTJ6LHB.!&&I#W#`ρk0 ٱem=~=0/]^ߐ;| l(bg"?,XE! б=8YwKWHUAG`Mb7 2% TvXjicx-LZ'Ez ߤo6@=o#HAhF2gK=ܿ"(+{di: ;Ed٭"9DjBfٵ+ | x{/[ʇ'^^~5eߨ?l؉ҍWL B|ld2UY7E b7@Xd֕E"߾E(Fqpya؋ɦbP 6T#o֠H^|bzq&u] E`<&С}=WQ0 /}0o@z71Ʃ`Ӝ12JNjzuZvwv$7Ζ535HyDRNZ j 8vԮ֋fM%ӓ?8RA7n_ϷV=ghbOk7sWGEf.)]δTM דOnf %NV)<#_ϭ-᝾=/VGx/l V`gaXT d3LtWE,GaqO&&*R5_T=XqnUA}4b=a_T>"~{VX &qD#kJjp-<`#~ڄezk 7Rww0kʅ3"n!P!lcDjP<⭟[<:.Z)~x 46[|)؁vx͜ %^OZHsQ_:=*mky ">#{xZ{eg +ݵ",~#҇;u>xC+ ".sm4 Є0.hJ ) g1oWV*U֒mM(VqHZ<?[ꍲ.KѱcsH!g7%E4䖍^m o$֛0ompaU6ݽȉkEѯ"b돥} 0Lb&dg뢩e')d^OM0L`.p{mЄ0blMI<@(#C03nx0d.z3sH'׏ĩ]>T)L3Rh2~~`ywpΡh71XZ~+'Ǿ wcKjt<ȼY"B\> a߷oKKsc^~'Є0_Sp<B4N)' B;ֹ. s'0ou  dDtlJ]gT+! *nNP+c}K#_:f] )qǺeCP`PbYDХx'^Y^`ky({ϭMp /?7t >?؁jݺe/_+ gcW @CCDn|1_~c3hk ڙ0NN$c1.b>ZRqEhZ|~H<+O!0\/v!X|~H'Ⱥ?141>%x5{w`N0]* }/, >? [̥o`/Vlopw~6ƸmIׯyIENDB`pybik-3.0/data/ui/thumbnails/Prism3-6x4.png0000644000175000017500000002755213137372655020665 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+/IDATx}gxTUy?TLiwP"{Hދ(  R@I脎Hz{rf2 >WJsg?)3swֻ{c񴇷yn!yix!yix!yix!yix!yix!yAEK4;ؖ;'64ذfdթ1ۜM;鉣%ǹ~vn뫖H![#@R(I!vCC,S7ysey$;?ñ[fn}l>=J8SHcs&3&p[TJ&۞vpԷg)f$m݁5nG6 '@_|AO>$U~1p_bh1yq.H0xZ+I|U|ͧsH Jaa@>烘ؿd˸-6?]>o&199o2iҌʵjdL]]ȖȖdv!eپoJ{xvG/~4iȾܓL7z*77䛾oޟy>$51@ 6%h%*+ _{{ЀwτyI 8_gB| >K]?nW~kT kLD--.4g:[Is[Ȗm[wkW˖VH`9TjU򏙣zFf#w(߫z2`5|(`$0cCIg>vg|蠮 {|[ Wwwml-AY{Э?%IטX=˰jy_A|:{ )ؽ/:|0Q<|#T7fmOxS 6މd2rY \:T=ʫk5滹n&+A]Hn _͟1$xA/$ c¹e 1 ~Gu*emqF Imo|A]?p 8rD/ B[eѫ”h658#Me~ c԰Q#Y*= "S &?cY$ HDuMQ+u.~r6=@WNM+h&N͛7' N111KqqqTdIJNNxH>eɏVak?ӎ[Gn]ل6F؉NEPk=q؈4 Rګ}ZL 4x0KKHs>R$ul}w{" $6j(׫0Cn LZi{z۟>^(ɀ tL.%SRԢd KLT~?22BCC)$$@2,11lL$dR9?_bQM7=e'1ha toE :D[`hpK3@!DcU!ntO+$(R]~u;tDNE7}Y|#2nA &HRyEr8=cN>UA qX8%hh}Gu qQԓI-1JΩe&t Jbh_X@ʖ-+Dc0#,Z'ez)6LbZ k DW? }/*YjU&@ff&uڕ p 2iq2k}O~߸(5aCNeE}LxS]Bdu>1mk~){[ɶi)EH'`ǸhG] cԼTI$bB i BY,_SNQ&M~77||qo1S1:hUoAɯ50bEXE&UpaUyMawP-E( \~#M #J/vlShDQ?6mJ}Wbo޼I"LD~->Lf777S<r~z<睧3LJ Jr8{ZDo_ie*N`I`HSL$XEktm#=uIjN"[sϚ5KHƍ:xm 뙸Uވ/RGkA7C`%xS}SZC5t^C(\PT^CRݚ_;InqÌ"E3V^-a_-7|#CV uxdZP`ޮ<ǘsDc^{JŃ=vi9  8'Ċsg@n&ܐīҗ~<;݂ǯ36 ԩׯS޽q:|lHxD)UPBuC~=g k`uOH̏^e5ghf䛍Pi0b\bIV7c|G% o}P+t&$}T.IڅϲAL$P`iK1oQÚ>o]L9˧(RSAW\iH={J.>)ȏFS(K3n[45.]wx%B̏}SSS(]KXKQE;Ug KMl "TI~U@2WO+(0X-kRk~R R1DRȿ bК5k&Zʉ/m-. #B ) 1wo.5,DP> H Dx*%b}D1˗ʔ)#rnG,H6-N#< 6EhC u#-4v_Q.]$4 Dcƌ} &?6cy$`R aۧ$k،4ST AQG\U8!Bxυ0Ij eI]c#[TjW=ZB2X1|a]֣?MH _ rֿϟ/7i̙,X XdIsv~J%ޖ>V$h/#IE"F4!"TݞD)iiE^1,SYzT7'_|Or̔AD[w7Pb5pT~} bѣg}FڵZ%c\DzB:3{6y=q3Ȃ-ӬIftXAN`\c%K_$8퇇x;\b(!HWR%oO<)YAuԡ_?.vU_qf޳Wx5C%\X0{}G%raқq3nkT2w |D(\ (UPMQܳOl_; >q~$/ӟ<>ں5$Zm3rH._L+V~I^{M"Pi0^0X% `S G{ePyf9k\$,#ǻ^c5!J%{15s)*.L)pv$. O+XqC]v 𾾾n޼Y%7Y%L>@c-!srQ錛_Ԟ'&( rkM4|n C6\zo*~pXM2:4԰;|K"OH>s+w(8rL[o%q9EwMC5j)0aV >bW C5 uZ'3nl%I~jwi@WW:K=!NLBD(\vDZ9 ^??' {L@~ ^-})siU/oᶥI\'R 襗^Fh!\pIs(X&&$'Re1(! Fؤ)ECH •+WNbrXWQ(R#^fsV5"'idX VQq"L.C+׋S؟ |E_;#߷:b#x`jǩoYN~^eՋ$9"bK֭СC?SYYYNsP;M>7aCJ!`([CkzgogPCCtNP˥R婪y@Τ$!@:TB!_z&5VAf;7MOq"@f~4g]EQjTN^ԿLpo;9ZAnݢW^yEzڵk@c(СUTI|"C8U{0'TΞX$/|/JzAD ƛl &sVڞ4RP&X$RQ@^܂֬?uoK1Qf{} cz'G1#D&L۟yq'O,Dn8H^/ CU&#U:>NشR"툴X0ߋuC.CͨDƹl} Rr/GARnvS$о?=.oDL"^[f+9s &^oÇVZIO۳g?͇6ɺ`'T¬\DҴxai)~h"ͤ;!XߢC >5FTJ?tCv &[! b 6-]]`M9f= űA8a$Tsx9yݿG-`gjYWiU-+-UB ?]Aʰ]@&l͐2f$3_(f3GեBҳegE,bJ:(_Tf"Mի|5^;#[z!'+WvH:b Hj۔@BlˑO7 R!eNA57 ÃIx?{Cd0@~CƹKZ}qNg(;hP$`d"?xϞ=+[l(=X an ^S%a 6PY-ZU'`KAӈT/ bVwngwŊIOŖhIgS R fX ptI-_~E>H-ZHrPA1xD+Wt"JcEm xLVŽ`1W#ޟH(bc?$Zڵ2my^ܐĈ RmD}@e!]'c7cΝOc܇20ރ!!6A/;E Z%PJVϏ*ب͘lр縵`0,8/xyc"NJ^ @mɯu޲eM^ Y%~>@csnR {?U.v.v=`j^Y2sLTZn@ĠݻӠAaÆc!Oo $\7TɔljN-SIT!И+vC:hl bAc R f\V36n>-\ꊥlg3ʽ4wb :H > A12t'E5k& 6Dm۶CG"sQ 6X]Niޣ< (mT=/ǤvOyS{_+XMH QԪd 5! E@+oR g>⛗Ƙ` d/b-"aO?yڰ 򵳯^R z9L Qw I?7{l7nt ky?vI$Xzjbb /T*EOw&ܳAw#E| E \ۃnG{-D['Q<>mi8`8U;-ԑܟ EesRɇ rIz61ӧO{`QpS|EGR?Z R"c^啕zxN?1ه>r[ծ F`KRM~>n~ P g7wg4Pϝ;W>7 BX}]VA&AJ]Á"!L3Μ"Fa#S y/ӫ Ӊ$:0Q䧫;-DaA^tl]XW^9cӊN~{u<UZ ؾ}vDŽR2D"bn-PK(c8L^c@ÔR]WP!+ u >1TߦC3έSml+MHsC= k{O?Y4WQV{$vQ/ 0&<(Rz&ڲWgxm Y#o:5i'Yq2l5k>Op}4{B! C |BDޏIjՒ!BC8zOΜ9O%A%`2Z5it#G_rhz+1qף/m^fV? jQD?|Jjj˩Jߑ:{X3g8_L ǰйsgĀʇ.|lȩ8P J(05xE N{%s eZCQ!L]&=_;?Ƈ)s]:FvfK4YE=#O ~ 5Q-35.'Υ9wry{BO9@Axz;Ǡ˜NF@'# *!@K`NpԤH+=@aG_x`pgcX~.q=ig IRr6{Av|ކ|"@q+2̖'Iwo wp˫tAtɟǎs rp7xӦMTB @&`_C Ol"USMZqbS q;zOq*iC(?GJZ%yRlG^ws`gA'os)9_=F*V$r\>Pޓڹ,~R6L#tw {H?!Gmۻ7,ry:@JFA!!bpAO%bp },;"ҹ(ݚHϵ8 9XhhW?ua SC'@/ `(0OGٗ8R >^gV Ƙt⺡Nܳ~hUGnwkT.>yEI|.}?~Yd`x4'g~"0@Z5 ys$ "Ia7˚l}Q *ی BsmRn(>&Ms) p#fd8z@ jˀD@s1)9;D!@N`P YEm*GCד:WfG/,ԏF7ʽ\*~VΩ]FZc CZH"kJ8b*:2ySl5E`xMLv6;\DZN]GI~wdyãf0gz6z?,AQD(b?@<p+sAT*խb31\<~v)K~;l1*_ClqAu_41?D"Xvm:u6Gǔ)S}L)K|h}֙c#mls~VEi]kejWciTóai*eTh|0퍣39>/V@zÆ q=Waan*q="lX$6zh!__$:ǂK vMV}2]KWr$lmI~o`C IU}_ ,2 C*ܛubbGEڴAvOGpCTAGH|Eq>2O_ߛ%-F-*OݎU>Rj$QpSuƬ`,lߪg{]dk}'src 7XEF0O6EG%o!DYl8/wĸT2ޛv00{d!HP| һ_D޲_Leoʹ~$~Yų"ۊ+܃ԬBZ֫[E%sbkFxKAKWU)b@Y2 z7%T|̏pX7NO&y5T}wX`ʼo_oPG98inJ%2WGh/9~ܢ ~'E$ͣǙQS]:nA ׷jV"?0@wPJtAP;QS!_^"2_nEZΡ`C)^~ @v1Y;!@FǮe9 iRgP5%gCe.‚S8\oC FWOŞS B!TӾe.k*q?@ށ: K#W`V &"\D*XKߟHJe|٤[ҵÂF9BT>rʌ)ѭ:.\1{XgHç2BYɓe'j*u[co^*oj'*&G.Pcyd C[/{Vy8ofW ?-f ڒe˜>(p$B օ-⍩^~Xk㚁iŞdQCZG`7|D%9{y峪fp$Z#'0}? NNnq >*ʗ@YvIY3x4B `>X)ļ,WX'5k*wM5X&N!e =6<*J VG69{kPW[4'>(NI,^.^q\6~'ѠNqmݯussX#<浆Q=$OY7( NlߞcNk'6D?бCI':>C,?tOGQHNiytڨ`ڴl=!PFphě!%yix?GwrIENDB`pybik-3.0/data/ui/thumbnails/Brick-8x2x8.png0000644000175000017500000002415213137372574021013 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+(IDATx}y|Uչp}!'9G("3jATZ:CeP@@!"Cb[V?_wYkdpd~I{}?#dw؋`^```````````CzG-F'u?Z6Exa%r^"^5.d7֯{ )`a[Gc"3~F8`QWMx.='0\`*gW2 8Ѵe˜]c mۺv 1!Kz7Ó 0h!>p# (jy+#& ᰜXf:ފ D3 =1㗥;X-zKuBnfV00<°;ޜH0RР_U h8ƿ::.gچﻼ X; >k(QCĠØo- 0 =J]J_׮]Ń8߬[0m:ev3Ayhi(<^t ޱT`!ZrLp7`=}ʛvz7 hDacD@J@÷of y(89K" n'p m'-K 2@ܺ{6mfh4ncHFa[_sqƏ{mK1 pI6xh]K4 Nq E_Q:^MT@O,Rc&{{8$Bu)ޟR&e~j1/hZ4>K"]y/Z\pz@, iF,Gb?ݢC!… `Rw6X飇ӭߓAY5A ($lM#5[x<} EIR4,K?0Z8w߿IfKìe0 㿅TAo{;`!ѰbP-`ep=ؤ0+NWx uL>(\`Y݃I[˜㨅֋dnen^|zI拀*fx!uW'uty !B/;Z{#P\&u]~u 3; ١zN@t0Ӽp*|jڥڶ{= fu-`G[c>α?a?q>^; :! ˊDAtqJcK]l2743pB>k"1!=f1`nYQ1Fi we[Be93>E@y" r2f7-  ¬4})V@coT5X⺰k>p>+!]|= hi}Zt"Om} C )M ¾ؐ_D Q .;N÷LJllw4qsZx,L<˳p^2 t_by"f7(ࣘq艽z yHxYhmXu`0`#a oY}}TC! Lg}Q!Ltiޖ .=b|{׹"#M4~KUJu'u4A,Z&:[+D ,_!A{' JSyGW]T&h?X #a`xи\ A+2~:gG M+7!2NAqqg(Vod2AޭN ;>FWwbߌz Uw.kQi{@Py@;p>Ä_wy:{5b9tfAwpdM5= qmJ?)Eߵs9Ҽ"BKVVlgoկK2 `MƿgW{,zDQ~ Ɵl|J+*LuAPCƶH1s ok5SpWd yK&\t?{w?_vY1Z\2؋/ˆ +qX(Vh|. 8*p+!P,)[V$b@regm>4\Zs07>i W4 7r㯂yYoFIlR}0AC}bXh]t^znݺ6(`zw阞]"* ,Fp,7iT"nLZ^W Uez_O6u͂u:CE<,6 [t'` 0TŲdW*30,|B5r+X3/$o ]է9~a}MN׮BGMPu8!mm)Ix\ri *M,y4c@!cqltm(0AEjns_5u{sRKM$!~_w!R9-(r,PUGH0W6300vN\ U8D:=8eNg_Lt A֞\.`a "g2~yk]@E¥)1Ae~^i*0BxУa43|qpqg B}w#- >Q }R"fAZqZ Ts㍉WV E= YŒ&Xv{aQkU&n ҩ_kbӘa)B"vk`QovtJ5/)0`9$yoXDŧ=%`=2 V3{|T$>=/M TFR{YF*U5<ǣ6R1YU`v[T1)t+%3߰BTex9̉C"{Kd/w|B\|wɺ~z/`j8Ƣfhys]|C| NQ ݖԊD) (<ia0^\Mպp`,(1S3بaK*Dj $z/0Ζ!]ڸN_ׯ6QQVʚ #iߌ5IXFlK .dRhfuwf/3% \QjH(vYIJ >,,T"BYS(лР, :+@eYEY`C ȧ ՠ:+=iEa1s Šk 嶯5Ɛյ0A*GQѫZ+pa^9G7R2 t,R9{?Cd:-I> 4z_Ɏh9uS{[ҷc ::wJX<ƜbAi|Šecb$xkrg=lHw!A9JbIVWh93y|wFcJ򦌮6idk,~ސ{8U-ӵa> 0eg^"=@ds` fMTs[zGqb1Y1䖯dEU-^7x>E=+H|q~DB 1SdޫdVdGB@#+O *㫢P6~:#7dtFR;p!o:qʅfzh} eH*σ ldBFw u`A oupOESPO# s >-a֞׻ T)"sUV L j fVQW8_m|n2Q0 pJ<~K̝*t9oy7iE}a =dUenځ@x.&*K\݋)߳320^Zuxetg 3X]e_gk)T^7)Je2>MLJ>U^ɟd2TZ2 ze6g4 rh!tW 7;SgL0 ݪOY7x~2&~^iOpyӗuP5i4 jP޾]:2SptV^hN'_1wIa4~7,A?}r 0sO6.ۍ+D 64xS0$DHk ' za Ag% +jVմ"=~i ap*Gx{)f8EliqL:A&dPଣ`F&2RY܉5>UdwQ/MzN.12Dx:BSG'd,Etf@&| 'V׶#bۺ6,I-: A6,WfġQ C Usɹq'Vm|VH_v!gD8U7v1 TO`dct"~= zkїT͞j0+p~C%.?9+]yGKRYvBYHa"YBpSBϗPD*V 7{ۛlLK>N Kf#`*8]ݣLAp*$CD+ f'z>s<4rznaWbѻ-( 6_g }"0} i7KU*YYhۙ%V LP9aȺody:4;zފw5¡ k0c8;o&L=±g^Ac1zNP%Ⓩ|<[]X])!ó%gf.lH%絔3e$|8Y!1J0>o&ٜ f Q@ۊ9N$agAoH9|CggK&CM"ʈxxUX{Gc|Lѓ͞j);#I@" yJ L1)\1 :dlbY+@]1)Posuq~ 2.o]k]d]8Psx;ɸ#jqȿyǺۂ\|gscCMZ. UIdXm(R'b!Z^w!dW3+ܒ2}l J%48)_mΓiC\um0q9Fp3M50$dל/㟭{˯V]˴,Y, $q7J$SXE#weX"+Cj4N[:9Fр/z.n` <=`>VXT/7duXԮfQݒMgp“ǐ2ExX`COOx7$\@)}S?a.N&Z@@ bK!85+- h){atC.*>vqpz#yvQk9|/8PG|#o)nj1pN3VFfx #2BJ%Nճ =l=R dʪYb 'SRb.1Ee2>Z(Nσ .^p[W9,!KlӌWz?XV~s@t\[T_iOR(O߳!_^c}47,OQSۺ~%dW2 9ϢSB9>ju4+3N@W]g[?7 >MV` ]q)3Y4@6~t~R|N`Fx05u&1+y*HA<~'7RɹÉGIwA`$CskϵZ 3K.(Yd ‘:;2';{8~6˿2p>}obo}2@&/*}>,&$Z i\iW!rhIx *2#+ܪmmA+pħBy?z+O|>G><|iِ=9EJRT;}* W̡kZvDKAАUqeQ͊nÇGkSSxu!pP?_,zU@'#Qz!QW5&Һ9|>̞OzqP?`Vql `nW V SϏ1GV`y88SNq8U4._4bj'[^kiTC\qLd$qR34%{|GJ0Y|A̗<+KK0~:k#Hx-axeCVfOm<[BK0`h.)H v"N` "+D²J)C<ٙ E+PsX#n+Ԭ@ۧ%r{7zmCյ+I7h;$v! v o!yd'Si$X:2T YWHVpܟb͊LJ卝}[|b^pUyᙻ#R+^!J TK4 -L*྇¸S5t4>-  U~A%յzc9sQŖr }J2d6TQ\Wn6  ;RZ 1{ļMe} VeNa9ڏD(Mcz 8fW>>okueCMs9X3 ĢS(W=ӈE`lCO6r~)UsAH1?$_;ZI. XY,9[ XXA[˜]钩$b7M #'d7#%i&6Zn 3-l~橄6UPw6n97vr7 Em@k<, 4[QG0x%+ĊdM;V"'w=å|5%+9 %nMU;sb"RX؜ 2=#|623K/qNSg-6sɹ*-XR[Sz#k"RQ|6ڑW]XK [?8c|68dž0¡9WuJ%gv-P8q.%3CMnY`ǣ. Fȇ6E```````[J& IENDB`pybik-3.0/data/ui/thumbnails/Tower-3x8.png0000644000175000017500000001510013137372525020567 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+IDATxyxTն2ޙsdM6HB@TeG;%kFqVZ)T0wESZت;w&3Ld=Ώ.I;vM#H?@@@@@@@@@@@@@@@@az&~pw\9;?ao SoՃ8FamiJ)?{0Hqr/6*F @t˿8Pu|p8x%uHMk0Ub(:%cG7cǻ]P*[i:|&GnƯK#v iBBR?DwbN#w;F9S n7Du/ QN7:?=+_C[i~3aرpfnFT39q X*|>8S?4?GQգG)0°S&~. \W+=Pѡc0MuX9!ք=R?c8F](؇úCѡA=1{11| #aG ߳0{8Qq 7Klx :f5!0qg`H_!!c&!Ry"HDG^jRϸe}>;ZMۺm ⍞zzI DiY[|r/|=1܃0~- *¦<[7Pl߼6p2dKMhrsᚦ!ݲ,8YS`6~v/3z@GR׌ݐц޷GRl8˼GRw:cV{n$S8=JCy^ Kʄ?&^-jj;rv:D[N}&IaɆ??IՆW6To'?AtdE@8$?pRg٢ ''M"-B=٤ ovt?Gc]N^`9spú`',/%?<*, F'8| :m1:Ev Ϣ_f;m3K0] F,B8~QA[?Kd ߶BT 6-P.S hha8aP1X #S>iٸ3Ӆ04oHBIJIBK!'(wv&b:aY? /<ЁnX2U*z>^N:`GxMz+5V^Jq գF8YePBӀa/4E⢉:|v q+ĝT4U X9 ̂EGW <.WDNA65!UmJ12Psh飼%ut8Z Tb҃yLsD Q7]5EߢH@Px@A'.LӒ""A ϑ!?vxC8>."ڟ*WWC~HCWhW.ȂW !a-Ar ZQ(2g@RXaꉰ < z3*X'_MM 6X @QdsypY蟤 k#O=I9>}ZP__oAb*#@6껷5" 2 ȀOʞ"'ooll&U6'S[" >zk@q <xf @6X ( 50DIitA04/;<(U@D' ~Oݙ+AZs8PT @ H'\pq 0I Q||n3ǀONi{rXsu2s4"0y4k,s˘!``V"需7?@lI)usK8߫~r{"Pa(òxu00w:jz?tǢD::es":@ rg䩞x# ,wCI ˦0w[szb7OvCE*',L'&&0fy냊 >ol}ʋ4>}&uMc TlmM)R>@_8IRX,KN PIWRoa= |OS0{H [B0d*l.P0GGP4s]UU 1k 8ˎ!mK @*0h6 C/ > Vٙ \^!Nˆ1C呱(G :Qa:/+p" .Zhr@ds)P"'9=UX<`߹s  & KP]AyT?_Rh]0FD̄p*t ģqʍtlXo, JV϶ ǯ!!%ٲ`#4Ay|"oQ/v4w7 BT`ع%,[ lǜ8j[yڗ L% 8(ļtw R .B r aX4Q|npZs+[i)Fz. "SiH^3k;X"N7/unUM5E+pJ Nx>AWl.,m::@Q4c7Hͱ:l2RRc_1 ~X/K`h^|8gS)jḓmIx Q V[f(2hǩ0rp$"Οo%҆$&`ƞxa{-ym 6atsZ `gheD=\i0ێXEF+1&|~0bҏFt9Dj[% ZhTT*ZTtfX<_ZN1N͜&w s;-|t.^l%B^ GHh\۔iL!ҹ7X~c !Vi;yhj\g.7`}wK# Ge~f @m[2,(ƾ+loL ~؃>ߵ).\臍+DO'.Y&|>8m̉wq0 ?Iԋd|  ,NFǛ$ 0-B=|T4fW] [YomC Ԧ'B 'v|[ TT1sKݼQL]DXOzEL .xwOy^@OqMعW@bMJ :3K9S Q xE/cc^Q*r\nA >TI+2p%ſ΀2tr?_W,T05bˡ zaJ4o)J@vhqXxx@C7vпO| ?Wa7XH@9NQIqSSDà#Rc-qkSͻ%P?ǚC{Z K_ Q k\I9A hoDo a,C$Y!CUT㕯Wɏ G Mm9I-Km kŮy^#F9dE,Q Nl ]!o s0k;aixEBBВȬ1>HJ|:7|('6 Е1ǚE>@ ) EP h o8T|8$\Ȅ&;mER :FD3F\j~Z #.X]JB99"'jgx+o 9&|e綈GzOlZ~=SCe:UCz ]`aq0qA y`fqmK"FAqlEU;T;MPa"nC0Ďm;$Gc+h^(T>)\<bH @#Z$gkˠ>3! YZKuqG7g "0/b[H!.PH˟tD͛bKsUwVK56]׿Q8'p~= &GS Ҕ0mhڿ!_~+ym w]'. 6ۯUp46m-xia=)y:1,QvćH;^bۘz ` K4Ur1K[r 4pӹ~Xx+zLY~=.t)"n% f BQ>t/E!i } ؏p-af Q@xaiݧKPb7!U dB]xEXIo>,QEC[s$T),o>svo* `}0"yq7q? Bt Oo5HPp/|>p:m.!m7/ #evs'|ѧ{sWœv;cୠ9Jz&2;_)R5g@QrLiz:$J}'y}_C!+8Z4;3&:?M[C)B&CvD}9wV`'qH_kQAS(FGB:xfbo@fLU yn)S05)_!}!>/zx=UU0'Ƌs =⦰ b$øBL;DM`dXV[Q7oF+c{zZMNuS8^!qq%e7R v%GX HnKh>so Χ/wԶ: M/c^3b> V4P@ 2JS?m _O(/t ǧ] ЦXHL;|(SŅvDh Wt;9Ui#='gszh~ 1d||GWЌރڢpb/77}Ι#;8߱P)xkrY|9tJ !be }7zbTm %0юh.M- Q^{KctJ~;uB:L!<P `EL`e}|4p_ Q|^]IUk:+pFlʪqHawCadÑ{ Q??_fhDH{F @}7o#~$Ϋm~PtсRAg {|]-f~m E3@FL #? ~w%D[+VbFM9shv%{KC셨>G_.auP˘L}P ]X$=[RԚn%$$$?@#HIIIIIIIIIIIIIIIu'(+De:IENDB`pybik-3.0/data/ui/thumbnails/Prism3-3x5.png0000644000175000017500000002023113137372653020644 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+ KIDATx]gtUն~?;%tTT{EBJhRH"U R = I4* |}Z;Nsnu@:t Nt@7M'n:t Nt@7M'n:t CիG}_F6*"ȔڮuaskۯGjF^ biaˆ(l'qOoI| `ȑi @Hh??ˆ]\\UDoZ^?Aw.l za}/l |a3پQ6,ٶYZ  Hʍ7QF_eUX(l {`ߓ#,!I$kϪ2O}WHqE zGq5 rT!(Kh a bGRXX?!9)[6 AWlH[ R-i ӾHۊN3޽{x0f̝(U?M,mT Njc̃ spXjՠlׁ/Usx+Q~xW2eSi ^'3~{bU&ʪV݂TT$XFcfntZ<''@k׮oߦ(G?x$ 7'{;O^P/ڐ@wOG3}BI ER+WXB9COu-bo]%f0c8X0+f2@3 bXWVv t1T6o{!>l?uَ#GPdd$S I&Լysz駩q԰aCkBBB( |||ӓ֏MSRVf|fԴiSrĀTL6: XVELdõ111NAAAG^^^LNw77Ŀ.KqvR4 veDZ}K P_ZkLOU 8 D!ǃz uD+9>ׯʓ*z뭷03cV8bR ۋ2Q؆yT!z<)t5M MпӧA)Ğ/E&{%m@~ocu+yWf ])#/?Epd3/O2dIAHֵkWIY%ͲmFF@L^5 rTq&vbOURt8e~wVYcҥ, @92 Y7?Ŭp`b;U E8{ᵐ ^t2{IQ8]BNvZy;399ƌC/رc-|Ycߋm T`Y-T_{ {l9уi@ہ%-,̤4ӯ_5.ǭ[_W<Ұ+U=@zEI+? |inok%p8'C ^kg_K'+p8DxI۷ogq篿"K,NaV4O?X6G&U @<=eݶ HyfUxuaߥq4 ?_h]٧D& p(&شi͝;?.B8tԾ$wAacL&lraVa;e 3^,R/5+#C+W@,\;ap_WB HPڴiֺukjٲE6mQ|}}-^X}̈́ۉL:VK4@O ୬N]̏`fm$4Id eee La2x5/P+@^Ƨ{=nM]BkT8ucY2~UKzU+F#LpGWXvXoSCú{ӢD[SH+[|`0KKKD5p]5?ؖ% QJawNGlwHǢ,6/jl PEFV>|OK~W^减J" ?`c:ۅ^Um@&VrG(^}x]P[6N*dQQ"}͛L;vyO B`X1IG?*/PCz?/C!]<--r7j# ,A]qqq>N P!{ׇ8vTUXy߰7u E`ҤIVJ᫯JJKê 9_(ƕN^YR;&aT?JR'(J_* @Df ԫWrǏ"A믿f}sμ%@1Up1mTbs__,jЍE~ἲk~! Ѯ?+I'@+;; "oѣk@J`ԨQvÁ(00I$:0O <+Gف;}9PE%AVW~?! M*/I/*J3Z( >|XP€hg9 .\hv[T& @aHl v?5􊩁B.y^ q VQv8]*"B,NfΜɠ!ٳ' 8/1c_3ezhС 0%%EQ S"]'n U!p5鯴([,O|y[u:?-sbe hM2eR1 XD]ta`A5AlB{] m{/@sG)b?/"?Jq|:>.FRƈ`>6+IKZ45\|NV_ȁ-z$-rg9--Ojʍ#.[EP+` bWc@&NbTTe۶m4hpdv:d^`*};%3BECB$tTI<#Gc; b@[v^~9{ќ VN}u|Ny}8-Y:ܳ>/t;*Q"<~V0DRFn dk4iRurwx[BQan0@'9Ey<[; MLv&VqE^g͚~Vŧ~@R=~rgO]C):>'uYSH", |EIi{=RgG%9v dx2E1l0/&]aWf>t'B/^DAzp}C%翞vz;uf<-//M6Poжm[*!p AIU QG)OS!l>zYA;QQ|߱:$bhd_͔k;vN >BhM%4M@T?EBhN}@Dvu[l>tUڽoS c \%w4?TvMMyJi ~Gm. jDxhvj_4|G\ ݻ7!Sr)C(KXŠǏWcO78 hz;5o`?窢XyƒJQp_C%x0«Vu AC F$}ɓ:BADܹssל!T@4J0fngNAlЕ&yQ[UoG_Dr]8>hG';P׫V*bx+Xep+RGw~-P`'*ҦZ1,'7B<Dhʕ S (㦎dh2A?/dQ 5_殼 |XR.{&1\&dcC5V#a&ݻws˘X7dA@ b D^G'3||s}2{==.pioe;x;PfPO \D~\"H(8z4K9Pp֭ * lvr(#,XƇ<2bq| D7yƄ̊JM9JJwT%TQD ;77Kx饗R[f9BqFqF wL k ot\% tnozRɡ(t#}ufLTI-GT˯DhD8px҇PcNv7t|C[K=>~FӮ$}}8FÒX3x:C{ @Dm>4<#b(#8qC:zbtNCLV:@~A'fLFFL((U0P@fvd[XG8P͠N}8cigeWmYkc*t_ZS $*~YFf;1Z%֤r6nUzU!~׃Ⱦ^"FrjL T>'5?CX7v3r'ybf |9H p/G#L{"P!A&p nJ(#=g:@=14oN.t8=u>!i_;DdFϷTVmv:M[7&jvJ9B{WH  |rdff*͞ (j2.ߞ#Qk͇CAP1hVZ9FD1@4 ݺu~fm}!Դj/áOJ(T9l*Fp!(2# X=I(ȃ# >CGT1>]L@hqy4i6 +a]%~)g ^U pge,ŸFVT\3!BEٯ>Fpy І\[H օ5I<؎ RqRRw1'@9l1-uꨜ˾Q`R<Ӆ2YeWԿgc -JSEƎgU/pP~|`: !?3g\oGGli ʿ\@U\rTRMz5ʁ[lƥ!D87aW>ѲeG¹C}?%Q"LD^FcZIl-b(0E.T;-[cV6 9~s70ݮa3VvNmVuyv@}!;ЇLsJYUz?3izM}5͛Mh,zdogG_:)p/chw/eW %crP}ڮ)`ӆJAJkwrgօZzj=z(U ۇodd mcd &_7\s)KXںf=u"'/| OP}z@v+ǻt4^j_l k VY8??rH ͤ8W@&flN ";è~QگzoZךV ]z `oς̲pPn\TIҜjoc_J+KW P< 8N22M>`˳7,P JT8! ݦj`Ri* -`@[5V;7' kg.[K)rV5z2QZZ7)syLz<0+ԟ% cO}kB4­ib'`K.1ܚ,2O'/\h2 LVy?O_RS%dYwgN^Sܹ$$>ckvt,a pHYs+IDATx]ixTUl+T*KQ`h@`* evi5*ب 6%lPѡnNO3dZ3{U7E% Cus{{=7Lz 0$i&L3 `ILf40$i&L3 `ILf40$i&L3 `ILf40$@g"‡*#A_QTд]lrFֿZ0A ܝn:)θ)d wyMu>\c $@]cc]k WK#pt('`Mtauڇĩ6f B&|~7TW3d=#RkX,jnlgc#+RD6 Up :/x hzdWүZ)2221{IثV(wζq>=axaxMy ^& vŷjaw6|5:gl#mGrݺ0QaӼ1uFP`Ƃ ْb$dx *+@T:ށx V!8z)9*0GFn⻒ V#@@n!^~~):Gzc,˔KHVasD` #@! ߁87 ( ; OOd9)٩Z$ &nP!3rs%*@83X#Y2d $8? ɩJЦG씳 W7|[oQ/c 9*T ݷXN=&//#د"$@-4/0{:c@7~~ c 6Q 2xa>.RmKӰ{ їiS)`2id_a< @Si|CLփ E5ct:t']d8<5C.u6 ɶD;m*lIŬCQˑ1 u ̷A2+DB4^ LU~w۲DB0ڙP/$) @Yԣq?CvA  ~]YclfKI"M ~f$^/@;tg ?%L|E6+<52SWd`p`3qC_y¦{=a_ƌ˥\{b3@AUf_ @f3lkcvFw!6u0?4i$3&IBg;4^?Ki~pdZl~凗xS9CIXzƃ >xlzN;Ѭ݈oHfd %\.$u<!vB"^9\dlp7 fڹm%}QCEϽcVI=L=6m?Gs.媝,\kPQ|( x-6`[PSn mxHH-pG"e /c H4ۮsO) hT\`q$6S; 8 0vO)h}SE2kJi#X rezU-c6w& _|K1 2TCgp:x ?#Ao4i* h>.e: d\~_dཿ2->=>)E?i;cbaU˵OG1B% ,CƁx/P}+Ŀ/~RBL45VU} oFGg$õIrĶ-_6 T.ҟ2pmīX3c#e^([f~<1'xc̼Q O' [y4Y{퍁#حr9UrB+ o߾vJ%S DX9n\@0Y@JuN3"X>\$|nI*M|N}# FZfzk$I"؇੘rBOK_:\ +fzB6C 9V2fUk-Ͼc ?GId@8/ J!?L+Јs㵃*mE߃JG*q82RQ/ S ?tKIHc϶nkd gv(6\]qsR/2RC;suaL(.B!y6 q=P>FVe9g?H4t'34#@BpcJ4&UCK2Ĭ)nQ&TS!Жr-O sq7?y5X!Ku_ 4'2R.<Ć8g&W/*7tɃ?BUKI^赊_~.G_URnfN,;65,U4 & 2 VyOA7.?t0dZ#d5ѪʗZ?P.,8YD?x>}H2"2Pl1o?#gg o)=Sҿ}de tv?}}?Np_IEMbȶ ~.[xPT*^*~FT*E U3 #N^D_'>>33 -yrϭy'mA@.O { $6"E䅽,wG{K&8\s( 03^#wim" 6r17X-qoG(+PDz{rExɂӁtNu:0O20BBI ٷ:7p31#]3 Ja`6'u54tϲ,\{G˱6;3^mn~ "?3]pG1;DnE|e!i/ 4]pܥ6ʲv5+<;qt{̳3A_ޖx&턋P͠6[89Qb_f 68ӷ;{Y<~zn϶npXG(OMSdTno<#&U:[ߟ'4۳u. *]aӭH0J_f<5yM*ݢ[Ng FLDZeo M).n4D5c?y^G?)bsAq ^+haxL Ҍt8P[-Hvo a7gU@7JnwZkJhT1>*i z(ڵ,<{ftw@yУ\9.D7ǸIɖ} '4پ/TdjI.W^LK(6Dgx>gь3Ug/;r''=5mJf%, 1, It#U*Z_,S xx4f3u½65کjzrt(;F̀.NST! A˸>BRbx{?MrH|^>J{@@:?<ݲBqx*&K_Vq 0տy@_DlxV`C`k1@m!VLJ, X[lvO{Ld|ۇk9}oEo8M -x'kc7 cE`JQY8݃}v/D,gc@a3?Ez.Wl>6|F'u;u wCEiq_o~[~hƏpȖ^/doXgZ$_/  }FkNxLz pYQ˽:|۱vOofmװFqaDfeIBK}E^oJcXQ~ǯ.o!+E9#3!A 58wG~nmG@"(KݭXvM5qxjZ\ވ/|`:CD K*<)|/v~P[ vn|~@4NDxXHAOX4$1ڣaYXzqH^,XvF3 |W7e %=e m6j{wܿ^&!/X=bie0v6#HB'@΢BEtؼwCa߂WӖYpWX` ]Gl̷0'zvk"Й 7N6o:0['VOC2Īy(z$†(^UUec)!Yuv_nU42 { ..H#3[3m_rUWCq Zڜ R?E2̐5xI*^!{! ATTP+4s[W4[ =_4TqȺpف,9A@E@0XnVП z^aNX^!Ae]+ Uq/S=&[jӀ8T.C4Nh\2#9}#@6h&hQս eWtp&]\hakf1疯.uM-6-{v`AXWxKB+{L)+P+s£δln|ڪybxh>_"t*Is\9,Y&w''C)D| fBE"&+lv?eCb)ЂKnI?N"+Y+nΞkK-Q^a>P+8h ʖ/~^|S5>9~*"E5A>Fr8MؤW Pm,"i3yjUCcMajS2UM 6_]<˽$@<5Ϛ +m`QA'"vE|G#{S~Mj wT|(0S[Mݕz)UMj 3'ZXlK8̚`P{ _q ]a<:)٬ŋ7Vfj6 8\|au5yU>F`$WuJR63 Oxطu-3j5i4 nIW;D |&+ܟZM3FbLGjiOMa$f c$yb+S>3 ޚG, R12<̮ ml?nb|&W`0$i&L3 `ILf40$i&L3 `ILvnoIENDB`pybik-3.0/data/ui/thumbnails/Tower-2x3.png0000644000175000017500000001720313137372523020565 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+5IDATxy|TB23ld2L6HXÒQ@( ;AHѺ4Rq_PQABAE ,JiԺAڦZk>=w%'$|̽{oRC(U51ŬV+$H)H!FBP1?PX/vP rt>KaS'(Bu`)LAf9990v;e+i0ŤKcQ*WPZDIMq~f4=N\K _7$:'d>E_4DXvv6+**⒛ˌF#W\EF tE(x|u,)?P` JH:eqgP܁)fqPRR]Eff&W.tFq08k>`s[POj\xcd)"3:V`y'EݛCaX($taE^O=Hy A11ʇ|pNӽ]^[D;R9Ğc1s˹udn&W^Naaq&W4#j6@){|vG_`w  E9 NSpY^ţsO&S^=rsiw,{ gedS) =_x٬ D^LAyY:/X9֠ɀ 7c?M Rݤ`(€'@7 uDAP?8=/H1w+gA[Ԫ)|\"RŽ8(MX b9dCaÆ`} 9t)cVGmy6OkJ&_rI#.rpt;H_ 5QARΒ*)Ď\&F4-3>, |ȃk6lh D02<݊_IH(7)yg]t+sA3L_B+IM)m[?}IJƈL(0 U@l JCuZS*R(?Duߚ=a՛S 䴙CERRNb)2@MRyh(")_ K0Wp>y/ݏ*kR 䴦\U EYE08| U(” >J˨R,_W>}MJ%?v8<|>(5~BðJb3 &r8tEr`)Sw JuOAf)*M|TtpFVH,D"- ȽR%fK_dUroc|aT\@ W i=dux!o}̓ vb@$ex3 ѼQM&UDBp_߇ }R;{)"eҔjYh a! }x7OQeں%%؃ƳA!xcob `MĐ& %n pA T0(paئ}*Gʇ\gxD' m +iJt`(,׏wof1OQURd<^Rʧ*rrU~VfO﹡!%ٰ:;2@`Li""}ߊE~ !mi8p*7ł^jbߜW>VWB;l0kMp0x5::6Gke!,k #=PB1 R0GAWoQ>d39~_,RXEUUSJã %p8 MJL K(RXjGmᧂwRg( ^4_wd3hkmzp=6$X! @mmx0̗Yfcee%w(Kk0`|J1TzCo4kY`/UfLR]m?iʿδԐ"Hd/N@o@F*% E@o_f5γW8~9)p1 eDP; ^@&@l M)$F #F0M@aTv8#*}RRAޭ+=z kS/'t&͞PxpWj l, V 3dfK0Xeh8w|",EQF|}b>Oy8eZrj ,.h'8j 2E#Z+__J=oK1y#JC/'Ad/ CAB+._ h:rW^|z^1oM UxmO `ܔ)*KDt keBR晒hwcH՝Nf4(d,kʇۚRz3F̾XWh`$l!Nc T2s7Q_ʟ!nMi`,Vk+%"=Ud5@.x1G ( *G|v| `>?n|7&v8 AZǷ,X!0\嬎H;~D I:2D J^ O<褦TRXpQ/ߙ? f}I􁢁,sEAV>ߟ.fVYʮM!ͩ@/j%ce(z 2-0P4B9 M~R ஙdaTT-a42: -Q-A"w~WVEy8h!@X;΂K2#pq'zmlOix5%x@UP%xLmMXqs_Ę' BRg|t z$ѽ:ߞ,LJ88K\-96hI":? @VNdS3 L1^ @Iw5+ggT_e:JMS+O:?$ px5 1$U so\)b&۵P"Vr:k晃SElT5d.Vx{+,-SN8(2~0Pjg2H%ѿGsS>#LCE,AL}\FiE?ΫSgxKֳzWr7pD#.4.`4J]`D8.1[o=hc(/NxB* #;6$%H8 bb .]eAX:0XE %0_TA`XcV?r2]QbVVZ|0~ YIyysn!>B0Ѥ|xe/7zneEʱ^}|~dcZ8@߫aU-ು@D%ET'*"` &"EklΕ%Ճʕ3?W`o+Bdx(GnVB([x MRo֟J5W-|:|$".hH =}AL={殶}}A_)Q>,Up.{99ed9|P!UmK ;h\ ƦN5BrD\}(ݺ֪+>ɑF? 譜oXuM#`RN]IIPdF."[Yr>`@g:޳R%|rYWd߾|׏/櫥c娝6ocb݉n%g1,Qt-3P{zPH WѭpqK= `@=!8fp Df(Jey880Hyd=/4lŊݱõ E h;*Vϵp'(T>dם}Z0-cQ9d Gburt;XG,}Yؽ|HIPlv9L}+^616_@+42z#2ߜ,d&O nnؑc.TEyUQ6 G1H)e3t,2T}°lWJ!&!>ye=4Jw 6_L&HÀr)A| S}@6ޞk7oGCAu!\`wVTY 5쌘%ߡ Х΁*1ٙ/WNFT5)J .|8t"]eGXbʜC)rIP1vE^lf zU)+K+zޢOùI& o50hm]I J F`Z1Pףm U^$}F^(O!sw'' n']Oh}4bC{FH4B4P_ `{ϻ癓A"ed+?i`6z @ h_t$ʴhj{Fn1`9!sLV"GORfM ^ݚo@|Qж yĻQ3=0 @nS u>z ˠo9?(-x}휬6ѱ$;|6pXboڅ;.AĊ";| 5-=1uP ';E?Bܾ: q`b}, j VB\8y< _ ;Q=.n@CjIn; 0+dTbX+Oef,%hmRǀs 2@V P}7ޮ=9I[)RoX~۴TRTCAX @` VvԭuEy6@W5klO*scnN֖bp3Z** "0*.%ޟ໙թL G)kU@AV` {"ƱMQId@Y3RDwX}"e%{W9Oc56ܧXc&wu~sU%tS<=kPl,%|aJWT,M\Ѷ]hZ6;Z}U1CT1Ss1qԨQE;r"vӺ1M]E8a1tK1 0X5<%LOSu ߥtCg{:|*b7 m#)*{831gҧ{R_Xא=" b&Flo}OnΟ ~az܊bÕbsK9,^(@c}7jװK2 ,i Ƚ mx.O.v)Û /1Q뉚|R?-ֹSv%<gO[5v딲fT5 g˻?*fmRn @4rc "Ca-]2QPqV7`glGㆆT8az`suڍ C:voئT@P9{xS$AV@@Y{M.1%v0m.KA*Y6s#76r%}/BHKHKHKHKw(<߷ݽIENDB`pybik-3.0/data/ui/thumbnails/Brick-9x4x6.png0000644000175000017500000002372313137372607021014 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+'IDATx}iTn~ިDw횫zhFfelAdRPQPqq@#V'5"- 8%j:&stzrκ]߷wW*|{z]_]k]kW}o__E////////////GQӧ7z ^!߲3}z>NFh rw@z /6u80|~ԣkc2n^kP<Foz邖G^` /466 hy"=<^O;y56**d0N[o_wz?M|0%hgu2" 0lw6~h&ַ`ƿCkY6>Uit7#ˮT_ƿ;ثR6&~Efae!{06j!N&/!oӃLlf0X%M l=ď1c-wrw1'9Xkd?C;v #@e 0`dYA @݃D>Q_k  {{L8kk/^|}{ b,6==lTj>n` PN3:jB}{./0Q{9_n@<:`0 ;9 7˨jSDP"p푹y?gy' &4_.jٙ+ 6L|_pfcLXZ~~1 Ug{<cC77t;dC3PKu`;MpY0D"!s?e04{ ^LJب$'x"7 1XƯl`zDr^w&֗/X_☿ໜO02 v{1B{:~^+E2 xNNdxP҄V7} 6?gLH9clOqٝq8, p ss;!1}7.0L6<a0 o|aaN r?㧄,Bb̅Z&M41#JFݟ^_)87DضNHd[ æ2R|`ȩ|qQŪenaW1} imRms=$JN7ep,,iec_bH%:-ӟ0ڋ *dW{$P7GUֽ1nu٣q郜܀"ާVa>n61a0T#*D|L#Tc@^klc1gOd>L:M; ۹8V 6UCXf&3Qxً 0,r|(! ňS 7xǝ>(M}P~t>}$ ϱ\Q\zZyb|1aGF@o^0PNx n~&]0ڄU-l=CDR5R,H*9}wEL@%5Gyɠ*dQ0>Em@y_K7p wF@FzI.8 u^0T*`ثպKq  ؈nǽԀ_a*{t\iBjQ`]SxNFZq&= 4=fh  TEv$VZ`  QRdn8Crg0 J'? Q?&C}{/'\'a`8QDTٝqNsfoP/CU4•^-kcϳXHl۠h  ]{㜐"%=L@t+PӮg+;n\ДG~c:NR<^.t@4t6p&J~a!} e#pk" ?WjLe$44}M|~d~W3G`S!)E µ}BG֔v<wo_`qqF2(.ա}%lB0D4{uojR^ Sޞu ,DjTK0M`sy{>>랸NLP xܮݣGl;xa6I=oh!6ݢ50"A ?y&R=I~o 25.[hJ8e|C]|3@*.]};ɕvs҄!``p]:C((< %9>4#i BtbA\J7u N=NśGRf'Ҁ6ZHj>}Y @@Ǹ~:Hk y/".t-?Cr/e /Gmp&}^+I>i 3{(misEB\e2!@ݺ!j֯~M6 AUh {3Nr(qٽQaYM c5_v.gz$F{ @x(kJcؽ\{^T PbN82Ã(q'"Ǽ?KI^}tU@i TpU&7)2ޠP%b0F%! "Il2">Le5{r/]oCd`I$DFvL/?\HoXB+Di4Ƣ#U ÜNcVBL` ߗ\W2Rn?aPx|jcmvn0@Ma%^BPmTNe}r0O㽢ڀ^%* |`UчUuc]׹>JG*M0.x"T:9϶W.7sNFd {2X5Q} H>08)PG)%{/稭~Mr?VђYZvVziG 7b`q" U椇HS!cOtUdezjQL#9/w?c*|) vn몴A=\& ƄV0۾LM03!0 Ǹj8Q"#=Mp~VR=@%b}'Jpذq-J@Zr|#g% )Iتg2sA#2s闗D"AU?F ao,Ng9GҟwԤ %XMmy\@ј2P 0# DUg 1l@WZ"JE̜g*`RD *8crpka: H3!hHD0nJ'ɵ7\(fײC@9͚hK *`IAja @[lhn\ w(/LhDEX 2h#bEGIx%:$x1f4f ]TɶJ9ɤ2}ä ӕ aR7&y{RЁDפ_#4wJNGʡЩ3<ȚɌ6Z0% lCŶ9zp\}2ZB~F责хtm8)m|=G2zr/f`8WиerǕ *+2˷+蟿c"l(џ?ߩp@IqF # = #K;X6<@!"Ð6Th*&ٛI8dޠ\F) X`xG%^J 3$[!ʽܡ:R, 9U 1%U$~%vY + >eG#rK}V Rӏn*B#⭉ "==$F,VJa 4'" I!;ݔ|-PLgUf__s 0l8kïH@ P 8B$iWbW /]鴄#U3>?r>,߹PKI-w[-pcA ?>chdbh!Ea.å**1C_QHbY'Xx4-SdAJRAY#Sd "!iaC#$[p/jyS2n]W´28m1E21m%l~lԡ涮 ĝ %VIis2DR$-㰞 nX$QtF.b4𸨄L(Eb&R9e@JGHebV`b֟6qO<ѸXPC0ѻ8MmӗOs%W9Rbp^śgQXUo{ZAhP9>y^B4"Fۤq8B2$e7dV2*ny*[R@8 t22""e2>_HcdUl,%#EݾZ> |$/TѲ9Qeeiéa]]mhgf@r{m@BHFp_. K25ٸ Ae`*?Ef{Vtlt2 A }H\5k"5v{qpfIQ:CM,&O'HW7yQ=]Ll.O sZ[ |k o0 Dɞ4-ȱ{sEkWL}::F[.CSDÎ)RB^Y'@*!_9A0#Pi&3 bxaB 0I N1N="ffT*ES)0n=Lw) 10@y@,>/ p,LZS9, JU9+W> ).U"b))eJ 4w9aO]N "}O %̝oGĸյ1~f씂ِE|LH$e\F ͟a(V<R2{$.!) ;X7M}|XW6zrߘFXmQrkMn`0 K4!]$vEua]3BE( uTv#BQHB0U,$E8TuLG',(E c0Ti њT2 Q_-2of4"& =7ʾ)uAwm^ypZ#>*VƵ[!gU 1gRvSD^d@*F+R]@ T mK])6V1} D~-ɀ66D3*ǟyjHI%K*[Gu7mˁ3f4y*L"]I܋nX;?yI!8Ru8&FR&l)WdpeLB<.dk˗;5>mݽ&I3DžhLu{/P㽪-|%#{\u [mes#rNѐ党$H3# bB2p(l8U SsH (1Bb\&7X8@R ߤȧT74ǙſW߭O=׿G}O_j\;Cjq{P^&bl y^?tqJgpڽ^KPhQ#'Ρ&")Uq?gboXmPhqye0ѐ'V&~o)7%Z!f}/1;֮[%B5.UE4*)"7"T_ySB!>ٙ}ݗkZH/awVQ$:?`+`>V}9Uwa4GY^FLj-Jlȍ)-%}~WɽGC|{TtqSA`+B8fjw($GJ)<fܡMWD&nS[ie<6nbt3 W'^,u!M׭/N[JHy$ P!K̎*KLŅL){ $=~ -+׹M<Õu͙$K)D hABL5r~i;P zQ)`j C' ɪjH]QzF5zI^.tӊrBEDyx4վo-21C 7 d4\$pnA *xj _dI9֌6WX:ֲ UL[13KΗ/}zt(%&Z&̓Sd ]5vp z,x~lwaYl<2qf2"d2AvA d1>dV ~{4ԸpGEg E&tO4;CIƐyQNbH*VC!ESؔw+w/U/N P>aVN jT}ƽd>HO Jm)a\|B U\uV5X`34 @4`)B2PwA/m(B|}}vP)=} w}tʎƵm? 7tM{FbMs:SC~Tڮ0g/////////௯?~ ןIENDB`pybik-3.0/data/ui/thumbnails/Tower-5x8.png0000644000175000017500000002563213137372531020601 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs++LIDATx}gTUޙ uNS:'r&B%G JM&FGQQGGD@*" ("cn3=AGǫokS}=cuiww\rwB@n9F@n9F@nVc6nԯ$9cw l [=I|~9. {^ <:.# }ֈu|(@;1x>o߰g(5\r5=󞿼czbQp륑F' 0gǿɟŮtqm60wx葚6$Wl]lXIE7YEL-4YlJ6>8A&/ȹ|^8ihPwuNaK{ tKB~?Y my]0^N{"4[x&l_\\PXgXmq4"#M̟C|}<7T(Oq7qum6i!E[{3WŘOv@L*ag0C|>>~ ~W}2>~}¹kcޡMؑ5K O\3Z6l؃8w38863uw=.iT!cىnq'0|έ|-"T?:~.Akظ} 2>2 0] 4sTkm]<~1׳yLa^ [sÎ졀gcv F浞xʙ3CwTl Ƈ9E8G״L@'9ƃF\a'[^`iN *T eEZt:MG"vaPqNAZ )߃`5ksmfOz@,O $,EyF?@ؙgxЇ4 50[jgS/Yơkb_ǡbʀ r{7bj\FkϠ똕=Yz6Ea8'ox=#Dxlc[hge @g;2do?Ѣ]@_?{( 3 {CgBD9$Nqn`UAclEA1 Wk: ^nCQ0tg0 f[k) g/YȽ]t|}*_* Pq֫{:c_D7Lv ?UrYA/m/`bT(PI2{ /#f^]m`kWidmLv!2c`S9e}2 rƇg9fuDBJN}{HE6qG#5)u1M[ɞbN9|B"~ajHOeDQ8e QfR1[slP_  *4yWyDt-1}b//]Ԯ@B CG:I Gߞ:SNMkev!*g%ݟs||!A*>8g m=qQGLvh ]>;ًf׼&3RE4kEC9 :=G٨ h77rP T dgN@ss/aܑ$ ~&Pn6;t6d3RU A`#<0~̲'*H};8RjŠYm-6A2basaA- w/MΌ> e&}qLkb~}y4]׮]dÏcp !_񅐖w/u0ufqx(q95^ |, NXRţtߧIDª!]{WӾ-o=Ok7wLOi$yaAV\y/F=[2>2A804}_Bv(*.=G0n440 64)%7O|Ϊvhhj 6ȑRe ކN0~uLBwFP"  $vVw&쁌TJfmѝ |bu/wS 7|Q} '8)N >'1хەPeR Լ"\9Ȉg9J{ÐOkg/ 0u:<x&鏬(UAc|/pUB D1{GWB ݄t0ٸp[kP>p 4j7{@dd[&p_7h0ͨ_ xA.C]{Y"WDw6J *|TIPR[ة`]6$G?S0)fop) o-cJ]Ax 0|3t'h7^c 쎚7(pEM.[c=N1o =THQomy+RxxOgw7Y +SnP`(fR7װAB MB=z8tݍ9g>tC%xgJ-5E7V_ D%g6KMC C cx;Gs&X2> 4R|I/lnen7_yxeͬڰ`SI T Z` a*Ֆ/ 1,2A}s0Evs1 \o1ס_'u`_/M˾?>XBg]S 󆂘8s]iC6 oup3]0\wV XE,TUqLqY1*5y%C }e5*|]46>~@$@[[7_xWUBwƩCE#h#5y̦X4vEcփ,Z(ΔחƑ^FZ/!908 (WL*!C7bB%  kò; xD3%4s]С'P py@lxTo[6isS7  zs)R!ݭbv U+´ a$dЋ; i^z@lެՖE.yԵn(L]UI6h5Rz7}?PDRZ1*|l|/ KфLp:-, ] 11pު҅Aˊ{ (B` (^|";@W?C|3ꢐ |@" I6>:yP;N@|*4\qiy doZc X>[@С6@lPƢA.?^/lM? F5Z%u q;8ZItEQIo7BN)%zEzSXYɱsOmθ= ?(Pa!k* Lb聥Fax>-QCeeG_wmXooLQ,w IqXm߾?,23>,ukbTYz~m_׬Y@b5'0PyJ).Li0fDm8!@]{cQ363  i7oy<X͡P?Rtp%`QzaHs!jn{OP0"ZChwǤ.}E| #ލy <|sF$LҬgC~.dw53d R/(V"HB 0$+)TFŁD?"N3yƿamH>JJ܉4?a.&] } ~lz;xobut#䙃P% )]r)+jb0b;X|k66"+$]Aq.^;ln( }-/9"8GvQ~;x`qf+)<8yi uJŜY%j@8 E\[}p.6@_:{0voɗPʤO> L/e#c_\4-v1CୢYmv X{oZ6g;H\FX]9 ռ qsF[ ln#E;nig6/ebX!gk>^B G0uGpZ㓳htICv,Vi D=?mQi g2ʵP Ta/Pq4[2q޿/P|$?+.m(|)=}O>H"@⽽B'dd$'PT\eliBC(Œ2Ln$V y~_-bP6}b`h_  |Um@Z Y-#[W~5@`2n y>j` ا8S`p7h!b;~ jiC_QN?[)͠IQJm:B43 ySom&1gk6SBrr{`< =5TW УǩI=w0(TH~~@w,  `kcwUJRah[UӫSQ^ğXSY&[cL)+ceP$/5EIϞ2C9__{^n4*ByQ'y@?b/<>C@C9mCBAw{T'H4TwxhPhABE \qukB^gF6ֆ ;}rTߪY<6Gb!fb琏UcHC}e oaT?V"uK U܋ &mc!^]=Rvq 5_^rݎ^SZTkn2/K3\[ΟW<ʆ֐dU{UR8YڅB [zhY&V {<$^AhLc 9{fKalݍ]Чw/c4wAs-i :dv~9ƗKoҕC8Ţ٦/n!IfE&&r!|D7+rǵacu4erS%RZ8L/X?uM $y3#f+EEqHfpt ԾBá0[B iA. 1x ycƿ@x]/H-&^6"ߧko /jjYWz =; NiqiG(/ (HXdiXidTf*cǯΝ;'{ZQiP 1궖5kD6R/)Y3xqR4GOFbJ%ƞTHu?"JԸޏR0@d/s4aVw"~߆hvtBNL@ 5Q ,/r] =$\TdO'0%}Y{1廇I. WZpx Y@b`=8D h>%DNr9Z.p 2Z٭YM|QCo-Nb-gյU`qC \*MDC2,͡NqTҸ@ Ch$E! NPU$m^^_Q ۿ' .:*ءC[jC bL6Td"!P2Y>C 9 +X\5 #"G%iޅ2D pE1WeKԻz70ZImN H͠ !Y1D\C=-K9H\LFdhCKWBC 6( ;oZ˨8iۊ[SĕmH ;M13`Q DZIdU]Ca gI@b[4b֣wTZxwBop6 B Cڮ|F4<. e졷[

*c셦\y+{m㫗<\^K@rx@Gxf UAϻȖauYtH8R>dai:Cnq?t*(2&A{MJ9?Y*,5}ǎ/%f4oSga쨪c3qsȍr# 7r!C 7rȍr# 7:(5WIENDB`pybik-3.0/data/ui/thumbnails/Prism3Complex-4x4.png0000644000175000017500000003253713137372660022206 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+5IDATxwxT" i *XATPH*UDlAĆbDAJT(M@z(A, M\ QgϜLA~dfr9{}ګ{|KWA_ TLB*T @U*PA TP*T"TcMmo%b3ʕ+/PD?UPiaThi (M3ӫMZ7p`>u4([oW0kV]:X fT6iSqV/@JJTRKVk,ou95j= .M}iCgc[--$/G2h~a_r0'<<\if4Ӡϔ`N74`<߿PJ`s%9b^l}&5WVNn3.Pj1_x}s^Z8p@ժUKn,';Q3i͊gvzrrr`@]\Ot=9 пSEi O|FGSjXreWf/=ʲIzL g-ee)2`ޡ2-*'@%Tx^Ӕ`}°S;ǣ>sJ֯+:tWv:@3F ~KI7[hF00g8R+spM/s#8oKҫk2TJotmo߯ z/}&,:ذe YjJn+T_~Tz%\"Dnni$&&XDD0hk4nTKNMwh^Mdv MlCB=qX s6\z&fM-0%%n%}׋N\ku^V3T}6]sԶUmSQ*_ƦMah0dpT*̮QJ o:gnճU}Uk48W\q_[W_6l(sܥ^8$ bbbTTd<>%iiX_횚oM4'4`~#ٰ,A({˴Fwt ֿ %ta a>ccs ]qnpf zNd2q) jd9_4ZGH0!ROx(գfVTTذjJUO\wu^0 QFkQW]u|%Viii^6..NEGG$-2jV?25nf-4v$^wA&͙^}=Ϲ+ȑ#^>:LՌTժUS5kTzHLPmkT-kR-_i5r!s ծ][GHv5ۑk4 t?馛T*UdyٱלMГA2Vp,R_Xg bhF-m>>.rZ{73ix//Њr%1E Yv-8BKud{o73 ;wk嗊b=U[qjY1.wi)n5nH|wsOcwQ ^<ӪM6k׮T|򉲡㦎t&U_]py?Jkd@pKI@  EE~4;U0aH:} 80˾}3gT5_ݻzUsG#lΫKnr_ հyGjD_6^+7H)L+Qz˽rtXEVQI G ~|M6H@9l 7ܠz{,L8z[Krrx&v8 :M7y44pW@DP¹SɏnOtAbj :%>yC[ãl?[𔩺 c "}0ݻYVql^YI=MP9<>VPmsU TM4Hq?[ x,R^zo|btXX T 0UCǗ]bk,¿M%XIopMQխ>OQ>fM[@@ҥa,>̅Θ1C -'`Uˊ9dIJsmPC]U>YB&d.Z|kQbTǪq}b)ի%A Z|=o]@դI/88=X~Y֏V9}n*\u;JL/߾ UM`SMZ~"Y}"''G\oЌO֫jxa~0R 20N2 o78B6t+[`O1A1#:Rk;1#h..6J=1 jXXq qOm^|}t7{)矗U0e8}Y!&~,׊bxx9L$fIgLFOzdk ~rCw pm~yCL7K <[b/KHqB]-!ѵu\BV?O7y_vo:6VWv jI"yDoQ[x/ :Y<7sM&%#ӿb]ܫW/yMzuq6m*UKx#\4 G]Լ~c:yTFA? ߲d$m~+RCUztKY@_u։3j(@۶m\D ;vI+c.j1fU$C@wOtU3S=b]z~b[E|g C!*Q,Y}[^o߾]ulmZ?<;=Vq*g'D U}i{R{0,/A/&*D-uugdف`,\دv`"1~EbLX0 , ?K$ϑs6L}1A?5V%%gn-U8GiyDqhٳ!(vL2a(0w~c&N(NH}HUV/9C}^lq g.KD\B{u|V1NwE39Dmzux1C4T&o| "x>cg9 e˖dMOzܹBǘY+л|Ҙs~0 yu$8̏k7G$Y}~jr'~BXdC(b:_A@v͚n f@>̅xX⣏>&' /\,t \'TЦz(zu#D8BTe̷6e^@[0(t&&~aF̖Dxk/ *fH~ÆW_}Uخ];Q` I(ꫯxy}QB%܋SdD:e!2zgK@$zHՒBIc䪽e+{sF<"Ǵ8a~jbzθcBcQԳL@_Y>G` DgY$ro ?o6X_3d4> .J,Ћ$p2E1X)xK jӷ˫"2)UCy@hW1]YjB$UjyhIyy(L 9 EH KO C{kJv;{lxI}]X`/F l5b>qNJoqo֧K TVc&9_.0ĩԔhEsza{؎+Vx<,1lJ5;x}$u "{D +\V0JbX$XTS+w5]pS`>dJ3uDt2 ,*_~`rp~S[<͸~wg{e PP%"`e j^'|Rnꩧ0[l{Λed3G".Vݢ-ƻiuɓX}\[1}tl0Ej="!֣ |AxT~7&L A:,p3oرP ώI&xWTժUC=Ŧ 0Aj`VS<`򋲽 &UK"6DC=Ք|A$ruzsڽ_O<7DI<͆ppw ` A@ ?x:oMfL' 83VϽA`Cu0Qlxu"<j\cN0.}<tLJ1UhWsDS 8 p /ncy ~vQ=j= /֞6sR84~7< 8{1y5AIڄ^"X{ ^=*29g.bϮYiũŘVX tVG?RU㏠l`mTZx0?T[nUoZk ĠL& /" i䶾u/t,M}A1ZOE3ąٯ;Y4w,{ӊfMng,l`~<8V1,mbFyPGP.H1'-Dt7ޞ/YP =֯?;Ç}l8 @h޼7fw#4rCǎ9|in>/̧Oe~DlCB_&c>LI3srrԓ=L$Jʒtq~#R~2 a't klBCD/ @`=gϖ_z% L0Db @2Q$sl+c+k}>U6c cbs{V\x#oEZwd;|frLc>ntRL7 GEp_(uߝ8c~Ru,`E!"hbP, ZvI?8pۨ;$ phx HM .-CrV>ߚr6GЬeA{·m{u@=ZGب"iR[=T}:H eM Ճ8A&`Ru9t&~ NFIHN"bsL?7wǒEwiz+Z|ҴDP |5&p`Sf'ֿ̇g4w${" #{ 0: ]p L-'gj\ԇӒ.CԋSƆc̘1{@;c (qLJed[6)o׮_,Ctz//<>Z0?Nm#)狪j oI1ZNإX>%Y&620L4DL?;>FԩS,$l2(;cZ3pUW Sb[P4t})?7ĸ}?[3䆪z5'S:}5u0"Їr SUNG/i3|W9 / Qg =xi1:C;0[W$/٣Auȝ0%&OZۯg>LoK.P'/D '@ltW` iq clB3@Y1qay@;3zhYbMAʸ] @[lBЫ?@Ct7̞5$K2&RWAqWu1qݱ(8_m[PPi~ h<2cZǸk@l'%1 &-aIĽfJLS1|lg0EE[PZ#kdGO~+fВwJb|Pݼrhܹ:-[5@A= 5BSw^ ǡlV"Gߏ3N ͔$Cl ww.HU52üUM_ u"S14Xg] # w~ U>\01|k2߷o^ !?s)1/1x`o0AGg>U-1^K8r ҖBwmײ1bsmsINj8t𿏤!Drwf͒.(lqqgnw)9"pn4tL-6 6.1?< It!1/L^hq/:g'R`Ԡk7-EI}@)? / J %;:iHqA6ޣ3"lRe)6 60)3NG 48_:_oq'z-9wGVE+҂^PWǻ)y=zvq6-GQ0?LO!ȃ7I/,YЪk+>2ȪęS"r"\=`ݔ~Kjt.UD`ZӓUZrJOlq1딐Bְ - xԩS|k(,E")Q?G`[ؼ@$>I%̹H T}%9C/KmN-|2y,^=4kWt QѼ_I3k }`.]H_nԺ}b'o:b6O`mI&l1Jc;({פe'}̷X  f>߼<[dp'Erf+6hzi0[Yzuy|ߚ43p٤:E@W4lXd[1@DCVa{$v$'lh3<`RKYH ڽ* ϟO4yR(K}}ի.1rn\(tur<&Wu%f- 2jMAA*} qb$?sR5Dcrul}lH"J&c`;OQnCz`EE+?IӕQe#[Mdza~`to}s}Lmm}ύsI.{k½@;όp8c H@HB`b{8ARݣW=ȟ;$lAB'r5|V' 88*Q[`kkE|~|Әkҽ{k  |Dv`:}D'\Ry]Mq)Ǵ 'QںkJŹ@0SH,=A/$L}Xe>F<Bs0u0)p_֦W1L QHQ"o~ir8\&sg,+xqNtʥkܸq"%܃-ElFLrI8$ #`jjS>c (*)O٣ ,zt$Nmoݬ_.YLTeOG5|iԻ3&׽42$3MRoؿ뽷CԢ7-[g6- |hqQitYg0bQ`@D΢SHxCkQ`&wsȤhˮ}zcDMxc g\ <'BӟZ3:_sѣB"Ӯ^[]XlHGrv`B[:Fbeİ)Okk~Zi^&yHo#Eմu`4XXհnZ;5;Kx]iG%i7Nx`.VC*QگԻ$ǟכE+yގ^jOp^_+uk{=h}k:R =%-_g&fB  |̌.bR2 DI3}}h潴هخ4=>xgKy gNqܗ @g,[yl R9D=pS*YlUK9!v-wWgTVCMo~1*/NnS)$SwZu!Е6!/rzGho1/D7Ǽ;WϗRZe~K/g"LLJ&'H;ܩwh{L6 c~~(ف@atە TpJU' [F H)ZnV~yGӓIClTaB|઺f |桏+y iӊyG0ťAQt}b<3R:ؑmAO'y &vЖ;V-vr{7ۃ}}$udO/j)tr hsѮhF"An6,@ ȳ}|sĎ@e/s@z ,Z}Ҙ[t!}F>IC.{:vHe3s@JywGLj lb:WMRUƴ%U[, t =|֤w bۇPeaDlˆ}J4_r1v3#Ulte'w|i ]Ir Bx۞6LN aa=H!p/finM7$p|J?;+P[}^ƦK*ʕUTR:H+.1}}=gZ:}{>綂ǡ9KP9Be~ :cVۤQv wwV&O@96j:thyH%K&e2bDmN_v&d#gK>\n !y5B(!LmtE0xWlTު]th5:ugg)%G)OϞkӽ^Ngo w ,G<2?(戌)-~>?X`rYxܝMo5|V`^h`ۀ$v>΢S[ڴ{w$R3(}%_E04e_nRd }5 xg#ΟOVcGm2i &J h, cSϿ#AzFIENDB`pybik-3.0/data/ui/thumbnails/Brick-10x6x9.png0000644000175000017500000003437613137372633021076 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+8IDATx}wTϖ>{e*RV G{)vE+REC&11MyM1yӿ9;sg 2s;<<|וݲ7! M eݲnYd,[- @v eݲnYd,[- nۇM)5 ;^IYj (4M0+ zu펾?S k4wU[\ꢹ lmYV4F=[ds*qUΑ^k`j,*xȡmsmTW[Ž5V]᫰=;;-2vrY%M7=zSav  ^j @q [55/?MՈ4?>o~e|_TemN}_GskW0,3u1~]ϣfrK0qUbDh>7 \.| #> &v)e%`7.?Pcˆ e>"okw^gݱOyʩt6~myM{a_|.U0A=0z4գ08n}y @iܭT8-/#aف0ߕL k>1`S}J1>q>x b18 Ưƹ{|6o@Nm8}= <#X TU5%ݝڻ+`x Gl3alyߧok sCRZ}L/i8=n'{6%QiYpvr8} ECpVzFyy><`"CX HJq2~'<ގϸUN4s n~;[ R 5H<} C6>g !#\n~{\j 1~1y뵨*zͺOTq:eyMN7l|ߋ?]*y+ynx  eaQTa؟쓏}Fl%o X| b+@(LmVzt@OTqJ?SxF"V~ H40*~ 6NU~mrB># s @H'ݪ]ȑ}2 LI>)|)x ?ՑᔦSf|F9nZT躰fA ]DwIHvLX+`Y IFxʾKLtf7au~hDp vw8Eb:?Ql?1lS>뎵)5߆S/kw 7= =yf* 7MBscP xJJ%zݑ*bÐrV!Xߙ"5}wxCO8JO`:> _=z7z*N~9 F3^u1۫M)x9L733M Fyt@rh@Hrso:r +L ]mՃx7T {N{0di5N`Uq2?zyiaS י0k5kȧu3<8ƤgR"xa4|~,`Lcvv}{a 3BhYl5t&.3hhPPMk*jӢ9h"H>3'``M cx7nRS a1tliAƳ)@MpZ Yz(LN5> *tXE]j"C^1aR@OQf*g3bS mB9 ?nflBP[f#iv&_n 0F ̹H2ߐ|~cߍ$p )QיƧ\Hl>6ځPhD bݸ02RjqQByqGq@q 4#Y.򆖉^9ݔMxÍc*[2q#0ßy.GSg!g ]seO džQ Ź,@C~UuY#nr_ݦὺ*ϩ70__/7L/amr=ƧmJ`-wٶT NkJ/l /O@ٔstT!U9s7:>37&1ayx69_@} t;#DʢQ9޺qQ@:a>\" -bXnXdq2^{!,5E>#W`0 \Ɣ&*MB Gy IrH1*9EC[Ib)<,h8u\<j!t]d_: 1Z-OCMV\gvC̀=˪EÖ7 Cn&Se bB0 ]\`};G7_d,.@Cp.3 \5Y`dLp'>qʼnlTeCkictׯazwJn6uϙ:0AKI ud[efZfJaiW̴X_%Jk|z>g8h4"ei(FDA3C*Ĝʰy{o5܀ŔgIH*& [v:cgͧRjX' zl+7eȰ qJ*0֓d3.մ=:[䏹`;z1:8R|1[?(ܳ$ʌQ$trR^}&̛JO 4$k)ua&64n,A|H3(L3UEȭ.8a*uM}Lm8a ٻdFcЀOoEƨl2s$d9V&^+uFf h0~108il}Gxѫ;ϒDݞf\Sr:ATDosL7c<%f5*$XaӖʙ $`wfU^˷ 5$$F?u 4-׷B ǓScOI,P2op0! M9E0&@y).T a%d|~&=0cpF(ͦn1|!F9Hg},jʅQU^GM@}Ҽ|E#K e!(%uy琼tdmKvlI!ۼg*._5F`:`D£G|whoY&i(anIyj9F*Z g%#x.F "Hj &V=lIw~c.,E Ѱ'O7Aĺ]G}Xv_ EB ؐ& EAޫ? ˹/[ FV쒛0j-q1 ٝrS_2Di }(: 76~Cʵq4$ϗNQ2a)Hz(sT"2L4bs*Fu|'*y-jNS"!ѡC,|H}\MD?' $X57"?@ Ml;k tw+_[E'"h.ԠCL>μw5ᝫwV8]@/21{!h(z&U rGKD!֘]rTyD0^`4z<[ĨvnD?KLidmPX>RQ& 'WG Z9U@hs*£` "C~RDh Pkz{"-FLr `4Ot3̙b ˼)N7UgH9xaH$z(fn0fܥ;0_ZZ$ivo dEpށ k|czBȺ\iq{R~Aݡ60*x9[]^`T7U:[Z"7-ϯoѱ3[5Y䑓4"״g_j .![?zd$N1av8;M޹W~y\=pM*՘!ubO%"^j]  pF_jntn99!<y=ԣ"-r`Nn|3|Q4~)t fem _JT L5P"h"a ^0$<hD\aK62aYRn!}U~?xXMP?WUjݝ*tw+>Q_`3f|BD>BHʽ#pzUy:~18Z?ď51l#_no,nxXH_PDͦb/9!ܚQ7-GrqragvۮѬK9쥞51C4( 4Qsn8_s6n:BuW]#ū֭FQAW3#ꦆmc@Pk QlH|cHySQ!%1Ta ߓ4%_&3[Ez೿Y-?ӸGZ1C SH3/rpxP5dὩP+SI2.OD+ "Lypm%<}g>&T$"?RuiQ=g٬|c\ǻ^1?> 䖈`7<FZ/_>ycmeZ!3߁FKL7}4HA1Ͽ*rq.EO=!Iqn3/;Z6.4]@"!FE4E%@݄ZI(Hua~:wh@R'$RF>}8w+Ԇcꋮvpv?{99-FMd.)_+{Ex{L^\@m[x~?pfb|D c!`&43]9) u45=V2ٗRr7 |)=k"ՠ&}Kw|@ + ޔJ a~~c5|BZp W/Ғ0oxxZzp]B#㓥?U@-ZTkuZIʫt(K"Of|:ՁGk1DBY}mnPGk]Zk# 9 } V`99 >F8/,Sgj͹B@`hMt5J}TM Gտ>TcPzcjN(سeuF xf`Wb{UB`?!W6$\{+\-Jo:}ĦƂ*#4`&J8d= Cֿ3)} ӎbձ ޓ ߍs w hDN*Rf _qAXo'_MG;ǩHȥ~~L}Пu{fo?Rp"LHzuԟ6h2}8ܥcȧ9~yA塧Е/\?B9>cdV6rH ڄv>&̣~> ="lRDgnC9O{IN(uL#3J9{|/ !O9{$OPmP_Aׯ;3!iL6ztg@1`wbdSN2tT@j{T6IR^$U)"",x-=uMpɾ~MmaHE{ L๻ԟ_w/Rj=j΄)j}Jzkr KոA<> "BoXhE<*D021%z\=:R0M{4x.)!Xn$<6 J=ODZ6rg2F9$9OdoQǒV&pǭ'""v9#ejȠFru ~eGtX13>;Z.~>\uRiqQr;H|U-E"}5ALT6Gdã?X@"sF&d@/}^IRbݗV2:LVA(4J^ K^vqkQyO 飴[VQ7 ɬw=//)W-Tnš2 2^><ޱ{> TMhC޼R7yBI$:\Nc3{I<ijhhV3X"2A@v BJ8dkM6T zYVpH?s&V#U> OfGr7d;.HӫG@?vܳPHN Q(!c<#貝WP6v5޼4ݛ}=ݦ{h*1d-9( adi0s-B1{&S |SE1{[0mkb`U #` ª~uՅ/4OǣH#\i55Ӿ85׹!#B1 &$0<[ GRIH^=}I$UJF\>68YW A\iKJD;OJƢnPt~T4*UK=^S%n) bu̓K7'ӯ+?ޭ4! 15PvJEZQ!@N!C GCzFY܋I$s!EXXgR[3۷$I`a TEpJX;.QfS0IAE/MQXN(1؄" +RSa3H$V;DҩKRn ,$D0H~X ʼ 0珌5)BFqPUBl3jf[4n,~o^v| H0Djd^۹j.s1H|ZwJe-L&ψnP~," |HCO4J3pRLGˣӦRB<7qp⡤| k-znJX; /{eGOeu1\5n_݁*`?x+>B zcD)'KAh!-,S3xIPlcL! ?ud~\u-H"]#ӥs!$KSA%č?҃E8oʗuj4Qc;tф?R^7g3 2cغj#͍U<<~|ۦbܟ)Qe{T?b%K4d*Pe/?8R/yfLk=>i'94 ΰ,UِIĦҒ2#B(/(z:0Ak CAy΁L!H@x'Y&f"5zYAPP޸U?mHOZ9' #$7X:U/dW5O>z#Mz@y=E(xHwj(vt+hϮLzvRXjJ F \m@ 5Г6pHEcV8!B4|guaVbT+d⇃c܉A<[uBCXϢ~V5ɜ-DVIH-u rcH5}Kn.cYUQs:6zǩck^@haDa]L)K`U!?Dg(6;2@Dwws'ǹ~Tj SG' TGOqdf*t^ʩfxc܉GHs'[h>YSUC3%T";jp$ɥeS(XKP@;Dڥ+u9A܂QP2Bt#ѭ3J:NP r }@FaK` EWvHs-="͞tX%@V/q}^"kkYh)I?"RWul$ (B)yc*Q!a,~T~n LW.6}y"]}"R7;?)?p#ӊ졞9Vkdz^ZDHrZW0/"<]ipHHYr@93 2),>Wr)EZ9F?ύ-E[=psH<#;G"y?xS3'ǣ{[0SO:FQ88 5(&=p^YA0D iSH˒TB=y8'Q!ZeJŚ3&t߽&WMКy;N<"&`pjX_ ?-~>e/]4_ gk[jC*3F1D $UsE *+S\65Qлe ozDϷWƥ*`x㱢k &f|`":^@]'Ri5-V2#z,0',Q"wYgksdڷW'=P|9G4NK eG_&M[\oH uP尚yiw{ˆ?]yڄÅÑHG Q#k91* f#Ĕ*pw 'Oئ:Uԯrp>ϟO!\W9I=%RPS:=rh0 ZҋGcDg1>z[V2QѲ>2:_JB6N~:ޯ][V[M(k`C8u#亥uî(ִ+T YJP轗3/>F=Fi*c}FCKBy䢓s>3_tS!*pp&C}3ZШ2[Hhy:xJa~\ڿCo; -k[VKj5h:?ӈ$&df ?W$]C(꧅G;6k _FؚscTDz *^pT{E=7gQpN9d=Bz#tC J*uϹ*yjڵ ;k|' Eq#Cy+wэ_5фbIZs+F_|87kdpÈHFoٛ@&dݲnYd,[- ?LCdr*IENDB`pybik-3.0/data/ui/thumbnails/Tower-10x2.png0000644000175000017500000002502713137372547020654 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+)IDATx]iUzrﭺ{olj/Ѐ( 먃# 6(*",B!gb&tfIfLN8L}o;FySu~~KU<w\..............PJUnX?ctr׼h^NRS/תG`pb^Gר(K۰ _Y`B桵{>5 ~ 8 SsxT \K=J54W(˺@a'rP cUzE܂sLc5pE u^fav{;`|> *Ƙ^ű!=¿?8.>_7~'2c{14O7:kQ0T ks `9ne82BDqEyiaO^nxսˇzAiD?B0`>|{XcgD%f4>WiDqE/zư9 } ߧ|C;s f@Ǡ;/3 uz X 'cP$vUQ< 3Q( thD0~2 Xp 9ߢj<L50B`U:GWqG;x@zkpϯM [k@C`)4[xBaVCohy6l:l-ToXsGLe #{L~\ OX[ȶ;4BY a Ah"rBBɅu4Uʧzj a}\X)xpFmB??Z}\չn!Jzht>)6st!2j_>6{)>Rd }&2c8o6X̵#x0U({]a;" e!|WRj 4+ټجF&OǑ!'؉]x/0|j~p>] Fwub]0Vaݺ9iiGu, }3  XzK@h$kw[q ݰYO0a LT?!̑H ļY C8: '%`HU 1TsuDP1\7GX fg ` ԍpo֌֩Bfy ŧ1laޫ7ڴ="uQCdA/"}~߯+4NQ!CM$#ٛ Zuad!V2P2Rk5E Z;?PpmFKן`:welwcƃط &. {9j,M}lih{Rj[aa͟P sD 6v̡&yD>J k'Ÿ+>kD1}[묐uI8d E_rueiZDˈ -ۑyX}xl}=Nj͔ϥhEFK0-q~Xu:$Ra8z j,܎9R7A`聈`*e͜ô@uH3?k :Iq LuxN"(X]0dH͢f!88,C4zcXsh'dIlp4zf̙:|" hX='/ӱXq1gp5!`UdŸ]^ocrge4a!Dv87хMKVʽ+/ /u+E|60NQ ȹ9\ :ORιufl0hD0E ]R$!#-0@ȂfW OCzLOWrq~Wa;3r-W xvũ* ?M"FcQXKб[OX_>}6yXf_=yb C%8@kgw5 |TMs6a#CÚ4Xn=[^-:vǵa`YJ!6nf7@D:S3͕L32!o(_+kl3.t&i >3ZGgguhkR.rv 3Z?I"`x4;O')2}OV"{P 0t0|-Z#|`7j7_D2PCXMk%/BԻ41*%M  k`y%CYqMs7'Dr<.e$P/&gp6l &|EhĆVcB kؚM)"C s:F.0})Ian0G"XUˢz~uz塸:9 1~"b5_@пZ=<-B",|n4TxI*7J*y"E2L 7cA0aL+f#p$A6$fF:kkhN:J\HX[p>c^4]2Q#` iyǂ'Sh"-AkYjWƔuZPO4^Tp-<<8GjUn̼VbsƱ8i&jlm۫i^[OU2+5izT~[ 65Q 'ic;:F:tIy \u0>P!8CO-L,űtonDܒzWUosj Y~GVSSS܄da'pnl;ʃFc0$!+j܁>!.ӭ5ZH# 5b){TZ6ma$p_dZMF4k׬!u _/IW+#~GP jK̝L3.4Z1Y4ZմsFRjkiR˱11 q"$QT$uxju])|GgtZ5 i 3yŻcRs0C"^.e _ {U91֢fˆ!o/p3w;zkq??hj 9ag3#^U կ}[߰Qbi6-{&&#Ll@'<)$ibZs-U^+`WH|3_%=cϡ(4)eZ]YuL1:pXeWU>zN{`n dOj_ݙU ?{bE-[f٢䡀u1jNEJٓ-^|<#4L b >h Y: (Lk94Z{`px9,u)A {~VW9v>C(҃1˒0OlMό{A'e>; tnQ'.>?QC/BF! Bنplv'r#֛VfK-RNfKK񓾙]On!]諙 P??[mK D ĜyI=6]Bħq&6_63gEjC= XVfEԿ+v`k͚W[qqQR h%(VK8l-n_ :꥖P V9^X(}J(90͒_(լ C$=Vv:SkuX+%4RA` ?)TjhS}5S_S]{ziVhYdŧ&3yIP@?qiX:(aSh >!wZYK&BxԦɎ7~LY\±fN$ytW{#^U*5 Ma8ӼjLM=Y~LC`p\=2B6Ma?a숺P~UK}*VSt! n5|ׅps3vifO8.gU$u&Xh޹pm_T*ɧd%0B1j,0HZi2D,5H~`$w0p v/Fl%HŠ0ݿ_2#?MUgL}Y_se.ȧI]asx( ,$,iG7 K sCMbi*uDk  b˟=FNG~Co>46AD?me&B ^@=D]N"#hpp3 1>CЩ8+ ثPl5eLPPk[M."~8n݄NpDoHCOPP3; ᨝0`+?ܑ- ^R5IL͓܂Iaɉ.&GZ tF"|Z-SJt3/ ~q ¤djUWڵBDƕMz_a.j̈:B?.}T. l2>kY> X)[Sz$:Y_FCX/P-DLΰ1} uZ16X"3 _f-p};ˇ %^3"ďI%qӭ܇D{[cuG WV"h@ڪ!7ܫҦyUqwZiS̀nu{?Tzʇ.'EM4(7oB଀ly!WOV7n d^c^ث<:CkY ]-xZ$X_F:D~!u|g`xԫ~q4Wݝ 7]C QL?~WSWG5Gx$"t!WTaK,`B-s0~؊l {Bd !Pq8>q#!x+z|{ s#"ס D–@FҷWIޙS(_ZdQbƿ*7Ԁ^pƋ-Do;8B4}== `U< J~fP?s>żg$o1;RɃguo^ajnyю:J1it;9O _qO?t7U,}9b3k'dVFf yb^ u=[V!kv¤hd`(CY|$j Y>'VIB l+¿WB,htq$2!1G'6.TkHʀU*'FWLϟZYPqOEm,6  a!bLk XXòY^~]ax[D,͘!`IL0VoNnM-GEXl)ezr yP)|gsF^" ŤVk󃹓P{ԗ?-a.vªo N6#\XgOh5 >sQU+E9uj]@Y0p|_JhYTB`mtռ(,`&Ϩ!W"]DFwl~["ے;LM| J/Ż |G(8KBy  $φUKر9洴68hYq+I! }(7vnzYT |=I 8tr7*H4XVONuX'M܆뗥EU  }ul&K?/F ÷T.t?@(5biEml%Tmoo A=*464T;|{j`܁af&[d@JJl0.yUOCQA :t6!zDjQ4<[$PH=Xo wzq _Vո!~]= 0U}* jh$сY챬@z;_m8@K(9F6 rfe3t,Y}OSj#3"ٌWuH)Svj!~:0eýtFq&6 ?`zr ޟ }i68SqxZuWqå|mܷzϞ/ py `_G5 2 {AgZ\M$Z~{QQd"Q˹?[,~6s^_i %Wuh?uctZOM(fgO0"!Gؗd{mbLUS"[=+|`AT]MW,y'AdPu0ѽ=* pP)d\J32!Xh%w<*a>b)3|e.YmnZjT6\D!̻· @ݜzC切n<cͥx8tkwkO=z4xX/@&||+U( 획3$j'PwS{0,_ Y `T¯@ݍ`O7Vp|cԳ9&CcB3*]^~Ѡ@xQi!tpЫ]njh`,4XV 05cn󿅵WAPimX?*I fq!C+&`j" _}Y,MGcAE穩AկTپK]W= _Q22J|~իCBF_Uh03)9X2P54̫BM:+sZL"XNd Z]ʹ&3LO({c!K'{sւ fO-t~KX 5kJ{kVCAzx>%#`%L8Rh# s ɧ 0.F-F-|ѹr0`x"etemg4 > ˋ|O 4>aڗICk//׋"4X+RuLs0}-pZ +),(EѬ{g$N'XtndpL?p__?`gDy[[ @V!UJ`^GXpZHŇ@?hEJ,+Qas#@@ r>3TU*C_C-V;_T sU[2m_lWOEEm_ׅ%B%PlFm**p.݀&@kLe8?݋~KNb%;D-3|NV4-MpUreȑcW%S*gX =&U :AR0EKrwl\4  ǗD: ?qD@]4iGѫ`[9tN-DP PrUFúo .\H$L_7L>IginU=UЛr jdTZml:R̗BXeDv%!t_WMX|`-]-m]m^uH niHa]r)&  ~~Ht'wXZSF?U> /z\͚JfP\]?VUE(I|..HOX8F@} :pkюN왲J>PMEv^)! wp wp wp &p wp wp wp wp w\1bIENDB`pybik-3.0/data/ui/thumbnails/Tower-10x6.png0000644000175000017500000003661313137372551020656 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+==IDATx}wTUTխ:n$IA2`#YT#bƌE (P@hFG}:Ì= U(q?֭[wks?#2< 2G#̑@ sd92d 2G#̑@?RqM3F6;ug~Yq,uyjVa^m6eV} ;vK<*%ky<1rfaR&U`xuӭVqˣ.4SfxwSWY7=WTУii[rjw~ǭn{}f'^ \ywʵ-:V7a͛U HOe0l`uۥy-5ia~="D"hGRڰ3Qɦ" H=}9d1A@G[zbY0(; B 0C7Q JW؜9W,E8,Gd8)6~;ô::U}Xk !{코A2߉/{3u% ӹ3"Lcu^}NWra/^lESھS$ ل_OSFF~x7!ٻU񐷙O_laN\G"A~^lOr {}><)眇s^M"Z# Se^Տ2#Ɲ1lfTq*ۺZ;qxxx|S^F%p9g#= r%7* J:Sť8CLa'ݎmtD|bB,$T0|/4C!*~5?lǗF%CoAގ޵Q03iP;R4'L9ŵ܂Ͼ?{$ԷBU@0bFRf :L 3sv?kFukVݖ; w BXySƌ TP=[$]zJG<yƫG T˂w2`&:Nh,#H& <^@pi~i)mtRE`Puw6k&%gڳūHļGn"̦5=Uwûzm4Pϧ1w0N"0*_ qvtf"ˇ9'iSG@K#Q,-)O6W{U_ #^:ېtH3 u TiKL[9uV _/F0J^.84!ᑹ,.0?=Mt wJ8GNt%{t!YߤrY$y$gWJ\5(PA@EYbA$?:u3n6n` K6~#&:Bü:?_ȣ—gt<1FI$4sШ:xxF||<#&? IDj ꦗW7*h{H3=TqïyBϱ{`; > F]{;u7#z|L僞oKOt^〩4wT 8|a;3T[ѥe0dR7ؐGF0V/@BHyu&{nI#oiݜS[@F M/0?1?S(2%bm0\kI E񞃦b;Øoko+~Q&ͰZ|/=|0fn 0^1%a) +@-a.Q090:畟\0_Ӻ0Y*/Y0 K>loAp#`tLݿ԰TbطKLPgLP_L4 PVFEQMPy*3YeNA X^0$ЯBx?GǪ4$;`$I5]&5uaS74k@$WW\RQ0X/7l Dr18Ϯϝ8"qc@^5|4i׺\ii%:ALyxK+)aL5;t=ÜOsZv9&GE$Z{ԟjֵ')5ƨ>)x9铸*9˭Bl"ULCУk+S0dȐ W4Q->M`=˫&2FFgdwqj(;DFp["4N@bjO.W_> #P)!܏x\9ojPlRB8QRN8^Gm:AnOB4`KT-ҋY3ѠSM 4!}盒ю OѨ-|\35c^&?kT>*G~)q,D <0/0GL&mzoҵ9ģlr7WRD8Ey]|/ZXu0v0:h<^;!_fyx$0L Ld,}ɳ=K5HP= bOG 4a喤Ͱ>ݛ1Zܑ"34%y MFZpP~|#>?y4_{ AdxRį3M yB/WS' dc[MҒ~x(9A iy܈%yD_GfYB03YMMq:.)ad!2" !3f|H(w} +Z :ɔN ERՎ6xƊo8$ܡ9Uώ^?}}5%k]jӅgDL>&G }}ͤ d!/ЈBc!x"KNp x!nOaѥ׀ᚤ`b 6a70ywm#@.5$Vf >DITD"4p~50 ]ߟ=G{x{1149"W3?g86&fWsJ ˇ1RES]?7L׌k|J $ӺFJ*gg=by@Za?CgDLvE1l֠kJq,qy;Dkͽ <ϫ>D}Aʉյ?v%w>3(XT8A0hy5˭iݩ{hD 1U#ZXxş|@YV."uu|_«1S:`,& 3Ѷս,ciN^*Mrn0P00V9<\j3Rs^]@K# 3g^e >j&ڞ]#+\w# {&p11`GnZ4s';!E}.3Lľb3p0լ1AծR='$)H k!ǒ`ڢuM57q3xz^N_Y/?Ϧn76Ŀ,K_IcA mZ _3ӎ19` #̒V=x5_WgF-*?ۣvm0 G@C-0d}|B.?UR qsj;S'?jvu|g70 |㩛tYRG{LStA``YpRhjtۖ`x?+4qD1 S>tFA\Hрo+G] ZWX~BHȥޟoq{U_KIR_Ǎ|QӯR͔8K*x4(\&S{Aڀb z?ר0%7|koca!l$r:g?^[xV~{B2:r EH&p`pX 42GHIb wdK_5/*`늘~aPbṵ;.][ۥ/yth?ϣkK}[.3[&@N2 i^'( c$iiyz§>*pb!;ZӜ$?AHыjP@l'~ Mr)Y>r2!M( ΃ &\RcW<ѿW-V0ߖ3=*:5<1R48KO]t (EMг&7BxQbIc٬(6.7%ui aK. ϻF9'SEYi S^ȀJ /p t7>>{HyǣB[ꖒܳ ؾx`~3 |ytHXVr `o8S<:~BC K@8J@NÈ2UTҀh'unJ9ؘi#<r- /0m0 L={L@25O}J~PV7.=:H@Dm`/!n$[#s//]s`o%+I:ĪB.ФV; Agrgrd*"v4_p6Yqo67#d{)g}!94LQ#a?x-g!Y׸YQ$b??Uͪ#-iWj^e$,ãLQ샠7(ԯ3a_-Rw]WOR[ϑ}wkx;I>>k#UY>ـ92$r}>R!n0ՈM⛤ s<_ϟX4qMh(yA=.PhJXFxT]13^\%~5϶;gZh=8`d):*-S+%$u{->Ѣ/[j%3RzfL3Zpd./6}c1@1zrQd9Br(P]o!S2~Z0ԍ+.0r[/-5tTFk4wK8vϜ7y v)*{AU*,}(5 #n%&F.{ ĤcW$$*QGPayT>P J(*,럕mXR_S~ګ`Z,L:-j)()z$ 0J!% O"ZU+ }p @J@nurl7Rn֙Ѵ,\x4yHf#lOw se9nFH%uںŤFyfc{/e4+ __-R9tG㊸}jXo:Bp0$A՗oyjHו!WKAP;P3pF!ĦEDXd tG]*Kpm"u3)`Qi*p?SnSL'}F#yl򍡝{/-j Ph?p'\U^A_MP{bjҐ Bj);~ҩaf)bڼj1"&<-%^l:<<?K6 $B0ψAcSSk\"RBhİoHщ Ç%'4rT7q"ӗ[4=q >{In>WJD;DI 3Eqgi7Lq/LqꖥQlG%W݌9gՅUGݏ\o;l:J ۽&{4)CMUpƠ_oP>. S-4uf!!j&hf =џk#,=HPmo<׼أ>]"mp|;Ue@i 5M!_<5!,9:ܨFlSLCj2R)lA5[zfhE&8,vZ $2Xl;m#=IcbvR*CЉz4"u7rVtjH S%4/岭K w\խ^C,(bE@QFzIBqM:8 iMBH$de]RGU//W OFI<.N!52 z^;0S+DsHI7€H<WޯTN,|FH|QQw{'dM! BDȡ15d7j:YsGI,C#>סQeJ0D)В^"RmCK?" "aes[3T ݢw,֯I߻!G^$20;;Y5YB|m5OqMUKWΪI =ݗgI@{G:v'p!21 (Dձ!YFi* $P82 *=K3d5Y$lZqD5v_7 JGP ۯOݱ<"_c_'`.eʈs3/zx=@d+6ŝP |vIH!<Xj)]zE@N--P_+ :SB)Dz {9̪o@`SjYpᠺj*z$Fd@6w_ܝ٪%e?U>xJHz9T\{X^||ű[m A〨|(I!d0z]:* EȠhkV: )eߌ0iBhPJJsCy|e/ GW0yQ` fL"n|YɮBjO/J5}\{zg+ YB j;H~ 86'FNԕuRƵp`XE`س k^?6MD^3H0:u%bID~|=o{)e j(_{J ]'B=yH`,= q竪!>S_2Ounm(oD?,V-~.9I!y "(pk:i[P0qhywDGxXČ&> q)\eb9 R R0+ f/!;%z"sd4'Dx<<6>%S giR ¸L u:9#S\]>3#Kt=A;[2Eˏʤ. u?=s6OMkǾ$6K.I#xJ%L/Ni(ƜxDN):%V{d0ϗ (U Zꕇrr  HTWDͤ' /qBhֿfIvqċ?G ϰ~Qg' J>;:gf?[oW%7cL6=7+>n|NkJxeE)l49Jn р  fr5$&H`6KG-T$7"<ikzAFp>/JbZfǸqEO?qkyK(Cw̰'?xϽ |gmT[q&~.~N_'AYpi# :˲tB>I5!3@ !ZQKtG0* &]x> z0+S;n9ȏK$3?Oۘr ~D#(F>cPFcQE~F1%|s0aTnj-Oآ Lr\7UWX|ȹ-^n͡D]2Bx1{ ys:ֵ aUf) qO='yZrqXcpX<9E z?/ےXp6 y:WHWUO> *D iJv먷maoIT+`?S͓R/C~=q /p^iTUFU!C#"Ft ({*w{s0Tἐ&IUBAq%D&YV * Bx(l݅' Fd2Dڝ]j԰q2ܺ'5UG zT'@X}[͐e֏ϵ7'9L")X1$4:e5{8PM,>%)f Z bC,rb$:`Ku Gٗ<#^$w}DdS<-RWϋHjnDr'GUlK{TSaĻlh;N>*8.=d xb֖$2r1PHCzYrR3N)U(FPs}r4ota b) 9U3Gu!uE9-YjcGN_N$NdeqA)[CѴ ]ۓ xNGu`f-RJ2\[Ea tD5rF`5/j|R FNol~ٚ'O4c% jc35{\2W]7_MO'^q[Eh[JSh~E 密1=O#:t t֗,_r)-N%OSVah`_@ 7P$9.Q`,($^BJR2`U0xdHA85#h4O\k<2"Qď#ݚf-S#(B9A*+1kpbB06C/!m 6./)ˏ/ ms^>ե5H{7=?;Xx¾ +GDؒe;J}u[^v萴 X&nj^IaY*$O uIe zd֠{;GzCx3ze"[qc D8~I ' JI=`(wS[nx7CO!`\!D(s 0jk%bP8nJD)iɾzc$LvBzW/ ̟pum,>+]tVHNgX\mZ ܌bL0ͪ#, ȆK {p =ٮNfrf~,=4C޾aKL30W^-+d y`"3^5H(/]y.6* , P}eLBocqpaʺSA]c"R.9*ҴzUyDbN`$(h IRPsb$O/-cmZ6=&)sL~;ylz`OI+#lX3*rDF V9~f.eF`n#8B|{K),ңjnitzޫ4"dI>rueskOZ ީ8sf$ (Kl s,U@n#$Jf |D@!$&Br4}[$逋=8B`QA FQ,#e됏zWS SނzzRvLߠrOݏ 3.yLuSyvp).۲jmdT]ڷᬡ$Mly[$"As(BO&<|{y},N gzm۶:\9ʣ TGB/Ala Kboq'MS߳w46!5*x=?$Xnd]TXɜ$*ξA^HX 7%a>3%rݶ<ܽjP'Q4}p. cg0Њ; Ʀp ?Y(;}xߏ^R}h$O-Uly8԰S%b\a+QB0>{yMC/ġOSS9 Poyۯjnu8yb@'Gz1҃' {H5TC|~!5qH`(S}`Pojؓ z6B*\96'ڏ*jsruPK=.'o[6\> =#?RRR~}_W G~SS=L-% F24B7X=D[U~p/B͛UwqL3k"'/HA^?xaP3odK_C ޚEΝODz USS;L-?|728 _&JXsfώMO1w)#f3󀓆g?cwZ{:}d 2G#̑@ sa pHYs+*IDATx}w|VՖ95^聐B"RonzEЋ(UH/ʵߙp-p͝y}g~ֳ~ +"8p#qG88p#qG88p#qG88p#q'||ib[umTO!DA!%<G9^XD՛&|.SS KMv7ⰷGGlFɮ0fOuʻ.ݵU vQrx}_Ξ\=|z?d)0MV"0 lRA" o+ރ=n%P^!|6޶mE܇S))׊#ڊS#iתľns_@5j>z~x3V' ^N{<`1ڈcX`.Y,y0* !<|:v+2i w n+VSD?oӆ WmrcySדEvDlLH9>qwD@a TWk1A_ %3dl $I$#!}IWOgAAZB?o$#6m8)Z0NK)E1';]s:uCweeevTq/ֵ(((]t;vݺu=zrKKKEqq{+ڳ]nnl!~hehyZVs@q!Ad!C">f$ah:ЋitCC]*0Ox QWhWr`m,9iXm n$p!ܸ EyZb?B@rB n+u=D9dBqI1HG0lgϞD*wdDNNHOOIII"x<yl 0D;x[J *-N5uܮݫFť n%B;;v|8qf-%`8n 1^1]#%yg|`JiE=Ęb1?5(VkPviwA+]o-OB_ PFnv%m! hg+0 n4 h׆i a/ > ~R_~!w<9TIIGiH_&}ٮ`M¢`1.SiN.8@E)߆J+Tx?y -man(Un1A_E7 ?dvRipIbff!t3u@*PK[)8L2/**MND^^v9Q"<'bq_PMq` Elivۥ[c^{Ʉ+ {fѢ)\ 8ɮ~Dc\e%=_Xk+fXbh| 81@)*3ǖ>E0/ ӎ}4Q d]Q `C #bZy J_Y#n!p$i s t<C{~A;VN 2c\T| 2 /6] /68lGp#׳ +}b 4z$ΓY֫W/̂?ё$&Z$\LY5)'&4z*Nշo_ YĎ,)[K^lYb^%!\fC0V\sb X4-f (*9ZpUıkwImCrAZf-V; cdt&r0g 0wftd3Dyz&%ӳ$9᯹*a%ܐa%.o8OwL wv`a!}^/PCWU9*(1}dL-;3 $6Ўҙ-kG0jsMAo>2t*B2N YBXXEe kq g4p~v$n/G1?zR҄,i)BT%22R$]b:p qۥߐ;'ZHbKPC>ħ|.JoO q{2X#rnMw,rF7,K@rd$ssZ-c$˴`,~Gܥj6E05G`/xjHPWJ\Xd T~>g.:͢vnbVyDvH1+Mx浜p&&bOcC-.^#`\~xeqf~?"mnaShñSHmP"&ܨz ߝx@s˟beܤN"p,0s!kCZz%W4cC{[2svI.5;rT ! nu X^ +^UdKuoBp1wɆZ=ޖ2;0LpYtxMmw[{BTs*sETzJJT,|6 0Tn.^fX"}6e,@UoRJuYv/s-B- ɎxڛȰ)v=+- {mi&t YIZ p&ڗ@z˚sa+T_dff~ qv܃&}d@C+M)j$iQJ2``ۭS4Ӗ!.qb3arq7c¦DkGa`qXue\HR~hkt*^@{ƒݗ'83jN\GTskhYKZx*MP-Fs}]B34(ReU?7sg[SZ6"OV.OIk$z..'\)2& #h|% оS'SN˵xQ{=xz(נA0#m,0Oz< ΗL++/OvZD+̖-Ǡ9t 1g@ңrM4YVVNOxf qr.C\wY"t4OTHbeKϱ#pW)4(o01U?C[(0eצX µaۆ@rӕd oFwW+ntv+V2ؒEI= wt{x]"#dRch3 r90M^evb[4z?9vzVX7-˯0? b Z11֢\u'\zur$yH5ѓ(˗aOpHZ- a\0 H3]["yD+y>BHODCþa(2C ,sϊF ]<OsOʼ܄)'E)C>ūt{XNVÄ3z7Dn߃6zkޥ ygb8aR6!-#$B XzZ |~OZ=^OEѫ^j.@i|Ӫ|^QJ!g,̅NR'su sC%j/o-| J=u HM;_~.eE[TxG+-t"O2{ds@ Э?-:'Oz$r<#ϗh&/ YYMJE?T:Cd{߇$f[@ dwPn>B(zza5bxQ(1_46kW]7,'"OF1 ?Y@.ǝ:[{vFTII"/6hBl]d2}UL>}XC'B= L`xb?a[ 坶C Sn @f)f5>U0s\cXWW!GA?duqMkt9B*kk_lN=EfhҚf.v -ԋaBqL JOSaȑ8SӤFZgA(2I缹b"ggxpՖy9sXDz N"][IWZ %i Xc-&TE@EٴNb"s yGl*и4X@b10KV4nFȰ 22R|v8U,+rQ\n <-ou8~,F{EegqTfHi:BRm5¢Cb307k;F@JeX |``8ڔ>b-PT<-n~vf=xj-_p kAd6Ғ\rfͅ !'Ŀ䋥3ߐR03٧O mȹ ƜҊ9u Sz NfuEs:|Ñim :|Z*_ v㵵/ek~EJ5s?YK[6=<ާ K:kЦ#B2 'ijew`tE+ #YJ,N,sX4@ޔj(8vT;,? ̓'ܐ.Q!4? ^ D$2do}.ro77:*R|~S(a፫LZ}JaT?~!rU1룓|pq0i*2R:V(8/6F>'t9a^ nWaQ@rOkWL0)]Z(\h(Vt$T(}ыwZk|Kl헢]gh@zK<9+FE?"_5UU51%osMl>+(CHLx{&f'';~VŢ/>!WV 8U`p}niE|w͂ǸYo-x(b\H[0r0K)!CIY9T=> 1溕ur D-5]#dV;ngG뫧|k+5ME!*_n'Hezzm=t}kVKe1p%!, ;:S8ZSbϰG-Dana\D4yR~cg|,IB巃a ;>D$CzHD*;gɘmIHDp~vma%'Yݎq 1.L΃hdwʡzʧ,-`-N7D4v-WTbIP8en P>|P=0#+&Z¢pq7b{dlWqlA!p b'.wG,.eQ1KGթBp"C = i*gᅢ7@5Ӻ'k yךTotD#`UR_N(d.S<\\@ܱMP9̐A7/O젟m@Z6x=9Kpi^ x~}^E{Ԏ)>+Øas2U|DZ߯)zwW!b}Xb|. lҪxO2]΀{g̻|!%, 7>ERSj7gp=L+ϸd$&7¸Q3m4LGnKbhalòVލi3[o $"b{ ݡ^/ VNUK?]z`G CW;^%@EBEK(2Styp| b23:>? 'g,F'##@([{ӣ0-D^xo&foBatx cL.¨W׉OUtK MGH,<`)HwJ%TR|B[U*(RBR~w-k`$F@\r3a|_i+ A{eҟgVnSO&3CԻ!tݟߜWA[._QW.;`s/J̒Lx0#Tj#㴨P[K (*!=ၴi&],#$o qBy3bdi:h2N9na⏟gR^*Euc[)c5O̲g{H @%v>yd-MN D{/oxa@GŻoxzš)߶U vl[}xQ5qcr`dJawP V@̶S>啕6OW51`d *[+⅗gW7o {}U#ֽ,A ` 8i\ ݼIXO9NҊwL#dE! 9fS>e#a.u<~8#Pt;*܊Tkυ˧>q*ࡽ{b(ܗB\6* 0t*R#8 7S+0[ôёˣ6үHy6[Bǘ?SOr u0d%^UqCyA-5bݕ!!r`k3Щ)cN̓ʏ[N.>yBVXx2޳䫌<j>[$\ hCƯ^Y>_Y;l}!O [SDTc*o2vz ;<ūN̝ 1>oϣ (fĄ1e!xO!mϣG7VoC `i߳fEf^ҕBЉo2 CH9͵a}ɅNV̉ qTfY ^ vVw+kOS>vwaT{x1ؓkX\X \B`B >X$uK[fEȩ1:-KOX_(S9m:V&exun( CmRRHi?L-ty HPx!>?O))w Tgܲx{|Gҧ*&DT?IRU1gΟܭ:PCȽjf=:[<^R9$񩽻OTTa T/ѷ@Ln(O3Ɲ41vTuj!?mҼ^#gTTջvV XXɕ BRW>Si⃳*t߱bkkR\<|e3WoT@?V ]:3d5H1Wے$^XӿvO42^xm[}7g|fe8p#qG8EpG88p.6|d8-IENDB`pybik-3.0/data/ui/thumbnails/Tower-3x9.png0000644000175000017500000001425313137372525020600 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+]IDATxy|TUsѾw' DQT@6A0&4 [ BQ *cTa\&SG^U۝Nyu^G}b/i5=US_I;vM$ &&&&&&&&&&&&&&&&&5o~( pWjQកrӛ: M~5=e_ÒʁM;#%6>tp_L0",R+'fxoKϭl2 T=PN~KO8Y\eRNhx@i*uT.kމ܄:4MӠ:t)O7zm<'5o3L)$O0ܔP[1,~ ltUEQsܦO ,|eShS Ut2ojmvGGu:I=F12D- C {a;gIyjts>w*n-VDJxZ,Lwøj+:t)yZwh%60u |/9:NJD \L ݢ̻ :Z@c@Rdz`/EСkp{()>DCt@Ǡ^ښ/2]jD厏i'A%8HSCOL)wWR x> Cۂј:b؁q|#k#q>BΖys*6QXșDuv`?w5oDH҅b#~V:@aDI/mC_ϏDGsl004 xȒ_e^G=oBgҧftLb:JBc|/:yo'Q+_UX<·" @6lэVOaN_WMt&iQi. ڔtґ'&\sO3`p&r LtEbr98SRd(F}PS?<$XJ)Ο:!X0+x"8)k%fk0UX 5x`oOhpd t^z1tuXP;J(U]8Z+za[%P=~ @l 3T#`D裲سaDxP?C1tfڝm5x^SU9{MyƞQhPa V"كw$F ~s@]S% ɊH)^[kY2_1#]Zп;zKaxtS]dqf\.o}.4Wh N vw&S]=ǫPpV,C_"-;Hf`af@yr=74q2 !9O>\yMxz" a&AGv ~fD v Ege_:.B[_0A7 ?uںr >}üGqX]_}8O. @A)1ghB"%ƫNT Wk`@UUJ?|Dq2_x o{MOZhd)8͞*~`W&LZl@//(\+QgpF<^{$ƝkGϋql 'gRO}6YStj߳==cS@+}`_ç [  8{V $Y 0  +|+ `Ћ0Ԋ~%0lJGOBб<=d`)l!!Y[%E`t(AxQ R*9E8Xϟ"1 @{߼]¹}Mayu:N:/+R' 0* w#(nLeuN'B>U٨ ! 3T,6\*RqgLuyQ (Ci_E d g | #j?jFтK*S"*Ԇ(̝$xggͻFq*0Hp}xQ]dȌ(Zact}zpA,WPAQ?[8#q @6 (>USBFz+mzT6R-ߏ~:gG?@O5 | q,u*:kKqUC&5RHoQ3RiG!hT0g {zh"cpœtlA3}y&ܬAhS?@s< ׄ@bY|^ bVB V| @Q +@3(&A E!{2n8bB |;+A8+;b99?S^1@-N%D()N 4(fx먰:1UL(/Va݊ |f sW6eUGAwZk^A`2:u\(d757eh*P\ap D EvWJ:Lna(e֮Yo'Gg+#1pxuwS|t81) z,@ ?s{퇵}C3 7% ھ@T.QBojQQC0=6%v;h[ \׺l 2aZQ(;/Ȣ޵>YUmZHN_jTh@`I>OіLs S&+.N}cl>. ^,6Jv1?qvjԶ-c\i!S_ݿ*`ocZ֮!Ȧݲ ɼ!d<Pf.港+v*9H:\Z/7_<(& @B]/!j1+0"mzZPM|-#'0|<~ʎ$kx#$Y襀ViULza68E>~oA³L8UA>ֆ7v Y^>?Q-r k (t\q":bС5Ew ܼNt ߼[ 4xD|-dD% ,PEOcb:^-!{"勃"+g:#ob(m,ƻ"c;WK=:EX s3 v @zUr߿_O: ү_==[$YNKU*Gx8F: J;m@At!hjt>S{k .໨ f`D;gBs _q<广  |g:M)Zص>%s> ahx4jT 7hH>BHN|sNU`1(W!/`g{ ݉ܜkh;!i) D(2Li$Eltn;yu!(/R7B} _LZ N8>5#Cް#E(m}~:T ߢkn*2?Ҝi+*f:xG(,h0 EГ<4bP"w\BT |?u0-N˽˷nSѸG#^K":hS"&~77yQoswP6BE ?`dq0FV42e0V J|FAPs7)~AG[(*a1ӡ7.^*<`NP9)Ӟ?5sx2_a1,:__8hZ}"}M@ MKE. 9"i3ע@~' 8SJ~w)S4h~P6|FL:n`;"ia|]H,߿ !(/WR;&Q sճɍԃ$rxG9>bFfSPT 5U6 —IoX쇋Y8=5BU7O% (qm:_{8MAqS; . w:esEMO{|KȨ!O(rӏ+|X>1\KGi":* 1N歰y!qL+PkгDEhp\?}0` |~)4>@?Ii +4ys8UmC[L=Cp6%AЙrai`G;7Gw3=gՋ yZ|L,f?5;u+ϷvBut//L|sAWn1֒C .iF-C|[H5E߶u%г;0u?U@%Nn@ k>ݡsN4^]7 E4>](ko_ó#1=j #>,Qr^eS'6XKn/y_ M M M M$ &&&&&&&&&&&&&&&&mGMIENDB`pybik-3.0/data/ui/thumbnails/Tower-1x8.png0000644000175000017500000000465313137372523020576 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+ ]IDATxkpTp?Z&{^&!D.hK(WA$0 X(EeUD\RZ(% `vh8<}s,I3@>yϻ',_[C@@@@@@"*`+|`nQڭv7&z֭\WGYojߢ79A^7:C,~+!iſ> wu ~tN#qcY|T5GH`Tsb|1D:a31\k?a`|&y^2,.Dmߚ D{?vv5Sy&ո3 0qT"0:_<' 1OhQZ t(YBް9 |AL/w:,QrJ|P.|3Iiv&Vnz Y|CH&_G Wc18VKVn=ਜ਼xkX'F$-c @sA| zEϜAд)P)Sg!/0W#X R*j6~ZSd t64Ho00= RVhNȈigMҊ$:8O3hz<S(TaQ^gS(C*ߔU瑰 `'197xЇƲ&GABX,;@R$r8m) $Y_O8? "IW[r0_A)WX1$-?;^ Sי<*)TDʞ֓V9nUN{=v;Gt9"3P-'w2c%2sa pHYs+3IDATx}g|T{;3IH{&PBPB+JQB.`"Q {z5g3d2B~I&sgսn\"`_;b]v.vp}7=ݿbcO<؂/kDî?؈E=y^k,z{V8k^ypyNFqu^Fp+W``0.Vtke !X!VKn--38v0X63X`yswϖ-l;p[f?\ʏ'9^QAFk4 W;z|Jv3>u7;P^d%ʲu-|(s0*}fZN~ש/1^o@e›Ջ|ɑX΋;]E? ˟ӪJ\vp=xmk1.XI+Ye"V@}bFF;:|@["nXĨ|i-f|^#=#V@w7K&3rߔHMMn)%%E(//O0.ggg cv0\IXZLl'gE x1Q>Ew[@dN`5PP+A( G 1X{R+?44T`k0e6ײ!x4 bÿ~= h ʗlQԆYZ] w<c&ѵ`=*7c\$Eɋ?\> m%}6J[.r eirpzH KQ+UV ?~_ rg8JVCฯ J$S7$-@exxO pӿȿ1Z\3z^_Ϛk3MeFSJW;E$7)+"}T@,"|%YWWWE=P^]n _N8(] J TMׄГ,S/mLotA :qXXG^Jӓ;6n1a3սN5[B Zj (S\W\hغƺ>*}k+`K&.`m@2ZvBeC'p64j& Ԅ@C E9Ŋah|YE18 O Et Ȼ1p4M>戈PR_2QW1ޣ&J*]MuJяl|nU(<'A%P ُW8?zdߋzr~.dgT4zYwGПʁը =h,AY:p7c*2坷(g4r P!^BiS<^௫4z2>@Hx}nh!9 F{ _TW3LGm, AfGѤQ.` LMik?9>oX!i[rab =N> >C$ y<> {m ⿭{_)n Y bR\o|#8>ݲCC"(W.laK-FFdh {Jr:n wrouc61F*"* DjH[|?O^};@}n(>4$jEobaaEtya@0'&TUE/b< 6p,#Z >mZx!0#l&{G>B܁+.,;~%n6|3!OX?ґ A Py`un|\=Nh5YWU,e`D"~Y[@$V@`Ck6P*yD(BH &%ҶRCgG,)M%׍iӌ޳z@X 5A<AbDAx\6QP^` YڛFz1Vŗ#mԃ9UEV&U;̀B@"(=22RX7 +N{nNOeﳉ.f0X Y JL+R"FMu2$[Y6jK6Xq[= .U=Ta<SPzQ^*<9͠yD"oW證 W:yjl9G??2)A3dc(% (u"S/\ +[$@k ޠ,( $]EȾl:?(-bQζĉ,!5Eb̛5}7<%,ӶÇO>6 rSN%ay[X* #c2^a&A0Y%3O`'u ybTCYZICp6J'|sm ,Aډ4nq5͞`]y6`RS['}SQQ??H3gKfqp h+nfJG V.7^zZ$%cp[,!^@&4Bx9Y[nΰ|^r&sxg˼ٳh x ʗ}+_NGMu/8J$F-BFk5ek#,((Gp4m42&Z>+⠭u"\63C^t|0]q~heR-?'Q ,YDf,gF>Lu\|2uPBA4p@k DŽC$rnA -jZ7 m]=@ϣ'gKJJX(\wQғn NVEɣ8eF zecf{@vɢ,q唰+I `~D n jeϙ-ߊ ŽiطW(ᆳ@ *n -8r) /gւ)[gElerQc;](dQ؊Ms?vJ埇d7*@h/yӛ-TOE7- ն?gd",iɣF"VLE@p,"r ;h ;2}T1J}f̸q^ٞ1N~G,϶tVd䌞MSJZ~k_2*+ZN1S>Sɉ^r4w:m[D$>vX1< CѴwp84~L">o)>^x|'^xP>-P)uwg4gue:>*CidH({YX*~N`l GKӾ#NFojC?.(qĉg| ,2㏄2d= K3J_Ъ|ȣ+EZNJ:'0'^)t@dҝ3cxkzQ? |MwvgNE@Y-QqmgK5dvKF)n%u*౻KD0c :S) hMo +o_g[,~ȤOъ_qX_MY裭vrW\a^&4ۧ m5aŃ%5L h Tc 欿=-(YfQi)+b!. [Y~Ej{.NȤ;RiɴJK J;!X&i:p\Uʽ{De o6od'(1]f*& Flɺ}ѣ%N> N 9D8a\ W(KǙ3gR0Vέ_67>%OP1=mYJ&PHp/eXN*f>3Xy8 C}45*VoGh"F7?nfƐNη1@n \%+0a^1 l4dAFZ!k ncС黕6?](9uooK1%(~ACMV-{ R3P Bghk1bJ[ۭJmAwSF AhLt5@Uw/?9b8nXтۧzƫy*/Qg6PL&T 1MrB@lGu/(Aetr(gu84j͹:!,/s#7=czGg[*4i=tke/_GMfҢi,@ur0(O[g3>z@gDId{3@~ICЫ\^6<`̋;ț}~1|>y3gɃ`mG Zk=3~<^,4|pQZ Nw3fҴ1ta(9D$tEoU>\ 5F{xwKϟa;L)7W(F 5r ֏qřƀo.V QNMp1:n@ ֊*MB*oуihLB9"mA$-@g3hh>=huL jҸKic%`JjCt/'D#(*lyr2 %JØNo%Sbql4;J'0eHZUV*Ys0P".ƾ: 5 Lj!T߁n ߿ΠetLS'S+ NKTX@*+Q5 {p PnaQ钭QR ߽KD˘c7`hX}1ȁqM6)_D@PnDO.hE!shHOcXf:x!?]`{6&)[`$YhutxJI'u-eЍ5w^ vu "UCH'FEqgl9C_9}laꯜ1.vzTTBaEsVzZ2eHNfm=t-_?+PPt[eЀHefY1t~i@̦;?Y`*6 RTpGmΪsq}PZ%  f11T{@*G@Ey1}qVܔGeEE$Ū`h }GWevokLRr~0QqA{5d/(#9@Y }^ ~?PW|f$(|Ô֎QvJ oIR1Bn^3t )&ƍ QK ق!=2^4f.,vG=w13i`*WʼnMR2fURe8g oj.w}˒5-s=" 1qİ(~ >h0Nߐ!ߐ>;_F|QL^Kk2ńz<#B>Yl_ʠʢ(Ņ!X#j8m*f)ZiaAAX53q@qǰ O}8@m*p߰PQG>@{V YOЉCЭz*MS ɴ{JvJOψ~*ԗo[@SvU!]lFG^'K}JXV IJXcݘZظZy:vuV Gܮ|CuZrB:'scĂJ.BJf(M,!>kv{ˢ}1Q/Ѷ{4rw;(} }#m8!T*89.f8uDRȂ{@+5 /ʷib R]ipfMxugm_lFqѽuζ<`v׏q n9%40-UlưtV H A zZPK5PҷӖ' lP>&z%ZRG7Kei" &fϥPY~"db* ?'hXaKߝ߭'eg7C -R4ø9cdx0z5{׊(߲ZkOz2 9xD!**Rqw:_lEC: JM{5!D'0J&+0[?a </ՙqfE(,˱B~VcIn&65 1'ۂH$+4b;@ k\^>NSJ8Dk l.1ࠇzp!oȰ\;CPG  .35o$=uO+7BK* ,~55v#6X w  5!S<U@e#u]uon7ʪYtғ:dxo^Io>@gI5O,|(cDER0WvC~+20LTii9mO Aqׇ_9fֵ0R _3+9'8X#35LJ$96 ||cHHll3F-yEnTk ~ G2 w p9Y?}Oߛ4P#[NFQӆD2*ZXtm xA!T|`…J/A(qCA\U͋U,k̪϶*Sz (r=1*?3M_ߔdٓ}TZ"Vj ꪣpH0uq 竊@`џ71.v^?X!%|CPΟO<. L)Lb;Ί"}Zo#6X~uőQqq|" i,q*G1`Rgm'cG8'4P<%BHSږ: ݞewtup!pSj3:9z s?f9|wTzx6ʰJ|5iSۻl'=ݾ*" # &C!XT(ӷӹ-G۾L 0 ;ѧgw $'LNMlgi]ɢl֯<~ ?9t4m~;A90GPЯf+_QPlGLhFʖu7V5U$Vb +1TnZ Џ00䚂Jv M\4.hxh%h'x fCo]ʿ_v] y bSoPD[x`wJ|5һ UVgy q g ڞ{ Uql^2?;$e3)NylO)+W aȠf|KJ 4yTO ՚ZEO!1W$\33S$+:Yk1T y4*ciDe3zEtxwy[߯VQWKW f]sH4 JzJ= h00ޟGdVx,+7>Dd.IHi9p 5ҁ\AEu[Ik|Tm{:+" XO4PW!wEeh4"lP|C8@Al*p 5j:(0=o4Ü5ѰG+~UdUX!Q4VkNJ~^Jŵ. y1Fp 8Fں ˭ _{<:F27>!UIW[MN-GIzUPxp#,6V#RW58s 4WykRq!اŧ|2s,k.i }=]M7  `i5׈߿ -[߄/Zۙ<\)0K=EZͩzu%B/hzZ &b+_76c›]kʿ 垗-뒩CP/[2_)pXɝnP``djY4Fh+U T[s yY~Aڌ5QlF-4uޏׅ"](8ǟzzOqM#uʇz@.fR$jiP h?d8pBPl% }Tӻ"=܋c#s `q\? '.";< 8LZ]3E|~-y1{)&!YF:ѷXuT|\ h(YXBo?/rs%TJoQ,B!"6N=&`~W9|XP#{1*_P`ٌ|PA EА @{R=DJuO +!H9 LEjXZ-n_͡=F2{p'݉L_Q=V<؂1g]v.v`;b]vV|aAxIENDB`pybik-3.0/data/ui/thumbnails/Brick-10x2x5.png0000644000175000017500000001475613137372621021063 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+IDATx]iTUퟣRrϬ*6[((Mv7EYrnEAE܀dQvvԙicf6zh#9UVf9 E@}739|''&07C& L00a`! C& L00a`! C& L00a`! C& L00a`! CMH;5J#\VJ|ņ }p9GIE?2\ }ן߉cd&x<@< 'C2kHsE%c}ECT;~௶nd!ÕK t!OJL <s"I.*%ix_D!ÕC@Çx7A0>XP Tk Qw/G}a(+x|K_CVMΜ\mh#])F 0FZ{R2ŵPSs:6 ZAiN7xZ݀2Md׆~2lOV& OT@2=e'e}ܛ " #|jUwnfU =`H!ᖀ%1NI M৚\;u-".[f]}El= `tlQCX>y Zb O#yƲdu} |3\TH6Vjjba<$h1Ӹ$SI<~L +|7n8AX3KgNȴ -yp̕G@VV,r$ |^U 2$|7`ib-ܺIk2 T?a Q1u6AʔE˼Pf|cy̆O!zSB '3c~ d˝:Aիh u`ǵ$F?P1)cHV"7Z2ȋ ]D 04\QTn6|Yۿb XL y#2kfU?Sm AX7D1aD[T1ՖW+gH2\ZW&Mͽ`M`r%'̻B6)J&K SV6u֫F Pe P /؝WⱛNs,/B5 W.P̊5O:~n`ـ'4jK<l~' :5*}\segb;b!ŽiV; Jb$v3KT)N!06vNK6naoc yW`t̃1 |'&a5S;@22 ;1w԰PLz+<Mt0UE#æD+C@XL6՘jZ||aVipI2yXeGcXaE6,twF$vYm#Zfǰ,eޣwS؈L l&S1d$T;l%|ƛiVah '=pH03k&$<4!MV_[Ծ>Fbfn noGS3iԁr*Uz:7Λ*% : {^kQ=؜@raQgjC f\PN6m-!\nݤ۶=~ĞD#H)XX̵I) \`; ] OŘ>xi.c/! , XTV`1c: u}Չ𷻔|2N\]mL*b-UF܏ 6j:]?6^J*'FUJ+ex'<<7DV(WId4L54L)Cա$Hf9[P_QAۯtذb1?،1~ks 7jWKN3shIDz%Xn p{uGJ["2JAY<N<ƲV'9 mBfm$]>RaV*Ӛ0e*ؙ9MKg .<],&b{ l8s7>x+nlK" X]8?t 'v1` eXULnIcs;\gmx#GoB[u$c cF&at( 8k-!4sTUr,L@ уzA̬靠j9ۈ O}ԒHaBܱT) -``0CUX rU!44 _ Ru sMsq8 Ah q/a.Ю?a` PKdꎒ)K_sBzcêl=XD)KH^ژ HpAZ .v{S: ǭ5 +1$u#9…jE\I\]!UM $ȜS71SLI/ |wq{gde BwV5(r84`M摫rzTc j-s9l\TQ$1G&GR5*HB@XQ !){=,Ri)Q5 `AC=.U*0O`Xb&0"ܘ]JZwkcWo UrVx u8ZvIH7}nx}g GקI5#V=s\fg7m>|rN=lH2vo~ xry d)m4K%;%@rҝRaZFהTQq)":D*cgu*7 $ռk ڵ}w@6>W@$,CDUMRW"SiZ= hD" P(Zn'M8<߽%<)[e;ʢ͠ȺӖvPO ; >m/DNNpW2:pO! Ou7a5k#yoJ. C@i*I#6&h#|>U ͎{w cUPtp{w׶vt*06@@)JD*< ZKƫ \Ձda@,<׳2ɳ<۪\mcuz`x*͊9d, "Et6L#, xo1eY*/VӮ!x5jiQD7%wFVPBQ@I+Atl&EeT;sN9'TNqy\tJ4Il`1%aV(0FFfLU\VT0ixPM˟ΕWܙ@ӻj+Iwy-0UeKD6xSCYA&HbZ)O`a@9Eخ ߋUrSu=GK=G5d`Чd\ΝO1Bg|L2Nj<td|I|e{DdE\T^X pd'+ߣ 2 ^a WLX]S) vrB IEް\O #Xo}`Վft@AU~^,zAdz)x%Qyti\MjΏ)2jMEwWQsfqjuH9yTp}+1dM c{ ndE9rZS.`U6}ں:Մ nA[=5=Y='"zDz,Y{ k Uwuga6IKF6#EC *Sل0\Oo V!EdF$)6t) 6YmC aEwɟ[&ɓc2_3&G _*$?_\= {)CrVpCG=) CZAXa<)ՁU75ϫNǔKVyo D \[5.˷g/|uPN҆y`ªkM5sdA(! ¬:[S&_~jdT^y^+R_NM;YՆIAr2 X0}t蒔|WE+P&-JF@Yf4d%ϳKȜKH/[ӡ>u}x pl O0ɴL;((u<2.1K> }*%ӪW׬˝UpIhS(;;leT)RVp94R#"Nۨ>ġAݡB3.,G~'Ts=/Uw\,J/>(㺜_%SmHkȂWv[xT%HXbw(L"fp#2toxe\]Вy *ܺ`xhCJ yƑX,4sC,}s%~? JZ3lS猄*D T DkUj.A|VD֭_JݭCʂe殹mk>Bd0TWD*zjϗ]/iMDch@ {T:g,+PVCWL`nV|IFՎ~V}(DF{"P=/+GZ5|_sx僺~M+pMI_0z}Z"k(wOt+/<%J>C:&N"6xyZ=kM5rz!> X- _Ya pHYs+IDATx]yU՝Ο,ۗ~7;ov#(/6""4vƀځT M@!L*MƤRLMWMe*5IMs>2 K7pU?޻{r{|[l$I00f`!1Cc 30f`!1Cc 30f`!1Cc 30f`!1Cc ?vP=~z;qJ+C'8OFnOWsφQ_F*28 㕁ex@2!_17KlhkЮo 2aON 1OS"e7'1HF]wʷcA/=ȰIe ٛ*,nj" 8fqTp>s3Odh75>G2W'q)'<>>vx k # Y\9I9Vް!k nr_9sOX<(8AY PlV몲p̎3t(e؄s zu?/ oz]yP&W ;ɯL~m(A `P<XA"?+H$(C-I!2*KDxO:|SB˒#M*+5KKM.z%9Dٰx] a{x5zz?H7Ұan0@@1vhKh8+3gRc !_cݮC%Y!y~v@N,_Zd<݀)dts4p,`Tr?DZ}ն S!fTUH_!ڬp8\dH |n0=P=W)Δ@ӋemC[ ֲeUL.{ó?)ѹ7dX#huunl6y4J jǼc+Zg̊[(tޅDigRjap8I I4KaJ%W:Fݢ[ya)~x6޵1;3gOL=SG/JƤ>fQ|G!&ds@+ :H7V /8B r\ =:XD<8Gq\ J"D2$T2l+vSpKʼ9YLǏaf~b\O1l݉ZEG|gdJ(8AQ >l`; "a2st1$3UGTW0fJ_6Th|q*)ːILSl(鴀 &z&`aY:ɑ6)I 4hDeGzk^uGρjagHWy 0,tD2.goDDBɡ'>!xF:l%sa|,d'Hw.2qzlLv=d&PC02zvBM(IݓPX7誉92ez >dfzWGgGw?\oh< N3Nr1 , ⌜sQV=P.^^kTYlGhc08̾)@8D~HG6z( ^wWX?WV9]٘$b ^ _G$'VE*>TO҇"Օ[ d±49tif~<s+۸4Ja_tր*>cp2a\d/Mbcϒ7\9Nb*0zWV&i"v~Fo镽& kT^^nPQ>rhHRDE1,v1U`,&$eBR~]?[V&u+><ޭ- 7X&[Њ$]c+kF>'E+,^}dVXfKI_T &W$eo\& ( a^ 679)BY(T 8@%$5k|HfkTW@6ʫٖ<ӻqLO%up,Ա r:yPScH@Rro$8U:+7T*ibsIL l[X|iѐx&|%< mN;"E!VQRsS!Rb^ufw*Q_"ePH{§25>(۫U1s~7G9x"F}%l\;u6P?+أX;%Y(<_nvqE+ >b(K+vTd 1M=@ .ΦTϲպEIr0%^Mf[S,xbO H5m[Bi$ sVJ8;!FU` x:ߏu;"W)*u\ `Ral(Kc[+7dbِP}#C-_VZjН$yUhRP>!W~}P7fwܘ F}VdžɨW0dRr8eu&YKAn9CC ^>ͥs^nTIB;4B]=xt^՝xudxXFJV{TR+R7f7݌)C'?ӨÀ~^VH}|7EvhjE:.D1'o?q>'v덧, pȵ=$&q r4XƑ<֚$gaX!b2 3=jռF}.n(/PR^O[BIZjhUHݿS^#Kr ӗ/M .1 dXF$QKs[$dk[ }8B+K'p=yz-K"lk%~,*^sc\PAr+KR)lzH`!~zIEEr>Lc*_1kvjܨ^7ss I2UXӪМ {Uddku QBC0%!O׋)R<۷^K[۰:ipS޺% 6B!8W  r-Ǒ*G'} 5Jgal.鸿bn:~m+D\1c֢XSj$ݭ1><3LD'*;yLVހ:6iT6_{m̲J8;Ak5z:8`9Hp T6:cf& 3@TYT:L 6 7CKj=Jz_I_90ͪDKzj%7l/׉jmwn d<~>vIx U!Zkr5l=s3]UcIBJ'\d5Ou5wC(e#f{u^@%A,uY0~cmXj]rDzgeV 5{{3%لTv  wM5fᤳڋ1=b1XM,Yp!kφ<{p[ 6OWWO5Q8FǹTY" ^NU1ʕ\@l?%$az|H9{^brf^$ ?c1ndݗ5l&2V u9vS 0db v%v?sE%h. £N\|V4TT^;W¨ %+QJ.)oģ;Wɢ7JOU4B_K{?H3?[:2.Lۘ|q GF4yS Ye6zDH4I3@QvVK8$Ve1uroEMmtWP71B/ݣH'BvXq ~d8-:9$X2O}\;2A$IC@"͞}A'jz%T/bH_QkGNX6&*ahw9H iH2>]q LD),7@aWq>W/.!囒D>jU$)&:%'M'_HqьҚ7|\5s^)P`U- xkSDš >Gʳ5ݞ b6) SE$5%;/zU/srF}O[ kfgز 2R/Re!n4/wBURR$5.cSu)6)WUaTPI$'yU7G& Ց>?$Dm/124FghG]`-FXU8j z K#٪lvD}u1ŨScMBU 0<{'':Wy?U?9M{CgT+WTQY&[a pHYs+AIDATx}w|ն{.H}2IdɤBB K'"  "( QlG)*(bA{;*z[z[2L.?~ֳ^{u:sG$uZ :Z :Z :Z :Z :Z :Z :Z p"vm5o**ԘEOtްmn_:Eѭ@ + }d? r m>h9m]jtü؆QLEVU TVߧM+>aa0./ ]s &׽cj(@n\wJ i2mϯ *}>Kԃ fsȠ|S9<8:؅ A4MXM^nB ;-Ǔ>QkLƦeei#мI+.r,X <7d]Pʋ,%44),,RSSb35BCɢ_ WC  6(ǸkkZ'q Ww6յ&1T+/uV-:@- $BJvדIk#GAAA$ˣ,gOr9{d[}UуIOk@V\+5m ߻(b.[!V f׽ĄH1x,bL#_LYTO)))]@& j&Beg1o!F/p[lck, <J?%/TDb:/pUi+V--5 `ɠeKu * 3YڅP[cllCL ;Wl==˲@EuR~,3-|-cϳk=qah%`Oq9AJ;`n>KL,6?1=9Χ <%iAdj;}xxhC<@Q+|>Æ|ZJJ xl ֶIWI;70zxA>PZ TFEd8Ebb"0,攴",CWg0D3M˺&^O_“o"ī.<'/ a._B~~C_#4ҡ<3,g#4 .ݘ,"¨3.+$C&@V;Y-; Pۘ(&r>)[zJ&|Gv h{o_[  D=lZ:܇w{c m۶ȶ7<_iLZəQ8{ւ</5qpcO\т+q&}y%DuU}p #1,7)Kچҍmq`y{!@ضM  ?8tE^+XsSĮ2$$D;&{5=&`r.+nIOf}&$w_"R+Lښp|nm׽rji4Cf؊{8pAx6bM](fE>/*/b*9,īq*4s kQYg`pS8b8*h?޻OGM=hGEo*Pa0S!ߒP 99GM| q-E$D"hU6Pva z@|BjX&>X1&?OhJɖn" =N'M~M/\EJ2eI|;<&|3OMM CZq5v*m<;ԅ1p= @0RfX9DOVsTA/U{6ۖ*2Ӑ'š_pq = >Ky{ 1T8rcxRї /tܦ6e`Sw<|j~3iB0#N6%''SW_k" aZ LM*P*|a?)ma%I404{a"45D%pk9[H ;=p,&b]lM 2L_-OT@|f 933]tCmPyQ)e/ƽ ?~[9oB!7Q$_I+2bd<'ϚL}حϊG `[X;0{#,ŮK9$n=3š/$/}r Q/GH^ItP+-9 뚭JVVl {] ԕ>&#ƿ&**4w1`BH־}ĵ;*qt_h`Бē "[xT@&;{~tsAA'_^/lkB>4V'}<ߊpϡTL`CEt%v]%ޢ1h::O ۵;ݱ#xy/a`k<)(8)hP-XK!2ׁA`617E!V^y|C#LEm(6tG؁z<޿;Cr2CWZ0l݊?  ,_ɠE1;^cXLLv "-q6M~gs&Z~t|aPG&L$b{ RkbpX2zUg*)Ea!B_\28ȁ_73xAG>gPOv(N2g0B8C^$kFwrFLcg_q oSz 䟵?;9:O.]P{h'ȭOk%槦P81&v0BJh_7-`p~&= <vK!Vzpl)q<:ۋtE+曕6N9el^aRSJ7 ['ڕա=[ @kb0IO}y"#'yǰtF=z׀Gqҡ \.%q-pu&3Ubպ=,.ƤԾ|,%:SJKBC_8ɚ"Boto3R!̆B*1^V/pInbr8j)һ[o)MG\5gZ)c"J?ӴArQ! 8]:SΝi3[t(#rA:u$~_mSyK$" l<,vo[Ԟ?ءe |qb(`ۗw.XPMoц4n`*E7fcUK?qb~5n֕˗@οE VB 7Rvy/5#K׮]x0SSh@9U!U|4Uئhp0;kt+TF9-.jkkiΔ/`l^iE p')1]uo/R+)CWMKUНJk^./p_VրT n9SG]iBÜ-a n4fe8>NDz{f剁fѝzI=WOSyKDe OQNF[yN@co2$,**.eQ>}9슩c4`ڰ,!ɢMPBSr sˢFO(OK'/'V_aYPw(seqYSf:~0G!ːOіUμFOSXW2_"Eܘ/{`W)boվ >$2ڲ/Jf0u ڸA~Vʫ!V ahTubx]\W)_3ȿTye }`h]&ݛhF WݞG/̧a=S(? Hesr=t'"ObЩT劧C8ua1X8"*~EaTxyt|$獋a=W򧼽nI|͋s|b9M`N)!!iFGz=Ԏ?z{uV۷/=˧rp\@'ԯK$DвX9E-ϡ9bY< j%͌hM}_DT!-_[ ǏѣzCӐ'7QX[Wͼޫ?,YK`+**dҬ/ 5$ }= p]G"Fʨ<@g7(/_\;Mn8ƀj:h.V:5-ߣxsf׼@8%]E zG1<dU.9yVD!֣|H&fqR9BP(PUUUn֔cFKiv>Weȷ$oJ$I=_Hf~5ʶs| 0)~~PKOowoy k5~c.nV.,XY!<.[rWz_Id´4Y P>}IL5șvVњS|Z?J`t2oOW1GHRW]?BOskL4lNB:c&*k RlN(&Sǽ(jk7\s{LA*8WƜc Ck*X>O"EޕRSP͂)&#CyM `݋h %-+D' ˠUE4~Ru{ ,Vmz>N~ @g~unJbWo}5f!a˷hl1I!7&q@FM]jiwt y1SǬ1B)#3n @Gh59z!9f9A: /~I.^X-s&J/"ѹw\[Y-VLp. &EDggɗ$@{]{ |`+֘/D! M -2_x(8[I@- :Z5M+{D',lVq19g??;ml9JV,y,88ştIVtґp{+T*8nP}ISKYCiͧ8hpՏUc!a7Vq rpPXW(`寭q`a"z]Xdb[͹""D` 73>]Fg"ի"B ;8]Fڧ'Y2t"zufHâ!EۙM3ٛdO'o?oVeo&a;-lxsi:z~Y΂/|+[t 9g-ЮJC@k>Bcc؅?l1QPB7y7X UC5h; y c :>?pr)&Rr:,r==pM|RDOӄY>#P3@acR>]r5CN.{2<_'+s}KoLe`H=[_ɓQ5qX$G>Uw"F+ )DZ!`( EÞUR(~@u k B Xݺu_wtg yA/KԿKAij(mѻHwʥ_љCxVވe/u-r~3ӕɃtG+m{$[@V|\{/ YxnȪ[v\B~Ui`5iDd]^zGٝv{L jM P:Q&j555RifL߹ELPԮ8Q@ALX9B~dZ( `.*<`'sN4N'C4b&KPJPsFO5#c .=ikeG*dFܵmIkV8W-_&׉H̜MhVRF+ISqJ}Z?KO xXL:MB3tl|*J\֚GPBX:<6oP wy54-ɤޝ<>ebDx=>xl JNȸӚ?z4*pReRp8R@T\;]x)jo'GKvyVApۧcTRAx< ˥D ]=>4no]O*=nN{W~N*po5$&`'ORO`A7Vr:WK8`aO a\osĪvt| ׎/>]%JJJg-d[Ԩ}!5W4I~7ceNpp+>ų;F>^.w.W"F@`n[V.X&#*x*qrX{څKINU( ]:g~]/Ne۵ ux~vo~я-B_;P@=}fk .$4~M{5DP~A9wmK3e ELMaqґ1hʠhPwuɢf|mj<},-?Obz㟥tt'd!-@G@XUH7OKGG}͝hTSp}Ztߏc wSNlS&.Û߫lC¿) :[/LJMiz е<>H6MyL(^(кf@&MY %{L')͜ҠxbjNݻ__!B^2 "dCBcʂ7Ӯ v;W k9?ϥIoIF&-^R!xDEVԵc.g ?r]jrV.];\ j؎Au{yŋ.&ln})ogw?3@ š 7wT =ȭ ^GQ(3Ù*R?G(EO맟R*5wߔ_yRTE\} &Eub #wrjx*xe YFP{Ճ /9y 0Dj@진,)ώb#tM$}c3g|}X#@Y,>8$k1ӑO-j;Uds:ii_%ƫȤ꺺 )͝6".7V٧_Z(; ":#~¯yPR"ltBd^xn[otJ(A΋hҒg,݁?ƙ4qP~,M sMpO('w_?ÕF>W Gcݯxj'0ugܫۨy>cUImwvl V JU*KJ>TO?V(ATşVQd cT8fk$؎bTVaJfB7ץb{E6$4`r/Mu[zP 4u(ZGƝ wAgg9;v$N9$dZXA H;[k@Meuf54ۣo-vD9뒸3LOO<`s2s=[/PTP[Ӄ]9:>|1RSb/h H&[-ֆ3=7η*mdjlzU%S 8Vdip0{3_m CM+}5t ]Q/Edvy.P:PlN5K5Z6H)vEuҠQe*aDZc]@͞G)WZHNFVDZ݅zkҤ9.Oھ.z,nctnQi}cFKN[*}%1_=]m^2҄ \͡<`;YAtp9"g[@CKNuR=q*q,t0pF@kx׷;QN?pS{wxSAKXiH4)&ae?7wL~_w7V*)Aۗ(pܸ,c JGݬ| _] 8z聝MAZ۟\ =أM׳_$ p)߳)H[R~CrLk}p̀n&q!P:mߏߛ?\t-DՋ-QNa7bĊ{55> pDǠd xC7%a0E+}P*=ݴN}bCdj/G{Pz<y9ZZ9/G?~9q$o)R6cd'h8OTǰ$;K S%c#IS* :\;rgnq^ㄛ~,[qKgڽ%NyVڨ|Aa},tGOOҠC&@ӛq/._2@yV̺nyR\4Go8͠[ a hH-㳳%F߁׆QĚ;!+*}nbK|N>%BIA["ջ="2i9^ ޱӚTBK|߻~h<ŭcKqt K#8_0L/%E~ $j 1&+^EFL v!#E F,3ۻT{>z])fHZ㧏tB+M}{PFr`L&:`SP)r >ZgsMΙn^9?M_8v7}(xv h\-$A+.V vI<AC|j,XZg3Bk2N(Ş'*R1Jg~p$[v`=HKUz^Uw+ȕrW[*O_)FGֆpWʦW75ď6]}]?z7 ,1tqZ>zd,s!@D$M|FPv`h$ 1ɒ ?C 8A:(ϔ(맦 w," eoTgIN~מИ:#޳ЖD&gЧ{,Ròﲿg(gu}?ny/+ׯ%'6nݗ+uU,hcnM'(D[hfgbr؁_&m^tzB~\_s| 3)o/3z5&Cy(s͚G}kɧ߻wZ>/[?$j鍜5Iltjnء< bt_6I"CDZ8~""|hqϬBC61(pl! @1_3fPWߌXix?zg7*!sn6ͣJWχMjCzl 亚|dž%߷]3?6^_WDI%т4߿"O q3(Msk:K(H h& x׿)F rwh'@CG}>=O_,.MN_\,E!,x> 2#-`Udz+,{.}skMrF_moH'YP_rZjÕx%Yk٪T -dp8IL)5wd@7myly0٧DZ+{dXhgo Ntcr(3-Zj':覩FqғcI7PnVLtGv?/дaɔp'AO{mb[=P)K׮wM ak[ST{bCQm^+}^>9 9}}U@ϯH&>EY՛rGS}geJICQZ}mDq+%'€G&2:tch$.-^ 29uD9v*?^/<TQ;, XxHϰGqgϋ*p~QhL؅:o{ripeN>] ȗiR0(x*ǫW'Q+- KJ^)/sG,I(Ǣ*ރxVJ7>F5RFTpT[9p~h4Pp> $?=õU%ٴx(WH '}~?`z8TWҢL|9aTTZ8CY)Wϐ_γF=x\e}rhv!ڷɁ&p%q>pŬ/hy,NK)іӨ? _O1==@ɐ:L8ӥ#N(IX Fڛ}Gtl('oZn|Y% 2hϖ:m~3P$VFY/ + L7Ph^<>AA(jۇ`Uedm?]{&!S??~'s4{n-a榉yͬU}ΒDEfЉ){ f0>dpGWxWϟX0 ?$ѓ{Z?wܶ?yl"}z1\@]b2){"ij7x-ͤU[ж"Ë7{V2e)OXgc;|NHUNϧCS).&\d(/CRN-d MjЀԬ"#z0V 2)ĉP۾l5 &83kC-~aL5Du=B 0=ë1wv5d@ng}oԡTˋxٸLy2egy.hx$#NNnq@ mƉLjX{tl7a~^=Xf3j=X ԭHyGQDNF _cSȂ0؍b Bк z\V{d'/7v)5Iy,GNlVGl!iB=OEOo\  bW5ܺh`=$%Gr( )0#JV  &T&G+g2+хDp7cT`MM?ʋ];Om;qp?,_q`ȁj֑A gP•X)$$XT$@V_ĢxMn[zXPw$Lg )k-NCgNFKfz'8<;bk#=@! ϱ. ,90  D](a,Rp)aXBfaMJH4PPH?52иi9(2EʡN>FUC \CHW52dFu#SU@O}>WbIEqtR|EER[&"$hVyn=0Cc*|O͂MЦMJu?>F%%6\-q$U K& ^(τHq(⋣(4LG \B T"J&,i*j_JNJZ+az-9c[c {{c(4!c0mhs[ )#kDI%9.EuyMPrEGShDps0ŕDRTUiT5CCC@6zpNE=>h5LɐhZj uDCCC![` &+naTO!`"\ZDR8EEQ`TcAdN8()F7j|-3bS 4auu? qU3qµ;1!J~`JȖ=H-Vbʃ ԢR_$ 50s\#\ X}"\.OG<×D01:W3$5`m.]d (-cG,CCXB(3ʲtU&zy .z BQ=e :(kb(0KtVD}if/Z$15D`ˇKG=J_| QBe[Zhг(a&9\5΁=^7u3ޣ_:B\"CB l)BH ggr8Т{EO^cbC\_C@'V\U3=lEV]~+ZG+ZG+ZG+ZG+ZG+Z : hhhhqŎ=ak&IENDB`pybik-3.0/data/ui/thumbnails/Brick-7x2x6.png0000644000175000017500000002170013137372566021005 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+#rIDATx]iTչ'(BխyfD'drfP!(*΢&NADp@mAD@AdQ|1IGͰV^%qL^skBifoaPu>wέM>+a Ek,Xa VX"`E+,Xa VX"`E+,Xa VX"`E+,Xa5C1޾5o >?\s87 񲳽Xt5]Ȁh|͍Wy8 bdx~u BEӈB79;QMt<5NQnzg-^S3ϔC//uRȲ(vp TxIxMtv1A ~MJ{'Z62<r2ld[hW.5u)wY<d(x$9b.Jouϙ&ku(R ոwSEw r.M1I$'\r9m>65x}?0kL-Tƃ߃;-7 `jP;ʙILvtU>@z8b:,@yW՘~ZkOBIݶdx6w$l Y<-'v PT).1q]'/ߌV7}е!g_ 1t Cs Cnt:E`V?% Ra%PY`}H@_B2@ Ð1 A'^1;_{ dXShSN~n^yxl1dH ㌎Ҹqmkq;JחiX0Q2T U\>kN!K8w_52 (>Wp/GVA&x/ t}=J'45 Jߩc`}%0Y4 vD)3д*G014}2;`,S"TNG̑>+QQSd KnC:f\ο-@oz0z*9]ԅfp y4{W o"c@;ApOӈRiyS-X~z* ԂI[<)?i =]~Dws" $g •ʔ+(391}]a rNj/Ŀ9 ~_E"4bP*Z,6Zl;Hx7L?[l2k_nۋUQ#6Ѡ 2lC I ?#g8]] ' {95 3g9db|>롴s^̞,jJO[lU?NGmq9y݇%A^L@C`& kP({ 3JU/ca }>Bˍs:>4c['M'd_Yo(䃳w.͛Ey= 0Cv#8A?J9QbLAi] +q)}翍.7p]i!)6^` P~A (@"pLH?6 _wX^ʂMo00/V!Gٲv=I8隝L-7zvqaYsu  60,)5(C>I  s_ӎ7>& eyyB? 5RqL3]_$uf I H*-g`%E8ggT.vQ fpO+~$|'ޘ{" I2 t2ݽ簚)+LD~_7I' 7dsZV͛2rQN985Z:Rja,+מAݤNK4\y#,fa2d(}?>SuR{ R9xSt:DQ吥dn(-0  6E),yݼQP/ "V.Z S%iIx1@3vf=Ø.B݇`rY9efo7 ͡9Ors"P(5C.F++IWzt;%ྫ喳9gdQ۵Qtf YK3'O ja%J9R~.fvw47D<}Dv=d{70Cs)fq.Ts@sOC9eUw8boƓ"y]|va (˩ݾG6L)>aAQ6|zgPF]Vf#cZ ]r)|6C4{%NGy@ݘTNT]6$\{Q$CO,\$cg[!xT|gI#s|.7K)J'g>LMdʼ*ER ~M3etLv Ru@##Ex\M̊p/zo&+dp^!MYLՒ~jqI 0B|Q%ά=)`73] ofH{uM_y>%x4[tr|,*ÔQjCt.|X3 UGJ53ګ2prm @*զo\+hLLKfR@5NZuNYJ\gQ9g O0Tl^/y.aW Дru:6\eqon ʶrﭫyNxZ¹`Cʽ&c>I"`|kpN_&BSvV%W>Qj&P0D?;+W "2oQq=XsDAՂA$teaV,*܃%볚15! JeT_c1zlkZ1#_uWZ$?-5'վg`a(w#U `J.+yrv> SlؼP $m/=YSe%],^n{Sf6sِ184X a-Wp^`1ANO#g(M q@9X C3&xB _?_&J Ȑ::}s6"C=4+4\W$~#AA}4 iyb n1 F<{.+B0Z+M,+I83 7yP]|~QrTv6)U%bH;%VŎg;wäZg7p/hC)ތ;|=9f`f>K5Ⱥ}}~ @y4U>t\Ws]RG'2N2T MEcH2L)\Pܯ' ?N񷟕/{ݺN^&z! n1DQ)q #1aX氍k:ElIX%|1I4ޓ`UvZ9lrSixl6`sB?e+ǦEV 8jͺ-L% 갈] Uڕ'ێD"vRC=!e^`F ` sOR@4%|~!;XTd#Ezp\h/t+m&# jJq,hԽzɘ.8sb|i>%laV{s'ۺhXf\y`ӏĴ#Xь:vnOQ]KIJRq,xiQ?ޖf=Ap`/Wos a/tuh2^u:ʙEH*/ ^$B_Z}k֬[٫T%d x );r66@6VŢ)+c>u9.g^ql[Xw{!./oqN< T vQ;S೎~l7˳fz=xf؝k3ў|p r|畄,ge54oô듡Jha$fʐWJo?Xm\Te2qX\uu5;chR@BD{̵T[ 0Ee]C |Χw #cAOjGGi: !D3eHfճ J1sy+EBUD~SrO Q wH~I.\at]n rRmd@2oQf˪aWMr<)|n~X3oz>*9X k!ݿX2 50W8T^L',RM>] J}TPlXW]l?w|a;sKSvܠS#p&҉gT!95fAŖ ˎݙ coܧLcȔ"+ٺARL@7OVUSETy@yf%_#Q?ڞ&yIWWU.R 3z,G% ť8HV5`ڡVQ ,s8 b\;+iШ6Keb4_+uTҐ"~i&ffx얐uQPJ$,/eV9)Rp]穲s("D}TOEf1|!}y#MM&dapgL|/Gpf6sk;g%13s*v`¼^f%R~p] :^ UTDui: ⚙~aO*.1q )|V)oSwҞ J*ǝ|&UEgTheLŭlӫ͟6y4kϻΒk|~<6TK%hovX|_j>9W}9(m }&K,[ޡMH\9jy( D_H Lf9 \ⵜ6gy3k\;S@0U8*[AjV$+>NYJ;i'9_vt{0 mjwcda,Ɠ90x^R=ʀ5'3u)!$hU*Uzf+ّq[j"5J)Q*f>E<r#ȵ[~>< AJ]&Rar];|P:j4)A7]:uf5}ZbC\:Te登on-7 R0X"JeOUW!+r1ř҄RE`6p^2lq@ v_8퓯o.)h"z֚U_Kh՘0xOh6>@\j ;)j.mveCi[ r-CBq:q#K|# ~Y T1NԞq Z3QYenQf!'T-.!=DsY%2 Uu瓏sSg(*-EC)"hؒO4s3Etl"2{d ȫl|9R"p V/77 4$(ݽݙMUx55huW(&U`u!ks&LbTXg\;y;<{Zsnǹ4 BdJ0EISn&QEt{;ħouAUٓ=IEصGC.T.g*5}uJ?"0UuUd_q`+W]=Tm*7|c7}9RRG=| yEq;RMoLqÖI) :ϝz}_W&~Dv&_wgX,Brx~՚P_,f9LWU(U l4I|z[\dr;u }bFo i}滈ruRKDB F磨W%y;¢8T*V], |tbJVy<\8I Hr7sPtxr^}SSALSHM- Ebsp#j/#A*txrL!I3 $2y3#Z&o׺Po?"zbJVJ7J,EW+ 3ݍJF/Un/")d,oZ巋s*&!hԷ]i8AB`jogy;donXO5Dվ1M#}gO{/|(+4SmFq$A$)d9L"o4a ¦h01~ #HkrTÇ{t/ LO(0fPė&WHۉDSHϩ hԑd 0hP= [ P1h:Hޣubb`WRw<]ϫĦVim+| \~WE].D{$ad  t,>tt|p&T 2[>[Ŷ=|i\rIz6m?fu0/fg9T;i ݝih 4!"8C] R4l2ETzyy3dh/=šBܵ7ł_T@ +n*ׯuJSC ;?Y5( YHkp+;J,)IL4ZT-p?FM;Gg,.q =U:}[Ŋ~M!arx枈|gϞ;ל1o?)M)4;ysT,#ȍ+Kuaod0C،puxZ8"C9Ds5ᅫ%s`jrqNX8ydqiͦey_n\VYKTid&KMzs*l2bNyzE˭_M[+m<ٿpJTVdiI#a] 2GK`{0M{^Zb6~4 .Orz6qtkquwZ||(F.*!8Œr5؛6_,VUS#s # J¯l6HG(7WLxWC[/9>}Zht ra!K=M8jAJp}:C >݆~<-\  őrLCn\P 2N f0My_ :T*/ܵ-i-M&(Mѫ#RH{]?^/p? fcK~A^i౶ ϣ77M y*؁v LѲ;p}c|~#>qcmEO{Bi%% y LM#* ]Hv=\rCl8Kgx?V~3!s~op"i| ;]w*} 4vXVX"`E+,Xa VX` E+,Xa VX"`E+Na4qIENDB`pybik-3.0/data/ui/thumbnails/Brick-10x2x6.png0000644000175000017500000001622613137372621021056 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+HIDATx]iUՙz}y* )bDd QhBZ#5"jTT$ˎؽV՝fu{{nխ{ (V{n^}o?5oI00``! C& L00a`! C& L00a`! C& L00a`! C& L00a !" [?e~5]G敏n3ӈVZ?6d pb g;H$tYU!õG'{p!D~jMM C'?ׁ r&4ه᜻V̀ @鿟dUwxzJp7bea$a@~ |^ߐK@T 0Wyawr !yo`YQ gbRxtc*DBq^hJ.q?o>ELZ)`E!KyJ~H @~܃?b Y6 ~qG6D+~P=Z\w cE~)@Ο 2<ke`?࿭'8XY s'{ϔBc8OC]pE=;ӫ =S}iRU(3@Z.@ `$=<&M[~ >. tIILRU0 = eضd5I+V=5͏>Ɨ.4#; 'ȜkY2=#Ę!3y+(-P"CQ^.=(#(Q74\ d"NKMyXcd {Sj0c,#G eXA1lyAkC2Ћ0 >N^\*Po+ʼwS2gO3;ի i@\FcLMZAN<1C".~Hqahq_#߲㳏WvE2\78ɛ$/ <n*9K:AX*7Cwo;|*h;f7ae1uj$$i@@?1ܺH\%X8y"%/8i8`<۹JzR=3'5{:,'{/Ʒ11"lʮKI>IH*U#8$[kd(BA󙶨"1(w㘮d tKK6wDia D 0X TB x )C`YǝAhVsDޮ;.`ƙM{ ge@ D 汄c9-$mݕs1ݟ. CI($p Ձ^#2\?aCZ2\Ǥ"LuxLUU^ᐪd;Ma@Q3js1}(k$ I0"x^8}EFDLS&=s~;/zUMUHl 0N3c0޻ :d4S5%)m)I+P}tSiez*Jdxlq%C"u>uRg/N${jԊs!9qM?XZb%]MuXqOY|\cԪ)Kv'q I6P ű ]h~S)0]\LHV\=,o+$yg#)dʲHOP ثb*P,DL ")⊢ьk yLcu+&V =Q>#eH(Lu/BU8ۖz) Cd q&Qճc:x:a8n; !+UovWWW"۸zRiTg90{TwN`iDaJT7 AV)恀n& 1o\Yr2=֞]}9++'rAuC2n&PBi?_S "3,5wc$ Gkr7>DڢC^ڹP 2LM cؠrԬ%0 }a.dh\s2 =G_Vc]C m"ZgX99u0~\\:OZ~4Nob(*B\է}১Λ3i{,4ma^{w#kN>+BsF'R&ED{^^%}dc1WaĒ/΍#Usf=񎮦&!p6- LGwt4ZMF.2W͂*T#E|j/y72DI';Kwi8у,`5p}~]Va7Rլ-BB'C"XqAbQY4Abڲ|<cUvKpXr!>[ռ>4uLkg`o$|ߖzte!{7gHv?۞[<@W/-̇l T;| *2^G2!lNVW-Ux(g_QPR1%vqq `w-Wzp}$! `)0jNP 4N O/Hg}֡Z29+.lN Qe<-WӸZu/,̓/*gO"@UMeJ AuzSWޓ%߇)SzC3$%~E< } L.FE$<+PLD~W.]5vK z$2B!yT +S+J!H_E>f*`Jp|'S&=B!Nj!`ϐ͚:T\5O1b ҈g|$Mꦄ&{>R#Z&A* VH_J]O6/ȖeafPu3{%<`ٻsOv>&Fo Pigzd) $wsЬ(;O7zƍUCא| d8v{tdŪ@ݞXzثP S$lÊ\[7)bXTX9/^+krȤ+X并2X}<QEﰟZ"EwQA@UqK ̑\xCʉ{C njOx\M3\SU.op*8 $IrXN3$ӛzCī.`}8 AQ 2p[)TהE2a_ߞ,l|q@~ΰ]N/CK=Wu/q6h c Jmԃn LwVy^lrnR28y!$*WB}MWu4PT7R)yZ8 IA3aٸ0t9$T (,@o*V 8_ LV/'.KM ۱yz~[I$icfab\c띍)dm]F=3"~b <͛vnL5I8^1IRRjNH>_3/"a~OK嫯^O" }U/m0-~FjB|, ",A$!J5>D2oP=m ZӃc"h$)3"YP sA*DGj|^l dȅy[I|)WfMJ*l]s5-]n70"eVn Z@50~<@>Ҙ ϑ4Q8ޫ2IN-0v1Hy?s @iE-`x\BULvv_Yu,<5C{ϡ+ǯɺƈʿK~KYрCTo`݇?,4AH]F&X.2}CVR9HPjrȪ[8I1+v|CLxbUػm[]dz'!}8e(b}ϭ9~Vܝ1Вc? OWy Wmᵓ6۪@ ZsmEv9tB!= <15{J)`ucR?f-ejGߞV\r7H`L-x4ezQ97;t,~0C2D"}-|2c{7YQ}a"[,csboP{CP,5; 4ԣOY]`o$8TXs0ojB $I;hز@QK |ɺB wq}b?5(_ȑھ>⹣{g\S*lxr*A7a[AT!TnIxn2p-^X}pL@ %ByG}4[[Yu䓁Jf3 dȠJDpRcX9c~! 1#旟Sy` KӾR~QB( |=Y`;N~l쏔@ԲA : 12[yB[&Vr/VnT+,l9+w ۦoK{}s |MxuQ%2z_~WC_^ᾩHk=XMv(mJC`^Gr\wQ=m7XVnw?9xbSEwAYt[H]Y2_@y*/jԷw-rSA KD  jg^ }x}6Ke UC ZM჏y)b7eJxYMONVƏ ?{BCpԁ/22*U!--Ms1@%!b!%G}AMs:$H+AqPCt\97GY1sz|WE il'GA.A K"Svc*?!4bsFUswz hMC!\1l7Ȅf)]fȤ=2l^/k\zU~E*GrHc4(ܐM&E*DXp(D(C/Ky^X `zFwрgD_DI=g?.=ʔM+Z._/@UGlCup@Oഎ%^\* ԦVGE~w&=&S O*Ty~Y*<[$U%>7p˲\f7k9sUގ`sI(7Y)ƎrZm`fG>e%`?'[ax]xPRk']1ĭ \\$"&GXe"!\fȪΝ\Es800H#E췸ǿHf̐jO(zJ|O5- B4͛t#W}nA I80Wz2P1%#^SH5aYB]A5>Ù"W~q| HCPJhEXmUCH+1ۯ+_~_.7P{ *]&GΑj1eHr~>O_ZԾ]êzMWr>ۯIo +jΓV*,hG aF!Aݝ\#ۺ?)yO\i_eiC39?֦ mߘD77H#,U)$6XzxX U a9T/L SN`Q~J5PxDbQ *F&y֒шWϒ#r\'  ٷW|R vMP2[UH釔qAXE9#$M?=]|Oൢ UM{H&SfEO&n93늕|VA{@}buPya|]>i00Z Px S{D}cb iT / 7ƻDgp+yOL?4]B<ȱcvtk5]bUC(c$00a`! C& L00a`! C& L00a`! C& L00a`*=QB#FAEIENDB`pybik-3.0/data/ui/thumbnails/Prism3Complex-4x1.png0000644000175000017500000001575113137372660022202 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+IDATx]gx־?$9gNI/W Q@PJKPj*ZHFŋ)ċx-_([I){}rr̙{^{^?$.d#HF  " o<>:$PGNwuu1㰵`G,i cc-cWcN킼ś6<٩c.m,|7@87oH)~ %wQ~B `>dJ' ѳJslΞEMdwbH;v 0Յ3)A&[ WU~|p+Y,qxsCaI*rҀU 7LBpz ͝s|! 6MddYd;BcقA00~ }";56!fm$DvQC)Ei 7)H !iRIz7`:p,&t3Z*h媞`|O~qC ?c'w,1Vz&^BRFFW+oY4 :2AUCl>_* - % j^n& ?>X{`QkjD۵ wB~w5jhqp ZV2) ScU1Hi,J>/wN`B"D#_Ag"4#Mj8}4I/^4TW^dh6 CXoX]BphF;ml*63yU(e|~www'OB(bƐ}ϐ :VK=ZDڱczooo=<(np@BoK<4SiѬ@ c;[L#إ1 bQ, lb# XV>D [ ڬ>vg/ODkiR(O>G4Y۲9jݒhK۶N:0ԡCj׮xܹsgر9Zk-[MRTTQ``xEpokbQGB=-&lq.ff)v.f2f+:Fkp`-28f0!!&Q|Z/s,>T#ӕmj$~)l2#FpP٘$~L\&7]xVk8X(LO[hhd? a!4E3o݊f@<>H=y8`?ԭ[7ڵx 8 DM6ԢE CYpp05jԈ|lkmRgbيU\(VƢEVq>C<]K8K4FJ{V]Rɧ/"e LZшo&›M>Xp)/M]]52:$b)'iRo@nD5nZ4˄0 p )A> @/)9r'{ٮ#ZV#J6o@Gsz׋1Pб`:&uB*ׁHB5O_sA -z("2]G|5Bp17l ?\oFϟPX]QRtxV2\V,,:87kWp)G)hxslOQE{ssӇ &s%aV^-z $X H{j-L]+-4q,8DV1+;ztSPw!?? ŕv_@zzRz.CحGǜ9sϝ;'C  |C,[aϽj:ʇER Mf_,[&iJ?Nt!4s@M=]cQ ɓ'y>LxhP١L`"9 ytgᐡg$̯G$>* 3Q1DSh|O~n9Z-zkB?~.|U{!^>>LWO-eawG4Qff1[LVRs;'fqb> 2@5f:۬8]ͮ a0c *Ăzb1sߨdY? ~.BK%~DZ8#dYߒ|D&~MuӪ/k݁_EMw 7sN>|8͛7kg67hՕF͔ow1A U`B)&ڶm+K.]py^z?,УG1Y381OғVj)4@q S͏jƳАXlQ-X#1 }*I>au̾ !mK}Mo渓k(zi#SN-!~A0fH DX}dAv Fo=aSMq}OEYfu(0y14h]VzǓc?*4liPoqຘB`z)!ݻP yB }W| @ռўYtܓZ6;P:n<047nܨqclbC AqNଢ଼E418?*wꤞܣL#ceS1==D`%P4Svzʗ,VQMzuo,3"\ھn'VH}Q߾}=Q0o`$MR…Ӆ[}%\afJNn"+K<] kW }ý@Ýv9iӦSLd`(7~#n&*78Z0Y:}37KYc$+ Kꉹ`3 ?ă:VԤNH&RgM4pG9`„ qjj3Ҕ{fE ё ܻ L~,Õ5XQ;x7n+|`6 6|qtdq<ӢTO7o\8OX]'+A 26"fYPbs*I>6lrf P J'ߩJsh|o,<~@IMr;F @4z/B.\/%K6x((QpF+ Dz1q&?:n|W$qZj 7^?b]baj[řKR ~Gшy}ֆ>\8 VG/(3-G:V9;D}KBIn˒`?,H0!#&i@hvCzx J'cv,K;VA!L|@9Xcw40j /z888O,֏ŋ;{f6 =~_D+EL h ǵx)}fu>E]WЫ>du-\^{g7k֌֬YSBxn G(usspZX-^1Cf:&شj:-[}Zl-a>@;9<ͯe1eg5q$(.N12Փ7^&FKfzZe^fe9anQXX(4+^!GI:~E&΅C<=BDZjI#o^]upDjWՐjS(z 9J uxxފ^1{@E]vOv(N+BJ}`w&M0Q s  {L$9+|UE=p5t4V2:Ul̤&-؈óT`=F|d00pf)kX0?a j:/:u?=Rb`>{c~T];>:q$GN,-~Ig >BIK 2qyN8fW,!,6"&Gx*/IcŶpc7ɢ=m3 a zu+#$XI{טMO3"wҤI1v#!ܓO3\kCQzsE\N|q}I_oiט/^,!0`7N>B8{ S?]\ڧ%{(ڽ&Zxk/ 7%84!! AXaW:Yb؞[ u]8@ 8|T+Wh̘14x`!8'X`Ӊ[Vb2~M#tq3sk j?*NP-SV'irrH!;7ɓ'Rb nJ+LF~03?Lh4@HZ71|LDݭ?(911QX'WcC a-& )L?,MsUL7I 4;x0Xs\&FjXL,L`XK/ ~ 5UdM@A>p>qG\Og+}:eOh`(hӮ3*@5ȑ#@E LFXCJ&?X#?D;P0- *%{lۖ^ȯE8-`>JIhG]$V @/!OrB$myIy(C"7Ihk4uB Î !yD*xڝ0[-[8'x2@)X!Vxnc(1{]ƦI|l) ) ) ) ) ):-lNZ.IENDB`pybik-3.0/data/ui/thumbnails/Prism5M-6x1.png0000644000175000017500000002776013137372705020776 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+/IDATx}w|UוLGU^Htѻ1(`:6 cL1M60M'&d&M̼&չ վo}k}6>N3Ap4Ns4Ns4Ns4Ns4Ns4Ns4Ns4Ns4Ns4Ns4Ns4Ns4Ns4Ns4߶)brn+fuO UVe\JwǸ_J+NK[liKju\{|ĀC*lܵk>\,Q{jזTJ˱;Szk=Q!!!j/: p<P @>O6۶UϹ[6W!mUBDxE1s_̋'%խ;;i1ub)V3`ؐC뺕q˪ hM쬬TFF SrrTLUJUHm|WaWQ@AƘ`,@[cf/qu}^' 8W6-'V*|`& 8<;6J\Sp nm/+/̽kڣh0a8ǣ:B]h`0[ufCUeW͊n8GeNV2ToJU:FEFH4nqRSSUzzV*@QǩQ_W t_ (h 8;@`ZVz׹[Xa32N.@F ڴ%5^+I(z-C߳c}AL`yG(a8a+.F-Q"6FEGG~)ɪ8>^GGp ^nRRRTZZf(0Z1>&%Ҙh)"\ݩpǍGUC4s111Yh{tJzr7hxY = H\^8uL%Pc{z+qIF&NX, ddlz?fGmпRRmK;C(UëO` MR{)6%*IWgEx&&ij hoZ\.7򣢢vB,++Kko QJ}#TGh /54DHa08֢=/,5d-uF؇t¦3(fqxC(r"ho,!\ PSLD=/Y}CAgJ^ BX:x*okhSԬtC3A٠\hpz& `C(hL Ń`X q``3vIuosr`0X|_}|Z|ClP9!m5[P RP 0IT4t~|bBQl t3 H[pNdP\ck [ 3Fլ$Uv?+%4|FF rWac Ue>@0fLIPiɪ<;C€wINVxi^zTϿ3!Nk~d>" bPmT^vо] _zF/]6 -p y,#{M¹n Ua (߶}Hc(~xR=XPP:dH#d.ܾ d!>X|z".+VsO577@l{T+T@ X D,˅a b1~><ꜯY0+$$kzkC>9>X +I;q]o;uG(iuF w>0RU: UW uͅ>xO]-aj B y2iylT*OS3RUev׮PŃDMccU ua'11Q-Ks8xhW dX7i*$> 'pMCRGd Ȕ5L=C}vhe'C ŠOKcX>s#&^VtϺZdw'_~O9#>1 l 0pch 2lV|_8 YB } 7SFS`M"C[-Cf5x⾨ROf95˹nCvА@t <3nzFkqznm٩8&8F=?R=c2 11,4{z\+ !ZQtR|H d.~FZ'@A*]cU$NURwϜ4Fܺ -95p9M 6[A=w,t'0g۶rg,es6j1 J,Us`Cz{Z 04xK1Bg?I"'SUTTRT>@ *r= V,k/:i0{VhPcnLjl~,ƷZ:CY&27[@#@L;."|&Ш9tCMKG/%)t΢t  LNtQ`8 i .k',h +l6QLjA5bi_V9;;$\wPmzX餷'c힨F M9H.=R!u%TO`BC\msV ?km4 2lW/0įyLz [l|s0Ai8 `sߛĠdcd= lF`<.b >U`7 xTZz z3=7v. Uxxad/ɡE(6\{6@y2+e؈u$cX[@Hbi! 4wǭ$QS17K~ #iHmt#kn40YGx9TXEnRE. m9U"t;CX!Qx;fL6uz~J~,Nې.+؞ !OjK0woٵNs"4p;w6&K) 1qd nõ'm@s/v`zY@V6]E~ҷ`d[#! :ՃpYJh^:KV1*hI\woh̹tY<Q.B7NU}Rp '>cM!)DzAu|^Fsv) 1N[@"{c&],彲F#!וS.-kٍbZO ]\EEEo;h| ;VE c:47F=ʛ&q4Unz&2|Ƿ=n"%||";k඲`ĪSrk$ه45dsad'K ގ KSq$s 'x zX bA%0s0٬L6AM&.b z4rr}TD$]l/eqj-ZM6g[i'ЮIF]7R)u%]=byV;@A`y6%01,I'}rmP#']nѭtoy~NLp1 z--@Av`#l9x9A=8Dy*$DKUŌ}k= &{5޴(^Cg6M 7q>gϬR]Rm`֪,ǪGLpR4V?_6@*,+An<| EçØLmyo} ȱ9iaM p|V)wRǷs9eL\ϗ&2/ ;vDs] |EoxsVzhI0#!ӛ Xx^B!2&c[.yV9s`BNe˃~;"i-s-a"m;𺭌mK+UwY#fUmV%(})㿻˪yEPДH"Zs"ZcDZNR9@I6o" ]'j7T|a*6TzrHN *nYRم IߣZdˊt;%983fړ`Tθ7 a q{* Kı #d.{BZC_:E\k0X'#oa9.ԩƇKõMy+mdXHPK}'GzBKZHk.Kdk.|x@_?O?vTwMX4NM㧃 {IXH阊mPʼA<= pAgj}qNa>[Ѓn$Xx 0|n'!4s>Y"@@s,ţ4\\mwes{2As tD{d:Hz} dT+HI8OTcTBQ; ~Vjci:̈́jTj<ZJ lmqb`N>/tІ;,b)Ks0K>mo:qw/s(kրHgSF샐H|2@cG", YG\\s% $+Ipc{#ߥK\0O?zy~@X(>L }9^q'W溌H$3`61f%2ᓂ4/LBҨ46m〲t4BC/fZŧtpxŸF2x=83U>-˸c6ϧ N`\׿[ΰs*.}LRXbPtx #5ѧΌTԿ 44, 񵪛93fՊډP|BO>VqøP'D+ϟQ%ʋArAݏN/xGưb*F5o*YUM ;*I t${X0yR_CXJj LvȐ' _]{b1拸VE2hC4KnJԯ᳃Q" RոL152ӿroONu}- ݷO 3`{hvm7$fZ "Lus!ڴCND؞m9vs C`Ycץu[ID~ ^x\d^"ӸbtLDJx|n%@JGfu8po(ҸzڮB2hSlWugSxTL~,k |E)U5j竚FR`l*߲A'S xatf <.]|!P %U2q9/F$h{AY)c}a1J2bP0ic5JKÐVm O6g ,WWai-DPM:XS2XIk ±l[,-0dfy_{/T}:V7;soXu_}bY] (}ķ> +ݺUEIq@5ao o/oNJ)Bdu01d/q:ׄ $Je^o/1d8̌1a ?$ c#oXu XoLބ@eޥ=?sLG{6>ef\Ŵc0}зmu^m{2hץKKr Ϻx^^ճ:V)%% }gW wMƠf|kHD*} \Xa=ϊBOIeN(6 Mm(^6/=]a]QHM .YFy >v"&04xh}@ce;";Ѓb6C_ Wmz}FMY|8KVV3m=^Wػļx䈀*"mnTtK/}F^R;~gnU}>JgVhϺxN`?T *__ "Viy1SE]n%uEWlKdF0'z  !\!:x\FY3~l僉0]_f!jԎmHO*+@Am0vxZsWKJD ,\XȚU9D y~?`KRĢ"~hDdc@ uXMb~[ĕm3S-9>N쬂[Yb,,pm=<|&hQCmŜP(Lzߥ~z:%k!86onKO?5?Zؤ22TUվ%'j3mWou{&f{*} K͝dޝ'|d3նC'CO$ ]p!4XYcct;{|QU#@#T}^A8m2ԉǨ/j*eW^^3pz+5|p$冁;!T9#q6t3s@|7@K(ju}< IdJo*/OFpѠ`>uo&dhP#@sk I#|vOϳOxiig ©& v&{ik⾪]]S=.q,H^e)S iU\>Cyaz#)U6#,Ȓ/U[y15)<-AGV ~y zxccQFa-"ͯŞ.5O-c^jK4jRڟ1, ~N_ju~A65kGüBm\!\8@VYJAmgݔO$OXø CP)rYxhceI G=M_pUWZ뢏~FL"՗9'  2F|v*ռ2*e^V/j)O ;lȡ on 8&3gE# Y}(KtH: T S00YO@q)>{/˜e V + >GyB,߆}^/c\?1sT0W?yE1Aw.ͧ.Ss'~9jؖYr@l?f9?A0S`əOPY\l,n4Oõ K|Qf` _Qgr&",Bà>ֆ }͍)~Ea_fR׷?,K`^y'n6CVyS&UXओ^5˧" u ` 4)Ncr[scsj K_l?bBS4Oϥi\x#QWTw' ?!{7npd uY4qBVXR9S[BEHOkvl0h92\p{a`7>nOSM6}qƨUrj3jg4c&|~P(>M0g-O $L;ϼn^jKC|ei}"x|AOmz2ZEE԰^GOMeZ6jb[u_?wZ+][o\tvp6},4-3؍۶޲LYP%>:N?ޡSϏ_֊>nܺxd }V,7O V^{U=+l|eaaP+5/Fp# xxu6J܉boǺ8SQ5wW_oO 3w`űufH%',={f `^b  ^|ax_Lf`Q&o+qb,xƍѯ\r10C WD_}?9gěy,ϤQ:?fQ;ﯩ{;S'*I3+aibۭXUYpl{|Z)'6 #3uN%%c_{^+A#ge@Cx C1".򺙒3Ab=_\NSV}_%ǕO9on}`OUvfUjxnGLQo|VnS;V Z +(PA1m _hhd7}VnH|b5@2;z/yJ` t?#^<[W .ff2+mk(sqyt}K[*k.AcuZ"5Uِ!d}c{V9yʖj?^e~niRQr-]ܐWAaQX:e\\++X)nTˊ88888888anIENDB`pybik-3.0/data/ui/thumbnails/Brick-10x6x7.png0000644000175000017500000003044713137372632021066 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+0IDATx}yTյUnU]]=s, 3 䄏8$ATZl#yh41G^^[UfPt{^{}n7]@&_yW@~_yW@~_yW@~_yW@~_y*Kwl#ne>]m %+0+am,x;`"F|W]ww+*y. K<7o1חN*~>K-R?{`4upxnߙjVcC˟5֗aA Sm*>e7H3xhDbOWu+ۅ yF,݃0U QܶT9!B sW567=|@Zw~ps_W-EXt0f5 [1l ^>CSU0 L`,ze"^$ p``U&:P3x9ao}p\r=g6~pm| @pRݎ<'@c,~ wBda9e!w p>Ope+)͸v(xX ^L|[$|o8ƿ<{1͍~<c ך^;1̆733MByt@rh@H,q|HWGQL9^ǜ] $&%`N )r1̏p¼mFk18]i{գ\T)uъ$o&\+Tcp87r Pf׮]Hϭq u#Ut>|i[u%C#@4L c:a~k|n龮 F,Cfad۞jv-[GЈWˆ@fɌktT!{U%k 6ͦ*'{N#! #~5?WSsH@p\#a'Nڞţ\.#Xc r Ӟa=KYG6bѫ?c`rE,Ŕ%*F'ZZ$9$q-Fl"$~D|~#K?P|8uZN[~rzCS_ 3-OCMVt}Fg95~kS.1 ۩C`͜0qʹqܕYBlM/`@@i8Ro > N-Y=rFq(|~~A[p]$,nI5:=t8F Nˊ[tfGoأd:2d\M%^i6~>,#Rb{UίWbr>=b4`4"/w=!bGxEwnhtsRlT$US-;|O곎uV7Ua5AU0do2]8iw1[:;䏹`Xa Ys>>8@&E")e& ~|h0(S6^L3mx/VbHxʤG;HL}L[Sq%~|RXEb][nO^/W|f&곱`ސK0<+C4 bFO$Qd0j/ I"fF7a>lဈFaF$ظ`ϒj^3#h+pd,&`k8 @=`"D >8 wDrOG=7izB9; ;: Y0<m Dsp3rWp~n5>LqH/F8g1!uxOVweDGc*. 9\p 3HNYԤnT1O1Ob8/8d22S@ myTU|j^Xk 49aO1h]7r1*(̜3z8aoHC+(W:MA#5m4Zk;m}'xѫ/Dݞfz`kIn7Aηe1AM9E0 V@yZVÚqkP?Tȟ. R3|D6{l1Q`k0B %=/3"ej!wt]S/(RJM']xUr /Dng)O!Cs={X7L}ݦƶ/nhS7ڣ& b_It֙n}.?.?-ne0[Gƌq1ZMFKm4*<0U?vhQD}fj"\pB9@rJ(ж|*2!yccćZƐ!]} F|eC5;_0y.> 5sDR#1C" 0oWcNezs:,U\_Հ*ȧ⋑"=2ciBLf/hoVIGDzy@n>3enj1P`.(.RԻ`5x а#ԯqs:hW=cXe@E"FkF7V}J G|eGѳ}|)< V Ѥ#@68+:G{BV #0wq~ wУ.Pba*cƀc锼wI?BO85! lCS"8h|j4JHYuшH,}IUZÖ25Oj5wB@<'$%[}v 3C_Ԃ!{sBB3@p05Nx<*Z!?M^qnkz3&qhH/6*2:SH(kT#20"X؜:8M"HJ,XF ^72"ŵCѡG,l;_mYBoR %^$¨upyn^}RE@ӷ2NncLACLGphn4?e<:)]3S”(Oe LI .ĨvRE?]Lid)!A+jJ@K=rcB]{QLQWvm>-ҥ`rBy 6"h篁#E$.gzvF ,UЄ啦*(|SY< >S}F1L\# !Tr2jI/ >my8K? }TG=sPRӏ|KꞫ ԟ~R&^Aڴ4E9xc < X a!XIL0]OwrF6^p~Gk{ /1zΑߐ,/#Lj9z1 Ni ~S '%:HzDcTwhT:}L3w)UWTˮ"u*)wK48ofH5jQǺO3ظ6S J;Fgd`DExIo{`4`$,ֽaF_EdG^;K#Tz 3G̔LJo<t<9ã">vZŗ3FcAޟGo.CVߺ2.o~~o`,Te+Ա>3+zĐ_T;ג`m0rp@!JB\ǮLC$[2aRgo_n7@2>C"r9`ȝB9a* "%Xf{ ~o?]M ^-Wj@{l1Wvlgb{5oqlyHa)(@IxP"ֻP :Dg`t/D So3x ᎌʺ=hbиF%0Ո3M$p0SP˼΋FchPip躎{Ql„FeUj@c_ں1RQs' )^M98.k:{2xmԺhXaljM!H8) W_]SvԠ>ctpj'C˼~)A1}/05HRѡ}V a_Yq<8f 6L+ ,Zi<(Hǹۈ {F3㳆g3MЩH;Q p0P$bS7%>uI \zp O&Dn} BF`F(J/E-gRh &El4_* 0L۫sx.o/1pejzm4e!s,'nۧMդ-q WR=x n6*, v^½IyIAH֊mdWmclr LpN' kA=Lj_g5R 9@Pۖ>TG⅔9^w\c-F"  }|8)@u"!QTvܐPG=CM" 15Q~Q `U8fL\>92+M bP&0 hcu㶀^\.au<I%7"n6 Xad$$n~0v9pDFh~SV~iHV7 @PrN6%k1Qbpo㏪^ S'~n3#mՃ[黓*_+WVg38 du<ӊ e“#t(@:$cJJX5BD(pʾˊ{/b pG$_(8FL65-u#sN5`xR`*{H}zZ{u< qU_ew,΄OvL'ozlVz-EQu8O_v96(8R@8 M"HAىH J"jM x<.|%73ḙR@h#Hʁ7 PU_wKTzK;=~Z!~ o,Dh[F ={}IJ{x\0z~E foJϏr^bx-dk0" &z!)&@ùL3 `@ $Uto(c6O2@0Sڥ 5gBPgUo WYqÑJ 5tt1Q#۴ ^j[8.";Bc GHSyIVVoz/\Tm3  FhYDo}ȝ< }v+')בּ~TW*VE ||B*K Z|*^)P!^dmIt CO/iLC~UtCIγFdZPz.i&\2ELv??S7M艨RSaTlPVː݋N:5VGd$wc{ԧʐ>5e_ )=R'?[9JF\U޴\D@TNzpLS“QN1P_d7"goH`CAUPPՃ*)Q$V*L&SS7Je[y[f%R|-FdjJ: 4U P][ |M1aYoVےyT_Q.ꕇՏ!eSq6Ĉ, rs=Hl ,CF`i i?kroOjP)QAORZOh'Id) Kd`c)v!;@O:ɧ M? :oUуjꨀvY\A$x"6.s~L E ĦQg=/0ifiPaɗdt|2MR:PQYB:DHL`(b&ie)eZ'VE}&Ue4n_m5sl@9pRtD5X%\` RRRX0%[S׮S1ڱY?VHe,' _ -DDAxu@S>h Z =hjP s$|b8FBi"Dn7=^?{{3/wpГol7[u= 6!ܒ>) KgˢƋR%\z~T@*{l$hK-sj=0$`$um -޸THqzJm1gkKi:&Ux2uvM$.ۑiD8|1V`7PIڃ 뺄ZlI|HvESܑm-TAǖΛm/l3͐.Jӫ 9a8M$ fMRC(H RH1QFI$@e;Q!HV8/h,*)z+5}*{XSޘPSGխ#3=PG}#-"v >0q[纭܃"{/y$U 0P db[YR!g1OڈS& y8 q쮷:7h$<%̰:CSDx"VX, >]#3o\xH*w]Hi!2~Zh\qMcr{{lyZD)^R$K?i "Df*@"B_f d0Jc:g? %a*d)I1&u!=¾ډ ˞"dUH!vI踫]|iX03JpZkFp)+f@f_@` l4禪sC)Gk'sTbә`ȴtoYcz * J`H^%BL@(WW4:9wIag]b1k (?[*a+?J#;кՍ-|vxz]1ĺ5zypf1(rEٸNT<"Ф9|&Y~ȩE@U}`G` *<#pj%_NpוRP5喨 Ak<_*Ke6`5V =w& G;Y¦-[EҰ4ZFPpqb]SYdp?hmzeg`ڨKi*=&1RGҦ>DD0f463n 7**2S%k]Iv^߿UxV^SUo=4EoPT`*0C6I{tpP^fvD.O{8/$eXYDtFkb_(S_T?Tp릸}, `_ !qiX9yA&5xm[؜<;z7?pЖ6ڥfrMѓDpi3/b$n6a_%WX/X<*&bϯ!Td⇃[AyG=Ys\C]![%nG8ܹ1\{1#)TyT+Sx#)@0?}h@O/W$W5=/?P$]lm` t2)7m6=ekQ|1;Hh~: oޕtqbdh4$/9BS>i+MFS-nv˔/pzl[Bg*O C"R|uk[߱tPi+'9tLMiTo Tv- =19gNTJc*(%{S|W=Z#|Bykn=As.0Em˼SF)MwOW.bYҞ8#e6 (oumPխ{ Dཋl5{|@<؉'xx[?^0\07N\=r =B1˖3bfC)T뗧z%"0rd@jX3gRl`/ gsX9:%^!=sݺT{BuWn=Ys 4MNonTadz#UCNBUA凗mMz|iAH`G8[әulw]O0|bɼkW48B vBC[p7soj-}KGٽd߯/2%qs6g1HGM p0T Ɇ'S%zXzրm]~wR~' ۋETXil3ų Ii6o ~ތ Z-tӝE|gIHs 'ѓ@p`)ѣxS[Ⴐ RٰF @0G+}#쬍ycTpL'9i+i#=O nj(b伈hǷJK 4yϖE ~}:PETS@*3/Czj˪=^}ʄ<rHνW8BgyJή!>*c8V~ԓKVy +/'ǟ@gӛ=#YBgOOP ]~|eˣjͧwD96Kk &WN"b=1-ȃG {GNF'Δ?46] #NR'g=!ïIz*Quyzhfaya^js0"S7p%{h˖Ϝ7qJϚ7ؗ|oB@~_yW@~_yW@~_yxK-N#IENDB`pybik-3.0/data/ui/thumbnails/Tower-2x7.png0000644000175000017500000001154413137372524020574 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+IDATx{tյmsy&Lf$Wx E!6(>VjRZ^/ Q@FQ(굍bv߽3f_~k9u9? %/A L L L L L L L L L L L L L L L L L L a mT_Mp~t*PQ0Y;7"o*vs24 R'‰艡WW>;[ nXɘ ALT[+qSkݣ2ؾf@"@-mRI@_reͬzv {*wTx; nCb{cPKM>c Z 825$s?3Y&=3_8H)NjBeϏ2{*SPإ~ UgT׻K06_OF`` …Bt Κ[ 4>S$29O0PyWTf-a+jTǼ@\:mPM $IRx{F@`4ƏT&WwN%^@ on-04>v .gld16 6 Ih {7-wXzmFQl5!aP,N=(O!q[Y6}8]N@*һS{? 9S|@;hqƚ 7lnnXcHI  xJ6P =a}(FYGOaqQXVO58vc9A( +0F] :H%(6H2beBZ|@T/Vm黇܌12!z(0 ol.ҐE7W rl̪tRl1_Ւ;|@*ن=Dj8 @E ˑ0mVק"P;VbP9}(6,y@cI2ep3Žju6'38|! h@l';$"ـ<n@K)}X)8d:N ƏF N74 rϫ!^lK /χCuXz VKl|u!Pnǐ O;)lZgC!OgoD 6eޜu5!g%:q dyC@''~/{@4A,-^A}Κ@α2bdKAwHFh H kߒX<AsYӮ\6X 9?h j`^b<%z y@4KPܳȕR1B3gF ; V/:$=G{|G! dϗـCm$pp@XLA_75ljY/./Oj)@f>y+#CDZWbcF5~jG3|$̦xpbs ܻN{w|A >d3nq0}Bn.``  rӷzSsvxyNpJ@|n c7.=``/ġd02@1: 0`"vbi `c;0G·rzӤ.>ky 6$>ـ^ +=JXSծɨSH"R{r 5uNMN17,o|=>P'U`G\o09i?=Mf= h=C/sCbٵ+=PQG8bl~>vBhQkCMj Mϓ9J-C`>Lr8  K?>P$ȵpg6p 3'b 7 /68B?}/|K@{١.Ixt(pŷiuƤ a" P׳ :dp"B, Ro z*n ۾˘,eLk_AIܟ١PP|*޳gu $,i'̿:S[ tEL]khxtx;K[dBN`(C"4GՍVRKi$Vq|.L8ج@;w׊nP?ӳ*ɟ`gq2I`kaE.6$BI u@ @ӶB59'$,ibt r]~4.~%vV28wx~ݚx|Ou @:[66ms4stgV4l q |wԚ1 jm_La pHYs+'IDATx}wxTeϷ)ɖ;5ދP  =jm71"M@o9ٜl㽮l=5W33=_?^\<x<G<#xx<G<#B G1jΎ*CKt˿h"7QaOXUJxfwukfw|AGcػ7mWYNڟƯ ?nRK#<(Ыol///JbbNi D2M y*S 95h Fu|,YdY'&.6£m=Fdž>e c|ztdܮ365cK"KtJdu2H;?g 2&/r\)eez{[gޜ,3XΤ}҇9kB~QVy^־W^Yms,㿋pYfMaA,S[IGvs19` (|lk*@ߜYoݡP<ɜYpزe ʰj( ҝܨ4g8Ԋzìx3 0僠??ޡ+}K2P =_"Z ]:> T;M><};E6LEŅ#^_jf5X~VDMc~+|ϳA E7ӕj0˿_96{GLAM2#$ n]3ZZ8p( [BBB/_8::($(bB&eWLexrl*V++ Ml~dz6+'8BPl K[gH @DADfKyxZEt=EOW楗Z\z4_I,߲@|P7_oon!%,ESXOu)55$T>!cb(""BBBoxx@$R\9X"-[6BVl : z:ذҡf V,X:27CYet~slYڒ.[ 3g8ĉ$({7[Ύ`C+p e׾?H_ 6e(b 00Q`I=h]=KԊԼ|9jDU7`7**Jʋ/NS%ݸ۷;b8 sr?l- D _ x9;] ?V< gqsv` ,+++|(zE %W[{XL}6m$_aÆΙ3Ni|~j}+s'B֓0H :Pd{w/dp%K 3O>BJ,rp͎hѩD;숥*MT)8sj|ef͚ڵkcٳA#U6u+W.@xAh~ Bh&oD2;3؃e(+ zBHP~jαwY&~B>$f2юyEptd>>>M3@w w >?DwVԽpݫW5\?]ǖ-LsR=W|FR&*`kKEp'{]7oN*UK.9`۶m/ӧE>Wِ&~TP| ]zI#C]qzEJl QܴZ񇃢Q% طoOK;(rn0e֌lʢvѸqD7oAwܑ;թSGm>zNb(}G6J5(|@saA?^a)ᲲF M"f3?'ibzC2Szʇ\Wtyw/ C11xqV$OܺuYd{=BW%fg ,xko!͊+?Xɿ$ٕ$wkKu~A.Pyf͒+jWn]2 FVu!ظq@=iūG'bX+ {ʇvx!=}DN@ V@lE 6ؼeK^׮]ԩS{S?P/_D,>Vj1S-3/a7aiҚޒEeT ;!0-dw&t /@_sIl Ouwlز%)a>Hvcx`X'O,ܽ{MJ}}huvq1*1WD-VUPuN8 @yk/߅u Yw~W~W9޿sDΏv1.mlۓ %ك+(//ρ?cp>)ȫz3L>l7>Ar9s#]+_q]+իn?4:\^ӉԿ|d W̨'OfA0F^ysƍˊwO:"#w 7E=5%!zo?ҿh=VY=V~6~1߹D1ׂH!{6'װJ$J9hEZip5<=Xys"D۷/=z֭[Pp,8MP4s tOZy ]C&*߲PKBs:pB:7|DiEp7B]޽E 3fiii4`K=tUG0}tLzt]Jy5;`Oα;{LxK%-;ƞ giA;O5*YWM_8%H4?D_|!8`z>}-Zr2zt{=rXJU"O"A:NCߖ$v ^ =´rNvRE} /;vL8|${>cׯ({PMԧ30{.Am|?rxMf̍"#8J-=S,\ڜAnۖ2`ϣ&xdffb!8w.df͚Ի\uk+D;x}#EQ&ڳ1Ӱ/h d+[,\A-YbԤI"Gh!"ZAݠ^^vqo Eޢ /r/'ẖ{'Ep;l߻7ۘ@${:vg Ձ#|׹5]) Ԏ=vNԜ?$ sϟceQ3Ev ^U]-<`MvvQYǏ? C3|իG=ZBU/ .~s +UK;D~|t I)|HQ*pQa#Z1 j۶(&,Yb7sP>:WԔݐ GӺ@s9qGc&LwY]0oڦh#=+ip ~\M "%|Q? [;2+"B,@ {4 {|]t~,vU`h{#@IMd [Á%QgY5w7(bŢ _c'ҽXM=J`| c,Ct C.ow=F/Y)y2@c#6H!޴}n<ߺ0){nhC*xTYAgP#glSBDQ3н} ea~>޺# }N"z hA֤6\Ȧ-m.9+tҥ:tH"|q3logSdYQP壳l߆9{ii^e gJ`\Qy@m_re<;v(?< y/GRU#ga3amKkpm=XūY@(C{+9]Jr(<[TȐ/f 7bK/D2  z_qdռA8wN՚}˛Q,ʹ\)?P?g.8*rH7oF^8TD0CXhE(q ]D8W2~z?3UCՏ>!rV~ -!/ 7C (j yB.߾ߞ={wߵ `+*aU2VU`8(B+]:%Pz>M|eCBDop03#(((ƒi+:ݢ%SF wd֭[']!o)A@8C@`@)ٻ5ҧ{`jG%TǬ4O,RU ?aHat'x2ʮb9npK1r$yQðڱ Pt1-ES@ &ZiZʷ\QV<6,^HW 7@> `sBE0ƜZw1r0%?z~G5رc6ȩ g 4c)*?ƻK |ppMPڽshZ lYym:>xW'Ʃ R8[^z,*Ұ<@$\#PP BSc>^Z^W`tK4e/RT9)<XV¶-`Z܏ $[J࿐IS9WSd- ˀ!6mE @S$yP8zj^&@ZP'zB8տfZ8rt[ĵSJL25`ŃBFA ^45P!xv*_~( Uƞ4tQoH7Xvt t dE9rtt@90pΜ9S^GR[ sSʟ9Zc?/)^zD7 h9 :*~0;HfBk%"G=<үzmbDx9DhVдiS(2v1{lBՆ:YzQ4/r0+&}l{Y~ˑ@B#Ga)VK_,rhyƎ!0z20f]p)K`A@-{T6%+WK_iuxDM̹f(X5S M{+ *ߪL6?1]Xb $yT>gWi{ _^P~W^wOl"J9iD+pdQl_:{ C܆/ =tȡ\ L V1̃K=8|P=w\ pVMt"F@ Sƶ:/KοDP> 68(Q~8wKz?6 2KudtiG)~dS ֿ}8ȧH@&OfCxD n6i${p@gI&MY.f-.>(zƘGm~k seo|\q PDDz{/P~ڵeq(zXWm`1>O wo7hpNt= ?=oVP:rV^*Yj nq7{1Jx~&c\W#W̨뎱~d՚56dF-/qV9x[ q(.aQkZAн0P4ڿU')2fu *XB`#iF\t,/QB@` `-T8u\nBwxkhP[u2;adapJ x8]HtBld~~ݛKpvch]RY•kؔOMMbQ&_Kْ$.,C+ş0V#zJ 7}=/ JA T2f lxr>}L~޴nFRIJ6/5::` gcfT8Gsh7SGhR>X-ǿjzB^IT~w T+"rrP6OjU'5Ř)uߟ&}yz!J_ua 'M5%Qyw(!^d Pgi;(6"^>p l(sQ"MRZ5SVm*/|$hC`$ڻpg#|M8y?V܀:PA$G!5J\_j r'vݵ{AO |^[L=*[Bunb^IK= F@nXJa pHYs+)?IDATx]wUյ~>>N  t,^D`DDü$&ѐ%I%1o}ܹs ?{={}[*[Ѓf0'9 &a&a&a&a&a&a&a&a&a&a& N&5\D | |݃1 1~< ok|]SIvc7e0e0NZ5㿏&6^.\˼|݉6׼c{K|D/2=GO7e5.$* x`hwB,6$||ј?f_fPWW3SE*{PZA" a-,d6~Yx0U@|P1CI.zV`$5 T1} 4B6r &q ?B{º%ڍYK6ofRjW]]!IH!%C]|qf!x,= zGH$%6~<4I0ڔk8\I$sg_W@nd0ԷQMނܬDt [tn@ ,O;)tL& |`  LvP׳4o bCc ~?3UESh\G(GӸnPV5pzhk43 *d'/b")Ț ٕ]ME B^`S*0)E1icǬ\CaTy:Q=R,صx3)"ۤVV<42l04Uٯ|LnTzϲ1AHG!@ .g в_{:Y>QkY$[`:D*:e3^3յ-|ʊ5Y@CsxnhU節*_Rx~'P^y 1l}bK:^)L ?O\`(f0teM\JX%pǫ0~SBMtafݨ |~1,mc`0|E‮ACӍ.VQeJ7(2!!A~\@8c_JX"Ph:;8g*-I2FƟ!|V&z1J4u c唱^(g7>Ï1oʕPọa>:˔;| ƏXaE^0XT^(\QxM>;SPP|o\_ń@k.f+-۳bR5p$C͋߂T{3 2A=;O߇Ȅ*&0qNUkBx&"mVorE-9ОI`xcy=] pkhba$n[?}~4p܉40qY5  5x'XY|;1GL֫ E|PDBg:@sT(Зk5* eee`eG7 Waw#1DxH1_0&Q1TE,f͋Q͞Lbh6V&CAvaBWXyXÔh$He(3M]R̀ ٟ|E] `~C"eff&+-Ł\WCP0V.?4r=?ђ+ajW` tm|jPXu;bY;1Ye \Qx3 a>?@P!?J`5|bWcPT;|&"OeA>6v]5i\1JAD,&RUG:2ae˭RǮBkq#7]!-f|^M@.RAZEC b- wG z<*򛏘,؛Sڭ~g >|.2a 5Et ͉E/Sl ¼qa8ܣˑ4oWƫ`3F[elVV&z6wЋ)T_1<cک@ /ilDZ4p$6"V!">h>|R˩P~?OJM"9\ e|"Bb04k6 +ó~*;>!&*wM3Q!6,0] T-&pׯخ15gG0:6b&hcSEU'AcC#q9 #'0~cb<ψ_z8bf%JW.VPʧtH`:YX%Tpqv~1 <Ϗ̂܇u3lZ:%VC4b{I8UU|]e{Zl_FJ}H= Ve1F$2ߝhHCwƎ=oqdSaeb%l`6D 87k;f4l6apJ30; s֯}QDoM yM.XuYcNPCIV(Ռpp^a a|) -#ٻ"p*/O*[ *mZDUJc11>h},& b!%s7< v9#`@yl0σx]1V(N9 Jv fjy4Ve c,Eih_}+j,Fr 0Je%lW΂U!T)6WÈGb {UV0 >`~TX#L vCzvN!F/f|BaGzbq*<7N & s]鶠xg2 )Yπw)+Fe1Hw•\b! 6jI|x@Bdů@ʟG-`a*48u ȳbx"L^I!4jZ_' (jlsJ[ zF, Km\җFMpe| Lp: @MQD 0*Lt3URi$αǣ"OȫQfˆ;1n__5q{BiyU^.b)g4B 0^~^ئuFMgBa.BvX/}c{xԹ[TƟ?HψpfXusqZUhcXQg7Q F*~'GPGNy.2>HK?,/_ju\uC-KsB8ڃ6C| {NEϟ | 6&+Tyt SJgi3L^w4t*-({,Mwx|?AKK;@xDzypω 5YWLU~6}+?v y\T[> ǢDq@+MQJpEyJ}9ܽ/dldY䥧Yn*2PjtF h xMLwj@aFȕ~ت j}] S5~bk\$@ςl&,ٟgq$#tnI$wh_o%(K>aػ1De)~˞t^Q`0o",!`*N7*3 g1!i=mL~颔=_[FCzwjEB0ZI`M~p#G0kvblqoQeۚE:wdI@0P7A\/O |Z 5Wn*bO\ /X'!J_:6 簒&DiF0s|-PȂ`Ų1_Y-/ ȇLd؃!8Sr6b+}Y_ϧ%:Mjr{  ƀ _s[" G'L#|D<{ɲ5S`m0!OڬBCPGUk vi IGha(c7}vGe/x'Mw#| CM9-Bbg-T=~}$O|.QQxMm .@ ݥr#P̫x0,\A2f?N2A>mraKsx #ro!a!0TZ* .h.hnΓ+0* b"dE挀Up9`؀ ^GZ]6M`l܀฽<9<.M;n]yqVE=< {}G|\]3S>o}Th!VYj֦2R{RLC$@oQpt0SB ~uZ+C&0`) 9e K9\rrrF`x*0V Ttr;._ןՅ)tG_>,=g12BAi C.c萃l]$q^j[h  u@ =P3 r=cD ,HC|γv-ꤿ+ S98lp(00;B"" >3 _͊ EkMde2H H6`[^oG=:~J{\>:3d:Gj֡ *NBG83 /9houfF;(=jɚ\?N=$Y2-5ƫgOqCA5l]-s[bj=QU;.@ &`N.u=A\V %9d.01L xS2Nf 4w FpLo/PIjLۑM;)ZUlJYqooړn0]h'3A b q*VX-#lpte0FxdVƀaM/)7d-'-K=K. {5aT#XۗZg !@h%5VCE.:q?G.aL$-4'jq"- Qz Ќ,#&2RC0+̦?s=O6ŋK{q˽hw$` +"k^S0BI#QK6P Nu@@k2z%1PptC8Y;; `O_YOhMm,򠰃,T\F?0* Y/؄HY@Plh%rl~er]|i( Tb^vY5 YCh+umEla0K$Z j?Ϳ%Bz}\ :>XoW ݃I/X8 @X*7tU+@@uK )iu-.!gAEA*L.Y㣈3fW8E.wz&W~WՌi+;o] TGpcJJT'B@GCuI YylSt 0ddglU"<Ӈ{T‡ ~*6K1>|)n3N &*#v,&R( w4A0%̟㐏X+Je D:k͓JDkpJޘA~F'%vmɥQu۳O{9Apnҏb –ť*^34] xٶXjM qZHX 2=[inz&YD:shAo߶FԜ ;H qVG &` .7~ED]4/BOQQ@Hd}aoӦso#8hYCOe6tRC͠;@o9ˡP`̠h X5˰BI.Vv20&ugRSNCKV@̏+VQLPƇQiN]'S8[/x8ol8C}߫Ƅ\}̙F'ʚ͌CJF%D?'hXOLj(:z7i ith+?dAÝ٢|SO޾ꪑ+/ XذyRUI:9`$SFf>qD52URtZ-_0|B.ӆQQlz4߼DoTW߽+:$/0 .(CV}Yp52:𹕣1\z]l0~P#69 XV7&+'!^iͩcݫJ:廀2d˶4:UD$lKR/ ˜禑vQ؞~V{f)UwEx$TFfBwTB9kGp xJ}&Ѡbqr]k8?U;׃c,{phǻsh-nQ{ L=`MUEHW˞E!]+}tnDA~M9y5)"{6ؓOlB (2g>yi w~I9w7y9PgJ}\lz};jn{:?8ĺ+\ )D$,/2~+R7s{{~ ƔD/jJU9[իR T)Y7A[+3~xmgpkס/W~_;ySs.o&a&aN sL9L9L9L9L{?7ɾIENDB`pybik-3.0/data/ui/thumbnails/Brick-10x8x9.png0000644000175000017500000004117613137372637021100 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+B0IDATx}wUչ罊 ^)JM H^ vEF`EPĞ17cMnn5ϟ ` x'cG8jY =[[\3}')ǣƿ⁆!;ha9`5%yGZ^zTgOM `A0\Pa؅@˧>`ihp!8 a򼹛W#KGaA6\߉aPK9NӐ\tc^U7 U@r;~lxF7ſ4ռ^C Wsu{+9-vg Y0,3LڈfHj(wzƞkO npu~a1ot{QhE0h;˯x[9H.ι!_LC~KMBtIʏ5绠%ۣ#;sohugd3~9_Oq7B= ^BVH=WQ:Pc|5ӣqj"Ή㜋p.$jf˖+;S\ Շ2¨scw*=#ҐpLN8lr`ڂgUtt +Uf)e_߹nȂqWp=ء 3jra+\`yЯaF!6~#-ၿjqE>sFuhL,ku A7 {*rw{yak $5,\΀Ofd5=weI~&;5>l3;1^ w`)h?1 Ұq}_oR\O_O?mi^{_gL\Ovq^cL\FDwcS#kQ\ \LBo3WD}rkj܈m)7S9 -*c#ˎsy^[W} 2!^ן1ilƸ:^^@'a0&CLP[D'އ-@*np]k3iDa~L)fAC8o)~Ob>`}#[F cpjי+g\<2Dd> 7s1>!?.)>3= !IP/i͐^ vx0:1cu5gAnw$nƘrl:`aN64ciHH$N0AtBC TbD`2a$]q<`G@1.gB7Ƨ`r/9 ))v$l 4.kLůM`5;$7 Y3[7[ gVWp0óP-@aq E8,AN1 ZhT4)WƘj:PypLO/fDvH%i hxOW3\}0g] TNղ.*wE1i=Y AQC%~6(/ !~, iC0@g.gFߝAQƈ# p$eV+ gFTweq5< vVPN5'C&7{Kշu#n)]Q !g[#+Y<ãp i g22Bbxx㾻:4{t7>ɜ?W!{1zL:ڨ/=yf]BTyX4Za[ *zPb<ϫ&UclQwm8`=[j5KkG<8MTlߢ+IKk8]Vq{!~XR0b 5AHEGByLsfAPޣ'aq;AqWV* HF̑ [ޑN9K\E+Mu77L;JkkG̛i@u>hOaj?Tf1~c;\@(kMoC: (ުME1٤d+LGDgXG$oO7څJVz8z_)"HڠBz%v6s4h>LG}Cˢ`$D8n`@U*;c.{و~{Qv{hTCQo>'@^;j)=c\M)^=jɡ%ax#B$XqK.01 ^Uyy;Gg} X&-U vdFUR]snB ﯪ;,χXǗ X@yT8+uè>yx98MH'lja t3LkR?beFk'ho4$EW3*bBX y}>QZP/=P?/C.&ˌhx`0`p >8Wm)Q6DWw'@/t)pE?aWb Wϝ&|,]'FhyBa>COE$5g1!㡐!D%LcK}+YlX_6=~Xu>&0\h IuiRIW|n@u˃Jk( hcӸla}o&x^{94mrdDPTJկdotw{5Q`yOL8y*pR-"Fr/)(+>w,Q!յƯ>~ۇZ7 _wԲ)lQS|Zgm))"!W݀O)qs軩BXEn%H:X{b9`*mchfJg$_oj>&>'؄5nn< MLSD~_s␠ZUK%Rtw:6/4¯k=+kLNߦUX#^Ax<# T^S{N%cI~`RB8TnUcrgd3CdMa6VuOC]W6QR“-"E^&p^j괡AFZ93~T>e!+ތ懯b)HLߖ v4HA&.Wf~zvQvrmh\&~0YG  Vf<dz4]x=&!jP,"ڣb#ƅ0(Xekv<{O)Iw6_#ΝWPϾCz83r7E M#WN!>Wu%+~R Wu#% 7I4D)!:>}+L>AR6BF 'WB^fz1٬`))d_0g'RRx\ Pws k Vo[_U^86m0 }F\-Q;P2V4@w8 IB7 'ڙ΍M:#LAo-~n )=(BBA$"!C@r?L@0yG#"Do3 LAZ*& Jݫ;SnS]ΙQ{94x.CЧ*Pz8 u6J\j"W};gN5޶'!8sS3YLK7vwSc :!#x4%.'Gp4p*>5c. @=784>xyWф=ȗDŽp7U!5?|H?- gN +hq\mt(#9ߧVcO%τ-jLǝJIfY^0 s)vrXI˘No6x M&cw{0}@YIF9Mnײ`΋FTXtH 1f|ȯ^ I}D:wnL]"wԵ% ΞQ=:,S:lM^e%*9i}sL L*/:Zӑcv'{`*bijԗC{C *r5c Xg۹]xfӉvQ?7<>)+^397@NjhyT['%hj!jxH-3|va ,"slvx]T<֩'!W) j)=x\6ᓒzᅌkx_N&;ϥ ÕWIx=g:Ǟ3g]&>"=_䘛Oñ Dd9 #[s[rfCڄ7 HdĦ)."Px&;݃@bH̅.EwX,Ioe}XvQc\|wк2>5 ܥi hZI5]1$н'>)hVisT~)P]|x 70ʳHM*M:`lwq76:?t'AFw4 ڣ82Qo_TCzԐr&~U%_t:̘RovY!g)rİXͥz[Pv:*p+c\¿ BGܧ%=C`0|;ͨ}rSrvyou(T|n&2`ff,Br!``qh t*S͸> bZU~[%R|bջ_ 5yXPA2ӆեKb,>P̴OJ1}x聶>1x" +ϯ=U&[7UJm26]P]L/ۃiFxWJT~Oq(}GcO0k80}l%m6>3f05&@3HE' dx Ί5c^*Q!cO?+S`YX5+*B_Rh?i((_VX|XVR' Ps|r7#`MǃbyR%uz\:H\+1ӌ¤ۛ/]Qpoy&uO"Y` Y lRǧ 5IuI7-uR~27˗`""GHɠb C>u;Akg韵pV?j|DGhA ym&{3p(Xjv3A܇;c% }B#~Q,nwY:T=vN5.|"xP$֙Yx\ Ig I;ךyqcsZ(*}~=V^tWKHx0axBߕ}s7Y4+؋ ` ++L{M)b>gb!=?g6"l3wp}Y7S 8Ln jE=f q?=*8K>/-gʐ}gDc]w^B~QR} 5X{PVճh[}e6y6Y~M\ =0:uh$7r0%2A$A#v0s V2`PJ9|kQJ l_=ZIv>jqEd$qa3lhTtsa)7?C5ra|s'TqUOjELzՋ[usS"5.H~j66Ӥ|-4Nk $gP t,KTr9BN5q<2Ys n^EK:,}&kUF:xL6jfM7?^ތ[a͛jj,\s`;'$Kfhgtg*+/V}E%ja%;48C8?M8V2d.i0gUNccTl_bWI%m^ᜐս_sL͗k v[`7V'i zL$vZs|i#sr6‘>DQ*j@D'hKhjb.bMOHn1(nƪmdAWuiY 8T O0`{ MsU}ƥEY1+P"_89&GZǛO!M= F`Cȟ.A!q@tWD!ڄ H([ v`!X9BY+<9"C""u~V.-^z4el-Q!e_rI=Ν-oX/o];ܗ/fBh̩A} p9$߫ߜ&KTϓ u6/z?+~>1C=MәvLB !?7nT'f(Z?XAS8#&ZAlIRyTB nO{A*Q4^=*a]@90Et2!"4,3Pb _eqIW&\$(8tз-fjuM+hOJؐ b}~ M% LTlEhO!zlq0e BAzS RU';HyO|8 4&R`  ,oL2EP,8EL2." kkFJޟ&Kk)Ne3>k^V'4,+|LKդa!f?L] Ͼ߼\" 0M /IoDT +pK%NguG_ŜU8I$aӽƐTVBSm/ v]@tl:o0@ ] *pe2> KM@+ 3Pk犀bYLDg --+XɌwܞ'_*L@xŅys#"$*ֿ_}]C@9!a0?q*XV4V7Wc ,Il*ن.K=t PN9BE(K\\NWEFEdc ƚ/sd`G0! X#}?SZH} େ5sO4`%3죸f'.pv{yQu"  0ﴰ7~4‘*(.X j^t5[%^1 "f_)gt1u5cu&@$5 H,7 A{]ˈÚNcɗ-nB<4wZ/g&5 ނ?X[sUUO{PyՋ-~pȫʡ,u֤$yꎋujxH/ ,QwD/NUzSsz\n5 F+ȡxPtt*Ovb96K4+bH_ڵr%x;R=:`NnD %k||{wՂ_XE _S᳗˓ D`yT< |"bFT-Vdw;E |#(4rJn&RK]u{@D\Ǻ࿙3),I'xGb =k7oi70ЛCP 5lhvu@#i]^=F$ Xa`zL|l@Nv НXyZtӑ@4h a ~JfkT%ZR3O͔4,o  @Ǧy HV ,+QHȍ!½LcAUS`;}(U80t ژtV@4t&:+je %/xV5zԿ>~cjE{t=Y zUBm&W3;¿un+.Gھ84W@+_]8&a {uLJ:[+|"5&90z^0Z:x!]cW&- `n@DWJ34#j # 7r W6I. 2C8bz=}Kb4vQ W\#m+!?@ s9:Vy|@'oߏPpIc#Sɓ; *`Q4$U>E !KEe`i+/HR nmANASA8H(dqXff;źۇ{\@8Ȝ> Ί6j#tL&b~r {a=K8#_ kѓ1^liabls[gj;KH8XUIQB3ҡDU^E^L2- XD4M)̴Efvś;Ì3Yaa_×| HLseEazvS!p#o>y@n^GV=%3T#5zdf7H "gM9:/c&ilÆx4" WRߎb(M'ln'cwv)yH|(z;z-#RC|BؗO#J `I9yP$Rm[* k"2@Z/5.3b^ lT87,!g7q|5GP39$Ӳ H/v5 4:; ?01` 44}E~ng_e j ؑ@;đM#y)e\,iVb؄f BM]WGK x%p/Ko@=@~BCs(X2s t?kH2ܭMf/\ȿH8wNDzΖl yR>&X#xns&  w qzbVm(C~͌R484.ꤳ&i޾KbwKK gd W#48CCj=T ?PuS<: vS9v7 NZ(`lDiK⓽*HdpnH:pX}݄*d"yi'cױ$u4 fպܹQ *gZ۹hzГE/j.G&X F5|`c⻃P0ב".ʄMf(¶T8'V7TWv*RXdB F \޵dqZ$OפQ4J;T4v;H]/`Eok`l&{>Ux_Ύ6doZDʾƅ׏C;6K:YLY]S9-2铛T ~YvHH/4i4БRCu2mDܺ~B8cQ"d#Sv>|?,Zw?Y"@{XKԌ1!YlaS0Pi >x犺aΠܱ{cNVptVC']TjT-, ‡{ʴw]lr-$Uj"`2}RUll=R  @4Mg `Rߟ.Q?VzYK4]g'=Z?3[*Y?BN4f_JMrX0"#Ȇ>L6"Md25< DAӹf$\g4"J4Y=-siKzBgdMD#X!hMExPu@y*ҥ15_[w)_Vl0TX?N6'fЇX )qВNExaNJpit-)u+{%lbҼ%IAG\:'k1a)FptlYA+b2J۵nʸ+t}|i޷xov?E ;Cu BVRыࡁe"g{ @f_2n#b.4_ME]@Tr]J]0OC4$G‘ I.>;LEqkVt)l 3 ][=t}d$4; _&8R0gm=sGD8X'H$k9~i$ڹuo=pNs ӈ%I4[cf C[ *v˹T&-gBĐS|M .Vy9QEq#.}׏bQ>{[ 0u}ţäWǎ.b bSt"j87ALrsIi3Ҕ"*8 șm.4-&Rn\P.1ViBA#å'X&:To GArfc'6ws%a4wm=?d_MF5O={v4w!96/+Lo&b(>6@i$c!0PRWeGT$ V袷73Z6ī!20ni?_,{uUMs7P{#eCq#AdE= ׶]Ƽ ɢvl-Z:I$# N3QĕF,u02norT{XL,9w/T@UX\="(vo8*nR GuƓb"D\Y}0g_¥A f{%3'3}>]- uZ6FйDfC<go+s$ίwIO??"pac^A<$Юm`;QUVZ`Il+3]}M/iTm08c߻1v?]Lk"ޥ'Ͳ.K[`?7x`+|Ӈ+4q8"XCd46N`l)Uͦ䰦ChLL>yTQX?"P#bBД!Q>fױRO r ?jpCƎ49P{9}o_oK0CO((dX0- :xR[R4FK!?3D̶ /_:W峟l`R;D`n§~l4L8h =Yܧ^8ĔE2Uč#JT?0I$\cN= $]i< la2",$x7KJoN჻@|> rKX2þ+g{'fl`fl)d%PM%4i& a=wx.M.17:ŗ#]DW}U5Oڼ5/=;YQ{h@(wU3IENDB`pybik-3.0/data/ui/thumbnails/Prism5M-1x3.png0000644000175000017500000000763013137372676020774 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+JIDATx{XUϭM2schfjYFjPEBS{ZZ,4JAQJ 7013`|?}s{XjH7C C H $D@"H $D@"H ]S2\nHf( s 3XRȴ09{|fvƆ|tU7/bd&frfV*dYXDYK$P(Ra@RX sn3`#?Ϧ~~~ `J"@xl,(Z@ @nԭeQf!4^ ΡV0 !m=; /M0H t(هrBCC!((7'P*<2Ӌk`E΢ 00x /KJOq?Z K"&sbI6r _Y|f:F4M7L|cI!w g"lT˗AXL SCxx80  tk1]TQnX@ p5O1\\'E9{EV在/<"Z41r%w@)3]3Y1ח=&@@98Ho F񂦌 TPCB֞jQpA;x HyXgS Xf3#0ߕk75-Loh#5;BPϵ&C@HNN}r{F),R?*?Ƹ4^ЈDhE hw&nw9J')z^43c[w|qON.:T 攖HGG[Vc=7u*]J2KA*4{>mo!$NJ2>&>17 ? ~$1QM7 NgM&o1@y@Hpm,+zp˦NE՝6u鴁"GƯ}9. Sv=4W</0']VpWx >='-s1 [^ܢ:7^ aV3?ΤVUkD*֖ӧY |)f$'}*;@s{mYx(bƯ] kNzCfzzQ( nNܼüj' < ў N:}Ra K <X !TF#wO2f4L/~9WG[?%mhz t:,*ֆPQڄ]0t4{0}J@㿳gz(֟?a1B(Oo(? ygjaҶ7xPcH sJ>vwѰue8OmZ8cbbkc- C`Cr:蓶01,`am5LX*QkjZ9:4/U쪣`d9"$|C. G m7juC-ԷTQ= X#`DHz>jA7>͢<qRxei\54ZjIcD}uXpX;ef+tZn4h(Nu LÂ| u0,Ջ&Sq)4 U[m8KCr!oh4B DFHׯh4>ړ`PxA)];@ϘRVOII dN S{p+sAAF>;|G`Zn^`|_=}[*D}gh{rOg͝0ŢLv:8s@ӄҪ}n"vY.9 5+.j/\<,)WY@jVy@)X:%`QseKye y=3Ycz^> qN:SAޙ.t QutS/Cg̴a "GU/0~mp/ՂLt w _Jӷo}`w!0i>-n{vr9D. =a=VBu—j>#CإT V)+qz9NgDM8oן2l";ާWC uq! \( {:2;3|^2``{v P5@԰h3Xnm}}C=pܿa=RgS^0A%9vpښB"B_JG4 [c(v`}`9niBb1 +ڊP-)G; }ム Rn~Р|om´*ׄs  L^-[0c ?'.y©?6ھ xM옢@e=4vrt6m"4o߿? Sd0ScK=ԪtqwX;ε. eU! !n1)%G; ixC赯M`T@5maxfyvCGy\\X/4xb.TY|)`S{=xw k l`A7r0E ¦gCO}Nk?8S} [kp+c]BpGE f|9N GO('b;՞ 2E6NٱctI|, .#X`_`-3A&u! ܿUh>9@@gBENY K6<3+8 AuQ,+b,J{|1䜬r @C^DvH0q!0\x$|W ֟آFx`gh3*(Z9wثn *^Ps 1#.Ta1 Km3f|P]wq]h|sz1)BcCy1Ohlml9@ovGv!vtCw75mTzsC4l{1 V}pp52z "`xqn 'iJe#2oJoZڂp @"H>>D@"H $D@"H $m3:g=IENDB`pybik-3.0/data/ui/thumbnails/Prism5M-5x6.png0000644000175000017500000004446313137372705021001 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+HIDATx}w|UU8*ͽ)7 Jz" A"AE Ո"2(XGfƙqfgY{sϹ0{ Qc s{=kgX?qw$qw]wpwqw]T!}y̯iKg>jhd(T#S{@]]NI~q8oI5qQKm{K{ac#V+6G[N5vl]/^Ne%1Ѣ7Z|>!b].Ell,T/E01QSRDnBIDyX HVC|PF> :SHv! ~ :kfkI>p & *EqXtU:_|3^gLaAUi"1ٹR(#I8M>Fci]M|}YX-lA|@D9"HtE<bBlbE5:,$!?9 2>QvX"l4&Rl@ pĈ[4p:D3{({чF w6&vl{"M dc%Ayb Z Ѐ?p}OA5f> PAOHj0w=쇋m61!sb'Rt;< cCblz,De5pF;[9!NyEȍ d֡u~ `HOOgad|(Qq.ZF֐&F|IX$4 aOP\>ot85  ( Ua׌g`Ѱ(=10 m$DB$Chw(iN";.E1d$`2񹙙|ϞT1N<-~Of>@}ZnhJ!"j( !]I# %<-@51Pu!}7nPmi"(a^i15k4rzh JUZXF3zƪgȦ{wءmD&biIdz 3RX# h3REm_!(>N4$բgʑu;vJ;7o -Y6qqqKrI!Mk鴉u%d!WKZ(bSo6 , S&0$+LrtawR4X8>x ƝrwL/m0I:4y"YA.>m ?&ߞNfaW 1]C:xb>6љdˈd 'f?<;C MOIyds[$Ū0@KJJbӎeeex*á&:M==K=@wԛ t(:n߱~Zn %q  EwDI+́~&+R1&-=maMVegL: |*n~+g}"B9Yf.cSмt_!$חEg(p*g\!2dk`ڵ%'' }D0х.*(&mkMOi#)d^I4`WoIR^C?, , B>\qo"~'Myv?dmbtHiwѤ'֐gLbª=а45huu I9y"}i{a8"D7gLDsKtyE|hH`Q QP&egsn at~G4p a)ͥ~7Z7!u\F.'!`PO '\Y5U dN |FX?vVo/35թvJ pL fS^bY =]bcQ-zu"69A16'C'V%~g.q0 T>& @ȧ%O[G  #$`J?אTm ?xB3"4H\m{}gjp`h*}6MdIir SNW~<3U0U5h9m H=7,#zೇÞ QKl}VHI‰<=BjU˒V& H Udu>S&sJ*4O$0v]8LrgxF%H;#É05WAD@-Lߩ]WVpۄRgؽyI`^0'MeJ4!"bsA4OMBy%BVN#9J)ƄYVwN \dAzIqN . aCJTCkFkUFn%|=V,A}ʤkW$Ws< )N %Xoa%5( "cX #akɁY@jׯ|&CnPL:"UyBЩU\Ť |oMYMAnK8"RYF9_IQzou߶Q \Ru-lh7aWtF40&*Vڍ |l\3eacXy ?Mt/ *t\2$RHp \d}|ʢTY+׸caw2ppp-!OBI9tiwmCNabTT[oH+GEq(VamGvk5BnVp"!,Xr}Uwr@ +h)ڄ$1~Xmnӕ#"2l E FI$(PIC4`B n HCC NQf_"C! ӄϜIp<]r/=!5 p7a 9zUo_TX|y IwQs_L EjGJ `/Y M`aSIS&4A/\4i!H BGV E mqI+D>, 9`/]0?e/ǯ .p~aCʫ 4P Bpo0{\jbh7%t-4*M!ZY46#=>q4aЖ8 sǡcuT n'|tۃܧ4%Db=7q6 Pk4m@@AK^NpU Gߐ HY; %h !Ү~&KPý0GC{,@B YӝWېw!lC_;"s+(0TX;E@&vEi9VBhjd >B1' >"Bau52bdYԲ4+H[-uYT93M7 S/ xtoVQ 5"`8t1S]37k`_GtS\0w-DP0?-uZit!ptWWjגO+=XPuzN7V҃# R:A=L~=_Y @X&c~#/bB; w A=Cu + bBN"Mx+.$p=L<"`1 4$s܄C 1_W 1FKtq. 拘`xL·a>$zBHxiQZCqDZPhH|.FkpO״EL#| γK!p^L43{ny]=7L`N&Yd+!S)r3QV)o{a "0h|)krcU {l(&(;{Fu aa6Wn 6DOH-nҬR@;,~O n3 /saATZaGmB7t~m6@ϱP(JM zKIV10w&=GА_jkp˼ZFLQ|a5_x8!_%Yդnmrp`Oe p#L+iXT&,Bq#f_ttDAB: H0%{:`4nD{aQP t]"embH",$?إe֦E%lhzS50Hx!2@Ta1VÇ{I 8&&\~ Ӹ^Q &|4!cT0=la:s#+E>bg/117Oh{Mbl(ڪ[XZM@EJ`bdӳU F#a 먋Lu%Y=ewLٳ{䷯0tGEm[x2lYP]?$% #7^u?yƤ&ukVD榒)~Nq: g whC%H<>Ps _Էɨ`Ŋ|d 2c)}Zz̨Zل7 Ϙh{y[/%>NϺ~Gp/_Ϝ|"FzVo@5EV6FHk~7n"}MF2$@ RyگVB榓Gڤ{8c:&H_uR=gf1|h(0zF2}6ߵT(B-G0&衳p%*rusby. Cس;/)˕"&9I,#W.>;`q ׋t=y0i  2gF>Uuʠ!is8 0ɨ>% zPG+⨗e0GGepvqtSYm( .rk'Ҳ"CET1,Zw:EÊΩdCwbw"0B+"iQRb`̅s<ѵzǮ%_~9b@4$;r/&VăEV=`I4 :e*|RXh^(R#В P-Sd7' .I̡zE&NNߗL2&Z[:8%2qFAn; UAUc=9+F|^WoۻA|ƙw 2ӱ'&]}>Ÿ.۷3cTUVt\HU`|s& ! hL?MOޜHKC\=dJ-a=B=h?::dqdCv|yep \ ,N!|`J{o1Wo^C,#搦C9^?24tI.'~d"[؋BK +lL6)2Rƍc/g eR؅E(%̶#q?]ɼF٥oDa"I#bLV!ƒ I[9 {5S@XU"d0#761NX ΃&L;r:?~9R.1\7k.!4:A(@f^^eNmeZ`p<s*D$c = *3t5V`>YTp] 3_mp,L:&>, {} ~IiV1"T`%h,B6&=b4&9'(n9Yf2b8ѣ>Ƴb߽@&AVD6Ϧ2I!\t =CL,CZCe8Paa0jgM C:|qLRwz4Y|Y|篧ZЫ|olIF`(ӏ{6"M=!/nX6@G>i䑹|.d_\'P>dpHd$D6rY1DuMTsO}Gڞl$ faṪ-cȝ gx߂ozr}LwB)*ǀ/ZL}Z6bNiqz;sff]890K'^ F7h2a< {K/3|s8D$WO"rED$FkH@ Cxm2R\y_ۋ6N:?.A--BY$QJڨ+v~1[^15 }g"]Ct.XǒܕFWٳQ \%`#U"!~7^[6d5:DLvݮî_&i$s]}y$We( 33ѓgv q %⨀@}ڹ |I,ѼCdI Y"3%Rd/CgCFY'y>z!I]G4o;X] fM׹ `"ZC5v2fk!&gvl0HBxq'zu/s;@"7^,Y\JBoG\gf^kdPa銇bħi,Xhu>MDFk1i?Iͭi||P\|?,3aD9w*o$27@CN5k*pdY3~` X"f7^gܨ!nL4aܣFRoGZ`fMLJ*!-uҦy7ycbdS-]v􁝬dy]OG7ƋeO1!e-SO@*Oz}W8n_#Ç2!Ya—.r۷J#UVIb4 36&AӹkJϞEYOdז4toqEqLb 1 3y%~'0GEqxhvxm8 =B2y,߷Bi9ZT|> l Q$ue,Zkkϯ)|i =F|'WdzƑ $ l2.AKI.HWO*Tn_7 Et, HkqϢ s |]DұЛLhkKoQ^#㟑:Gw#BxX9h?sӣxU6U*BIc@L)U9I 'T*Y`1)sQ uCJcVj&cL#Nb穵 Del]ܑ0z?fM9|I,>(Tn8P_=h9%NqxƊENcI+-&&f^ó|a .=kA Pru Eԭc}FoRЈ4&~ws".5'+~=~l ߻[."pgZF8޺HiH# DЮM)4`aX N͆I i{8"k2|C?B]=?7yEr!hġr=jeP+d.^irg5[eSbT]<_q*!U(E DhIeBޜ*_w!̦pqǖ _z)dpp5 h.H  OK |3܇D"@M 7]s􉒤͔Gzŀ^"G5;>NlX&Q ߽:\I:׫j\?J9NkŃŃJ^&>9)!]C .FD#CUb{%}~BykX`gR[;d"END;9vFdj,{Neu$4KVE (w#W ͒EqA&gK3iJ" g?,VBڗ!b9C I G|l-޼vT(1܀ B1i]x_|3eAg2ߨc*1ˍSRSZNPv#DDJJ2Slzvdyu@!xA? T "TH xi'!^PQDCik5:<'ŀ{#\77d JS4Jː%`]%:pntuB OI` א~^Z5v5CɡSWV?7T6q~3J`LZg4tgp hԑ5abȿg CdtY!$a#߀(@/lU4_NfJsDޮ*:H?ՕӏG'Xa3*6wO%3gc}N.M*QHTbtos |fZ#(|xSE9|@m[&Z[89?=\](`.`&{3$4ء Ux@qrwPd\n6mS&9_,"tD": "sg>j A>uZ 4o@qOg9!2GuSa]S':=q#'M0E;9]| <$٪R릒 z@e 5:F+xHE$@L:ywF\7xNO xhzU@$z 2#'eB $F2t j InP }+ |$[ +4tg,p.N>oD^(]J$@L F: 8;v x38)t}!LA ?f CbA5'@L V@od1>OYb KY>'Bg;$![ 830r3" 3ǿ #zo, {Ll:r֌2%ƻdѷ[bmbF_;h@ъ_<>39"ɕ]Aޣ aǏ1]PA*"M(Ruˆ@8 & Re)4@D3Za )-)I[':4wsVPV574w:9vdoN'[ʸtӢ[V1^ٖBdP\߉ohf'oY]C&. /kpk7Z:sApKqЋKHhch[ڗ7 u4J"q\,4ѵU@ Ѐp1I48eZWQ-Rɷ]\s:.G֠pHv)Pwf`*iug3d̍8/\=4fn^kD p+8; }x= By=8vtG? *6Nj% 1?-ǻSn+d)DsHbqO`+4И;1uu,rca(|-+ňy1K+eĠLٻ 6R:` ׭aNPCx@ MUuљ q@˹%&V1ݫ__?v W6/-hN$қ$_LnWy(߁=,dCt_n ,\ 6s z21Ӡ)s@j lO4D@{|:6Sf\b )أ0A k eYׯ$y>60E3&_$X!w9EVPARX {jidu9U-e\"H^{^I0Li%ڬv\A?7iG706"" 6Kf՜^Y׺Ч7y+^%0KbEI#LUD¾(drkǘv<7g{OT# IVRi*wnG%@WN /Agl]\us zc'&Dq}Pt`2ϭwh8A'7G ~vv֑$YDRnCs!h]I]ܥD;jn' &LF04qG~Kn@wU/v-FJڲ[ udc|,-.667Sڅ|~P[O$ToPXp*aQE lL9Y܌h/0|}%BXG %\irhKM-g7>##!<(~͚ C)FO`\EgnPhСŸ _ۿp>*#$yb)@%ެ_ >R4eGy^Cvxh!ly8~'"\Dq܆mM+ Tߗɡ79Lt,>Nƍ̶mD]ch3/C%'yB(sx Q8yQOK,᷒m\bG04ŋ[L#FW%[>0xZ Sc="'{ Q:o÷'pPεe\$wʾWQ(a#dBǪbF%e ja- MX p#XZ9Dbjyͧ$V͏߼Z y.AiclDP3zlKʝZ:Eik'mc`04p,ExŬ,&( KV˖LޤBb!]dy791W kF?E/.*XS)X=‡-_KThJ>t^EI ܞm.\(k'`q'xAe^+AbH"K_L|KpB>rD%xZƱPWDÑ#nXٕW "Ԍ7>O0zyGЭ{L @\6jW[8ŚY1y`i rN}%.]S}?֠t䊠BW !<{]FyVk+k` w|#P фU Rd,P^mvqY|)mi*0}3ɟ0y } Hx ݻ=G( \&ZG37@Iј1Ķx(Sh)WƩ+ƀYKq~mMJݺǦ liwBHIY]ZzL?Cx7}S'Y9Ta&!^@HOú??Dxhw"Ɖ=Ϗ.][Gp 4<Ndtr~\.:2Hj@>⷗*~D].Fc޴W$,4_l3v\h#c7mЀQ;9-v,CZ-82pߩ,?2ў ebolĂnYX"r} -( J" "2w5B;lEbM,PWĥQ)ќG}xP$]H55l>uTd)lsee.8-rTU e>}M{|8Sb=~wR@h6K4;F 1L9D"jXY{I)|KjwZ{bVm7V~)=/av4I<:~_&{=l t> YCWzG_pspbYPCD*Cǰba*kHnjX<]i˻ܙCb%ALPl^ e->/Z N@pr{>L}0 fnܰv(7'taߡ@@xcbDSdj/ޛ܀5qԣgY#B "#Ԥ(2:DY8-+\  cP\Wm_m`phwtJ\M-O8۶2bżM3==. jWoB@ ^h|fG,/_^o:3mƲoߓ=~X0ed;i`… "(W2QΘ;^ژj|l[ހس&No!5e!jnbh -m#{zj7Z_4GsR Ҡ@w|e BXnؼQ跚u+_mYc[4U}ՉkjfE{To܀NJs mb O#:QO(xy?uKW.u2{aLYU{ꚲ )90gs`3NBY VlW~dVZ=g/%;gO IENDB`pybik-3.0/data/ui/thumbnails/Brick-7x7x7.png0000644000175000017500000004237313137372571021020 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+DIDATx}wTϟQ{}Ko*;A c, AQQ(* ǎ5&~$}9{ܙ4A~ٹsgyss?.~>~7g8~~IM;!V;N)wŢzg:l1`O:O\NFȷ'õdBS8PZZݏ*i 3y 0dvZ a{y{C; ΰJaP$:UsFkb J^A͓L_Ki7]NvEϥUX?]B e3D2A&VO2y¹59 O`Ѻ >OnJp|钀9q:C=#<+gO##C7>;?Hj3{O`2yBzKypfpO0?b;Vr]MoR"\|DJ y]F=e-(LnQEs|txiEIO 2y¨z7Wk63v=b0h=hϥ C)oW!5Q ";^P5 -Ye!(dO 7u& $+{!/bE^Ay&RйVng63;L[Fz0>>OT5׀&虍 D5*7As"l4nW77U]j5"T;/ч@dz%Tp-th g%3CaϙUJ׺Oy${b|ߐ៱v08ƻd^byjwVBM "#9.:ڥwHdßT nfoP ^f2~IX,{<.-5yV0~4Vy).@gYƍSc*5B8byK h8 3JKPOJ 6!!@I9]qmzK[ntq]] GLW?Wz~賊E5ozrKPMu%TQHjHO5Vq3.cT>7(Rgx&`Ab2D yJEeDքp4qSn!nka"z +ѫ%pA-  ,)P:K@;Ld)o {sD0w û%DSIae݇a&A?#b#@Zɻ1 3[ F 6H=T*0K?>s!+H`>oy/Z={|Ϙgj(-#YLƷ?@;?7^W;tS$J497w\C0BzkBs"/"l]f{Tzw p6~p3sţ<:% Pwp/ϘC{E۞1>5!?輫s& pwؕ+;)7/=J.RTĶ E:1 R 8Ӕ(t p=N6 @N0V.]n5)."Q`=D]l*V!\,RR4yyȊFS+f0'g)"|Jcwj_?.˿R΅@dUG|"ag)-` /1n-Nwof)]|Mo*1~ӏ'9o?MptV8Ȭoxڙ  Cqγa1ӠObhAgyd?eExsKB|RsjkDɕd{~ LkyC{:ȱr*:Sk9c-Y@3VV[[boOlΏcI㧬`,1a([:}+ߒ@|K-; MtQF@u]<~{T_/T#6Ճ-#$"GۨV&VYV8Q1BnVz_0 ؟>c%ȟr2=Y<@- =Cr+x>!*چ[J xQ] "L{>H+t!ޯd9!GN1ժO`(wJT`I7I74Lh !_{T`2ϧ[J*k Ĭ H3{S=-Jߞp+6Ga5竸z7xJ#C{8^1Vf)U/ח[Ptd(|wQƇڶ3…0|ҍ'(\ U)TF |4uCdpu.&^v1o pVހӌWI! hr!"GxMgQj.=]k}G@A ``͛ -_fas6^QHz_J+4- +5sq:"g &ٞ :].t#( ?OyvqF4¡" :RD*_MyB֪ )[[eYhAMyRy X0evIF2C5"$ єNeP !!))S `ŲKt\Ś,:Aq,&qݞVH3"ೋd7tVj2I7gΨk:C4 ed4xz2!C5իU38^,U(T[T{siEtE`pχЍ@kŜƥNFD I9t3_ 8tompC]T 8O2´jժ];ӹY4T[ULGށb:*^!EEȯޮ`|F}MtiS_(Ưg@h"#xE |zZ־'FRuH(X߃|`@Wjp(SF 1>BOe|pTHbbDX5ilQ`GRF[Sc/w|~_1ݳz"F1v- fX?iGvѦT:~!mB؀C7Кn.utYo!ϲBﻼՋtkBFgU }vUv␍w{s:bC8#Fʇ.'\ͥp/1EN!.UçžnyU\'4]4W(M  0|[;(=|jnpaP(FnhϩIcs 8T]ϘE/A,*RcJtmi1xAS {nx8x51Bt BV5 c$#fAT[_a=ڹ 5xpne M sR%fU7o3Sˈ~5.`cƹkp.\AƩO8,:QUL:'@ޚYPB0Scr/#H @:KoMḎ]xk^wcp+,NMcpwCxWoJ^AZ랒xH1v q+wMDL`(a&Yݑzײx8Pq,Qu3soL *5vQuωY NGؚy  "8} 9 Ҥ#*p1U1JV=NC?A/2J3=q>Խ\N?xHSCթߞ}e[ZۀߌpQ54&-|GT#$_Zzi^`o|GLL1o}=7DS4*9KV[x)]wH4P/%p^ ʱ[)"+]t,T% V̻VX12rXb~'29ATˍtz p 9UD0>]`))_FKoy =*ʫdo8Qi^ @fYX5Fh8]f"xȸuMӔ0J˒tk-SeV!Jù^d\4/ޣSFyɺ'DVvQ[O$ĻFo8,l:>< TL lK|a epC}5!7Y7ztrj+'h9F'˘, w> Em`;a I < =%}B|:& M+bT~]}MHL[ao CH^v8- 03 c (嚙'ȗl|c5zPUs\9|r';~mv!godz^PX1$Y>Z'qt3̈́*߭<+rO6#Eb邐t߫KkxW|G3<?8;p8*d <"Z*W澊/deG@0R;rSƀtsd\cTj3 qD`@0ˆ7# `h~H@aMuU>BX$̤2߫y;sukyN#֯OF64178FSH`hN!6Mɩ_@m S>*M\]XFN*mҋpﲧޡE&)䴜{m86'qߍ)u4#^xHI,!%>]9ЩWd/8#Kr4l`dnx{=WcŦ^{EvXZxHS2~#\`o*/ ]u9u cJhw#TrJ-t08FԺDk"Fo LeMu=\ ѫRGM|z{߾2"BX@;tpK64/wtzьb@Y?\?騧rDG':NN^^YIK7G('CftE6@ BSI`d *"pCYFH^PRmI+[DfH/ M0tT= J5!UƇ aQ8ǡ8m]\][,! /|6p,Ry4Tx0}Aa1{J>7/ ^ܘx#G[sV)2e H1u g3C࿬i&CLXlK`N @_j}Y8a*V>NgoJ+O`@Xj?HƏ߾]y%ӽ+tѮӺo߭i2{51a`#ܳ$">ϸ #!;;@E\yRqiE[h&W/WMץv(BFIM~e|p;so*$aqJ#w+-Dku YQF<.J 쉴"A2eaN'-G^ ڱ-d~btrՉN?GiTG+^Vp q 7]spQѨ+ k$gR$ H]Nn݂TO;w!qa1R>߿_)-GD߈?-.%pŲ?Y~Dc7bjQj#5"3t[q|rϭB.Ԝ F.2x?l/̔r_ȍk_Ela@T1߱-(`(D@M#GXNOYJP}9k`a~ *] x1g}sRxck8*DqQ(#!]U=t@q=|!9k 0EqXۙHlCD1G6PW@ëUj3 *s1V#w-q~v6q*׍V~s!Ňom/WDEyB|CGe8PA| ObP9ZVɘE (t^宎r WQ"1A1h[|'\7csPGFuxg~usOTH5`:q$ruOKyUg3GmWL|7J_{C5b(ܺ~؆PD`& } 8V9{ʙIف=~/KL fz\<>[iU`u̾X1{oatT㪤M2qlEO8ٖW%a5)-߿| !u&reS|⃧5 X8wGNc*9ubȃaBr1n>L!,!gYCĜ # aQT*GF mc0TouqY)C#(aH1>6g8qMɮr?)k sճ)VHP6}`կmX\2»5: 3(H3.W w(֟!xOSҖH'}$bN!Yq z{B`j0Z$3XJ76BX^%oX8+!XƖ>@r̋lׅ\h#q0#p0qg&bfYΖr.Q$Egot3^]2/RBY2D:/g31@cl'?vpkèKJe6ﲄs:;ėoT_O ?t !ރfN#$KE,5(b玫B_Dtw2_ &[R|?SZ!>(~߽lz]7HB(z籕Ð( _%c3 "b ӽ+.'/ݿ/1kh5+NUIϯ68mC 䁐C&AS<Ӌri^+ -%=0zyԬaNL'w1( 3D4 DW)! |I&W*)RtL pK,~DLAz< C"}[|CҐvnS \0ݵx) W PCRlOuAAcfi=x(\m4Q>,=%ZCL!7txDo9O1ZG`Oxf+Iߚ*;~+'Ex,6Q.b91+T.0\c 0s}Mlx&B-gY*`3CQpwָWq@tTFa D#,bѵ-c NP*g`JIp ` Azǜ ܩ.VLY[K/ ̢24+뛋 c(!P)FY + Fш3EYFN2lƟ u s /t(ՊN/ϕ!MctFB@YnT9:*aߨ\ͥ+;"yhyaP$(D=;9$Gؽ7vouXPfTPdh@(uyɪ,&WT bRuTs`Y9\8x nl!D(g3"ٳxFh*Ef!KdyAn+篔-d4xecw+ͮΎb_\U>Z#w:+K#OPx :P1c(bF({ QPOì^Ġ\[R%W+3agh'RP P49 G,!=H@pPJ7mY9v1۷+Gǧϗ"_ d/[0wAvpu!QJ)]]K0V1DeàYT|F$W:c`b )V})V2B := #=VRv0Zhz3s'm,uRn[>Z{lqZw{i.n]˒)!jylƎ^bPVC$axh1\О y7/^j4Qi,Kc.@n*|8'W*hjgTKĚH)Y#eOA ` `!{qǒ]:1!O(>*},'p;m=w*cN~0Oskv Xj=k(R%XRx\|N ¬|P<Ϝ';x+Qy0٢t`< JkHY4"m_/U?>Szܱ^^@A Jj 9x!L4L, &"/å z*nFQ\kq~ΌYq͜2B >ɭr* Ѳ6VnЉĂوw<0Hial#kO9C bW(XN ʷ_[S,'w*˦d=P5Zp (/'@A|8I[8΄.ݮ#5p?Kh;j LIAw@ {r 318G7"S{6TK8[7 r)4?)*'(9?2#yF/Q;#HR8$AZ۞mk}HTЛLΑqCpc,NTj`̅# j& 但^VaDdj5Fx)̚B!緗VIxo!/0c1?^@㇋<ׯaV=ݮ*J ^~$9vjf pV lˁc`XRw^(1hD*i4\vKYDJ ]@UvK7CLwlzR3 ]~.Vwiy c Cآ@̔ &PL¨͒p pJ@j?V P|CճUѽ؄GyTD py9.ېU /W70g-) 49PZ/ pb a_xHuFw]I= CJXSP]fm_d$gp;%_ջOL$nnJ)zgi[(N`o?`~$,@<@}zS^BJrВjf.(6 f@/)>Hs xd۳C-a`hGB'*%>CNA 2v=+ fNi a_|,|C! |msV75MDe(6`˞RE,-→=H7nno(2\]h)J7Pc>5v~tmP2Ej]zo[5={)Ts V K%]c\N1b"0E&;8% KM+Ĺg8?oȕ]<1viDtimonMr 60"J}AZ7} hyc;hbKv߉I#;[ْ}Yb7A-/FKz#4plHcu@JRv({ rM&fn6RAzѳ`(0>w(}>>cg(r 4rb'/Cxwf}l5V|t3i?kO<׎aF=70r{Xpx:0\0KWpkr6 HUSdtyFe붞Z0B,9Ѱp& ASo/w+1pj̶;c&^C5*紒1K(ZD@_(}; s K)!"L)_zĬK9"> ;>3H1UvPIZqGQأ@yt$3y"IK.h._ܔH_$sq U>x3jxd0&P許&*A@$oAVzZA6/\T\#S2K)Mm\{;,`{C |9Y49I<]P;{:#'?^y؉,3p0A^9Pz.o+w. W.GTQop7+/ ?*wk0;}al[^(3KqK'Xc : <+eu#61ws:q`18G5wP8( RJ4id ⽐Na_Cʴ*xKE.rq\4/KMqEE;Foސ9cDyS (#B,V#N9D pZva2L*E۷$y^å|kɢQK܈R_啳4i0p@yVRe\׮-Y}zL\qP[a]bP{iE9 :_<6~4<`G(ĕ1SP++HԱ#b[Ymibf jm)C(<-GKBܳo`lP1:lj5C=UN{{]%+XNCn>~ }O! ?"pQh cGX=cn@` f|^T-A^trtKs+`l@#dʇxߍkyt/eez´CEAEdKEG.1^~1)ݿ!uOس;[ǾX2aG 礂 V3Ne2n2`; *ٲ:ڄ+A/X[ϧX; Ŧ* ZjH_T-ln6'ɜubG7auanE7"1cWt] 6V~Z8nrbY]L ιuNpG Rb!*jUݤh?\\ު_v DA{ ,@U9.EsR`Z1ɯ͖J b4s(;A|O;npDLTŷttȗ(m܃?olB8f>'*{lU%}|e0>!VprNP6B?7y|' z WXpAAcc R#IORŖ)eMͨ}ap9r GBTW ac䧗 .&fSS>^s_*aQ0|{Ʈx nr\`]wYF M2M%d|:pРCؽr@Ү ʼY҉u.ރ(W˙0`,u-5mP+C# Lq߫j ,1dvYOWr\T\OV1<ɹÅݜ<!!lQv_lVAV;;ε11R1pC'?!KZ8}YjT;zj buNPi3;}ѣɅ~7t-`J h}}d' p 0N(~kgiOQSn5X3qUMUeUPy'Lay@fНku3vePh@a #vAY$61u!TВ3 ܒ>/~e}+"ɢQ@韽EC`\VEy8|kC >'4Y]w27*wa}S.a=o17pJĄػuz$⩞Pg;y>zŌ|Hß  ugf_pvƂPOJEw&@ 6:B s@Kܧ>UbƖ =xvACxv~wh@x⥱0L)>ַ@Z2`* UQ<ϝ6tXPG6wQ~E.4H!;0^ cҹ}UhuU< R8CU@/+.)7oV0D:Ѱ#gd!F 9?2Y4VN#ʕbx(&wr cj؁5~(|Pqn}eˉh@% @x8{ q b=Fzyr.e<]O@Yζ @К'p4hz!]7/(^}r_~2H!0mHh>, b*&Rx}S%- ' Լ`=ƑIn2YED$x4i <˶`Ӽ\hZY4|d?yXp}.;|C`lz°`a' IENDB`pybik-3.0/data/ui/thumbnails/Brick-8x2x5.png0000644000175000017500000001646713137372573021021 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+IDATx]iՙ }}oVilEvMMevi kԈ".AlE@F'$N?Id29Eu-L@ 4t}u{{;w>wL\a&L & L00a` & L00a` & L00a` & L00aЩ -IQaxɎ.ub8;? by &mQ~뇞#HGu~7 ̪Ź IOJWO߷//<`0mWs$m]buh\$%%UwwQyHSOyl/)b(-K EعesHHd(zW +x_؄16 C-/5f&yS GX(E`K\Kǒ`x`x`  ]FRAozcC-Wl$ײD|a_E3D { o %Lԡudžmڎ3H-i^|㑸0ɉ+qbG$KSco7y <$+m[mnǒN[{l x,'(BGӉ 7hT ] gM/u7LW8+j ?g!At ft$N\L>M Ozt"gI~rcSrA1cwIp0Z`/1WZ=m-] g%6'L?J)8\ͤ&I&T $。]8%y;;C ط#"Fb+`0<[Oo11ؾDmn}M?1N]WVP۽tn5}q b0͸pj|ToWJA7Q^ ~ -C~HVcfJ{`fsB6.Lr01&?G"HiʃCN( ! 0BG&WV p-ũ-%=aow ,\RaAؼxΣsp錵y#6%rU,۶v& +p2IAGزD0!lԞ$I'6O ,e@v2q<&쓻Kq.6(E[{L$LʇY&e+Ʃ@ix^?m'0gG$-1xNSj&S .J.^xH;3[a&d#^J"Yvj\/$\Pg 5 p6oՄqM0AoIU?ػo2ӄ0^ma봁S c~`!!odjAS,E0r*)kpD@vDwN|Ѩ|%{Sean%M$&#Cgv4ByԕN08hC$3ˎH׋;ʟ^W4b)A7 nZtH? Aéo@<h8rHP 0~JsF:ro8 u97~sntw, Fjt(O;ch,A|T`xG2Gcpiwj͒iVb%dUe.e)'0SvG UXŵHYXqO_k80xps>7Vz"`.$M1;yi'qkwţ׭{|Xw\)'A EGm7'zqkX)x==v٦~zŢ tmK P{KxbjՖl_ b]ƏfAKDK0JbK~ں Zd+8 b/dr2\#sx] s e Enn]B1"[0PDҤ-r[3lkܐŖNz!|<_ؘ &9B_$It8^ @`Fa:o&%%)haFUӔ@r8e:}3(xrv gܝ4,T=9j`xcR! xyL@4>.si-B(EH5CpJ|mHjb\@T+' DhV% !X(<.z7jիn^3M6kMqbM۫R$ Yb=zZP:N+9HoaaJcuy Xh+ ҘjE>1x-mE |9w?)8.r+%(DD܂1Pᒢ,!ĕV9+`%r6Ӻs`rӘl<v߲pHl&v+խ$?~XүXgOe$enQUb?וGf5uMM '2+l] +p-mLHքdTmZ]"51RP*6d3Eq$pZ/)G ;Tvonm3OWO9 m`HXǗI.}SewcBR|nعKC1J&Ft@dKNN;@S@XPyD)+A竓<1ih LnzhSٮU罃d;.IXIhZ#I$P4 ϣ `C-6#&x⫏q>ODm-ھyWM O-<}Os * G {Kva lY"`9]M5`T]5q&=uMzH c J-?hFBs5爾r$wد}XmnsP'i~Q-kotiNz ‡`} H.+%C$ir\E\qdLN;( PɓP"26:p ۲iJPb{T}LpIG[<7d)~%K)"hq?N(ѷᘸږo:)Xp=,/. J2s:Y" ѪϑnMqL󄬭UAU"RttO["nQ4i~9CJUh8' )<؋GQwi2aQ?D-K:xP7#|\RWeO Fx%ނHY< :N`hvg+9O lU/1%mg57.y2LCn7*EN:s7p4[TLpadoDQ -8h.J (#Uj-r z=r9j5,C\IG!$(<ƤkvYw+@p01i_VOǎe,;n /[C`l9@g U )J-i IvHPĖDA.x JK&-E:$41)TK+ &{.TT۷UH#؅(22>Dp`(`m>[5 u5~UDy!W)D޶B6{T`f Y. .\U**!iwɦ/P"Kl' ;n6rk% #]?+7y\, 3Hr`y8u8D. p%{|9!}i4+z_Gj[;dPZ=NPM D($>IᙖReS!Z'sbl+$3{l/?A22Eb]nU&r_1I%-H޳(()Xp_Vo";?jY2xU}3M g*ϟ'ۿ r Hcpk\%'-wVY4b.ʘ| ]*5Fӈ۷W'|(X*ttXVhTk<X&~a?/>l݆oͱp"u;h꜔-ʭqlኳt“AVw,~ L%#Ⱥ0Ѕ!1UW RAy6b1_-62%5{ N["W\扉KZL.n6XV-`{B>z|8n8Q(Fz QLXB$sɣh{OrJclE>>PtRyCC>Q -~sXUWڢC+%8_Q7f@+,VO)H,B(9y$%vB1 hRIktAo_^)T^f)VZh!aYBZ[<I/a+٫"ry,;Yވ\!]D,DmN@ zw?)}~{67{kyVJxB'rԊ_(W ]2 I"g_Šv:6J)$>vc?D.}e`t eh)_;fxda2Rx b"e=k*^VC 7=K0DeKg ov;X軙Tc@ُk7b nD.H'%2[T[]֙3D]kطVBnV`g "'v@G!_|-#9, HUF#K^\,"3&ON@8kc.GE}.B:y]L,g]kbͫoG@7P`Q,;Gv ,C꬟-B0@e]?(o &7q{ VM7eZ!S{I_ao8sտ,ZBMI󭴛FV uK)##v@֐g|\z #Lft~X`s'D҈{QH&{3qqs'h:[| +$.@ I\+T$8&V"k̷22J]c)R7WQ"%aɑݿ/6ŢȒ.#2-*oݷZIVhj4(K묐b({` oKL 3xױĖ`,/ܼ\_S"(Q?Z)n;Ck8#-,\ t&[oI^\yi2,ḃz(, I YP;Rr[@'RD1K(9'n^~^.!g{ϋossR(LJْv1ZjL;`5UL>c<@ڧѣm+iϻユ0҇StB.P>iR\&JDKty Z9W^Bj>.yI+q0Jjmt2+/ e)&ea)6_+7 שlUitL&>/^W_>/O"E^nyz|x_J`~a䫚`<4ua pHYs+IDATx]itՙ aUUI}-y_ 66 ^q0" !D&!&,C$$ÄhLh2s9'93TjUs&sF²ߏZ]U{Z=>f s E00a`! C& L00a`! C& L00a`! C& L00a`! C& L0?!V!.2aJ:^_":mS'2\$ _)wtB΄u1aBc#dpէoyD8\*u22\`8gb1fdu27ޓ iemd % l!k_. s5H(!ʲ(}Aq-e)2x- z y3D@4 52 q<@6 yf<ʐXef<w{Iӊ(yB0y/*c#> 'ya"8m2 x%$T |DpW{*EO~>hT}H?޶s.L $J|>x=H&4iwWɈHT,8t_, v2fuy@ƃ .d~U /Tػ˕'pzx<. 8 R8'AnAݞaE F;Z[ࢿaX5<é/W e>zcvAU؃idXb]d68}\0Nr),(ooZ/!|d* Y oVwqed]!AL/pe+A6| |kpYPgJ`. +qBX5<\~wA"\|cVo '[8܁\8s&%c }L<ͺ|p}rRՒrKcb'lq? |2AP8f>d3xP|]Bd:T|Q ~Tl3H1ҢZɟPcx|WB$;g{nKgr e蓓~?6lIN[EFKcc@ߩpK,+(ռйeV >9F< 9*g\obu<g+z@"L]K~|^:As383YhC7Tũě1&n; E\*=\ CWsA41 f{M/=\Udj_i*;5Ql Lzг=G y>qM*{e :P`BLJvR͖*KQ1q |]`R:t'AL9]]߇,+ 5,Q=b&EpCq^ 0>e-Wcf%*{ΆLB TӢY5 (8T}أ S}raC$,BH94dXO,U!Z=R#s_~s0R 0YnotP'BEJs G<=#>φV_ IaPﻡ| (?Նm9RI)C4gv)GS9ʒo%3y`qAd:Lv)J^(\w}rd7YjBs=L]s9Yà aʹI+>_H5EPٓ{u940ICQgVŔ`WfoEDa|dD@98Ǭ NaՠL-_!\2~R/ z~H mٳ$,:RX!sMKcus~c(Ll=-U]y. xCwE>*ұ 0c!*lLR cGZ5T 6hJr߆NTM Zʟ!fh܋KNޕ44l $1I'BJnXVr PeCtNweOT ٳ@]K08Y[Bp8S˜@$@쭐T{֥Q*!FMzx쬿0\2>7oUwe32a-[V%d?x.'/hY|lms)籮Ю.P*k>1 P aJkԁ?uuLU!^a+#1DYZFzT!4>kMJa:AJZth OGU ;^f?Rfg7edƌ|21.?]z-6'gz, 1XZe=ǪKWYwlڨYTTHV}D}\RMP-2*56>FXʔ%=|iGՀz>`,N /8'pKkŁ$!W> BH~ QQVnRl0LZ"XŰTq:pMc雀rpjA_IAC-J5ԒAnR~BoT`EMTw~dTas>KDR[U29@LS  q4b'тGjc^r3SD"!C5SZJ]68J8,?Y & *IKxݨmNݪ+-:T 0Ei}SJC q5ّ=W-3&:t[,Ɋ&O~{znSh¡ֶLCF zA YG,Y fڰ">AkIW!e`6)ŮACٕBD`zE2ڑ_߂N2@RzvtG_ [@JD PW@=~ HX Zuq銔v, QElSHa$(*?~\ {~#OA%dpR j 9OWD$F 4]|PnpeH&%];C1D@!T]Rtm_7-Mw g)kmkvA~VNKwFP;!IjCXރfRaJDbԥz{[VyLxTP~>~O$ u(**Pe dmOr$7pnQIBҀVfWSm+dG~zl!)dM%2yա}/6+!P7$w H%TPkyi:B/)dF”"?v'wV3?hkrQ~9*'\s匊w03&a^醄ڣԓF Ȝ5*ŵs\>c鬄[/Y#_,SSvhu#+T"UdQRQ*1Y2(&md6n&g뷪̖u+o[Q>=4]|9e4ڔZ`R=@S?0cY>/  Uf:{QV V (Ts}߹#I iY6U[]mj_,S_іkl̳T<d&4b34&gUUȆe y屑շe[۲ҝoγ; !`fTR}5衖t\!kajT"*{)гo`aO4~P^"Q4Uֶz J HWy- qyX r*p.?[Ξ BrDYp/Ȁ Rejxoqw9 XL}nb+c @2g! C& L00a`! C& L00a`! C& L00a`! C& L3.a pHYs+RIDATx]w|TU[+LIdLz&ZB{ ( (UРtDD"u]\׵겮my3 q?ɼyo{)ܹt\$\I:>:>x(>hPU}T94dȦQKޯu]?a@SR|~NM*NuqUOnPjR.[7'hLU$'];r]jGӼz/llޠG.;WՌZuJ6 8(+ΑqWQ-jߢѸ#f5\ҘM?NLc {`ح7z}@pcV 4Ƴ~_: kkvڪw̭?Aqz?))B;DcԨnw/lZKw]DcRsT/$H*I?ftZ%z+,LEGHbcUZb"xTzzJKKS)))*O^L*pV.j먣ZaG0O#' qz,m c<ׇ@3oe ƣp:8,W*sw (YÍSs6Ii3h 9[$M :<{h&OG}>:|>q:QTjv60՞BŽlg+w7$Э; GB4&bY4 ~&hPx-ubC o0pvbއ$5=%JO?)ht_a$4K͎fx\jT| i{̘45ٟd$֣b8bUC.Y9?,x&4ART (U@ڗR"O!-zlf?/33S$2輆!ZMҶ6-$_M^DZF V>drݨjkDWuϛ@oc-mD_m;;|q|/(_DE`䪩ƑZ<8~ܥ)&CB^Y K_H.#jRDX`;E}qdlMhc!-L!-мKKNV<B'J\@E!u@bQH*l l0#=7ׄv=n @ù\)<6l }=شL& ":D8v n|>k<']~E-Ap}> g;i>>L.("&8=Jbey 6qB;@Y̿aY5k7]3t X7 Dqt r5nOIX;L 7h!VI  ẑ uw:kDuar{d rހtbwk&k@PAx  $۬X7ꞕyMk*$|h}0<-ap^QYLUNZWϗ61Wy #q$jrTgTIMh]X3l`tgLpQsH`S/@a6KVʐPS:)I.c=XS69B,bϞ=jDOO\h$BDhS #mόzuj߫Iz$v`K썊_34P1 ԋxk$`푒F7 !Fˀt<,PCh XX:8GU(F.A9%Ԗ h p5=`#X6B!lU> A*7퓊!{fH@hۈX\WWxRs's@W qfmR b}Ġqt`yh xhzȇ Jc5xE0][,˔i:C Hsi}mP['X}0<1c"xɂ cm!cڑa1\G4X=Lat:Aª57\!i;=|.t2CPMut$ n̂#r3`ȍ$kHb2RwsoEwHUȸ 0>   K5CP}&f-h$@aڙk/H@udoB<*-D6$']՜=4wH/|2D0meP&iOkL< DoZbKwL\X<ɜAh2pn<]W5,RW#>IZD)vdHPH# Pijg5lwB0\+K2|]iZZf̉[9F }3|pn3'd2@GB1g"8dY1tTgLy0|x6 @IK ۸;9!rc oGpF-5>?l\7}#NB ]Eb0klߑ"n/R,]j*GzfJgJ :oR%Z7p i-0!2+K+GF5"iqSm%#B&x6r sV+gNI!0>uWqd &խ[-{SJKufZÙ`jY^ń/I 3(YB6ar:S5QwOP .qY_ 06,  ǾFaπFP>Fp̋imڂ![#etGmK^'PI!bwʚ|mi"F7j/-TJ|"HpX|_=\̉ipA$))c,7GiF+Eq;$B 8֕ΜPߜ%f>IYA0qC_h9 aCW؀ [$G/pWJw"f$(2Bdz=)+{! D9`1yp}B.-!_=$_MBy#9 Eߐ \_63 =z CO֨`FeBpm!i^{G $ 9q8ִ'mO}J4L489YYewXHXrYMO[@´AB'n5FH`&i;'\C*R;!Ȃ:R2::Τs rLMM {} ) Tݞ_QoS[ZI"q (p7]6 M~AU 5&Ihӹ̂boLz`W#dp],Keck8L/1{ x=xY6rXٝaNlwtCTm]Qp3x+}@4=!.ɭ藄bI`nnܠAelI1͛i!Y(naV+I(o& Fڵy27ͅ}$}pHiO^8#DG+îgmƑ;k Q>Q;&ȡs184 b( 4:Zb%fy9R-u #>(B}!c rIiorSz6U9s0n~}UϧRI׵j]1KŤ &"DX(yƐ OO,hbeY.axxG!I;TkII5=U.ywvimDA&^p/@b&.Ew_5dM qt}GILN@ظF1uX4I ,\&=^2~Jז/ 6h>u k2J*)Q9:zgU鸱*J,Ҷ6q2'%D&pdDI0lь|Zc#nhL?PD1ft ADs~O!@IJvBr 4&bi{D >xkLw:P{Bd$Z#jmKK4_ \OJO<9dn v 0( |K'oA߆|O&{$gB ^אИL<°!,|@r6/|o+!A޿5E.]bR$m"2~'ΣG3?υ6ھBE }\ B:¬v|S3<]Tlt9>ƃw^V7*/?u͇{^ed@妇;0 Hoڔb+ՏConr y(YвLO 0LhW ` rf9n{=s TU6V@$#cj5Y0*Wͧi0h.]7'GM㼚TsVu~`fe yHF&{x Q&^Hn|3굋b !I:KTY3 ԑLb'7$D6dt"4zgG!9$uD\JY; <<MFnT3Iv/!B5;8 s{Iw<3ig{Ż,c}\3bcڻViծJWED <7x`k^d`46T'H8GBC6QHEA!-(#NboqR ɯGݷTCk~Ah|4|dHd–ts%x}~љ@7gdGT wKbPf42V 0սMd$}k|xsRPz^q1};+jFjGU+@)P>6sް!)JC!z$NT4s(&&ܟz$%!w/bB#XQe):V}% ,t^>j .sh"[m7_rQ0bFKMzwt+}]^ am#nvIߪZ.fYn1y#/ni#ʹ Vd9}ɸML}-+U192lrc%қ5U#dL8s74CҠ@eXS`]3[yt/pvh,^S}@c `h!DYbWJGf+t" PL1µtR/LF i ٨ҙd1J .]Q|/u5wǩO^J= 3zlud!0gI@fr8 RWj۲xչEĿ в /bؿ֫a5\ ssXLJj1sM`00p N0xHcSM&Ȅx60(/_n2ψog܁1ZC~0K]riľD6vdQ/';k1Yl& L5B{׸-ޣ{-$Yd,R;0u̮$^QA~dXO94~BZ`Q(ɄV N[~U@m= VFL@_ hAOd",oN ܄>fʦvy]iXXibhL)K|% Ao+v:8+@Լ1Q곀@ߣ7$g'Lxy? ʯ"3d5(~..';;o@۷U}z[(['Tpg^=-@jakH7o~ 8M\"E (OZѫJb|q~wãICs"t9YގZ# T0{m@@h̩E\J#Kr };F#|mI,{& D O>cOI zssDe*kE{oh_tE(߳O & ضQ;T wl|g⽪qx5{F*-xs @n++/O-P?M4[}b򧄫xo)BM~BE5VVO"XܿUAz /켴J57V [ɼLG&Pp[N7>饳PY5wl nO8@`f òuċbU"fMv Eׂɛim"t$ `ۖ4`!tKT?o7X0Eo_wpKR+oINJd5r3HtãջdV ?&o];+1&s,LABDϸk2qwu7 ]YF=Z~lu ֤j8jR.*z=F3td#@6nV1~%! r=HQL2s6W z}\qh6ޱi.-ԻL-IR˲!%G弳V+^X.w w0=*q)k60ј [\Ikϼ nҨ#2@ @e ޖk,ZڑN6 rHnE8˻n@mh;j- L 3t7p7HBg^FRMQgw'2 J"n'A^F w9z$5{:Յb]HWS9^ QAE6W 둩Fk:y.݂[-*:9 0tY_  k.yg0b0 99ܺL& ˷vsĤ0@H)ltt$ S4` FLF}yBgE ʁ lnkׁ_~5&2i89A&6c/e{>ƒ5s+lmre+*z㉡#c|>79D^=-8O״+".L>¤{)-u{ JϞs۷g52YEIra5. IG73(Й[Vkbv$YCr`Y聑/KZ096_s]bGGwg==*73?!->{~A0yfNH%/uEH[LۻzkPŜVngMƍÜ|7٪%yn!hp~D&@']7{ &x2[cQx[Y1x)" fYz=D|#  L>ާCp#&j\f`$.yk@~>^_QD"Һ^ը( (N$k9:=LOĶD:S*{wPP`RU0`sOh'øNeS\|*a 3+q?Zr5zDVv?/ ̼)y?C7Ϲ<S &t㟼G ucyYFq_uύS&;:qے^|&JDX 3 .u%4 E!9yB&} 9arIJo\9 ]RKK01r hcm׍ ȏ󯅵iQ  |сhאK궵1_$ GO "ɤR;p mmM]0{&5`vmq|sǐPX*ӡmY\ $RD#.Ɛlل{jWk2ho'Za 2;[W(8v:5@xA”ŐG2kn&Bqѽ,>&M|8c{*"{ 6߱Yzx-rFЩ O>t/$ 'S}n5O\{6Ȣ0}"h]`}s}fuh;>Q'q\-d#B0 4{7qzVvz-^fjC!H` @2p,UqL,P>m}jZ@Dn\> =d- }ltXWoާ48un07\kd׫Zw[Du]9q]8 u6l_PBq%p$CQ1,W{M\ZΜڏ\yjV[5]8:nCD htXzYp34ZڠhGH.Zbǖ1hbǿWO^SwQyh832cz_)3Xv5wil1EO҉8~K\J ,hEo Fīn# 6cȟ%}Z@?F0nѨ|&̣YkN@`T# p~ qR|Dqjo6KF RFƎN /- .l^5*{^Hm?Ef'^HB3,a\%1J"{N5".'[ul͜|0*dAVV(YYý XA0Q40O@_GW\̟nt-|&fm8]п!0 o[HfF Y,Z}WLӅ䣃4vVGm >g3O )0vlVV%#4/R<|Sc5ՕnyEحY MmN@x-ӧAqN6R|NVx7B|&\&|N{@6HLJ Z\00KM_ 9**"첹wOk"-5f^ gI A#3/ .YR4}PfVDJrH#e'9 skUWcWו*Gm<Ã_/uj`͛YVk!JH0^og`vi$pT!ҨHB P**&/CV?B=IrϿ#gԱn _$_>zwЂca!h9\zzV P9: V%bX:Ӷڴء?‚P$ ݓ{j\e`"YdDp,*9AAÓ[]W,c-6M'N04g~{P*Eh6ڿ `4Pߟ 0Y/:8V6-Js8*`a@5_Rۏ_frWGSnOo._lGnSV^͢ğG(+~`X G~Z\U*nR>^O1<.[odpژisrY@|z|N ,޽䕗lu+KܦfR읗˵sq1AU=$7CWGj!#T/ӅS$NV9l8'Kޜ{9*#9\~YMp3,޾",,6>xb\S K_K4^:FHvBM'KaBC C@)ctZ|.~B rpK[`F_•ĦBG- 91TuzN6qBӼp ?$:4qaoHԿ߇㟾sW@Ϳv5#RBo\,.1".ՋӮM؟Nj#kz,֍W eٜ{>U*F ) 0!e ta*O) C9t·{UBk( C=y!ݺzO}%?Ѵ9_dvkPm܀/ YӳK吋H [@fqN$:u rmoW Whh!x0SI )?}=mLBN6|2DV#=t{G_0xN>2^p?fS70UNq2oĮmؼF'oo?~S |%:幸4{e]ۇm*~^r3Uv@V.+M!*4(VMx~2 MHb%\$/x +s@ 9sI{ 8N4gdҋgT%y]'hB=7ʫF 2*Xf;{t؃$HDd{X?tPGWӆzCs_zCrW)ʌֿ߫v 3GN`xF5 EE" Iأ).WXn0cDd`X1һ6c> [I ,\$?ƪ/*"rm|ǜqK8ԭ=7?'R ^­p"1{`"*8{lbյ@-h82xdJͮ!@M={Ģ"eLd[y yCp/Z&`Dfݡ`R[NJ #FPdq0_ eiL !j޵O給5gbzMU}=tvZE2_D;]df7T\b9#'i2z%zdm5(G!O}N## nI ׺*Bys%z eS9_?5]ς5I#9/n6A{B3-/I'ŇO$^uj\&'(D4$72%c֮Kdѷ!o ۶THWR̽`ڼ<+D >2s((=la!9\tޕLx7zhEr7 F(DnyL>ǃ줵(DEYɡn>*Lm_ w熄u+ywh}5ɭfVKg/ DؿږXF:⯸*`gfH@do{d-oGp7W [gw,f[: ]X4bmMGn&.2NoDC:٫FBhX5;N͎zuT/?̫q_Mm~i Sb/+n^&p$sLq6Yk Q" H>Gs7E"rB7kf D ;ܻЊ K)鶶2с|4n 52۩ ԓͮm H`vANgcuV5> X*S}M:ϋ7pXHa_V:H(!&-3Kb_}[1촹L %5l{XK N ML.E9zUC;F` ,2C(ۙ}/"V6F2q& )TD:a91DeR<YE4K&;z2Waﳚ) y'3X(O? ~C Wxкܛ0JXLJ|O54zDpX P-qmý1#U/\?fgPK,To_u=/zEh7obKsXDX(lx[  h41AU3OB_ϒGxg8Ŗ!}x~}%zv {y&h y Nb`̐ھ:ڸɷܧ?npH]*=)4; Gj*1}$qM'ƸtU-ul Ekq`,I:8jlx~Ia;f铵5I/WŹzc8C\~f8~Vo[+/KaED7'Ը~ALD.9DQPET68~@ώj +\ܻ]D~]^ky42 @/$fFwtr=e3X:! 1ThEp!xi4-xڥ0x9MkRWTzUŢXxO&˼t#ǀuКlжe9q]9}?1{,0!4\NɀjVg1/`"{S= <>YfWd8.!=/jѮQJr;D^#0d21ޭR8>:d#X5:+w@Zʳ[=@q9ׁ~^>zY :S9,hf$fg`K<]#443J >Hп(_ qb1jQzztxCr|7Lth'g|4XnORȒ-+ yL$R,U?TX?`6zil^ $hl+ZgV^BXۦcdch|ƍeanz p=jdNCZ+t1t*{}n^y Hu471|&mߜa?8qA%k;׵`0* Y9&B=Nl ^و7k1?]Cyw fi` yzMPu@sALA]unܻ}:#͹ټf9TijxYmއTVls2=#p *6  &*|5 X&<$`jFր P؇qS00[ϣTͻCs oE$@0u!+v{hfwiRz XKk}f IF Ǧ8w(*ys,acSHczjkϗ#R,Ef! ?0A(%By{$d50n \:~p^ $7Ě%@/ߣū,tg6 2|6[D 56F0[sυ#ʰ'ti1zw>.:6i5]̿vnfż9.l!4\ ~}+фBKuCFdA :AvmoW҉u{TfB6;=B7٣>0k+`_ߩK]acfF^}:~1ƿIY{ag~E] j[]BD/W/$h*F4X:?ԶlK'ҰmI,\6J%XZv}|w{C@gܟ6ZTp{asٖhV%]`@ZWjIBhj UA$]3i@IV_4? Gh(>=uv7~zG?B3V]M!&hӿ{tyc}UcVډx5 h@9i)C^Ϋ#?͞_V ZJy6TZ;/Nʇ-8.h8D.%s׬ٺ"֠efb9܀Hq&|K ׀Kp M*T)jPhWϿ\|545vNX I۬5@BbٓǤԦOBxEMx<6dshgOW?YXgg]˶p&AdB(b$HS_!>ixӫ0;޿Gc D?u`G-{`n%X"WoV^; 4~;6ýQnٹ2Am8"ݖ.hyDoe(Vs= _J P%|lO?+k0`}`Zz4ݾMm1hvh8ȘZ?G`Ʃ/^`Ƞ=[2>Q,=EzgsU0ǀ1~Uy^DS Z9va pHYs+ IDATx]wx6H'RHO\)D *Ҥ {r:H[$ %"E" %@"F@Pи4AkHwv}7ل9O ey9sDŽsW|#o|>'>G|#O|>'>'׭[L:EcZ4+dlW6ggejta2<{r\"zI3I%̋ %3SGB>JGCa&&{ '3䃠iLV1Y- |f3^chcԛIO&]L3b҇Iw&jV0 ˈ6@8@0Kd|p@BJV { LA#L 3cF4|}5OY˖v{)*:#[&="BK1e҃xFpF0-7 ᶟ81؊(o-j߹sLH䗧@ b W@@ 4<$I buȲp30g &2´L1e1yiRntg Lz2 `DdғIzF1 b1  ,[_~dJU`Cf6-KW_*A.`Y9i2K8Q{mH6lڹSO?Q:uHXOl%J*?00P6`>~+_(Lh3UVɓsʕvܾ}:Ddj- T ~34$n;#A,/Gba )LZıJ87nܠf͚eꕑ=񪇈ќ ۂ0Q$:=M /w$JX.\?ڶmkFBrتiPXAAAF=¾R- ILI7)E = qqoT3L=B_i cPh+$XQ$Y߰D4y@9{t'<>#3Ę\ K*=~td+$o |/:-Ҹn $>dҠp=}zLwĉHPOo2qVst򃃃>l`"]yY&S_~:~9yk`+-"/P-HЍ!΁MP*F=NVs(!@NBI!3BWUv!#tZqW`պ He|TfM3he̊l |/y`Ubo5DMACSgrT ߯% cٲefdm1 1R8evqk&˃$S_F76gNN[n\]p72NdTp08>C5OС ֻańx}1A)~C.G hn3Չ>]K:J 4i3.]Df$T>Xg/3W/a5Y!j 0~eQ ~&V^Esud BCb5Lq/` |~h|; pc5YZ"{ p=V& ><zua(pW5nܘ@ӳ>K==Ծ}{ر#uޝKo&' 4f7n?z-0a*;v,=nذal ,ӧڵk_\z5k[Æ )..N!ާ@K0߁ɝQ\_p; с  G[?#fsWp\~Q2,P<΋I_ ЫrSK&CCIdggKKK㚡A`駟V/ruܙIN6>OZݡD#7#kdoS&VT$Ԯg3yҊ/40 aH$`<½y`Әd$B' J|0bP ^ Oc=+kFջ@nmC8 KJxu0M>{LypkZ3_Q9j$x 4ų333G wϮ|vw=̛7@V5JŬ SZS?3vLJzrFrtm_ZC j0vXCacvQ,\;LXƫ'K?a[z [;ldJ0)?S Ajz@odIDÌC#" Wԭb`Aʄl}u] %kuaǷ6/^Z큅A*$a''ԁo_7-ٿhk<{^cl޹S ڶm,|FE_ð[=E{9OO-/)F88UғJKݑGpP"_Z1Hsb_6hEf] PI{~1@R= ~]C~<65&łZ ~FrI[¼qQnx+n֠UY+e:b~n: * `|=OKoBDd\ ~zіõ :,īU*K*+.^ӱ~ze¾{9sj+ iS ȴ_#I7!b2~3 Uc(K/dF~||Š`;#)"!Q@SodiDqRShHUڵ2,@Çv9tp(**Μ9cw InH%oLV0{ !RO7 ϓ_UR۹jtw1wzuwQb1H XNNboc_?rC۷o7:FQ%(:QFeh]^_(sCNVP/͟rB*y˧0C&SNVb߲eKAQ pY}D=bO!0"M{@!#Dmc);W?(|=(RyFAM* j2 HWc ,EԨQ#rrC*Q 9z23FDҝNoBg 1D꽔FEg?[__ Nȣ+ثڐPӇXxR_0>]6A- 哣/<g|w`67X,2\]~M_69 6b }C"9Vm~:TRl X2ق C8p5DPBhՁG1r_wE9LwG.@ Ԡ- ky+dU>UmQV$d|'veF(tu @$=l~lC" #BGHa.H|m> @ٻoj h𣃈;zkb e5,&Brĸҋ+^K)ߖwG(CϘQKyޖ`@L/Q*.I62@ 1trK՜K8= eJ5Ed%;ÎvQ@87&9CȜ}Y[}eB%kh˝Deչk. N2ؓ V&:l^h;$ Rnclfw(2V2N#3ǃ= C«mcs7>er=[7vuE>aũB*ީ]5=,#ί~LM IA4;[g~.c j p*(Q#3)Դ|UUiWiA KXD X|-tfLOmBr,!5]\ ٘JPUÓ'OV&.nidO ҍyT|$rS.p],(>1)`Ο?&`h':&wAݶoaF ۷4Ώ_` SsC6{ͮ;JL T+  lm \dGnCN ) {Dd^?y; 'M*W1G\KEh,=;IIT\\l/}8Ze[W-_?d,{d?0(=& B(AkEfR~s@W-+bzM3.ʶ.[ḿy(@51[a8y5usKjEW`-uGw {R1'lZjգA`U,e[(Vx޳MW4Z69# I֯׉@U$؀ HW\1oX`.h>\Oу/ܹoOyq: V%̀tWJA ##g&M NB[߾tm߁A&y I`N@~_m}jwWt (6x*8^ǽ AȰ#@0H5NL֭[~vZ#;*(j$ t12JI=$…2^Gl-ݳg5ܟhӦMFX [j|e[';ɛk\f>իAQyYZ1|L"g b8de+qDkZh.`Dcb]Ce[Ǔj>wᘍH e9o0$jZ ufwF``;wT/tPrBW_>/m7(_1fx*<ĥ+8?Al#Dρ{`an -nz]5Ycݷ6S) 4S8B*^@[P0RÜ1.^}ٖ$@炕gox{5 mߞhM\8"rEJ#IQ'ZGvv^?8ijnXny]PZ4a jNI5nѢ7{<7X-b`q_ "\S"_a)8sJ̍O./_xDhX1D-H$MVrGMW ߿_AhEjj6G40mY:FAv5yW&Ҝy GI|^=؞ki&pC>7x*5Xt@-LICTOuJMa6bm\zՈ׎-͞h7%dĉEN2Jotr_MS=&V޺u"\7nva^|4KtCHX&wrQks*k֭قND"ӴX7%қ}.,WxșĶ -~$viǽJK#t֮ǔY;o\M[8kK;iޙ#$VZ#Lo۷ohP˖//'(`D0V aG_GjԮ l~y/ojNe2z8H$I ohe|2v, >!N:ӻP.&,~ݗ=@lޤ5&ڰaC⩶Ri樸x{M[5mT!aJ-z+RxxLSƙ-^5#s, 2sl%NЪU+;o/O; j4+=`>|M6|HVR\-|>!^_g+Wr6BCXg"C IENDB`pybik-3.0/data/ui/thumbnails/Brick-8x7x8.png0000644000175000017500000004230413137372602021007 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+DvIDATx}wTUgVΡs(tӀ$IMjDAGm Q3:=8&љ7Μo}έU]AWݺuu^{}WǏ<py.q|\{! #m[o\%y ۆ7.UZ[ Kjƿ#'T2h|JWk&L&X]Z|s:.K=YmiVl"׿ km֫D)MXlFV0[;X0ut?xAE A E>y.Mab8Q:=tny ķ@ᢾhQoՄfb}2";ٯQ(ևHw$0&Wm\;bz !:LמGiEwXKş/ap}ىkhb}'&c8h[7n<٣t> xf"23Nݜ&{8wyy}IxΡuyiyr{4kLޡf@GX!mdO2f;;h]8|9 u*@4#׋;\\R'SdA*!ז#TPZx=Tܧ C@:@?]v!pew@ZB<5]FAC͊e;\,٣S'onN߁DrpF揁,&Z%* /0f dH&,`I߭_Ez}LY:p (Zs%H,Oh'ӵ7w?j`F,VOAjO`SBfx6 `&d8nx:ST NrZqSB1Tg;"-\@L4q&zO@ K=D(m N[5| C o㏹~8#0sxh }0`wӿ %|4pdϓ^PXdA}Ș0X"<$dP^.e(n̩>2㽌1~,rٲO(^"fהzҴ 1a~{x>`GS t>@vk/'^ +Ydj,ȫDK3qɩfs&ο>p "&Vyar>t.23y2$@A@gS҇0tͭ47ԁߧd`#LBp9k4 ;vےU+8BXw =^ÀwyB/*n;/9ডAMMcGnfn̅*&a0`9ZaR nV)\ NU3Ϟ r Be6Yt]5$Ž#I j9d{M kT#+Rz Oհhxwg.?}DJq䩟$46h@˦K6,dຑ)d }y!%grLvC2فC!S Y@G*jk `> Gx7#KA<TIxG  bw41+<3 ɘ Yc0e,Zɾsߧ+㔩NL`.k!&ϐMnwSy\ CXwL8{,&P T֑7dSep5Mt9KiA\8@MJq|z0J=X)yA,j]6Qq@ ]pIҹvJ!m[O c86ҏBA/z ݃> cA푳u>t;UC1'(wO2 Wq}${k ҷcAc1"P"ϬJR{b֊ p7dԿ@L5 -3d(Iۖ,Φ8dRy4 = .X p5&+OqA ȭ_O^~CSj߼\d(}w:*\qd}3Ы2>y? 4Ag- 7S=|CnM3yu 7ҁ**C]t= =@@t* iۧK[ŢIn_M)5WcSjb9Ũ5E ڮf>@7 UwqHM \e_:suO,QCixV6 -Sw[|劰ԗH$:{w4;9eձ4OZB:|ذ/I/p^>QU5q W5nM*{̲qXl" x -e|bԳ ڻFKt`B`%ME,n.wM3ǻmɮk \E:YI+s\;}PP4{f"33SY_=-ުw}G)4,vjAD>wbN2ЅnΤF[IC@XeA>TdZRű`^U낯;g]`Iv_=HqGUͻE4!"snSB18ބ)ݯ#a7~C#Sž'wҥR7 naՀi'W[d^͢ќ4],zH5p:GIw4#( B4zr~ gTv2<ӽvSN>Y6ĂL/k'J2 7tR^^ԉ1.::I@xwXD0|% nE5#pcKxk,dHΨߟT2D!超0QL3n,WGgY#c_%`!l~몈T]Ĉ3x'k׊^ >"z z&x1dCq9ntMXbhJ4R_8h7EȧM}ⶩ!~]$~+5i$R 0*Pوt̕jm'0 ' B qAGcמ#P+,"5)r x5ȧ/3f vUY)$•3f u(1CjJ`^nfJ8|T>/K#<: VVww8yFA`eY4{ʑ6Œ{p6I ҍ?- y qoWUpGidh02G%G):P^Cp]/c9x\Ժk6B\%Ŝ|oSS+t_+ſ 9#@ز/7Ϫ?#ܲkEg8gpkz2y=@҂&欈L}Z-st&!+hF^ G0m0] 3p[HseՖ`u:vP5%qCZ&^&7qbQk5`i]?k}\yYh;}R :Y_YdOtig%2π.<+ ) U{F\U*ٯD 0Xnv9l2 L2C   pDqv(77*NC#p= n1MZ7Jyz5-a~Ѷg=b -QzO{U? r癅oY8*4&Kd 1~=̰ZƑdoV5>]ֱ2gQ]]Yڍ7 E$Ev E?<&÷Ϥ:P"īq\ +B ZW 4H~XMVq8@fPBfsRKT)c(@%]hyeȡqf`b^9cx U`>8W֨>=#tWޢHyxOנHeD 3#V1=ε+XɍˆYThhI;;qiOǁ?BA33ӽAfIwķ69k&,x"3Zd̬L2 @p%BEI fzE3360ڭG\~An=)gW|kОQ>6ЇU;>Sb,\zGhxC|uF;ŞBҨ&h["{zG{2EB B+zJ  M{{I 0kYh ~I2;@Cn0B2|KryL/ [)>IK7T,<% kEC:$X]z˶Lio.]I0t >";$CV:g45Akⱻa<,%\bLط9]|CDqv'jiߝrTѣY o&VBf-<%ˣ!$lB2T,eQ(BV]Q'@Ptv99߯Ѹp6L !`*]iB0]&vs>1miOƐKx4xĕUѵ!|<~+G SQ.N"??gE|AIsK|=nwƃbCcaWCE&A*T\mJO`r>-cק0~@ Uu iwSŤT^Ֆߥa9]^0C߹>iછb@?$?>!r35W(4MhhUdx@g$#̯ࣙJ#HH,|$]d,T۟4WbW&4:D3i沒GT}M1>O"ok"W^;-@U.7G:DS yN=#ډYSX3~z47k#eg fPa@Yp6Lp 7I(arO<(y]BD@ʹ9vcFRw\dRa.٠E% W~5:VKY$"Gx]2h*9:*4D":'zwAdk6 i"2؍ @'9 JظMP-pq"PLa īАj^#<t?$]7)ֆ 􅆘ci%xڂ_@ׇĿӸ?PG9g4GC<13Uܻ>+'m )t7bʺZݒqg0! ĻCbLJ(gqvkZ8DFQ퉉28f=]J1fPڰiT[fnf.2h}24QW(ye~>tdQa/fsg%DѳƯܱnL .[Fq_\sEMT"y4yA,):1NY @ 2X/V4Y>2" (w?R7 e^ 4קϏP4UՇ8HizI^]22.n܋?;}1YLG)h8';pQhN|8FO1AJ6"}eȝ>f $YD.M p߅3sdvCX昼'#_"q\0b-"C!o=@D'MC‚ ]C+bd][Ť!kJz;ŔaJ'Cwo$7)n8+&ORwNL@2{crX'[$d05@)x(B "7'-<'ͨ& &ME-@'8%`dʍC x7? 'WJ#{ vM[:+:_|4bp,7f۽0k<<3qqb՚iV:r)7Ij8ֻzG\k zP$4ߒ>+4 D&'Kcϖm]&u kWЋ;o|naY؅,?B < Pkxo;8kw(LU7IJ^ +~(<g GR7Ynϭ qv_kj&Q0seAqrA]w8hfm CȹHss$!a=u)\!I)Q !%%T (x-2iϣJ"rQh,)ZR8FSJ.3[9qȦX~eOQ)#i\;2GU;Z`_qMa4E k:aוYE{z E 4X`aqb/e{"#9L6L׷.W53+؊:B"A2HY+p~VJb"Cy즌ZI{Z<,NOgP얻,ʜ 鎀KA&s+@e-+߽.u HNrOe=H~pM|jq9(E!.U7Aj!!D;iᢑqA!g7"Xki\KHS56{4l*҈naoI@͐վ<: ֠zK66Eac]?)Vʘ|HsDz/Ox bM2o>uz."hփ#tgr? ʠo=2pSPE@=DW^=X}pfZ+ݍ%W񽧖) ku[9D.KCfGR`"fӱrG$Q( iĢIqrOxd_8\by#U.ߏ D^R;bʥC*J(e^Dw\v8@ȩ@9;ӑ+X>e-$rqջ ߐ'@tS/g7sfCԿ-n WK{‹A25^҇wt:84MN}S\1I ͙&Ysɸn_$Da,FC?2d+Y+蠳'H/0=kX(JdW k=M}̰GxQ)x%P"ud X=bCw9:Rإ왝f'JMBsJ 4O xhq%aA07V Dx\呼k ̢PjQHiDP>l" GR|a qbYWMKQ~g-|`@_:N&`e505$g=ʢ/)N eDZ>GJ٫yҢ:@DL"`-Ī=>٬ȴs(ӵJH*ti2۰Xy.Bv&PKnȕsIw +|[f0>jeEV&~-5Gޏ0S2,xH8'墑wr3}~@->UEjr$zVL)-ŠJ KD앪3TҳL =-$ߐd2>؎2 mke$aG1$TO-tL)YNa)[ߐ˵b׃AQN36&ogE'W•$߼# ?D[ga聥>qq"ntyy`CQYe7;yV6VbI&hvkpNltI/d̞dV`' "| <r|QqLT䢗A\J9f>T|Z|hB?H 5 >ڛ]@( `AE`Ǔ l8cSbР$5FJ kq@=AlgmaLj͠#H'Ȫgtf EP"mpr^XQH$"@}Y\G|M@p/7@JWTysŋ)i ؤ=`踩HYXԘٕ((T'f#Ff/ ʮ g =7n0aLܳ9d,;uPYGυ776~ji:\UxkG,bC]B[;{Z޷+ts?`O_殠?o>oBq,? mx $bb0(Q@d[,Ϭ "PptO^8'z՝vM&6^Q * ~}Q)R^'@#%27wz^vrC cH h~g+HW0#8(30F|he3z<DnjF7Ҹ}[Eb=qVxU,) ?pmejH}G.h8'6`OC<&d,dA`(!C?D@1KV3eו { Y4J YiRHPnN/7MV/tsBiau^&++K4cxKY3xCG(bCc#J*PynM@S:~4ٕu61&hõp@.2Dk64U틩<.vf(d<N`c`4z\H-f1!b1PS=0郐Ī{CrW ) h#?sK;\0 yA;Z߉;7b@4`qtnrq .{'>J]V.֠'X1:5@ -Xifk&xAŪf.D-60/ Fc +Ӄ®Ks7xOCv^)JXջ<׮pݤ 8P+jgA?ZCyt[[ =@cHo4A3FAw0z.{cM0[M#u;zU=8lG'f.?y&M\;K@C 5z㔅Qw R̛a z!s3h&{]"ƒ4VAW.KzPGfSHyV_lE֪UϬqO;)Cbm^VP9_?]skw:GE8J,,("GR(! lix=70,8^Yzʎb|% L)\>YU(Z(5\=?roxׯ/Wd}=>n, Nq 9Y*1[a!J Gfxk7CJv)6gPKцc;:yVT8m C$C.RS|^a=:<}h`BS='2 ߼oO;{SZ|3zrhiL y9mP71,X mzB(< XBNwI@AYY8d9a1/sLϑ˿J Gs(6vp,۴@g,sY6i.^&hX6hcB *6l1( 8P+39>5GTG*7nDYp|5!9ZX{XTnІ<\ l}xf0:{v]4@T.U"lZNmb_vgEjtg<t|ޖ%4T_ Ղ#3bW ;]li8*J-ܽBB%ܽl&ci#J# k\и!@i_X Z CVwHy z2V.^vrз*!{\+RłYNoPvύ h 0{%%6t)x+T*3[0D&(L>& pF y-!^㏯0pW ~~5gx@w, vk(0Or.A]C8*U<9^ZY"bx^B`k90~aod(6%CDk<*a ?\eJb,3F:XEJXDYrg #6.ژDY]b@ȦpA+W<эBZgL鼠`L7u݀p<!șRe8 8P~k "3PN]0+Â҂e-XF TK^Dtǣ0|Oxz_m_Sqim ٕu{P0.Aڑdaƽ,ni >㛳S}OBh0de-qiYOAixX7˾?{`F ޶u1*y@^f6N 7D&|n C$*+ QLL_- { Kܥ8ү?+:YHd`Lur,x‰GzP ^y}y2.4Ӏ ل[;z[}8\{H",yK%O]bG*\enqΪB5AP|잀3qm 4<Cg.=g),K6̼$]~/. +-IENDB`pybik-3.0/data/ui/thumbnails/Prism3-4x1.png0000644000175000017500000001501513137372653020645 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+IDATx]w|Tն'ajz!. Q:ґ*(MAPPވj  J!" ?쯐qH%NA/F;sm8&~5הlE*W۪l Ci.\F!.Cg_R8OܕQuLPE&A%?9Ls'ܬyGBtJNNܝ6ڌ^5o%(*#>1|L ȟ98ݩ_wA9Dx7 %Mz+ Dbt*'.kQR)'7&ǖ-[t樮|%|}yb0ClEVpOg`ƘDⶏ1*h3rp(,@KۦZa1D_ҕ*vU `Ȑ!O4gwh(y12  ' byXWc9ebVUWq¥ OXmVE`sָ&h~\2D?D(o} ҥ 2+(7 ˗uWPߤ|Ə2QG'!z^Vc aVmt>翙X{]&VB#I!^Īm]KhHA<dⱕR?e˱aAL>=Trb <;u!h^&u`wpt2L1GiW!(h)"Ǔx~|C,:0|R[\GE_mED:+k$*oFB>pЭ+(Unݢ}RXXկ_өUV-[x'yԴiSjԨիWOXxp !P&9jnH_z+]+ۘ#0+F#(~guD2ifg|vn8| ִJ) ={BsO9bA6&f6z.ȟzSHMKԶqc!Zh! CBBD'B0ڵm <ԦMqӬY3zGA"aH111B`h#006A@>f-w#02-S 3x:U|%W^MwP\0To|r Ʃk&CQ,!,A,~v3 s+\ sab"@fu`g9鄛Ԡ2%GmSE[fqӍDP@N:sZW_} /?V\VAѫ3_i$RT|͐A4pz79YWV?}V#wx %a~+$\Ğ={+f۽p05@,ͥjZu67oIA@~v 0V>-&@]ȟ12^*_:@@x)!_D0ҥK"rejM[-La{:bsCCCM-r 3߯?WG|/۸Asz]ϖg]~P.6rR/2:%] mQ6#VH;\g<ρ7LŪjE+ R0 SOѷ*{2QFZE~zRć b/oU򁋇5˥dZf=*:uȜpݻwwɇIMi][cޤk"rGl; _s"}Y.b ]ݸsQ ԗ1P1L Ef x[VbD#uo?tW"5V@`GZ_n'ض8R܁xcQOE꫙vw̜9S)SGF\;r%AMK~x@#RlOK arҥ"l;!$u8@KPi$N܅Ѐ7yfN-d#<\/Jx`fRԩ,L"ܹs FDpDs*S3ːŬ`DwH>aj1j\v/T&_=V)^B .QŋuW0}6u-#ebvyFs^QA+ȏ cnxYz}OB`HGڌ3c J˺^m|NŤ;@,#t$ Yn- &]%lb|XpR>w2`5i$-|gNPUrNrǻ{Lf&Ze`K< X9V3moG*isPB#u4+طo #~ѥEU]+YLF^YPXkJgQ{Yu#7>>TgKe77:sZL~~v2z$hС!HH7 1V|btzClYYLz#{hRɫ_ W6nQJ:p5}S>{u7:w޷%Ξ=+6S0QcڶGjx|fl 61цx)ia/ĂR48X\E-aYlРA" Xpnqi6? P[Ø-Fɀ^53k( PD /J_O^(}<>&l ĝưY1҃iF~*֝wVg~1ŶN8!9)D7ooN'ɜ?%|J%XD& sxgjh!x_y=RTY _FK~{[E(+`*ӱd}s jYXӶfaFۚ!""BߚAFjf5SkF{&ϲ0:YL>@4Ml iojd._ۚQYRn}9H ;D3 454D,"uRT7K؎e\4k׮ԭ[7QA`io`@uɕ|7Bm4(XjfeJ-[G'Psm`F)R+XnHL`zIH>Pv PJrhIv?o%=@R`u /b  ]IFz@|X3||հu :7n| ͛!L@ l<CIf:A[=k㯊)wL_'ߧW>wp#V0m3ȻԢT@lYMx>=L9%R.\6xZ6...oWǮ`]!G0ޝdپ6?XO; ̙⵭MrMfڏ i `0Fv 3t>|9}Ǻ-A>ܹ4zsƇ^U.ė}@Q/!F>6:J?-} :C-CF'ev?ln13fܗ"}6[-=|gnq)?\()j)M6/qvo>1_ J./!I!cC t\v J X; nP HU$[WPPPPJA%K!n'I xDn MLiڴiB3_ .$kST,_ܶc>} J K)0#Qɯr !/E V=GULJ?q" xWJ*}a&Z:5kUÃ:ΥU;+`jBSw|W ] ]EW +h2j( ) ) ) ) ) ) ) )) RRRRRRK\IENDB`pybik-3.0/data/ui/thumbnails/Tower-3x3.png0000644000175000017500000002713113137372525020571 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+. IDATx]w|UU~>@ι%-'7{jAzB):f51q华eַss= Ac -Uw:~&M8|1Ʋ(oX5ȑZ J( |7y$vQ[6Ǜռy颭36|.Ps׳SY? ԰n#a ʯ*o!࣭'H;La)i _0qf2_h=8]ʖ]Gb y㤴iCIbiU 'ЎT4 Z,xC Xeddキk/!Ͱ .SHE?@P+ )2)+ucftbNg;}*> "⮦^D'VP $b($c id.n:]z;^xlBnŵWۙ~IHpAמKa}l/)+kr:\ $&U3 „? ߓgNZMaCՠ>T<6YAAc.\$$tSӗ1?kP:ubԎX0|C+hg},C"Fޯ#%@p,eegg3΅֗\8q ӗk BG[[Z=} R8{FD"mܾG]Nhډz EEE,77eeeqAO ^|<[1 FkNnm_I&Nvڔu,$['gϞ\;\ȘC p}H1[$w>8Ma!4j2",Oa-ZH cnZ;g 7 2$I$Cff&tND[&ps}‡W4ǐǫkh_}FyqrP ܸ Md\5ok+ qݻ~qbB,a isu05~+X&.xҖ6'EUr[H adH"G--ܘD*ѬI5/T!ZM:\ÙD |-'vg+o^>ց-udLFKl>W.Ix`*^\Ee_)fۮ*nn9ntwzUtq؄" 0gJn|x7אЁCN}J֭[7=nx!-賤*W;O0igㆊVˆ^H'1J߭6' 1'UhO$ܻF`8}Վ-?Mi \ד‰az躡'E`ݻ7kdm)Zq)ӆ%3崡3iPR:>6c(|l|]]a{ M`t8o2d0G ^\Oy"A -8Sh&}L27;Z' 7'6ZBfV$~N[~.M%SQuQذaX׮]4* A@IXq0 8\6ko8̓a,BEB02~?^+ }k=ɒ |, ?oKvh5,@"y fQj R}~ c#lI2.b-@gDȄnVIG {BF貵KaE~S[@^jiVgu](|[.ڔ>NOJ[rpZB^ ډ'{=OKql/b 0Q|'e`]AVH{{'Ě2~n* vͪO9I_.ṉs5 ?|,.VfjFQf.QZ~`sÄխ(H Z`ew:llԬ7nRMmu2.|r;ON4;Zie`*i^TעsA"(lKc]B@52B+U~(;O 7X+#r`-ۗUy`'SO:8'p-LHZ~"7$֥t-Xif)BmǯO/4Fh'eZ7HȞLZ>HiK ņ\Ľrٵf̋ wD+M?uᅛ@?"plgxJѷ Sm< 7`[VD2D`W@0"VԆF";,>=g¨ugK(Wk}UJ+ݰ 8FWNǓYZW @ < `AqȜ@`$NF0)\yK]짣}֙-= őIgmskr^2XJ3tr 0@KȪ`ᓏԘQx)m.[4˚/3I3dk`@1F %XuUtt @Z"e!0䋋)@`.:yY>^/}|{'o,(Zk 71pGx*M dF-%y%Rr𻗩쯈CXw lH_7S^M/β1\2DxszV@Jה'a/gHRsȮܽHI. jF40TUUq@ ,-J/%hDֵ@{ %]R}=>s3j͚֫1Ɛ)U 8@ ƂU~#p A1-D;PaС|Ȑy 8 EZ D& b\-2v,2FW  D;+}6@n`08Zͦ{"I6C(|$I^8A5S1{xp/ea xR;泽}X?Yo2O G*,Y-Km[<b2 Tf+Tt?p@hi7چ EBF2~~FXC#F#GH,kGJLw0 "/߀$F#6t La;tM/@#MTgn75xkE%Psk&d %^1k {jcx$X'_z$nn,a/;v^[ҜXT5( .RN" 6CIwtl<]An?,\ p%6Df1b}laK~ #%`+fdo*enԘvwe*вk/t! M$"#ZN*#øhe'j[o]\K O>WwqP8JK;g٠_A`(Vt&'`CX<4%wD>{FM]15a3x 1[wp"ů Օ 5e@p \#`X D+Tn2K  AJxS Mӏ\/X . |PƊT6n}E{xk=<@|f=!P2UqvE3%L`XMqʜ=C|"oHғ@eFy4 _&c {rkz |-LiP8`%p\.;:L*)`\*sB Y$z!SI&0LIc$| e=;g "bӻ1DTIgtcXKvT*`-!nX OBih$ D?&I 2o-؎8fN)' gq"<^`6v-!/>`q@+W[9HN-$RI'GGc|lnZc]y s '5NK5GUH'fzi&ˆD")Z #5t0!&ٓG|/-5ғ0 H }yo &ew9Eu09cyfVeVݽ1g J_/,Xvvglt)Q\q$0X*+. ckfl}rp⥻BS߸>mJ8!\S_i n<#6FQ*(֐L[GìDVtPфkc_A/-D||Y9{`DWBޙ e l%z wawe/"PE!/bӀe2'1X`=@iZ`Cf1 De!|Y,߰Qu.nbY,"J8Π=z4ڊVxyX: @4P2t>sUIa4ȕs{* Ca8HO"\v퐐f~VgmՕ"rz('ˡC3u3y2K8fC QHPpVH!Jh >'7_3w"3+Pkgީt] Y" M \oִ Sؑ̓#YB\Ýf FAV2U]{DiYQ.Y:*@ƪfqlF(,ha@ѓ̷({7|sP?8X72 0 (g_I|a13Q񰟡#kQ}"S@wleA-vGlj7&ivώ^Ý(N W* VDɐ8I&&\CmK{k&L1̝dBaO?}-v`_ң숧GSq0F$sMT-FXJZaڒi@^܌GX@$yt~҈ *$yĽI~ӻƚ_*1 ? ?//5Z7Ϙ<m-A}>41ub#'!7k*{PMDOF!`! @j ӈ/ _@BJn'hFW@a?SSXrE.1yuR>kgn(1\Q$/St<kBM#Q#6/ :EukD)Q, il1X*t03 C|$ c-h4~g {NЎ\S$p!}]h#ܓ"@ZnPMi[T 0f6&9\2#V!|a9U HbE`'{_#uFik,#L&/HCw(]9I@h"ִriBZRaa`&"qt@d \acK@@+Mh;fEOE>yVv>;LK^#+l@g"3 o}6{>/pt( е2g 8 u`ּ+TfDUD`uб5 @PI'to->M&.3gbf(w? ^Sj 6NK % 1ZaRH+ AGN " 7gUA 1gq& V>=GѲ6%"~OO"MO b8E& GtK"p H& | =z9 y6{6+r7lh?I}zVJhz5Je/Vb A i2DYF@7NNQ?U+D(,U24 5tr* @QY l~܈κ>֑D!,q0΍D @ 2pf%+m윱),kLHBTn% @@Anl+j %6'.Z cL- Yn=1tz|#ez9)D"uFd  i-d2T-:$LQk.j#c/MTaV of\ʙ2*\_Ƌ!A{w9~$W6ʠ4A5/ K8gVVҴCP! "52@VErѧE~Xf7)dENV RK'$8Z BmP*Mt$ o;`B)8,`(8f<#%ȽAy3Qۥf/ W' E0%:ʕQ,ѴB@bO3f 7"` /1'cLވ!h:@)!bV6,tGNyi{FwV4p0M ,|;pJ$xDz5ۨ3s:Aa!G -aeab,g2-Mͩ~bH~QQ2z3O($ajAŧ= \iFT8rwҫuIF 7hG؃W/ƽ]GZ~_.a=7^ {r#`ϝ9iI9U-K2(Kxyu 0N\9‹T&dMoM4ܧ?R{]ïiܗ4{pwl6?=9n^P0|b1{~Rҷ{#lˋ>|D*J(Q/5^1B#ǼiC(0*W 50 ('I*eCʉ7 9yr>sßdIJX`A?P1]'5.Td=a2:IS/q䙮| d\Kceq;0C5T! KC,Uj}T]ھ7|OYM+}ciT<6>$M՟4-= ptäFAM*0>;KEL mVѦ1Jg'ݤzRa L26bf;+BqCbAF8C ?u}lN`_@ظ4)09ޅOI5]$JNP9L#Ae HOc#C>M<טPy>=QPM"epYkkڼ6^%$տƁV ?Y p vQa4:VDk02(ԉ$4fbuK@ !ˆ2pN!M$4O ֧< n([;!w5~PA5' f@ۭS#H@$ ! @`glw@ Q$QToƘ$]aucV?NLUJfLҨ`=T5>]6*)wryP/XSzto9(dO7ZM l"uggFը&dU, {;vXRrs1;cM@^{VxŇ=B7PnVi $ <8C+46@P @## 1.C}7Qӟ߳-7'˚y54Pb@FZA7"Z= !N j1>hMdM<%ncvLȚ~7SA_zv?-t?{c4O aqQ/E$nbۄ@Zcp852vV) QNS洺OjEyW ;L<3 4:ރ(+~dY g0$%£l`: GڂKb(#eFL88 Gwf'ƎgnSX~@a=]`>S˯JY+w7VM c])Tk\1ݧ #u Z`ɜ@f::^0 .]a,"z\fq A!|,)H"˜66g0`USN GÜ)||=q簽noW  鍺U<-3v\ }\ "a<7`eSN[%ط(b];Ђ0FH`jɤSӃ0!w2xڋ_%LƇ6f4 %6 e!]w0ٛa3$YAEǕ?xqr|lsRr?%F4IENDB`pybik-3.0/data/ui/thumbnails/Tower-8x4.png0000644000175000017500000003211713137372540020574 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+4IDATx}wյl>Tл M@ E45"{ApAI4Lbx4M4wUu+ǣj$Nេ6qB枨7~g\E.*-jޔEMxx{׫nPL`H6|i;AU창 q>s/vyZ6oe>B2B#^**ƹSw70 [ MF@eNiwmhU a^U|DC]H _3V^k 5݈}Z1d@G <ٻl g W :NsvNJ@@6%A\gb>!}faB\[kD;ڹR<&;dڕiѷZü!`ǩ^>M I qm ēi@e '!k~R8ȍoK a*;PZ|wd`gំΊ G x_QcL9#,+3V`4Hd$ p܀k~Pq_+Xf͛S2ܻa4f"qG l|3XF!-B&EQtT |Mm~%E) 0P쮇`o|nU KsBx:g>s =0g.]Lr{}la!WwYFfNB7 `A.ꉅtBH| l0!ሀO0cl 5.bC2̰GpH"p;$v_+0'j'poW^shx!C L0D/a|@s?JCd+A*vGE@ ~9K!'aNA6d`((:K1B 2pOvDIQ]CNh e#_Zu Y]9T)Ltho7b} /HjWk" ڃ92%XtC7‹`+\ 4sG>#u.fcըHH C[=/fy[`{<휴!k@WqȄ_\Z\q)%EX;mWq8V7|ct'$` i=hE-q: ᏾:oyHG-u&s~S-:3}Lp}G0F<G_bk4{Iok8Tw!ɽ0N&`-2s4(cj߭D.ւ|ۓX;0|37] hz*\V&{E#yi0t[suF;gGaWςeЖ'@q!i "_I#|`4PCdQ(|& '3!Ew)I/iB$ZO Эr<3`f]P g2k5igh9,ͫF0M6r"\$ݜ&~J1<ɦ;3݊&װ'NxHxT Wqp]eS}TbuHk`f[ ąOqvf|h)מMƚ 1 . z6G*|FOrXgaU\k.YKI> N1`}^mxUBhn{΄RQ|X 6]g[ L>tLY̿m &&tóO23ܓrmxٔuy="sm4 $m@ΤTs=oS6K>N dnL qVRm.U5.>Q?{7onVsVcƯ^5!_֋mOC3o 5ZL?#fFO His"P+B+^VeG0xq_WI1sF-!JĕuE88Ђz[,T]/~Rzuu4*"бBPXdBŰR!Ht.)0XJ#;}07A]9<*jf&f`ifa4c"A\ 3 60 -yY \ӻ.B;/gygԲ9AU:[* Ge]>5%Q1@[H$3yU&'p\ffg RIKbJ$d??&6~4e'. <#&ַs U~czLz:wPA{G{@>QޚP(W_8߳l eeE~յs}@A&a遶Hh!{!L\! 4n/n6F&8f:egw@D 5Ϸ'^06ֆf)d>u o!i xZKS`ҽuCzbazkCV \vYVkIwT\0(͑lAJwy^hmZ DVh>acy\1IkMh ,,d, :*-Y3@&l w>sq0X 0zX/Zggdh,@B4 ԐR &2§aC^hi^z-ӓSۈX Y9C-yw ak EG97>H%;# ^6w|UMv>M0K]Ni6圵8 َNKf3 Iuښr Bc.?;Rj{1[*olX͇;l"#wShM l`猤!!C/}QɬNNY?$IcI'~ *j;/ٲ $ : _}!BxjZ:⅃Nh]jiUSTo=YNTWٰVA ,~n]#/٥0s>Ks 2 sX%6ֆZ9T;e )kܕi4]2<_Llbn>G:h]*Wթ!:7()ejĀdg9/A'L1Ưoː`?}/3\DI햚nY\  1*L_afCAgS/t`,·U0l'cw[% tcGB@پcY1W]aq 9ckj~>u>|?YxX-R |~Ui_\FoSy"گיz&LېХ\*8@tjAN3L`NÒ .fK-OH&f'P@5iFcCU #؋샠,7aϞu"Xק)ϾŖF>SJӝ50ȜВ⣆x_߯Rk UuSߣd^XB0x~DlK,#إt1]))e©ll_op-KS;Q *>Ƀ7`l-1S+s1n_G~;!?*M.!4< 'fC0_)͕w>{+}OŒ4~y3o1A2$Υߌr'H]VWc¿(01}{595ǹ. d|3$ƹa镸rQX?kO5LOw'yQ>?_46}4?%~k;?*J2YCVr {`_;Ms3g6)'`I4]goJcGM} ]m El"Y^6qKbN˶SVkynPc< VxB}jZ8-V"Uz%˿R0'gW= wN7l_vMl0\D*MhL9 ֞jcabhZ4+{ an8Lﮰt% {Ns^{ U"ꑟ{EjUR>]F ~uf|c @v*wyz A?Q l]) k7{VF MߜnhiUHBz;zN`Mx7%T5X ~).$]C0LoRƴ8fXFW$Ӝ3pKh<5OziT*3Tc4.ڛ.5[> OƫƯK69iF"߫['q#`㒬bxf"y't?™A5 fpR[W׽'R rz{ dU᫯3{Xzq 8URm )6?Գy`@d&Tn_NM| DAEjpr^| "ZFA5¯1[Wg3j30 gXr~ @-F9F`|x9d=Cbɳ o@Zdկx'pGp\_8 i@Z6 n-OWGZ,u8F+ѿ-/߫ݰ0M@ @x^0~Ь:%s(?3QdZ[LkB\[ǹ z yHE (0s?#\B#fӍW 'p ~CgYVtC_^]B/a'jYK8=Z;9Ι~u.@_\]u沧W4xZGkp_@3~WDE!'Z`$SȞ:fFp-\ lhYsa;f42ri-!Q!!]3()(q _Xj7/(ju9܈ |-_漈v;TMKVzY#X x[0? N3sm NOw%W`p!C'V!:ZJRNkT\0_?XD[O?JS!U!7# sǔ]B={܄ZvAA/7MTUDBGue5$q=aj pz3'> \@86孁~n[BO,EFy|A\Z3N<.f@O{U8.s+RFt Ql`5.\joW=ϭ6s^r}!/҇A&?cpjPvqYTUBhWx="`xB`ЦzH)7`+`498B/vl3-"ra)U(' U kE|ςrÏhi^7usNLj͌ܾͥ_?TBgkoth.Qw y=MhU gP{!k("ۤsV#gs^T yߤYf9jRR’ К y OV'B -LM4]~Ok.B$S#+L4ь?=ZMW{ aQdشI ]`qX;pj_A9&~v>Kj`XM!THZ*xz&@_-LCMiVf7?e܍CW͟$`AS_C {1.5UB@Ih EANd4€H1/o٧Y͞ a s Jg\WV[H/ϭt{ń @~|07oȫ|u3laY~-s.&AkBVŅ{w]/t^"( X9º&Jx L1\]P[}. 'Wc{̫ͨ_S^\S(1?>EivOhwMq ʖyl صnT,a{q?诂eT 2ExF\"6E6, 6o[:e2=]XǾ>mLEnш] @pn6bKD2& sk/^*Vzr 4%&\:??[~\F_H65)pj-N [h4T W`1gHqR@ĭ\q+n $]UFDXk vN 9}j&03XZX(`~tKҧC}E!do=9l̾e.D_\զXK]L|xU[-0I Lzf)r@Ā|  I xo!%a$ҕB$Pr^YI"@O#s\0j,UH}p+@S~L|Y-F4h3Z`5UHO'$"- Tlfn a08^8j dha{@-Kpi9edIs(1ͷ|ܲ{{sC˅Apܠ78@`oG$r`ǫZ~pFn[Y Ytn aՎ̝_D242 x?_`s'qggʿ;*H3HiDU5 ]Y-m()|nutf?맕Q TMW.WOrJm-O D O\\/]J$15s. mLaZ(&XLIjߤs`$r3Ln zThSH#KGM `[/t/g懹wJ<=L>?^zD=?m7:() n N0lyFzp?ej"C@`&{<B M(&RWB"$mYmVo,pg۸#Dy\gANZ.5L@x׭ Ӽ/.c_<.=;,g7k>"sXO6LA(]_JJQM*=k6LR+pIW[ŘJ-IaĹU\% '񿿹TڽCXC|_ڲuQ:Vȗ-ZҜ'Do7wL̝dG\"9 |a tg7+{o 6Fo߅p9r'`|%@@ 1)tis&&Z= aJz` @5b ! ౡ={w-'{϶o RPh oӕ-'f>>p,uv: 9na Pއh }`e_ #Ɏ29U5?`¬fhG͕N }I7GWiX=TZ V&=p.&3vX{i8|ld7i/RV6~|?"=KNֆki9:>mm؁s/Y$Lޑl,ET00.}Zh-aRΩ, &9~#R>OBu7l߷mP{-/<="D67"<@__f%t+;T9㒨?V )` CSN1qbG H:d]wKcBϖwC<E !_w*I8~TOض<2#]_5g!~)ڜcduyB+\[ '˞XX8M2 "gqf7anvw({V.i-O`NjԸa>uÅa}u9zhena ÓN$fd)5t':xՐ=vwi:;T0mZ3[0ٮ;X<@e\jl͞Ԉ!*ۗ@,cLvя˖Ԝ;d0!ͭi ~rwpCøp_@(2lyۦn[w9xp7D2ۗp gOqGY]L{X~ۻwoh<1/6foCW2hz3y|,Mla`0iY%7hya~G~/B@~yG@~|wBa֦lIENDB`pybik-3.0/data/ui/thumbnails/Tower-5x2.png0000644000175000017500000002304213137372530020563 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+%IDATx]w|յΟwf{V˖ r 7l `)`cc{/,7(@$ K9@}j;e'[wN/~dE0 `.ILf40$i&L3 `ILf40$i&L3 `ILf4c FW7mZujVijk9/n7g#@ &ϯzږ0"mo*|]Ysb W>/?$2/?E;=Sh'p>P`IjU42] !z,q tC{#(z@CekڞJ" ܉ Ď~vlE.e.pL  C"R5zVZCAt=oi+׵A7\vea((CU ˡ+F%ZlL(u$hcXGk# β(A;"p~֊ݨjsz[2 >K:"=DkՍvu#" TePEx э{.yk]("H[cv/1!Π1cr ߊg 8_#Mpb%B `SZNH@Ԗg=29Xi'D`ܻþC![y,RrQe%5P, ƮAC\ &}rxjǙ[t; `X`c4! 5?6zNij0"z9Qz9 #bfGp}|>+bf i@ΗA2N p) w" JB_OX-w.ɰ5o\G퉑d.4Nxl]8UxI A@Qܪ>Yd>l} S-y+ڭEOESrkH?HYq o}=.a C Sl8%s]0bEt@ ;OM͉yZ~'E тnj㡄a7vIK ]`x=QÎؘC,yZȰ9ڰrW Iɳ2{ȓq[G+d _]XI,"&A!bdgm#?0\80f "4ȐBAm;{Xh͝g"]u^ 0x)mXN)d?#6 ) V΁0ߟyE6<v$Afz0n[2;8TҐ J|fN?\OEh0E:A3l"~:wtQ eحdFhV3 =I3`kU`HJTY_T惂R )x;un2H2Pn .¸SVҒt>*˞@/>gȶ)눇kΐEm ۭ#r1]D^~+((jKM-:9ӹOI!{KEPpH" "_K{DYv.?(ho5@x#[^)+A7 h?'r|hEQ]cBvP-z%y\ KhP}ǒT؍OݥT?ˤ`‡7 Pp)Us(VwDкu{q!n.{@/ڦOF R;*B&MғL`ϋ8\VR㝬0}]T!g4vaO`3m`n7nH$OGEtR*=װR=ZN ~&W hh=&HDС@ʝ_J{-_D飜K+DIm`')7 FW1 H7nYydC#?dź9d"#Y>y\ٺxn2XE!p.7SIhcDl۞_5֯3ۛ>:3}g`wI-Nr,ACG;Q& ƒ6ȑOqz635|%9?oͫq84b69[fف@ h`du^=$#eVHŞ}a&uC8 o}]QhtZѼP(N@]q{QpNؖ+l[2hd?'tO5Q3Vzp]Xdb-iZڑ<9Y8JQ1pDSMacōF>+}AxTHyؕvvP>:@X9"O*ߍWS0~~ғ`GHuys [D'Gxt EU D<?A/#w-OMQA o4xnuE`R3^ab ڭuRig#Foi:,,Dکcuᴸ@{,ǻb<:{1qr=03qEtp@guD,6eݷF|)=XSwԅ*K[NBL2g_ i+h={qd0 G+*>QԖs#@C7 6DmNC,;o* 5)yynS쑙Ds"xxo [Ȯjc{קlP f_&K>"@ZVyo"БbT=.ni!zJdKwߎ">;- Ytw=#UFⱐ<<{5<<y3]?*^'~?ncejkLxAW2@77L?rGBaǡގ#ԩ'y;7K|g-dm]sn}tU% ()XI+CFJ)a%_Q?go2U%ݨ^M0vb> O^j6~+r7 ^׈v*ٞ:վշxR/T>T䰷^L&3LR*@GtA,B@0aXje2>U}cqS&/ڵ,'%LL &yp]H15hf{4dF|!}llͭ:X:3X%L.?fYKz{8w1 Д6Ţ5Ro!|3I! oAka+!Pj <}`\p] (lӁ0[bcKl/ljӫs.6sB(ĝH)v0 +}"`~!h#r+': T&H!t\P"@\KVVۮa"D0/t(1 o1IE9*Dc_gXWa_͞ﶮjgxA6 o+]k MDk,@|` uCoRg ٚK KbgoS'D|lJ)IJ139L(=(*S$SOxΑ_^3@T@;xi{} Aٰr;۽Nz>*7!xCWJM.F`` Nqiq>& vn\@"bWe;%qdh]HGMғB:Gx,J:'$7{y0}noY |p{ocK C -ЎZؓf<,SK#4B6Vl^['Фe~8qfP(A#,Fv$7Q]@؊Y^v47;R P64A$D~{h,5*:F=u$GEҿ:6]Qgq]lDW` ܳ#I/ܵ_~k L<{; T"›Lq8DWva {8y| [ek*=p֠Pl_>>9;[/j e5My)$Ix4{+6 1CUuwM~1Җ'O!% I2Q>gyL|?* Hn)n= A?iuc݃Ya,T.b3+{y/=ĢBi##V;z`} *Rz@$QbaĐv=d!/=?5_'2'pPwȭtXcwOt裡IA>{+dnoދ\ fPډ4m~C ו6巇$><|Qyojx -a}: f*T1ү?O"H40n5($8 +#B&p':p]*H'Mv5 ދڢ0d4}T"Gk%# ǵb;/9%8Jމ:nN:qRjiszdM'qc5٘v> xtʦ<)D8;W;EYb'$Tn!S9x/tf&@W+d1}:8#H^]xNvjۥ]Χvq\]kM)r )(=!("V(BgIn0 [x-žվ`7#e2%ݏ3hԞ(ZV$NkxSp-"Qꅡ0j¨ &-{(\Zݫ0a%J;$dޛ>br"dT$H%|t+֧q}Hy遼+/^ίa&,XކvC#(Kf y2ӘD$Y0GY4j>w4; >CqʲU6~p'|`9|pеolZكa1t/bh7d|tM!]ynbT!M{U^?5j?7?Onj_`B숥+xqi1ATڋ?"|6!R`Is+EW%{o{˶'ע>>f\ Gv1[`Q6~CJKJF!6 y^<'zKz9ɫ}-ť0=-i@/,zEqW@+a }V.++AlGvLž>2|-aY1tFFO.B(ƨᩤFrMogsntJ [ؖ/ lnk"5<d<_5|KZUC xZĿ%ó`*yJsb߈N੭VV^~uKA5~KZ4e$2l~+fegQ*)sJ>>渎-9cSLx$@^E#AD7#sWKz m] 殗n\ׯ jx@wI|%@)F>{ 8D },y& 6PxEC ]Fjb# DwIrGd;%(^ǹF7z6M&.Ax3'<<4g| xdspai1$$pxax{/xSqKXMz,*) ݪf+EOgsM&X4/>:"=b ضg_$@"e `/=}8_5jI$CJ?Eky[3'Dz-!{9zx-}+Z3AN&<Ȍ^|CmKHL4bxH཈"fL\&В7 `I"0$i&L3 `ILf40ʷ7e4IENDB`pybik-3.0/data/ui/thumbnails/Prism5-4x4.png0000644000175000017500000004406113137372670020654 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+GIDATx}w|TU"$$B 5@BQ (}AQЫb[]Ut>9Ν;g3g=s3=?.?E?~q?3ZKsx^tR<뾲>#S%_n޼i5$w ٣|c^&"b7":B&+v󟣹3b&$BZ Hz/4ZBF-}p/lZ91RiΕt#G͛rrrDzD~~S 6nݺ"77Wn%E\\",4T$x"9"w35-|G.D=hG!'D"(Qnd3};KHͬj"ګ@wuǂ0YRZB8TIWe#m Ud҂DbpEX11-QLfiL <ż=3DycA=QJ7zEVV jH`{`_FxNjt sDHHd,M}v/*p߿{&_>mN;`V&Z]X0d<-1Rh9|Giic8 ##DeL 'Ibjn^PGL&ꔒcn D:c$WA^w4i `Ӡ1 ۔W1FC! X*'&!aNs?HcԮE nOKtڎH yRM+a[@V(wwAT3Iu s x ux\Ѵ16*@fTic:Ai0;HWnؕ&[Vw Lp4~,ǎPWnJvIL n1 ыE8{s2wI0%7-(DxM!Nvj<Υ7(Aݘ = *I ". 2v/-huI]Wqj # ~z"HO#< >-&WAԺ^18;-$/hczcAQm4Q-& ubqE#"CPy0Р/udNrhBmș*)~F$W- pZKF쐬LLF4DgHIe C# \SW'Ax7;ׯz#A z KLƮC71}]AT:_V^i4E M!aT[ qbTr Fe:yYflg1t n@g+--eCXXH6%ȐK{ʠ{B,HAD$P+tۤ[\ $& e2m~ª%tTm0 ~FDJ0q=Xgx,AS 9j.V9tBk~6 066INҒdrO'# _T4*JȒ&bAײeKђ@W K@Y~TNRmQ'i233A?}X ߫Rœ׷{JE٦|i&TmZjUp,`wL]>0" `fwp u]H G7Ҩ<DF_0h5C0 Mٝ i Tc $Y`31?VApF!@Ik 0q2@a`n#U b^tj'qϸU.=*R1gGMCa hͰ6D* 䥝 f9* {zH#L|Ӕ% 080NY4ÔօѺ/T8vM`Qыy!,"N54 iN^wSi]b!U@S$` ( nNG/$}=0n͛IhG:J i)oa]EDƸH.bK@кIUysJYbZ*(7}(5o72$X6`nY" M} *\G߇Dy2(H(NU:: F%?=&k^ \5*6$Wa @+hLv@CF !600~j 1'YmH!EL&]O$C"NmBP8}o85>vm͏\5D m\vm AT}=D7D_H+` ebYd)Fb~ p+hQNf:LÉ'vzkwѰ[xCAs0>^ ^myA5Q^"^Fv[6XO؜0ҡ=4oMF\%g9G #y?|4r^#CTu;r1&jC^v V:"x;`@ʆʂAa1+6NZE3𞲀#~ pwEU07 Mar;*Wsc3 kfIGb{lӧJ_Ñ[Fb6o `t  nsaaGrf;Iњ,eHU" `B5t082B!Cl_͉h Snh5op)?vmn/k @"hv.?o JqVbB,Dى{ܲK&Үz1uǍ)t&k_?B#60e+8j 0E;0%Cl׆1NI-H-5V,pXbP;UmT 2wuߘs6P+P:A_-a_(BoNucMjggz \W11 .YJ6; lHH2QF_8ec3i)lT[nݚ'ku]"&3ӨÏAE004j9'e( @r_"8N;vF!@ZZ*O5tZ(V.;Y7%6L&DJ.-qRZi!_CnnQ*|;dxTۄ)6߾ ޽xƊGESD$ą7G8qsŃC @)5C9=a)5*؂@XLXL6Rz]{0b\q?1Hs]1J,Q$%!a `|̿me(:2=n˵P(&ݾFc3-ǹ tzho~0'maܰD^r^*?G7BE7qFy T12tmbAD32Ɠ1 z$Y1LGFk 0z?]sC=nkG.@\D?a`>o`^%=`٫$ 55`;hi͌}W mkMPkg0ŭ2S.}/jobL7ў`2z+e(IsN\B8/X5&0*ch0}Cjd.0Q6 1g+HAzИL ֏rU~HW-w̮!Żu2$ ~+;/^rZc4=+N7C q~׊Ăz~~?<+c~k[ռnY+ O t akb;Sb(z!I!EXU+6WF챫0G!j;1ͮ/TzěR%C& _7[Gw?s'ɀ]Z[O'ިNs,V[0"4Z{v`ҫ/pCyaphS5SDg&CBOr2}[6@ObŅ_NAl#cJ¤bBT|*pc5"bN/yn}Ҡ(۽m-A.N[cL{nV.]͚߰ ֤1E%qǎf'u!iᾕEG_68ɝxKHbjMSLe'ċrwmNY ;@X# @E׏4kZt`* \vq?$ajLp:ؾUS.& ۵ X9@W^Ο7!A@Ө{E dcxkͤJUC-Bh7rUC0Q Ж>)#t2<Fj)J:x.XtGv{yi8%5mx?c|IW"'P4d0_`1 iЯR @ vN~JeHՏxLHUOnð+$lN;:r_I]Zuw )n="1}kݩe##ɶD{)WLUܵ dAy/JdX^& gN>%C1 'f~D <|n"Q,& *YeY$W؉`:_Stj~1=ZCcQ _j#9H/L_CgP疲jDG|Zv h}9G \.X(zdi xvLΰ@'Hl;}FaI^=*biwH; $ !qPF"ztew:V%sGN*h a!m67fRLPAbl/t* KcDeJrhG\8f2LJk@^zpQIΞ%_(xV zn_{S2f^铢whZ`b)`LId$+$ PuMk@da ͞ TO%AJ|5nAK8KܐHxVaF?cei"|Pv8+5h#TVTGX7Gt{rpX #zZǏ?~/PױW8hKbCd8PL͸f*9$DH N'/sK&`v4 C @GS90]KdnGNܒbьpoa(HIbų]x/_-%Qз!@fߵ#ic6ߧ7?{h*Rނ. u \Ϙҁ )OםE.-MD]` v[twcynW]iW(Z0b6qWvC5ߞj`I-KЛ6 M++7TdCҚ6s-nѐ,#^!APMĩ' F^(`:vXD`i{ЩW0a%z1{7_3@pxk#Av;o€(?~1K,'sus6nѨ셝޸ 0>|9ӑ59ؼPFtd_|oUq"ER%(yGL[=W:uBXXDѢ[F4^pPN;QbjAVq/~( .?| hؿl=]Qe"~}^hlIzn^} <// I>mDtp y㌱oKw126JS;E&W\勹b(ζ"ݪ·Y"RJ\D"n#\E\| Y gO j$N%Rx1r{zvNp0Cf'e920),#7kl=.ϸKL* $"l S7d@j'Uݣm:Iw^]PuhBC+~A$;QG>}"O R.Ja3aOyӦ8::&BI"")}vu[n/f924g|QY?w)biblH1夻Ccǯ<ː}KfJ:k:$`eKve/\ [.u&>貴&M V; j%c@.Lo!.Yl4VKJFLR#Aw6:(A#+ ܤ]A< @1R]I{Z*0tzgj @`z*ƮZYmv6>y3#@dJE`s,gUqO dRq2[mDR._j=H>9ψ|>7َ̗}ޝo}@&u=סbU7vPݐ!e A[L 1V=\p|s%+ ڱ Hͽ0uo+F2܎du.?f#/a @F0G|и~>{緦s&!hVK<0!Z|t6C7%N8GކG ;^9[ Ѭw -BU_#D>>kV\Bu`(搇^2kصcְʧ >(b504?L /P}%_'!:кG}X* doxLrT)`ux|rߤw=X m̹"y`0t]V!GEGL>(&3=5Gէ i#Pɤq*4ߧ{hRJ2: Lj:YtiH{|ú(^Aܻq1|?v?I럻QEl.fL q B #D8Ct УD8/h&=hW 001ho>< ۱ES'|H#_9c gP_MnwnO.!]Vt|!/0Ť@ 8 J r#v LD~LVG I1`mfj9c Fn3<@"A0)T(ƋP>8X㯙K:?%Az Ou@϶2 |з{^3,[znڥ 4Q8tQwN_ `>C.ـєs\d(AujAAB?OrE\:QƩ! j.-FGOeȠi) elb7zVaq5=/F8 D 3ƚ\pv pt$ӓ  JzDl$vpA?ۧr'1];&[$#/N+yAhTAEyT%liTi|o}_><.̌{Zt7yH Iv+v 䑀rQ aC ЏotԾemb xmѮ4\Q70Ԧ/x],#r3e)C(DP R<$ {ehpg_&v^0&-"vqG41{@ɨ}{0k$vq2F>O<&\:F#cf6Ap5G &н؍K׮ I#כ!&Itq%;!~#ːROpGH3vne#ϋJ@| oM:]rnE=$uO7l$]?v*7E 'rB[Lib3F18YdM$#O S 8:fv{,f)0>S 3RovAaxx՛>1 >C&inQU#q) C2P٫]X9 X:+>fCoe_Cjd.0x\L9fW 8& Bhܶ ť*mbT[S;Jp v @0{F33ѴL|vtwoNaFXû4NO]h#tݐwc020as}8A6 7Z{s/̸7TO;܈v5a`: /pv|Ogص6fM90m:{,F싩dGUb5p:ohK Hh0[ak 鱶IuS'WQf]/]>>W{T4D~nxBT23JKƎ2^CDAMD0&l'AX5?^( 3N|3x=b8ҫR-'sg㴬^'L;4? ױA8s#4| A<Y.6`[F<2J Q"WJ[E@l$.xبSPwh` { 6]F cP8X&.!\sD>г@sÕe:=hwT=g7v=" fr $s/lP:ۮل ޱ [W! &n6-XkUQO\Yf|&Dkr[T -1ׯ5[v:EC\wC|ݢq0WڀTs%Y"6Jν ,i[͛s @ 8R?z!Hfw>vt >}dJQD@ Gj P?#4+ϜFqesdk֗6!?p0"X-aq.!)㸦n\!Nݩ<&6*Dv YjRxݏNW$VaUfu6?F >+&wj$A\Ba@ 4un$e撻ieB1wmck6ԡAk_38PY>8-O9[|oEQoJyi\ޢkn.\nJo\E>kVuL`{@b@I..>Y-KmЁ{$* @Yi:Nva>}XHI7EhqCev}@ɚ7kXxI`6N D:%Y\>B\0r|FÆ(_$yrÆb)EEȥk!V}yBǷB.Jֻ<n+ Q;uxUJ,WF둊 Gz3:: Tդ.Ԟ\&r̝; -^)H;4RC.x_'8 lB@%Of*:lc'k BLA js*$ѣE$ Luf1/$hc>k+9O{\.2/WQ儗s01Wh[ rq(l0V3ȭ –dѶ[iĘwJ\qTɠ~֩ss'o4$xFL%׭[}$Υp8P. i۾e5S]m41\k|w6\ßAC!MC'_ёҽ{Zcb`H1~m#|t"C~.Mi!ZTle& a<ÔBy|*r۽3Do>j5P?I9t0bb.dD$ $cNǺ֒E:zx2_qf*41uc=EDeMeʃSCW1ѳ,xUtKL [Cbx+^ ,f7k&O;q~h Ӈ1q7:(cp34ƝF0u j{a\.5F!",:{=>~ ;aNQr 7j }ҷc>{L',I|r5$;U |y>|jPȭS@h1#?YŭBP yYD@ü۶7AXP T;;v(xXx|jxC]bG=٩.o5d{눌Dԕec9&9p8d rHkub|I $C{;]Zv@p'RJN2GjD/>99+S44d\*dVtˑ ȦdY be^w/O2v76pl]qI Í\@8\tbA3+/ue(-sVhCOdpDpo 7R ~6_PsgcUh5nn)b's:(&ThCEr|YBݱf8oc791hf!d0S YcEVB 1x)m4?hmG09zl^GvX(#縵p8J#? @h{|rdMU9qS`#$ÇHɺ~߾\PYwu&¨ }ǻ!QSuB.w>O;xg*Vu~:;!FKAr%a[Eobĉ%f]kw90TV5 ?fC@`XG`<>߻my9Ԍ gDd/}J yxX8cь`ιcG7q/Lr 9R 8OlԌ<1|vFitDN^{@K? |1ժқ8];Fe5$HՌ<ˇT`g FRsg HPhœp$ Kþ<Ӿo>IZ0 Wf8%<'NHIUrD !g `ZPF0RZJa|ݶ-ZIdݽsd/s9 7$bs)?>,%H W1vgT#ᄊ=E,}j 5JeG<q3sQ)=bi$^N=Ҁ˵=ph]H`91>{><Ƿn*Qtjˮ$ K\?*9wm_8//;;RĊU.)ya r ބq"zb܌TGX-| v x*{B 3Rpr{1niapYMIK2wך>}DI]G2 7&;S377NoCluh)KQȭ8G/4!dL5Avg`DbLB#AhֿZ&d &(R?; 1%%>:#/]o$\@yEzJx 8o8V.5,cU.b3z=+Oȭ`.NļTݎLogCX? y`s^O姉%S>ETyEa.ײo6J+.>]?Ӎt~Q`@6Y`),5飜hЀ{cz=zFpzћoX8=V .pP pX*)U{PQǙ\FjH]<*$)%s oP\]@*$%G_3cgKyQtfL-`QC./4VTEۨā2#gV=1YtI_O[2+[ωޫvūcjc+od؞{e"nʁ2jkR \ͱU;2b2f4jBo~ïX# ̼-/Gi'{p;$ ~l}\H7uaa [H  su/?"{N-a  /f rpi+Q lt;;NE\`t0B]mf -јΜWIE}Lp"sǩ&1;X K~ koi0JPvQPfQxh7h/G@<b A|y|ֽ3Gi|lAQ=ib폈?J}~e^'&-xv@8>C=l0x䧑N%oz%r:̇Ч}KH, iâl7#rͫnjlc:ܫK(CN"ccM9t/#3uCfH6e'>>7rS&߈?Xd(%&  @f4|<=&MwsG(c|$,4@Sلs@UDi3Cd /X ,sʌ@;setk=Ƙo.;F-ӌ?&fMJKy)AN: lI2fуb ׻GqSsk`tIENDB`pybik-3.0/data/ui/thumbnails/Brick-7x3x4.png0000644000175000017500000002027613137372566021013 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+ pIDATx]yTՕΟޫ}TA@Y]( [# V$FU.QQ  @51%ę6ɘ;;ڜ_?ί-su}~ˌ37̛` &0 `I3La f0$&0 `I3La f0$&0 `I3La f0$&0 pBQO0A;Зƶl[Jmx#^kx,-:%o:['2Y{KIӐj]nYOXѢ9`4 @k} o ",e} m(z@BpZ":?]!4M Iezm۾bI<'Tϟ$wV:dLdXȀ2;ȟL_K?Ulmz=qG{GZL2 }tg/@d'2NS 5чFwmQq3jlV>G'~ojT'T/K{H40W=D!v ʞ,:dZSF@40 P C9GȾvIvAUP w  Xb` `A$2"$"cl,D |~tG #""C df#c19 =hcw * ƽ ӑ|ظ} r%!?rQv1*h"S^$8%t93Ɍ(c{d{8v/ 8o<ȩ%@!(ЇDǪS$xε̦ ? Z;@x&Qf H2H0์D{< 4̌koND[p 0be5V@e M3UϤm$(`+ 2L t~>ג|BDwҹ^Sd J:\g.DuLPZaFָۏ-y`fp:t ]O7t,"T$f(Y\oI/&vn c`~##|.SA&Hd."MDy=(MרrL~s~T;Ed}UL ~-׳ӎz3b@Ij`A/D#c@G2Ӎ}Xl+axA0>ΉcFU 2GDLo8$$"+=nj %Q} }Ɵd)M-ʅ~"uUh})#,!SJZđbTTB*ӥO7 }z2ɱ7a2r|Re xo:O5d) 3< >v\u(nI#QJ!۾aGhuvݕhxUZnD I}tSob׭}OSL1bKP#Vr}F荍/Mr8$U.zrRHSNdڕlh+{wE^ĐuD$Fp.lUF[$ ~'Y7o.3 0 WH(<_fP'L"ݤDiŨ2j_t)H :!^/WRѣ*3 FUT*p=?J<,>줋ZCEEt\.5(JuH3]](79.R!q)ݤWz}6NO3ٺ؏٘|ml.t 7[ikQdE.id.24e*E 7Rү-oֆ2=- / 0GAY"DzA'}:z}DȂ!ts 0<ݤ;\=Ȁ4^MSsNj?xd9c "|MqBOħٖ7_`az.7+iT"8^證@ZEm^9 Dl]}q2~>[" YCA}O7hUuIʕH!AC9Y"[)|gژO Ҕ岇.[.,mZܹc}5@<8F03i@2Bd,u,T`,OFv@Kx#%v"2 S*S&\"~Gnb?" %qlc^Yha')6t#@)jMI' 1P*<5<@b<_3~J=y~[ăJ/sDRG"1$S΁WDaM-tyEkAp\ \DX΋e W"=NеD:I.J7Njr-=?#%@\Fp+;ҮQ$ҧz> ${ȑ.&y8+ t$RKܨ².[불}B| 1bj5sE+]ArzVx ,X@nbqKF"TkOUK 2RlkpP=ǨE=/T9 paH5[UJ<8~4HBB65zZ_.x߳l?uF! Ө_s w 8Ĩ4͡kS F .IM#=`;oUUKy(ʧ} bDn" Pq|\FPt%w$#9~FpZ8j*`L`P~A?Q(~M|Hto4+0FP]eHO[΁jfP8+pe ʧeZb Ǚ d+{)veC'۬,lN/5 7^ dc&nNp jV5TH$SZ-%ʆB"NHQ5i:Tq(X :KaV }n'Mŋ·C#ԊjcχKE kG ofP (bNގ45e6žtIGvpGwᛡPTjp<5; sPEF-piD7䜾'mJ@' Ix"!؏oX# O^5{lw>&OlnYp\P\[f+Q˾TAYa96[,(-. d5bmUukt.R+:JK`"@Ȓ~Q& I#696+6?C4&w&xPJ5.k9DxVKqX DMuyNu1{ƣK6VqNu(t% i);vg #.ۈ~KF @4.?0Hz#^ W(QF5,77x3(!a(M t'8D>0k:y \M-.Voih;m+!-"`ԼuqFCz- &EJUK)L"zrQD[}.k7H}ɞ{xØqk޿]eki6x"1wS<}oPrwKM[`K͍D ^R)] G % bpHPbb,4>RSt("T.Һ(CxC2+ ] ele7ZWJ9b$:*3SJA Ƿ2č[9!vo.q<6 gZ_^qj/w^<\;.d ݩ9Tn׎KD CP\+_^hI*RIuT!0/0d'/0YzRو!tbH t@- `v57x%p !d{&m01eޟ"'0QN:u P)xg1:Dr-YNXA ED`2, Y})Y._` s*~Ogorߵ3]O R~ql:!_9da]MCir-nceGpGL[]cP`r$ #rA*j;x"J`qKv"@ p4G\9!X±X]G=?G>O W^A7 ɝDT)4d85m?5,L$])zz[.lR݃㝢(V>_"& ?&Jm8m(ul⺘oh,cMzS~DY {*,BHZU|5p "K! nO1Us*|~A>lbTxaq4'y ahVPuMkG%D-%wN!{xZUeg2]&H$mqX/Y'OJ 0[_&n]^,j[?,9ygm<;4Nj6 ]]=L$F:`q9Jkb'!P>V *j6):{TywI)Ae5zw]k⯿(GvD1)V]@ҷD|򣑵ߝp]}3VK#qf'"F " :~6^r r瑵v??R**4~.}ZvºWXuĞ• `hz29nsETue'@O:u-'2yFD#Lt~1o[^9(TpK㉺cܷ=NK VO&S xA-hXnU-\2UJ8R9pbn\."$[?E:X}DS8+ĚCJ&-0(Lc W0NjGe` s7t~OǓT_cFvĊńK'cO?ayQ] eXPg|00kArm`X.yUrB 0l[yPߟ0h['z؟|Y @J Z:dp4,u0 RIbҧDvT];E,6~ڰb͚& n"TEZI#03 fcx0/,ME.pY 3PfMSx fA뙞5PA(}G bwk\FYaQ" Nw|ym^knsMS~V0śϿ"nuyL7$&0 `I3La f0$&0 `I3La f0$&0 `I3N?BIENDB`pybik-3.0/data/ui/thumbnails/Prism5-5x6.png0000644000175000017500000004367013137372673020667 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+GjIDATx}wTEg\`sOOГsy9P@TtP$$ (aLk]Vwus ~o`X~=S{k$nUXs x>۫c=wuoc-ձjX#7XUHk 6)kLon0nj-Oϱ*%|[ApO4_i=7+rD)^#qq"%%E$''@ I"76VDDD.Z8DaThYM*)%$a)$`16/Ƨ$ )5in)IsBhu=a;Pxv4vffem[uҬDs[5ъԻ&֟՝>!x;Cq^HgR۳$WN}  K]e>n[Mφ0s}=J6~C4ϛv Լf\2w gW5q"bRPGgff&z1~G:DrB$RZt;fo QpHғI=Hx]?PD#䱆9b-^Yqt>>zNx/0xܭ-a*:(l3xb"}i:2􏔂GPfF xm#_Hm6$C"@/ZD1oxFL $t:xD RAq .Pl4-+,=7 wl]Y{$j50(HT}pj`A%>t jB{fUw5`v+7bVa o*.S |^S T:o=i~o}@yjS}+2_Ulg51%cܢ+v{)=^1T`*ENB< i)41ˠ1ӢYgeeYF*==#0&6#I7;iJED},4tƎ' T*ŻEa8cŽAE^-n051`OZР<@7@. UMLtEҋI#>1"'S$2H'дJG 4rT C>TL Ӥu0#Oиdݺa3_NmYJ#XE̊ 4;t]| *8t~ "vUnuO[8&q{p{٪2j@!c=lk&FgPj}xD-67;.fP-ȢN"1`M*6/:4xɯ!! zDUQyC%|شe%v`%Q0 cÎ؃aC o)i?}/k]3P3ۓ0!]* -El;1QU '0f5܍ }]2EmԵfOpGpF3qVݹ>+H|"/6p5ُ'3Ҋx;pHW>q!z SIod@3DSpf>~P:i |pStL7w ݕtt3{:My 딪~~g/#BtDnNq~1:H<\!eg <% lj/F"Ŋ|9Cyțf n3{y]W 4- ʆf O'[Z0֑ppakW¾8WaLv@s>jzŦHaS|Di74t'1V968j޸qm]JIF#ӔO;$14h8>-LUTDq|wTZu@Jsô@1tocL#d&p>L@`'! S Ko)Ÿs^=LmB\.HҦ0.#Bf@Y /P%׸2 0p= kҿÀb0P"X@ S ]t]b^f+a_+?),&0P@ 5 R:|MTYݲ8uaਈF*-0a&Z(-Ћ>Á9\陑nu:DۨD:nTyu6,~V PʜUUGz:$* K҃yҖjX}tn5V8T߬N+p-TT:הּ@f52GA"G'Hϋ<!tNH.Wd1N=QYH֕& *T8=T=%84 aDjǓiL!S=C8M|/T5U ]DlsE7h^J c&< HEv|Vҁ>%{HI@Bqn𙞍o)0?>/,\-"DPQ~2 6Cc6#JB Z)rؠ@3$ƹ)7fھ $j>E1#gyܢQ?G ܛ*lGbjS"}j@C@!E}+%Zu# n^% T ly݈j݇"Z[,[Z$8&%V).p[(~B "f>?<kpMƀ43lo^$__WaUB#a~ɳd@`$| ihL,Fh2XfAUq{c.CA4ܔr$1'\;'fRHh LR]A`+atp$'ŋ}¾)R#E.!f>L˯s.M&N`a8|@ˇ汐y\߰Y!eU8fB[f,iM@ibU66IC.a:j9p/Gp*r=Θ D/OqfQXžϛ L xhyvlj"ĐO|s (R tyIF@Xؽ_(Ofcܹ38#[iT1(cPk( tL쑬=*߽M^@@@y6EKZb%g2>nV)BFAAg)R"p9\ '01>-x)Q -wz@49גf2d%֮%>w4de\{og7s'C+>!v1r>Dv< $azZVCl\+t!~&fsNZ&JO E M䂎T;5z{A3q4` T\zmi%%I65'2" "ǫUioLn xFjӯK][yP|v/K,If|%؃,(v=G#) ##>PH$ɶTp'WxPw`#( ?3 HݲM ]ׇN6}FtIV@ ҬF T<+{Q@PrUD nP0] 3+ӽ_S1?"7k#م:!]fo{39B`HZ5_w "N jQ "%0pZaShXطCWw/&I#@_lӈfU$kz4djX%MNZb^M|"5B]7c]bxw8r+ .vdZY,t4]m  "*E=[;{ v1\~3[-~@(@4a< F]6νǤ{\H׆u!>i,_:k^Yÿ'1D >q4Se AUqj;4IHXc# m-:ųLj?]Lc>f)3.)ӫ5؃)7pG&HD6_& im~`r7|r ޛdg txl92W1bڃ8l B=[w\4(=s`.CG@O8N%2̜NT:B S\4e>ׯB?#9`0{jܝɅ!IuFg'%r:~o0[d khqrx}aSཻeZA#DOrX%"͜΄0РHfݶl  @# T8cO~d`[umlj?/f&!y"+Jrӱ| o.rtTbF4afПb>RT(ycEXɒIg60W\ skhRNl26+Kנ;x=0>qmT$QEyAB#ws,ɠr('4ЌnT?_J]SU3`ϹW,4~̊s {T$&AޝϿqEJWνQ\oo1kbB9"cG@68(.rH!wpp?@]2f[Dݟ+In"O 0wp Ba& $ ?=۸g lH~Q7O pOYiv`O|~&E\*1E3~kW/ݦS'MENk=ځI~lخ4H/q99Fkzo4zd~Ϟ\ L&3VS_Īy} &xa%0 tq_O/pzk{ 1xpc}t/ tzYK)LT=䋳~r =6RLELXB >A|| `hx$(R=wfl? zli3KFjm›{?QXl5gǀgJ˧Vs\3kW@QЂzf}M겙~֙> P?q `bٿG,*vB-[(a_0@M3ܟi %S$iS79I."PVKRo0bMv5PKF@CEhMH|^%c%pD _3dKHI n[UcfD"FHmO%+t?SEW?!&,CC G:@ٺ|m{6.[6V# )4\ݓ!-[DaRFL |iI0\Q6 ?8״-pMd}{ )2S5Y}HA_>jd,nXFf Z`XѪ*[VЁu-: 0`4LQCA Hy\SlB jNi܈ Op=Ȟ4 ٷ(81<7gJ5as;{$^ $c`u}ߴE&Ғ"Djb%ߏ6T%~ ;|Đnn1HxNqK16j۾UݻϚI\B>>X0i"0bv픻-x "'s:Ҩa4pN395F/VUN ^۾*Ntnd:QlO.ؤG-@Aý][ȭ`A֍ƠEK28#8tO<8bbgNpptd!CS`=]CU3:D paN&96`>Eŧ˜Bk8 /3b9i(x1sJgϴkO[˧A@.k[/&RC֪>!zsY0?v<'IeJ<{wp`wlg,5+42@ a#>wr1 4u٩zD(2~?1"Zd]3}xx pܞ(Yxt,xn5 +Š;u"c2\"#Uv1rlJT{tNʶIT[?±5 NV_j.x<΃EDyib8T:۩CDЩv$%J|q5 //Aಶ(r_%w]272u"h`'7BP_IǦP0"@J*kfgkgx:ܾp&XXYP=f)LЄK sQ^~>Bx.@^. ? o,Tm4Ӓl4 G3E|Q(o(D@ |`mC,\\\@8D2+V)V-ENNF#C^JQ4i@{b23|i2X+ 4hQ3#˺Iga^Q~Ron_j.&[/MUz~r4>4ާoK1}M$]C)|GڥR|d1H&9 @?G xE^$XpI2%&Sp.34&w"jͮ ʵia^5HYSFw&}ulF;tr]GIkqWL?!<)AjbGqh:-|AREt"0 ^[RV5 p6 mZDeliPj`|vj~Rh^`=,3.`{B"PQ,t. T7fZeחoZ/y 5e@Pǧ[> &yG5l^!KT+t KaF~/=}Ω^:@T)D,#v9d]KS|6žpMd2I3&HX&êNv8>d9`sq >#L-J&)FyJ0e&`(n &M&8gt•JWS'Kk kV2_J3=ysɌu1݄+>N|/uflMW),B }~nF(z`OlkDaG. (^(.hj`v*zϞFl`PfrZ&\$AGG^1 _BP@$O`x~ G 3rTs(Wc|g3xQFO=~r'Q0ZE BUD%W|5 4蟼&㗂8dDfNUANMl_*ePN^ N*!Hh~vu4#/`? hb\,@vû4 x.>+K]_vHff.^|qoNu87g% S]\p&WS3;JK ~M4%U=^z md\:333g) @J+;zFM ?GZX0cj' ap#U+ %xVb`pwC'3dþwo4؄WL[;> bW}OOo HAtݐ`1 IX@xr4P`ٹ%<6xKQv.:pA1 sn Ąrq".7ot+y胦zKW+CjV{LL^ۇf:TpbGxQ 'X;}_i!4 @DmrӣXTrCPO:]|űpAKZ}953 xIx)xf8"Aq$Q CSeyOh2i%%qp&I +Dn.DVϒ! `ϒٲu*k6q N!7J&_aWEM3}8\(㧳Sy mYӲR|r rT1V~uGkeg,"X\!/Lkͥv۳Ξe #bDuSMID`<'j,gl/7S;j(~+))Fr}2f-@ʘ!w\?8|4M% Vv42:/٦ A5P-&]|(w`#KsQ =xn P[Ey*&޵@@B1\>ψ ';{"GBxJrgď&|Yf=or/ ,8whG$H%*=`vS!ޏX? :!TNkBk-M&!G@^4H/;!9l ! ]~Ǻ5 6`̞ܶ$ 9&K@te0%nrl^+h!~%p8Y\Tt8sC_ };VDX1!^48`GVS N9ԧJc}7! 8!&@xVt`xC>ˊ7,d:~zG'Ǫ~UC/y6у<ڀnqwX yl`g˰G-_\~>`eA`cThxCy iYBIu|23z RKq\tZ4[o^@kE+rbzͫ,Љ ^bw1lT. oFI6/$ܐ7W8Ko4v wd$:AD[/Zv=px؆c̀\>o,GΞ}p-fb&yzdX@(X~e mE Uٲ@4'˧EKb-Ŝ$+[wD.H+E<1;(k曆~nFJ  !pҤ5yp151Dj_SBc Ķ7+/uKhՐ)@į̔,JJ t'LP`bY_ 6߮@oOj]\В" :xY֏jEەh)Z4UwK-M<>8+ӥ{hUc)j%-L W 5 r*<pCOgjRA~wϦYp`Fc6댠 /2xt'`h{;௵3*ב[6ܠ\OwP*T%gS,-"!&|< I-6>RdN"lV/Sv[D]di_$t pl@1*$cN;( csVa &N02DD x"EjgS~I1,?<Ԯ&=~YB,A9H\=RY("<3/ЫȐQk@vޏ)P|2~{D}"b0|l ؼ+}rm6_&9k&gPYݚpMa+ڴ2ƍy싳8 `mVMBQ-j`^Vӟ`7ѷC4h_|59TGѣ_^IsbAK5Z:ɵ#zD/"S90#WUw ֨PQXjP1DPt֨`OB&ys F8œ>[a;q&]@&.kW(7$y!Gf mZ맲&L6wvwcmt#Q^VH.E ՞Z\9&v+^#רRP.'A ^`%uIJ7L<63Pfu8Ͱ7o|d݇5ň{ X5 FϬ7o3mhS2yBa4q$Nn'H'4nJ`}3@B v1@1+nEo@jp^Ǖ+x)x EtZXݣK+*w(&ISLsSZEoEaxϐ豍 E[Ezay7׭.= kEFv퉰xni>зx3W;)QMY>ExȆcwO ޛ6]Y<0~ D_K˸/>?I"ruPɷ W#cgY4Vr7@,@a=U29ī%lb-b#l}R+lYrezF Sbss-3s6ݩ^n٣ M2a]<!Ӏr2~ad,l0$(mXsJT r')|T~l+9_{:Vj%X٫Ӣ`.G.f `'D44/@M%,uĤNyZH?D`ѫ_͂U ?o=)ir#D -B-lr!7vEYGgLWhm0hC51H>T>o F )H`q;ݾ%stT>()X>7 J+B#{z `ЂI4һ׮7 JyRJic]J1 r1d"4p.v 7g\cm%:=?!; $Ir'h>f!ߨm 7xq;/7J2kx(>M_xy?DH0(OlV1~Z;.0VV󱇐Ӈzĩm?:=Ӭ6S}_DC}|oeJ37̸`+]DDO'B;AѴ}+o9>*Yv 'wdS!Sxs > k{̚D?C~ 2aܥMml\\: ,E}+d~"zpQl^Ps7=i\1;WljepY9c5Bwc;;Ebef`yU ̞;@HX]>AixY۱ۇK)/b*kgd~3h~ :ʏj͂N&gv'Y:.mT~V0sa pHYs++GIDATx}ge,BwU9sPI@QT0 DD ("JPa$u׳ukwv=ltso5SS="a^ =U}?s?zG&xGoyGoyGoyGoyGoyGoyGoyGoyGoyGoyGoyG Dw~۟1[~rB ^S~ >~OZF $ ޹^\&e6R`AV\sz{_ b9~t4 h\!4HGV:Rz7}U$C.B| k$Ky\?Z ɞ M|>y<3m#0LFlٴyvPP 5FkYowA} Ajp^~sY{gU . 5]w(=Yf\.P@˷t2z"$)"l¹ "([ڡn@!C@ \pKA!= @! HiP}C =BA:z[zR PUPm y:}r/}G{rfsWH)Q;8 ?}>tu$[002SXF\/_ &Ř>e?@!J @1(Փ.Q\W"Ҁvd 0WxOoN \b}4ap( 5n\:z[@XҮ>? @v ~OckE~ !" f .^b@-cFn3fu3R B:(Lw^|*!@놫_~$ pt-ݮ3A8Vw\cWQxLxyLMB8D疈lkjR `w`c-dG 3=c?c~ Q]Z+HW5 5߂sy聮AxH{wFz9`Fw\$BWa+DW8h Gm?}ԴTHKU"Hr#h 7H<Dp$U3D,ғ dX>U}r 9=(AŠpH }wó ]QqAXXxN~;6< lJބ = %?Rd`yHJ]~ Fg1w57Ys`aBK HXgቯM6mqݮC;v7ˏͮ$+Iex ,٨zBA1ᮙ3sdnuwᑠ=P'`BѦύ3>d؍.+\g\Ϟyz?QD1??(j!VÆ}xCar}l8Аvn f/hcL2Fς uD;p-{P/0@ ^=%\\bfڽAIfQZ˼]O"9({CO[[ytbֻknnm4ʲC:c'cp$d*b`#)G < ?,S,;_6jp\t v@ZA{]Ea)J7+w^^pN6cQ& rg? fG A-iXjz>'HG]|t9{0]Kו;ZG7l;  w \;=j2han`LJX(|Y 0翠su4nb˙$a?">*IA4ɸĻIDصE2:Rd Ŏl'xix8 UpSCykMfi@FaoPtqG f{8]un&EXvDzx GY x:bȐn0td U:WUa+)d,$o{=mzYx6t"ͫJٹ=;6l(V2~̯WZWj]-2d:?Sڨ v^c/އbs$@0H-:'[d6ޣ"1!C*U1fJlׂLEc聆➯=;\pݲyz%&/ FR>b/lcXlU[؆.ZV ӻ Iɡ{ZJg'kT\Ṁfb؇hT eׇsm#uj c;xXTJ |թ)/(^Rl 75|S?8tLrhpg*0իТp& n~iNhux~VE2\ UIርi69< I.54„Ow&pVۃ-g(=kEjE;a:#&EWk\P=7gƾHǿLsVIEEαM!A_2Up ,X/(`ʓcӊqn&UTk3EhR.~<̭Fq8 gEXlj4HFC袭zw{Yu yXvq*)3>t3GFʋf??- /<I?sDUZ*cz+,3qB^_UL <-@Ȗ t.Gq~m76sBm0CafjG0\ħf GhXUoq&. µn1a5xX*WȊYqhWl?]IiPZ01,F^ xav^uUt~wTOb\,(S#c(x=d|+um)tTbgm?H1am$q[a=LNVk )JOI!ȗ7DwogSΤBҼ{µ)̂M*Xz# qˬ^I݁ƲP)T0i*MgCƪɷh;zh \=‰Iv}YƙmUD"2P°M>}-jHR]GN0FNkHcpOȗerݐtikܝ'g/8S''<֛Mf3`v9*TZ+_M~`|7F=%&؋! R,H^:_0si{5`>mlπ/o)$ !Cg4or24UנkJgC0-ޔ ]&]* Y<.??ص演lZEf5-k9{cL]Fǚ=c %saD*}V+6qYЪɗEIt*vfZ`Z: q(!$R?oZHH2&覩9hů[ֹ\^wjŹ4 s`Q} l_Ӏ^5."P=Dvmsyc}m&5);*! id^[L,3%}zzE 1O B HjKᖍx0c8X 0g-]#HcB13h K{ ˫@%&/;ҿ[@i ;;;! ++Azu:H 1 ;}Zt9:G>?E%uL @Vg'7&:~|$D T bIR1ܧE{&C؏qC T);45KвN^bGVPgߟȰʀ Go9qٗ/8¢g~^RgnqTVBzV G &tw*@Zԁ?~"V8< f~Z;ǽy3V)U&b:=~8e;./>!,˙~:(xm\C"W%ohrz6C ~^ru+"}k[Q'n\cop=b(-ZF vvuۅ;~ҳqBt~>H{2جI$I$5l5Vr,@,!}2idX^^!@PQd'HNMY?{M{M e߯\q@|΂$=D4@Ƈg}UIryE]nO?$ =X&Q;5=l#% yh]&_2Ӄ4=U|5Gzw )ܞ+]NS*$&C)w7/RJljέR*Tͬ1WX?|%?)+~oviM/I!BN)ۂ Xl[l2}$%=`VkLU L~pYBUY&+LGE2<"!K&GF?HL 7~7 F|C•VWtw:T3raUے3?e14tvxZ$MEX#N|EMyl=wSB=Tg"ZKy m)?~3GaȐ  LCP(C%D%cv:gCp%ni 2%qt_,S\wj[>=7},sX47m>nR AKk,`UmVXݘJ&M$78Mq~=Mh&uk;ug.wϒ[gԛ2f@HY ?)ښ-GvDk#@nHrtFHn郴92S˭4B5[ZM|T8%B{-:j2 8N҂Y;NQ%oAJE K9X8DzԬ\O9?#CL'<=[ߜPq?ϝQOɭ3C*x~u\@ɍ5Y,O2K-gf%:̯^ >1;,5$~BYvqOkbYk%]I>b46xJ19ṚZy=a+ϔ5v9ZAr bGx ;:XcxƬ W(W*BUع.S:$sGoc%HA\#fZ^_e Jh^!~lCc[7M[je~58xl.G AW|k6~|HzorHyWwi;Ĝ]o@L~֧} u M(}{J叧0/G^Α_@ YrAKk֣b_o߳&-kNe(/,B )]AHe:?Y!um]L2ap8h kTǹ= T" A p&ThX[H=#E!=\9]!3`әr=.,C2(\1#"g}ߞXH$gZ` J iSuzǻC ) ׮ǹX>K/T|7@3A2X*;ewZhg!Dн.k'R~[^8'0*PIk/駋ޒP=ȆՐ >,>~[B& ˿~Y*-> /ád] nJXl*C+R8 u>́.=\P!c!Dapcw4͵BLR}&ڳuY?E -Ar BPJPDϓ &51ERB!u _NM9jU`Xהѽ7n`O٠\ 1*5L&@/u¹ Q߽+8~kP@Diu 'mI-;B;, ?B |İ Гs@jkً1_Bȝz}NR֢Ϛoz~$/Wuh'oVƔ&X<1"۞ȔS;Jk }ccDMf 3:I1$ ˏdUPdX1sܴztKJap7}w W7}\cJnޅavm!|*tt Hs[·U7J#rvLȐ+Mm̔eF4: M }#ص; ` E# v@-YŖH>G#JO6PE2jUqu0_@Q39k*$\٫CIVMBDtBbpuC39}jg+feĕAS76o\8EHex?a1>`A* 6@c}0-`yC_G hyio=Lw9b439Di|~aU7i |j LJQv8GlDӚ Ň9biWOv婸?ڈ|!پ|)KE;֜˯F߲cUT@WVŐ#I0h wCEsdSb݀| ߔHxwBV΍)D>5 ?Uy||uYʷGm]vSq,g\CΡ3SvPaq"Qy5GUYWn*{"z_+%L=|3E/8~e 5G oI\HE/Aq`  @^<)JF/?ߓ'IQ{Z~кSWfGx@U}Amv \bT"'W$xӯtɒF`QX ++Ъsj|r-Rڝse,T$2ڪI||T#\y|cɔ1'.DƁFǯp·Y|IîO,췢"ŠoU3\tkf 2U^ӘvaQ"\$+[^AnZѴ @M*_ >Do)/B>ĢJ臃/(߯)-M#i=2ydH w󗥲U %Q,Q9H,Y#0t2HyPz 7U~U^!KkuEU)2>j BNaRp:=t#C8 c=v:CP5/!.}oZPDh ?8Z+y7[&Ezzw3*ޚ-&DC* ˧k/nvi@<lؕ ̲nuF}vA)~ְR4 \ Kk5*(2)6qU)82\aHښ#̕Ԥև2S_t[_6ߝX51Zh/3RIU`Ű2?`*=P^{f'$GXdFUtz;KP$r !icҧs@?.{aUz_m~+(7]Rnkuca9(6\ E:("# VM@iqP ߓ E*,g{qٻ! %H)_ Y=89!O{zDxmϝ|bY" *g,"&@W!px^L'Ys%&[J#zJ?H: يVKsQ_T^ 3G"*RJƲ8 BFdߖls5[>쪆[:jEF=;4sҬoKts"YqXxcTNȕWߴ9w[Gk}!>Su2bVٸ$5BWqBOKdT=x+fnT%I$Xf5ꦐXƋq8;J?VtQfyí8,x$|8q}R"{[b_cnX]E"զ9wx[aUkrfJ"b ?ٓ')k]>c~@Uŏvo|0Klߊ{ઋsx`[)ktsO<x#<x#<x#<x6#<x#<x#<x#<x#<xR_n@{sIENDB`pybik-3.0/data/ui/thumbnails/Prism5M-3x6.png0000644000175000017500000002374413137372701020772 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+'IDATx}y|T絷ULfLIfd{C7ٗ!@(AE5";)ʪ`Q׺TU dRg瓙,39;v{͒X",XbX"%,`EK,XbX"%,uBDŷu+ic}7}cXJqq07 y.>oN_X^bn-ZЄĄKGmN{Yv_O%|Mf^\kf/Z"s!{(3E9gtn۸gNV:sԊ,F}O1:4>ˀ?b&B/hq#or0ad r|P/;mSʍ4f2y#/cnB8|F{"?Qݻre+WۨK|,ukAco Dm ؟$,cL5A[X14{2A2:2-Խ,X'Ȏl7bǍ4C3mTꢾn BcMɢ M'G bzRQvvH}nnȠ|~_㾄!/6zƶ>LL,<Ŭ5SṕY$3pm6CoivXugPY0aGp@˘lL|rQo&[Ms43'@U,  2wxA )<6W9xO8 A 7 `U-2k_5_ˣ z)/%,[

\rD-LDIͷ_ܨ1ŤI^/Е|;3?1 8Ha%9TӜPfPEA\v",\(Yf''*Vv>ȯ4 |?`87j#͐kvǷgk1Vrbiv:l2*,h|4;ݶ|5_3߫)p|v7@хu8"C9 opr̙Ù 3;IoqL Z!%{C\)ih skǓ4[;" F>^1yrEl n>[{Rwf6t:)r8NN|{!6{AY?2ܛ!mK͞~@#vfBdJ\;73ǮxD p.^XZUG\ۇMHH(#J V_ r3bc.i(LCg ״!;i\2{? >g0hP^nZ9"Ȥ2ap\e-Kvxaa|!3byf1paek3{,^$r @8|$rNr̮@F.D}ؼŪLbbb"uc_ 11Ǜ&ƭQ(U&a01= QEnٱb?h #MMEsI,C!oӜ?i8|Rprr2db4GRc,  E0DupRk1~FUEfd݉u~y@!j]ΊienX*Uk1g+T?l/NqH+X<8i~L== ʾf#F0-M rP(B# X>rA5ZhFVm\_73DoG d" DE{ЭZ/j6keqzAj WzA Vֈc[^! e׼yhMIIv6-Q?7"iqhn])&M7 #P3cc™Gp2ұN;y<j8E  Os꽑1"L_>~V@ *"50G*orҩ_y/!\]Yi|ဉ}PBZ~5!Bbp@Yp?E* B7P.>DP'MS$iC 'w*&k#^=a7P:RfZ1E6 1^x]f8/3X(wtH~w3>= iZ uqKSvb@Ltw&,$ک_ |Ⱦ-ި DVwq+/Iнxo&,*L~}ȚOhnʁԚeY D \E?$@`籓K-O^ NV@v/M@U 9wnzqP*)`hĆuBIQ.8@f3'L;rH@9c^يq$FSH].yRbuI-Dٶ)|E{>8,'.KvlSRB]"P8t_}긘peh0 56q|hOU:iA;Azd[^&1~`C ~HlݜΆ P}]4l(/l@OTW𗶏 @j|GÎ!@0>>ez5=ޯ3 .ϻ=D&D"Mtm33Ϝ `g?ryɁPOK%O^^p $;)!I3{NKruQv:ߛ@TfrˊyPrA `Ջ}Ur^0x)A4|Pa!*QNVcF 2f$_+93Hmԭ}MRkN]ݩS'vL#+o@uNfRNyT !zhRFu]CӏH9ЪxxF" ?HeŇ?t$QZJx}UR|b8X8(2~Ѹw@`gu.#Ye|7Q٬2Y|!g!>zLF#\j控?ͫANO=(*"E9?F庀כBB@lJFN3P k+v NWh$zJ"5GT(;Sr~2%'Ӱ^ OT3#`RײC?%QקhҀma(@ AqFwlLxv' ߹PgzS y>#U1HICtzCy[6+3( ȥfX1bg:HpdMٗ2|wP!SŰôj` {ZN͞\u(?b`^JٳTN&k2>zVi#eu,@C뻄\4g mor 9S{3D7\Bl&|&.vƥQGѫ=?vUkX-N'@5Dn~R'0k*u]@0fSB9J2ڷLç{WR{܊Dڿ'`Zy)#=^]Ϡ (2+JkmRǚ{=%(&X,u)AT{*(~|y'GFiIkGۋ&Xe;``T_~ٺA'6Ȏ!2ҶEYaZAc\[U 0苪^(8ֿk$ ,㦧צw:'C =d:qDNvo Z#] aSGDHȠw he_&5`77"4GopH~^vk*[>Cg'QA!n_f@Ȳ!ku M!z~q@ ˇ."c@#f?*M4}eߔVX(*%g<* ;gw,|ȼʠE#oZ_'Ⱥwich !{ɮ Bnr`YM~01!@N<}tu.}}/%lh“w7oT~bS͋J`TɒNKB#u+9&X^4")ڒD09,_Ԕq9a3b׊h{$oҸ p<ԥ1ۏ̱T7P$3 Qe?rC/(f㡶B}2rx@;TSU+"g՘էNhhJnfpdIέrciN @#݋3 J+QIT慲"@͙-@a  X?5'H=nH`\| !3zz sҫ{38ġߢOM7ew]>m{QYZ?(~h \N >~dS%c;l"p/ 0>:RԹ$OQ vTt^! lWͩc=>!LX=d *(u[R4t(}rt0GaW9$`"}{UŐ&>Xу#9zuK.ͯu+4 ;|T5)Qл6xX[w͡|*v kbh*=R&d#7oP Dzp-KMј({7Q@Gկ8!3kfjˎޣ+RE @Qmc<䮛S;G3it_;qD_L~XU . % LNpR- pE[-^tQ'=i_ut߰Cj"z4ph'D!f騾 ͦ{qq.~qWԹM,!tdG8b_BxSXF%6o4_ tyDNYle(13 4`#F~BCD${Xkj'$ S/h@W]䦖 Jsor89mJd5&7V쬳/&~V-Ŝvmij0 Ƶ&}IGG?=PD%3.ATNiD 3,E-j?`$8@C 4A>,҃A` F4:0>w$>yY@o$9IyTSF̭pYY}J`ͮQ!XKFOߡ*e'ed\S9DXV5C^Rnu>e{wm究1D  `l=vH t"Bag]v@cj>XTG_Gl=}2W @Q.vdF-4VE\ի'F4}㼄P tq }>1 |nysZs\i؜?E!IPOo7f}q9Ο>ҩ6(G[hːl%}uXxE+\!4sⰡ CHAd+9}(^xb`Bph;q5tl`9Ý%t_|z>Bq', d&9yd(}Z%CDUeD_; ;@(찊.&K!Z%>_Xu GǏJi8= ;# Oh500q(Hm#:dݝ)Q[fGm&l ;'G ̳idR3*&57l _80;#:0'` (_ib qxPb|E14L,^WKl{|gV p DoR2vatG j# 0kA{;tld@ ~x?#gu| /-M!o*P MCeN"pw$v /jrO' 㔌ӈOAl4\h@E+sk/ X1T?S5hZ@cXK בT 3;t08 iԯs$^ޯ:5A4PZO|Hݣgfpt7j+QM˗5b] `IV _&y Rpyb:Eڶ1sz=Է,gjXqbT=Hܳ^g<&p=GG^t֭ѓ/B@@z>j爧爏`$4+'{4%݊f%Iצ-=7IiXG~<o8H$Birg"iX׏0[T8~d?<闪bϞZ iY"9 Y;H[B:^Kz2E YrFAWȣ6 :VXU9L{l6%y>R@ /eY:+Y2p]-\yvg¿Z$֮ ;+ G@E.+1Eej_?G}M D("\ryIzfJo,ꪒ$I\&_?̡C.=}VSVC ܿ @:Vϐ rT^^7D1i0e" _$99 60ay{6yL@Ɨu-S ])ԥ 9z=+nr;:z/#Aa}hPr   M.m#ʹ[V8`SúY茡&SB-ԩZ/(Ȏ[ʂ:S~M!Y~P!.T;#T&3f exh()fgQ7پX 5'[=7<)@+v=&@e옧0ނ|ZP&kKš0!͔VP@eO@ٛCÕp☉#(j߭0BixnXebͪCIak]gT[+Ov]Ww #1PŞ*w0C~'()-"^5%)r󓩴$Hc(>ō;5JrL@ yY8s^0f}^&@͙SL٬Jϧ%AE`P$vڷ'1'< :v`[g~הÇӸK8/ IF)p:XӌR[cQiv$_;9>w& ˙Z=/GHڻfLb~R֘*x[X<]HaL񈜬T18׃)y]+|+у j71קSh_DT wԩztBɄJePH~S0/+&uP]=Xj/U8zSK Az p+is‹}~ m"@;@[`(o˖!l'ќq.ߣ@? >5}C=hBxodS=D$.;?.@#;Ip0)74+ݻV~ oxB%@ 㢆%Cmc ˣz"X*^i36U_ɤ[\2[~el\ Gp,o$Ve|ǖ.ahnIX`#qг'J4βK5'O]^Cgf"@N^x18{X4'A]kװ]24hcP8WS'EIi}XOMš(V|@+سg];qwKrB+r,`EK,XbX"%,`EK,XbX"%F-1D>!IENDB`pybik-3.0/data/ui/thumbnails/Prism5-5x1.png0000644000175000017500000002673713137372671020665 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+-IDATx}w|GAH&圮r@ L9!$28 1 L 0Y8̾N۷SU} -l ҭwP}f-cɃ+$X&%,`K,Xb X%,`K,Xb X%,`K,Xb X%,`K,|BB  ڜp3qx2^$ED4nYfgJlNwLÎ̛zw;1(|Ou]ZqG )ր*Stkʏ~,9<u: vAM^sc#BigqNoBiimfnUve{[;a?@>^ -RSSEVV"''Gl.RE !;lbx$FP(JA9\qL:VXyG:{ JJ~}/BFQEy!oXA vj|^tyK8fg_EVFZ 'VIvִN4D,`/, IHHiiiLAI)((FӦ}r(` b (e(U*XelAg5%6jp/Ӻʿeϴ)plM] >m4p6`\6|7SԖN0ZfU@13PpJJ0|s EǎEnni؈0t uNG0A%6 &{\ E-6@5x3\<3R+y3]$}d] p7IӛġI {P+DŽӺIKw/Iɻ :Se">r%*RĜdQJ)_+}uw?^%4R2F瓂'`cITTrDcClf#qδPJ}cNf1z;mHw>3 /Ꮲ<3)ofw4~t;K2Lٟ>?tc dy.UsE%˹.3<<[h"s dkTDE >,nA<4/Aބ:h VE@*זǔ픏>Ts|=UTO+~X`%,Ͽ`mL fYw[RP|˹QYɖޗ5Vb Fˌ`M yQ Ԯr1 )\Ra9t NT( G$* dҹ~hzW|swl^ŭ KR Wx zBBZ|Ota@3P #\bDLH`xd1(E5@䋁YnN&W!b*@3J7@d@}" ӠɄ2g@)u~ZyO{N u?*߰& Aj#$$2R{sK9K}QwlvJ+ث8n "g(`6#CܤX1~El1s(*3;H%H`+~`w` VeHP#5 &YBekXXxrժ< ܮ^ZTQg[X)Ϭ\ZQ kkOHNB]vl+|1jIEb9/*a.ٗ)dd+*[BRM( cF0ʜSAb"<1!Ɓvs[35I IhByxc^=,D_Dk4Ĕu222E\IܥB-%\a0Ym 2c&dK$`X$df):.`=O;ӫ:.Ȓ6αΓ1:799k\`ʷ gU$WF9՘P1%1NLNIb*4M/Ld. `t$`17>".s/^'kV+X6]B!˽iv\{?KJ -W댌U\$,fT]}YH$ձ[^ xzh?v5LVņdBʝK2!`d]J܍Qm9 ò2,D|y|-X V J;9+Z*%G 29]R??am72E~5}d] ޘOT߼ܛ,0ZgK+']o|*H=k w{c)~\e] foתʿ.mDi~X`ft;cvz؋ d9{ saY!DmAGS!P,4_<*`vd_Ubm~6zK1iWZYl1۰?+'(b S0G(I:`g@8VI`P(NM-SX-Ӗ͂!?~MDI&r^:eHnhGd&@~Y4j;LNjД!:cq'R{7%BՊ$s; Z'd5\bZH+[[Л:xm~zz K4)Lu@!K>p "[+ ^/ިHaoB:7QqG`ܱc|*?*?Io8 6bQ@ZCTȚ Yr顫{TXXkwɪ/ȡ`N}`00$()G@uYi-.$i ᢍ[[XOW:}20qQQQAwM6(zeiR ǡO`Vw'2O8 1r@i&SDxs4?4YTZ1G+|i/nGbTV Z}q9`iqgL^#Gk5 '@rD0nCq @SpOT8ȱANRaDL\'AZfy~؍1ר~toH%rZ ^u=I)5gd`tn=,<}5D L$ri? X4`GF?2@R}#kN]%1A6_3M-g󀰴o#!0)OMWENg(CPqix, G`"MM<]\v)0`Tt3qavU5>+ Q#s rstwXȡ1CK5,pvf͓=tN6'st`7Mx\lBqOwgx{8 -6XGh}PsTi!ա@ش7<#h5# \XܛL!R9xD`$J/ ZAفQںӴ%|Ol`7RpQ&~kLm}[[;V{zO*5D 0?1ҍ:׌p^}o6;nw o{*{))Dټ :A[Gygqs5,|Gh :yч; _;k0"gaBKڧJk)iPp|69m:d_*35) ,ƽ B<Wq ,a"ed,9ǾF][oyy^ά]I1UDSldv7q ̕b J d ]7b q_L;H[104Zm4nOڙkMvy!% NRhYWf@m$]X/Ri!.(`>&Hb4H*926=r[gljyHt4ϔd?džcLd /QZȀ*uѮbe*2 /QU)\ڏ&IE IW:/{0HF e&_{ۜ2\ jjîv"[ܽCSv,ɸ *"\`$WRp 'iGAG|ܮSO#pJ&kWZ Y ?XL;vD+AkEΒ'w])-]:Zu}LVl˞m6#K) ԛ% !(Ec9ul')W 29R0.uN u`!!)?nY]x9y/5N5ZI  xjw=D-Yrd6@rQ f-0~ł?%l.hv8K 4h,> R@I{H 7azxgZ|.1~N6SIehLS%F}lAPo#P.5 8^pW|}}L(8ct]Zȟ#0&vPqM@ڴ/ڠ^D'-IayC7s)2& ›OՊ;J2ӡrnĹ2=:JM^uҷ{ie܇nJb,S2rkjNSOV 1Gsw]*3;ζ Ɨ+Cypo˜A=Η$ש6 9=q'/-*[gAA"0C"].[Jf;9Nt75Z)c|F|"璫ۭ\C d {$(X| ӑvW(E4&n4LzDL7X_şY ]մbdn*^ƃmg1_l&/RrƜ buEXQyGo BT-0@s|ys>E"`To1M 6EWzʵڕ[bsuz~Ob 'x1C7P.N(کcPMy2L@Zs)'xjȠt.>9bs~tY 'ro@2ϹKI׵*c]&Z4!5[l]Zi|&ƽGlP")"sgOωi;;D\v.&_so/I{0&~QML/J܊U<sv_rHPOlp,Jx*LS>lr/hMQg0:?c4q}(fuXo ѐ!/lG[m-`v'tNr SkU籥z=(T(| ޓPd!}3"= 0i`uHK8(^M&*i,\eJTp*̳ C hft=ŋ#2Ҩ08(|s3+kIMT NpsN!hٌڹI&>2"~0X$램N/neұ@$9' Psx_)vpUmukgix}}U`mu>@tVH ,av ~8zDz5춞a:R,LA;_ C-VNZ $s ).RvҐ+` R'{_KP#%ۗNNt cM'c=jWI-քt4n>mq 29n.1>J߰.{c(jr</&3,i}yЭ5b͏D"2= }l {/]"BL锴Z[X靯hMCP(&9}CfQ堮q` "X铵ŷxZ$Tv*To%8x%#nSA6I?/`O1"Mʧ2< nV - Oy.c@9Kz=wr^(F so%2{0 @LM}xέYMb|("N@bpiWi#Y#Xd (UK! 8LI +i)XJg-ʂ?ddF+K)Kw"9,n> ˒`eug=ʦ'(:>EM@3da۶(C뎶Lz)uҌ8d 歨PJhkѲԡwRiI]3DZ V4ۏR5zplC+kgKli|Q{>,Ģ>XAlb:\|hOoKR' &n- 1QY-]vIF Pq2v:7so6J2>GWVt8JXqّk-#h`)`Ay]]xtw5!fm tʶI}?ҽ| .,Mr8A[lWl>q&k9=GKPVwF=Q1իD(ir4+(W-SB鳹KƠ$#D0t=R:<<52>P&]Ns|d e1&XgqSNI%!X(zP7S_PA]zV]be-W~}Jxzw=]+f$w/(L5;O&I70>yLtJq-(~)9'vRY58vN @2dx)+Ųȥt>|>s_?q|)^>KDTOj=0?^!vKi|n]yGO?~drA\]b2X0@`2B`矊=zNz? #|}Eew1V FF| ?^r,ǧ02ԾB!;!>%5jdfR*C+Pa43.Yg~uƯݳicGT^ݻ Wn{@)7V`+όB}cs"e6 @iPhS [+@L2>M5 /B?vbt ?{9>-ɝ}^EN`μVX)ğ?_w=sg=0GXRP }}O}5d(6UN}{,dш]3C ko VV( (Th6,z"Cn^f[&spg2>Ðvʿ;H M YɟMV/ nަ-}rWWEK~wChWwK7@0>I)e[jRӛbL.KSyGEcP͓R0,a\}lwwuKrcLeq!NϏOD:P􌑪bwdW|3%{Seš]?f:9K,-XW'P^nZ[0_x~p#VW4!@(wZ9F|Pp 9 w1*AQ1t;ő|PKo'6Sb.Y=VQ+zU/.ͯ!~8Gȍ߮ 2"=^E{vΜJBNr3 8&Xж`vbP*JcK )<]rr㓹;gbφ+# WO-Pvk"ڞ^%V޷o)ZN9rX$ˤf{mK9Ǚ-GjMNœUe^)k@!+2ZP߷Lj;Nڼ`j@U.+fJ.Wm+c_+֖xOdlu >`w^Q#=n7fwR Rŕ*`\6Du림z/k;wKƏLHDŽ_ªZ,üfg.)N{S̡,r<~ wl{_r(?i:`(A`Ds@aF-В6w):[`*)uSbPYRѫ*+^kR>s?OoYTIo]ݪ}cUV& '=nƓ)VE˶HX0}> ! {RjȴX߿LoFO'rVWFz+%ۆ njf6*1,<꾺GOp 37o:j[8thLݵԭZvYt5SVr.A^lwTP<】]2cʉa}@%q7N^7?VU4o,?y>do8"^VO&ի>`P+y+/7ImMRh,ol*1.X0Kw֎\e,RDD\K3ڰ{:{``[ې;\=8pf5c呖U_=G-|ڟZ``{VGDF6^YAG~@˗.4<}}f)QXd=ۨD/<0hĈ rj3Y"`|l%}nMvY0Vr Y8,b⬆TmOPs|0ʳ2+~@w X%,`K,Xb X%,&5 ,`K@&m_IENDB`pybik-3.0/data/ui/thumbnails/Prism3Complex-3x4.png0000644000175000017500000002371413137372657022210 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+'~IDATx]gxTպ?Lz=7 QI*BNĂTzt!t@ Fl]ڳg2 ܛ Y=>k6~" nM 7&[pnq-nM 7&[p'BDBZ IRC<l E{21!++@ax\l@4=NuA$!f)0s Ⳣ;,22U ?L/2Bf>lŲT[@3N#2o񄟹Qdb) -Z?eݻwc~EF,rp' #^zH)O~5ݏ)wj+⿘;|lo߫~{͊tk_,زukicڵ>^_,\a@".8f}`\ay&^ |A=ت| 3?N# n߷1A%7{˛n'LW.pY,\$GѣG$x/e,e$=_ߜ`:?$0t)I\T%ݻ0~wjԨRz*z /Pʕf͚|nݺTLvxjըJ*TbE*[,%''?_Ԑ >>>,U$ZTA6d2HH3bK!ye&Av\a$Am;خmAct\_=ApI8qbٍaÆ$C-QOcξfgNA9LGQ9~h{.̠{;LhI.Pd+>3DԸ7ѕCrMRN L?lp &O?Jf 4oa$0c $h+up*q3j'I:!ZHU3:jܺuˆϟg|k׮]FON,af;bA`?cUXX{6_ Vfv|GƍLSN={VGۇ ([IXOG>,jR:Lyf=n85@vg-[.:~{޽:ڵkGZO lrP P`Q=3ulCrssC @@>`O _&ҥK~iӦ믿RJJ _LxqD`XI^= >I?{t@~(~~hIyyH0Ԁ/C/ͥRJEBYz| !b%xS=U8$&hPGDl9 ivy̚7/;>>".\`|M:t(ߞ6m{߿mۦxksht-<(>oj v~YӃItiw,=uNm1Ԯ͋Y.dΝY˖-㙈80,YJL8QW ;&h mdI{x">6>&g1D+Ih  q6_I Qr;**7p`ѣ˰0S.][n 8rx^9;wPuc˳<  c3M#x_Gysg As-HmϰH7L{kr_01T'@Z &'uw } 6B?qXe`/ ?#mkҤ mۖ>v_Wژ7osE<k6QYL=@)mWД2%3F}s|)_)B $@rR-86 *C[A^| 2 f:zd-7~o?+Sd:FөE.V`4øvc6ÇZ\9z78R~}%>_4h$"taaa]D<4ȟ &0>$%R]T9@/ DB$8'':|'}@ _>RNjJ~@΋j}5\NI!@ ?cRHƍy͝;C{\tK7by3DKXmby_g ?Eb] ϪթEiz̄A7/keJVI!@ A\'OٰaC+Լys Wa }x?ǰB) zfkLt>zń볡t|H^N̒BdE!Hz}]:{,4b[x\_d;20 AvB V~ _L#t_ƔAt?7Io }J `ZZ_$X~ChтZnͷ7nRM= 2ybgbLMcɴh}JwR%_(ԧ=M~5?碴A{"(ϙ8$@9VeGgfr DA м7U)) } C 'HN{x*"^DD'u^t)4YWyӟ|(}]BR1cݐ ?/ jyQD>}^3'!~ `ܹ0xaoٲՋhժgrʸŒSfb)3 @#H 4#WN%=W੃!_I.1@*3F͛Gh6{|5Dho4M=A9r&a  b/ |esoK ? !@^%xw%RZ~^)>zOCw];EPQcP8 !*qJYT.!lB$>| $ @VW6q]/Hq/gG0G@Iɱ&F+€~j"t'Ј2th\>^*Dc(wܙw3gCa釮0e!9s}<%D`pG}ZotUFM3 _?"ăNd0X0K Z' Ztƒ2+fo>}|c AXp!\ocѢE9oH0U14f2y>Kf{]a>kGX>@~>Hӹ4ALV谪w+Gn>$ѪԬUٌُ<@h1SW_W,xcպ>,yyL< Z-!YcY|L0.nq,Ϗw=ҥKc/_ d\֡ <ƒ2e~Ό&bCk/k 8- СmC[S ;>ZrOԗ 2[*L?N-ix?5v bW9Kd %[ >}{cxA,g`{j Ч$a_ߤX3֐ =}4!or&3bt; KU͛u`+m_`ur [ HTЀ~ ?o![a"M^J,,`r4Y/hxRı#ċat@ 0KU+o!ߣ1|>y5OY?װo`b .{~z`Wp/`2.)r7S`wv bP ,mڴa@2)^NX >s}]@ pp̗A"L:U,>{L"{߇Pd4{U0 H/㊢ԇHvB\B7dHwB Pn."`ʈ&88z8~1"ȧ+81DpHOH6>zK=[?,!U""S6Fe0.qt@5kƽ@ދ-D)gSN|.%{ۨWHle()ƢLRaTEK:XKB`(?G fJ={6J!" HZщT3`xw; 9s_EJY i_ImGT 0`]CCc_jT|%zrH^10hyi̘1\|r^#҇x :u-[cP+,(+"~7 ]Y(N^t[V^:}輕iy}z3L^8? n,>ZW*-uFHp: Kh1U0.#D OBLT@@M'(=|ļ͛ ^!L^&v(<vkr\rdA/|g+?{2GӅ1%w lش)G)rBMo3Bafo6o j=*T`pBb = 4X=>|B6P8A ^ڶwF+`υD 7qNųrșCxwE,c,]ApQ̙3\7ȅ`57d8@ER fzl9}JdD~ek/ pDS> $?7:;VH{RaU}`cF^ & 8/^d?CfxcR/QJaLv ~=5\;(fO"XP+P )ְJTUA4x^8p 4eijo;o7+FE>b?N:;wT+&l nD(h E"_)1UB42ӿCOM}Po7Ŭ^Aw|Llim(2M|ucCekX=>>…40Fg̘g "I>.,tBc){Dd>y+@A-o~ e-ԨU+g$OG" p-۱/NI}l#"R cG@Xd - =*2`p輂k7|W T}OFIG"MknJBOX$/.,7=P>v4U_C~>d3^as4M$_om-=;P #,^.ktoص# Dݻ73]#P _~Pr P]ޖ?(Wm_a-_/ |b!~}mU1|?wn^_'/sd}ygjfjG!?Ih|{IdaBdൟ< 4KY7pQ9|m @!ϳohG1}YD%к$ۿJuq%F_sQtX1/C6- s9@ɳHOQI"XhPt/#v-K!2O^:Qj>q>+wA|D#KIiAT<,,ve%dƚ?T7lؐf,o+TogKe.6ROH_~WEP J0TV.c#5͛'ҩa}>f%ާhfe|ڮSGP #&g:N lڴ)9ĿS(D)gN>>\4^˧ӧg#jP SM$GҀ½5D99Z}u'֦/qaYR(EÇ"ssB`󞤧{?kf;~= ! ( yzxځS& S}Y5yŠva,8t(G4 DW`Mrm $Mmp9۷"(ܽ;cx%9E%8^wY(/i="ृ5 e!rб+G=%乿}WER_٩Os @mS@!V'47‚nߪ)A?2Eip\ oؐ*`<Dq*:};<b|ڇS~J\1hZP>p]99ihQƁPA7_B/^>S'{)Qr.ww9@ϜZ_XAE28 +}p7ƎrhRO_b{>ccMf <˧n[( r4$ul`G>A _e:+@#YV%Hh^.a(h$Hqt8"XV,|Ȫ \q/|6eJ}?$K/N p7 zNeKࣉcSw~5x29` rfwYtͩdH^>?`drM[D"Ak(^ٖL׵K4#h,JN\/^v-.BW`˂bk&@ʾg]l$f>u@jID2eƌEkO$L+8`+WGJ&]PNnK*&[pnq-nx_Ԉ(nr)IENDB`pybik-3.0/data/ui/thumbnails/Tower-2x9.png0000644000175000017500000001040013137372524020564 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+IDATxixTe8-[{kOT K&&1p}!, L!\n\vM7>3 6v#LiE4bDv1:i9{3|?T:{ww}5pbX `1,bX `1,bX `1LP*c@Nwh -wlA0.e2:k=V7! ?yK.ﮝGvV\v_eigǏ# akqyʥ{Ev4~{[ ^Nˇi~-h}Va }3>4~JO9}߇uAz.k{F$C?i\ h0|0=C$>y{Km ˍvs/>m'IFWȶ,[J v{O4&0)k'_RE߈7AOfϯob @C:d7^o zHnFcy2Ko@h Km!ΥQobܪĜHHbԘ5W`-Uj ŰO^a _NBP>o1xp f{@B` 9JM:DVk9 AUUؼ†oNKik Kc ^L t Nt]x!}Q/)\ȏp A޵pS"Yj^`[l@a ?o@PO72.դY3L֠3 HEX LDdܪڊfQ%eQ@ o>~Eosah3&/mL8Zj*;B m5Aws-` V^U!Vȳ0PpbK4(hEb1 WXj%{zƪ O=LoMdU,q]?Qͺݍihk{:}z7 3?/<1AsNP[wO6?d1 luV׿xSܲ:ɸ '1Xpݳ1T-<;_fV Cah_,|y ; ØI(2U~;n O(=B#3A\_ccE@ KH*h#hBU  0,w6jmy sXE@'rh <ci`\V#b;"p_o C*_ezVw} G5E# Q;™ ð=DvH3GOY=,!3Kڶ!  /sԑ<0wPfE.^{0Gd]HqBr`*"3T&xUu =X"iyK'E:l\τW3MO~p1C%zFԡGhz@@׿c>'4m !#ŧ3n kq==OIUQ3C2ώ!ܲƏ [T|7 [!CG4 R88_P>J@ߜJ͵Ah6;o Q ">%S! =&vJcr G2qewF 7c\ j.ZU ?d+pmaVm*a\V ֕4pyy=P+}QRZ b/*WLV v<(N_`ARa ֧BMX'!G"g񯒔&$^{n*vYJa)[Eɞұ+C0Vq,i닓P9FGkb.Z<p%JOxQ2XdX$1D 8c!FX\ ۺpx[8P<OVo^B<14h?!+3L8|ܴS* '0TqZѭS = sBrs,h^{T>jogrtQ40`yH:R`)?yS+wLn4d—gY_y$B ^z,&/9=*>4WuaSS|Ѻ8I IT4w= To*v%FbD<40Hae:uS{ @mWҢk-s`xBj$'TdeS!'I>'U(W_<Ii),VR>Xa >=+"1-!2uMft)yr>Fhfp_Ж|:?\>`NJOj) E2ΧAE}W`?I.e.@IznoP)H^Z9 DfNn %:,~h 1ާw7F7v U`-qDF\P`d~۔-V?AwXR~qIģurKF>Q %QkibV*dxz?t@6/؃s`FX$ z._]¢CVO5E_r"5<9 j( Ҥ0dN!ئ0< x{=mgھ/;}i{2Eس= W3Ί8%x׭|~.>KǾ}|%gAk /~'N f)` Qũ`J:@l >>Rc_o& LVZ6zrrtRvͩ~bW(# D8I#b:[)Qn! 1n gk @Y5Fw Jj . /ۧA IW>[B |:x]LӟJDp"I߾_dCQ*9/>c͊"HtABq [$8u0FhdSKGZ! QOY? aӭI `P] (B|O& ,BL -&(.})U3Lض>oU<9i*&rE~+䊘/J4{ q#ؚ6mWI\2B@ҵI4SMi19~\?,jgn JPtC@WQ҇q.2|kȽnL,mbܿkxVH?{XJD tn\TCk@LΖݍٳ0Up=pݟHŀ34?P(ɂe׌h/LaX `1,bX bX `1,bX `1,fC4IENDB`pybik-3.0/data/ui/thumbnails/Tower-1x7.png0000644000175000017500000000504613137372523020572 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+ IDATx[l<6MRe]v^{mls1K0 )/U$'ԴQZQ7M:KPT --C@AiSsά]_03!%93~`s>@Ї@C @!@!@!@!@!@!@!@!@!@!@!`پ*Nt5Ar(/նGٿm_K/p '1TF|ӛv.~ ~=ǭ#w \)o^y^?A4o ?NY_~ȑPB{`ettj7_şX T" N. ӔoIu~98¿_.r N(0"Ш½@\'d`x{ Qsh`rTi 4i,p!\EQ0w 9 0 0Ma2ZflaoEN.LL 14838|p0U/AН F?<_E=zXK`I`8'q 0_R+-dI&t?5 >*W+ ]eoi0**@yG80{y1s`tLŘ#Qy)x},0= ~K},+)ioCލ:=s#AR iQ| y` A,t@`h1 ';I`DgfPȤl_^;+:@@ue8^+6lCLe'F`/g9fZ{]z>mkS 3W20kYgq~("44}"O!< Me5b*or ٳeƲ/'Ao#@z [P%*>>^з$Ϗ[,k(ߠB1Uy.P*ex+7 [ y g9(fX5?hJl ^gyϵmoi`]"J1 P@ y#v{zG쩠8xg塐[r%BQD &[>[A{q@%$`_ * kSah /Z]E`knųb*Hh}:=O`HA"~/F,`0 l\ ? Y5VMp8VQXcm17<'}X@{?f1y`E-UV_ {@9lc._DEO-|` 6'\"%Q"L80q@/r4J,X0D &kԈ+]I&Vs Wв*crJeο?? s}fmk cعEپօ;bHTм܉.!$#aiƫa#'(%MS.9 LThs6fJU O,_Om<"V ^-so `c`{zgGzUF78z"7ԀYm#)`u|~X{`@kE|< C| lh!;Vx+F9Pbc"Y䵿?np/ɕ$dꮶ[$W[s9#TWӴDRhj^БC*xC !             tLg)eIENDB`pybik-3.0/data/ui/thumbnails/Brick-6x1x1.png0000644000175000017500000000550113137372561020772 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+ IDATxmpTwUK{KMHBh[$1-P*%@ u\m3h%0N;!RFB[aFkgЉ88csf,ɆB^ؽ 99{ ‡!@ @ @ @ @ (ayǵ+M}DzuHF/VÝ\ϕ 5#~#Ð j w]M~:0cl|(P &8b diǓxaV 0q~,cZNƋe)|:j֛[U&`|1E  ť!?׳LL{9N5ϙ0`8 ~G\n9Njf6"旳of1?]qz5q NBu lԨA;9fjvJZq6ZBl6_|Ks-CXmea?OW1V=l@FݺRi5r.v(D~l~_5!En;?b>X9fT* GyvaxFQ39L^W2?sДkȵ^I G'{gUfܢEl$yd=y>zҪߐk5x݉I"FʥZXc_2N߿__,ce%E*' m1Nш C5煝 5E e|͏X?_LC(A*͑7"hi {J]2y @:U&54j" B+\˽dN62cw r Okuzү7xeB*(Kf^_SA`:ʼ cdQ[_WkOp-V4ڟ+"||B[ C`())Q/R-g.?nNVhtl1&woSxqdA9dM*3(P _q^8%Zj]Ki4FI,զM5q g5톀 ɤw:8/5*y@UR*wa8fNn5E)4Oam k9Gn9ۜ42"E`l9Gnrx*3FFQ;}7{y;4865TKȶP yP nA qy>QfhjI 1V\?i-Y'Mx& @ @ @ @ @>ɬxiڂIENDB`pybik-3.0/data/ui/thumbnails/Prism3-3x1.png0000644000175000017500000001442713137372652020651 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+IDATx]ixS־B4ii)2)<(d2~|*P@ 2IA(X*Zz3FFg*ֻsvz&mH}}JBr~߽k?Z uT#((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((Q'K˖Z[5+~[/ +9֭K_ QC a5@I-ZT 31o}=\& [i=ZXX_2<˘j1nXҕmڳg>/|4 l#kD@51qʔ  5TW"*e66'HMCBJBKu>>>e'#Eŵg2FXdcHL4f0kbX YY2iJi',AØ^"3Pn6`0b'3aRx?)>I{5kAD5}O 7ul9"&ܯ͚Mekoc(k lc9lJ"N.BW_Mqqqv,N0CT$z>]0p'^5܋ȇ+%ײ5^ablו"ɿ/]WL2A- ;VKhʕv2wT؇w<=->'raJE 64.``IL~kה""(o}>Οg$݅ ŋ4x`;T4n 7֝[^ @l,F<\/؉!,< 99?9~HґmyBnz >Íɓ'\ӕpkH k+z̯:Pj}d{ﹰ*DWzʸCQ:EϷbIV(3l0;=t#SA!hC [%Řׅ/z \Woȏ4-QD,fIbn)+ ؝7>>?600PߙWҏ0:@D20CxyȃkCēDRI{M֑$܏lh"shZO `KNN1SNQ||]eM6 !Hxf:"̯#&|XJr\r k"ә$˛ؾ;7իWۉ@oؤc4*60م+rF]!}~4yOlFqN D\C!z%.K%ЛE|R'Nd: CÇۭz"ȟνg @+,r4 W'2 \ IĖsww786.nLt|#qh/D׮]s}@`DZt>)(İnֳGh$WWGXIN>?lGDI}RRru]/|4H,V?"l!CH@y.87Tw{IrJ lD9Ng>|`k䓩` o\ `ԨQ^f$?| BD_wǝ ~ANF [A_2Fr~1L\S}z{J~ٌ fAT*M؂Do/ p'Lzť>]!0M'N wW_}%~$Ho׮w}4d1b9R3 :T #14`ׯӇzA]tS6me˖L MM4p V PFJY0dɬQ,.b9~b\um?A= 3"jHDhb/*vO>bb_@믿D,BhqȩQ~41l)%8SՄ͚QVuԡCܹ3u֍zMs cƌcNJ+Hg^ FS߾}gϞԵkWر#u] Lo"l0:l sѕ49#s|$,;;;Ѓ)nɍEPX6}>XȽ ZfD2۳D7V¢@\PR\g+%%EX$Vj4n8;RSSg F ߕ PlՑN<"(.xݭ+Q7<PLANiוLqW+:[xb("OIcѦ4-AlR?Xaԓ1&Z&% %Xg\>H>-Ji`r;X `„ WdS %$`bsċtq"Br tG!>_}:ouj װvEVEftU 7MނDJ߃y;?n`~]33W^ ?e 11.L)66tKkT,"S琪F]FUȇ ht+L~ e]y0Ve市Ç;d ͛2 TYtSҜ?bjdOMu"71{~ _A'{w_>J8{`z;_ٓ? ~8F@x%zzهT4eleϔlYx($_&G۵4QI6 DVש_ />۶z-&@@+7W0[ ܤIgΜqpO82,b&$?_/8}S{L ҵ)^AcF9maŗ#gze; Srn3\v×"!7pqBrqulݺ<ǽY )~/Te1 |ܪH,!P:߇WҜoD?ŕM0z-R|veȿaۊ^G{95Q2 L: `; m&=Sɲr؇W||dci<R15>Ь& K,e<"QghҸo%{|NP3lW\q)gRRR] 46z1$Q9@f[YpڛkMבwXLt{' R[hjESSNn'm PZ%gd՝;K qM_3-̉F:q=/Gz6],_.Mԥ==CFL u"UP(05rr#Br}ر2B_)dHn`KMܹs a|8l?YLP*41tFٌ lA2Ы8 BI|K>G$ VSC4>N SEΝ;m $(&&F(CQ-PVr^zQE%O۶m;f͚&|/**7n, BF#6eQ`cauca!HAQsxYՔcޒWQqWs`cZ|5E z{"M@ EFFRӦMSX͛ A:ȿEͽ+"+w09$0ʐ8q"?^TŅY&s:DDD55q/v \=h7WjئA\Q())a2E@H ul|6d`1v ccA&<7RwNMD5`!`)jPܢE QSZAXOǶL~OII֎:-c|fWGɸLe%>E\h5#G{i;j #K"TV.RDN|.^UOb׻rL>ݞE&ps"H F&m8  JK[}a(ڲ_cwwʴH#E% ׻nX72Efv#JK.}qwLe---|nߺe˗[/_R(bTwٿ^o0bJj}Tg|%xk8JD?Y1Y$E>_c'-h,||-utQ]~ ~5;;.#Y2j"p +0Yy^r+H7d>n[d?:ƶcyƭEZ[ؾLn`ɂB{vrߐ+L~'_FtbSF{B`A‘=]>h HoJKKsѿ"\A*a7J#_N3H0֟xX\ϿK;vv鍌7nߞICǭj,5Vp ;cw0].I2W@1o+|Ej f̘!z,-oD?q/ H|u0F|Jw{r/WLO|OYZ?G"@uXI'e"x6J 5AĆw>)x\/sI/U׊s"E a|?kMKj^<>~ϡCO(/^I\orm%*6T95poWJ jDV"w B};{L>|=^[ɯU3NJrqWB|n }]ɯu+@iHۙ*$]˧o@>{'xzdJ@~2tkׯ/* NwݒY}S |QѣGm;v*?iu:)#ksxd vg,QѼΑ_ ʲSIZ&l5|Xnali8xXeA[i >ki 1ka( ),+"jͼ@9 &%hG޺L~G`iLPdˮ`\ߩkW-mP7?C_ %*:ڊbNE|j%%%%:yDٟfIENDB`pybik-3.0/data/ui/thumbnails/Brick-10x7x10.png0000644000175000017500000004106013137372636021136 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+AIDATx}w[յcIWW]ދ{oqǽc۸ T6nCs8NH &!佔y%o}\i0ܟ=Օtk];_=ZoB+ZoB+ZVh=Zzh@ ֣G+ZV|U4}pjدv^wgg3CqÖq#;\ s5aCH9^zW3Ǝ'[Kvh5`>%}3߆zۨO-M>f {hE+;|U@z:Go&=QeFoe0|{a!:WE ǍO*G@OF}m{` O y߹j+#pF%` ǣ7C8%pJ5}y4r9 a#l}bιϽ:== ׻7_v~]-cnMӰow}x dFW#Tyς*:>xߩ4;4w!s<?/A;=Ʌa=@ gQRb${9p܄y L+&$[d$~ݝ,J rV?AKa4s1 88Xp1^x K3ͫs=LC߯xAKp]׍Πu|usjvS -}G:F#:9ln4}` { Ҽ0s7yLy ]?Dnh ﮰr ~Bf4"ԫSUhg`aUǶǏ@vh1߸yZzWH>&n(z 2T\XcL6Ux@ `8 &z"F1`3)%"-"  T#|*s0(|}WiW?kFBճ77!COJxc 8A^3 3\ ZDL0 w,= T-3რ]b` EF_ hZ,^\}ۂOl102Ń1y:ob*@X"x]D0LAOn  C44J7>UD ~~d g͡Ǔi>͜9oFu i1/f0+͐8ځj?`2Sr3nCk{L3{2Ll£ O~ѯҌ3}\¯"ګ|sGq5ޤyWf`&EOcDY= nKgZܠ`9J_m ˳ xl1LSaa`Q]\|n0@rYrplCAna= E | ߃wZ B2qx6k`IAڹKZG¸ǐ"xͷwҫ"x-KfӇN3@4:۵ˌF3˜0f}(2p~XTP I.%=e #a5M ldcLiPBjvl1-bƙkbk/Ҽ&o71uנ%]3܊0 ׳4 y|j] ^Ui fۨQzzdQ c!Mc?[m @rktGa>6&^vjqZ@zQv_R4CK*;'UʺÛTE6ӭ0X el}&_2Xk op_vRTf,_쌛Wh8z+1u&40 d,F@f|. 9d ~ {|IHj81UHю ɬGR64 .@8/Mf5g:x4)(9e*ʳw^(T_dqmII0 W G+p09|j`hx@8!((rL<A* c0 _kk&0bM puXyBd>{x0={X4l/X(shfXGU_*!S2+ρgμ&|@nXۙţIMj 0$;oM6*a"tIy~߀mϘ0bWe}wC<#q.?Dr4Ϧ+,ƿ~^|OGuX~( P}uT-8$۾4l:ŗ0#JDy#ԗeIm F o.ӆ#3J Rcs:!8W`g=xM+| f&Ϛ SEtoKɻنWfj£# q>!1xkF&A70=-BFTѹuzoo8V{x~O R2NV&rEa,R5*^nVϫPz.#k6cLyR<7Ԁa.!nV.g1O@dR;`egt\ ZpY6i4:TZ;ewn:9%7{ovOLTzH!Đ=,M7:,e1fIl‹͐F6mn0e("4btF:=o7` }t+94^VP#惸F0$j( _ŨN*zE/ g]*_ah`}mUN<؈赗茳2VЙ !=mF XqލFe07ʑL:B񏚬S1, 掸F XL ZAlD:g]Wĕe!}!?R'\i*^(miI<5Ε&c<5:^` /M1^3,2Fd9IM`ERjJ:Lſ(d9|k;KZ5)jQOن F)>C)~YϰYZu۪}M\{"_^%Wԉv ?F_y8!%3=c/j9n*m4* qŞ:xCH/t,ݣ&VIW6 _=b3mDM1q0D6\`H)^_ؽ#-M&8BpHɶWu( '?P+gDԱg TjKy'DO*.1 VEkFպo0Cn[bcٌ0͜GLa@} eL2cx!YhT%BUa$"B%?8z_.?}tPMT^Im;i`C&NixTk;՝L!k\9 Pn9r+=a4n?9sFqxL@={jceiufP⥥5J-opAa!hVv r 8@E00V;R̃i׫ySV#D𳔃鮒YMs&^uP`H3.~_1=^?WqNi8_E[˕9l>،'lGwBlwRcР'3F.8hp[ƣ'xӕtVvpiq*hd$ Ƥxt82^nY \3RA ܟծr]Fm%G W~zecj[W8V^@]6;t~!P@f9>n)/2*W lNɏd6bAco4c}!ΣPz+2lKG= 5Fp- w7ƿF>2qQq Ȟ!c.xpW^1l=XmL` nj{\A 4_4" [yݒ~e]͟mXP[ŇN 7fN6c=(^3tI߉\Ye=p@ @ʥTڽbugZ;Ò]yh4y9'7 0lrxlAG)tK``riz- qf``=5Aސ:%v ?W.?qh@]ݯ,VϊWc꺥O89R?#J1}w7=2uaͲ)= pܰ"Gڴ|=Ǽ1#>DzgYʄ29 AcqSlr-e̙s${ n6 8 ʺ;CK˸zJ9.Te.Ȭ,5k|Z3+^~$OyE\=wO߽]~f,MYVSU31"I?C?`I6p&(HxuÜePvi5*"!zv}B=`9LҸz▸ꍿ/(JulGe buTN-$&00;3Mqy+ƈ,%8y=47f lt{"zo1yYd%~~~9/?gpB0\bj]@֋l+3 Щf*ٹa&uq{SZ4Uڕ=W gFԀ~†\5vXº/]9Zҧ9VTbOxc+SMwn.͠/O,7Fܜb {Pƺwň~2U:ײ8$gG4l 3DR*͝Fen9VRwVQ>N9GM`e޿_"!:W[HlUT)HoXQ=\N=,"at tO *wK:fK5U9Ab+^C ^i,A3J^B FqԹ le>i9 v(CFBm#Chr&CX'se0b.yX*f5o3T#!͑RF)3of=-pLv6>PeDu3z,͙lRqn(nDGrOsmZYCAK =jj~*>F_3Uϳr7ë] gR;;,ߘft,7ںDgt y"^GlD!*ɤ頢91bVaz,tT5aϤc0E0̕p ^ᄉqWz+@o'FOin^U?S$sK3.oӞhWyU H,Cx 1sH x_UQ YX}Gϙ)qv)As 7VY σ>[- 0S;Sp kXXA]FșDa, 0TYݱRz U~HkW=Q& оKpܱ T ыM*bw򊗻3tCl}!NeR8KtS,YfKY, ȚT Ȣ KLiN9Z1q)Bو1X{us8|T( g#1хa+M1|aٜ yJ}\X+cxAEoK>,tGjgYRAP`ȰB1F_CazSvH3MVX@g#8ڀB#`F~b τH g\٢YuVf&l 1)` !+n|k?zVW@kß@FwZL3<3"q_O ; Oݖ+'rk[Kݲ2]0K;ȕ,`E`xN55߆hh2?j HY#cq (N0Dl2Z}DN}оATJ"2P|3MݍaaK` !6#5r0uX?=LC ,89!Y9yjK$]Wbs|;sՍˣRoGOΏNɐ B+\bĮC[54k>CIs0y5GXWD"SDos&iU4P{]|إ9Nx:0\.7q X, U#%a( =I34:j`[}v&R#nYAar~T{UT l[WEՒ)aJ}Pܿ>>+cpR$;TZ3uD2b{""/o| _ ⌭R3Oۨfz`Yզ&]9;PDf?j.şzYr㌐;`Qk 0PULffJ0!(G=F= ~[sd KO+Vw]SgO\ikqm,~!\MRGdNhTxWBcCEԚ `h irA2"fx<8sz=R 8q-3, }Xdo7q0fe:5̋{a~m+|n_X>>T#TݔPK8$rRbZI)j[G2Cf{Avد_htmXeiSޯu JN1B=[bGMoA?[ xc{sdc0fBk:2­CܧQgGw ׻_:h|,2j~u,a`hĠ*ԸA'ZhĜ`H @XDLp(7PV|675مp"@hF"#.sjqz0*M")p=AEq}'PmNG2 xajvP F;>~JX%lAgZ%}<=$ lΗ>@*~N6YI+{R)׬@zx37>F!ӛIp@2D(j<b$Ŝ+Eq9~ 59f? >[oz#{X}-}c!{pjAT ue`ѰW==(Y"xXP劐O*_4^! IBZe "c@-8yӃy &v!t,2!bꓺD8eb"'E6&w3)q*A/p@nƧ\5c{s4nj)Uߺ>_?kT? O@d wBk&AI@ zJ5$kd !BWrZ2oR0_W *ia)2 5Cqm>!Dj4#Ou('՜ pz:"Ƈԑ WfQL͛T]`= 9]0*6&1ln\Qw8 wfz6RP~dKN{%SplaǵԺgz*CL d)9w+K"r]. r재/vT-ͥ\Ͻ Sx2 hoyyEg$γ ikb"M zϡ 6.V\Po?W >!{lZq]E㍥LSrTmz8=q%V(¢tә~MZ"IKX,Bd MT? H"b'm+vopَMjQ HgIsiG^ Nz0?>DϳسbzHMR{@\8&OfG@#eʠϻu- ՚iL0ЯzW:HʚҼCРd;w-Fs0Gz0 (/[uC\ͨCpUDtY=4ſw?0hǥe^dㆆRC̱]; 9lC#V̈ȄחA 0kaRA|-?~k)*VBsSzr6?fAj,bތb*|- \= Vf H:]_pE:[aN2`QI! >\E߇ޥg[8x5Q{|8k3 ŞM0,8yi\R r/ث{T ` /7{> Yھ!GD&#|r>m]ܫO j`wFhIe:ᗰ#e|Tj`ppq>2`Tq-c)0- Z<ɘ:`%8+wu@{S!"xdDߣ7&T g(vA6qU 0GG|owܠ DU|xGYd#C=\6'"m:\V7u"[ 'I/BB Z%M!LjD4۴w|23k\Xz& oJ!d!e!U`F|~\GtN w&v,`9GˡN ipU\<6@[60.aKGKE=>W=|ztg61""Th"ۀ>6dt!Cg :#c.& 60cV JI:ec'N&L^G C XH D:N,29Z=`F%b*?SGYAyTOrն̧^{<_U#ْ/,@n:v)RUȌ~ᅫY@c)<|#ؤr.U]uxyjߡ'~->hl 2#V 0xsAtO׆ eo"ɘ2Jax󡼠 zt$ ! YMFGJC:#i(e0ח"HUHJsa毪o '6*ޛ.xO5]ŏtO{~XKʕFѢ!cB5kLPAT}Eu'c- /$D\1h:ŶPuRSaXIN z`,TVpB&"-MUKirT19%(pMy#x~jaSC*sc_lq7+WZz5|ꆓB'?PzSHƼhfP>B(>h2U J8@JM&iz`{KXo`R9R2S6(YzVzQM!e\/-sЅfCޅC޶:W7o5ڨ{ԀvwT.U,P˗UCˊg!|\ׯ@BDźE5%d8>S[4x/7Fו>;Y-{zm7)0Y*&t/_Pjt`zvź>Ac˺G?bsKlv I<e"_V3b*U@4g{ey>{^E~r??PNf o<]V,dn}B'ͩDd+9:Hр6}Q@LvyV ǖ Sc8-`6BBz`(; =H43!5!R2 |uKb0(ub@ fG#ӻʗ9ַe;{EIDe 'N$"]7(<*k Xm\X闄_2]'١7%`6rr9 >ȬB*i)`&T }3ҬK}B4~\Qe<1~.6R;gd#?8$|_xV+9AFLLaL vN Ż]"n`nX7=u,![>B5\+)Yfܾ1P(uv v~3l1;Cy}ByL, Q=)\?oU5xg HRB(gqIHl*EsҌ {`-9ɿX7jǷZl ߶:*˺8&ƅC@d}IEU'x0g+8/9|r *w/L\ט֭FK|u!Ü!"їځXIr\cHU ib$"i ,!́i94.C}L*L Xb E2u7(ڄ_d:*'SkS0/ |t0_yH{rFCb~eS '|b͊:)JcH!s1zşsSy~ OBIxkvYhd!`V>q 7hx,o)0ӀR Z7q4[@~7RKh| Ͽc>aJ'?˘N/d[lr('7Xup;?b4էe뙛/o:MD!ADowq$Kd>R%ʑQ߁9{x)N&QBfa~ :Y̤xtF;!;Tqɬp9`'_عS4 J&NO2οW.vFs<[zRp{se뗷Η=_Yr/GP()C73PzxeIdri ZF"6ƒn ŚYX"Q4r^ ]R\QE}+=/O/ټ6oR\38*MA@/r'ڭ6ަaY@xho卍$_# cshvqZz{cz Ԋ`Wq{ɕ͟-?\<p{ [~/ǣڲK{IiT:WNu>eȵCzd1357ʢpqHV!:,HN DEQy/R̂wچ6rz9j}3jAD]>'$ #nGPst|;PDlDz(Ct3f #cdn&1|8i_jC}Ren<5颠4zri>^ '| S~ 7f;och7z=3V蹬"rM u󦌙IAjnB R瘚"IWFRDc0OTñRk9 ,:<zlY~ܘ#˾]`8ة(CC'4q2AzGi$CPO:g=g>UJ=)LJc 3l;IGk-[Bhr+7N s 7>RjZ'%diO3k !̷qV%c?L R0%qNA#bly3/0!?TC[4Ա/p\!jKl5_Z-gbecDxȹ(ڐHcN\4qntφO^{*Ku+¥ #O:@$k"͏h$38nZFU"##W>/nVoH'hm+kdI*1ߓQl={YL캖qbqfѳ(KЛ_i\ľ|-+,8Al$/g% ?@лP@zx軸.dt/SOC=#CEl8a);tBBxՙI_טE=eH}]:|k{l%2)LkDA@ZwlXY;۵@4Y. `ᡳ->bGpBc#hJY%:Cx}KE×@J=ks4d1(AY4}@JxX'gXZ9j2ҼG)#R2ƻH'zٵNI`tpa]O\@VdR?zcK={`ƖzH S(O*!@ A[E: v*i`vE"pPE:MY8;ez价~U-ooR˶[_0Q'pČFJ9fאHH3ekAĤ)6"q?V>:X"S^dπNmk dAB"'3M2=scL%c`zݝ# (umKWpNa pHYs+IDATx{Xg6T'a  QPA" Ax4MMbm>k4 !1XXk!Mڒ$_ڤ>̺ܳ.'޿yyf΃+u&(J %@IPR()J %@IPRȧmmNpؖ &KmܶmeKQ",Xۚ$LG~N0Zbk{>`z~@IK|H J}1a;}T)Lb; bty IL 4@I0#aVC m hZnf;o;n3 <'Jqq/a Fmtt`͏ 麏Ͽu¤V',z%Juc]1䵺`@ &->oAaNOLG$3_h9 ֭[ۨ߻ ~d4:; PxHEtOVs*Lav97\BDքtzTAH u2}F{KXzu‹)$iJHOѼ;-2݃<ݳ2}{B.(}lV =wxP4HJu1@&ݸe,;ĺRoIB.-EPpp0 b?f]-@8)z H3 JB~~~L-e d (Iy,հk@˘Ju1}Jp<{2صQdd$%%%If@*2ƎmZJșH@ 'VKk1n"2f_Ǯ#g5܄JNN_qx]`PO)?DΝm/R 斄a),, B${}!3` C5tX5>>RRRh4Nd)z!.0w[RѺ!@в+{Gq=t ccciذa\qqqM0*av236 Ljtt4] =A%x*>`=CBN}z -pdslX\_` dY0CZ@@;}tf\ H`L9r$7_כN~N5?+&s ,_JvaN5;111|@X_Kл*aD;ZQhĈ<s%8/_X/4%+@@ 7qҤ^Mm Z*e 6~:Oc?6CJbb"7===z'~ƏjB~=}dd`,eK` aYϨa>=9.1cYvs W6FW%*16@?kBM_~i_xƏ ؐ kavff&o혰Ǥ/VG&]I5?$A 5@ó̂,8ՕQX?{7.:{ K#8MQܸ `|>}:͜9wbR Сh7ANoln^p" ܄j8wf?,y aс'⻒7 .vyt`5PL6h7 oTKi %`f5ڿ-ZT@`z5%; *p!HΝ>םףuҮ T/@7)yyp5=X=T0H@E0cAy1 ˿8ӵ/ (%,*t!>ck\wAD`EF !>sМ{'(Π\k+.uA2^_<`>4yL@YȊt '!H]` D@Y0Fy7z`Cx|s/AW}̩n<7,kZ4?$I[ v{8fjOg@G CW:J rſiCy5f>R!%"b3 t-.UR,+;7z~̇Z襭J @u/m ;!6 ṫ6GI[ cLf&n?뱡 |qK8h>ԃWӦQśiE!kA\s. c0Wu0*0<2kScnwUVtP ( 챔K',6]CuwSUc8h>NtϸuJ 0nn p^G˽2VD?4qPM|+|bA`qTbciة#<M+.;p>Sx]GyAͤ7b7 Y+2}~j~YTMF;ϨZ !5'Җug^`GWʷMCJFrֲ[ - ],ӤO ؚE7U3WMrW 8$vZQʨX@>ݧp%b,FDGPKk=-jۣӃhv$FpgOHFL2n+ /-.|>0l8y9mǺ@ʆ (a]]LPֈ/b8zz<sCX<_O`X ~H3~"YG4]1'RI5p䳳)##gOIMӗwY;f?6~l˼W_f;PwieN0F?l# &BD/;~1$f/w饮J L7AUyF[8 `B 'N._botNir=׮y:Q _\e7jHm{kFuP4y'?V~{|ẇ # +isfE:٭6lX%?;Pfܛ+}%d P`J|Z" 99}<8V'O RH+>@ 7à +0($FO XDy1Sg##}SQ f3AJ Zr5n@Pګf3wYM` 7*L%f z|J* 3- 8'x|eJ*;wn'C-1Ro bx{vyubNJ捘9!pb|6x|hs OA0fWxJ 5?Lz͇X!Prj9;_A \ xӼ9i=nW|FW f?xcf"re~ ǵ1J2l5J-``dΘ~K!a pHYs+I-IDATx}w|UUg{M# ^HJ@騠]Hoe,QgFgd}8[k{%D9sYk=}g}+~rG$~P?P?P?P?P?P?P?P?P?P?P?P?P?P?pER*zaJ\Z׍1ϧFNNN-jۺU۵y=_.Yu%+T*WU_o4>ۓF,=2uy RAf Uvp#DYGiLt4"B/{ P%}6>mF+:!cT-!>S[yvk׻z3Tthp_`}-Z~NEEIIljZ8C9Hq4Ti $i7;oVwP E8A58qD6AO p6j26ncCOc.v= ǎ8Dv{ŠHosoP#ɚ%&9 쳬D@r>KƓ41oV N Q 5)*DUĄUT5:5Qɉ\QA*#,TѵQQQ*::ZeTjjJOOW94BCCRC=*TlT_ i$hKAT97Yt^EN:UE`\ۢ}6Ʀyw/ٴM=@=4I0|>}~&qzϋVѽ,QO4ĂK$LPTov+׫F[Tg\H[\D8 LJJby賌 xMUZtGǭUwg*!uH.^UФ4 SB*B(Z8!4 $%ds?G…@$!8N1 4_gͲǘL1qo,ھ O %w?E\OD ᠐-% 0)p<$ +sn#̒h  0'jlsɲI&D6)9ql5@Vn%BۏEګ2^UɊ9j/̩фAN5>-YIKRcId8%?$Gf>84b5ƟA.5fހ&\m9źMmptCXY6gY[Ig^Djhq4bvcH* G ֱFhmtbOC,b\0m#U9 j\WdҌ4UBdb1K@kΘy5'ьiMgH'!4y p '=s=s)7rNs%p\ WpU&}b2hb [IdRп;ڼcb&Hgi2!v L(CHW~FBJbih.iZF`H V.'!qj7YM"-Z[i ,Y Y6,<[6m+q ɴlG$6!mJi & 4~=&'{GyO$ |w+&YI{T[%S`M:R19B Hg^YYH@=$А`,88Xu{¢ afzkŸrm4 #DKI`LZ CI0]hxȌD<{5{j +$o $aI$T6`ˢsH&`62r4pq m&=?@+FIː ݉oTx5Q#S}_Fׄ !* E[@< 7rEd&Ɔ6GcrWD$'"$4GEaL:I>LEto1!jTt*8ydj%9WV& h^dMR 3p h`,I&>IoF!ԣ:жR a*zQuj_ G 8EYH8r? IWx@bvY4`I`.֠R3L'>Cd. Vnp fT!

|U1FeҠ. I|֑&MB_Mo!v3z`k% 77$(KzG9軟wv0Lw{N#MBh!]ߎnF(ɡ c2xw$RI4,N>vm]g_@Ȯr MO^0M[#~ (עxA8H4$"ydXrkߕqpe=wpH@t!Gʹ܄0&%܄=&+> sdiJ3Ľy2I@Xph;[\G>so+ u&Aҹp=.(QU|X:BC ht|m?su^bS>$zOƉsa[9{$!cp.@7Up#h,jI5~2 ~'~ T2 sNG%o9[ i5 *!q~@B3!5 >4GӜ:/k ]\72e Ʌ ~ &ܡ~`2=SBAMb+]7B 8W/׎B }74@>IB}߇x^,wj/f椈Hq Wp=O,4r x?TKp7qe 5xA<Tn;4X~  >`rKWL%$C` Z'2a䎢5Ў{9N0G l@(}NXZKgDQNVk,բD+׋gsB< -\ 'lѿHd9"̠c;Neȷci>#R/f^>AH0!郤&`ʚ`1N b5CV.N!(%L^k@zE1ҳy2 B E' mƒP5X =U[!S+An%ZX |ǤoU+~M<Ҹ-ӫb%ˎ1>R΋,3y{ &BV(Dl7:\t'@Ni7v*.ŤȪb^e!ibڨЩ)ǽ9-V)ygBډv@&S|ԣC14)'&JTR1&! "Jo7od_"1/&3+k`&}C23*R8u.\3!]˄zˊ E<+Y] |$x={ E0KEKy #/C}79h .'<.!8IxZ@5pF HZ,YcT"ф(:w\($)Cbl[>uUw8ٕ^&RM\jar3`Ф%2deHԑS5nc@0k=0pV{]2RSk3FvאE1_۟v 2׼F/n^ Gs.IbƋn5lM%Lla2NAJ:?!*JIJu΃|3<0mBt5u?éa%HinMi$Np x`]U7*M^S`_DypcokqۙP5` 3lg&+hD%`  '!MkوDI4 qbշ ƿt01Nɓ^U|\IxZ7[GKt1a*=p2GC1  SW|Bh9|-f0AX b-saJƀ%4Hqj3Ofrу2{rPe`>AԡݶrCti?4ps=8LR8>QN F f+x\#F |WNJ 8I,N?+>_X?#ad\k NfQ**!楽DAF~jRR_W`&ÆH*`#,'Ω۶>2tŃnn$m_xQC{ ghG D EI~riJ\mm-Ȋ`"F{ؤ%-#\#3% Bs+WYP [#xK'p]--M*}?X.ƒwՑ8sJ-N5ގ .ex@]Qwp@3X`<0W'%`ڵ_(L1hbL.@,D'Tq:CB!%AaEjεX] =``E̹ Ln,hAV%tv `,Pl06d ψAGvB9&"ӂVR$=>K~j`OXф @P@ހ 1@$6p?ZEgx1Va>[ŪN @CKEMA 8sЈ Bn: ?IFGBJ7HfψxHxV)hHgc@877$@ '[g s$Leڭnc$y`o!Rc?RY` ̙ / 9/,9g_ƕyǖV~` B/Az*UqjG2*%.sխիIX:uKm $ t,6iLueXpdqFrop$U WK-;EwiIEan5f@:'I}IDQ(>j _}2_?Sz^4?uwl FyUrV[YuDa'{@nI_"Its ÚPs, THJ#ց5ZHij 8 h>x#5hB5p#Ms & kRu|#LNCoVUtX r˧-ī8@9f@FؓN[ح]+L=V1:.l9 Q=!vu{| D MlVa#\r)xнM^ 4Hp)Bix{8-d/#g{nQWsGj=34J{ig~QBͥ~MbDݹB/P(8 љ: [0Db5>>gس-TR^sP[@k,4N1Q}J.^z ?%!,yRcœ.#``xpi7K<7p>e]c]`eJ ?BY_f&AW S!D)韞K,A*vsFdXLպХ50 \jo . |̾=&)eHG8C./e1,YJ/yavbPc*)Wh'fBJI-48[CXr5ۉB֍&0!`vjM0532k hݦs\Whn*ǣw}ZUQnP}50>;Q q=Mgv%RվyU`=DݜIVc! G®8y\9Q2@*4ܩr.hq<7[9wik0[t ԥdBs2i2Hb!76/ύRaڇI%``I;ڣ<ɅM= 3zGOJ`9 X=@\8McۗD/C{iA Z3©3xr uz"Tv " 0N1a# V|!R~u2,t6+XhFǸkH5QM~UZ@F$ϳ/PqDHM2LjҨ$6aDO#V$$l+@=Zx[:#gb.mꑐjqYuB#HłZk?}yԇgtA0Vu n )6XkBѻ9Q.KKQP椻wDՉ۟§7ҿQc)5&gM!}INy;vPI-[jqLڸ\$ܾ}%`Lye>EϳA/`LBz>y4Zf?>q&sr}|Oobk`=‚n'L:W;Z<خ̈ ժK{K֕9jqOGUBNX49\2}p_c|mAlm*&'50} rSqyy-h-me `-:s2;wѪl,[<} #z>i<& `!ơ}k6 ?"ܖ䷟ a@! 7e(Z8?ę}2֏EDŽr2oRgoin2f@Ar~!Sob}%:x,Ýk,0oN v>"_ 3JUmc /? L$ Tw qě$kNi:b8G4yY/X#];,(6EG/֨{vƬM%m೉[!!߬IWs2|;:?@QIH8?­]tɠE㹶=~K9'oO\OkS_I CњIn5,\]<$_W`ܠPEˋVNC- ڜӍ,D Ch t:Ν mܘ7v1]#WOJœv5 =^~- 2aϓn`-Na^@ w?pd|$B iqCdp/$YxF ӆm!ԡ=ì>AS%߷|I?K<@RV]ZkSny@VoPmnw_XmrKJ,@P8ݤQv :Ԑ f =I (zE* ;u tLXl2!$L~۱=]eŨu\M𣑤7ѷ6kG/Yt` ì~έt~H?-ǀ&3c>dFNSM13/r2­eCuc۫[f4Dػ&hV sn`i4,p _/B"oULPnT;?e2 C1@ׅwi (o`B irLv6O,q 4±""vC^<ou6AONKK4qdP$I]b !vA?Lր؎osбZRVZUϟKgب`5?[2E#8ƕ" 4zn1~; a#7x$Fp `3t吴¦B.9s F`aӈ17xLk4aP׳~tGA1=ӥ3m?;3'%t`&]; vXծ^č&$wǪUF4_l/ICތ\LP@ۦnoq7ihZZbsDt`G_};%%-5)m:7@An N`2ccr}b ĂemRrGon֣^m!:B ̺0_உjv*ci'`C_>:;o|L'HE;#2$Zsp?/f[M* :Ν/8QI "bP-4|gxSSX "c{=-t}^ ڿZ\|Ln]ë%^T-EqN?+yAJb4SuWلRtѪ42 ee59;Q\& Bt>O[TfNj^߹Zw g:U'3-<8$Bxd/޻`rOc7^};6NxqQwVE ,j -/JHq{ZClk_\]y>"$b2| ph jpvtICx":q!;L`{7hwYw4aL*7wE5ۇUF$" oN~Bd",#cAN pP3[B@O+=]DؖmV./ɈdՑL!XMa@Cҧϲ{*o6h$#Hiۆ-99<KqJqWnɳfN҉e>1KTJNz  {ȧ뵍_^ovna-s`JM *Y.jn{xa%쿿$lǾ;|(ߢۜiM ]'  TM*Γеz Oۯ "RSX`pbyq Af3WLJ2}^}r?X_N ?m6"{=!.D-۳߳sHK K/E>GLw{t,ŁMz旑a_$ x͉o3sV#f%IJ}RNLw Ihﳬ?x@z)8 e58+ċ"[hJ#!pZz1vC@OON!gpkqWHNZYPℒԟ?,P5K Nslr1_~/n8%ݛl;L޻5^R@P0]糉u Ƒup6r\}#,0AV!;s+c[)1LXlZj7s ҔI:Қbq3 G?х{XH0.?AEc v'DXc Wi)Œ.a_7-`"Aq=]aH4"= Cs z R96k\kd5W E047;F6y)1"`cVFrFgg+y:=Z})b!=L`* g#vl =rYL.R: q͒Yy?]Eo?40J5kVTD>q [d \&-]_'(F4j`֭voRhXny|ˀ&=&64)`:{,_j"RLX_&ŜH  ]7nk#LLρQ DU<}*24|$wVzlNϚ5xԆ]2GZ'hyR%~M׹ݾa#q{*>a+~(#D]iCeka 0xDh"MYKRTʈ oֿ*>c)YbNe)|}W HDǷ?)tȰB/:#Q>;!CŬt$o9eZxͷߵڬO`So '0]#u' ,{c؇ӬcOӸn V[Px=`±#z=8 ҆r7ëzܽH{@fΰC$DjduFlߦ=$lO={p a$?֡[\T_ "bB=LV5~YY]g`y4lI{=*3թ;j('Va/I~[U+Y1J4VL=2|0k&C ,"sBG됉;S9(YG.k&Ə0."?Ǒ߷u -ٚ[MCl5u6É!S7սI-#O`4۟M<1Y^0?UQ/ხ߄Tˉ[z Ƕ<; K\V\,NE^@2Z7ߊڧUI P5{L8W9e0P]ZڅhA%eB5ΌgE)ɃoǛ5>UZ/׷UHcw|wD_V0T{pK=;X80ȋz;+-.!m[mZsǷ-]{ Cp}b:Azk[2>w:-ZF vmUK|Wy0n/>˚=7%\3B'D] q/:'Gg4([HG_5#~,ET '2Ϋԕ2 uWI@/o3qG]mg8D.&%(:/K$b&oL=zjǫaX53z8%GY?4ǥ{1H#8ҷѿ6m?O5,<#P_5kpϮ+@ gc ,C9H?'f "ۿ'}XǮuh)}y  G= lDTOnzy(z )؉Ff/I' ~J.gTعA]϶(vCcȅ%@ r V8˽tx1 Wv GP/Q >AlAU&zS0R/oڰq@?HH QK[Y_ugʿ8)j+?*l@(HJM܏}R/n:ͺ0ѽ۲/ybu رMy;uրF7D>}]yn?c ">Ke 'ǨZ>*hu>s%5n" ruc[-ٯë ,[Z  l*5ScCr:BC'R5}DQ#, Xs& Ľ'd 쾍km}Aё.բ0Np[ V_l9fQMĒpWu>? vX"vk4cF!HW>UeT"y޽KEճ}@ 6otQgzxRJI ek(._ם_2-kOz&Sl5^6G \]mv$T쑇,Pwot/* n u*@ {޳\_͉lH_tೋGSaʛ7,$iK̑~0wp$!$يCI(,_` L ň(C5#0b8l5c@ٷ@gfG]v :%Ko{ԅS_ss>KrA=d#u= 5.$Xb@? ~}lp? jdG xQN>&pr1ct%הYk**jQ!b$2HLTQ,^",f ꦷ~+' >ơ2SCݵax" T_=_oOgZ4r+Uf:Oqt9^>hӣ;zH Sw,0H7.xvܬýMrΊkRR0`9q>ۆT(+s/Vaʫggx9U3(kaSKcUqKiIܟ,?`x*/̷#}"RBrrs'$tпK(2c[ue F:\nLYKCѪM$.f  r#{ySw?,`M?Iڷ/+F~o?YU ^-챣ٻ,ZWm3eb5wES kzSOI0֠fYdVJZʿކHgx7x d _ ZRR}W*~ʂIpͿz~,Py̒u޿&/^!uF#j j8.<YękT`͂=4}+C_ @y˯ù_,[X^RU!eձt]HW#+&V] g7(}pYxKm?xBc+zIh~8g?kжʸZ;FѿxݺP6(Lm/F?k8l1vZm-۟NUS_mթOhlzJEo]_`Ueb84Lm_ۭ/\(^V4+IENDB`pybik-3.0/data/ui/thumbnails/Tower-10x1.png0000644000175000017500000002222713137372547020652 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+$IIDATx]ipTיa -u}3.6a06`0`aX L1c-,l"`[X%08q2NJIR̦d23ԝsԼƱHqK}9p9"8p!38!38!38!38!38!38!38!38!38!38!38!38!38!38!=JƖƵCD>%oKUuTk S2<8{{۾2&j*|e I6YQ3X9 Y}].Z1%HC>&kVk"Kݪ0 OR)P+QA}+[=) vx `yx%Oԋ͍V{p47#JUs![,K^1Z@r>UUX]@[EvVE:!!}`G!ün | n އ Y -T[%* d2NYT#y`>xKWsj2A(cfJ5%2~-T^rn;ժy0to+."S@xw`PMLSTXδA!~ẨFw, á /Cs *˹L9LV> ',@W1OR8wE5 Oaq@?eZId=gW vq^!PA2̆2tǹ) D!#DVqK&- O*P~!@w&[>{*K1ChHa(+?c  =87Rkqͣr5>>9T=TH/|9>K0W%~)Ef@cIIZmʰ2j]tLx _"p#.2[uPvѿ_!ߐ.W~&c OPt}|u&Bp8Ȟe;a!_f.t]LB?cXl$SHgV_mdeJt( Nu2 /xq (\b!Ǽڸ]J}2$GH:H(v(  q]9cC1d&XZ հdh4fUS)O`aiҭo-5S=j&|~1.8/ HH;-}4mdB([<% 3,綇? ݀, :li<cmgxC3Y*O`i<*8$E t.UQ=$ ehcHZy9x=kпב?#]%gף&M`8D;hQ\ex'(< 244}׃\}16X@B! , HT T6 08kesh, B0->0Rze=)nCf+=ZeG&F[cXU gZIA܁8.."_@)Vu#)Nԝn!d1bIKg`F6*Ah$ĹvTlCeb(Bƚh"qۖ*Dތ33&`c\ӟwC@e'|$#`"ӕ댄6ʧj"ITEh"F`!p =&hҤ SHK`P kChSJcf&stkOշvkM# IÌ) ћW,}2-5U! DKaYv<pX$ca%ߪ/@6vfZIeàF߭Vy ,Ϊ ua?d` 2 d|٫p%K}LtRf]׸sF@ms )X>v\ `+e珹y/4dsY ,h0ϏZ@*GwZ]*wAV8|+ hx4 3u9q y->/$8sOi̓qx,&Sv _-VM"`qD " L+7 0Y:+!2R MyJ:6-,Q!?,[Mm+ߑdф#x9#]<._ߕ6/J}q_v pap$D/ER9d)-[2Gz$2DJWX,!ccgXu>!#yi3]7LBL!%U"(LѱAڵ3rx,TB{g5ATC Irjd3q4ġ )!@sZҪʕԋ`, %`X פ8m oJ|Gŀ0޽J׹: -0UD7+ sRaIZyb3bd%kg`kɪGCf=fZ_OΙސ~uZ>c+˸%X4Ja_Ԁ͵ X@YK_X51dxM0gipXfԹL{5wm*bz+6Vau14gDC*sb{\Uqb`IRv(/j{K&Ej1"e)ےI16~L.I#_K[g5 sU$[bՏH|F`(گ-T}ϩ H7X& ([a j^ G6뢤uS,w*R* Vg'4o]!4r*{GӺ)cgx6cPNjrS' @jV H IF+BV2)HE6% HD!;hko~O'gPâfGe=L {Ѱ[ߑ'ԗwo:hrlxsFyX~;WRU6o `߱-.bߣ/ L&:Y5B:3ݺ:lc]=`X5knf'|kQӛ,]h@5[KN__0Ս8Ql&T$OWKf&ܳ@+ƕgAM8.1.dkE?,N嚮5W^̕R> R fOH|x,r!7`(dX0baX=jן&{̴pc # _϶sTӦТ Eb$#KojV2a *7N-`0cY0sk UJx!ɻs!zՅ#l =F!$I"AꬺNU SoD*eJ6OmZ^s75훣P7o XJ)5q ó6/f[+*)\G9I(.*o|?}T?';tiS) `PYXv~ER7=f 4)v1#y=mq<< .bq3]jډw>=o |cgiɳ* ${,z涨f `f?>$ytݿ2g]m|>i| ;zh%.i\/,@\ ni8XB =mVWb.Y l ~bB:{]F-aN2 s-&vKiTz&Nlu `Y<Ac$ۢ҆[Q~F-JK!^% \J̞R3`ZYvn#7縟qۭLI4b\!Ey.KWCxZ0Gt]T/gP??V)T ?S[:V'ɝlw-8R{'ɭBC ݡ Xs~ )B7Z*mAz3^su@*}:r&ljbtǥ,n!!B]0fD㒉QǑ.K} 5?KN+,na߳~Ԕ}ߘ'/0^OUVl#?w[Q5k㥇dO |&A66[vh)aJ3۲uuKܲ1BЛB}0$ظ*U<lcO7 dHMw?}jnk~[fl*.KI.# \@GW}eXQ$v FoRܹlc~V {(;m0^9t,ڬ v 0Ť?g?+$^29bBK`S cqA=3NbPzJ&榕շe:wDEy:JҔ ,>Yʐyң]?ðhcK`90Ⱥh IJx$BQ9҆ gpnǨ OIe2{f3u)vѭeʐ BǭMa{p->Vl`HFְ>ײV#]c޾Wx`HY7rBc BGi]>#˟cKTiLAKbW竊;t @* 1=_P֐ "(UGV2Is=@HT*<Ǵ* 7q=Z Ht6vтucDtݲQyVM>hVokHI ^s^,.x27Xs뷁EsC'Cg.u63`QQe/')uwv4iEz$P$pw&NpתBtOR-ebئ;ܪp2`< 0_! i_PLl` 3KwOv(m!84ݤ{aoHRSՙ=i4ݵAu8&\tmZ`imd$Y>E"d+IϜT_^_T`E򝥙ӫuи~աw9tD x.xfͅKaMbSk AdY8Z=Tk7VJ1%Ipz d\@N8#r:]ugX8;!^A O*5e۫,q`R@ųK/~3 okxF̠Rty|B3 n#s1kS@3(!g2],7Ws ivz'p_u+01GpUQaPv_K/͹m4N/@Lc U>pMHp]N ۹v&Αyg&𞿥&XE$ѭ>۔?IICcV,8ͤ[ V:rpC*2ͭ ۲]Xq ۸ݺ}X~ RC42Ȑ*0qD(R(`~k(Lwѻ/&Q+h k@n]IVt{u0BY+ijIe&SbKux7qDv$E~cc-T0 *NR'4ooԿR&k}^uQ K$d`!*MANnoz2+$XS]2~|TW@DggFԿ]5x_'|/:tZeљuA9H| Y{A *7b*XiьpUQ~0[(|Uڕ~en&`|A=}J.O986~5fkHiAtK|?w]&!6Zꯥg.O'?Ԫ`O*Z4:rѲՍE ni4n ]z/uh8r#5njohΫ~)SP[]m )߃I:h$&i «Gʳ^I5(rbL?MLJLd Q`@(K~|[>m@Ec]0uZɀe+t jBDuk7XV<# #>VtR;O~ >ǥOl̿$@,*Ò-׵^mj mbng ml 5vgA|܋'5k??P@rmXhٞ!u0hd(5BCp<@PW|0ãNRequ}mKE׿"5x6>D #c,RUi"; |sy[qmk;K{$tU1Eho!,Z>{'U~,~ȇ{1h젖pD t,0C)e$QuU"[Vr|vRi,貳2"ܬD >7{N/,>|QS`{ ~ȐqnOA[ >ǗDG}J2jH-:[ƥ+XS`qq@; w/)Cg8pCg8pCg8pC"8pCg8pCg8pCg8pCg8pCg8pCg8p: #'IENDB`pybik-3.0/data/ui/thumbnails/Brick-9x1x4.png0000644000175000017500000001175013137372602020777 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+IDATx\kUՕgQ 7y<yCcP4 *hS&mb&vБS^!-(tCK2Qmf[5g}io_Mʆ֏U}>߷۞+ݺ& E ĄbB1!@L & ĄbB1!@L & ĄbB1!@L & ĄbB1!@L & ĄbB1!O1 XO#A;pwt(cB!-@yȀԹ7( CMH\YqkcwH0 hH 7vOFK_؏t ǡfa{5\z: 7((^ujz0A[U!d尷{@{ ,)ij 7.]hNNCx6vR!R`PAjQeTRLDKԿ2 BU:VS0K Q|1Tn!O ?U?; - |ҋ13n@ޘ6aގy,}8]$;4^pMg=njGԺzMc2 ~I/1¾;nRC@o . ExecF߿o*G vzp#?мd Íy$ ԰bH3cQ]H¾Ό!}\hia}N!G 4 _[&LTMh^;#|<.׀hD2SbYjmX h C LNb ϔrc#AeǏ^ڜ|.&G?AM,1͸U9< y8yB̩$`z{.;oW/i.NٳXd贉OA}Vf_x]Y*;@̺dS&]jXHl ƾ~ l'4◁l,{7nاoMud^?g!LG6%& #M|1J;K혖vCAdILS F_"V(5I%c.s(3 KJZtNtز!WCmOTX$z}_؞v8Ƥ[l '3,Oe+Z[*2 d(0@ [B6ȇj2{-QOW5E g9CAx?oLE URdyNy>.o}ܐ@__Ntu.XP@T#*)ޅwtk;Aa qs2!~猏 :{ߣ';DC:E~5ǽ{Dd5< ,,{ gH"-ITRp"^Gs3s|<,J2!:gD}mF?FX*Xji2U Qk+W2,SR#!FEBjf([o%T@x? L#j)GTk=;B:bh@/d6{?|%33sٚfw2:e/x׶'@DrGx!ZEzt m }֣ ﶥ}'R;Xc;9ͩjp&uxgNPYaP ̇QwPX4e $kA1}nXky^2QbFF)3kp_[\o4Tg"vA03{!B&NPUBǛBABw:rt>‹fnL!7?h7/I;D &s}9)$;n{Gۆ&Jwʴ>f~.` եDbnTƱyNb/BxgMࣱ˪4R;Ayɤ9%(Q{D_晆ڏ9J]K<̋-?j(P{^;V_;٪Fz9f <lG'=Σ&*"@# 8̵'ܳ)&mx`(1Qb~<K͌0lV|hſ!2D"U0z`|߿V=[=2#x:u;uD0*R3!I,t:Reb" úS,kF`{-o4<~?IUoQƊ$q:<2:st`(,TO 3B< _o-p\u%J@ !ʝ7ѝ9A oG̞kabzCFczL_?'i c^ZDR+jԼLgJ42E[ V Ku@u&cR TcB\36ifQC3LA~y@eK.Rq_ab48[Ew}^}y/r/k%EAtDZՇXz|I?a(~v$|7GӸ2p@:$Qrd*>bGԿVr7zGY K]Nj7=BPDZN!Q$Qyy4JJǮާzo,U7͡9E8Y_[0-I/ ̾VN(̷T^YZc4ӑA5yXÙ2UYjGͯ_#*x䢔 @Yh4uFTtJBW#: Jذj_uz= `cmfOhL Kd*~% a_"VhJ,`*R;~ej O>G/xUigg5HA9gW{-K'?3*{U I;w&Sm5o @#;k''3c93+< * ~)BvE`OVG%|%Y'kr[NFZfA\=BzֺKSKX>+}>F.tpˢebB1!@L & ĄbB1!@L & ĄbB1!@L & ĄbB1!@L & ĄbBi"ZIENDB`pybik-3.0/data/ui/thumbnails/Tower-9x10.png0000644000175000017500000004336213137372547020665 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+FIDATx}wT_LQ-]R.eH^DT]AQ"b("DE+jLL1!11QSyޙ3wV ,s={ss{W{ 'p&$N'pBB*? V]N]_q|@fq[8tq.ѓF}xݦzGIN:.*&1~,,L< na&^YޟO=Uxw BAa\mzI@λVN#^E?54yDiߥ{ FW94hVx2u?$p}Ʌ}(!OtMa6z#:i-D>w @8 aLP.@V ɠi^C{V.Vyd.dGN2O0D.a wDRy~&l6s:NM䢟!cKFqVOӄNFH <2jtdxEHEzuKA7qwh_Rq9A6.FnA"202^KQ:PKQ1nۙYZ)ﰖq;|@Dy՟6~u?O(W4d6d2dmtd;Diu; ;\ *]9ÉDN3[aS_gCgѱ!wx6`8!Rf/ӤSj[gmO!kKLEۦ# LL_D3DCBa# p* $C$ǯ"ҵrq>ۚ&">(H׻>d\P,Ai w;!%6"!N'ﰘ 6EkUfsttޔ܃oذ9yfe=׻W{MTtJQL,^G7:\7_!^(a9IwI\@a/O}&{ C+1_q=Y ςӇ@PM`wV V $N̳ DU4w8nr+}2ŪZL7=I i7/jku!'CX79A@.^W9I0I>ZB]e2 vn#{_7w8..aU*cdVq3j8OY8)&08mNno*bTPaLjl!Xͩi3n be!g)3uC rUJOS'mj;n d 87?LوP b,+2λiRAA.]WU9Elv7xo V %#s(RpKELP,;AxˁN REn}"L!U3H;eG؆^ Aƪb>V S7LZH(#hG+)ʫP2v[* C#@@ \@V"^koDh TSFasm1uz8'A tQrtKNH8&aC6FL?22tB:kR3FZf8=Df0 ؗ(%p`oq^ Bgp߬TQ+0sV@\<7xApsT؝p 49A O hUBW8FZ 㕂*ZQ;RN'Ƚ{(#-.! DBEkOt𰣑𰚾kkG#Ey"A-taqQMqopqT۫+ٳdmf,}v)7 e!%֑!QN"W?RO0j;c!=Vj6B.G׀~Eٔ .__J DP\NXx,|r99|=)Xd "E. 6 ErU,yN#M@!+z@-'Y47m/|aD"t jO:xX$EXL#C*B%.=%Ŵ&>yPߔgŞD2/2H䂕5?ۭ,ג[D~\'yytV+M~ !l{! Yl卐z;{OaomO~*hVYdK*f%֚GE_8Gժ^&#.fJ. n1Jt@vϬ*a>E LѲ=Epe#w^=|yP@ 0t *~y!yx?")'ށSx%{8<5ҝ|3} &; kJ3he5?b5D`U,To0RД!k-x"-g 7;%d| @&0 ߶`8$]BŢ%ckKJ-< TLW@z<ٻrumk{ Gepp]Ѓ >FY $h͚LG XjByP_ڱ Sz  эc3Sud'kXsW!sZb:p~<69JYo@C0"m(#WPauxlݫ_X/~].j?'Og~N_{oJg6A.rdYXU#TF0axL@ǵzhٕ d3-CJ!&Z*4U&T Txv͕rk%0=]>\nuI*ڠ0:ϟaI 7 9{9gO rhgEjC7G,Lzjܦ ZSqנy8V\AZǢSMwgTZ0`t2} ؋K[p)N%#N{-38U$rC1+$wϑo] P;)ߓx,Gf}i#}ޕqqբ0q~?}墨;mں(OT8T*|NRf譎w|jE+P$b.+Fژ ve4;aj叠jWKkyAy?;m\Sl(ͫ`\Ի*ا<烜* >.z ?""]:;n9a Ѯ)GOׄY /iUA4$ӗt#SZ={U3T]2SFq +֦,Q=}`P_[g0x#]mN@A-@iKFz,yDEJ?1ow\!}:[~c.`ᄠh+<{wC% C$}@lK`-@ A\AakE =JE9tw(mܦEa#LPHC   وhךߐi}=x}Y"DߧC$3> O<"IgPOhS1ٸ;q@UU2^JMßVE:"WҸ5*s3BA*; kKUJxQ#q!>< \.Ʃ>mjDBCC}J:5ja86?ش:)V?,cZbKR1aO|V_j_#:N' `&', &"0b2ːCŕ;U\*bx_4 5۸13(]z{3\4ai{7;nU^:t={7q1^ ?2R"@4B5""~PT+{QN(f@ht6Ĉh7߰! mg^6"@.Łx \y ,c T6 *?ߤC(J +seiw ;*\d*A]WkLs .!256Eb&RR`B@l]m)`CRѩ`Ĥ>QD2bj{'8Ζ&tBْ84QUͶ!#uU3D-QwgjHh1-'W #:['{[S@]Tldj/I}bh?kOc|{t^|"CMF&ɥN!Пkɕ^6X|Y^>,3%1'z}j亻`"F֪/>FrUKXc.z*V*L&p {+Gm Ue4PĔl+j[ޝ ׊C2/KDV=&9$nO;8(tUZcW 4@OB,oILL&Q,lpY0 r!qvsrV r7qܨ .-J}22)z {, 7:zm$+M$tu_D_z,O73d__kQѲXS(bc23:t(:׋Vr4!axx-<aI +WvV]v+!-v؅"tVt3R=zX7Wkm&~ 00c,(={Tfbَ᠏ &*2P#>+!&ߪD__7oUK2&n "QK.`8 @6Kal/19O6ʆV+AJ_3Pjf^^畏~UD*%RAjgl|9/6rks*38Ð`@yHԏ+0c nCJoK"NZ,ĝWD٥#X5|,b. o]9b{-_UrX "pNM@? Gka"]`K= #..d|jmcot1hZÈ%0؍i>\͙ǍJxgOt%U:7ہA{Ho'C)[OSzgr!ee^^ }q% Mx#y;VTAn?7dO_!y3 , Ǜ~Atʁ Ej-e5Qc9r#ݐ_m])`SuU`Or 0 KoDwzAZSBѮ.w0x33too1ߍH%L p7ϋ/pV~KHW A "*zPnP u_gOq4sWJ+38H^^"I>  u&>5 \oY׹ l/.$BhPv  0H-W#Њ.k["P>3@_2d@4뱔Pb<+!i%`h|I̗5D̒!2QПcSȨ0~Q#ƷT?A\Ih)9ot xlx"T>:o>.t2uϡ-ݜ`_tjC;3o#J< +Ena|*VЊFfPzdcgz?(e Ã!ʖ<|XJ7;:s60c ?މeVƠ<)LOI. Wy>'8FkGwssbUQNCk.E!~OucE̲͗dp^~$, SOqwf X(r7"1tӳ&ָp^e=黖I2sYU۹ƾO#0zbR b6]:(|AK[C ^8`/)?3,3Gd0 f!>BMK2SAl g ͫq  CDO3}7ɔNKe[l`4F"qMJeZJF} prt% =;|2-D"fE-X>stZ 5H蚸H|⪅!ѯ)Νovr*BA ѵ.>Q bǰy1?8R雭7x2R(Byʗ=|V冒,F:ȥp'#>:72Me\#GC`%8 M+/a`%_`ߢ!jv0>d8^~tkc{%`BG<, Tw6^{,=?)3-!o bh-WŘ6pXtӌuβ?4+0Y0# ;5@! Fp7 `YC_boQ!<"G*d2$ (R:#i ,>+|!IC,nR1\@%Ay&\< >_ ѹK%G)縏p}2믊qa +d_C 5e`T" ( JC( SJaWyX L-*6Gp7~B '²ō8G|~]#2A~/Ut3F~Y:/npÕ1N*zu!V6x@GrA;L!4J㸎/D eS -ޯ5>&alhCы{6pwNER sN=;c%yW'oO{z"? lš!Ⱥmo<-ۿP^$?ݝ#M 2i|\3 (oom pPM2OG&9}KfHŶ;ZKzf*4Z:dO x W$qɞ2FP#sS-i)-W"{}}@4 bw<Ճ |T8@<|eagBq~u!6^+Ϗ-b-eSC !+h{6:}`@5{"0R138ΫPv!jո@ &>"(EQvXRH/$%"abHBgRlNC{bw3IC V-V;zX<܁0* 0*<'PbxFt_OEb <,:8t*'k9~J ,̔mhiZ DfCbR2T$na-I_J V;Tfb 4]5=x^"w%oJZ8e@EnOxis4+@TG9A‹9 $}ɋ($fkX>/~_3(wo7 KB+z ^fDZE՝&W/Q ݥ|!LR7BY2m`E(G҂\?+I̶*ZM,Oǩ < sKڨ) `"MK/hD.`ALvq9nMp>?!~YiGMY?r(z}&,{`x-C ZFfxP%a=z/R) V`Fg74H}~}簒#Q(?t)K,-?DfmNL̆`%dUefH-7=2A@'gtY]8 ByJ-%F_xϏW/[ܜd"b;/s!hzcDQ.Lb&W894lm 3.wUX`\; ƥkZHbVxv 23HiobT; DARV*aJl2rJS g؃_4yp? 1/W ; gCzJCqMAuq]!E:Y^M\sI فtSJa]J'`>IV  as$i%E}BA" ~K[Ge<؁ޥoxECy{׸Ao &v+?'MX(!S/t?,P=t@ dX$2ic `C?ކja,3Wp|U9d)NJ k,ۉdBdқf=_A;.jyK&W8ev9Xƕ#,iU=wΞg@(@:l]AuuӇob7?7p;J 8@ LZKz@wL+ WW"8D pϘJRE6ﰋI|C0 OməfJ8 !B'{29KRgU7.BKW9Zs[s4(KH'JF8|jeV`li '1O}sr[:dA΅ZG(uP{oC(Yt gX9ExrmB,yC=m<ظ;"ˆkm/h`.L.Dzz8we0 nVH!6yC:] bwd 3fp>5urٛ@{0c%'y>747覚RKB:-MYVmv8O@ $#aBۇ0)_)<p 7^^nqh=eWRr%; TyjG V@~{UduO2XBnH3z@{ %R BGz>Cc@!`W2r# # q:\҅a!`wV8cNjPpBSlqTk<1d&,6|P>|\̽u e} IBɢa&r?~E ԽC!+ڒAdR0Gm`/qߟ^.渿Xd\P0/yO* 'y?4@l#?|zʣi&@AFlADLGwW kd<?jIZ2kdG3:d 1S:  ,ť4Uy2eJbE^&7}pNX~yL\0:asgD@A XMccPP./u}Md]X[s>> @RB >hn>\̓=ZykRHd 5IzR@lQa } ?Qzś<<]:/̹=dTvܛ+zt4x럯p+ ٳt9Rm&-+ƀUMy5Oo7#< C{ J(70|_Et0fh5|Wp lt/X}F hcGjuB^ʒyǣyr/ Ah||~9#cjt@3?.yca&/H"u^rsXbVKd)!r1n,$`"0(B1V P6vђmʝmd7ħ&^]Z< ]Dap(`׼#rwyklU7 P b\ v2 SIV^{Kޥz+dKz喯SYR!Əv(碘s h 0נ#pcQfGe؂T t5qgapdJ2kxyK#32c=tR|!Yu#<&&?_9Y( \ PFZ*j.³ DjK1ɰwY*?"J Blg Wiy{h@)C)y!q vlA+pQQKvl8fz' a1b^~&79FfOo$A V[-elXӰ͌32хGMl$} VBp q_7YCH;gQh(@d"cl%KiL" R>;52\Lڤs\&wrB/"rv-{k~(x a(nxD-^ };>f2%di<*u֞,`Y? /S$b$<N[g8]4c'X~f]B|F Cz ~Ǔ78y¸a8+n4@ j3ABY,p?aKn".V(6"ɒAZ>/ ?oNSo!?լߜQp(% -|[|ƺb'=vɡCpqzв@써mYE{ pYE,`ڹRNG]7t>&u x~Urs\&wUL2MqocYih@lX8#t"*yu2ށB{uth?bv4px xr@<=(=Kqn&?Z'4@y]&Gg5:Zƒ+5\9M.Ro;Lj"ܲ #,զli_$_ϋy<3%N ׯzzpu7]܌߬ ,qr`c[oM!;pEYZ(~&pn[g^y"ܿΒ4 KB:7lzA_w=f<"sh@ h1ՋB]BC"ol?Qw;4vmX:q^4P[ک@}xt >* rՆ)BRA _|^aC6`pj MRSXA ֑v2ƺ@F[ƛ;}pʼnt'GȖY$w:;Sn]V~(fSd K&0:+N{@D?3@(d#kI:gq{KH  #o2%vDy'AuÊdW?n6ŀ?3`D?h8v?ҧfն|t'XgHzz EˁfuM .Z;1 9}$%aN@P-WЮ$GXtv@o>]ە.iPIENDB`pybik-3.0/data/ui/thumbnails/Prism5M-6x2.png0000644000175000017500000003424313137372706020772 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+8UIDATx}wUչF:s^Nz Hs`(8H^H2t0(jnޛK|)_Y]{ zX?ug>>_ް_ƒ@x0- p  0- p  0- p  0- p  0- p  0- p  IM)5m"Z'iҟ yx_Q<:sZ^_#u6DZT7R]hO xUyBdY@RԔl5:dzURTӍǥkB*7Wu }?#U| _ hq?Цz^|[ c>3g"*0_ _F$U@ 1 0{L?=wf8wJϊs{b` R=q q ߋv~O̵ >5?R͉ 8zhsrjNq7?GS111 UVKldl%˖U@ԏ)*#a@z0`FRff:2xdhOD;I0f9^7V1+^@5~h2!P{ '\N1Ġ;b&i u/ ~iE-.+BI}'\c<=8M}07DmB[ GFjf|f9Y*^ECO+UrT4#%1QƖPtycQQ*ޚ A@}#hu}/8H/S<0:P"O}8x|-@5< dxc0x ?S*_qyC1 wA<~l2FJ? =D FjAG|‡dfyY9jv >|$0׌ }aV 22ZBڱ+V ">m_7^XQǪ>`~#ra|B{a>b^T]-)ba*02c?Y7V-ʟNۤ?e 5;{ysҿL}ChYqYLUHKԽŅjd~(tҼxNڈ(DXЬp@E F7^T|ś5B{[#(2C[`jD'\jTLRzdi ҫ 08Sds2 nfy=)@MM0 d%%u_J!T}\ LzԴD5>>(_+,T P#@\^sy<J^^Bzf[U_hb.'6 ^xBlhU |.IWh-`y53՟3]@3EWHN?)Zhɚ}W|d(xK4=XGbPjAue6ale`]_93!/XćT-Q@%E Φ}T -t}D7;!T~ꌬ@@ *ACdB(U&4Ø8ah5Z?4֬/`bYfkO=u8 q=VO{\cm,<PV̈́Hܟajc'~XPcbԄd5.jPZNY.R@.dd.p|G|FFEp[T<\pІ'Wx ]J #`$Wܽȫ*ߔs\U.0ݬ6Fj6EAHXP ZH{u8&0vnfAٺ#-NV~)Id^c&<%N.;1 MGE <-p_O ILiE]aRf6jW{6mcV`=,%̖4n#>/ǐL*c=˧,x0zѸ~[hz(`s#Lm>OG <'\tC $ha5PT#Ms#]{_Vw6f lnpcewԶez!h.^:˱Kش[rAԛ\)U:C!ٓ%$ʿBf{1Rx>d`TX"`KwR[+,5(V 4z'Rpd4 ? +]U ?rĈ=f3}A)5`]@ d$[p>NJ Y!9m(MD6m[$~_ VLage,tk:< 5όcȚVP3 UPDITʪxq-R+viUD%xL)#31O2B[OK'K@ʧ7s,AO.GJܿcGoskh!,`r+Aw? rRFn$H>G!Οkgv'1݊ bHEM0iήY5) M51?[fI%eR]F^@0v>g&cՓñ1*CB]QJ q)&`.Yb:~eO}5[*e܈m+O !4 .Ϧ<0<(ႊWѻpAocRh'/mrd"{2D{Ȉܫgd'n٦QH\eH^h>Y d% kd#o/b]\(\kcʧw]϶Z6EggS.HGo+`x1 BcJGoφE p)8'#LY@[yFwd'j0O9.P!ٱMX4g2:vԆcN;XùoGUjݓ(3$dɗ}=-Tr;nF%%k{φxq];o3^)Â{(jὑiZfwJdn'gUo%s˵bh/@߫@&;'aϨ=#7:MxF ެqΐnp?xuG-׿J/첮Ýu@qcUrIwLK6+z uREof(sPaGcor7XY0auV^&[sp`eKoXѫ(ϗ%)t?CD =:>S@$5~W*ƔKBUtsC*@ .{ʾo9in{g~n(Z!ge'4Z[{΁o,_&Ԯ="fJsq ]:cATp~3`z:=`5N g1&A $C@i1k$|=aRFlp_zsN|̺[4)mkq~K~%NXHnx 1{^X7zs 4p'y-P/`b_Ղ$5 R#ySL[ԨH.F13$uAw38\%{B6й0i [h6 5 p^c;7G2*X-4Vzb{UVPK|=Tw?4W9vN=O|ڡ7"{IEb M ,橶_a.'H̑rqFc]Lf'9o{{KNp` K0Htq3޿-ijlc% \M\^Py{I{,B؁˶xiTxtW\ANz?k [=@NQ@EPN H;Z&*B͙+=Š=0m״/_ݺԢ|[G*2o ,Rpn|,!FŏFxofxx;f c}qNu,H{{/@#f3kպ@K]@M{H.D\gp0 pTY%L(bP)L}ngM^S+pFϠ'}jCN%c;97 SZv%Ū ḫ]m[{> $řz|㐔c.R ٶa7@'6Rp[8^^Hmyd+pL$LyZh:iV5^@0wTV ^1Rg^J`FEwͫ~ԵUplf ?WDc/^ T:h7 OS3m51zW>A}8tN ̔?c (ϊXF/}'5K-,ydEN@Q,Xl#˔D U\ߴ'&Y&+2yXzpZե,m|c;{(gՍUR]Z>_ؾ{}/?uB}ߩZC ݫRu?Hm72!B1 [ 'ctlE2ۂX 2t㱈Cϸ3F'rOOOKǓGᚌ]=tXz$ xߵ!$UIN oف ?kg#0R 2h~N~v>S_童b5~lO<~y9k7k= g7«8X&V({ `3@4H&ީAS{#-ŤbR., ԳؘrxOZ_j7qKZA8 l-@#6F&ph1f>'+U!2w_,ZF5^'(2 Kd@?0AET\LzkhbfyGu2Xxa󴗷?NH8~~V8(>hE `X8dpXv[(F~Rbf璂Gg oo#C1saPAJcnf]hÎ֊(q}\)vop~z!SmLp'gN吭k[Z` / !ݵ*3pUi'Z,{XW}R~b`g`F혭5 f 4(sOIqߓV}gFfF.ˋrg礏>$,`a4|Ab.Ұ`r>Hmu#3iL-8 dƐhq{=DM!BC/lk|-T=̬`|1Y1HIO͏`E|Ϩ3cҽZؕ2b=gpkOt@0{%{WWQ6m44RRZ[DA\PF>Z˝n  3?δzZo lqQςl;7[#4/s!ןU`="先LbaGC0}<iҴ3LO?u wLM1C!KlSTN !(}j(`.Ud*@ \: Ϙ>6,ؘ+oH:-`6a.P 8`Uu_ȘH"5-%'-Fv<ͪ|z`͞Խlnjx4l2iR@gC3kV=۞zs|3Ǭu65>!guhtK*1Bۧ6`m5s/7olXV5tט2[x:5S荜8~oY&h.ZdФZ0ށbwZk $Sf:M)ʇ]"36Q&+Y3ܚ$ƾ{ҜufT|m7ʟnC1ߧ^YI0}z`z-yP] nzRiq㲳}p: i8!^v/ Ӡ~hˠ63<:ŹKyz7u#emn5)޼1Vb!,E5{(la豅ٽծR*g]o2`yc\Hj g G w3uUw ,N㸂s'lΝptt(}-Ks"k4N'H0x{IMt ~(-TOqt"(|*٬N7F-&~]#prXw@ҷ>|1AºO#x?~Uɲ/SCV{t0inSRnfQ-[Oo&{{l[ҼS`VTP8q\ /ե[Y[m}N+O-G΢2d"6, w:oUW/"rԏΚR)^HSceŽ"'1:'V/Ѫ08OK1g{}LD ͯt/xWf"'*vc ŽcLa/ {|ez5&TQYy;3 ;eOKV:jS$"V~gɠu&K=Z~~@븞e<܁i4l~(],c^ųz@q whbx_eEyu_(Xf{#o9 c$[,.ʎe2B0SI]4lXC`gbv{vޤK.e&eH~e믠5[W ?j/:޽S'G#ųs b+^ TzyevYxb3۹㧳|ߤ:4 }dYd:Y:ZQ}z n6Ԧ+ܓ ]s~Q|^~U i5p3FGm̌_0-ZS%r0@{Oק{kYSe1 w5^,YK yxCe #CœHU8N,ڌ674 DxVCIڑa~U?34e㓵/xC77Kǝhm89qU=i|vCF*z6cW*o#N>t@#ty v5I B=c oVra|F6>޽]N`# 7-+ ~lex*C=yZ/JP?An҂;xuD+q43u6d}1蒄P&dB ;!6cZڛ#agܡWv }KpEз.ϯ+ 7߷Fl^pXc󪿬> p^at˺0Dt7~ VZ+ 7 ^H}'kFSw6f}uݾ7WW}݌>+&C^tk V,?_T. p  0- p  0- p  0- pn@JIENDB`pybik-3.0/data/ui/thumbnails/Prism3Complex-4x6.png0000644000175000017500000002531313137372661022203 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+*}IDATx]wtT޻j2-udJU. H/RB(;.EC"͡# ;0I@wݵ2I-&3Lٿo.O|.Mw|-||-||-||-|?(c=L @5^-Gs̹K\"\#\j^wozZ5 kCvoudԸW:͛A23Zz8X)g|(?s~~~TYZo c` 8?F=-;dDcS@ߵf'4iT.D"(}w»ɏF ;AP׳ff`ϱ,Ϫ4e,$CeaBoi/ԇfsS|ϧ7GtP(]:&7o&BTnx^sdd$g!L2(~?52ʇPc zGlZZNX0whʯl* +XK$5/ YHmz\`&:!|^(` 'LeTwޥg A4f< *s,Lх.W3>2Di-,SZz$S7g"%;N*[,P-K8J())NT*]9>Iu!T-(@6&j`kR?1t~GVl&>ʟ6Ί"Lt5<~|I@۷o ߿O111ԣGIM˶n/WE$9ů9>rڔÉnƮ9|b~Y2&?(jPJe`aL VN0p+UDuR#1JEGQl!"—E2J,_UVrssAC)' rjg,6 =P= <³wU1bW;;d- M4aI@عshذ;tPCϊ,`7{5@8x[_1 6Ixz $T<}v7~m:s 94h >A25Pvwq_7)םĄE%Oa3RAH@VZ>5*G , >}]6l-_:v(Zڵkm7Կ- ooi){b ۝`*w?#pX@"L D!Aڿ*R29LgyCA 2f\֎}{?C >}ɓԬY3oC(@DCCMT9\_yg.h"g) 'Mp'N:%p`;M| ' YBԟ!\s‡)#T24.vzc_=K}6!tp< mz- |X;ǨIE粠QLa}v)xAd6At猓Noq;brj mE);즸sz6 S (qQ,Ӏ|tqsa/lfƫ!DsضHl9 [`A[xgObQ=~>#QAy A!I<'pk֬Ihժ}7Լys*U!_ШQ#9FtAy}i+mq59oкHC<#|~2{٦C:"pBN/Te#);Cd$U`ժUR~jܸ1}F+W/ ?T"B;w 6ed ]eB-nR5{ \ B 7Ckl a!|YXsT|n{nwN7XiAԫU0!Dݵyǹs'vf`֭`ʕ+';@Љ![n#0 >?@N!.8:FR(z51^FT$խP*Y@,;X`е nc]ړ ]ٛ(xU4@_ "NohPˑàNA\LNawr\=CǏ/oӦ ͛7Sڞwy_޽o'NR0_q k<" g)Fj;yPRixx!b~4]}VLl Pt|l]  #1SR^I&H"h88Ul;;rwG)X=53(pȅ*r ;~v>D?XZ usj47.W믿Gh 8%d $ӱc Q濋3 ko 7.s; gM|JVNʰa*b3(B98*\u+S Fx0a"@׮]I3*߀0`P?$ da#,aO?DAF!DP8?رc%,p=n@VZh i`R`L'YwuB +eAy\BWseϞ1"؟qfFJB\p*+ߡ8~UWjԞT5,NnP ~W!j p/vӥo Ji7/pC0v~úV=(CǕ3p(FU?#RӗT~RqB}ɨV"^!A"%Sq=kas\ aPѣGE@pN"v>E:14E}ܻwOH%]āmڴIT ĮSu޽^|E.?`H` 3f?x O:\%1$u:7T*8 YIYαߐ!;ۥo  8b]AC@p RޥKl{ ?"PEFBJ:HC{x^!Dj/ɓ1D_o*d\Lky4@NNtj OoFluY5bh=%;uxhh`+L&y|hZ)f 4C z)7'R,>Z+r+<`mٞ]=z[+V8zBp$zjW_}U|@VU'T|1…mciV W+g o`ƙx~%Js<"88m&d"k9r;@cN 3@ѻup_߃={~?oժX*\Uqlu, a vOfQV A fG-D`Nv%T7 ^zuP3)04jg=zJf.{m -yj}qh)CU/(knJX1Z˨*xʇ׏.l>x}8gϞ_(!`xoܹBi%@Ȍ0dp qk*nxn -.wz3t q @p@kq4rBeD!U5pKuM`8rhP-)B9˂]Cz62T}JY-Dʹbz|z| 4`W 4}%<f{0xYJA栺0rL>x3 H C?-[L>]Oᥗ^1-fa6UB: CK6fM,q3f]T=ۖ6pd 0ܢA|I㻮K3[) NdD"F@Ca」GPc7ٳ]/ Y9VׯXYl>_/Tޫ0c4|&ř%e,=},O+~t?ktuh@1u~4zFE^L]N2P:-~o@ zq:Q0D`k.L"<23LǾ-Ps]58vUh[8:({w;h(jMLa,#O?"#2Gv@A@ ` C:bu1h$f'|Jߛ}a49R3]ږ yms$E_r1@2$DCl̏?`\4i|2j2G l ȗƴ6̈d;nsѥyPtxA𱎮ʡg` -=Ua^6lp?SQz'{n *j&@>@* &h 4D>k6>tKزLftlPÞj/A`859QIeTOB @'>Ixz}zk!H 0sL ~X?,x&?BGQ.޺C@HqEC8,ѽnYfoKQʦ'өMqtmgJ ;Z`!0@GVPF` B Ck#3#^< "Zv0T?f/VT8خC7ydX<]U]A(TBĒi 18Q즀<q~ؽ{0Y??@%cfq}x/S='E@!=CQh9**?Za(n2hr. 8zd !0`@`@b2boa(Q|5gt2s K4og0gB" x(XgvaT*|xg/t5 h$Xaǿ=H,@{]BNL-ZNa,rZ9;ΟDEby@9?E%z ֵ?cb CX%12q`` '| hQA}bm,%'ipZ0\#adM.6 Hhjbwj?G x?@i DA\?<|a&B=` 9S?M1~] Hܿ3+Z&='%/C.ǡ=(5olA.Feٟv~fg5#@FO3= -XE8‰5ty Wd6 !BD 3q.juc)h\gw{ aC'^cڇ&^6YK>/16@Qv|4N=Vq/<`?=up@WO-iA_I'0m9F e,_ ~+:"8bo hSkF!A}!( 0zV k&M*P5w(ծbu_0`8d ^O;k٬pOL|<=\gh03=0Y _3Tv7?2]UG0,1Ήw % 2,rx~iDT}ʕ%[-9L ΃(@u#!(_ Unz5(U'"ûzfYu  @®#GbQn56G/Hd '~p*`Cwh9;&׭WυPpPPq2zF4DQeUe1Ѹ~![et[ZH Hk!Q S }[jS)cR훚le̔t R.@_`Sg+IχW6%$כb ۶<@LA Gx=><+2ˌ ]聂Q 2Ij$$aMGoQXA~F0 U!ХdڤBG~'Qxxrҋ+z,]-0&D$B*l3``Jk$^J^CsE'/F@+@8)It|mlR`vX&M8Yܻ78ܷbEHO 3b#M4Qo a0iWOP¿~=+V7jF=vFG^},~Y'}=F#zJ t "b0$ @iih5Ce'1x6VݗN.).8ir{`<: ϟ/me3K>1B*?I&Q9r% W6ta~Q aF0;lzIm_ME)q:Ϧ5(nѢxP10kER`xC|LKYDQXr0Fyp&Lٙ@ W=˯[Aj$ ;} ͽ[̅_S0 edL rXe'R:<t Q^Խ?x>a0~N(<>2B({MzfI~b< a pHYs+@IDATxw\Tgw& P( v+Tc7E%jb4cDcטFbf{vܹf?Ό>9n|<QD5U|\jOgN*o0l6߇X s>>InnnBXWWWsuv.)=BW6ݗm [3/Пa&u`{v`{_پV~5^^^M,b&^iwsJ}hjM \s khG ԲeKda{kK];u$Сu'&&tYڵN~~۶mk66wwwʜ8Xު,y[6_2`hF:F]2,Q3ܝ?lDq 5{ox-vn4ߋi) "Chf\+֭ @/y?)̽td<<E!.p>ӃF\H=PjDK(,<aWa_(/Ћ@0Gx ao/Jsm& {Y[(Lڱ%QX~< 1% M s|S^ k S/ pkFmZ$#;X@yrc +rP`{r,X{Itw B:!4k8-ԇ)XhTmZ>؃a* *@3X= <4vIX<$$u¦&z%ٰs:NVEwd!VFj #zMĢm VVP 4bQ@Ϟn:G]{3C|ЖKv;B j_**<y~\iyXkc,Bsg].O >6׮tzjףp>yqJP\$AOWv !<]xH[#7&H[7aQ=rw@ВBGmޫ-Z"@3/T:5 ,5#vJ!?(l8F68Fs+P]_d8M5 @"#GX,M\1vF~nwN\ a >zx O4*qQ$zB%`0xbUAٷn@ ֩b1Y]>:{@>hѝƢobA;"gd(0 HB"bx"ۓ8 $ex좢s5۳"| w(n9|)x:0\hyڋLB// R=&d7` kAMmX'8huA,xwAeYpTohl};{Ц? [1_s*FZ&Op CvvA~bD' '0LOZG}[+uC;.0pmA#Y ‘yJX:\< na>TL*Xh F"gH]:K))/c̽ ̴M^yY E |s.\z!ޚk.:.^BKjx<`ݥ&Ki!JZ2bUEeJ^SA;]3d 2sҩ#{؁툌Z.6 ZE==*\hvm <_Ks;i uYo Ua,뜏n(ܮܶ xk2}#{3Zq_*>(E |'.o#mJA G Iҧ5u„Y]W \@"||QFpհ%S pq-|W"2Jj.r@+ Rb(g&.Jԅtǂ*<*z+f޸qcn;)G 1ʱbWnT?X2zjrw蛓S ! [ӔR0Mi 7V@8TG.nN Z?}{f#d1;ٝxRHO]p9X#APCQ>5{dWVZmc%4j0O9}fئ}ŧ).Us+ sbvq~e !vJi O̝D D !&@>eS)*  rݜEi A=u yH 3ɓ'W8|,={Ys3 0g6WŹZж{} #v<2RF Α|+[8sЄ-bY7y*ED/8q̸zoyB~Ґ>/YYB`@EY}6s"n]iӲzXt4T`Ać\q1<x]vhAP6vK>kP@t_l*0yCCWHm`6b&Uþ:oo%P$!{V TUR| ~;0{+zBD;wM ͪć8͕@uXv@db$cY@nyL&Z) 4P~Gw{3Xxcćsŕ@͞:}9 o_α伍L `N:lˁb[T۳)Hj"MxΔv0OTEKΝ, kҚB/RpUVqqvBz0!HtvE蔗iyX1_9.T[oBfHQcQY3(`m@s`>v + [XmTo2ટKΪƚꢅ"z7X,giETS>Q /,-||8z*+X$C[`'r_f;u[EQy`֎:΄p{?7ikA, C7jg=@6fe h_>rx["~9j BP/͛S(|,vzyy*4HBjs%PdL,F!4|dJh/d <* AeKk( S->lZv ^gB*"N[Ү{wɕ@-byg4@Qυ_<Zo>ϭT{>r(##ͷg90ܳQi4E,C}%ay84)B3^ AU/sBΞ&良@}<[x^CMNN`_exKGt>JFeLט]o)yGK5#ibj.;ǀ avP)=Ǜq&?84rZٳ[`#4xWܲS OSuC :J>,TRkńKMxM9kv%P7HN@kXzTL SWJ!!B8qGz.Z(6{(~cA)\?jmE{J[ÇT%>2j>=k1V>|NGt@tH)3OP,-=<-΅~>YlkG3jć?ݕ@M2ۿkZ)`ܾ ]>C/Dy8neAS5ܲ8)GANSedpc*#!ć!7XE Up5Ux!nJ@,{qNqFXAL"pQ{!=&q\M0_&GϷ"5 y~0ޙNh3"C '0ABLޢ>8Iχ}x8ġ8wԻ۱*(O[o_X}^ :IC6&h  ҄OX[hSʴul<\W| g8Hmb}r8k (r">lW@t% @19҉b8à Ŵ0fϻJ>Y?/ >!s99@З,U.,@.D|eum ٣΢Ģo7lq{}hW.8F*#n!N cR@F~--/ixgxnkV a۷@-3]GVs(b^r0\=~T#wT?=XXQ`xPWV @4쵓w7W?;emtsC_0$JC|ns{+J[ [g{G+#/PGO~Ǝu?W[ }4ݩ -bI6=b#8L5 jAց|N/7Y9;!@´E5@ BOi.Y(T*F+nh Jo?D?Ab%2(8@M(3t@T~:μL{<E#N[.O2g`gnG==ZnE _Pr#=@}*a6/|aIѣ #@c=S-_s-onU}Gz$]zAfS-uR{!ܣ4V=_*4@iX=S]9îT!uXُ5{ePs*wp=35/D_r8d޼RaL$qL(aNtk"yŏn:n:n: :n:R-;:uIENDB`pybik-3.0/data/ui/thumbnails/Tower-6x10.png0000644000175000017500000002663113137372534020656 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+-KIDATx}yTյ~%RUw[cW<s3ʌ2L8<E0"6qjAcԈ(hƗt4>VWWW[oWtqVS]Uϩ\|Ӎ?Ȯλ7! M Ȯ,+  Ȯ,+  ȋ*Fxm7Lͦ%0uj'9ˇjx!fÏC6zlt8 _U?J= "O3ưsGx=4htcz=U6UPQSٔexh'x'HS:~Ǒѡ#]aƜa>Po/@?&5fFc(c4_3e ]9F: ͠ 6(: C=:F?I`GaS سwpP ܗB q  &GGMU;<6~eR 9 l"T1۶ƘF{=$ 6t6^]HK$+ 6ԅ^ `+ Ibey0H7twTѡ2 AڈZ~02O@{b ~$H!t&!ٝ :sc~GzlxT }>G($^]j\vPfve!ŨѷѦrW3@ޟ|û[C=R12a)O^Vo&1Qk4N7w83QA4L #V,RZx]Z ѳ.TFGο=IVh^?;Qو,a&~W@p7ʟُ\kp&6)!9rnܔ^۶n]`ņS/!4x=l(z y, 9BoչDI~?yX&ч]a 6rǯכTȅlK6s7f/BY75|6icu盋(Ж6in$SJ;eH:W>ɣI1*֏2I$rFs)d[0v^L:]F~SA:53K/f`9 N:6ͯ;=u669WڊSOmE׍$`a b.E9԰q׵ j}Y9}I0d-/v 2VGhȿ(jf^:Aؿe۶DצH2ף-Os9U :00QA[2Ud?̢+j_WB* ˏF$Zo?ZG=_\p<0-C*2"$5|/:%J[8{ 9-J#]L:dГi9.pЊ2DrE1eQ7l=xLLgD),D <'f\WmƙA2k \j|j$.ƟF3m=*ـx]{54vw>Šguiߠ?PbNe7%K#\¥MJ)$ LY,L]xNT du͚S׈hyWOk_nãY}" }uh m*B6Rܢ._;7H_6҆A/yP0H<*F^rl$WKY#HZ ܆[O#gٔtkOg"%w,>߈!N@(/tc2!m`toSJ^}Nx£FxbT[ug3t}?§t"^`տץ[uzqN|_,>kNS5lH(!pD^**q=;J>^3ԵGG_*4v {yɊh ]|×Y'0p)eEـpNV&9 s/)F\ǟݖB=:LP@5xCPCYQ죏_(ˣu'KOY ^Ҡ0z(0(#zf.,͇g]76 mj^{ݵ:=+*0tF;*TxCzt k[Ӡ#\D/y2_t05̧>@FPM^.a.Pld?/i> g0p]mqx6c0uM8-oϞ~R4@"&)=4\.95:O\r%!:AF7E8~HK. 2=ذdڼ*9Ob `Pm B5D <Q`G|tRI"Rr#,b0 2D3'2>B!U<ۡ%3 eRsm;%ͯJi\Cg8EɭhyQ\V*uZHXFoEADWSʸ\ễ0W\` r3r8 s@1Ii5Ymp.TVS2߯Owb2P@V5~:PLxP%x^UoExU{) CPb&~*z~&}Rz87o{ ʩ@Tt°45u*@ J.{ C^&W7v:̵ */s0ddOJ@G| OPD"ƺ {1@ #, PB{_s2av6ybS 6z&A+.&r /e>Z;/D//}_|+xL+F4t6D(B66>&:M!$2 #ԒW8F"2)95 Ra>~>Bs[sy`wpyIDԽg8˅3ԗ#*4kFrep0k\ c&vɞ I?#}ёB3pd2N5^-=-B2T  \c@~Q T)|b[ey2F>#OmG ceኳ'ed&pdOJb#^ JÿB) N 3y)M疵/ XbPC5W&ѐ^۞G Z3'9>e&]KLEtD0̢@UL7_|~\ c蹠1|Ot%3Q3sӋAV7~{p-@V  +Hc"201e0 qrsE+ ;Ϩ?>.S}6{9GDzƘ A_v:$A0嘢8lv@ER @ r52!mj 9ǐ\`ChzDB<-0_)/ָhyD#h߃3H]93Y{D ʱGD(ITT kQqr'<;& iEgOSuyH3O3ˆrCB> }Eq 3;FS5~ aȇ{Mi<+{*{(Rs#|  R89@+<}{~ N8Q%-frj6WT~"OmӽsGdkrtڐTG$ PoNݗK*L"lðF,[-f %(JdPH^]sYi>?)`HP'NW߿U>=o?G~W1}iL`p)eHms[yk.KFhq^3Hg VƝ%!)Bב#Bh2T<3N*U?S@9a wKj60ė. /dI K/<«zVܻJ9gj((=խb'"L2$*CA“M:^TPVo~YJE0~d_! gQ/ D7 ͡p@78z6^D=2,! 4S)M Pr0fW$rh#i.rt3)/bS8'LB={1t<7ip/naI@OnQyWK q\yjJ7tմ dG-!]ſat$Dh*xHc{@@OZe%)#턁2u$t?W6htc"xPBېht> hM9wN M Ƣ=/S{BKD<'*$/`hRN`W3 ~0:s 8Rri)P~U&}^)}u5ota-|rW~ǑA_~vK@l|tV:O@9E6g2j@{hgPzU`wgi= p,BElה6q~3Ģk׆ \G;ʊYBƿN5?޽%NMG;/ Nʹnal%cxΎXĀ.e"N׫PP IJ8'ʟwfnD8vLQmXn(4fEG(kXR2pf@ggTs=CK97uwSxc8ETC$fH ɭ dB)DR $zyƧw0j`' }0m RUA$?իBҿ$QLh|L@C/DpMcaڿH5l80[SlUA) CrzXU&.P%6F׊iXoȑ|fK9|@-;3@[@+ogQ~٦D0+Zh"I|aF f ![jڇ%O RPmf1\98#$3W]9G٨pD(/ѽWD 0lUAmRC?τѠ87;آpp>xkKA) _i#CMdPQ@p6PhrG1gȵe*]?(}~KLC/ 7hKQJ EAjLt0r~*zxt Jc^Ӣ2E t-)1S7ȮFդu&}>We0_2ϑۏӇز)C:@$ۤo?(@\]b讞A`W6Q60o%Tߗn^`JxM ?Q+զT_ PK*tDzM mI{Do-ʖn %+wgiTJ)wW`O zݟk _VAI/.o{o}ͣd]&eq,ۏy+W$w/} Ku"}/ xx;%R)\,$`h] o&![j4yno@EWym`DTE=2)"PW) UtߕQu[DР]$ ^AK}497?Dga a?&GJ§dcӴvA&LMi)^,"FBX[2;b{)䖁vط88tueH! {䲶A/zEl˥o>@9X 3EIlqCw%R`r"09&tV C 9>=́o>Ai&0w#"M%6BYC! eP癗3iG]+<[l ;U@C291$ ]w 8jo`*o4eb%cr2/Tοb%&M;Ν'\ P39&>W (. t$ ԬiH@\Pދ:^A"vԐԨ󂺝kU]լ-9(k^~G. *N5釟ʧ32@ } wa-X0n2/p=כ UC(lȱ$`5:̻CP :a&{9څ Pl u\^$$A15:9*bSGrp5¬W T{d%#(07QAYIHAF8;G$m<";Oop}ABɇP_\#lc0`o>@˧h%R9~qlLu[6)c|b36GtHh@r@C-62*Jʥzİ󉯹C_g[/O][dVnHg`q/^[NV^m5f&[QuTp6N}>RJG/!O3M 7_2Wpο>,J7ĒV4 ]`[K32T>IB#J#@y$TC m"t{L6M$ ѱ^tC(WDU3x/~Lǡ_%"Joߓ[0m\i-:R!}O߬Ƀkúϼ/PC,Il a[D$ d B96 GpY_W۱9&%?z>_.p7W |fV!$P{wk%ln G`א.b`aC 3N/âܴoY,[?x e78'M8p̲5+\۫T/%j*Hk+ZǘDN@^KU1ﯹ @%Aճ%Rb@N{ @v ][Ӑz#lKz(pJ4$ rR lA$dInd1&&o E鈝-HwĥcMv|}n8"'<~{pMl+|}lhTxTI؟PUGȤIR@C0= о~T lY^]}ʃ -ѾG55 n!Dp28Y''@9L27֦F}@"EἏWm:^A*}Ìy\켣vdM` @Kbve }@0a-ezxQ!v4N;%DUSr Np֪@323sk C~&J1ͤ1st|S23z. 0xiMxzkr4Y2K'IH8x–(|+ɿMr\9z+;;³Gެ-TxT\@C% 0$=Mi><ÑȁmO ~oRI@ڞKz~UI$N8[HF>Ӄ i(G8ܖxs~/u_DQa@jzYQӀqTk`PFZ2S*.]~>>&&~k?z>>>3ԔZ$QU!4Z\JZ1mTy| uI O YIyjR[Ŕ')P gGvcIC7]Sa >$vVQ,* 5 Oj,2N_ȝ|eoBٛ@ve]YdWٕ@ve]YdWٕ@v`BhbIENDB`pybik-3.0/data/ui/thumbnails/Octahedron-1.png0000644000175000017500000001344513137372644021307 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+IDATxy|eqIIݹt$H@@ !D"3z3:8 x BcvGg&x S ՕꪷN?~ ݿMw#C 20d`!C 2`;vX1zwN^wP RtVXj,C<Q5E_KLMtmټ]1Qd|R}c8/=:=m] aYe4’?oT:K7,U,})]byh*pD#,BXvFXnDX#,Qat^T6eĔ( y T Ru!,oFPE݋eAEU!,rJ-`[GԌ a9cVe_碦!,b%^oHM^T ?H AXGX=<@X!,aFX&#,)Y!, BPR w PQe/ e'r-+z f (P#d$aX w=q]%U\@N\(ձeIlDX#,gGh@6oYH(WTc?f/FI]!@}#+`Ϸ*$*z~'T VZe69۲e{DP>h:v0>jN0k +؊~l(LQ[,讍@q.Tu*p' )QՄatQ/45Й3.*)"/* 5}tmDB{hUW@۹0͊ `4(6z['+b@˒ 9 #|z!FP*EK@EėKk\d4zVm |N,P@ TM^:v\YY # 7^|OE<}/Lg& k s0W܅"j~hQ/4_|Vx}*\|ϭ< ~[Ipef(_9p**r^ٱYs9}ljA]be># Z7ޠ L5|ļ@odKf[<{Ifr#"xvYV= q!xpT=d|0 rpvO It0"(l_}D/vUW m:}Ez*B%6Ve\AF=o|0k+¹LrWHUuu @U"SlhGDQ/6_3lt?Kuh@dTE z@H¨ð|hSr;&QvNreYSX?/uK6DyӧV9U ]1[xiov8RFh%M;x`Bc{)؁6z2pp-󶵹s/}hshDz2,־ 7\x$ηeA,Do( OJyjP1bH@6莈"sQO5td|ޝC P ЋaUV.$r=.CBz27_<9 4_[[ԇ@jhؽdGP~LK@ EGFoE~>xr{k8U@05D ,iu; &!ڋpFO;9i4vZ* @EZߏ͖h4d;}Y[I71TU ;"xJF/SQ.?tJ ͞pԻS'@v>-b uw< m PD|* ylŸ4xR0 ^6_5_OTuH(nxB Pp<\DlRe|wݜ ٗCnY1b%SJ@V@S;F=xz̗k}#-1j^ϑ |S'y嚽ٓ7B>` m!S*v78phhjt 6 #rIh>?#".%o^ D4iMS򺹒1VT9Hwڮ? XCxԓ =招=^l?6/x . "&Qe b`F ~KNOLL'||O϶Aн>G{_U%H#9YqNJ|>z27_#UOb2w^1%S^*E ojԓIIIܯg2_I|a',bKP4k@kYܧ;_*FU񣞌OMM̧?ץmmne жP{ .~7U͒U >^/g:/|nNK4W`!3 K'U0n8J())FS/ wxGw:2gON=bdt1vLTbXllڴ ZZZ`ʔ)\%@8_[Ӕ#F{ Yv7w2vv @ii)477í ׯ*n:d<~'OrٚG|lB fv}YWV8gѝ ӦMF2'54$ob1`Լc0Lj@VVAaa!7S_B0$.hhO? @W9]1a2?!<9x&!e=h¾"f⃣PHxr a>;pF6lnb3|`}%ϛ9#,ݖExZW2lй/m@H ؄@(,̟Q|bR®d aZCQ5 2?z⧌S ݱc#"(rlI=8Od}8{ڱ%~ MݣG| b6C|`v߮M  }8>c \ |M{8TO#9 mHXk $`7luCc|7B &L$VV7?qsɳK~A@zNc1`T5gOଡ଼|o@KEy Åײ"g1`dX!d~Δ)O4{%=X vL*=<N~IVT=J7J^ [xΔ [&Pf~9t֠}^=_hd Ξ%`%]1Y"7i@q 8ʦ)V87onR}%!Ț4Ie&nNWk>/2lRA Ԯ G؅@,({J̿jnj7ssV{Vp044rn#=z[SI9 4ͼݿ2'NTg~ bb=j\!>=Hl, < UO s X :r:ШI`ibE{~/ C/Bqr)|L)A ˜5)бؓKAH;V(p-;yQDR&r^/ 4Ǐ>f*;w7Z}ӼI(5H0.di`ktC̷書 ,`/VAI Ο`@<H3#t8$LZ=V1c=-!s 4P2bF2bS\)p jQV 7NHab>=YdDFPA{9o &*!n$L?WH+ @A|St8wh!V| X;Yk~³] l#)߷ U[ҙ@ZJ*.eԇ#|15VC-àCه@HS n0R[ {o04@1p0ůYLҿ泄zS:UE\ܴ"y Tj>]v˯iF0hxJ6r >=z!߸Ԕ`"W8L (γ'2O<b'ʒ<\ !Oy_ |-? :&.s-C f 0C

qw@j#!Hiz'>yUC4OQo@Oʼn9)]q6,t*5Nn7=+\>@䘁Ɔ?|x 71pd*A!u$4utYqPhN? Fi`Wyf. ApF7|p)}B>@ULr:.Z}X=L܅#3[ȳ< z jr@l{ wm'P='tY2M\0Cν XB+:ZhR~"w N/UU;,0$tUϳSZ!5$ͺ@Ճ\X=qz)=]%TRhB@p z`ꑃc(Vrwv 1i:ᝓ#2PX=z5X=Ұz s+-m] ApT26YKۑ&.ZRjI h7XвOo z (Rkg`!C !C ]~r/Uh8IENDB`pybik-3.0/data/ui/thumbnails/Tetrahedron-9.png0000644000175000017500000002673013137372643021510 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+-IDATxwUնߟpvA4AHEPlDK&A5H C"g$wEH9{5r>=sY;7L*#x#x ]^.xW˫U*wy/`yl _6mP7!^(c u&.{&۫eh߱#֭[ҴiSٽ%Ȧ쉙^(+Odc䯿`9;Qny+Q]4ʫ}uu)Wݏ~X/yz |:uJs/e1UR7m*'?\`߾}R!5Rfz;I> P֊矗$͕EIߌ_!Yz V#+ n޼)*TӧOKbbjJ^{59J&_Lx~A7.}Z9#(޽{߷mVMVV *V(K*n?Yi}=MNqI1ۅT?o`WJ(̻z͚z~*_~:%r ` *3"秷$Μ PB7bcF)G۷opZJ rPr&HFV>ݻŋJ*o߾i2(u/4{Fr;]VJL@K׻ ~ݻ//May7n(|y\ yU'NJ⠀7eƛu VKFuˤ^W,#XE+r7lڄP2`U*~{Xٽ{wGܰdPUɯؑ([m@;QntUAI&oUbޟ53ڵk*ܥKoD{ym7|l}gv џWK̽V L<ձW,LoEж#0ʾ.K!`c* XXVl[+aԮ/%  &ul¡K6FPaތ Y| :''G!y֭[O:UZn/@А!CaN7^]`]Vx`°(5zͳ~\璳%\a^|K/g޽{ -]v'Oʫ* ,P%A9z%N4?V*:@N!ҿK(_ٷ*Q7zʠ" p`<]_ |0/>UիWʕ+˓O>)yyy2w\EP S+֮OMS5-Dw K;b&IQ~Y¿D_JJdD*sdEi Q ?T~97'HhHY%\`^NN''?Uj @wڥ;?QBT"_ύ-R8FwBlYk5_KUB.1'L gٖ +iԨ7V+ѥKtf6lBS5@]@ֻ "?rݪ\?z|t9KjU Rǿ.7)!-ay?^|t?~tI>JqUAQ?Xj֬uVޓ!gR*T R~1Uf!$9u[#_!/Q %A@<B͛smbGa#0|?1Bv<&+T*В%Kx,-;Uȿ_JsSh8Pj9,L]>X sb*u _:t1c+WHLLa a.r1w&ZAn|_~!԰XgsRn]E.Fr!٣7iw=˗uTIhjL"mW%@9J.RX#~3%/R>˃72(+!/4KT#_L^ :-XVŢ?yTE m!˗//gΜQ#|P͛7W7kM4Q#lByi*Pzl-|-bTa{(6P_{L[ Mn+xgz֥BV Ȉc?c~VrgϞ T+ uk=xuGC6`>|X0O0..Neh)A8A"Œx$M껭"Mv4^V̎) TBEF`go W~~b̙\+)5kro^w/Q;ԏď؃OGSLQ`L'{U\( |`|`vftiP/!`X }̙`k=D& 1^0r*-yRACd+phMIE}HFR[kP-)ӽj*ETؽ_dM\(sa\ hvEtZ҅w7 vX]CdXP5 AQT¼IQ/rVKV9,\$uٌhz϶Ѳpfs'F@4~j-G !}2zxlb>#ק~OH20#G9p\(=d `E{F 6ϏY&@Dcp?zRWX=C[ͳi&hf;IIrY5yB.L݇mc>{ʕZԱS9INOv /_z̙x?A# B@`gJ\;/:>{"Fg&m&xTj,deN+Qw}Oɚ35ͿUNfWRȖiT_=.G<rr\Dk;dN _|: իWp<1|?*[( ڕʾ$ie9OJu$YU@[<% `tY8%Jozo*$;޵}R9bS.kH {kIV`9)HVeW1Tذ6xPٽӦMEߞ>7菊 p " Pĸ֑P'&mX-WYhrw2P3Jb#}F yh'PTŠ`= e_CdX0]~9'Y'P+$!RkLE#ZI:a}+K ('T .e C>5p|ӺlQ}z@M.?uD`: T_QSD?s@y0kV݌87)u|>MwMva3lrI? F[_&Hie?p!`.%CcXBa^y^'m#m!ʂʏ, O]Ht ÔӁ$,wΦ?oU;RX1 ^vrkO&‡QNv,UGFE Or~0NW Qm)LD^Y$UfzXe˗kt.y`|>5~'|uIl 3  Ex $dGd<4 PDohG6t9վؑ \0ߝ$GZӼ^IR4DEDQ)Z¬o*A3gLUNQ?rCSU Ȱ)Ώ@E{`7>v:x@ H#C:TpFl&0j;hmtL^ٚ38~Pv !hwѩ%)x7'أhFQ|Ġn{u7¼i U]eSCϞnHdwb'K@'CpPB,T ȅEgb8"$3{E;]DE\Iu=L>lOKpTPA`Uҭ15쬀@(lÚ!zN |߅`eY4n`!pⱫI6o' ~@i>pVXTtSfB0C#S@?w{X@Co~v[6,tIv)NԽu3Eh+!2m"P@N8e:#s]=V6Pl||.>(( ;8o[ +̙35KELbHE1?DFér㛏 _M#a2,Ϸ}!!=)'%@#u/HTq"XG4_{wpɷb{h(+ȚedIR/'S y`c|ًKFJX]F{w/^pv)#nE(PPEKNǚ@ _(w0Dy6͋I˧]r[Zg«az@gd'1JcW'(5ޡJU'))y=xƱd4fMOz }w,hRZT`\!_l CD^b!PGD dv"Xt@ZA'X=Ձ mO&eQV '15v,evS.Dq?VmQP` H6d,D):}6RA sY:.~X|2JaOD=dg.() pb*Ű!:=ohE!`L7f)fFOղ#ؾM쬂Mjg&qs,Dld9ppc( OHӴiV>@ c#hkܸqIKl~]r]*fnwΝP0`_55k3gBM~H.S \$ j#ʢ~D HMKb1>?{?^^,Cn$r/ M`.n۶M_5T/d~l4[]@@ vQ *i)F5%X}^ԎφI-.xrXD=M cR` aD6ԏԑ{!PTzN6 v6+,A𤉟N^t[tY:#ZCKz&E޷7ؽ |)(sw ";ki%غR?9 s (v3j׭K9,-dwO!K!p @) S 񅅃fв)1Rbl{*Vp"pQ}mLfnmhxu|8&R`%8Wt1FVύQT0&ѦUn{7SF< r1E!~@!?~%TAۃ" qQX…PY#L.)2ty;9ͼ{)7 %bBnL7'4k2Y&dSh& jp5,C*a UV95%Dؘ0"f<{ )"6w% MKK2_)>"zXeG}h׏30ژr&FAP`= JNA'I}Db9'p[,|>HQe >>c_|Fgz qD,la<|"8 d2,IMQ;bCBJqHv:J@G `ڵN(h\5ev2ό2M&#lLa[Xx2kiZ"|"8yI#_lG~wrP@:RBr{v= ؗ|WEFIHP9XbkU{&&s@W|b5~|oܿUcC\u2|woyN%{ s +#[iMwr+\GkW =j./@I ?zI0Ɏ]0cL蠀ؿ=>Q4.?`r xYr*ٻ"">'*:p*8eXQ޵gO-`>.@|*=SX< N[8`}9j0wppFNo_V%$_9>)}L",@5$S:#Lc:~:v[)_|^- 3 "eJKDS ` A[ըn!>6X[ܞ{X Ԛ !-$&}$E{yʚ#=C jbҼ8Pd,A|EK]@Y~DyymqT)sxAR 2 T* \3 \,\Bi@xW\uINYKd_*5f„l" @H E>  \H؜9}?.*/ !"tأd`(V%ja eQy>b*k,ڿ0@;9=?p8 ȳ'(ܥU 3a=3 ceҒj %=X@f.*k- ? (6 8{A#:fnq&qxsÇsEh= up`MZGٷRY;?֙ w\4ݫ_?4yVX{(},a8g:uA?}YL ˊKSa Qx& 3&0xakɎ9"kw\^rRSWf6:@ĠHv8]c:By" RB``S5❪?x}2NB|*0qUb]$(1R6͏=3]c5.VZ5q- eZFQ9I: ^Kt6 Ϧ(c P@}^̲uH /0clQ:8k\/K9&@^2ޝ_u8|EOx~gϼM; (}:y1e۶^APxxǎl&;u~(˘P% y_F- ]^.xW˫U*wyK9IENDB`pybik-3.0/data/ui/thumbnails/Brick-9x9x9.png0000644000175000017500000004615313137372617021027 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+LIDATx}wT_FK,;K[P,Q QQAAE*(1$SIbL9y93wfb~`gs>{n^?㇛?Bq'ѿ~0 dEc;\M;gNYG0~0wG_dt'*LREx {U!9N%CO+16+@$[cȐ&/ъMm@؊x Lntso[ 0b ЋvͮMdo ҧq0"*(|d<8,J<ћL *1&,(8AewK =ÝiwH1qht$|k7]lcBGGcv!)3 8Ԙ AqZ^)@KܩLwÛ<5bzPe)H7 2zc 74Ni)Y[{;Gzmy'{dX)OiqA@8Hib[ pӚw& mK_A㌠qTyAzwXD߹Q-iLjO, >VL)UwNU=26n)`}(G/R,~7hʋ D0]#qQz%lqwN10Hfϲ_e{ZVgL}qhDƇq0>@'@9 3C&v-ż'\q;i=*sqeWnbwnJh$ZoG!sT %b󛔗u ?]S%e f.Ptlcie@j|>ѓ1Ar;}'Hi-31ɛUYsr VUƢر8j&|wx_Dǝ#QO)Ghדdټ 7׋a@6>sLjӍ/I33#݆(1jZFL7~'#." 0yYO㴠3)_)A"~GkUTb=#d0}Q۪JG.@?q[0.oT}_q\t7*%P1?f^JFfSً\UsLMѺ)/QƷs/@1_pątMݦ-5< <޽ց=f`ш~a/3^qFnW B#Ab nVӌ^ޤƅ+7nrP;: 'H3qa'Tb(BzVJZvTP>H&?Es}PDχkGZQ7wYt']8n:{]"`gJ5+e'?HdāM^Qb6?|B;eo [x*HV҅ zR3y,-5=ԠuvVG\ ],3P]?wUoUu|_xͼHO){+oPO22Ci4WҹIw1R3J|P qEI:c>\7Vt="D -#_B(Iv t; Eeޤ*f>KWu_+nв2pûL7wȋt-ǃЙg,/:dnߜn>nf:wgX@UR2GV [)ORS<۸xo2`Ck"kV'k^}ק qz0q" .+1ZPdBJܤO+;&Д+ >JܮmJV.qaMvnNIԊRF8Ǫ\<ۍ7qޑ-0}vH0JMܯD x)+Yb^q>ՏM%t]չ`A+K 4z@ ¹] t[q^+xEB_.qmFs`,@{t!їӏF2%XFQ\BrXQ-̽9n<bu`4Pd7\Mc=gT0AuFwrU\U(Ms4hX/Zv>Ѓ{2 E.!>ǏgZuqӍE/"Of H!b EcT1/ \M h& TK]p.(%0tY f@Oc&%C}T{r0V+S{;_uWĴa^!>o3XY?***F/*skK{@P|C6QL!G7 \$`!:ClesZ)k8Vk2D(Bs=T6Pq!=HN͸E*;QWD xE~gQ(UHKxA{ŒcbT?{4;vF 9;d,rܤ&cU%k[]8%+ަҥ b vrheʣ@AqRd8y ޫ2_p] |,/M5y>CwW1׏3f+Wy$ 0\.> @iMÜ"#!젭|qVj6ٌ~ HEיkl\ܛxJ׆N8zŦP^x|ѺC2ewG@e 'iơqk-IG>nq`iw}7qKlyb0y^nE)0\b-D \H? .ppkU~d!%du! AN.^or}Mdw)(s;ׄ?_.]Z;x\}eX8_U` pHoZ(W(\6BB3Nzo 6p)QusZxsI8`n㮠+?A EFps,@y^Bqq FTL{3_]N)]0Hd~iPkiBBxFF^wŤ<Ѣz8HHi8_H,iba j&W)04%VT. 45$كئP/wI΀Pa\MnbwCG4ط\|ޡ~g*R?g岦"7Tлw @+h% 8:,UZ e|kI|VeH@:PR*n񍼧`:'*fPoFqyi"WAx\rkwk?O4"XjE<̓7tY}͝o\Ie3V]ۣU~!KTpóMs^vc0jƣ\f{%Zy\ht)0`|Ml_zeoh=Ay\:dj@4qAYz>͐hihC`GXn ne|Js! h")Q)ɵB?d1+U>m-ZPz3UׂjոZA+$A,Ssݍt~P{G])TtVsx߯;1q|Y O_\qR:Ogp^% FuY$pnrBP5xbvʍ{kO3G83I f3un5 `hFw2~K2`~`&WZS7~"#3?۱aZ?߯bq"Gz`hQiW,Hzó vjF`ɴ E7%]sCTJTylWiCd|T:ft 0)m1[L`HymFpk"z. `(Fg'}b{(yDfrП<#⸇f ?>UQ`U߿P, "}9o/0*<.wF5]8֭jFfZ=ޞ%;z;N7gΆoȭRz@y.\r ~?[T 0 .$|CK@oE.! `*[UrvN1}W7OxKWJEN^ѺxAP8?F %Ke -ת4CW{&Ý4/GhhCj,3yZ7iU9SgYt7QW[Dޯ*zs 5C@Ϫ]2M- 8u0WN bɘqL̟{Y72PN"H O-G2@^`4zxfWtHP4dnޅt o@Pi`SrRb:߮fB9@?^ =SYU;RArU(=B8H[Cx\=W^Hf9^XwmX;bhF@EL,rGN / v ##$C"F _6)Tp 6KҐWi$/Q?f"!@nb1-҅8_o p/uO<, Ȃvl[n9.8yŌ^|c1xuOs}])E״>+k?ʳ&Rz-*uK`) 9ίHhҪC||?/em=*fwQ&ָu_>R Z5vv_L$bγ>@pr#)lX\t(ޖ/g-c>Ubyvyvף'S͐[pZC 4N X߇qƋ A/pkxe&!VEEGjO՘ЉTd%O_*a]nŒ վPn~@v8{ qq╺S@ dBrG]mΡ]mKC]3{NFV72 xi|w ͦ\"z|Zaxmdj0 @D|Us'U6~K-S"U[(rC|lTѮCbŗ-c7o_ սc,l^e8eG|B'lS # 4wt#GKim!]t4 OpK֏r .3džF8*0f2n3䑲qlȷ2L[ĝ5-eywͲA(#yJSw($X¥)g-*< fَm 66bxUY.B({;Cfԡ^z]*}0tk]L4)5M#/;+sf2>Dt nA|[C\ :S/ t 0* )}y,fX |]fweRO@&n#*O P8F!1nM )56``FO`!78XF2U@Wq;)y)Γ{4cfЂ0^Y#J|5hZqt@Ȟ٬cI~q hCl-2 lXx-`"}h}{GȋBN* ΋kQI` #fg#&Y3|FqQ\J.&K 8tTٲ 4QPY,Ê}w3IHN"bqAWhOW,q i&S) 2/U _ ]s@{oɤFRMD?b,~S`ӡCtnŻ{i$*(EƳ 2 |D 'w>RrO@|4"p$g_,aH`:GIDPZ0MX|1(#;-M?Vbl?-e^(}q beqb'׏Xelxt ͡EO6qX, jŲ nk1` 㱘x_O^.vj 0̙B4cLSdpȀȗ^*zs2$x^vhTGyDl;OI#ko(e掿xm9W!q vbR \_u/X5Q[T"P [YF :wޡ4-ޛVF8$p,M)3~AW, ,=ڹ<3k^q sŊӶShxҀ, 7S\GݞBTzw)<]<3 B}l5@ 5-u]2~kQ)%f\ aSN^!\:6]XI`xFyTM-6~qyowrmR?*f2ٿ =WFŪs$+17G fűg) aHiOP@O`q6`CXŮ"ۜtgHi<Z(@h#DhA]bXK0 TcAJ^ !`g҇XlMW>m黒 _,' ♍Y3KO@}3x@]D߯| KYsEFBA7#$ܺY.Cӿu}hYJidT @QfKq~4fY-lzN|, .(!@%vrOa6><.Z a,5MǘCcbU!ٍ"%^D6EuocnQ VF@xz `x IҬ<$E`ˇ!dz %f@R.tƞX&%kpB *`Bd$Id&®trUR^7 =DGEޣ 3qvںu \57q% ;y5˞㊣e,A  M; 65^ Ǧ<k{4_%A0k{P|6WpYmtKkb5\A\E|>aܹ@nn¥ݼhljb.7ˆgz3N !} N+EKHN'X`8wNSHWE%39:Xe]5Ue :0=õDҩ>\I|^G(Ը) SJBVOUn I%Px $ot&.V9#/}d"yN,Y+9P(ax[e02 p(` 7 ̀h^~{⢚BxEƇ"81?/@ 9) NA9߼ueppY v;r\<o~Sx62=Vs Ts`,z$W=xQXVV/ss:{*T+b.ԴrfH@E㶋GVI߷Dk#ܡ/:V8# \7\V#b`e) dg\Fg+Fn^yqn裲֩ ⿝x>*},? MLR*[9]hk}nCun+Hqf);v O0go~U?da˿oU#=0w%zup8 qUSø(493@KTg0p;j ogi@F7D0i*-,.N+5 .߯% сfR>wcw4![|'[},(7{уf1y_z %P?>P̮ @_*6XŊ62 l[{lbzF*X;% @XKÑ6p{ם1T>hө 8]j^Ft$@#4=)Њ#$kHt5}"TP>>$7{QlB/NZe c!.u8cXy HL%_`5He2 ˆM4wXSbbjEu~x|\ 1G΢r\b7xeA)=p 9WF!92G tXJ.(V_Zɪާ/Jh r]=|vRyKxQ(TſйyNu0y41gT^" \ A *Z{4c~h^vZ\*AP<(9|cln;w1>H.8xABv~k g1? \yޢPgyn)~a(\4G/Gda7ČqFE4HnLt;B^ (ŸKca nt2H4~B5ڰ b},GhC R@d^4s<ɚ~*}8zP/$IӋ%b1NQze `V)@.n}Ο."Ѿ9G&`_K֝qRS~.r`J*8>ãfjIR;A=z@RvF1K)~Pju@{EHaqL ZEn੤֟α?^/U:Nbo=ggφ<l݅l Z!cv1ߡA1Bѹ в3>ӆl@D 䍣,2`&|↲hD;gf?Z4?o$ cQ| UDY hzN*PḂWdS9aylE }|ݼygiF-k b;2%c;`V!HRhf["܁-2n߮.s?Q8 Vk_0/^> `hQ^NGo1Ie_'J..2Yvq;q-djWr}n SxHy<[熎vj32UDAV4U!`)˗"Itg!jAhpb'ڕv5`)yS( kןsїg2O'AN@iYn[ M'` *7jV$&-T?"SEf/Ov d&>'yx\ ^ML`-Rq.SR0k5nO~vŔ&J ~"? s܇yQ"G?-|Zt虬K 67uIHVDRM=6{&@0e,>f86R߇co8T\k=zH϶8NnArZ~=yS(8xhe}=&] '|.N_-atsMl\xtxM/0ed Pܔ=4q$Ų<#g=9/xcGo\PfO(Gѻ60WF g黢 t\JqClPo/#փkP  'iV $֏L@+FƳ,slY wr5~z@zXzZ4Bi-@aOVK.w *+7Mt ʭU^YGp9 |qE!"o~2CXorcvp_? Hx<J O 1c61wh(ch!Y*E&N +5 d?! </PD d[Zȓ;x ofHej몢10`?^G|VP6ҭ( :_~2Z+vuoZ?{A(Zʀ8tźm}xt$EՎ5T^,+1cwK3͔(}u,IxyX:7s*w3Y?pPܟYZVÄ42RV`O$3òYr(P[/ 1_K;|q ='R&ЁG;9?駇s6OTZMb:.Ů]B^'ǰY~}- f9v {Bv۸**hyL+x;77%:ZEc܊Ε.0'IԬιM#<7 x9gZf!"*=ExFJE1̇<)Y.nV6P< QP>Jf~D䰂%cE!⇍'|i3O >ayzф-:p͛M(3[ڑYV4>pDx ҇sjyA*\ , T{haor@xwJCC h-rĒ0leT_9ǿ(|(Q׌Ģ3O 6SE7d;C:J&,/Ə T?b4d"DHV4o3gJx@Fs*}7Ii!{FI:Q200t P۟:K`phX0˙AH_k@:1XWS T0]atFu:7}Tɥa2#1E5Kc8 4tn1 cU@>4IA_0ț۸2*n:4pZ4-kUVV3[fa8*r - < KE6 JZr+~.=w+ z~A{7Xnal I-H'5kRf v]&EmHpD9"qS/a 5Xy $C\-5wb\? ?=w|g?#Do~@J0X՛oQGod] ":ú@3 -{ fHy )qx(m0acta &b0cS߿PUx4Gh7mo f¸+ďiY|@GNw9˕AJObm]J OJ4)1ؐ fY48.eT4cw.a =gU?&*.FYY3Oue!zRT//klKA^|;3VqsxȄ?;*s)㳸9{v`gPyzr/~[.SF'WDxUHQ?<\W2&~ 7]+Q;}8K,pr,#>DR` pdJ)g`AFa.}Φ{~V 'tE<<"_dj J=\L Y:Qc冗u'a|2C:*A.S> ӽA# ~?Y s #xGQB{DVɅc 9zuɍb [oUK@X@]}y>`&ر,oTmab~h'B o{Id"304e6kB|,B]X;oU?Bߔ@a&F,'c8=ȟ#Y \B@f^X -C[Dw`(:X cQ?"3,!SXb%OKx|FtbP:L 1}dX Hj#{E7?犸?k[\o=25"Dԧp_y.WγX8VqqJ"= Q<>ۻ/;w) LIt@ėlM$3mioW$5r;8?B%|4̄qWcVT0Lp ~B6潌lbTOUG?le DR0;sm2rJX s^۹/e߆{@86I` ЊcB9gM\3/(?(l}YH ԧl(m"#~D8 e~ne3WQn]`|<\0p[p˘Ϸ^a lgg:lT}V,AbؗܰtHQ[""S:emb/7?|dGv[FūVY6B5ޓIENDB`pybik-3.0/data/ui/thumbnails/Prism5M-5x1.png0000644000175000017500000002706713137372703020773 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+-IDATx}wUU9-AzrΉTH$XD(DP PhKPQD"*P%J{m{laffu«n={=^{s%OGn]q&3 qG88p#qG88p#qG88p#qG8; $ވ[Pxꌤw?uuKbHdѡ~vU QJvuX?k.T3&l:75!8gg J>W~PYJy1um>o`E#mm۶ܭBڎxoőme{]mw'qcC ֢נAuζmhhw#x&L<v4 dvz5WpiB)]TȃPx( LR۵WȊG2V-F_* m1N 8&=Bfu0e趥̶cq_IY#Ǿ }ט2w EİvW^"dwvvvډ)DNNNOEI4.Vt ebJ 2yN-K B)T ` %-m{ߝ<C6=s{@lݲ˗['-M%ΆN e-q>!PZVr4"(}\J|0 ݷP"]AZymiZ]@F kUv*JL HUg WZZ*&dKKD/x^ y# +Mu'՘|&{5Ok[+?_Oe=0?{` `h%?;cSWۥGjj#1.BH$Onߟ @HӽYAKxVbò?Jغf?RLɱ>1=%ALLOn{rXZ,=)*EyNO $&&$bi.O*) aP e$6Vt"|ڣ2=@2chܿWyuC1>AQ`?b6+q%#BhP?3-Y@4E,^n#5AMh f @0ˊŌ212} ծe@P**땊O)L[I2Ktg [ Ų􌧕,y3#x 9Do\Pa|J&@k@OpTZHSdu&M TEy<㊔ć&O+\ d36Ku&v %2U3q>S:mD04 6\) ==.qg'tш\0ꞝ%F"FVQ kb8c<='K~x o"8xJ=|&` Lۧ6^Pp]0ߧ~/y[!@`ϋT%Th u\g渭:`1(7{pDBX2=N@JSxڈYӢb2Bd-NibqNxHU,A(h@X|YaʥV+BGxW+cnc|*{n9 A羖7U04ݜ \ A[;G6n5?g?B\Puz†Jbr* ܩKu:hy_GGm\C? IVXst(TZ%Z,]h>OE]*BǼejoZ0+).nbYFō#*܃8 bt0qa%ΉSZ)rZUnFY4!9 sP BI$iHך^bp 9-RzsYg Abr.]1fa0b~ۄ_!+̊}5NXj1s,~l/担#|>YUd80dn4``P tY"DڔsTN*3%] a f?wwoa%ޖ\pg%*eN :FMӽ!驍60q:5FkRG˭$1cC,'ԊY[>'7O 2^OE"D/`2{l\ "@p |oĘsgˆ?Rm*1aHrw{͖S.¸V˭ w7iPN πbhs1ytȽ{wD 뽷0a<6^`XȝAcbm#Cs.hiP=1tRĘ,)^Xw=ӡ T/Bz`?`:ț}B\Z'9>0>?/K-dEJYUj—<0{^#R[0 T|)~˚C׈~N[n1zjŐǯ]ҧ<.nj%]1:rK"USokY7 8:>rrt^ ܝ" [*$q$œ/L85R!pC7&^9?T1sF2RnH%]d&~#5/`&S 8Zc}w- P`҃Dy{TKtJ6I/zؤYYPlzC7%ygd٥Bw8ҽ]{z `N^f(j'B1]$rO<&R! 3 F%s cHl8[?(Qv =S)-ǚybm+ni.yעr2du+1ê_WP1%nՖmұ?c[\*-wvSniM_S>HBqB+ix[^sJfpg > >SV/[̨NjjO> ߁^U?F5'ۻv&Af1u Lt1b $w;j~@ D0Ǿg:M%xebXvHiT~7k9ĄMgGKܼin# :^8>T^̟y"IޥKV/3<-˧N޴;Eq[\,7ȪQY(ҡ| $o(V>[k$w<H08 O8i@V:o's ,]2y(gl@fPWMyA/rc٠xL1GHTyԹپݜ#qc!C tzZVR:xV$- Aty7ƺahISQCLh]01dK]*ɯ'iU =H ;`^g/zC]P+7}F⛢w;_ύ)[gKZٸqZhn\0.3[WM/q7zxeADH. t?BxKH%[$&XZ:=N60TBe?2A\ cbۚ=i}SrEc=sN3o q,QB7¯T>,(\39` T(mD jM {cX{WitqFY w`OK)V}E=Hڈ"_SR\c¸Ջ \$mW&6(%^n,6AQaI{_ɤ|쬟l[eYd)W`lj0}V_+蒸o"Gw4*]}` VY7Qn(֚*a'B=@RFbu֏c9uPY©0A_˰}sk _ ,}DlCM.E!Nxw<͵rk3&"($_ S)̥zaXn7י +" ZxAFR{iop y,9~vSg8AtIl5fZ s5pةWGuo4iޑ .\R\= ձZދQzzAK^u߬!p|7"8o4z ;[уgھO>>{Zxz"|Mdѥ{ kpGW}eB lM'ѸY29ܩ&07~s+~@KdTi| 6SbRm {"PJP@l_AT=YK>O |#֯1:Pg&~ۜn ✲HKgJL~5ak5 H.+ytNOn1f?j**پ̑h7PQT|<|,Ϡ%3E^ auʣ8FZ+]RǢ_t=6Bhm_sxmfcsq/i lѡ5TxdfXZ{U)AyL5@0y  UsDlZBO\G(0$ -nIp$Ήd"+hU26}Fkɽe7C{x sxns1DQ:`q%Sq*ʴ{蛬7؟ʣ7X10ݴдVGn sbxd eתyƩc䀦?VISTk,Z .xL::滲ɤ}RFOM$͋`VE-t8†#L d@ew8kbL{0=*Ð#5|^dW۳4!ޫ]J5Ip9:D*} H |C^'{'7`Ƒ7p/ n_RFvmYw@%154oojl1q DTJrp7/܅Jż&GOc2x[I eDGMdNί!~ $>m2eB酱AT`(1Mmx+I+7J2{rp@Wx!qi_zR/D]xrk8nk FMٟ@o@P:rIi;>"0YeVhb)["`Q[],?&#q?NDd,=4 T|;X)V"=8fvW|z}N}:+SVAJ*z/Bf<9KuI\z%VU)#-O|x&SidTlq*%*_lr'v41 /4 4yx(TzM0B̍mQNB|4[E$k05?u+0FNNw>U&|Vj~R[0iy|k(r2y%MGJރ8wO x z6A νJ:ނE|~@ }tgߥcCɱ~UoG5sn(xHI$ȿ=j+$~Mv2,i#o\/@"#]NAC7TQX{_auїHWI_`H thIwtѵ8_FOw åp9R\d?m$x]S*س!IKT>e͢x`Mb^M׬h/ [>Xdwuv w#_}E~-Z(=۫gp(nX+G|3|]t^`U]qzq=z7giu|.~-&ec pepa9#|.Y,: | Ei7Mp|kX@GO!_ź> p>*ʶ*]룫 C?sч[+xxwrEHv86ߧ2bҍFf QA3|;4\b/kt]mrXi( I c?È!}pս\j)ZK-< _Np~OʓR/& ЇǞ@m][['挋mMm?}-0?DIb>ukKwnF>8`k۷GB!K9pV YV-CA fy#\栋WrD[LvΏ L‹ۥλrAiC = WZ8g[IRH+}6O' &dv}T(+!V׹RѴfɯ/OM33G2{w3Rg`5{%̪7R!D?$EbQ"z3gERa2ͬvZ}1tdg#UBO+؊DUe./6{^nN[LMA8 xxbѕ<V"p'1^rEmxklL#dh/՛kQ+> =sALz-gݠKbs>G^d}~~&Wݘ}DX|;G$( \r$^Cbqt/As0H⡬]5As5rqZդr@c/w< =f"Z| xuU_刚=UTWEOg%zwuX?e0ˆߣevT؛-aV9˗׎ٱR8$)MDi@)gGL/qt%\,lgz| ,G@.ބGzsfaHDJu-xv&(}i)y YWUI*G3S$3 vLѥLz? ~/CzC!ʧ X Ix{ }P?Nȭ[BZƓ/5^ToyƩ>&% * +`9Dzdۛc|.Z!xF{"aS<<%ڃZPc#z.4L%j@o=4\a"ĥ.V_ΞtƙC˛on9)w^) Y H7' = 9-JܧowDT\y_ivԄ|,BG+ K 2?? ߪ8mZ^z2AƉ4OoMgl?@զWv7MN *1Mg ^*gr2I%قed̘~14[7k.rLuUAvPVeGl~"A;,ZR`EJ~{64Ӓ(Sm| ;{[[Q+;/8?_ {CLr*7>^ڨ'`CjKrנ Ep xv-۸xv>vŸNū-=TTiS7GϸȦ_䋤xA@=`=~#_Ѡv[.DEG_.52Z8`4`c5]Ă_|,fwJt5S>"CiH7? =+bݧpYzr1Sır,ܡʧ>OQLri> FCG݆F; 4L2PpP-$'$=u]ǏH**R{ aùw#'|Ɓ$/p?M+Ĉsh8.ҧ7TP*!E L~]}_~'=kLxzi5M~4~_Vxtg:w`> r9:X1*(g!|m@er۷-B]0V_(Uu| ^S.}y)K=7.Fߑ"7i&QM &znn^ӳGHvnt>P äp3ab-t C]fn~wl|ʟ?R{m2+*j3n|moJXIb&/2?H F>Vq ..HCzn*Ȣ! L"#EK4΍p#=;{1Wx!I>Pfߛ!׉y~I 5K2&NРD̽x/1ӽbߥ񙚨ǚ`ӉjV;}25|;,8Ri劆Gޖ`Q.0!#|"94O%Mi$bv*Ti_U0fhNㅏP-/ yr `Vn 4S̝q w9V.P/e('hwYe:dp=cB0r+*u9Ejcs|,@ȱz߯O_/o-[eZp|m+fdžItfTaۤa>W Hi-_doTdA`v"/l?,.xRC͚ݲāh}TdA!!Oe3&\6Qzm֦`uur}^!!R?XJyvƏZ?:X/j N&ݵȪ8{ի.D:(Ԙ3br8(IG,[Z'OW 8+7~#H|0_Ϭ(,_>0 ^zw;n-88p#qG88pę$8p#u-IENDB`pybik-3.0/data/ui/thumbnails/Prism5M-2x5.png0000644000175000017500000001577713137372677021013 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+IDATxwxUϟ[ɤLdJ2$@BK@ bBh&$eQ@,A)vB E A!"ņ]ˮe]WI2}!y!={ν?޽W~ GP(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(S(Srâ{~KG]茮_㈮_ꈩһ[m TfR_U}\a–V{lsYgdnBы~`UT؎j=UṧB~C xn40_{ *\ȯi[ v~7_?%a!؋-0?"~iY=_93_l ~tYz^|KZ<ʖ{LxcM ^ž-{>|ѽo!n8 Z6G$lKxf-=;E{G3 \>6x#,( &v+_w(mT+Gb>iiD &&&KOO;RJJ\g)66"##)lPDKr؞!l (/&z' \tg?l ~#}``X90w4t5hbXD46&ESiIo ݺuvs'F}ɔ$':v\#x1-蛂.}2_!oMX'?Q?_B첝21{g'b7?ljb ~fkm0hxI )8/[둛oQ:s`!&(HҸ'sx+n/ `@}, !c *iMS7`; loz&2DK^`$ 2 dwA"zTTexziG[97f0tHMqų`X,"AXܿ˄y@N#F<ӀC/Geͣ4,,L~d0Om',h% D/jA~n[O.϶ Fc'Įb`hz&> &AG;2tytt4-@ɞx?{2=x ~puUբavg&\߭^SFQof=xbf+{pY G-MC04/hEWFQ.@ W9Qg l/fӱ:B;=5cX=dy J6o%NJSi& lerğP!> EYL"z0vEXE$ ~)vZ̟ R^j`Xg/ٽ'(;(sgm!Q:F7ǃ9Esu`=#iJP;)V& #^X_н@ ZDp(CsMd@+Y㪷7ۜS/൫o֣9J,S&sX*pYЫNa R!x ^ۉ',6DL!YB>M!2>Ec'#4 XpY=ggy^t5=Ն4ݗfpPbx .1C'3A;"}J"VC'ξJf(Ѱq``\a Aq&Ab\  ǜ4w @+.' ^?Oor|pꄈG}zGۑcxkEp~YM>IњEwfπrjSfֵiGiѼ3iTU%\A~Oh`1Lh=6?\>pF5'Tu+kz ^;KS , l>Oc=, '){*`p%d2Ǝe )Z` @DB@i3TVr פFSFӱ6{ҿJ#]j|t:QL #?nV ?^9)yI8y^Yqt.S7.*&Wćm_'L!Tt+>lE9PlحKa`)Ֆ>f8.wXy:ޯ5" /:A}[2= d.]mrM Aħk$-1n7gB`ao+>lՒXk?F +>Ô @ZI85˞1:@Ƙ2U?)9:Z|k*E@O|ʛ4$R(d+ꦛg_4J!(Z|s#;aQ4a2~0@t\~h u{X0ZI>nʆg!̈Ҳ V8{?I#)|0ϣh垀9'O? ʻv$'n笙qTb]OP7 x8N0$g4W,0Atzt {o:H.e%Ͻe (\?{_Y"잭-plm)x-1[IG^ͥG㪷 10=/ž@!CQ٭a4uv_iDr~Ych|XhVh ;&>{tk:(_Cʆ iD@Kqco)1{bN4 373\?4r@gejk,欱ZɓxAIL/PCO;|SmA6~vM$h;7Y[,N/g{a 56Cc"-Qic Jw@ hV$'K#4$]^z/R@@cNz!pɔ.[wR@+Z Zm`skX-pyMaa2ݜa7>rә=v-tRa`~ȍ%ΒDFh+>l\wVxIxqg#p|tE4fJ(@xUE-:;͢n_ΞeTm."u VF_g>= c&5T M$P!2#,E?Qs @/p*Z0Hn_RNh_aLr&8wt,cy8N09B6qjotzV*pͲ޼I4O|r} "wvOr’pz{y:HCb67w4!@}!ŜnY'5 5?_$ DINZUE }VVKi0ꌠ60Î`  M heCMhҦ'IDPrVVƊf[G[|ȁ j ypնυ=(&R\' : #"ZNgr,#`g6GI/ej8KBf:ϩ_FJKçP/b  p(ڪ)d=M -En F9{]==XMui۾m/7)@@F;)4 |āD Z 㛕'{2$P2%rM0?i;c-?L] d4,]]Ɩp!z%঱cW3a+.Pߣ;H`ys(:%E SH5{i5aS@4pر:oU.PSc?sӇu tHfo1}ϣ_lXFD A!DKQ{૳Gy>o4~(NQ0IXmi=&O.(.tN?eQ"Z}Ÿ!gü"́ s+hn`KCh s4!@dâ?<`zS|wIZYJ0ѧnTrۣ7HMn ܣV `8&OF]S|\p=o0Y+8FslvnS+<[=:nSr#6uc CaV׏Ks Hi$>[ b8&^] U8- e,RAk*e`2/>qӻ/:醲JKa\MwɧÖύR^~OȷqZ Y=G̢R9Lk[em46_'"zL;`єHOTԖV7q2gȄ23u E%$h]<u( J]:5 JI s"/'諷 PO=X:?F:Ȑ~`M(`F88G0k49?se5y\p5XEXys0X@`޲Tnl@ `I-y7hT8lӏXNe?0q0rl Ѻ BӄZ=}D؁Bܴr ` n_wjB-㊛}DaVfBܕ#yq6?P woy60_=t9.u=@(0O`3O #s8y)e.YY n yI_U!حi@+8?b5!d8ZNi`? ľ~xXn67,B(^M!%l91m*EEQ"ۡT )p=n}<W9vb7\X F ۻu`8t܎9D2n!* ǽz8RnA)3KZ'Z7Pnq1,lL:"qqrN w ^Fl EԽK;z[RcЄ`Due5Nѩ) <`w2-C0' (𜬉09m uP)G,b }~>QS6`ѝ"yccI#gΠG_h yU iyP-8#Rx%g3aJ0\3eM>e 򵳞e`(-d3(1JG`7j.Nű0zXQ]B3aQ) ?zpG@P OZĞ-@L;|M*#8ʡxS)'{b̲!v?I;aI@@T|ؙ}v콟x26ؽL%nX.FP r^Kx>%Dw̋_%^:/~Kl2$櫙wqۿz!v/⍯ѬpšN#G6[` {iATp]U vuح[O {Tx6U>\y)Hû3;f7{}ajk$iNO=¨_Qb`g@EF_xEnGJ`A x1+S-0OXAdE|PS􅢖X6+J׬W"ԕwbЧIS@Dt{~EŕE$Y\?hj諍+. ?wn6dO^IG"+.t]Q? w2222GP?@@@@@@@@@@@@@@ٕg _IENDB`pybik-3.0/data/ui/thumbnails/Tower-8x6.png0000644000175000017500000003724013137372541020601 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+>RIDATx}wTEk\ݷs< D0!! JAT ØEqE %Hi]ëkY7[yNs;CPt߾]sSs]wOIh@$uuuuuuu5g 2~]yؿZոlZg=h~/lX5݇i?S[b㏱Jl_&-{db(gQt!*5H+}4 {g;1+_CKUtDvƊ:E&crJv;KD!A7H0V6"BF׮{]GH%x}$"YD6%ڈ*֒q_q5zg2~.eqK%I=m M*m{xo!#;ב_&.'ÎPQw ):951B3E-$?TmBk;T\qj~v;9b<` wcFo3Yw}6v(T}z+M!V( |̻;Kj@ (JEI| 8 x,U=T;K\H+ƟN ؞a (dj&r \!GG^@Ax#=P^Kl$@T?!Ce+r|yZɘgp鼚'=O{d*%K)6P.Rvg袓 pm(86FOE%BP'_ҳr I&^2t6(ƃ^Nȣ!wO(eIRBc̣.i|  <7YQ2>Hd&xYIdN*gk_J |Sd"vM&GсVsW)BD_% A" QExCfY4r&O7^aIYI:)ڠy{ӄ#ϡ8ߏ&6&jcٟĠ5m"Fo Q׃@-Ľ*`!l'pUzv~|{ ?q!zRo@p }yܺV2\%vɉſ 1)DXaH<.@,K%0TQ[^%H7}mp ^4n^F$&D/Kɺ{L&)ޥ*Dt!%7/Wi~(\LO0lYC2.QZC!@+VSy .f25\^)H:_SWԹtĭ+h"4Qa&{J.q%+@ȦGSb^.pß)bKYbD&֒qw /jmĕ .S>zݞPaê[B:I~@^j"U  3h vѕ&+Bj'*Dq1郇{D F)~zD^h/SϓI7*2޳⍅Zte^;A<>Oפ6p&\)V.7=NVk"C Yj%gрTVx]&VI $0P"-s75~̼(yq~*/6FI~c,`7wJ@iKD%.RϾGuB"K5 KME4Ap"ܟa2& V$+)lzK+B++yU dhݻdߪ.d4ܷKf)%t)+x*G0`+p(/+h.\{m \RGVB$+a|LKLƄ!^B`(w\\lEZR(H$d0v(sQ`Ũr͋~0N2"4Yh_N1j& BE*:q}MV:w&N;|6OR=ǩID8{,p vxY+]BFﱜ _4'c2A;=Ltveu)O!cxp |nϘEJFԌ4usXJ{ Yj 0n5U2g1$6w ,6y5y{Tltdd8SkG_bg/ ,=ɘpʥBDL#yUI3{1 o#@u{*S#8A|:Ejh(/jvq6y P^|s)VXMd!:=ލwJ%+팆M24zsih^VFƿ1\?BD4*p}F"Q6c6S(7n~~j&1 ){|rt2& G(BC1[s>NSp#9lbSY\prKlG=rpLb"&<3hB*ȥ!2ɪlG>FJ/K+D%qaN Ka"`dF|dUnyL/?DkX}!{lbXo<z>YڑA TV[J_QƗĤge>j/etXpAnI*Tڻy*V`Ȣ|Wqa^&Pƪ^ V=g R72 ȨZɗuSKȭ)w'4Aͩyl=;9_,`|)oV rax?[B2>D^FK&NP}XR\aG O@6\u\Xh@- C7ށjC_LXr7Jf0e rQ睊^QQV Yx2#*[}͊I -+qo~J )&APGպ?&˕x~)BEؗVVq L)@"TW*c-W*SH%"!`m}t^d atq&*x(CފbDZlPm&b.w/ph4.8OfD!tL쁕':L25q6qZ#`##0{tN~SBE/cܞng%kG\HY*ϡ2SixH,0d7ޟneۗsŌ1~[8-vk  prSehoǦ0Uĭ :TEoMhGrB56 U$j A|9~I!m{,< %ޣrEmc,qAH:% 0>@$?VhgrZH[%L;_ٳvU@]jseX%d ڶE({blNZ%#DMCKhZH`g2 Ҧ4R +D]Y{P|1wBK{[z(g<߅XeZ1$2FE4.>ڒ+^'b@c3&V!e U96\NGfyhFc@:*LtΈ=cܣ c||6=ZqGR'wD_N^`_-ݻ<B[z&U3 daA~ (|Q)2ܱ^jk#BX~E[T<^%~R%jNש׬VUFYdooV`$pщ2 (!5=] jaWC Y K }dw،t͛$ JYANI^}>[!O2K;?w1畵=bnIaiRlP5GYNCvWuLuyd0" C4 ZS%D7b^@s:\kVa|MMyX͟/LRO&v_s߾:\pT\'ɘ+lw!}a?} KMȷ9ҕW@DȬ^IYݻ I(AC?!)^rpj$mNb Zz|"xGUu# !8``wo~]Ѥte{*( 9bhI-?Qk4lb;h#»si2R}qr&{`*Mv/4W|Ze۔ۓ+ET#tk1x]E:7āx`HwYfak!IA`_ S7l#*#a/4H !VT 5ޕNёV7f .c&xDh&ܽ9Z,_(³%a$Aoo+E ݲ@SN+Rd+w\ TAx-MtOWEQ縇̧)Þ]ƮiCzx1n2ɼw b YL$Z]?2'J[<- V]]JsWl-yw6w?X @Fd6>v6T%[bȫWY:^]2eAu{CLBn"J^QWB#M _74.PFnO8[ NP`2n~_|7En]Q%E?Y *JBD _5y"xʕw$b)Ɨ&;>m2;hbe` zPjc+_jT5` `1t%J8"M;y 8TlK/IC5w`IC?|Tq?#dbP?28n ao"rO6?i'U\c?] |v@kٙ*3ц]nٟfQC!_J'%#\bT Sp22nr߽_(;o2;sD >](.sW(5G #I<[;? AL 4" Њt,+ <rΔRT6"ֻؗ䮢ה(IGnj={k~\ :rVoolIGo@>L+ݓ;e?ߙ qx] =G ! ɋb>M|x~iDx߻Bpe>۝'& /S VW9N^́KL Cm‘iVD@D5o\ ht]ncE0UX>V> F*]) Z3~0%JO('wљ:ڽqi:QĞ!{gfk6ݝb xSz)C5YۗU)vCyBd. Ba 8G+suTl_9kL &N2x).GU yzk9>|h(@3=tGVJ/#"@_0xH^v.?>~K8ygO~N @޺-4Qh"8VnBHN'y7b `r(]J! W7 .iS04 5DP7 0`V1Ej~:TQ ܟ=4NoG a 3>Hb uWgz_kbW[@yKl_`[ %-S2ײl_h2D0O(%6C}dq!B;"Ӿ3t1K5-^ TLN^Ɵ&""C %w}L76S6爹|; >f4nK\_1]mmmo/UZy 4* "@jn/Y5Ri̸kq7[V:k t͠X8G]5iQ*~2!SS-d{Q;`^.uV#lIC=C!:s'jMD ~>ܖ+eER<)P>$UĦI >GҪEhn\PgJShڗFO>,1\7yΑ}#WpA,`=af}9oYʧ6#8N :`\:A2 ~05!1q@w*Ng)b70۠N@\8jVto'pc1ǭhjѭRrh–/īRRzⶰy}{ |0@e`,\7vvAu"fX<IkH6` ,Kq&Pa8͔AyۡҲ&p"pE!1xyΦz#̬/"M;)?[F ۧҿ ;ş^/ +ENg`r/Kz> 5-g[%@t)dup Aj1S`Mt4 !"K44@P @gJ=dXX.S("qt8S"gh(b#Kd}%z@ Εl)T?'0#jHB#+ k!X1Ċ5gK1N iۚd#0Z-C\z' gxR{)'@w`P3Ӂ!]SxQD@>yҪ^qKXib-!bR}D*X8x/JK] ?ދz}P5j{< hTY3trҠzM݉"RGM7IGl..e_˒}(.Y 8N[P+J*0+/3Ŷ.^@/"Ğ n`FKp5o 8p؈BLr D yĥ{(D2݋HOO箭| ƿ䑡Y{dR(A0={e?Ә0Q59W0QLD|{ 7{ۛ&ȝR^yG8f| q5CoS47̔`_zQP |WoHM~ˇjx[ /I)yO,)ܸ3\eX *‘'"3Ob<)ވ'=?7|B@ߧc719+5Xs .l⾅Xc+}䬑+@ ၺ>x]UA2H YP xUH,[ݿ:j?Xn zcH=8j U%/oJ ۨS|Mf|J+ooԡdRC P+G@Ɇb^!SJ"e6(^2<>ո%jW6|xYð%YJ?8?v[yZG\>A&p|41v QQA869q L!+,1֓fHh`q>.b8SS2P8rrx88pq]5  (la2~1"f&hX<^Թ*K)( pD/WqxN|i#R@ Hߩ9fx(dCI…Ѧ,b]b-Be}W Ġ*ZEk'ޓ?Kp4Zv(3FO_N2PRB`f">,YEƃ@_^o eQ!;{W6nvCɭ%* 48 ڈ|4\s$ P015Fi1"W7K"7p>Bl#CU.Uމ/sMl1q6ODY%jiBgg.vǷx$9pMD"0z^ُkyf ZP AF964*ރ0YK-' ը\K9?|0{t_]J^1Mn%o /e7)i$CqWa&8++cuʽWYK\a  j,it݊+d9Ryx ]8X ;*$mاg9chB7. jr '8oWY~˿(%|{C}n^}KxTZBW;oSqӭ=2hΨ`B%e\2s S {ɪ'#o 7&Dk7o߃gEA_NY~ɞdps.;^9+[_"AkRyE4P Vb$~@b9zgxr4KM%v&e YIkݸπReX)P}c^aƏ@TE?2oh:X0a=^Ǯ Af,!ゝN"Tde|Rs'm {1/0|S+=lc[rH\ksn3uQ@l/h y 5A%Wfm=sDGբhnaCYVmpV)֫ c_%{ 7[˙EXqL|Al6*Kf MJh6.5A/Xv~’FdPho?t5(5!Zy ٢tqpc6* s&0O@Ʈ7"F70D>Uvz'ϚX$0i&196&j`:RN4ш驲,e 9ro/ꑒ3?f@40tJb?%ܠ%SJGP"`gX"6A}xg}i '/Y?ess \6Ç=-^l{w348վx̓,zTHeN蛉Af-!O[̹ADiZJh%x7J% -ӅfW]φ7qd" TA)e ȇ53~\*y7.c_*(3ޤѱ&_סHs`Q]Fmƒ!Dq:W "״@%Ne}]vpn6:;mq%EY\U BUlušbuY@8`ov/&tj[7yV0ꀃw͏dH|rݨe#8x>Ox!t46\5ql`Six80ʪyjAs |5.Jt14rv?HH4f)::۹jgp(soo'wBHV~%N`:/z=(3o0G`C #:>wuLbLw#cSxxBzL($˞)kY X`U)&-% F:2Ww"& PޏlO< Zqx,7 q q7ʸ0y&gCϔn @m䮉L[ª-O*{b|\.fؓjzTOV fiVM RtggAbؓco $N< ѩA?N@i N,?oq4 y_ɽpV+<Ģ?? _AGLtnc/!_,Ę u,&a_seG0}80yrP F./a1vLЌ'70Csh(T\;R;\IW d(@1g hR"cvPqm؅۟3'- dh4~C8̡|;Od{k21@T9j{`MN*6I= 3ӱ4 &fR4mĽ=e'%50Zp 4w> 3FylDs|[rSO V<0jP ia)s@g2Zh6˳  }6uЌ'\PM-_\:rs~BOd4Ỳ;OWgy4t WdMer7?(~JTAM'\072Oo@'w&*Fx{&2bO@I"gn0a CyV0Kx\,1\u_pp0S-g9!ܱ6'5.Uݷ'D7kxm9>Ln2@D 5rwGjaָ| =vm_,,7y`+5Ǿg ΤD<ƵmͻhE86K@V9c LBIuhk7fzb%P_)My;+qY$YBm=G㼥't!]xF2#Ɣ1B1jiE'X1/ FM @WjOʹ06y2+EN'ܵb %:2%l{IQ@ f:,t0%ш c?vc{q7TP9gtyN8! 8w|&x{˚>OY )O( ϓmu'[W@]m8Gb[8}=9Y/ fkFO( -CU( "Z+HY+ ,HGs;xnh@ kO@0:yyHOLxq c'Ym~ط[\1`Q<8v]8a pHYs+OIDATx}y|U׾oK$f!$ yfgEQ*`D@DE[[;huVֳUo?/ɽ{ֳzֳ\x5cn޼zF{rm"]=?Vs߿D4PU<F@~Yt82vz?&A jgߜ;dO3`>e>Sq'~?5c!Hm^4_u10؎7c 0sFQT^~|NE] g,^vFb|.ޥ0'봩^q6L(,p:26>,/p,yfG+el,yl >absIm@q~O}xgue-YQXy隍$03XPE*XnL:d.Џoq7 ]ƘD^Ϧtr L V7'lwec / ``z> x PءB޻SLxB~ϛg:j7&'NԏmB[`hy9 ۤrsnճ1 XT (%,482@,BfrvA6^={|L> 6d+aiô׀a75`NO.:_ny3iTqW1>?s;3rsSM سA9~CgirT6rxd;y2/bXR3sQLmmD&xYlx5Oc itnz3ZTa!`ALF?R48' -R?k<4nfWdc,ffF@y84fn8|M\_F.dE6`2d'p%,=xmfE5| TYDğW觍VN7MǙ?8 )^/e21 4h^KMIÆҒcSICyqIŲ6nDg'pNq(>^Rjb7^sK<Ʈ6WfQ=7Q>٠g,>HRk˿L0X\|zXg: ,I5Hw.P]P Ģڲ!B'9\ .oF Ӽ}{i/SS( RAm#_n p/42X"4c+ߨ0zq5:^W1\Fk(t*s\9TTƄA`$JA-`D"ꙗK-ҋC(>~ <f< z^8enzs_E.@=mb9c#Cv᛾o,H7fYfnV~" K"_J'h#…B{ౚ] Nƚm_jj[2ѱ>Pt3y6˃6,'gqRA4"am>rsSbojs?}F:q$ڍtirt01|0/?LyQvÙA$Ÿo1͆ˍꛁ<},nV$ԃgǵp62 hWQ7bY 0. pLQ @nr!>`{ƼPA=GS!] <3Bſφz b:=me <*wUb1>nYGw唸ۗw.6lgͤ@"!q ưiA<.p)|IEQ*5ěZ iHv~E0zkC2#,uiMճ°ugg/X h_ @wOji3v} џ;/" Ooz]3I_ן<;kVs٫߹(&~^O.-3w6#}66fhz ky3@#|J[L} . CT0#,2 ipO Nx um JԬ3ykXptTbyfjq.B+r(L- Pe\t |gK@hذ1zQWĨo ǶF9ܦӬ~CLZp] PŋtJ8Ʃȟ$ M hbv1ԩzF]"E7HYjr/2(n⻙TPN%3<4n3SG>O ^˳-<ɂH" '=yWk&|*=q/@{VT@i,|HTwL+p\ ~_+wa#q@mWjM::7P$@}4ۿCnY?Uvtaqsyi!9;IQ\qf#Ck< LTB'Cmĝ|q:qc#=` fp!B;lYv{17F/'Nx6 =oQa6LRZ3f@rvHKyMJ1YDV,Q&փ$\Jk;p.΅.4z"5*Erb4I8].ci˷OHʬڨKy^`#(޻+WǎE6n$JNBL`0_|z~o ^&e`%֡Ɖ.j,xC [N%ډb zBگP ަ FIb#4D(֣;3GVTHX 0q#TTj]Rus?w:Q+MDVOӝzFqp t .v1*kDҋo 4FlҤ1` Oؾٚvvf6f  ƜԹM4Uiθ,Kgo0fXR$jS\fn ]$@O=Al| E`FlȹhDZ*Cn9wYc+ BO(v}sIP8du?`t ''tYSEK;h7̿|m󼧟R204DU0?1,8p:xE|19oҵyL(~[m6@g&]};jO4]@1`(`|G@BmqMsv$!-ut79|-{SmA0||nCwRފ~Z7<*+pQqzw˥-#:(9(On={>ѧO0zE @㓏 ?l) kN,RDg@_ i!_H4fPj(k6 }5p[tsZ^F}qԸg7 cF*w1 )He@G~`ijޤK뵑@a+_Iƣ@KR3eV9KȡݠstC J{Z IWGuW\Vq+a0zOM&Ir{Biq.=hL_ y{;9&hAcw2zRGEi*K lW=qzΚaaPCZdkSIO%NFz1{ Ȍ@i`T20@L>r:SYPЃp`4 ]ziѝ]oٳQrrH;oxQ7%$Żl<)F)OtZ5(N"P[`4f:<$_1 tOSAPĿC#HF"}0ݵeL4-H BP}~wgXs95`m+.Bj \*Lm'%tϕKx1v/+sd K͵'T 0mRt"n!`~Α_R3g\:3-;6@>}  }x?OVeuJR؋3<y3zAT~h l@%;C6p}@`09B:5~xzp5;*CL|hgt|o"rL>*;+taH>!Hk%۵Ixx9ck ^xDsy8W {t7{__fc`;@ 5V!a@L^jX-ioRݰO>^*3Ua?-_q㆔to|IjG Pw@sJٓcFX\WO|VS ZgY?@H&tuر0 v,:X~ B,p*ͥ˗Iϩ(=~m}T:l|k\^3tz'ysuG`NP Y|MWT'2tcb URMJ(k8%,wсJgqٲR&9m9D45IsROYfWFpOpL}WMC1z1 S*ȯ_tc?u)@%TW*e`:XX`MX+/ vaInMA<~$3z >^B{07E?O1>94klV xEC+_O>Qh0's KmӘIMX$;OO1y? /i>l<0_̯/xvd&k+9zַ6MZW1HϺitf3Au[\SC5kD zid^yY2<*̓!?z-?E%~d+ 87g5&$>~g&_dY|-.<ӱ  ?-}p0s磄AӭpڶH=UHXX-ؘ2 [yc mCC(?c-[]Sߦ=h En:HJN~E! i1jY2>TaLc1m^bGӭwKvJ 4 hSaw_1\ژ@efVU:Hb Wɰ2 l.DWǥh :Yd$nn= g.=5Sg}>F޵Tx7rv\cR>dU骕AU~R٭6b?J+Cۨ!tRU?ޫڽ؏ܑE uŖp@QHtN2 ]t6020b:@:P0KkjĘ`1J]!au)[g u #0X:Z*ݝdv5{d1076h1AJ`QM&|^'ݱ6LXpN*r&zcec3=Pߜ)xB7PfaAZwRNǫ?νt_D`!2 ie:BX?g@!{EG2p\#'<ϯewJJ~e !AQ*GFЌ.Ii~u.)i$h"j?"ri/rtRqelߞe%v% Ng/qXѣ3)>ɿ@d &.d^rEX9AGQ5u.Wfh7<ɍ0Xec=zT`Pazr {\"=Ktsr1$sq$G:zjՅõcz0iTN ѣ(vg 4^Q9fcŰo`PG<{<_eoNfcLnEe޷mdp0T?:vHPQ=-rTo!qxb9Fu)nyfHh*ӇLRsc8n,ʾxm1Tx7N"dBxYodjRLJ_8oafus=my_ۧJx)qk~S0"pJ&%CqW_ߺ0`(VVF%CJwslpV5-R[,w*OO룏fLN)! u4D2R K¡v +v9$;j3<݇Ӧ'8P= F ci=列}|pSM $0Ġx )y^ $ ヰ=ՊxβHJ٭Lu7OU$ꪙzED L*,`W~?M,nWN[n O_ϗٍ.!sYy6'dءŊGh8:y[Ƶ8XbW/>}7VO*ұdɓHC=pT'M8.S =vow=}{@ZbnUwP_ kB_ ƹ"vЅ4u"pp0t'= Dw`lwf!'x(XޠJ 5Y[q?'*@Xz^Ɵ3뱝T4xE )R\$3뤉& AM%Iv_QA6x~ % *`^k~b&wN1=PPi{ou'b[/--G^丞 0-9""WŠOKE/8{"y݈8wuQVLz {˖BϹs|"BsX:O߼[$ق o<=M R.rld[z($a ,S[2O ¬ [acbm ƀj]1yY9ڕӻᐤwcqd: ǯ]VdVyhP`4z9uI $7qPZ(D5UELH?cwgQue\͠sǪpp=Q/ K1f`C;OOj+#9ms(V}%Kd]6@vM{-;~)R&2(J<^⎨N +|.Ti||a"^)p;nΔj7>+{~$7YCZư5[zJ>xKf ?`;-f0x3)^"P"Chu}xƫpdk'N}-ڥK}" 3\߱]a;Gm')KEp0 R?g6{B0&ݻYټ1om L8Jheݷw4|%2[3_0s'sN>z{1xtؙLyR42+naw/&T0y, X oL11ecU>#GeD@YCɓ^ \,!=c}?GӆpU]8Oh <ꖛ!nj_pj -*o/[K9Hǡl$.jgΐefP{ aKo^5J <̤̽3E;"`nn6s4Ls51Jݲ= >'ApھuCȱ=9~OU,Z'kpc,ލS?pcc/s=*C"(CH"Wn7l=Fe>i(D9K_>FI #,`(xj ge 0z/v50@n*L$YdfGs(ct:.>MTy.zG `&}h֜1Z[x߰7 &k/zr.ߐ- z$/[Jǔ_( -_98}93༁4/W Mkpf0j74=><%^cW,n{Њ|=z@rQP\^Z7{ 0Xe[~d 08FU8}E/Ptz~Z1 N_q8XL!t)JgG]tZ 1~ U,TARM&JTWۘɘxQ+V.ӨSUEiULف t&O9c Z򄬖 1Dp[]C|TNԇJ/){7WȯK5^E[o9d epLϋ{T/~ 5UjÃt+O(oac+giS@Ȫ&ϡISJ Gc2tۗ;G@֞@dPf<~Lrȭ8.:ֽ4 y B-|9# & J4T/\@wA<@߾B |NLEZ"n*Ńʈ+K[tbe8!coc4pۦL\+)R İ '/;vLwj>t fi?c 4ubslǥ%Ia2N(;RKU˒؏L*'`Ҝ iHW 4cV͵#)/ [3F0+X24{&shڰwgE!#}:8km'feUeA OF#6]\+$(:n1$ bNĘLak; B9oө!LaBtC(2`uʵ&ݷE<PI#P˝7ޟf/IMNې?26.L@Ns=r9MwXU(^aƐ_̰#1y!sRW8^͗. 8Ey??:Pdzbۤ piz:vȆ6*ʷ~Je#r.^uy/ f/>@9sgʫ)IoGW8 gH`H/}mTGvHx{!(FAGrc$c:jE慌lvjO9̓\Y,RoQ5gΞ~|Ft'rĪ7*>fƨUw5UX~D YSC)?al 88"ӦR $ K z_QZ>8.ǥߌ'9⡏^ɧ7fˍ!S"zde Qf_f@`_\UX{o]0**+˾T5SSAzm)]W=~0Fu7*J1>6}9&{0JbNXi")Q@sz2$ t=#כpznuo>exqՉ0T4Toav LDwVwC2ʃ T , @ta{bU|~'o@9)57o>a\?(q}#aGuwStɊ#BK{ti|C$IGIy<ϳސ̊ry5e#.=zoʰÕ3U1yhe+di0ޫʹ|ם{MOqq4YcԹ,!\$;q;ޫBYXE {tUBnNMTA04uk+8@[ThP@btZ&^acZ=4 !HM;46>G$:p}={{}Ξ'~p3I95zy(Cʰ0糁s9L&9N4k%jDt14a(IWUjsl*-E.z @oҀt1}|\mSiΤO=u  K *"*+ ߼[,u٨y wJ?E45Ο`#( *Mxtg}:9vs&GYYeXd{H/wZke_l``M7%Pu%J(B-~sHi):V#x,ipj w\G3m G@7*/.4ܟnEu.@H%?g-9TC'X]GE~sH-5` ܒIwgN?83O" z ~-zA掳zOm )-S=rh8XϞ*_sջ깍TǙR;|j9EQ(P MUr/|7fR=D5rCtqxΘ x L H*OrMeRrcY1jJػRbNn]Ve=Ak f{HUֆ&5\>ݧ\=+sf>}ƨ0]61l\4OlCm{27|'/@}ޙ]+ݺ(tpK %;ꫴ.I j>s c@̌ @ăx(:"}BLIfs#*Xee;~QITi֚}#/b0|~~|=|AkN+~CԄ^Y1A" SgovѾњ-" f7ir)o) Q(3du G8> :Rx )D&*if0{{Us~ Y6y$֫%[0Ѩ^783եRKP+-%ယbҰ#I ^0wHS_9Ve *1-ñw0`=xdkMEYd|zh Uh饐Ԡ"q|$?Rtzd7t*Xnn@C$ z!Js;'9.yvY1p eI<'oxk噖P` +Lߩ‘P8ޭ}s}U59+uCx"nq)p0dPl)9'9f޶8bЫ6, NG(c@\Zv{\A}w"Hz,S(+d=5$ PfejUp8K ;:EZTKZ:A\($tǬ3bulnLB#k)$%}F3Zyk:;I _ ~"z) Zp b3UwTq w&u{fPy$}v'UA\|8UF 2-uIXaZnl@:<+  9O 5:][0pY*`!:Y\C{/ Y ~R"sԫC+fq\HCßQ[stetJV\:6M)3g!wBJy$ s8(:Brd!aSօ{CL85 @Ż@E${N23/J.TÈte8Ek5ͪ#CRpD4Ai]>pç5{a`vTNL5,D @5d[=!ٳ'q3kKd){U.JS$Py2ZO3salG89{]FόZvNQ@$Ĕ%?I)\DԄ#L#2 E"UdU)֏?G? U72xNxQ0,X۳)=`L< [_8'V Lhf7lYw46W/0~"R>];ΡbHZ G yrD@0< c=ZJy) ɬ`}{GJ脘lHSDز(&8WX5% (aRJI9}(XA> 5E2G.x,4/ ,GlL%<0hGw!ucM=fuvtYP~a pHYs+IDATx]itו1[Zl6FD,6[fm {SB/ !@fߌ9qƉQLf3}|߫׭nu x?]{{߫/}L'ngJegg/aej /DJb\F.qoAkO__OoC8~ILDS ǙHz,(/# 1U&mjڈ_dyаρmM$RjIW `NGbUUMC~H =eq=vZ]ByGmF,z+k06jQsOzSJB>tD`?ie?@lL{IzȰ<>[O!z&{Ψ֓ D+T0+J?uئUO2\$rYWJO `($!?`ylĻd&f Nd82b-bXvZF +␁7O&qj^zfm}g+ ~Փ顎Jhx .K|z?;E[\Ow Y4kS^!W"{E$E} ݰlIFaG(U-wPfƺi9=ih[:t C`m0vw"` +$_"kKMB1b68;6 @am2 2H ձY?H>IDZ#ಃJW:q#Cxx s8B@M@.vt}Gx>%8' F[Fz ˦0彥)x/I{t"!xL+2tH\VF_8leKK-w4LLnM(rq̩d& L# +]TcaS BI62,WyOKőmCۺ =Uml7ڞ9ۇJ27KZ_H+R=N̴:uYH70Q\W [D±>@{b_UZZjiNV:wm-DqXTbxPK2-7X$Ŀ_~8[@?{ΫnK-RŖ$W߆IjQRza,B56}QGLOտqj&ٱ9InCF Ƴz GT]ll:sqi =|گ?^ + j Q7O&L:=Foo@tO azVSڡLeX %2z_lu'Jz*x pYjr);1=N6qU_|?RZ9KUN&N97nr'7r=ˈ@E[MX,$?ױ_YAP+'Uz$WWXy! T}E)X3cK̺!~V `N`+j'Fdo@)eOd(e?jЊ"H f't15 Pe+L¹!"h̫GDwMµ>[ǒ\jO"A!D/gz \?3<3"8+O|e|Oj(7 ]uARۓpZ?Wx33T35) "2loEcj]"ܩۃNe|\[ʆxs$-HI T9FL`-u5> Qjl-`:*.&;yo~mM< [86$`,N&9Me݆b\ާw>Y<Űȓ%G9I$:aʡ92trObͱ/?)įĒYb,ןߟԥA7".0"Yd3$s$%&UϽCy>K6nc\?bE! |Ig>D`t[?sI^Y/>ctd{2  6++$=u[nbߦA&y =!ln,WSuv8 IgGbö(D/cO>%DqIi|XĨ"HX5ޡt:U.}QE\=(ņMsPpS!k_@?vZlAbG ^O^rRω~{Xvq%dXQ\1ܲHoSV/x^`!Ok*" lPSNыbBǏK9n5Yi\BpTZߎZ#!ofa=-r}8TQ/<~:c^/#)84 0E\4r$NʥMqH@s P␩Dȇ!)Q`Z֕y?ZgX$!jajژ^鋐!Ora?HhUޯe>x4t|@՚=a(V *<2H?-bES9?&cöl?F{NQU+QSJsOo9x|II$녬G!e39KmH :FByuf܎Mgad?jZ< z0*lbVdV?MTI*!Fq_~ߜ ~5hXŨ&H&"S?3za׃ЙgD6i{x(8ވJTݺ})DC wc_ wi5H,M=! K)+e߁7f6^sOs ٪mk'BѝC<!6 -8|e7A+3$hp4R/5MWZB p$`|2-W±ᅀY>prжЈn4V> UJo7-l8d0E O#)@l7:!U M0OFn H ptAŞA F)^yo(}OT"~| _tgvgٵW ᝱Q5";k饯g/3ElK+ddeD 9 >ޣqq!`/giJ"Ə3Ry恦' EYCX911H2 H@!z2.Dl 8E> R'^2cQD/g玟Rʑ"r>@;;OLGWO UQ˕M\I‹Ij |Yy↏;PMP/l8kJ]qc/o &ҟQ)Q>L#$EW#,V 0#ُ<N<2)_uM~<[k}^Ugι3hcSC! \-dLtu-m-mI<p_ wMwe GZןZ;wtېs/gqwo!B `UQۈVY㱞%(*A)B7! UcW|1Ȑ;Iw&9jj_((t R7$K,vVT`}ϟQ㿄td v6ϴzş^*lUc\! <'5iKme-*2G0L`#~&@uw6Q!Yg珻BT8EgVπr_7WŜI.M'6y&GUXYݘ{/DϐN0=EpnkniXfX[A.CTXxy?{q5>=])Lvzҷ]_ޫ-2Pzc&@"L落Zllp3h7C~d |볲Jt*&@ R:G!1 EciHT@V W4>ii|k9(QFc uY}!Æ\H_ۘ9'1"cZ޿e]V;?:lKO҈kS#{f@4.7t%IXXnϽ-37o'}彆Ij9ܺe_ iGg5UJF`o7w@ϭ1/ %ߡz=kD>3QaQr$pl3>\_LNF4k:gp+l0!!~AhN~&@+2^(8ZG_ <ÌW{V*Xt*&@W *0AAǖ|W8*ljn unz4$hhЦ M@&6Mm4ihЦ M@&6Mm4ihЦ M@&jL~"IENDB`pybik-3.0/data/ui/thumbnails/Tower-9x2.png0000644000175000017500000002457213137372543020604 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+),IDATx}yUՙm;O5PCU<8 ŠX}(ƈsIAT@PBD<~1ݝt:ݾ~n{ԭsońws7[;g\&8pg8pg8pg8pg8pg8pg8pg8pg8pg8pg8pg8pg8CǨ*p^Fn_'Øimzn0r麼45bNUeo0\8{Dc5- o#Or<|IlgMu/s~~&V׊wp`CFNzc((3 'pۼYct} # *0QpŜɘ:k:7w:iכ0&2=na üu?1`|?C{A|ἍWneg4^'ςaۅ/G&<1tߑfz_۵`] 8}JecƞGrpj=84N s&PIۘw _ -򽆘-ag!@`OoQalk_~q%Ff]E9 0|#iQȟx?0n3޻S?$kqP ߋyØ|M^9 %u2KSa )"ز!h'`4b(N> }p0(Du0 =l1^'sx€_Lts׀G:<@u@ڇW Uˋ::*?%K y:`|FӼnQ51ŃϼYAq=Q@DM;D0Ip.'Ml)N0(xa 0٣6x@q(!h 0XC^'pX-b)8^cXIuX:2[Sr{ `XE;(ڕ_0hnxUJ]N-6{0:MIyF1`A UPoA5'Rz>X# 0Ts6 ::skK ^(W=&eɂN˻H]u?` Sc30oF§ ñrPF kU` 9f.,aDJqR -Pjn:KQ0ol~n# 9YS7jwnX4 ICP3{nx6+s><` RBA^kNcᡀRp=:^ڤ*3 H&F9oFnVS&*x0Xtȯ\-"@x2^gq5GdHaK!^F0l]j btN)r]ØZ?Or~kJ7\2ٶnQq^yxOb~H_ӥoBNd``Xx:sy-Ix">%nB2藆O0L?Oc MX5 v[B!IeX|"Q\|)I͇Q3Ƌ3"$clδ,C1f%RxR ) T?x kdcoYAAXN>wq `]>WA{Ŝa{&^tSK?w瓞B#iQļ ˯ʈ*Zyt}3qKpyFF<^}`TdFBL^xd>6q=O9o#lJ!^ ¬ס &$IB% #5ZH&5}!+=ԀWdJ"1{}b0umnvށۃkyt\?)c٠`18Va8T)fwK퐙@j^I_ui`^2zLI`%kViW I0 f6DgJ7o<hDT$@4= h2 pŠFj{χ`#?wN`:4K4O(C:A0(iٯi$O7` PwgF167LJx4K@$$ibɌ$G/$Zu(kB;J1Kif!y(6nF\0660n:'cl=5nydcR#<߬]cG@;/s '!%aKI_R&* B5&^QbQ <2: XcIc42uN'I'}hSKfŗ5 ¼)H~Fy4F,8/Ƭ'͆Q@f-AIcĖKiwb}r J<"@KpLS/Ƨ9OP=~a@8$+H94*C{惃y\g h8,_?)l ̥ hM1qxj{{mEMɈ>Jq]5= +g{&qxӥ|Xgc ֶ졺ݚ"wL^߶pޔF7(-pk'0dJ/n3$,' `o9<}1yG0*?] D%0 wc#*?iDsub9\x"@PEŭXw!|_*c``$;wş,#b\O7*mjoVM9&6g/`]{JA|/)E.$'Xc|N @1Ekԯҭ#u7}vT/c沙ƋUuoGI>}9~3$dp~l)6<zB}8#)ihOO}\66tE+O3ˤfnx&&b.-^1haGPRIPT  KT)y_=oV@БEhp3#A_Zr fihSeT=*ѴeMxRݞ%ʋ=狏T(80\O-2嫚4ι9(NɄͷm1A8-yJkC1wS<6X>l nyO`fd"PHe{q\#\g2(VL`)** РtUDB.[Ў,Q("|bt_(^0P\VW䓫,e>7"m>]t-OZLn;Ykp+mZxY/)qm>b|v 60WjDQs0.H{c9|LZ8(Ta5xťH/acպ{oDOc;z75_^5}'"ex{{Ui^n>y/0s Mi&6͢(c^/-Βϛ7@wpOi]Q@Zfv\G \YXb$=O+{F2c@GROb*Ѽ_?۟+įK}c!:'M m>@㯖<"3tIʢ3[O'RjWB?%&B Aeb;vIj n~xK o8^PD =(S<\SZiş uddv):ur'ſP{O`8sz DT=,ü)y<z̸P`(W#*; x^@MB&v>ҒɅ:k8CbN%t8 8=h.צ|~N>J#]Iny\/Z #@\ea溃!} ?) \GB|^$L(?sAZh>ܸ7ۣ,Vk**qΩ/lyD0A~gYc ۸gum|>u8 0k `CрDVBRI%x<-< kD3뜔f4oE0>cϊ{;Ϥb`_Ov4]@W0D&l Tv- aS<S(6n)L>eh9BY@YJp*LLž?6,nF94SV;Pxo)bnZ{Ldl<. u -b`!>y=K?3+Ȋ <#C—rb+6. _̇$xc} F7iv 6U`O9^"/8_sj7zZ{kdHYY>rsAA*4 Ec)^1 a! M&L됼[7&Eߗp-6=:'?GLu3E2{G @-V6[Bb4@ߪɛ2e,KJg0 9wNs-vFL@F}60"!PD9"8k'l n\Nⷹ:;i *O7yiOPQCȃm(5ץ]m8֠W($_3tHض^1<(Mf|J [(* =zfYU*^fkd?/ŧE=%(m_Pw]'6|.}ikפV=dz|16nW3R+7OG:\d)F1`N w'Qb.20 __>cSKа()ܿ[|{m+O@6!g@/CGV"-b}t} n <3BЫg.곁2许4vxRi[B|iz 8IZV8nQ:c ZU+@^l8Ftv٬s <42t,~ߠ-EPcg0> އk?F!" T%}5>khdu dĥ:}/vC}wlt RRlC!*Xљȱ9HUasn-|?m1)oQW]'8;_܍) zL)fE1ҫXotT[Ơ~ Υg;O}[p\d\ͱྲྀxvc^7]9{0{Xx/@]:צ+d60({#pp3dV&iàtl!,v% @s#Yg bԠ755/^P~40]~h, YIӚ 0tOW3^gnPWWؗpze[7Wn ".Ovh,I!'tDj``zPU7MşxTf 5)V^h:/?ݛ# IJB n)愪ZPȃׇ@1n`)DoqJr9~g[uu0u7y<57{?e: D4r :Avk2@< ƀzcda7+z )GR/dx̹[2o/ >&V?Gx) wjm._i<"8Q9@)h"ϥe@o'1)#6醙JPIC2kϴGeg86; WN dn)Bw`mwi2ff_]G@Uӫh`]O)e;=n?$=R1dsĚbbӚ8__;oZPo@ҀL7XM(7CAf¥OƩjlso󍮭^?P=t6cJ4vk@{u#@ޣ5?lc=>@j46ߟ5Jo<7xr/prK]HS|94$t&3\#-E0r@bz!Z&7ߪRm(=fC2L\&-^!gRZ,`}?z.8Q+ϱzEionUzr87q"5(f$ܤ@OGUFHC XX|%*\ѭzXcAaǒ5ga}Ѫ_B+>uM 굩/(R0x?`kZP.CDLY;X0=1^ie6p%K;UyWF| ;%zCeS gS\0pVӽO'lB#/p/P`L,ğ(OV['U./淄UT.gxSmF R@ڜp? €酙FOE(*_0XU nXn׊VSКB^zlG c?'~s4OgbG7}5!T޳{J.7_oԖ:0zwmFn^ٵ{[!`@mf#ߟ`S8P(5^= H{<.n0T8Y,% WĔ> NbMz]UOo2f@jz@ @ ٪UKdfs^3H@vbp4mI£^ոR,Ö``P=ov0W|6||q WGEþ.WT=ܠN`@LnG "UZ[főQF"Aqy]2fG$E0Pc[=CKV%IW0 d%-gc*Q@mqc{!l8.}r)ēnd]I.)A8P=*\68W6vxNLawB'O.ޱ2wbbؿ5|Wğ7s pigےLfI٬0т|P 3c!l~A ō| ?lW|33%(Q$KGe/mwEEUk3n=ܑ<"!ӸTu4z+dE]} -eB CLp0s"#ϕa_v||=|W~u׼g̔v h e8ZQf(`Cg΁be4>;9 *@vcHUy 6`hdȇ^#Bk `y# f=ΔHG׳w؟#` ?=[761-=@@d (Q\]Kz!Skֶ罺"`/NV-2̔9 9k`S ӱ\xCI ncOYG?YG^k_!UDzmÂY"ML9[u4%;c9*1&6s w ݽ'Ŀ)=='_wUENhiv.(JȊ91*d \ =o,_AOB'Oj/kzTsG܌ ϊ,m0Ee/xU )W͜i2K# f %8ד]kҫrwޖ TNA;)%6?&9ɳ|Wuq lo#Hv=!gyS0ӊ s𷦜h yd=L9~.Gzqf9@K=8ʇ Mp p p p p p p θ]G.IENDB`pybik-3.0/data/ui/thumbnails/Brick-6x3x3.png0000644000175000017500000001710713137372562021004 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+IDATx]y|UյO9In("LAQA1XQLjgB4UKb';غs;%Coΐk}k8~{e'EPPL@"2Ee)(SPL@"2Ee)(SPL@"2Ee)(SP0!kT`8t`ۍƗس!6su PqNoEqCdv7:X"qFz}˅߳~oK`sGscׯ c~Xёl&,٘fc7йc=tMyc{K#G^sߠ_^qswC[DJ@,v `.5iuX' iHrCMq*KG w5tdPE! 84Sʆ]p0Βdl!.t1vMX'pU]W}m GOܾc}/7nat&@`jC9E9Ƶ8.:!&o8Qpޜhgg-(ws3&N tE> ƾJ׀YMpTK$rݽ8@v5}\/x^H/#p7S!j ~6!d5 a_%2l!2絆J;\㤜/ 3y2X 8 y ؽD 18L/F]j5v9{5` ^JzyI G>FAqBA:{)UEi!^ET&s|8G@!Fلngcu~{ *:oW{ w̱Zkx?~Df{%.#8Fk n,Jivå=d`Cugya~!2,knLCda >ǮtZ$2 0'_FboG쒋BU< <7Nv |膧89$MdXp 'vtD?/b󌆆n@xWiHIxhEEEm I$xݗd *{\(x l!*3uaf̓sIx# ]J~΅۞HE$}+!p@?ywu_t;R<}M2pIbu!'0M{#%MM{Jd8p C!~koG1gRmRhq7l,@uGI7L l[z&sGإN 9!dxW~ ^99'us(<xsS;DJ+st,eع{P5u64\w ||4aDgNdE^ cfc$ vnи J;R ?۞^ccoR 鳵t]t\&[GǕH'ISg c$d(#|u >ȟ|8D v,0Og&Kt;U9! >R\RY "8L;:'z^p{,)dBLpa>yIϐ:@ !j 2 5:4Μ' @{WraTa{TOdZeg{   A < 4ct8p}q6зe P㛕 Bm:]3p ACС( 7@O!_nbϠZCa;"ߑ'%x0qF8B+..dB=Do"c&*FZJDnHNyZ{:J1Dۛ  D >URR`5zRB^W("8\;rXt/M18k52k ɔVV.,K*PgRv9\k61*0xaCN7˿m1_c$p8)ב^Rp ةe$kL̀ylNp@; PK"t6P{*3J]os. [b5 ΓU~}eaq^SWFy'BI.%0BDw(Ex'{pu D‰D|mP*wn5OwX0vf4cii)Ad@ ] 4Ӭ Tl)Ju;"+2BpLM|x xC3-$f/?eJWVv98@@\^(k3FܘE4& $ CYYNdM[#uU:x?_W$>$a⛡R=-WPdTp55&;BzްRapSVۨd8(=U'{(`R(cEEmPgCWu$P GޏqJ 嶬71B"qΤ2d@.uJߜ'n:]BosP y9N9 ֋ ]{EoAH_aWq| ~FoQ,?v a[1cz 3uZzBx6>6.,<[."~$C-lEd70=y%( |nlS{ X/k՘# ?.r"Kg6J$W 7̫ -&9 6|iR/`OXCyhHc@eO5fZ`$F֒(b[F~%2ւp7[A+wqO<{e!" e!cuQi;I/\+RPNXyJ ~=_!Fˉ$8 A@O һNs 7[RY'ȬaR//'?.]cg+xXAM^Yg$*~<]/u!;s.vzr#@P/~^X"F"w3SRT?R,Bޞ}=r!6L)ߪ;JYqX}rY׆#M_'kSz;?[PW/^Y:ߚ4^jCw* ڡ b:ӗNRchRt&""C3 Du~ji ŰI %7xgd $7$F#Piğ#@& N]9F9P_S h흉|}P=?I}2q40Gc3Ey Zy"@cS<)P(`i`@5"GT!( *ENʅ':d0XSnGKY j ֽ%Aq`@ pE]!jI961sʈݞDt6ܾYCXy8m#"ЋtJ"!fSj۠3_ONplcФRŞkD2Q<$Tt뉬гU==&> w AB@C9NJfrofh!s>CH o :G ':U>*IYq`􂯅~Z["s)EDko7 uTbG_>&~zN E v,j_.w&L3V0^3Wp%dZhCg6<@e |Lîx)ݬs]uTTIVL`gtxwGI༑ 7*8i=Oqз>!W涸ب1# ܳq}{xYzx5v`Ȉ۞ M^t ]tq"1XCE͛ZK5ޗMLDpn EVYjq+zg{I|ؓelx>?R~Fǜ=w: ?~ ۷li7[B< 9GQLI,3si!ޡ$$O:Dw(3UIƎВa6sTFޮH"m,3emG\cvtO 2@tMKHpD(}Q>E3s9P#Jc_Θue_I% @D*'J? =˗cqUOۗx@ 'm 6S@fYK[1D !BC#^!ZEdK1:th7#[@N02 B%1RO* ۙ61­@}"&Wq?`i' 1FZ`G%?۲SWfp~Y!,%0E9WX!pE̎:D?ě$9(=c )CX&&fNrҿJ$UZP9 Qœ2M*yqXD |#eywk8B'~^D+K<ɋu}нp hL#نlE#0̿;)+X f=_{Ky%{+觃s+# \%J)Ä}t#>a}|N"+A9>G W }|_ ?!?$׭~Y^{frqxĵU+\i^_ĕzc1 ?LKi9)vqQ{ʈDw{pbA&Pm'p_fj ż'g+9=]=B]AaN]7ƒ"c`̱{Xm"^t* z X @(7CO# ͡PQ^c:qvvzQ=3ƪbcw9|M?{$+o VhԅT3c>d1*lFhtk[" `K:Kxt=%`;E4oشsV6OoVxe]'u ZFoD_\<=6>%zvm}ʺz][sd_Op~b:?X9JD@G;+gZ_ft|$ӨU9W J/atzﺇVKL ˦I0m%1"^N/f@P,(=_'C&R=lgHI?ps8-9,=\zkfa,;l!Hwʲ4]QExAG6pN4OPw>a/??f[7_ƽۚ5uJ%IZ^C&&Q(ᡸ9G)KϦ.Y<6f!o+~(B"$8$ |UǂuљPSJY5}XZkqy2KojWYIt@Q[۹Qx'J(4awODY`1 )SC'P-g|,m1䩟]}mGV+0]ԅ'˒s}3i\F@xc^_vnh l^)J a rNtq^xlR\㢦.x X{8]" W:!vO#2B&Ay7>xwp}XvnZ80KG߫d/H!}ªn W0J56`wBPWRȇ[1}p\" x)+[:{4ƦO.oW` W@R>Ee)(SPL@@-"2Ee)(SPL@"2Ee)(SP츳W:~MIENDB`pybik-3.0/data/ui/thumbnails/Prism3-6x6.png0000644000175000017500000003561413137372656020666 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+;>IDATxwxTպף+d2{t{E A XA0*Bh a`GYwVL# g=IfLf_sOP P U U U U U U U U U U ?]B}{o{Ok\{-\-ĪI6Y?*VW"JZX$kw/ύYڴ)wE[y(INNs>{n'i^_r-׫v 73u>`gj 0aÆ!>$FtbC5D|x]kΑ@5Ug"9K-[ \Jk^k\5Sw_C7=>535+?MX%\ݺdRK(5ۗrmkƵ.B@w ֻv"f %P!f˅Xjr"!Y+Nw{-A0Gy4@h&_Yr=*~򟼞'auѯ)w:]U,).F yq!8W z.pY],/ZݚZ(B|w{)$(k!VB4d0j,)u佻Dh@&|L^,h>PI \SYXljF<^8W-xOpkFAyA0_ c6x:PSh"o/sye!s8 Xy!b?"`+ 9W;ڣ,h= y|||!Kz;{+ZْUV_|!֭>Tg{j5A^KbG u/}ѹ'&XM`U2 v +_fs|W}n#\|ҩ]<"B~'a´X +X#s{t20GYY "--M$&&XQ gyED.r_:b5 ZDyQ$)ƙCͿ,;}0 >"›ErQM 8jwؙzW uW|_2Bfs9>^#_l[A+׮-8xҥm%nabt}bEϔx;#U=ElѹV&?O4"##CǫVJJyyyj{ZD~~үKˑT H@pARGC \#PN H7~K&7Eo5p4gs/?;*`X3 w?ذeKp;O}P¼PkU*W-O.d _?uBHl01)47* >Oi 4 i">\]kpfe:"UJJJRLEEEڱ ax P@'D#ݚED~ vBw )6LF48{\φhdgkj; YmZr\]z \()Ĩ/-#I7%ANK%v"V@ '[4˒hh7fڹڍ|w˅oZ|\@y_/.] 9Mn)DjîH2 w 9wSzӀ)vn|/?+r<|CZ uާֱN|6RB`v+Q$|=$X3xq@ƍN`բs[}':`^v(s>بIo4(ׄJ@Yu9/8oo P _;g¹K+]'G NjGG& _Bt>@q^UV ?KaW]-a]T{G?h8*[ ½%oM>?qryE f9"D1[TѲ@9h!>,͒ +?sqemF?TBz8x y8Tjc ӡ9?QF$ M|48.qoP -=Dl9 s}V0C= =W3T￞U椋:׋ѣG+Dž]~ٳ-g\:Z;EޠG?F g.~A.1vqB/>v6Ů6vM :&q5Md 滨hMYMNG|8S 9/7 KbWTV+5k&z) g}EǎETT'=^9{rDzuDڵe*Dw{q1aY((ϊ|qGDs=5h!GfiľaWeӌS;ylZMCe@*0Ka4¯_)v-/ۖf*^c{y־.reȜX~"6mڤP -C”#xʾBXM22..jQ2 ,K=DweX֭nmѹA=d*((u 4xř|'\ꩨպF‰,aM Y;R|QK_H 0i2MyE֥Uo5@=#@ M7$u&233G>OTZÈ54~CTc8N9g}qbH0p|0OnW^WP@4@R/5/ի+.U$K͖ڍh-3+}S/ŕDW>/!7O߻J' UW]"~)_ qUW+{}Lg װcFPF4:ɣ}ePebtTxEZ!;^n#J&^۹sFU P:y<n/=!g~g 5ĬJ  SK`iK(ڄ0PQ ^CXk4i6G ~F5ChuW&F[w[ؙe\U>8묳n:؛o)Zn~ꫯDz0 O+ݙrv-PJ7BY֮ oR?Ox<"y(0uǀ8oGX>+]EG?bS")#H F8"ףl!dm۶+B [n/M裏g뙓^V&Ћ#h8,@cY gCq1)d&~e-zYF+Sqb_z_'L H/>,|r{9CTƐQF6m('jcKKK6nܨ. 8Ydjf2?GV[  R*AA$:8O m)) + XΟ qEJR\8 FL>g1 APL?YnەQ{}&NRXth„ J|Y(aXBjUPeTRMD$-;CtsU޶A}q ʸA<{J^Ycn!a~Q$-O&e(4Rxt~[SMaEp&ٲI&{PisҘDqpwa@awnm_ ޛK®߬Ѭ !4oڥU eoY:guaq pX"w A:sF%ZMuJ%\./>ys*oh4=]{O_ =*BcD$#'Ste޽QCA+6W+="ho1ԨQ#-0I,>ϵbpX%uM}e|j؁O}PksLS ;H` (AK'A#%&(PSKRv=T뤗?O*ܾOho֣)ҳڗU =Q7mU 2O?U) O=zT֭[QR<g(2aa塔\ {CtT<ßmN45רzu7Jfda/>/\~awt3c8&pɠ_~Y ,{P)8BBT)bǎtTEϛKqV9~Saq.\C2R&aQ]2ĢBLTnc1Fa~pC8q}mj?tKط=8cf~MtU.A4bѯ_?č;VE +VC]QSASsNl6R31!FPzj9 S8Hᅿp^\xgAjPKgpʸ!*|Vkbe ; Ğ#Z|aO4I ꡇ <ӧOW_hʕ뮻N wo]=DK{-,Y"е9`Y%*~9ך[Xm;" طo )'F%֝++{ڜ+n驙C4/Ci֯t ]|*ox %lXBoVcƌ –-[ z~F\XES2_OU~?y?VFTay"i݆"'0tRWNQ} WyFo6T4I#5osSVդiӽ_~ᆱs=WU  ?\C Qox=p F!)PHM9;O<oUFxVp "ߢڷ/J ƯgL!4?|C:k[#nN1^i~,Xaý4Wu{Y&\%pm~h_ȟ={3:Ÿh_.?]##|R;w 4Ρjz|-[(p8_n Kn,J e,Of7`/l~Zr]lE;~U(&΁ґYT<@wv(E?49KZh*LpTu#. wXW5 (ݮo,)!6  b]IUW@=ܣlܹs+dh%#1f]txeLɹWT"8!  `OhX;F$MFsKZNJnK;^R"Ū{\SOMP޶m[׬YZ 7ϫԩ9rdŧfĝf $vsΊ(/"[}$RGp!CR|%\GxK3wOܮ$xRqrσ zRL9pLG_ 3h=|v3(gGߙ/wܻwo/x8v7F8L2JWAP1Qb:B0 hzcH] ~tfzϮ\VlW `Hj l[ݵJY~n'Ɖl9q94imн{wUBJ`u+UDy=a#pxSL !/bzNgS`ϚQrUM 7rߛdc)pH B{XnԯZV U )i $Ƨ$Bek& (aQ@߾}+D"j.P37nR^TEOo˹HNS,[NIU0agarHz]e걏VdgeR}Dg~7a[糨Kaۃ4l^U;uT0`rp )b}{XDyW^M%Z 9" 9s`)T#lJ_&yNvZܚ~kOw/|uu=s"1[^%)W訠~W:< A9\ƓG(}..40r` 1Q$\ ac鄚zU!5@;Md'1V !Wy!:j#ŵ1>qmRyZ׵p#~pך3so_ɑ+jyGOx&>[ȿI3rcXLXFW%Ph>PdP=_=lC>{;@H =*Rs0̫ t m.|SdJ$:B1#T7c~qz_>W1ߖ{T7}"\E+J¼~"3Re1)94~-5S)& 'VsAqޣ%c d8".\ڀ?{DBh|{@ a m=38?H 3?-OפWynЅ{YD |37|\wL32POoX6Ɖ *WŊnLP<esPȿEV`a܃Η eLg$(pؽ{.ڹS=FQ%_'x/jNm|gr*yfQJTS.yܦ1ʙJFrZŨaD3*͛L! $o_wt8c~ wO8Q9}T"^gW_ hk'!y7P0o<&ȃ/) 5ŖyJ{s}8ա;.jc@T>L }ٲeRB6T 7ܠv5.4b[x;C;Lj?*>AZmT}+W4,1(`>l7t-Ύ C=xS8LFZs4jd3@Zڵkb)SQ> $"8),!BKao`"6]u"9t~qb:G,JRٔ+ws$|>.2|^zq1ړowIvB_6SO43YYr'~z?/8`8cK"pT3/6lؠv.B&R;T~&|XBBDjYvUy@5U):総+ 5_iSNa#|5r:40t*)^P\2Jg  >k>jΑ#9#~ܚT ܣR2yACiAc09*='J8DsC4 āϢG~I]-)㒂A,´s*CNϓ42NWU[$SD/GVgGiPhހX`;"lf(:?a18 Jt2%}! ,0+yKٱVSˍ🻷Y:Ě@(p.]?;zZ'vu "E^כcSM>q0GnA`i"3#nєѱ@gX5޽.2{x]סp-ZTA0VvЩuuKϸ&ޗV(v=v~)]|1G4B>zΦן "^[gHR3#|$S;O$ nkGۢRPۨ2~\P{N,t/ /_p ?/˖6?Vj6VZI%/1ԕa!t>ݬU˳ 5O/Âg4 H)(*[EHe <(;T+ v9ud܆R{3gdn=.lvhpGT'O%yRW_ʓN9=ktF>}PKjSqI}^B#i-IHBζm T lRc43m=:a&Z"TK:۸r^-UOU`UxFc|A\g{ĶB!bEۋ}"!6" h| gKGD# y\μ7'E8;@Awg U:tr\=3fМԩAeȰXE>U`RjP]yw& z '_cwcXKlܖ. OD 1at2_cG8.SR^v*qUǎ]Mşfb;q҈@Wo %xe iZ"v. "!.B}Jv#Mw.ׇ'JTׂ{mOJXc':qCy!Fʍpo >KgU{~|2JьYG>]ՎI`dzQ' l(v,\-Z(b %Tyf0d܀Ah)|HDX\htb㟸M ~}i $^c%{ϘW|leeS< uxhO1Ȝ uG[.@.*n?` r N?A~TV-{;>;nս vC9fݚ@Dr.>^an5)r [G)]>Zqje%dB;ս  }"ĺJᆭ/ߒʐ]GWd[[ݶCOy *!C1;KH6ez/ڗt.&~ rHŨjhU11 >Pow FάS4#w9Xo֭%mPvpcHM\}]%+HxIzPPBIzj.rC0h{q |??ljyz4Qaǻ1R T- p05ɫT6YN2\ W稜wTӻʭ |Rgw5ҫW@9z!w[/{'3H(g L`YVv #E^1 ᫦#{B~H@lNx9TF}la 0'Jo\_VZ]o=\U)wj z`wmoJZ 9b6]phMx]*37l !}L! {fSv?$1HmSUZPPgbpG {ĩ""-4)Ƌ/;Db\hRWP_@7vp29@V W&N_um;02.˽;,c֬YJsQCoFL~!|<]eǹ-gE1tg%_fxݴ9QόMVGSmޭ߹Bt޿+ܫ`͜3һԶYO q;Ě;/NvާG?\'rT4xB>3I/ķXJyX%xNXQ2$q(wHsQ]`{Q`jG܃~Cxl{݅pFW%_Trٿ?vTFڃ;%{veIQ ;1|`yك?n $%v n-Ϊ\R8H {;P=OO+8"D!Dߑ9M$jwo'qPA!|;KP'H,[0jKEw?;8S;+dgT%㿡kl0+Cſ#sBd q)c9*hD) Cx=\M=MoUz{E|V uy ]?O-i*H!P/6|<=7IB=󳷛(b۪͛sC3Dj tUY=uALۚ#g'ԫ>|1܋{fOP ,Po[q U6HZ:юaZޅ}ќ@J}-O1Vߩ&mΏR P) BHq3lꅇOQUU;u(ur@@t`S4P;)`ah竿2z:QNX6lJa; č]>b ߓ$oo %WJ7'xN`/׮[םh j8TقQ<;gSj E &kwt' pWOUCh=mߪd1i=I^$_I}2V !TBtfph%$L$\$lv_'׍*=RӳaQ|A,3oB1d<?ߙm[_կoӲPvB=3g2nin5CY}ں#m]+L2+"玊,OfSnf_hg<5ǰ֪͛=E bK>N7y4+jX+J"%ӂ@‡>bd]{.' |:x~HZ>C % hb cwBu.ɬ֋"wk9٩|wL~[ ᫪%xNZX.`0 020E?~42]d8둳>tp!d^j%xNj=|!Y? v?%N')d'ۢMN݆tSj]q}Jw7c]P_W-_S^`I~wc WztU2O>3MWY?)F'ؼ`G:xa7"̠#bĝDk>~s~р+_w䋹S_O5vbDx tg S=>25-lkSDtGUue SuNYP/:w ![Z1$}~Wݴ${%xq`}M򇬡8A^2AW1]DL#W=1lSCD:wlfٔ#˳O'` 4q dRJxcaT nr&xP*lӦǏW' ȸ/4μHe]o^.:͡'OJ੻E"V3"oMnKVkS+/="F=0z#ZΖb-d'CI \l ?CnF;WcP,np0LWo'u?="SQ[Èj5} >-_#f  6+ ձYJ7G ދIENDB`pybik-3.0/data/ui/thumbnails/Tower-6x5.png0000644000175000017500000003543313137372532020600 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+:IDATx}wUgI{Ν^(CUޑ; XP`M( 5`J411obxI|M>ܙ[ rιg={g=k};-7-7-----BD_w=]b`+K mu&^ qM}xӜ.DzU N ^ϹO8?խ;|POӍ53E7{fXpj.I'f; pИi%vǀwtyW3~yUա%.2Z+giа $h,sPs;pq;2fCCd )f+n[|>qњ^;Kwq"rؗH.YrCm NI.d\v~Az%i!d0~%]軙F:f'jSGi\@w;.v67~/.1SxǣJ4~ox}xg鵻țMaw;ƿvs7H)b,qa`w8p* ComdRedr8o=}ޡ.;|ڵCT'E=Kvgn3{)r2B2Ne=46QB`K}" bK C@Ӗ%LQYB(S%ß^?PG`i@^U◳HzS8k)^M= "h!||/k3eWx_Ҹ=x :&à;T.1Md9G"G3 G<_B3$1,| Pe_@P($jLC ~B@yQX]CP-b3MwwLzH Ư}*׋YnXJ_2@{C\9C?LǸ ^DFBHFYEe(((zXsN?%7_='d[\H)(.:t왫<ukW@yw. 33v~gSr P+# s8fXB0.fkQD#?sRFx;|| 5#5ym̾4Cx" -Btz㑊d"@&b(sAs#G!b:7i~7εë;x?7?݀۞ܶum,2D%;!L j% t l`0a;t4> /3A?C@)T/)P{9^Rpi^ nړ܁ZG7n+b6dt.y\Ob"Ę2GKg! Gt+ͼ^)f.Ey2%Kۯ ᾰ538^zBl*mn$vDs膗6~O4J7sbx9O?ob2D?GA .Uy-QC}%ϱ˖iMSt-Ho">-mfe2:yxP!GCYH`2N& wg7YMn>5g)*00df+5>}v2~֭ :G=L1J \5NS sAsxQ#g|BhjPN|ٝg1;01psl)_R>>R ?~y7)H!F$ͥc_`gZ`3d}) yrzoh'3b|2U_]S|ºWR5\/bEbu >\wo8|~XfL3oo3G\"0\hT%>vw.\ & ?{C. ߮ &n8!WLBˋ9 d. Mۣ+>;d cf>"0J.1X> {mƇؓG;$KZ0QTT$|Zs<b n⍍EB|sǪ )/iX*ܕ 8iY7ٵ\)\/x8~t@?3Yuyx+Smܢ4soƟ%[H5 +y{·bQ@®9Nj2Ǜu Wu#ET`@QA@(%Pe2Ytt^J})xŶto1je33Np-Xctq[/B M1qP1KgSh:WU*lr\3{qz0Pdof m@d)SZATޡ}%ib ?1S\o>XjG2ۣ6ҰnJP4*l3k z+PȩH Ét# 61p-ZauhT F8'2'v,r:X)yu`M1KSpBe,랑{T|ÌtGا3Ġ^ QC|X4/ЫK6d_rgQ+//iod)Ղ1v2>AqҐX1'5Q.rmIthsDf'_oG7 2zSk} eR tOa p0pREV3;=cATR@OD<Dx$OUmp]3@+^p[KQ>qҠ{MU㯠xMq 3A2 Yw:-ݜU=- IjvnA2 &~e60ԧU6Ҹ6G gp8@A nd1t-L_o]E&B$ Cܿ2LDZ?[ `bmogEg\S( U$:V5%k- ym|x*%uzo6!YՃBr4l`l#q|tu *ٙHMB/+aj"|M9Cqޗ}6y|& AϢ'Jȿks_3~t{_xAL(&ݦRZ"@#o O @?`!"IUz"O%o_q۪&<p8d `tP1{>Z˄12=P.U?h˜ƕ5Mys^M1PС5g`0D+{ sks9wlƟ}MA5EW'5?yJ{eXToψSw! .5ERSDfw!ex,BAn ۡq0<~%4S \D`+ R|Zk}U1=s4}lS1%Dެu8ՙ ؊3X x0GFkW@cܹ^1Ok/ߪYJ SdX)b8Ex)<¦_ck{DH} GEm%Mo(frI*$d…!)wZzlݚM=hCю@sv]p(7:-{#C*&ր.*x2QSfk=WE%~Hz'@@hl kcH]/%W QQ3 J_Yw8;mD-Imzx%Mz QJ#\6> o0yC{dzQXy8dիS)?$^,vs=s]oWf헆_7#ZpꕫbK Ki %PaXFWCvnRGSA|!=@@x8]mRe3>Dl Bx92DBBƐ2 0ޠq3jեdg 6cO&.J\1/JJ?z]t^*$Uc0M0El A>f&Bf}V997 Rg$ MqyM,$ySZBd:9%q7- !~'I?!>\V)Z! L oO~m|< j"pCBɡs)9:ܼ:.pX?r3~DU=)%{a* Z2W8`()J~{g}| Du}_J׳K}\݆RK~dACvrQI"C'pZ@ "8d`3xH'?pmRlѹ64On3>d҂%^u7 ޫyq̓JA^v3)j(GЅMS2oN׷9Jf}ɒ/)|r _Ys'pVNYlP)Ҡ GvcvZ523mƟWUǪ۔AD0ڕh kD d2U%8D>_Jjj(]CBv+mqpGD+S8y޼p E4^ACȬ!3ÕhHJ)#/00JYmŮreW35s6AqpVl,bfƈ@ %O^ASf|$[R>GDkooJP|+T;e47+Ż\UiX5w\w;CL5R.d 1ye/E=T&nZc|%688+5p&QªV{=b)7uߐҚ~1DbѾ* ~kG9.6}8!ݼrݡD<@B%ԣ6p:a|,!}>vLZTyXwz ppHsYf^-c}̓jB@t>dW0g'ѹ28&̲N$ yHͧ2$b]홌xlU 'escTP=s=>;Ns;8ŧ;Kέ@) 8@q)!p_n*byYE!@g`'jX{8#4cZo (V۶~_D) 9s[8+6Oe|4O I wObК. ]"j Z Md`ۛ^o'~920@k}ڰ#zֹ~sf0˦5[3 2}ǞI (KOr#zJ\6υOw]EP} §Q9A*a4g˸o<* -M9zDkJ!< !84l wV:@8j0qQ+s*ЇW<]4<`K#Z\AIl>+Vs\g}.w@"P? e0@.W)^ݘ{'pNBKӃ3i#f;T/Dt Z4UD`1> H~}c̾ X֥;7-ߦ=Dzm%0A ʠ;Lf澤)e\@T3 YRPrx?`x8'pN/sE)>ê# :mVg{?w^&[wl!O ~AQT蒠8/˭ 9)`V \:tT@6D#\)kf~v4&|݅*1mUy(?fdi ̜ƒS@C|{zڱ׺S|;->X 3py~?W  Bt7).00 |开h߼{<oreǻ~Q0N:f&gpLdO$[+)r8{s讔!@kb7Rd01)I_ E>(K{y6&@1~0DwxH";Jİ <_z(<ɺ[dVL`ɐQ Bj=]ڈT>n,1gE!H'#j'%Cd" sd52W et2^Fl"N^{CRB6>RGQG/)~C喡<&MUqbEn1?+u\ ]W>&sQh|S@_KǍ95qhwJIHިB a FQ`PYYɀ3 P.~|}A@܌H\X)vȆP^F.ΥcYc&$?ѺESf! nU^zĴXc2K>K`8F'%B1 r~07m?2ċĒ4D _B)gLCzq4Ki ȍ?v:f+n4ES9h 6pѩz adWT /fT0+5xSJ01Ƈ@7ƅ:b@O7pz! (~G(4}>QNmǚ~_'p^blpwPڮθa5.5t7/< 86KFX ~< ."c)XdS<@<:຺=}W&`}(|_p3MN6~#G|"-.8P IE4UiRIƋ$WlJqTe202;K b(YDɞ$)y$Zvas=nPgbnHEoS\3/*V%#oy0.AXsSXL-D =4vEޝyutfC#.!_,?kzL#S*31]s HQ`Hkv<70|1/ XN:p@4}!%M._WɺGi5zbg;D {WDILP\ttSHszʗ7 T8—T%\*K11sH㳮* rOA@z _Oy1`Q\lrG@K!YDcȘF_`2C`@`M{Ḙ8K^+ ky!( -`Ӛ~GsN|q)ИGVۃYeۥGX.=ͬVwaOK/4,5\,̡Tca @@{W0ϭhN9N+oSFxYֽv~r% MqPRa f1~1spv8| CRHo;m } v5p"[n-'|[CA =*řB'KXȭbzRԺ43$U;/o|z%6b='3{ՋnS5~`?zkW jY7|8Xw[u=L ]P 妐ixKF1,բ @iVAh\6nry|ȻPximׂtrr:j>s0qj!$wd%3FzŹ\lwXGAs[X4ǭL(hK^a~mɔXxy GY9}h򪙫Ӊ@sHД^=z4V>r NSﰤ`<ìBFg 53@TEQ?0|^&V>ΐ@gSѫw몽 Sr0s.n]hB>7nxm0ʢGy9}wxI $_K rrTr`9xJv w71z~V &%WYX." M}~(!mG&[BSV=_- :f2 o_ m'Éh8(kfу4[cZ T=1q_RS %˻cr Kl/k ѣ- N\N3|#(܁sʾ@C—k*u)"r."t^ 1B;8#a yRnƶpZZXh?K?uKkȮWDT,s+!x "S8@7n ǒ2Mt7rZb@TH\3sBI}HJ㱔밪5Sd7E8C%˾P.`㣏~cګfAdme(*"΄{!RnNE߃8[ {S-7J"5Uށ b_顐7ugb, DC`:ˏŲqea~-@)7pP'<&,];`s=5N%CC䛒[ bZ8CAZO8d|^6ntBT OqQX`c( qAƖW n"G"Vgf2{rR0w!PO.¬ھu296lߪ 3Y&?|2>GDoą0T״u;^~/ޱ#T?M.WH=ˌ[y@hfoV]q]0{{.F>pf  y@s}eo AZT@p_=+{bbg:VQD{GoZ&d"ZpAF5^)' '7N=@sUENpZ$hr0t_%gޥX ޫ$=~g(6'pxB|K Xu TV3qv![ . 4(ŌMe`*\M/s'2fTzn/>v4Ռa.;+hq5SZJ^! ,$]*Wu}= r02Vo((J= B+{k8BQn BG`jĈ;6`Wn4HM-Q-V 4l ׁN\ H:lmA=` Mv1i+~UɓS]e[wrnں:.J 6T_y˪cmP&h-!+jqUBf53 6E&#fޯCvG˿O^o5Y}:/ e Voyb}tQj`AHG|5ZC'3(MF| ֑vBxI/mN5 #O@4@^^b5`otR,1ģE ӽr whxUzv0e\U0&x82)҄R6 B;9h pkMZܢґY6^4r$,R5ٞ.-S^awCv%7}bV,QÞ?ھR8.xٟ^_P̯m]VwvElP]֕, ˆ$cdNvgyUPc`S1DaQ!wIGZӇWΎpW/?KZmbQ=K$O/0MպlIA4 w9@ HV4xC;V} 0.׶͞ v#ib x]6>?g 'G1٫\-U%[* \TIO SV$*W  i>4>.4]'cb_, Yx +I'l'0F@X(f@xWE_[7+5hل4&}qge& ;^+>7/rag9?zwU{* _q`³Fk bjQ)ggLH 9'Wl+liL2ǹ̺[iXx;6l4 t [l_Cd7qB|gK1#iOs0NGr0-;ϲJ͡.B$"]UxX"SɝiM%4*`M@S&IMQn!dBOV_R`pO[fPݾ%T5/>p_{U k$=Q߷6XA2.[T3 1w ϛCXl?(%S<US EG;wÉ'vQ5R:^!KB^"@1VCC㛏O!}<< o'}!o8d' ,A,Q*]e]/(J%pfQWkoD$u94.@+y9YҨw0C kY:K&{H^8[࢖|y~}8{(( P.Ij6 %eYc\p8DI-aޱ=Ş.C'^Ij|-0[42ΔF1%6bF99Iˆox1F9==}u%|A{qN{'ܻ{튘 Ps;j~$lmjv;D׏p+@JA7^2/|<Щ[KjUS=B71' OBqek=znPzUk1r=WXvJ)OٳS[IENDB`pybik-3.0/data/ui/thumbnails/Brick-6x2x6.png0000644000175000017500000002346713137372562021014 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+&IDATx}gUU@{nNoebd( 9Q,$ R@RHH*(ڧlCku;=G{)?7tPk+,20WLTS " bc++?h˩}*%K0I$222DIFgAl'$f2.1/2YqGEб^:ly¼ @:^I''w.E'+ |Xcp ?"/p;i((ٴm6r%|D!Y𔳩5cMBq_`"߰6|jJ/U)}G\2_c-2rn[~ߖ!"2C}Bd6fؓ91^$hًm%Z-]֕+mE 3Q4 Vxp.j3N%\Id^-COMUBmGo_/Bp.D? Ty .OiGdk&Y*_ϢPJWt| #JuF: r9*_L[0I7bMEkL>9P[[.WK"0(I Lyi"kJ.F~d59"\D!&ѱ7G*?zBu|8n_-[.LCR)k 21!@d$+<~c&JA&CoL@LVIaXt-|J[AAԞg;Uv߬5]0 la2(& &}, Ac1*3K,LP($yVvs"Amy4\d^ܱc~rW"p_޳"T00H|}d`3h"?N`;qneӍ}Ct D 2m*J`mB!Ff <%v7M\{_틬>޷B7=ȐGar(K?MY L4e5@|>c,~SXJ WdLe*p!6ML :'M|PhPy ]5'ID"YE[6ק4GD)* dN$`1`ޠ36d3PQ uV`0HBP j cn.p 9PJ.dKpWW__j[S'Uf,*Ī"ަk FAY\l?QȀr>VX (ːƳDX+An! 999"<[hT֮{ru+X Tv/nEeU&x0Q#_bdB ILNԴhT,(52/ /g@uzQIr5 9ѥ<դ"qt;o"K4bU'V~aII]f |XɱBN~.' &+Ty:cAo`0QX,-t =DamU/sI9\4] 2A10GHbm mU 9 WЅM)ELۦq+}6&cP$XP@lB;ƹT>r@a"Ε)nsٜIx)ͰE&Ӝ6/?ϓMMDզ=U(ķ"etmmZ pRtNG a)KR0h x:zDM^eNf)qN,kmG3ݐn"zԘذgPD\3 ʔrX*ϱ.W- D[bQ9o&4a C&)"b񩂏 )R S+hV*Ȁ1\SQzyM)o \k=gE!Hf %#ܜ&q6s [D_"rWx_+aZVwUS\`A$¤a)'퓂 ] %8s=OێZxYAG&H2#*E܏jdw2D ȝD:N:z">u950m% nr1^PMx'MNw `4D]7R& BšYc!aZ0#˰h U8NK ë p CINs@^ l=MVWDO: #M)&n 籺7~4W~]Eq\]yTnM}:mS]e`|xPퟎپ۴rY!/ͧaД 8W#aOMqP?P@}u)[ h&G 93hH$&$-/?xſ^$zwzDU~8717$ЪCN_wL Y,4rD ]2 k7\RZ9K8K(A%8B2̃euX .Nba3ײ|{ U5UdW+R6ZM1;.tUyp,E _즓Ձ8 PJV]F̿+WK:v K#x8z&PXٕH2:#^1pqos0]1[r@́՗)syᘄ4q:HB,7_X FOWROOcbH`p=e!($:DxZUDTw?H +󔺇[G[=R`+zŽ{##&Vsri PX-,TEvci*ɏ#iE;?wLxXhV>{։ϷM:݇2Va%,!uoVncR8\,Q!M! LzdK.OOTI 0hj#N݉.LXiT,`)a!k͘x$[c6{ؠB~PjU?jSM)M͸Wx(L2YN(Dx~;%f7 ~Z(Q/lY_E`RlitH`++r4Y=BU6Y@|w L^F}xk0L6vJ9C ǛaMi @w>r @;\FAtct-wJfŗwgEBXz[,&0jDsC?wbEhMdC+s&=z Cm2I&M*Τ,0 A.td`U&.F1{%=D[pS]KmS$;6z Ђo[o-@ C?N"PW_)^wDXLw; }Y,Zm&*i8?Kjn:Vzê;KB SHU6.vӪsҺ\\jH-䞂N-sIz}̨eM=9-Q)x8>vvDՓumZ݊lk ?ߔom8wjcXCVaMoՄ;σÊE_*ǣ?K0iմF"ȒI2Ȁs60D%QSn :ڏ+SRF>,U:\ WD>z8 ((}/h.g8-WS\q*G-O'2t  ֤x#pMV>L7uD]P8/ PCT%D8' 0]I\%$@`$8 #H!g,mn׌0+")*7h?VϝE>MkPQGc;L[Ccʳc:u"%|ncskG/!m7cJaolj=u'.T2n۷T01lp Dp)BdF \eKH {4>*Uoªcҏ:h2G w@y)^(,d+7~|S9,  чm hN>/FE6/ "&8ط9S_S8.C҈ҿ<. -' ۂ w?[cxiB/"!Dz ;1Eg74ci5΢Y #/RbR5;S:5HjL}q:2ąsUܨS|^_|+U1Ԣ/(0#tuN!1؋/dw^x'i&`6iz$k۠*Q|cR=Y{7&]/:2~8Y6M!u@2R^s}?d7?9G@}lSvgV;UyGB0R‹)AV!W&3Y_*l,\EVa-[U+rܰ&I}H$!@zG@䃢#onXF=Kl˷l"TYr3DžK&nWaPcD\(EVdܙ"i"pSfI $FC<%G ,pZB#SDOB <<~ۇ\KFD->nM\ڛ+V64xݕ#<./y_y8$NS[qNIP@A!"l䏣|T  mDac*jwV kF> Ma` .h+M?vUGd:FD*IKz=~_.v 4d4wgW]w8ꝖF.`tV5U(X$+\H$,F1qx4XnoAFfsy& f?! Ϻ:jN+GhWL.;l}tTw *TL4ɾ~d9PϬs G?+NiE!#p4Z(Cza9] "QAX&#o<^=DY &hdS:4GqU< ̑  \,Y,HYC9pQ')oN|4[XXQ¢&_o˖&* AʚjhID$ϱ) Y eu8E y@࿝}pىG:$R K.${5}dޡW3K!}lx"gV˻Rڈ8_}l Vh$(+d#KFc-p]Y=FMr L7' !NcTq>1,i+ʦCiO!XDeȶlwsz_p/y 6%A\@ En ]C#*օ{tP2x#՜Hy61MܫL_oޣ#! `D_|O0DAђo;U.ڒ=Wo|`ܔgb,e̒ie@nI_ !P4RNd \pQTg PU:SSg\׉h:!9&כ3Avؗ$ 6xBa6ޱ.4WƏ=ONC&S2+ bq>TēAYkHND LZl\KGW"a)zH8\}hV;U"GmY|yasd CmFORU0>.7lةc&N@ɡB(S^.LGnuSiXNxDP|qD"Mbx?~QěWG#+־2k8Dt9:~`4؂*P-_n6fjq]@0{b&EB2.ټ~绹*Gd!~#Gw uߞoS=m0Wϫ=TWj4CePٚpUL>FZ`"jpg@: '_q 4ˇZ"ŽVYb L=|xK6rG>u8qb^ 0xIyK\RDžqJnDhI׻U%!,-C@2i)L.m򆼑RS,;S=`#[Բ4˃y}1uU?j[<%euWZǟ3M 1. X4bYH]]̌HQ5D*ZbEEE_EVo ۟6R,ۧ1N1j.~U?oKl~4(WymKmaO#K]6` .)#]5!iҠݛe"\-T 9[ Mѧ*&W=,&0qY#("662J)Q!@@7p<:B>)A{b<Кo}D~f,4=%0]VE?~Q$~ݫx2emEFFRvOؿmХxiD{17o,h5 Z=!.U@[CmmE}-X"5,X"5,X"5,X"5I`MEkXEkXƵ6A^/IENDB`pybik-3.0/data/ui/thumbnails/Tower-4x1.png0000644000175000017500000001651313137372526020573 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+IDATx]gx׹kcv^(H :jc D3`Q?.Ilن8#\0`Ӆ1unۊ&7GܔshZm=-3g=WΙ/=ܳ_5 ,'X"e,`E,Xf2Y"e,`E,Xf2Y"e,`E,Xf2YC;R]SVzbZ!D D} ;M&qؔnoz: 9<9@q⊗!p  WՃ saC,Ye%W|mTcG'U4BȰO @'ge|o{yEX\9`2; |ݘ+m"bbbDZVVDjϤcn$?w}Bl"o$ c559 b}aeKNF;@C}pXN9&PrDɀ$VQ\oyC䯄X!D w#?0@8>?6L"s<2c|2`1)))"--M%byx7dh#LWǃ$nL"x;A>T$E)J[Budz?Ȑ*ɐ(RA ó>@LNپ(Rp<)][UᐚD&[@&vuxM#XSa"))I g@x;?q*6a  K/༛D*, 42L,N6࿊se_ cF: 2Jya1@qb|"d08&3Ϫ [Sy/ꊵdxUmKGEEUytfw 9#̘?>%U!;;[Ivן o\OB{v DoߦpgĨ*<@20X YYY"77W(42<24uACniύP81&"Aj*4E,bpb 3PHxa: pgДHN`#>LQ,c?U$(Ñ^H"s4;1\#9c58ĬK2ء nyyy2\al0bS Y>c1i 03,UתQQ|>畖QbdCfv>6hvf_ |wo 1dX/ɠu}4]~LnTdgˮٙmXWA튬esEIdj;epJR&EAA L,hD=jqV'ߠ7f %$˼U9Y3 AH/U1]˷_3 iLn3>316*C9HBQQ $+ m3zw«|Fm=ކ$˼vb&>GAvrLd`Ȁ$M$fW">xiPO/`Cd Æ …2Aka|l6)?Q,'Rކ̶`Ԡזrk4 4 Cr\l(e@ɹ>IRWH$OT!~\7g(CT I['֨b*V"1;ywbӹ  Zll(!%z:)E?wGBQRR"Ib&8vwKI3F<-*@YVr.|fP ?`@rܢͼ@r&UkBGÞs yMd20_7n<6QjSCPKaS5#{+^4~-Fĺ`$v/0 Lw:|f ||B+"148J?{ #Frk=!XbY|KnS_+"@&I3$|\F%r@>{0:6UW">IlZ5" ܢX9R%ڸVd8k(~I"~%W ,A326!]6!JȂs vE$bP !*:Κ2~ +P LG-!inkqa*!į/9NgLfN9NTa&B )F%#RQJ2KgrF2AV"?Eɰd$[ejg abbK{JTg>P!:XD8rܝlݔ@n:H@>qE*D$' $lxu!h-i&KAݛ $1cDiic9Ƞwr!|GDzDe^+ 3Q^X1 (n$ϙNm_Cvֻc'012#0`-/Hs)=f5aR|$$wx"3^v!Zdڌow)Ygnc20n^d$Af1-1<T#]>gRmh=ܩ. ~r˦ִ.c)b튪,T׿|ڑBfQRO\s?|KH nL5-χ3?JUL)z}@++ͥ"KGsB߿b1+mI"?q(13g@ER:Wk%θE,-#{g0FAX` S!R _/kMS8x-1)~~18Tۣjĸ@a5[#YTіC+Np,O%ar $ǪW*Pn6iuRFcH,qS)6IԲ2 CY&T ٕ1OŞQZZ؁PnH bWW"j:q/ą6kqf-p' =a8({&5ϮCs$l6GB[q.;h)?SJf8;rſDkuly e.= 8LaCYO"T&d$?ىR|QJL.F|N{!]H0(qFf+yiFsk^0)z"nqذ4@wfsķ+=T[uS%e\68J1a|uT{ ?3E#|jaue5I be;{Tra+p 6i%!24ᡵFb^{8"} L26>B嬹qtA|Wg2,89^}g:M4?&"5 /CE0vXYQпSC&dm{gIW~76O/m˸AgcpUv  _8wpFE8^".*7r 4P?FKӼcx d13-U.p$.`RbhَB35uq3D01-A`(2ˮ;<֗)Iq-rm{BӜb|wO}NsR&薲NK 1Yp *_/A)Dpu08Y1L|B=-{-<9Hv<4GQM(* H ,>]yndM^ WUdp"CET%} 83sٝ=//p Jy FJ 7 "LR*%P" w+惘'PîA"__&%4*xY/o|`vSL/A>PTߞ&;opJًQQF2xi:RP͗|iRj0i𙧬 InM|usOŧb`틊Q*lf`^>v0f Ik a3WHX[[˿^:Yx@Co@qu l"o |yT{.'<;Çm{qW]l$fںl#+O99eP{DM{ YީN{G@8v e;/]'❆/z !C>j.UjȷAW$m‰fUUKWu;w z+ovE8&;:*HNhzwJ>yHUz@$HXl,ǺFN0YUby,(tp\D%tg(Y0_/zdy.tv&[Ss 5ԦLOhOZm)tCX F8anԨQr{E|rAaV<ˬצDI?}g,_45V}!\`9~M A(J m@IK9Г`>Ta_pIqbv˒sM$gK%m}} !s6.ldƤ<-eE[ '\a)rb]I \0;w ׺ 2L[F>iYLeWm^9س|#dx8P<1=ZxwmT*bj˙7t:K1]X'TRI \ U*|=A9u;O^ųh/K[P `K hK5nvhFB%X^^.[ϩPy UHC'rPi||*cKbnqb_~{4`h4=]QٖZL8ʻ'vA\c%_|qpļ}X]>bEe3C$ ""tPdu;W(^'us~{$wjSf%s(#!M]yFNd[rmw?6ݯSP-hr?H.H`R~r.K\UK=~M櫓fn'-0> 7r @GGw]<a"RkL^Dx\oi8'zJf"p}]nc[v4VG;UP+j'Ƿ{0.LxUCL֜-*nXxon2ȕ{k $@rBҥ'z5?"@6Z`l>Av űWڢ<*ra(Pg`gU>r~6gFV[2En6buΙNk"@0aye3}rV T|o%E/[ƶF4n=/,r^W/{ $|"/%EHD0 `ظ4@ 'iP{RY"e,`E,Xf"Y"e,`E,Xf2#$IOIENDB`pybik-3.0/data/ui/thumbnails/Tower-8x7.png0000644000175000017500000004230413137372541020577 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+DvIDATx}wTUgVΡs(tӀ$IMjDAGm Q3:=8&љ7Μo}έU]AWݺuu^{}WǏ<py.q|\{! #m[o\%y ۆ7.UZ[ Kjƿ#'T2h|JWk&L&X]Z|s:.K=YmiVl"׿ km֫D)MXlFV0[;X0ut?xAE A E>y.Mab8Q:=tny ķ@ᢾhQoՄfb}2";ٯQ(ևHw$0&Wm\;bz !:LמGiEwXKş/ap}ىkhb}'&c8h[7n<٣t> xf"23Nݜ&{8wyy}IxΡuyiyr{4kLޡf@GX!mdO2f;;h]8|9 u*@4#׋;\\R'SdA*!ז#TPZx=Tܧ C@:@?]v!pew@ZB<5]FAC͊e;\,٣S'onN߁DrpF揁,&Z%* /0f dH&,`I߭_Ez}LY:p (Zs%H,Oh'ӵ7w?j`F,VOAjO`SBfx6 `&d8nx:ST NrZqSB1Tg;"-\@L4q&zO@ K=D(m N[5| C o㏹~8#0sxh }0`wӿ %|4pdϓ^PXdA}Ș0X"<$dP^.e(n̩>2㽌1~,rٲO(^"fהzҴ 1a~{x>`GS t>@vk/'^ +Ydj,ȫDK3qɩfs&ο>p "&Vyar>t.23y2$@A@gS҇0tͭ47ԁߧd`#LBp9k4 ;vےU+8BXw =^ÀwyB/*n;/9ডAMMcGnfn̅*&a0`9ZaR nV)\ NU3Ϟ r Be6Yt]5$Ž#I j9d{M kT#+Rz Oհhxwg.?}DJq䩟$46h@˦K6,dຑ)d }y!%grLvC2فC!S Y@G*jk `> Gx7#KA<TIxG  bw41+<3 ɘ Yc0e,Zɾsߧ+㔩NL`.k!&ϐMnwSy\ CXwL8{,&P T֑7dSep5Mt9KiA\8@MJq|z0J=X)yA,j]6Qq@ ]pIҹvJ!m[O c86ҏBA/z ݃> cA푳u>t;UC1'(wO2 Wq}${k ҷcAc1"P"ϬJR{b֊ p7dԿ@L5 -3d(Iۖ,Φ8dRy4 = .X p5&+OqA ȭ_O^~CSj߼\d(}w:*\qd}3Ы2>y? 4Ag- 7S=|CnM3yu 7ҁ**C]t= =@@t* iۧK[ŢIn_M)5WcSjb9Ũ5E ڮf>@7 UwqHM \e_:suO,QCixV6 -Sw[|劰ԗH$:{w4;9eձ4OZB:|ذ/I/p^>QU5q W5nM*{̲qXl" x -e|bԳ ڻFKt`B`%ME,n.wM3ǻmɮk \E:YI+s\;}PP4{f"33SY_=-ުw}G)4,vjAD>wbN2ЅnΤF[IC@XeA>TdZRű`^U낯;g]`Iv_=HqGUͻE4!"snSB18ބ)ݯ#a7~C#Sž'wҥR7 naՀi'W[d^͢ќ4],zH5p:GIw4#( B4zr~ gTv2<ӽvSN>Y6ĂL/k'J2 7tR^^ԉ1.::I@xwXD0|% nE5#pcKxk,dHΨߟT2D!超0QL3n,WGgY#c_%`!l~몈T]Ĉ3x'k׊^ >"z z&x1dCq9ntMXbhJ4R_8h7EȧM}ⶩ!~]$~+5i$R 0*Pوt̕jm'0 ' B qAGcמ#P+,"5)r x5ȧ/3f vUY)$•3f u(1CjJ`^nfJ8|T>/K#<: VVww8yFA`eY4{ʑ6Œ{p6I ҍ?- y qoWUpGidh02G%G):P^Cp]/c9x\Ժk6B\%Ŝ|oSS+t_+ſ 9#@ز/7Ϫ?#ܲkEg8gpkz2y=@҂&欈L}Z-st&!+hF^ G0m0] 3p[HseՖ`u:vP5%qCZ&^&7qbQk5`i]?k}\yYh;}R :Y_YdOtig%2π.<+ ) U{F\U*ٯD 0Xnv9l2 L2C   pDqv(77*NC#p= n1MZ7Jyz5-a~Ѷg=b -QzO{U? r癅oY8*4&Kd 1~=̰ZƑdoV5>]ֱ2gQ]]Yڍ7 E$Ev E?<&÷Ϥ:P"īq\ +B ZW 4H~XMVq8@fPBfsRKT)c(@%]hyeȡqf`b^9cx U`>8W֨>=#tWޢHyxOנHeD 3#V1=ε+XɍˆYThhI;;qiOǁ?BA33ӽAfIwķ69k&,x"3Zd̬L2 @p%BEI fzE3360ڭG\~An=)gW|kОQ>6ЇU;>Sb,\zGhxC|uF;ŞBҨ&h["{zG{2EB B+zJ  M{{I 0kYh ~I2;@Cn0B2|KryL/ [)>IK7T,<% kEC:$X]z˶Lio.]I0t >";$CV:g45Akⱻa<,%\bLط9]|CDqv'jiߝrTѣY o&VBf-<%ˣ!$lB2T,eQ(BV]Q'@Ptv99߯Ѹp6L !`*]iB0]&vs>1miOƐKx4xĕUѵ!|<~+G SQ.N"??gE|AIsK|=nwƃbCcaWCE&A*T\mJO`r>-cק0~@ Uu iwSŤT^Ֆߥa9]^0C߹>iછb@?$?>!r35W(4MhhUdx@g$#̯ࣙJ#HH,|$]d,T۟4WbW&4:D3i沒GT}M1>O"ok"W^;-@U.7G:DS yN=#ډYSX3~z47k#eg fPa@Yp6Lp 7I(arO<(y]BD@ʹ9vcFRw\dRa.٠E% W~5:VKY$"Gx]2h*9:*4D":'zwAdk6 i"2؍ @'9 JظMP-pq"PLa īАj^#<t?$]7)ֆ 􅆘ci%xڂ_@ׇĿӸ?PG9g4GC<13Uܻ>+'m )t7bʺZݒqg0! ĻCbLJ(gqvkZ8DFQ퉉28f=]J1fPڰiT[fnf.2h}24QW(ye~>tdQa/fsg%DѳƯܱnL .[Fq_\sEMT"y4yA,):1NY @ 2X/V4Y>2" (w?R7 e^ 4קϏP4UՇ8HizI^]22.n܋?;}1YLG)h8';pQhN|8FO1AJ6"}eȝ>f $YD.M p߅3sdvCX昼'#_"q\0b-"C!o=@D'MC‚ ]C+bd][Ť!kJz;ŔaJ'Cwo$7)n8+&ORwNL@2{crX'[$d05@)x(B "7'-<'ͨ& &ME-@'8%`dʍC x7? 'WJ#{ vM[:+:_|4bp,7f۽0k<<3qqb՚iV:r)7Ij8ֻzG\k zP$4ߒ>+4 D&'Kcϖm]&u kWЋ;o|naY؅,?B < Pkxo;8kw(LU7IJ^ +~(<g GR7Ynϭ qv_kj&Q0seAqrA]w8hfm CȹHss$!a=u)\!I)Q !%%T (x-2iϣJ"rQh,)ZR8FSJ.3[9qȦX~eOQ)#i\;2GU;Z`_qMa4E k:aוYE{z E 4X`aqb/e{"#9L6L׷.W53+؊:B"A2HY+p~VJb"Cy즌ZI{Z<,NOgP얻,ʜ 鎀KA&s+@e-+߽.u HNrOe=H~pM|jq9(E!.U7Aj!!D;iᢑqA!g7"Xki\KHS56{4l*҈naoI@͐վ<: ֠zK66Eac]?)Vʘ|HsDz/Ox bM2o>uz."hփ#tgr? ʠo=2pSPE@=DW^=X}pfZ+ݍ%W񽧖) ku[9D.KCfGR`"fӱrG$Q( iĢIqrOxd_8\by#U.ߏ D^R;bʥC*J(e^Dw\v8@ȩ@9;ӑ+X>e-$rqջ ߐ'@tS/g7sfCԿ-n WK{‹A25^҇wt:84MN}S\1I ͙&Ysɸn_$Da,FC?2d+Y+蠳'H/0=kX(JdW k=M}̰GxQ)x%P"ud X=bCw9:Rإ왝f'JMBsJ 4O xhq%aA07V Dx\呼k ̢PjQHiDP>l" GR|a qbYWMKQ~g-|`@_:N&`e505$g=ʢ/)N eDZ>GJ٫yҢ:@DL"`-Ī=>٬ȴs(ӵJH*ti2۰Xy.Bv&PKnȕsIw +|[f0>jeEV&~-5Gޏ0S2,xH8'墑wr3}~@->UEjr$zVL)-ŠJ KD앪3TҳL =-$ߐd2>؎2 mke$aG1$TO-tL)YNa)[ߐ˵b׃AQN36&ogE'W•$߼# ?D[ga聥>qq"ntyy`CQYe7;yV6VbI&hvkpNltI/d̞dV`' "| <r|QqLT䢗A\J9f>T|Z|hB?H 5 >ڛ]@( `AE`Ǔ l8cSbР$5FJ kq@=AlgmaLj͠#H'Ȫgtf EP"mpr^XQH$"@}Y\G|M@p/7@JWTysŋ)i ؤ=`踩HYXԘٕ((T'f#Ff/ ʮ g =7n0aLܳ9d,;uPYGυ776~ji:\UxkG,bC]B[;{Z޷+ts?`O_殠?o>oBq,? mx $bb0(Q@d[,Ϭ "PptO^8'z՝vM&6^Q * ~}Q)R^'@#%27wz^vrC cH h~g+HW0#8(30F|he3z<DnjF7Ҹ}[Eb=qVxU,) ?pmejH}G.h8'6`OC<&d,dA`(!C?D@1KV3eו { Y4J YiRHPnN/7MV/tsBiau^&++K4cxKY3xCG(bCc#J*PynM@S:~4ٕu61&hõp@.2Dk64U틩<.vf(d<N`c`4z\H-f1!b1PS=0郐Ī{CrW ) h#?sK;\0 yA;Z߉;7b@4`qtnrq .{'>J]V.֠'X1:5@ -Xifk&xAŪf.D-60/ Fc +Ӄ®Ks7xOCv^)JXջ<׮pݤ 8P+jgA?ZCyt[[ =@cHo4A3FAw0z.{cM0[M#u;zU=8lG'f.?y&M\;K@C 5z㔅Qw R̛a z!s3h&{]"ƒ4VAW.KzPGfSHyV_lE֪UϬqO;)Cbm^VP9_?]skw:GE8J,,("GR(! lix=70,8^Yzʎb|% L)\>YU(Z(5\=?roxׯ/Wd}=>n, Nq 9Y*1[a!J Gfxk7CJv)6gPKцc;:yVT8m C$C.RS|^a=:<}h`BS='2 ߼oO;{SZ|3zrhiL y9mP71,X mzB(< XBNwI@AYY8d9a1/sLϑ˿J Gs(6vp,۴@g,sY6i.^&hX6hcB *6l1( 8P+39>5GTG*7nDYp|5!9ZX{XTnІ<\ l}xf0:{v]4@T.U"lZNmb_vgEjtg<t|ޖ%4T_ Ղ#3bW ;]li8*J-ܽBB%ܽl&ci#J# k\и!@i_X Z CVwHy z2V.^vrз*!{\+RłYNoPvύ h 0{%%6t)x+T*3[0D&(L>& pF y-!^㏯0pW ~~5gx@w, vk(0Or.A]C8*U<9^ZY"bx^B`k90~aod(6%CDk<*a ?\eJb,3F:XEJXDYrg #6.ژDY]b@ȦpA+W<эBZgL鼠`L7u݀p<!șRe8 8P~k "3PN]0+Â҂e-XF TK^Dtǣ0|Oxz_m_Sqim ٕu{P0.Aڑdaƽ,ni >㛳S}OBh0de-qiYOAixX7˾?{`F ޶u1*y@^f6N 7D&|n C$*+ QLL_- { Kܥ8ү?+:YHd`Lur,x‰GzP ^y}y2.4Ӏ ل[;z[}8\{H",yK%O]bG*\enqΪB5AP|잀3qm 4<Cg.=g),K6̼$]~/. +-IENDB`pybik-3.0/data/ui/thumbnails/Brick-8x3x4.png0000644000175000017500000001674213137372574021016 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+IDATx]iTՙωB{k߫i6AndM١A$-Q\`F .nKF'!5ϓ<3ld=3 t=UNݺ{sn՗/|C_ }4thСC@ :4thСC@ :4thСC@ :4thСC¿>sv>ミm=UİƓwm(t.qDzI?ѩxej`040J0hf;wsO%%u8h@ᕍK0T``6Wxc"zy%s]jrs}e>4?~w~C9foreYTeNqNL0 c H<ގL' gNiU0P`p:T`IGgձ`,f#i9;53t3|J^Vᩒ.?p n:NKX_@y+%su]Iw]-M v7*LF YbVPq墡 5 E*3;` G/cpZ>$'1E0Kx8w;fbaecsO>xN> 7^])ri//_WS 'eiT`cp8%Z7 ǜh2|% 8;8 f2@^u`8onr:'0L%sBܧᕍ0z3޾i @pY ?ĉ@r+gJDA̴>Cj% NM ` v2k=̯ MW?03g= M鯩nܗ N)j̉utvu$ͻ+%(1 >sdV3{\J>|xtJR2٠̀r2Cfscy/—@{TTe(uq:'8$p"qUz/x/v6\0櫜 ] `Njv}́2j2#/$>{sIwc .MhOyQv0lݭ|bfA[Wc 9U-SR3BBx|Iv`/ɿ";\)dDI̐Qe"}u`:| ?.d&_$2Y8{Hb#M=L\I<%]b>\%ha5fuu7@2cG;k;c0nsDi{% H8x, Sqv8?Хp_ K3gR{|\'y/Ƃ^3FB.UIz+)բ 0#iJX3 9;`W`83A|a `S0D:#zA,7y[~vfKA5fp`IJ 8Hz:H>hئ|)8eYdzt|S)fȌlL.xS,JS&ps8f~$Lfӧp*O+n zZNǕ.,6!d&F3?w4IJLHEs/38pa!hb0s1>j7sTé˙ q;{9|N?S5i PFZ0Щ$)Y]  MuL^̰rO!ϺIPs̜A21 @LFQIdWx{x\'6Km%S#Df,C0 ?MJ_ى5n 5pqYd1 OѳO3[wL]tN<<&}jK;Q&(`.<nE텦tg>,/eS@@x7wKlyq[}Zd9ZlQdI\"93z{9f$eh, 1cL JO&\>,tN(ӡG.~U> hUѝ0ԊxY 0VaF8I>-྆5fJdnڀ@?/ !wS9<'r%J yZuŃrL0zLa/xbh8r!c wytAcA@bq-pX|jniI~M '& H!-ާ3$3e[o؛i <\K:``Z CnWD(gJȵ|gAZ"u&yBEV`@+0ی5\.O>|*q$Iiy,KЏ; Aj&vn߮&{qNŞ>bRe(N)cl z_2胺 ppAa r'oE"IũKDž x!iXI{K%YeA{\WyގFaM";^cS@j, ^!?l,bf ʃAǬ/N!Sqٿ1bTmPcLLױȋn0mI(#HPxI*fY"K|XElʐ&ArmBGpzm]{/xj&R(ոǔ?p-0 c~MwN` B_8F.u.]y6ZI  ^sW3Kj<iAD3c>1@|Lt|$p(-;Ǒc:6M'h&OJ@,*v@F0@{gwͩuӧ>*[ԭk H)j?.gwb=KbPT2H~N\r1-izU < Rs|d:| ` 'f Y}|ojA}{PAߊ>ڶ.[SԿ!d7q972ɛ&nL8.4رaEW5~}&:nOd0D$gAܬfd/!t yMRs4*sqHGNԠveQR^YܭdV$S)bE K52iU\(!L-?[*R}ljIWNJ>EE‚·pX)CJm#RF'7d-g i`'+6l̂"lm-t:([y /c7Y!% [0=kvD4-IpP0IdžOr%UE\&'vHj[Z6wsly[?T;EP~f1(n}OcG@w-aUQ0Iuąa*`[y%bEj;X$ZM'w 3;y6*IXB'$R<^C|nRL\fآBԗP p9p Q]w@Yh!Z|C:wX |3%D6n!N+oGOA7`'[#Z%s$9Jy%Mfmj)g%#(`mSƵ1i)q45Σ"ٯ=pР;VDx;zf:C< [NIF"m^ [It( ,izsݢd[i;1tgPyCFڽw4h{>ԟYlӗA!{ v빴d>?O%&M }9[6Dl i X4Q$X)ڠ,2Zbu5E}fhVZ,QrPׇq]Md %[WǼ".+b11.Lϐ$},F[ilvutf׏ t Xl*J -L Z P`uLz BiBs,a;OND,˳xX𹚓 w*1ձ #֍ goP܉vVP1zej3(t@`V]AuOLyG&x oӛEC ~.ʀ8E(RR"p^HrbaXDJ`$#n[}~4_bl6]Ϣû4`b؆F[ ƵT a3+<䪰th3뻽(70Jg3Un >G-4Ѭؒf.J~}0ܢU}tz},ڳCsŔe_^˥k{Խh V5;Ђd2D[ 4XJ/'g1$gjvfm6+PyGwBtCLmidmz3BN #3nW=Bs \9MX͛8%@QiBY{WX>T@bggMuniekr@xoцLYlBI) 잖zvC,Αն`AiDYv6*pPd)H:y[(c0`j a%EZS!UT}VBWxbޭWĔ=v֬ڬz!T>&䷅6ʄ@@vDﰇe)<܉D!gV3;3PWK,Rگiڣqy^&KOR8kXעudE8+laHwX\zAjH9! |Q˸u,)V@ 8n."ON \~ʜo \Dy)"ʊ"/rzX{Tt|/ݹ2 x>n5._YuY-9,wO@VͬQ,w jcIN!^&&)g RΖt[()EDؼ'iN{莕Az~G>~U@Π`5ծ7 I ʞr"EWp\gK\%jӳJ;}En="aAK;9u@`MbF.[Ƿ*? ?6)Vqgё#ԟkޝ+ { VX 4(7sDMvXqS{lS:K`2 h>}m:$@+9Tgrw7C<{>sOŐj:pY0 V*6 LjQiBW~$Shl@K'&EU `_$ӿ_|<:UruP]G}XrzMcY~gSn/$v rm/+WLRwI*h -%lQ)a0[$ulZ9KxAXOy&yTw]( o6laB 1RހKHb@OT^`}"SGPn(~<_%3|kS@aϖzZ`,X /?=B\M`5#{B,%+%v a սhI3^pgr"͝IKt;#m]{ p L:\6_ϧ{6_odfhmp'#qFDk_GPq@.< A YDBlC߹3_=MG+Ps>Zw6ۺ)TBc֮؆V!r~Bx&oATK3 J8>f8tҟ~R$vƸh>wVWv6JV;0&} 2dAbe3=Xd/ a ܚye{Dgz(OcЪ Œ#>I h&0OZ\ _%DSGM |#ٿHa?pfO6]~!CɆJFW~B23$X Gr؂;l.nbKhB=2]zǯ? { FZuߊI,.+'-(1n=m_ʦYw'OhX@r Y+Lb`Kn@MkLms͉BrH4ySm{FO+i_V4;;@rFĠ_(/(KDqPBf@W,Kŝ1룿ً%:XD• iq{9D韏A@ :4thСC@ :4thСC@ :4thСC@GiK!hIENDB`pybik-3.0/data/ui/thumbnails/Brick-9x2x8.png0000644000175000017500000002304613137372605021010 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+%IDATx}y|UUn*;OǛc¤(a" 2JE*DJ-8Fʁ82I ZgY]y5UuWz߷>܋eArX@rι{}[Z{Gα לMpl819pcs819pcs819pcs8WMQO7@ǡyEevLgߏ;`bq#E=o1 g:`9r`f_Pavljitpy~c˼xi֗}us|^(#bgAypX.ouQ v+L%M|k^hh¿z qd{^ٶ)8G3(n^t~vvarfk(wp6xiAzD'f [,Ц|X1;ÔOV1K٧jz5k~דE.Xgk\i GPߦs||e/Q2%2 E>TOMpܱ@zQ_ 6C=kxPXÏ ȤN4즍]y٧,DT8oF5U"KrGp4!5|hmRH>S =gO"jxĠ_\wNoLeVkcn>Gu׎9ڭ.S]%wcSDf5:1l4MQGÆ}c`tQ.d}Svs׍u S^($ >:{!s`jņ!=2ڝ5c[vz8J':Gp0u>3nHO~%MDsB9lR/0B7{1%߶l|"iu I`Zod ud&4UH N.kt>įzu?2/ Tt{6];ڃpʾGV'SշPgáTuvMڀp I,mg_xHedC;1yPw [BLţg(W~CUCMyDU:>GDO'4S[ Bx VˣR[gUPKBЋ 2!٦x+ &Ff!x}4W%J! ӱ0TW <# :!:wi'Z(6.6[S+k`#YO6 hu NlyyNx^ A4'e4ix]:~ܓt>%ktE"W]T@]~>ɔ` LXFFP|T lj!QvD>ieS>r=ۮ̍,YaS#ϖB_o;GG42p&Yߪs4$t~6)"X^0 K7YĺW56\Zݯ`yؖb=~bL8$DW f)K$ǼjǶ|.Y/:7Y2]2dw a:N xGOzd%xFPU&v&`-r$2^ iqSS :؍\<`=1=Tٮu*0}5>Wm`kx pͪ7m7 w!f&1F '-0<-)6Fk ^̐ rI|όƥ) jv0M2o&6spomJкlьN[jj޸dMMu0 xu)E_G)wo}GQɒvj8(pb"4NY(j5ث`e390b#9|[XPwzӦF:q6NtlhƟ[X fTE{J;LWt7& ̐zKΓiJJ^#Xva`6=61Nb (XJz o`c) 5ẦqoD:JIUfg_Fx@ׇ9/myNx&Hk &Nxdbμ̲tzzU]ȶT\u e_kT@ީ!CrZ9CIV yXg(0[ H/Mx4GYv~sVywvp[/ը|٬Zt=|;``#oPVZginYj(BM:ZjHrka"-߈i99[&750`N}ýb.qN@s2i3O-՛6Awv')k<*RHu6i*=Ǎ3TKf:XMCT319s90ԵcxoI:GS3F+t,v>D,a80GvYM3T,[2!~{|Qβ/oF}@hZt6YkKUw6cDò}ܿ PW5J$wZSuOӬՍ62׼R~Y\H& t!\^-~u:_t|e~S\<|gLy9G<>*Ҧ^ovk7nVn?W{;D~=̿֝!ˠTu+盝gJV 0N L72D"q>,Е}5})gX׏GY{ǒJ:E,G~LlV@ŗ{ eCm=:Z9G̃d:ʘی엳߮%DteNhQBe:ϿAFU>6HgR`NE9MQxX58P2G*@} `@E:!"(L~xſC7N h}5^ݼGI5l WlKQʱYpبvnY!]3al0 84n fC%%Tz_ӛdku<%$ ί(n?õ|LJe,*SN!Hty?rYuBuQ{Ue^Cmu 'ߨ,0 dCfqG.6Ydc3 szR jRE3oR4wvaR h=9CLW̫iRc^5)PeD||dҬy@.Ef9r|v4*,ؼ/BT }m c/uC!Ee jW&t`0b9S!,FskB7Pc:yErp>F0"< UqZ?&+~ D=5]-fT9=Vk; >V(f^Gϗѿ솠L?YyVOwv\cıZ'ݪJ\f6RO(K֮$[χ1|<'pgHQe #i! qnBji3ڭr+s1^ Y}X-= &EИB'<#)r/,֤{e 7DɋEU!Ephy% BD8@YϜ ?uw\5cj!}2[F*O٤t?.s|+mČ=)r>K2*wu@5MGj PvxH**ٿ~Ee?&@iߔ#oʄGlZ<-7O<;="9@(wMfͲvOf#Z8 K,o|$6iowe@(顏|fvq.4YXLߧss|,y·5 (L7Yp4@(@'ؕ}BSp<f?DT(ZqF†<@H "2 @3UwojotRH:%nMV Z[\N G _ 'F0Ws$dwxncL2K"o':sٳ"V!ȈR4/n[pو=@ ]b v@/&{8y8Oǿn?x4}ӧ:wf$k~%}ޡf+ 0 {MȇU/@{M,B%(R>$@/x\T05yO7oj@z9[d'"sH(f dJ@ ' T0PnȵH |e >+/V=SGͤ秴Lg"l SLeJDg[uIvX8tdXi䥈:;2f| Sj}O?KH7€ l]á6&ڼŪ`"r[r$cfb H\Н!n決P #Tn4̙ #rF1EFL uqkOF`$ObJOʟHOdvux #kTzm-"T,!$8W̉t\o%="= on d/R `lSdXB~.0A5yǾNt1FP0˲}{ˆ+"HYY$0NXz7\۟ɖxLqYO7BGĿߴ7 ]2dfFK5p;J|"P햹 v)b" #+PVPF2?xv>xauZJ8^̲ȐYģ"i4kIB XU} <تf ya| $/}?jO>Y?B>˺]N\D!cLR/֯M@tN 2ʱopl$AݜG@f )`щ4C q>mTf. PǼeQHeXx u򓆬H';+ݣHދ6b9yz5_h><xRwPY-Y]EtUgjH1UAD=Z(#}(:>"&βDpMCM6—y~={KP)@CEY(%HJHRk^Z [ϯeb*Wz D{Tp(g%Cq CQ99\QruHRz +K^N{ `KV+s!g'.0WfzXۼ1HuIeLy/+ z4E=HyF}2by~?P.jG;i_ڵ cT!~R [ E8N?˾Wj-D lꋆjZɥ E'0I@E#0L#k.04diF =a:r3SBviM^f։gg0"*<NZj4SL}wmEϨ| `s?2?nlR)Twp6ť`(Q=PI@4b9)c@B)veJlBR+T jXg4A۠ v'g)$ٰj\A)/Ȉ/{%{bbX0# |q.>t}(GmȞfnZC*h(@(==SGڠ|j*v CYl`KN$"_3Lz3\ ‘p VL`/~K|=W ߳5K6/$Eh?@E_ر뛩dE=[ɲe ~Q==@wjhEjxΧ7kq>"Qq83±?` ghuD9lݳ4"lZصoC4ޠ;fPT'%en`È# Juo'Ұı@K<>#_S݉"iȲ#wY/? jZ%sx*yn`)0@(K4|'ە2E^VH[ @a+ /TIV T֪~e|7E0嗪5{;fy5H "G (jz3Ց3KX\Xfk"P0uybJ?=P^pDŽl'mې5Mw$|(x#9>\X].5yq0Jp2[ɩ`XΕ=@ď[fĺEa o >5+jZLE%S+W@8Re)8-I] LgpMM2ųO)~[ )OKOe!b张h\0 D_;ChV;U3.!NLj|,Vqh5:]6zXAV"xMXu+c11y# ?..&O'x3=0jִ<lS%DQC(yd 4f{zCSU#m͏gvM ";Z|鑑'}"Pww}s3 U*@/H4O *"rt2GTr^'9/HbJmHNQ.`'x2+=Gʦ8}y! ^ XqD Rnm[|㑵Q }/Ec\`&>`=H"T>DG|"G|?eN(ިD?j( _~GmstƧ۷mȾaH@y@VF#E`7pZ矐' 9&Я[ űFwA[v DBOP an!Od{񜘈fA4V)HV!ʽxv\ї;ј RU1^GLzg\N =3uh(ƬUFWc[tPU_Lqt0m-[|B\kQJ͓2M~:_|;>kodQE݉;@ɸ?&>Z98='4G)1yt8|d1s D"O>\98[qYMQظ|ljgvw Mp819pcs819pcsط]"IENDB`pybik-3.0/data/ui/thumbnails/Brick-8x7x7.png0000644000175000017500000003745713137372601021022 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+>IDATx}wTϟ52u{]) ,Wu(Jl*VTX("H 5Qh7ɦ}Mb}s;3 ,;w}}ϙy|G$4y<<<<<p !DِCjr]$nna ˚ GǏU4jt_ 4^4.\O 1] ?\ 8XDd9Z_톲o*lp]۷?1HLq^,vj[~PT(Z(ͥ0oAWB\Ga! uIxWF귒HV\Y=6c-IVtiu2V2Vsg]cB$.1T/V)ax.X#(T !07HHA6Kz~wJ+Zɘpx,п&uՌ,\0*B4"#MJ^n |@-*7@629~2wW"Էm`6&^V+TBV { /G`$1<16,y{\"DO 9ѕWy!2PRnoSrb=y?J{Px} r#4}i_]VUt+y#!5kGPEyne.dHp~vKta}2 nrO3;/`}+.]_6.j_wO/D6JEkJF:=&Uj!+CVs!@K8BIrofbK?^я } Vj##dd"\+V+0o%lGlcV:J6 h%!Ca/}'yapQ(S$<kU^jg}֌ر*(s&bp97(c+yheHVN}M‡_AOZV$ 0Wr RB/(d!ϰ[TG&l޸r{gR1Ev`}XiAEN ﰆç>/47x8[pnL\5-X v "x5Ml!:Mx!=19LcvV2/2fЕ y2'>V]n8(AYC[4}t0FOg3m=MX>.6-ORi&J`>d U0`;d#4'5^ߋ G?+Ufui Cl&B{&oV"!$K0&>?2*J>"ϛidx?z<3Z]C0 VHȀ0&jʻ/ 9d2@;9EuܦVHh%`}i^O3VPn&O4xC?"}4Y!MiOPqdlqHnk(P v JN?IpFRJM5CMk $Nrro롸15.@pO6U׃H?k!F H`Lv :(y r')Kx*ebE(_R9X8,{Σ295IX&Ƃ%7\cZ02_Xl2VHWU˦k4h{^`yZu^ZŝDƒ 'G|꣌?VXHs dpq=/$chcL(T8Eǀ3DFz[!)K6ţx.\zM+x!ڤBn6d gT*&:ZA 9j!ʔ nCE{ hpJt囹⬆Tύ֘** WG5Y[3H! x !4F%5S3up[8"@ω :E \Ng|xZh!ҜRvz~($"FE7b CT?!Nl[sJOF+ `HޑoC=SAτm xmUc44 hH|cJEV]-hW# o ܅֑Yt#N0V=ž=Wo[!^Z"qlWe\jJA!&TM>EqX^&ƽؽY2 0*}X|axir 1W_[iG ]k'-f~Z5xF:CH1rNA1<*&>* O X%(`Y5[Sa]brd*%X4g&b&0xA1Hvx|T x=D`@=M,H8jݘC ܴһ(nrG`n5pYFBoZL]WLcx'@5OƟ8!8cy95.wUvsBj\xW2kX Ki{PL3Ӷ"%վ;`LRz+0S_?M267B?#8v NjCz`LD'R|Ia[i T`6$y d@n)=}a= V1xH"{^7b-;Bv\ў\:bqK<&@JeHUEw'5+D"2,.!oVFA kOFl_B) 8jAJȱDUIM| *[[3A.K'QZza<qd(U{Rݣ6%l~%y'(b;dM˜@\C ߧ&E D&\OWigEn&tTnīXd(s?MX|gJf GC`4 7TDI&H 3xLX?e*ڌ/6\CTqE@F?C.J :‹Bh#B2GxQī~{mK|O^mjZTTpP $YA*]~ʅJ K. v==!B+{ ֪٬D-AO1]fIYTxl dh/  K*j[wfʮ>M|Lt.1y{;ߥvZѝ6|c$de ?NEްzb7!J|%;RnߐV/6_}#` {0"/`2pQQtIB&TIJbX<) ="@yFXmKGc5|4*^u`eRT1M Fbj<ыU'.\.$s!J0xi*W0x\{4A̪``PTP~7R/Qw;E)=ܕ-՚5M|-:C^| DX=xX1.hvz V|]mf3u5bp4Ut"z~"z60P2O1T+2$^ y"}U*fGc|C Yz#[Gc/Z9Ճ=qo ĻUM)mNĖ89 "4Y.>J*דq|EJƐ{T᧒bn*Ҵu]Ǔ%ѐ ,0HhMb{bHMA&?CU3uQH^.';Xd0@ЊF޵$ !^K>,@Pd::DVIzwM!"}T "J.O;0iO=r^/op4? ^X?R@0/qwAqr#ܤ5z-ʆ@  DrkGk0P&y~vr̿~O\EouaGS '7KyMl158QӅJnJ`E{pA'#VOPa RCb{$cWYazL&YK hxM)wQ~ݏ<,?gRv ;" 76ٞrCtjٺO8GY.Z⷇rYD|ѭcI[¶p*:@}'H [ ߕ x5_Bl9CAV!b3KCD6T-4qoӵuZQx֔ ~ehMׁTqe}>2%=؎zn^Hf _=W7L8/d5}'O7/iR(<=Vf"{3  E&o!p¤z5[4 h)+ɐ(Q Е W#)B$|}58yD(F_hM1=$90tn.ZmY|OC0 7ˮ\u X'b2~݈UYm렁3` `lsk}i>ӛnRYYYbT_',m -bhD O V49ڌ+=ᾜbzXʹ 6(!%;@?:"/d3 ZeDgt1z5@Z$FlEkE\#xۊs*O @oCnK`( J0'WRx p*ܽ,X<,ztD#⧻?^(p)C=?t:[rjr LtJy4a xQCp.l/}Wн 7bdo=m8$C*PQ1Ws?qZ8JYpk(Fڨ{#'0tF!=ÝOˈ;Ď9'/.NXq8C)^ٕTPf}hG5ֲQFP񪎃@:„k E2t;RIVŞN~bAPek ^S;2Jˉ |Ay2@qc5!f,ʼ<7$k8B\sb x.R;hk"!jDa.R@ܿq_Ybߚ%NewPM̫sHm^"cu]@%̱z;|R-(˘^00>$[u 1bzNlpq pA_x/ÜC 0<syY.\SyD` Dx_T,{#x50?|`!b$wdFCAr мdzs<4*W/"7Ip0>d^?2TץiuߠXep-N$R\#PJ3pjx TO<'?(_{]H)9ӏ5b]v_j1J u ž!yre@*]`C'V[kT`\]epqeY7LK)t|#8_,cEIUEfq:~P 7kH^i||N4s*b5sŘ+ED^ao 3OVɕO g fV\NoO?ș!,5rB"$H!ܣz}g 7A\a ~/*El 1\3~lFDm^ o>rIROH:zOO\<>O+:(d_6qK:yX,ÀJx+Ε9_K-=?ٓ#_r?)d0 DJAMSu_!ʆ:>nUnsZÿQ7[2GF-+Ń7п k?-|=VA@_@ySS*4*ϲD-[QT͆$ލTTu^B0a$c_Ŗx$'T TGOG%w pcw(}!Uz9yKEOƆ[Q<ɭGWw +`gi|2>2I`M+\TS?ƙCCL t;s5Y d\*]h-ޘ=Bb!@~l3tϒC;U $rpd$=61u7?+ag Gnq庙Ay}T22TS+4 2+S6DJ`\KP U2Sa4oq+ȭlaC }RvL3[{n@2$A=?E#:7)Td0[%b D 7.DFyE%TnDG yܱ>ގl.zytGȞwjeOcO`xxç*$f TpdŐV@ AukV`oG6kCq`LMr] ┧%222m'ZN!Pws-Br7ErW>!<7ewy8*A{iP6$B1vh~Y9*BC`umeC'4&f2 U4( F­:|LH10= nW(3a$$$ O;]dF49?ڹmU42"f7rAC|V![;|(;dyx@ܚvVplH6V-Wz7nx`uyn B tA+Ť4@(3 rwY}L~|Pq@GUy?rsX>,=%򬠭d4(˧89'>ڛ<~jeS@$JN `@y2(!(50 O<ĆZ7#l,NZH,Q'2(a3T /"P8F >8t17(,W"}z+ 1wW|I!?($ {"^""2z3{Yl4NF1LpyM$F+0ZO`2d0|^z"'wgQ#B~E1gngfdàtU:MGi| 0DF7/3r1[|q(W:}bA?n4N8R@`&O9G{XLѐ6 Oh4Fc,Kd*~~xi0#qҽ~XYd @zܽOO1=3xL?Kx8QY+G\Ds@@vFu)KgܐX1Sv`C'V⫟Y?];688-/tpר淈׺&KL qR͟ 9_ hs#Sofy~Dҩϛf2%8 Erd 6x(`)E͔XM]Nq7*q;ŧ{eE2';ea K&)9{Io}6 j1g Y DA0-/!R HnC*NZJHp \\p@@R qr@ȉb Yµ?>u9crFYy@|_x&fXs\4yc;y~{)ˎC)> 262i0@@Mq)~C,љ<ĦuOut_TQm Z6`/ ]"@kX7P/nM$ꗍm\68@b>utbN!K쵒Йb[ngcH Qy[3M!Ln0Z8 Y(>DF( t'n ~~eS`xj 'CD@uo<%ۤB1"i ,A)J Y&q|Bq ͙qк+Sk܇fs>s OO.S>5r:eSjg4h 2Ajp8rbPs$%0 nʥQr3o$K(@F/ G}nKC铍(I7=C!i= T{x4e1Ns=[L" `l $ř7(<2) ʵ3jmC g!+C)$ًa"S ^+`B݋&x\4ɈW&ciQGZ` C@m]06|hE*oEn]:y@%<9-\@tTM.50W`l#^L%>FOE,2+Dͦ+I񘝤F gs}t^$_q>}|xl*5!;GG;ib_$ x9gܶ52vߴCk]3FƉ$h+zŜXxvr1-vRX lWo<a<}`H 7 D W.> l#r*u~sŏ}%a>(gDGZ 2X,m>EO7MRSdȍs]8lGYdOGb^ h EѡK,˷8BA02qܦf \ &oVpnH=Ed y;6R%>+W`gd ]!)I4 (wF(\N[=mT$II@ r0RA6f.~NB_82^e$.lkiȽURR @A(17-!2TsiZlwNB6 _ an; @&%}/E9[a[peCdF P>CT?e >4⍟䎙aVi ́Gu!J{yHW6kaI#<\rPDqcݛt hܹb[6Dꄭ޸߉-8Wx-[5-9O09+DeEdac%c7]37>A*{:h}!d&Ӿw\sZXXQm:`xv:C.PbPTSE(zrexpQd=#R4"ϟ)+:m",Yv7u2D3dGhnR@^6/zu2 e/6qlOgYAn7 I۽\-z}H=ֿcSg6*f@^WS|y V(!#) u(f_d0FK% Y92 [ ~xEg-|X~Ton gCU^G'QEΏmY7sHrqPO8z DUs'V*:lOÕxY#$r-V'@rI:#dռk (gTRg3:{Rgyl4Q\!)O<%7d1{Ϗt@w~5d" "Xs_t`PrQ72BRej 05 fI P㳇" upH\ITrΒЊ>ʢMؑ?m =úC =<"K0cfP ?Y?\y͙vMkZuzE5ۻˌŊţ1eaܜ"K@.7ah v Y>V/&INJ)~V2!7)uPg%jQz[f'nP@~]/;q,8>ZSr0"΂oRXM+Zr3,ԓׅgG&-Gr#fJWyy;w#Gȴ64 fGf$x*˒_. rSoTqHLN n鼷u}2g2QزV@4\{5gMNcUHC3a'tV/ cQ=a=|8/& xb5hnN!oPz {x#8 )}M߉X:|6N9Z dphsx{erg xAU5+U [$ /]E\.S"PiP ):ovalP`wޱI<}80O3e9=`|t }V]Y@@Vv Ud+ x+]AfU DI[=>WYPHZV*X(4S?O{ *q+FX͡<~};{ `XsV` ^ڴ"v]*hƣJH."Z=֪ݕB b2k$]wQeT9lC ʖ21X۽ |H|f@ x,lVo%qdxnm}lo { V 1>0 .$Emcȍ NfzAI̠<&$eڹ=4~Dd28u^!ap?s>񃴋C qrзu$y| L-DW-ڋ}-if7UY`k$+,~1K"^!uJ~E@o}T^}os 3+A8'٣IG{A3\ D}#@ ,a6EXfwQҲن֥3^`gȎn)F/Kʦߖ?'` 8,62Pˌ;e랄ʖv@ꔲ,eRRe (c4>ϯ[=w@"O]c--q\lHKʲςPb!@ 5H+tݥe @! :v=+6X<R{{5h$Oo%݅Epǐ/@j*C"vκ')gp<{PـV}9K'Εy=o`Beՠ^>tP~-wOI 6RyV(ʭqjO"ZNC'T ~k-][Xý7 zTbvn9(uԕMɹ ,+$\agҺFI_$W@d ?+>W; '̍P/ƏׄwpoA8;$;]G^_};q KjE@yvEu< l: F- C8,;M׫E 8trm=mZ7sId?򩡭ܔ1QŐyJi=yOng'$_Rx.otUq8 'u>xks7 Ox(ɻTS*2 _wf Pwz˺ւC;Y 'lٴ"j_Kqfd^nQ\{>flYz?< $8뗿"IENDB`pybik-3.0/data/ui/thumbnails/Brick-10x4x5.png0000644000175000017500000002073613137372625021064 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+!IDATx]i幾?ѨtUwuW0l@d}AdQ@ED1&q%qAADM #ABI&7!&Y99Irsw930`3ݵQ>.Uow>p듻  X X X X X X X X X X X X XR*5,0'0|:R#/[`40y<迫cf#iuWxf01d"UZ}7V0C-¼ 8h<6bew}z)r^ F( tRF@ߟ6 o ] hXR{gb5iC_d_ `"@nw!l>vfz9h/W>t6XˍaD, W 732 ۬h9 =0<0{H׃"V߅?ݻ0,0 Kf؈3h0Xl6_GgIcMf7 gؾndGUmUi xB5BFۂ,aFbR+bJ' f8lXB8nȼpGm1D'5LM & Ÿ=- ڈkY-d_? 2kwU0 d@uMdCU"޺ a 〈^sd;@P!C`φgowZ ^D`؀`!ND-1gI!~ {++NϷdy#0^|pHηM p{ y6&D#*fo^'Xaa>a(R˓woj>pFQl4YPy)^fve0jm0,{Ƴ_N;xgb,8k`MElw8+| p>_";<Ù2VzƒWq3+aY4ASmX+6= jFC A] #L,/`?p1:cz kS dS`?y(7s ,EjgW g1ex ف OhsG|vg8 O =f5@0`G Ѝ>i&t sYգh玍H-GM^ >*`Ѡ Q /3? "b%@DĘ? wxE'ǀǹ0f7 $ts =gLE5=FAOaM@Cf3j\k1 105}n #(1 5Ә#X q=ٴt9-l<9 00LbFoBP>A0ConVPQrPSO(({ 41?೾)Pxe_U٤7{1<\nj,)_0nfn7_j?Y6ZѨ G _p a뫾Bc(|%'zMۍ5(Tn 7 X)LZP("Bg&  io?ePg-8* $of54%k.b/a(:f2^Utv $&l5Yh4MHkb мt֏2U_>Q')v>iM0cTӞ22B%1`jJ?ik݅``oḤJݡܤ~f!&0p d`"x@b("V 0CY\v+ l_ Cx^zis.>kq:ߔFX!7O|t fZϨ$:(@@`4 L1*}nEo+ŧh7/GGUK}4UtAEs, 8|0: Bnvn1'H[ze⊏SUڑr _ 4j4 yL޷C9CR4"Lx* E 5쐰k9lf4v$ƤЧOh`! ۼ8rh$]IͷUڰ0"[+ m:$7JxEhѧ C,Cfv颵v#(V ݈*2YƐdz " =gU(tn^=t7bi`\{q_0䕁r9y0c1UCN)f:?cmyǥ79K,v+/kji@r&U*0jVd*~+k^zqmo!e:1 \G= c0LqWMM,R!{oO*:S wJ+ WHoF:x5<ܤnQPKCD o9 T|baL ?j=>o"(2!W3g/h ,,ay&V70SC2p+c Hϫ"B}& Xtu.} 3İTa*x|)c4SUF'PmlFCj ~PGh)A $ hK57 V D̲LD@/\a\KFœF#%d<{L.!Eb>#=v '2/p\ b`OaHcD+~2urO!M5H@;l6@qڀ, p} %Xlx8![+sm~8jQX&&\k)@DjP C9=Dڿ"dwėP 0$2 tOWp>X4UFM͋ }e^ [nmQ6ǺR [*nY-@@G>BGb}8Joo X)x^RGWx,cF ·2#3p;v'1qia_&x7v'>]`7(PC_PM!7ݜTꗵyz5>}#S?? -1Jz`:@E: [ IP􅋴x$  !^+N'>ŒsƫG_xFdνԛ vaT7lS",.v38@;8s7Vz>Q;jgsz"uݒ%[{L$]o_j W*f0Zਈ>ҵQ G^~5FaU:*J n $J $/HPLZv@Rpj2~/aȵ1 t(yOڴ[mK-3ڵ)tkX??GȚ@]H ?>YQ1q2Ev{ɬv/S lIYƣ`zp`[3nU"(L 8H" VaB&rmnS>\5j0GmbFpܸk4S@Q_Ͻ>1`݉=#Q5x! fýE(UC-kJМDօ`vNB[cSKLgeh?\SYKIB!8,6x.7 |SA/֠Rjh[ 5l@XMʑj׵CFյTj`],¯7up0i[&RXԾ!`33d92&"ݷH;/((u@ǟs9T%h K&er@u"2|KRhT)7fa54@DmyNyl@t@'fYZ{M*K2/oGSH AnXe@.+]9[l(XlYXӸ(q szzͱ6qQ̽zժקlgPe rV4367NJ1Iͮ,t.?BMż631$XYTEl }5 ]&]a  ̀KqK'%Ώ9k&D+@VĖϥ%;DVݘ6` )BLlHm=';}bCc9swAghw^Stxs㞷pdٗᅬP0:Vw$D$\ D*, e%X9,A !bbXj`kE~V#=CۊK+SϠzjth vks9GE 3fjա|Z` %KG̏yzu;KA?h n 0#yů!O/)!V&F*^217*c]}kOǡN-S3Dk ՆE#{2"U*@ X5}7oЌs#c 2e T,7$NsMʸ@OŐR6'Рº]݈|Mڳ yXX0!2Qg'jٛ )UP/ҜDޱdm]'PvYSPQ [ŹCV(>xUL2 I 0ðswi` *al@H5-0]dA+QtR~jV85z#rս~XF F\18nXX=tO=5HBɂd++g7$E:^m@z`s{VFn_ SDL.4&w J]fR":' @M娇LGg o:V0jHD}}SZ'j@O7KĊOߕYnwbN ~ *WJ: Dg#J>je+YE7 Fth +*,dqvݍ8Ppաe~ m) 3<ػccOsMV)* F]YK` _?D#p# ("$S^]ed; zhMBfbjƨv)~L|Cջ/i?~=ˆsv}["8]h#j]1LT\ C߹4Tpmg=a!pp{w-VN=Z\㪱CܽZWjw60%[ @`sIR=M^M:*8}aiZ(5,/wN*O֛9`op"^xnI㣒~FWVw,57pgo:%+p pr{29\ PbIgz|dmnX{T͋4~!ܸeqQL2MlSd=Nj =[BjEjխ#[?/Vur@aNP`L9aݰe%^n$R기4tcWNUgAL~_+:|3,WK+ v2;rz> \I]W11x$k,XAO+miQZ&~;&_U=]g|b4h7fҭLϲ_V!hzmo9$(wD@^Ek+q,%zFW!"p0!~{B-`ggㅑ?$Z֦VX/CsR&u2n$ȓJo2u'/f=}ct="#}sk2q Di\ZBy˓Ro^m|A|L\:}WzX53}:ZK|!YGX XI+V8aSϋwG@UeVX{zv/@+@+@+@+@+@+@+@+@+@&V`V`V`}) =. IENDB`pybik-3.0/data/ui/thumbnails/Prism3-6x2.png0000644000175000017500000002151713137372655020656 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+#IDATx]wtSQ!ٖd{$$ "]z"UTDP ("&Z'(RQ1VTP~޼l稐2s=;;3;>wmƽ1T\1  1`AC b0 ! 1`AC b0 ! 1`AC b0 ! 1`AC b0 !D*%%Hˋ*=r`YjD Y2W,ψɟңZr^ƍ3 HAO< mgck:` 0K?~<泥+VvX丹Looo gU"kzPP&N>0B\Am3p,-hdX6^o7yppL&:g&M)UꁜKI{m_p] U6Z2f]>? Ua0>OI_'3Mb6>w-DFdY#n&v-,9ܵ;oBJJަc9eJr"&Zgd1vH)mvLj˅$ A:\& p(77s͚51s瞫j&D}]7C1-2_wS p~H _{$P$bi ߃{$|y߬[&{;{d} @^n*l26lNMoٜSwTƍ7h_=j?XEN Z#F6f/iK`^M¹ ͍@Bs<(c$.A eyA<W˻P{ =J81?H8\p%)^>Wf*A1+JLLX2 k*6!oq4yiW=d n7܉f=@s[6OӧQPPRxx8EEEᠪU -'P_JZ(A|4ʣ]{eyg!xee-7n*ҫP^k>_l0; UJ9ڬm>>^i@>#s\Ir- m$t򞦏ӥCO$w)%@ .?o޷LX1[!Rټ#%:$'#L8 5"")66UF6V+ Y4Oud fz bi ubj%U:)~ \òɆe?>Ieobuׂw3G =%0CG X_;]=pSSo @f͚"=p/zhi=Bck}bhqAʯcX5{Qkk>v+ ~!':zFS)ԃmJ2vg{т@@$)|\-;EĹὴguқ?ka|en?f9M;y^ki\AV<4l[paNxm@GJk^5`#ޟyCN!U9Ο@;80bXeuR_LNq1ԇ ֥Z dMV+!A â"4"H~aq|ȦE J%:ws_E.]ڵkӏ?(z 3OF^qZGZrB{̀WL=d(IT`w~q_}\bCt$~xMy.C~8:T`-PYYYxQ۷ow, ":Dz L{޸p$rkyԟ^P˥@Ұ `R 6I 8Nh+<ҟ|l&qֵW 뷯,̙9sZoׯӨQă=HOxFoƝɞjGtqǍ0k?? w4AЭn})K>BjOCLV=za .';(KW X* phA͛7I&Q˖-… &o())eXD_BR{I{cs,1J PqY#A.}|Ia-#VGrwDyj4:Hw1iz!BE4 o 裏׹sg:v5ܹs,ђ] d>tVsrڦ ^߾ eKJWg7K2[A7'z  7`Mgc$pvK[6'.' OӰ~NׄSd7Mf/ h7oԩSEݸq z!,F )*f.kda† =deC{ՌFϯ,i6[mVjl1QS W[ "pEx 3@^Xٓ11 7\<$tKx2hA(GI^]PP &~2dvy_gleYU -x-b݇ ɾ} J]#gJu^Z 44W=5jPdLb(e#5dRdzAD^̚|{<'< XD鱤H=bB![ћ(k~}3::"_dcj$8uOF&Ҕ~3ޞLs6mDO<b?mK<r"gҢ!2xX{|$@p1}|_Ke~ i4>lEJ੨0!c☚UOO3gj@OLCfzQnnPyΝ;v(Ȑ.@JnWgdxD)@2pU^6V!4QY.,#P6L_o'\T5Kk~u 5}<@c?0o:t(uЁkjҤ *Ǝ+*'KjpfX++ya47ܮ];Ć Q׮] ԆAf{!½IՊ v?ٴYM0:"D]I.!]2Y=\Y9!2J[+Z!$9~vWlXhP3}4Kt0F=/M@t[:6@)]DH")P-̻%ݧǽ7=L]}spŅ(!G!w &#|s ?5kt J`DQ-&3h.0vr#P9Gހ]Wi6DuLy*O~4}TxQo~M۷F "!eܶm[-=p'uǀ){:rhU/ NUĊfk)$:RjLkT:0zr8` ·ҭ/fcpR BucmZ*#s ӧ`#r1 `;z(^x饗Gn>l]D< Y76^}LF!RcH Qx |Ozi|H]-)$6KK#'Na DgϞ=bߩS:=U% 0m]D`57Ise',>|2Dls^Fm\CyS8ͽ*:cQ8lF¥j}1G;̘1 5 7?D0:4䶻 -f7WWJn$`yLF15lRר1 S^{Gfwin 97 kF]Nј/u D~K/aÆѵkרQF"cO? =D_Sy5^ w˳ZXJL꿇'GvFi5%o M}@ha W|X 50, 2WحC"i+7' θ>AV) /EI]~=q_ě)~$r7E-~"wA/~*_V-Q9իC~N'O Xc7<# `OvD J54Qn F^ƿDS5 >ZpX ըj.uR,Di;wzB#͛g*۾}DaF~MG+TA" |/"!!TNu}mj&GE + LO`0 YtXJv5irR_#<-(4F;D:4 d7V@̙3..$eۼiAqCNDYzX3Ԏ>jg6:QrV(@}b 60P61Ĥ^ 1VOk T#.DZJ>->r-3tʕpO8Ac ؏-;;[u=溱Ͻ{&ژq=ZB}%½4,s#W4jڵ lР{W>c/"I09k /硠8 43{ ALΎ7miZ=V]vGѻS4\X%s_+`<42,2]v @%+0k,m Y$! |Hfm@6{xߔZȗ>wFrN+K;DVr.6!* L*.Cu1K|? >fUV@ٗƒMt =I GICozyeϫ lڬY>¿jV@%իMa+`҉IT?aϑՁ\5֛0o8)qaM3E<'|e ŋ\D+Wc>r" 5LJUM#{ѤŹK2o]@@FObedcEl!wϟw! ܧ-kb/|!߬a[\B(/Cyl.| _/z;WFy2{'\YCjSA"W7+AxjgT೚_c筏(\ϣWY!D ,IaA!B(EXkl-=Ĺ8ŋ=}(#QrO "'@b,YBe˖in⇞ ua(YDw!E pH4)CQ {ssTpi۶m"}&f*d-Jë)*BmX٭Kpk̲!7+K M6iaq4`2tXMc 5x*joۆP6U4B<-}F*<D9#+y,U||R1zҪW@AA\AW `Ҹ13K-AC b0 ! 1`AC b0%wXdѼ+IENDB`pybik-3.0/data/ui/thumbnails/Prism5-1x1.png0000644000175000017500000001366013137372664020652 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+bIDATxyxTgEА==3 YHH5$-%H})w׺$ (Էb6jz'9fr̝;wf$&39s_W/?~b{-mom(DX(0:.0_UT43Z@LLJSQ`e`e/PFQQ fe!kn1mBM*)tl Q8xuu-1̰!TϝIcaWL3 @/3t jz VtӝLQC5i!u LhS*&0f3,LL IMQu~̷Wl0l`{i7S C pw3ma߳E5Ho؁wU4,mmwCr r괏J ;YTb1CU-|cTo?i~67]'B:SADÓmWo߭],DwuE%%m}Ғ6|5,oD%SGͯ[ւ/wo~/a`DW* OoT f4㓒. `~|GZT1]gK%J13oSy8M|yAhk=kE*Xi6@?@qRF̈{ iUyI*лp]$`e-@_?6oB4+=j~)EXєTWU7!b~3Ű&YEs*p|+@Tc*p|Ŋ[UD%ŵ:vͿ/7AS%edNctfЁ~S,&~i}o!%P0rTf֠q8>_.曙t0_BKfRCA_ϗr j@Xns![]b{#.c7d=~L35%pBpp0AAAA=@á` RAJk{}d2(<l`nl!hz-~Y'O A:ЗL? VVT3xstJu^i":6vOQ&tvp{` +w$ 0CXr-ύjGh 0}С9;~g/&"#)d]&{6Mֹ3vذe˶E +n'XDCx*a7XK+c6ڧ1DGNṹ?#|Pj-Aԑi|~JQ&;[՘ I!c7HfRۈtu B5|ۈɚUlJFRGHHx 6K_td __X{.՗2kV0yD1m`Y#hb  SpP0DDC8i0`+AG86?giwPqn=9û\,\jK*͛x8B>V^;! ӚA 5u,ħ(t" 삂*,,R.tz.'}%CLPZukdP Ah2a>=/"${:x0  vLGh o3nsrrEEEx6GS*r2B7O'[:%CVDjUVp'$hŒ䭷Rtzb} $£ۖ90PwӑjddMP`Ӳ"#b.bPUU*ZBq}#0}1$A6:@hgƹ"ͬ+ 5ڥ-->|nȑ##r<^a޶w[ӂh-6ڿrxQ#`>@%c᳧u3 @b[`? !WS{:.6ګX sAdB(Gۆ^RR…x T5#D'lݩ+ٺ#b|!7ɞ:E @~Tۭ,zeG &A7^ '"ģ EG6|pnѣ#~Fwr0C4fdCO} I iwB!sZ"@^B\E 2c pa1a6ڇȄxi@.5j; ;ѻK:e̞|7RUjb_lS]Z ŊͷB1M>m>E?-A.zo`#}-Sd߈.hאa#ü\Qםi͂(T͖7 C/謩]!w+ Q(1ֲB1n} { t&x1cPYY#ў*EhRi3}htj7W|bO'* ^{ X!T8C(KVEx񥥥r>=`jEЏ8mrPCP5h'( t-<2'ڭ0JтaE\4xD r &ФIaEnLa=zku\bPc>Z aNv,Ssv&HtSuo=В t-(:-M>hGqp@[nfcQQg 6_/tzkẇ:.hc$aX>}切Q@ߧ'k(">N>@G 6˩GEjy&~ɘ0{CuxUN: ÇhX<ٶ&H 'dm1]^a+ѩЩM .;ro ,4eN,= )&:'>d>U-Z@@+8ow<^NR LZRD]JũЪ"kIК7 @P;5Bx3jFYG7{l,`9VAJ:%||IqεN7.ZR h<NvH5f>_ih +.'O7 tBv'lvA󡏏^y`~_w;< V1Gt-I^&i&7:x-$͗E>/*LxEvS E||hi be*<*@ o{CkGiS`א`T ]Ud0ЬpMq \*6l\ ƅ T۽L7y+O9!H:@ऐ|  'ÙsL_@VJm( R^|s  ?jgP:DBUY*{W|S-%`.KŖ ƪpY+p{{C^:@!Xa@[kF1Z-^ {ތ!ȟ3 ||fR;: Z9F`TP YdjOO_X)ӬZ #CP(-`'F~' X-^nQuϚ}r*Ms Xh[(z@%#.ݾ+xxcѧ@+g0b*YL\=󡻚b4b]o QE[@R1`)(mX %3Le *ٳzT`hv/0-`nfJpMcQş.|oZ@ @))/VT+~f`OOiZ2\QMf=:f||3ɪ7ҶEWT$.mɵ%pөՃŢ _` 2i=wwO {T0.jJX&9|{x٧Y&4Jdp?v-u?;,yYٛ2-D6[ɘ͗\T` `R2[:o>Е;b C|7ll)=' }< #\_` _J+$6x$j=Af&lA{XvDM~J&mh4#FOs7_ەH%n1ޣhP[_kҼ={v`>$&t@z*9*6tJZuUG+ܑ@Fxx U jaɫόWY @5c:45gO ; бS P Xf~\> h|N~@50HA\ZZ&Z·`7[i@lg~OaFѣf]f%!5&k$ 4gfv&\p> ۘi4?&x r=el @5#|FZvS DZo }KE-SAqX^<3ާ.:4ǢGas#5?XNf7I'rf|] eb> 4T~߽]`i[;> m4͢Xo?fG9}>4DNygkwy[5` /^a:`^d/[eE'1TNn&c|@dd8`em$=5ӃB.k%qIENDB`pybik-3.0/data/ui/thumbnails/Brick-10x1x3.png0000644000175000017500000000765613137372617021066 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+`IDATx\ig LKӳ2,: (`@daUd,/H0A0 "62NRF'XaJszi'Tf?N ^7}λ^M|B>|"@ "@ "@ "@ "@ "@ "@ "@ "@ "@ "$ `~}jL@r!eWNoKّ9,R (&1/3Cfr\1rG.Y؄{ʅ@L6ad3u RY\Ea̋Ot3G!:g@iǾcY&[M ,_\`PbР?$A" /[.6/nk,G<!A"D/4AHۤ VvMb9 1~DDTȇw`?ܒTDN@%t:c"vm >W 8ɪީݔ BX;SHr1b<1 ّcN4W.ib2dW77vxn.:Cy] DAI0SbȄsĨR(öVsq)Ř#IR B)](+~nnL[lgAvj0߳ H< 1f6Ztp|N cCbC l2?wX*#ܫhA/rkr2 & r2Ȅ+őa#HspF~;`l<7bFQ%K._yOyﱕ1rh6 $/wnCtҖ8"c:VwA"[EqA-$:l^LU  uYC, if#'GEx/#(8Cc"MX7B _b1`ʰ]?4N@lS>)!C[5{jB_9"1ooѽvA^yALL>7. )>>={ox>7K73'mk[j}e=wG};VsVLlUC7z]~/Z{ep E0cJuzɡr"|Mf9)?T*ԿӖ!ET#*jU"DsIAQWlF7 Bf:d4Jft3!BpGE:OszqT@$oZ $ck z b ^NU8ܘqo0ZG(Tk"EQnP83|l^!O!$摍t8~{@*nra]KUsBlH~<ٸ*b3zh⹼̶PuQ0Xn^cD2l/C \dzGb.x%N_4"jop4.Ǧ]a\j<" Us=8L2K-͍ \2ZcT%SVƋ2p/ϫʺQ–[|SeWU { I>Yx>鼻 &.{wX$H[hin̜p]0:X :BAKRlY :ipx8v!"/j{>~a7c#:>E6QI1$z ;YzՃS^0@"n55:1 icl1b`"ߏ3~aտCI 6֯W5<; @$<O{R=D8sd/L EVxE?|O|XE_#ii[`o(; rRq Ə 93a˒je!!χޫHc%%789p Zgs&7"@-d FB`dP%%y73} 99PG' 6܈ØU]2ipIא{ɔnJ )[( 8QaertH12~^drXfϤ^o,L_W?a \yO>#j͛%1+[}-kn̨ FW0,qtme&g(*bCxSu|XE½*D[kp6~\>2f~c4_{ǡ9E;isjY0TLWPSm_O7u8a~><Ő@Ra$ɩ]Ytvo6=`on soaյ. K`&E48;v:Qi0jAx4d:j8 4q1HS15?N˗V'bz`)`w# ԐD0`zT,=fq TWkX$E D&bs+PqP/A%ކ1ȧZ~/ApM1 dҥWW® c|oAU@2Vkkم]Լ l߾,}]DǤFzP-芁} b APﯗ+Bv}jw& l\UD=޳EQPkKCӋBΗ_ك(5镍!:gX[OºEc k'nNK+üh\xeCO'!H@ "@ "@ "@ "@ "@ "@ "@ "@ "@ 7:IENDB`pybik-3.0/data/ui/thumbnails/Tower-2x5.png0000644000175000017500000001341313137372524020567 0ustar barccbarcc00000000000000PNG  IHDR>a pHYs+IDATxytuϧz;ݝE D%F1d Og9谌Q6 *Dp7>s1z\^t4}ީl{UA aaaaaaaaaaaaaaacG!D?@ݗ}tpr>ziʳ)Tt#-:?՞G{o `Vِ7tж-[֠ϙ?EyO^^*"k0T[gl\t;&zيjOL|'#ϞAvbXT[1T|MBEw=J=: [+_P;)> =/I:~/Qby 4rhm[(?eSv& * ]xj5Ӯ{PQɯD9YóL BQ3ZT֑E{Pzb@w>°*#yG'~5>_'O5( z¯'Ol丳KL'}(D+j`` p@1=*g~m+)v rd1_Ib;Bƚ YX={z/DB5FdtSY ֌ L~XG1\,E)O(--eIX׳$N%:OһXho+LBv$1g @UUyA]I$Re2d8g|TЅE?SDwǛu= iJE~~>AlDЖ$Q ok'*˂:i||Or ŏm=NJ` PAef0 __G>-z~ z͔k,Z_M󳆇~eD^b2Ȩ %8&7V ollA-YG=lAC °S Q0Vh}}+<٩ȓlĄ-oxag/MOoitm  V>F! l9v ͞E(3PDE3?/~A@be~fp lCuy 1-@eC]_?SPKAÖ*mϼYG:@؇9db"rHeEo><4?^J0'/z7NjO8n@| zxyrєTAj3Y?QMNn'b8-2ڔdDt aa° :]%}unNEx}7V@*{&F9 T2h@4k{X@PԉƄd7Ժ&,?T.,wjFuu&p8̌}.K0aB'.d-tȁJ0kbhsc0H@PRH9O0,B(`(WPP`~~8,>y.Wh! mbωn ,ڇ(svG ʭ^àz4ΟjY/Me.v[E0f~_npOA.4sL Fl*5lrP(>N`-e~p΀+-<:ԒxpYI _W6UP= -6d1O(I`WZeâv,2Vu wGk7Uɺ|`hs lPR7'%EЅ6eΜH)12y P`RgPImPS:b/++mИQ6  +Ke EuX/_Jz39 G h/=nm @+<ծ*,e0aN$J7,2s40Xr~U:YŎ4=8YЕ9E ;@%P]&MCxMCr 36^Nxdиԙi16aX}ccF%QXf6&/uJ|ΊNПpO\78DKW2p.] ٶ0_?(^)($²"9oU%(i6@9`f?`/Ė{XE,xp/IOGj'2rC#i)Y P2:O} L "b[L2R8O04A}wEw~: z?i |I{麀m SP`HBXr4J5@S@HUJe%}=f+L@K^.d}pW~`5Kp`)dRB`L*eVP%bx,D c5IW/y?!pJ8sBx@@ Tpadz^I c  &Y⍭}kz>`?u t\Jԑ`@FdTF]|g;OYt6:v g;&: QE]8~2tfмǛ{C8h~1X~v À xz% u$~o̦i(oPe_F`/+iۓ10y# b(c-WJ`v?xx  }562A@ $ ]ƗEϤ };\X"S+/]:y9t5LF%69@bӿE:"S`]J7>&.Z&e:C@=:z_ʊ(E8]Uh$Or@.lQ_}I;sRYws" swMvP`w#[YkXmݷmf@.BNl(󏇈:^-FdfUXE,kg8N1LLn\xG=Q `P 6gт͞e7,֎Q2;Ք8R˗„Ʌ$k^) HOaM5? pSoaj K!(%Cz"ap  J|%*bQkAkk.ޯv”1Dep=nr|v^rۖIKKOYǯ ڭlTr2.3ÿIWV9CPz7NB@} 8|-4b!"$yz^ -`R~^aX Š4H! d( ιY@@7/+`(DdX-ʸ`jfZa0" @~@ ?h(Ա']:l00!9V+'X^_B|A0)mJ($xWg>ryFm]Jqv& b@ w@ KlD2x5<&&$mzAn(`]ojh-$^Rh<@bW)kɾ d2'!¢okINk2DXO`/V/yXI, 2b쪣8'j֣0 VXu.M# R*՝B&3:t݀Q&~ v 9kEL0w-z|n1} =+|. n_N+Z4jyfb9k!X/5I =!Ė?~8a>v=lH7.Z'@Ć51`⿽'! ka K!Ѭ >D/@FhJ0tL;&Udb7з|ǃ,1G 2c2 29l-V]b["c'ɧtYυaD 0m*t)df檳`.,n?s`99Ffca %%%(/u|9O>PUbSmz9!R`y_]/oZCM }[ eH{$C {8cm ^`e3z,=nIJ:a*yظq߰Q> d?X*RH"j.< ?-wEbwvP%0"꜍h#(c@mfK'7w >!fǺ&tG+f@` Nv=M|v bheU:x` uէO-}v{RQ L @K$ an %VJiL6wǿU@t ]lwUPHNt7=FQj;@#-IE4x'8Z6bLЍ>x6 _tøVXZoQa pHYs+-IDATx}wTE'Pq "9($0 Q]3(0 C^3װu]uu_>t6S =ԩ/Wut$4- tK H4- tK H4- tK H4- ڄIݺlr-+iDWe7p)]Ի/85gckb2])-!Hp7<SJ~Xqu} I GA׌[j(94l9`;=ukH>hlej\L2DMigGf7}2m,SQ~ԶQgxu54: ^(lb~x~x'mQlϥ:Ih*{j(إv8- {} jIyDaՋU| N<<Hb4i g1jIb`"LZv&vb' 2Y#E ԛߡQvskǓřE[H&"??B;t#0Wf M"tV@p{Ew\ZYw4 3;JaRB46I]qD` D. #:W߹sgQEJn<9WQwTL%bA^nb{ ԧhO$P E0pXo} L}6$E) W~<^o#@t#igQCϯ|{VkT5FɃ4᷑0r/G 2222oEDѾj@_qwx[D:<u1Dxx?~Ҫ.$gӄ?D&#,M$$%n~xFEqr! |gۺ=SMnnZ黕Fߝ>DB]ÎsDM Vb.%tS_Ih#vQŚPȧ-h&DQO񾙄/cd2z\-ne0yX}Sh{zd ._BёZPK*{_04 XGHW:5],E.6O0+M|UY4D*GfNNCܜ SqJv58WX]hb@LPIa$&1(D`+N4d{'/#@zz(=2"؝15 jpN;^8{P+ȹŪGw}<.\dj 9pi2"m';Uzr"B$JcSY Shh#[JQsf6d2OB14V0&B@1b5 0x<QI{!pA{WGZߒiPd20 2 E OZ 4 n-62WL+ٲh%;[i5Va&h ⯃!KA D~~EgOQ`7(s+4*1m牜nьPA>}M0SdTq5$:@zTs-wvXZ=%J^iX2x0  ;/}s] Nf{Cd3@OgbA kF8Q HF=xPUoJ6;Wv ?BfՙOU'@U?lb*BϢ༡?h[;y3 DT{TD3˲20+;-9TTV +O)mǚQPƹECjݪ:'S  Z3mPj)2 . 0fQch?P‡Bq{  g04TM:dO,ŝYx߭:%[L ~n~g ʣ<$t3w M}gt`C!BSϪv: %|T=@ves)^FZ4QE>f&sUDA!(0'~Of2 P` >C1 oZI>oSZ_=C %"V&8hLW6[j QT?18+t;E^e;L>aBv@t]E3Ǻ>)?X F4')|}iZm.? Z~jד IicC]d&N%=_ujZQʕ4}(JKKE_t$E@_fog[ 7[[3p8  @Waf@C<^L} CMAPF1 B^^l\+9K LYǛt/Ltr"f3t"Mf&>x5W/K_>@br6a_{+11I{Y};˲z:442Ʒq6ң/gy?{;UD3Br4v w5۹)=tZ!|ZjKclN'kտJ+ oȜ3{ 7 TVdk >*u;ibY":$pda5~ 6LS-oFU=aThWPP 2\.q>Vd706,Çu+Տ_,YsB/!g B8n$Td% z/1W K~2$N$~G^EPs(C`[4l@_}mViX7~u0?Bl9a@>{LƠ.TۃGv@Fb"&3hr!|UIxG5Rc/y9Cs jEj,Ȝ<|cEcZM {gq>E%%%RM2sY+3ҥPoo^QGQ|B 7djzMyϗ靅TTk}y{42ز#'8aCD;&}AYFVaƄmVAMydOqlh(iV5 ~ٓ4b|Z= yγ-{p%&oG]dGhd_17R=~1Hj /dZ);6sg6{zEE D]΅MŸM‡NUa}0 yi\F5MZzKs+!?Ģ5,7d4:m]pΧ/>WYU-Vp1!c56ZN0|E !, Om_z `2lzrzw` UNjY7 g{EqUr}~v.gBvN~4z!;"d>{3V*&:jFp"`8w& |qI, )A1~pKwr{.b{0͟5sׯ-X`6d۶%`%`cu͡ͰIAr 'H#EjtIX=mg`:kxCbPClIlAѵkW-4kxڸ]tg ϗi3'gߓ"!cBεPRIj!!G<<"2Iߵq`JŁk0B})u4K,@#`#ѓ4xDB!B9}ߕB|qqw!H|ͽ+ f4ne3bz+W4A4P{"Q|\&rp#@as[&Zc%in,/s $W$ՌL8@=є{U̶q _vqע@ o. \M4B4D"GWst K<|l^tY- ץC9\8OqcJxzS 6'45&w%fav$Oqq1g a}W;~D}.pm3cT)nëf.7Ksm1 (@1:SBB+T1uT1(/i Yå۹6z0RP{t83ٮ473")=N]tlo^lˑ<᷒hh][^ -Hɤһ|/ }* mʇ0H 6&O Q`ȤG|AsM6rX rB:#C!L$4b5F&-ײGpߐ<. -ڥ,j$4; s˘Gfa&ŒJL:Ĵeb|晄:ְؑ!#{xKΌ26j't5G0+0sYtA!B0,FZVI|fX.&"d@e`,"Za.] {|0App$99A;wHCmP/&tO Pso#D01>1;F#M|*ɞCrD>`Xzr3kj <h W 4?Z$F%Z1T=$+ LsZ>yRd.&#DK}qN$Ak2/TiKN4'sv1i9C|re o},f'q i<5J2IP14P,DS`!!*@$X:'n9a|ǐPlmKZ2Sݛ1Wܠ|I/~G!!!b>|J>>/E%M~!i}Dr-}3M ҏH:N(M}#/6i[\^)og_)'bP)R>j.fub葜|pzSD q ',Gp@?3qLN*lP S@bg\k8lVo]5d8pPH9fX꾤S=⟟jZyfTvzCp& 4tխمB> ߪV'QdX  ʰ7= Ч)qv剀47paFKȸ .LYe'(x 0Q ݝQC VpR!E,wArS 1!;uV}Dduэb˪L*CW*xwKNVu^98ǹ?ۆ׵%% .S8j?^U2e^ZL \=tvSq> DL~"LnOqiTHcTK hsZ["xD>=oSpxhw'~.qS.rH^ zˣ),5 '{)Y{돗iw8ƫZ%diY8@ tq2ptUeZ㸀+X8RgDP]D:aZSM9jD,X6n,)1 7<^@cOFSYRY=#rfC]!f(Ŕ.0iM$7gWtLmh& ՀT\R+\ | "[:_ QlkL.A> @xm!j Ik d׽F[66W wIHnkwX{ڂ>1gGy?,"mK;CbX_gz(ʳ&pf.W$B9[$9$яB6&l-.uᬠqoLj } X8/рGT0UH;t&@ 4FN)ᣁ[vzu~rl|APL?rq?Ti?-)pgh)F@V0}~wd,Q5O?嵻; ;$0dC.f2hA.Eu-b$q~ZϑD`(!inݺ}n%n>6xܾ( wI`_捬n <.CY D@&L0S, ١spAӌbS;b@ <F>TXyP[$GC`+'juUNy8"agI,Çxh_'m̭.Txr$\S[mKs #gCvoкz9DEzSl~4S|"qpі3^IF гdB{I#̵BT` !% j!{ ƀ ;[Ժ불ABnᣏ t9pߒ)9@BX5}HDܹI!+F&0jWɘޯ~q~_Z:"G7&z/kIi΀U1l3~{ Oo# V OK!䷉ep {U`uzAdȷhOø;Ϩ8WZ aB"6st Ur3e'1Lj&D0zYd"^UcǽLa䓿Cr7P&7_t)rQq 00źs?b'uG^qt bB ")53 $i䏖|X+XH \bx YdOv6uõ^ߖɻ/bAN@G$0Wߞy;|vLq 5'`N M,7J9 $Cơt40&@f27*z?-OR 0vwl"g;1E[%n &~8.?Dw/sŐ=*0G-@!uu͡ #Hr'! ua^,M ynI+`G0Qo&&:ɨCT_Gj<b0ĶzR9}F c#ys~.m<32SFcΖ^3Sic-]^C&59LZ4O|< `DO0 T'}SC=)UV>,mhMj sT}v #uF3}R+LQZ!S˦~]|!([sɜ<IկbsGw->JBGK1TFu͒aYv޻PjC[p|'hLx~; ;vx!>İ4 [p2)zDό&Z(>d yz\g{PZfeCjT@d\ {0þMUh\|"s2CB(^}gN-_Ih 9~s #iUDR 0ਰ&h*cX,C@)XM;xOI'x#v_ CN7 +1GvJ+ܹ&<:`RP.iD!C`%r@vP*$Zߟ2t[Rd8ZDvd b($1}lRҿ{v>ߕd&]?qbh͟:kc'K) lhUIǐ5BL]bkYD=`gUlg[| @hi`dý[ |}/f.ݮtO2bYPU7DB)8-nm'ˆ>3ƒ>.cfk0^8n\6f #glE.}mldhf*#Ř\Ǟ={;OuXsI!֨kv:oW\94߈ΫT+'w,m1%HYIK2.7,p`G`7= DHi"ϗp_FL4P=' vc\JC>voDϩxkX_][kU%`8+&KOyu"o(e!: )6T dBX-CZ.t'a~Ƈ5'3Wy"xw=O^ UTIxRؚ^o>`ܟgh~yy6y6A2 Lt ? hKݻw s[SɗyJ מY)}"\K  q HU garpev&3B3uKQFZa8i" Bf3#>羸ԨSxF ?av3$&IEQ;Cvml?ɩ}) 6ۇMW?*y/}pts5 C &<~`DnC`j |!H$Z5fLb-nOBhrOSgO)3ցfG#<%NsiN$D!%v6eʹ P p9e`_{nq0>_#a)|\*wESqy.c= r T&֓#1oPR0E_Owo8ժCl=.5H,dtelC4fFB((Op`Έd=A¿='> /gn:[ ##ęD.c>j#Hqb,=Ob22a%|WewP9seG &aT #G5FGZߐdQ7 SҾSZ9J`ƕ>62;QfŎ#l|èHv'TaK;H% -q ށ~|"qYo'GJ+~#a>[pNkk F6@C8!,Fb#+1*reG զ*8wAqa]u.𳓗QII~B?Hq"u{~qpwG6@" O8| :i s` 7uV@zdHw#Edqֿ44ytq =KĕCBQ >1 #@AdN1NCii.~? we [s@0rTy6mKmz(ܤ#tQ0@Ƽ6pAjiQhWuhwQ99e|Doω'n3g'l]['O=`Ԇޔ/񮼘\7=q9hgxGM @upl_5w\9N@3e9"~>Щ%zH # # 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 . import sys, os sys.path.insert(0, '.') import re from pathlib import Path from textwrap import fill, wrap from pybiklib import config try: _ except NameError: import builtins builtins.__dict__['_'] = lambda s: s footnote_first_idx = 1 def underline(title, underline_char='='): return '{}\n{}'.format(title, underline_char*len(title)) def clean_links(text): global footnote_first_idx footnote_cur_idx = 0 footnotes = [] def add_footnote(match): nonlocal footnote_cur_idx if match.group(2) != '|': return match.group(0) elif match.group(1) != '': footnote = match.group(1) if footnote in footnotes: footnote_cur_idx = footnotes.index(footnote) + footnote_first_idx else: footnote_cur_idx = len(footnotes) + footnote_first_idx footnotes.append(footnote) return '' else: return ' [{}]'.format(footnote_cur_idx) text = re.sub(r'<(.*?)(\|?)>', add_footnote, text) footnotes = ['[{}] <{}>'.format(i+footnote_first_idx, footnote) for i, footnote in enumerate(footnotes)] footnote_first_idx += len(footnotes) return text, footnotes def wrap_text(text): for line in text.splitlines(): if not line: yield '' elif len(line) <= 78: yield ' '+line if line.startswith(('* ', ' ')) else line elif line.startswith(('* ', ' ')): if ': ' in line: line1, line2 = line.split(': ', 1) assert len(line1) <= 78 yield ' '+line1+':' yield from wrap(line2, width=78, initial_indent=' ', subsequent_indent=' ') else: yield from wrap(line, width=78, initial_indent=' ', subsequent_indent=' ') else: yield from wrap(line, width=78) def lp_link(text): from subprocess import check_output fileid = check_output(('bzr', 'file-id', text), universal_newlines=True).strip() filename = os.path.basename(text) return '{}/head:/{}/{}'.format(config.REPOSITORY_DOWNLOAD, fileid, filename) def xmlmarkup(lines): text = '' islist = False for line in lines: if line.startswith('* '): line = line[2:] assert line.strip() == line if islist: text += '' else: text += '\n

' if line: text += '\n

'+line+'

' islist = False if islist: text += '' text += '\n ' text += '\n ' return text def parse_NEWS(): class S: version, sep1, list1, listN, textN = range(5) nstate = S.version with open('NEWS', 'rt', encoding='utf-8') as f: text = f.read() news = [] # news[i] : release i # news[i][0] : version of release i # news[i][1] : date of release i # news[i][2] : list of changes in release i # news[i][2][j] : change j in release i # news[i][2][j][0] : text of change j in release i # news[i][2][j][1] : sublist of change j in release i # news[i][2][j][1][k] : subitem k of change j in release i for line in text.splitlines(): if nstate == S.version: assert line == line.strip() match = re.match(r'^(\w*) ([0-9.]*) \((\d\d\d\d-\d\d-\d\d|unreleased)\):$', line, flags=re.ASCII) name, version, date = match.groups() assert name == config.APPNAME if len(news) == 0: assert version == config.VERSION_SHORT assert date == config.RELEASE_DATE else: assert date != 'unreleased' news.append((version, date, [])) nstate = S.sep1 elif nstate == S.sep1: assert line == '', line nstate = S.list1 elif nstate == S.list1: assert len(news[-1][2]) == 0 if line.startswith(' * '): line = line[4:] assert line == line.strip() news[-1][2].append((line, [])) nstate = S.listN else: assert line.startswith(' ') line = line[2:] assert line == line.strip() news[-1][2].append((line, [])) nstate = S.textN elif nstate == S.listN: assert len(news[-1][2]) > 0 if line.startswith(' * '): line = line[4:] assert line == line.strip() news[-1][2].append((line, [])) nstate = S.listN elif line.startswith(' - '): line = line[6:] assert line == line.strip() news[-1][2][-1][1].append(line) nstate = S.listN elif line.startswith(' '): line = line.lstrip() assert line == line.strip() assert line and line[0] not in list(' *-') assert len(news[-1][2][-1][1]) == 0 news[-1][2][-1] = (news[-1][2][-1][0] + ' ' + line, []) nstate = S.listN else: assert line == '', line nstate = S.version elif nstate == S.textN: assert len(news[-1][2]) == 1 assert len(news[-1][2][0][1]) == 0 if line.startswith(' '): line = line[2:] assert line == line.strip() assert line and line[0] not in list(' *-') news[-1][2][0] = (news[-1][2][0][0] + ' ' + line, []) nstate = S.listN elif line.startswith(' - '): line = line[6:] assert line == line.strip() news[-1][2][-1][1].append(line) nstate = S.listN else: assert line == '', line nstate = S.version assert all(len(n[2]) for n in news) return news def xmlrelease(news): text = '' for version, date, changes in news: text += '\n '.format(version, date) text += '\n ' one = len(changes) == 1 if not one: text += '\n
    ' for line, sublist in changes: text += '\n '+('

    ' if one else '

  • ')+line if sublist: text += '\n
      ' for line in sublist: text += '\n
    • '+line+'
    • ' text += '\n
    ' text += '\n ' text += '

    ' if one else '
  • ' if not one: text += '\n
' text += '\n
' text += '\n
' return text class TemplateStr (str): __slots__ = () linefmt = None delimiters = None footnotes = [] mark = '' indent = None replacevals = None @classmethod def reset(cls): cls.linefmt = None cls.delimiters = None cls.footnotes.clear() cls.mark = '' def __format__(self, fmt): if fmt == 'line': text = self fmt = self.linefmt self.__class__.linefmt = None elif self == '#': self.__class__.linefmt = fmt return '' elif self == '##': self.__class__.linefmt = 'skip' return '' elif self == '#delimiters': delims = fmt.split() if delims: if len(delims) != 2: raise IndexError('wrong count of delimiters: '+fmt) self.__class__.delimiters = re.escape(delims[0]) + r'(.*?)' + re.escape(delims[1]), r'{\1}' else: self.__class__.delimiters = None return '' elif self == '#footnotes': if not self.footnotes: return '' text = '\n' + '\n'.join(self.footnotes) + '\n' self.__class__.footnotes.clear() elif self == '#mark': self.__class__.mark = fmt return '' elif self == '#indent': self.__class__.indent = fmt return '' elif self == '#replace': self.__class__.replacevals = fmt.split(None, 1) return '' elif self == '#data': text, fmt = fmt.split(None, 1) elif self == '#news': #FIXME: should fail here, if NEWS not in depends text = parse_NEWS() text = xmlrelease(text) else: text = getattr(config, self) if callable(text): text = text() if not fmt: return text for s in fmt.split('.'): if s == 'wrap': text = '\n'.join(wrap_text(text)) elif s == 'deb_text': text = '\n '.join(l or '.' for l in text.splitlines()) elif s == 'links': text, footnotes = clean_links(text) self.__class__.footnotes += footnotes elif s == 'join': if isinstance(text, (tuple, list)): text = '\n'.join(text) else: text = text.replace('\n\n', ' ').replace('\n', ' ') elif s == 'indent': indent = self.indent or ' ' text = '\n'.join((l and indent+l) for l in text.split('\n')) elif s == 'replace': rsrc, rdst = self.replacevals text = text.replace(rsrc, rdst) elif s == 'skip': text = '' elif s == 'xmlmarkup': text = xmlmarkup(text) elif s == 'lp-link': text = lp_link(text) else: raise ValueError('unknown format: ' + fmt) return text class TemplateKeyDict (dict): __slots__ = () def __getitem__(self, key): if key and key[0] in ["'", '"']: import ast return TemplateStr(ast.literal_eval(key)) return TemplateStr(key) def get_template_filename(templatename): if templatename == os.path.basename(templatename): templatename = os.path.join(config.appdata_dir, 'templates', templatename) templatename += '.in' return templatename def create_doc(templatename, filename=None, *, skip=None): global footnote_first_idx footnote_first_idx = 1 if not filename: filename = templatename templatename = get_template_filename(templatename) with open(templatename, 'rt', encoding='utf-8') as f: template = f.readlines() text = '' prev_linelen = None skipstate = 0 TemplateStr.reset() for lineno, line in enumerate(template): line = line.rstrip() if skip == line: skipstate = 1 continue elif skipstate == 3: skipstate = 0 elif skipstate: skipstate = 1 if line else skipstate+1 continue if prev_linelen is not None and 3 <= len(line) == line.count(line[0]): line = line[0] * prev_linelen else: if TemplateStr.delimiters is not None: line = line.replace('{','{{').replace('}','}}') pattern, replace = TemplateStr.delimiters line = re.sub(pattern, replace, line) try: line = line.format_map(TemplateKeyDict()) line = format(TemplateStr(line), 'line') except Exception as e: print('{}:{}: {}'.format(templatename, lineno+1, e)) print(' ', line, end='') raise prev_linelen = len(line) if skip == TemplateStr.mark: continue text += line + '\n' with open(filename, 'wt', encoding='utf-8') as f: f.write(text) def main(): skip = None args = sys.argv[1:] if not args: print('usage: {} [--skip=PARAGRAPH] template[=filename]'.format(os.path.basename(sys.argv[0]))) sys.exit(1) for arg in args: if arg.startswith('--skip='): skip = arg.split('=', 1)[1] elif not arg.startswith('--'): fileinfo = arg.split('=', 1) create_doc(*fileinfo, skip=skip) else: print('Unknown Option:', arg) sys.exit(1) if __name__ == '__main__': try: _ except NameError: __builtins__._ = lambda text: text main() pybik-3.0/buildlib/pxmakros.py0000664000175000017500000002247413152054506016660 0ustar barccbarcc00000000000000# -*- coding: utf-8 -*- # Copyright © 2016-2017 B. Clausius # # 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 . import re pyxtypes = {'str': 'const QString &', 'bool': 'cbool'} cpptypes = {'str': 'const QString &', 'object': 'PyObject *'} pyxrtypes = {'str': 'QString', 'bool': 'cbool'} cpprtypes = {'str': 'QString', 'object': 'PyObject *'} cpptype = lambda t: cpptypes.get(t, t) def bremove(l, value): try: l.remove(value) except ValueError: return False else: return True def parse_cppclass(line): match = re.match(r'^class (\w+)\s*(\((.*?)\))?:$', line, re.ASCII) base = match.group(3) if match.group(2) else None return match.group(1), base def parse_mods(mods): mods = mods.split() m_mods = mods.pop(0) p_mods = [] c_mods = [] for mod in mods: if mod in ('with', 'gil', 'nogil'): p_mods.append(mod) else: p_mods.append(mod) c_mods.append(mod) f_mod, *m_mods = m_mods p_mods = ' ' + ' '.join(p_mods) if p_mods else '' c_mods = ' ' + ' '.join(c_mods) if c_mods else '' return f_mod, m_mods, p_mods, c_mods def parse_pfunc(line): import inspect def mkpyfunc(line): exec(line.rsplit(':', 1)[0]+': pass') l = locals() del l['line'] assert len(l) == 1, l return list(l.values())[0] f = mkpyfunc(line) s = inspect.signature(f) returntype = 'void' if s.return_annotation == inspect._empty else s.return_annotation def parameters(s): for i, p in enumerate(s.parameters.values()): if i == 0 and p.name in ('self', 'this') and p.annotation == inspect._empty: continue yield ('' if p.annotation == inspect._empty else p.annotation), p.name return returntype, f.__name__, list(parameters(s)) class PxMakros: def PXDFILE(self, indent, line, lineno, *args): if line: pxdline = self.pxd_indent + indent + line.rstrip(':') + ' #line {}\n'.format(lineno) self.pxdf.write(pxdline) if self.makrolineno == 0: return True def HFILE(self, indent, line, lineno, *args): if line.strip(): pxhline = indent + line + ' //line {}\n'.format(lineno) else: pxhline = '\n' self.pxhf.write(pxhline) return True def CFILE(self, indent, line, lineno, *args): if line.strip(): line = indent + line + ' //line {}\n'.format(lineno) else: line = '\n' self.pxcf.write(line) return True def CPPCLASS(self, indent, line, lineno, *args, P=True, D=False, Q=False): if not line: return name, base = parse_cppclass(line) if base: self.HFILE(indent, 'class {} : public {}'.format(name, base), lineno) if P: self.PYXFILE('cdef cppclass {} ({}):'.format(name, base)) else: self.HFILE(indent, 'class {}'.format(name), lineno) if P: self.PYXFILE('cdef cppclass {}:'.format(name)) if D: self.PXDFILE(indent, 'cdef cppclass {}:#'.format(name), lineno) self.HFILE(indent, '{', lineno) if Q: self.HFILE(indent, ' Q_OBJECT', lineno) self.HFILE(indent, '', lineno) self.HFILE(indent, 'public:', lineno) self.namespace = name return True def C_CPPCLASS(self, indent, line, lineno, *args): return self.CPPCLASS(indent, line, lineno, *args, P=False) def QC_CPPCLASS(self, indent, line, lineno, *args): return self.CPPCLASS(indent, line, lineno, *args, P=False, Q=True) def QD_CPPCLASS(self, indent, line, lineno, *args): return self.CPPCLASS(indent, line, lineno, *args, D=True, Q=True) def CPPCLASS_END(self, indent, line, lineno, *args): self.namespace = None self.HFILE(indent, '};', lineno) self.HFILE(indent, '', lineno) return True def FUNC(self, indent, line, lineno, *args): def norm_type(t, types): t = t if type(t) is str else types.get(t.__name__, t.__name__) if t and t[-1].isalnum(): t += ' ' return t def norm_types(args, types): def gett(i, t): if type(t) is not int: return t assert t == 1 return gett(i+t, args[i+t][0]) for i, (t, n) in enumerate(args): yield norm_type(gett(i, t), types), n argstr = lambda args: ', '.join((t+n) for t,n in args) if self.makrolineno == 0: self.makrodata = parse_mods(line) else: f_mod, m_mods, p_mods, c_mods = self.makrodata returntype, name, args = parse_pfunc(line) preturntype = norm_type(returntype, pyxrtypes) creturntype = norm_type(returntype, cpprtypes) if name.startswith('slot_'): creturntype = 'Q_INVOKABLE ' + creturntype name = name.split('_', 1)[1] elif name == '__init__': preturntype = '' creturntype = '' name = self.namespace if self.namespace is None and preturntype.split(' ')[0] not in ['cdef', 'cpdef']: preturntype = 'cdef ' + preturntype cname = name if self.namespace is None else self.namespace + '::' + name pyxargs = list(norm_types(args, pyxtypes)) cppargs = list(norm_types(args, cpptypes)) if f_mod == 'P': self.PYXFILE('{}{}({}){}:'.format(preturntype, name, argstr(pyxargs), p_mods)) elif f_mod == 'H': self.HFILE(indent, '{}{}({}){}'.format(creturntype, name, argstr(cppargs), c_mods), lineno) elif f_mod == 'C': self.CFILE(indent, '{}{}({}){}'.format(creturntype, cname, argstr(cppargs), c_mods), lineno) else: assert False, f_mod if bremove(m_mods, 'H'): self.HFILE(indent, '{}{}({}){};'.format(creturntype, name, argstr(cppargs), c_mods), lineno) if bremove(m_mods, 'D'): self.PXDFILE(indent, '{}{}({}){}'.format(preturntype, name, argstr(pyxargs), p_mods), lineno) if bremove(m_mods, 'P'): self.PYXFILE('{}{}({}){}'.format(preturntype, name, argstr(pyxargs), p_mods)) assert not m_mods, m_mods return True def Q_PROPERTY(self, indent, line, lineno, *args): if not line: return match = re.match(r"^prop_(\w+) = '(.*)'$", line.strip(), re.ASCII) pname = match.group(1) assert pname.isidentifier(), pname ptype, *flags = match.group(2).split() assert all(f.isupper() for f in flags), flags pargs = [] def pop(flag): if flag in flags: flags.remove(flag) return True return False if pop('READ'): pargs += ['READ', 'get_' + pname] if pop('WRITE'): pargs += ['WRITE', 'set_' + pname] if pop('MEMBER'): fname = 'm_' + pname pargs += ['MEMBER', fname] self.HFILE(indent, '{} {};'.format(ptype, fname), lineno) if pop('NOTIFY'): fname = pname + '_changed' pargs += ['NOTIFY', fname] self.PXDFILE(indent, 'void {}() nogil'.format(fname), lineno) self.HFILE(indent, 'Q_SIGNAL void {}();'.format(fname), lineno) if flags: assert False, flags self.HFILE(indent, 'Q_PROPERTY ({} {} {})'.format(ptype, pname, ' '.join(pargs)), lineno) def Q_SIGNAL(self, indent, line, lineno, *args): if not line or line[0] == '#': return match = re.match(r"^(\w+) = pyqtSignal\((.*)\)$", line.strip(), re.ASCII) assert match is not None, line pname = match.group(1) assert pname.isidentifier(), pname types = ', '.join(cpptype(t.strip()) for t in match.group(2).split(',')) self.HFILE(indent, 'Q_SIGNAL void {}({});'.format(pname, types), lineno) def ACTION(self, indent, line, lineno, *args): if not line: return match = re.match(r"^action_(\w+) = (\w+)$", line.strip(), re.ASCII) assert match is not None, line name = match.group(1) assert name.isidentifier(), name func = match.group(2) assert func.isidentifier(), func self.HFILE(indent, 'Q_INVOKABLE void on_action_{}_triggered();'.format(name), lineno) self.PYXFILE('void on_action_{0}_triggered() with gil: {1}.app.on_action_{0}_triggered()'.format(name, func)) pybik-3.0/buildlib/utils.py0000664000175000017500000001254613166735310016157 0ustar barccbarcc00000000000000# -*- coding: utf-8 -*- # Copyright © 2013-2017 B. Clausius # # 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 . import sys, os from glob import glob from contextlib import suppress def update_linguas(): import polib min_percent_translated = 20 cnt_skipped = 0 with open('po/LINGUAS', 'wt', encoding='utf-8') as linguas: po_files = sorted(glob('po/*.po')) for po_file in po_files: percent_translated = polib.pofile(po_file).percent_translated() if percent_translated < min_percent_translated: print('skipping po file {!r} ({}%<{}% translated)'.format( po_file, percent_translated, min_percent_translated), file=sys.stderr) cnt_skipped += 1 else: print(os.path.splitext(os.path.basename(po_file))[0], file=linguas) print('skipped {}/{} po files'.format(cnt_skipped, len(po_files)), file=sys.stderr) def get_linguas(): with open('po/LINGUAS', 'rt', encoding='utf-8') as linguas: return linguas.read().splitlines() def generate_lang_translations(): from pybiklib.dialogs import get_langname_from_code_func langname_from_code = get_langname_from_code_func() names = ((code, langname_from_code(code)) for code in get_linguas()) names = {code: name for code, name in names if name is not None} print(names) def generate_all_lang_translations(file=sys.stdout): import icu # to be sure get_langname_from_code_func does not return a fallback function from subprocess import Popen, PIPE from ast import literal_eval from pprint import pformat processes = [] env = os.environ.copy() for lang in get_linguas(): env['LC_MESSAGES'] = lang+'.UTF-8' script = 'import buildlib.utils as m; m.generate_lang_translations()' print(lang, end=' ', flush=True) processes.append((lang, Popen(['python3', '-c', script], env=env, stdout=PIPE))) print() langs = {} for lang, process in processes: print(lang, end=' ', flush=True) outstr, unused_err = process.communicate() outstr = outstr.strip().decode('utf-8') try: langs[lang] = literal_eval(outstr) except SyntaxError: print('code for lang %r:' % lang, repr(outstr)) raise print() print('# -*- coding: utf-8 -*-', file=file) print('# generated file\n', file=file) print('languages = (', file=file) print(pformat(langs), file=file) print(')\n', file=file) def modify_file(filename, subs, count=1): from shutil import copymode import re print('modifying', filename) with open(filename, 'rt', encoding='utf-8') as f: rtext = f.read() wtext = rtext for pattern, repl in subs: wtext = re.sub(pattern, repl, wtext, count=count, flags=re.MULTILINE) if wtext == rtext: return False tmpfilename = filename+'.tmp' with open(tmpfilename, 'xt', encoding='utf-8') as f: f.write(wtext) copymode(filename, tmpfilename) os.rename(tmpfilename, filename) return True variants = ( {'id': 'qtw', 'name': 'QtWidgets (default)', 'group': 'qtvariant', 'type': 'enum'}, {'id': 'qtq', 'name': 'QtQuick/QML', 'group': 'qtvariant', 'type': 'enum'}, {'id': 'ogl', 'name': 'OpenGL (default)', 'group': 'glvariant', 'type': 'enum'}, {'id': 'es2', 'name': 'OpenGLES2', 'group': 'glvariant', 'type': 'enum'}, {'id': 'd', 'name': 'debug OpenGL/ES', 'group': 'gldebug', 'type': 'bool'}, {'id': 'os', 'name': 'offscreen', 'group': 'offscreen', 'type': 'bool'}, {'id': 'all', 'name': 'all variants', 'type': None}, ) def accepted_variants(): return {v['id']: v for v in variants} def variant_string(): return ', '.join('%s (%s)'%(v['id'],v['name']) for v in variants) def group_variants(variant_ids): grouped_variants = {} for v in variants: if v['type'] == None: continue values, all_values = grouped_variants.setdefault(v['group'], [[], []]) if v['type'] == 'bool': values.append(None) all_values.append(None) if v['id'] in variant_ids or 'all' in variant_ids: values.append(v['id']) all_values.append(v['id']) # set default enum variants for v in variants: if v['type'] != 'enum': continue values, all_values = grouped_variants[v['group']] if not values: values.append(v['id']) for v in variants: with suppress(KeyError): g = v['group'] values, all_values = grouped_variants.pop(g) yield g, values, all_values pybik-3.0/buildlib/modeldef.py0000664000175000017500000003527613137213276016603 0ustar barccbarcc00000000000000# -*- coding: utf-8 -*- # Copyright © 2015-2017 B. Clausius # # 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 . from math import sqrt from pybiklib.debug import DEBUG_INVISIBLE from pybiklib.utils import epsilon from .geom import Vector, Polyhedron, Plane, distance_axis_vert, distance_axis_edge, HalfFace, HalfCell N_ = lambda t: t class ModelBase: reversepick = False def __init__(self): assert all(fn.islower() for fn in self.facenames) assert all(' ' not in fn for fn in self.facenames) self.facekeys = [fn.replace('-', '_') for fn in self.facenames] self.cell = self.create_single_cell() self.axes = self.create_axes() self.normals = {hf.face.id: hf.normal() for hf in self.cell.halffaces} def create_axes(self): hf_by_id = {hf.face.id: hf for hf in self.cell.halffaces} return [hf_by_id[s].center().normalised() for s in self.symbols] def scale_cell(self, polys, sizes): saxes = (a*s for a, s in zip(self.axes, sizes)) scale1 = (sqrt(sum(f*f for f in a)) for a in zip(*self.axes)) scaleS = (sqrt(sum(f*f for f in a)) for a in zip(*saxes)) scale = tuple(s/s1 for s, s1 in zip(scaleS, scale1)) polys.scale(scale) def split_cell(self, polys, sizes): cuts = {} split_id = len(polys.faces) axesdata = [] for iaxis, axis in enumerate(self.axes): axis = Vector(axis) plane = Plane(axis) distances = polys.distances(plane) axesdata.append((iaxis, axis, plane, distances)) for (iaxis, axis, plane, distances), size in zip(axesdata, sizes): for plane.distance in self.splits(iaxis, size, range(1, size), distances): polys.split_plane(plane, iaxis, split_id) cuts[split_id] = axis split_id += 1 return cuts @staticmethod def mark_invisible_faces(polys, cuts): for split_id, axis in cuts.items(): visible_limit = 10000 for cell in polys.cells: for hf in cell.halffaces: if hf.face.type == 'face': for he in hf.halfedges: other_face = he.other.halfface.face if other_face.type == 'cut' and other_face.id == split_id: dist_ae = distance_axis_edge(axis, he.verts) if dist_ae < visible_limit: visible_limit = dist_ae # mark all faces whose verts are within visible_limit around axis for face in polys.faces: if face.type == 'cut' and face.id == split_id: for vert in face.verts: dav = distance_axis_vert(axis, vert) if dav > visible_limit - epsilon: break else: face.type += '_removed' @classmethod def remove_cells(self, polys, cuts): self.mark_invisible_faces(polys, cuts) if DEBUG_INVISIBLE: return polys.remove_cells(lambda c: all(f.type.endswith('_removed') for f in c.faces)) def create_cells(self, sizes): self.cell.indices = (0,) * len(sizes) polys = Polyhedron() polys.cells = [self.cell] polys = polys.clone() self.scale_cell(polys, sizes) cuts = self.split_cell(polys, sizes) self.remove_cells(polys, cuts) return polys class BrickModel (ModelBase): type = 'Brick' fileclass = 'b' name = N_('Brick') mformat = N_('{0}×{1}×{2}-Brick') sizenames = (N_('Width:'), N_('Height:'), N_('Depth:')) defaultsize = (4, 2, 3) slicesmode = 'all' symmetries = 2, 2, 2 symbols = 'LDB' symbolsI = 'RUF' faces = 'UDLRFB' facenames = (N_('up'), N_('down'), N_('left'), N_('right'), N_('front'), N_('back')) default_rotation = (-30.,39.) @classmethod def norm_sizes(cls, size): y, z, x = sorted(size) return (x, y, z), (x, y, z) @staticmethod def create_single_cell(): # standard # orientation face symbols # *------* +---+ # |\ |\ y | U | # | *------* | +---+---+---+---+ # | | | | o--x | L | F | R | B | # *-|----* | \ +---+---+---+---+ # \| \| z | D | # *------* +---+ up = HalfFace.polygon((-1., -1.), 4, ids='FRBL') cell = up.extrude_y(1., -1., ids='UD') return cell def splits(self, iaxis, size, isplits, distances): return ((size - 2.*i) for i in isplits) class TowerModel (BrickModel): type = 'Tower' name = N_('Tower') mformat = N_('{0}×{1}-Tower') sizenames = (N_('Basis:'), N_('Height:')) defaultsize = (2, 3) symmetries = 2, 4, 2 @classmethod def norm_sizes(cls, size): x, y = size return (x, y), (x, y, x) class CubeModel (BrickModel): type = 'Cube' name = N_('Cube') mformat = N_('{0}×{0}×{0}-Cube') sizenames = (N_('Size:'),) defaultsize = (3,) symmetries = 4, 4, 4 @classmethod def norm_sizes(cls, size): x, = size return (x,), (x, x, x) class VoidCubeModel (BrickModel): type = 'Cube3Void' name = N_('Void Cube') mformat = N_('Void Cube') sizenames = () defaultsize = () symmetries = 4, 4, 4 @classmethod def norm_sizes(cls, unused_size): return (), (3, 3, 3) @classmethod def remove_cells(self, polys, cuts): polys.remove_cells(lambda c: sum(int(i==1) for i in c.indices) >= 2) class TetrahedronModel (ModelBase): type = 'Tetrahedron' fileclass = 't' name = N_('Tetrahedron') mformat = N_('{0}-Tetrahedron') sizenames = (N_('Size:'),) defaultsize = (3,) slicesmode = 'all' symmetries = 3, 3, 3, 3 symbols = 'LDBR' symbolsI = 'WXYZ' faces = 'DLRB' facenames = (N_('down'), N_('left'), N_('right'), N_('back')) default_rotation = (-10.,39.) @classmethod def norm_sizes(cls, size): x, = size return (x,), (x, x, x, x) _redge = sqrt(3/2) _itriangle = sqrt(2) / 2 _rtriangle = sqrt(2) _itetrahedron = 1 / 2 _rtetrahedron = 3 / 2 _verts = [Vector((-_redge, -_itetrahedron, -_itriangle)), Vector(( _redge, -_itetrahedron, -_itriangle)), Vector(( 0., _rtetrahedron, 0.)), Vector(( 0., -_itetrahedron, _rtriangle))] @classmethod def create_single_cell(self): # vertex standard # indices orientation face symbols # 2 # | y # | | +-----+ # | o--x /L|B\ R/ # 0------1 \ +---+---+ # \ z |D/ # 3 + down = HalfFace.polygon((0., -self._rtriangle), 3, ids='LBR') cell = down.pyramid(1.5, -.5, id='D') return cell def splits(self, iaxis, size, isplits, distances): low, *unused, high = distances return ((low + 2*i) for i in isplits) class TriangularPrism (ModelBase): type = 'Prism3' fileclass = 't' name = N_('Triangular Prism') mformat = N_('{0}×{1} Triangular Prism') sizenames = (N_('Basis:'), N_('Height:')) defaultsize = (3, 2) slicesmode = 'all' symmetries = 2, 3, 2, 2 symbols = 'LDBR' symbolsI = 'XUYZ' faces = 'UDLRB' facenames = (N_('up'), N_('down'), N_('left'), N_('right'), N_('back')) default_rotation = (-4.,39.) @classmethod def norm_sizes(cls, size): b, h = size if b > 6 or h > 6: return None, None return (b, h), (b, h, b, b) @classmethod def create_single_cell(self): # standard polygon # orientation orientation # *------* # |\ /| y y # | * | | | # | | | o--x | # *--|---* \ o-----x # \ | / z # * _rtriangle = sqrt(2) up = HalfFace.polygon((0., -_rtriangle), 3, ids='RBL') cell = up.extrude_y(1., -1., ids='UD') return cell split_arg = 0 def splits(self, iaxis, size, isplits, distances): low, high = distances if iaxis == 1: return ((low + 2*i) for i in isplits) else: d = (high - low) / (size+self.split_arg) return ((low + i*d) for i in isplits) class TriangularPrismComplex (TriangularPrism): type = 'Prism3Complex' fileclass = 't' name = N_('Triangular Prism (complex)') mformat = N_('{0}×{1} Triangular Prism (complex)') sizenames = (N_('Basis:'), N_('Height:')) defaultsize = (3, 2) split_arg = -1/3 class PentagonalPrism (ModelBase): type = 'Prism5' fileclass = 'p' name = N_('Pentagonal Prism') mformat = N_('{0}×{1} Pentagonal Prism') sizenames = (N_('Basis:'), N_('Height:')) defaultsize = (2, 2) slicesmode = 'last1' symmetries = 2, 5, 2, 2, 2, 2 symbols = 'AUBCDE' symbolsI = 'GLHIJK' faces = 'ULABCDE' facenames = (N_('up'), N_('down'), N_('front-right'), N_('back-right'), N_('back'), N_('back-left'), N_('front-left')) default_rotation = (-4.,39.) @classmethod def norm_sizes(cls, size): b, h = size if b > 6 or h > 6: return None, None return (b, h), (b, h, b, b, b, b) def create_single_cell(self): up = HalfFace.polygon(Vector((0, -1.4)), 5, ids='ABCDE') cell = up.extrude_y(1., -1., ids='UL') return cell side_center = 0 def splits(self, iaxis, size, isplits, distances): if iaxis == 1: low, unused = distances return ((low + 2*i) for i in isplits) elif size == 1: return () else: unused, mid, high = distances d = (high - mid) / (size-1+self.side_center) / 2 low = high - size*d return (i*d + low for i in isplits) class PentagonalPrismM (PentagonalPrism): type = 'Prism5M' fileclass = 'p' name = N_('Pentagonal Prism (stretched)') mformat = N_('{0}×{1} Pentagonal Prism (stretched)') side_center = 0.2 class Octahedron (ModelBase): type = 'Octahedron' fileclass = 't' name = N_('Octahedron') mformat = N_('{0}-Octahedron') sizenames = (N_('Size:'),) defaultsize = (3,) slicesmode = 'all' symmetries = 3, 3, 3, 3 symbols = 'ELCA' symbolsI = 'BUFD' faces = 'LEACUBDF' facenames = (N_('down'), N_('front-left'), N_('front-right'), N_('back'), N_('up'), N_('back-right'), N_('back-left'), N_('front')) default_rotation = (-10.,39.) reversepick = True @classmethod def norm_sizes(cls, size): x, = size if x > 8: return None, None return (x,), (x, x, x, x) @classmethod def create_single_cell(self): tetra_to_octa = dict(('DL','RA','BC','LE')) cid_to_faceid = {'AEL':'F', 'ACL':'B', 'ACE':'U', 'CEL':'D'} polys = TetrahedronModel().create_cells((2, 2, 2, 2)) for f in polys.faces: if f.type == 'face': f.id = tetra_to_octa[f.id] for c in polys.cells: cid = '' face = None for f in c.faces: if f.type == 'face': cid += f.id elif face is None: face = f else: face = False cid = ''.join(sorted(cid)) if face: face.type = 'face' face.id = cid_to_faceid[cid] polys.remove_cells(lambda c: sum(c.indices) != 0) assert len(polys.cells) == 1 return polys.cells[0] def splits(self, iaxis, size, isplits, distances): low, *unused, high = distances return ((low + 2*i) for i in isplits) class Dodecahedron (ModelBase): type = 'Dodecahedron' fileclass = 'd' name = N_('Dodecahedron') mformat = N_('{0}-Dodecahedron') sizenames = (N_('Size:'),) defaultsize = (3,) slicesmode = 'mid' symmetries = 5, 5, 5, 5, 5, 5 symbols = 'ABCDEF' symbolsI = 'MKLGHI' faces = 'ABCDEFGHIKLM' facenames = (N_('down'), N_('down-back-right'), N_('down-front-right'), N_('down-front'), N_('down-front-left'), N_('down-back-left'), N_('up-back'), N_('up-back-right'), N_('up-front-right'), N_('up-front-left'), N_('up-back-left'), N_('up')) default_rotation = (-10.,39.) reversepick = False @classmethod def norm_sizes(cls, size): x, = size if x%2 != 1: return None, None return (x,), (x, x, x, x, x, x) @classmethod def create_single_cell(self): cell = HalfCell.dodecahedron(ids=self.faces) return cell def splits(self, iaxis, size, isplits, distances): low, first, *unused, high = distances slicewidth = (first-low)/(size-.5) def ifunc(i): if i*2 < size: r = low + i*slicewidth else: r = high + (i - size)*slicewidth return r return (ifunc(i) for i in isplits) modeldefs = [CubeModel, TowerModel, BrickModel, TetrahedronModel, Octahedron, Dodecahedron, VoidCubeModel, TriangularPrism, TriangularPrismComplex, PentagonalPrism, PentagonalPrismM, ] pybik-3.0/buildlib/__init__.py0000664000175000017500000000000012130757601016531 0ustar barccbarcc00000000000000pybik-3.0/buildlib/geom.py0000775000175000017500000010445613125742672015757 0ustar barccbarcc00000000000000# -*- coding: utf-8 -*- # Copyright © 2013-2017 B. Clausius # # 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 . from collections import deque from math import atan2, sin, cos, pi, sqrt import weakref import itertools import pybiklib.utils from pybiklib.utils import epsdigits, epsilon sid_cache = weakref.WeakKeyDictionary() def roundeps(val): return round(val, epsdigits+1) class Vector (pybiklib.utils.Vector): def rounded(self): return self.__class__(roundeps(s) for s in self) def scaled(self, vector): return self.__class__(s*v for s,v in zip(self, vector)) def equalfuzzy(self, other): return all((-epsilon= 0 b = vec_axis.dot(vec_edge) c = vec_edge.dot(vec_edge) # always >= 0 d = vec_axis.dot(vec_vert0) e = vec_edge.dot(vec_vert0) D = a*c - b*b # always >= 0 sD = D # sc = sN / sD, default sD = D >= 0 tD = D # tc = tN / tD, default tD = D >= 0 # compute the line parameters of the two closest points if D < epsilon: # the lines are almost parallel sN = 0.0 # force using point P0 on segment S1 sD = 1.0 # to prevent possible division by 0.0 later tN = e tD = c else: # get the closest points on the infinite lines sN = b*e - c*d tN = a*e - b*d if tN < 0.0: # tc < 0 => the t=0 edge is visible tN = 0.0 # recompute sc for this edge sN = -d sD = a elif tN > tD: # tc > 1 => the t=1 edge is visible tN = tD # recompute sc for this edge sN = (-d + b) sD = a # finally do the division to get sc and tc sc = 0.0 if abs(sN) < epsilon else sN / sD tc = 0.0 if abs(tN) < epsilon else tN / tD # get the difference of the two closest points dP = vec_vert0 + (vec_axis * sc) - (vec_edge * tc) # = S1(sc) - S2(tc) return dP.length() # return the closest distance class Plane: def __init__(self, normal): self.normal = Vector(normal) self.distance = 0 def __repr__(self): return '{0}({1.normal}, {1.distance})'.format(self.__class__.__name__, self) def signed_distance(self, point): return self.normal.dot(point) - self.distance def intersect_segment(self, p, q): pvalue = self.signed_distance(p.point) qvalue = self.signed_distance(q.point) if abs(pvalue - qvalue) < epsilon: return -1, None if abs(pvalue) < epsilon: return 0, p if abs(qvalue) < epsilon: return 0, q if pvalue < 0 < qvalue or qvalue < 0 < pvalue: d = pvalue / (pvalue - qvalue) return 1, Vert(p.point + (q.point - p.point) * d) else: return -1, None class GeomBase: def __euler(self): chars = 'vefc456' halfsets, fullsets = self.get_all_ldims() part = lambda c,h,f: ('{}={}'.format(c,f) if h==f else '{}={}/{}'.format(c,f,h)) return ' '.join(part(c,len(hs),len(fs)) for c,hs,fs in zip(chars,halfsets,fullsets)) def __str__(self): return '{}({})'.format(self.__class__.__name__, self.__euler()) def __repr__(self): sid = sid_cache.setdefault(self, len(sid_cache)) return '{}({}, {})'.format(self.__class__.__name__, sid, self.__euler()) def clone(self, clone_data): if id(self) in clone_data: return obj = clone_data[id(self)] = self.__class__() vals = [(attr, getattr(self, attr)) for attr in reversed(self.fields_geom)] def func(clone_data): for attr in self.fields_kwarg: if attr not in self.fields_geom: setattr(obj, attr, getattr(self, attr)) for attr, val in vals: if isinstance(val, list): newval = [clone_data[id(o)] for o in val] elif val is not None: newval = clone_data[id(val)] else: newval = None setattr(obj, attr, newval) for attr, val in vals: if isinstance(val, list): for o in val: yield o.clone elif val is not None: yield val.clone yield func def center(self): c = Vector() for i, v in enumerate(self.verts): c += v.point return c / (i+1) class HalfGeom (GeomBase): fields_geom = '_ldims', '_hdim', '_fullgeom' def __init__(self, ldims, fullgeom): self._ldims = [] for l in ldims: l.hdim = self #assert all(l.dim+1==self.dim for l in self._ldims) self._hdim = None self._fullgeom = None self.fullgeom = fullgeom def assert_valid(self): assert all(l.dim+1==self.dim for l in self._ldims) assert all(l._hdim is self for l in self._ldims) assert self._hdim is None or self in self._hdim._ldims if self.fullgeom is not None: assert self.fullgeom.assert_valid() return True @property def fullgeom(self): return self._fullgeom @fullgeom.setter def fullgeom(self, fg): if self._fullgeom is not None: self._fullgeom._halfgeoms.remove(self) self._fullgeom = fg if fg is not None: assert self not in fg._halfgeoms fg._halfgeoms.append(self) @property def ldims(self): return self._ldims @property def hdim(self): return self._hdim @hdim.setter def hdim(self, hf): if self._hdim is not None: self._hdim._ldims.remove(self) self._hdim = hf if hf is not None: assert self not in hf._ldims hf._ldims.append(self) def insert_before(self, hg): #TODO: try to remove this function, the order shouldnt matter, # but currently needed to preserve content of model data files if self._hdim is not None: self._hdim._ldims.remove(self) self._hdim = hg._hdim assert self not in hg._hdim._ldims i = hg._hdim._ldims.index(hg) or len(hg._hdim._ldims) hg._hdim._ldims.insert(i, self) def insert_after(self, hg): #TODO: try to remove this function, the order shouldnt matter, # but currently needed to preserve content of model data files if self._hdim is not None: self._hdim._ldims.remove(self) self._hdim = hg._hdim assert self not in hg._hdim._ldims i = hg._hdim._ldims.index(hg) hg._hdim._ldims.insert(i+1, self) def insert_after_first(self, hg): #TODO: try to remove this function, the order shouldnt matter, # but currently needed to preserve content of model data files if hg._ldims: self.insert_after(hg._ldims[0]) else: self._hdim = hg def get_all_ldims(self, halfsets=None, fullsets=None): if halfsets is None: halfsets = [set() for i in range(self.dim+1)] if fullsets is None: fullsets = [set() for i in range(self.dim+1)] for ldim in self._ldims: ldim.get_all_ldims(halfsets, fullsets) halfsets[self.dim].add(self) fullsets[self.dim].add(self._fullgeom) return halfsets, fullsets def rotate_ldims_to(self, hg): i = self._ldims.index(hg) if i: self._ldims = self._ldims[i:] + self._ldims[:i] return self @property def other(self): '''other halfgeom of fullgeom in the same hdim''' for hg in self.fullgeom.halfgeoms: if hg is not self and hg.hdim.hdim is self.hdim.hdim: return hg return None # hole in surface of self.hdim.hdim class FullGeom (GeomBase): fields_geom = '_halfgeoms', def __init__(self): self._halfgeoms = [] def assert_valid(self): assert all(hg.fullgeom is self for hg in self.halfgeoms) return True @property def halfgeoms(self): return self._halfgeoms def get_all_ldims(self): halfsets = fullsets = None for hg in self._halfgeoms: halfsets, fullsets = hg.get_all_ldims(halfsets, fullsets) return halfsets, fullsets class HalfVert (HalfGeom): dim = 0 fields_arg = () fields_kwarg = () def __init__(self, *, vert=None): super().__init__([], vert) vert = HalfGeom.fullgeom halfedge = HalfGeom.hdim def assert_valid(self): super().assert_valid() return True class Vert (FullGeom): fields_arg = () fields_kwarg = 'point', 'id', def __init__(self, point=None, *, id=None): super().__init__() self.point = None if point is None else Vector(point) self.id = id def assert_valid(self): super().assert_valid() import numbers assert all(isinstance(i, numbers.Number) for i in self.point) return True halfverts = FullGeom.halfgeoms class HalfEdge (HalfGeom): dim = 1 fields_arg = () fields_kwarg = () def __init__(self, verts=None, edge=None): #XXX: different from other Half* classes where Half*-objects are used for initialisation verts = list(verts or []) assert all(isinstance(v, FullGeom) for v in verts) halfverts = [HalfVert(vert=v) for v in verts] super().__init__(halfverts, edge) halfverts = HalfGeom.ldims edge = HalfGeom.fullgeom halfface = HalfGeom.hdim @property def verts(self): return tuple(hv.vert for hv in self.halfverts) def create_other(self): return self.__class__(reversed(self.verts), self.edge) def assert_valid(self): assert super().assert_valid() assert all(isinstance(hv, HalfVert) for hv in self.halfverts) assert isinstance(self.edge, Edge) assert isinstance(self.halfface, HalfFace) assert all(hv.assert_valid() for hv in self.halfverts) assert len(self.halfverts) == 2 assert self.edge.assert_valid() assert self.halfverts[1].vert is self.nextatface.halfverts[0].vert assert self.other is None or isinstance(self.other, self.__class__), self.other.__class__ assert self.other is None or self.other.other is self return True @property def nextatface(self): ldims = self.hdim.ldims return ldims[(ldims.index(self)+1) % len(ldims)] @classmethod def polygon(cls, points, ids=None): vert0 = Vert(next(points)) vertp = vert0 ids = itertools.repeat(None) if ids is None else iter(ids) for point, eid in zip(points, ids): vertc = Vert(point) yield cls((vertp, vertc), Edge(id=eid)) vertp = vertc yield cls((vertp, vert0), Edge(id=next(ids))) def close_hole(self, nedges, id=None): def next_at_hole(v): for hv in v.halfverts: he = hv.halfedge if he.halfface is not hf and he.other is None: # only works if at the vert is only one hole return he return None assert self.other is None hf = HalfFace(face=Face(type='face', id=id)) hf.halfcell = self.halfface.halfcell he = self v0 = he.halfverts[1].vert v = he.halfverts[0].vert is_attach_prev = len(v0.halfverts) > 2 is_attach_next = len(v.halfverts) > 2 he.create_other().halfface = hf # attach hf to existing edges while v is not v0 and is_attach_next: he = next_at_hole(v) v = he.halfverts[0].vert is_attach_next = len(v.halfverts) > 2 he.create_other().halfface = hf # attach hf to existing edges in the other direction halfedges = [] while v is not v0 and is_attach_prev: he = next_at_hole(v0) halfedges.append(he) v0 = he.halfverts[1].vert is_attach_prev = len(v0.halfverts) > 2 # if the hole needs more faces, create some edges for i in range(len(hf.halfedges)+len(halfedges), nedges): vn = Vert() if i < nedges-1 else v0 HalfEdge([v, vn], edge=Edge()).halfface = hf v = vn for he in halfedges: he.create_other().halfface = hf return hf class Edge (FullGeom): fields_arg = () fields_kwarg = 'id', def __init__(self, *, id=None): super().__init__() self.id = id def assert_valid(self): super().assert_valid() assert all(isinstance(he, HalfEdge) for he in self.halfedges) assert len(self.halfedges) > 0 assert all(isinstance(he, HalfEdge) for he in self.halfedges) assert all(he.edge is self for he in self.halfedges) return True halfedges = FullGeom.halfgeoms def split(self, vert): verts = self.halfedges[0].verts edge2 = self.__class__() for he1 in self.halfedges: if he1.verts[0] == verts[0]: he2 = HalfEdge([vert, he1.verts[1]], edge2) he1.halfverts[1].vert = vert he2.insert_after(he1) else: assert he1.verts[1] == verts[0], (he1.verts, verts) he2 = HalfEdge([he1.verts[0], vert], edge2) he1.halfverts[0].vert = vert he2.insert_before(he1) class HalfFace (HalfGeom): dim = 2 fields_arg = 'halfedges', fields_kwarg = () def __init__(self, *, halfedges=None, face=None): super().__init__(halfedges or [], face) def assert_valid(self): assert super().assert_valid() assert set(self.halfedges) == set(self.ldims), (set(self.halfedges), self.ldims) assert isinstance(self.face, Face) assert self.face.assert_valid() assert all(he.halfface is self for he in self.ldims) assert all(isinstance(he, HalfEdge) for he in self.halfedges) assert all(he.assert_valid() for he in self.halfedges) return True halfedges = HalfGeom.ldims face = HalfGeom.fullgeom halfcell = HalfGeom.hdim @property def edges(self): for he in self.halfedges: yield he.edge @property def verts(self): for he in self.halfedges: yield he.verts[0] def normal(self): verts = self.verts try: v1 = next(verts).point v2 = next(verts).point v3 = next(verts).point except StopIteration: raise ValueError('Too few vertices') return (v2-v1).cross(v3-v1).normalised() def sort(self): try: he = self.halfedges[0] except IndexError: pass else: hv_last = he.halfverts[0].other while he.halfverts[1] is not hv_last: he = he.halfverts[1].other.halfedge he.hdim = self return self @classmethod def polygon(cls, point, n, ids=None): points = Vector.polygon(point, n) halfedges = HalfEdge.polygon(points, ids) halfface = cls(face=Face()) for he in halfedges: he.halfface = halfface return halfface def extrude_y(self, upy, downy, ids=None): cell = Cell() self.halfcell = cell # down face face_down = Face() if ids is not None: self.face.type = face_down.type = 'face' self.face.id, face_down.id = ids halfface_down = HalfFace(face=face_down) def extrude_vert(vert_up, upy, downy): x1, y1 = vert_up.point vert_up.point = Vector((x1, upy, -y1)) vert_down = Vert((x1, downy, -y1)) return vert_up, vert_down vp_down = None for he_up in self.halfedges: # vertices vc_up, vc_down = extrude_vert(he_up.verts[1], upy, downy) # edges e_down = Edge() ec_side = Edge() if vp_down is None: v1_up, v1_down = vc_up, vc_down e0_down = e_down e1_side = ec_side else: # down halfedge HalfEdge([vc_down, vp_down], e_down).halfface = halfface_down # side face halfface_side = HalfFace(face=Face(type='face', id=he_up.edge.id)) HalfEdge([vp_down, vc_down], e_down).halfface = halfface_side HalfEdge([vc_down, vc_up], ec_side).halfface = halfface_side HalfEdge([vc_up, vp_up], he_up.edge).halfface = halfface_side HalfEdge([vp_up, vp_down], ep_side).halfface = halfface_side halfface_side.halfcell = cell # next vp_up, vp_down = vc_up, vc_down ep_side = ec_side he_up = self.ldims[0] # joining down halfedge he_down = HalfEdge([v1_down, vp_down], e0_down) he_down.halfface = halfface_down halfface_down.rotate_ldims_to(he_down).sort() # joining side face halfface_side = HalfFace(face=Face(type='face', id=he_up.edge.id)) HalfEdge([vp_down, v1_down], e0_down).halfface = halfface_side HalfEdge([v1_down, v1_up], e1_side).halfface = halfface_side HalfEdge([v1_up, vp_up], he_up.edge).halfface = halfface_side HalfEdge([vp_up, vp_down], ep_side).halfface = halfface_side halfface_side.halfcell = cell halfface_down.halfcell = cell return cell def pyramid(self, upy, downy, id=None): cell = Cell() self.halfcell = cell vert_up = Vert((0., upy, 0.)) def change_vert(vert_down, downy): x1, y1 = vert_down.point vert_down.point = Vector((-x1, downy, -y1)) return vert_down vp_down = None for he in self.halfedges: # vertices vc_down = change_vert(he.verts[1], downy) # edges ec_side = Edge() if vp_down is None: v1_down = vc_down e1_side = ec_side else: # side face halfface_side = HalfFace(face=Face(type='face', id=he.edge.id)) HalfEdge([vc_down, vp_down], he.edge).halfface = halfface_side HalfEdge([vp_down, vert_up], ep_side).halfface = halfface_side HalfEdge([vert_up, vc_down], ec_side).halfface = halfface_side halfface_side.halfcell = cell # next vp_down = vc_down ep_side = ec_side he = self.ldims[0] # joining side face halfface_side = HalfFace(face=Face(type='face', id=he.edge.id)) HalfEdge([v1_down, vp_down], he.edge).halfface = halfface_side HalfEdge([vp_down, vert_up], ep_side).halfface = halfface_side HalfEdge([vert_up, v1_down], e1_side).halfface = halfface_side halfface_side.halfcell = cell # down face if id is not None: self.face.type = 'face' self.face.id = id return cell class Face (FullGeom): fields_arg = () fields_kwarg = 'type', 'id' def __init__(self, *, type=None, id=None): super().__init__() self.type = type self.id = id def assert_valid(self): super().assert_valid() assert all(isinstance(f, HalfFace) for f in self.halffaces) assert all(hf.face is self for hf in self.halffaces) assert 1 <= len(self.halffaces) <= 2 lenhf0 = len(list(self.halffaces[0].halfedges)) assert all(lenhf0 == len(list(hf.halfedges)) for hf in self.halffaces) return True halffaces = FullGeom.halfgeoms @property def edges(self): return self.halffaces[0].edges @property def verts(self): return self.halffaces[0].verts def split(self, split_verts): assert len(split_verts) == 2, len(split_verts) edge = Edge() newface = Face(type=self.type, id=self.id) edgef1 = None for halfface in self.halffaces: he = halfface.ldims[0] # make sure to start on the same edge for all halffaces if edgef1 is None: edgef1 = he.edge else: he = next(_he for _he in edgef1.halfedges if _he.halfface is halfface) halfface.rotate_ldims_to(he) hedge2f1 = None hedge1f2 = None for he in halfface.halfedges[:]: if hedge2f1 is None: if he.verts[1] in split_verts: # end of the old halfface hedge2f1 = he elif hedge1f2 is None: # start of the new halfface newhalfface = HalfFace(face=newface) newhalfface.insert_after(halfface) he.halfface = newhalfface hedge1f2 = he elif he.verts[1] not in split_verts: # proceed to the end of the new halfface he.halfface = newhalfface else: # end of the new halfface he.halfface = newhalfface newhalfface.rotate_ldims_to(hedge1f2) hedge2f2 = he break # insert a new halfedge between the splitted halfface hedge1 = HalfEdge(split_verts, edge) hedge2 = HalfEdge([split_verts[1], split_verts[0]], edge) if hedge2f1.verts[1] is split_verts[1]: hedge1, hedge2 = hedge2, hedge1 hedge1.insert_after(hedge2f1) hedge2.insert_after(hedge2f2) return edge class HalfCell (HalfGeom): dim = 3 fields_arg = 'halffaces', fields_kwarg = 'indices', def __init__(self, *, halffaces=None): super().__init__(halffaces or [], None) self.indices = None def assert_valid(self): assert super().assert_valid() assert list(self.halffaces) == list(self.ldims), (list(self.halffaces), list(self.ldims)) assert all(isinstance(f, HalfFace) for f in self.halffaces) assert all(hf.assert_valid() for hf in self.halffaces) assert len(list(self.edges)) > 3 assert len(list(self.verts)) > 3 assert all(he.hdim.hdim is not None for e in self.edges for he in e.halfedges) return True halffaces = HalfGeom.ldims @property def faces(self): for hf in self.halffaces: yield hf.face @property def edges(self): cache = [] for f in self.faces: for e in f.edges: if e not in cache: cache.append(e) yield e @property def verts(self): cache = [] for hf in self.halffaces: for v in hf.verts: if v not in cache: cache.append(v) yield v def split(self, split_edges, id=None): halffaces, halffaces1, halffaces2 = [self.ldims[0]], [self.ldims[0]], [] # new face face = Face(type='cut', id=id) halfface1 = HalfFace(face=face) halfface2 = HalfFace(face=face) while halffaces: for he in halffaces.pop().halfedges: hf = he.other.halfface if he.edge in split_edges: he.create_other().halfface = halfface1 if hf not in halffaces2: halffaces2.append(hf) else: if hf not in halffaces1: halffaces.append(hf) halffaces1.append(hf) halffaces = halffaces2[:] while halffaces: for he in halffaces.pop().halfedges: if he.edge in split_edges: he.create_other().halfface = halfface2 else: hf = he.other.halfface if hf not in halffaces2: halffaces.append(hf) halffaces2.append(hf) # update cell halfface1.sort() phf = halfface1 for hf in halffaces1: phf = hf #XXX: just to reorder ldims to the order of halfface1, try to remove this line: hf.hdim = self halfface1.hdim = self # new cell halfface2.sort() halffaces2.append(halfface2) return Cell(halffaces=halffaces2) @classmethod def dodecahedron(cls, ids=None): #rfi = sqrt(25 + 10*sqrt(5)) / 10 rfu = sqrt(50 + 10*sqrt(5)) / 10 ri = sqrt((25 + 11*sqrt(5))/10) / 2 #ru = sqrt(3) * (1 + sqrt(5)) / 4 #1: h01² + (r1u-rfu)² = 1² #2: (ri-h01)² + r1u² = ru² # h01 = rfu # r1u² = sqrt(45 + 20*sqrt(5)) / 5 r1u = sqrt(sqrt(45 + 20*sqrt(5)) / 5) ids = itertools.repeat(None) if ids is None else iter(ids) cell = cls() hf_down = HalfFace.polygon((0.,-rfu), 5) hf_down.halfcell = cell hf_down.face.type = 'face' hf_down.face.id = next(ids) for v in hf_down.verts: x,z = v.point v.point = Vector((x, -ri, z)) hfs1 = [he.close_hole(5, id=fid) for he, fid in zip(hf_down.halfedges, ids)] hfs2 = [hf.halfedges[2].close_hole(5, id=fid) for hf, fid in zip(hfs1, ids)] hf_up = hfs2[0].halfedges[3].close_hole(5, id=next(ids)) hes01 = [he for e in cell.edges for he in e.halfedges if he.verts[0].point is not None and he.verts[1].point is None] for he in hes01: v0 = he.verts[0] v1 = he.verts[1] x,y,z = v0.point v1.point = Vector((x/rfu*r1u, rfu-ri, z/rfu*r1u)) hes12 = [he for e in cell.edges for he in e.halfedges if he.verts[0].point is not None and he.verts[1].point is None] for he in hes12: he.verts[1].point = True #XXX: marker, any value not None would do it hes23 = [he for e in cell.edges for he in e.halfedges if he.verts[0].point is not None and he.verts[1].point is None] for i, he in enumerate(hes23): he.verts[0].point = -hes01[(i+2)%5].verts[1].point he.verts[1].point = -hes01[(i+2)%5].verts[0].point return cell Cell = HalfCell class Polyhedron: def __init__(self): self._cells = [] def clone(self): clone_data = {} obj = self.__class__() funcs = deque(f for o in self._cells for f in o.clone(clone_data)) obj._cells = [clone_data[id(o)] for o in self._cells] while funcs: f = funcs.popleft() r = f(clone_data) if r is not None: funcs.extendleft(reversed(list(r))) return obj def assert_valid(self): import itertools assert all(isinstance(c, Cell) and c.assert_valid() for c in self.cells) assert all(isinstance(f, Face) and f.assert_valid() for f in self.faces) assert all(isinstance(e, Edge) and e.assert_valid() for e in self.edges) assert all(isinstance(v, Vert) and v.assert_valid() for v in self.verts) assert all(not v1.point.equalfuzzy(v2.point) for v1, v2 in itertools.combinations(self.verts, 2)), self.verts return True @property def cells(self): return self._cells @cells.setter def cells(self, cells): self._cells = cells @property def faces(self): cache = [] for c in self.cells: for f in c.faces: if f not in cache: cache.append(f) return cache @property def edges(self): cache = [] for f in self.faces: for e in f.edges: if e not in cache: cache.append(e) return cache @property def verts(self): cache = [] for f in self.faces: for v in f.verts: if v not in cache: cache.append(v) return cache def set_verts(self, *args): self._polytopes = [Vert(arg) for arg in args] def set_edges(self, *args): halfedges = [] for arg in args: verts = [self._polytopes[i] for i in arg] halfedges.append(HalfEdge(verts=verts, edge=Edge())) self._polytopes = halfedges def set_faces(self, *args, ids=None): halffaces = [] if ids is None: faces = [Face() for unused in args] else: assert len(args) == len(ids) faces = [Face(type='face', id=fid) for fid in ids] for arg, face in zip(args, faces): halfface = HalfFace(face=face) for i in arg: # this only works if args describe one closed cell if i > 0: self._polytopes[i-1].halfface = halfface elif i < 0: self._polytopes[-i-1].create_other().halfface = halfface else: raise ValueError() halffaces.append(halfface) del self._polytopes self._cells = [Cell(halffaces=halffaces)] def split_plane(self, plane, indexpos=None, split_id=None): # split intersected edges new_verts = [] for edge in self.edges[:]: pos, vert = plane.intersect_segment(*edge.halfedges[0].verts) if pos > 0: edge.split(vert) new_verts.append(vert) elif pos == 0 and vert not in new_verts: new_verts.append(vert) # split intersected faces new_edges = [] for face in self.faces[:]: split_verts = [v for v in face.verts for nv in new_verts if nv is v] assert 0 <= len(split_verts) <= 2, split_verts if len(split_verts) == 2: for he in face.halffaces[0].halfedges: if set(he.verts) == set(split_verts): new_edges.append(he.edge) break else: new_edge = face.split(split_verts) new_edges.append(new_edge) # split cells for cell in self.cells[:]: split_edges = [e for e in cell.edges if e in new_edges] if len(split_edges) > 2: new_cell = cell.split(split_edges, split_id) self.cells.append(new_cell) else: new_cell = None if indexpos is not None: for hf in cell.halffaces: for he in hf.halfedges: if he.edge not in split_edges: sd1 = -plane.signed_distance(he.verts[0].point) # the verts of the edge e cannot be both in range epsilon to the plane, # otherwise e would be in split_edges, so only test one vert for epsilon if sd1 > epsilon or sd1 >= -epsilon and plane.signed_distance(he.verts[1].point) < 0: if new_cell is not None: new_cell.indices = cell.indices new_cell = cell elif new_cell is None: break indices = list(cell.indices) indices[indexpos] += 1 new_cell.indices = tuple(indices) break else: continue break def distances(self, plane): ddict = {} for v in self.verts: dist = plane.signed_distance(v.point) ddict.setdefault(roundeps(dist), []).append(dist) return sorted(sum(dists)/len(dists) for dists in ddict.values()) def scale(self, value): for v in self.verts: v.point = v.point.scaled(value) def remove_cells(self, func): self._cells = [c for c in self._cells if not func(c)] pybik-3.0/buildlib/py2pyx.py0000775000175000017500000002316313065405455016274 0ustar barccbarcc00000000000000#!/usr/bin/python3 #-*- coding:utf-8 -*- # Copyright © 2009, 2011-2014, 2016-2017 B. Clausius # # 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 . import sys, os, re from contextlib import contextmanager from .pxmakros import PxMakros from pybiklib.debug import DEBUG_NOLINENO class Py2pyxError (Exception): pass class OpenWriteLazy: def __init__(self, path): self.path = path self.delayed_text = '' self.file = None def write_delayed(self, text): self.delayed_text += text def write(self, text): if self.file is None: if self.path: print('generating', self.path) self.file = open(self.path, 'wt', encoding='utf-8') else: self.file = sys.stdout if self.delayed_text: self.file.write(self.delayed_text) self.delayed_text = '' self.file.write(text) def close(self): if self.file is not None: self.file.close() class PxParser: # groups in match objects and patterns # 1: leading space # 2: px command (includes 3 and 4) # 3: pxd flag # 4: px key # 5: px argument (includes 6 and 7) # 6: makro name # 7: makro argument re_pxline = re.compile(r'^( *)(#px *([a-z]?)(.)|)((\w*)\s*(.*?))\n$', flags=re.ASCII) # key: px command # value: # pattern for pyx-file or None (copy line), # count next lines or "count" (use px argument), fdict = { '+': (r'\5', 0), '/': (r'\5', 1), '>': (r'#\2\5', 0), '-': (r'#\2\5', 1), ':': (r'#\2\5', '*'), '.': (r'#\2\5', 0), } fdict['#'] = fdict['>'] char_to_makro = { 'd': 'PXDFILE', 'h': 'HFILE', 'c': 'CFILE', '': '', } def __init__(self): self.next_cntlines = 0 def parse_line(self, line): makro = None makrospec = None makroarg = None match = self.re_pxline.match(line) if match.group(2): if self.next_cntlines == 0: # start px command makro = match.group(3) if makro == 'm': makro = match.group(6) makrospec = match.expand(r'\2\6') if not makro: raise Py2pyxError('makro name expected') makroarg = match.group(7) else: makro = self.char_to_makro[makro] makrospec = match.group(2) makroarg = match.group(5) elif self.next_cntlines == 1: raise Py2pyxError('#px-command found, normal line expected') elif self.next_cntlines == '*': # end px command if match.group(4) != '.': raise Py2pyxError('closing #px-command or normal line expected') if match.group(3): raise Py2pyxError('closing #px-command with makro') makro = '' else: assert False pyxpat, self.next_cntlines = self.fdict[match.group(4)] elif self.next_cntlines == 0: # echo normal line makro = '' pyxpat = r'\2\5' self.next_cntlines = 0 elif self.next_cntlines == 1: # oneline px block makroarg = match.group(5) pyxpat = r'#\2\5' self.next_cntlines = 0 elif self.next_cntlines == '*': # multiline px block makroarg = match.group(5) pyxpat = r'#\2\5' else: assert False indent = match.group(1) pyxline = match.expand(pyxpat) return indent, makro, makrospec, makroarg, pyxline class PxGenerator (PxMakros): def __init__(self, pyxf, pxdf, pxhf, pxcf): self.pyxf = pyxf self.pxdf = pxdf self.pxhf = pxhf self.pxcf = pxcf self.pyx_indent = '' self.pxd_indent = '' self.px_skiplines = False self.makro = None self.makrolineno = None self.pyxline = None self.namespace = None def PYXFILE(self, line): if self.pyxline is None: self.pyxline = line elif not line.startswith('#'): if self.pyxline.startswith('#'): self.pyxline = line else: raise Py2pyxError('multiple pyx-file lines for source line not allowed: {!r}'.format(line)) def PYXFILE_finalize(self, indent): assert self.pyxline is not None if not self.pyxline or self.pyxline[0] == '#': self.makrospec = '' self.pyxf.write(self.pyx_indent + indent + self.pyxline + self.makrospec +'\n') self.pyxline = None def generate_lines(self, lineno, indent, makro, makrospec, makroarg, pyxline): if DEBUG_NOLINENO: lineno = 'X' self.makrospec = (' '+makrospec) if makrospec else '' if self.px_skiplines: pyxline = '#~ ' + pyxline self.PYXFILE(pyxline) if makro is not None: self.makro = getattr(self, makro, makro) self.makrolineno = 0 self.makrodata = None else: self.makrolineno += 1 if self.makro == 'IF': bvalue = eval(makroarg) assert type(bvalue) is bool self.px_skiplines = not bvalue elif self.makro == 'IF_END': self.px_skiplines = False elif self.px_skiplines: pass elif self.makro == 'INDENT': self.pyx_indent = ' ' elif self.makro == 'DEDENT': self.pyx_indent = '' elif self.makro == 'DINDENT': self.pxd_indent = ' ' elif self.makro == 'DDEDENT': self.pxd_indent = '' elif callable(self.makro): if self.makro(indent, makroarg, lineno): self.makro = None elif self.makro: raise Py2pyxError('unknown makro: {!s}({!r})'.format(self.makro, makroarg)) self.PYXFILE_finalize(indent) def create_pyx(src_path, pyx_path, pxd_path, pxh_path, pxc_path): errors = 0 openr = lambda path: open(path, 'rt', encoding='utf-8') @contextmanager def openw(path): owl = OpenWriteLazy(path) try: yield owl finally: owl.close with openr(src_path) as srcf, openw(pyx_path) as pyxf, openw(pxd_path) as pxdf, openw(pxh_path) as pxhf, openw(pxc_path) as pxcf: pxdf.write_delayed('#generated from: {}\n\n'.format(src_path)) pxhf.write_delayed('//generated from: {}\n\n'.format(src_path)) pxcf.write_delayed('//generated from: {}\n\n'.format(src_path)) pxparser = PxParser() pxgenerator = PxGenerator(pyxf, pxdf, pxhf, pxcf) for lineno, line in enumerate(srcf): try: indent, makro, makrospec, makroarg, pyxline = pxparser.parse_line(line) except Py2pyxError as e: print('%s:%d:'%(src_path, lineno+1), e, file=sys.stderr) print(' invalid line:', repr(line), file=sys.stderr) indent = '' makro = makrospec = makroarg = None pyxline = '' errors += 1 except Exception as e: print('%s:%d:'%(src_path, lineno+1), e, file=sys.stderr) print(' line:', repr(line), file=sys.stderr) raise try: pxgenerator.generate_lines(lineno+1, indent, makro, makrospec, makroarg, pyxline) except Py2pyxError as e: print('%s:%d:'%(src_path, lineno+1), e, file=sys.stderr) print(' invalid line:', repr(line), file=sys.stderr) errors += 1 except Exception as e: print('%s:%d:'%(src_path, lineno+1), e, file=sys.stderr) print(' line:', repr(line), file=sys.stderr) raise if errors: raise Py2pyxError('create_pyx failed with %s errors' % errors) def main(argv): if not (1 < len(argv) <= 5): print('usage:', os.path.basename(__file__), 'python-file [pyx-filename [pxd-filename [h-filename [c-filename]]]]', file=sys.stderr) return 1 arg_src = argv[1] arg_dst = argv[2] if len(argv) > 2 else None arg_pxd = argv[3] if len(argv) > 3 else None arg_pxh = argv[4] if len(argv) > 4 else None arg_pxc = argv[5] if len(argv) > 5 else None if not os.path.exists(arg_src): print('error:', arg_src, 'does not exist', file=sys.stderr) return 1 create_pyx(arg_src, arg_dst, arg_pxd, arg_pxh, arg_pxc) return 0 if __name__ == '__main__': sys.exit(main(sys.argv)) pybik-3.0/buildlib/modeldata.py0000775000175000017500000010012613171463711016743 0ustar barccbarcc00000000000000#!/usr/bin/python3 # -*- coding: utf-8 -*- # Copyright © 2012-2017 B. Clausius # # 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 . import sys, os sys.path.insert(0, '.') import pickletools from multiprocessing import Pool, cpu_count from collections import defaultdict from bisect import bisect_left from array import array from itertools import chain from math import sin, cos, pi from contextlib import suppress from pybiklib.debug import DEBUG_MSG, DEBUG_INDEXONLY, DEBUG_MODELFAST, DEBUG_MAXSIZE5 from pybiklib.utils import epsilon, filebyteorder, get_texcoords_range # executable script needs absolute imports from buildlib.geom import roundeps, Vector from buildlib.modeldef import modeldefs minsize = 1 maxsize = 10 if DEBUG_MAXSIZE5: maxsize = 5 dumps = None def make_dumps(reproducible): global dumps import io import pickle if not reproducible: dumps = pickle.dumps return try: class _Pickler (pickle._Pickler): def save_dict(self, obj): if self.bin: self.write(pickle.EMPTY_DICT) else: # proto 0 -- can't use EMPTY_DICT self.write(pickle.MARK + pickle.DICT) self.memoize(obj) self._batch_setitems(sorted(obj.items(), key=lambda v: str(v))) pickle._Pickler.dispatch[dict] = save_dict def _dumps(obj, protocol=None, *, fix_imports=True): f = io.BytesIO() try: _Pickler(f, protocol, fix_imports=fix_imports).dump(obj) return f.getvalue() except Exception: print('warning: using undocumented interface in module pickle failed, models will not be reproducible:') sys.excepthook(*sys.exc_info()) return pickle.dumps(obj, protocol, fix_imports=fix_imports) _dumps({1:2, 3:4}) except Exception: print('warning: using undocumented interface in module pickle failed, models will not be reproducible:') sys.excepthook(*sys.exc_info()) _dumps = pickle.dumps dumps = _dumps def equal_vector_fuzzy(v1, v2): for v1k, v2k in zip(v1, v2): if abs(v1k - v2k) > epsilon: return False return True class VectorData: __slots__ = 'vectors origs indices sorted cnts dups toindex'.split() def __init__(self): self.vectors = [] self.origs = {} self.indices = [] self.sorted = [] self.cnts = 0 self.dups = 0 self.toindex = self.toindex_fast if DEBUG_MODELFAST else self.toindex_dedup def toindex_dedup(self, ovector): with suppress(KeyError): return self.origs[ovector] vector = ovector.rounded() vector = [(0. if v == 0. else v) for v in vector] # 0.0 == -0.0 self.cnts += 1 si = bisect_left(self.sorted, vector) i = len(self.vectors) if si < i and self.sorted[si] == vector: self.dups += 1 i = self.indices[si] else: self.vectors.append(vector) self.sorted.insert(si, vector) self.indices.insert(si, i) self.origs[ovector] = i return i def toindex_fast(self, ovector): with suppress(KeyError): return self.origs[ovector] vector = ovector.rounded() i = len(self.vectors) self.vectors.append(vector) self.origs[ovector] = i return i class ModelFactory: mtype_attributes = ( 'name', 'mformat', 'sizenames', 'defaultsize', 'symmetries', 'axes', 'symbols', 'symbolsI', 'faces', 'facekeys', 'normal_rotation_symbols', 'rotation_symbols', 'rotation_matrices', 'face_permutations', 'default_rotation', 'reversepick', 'slicesmode') def __init__(self, modeldef): self.modeldef = modeldef() self.create_rotations() def __getattr__(self, attrname): return getattr(self.modeldef, attrname) def _getattr(self, attrname): value = getattr(self, attrname) if attrname == 'axes': return tuple(tuple(v) for v in value) return value def getattrs(self): return {attr: self._getattr(attr) for attr in self.mtype_attributes} @staticmethod def _matrix_equal(m1, m2): for line1, line2 in zip(m1, m2): for value1, value2 in zip(line1, line2): if abs(value1 - value2) > epsilon: return False return True @staticmethod def _mult_matrix_vector3(matrix, vector): return Vector(sum(matrix[i][k]*vector[k] for k in range(3)) for i in range(3)) @staticmethod def _mult_matrix(matrix1, matrix2): return [[sum(matrix1[i][k]*matrix2[k][j] for k in range(4)) for j in range(4)] for i in range(4)] @staticmethod def _create_rotation(axis, angle): angle = angle / 180. * pi sa = sin(angle) ca = cos(angle) e_ca = 1 - ca n1 = axis[0] n2 = axis[1] n3 = axis[2] m = [ [n1*n1*e_ca + ca, n1*n2*e_ca - n3*sa, n1*n3*e_ca + n2*sa, 0.], [n2*n1*e_ca + n3*sa, n2*n2*e_ca + ca, n2*n3*e_ca - n1*sa, 0.], [n3*n1*e_ca - n2*sa, n3*n2*e_ca + n1*sa, n3*n3*e_ca + ca, 0.], [0., 0., 0., 1.], ] #XXX: try to keep the matrix clean for y, line in enumerate(m): for x, value in enumerate(line): if abs(value) < epsilon: m[y][x] = 0. return m def _create_permutation(self, matrix): permutation = {} for sym1, symI1, axis1 in zip(self.symbols, self.symbolsI, self.axes): for sym2, symI2, axis2 in zip(self.symbols, self.symbolsI, self.axes): axisR = self._mult_matrix_vector3(matrix, axis1) if axisR.equalfuzzy(axis2): permutation[sym2] = sym1 permutation[symI2] = symI1 elif axisR.inversfuzzy(axis2): permutation[symI2] = sym1 permutation[sym2] = symI1 return permutation def create_rotations(self): prim = [] for axis, sym, symI, symmetry in zip(self.axes, self.symbols, self.symbolsI, self.symmetries): angle = 360. / symmetry # for some models (towers, bricks) rotations are equal to the invers rotations, # but the symbols are different prim.append((sym, self._create_rotation(axis, angle))) prim.append((symI, self._create_rotation(axis, -angle))) self.normal_rotation_symbols = {'': ''} transform = [['', [[1.,0.,0.,0.],[0.,1.,0.,0.],[0.,0.,1.,0.],[0.,0.,0.,1.]]]] for sp, p in prim: transform.append([sp, p]) for sm, m in transform: for sp, p in prim: n = self._mult_matrix(m, p) sn = sm + sp for st, t in transform: if self._matrix_equal(t, n): self.normal_rotation_symbols[sn] = st break else: self.normal_rotation_symbols[sn] = sn transform.append([sn, n]) self.rotation_symbols = [s for s, m in transform] self.rotation_matrices = [m for s, m in transform] self.face_permutations = {s: self._create_permutation(m) for s, m in transform} def get_rotated_position(self, cells): rotated_position = {} centers = [c.center() for c in cells] for b, center in enumerate(centers): for sym, rotation in zip(self.rotation_symbols, self.rotation_matrices): coords = self._mult_matrix_vector3(rotation, center) for p, center2 in enumerate(centers): if equal_vector_fuzzy(center2, coords): if sym not in rotated_position: rotated_position[sym] = [0] * len(cells) rotated_position[sym][p] = b break else: assert False, 'not a permutation' return rotated_position def get_data(self, sizes, vectordata): polys = self.create_cells(sizes) data_cells_visible_faces = [[f.id for f in cell.faces if f.type == 'face'] for cell in polys.cells] polys_verts = [v.point for v in polys.verts] data_texranges_mosaic = [list(get_texcoords_range(polys_verts, self.normals[sym])) for sym in self.faces] data_rotated_position = self.get_rotated_position(polys.cells) data_cell_indices = [cell.indices for cell in polys.cells] data_cell_centers = [vectordata.toindex(cell.center()) for cell in polys.cells] data_pick_polygons = list(self.gl_pick_polygons(polys.cells, vectordata)) blocksdata = self.gl_block_data(polys, vectordata) return { 'rotated_position': data_rotated_position, 'cell_indices': data_cell_indices, 'cell_centers': data_cell_centers, 'cells_visible_faces': data_cells_visible_faces, 'texranges_mosaic': data_texranges_mosaic, 'blocksdata': blocksdata, 'facesdata': data_pick_polygons, } def gl_block_data(self, polys, vectordata): polys_faces = polys.faces def gl_block_data_cell(cell): def is_visible(vert): for hv in vert.halfverts: he = hv.halfedge hf = he.halfface if hv is he.halfverts[1] and hf.hdim is cell and not hf.face.type.endswith('_removed'): return True return False def gen_cedges(cell_halffaces): edgesdone = [] for hf in cell_halffaces: for he1 in hf.halfedges: if he1.edge not in edgesdone: he3 = he1.other hf3_face = he3.halfface.face edgesdone.append(he1.edge) if not (hf.face.type.endswith('_removed') and hf3_face.type.endswith('_removed')): v1_point = vectordata.toindex(he1.verts[1].point) v3_point = vectordata.toindex(he3.verts[1].point) yield polys_faces.index(hf.face), polys_faces.index(hf3_face), v1_point, v3_point def gen_vhalfface(halfface, vert): for hv in vert.halfverts: he = hv.halfedge hf = he.halfface if hv is he.halfverts[1] and hf is halfface: break else: assert False while True: assert hv.vert is vert yield polys_faces.index(hf.face) he = hv.halfedge.other hv = he.halfverts[0].other assert hv.vert is vert hf = he.halfface if hf is halfface: break def gen_cverts(cell_halffaces): vertsdone = [] for hf in cell_halffaces: for he1 in hf.halfedges: he3 = he1.other hf3 = he3.halfface v1 = he1.verts[1] v3 = he3.verts[1] if v1 not in vertsdone: vertsdone.append(v1) if is_visible(v1): vertdata = [f for f in gen_vhalfface(hf, v1)] yield vectordata.toindex(v1.point), vertdata if v3 not in vertsdone: vertsdone.append(v3) if is_visible(v3): vertdata = [f for f in gen_vhalfface(hf3, v3)] yield vectordata.toindex(v3.point), vertdata def gen_cfaces(cell_halffaces): c_faces_label = [] c_faces_black = [] for hf in cell_halffaces: verts = [vectordata.toindex(v.point) for v in hf.verts] if hf.face.type == 'face': c_faces_label.append((polys_faces.index(hf.face), self.faces.index(hf.face.id), verts)) elif hf.face.type == 'cut': c_faces_black.append((polys_faces.index(hf.face), verts)) else: assert hf.face.type.endswith('_removed') return c_faces_label, c_faces_black c_faces_label, c_faces_black = list(gen_cfaces(cell.halffaces)) c_edges = list(gen_cedges(cell.halffaces)) c_verts = list(gen_cverts(cell.halffaces)) return c_faces_label, c_faces_black, c_edges, c_verts return [gl_block_data_cell(cell) for cell in polys.cells] def gl_pick_polygons(self, cells, vectordata): black_faces = [] for cellidx, cell in enumerate(cells): cell_facesdata = [] for halfface in cell.halffaces: if halfface.face.type == 'face': symbol = halfface.face.id face = self.faces.index(symbol) visible_face_indices = [i for i, he in enumerate(halfface.halfedges) if he.other.halfface.face.type == 'face'] else: if halfface.face in black_faces: continue black_faces.append(halfface.face) face = halfface.face.id edges_iverts = [vectordata.toindex(he.verts[0].point) for he in halfface.halfedges] if halfface.face.type != 'face': cell_facesdata.append([face, None, edges_iverts]) continue if len(visible_face_indices) == 0: picktype = 0 elif len(visible_face_indices) == 1: if len(edges_iverts) == 3: picktype = 1 elif len(edges_iverts) == 4: picktype = 2 elif len(edges_iverts) == 6: picktype = 4 else: assert False, len(edges_iverts) i = visible_face_indices[0] edges_iverts = edges_iverts[i:] + edges_iverts[:i] elif len(visible_face_indices) == 2: assert 3 <= len(edges_iverts) <= 5, len(edges_iverts) i = visible_face_indices[0] if len(edges_iverts) < 5: picktype = 3 else: picktype = 5 if i+1 == visible_face_indices[1]: edges_iverts = edges_iverts[i:] + edges_iverts[:i] elif visible_face_indices == [0, len(edges_iverts)-1]: i = visible_face_indices[1] edges_iverts = edges_iverts[i:] + edges_iverts[:i] else: picktype = -1 else: picktype = -1 cell_facesdata.append([face, picktype, edges_iverts]) yield cell_facesdata class Dedup: def __init__(self): self.dedup_data = defaultdict(list) self.cnt_dups = 0 self.cnt_values = 0 def _float(self, value): self.cnt_values += 1 dddlt = self.dedup_data['f'] value = roundeps(value) if value == 0.0: # 0.0 == -0.0 value = 0.0 # for reproducible build didx = bisect_left(dddlt, value) if didx < len(dddlt) and dddlt[didx] == value: self.cnt_dups += 1 return dddlt[didx], True, 'f' else: dddlt.insert(didx, value) return value, False, 'f' def _recursion(self, value, iterable): dedup = True vtypes = [] for k, v in iterable: v, d, t = self.dedup(v) dedup = dedup and d vtypes.append(t) value[k] = v return dedup, '('+''.join(vtypes)+')' def _replace(self, value, dedup, vtype): self.cnt_values += 1 dddlt = self.dedup_data[vtype] try: return self._replace_bisect(dddlt, value, dedup, vtype) except TypeError: return self._replace_index(dddlt, value, dedup, vtype) def _replace_index(self, dddlt, value, dedup, vtype): if not dedup: #assert value not in dddlt dddlt.append(value) return value, False, vtype try: didx = dddlt.index(value) except ValueError: dddlt.append(value) return value, False, vtype else: dvalue = dddlt[didx] self.cnt_dups += 1 return dvalue, True, vtype def _replace_bisect(self, dddlt, value, unused_dedup, vtype): didx = bisect_left(dddlt, value) try: dvalue = dddlt[didx] except IndexError: dddlt.append(value) return value, False, vtype if value == dvalue: self.cnt_dups += 1 return dvalue, True, vtype else: dddlt.insert(didx, value) return value, False, vtype def dedup(self, value): if type(value) is dict: value = {(sys.intern(k) if type(k) is str else k):v for k,v in value.items()} dedup, vtype = self._recursion(value, value.items()) return self._replace(value, dedup, 'd' + vtype) elif type(value) is list: dedup, vtype = self._recursion(value, enumerate(value)) return self._replace(tuple(value), dedup, 'a' + vtype) elif type(value) is tuple: value = list(value) dedup, vtype = self._recursion(value, enumerate(value)) return self._replace(tuple(value), dedup, 'a' + vtype) elif type(value) is float: return self._float(value) elif type(value) is int: return value, True, 'i' elif type(value) is str: return sys.intern(value), True, 's' elif type(value) is bool: return value, True, 'b' elif value is None: return value, True, 'n' else: assert False, type(value) def pool_functions(parallel, reproducible): pool = None if reproducible: print('warning: using undocumented interface in module pickle for reproducible build') try: if parallel > 1: pool = Pool(processes=parallel, initializer=make_dumps, initargs=[reproducible]) except OSError as e: print('process pool not available ({}):'.format(e)) print(' deactivating multiprocessing') sys.stdout.flush() # when Pool(…) fails this line is if pool is not None: return pool.imap_unordered else: make_dumps(reproducible) return map #XXX: speedup parallel builds, longer jobs first fileorder = 'b111 d000000 b101 b000 b010 p111111 p101111 b100 t1111 b110 p010000 b011 p000000 t0000 b001 t1011 t0100'.split() def get_datafilename(Factory, sizes): if DEBUG_MODELFAST: return 'f{:02}{}{}'.format(modeldefs.index(Factory)+1, Factory.fileclass, ''.join(str(s-1) for s in sizes)) else: sizes = Factory.fileclass + ''.join(str((s-1)%2) for s in sizes) try: priority = fileorder.index(sizes) + 1 except ValueError: priority = 99 return 'd{:02}'.format(priority) + sizes def enum_modelfiles(Factory): def tuples(maxlen, part=()): if maxlen == len(part): yield part else: for i in range(minsize, maxsize+1): yield from tuples(maxlen, part+(i,)) for size in tuples(len(Factory.sizenames)): norm_size, sizes = Factory.norm_sizes(size) if sizes is None: continue filename = get_datafilename(Factory, sizes) yield filename, sizes, size, norm_size def pool_enum_modelfiles(dirname, testfunc): ignored = [] modelfiles = [] for Factory in modeldefs: for filename, *unused in enum_modelfiles(Factory): filename = os.path.join(dirname, filename) if filename in modelfiles or filename in ignored: continue if testfunc(filename): modelfiles.append(filename) else: ignored.append(filename) if modelfiles: for filename in sorted(ignored): print('skipping', filename) return sorted(modelfiles) def pool_create_modelfiledata(path): filename = os.path.basename(path) savedata = {} vectordata = VectorData() for Factory in modeldefs: sizes_list = [] factory = None for _filename, sizes, *unused in enum_modelfiles(Factory): if _filename != filename: continue if sizes in sizes_list: continue sizes_list.append(sizes) if factory is None: factory = ModelFactory(Factory) savedata.setdefault(factory.type, {})[sizes] = factory.get_data(sizes, vectordata) return savedata, vectordata.vectors, vectordata.cnts, vectordata.dups def format_seconds(seconds): if seconds > 60: return '{:.0f}m {:.2f}s'.format(*divmod(seconds, 60)) else: return '{:.2f}s'.format(seconds) def pool_check_compare_modelfiledata(check_savedata, check_vectors, savedata, vectors): if savedata == check_savedata and vectors == check_vectors: return 'check: pass full' for mtype, check_value_mtype in list(check_savedata.items()): if mtype not in savedata: del check_savedata[mtype] else: value_mtype = savedata[mtype] for sizes, check_value_sizes in list(check_value_mtype.items()): if sizes not in value_mtype: del check_value_mtype[sizes] else: value_sizes = value_mtype[sizes] for attr in 'block_polygons', 'pick_polygons': # older versions may have this attrs with suppress(KeyError): del check_value_sizes[attr] for attr in 'facesdata', 'blocksdata', 'normals': with suppress(KeyError): del check_value_sizes[attr] del value_sizes[attr] for mtype, value_mtype in list(savedata.items()): if mtype not in check_savedata: del savedata[mtype] else: for sizes in list(value_mtype.keys()): if sizes not in check_savedata[mtype]: del value_mtype[sizes] if savedata == check_savedata: return 'check: pass weak' return 'check: data different' def write_diff(filename, check_savedata, savedata): from difflib import unified_diff from pprint import pformat columns = int(os.environ.get('COLUMNS') or '80') - 1 diff = unified_diff(pformat(check_savedata, width=columns).splitlines(), pformat(savedata, width=columns).splitlines(), fromfile=filename, tofile=''.format(__file__), n=3, lineterm='') filename += '.diff' isempty = True with open(filename, 'wt') as file: for line in diff: print(line, file=file) isempty = False if isempty and os.path.exists(filename): os.remove(filename) def pool_create_modelfile(filename, pickle_protocol, check): import time seconds = time.process_time() if check: import pickle import pybiklib.model try: with open(filename, 'rb') as datafile: check_savedata = pickle.load(datafile) check_vectors = pybiklib.model.Model.read_vectors(datafile) except FileNotFoundError: check_savedata = {} check_vectors = [] check = (check_savedata, check_vectors) else: check = None savedata, vectors, cnt_vectors, dup_vectors = pool_create_modelfiledata(filename) vals = dups = '' if not DEBUG_MODELFAST: dedup = Dedup() savedata = dedup.dedup(savedata)[0] if DEBUG_MSG: vals = '\n vals: %6s vec: %6s' % (dedup.cnt_values, cnt_vectors) dups = '\n dups: %6s %6s' % (dedup.cnt_dups, dup_vectors) bsavedata = dumps(savedata, pickle_protocol) datasize = ['{:.1f} kb'.format(len(bsavedata) / 1000), '---'] vectors = array('f', chain.from_iterable(vectors)) vectorssize = '{:.1f} kb'.format(len(vectors) * vectors.itemsize / 1000) if not DEBUG_MODELFAST: bsavedata = pickletools.optimize(bsavedata) datasize[1] = '{:.1f} kb'.format(len(bsavedata) / 1000) seconds = time.process_time() - seconds if check is None: vlen = array('I', [len(vectors)]) if sys.byteorder != filebyteorder: vlen.byteswap() vectors.byteswap() with open(filename, 'wb') as datafile: datafile.write(bsavedata) vlen.tofile(datafile) vectors.tofile(datafile) message = 'generated' else: message = pool_check_compare_modelfiledata(check_savedata, check_vectors, savedata, vectors) write_diff(filename, check_savedata, savedata) return filename, seconds, '{} {:{}} ({:>9}, {:>9}), {:>9}, {:7} vectors {:>8}{}{}'.format( message, filename, len(os.path.dirname(filename))+11, datasize[0], datasize[1], format_seconds(seconds), len(vectors) / 3, vectorssize, vals, dups) def pool_create_indexdata(): savedata_type = {} savedata_types = [] savedata_size = {} savedata_sizes = {} savedata_facenames = [] savedata = {'type': savedata_type, 'types': savedata_types, 'normsize': savedata_size, 'sizes': savedata_sizes, 'facenames': savedata_facenames, } facekeys = [] for Factory in modeldefs: factory = ModelFactory(Factory) savedata_type[factory.type] = factory.getattrs() savedata_types.append(factory.type) savedata_size_type = {} savedata_sizes_type = {} savedata_size[factory.type] = savedata_size_type savedata_sizes[factory.type] = savedata_sizes_type for facekey, facename in zip(factory.facekeys, factory.facenames): if facekey not in facekeys: facekeys.append(facekey) savedata_facenames.append((facekey, facename)) for filename, sizes, size, norm_size in enum_modelfiles(Factory): savedata_size_type[size] = norm_size if norm_size in savedata_sizes_type: assert [sizes, filename] == savedata_sizes_type[norm_size] else: savedata_sizes_type[norm_size] = [sizes, filename] size_range = ((min(vals), max(vals)) for vals in zip(*savedata_size_type.keys())) defaultsize = savedata_type[factory.type]['defaultsize'] defaultsize = tuple(max(smin, min(s, smax)) for s, (smin, smax) in zip(defaultsize, size_range)) savedata_type[factory.type]['defaultsize'] = defaultsize return savedata def pool_check_compare_indexdata(check, savedata): if check == savedata: return 'check: pass full' def remove_mtype(data, mtype): del data['normsize'][mtype] del data['sizes'][mtype] del data['type'][mtype] for mtype in check['types']: if mtype not in savedata['types']: remove_mtype(check, mtype) for mtype in savedata['types']: if mtype not in check['types']: remove_mtype(savedata, mtype) for attr in 'normsize','sizes',: for mtype, check_value in check[attr].items(): savedata_value = savedata[attr][mtype] for key in list(check_value.keys()): if key not in savedata_value: del check_value[key] if check == savedata: return 'check: pass weak' return 'check: data different' def pool_create_indexfile(filename, pickle_protocol, check): import time seconds = time.process_time() if check: import pybiklib.model pybiklib.model.Model.load_index() check = pybiklib.model.Model.cache_index else: check = None savedata = pool_create_indexdata() vals = dups = '' if not DEBUG_MODELFAST: dedup = Dedup() savedata = dedup.dedup(savedata)[0] if DEBUG_MSG: vals = '\n vals: %6s' % dedup.cnt_values dups = '\n dups: %6s' % dedup.cnt_dups bsavedata = dumps(savedata, pickle_protocol) datasize = ['{:.1f} kb'.format(len(bsavedata) / 1000), '---'] if not DEBUG_MODELFAST: bsavedata = pickletools.optimize(bsavedata) datasize[1] = '{:.1f} kb'.format(len(bsavedata) / 1000) seconds = time.process_time() - seconds if check is None: with open(filename, 'wb') as datafile: datafile.write(bsavedata) message = 'generated' else: message = pool_check_compare_indexdata(check, savedata) write_diff(filename, check, savedata) return filename, seconds, '{} {:{}} ({:>9}, {:>9}), {:>9}{}{}'.format( message, filename, len(os.path.dirname(filename))+11, datasize[0], datasize[1], format_seconds(seconds), vals, dups) def pool_run(args): func, *args = args return func(*args) def get_indexfilename(dirname): return os.path.join(dirname, 'f00index' if DEBUG_MODELFAST else 'd00index') def create_modeldata(dirname, testfunc=None, parallel=1, pickle_protocol=-1, reproducible=False, check=False): # prepare jobs if testfunc is None: testfunc = lambda arg: True if DEBUG_INDEXONLY: modelfiles = [] else: modelfiles = pool_enum_modelfiles(dirname, testfunc) jobs = [(pool_create_modelfile, m, pickle_protocol, check) for m in modelfiles] indexfilename = get_indexfilename(dirname) jobs.append((pool_create_indexfile, indexfilename, pickle_protocol, check)) # run jobs if parallel is True: parallel = cpu_count() if not parallel or parallel < 1: parallel = 1 realparallel = min(parallel, len(jobs)) print('using {} / {} processes'.format(realparallel, parallel)) imap_model = pool_functions(realparallel, reproducible) result = [] for filename, seconds, lines in imap_model(pool_run, jobs): result.append((filename, seconds)) print(lines) sys.stdout.flush() if DEBUG_MSG and not DEBUG_MODELFAST: result.sort(key=lambda fs: fs[1], reverse=True) if result != sorted(result, key=lambda fs: fs[0]): print('warning: reorder jobs to optimize parallel build') for filename, seconds in result: print(' ', os.path.basename(filename), format_seconds(seconds)) if __name__ == '__main__': minsize = 1 maxsize = 5 create_modeldata('data/models', check=True, ) pybik-3.0/setup.py0000775000175000017500000016026013173146456014376 0ustar barccbarcc00000000000000#!/usr/bin/python3 # -*- coding: utf-8 -*- # Copyright © 2009, 2011-2017 B. Clausius # # 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 . # pylint: disable=W0201 from glob import glob import os import sys import sysconfig from contextlib import suppress from collections import OrderedDict use_setuptools = not os.getenv('PYBIK_NO_SETUPTOOLS') if use_setuptools: try: import setuptools except ImportError: use_setuptools = False if not use_setuptools: from distutils.core import setup from distutils.cmd import Command from distutils.extension import Extension from distutils import dist from distutils.command.install import install as install_orig else: print('using setuptools') from setuptools import setup from setuptools import Command from setuptools import Extension from setuptools import dist from setuptools.command.install import install as install_orig from distutils.dir_util import remove_tree from distutils.file_util import move_file from distutils.dep_util import newer, newer_group from distutils.log import warn, info, error, debug import distutils.command.build import distutils.command.build_ext import distutils.command.build_scripts import distutils.command.install_data import distutils.command.install_lib import distutils.command.clean import distutils.command.sdist #from Cython.Distutils import build_ext #print('using', 'setuptools' if use_setuptools else 'distutils') # the clean command should leave a clean tree sys.dont_write_bytecode = True os.environ['PYTHONDONTWRITEBYTECODE'] = '1' import buildlib.utils import pybiklib from pybiklib import config os.environ['QT_SELECT'] = '5' class Distribution (distutils.dist.Distribution): def __init__(self, attrs=None): self.bug_contact = None self.appmeta_templates = None #XXX: Mangle alpha/beta/rc versions to PEP440 version scheme for setuptools, pip, pypi ... version = attrs['version'] pep440 = version.replace('~alpha', 'a').replace('~beta', 'b').replace('~rc', 'rc') attrs['version'] = pep440 distutils.dist.Distribution.__init__(self, attrs=attrs) if version != pep440: self.metadata.version = version class build(distutils.command.build.build): """Adds extra commands to the build target.""" user_options = distutils.command.build.build.user_options + [ ('inplace', 'i', 'ignore build-lib and put compiled modules into the source directory'), #XXX: In Python 3.5 distutils.command.build.build has a parallel option ('parallel=', None, 'number of parallel build jobs or "True"'), ('arch-only', None, 'Build only architecture dependent files'), ('indep-only', None, 'Build only architecture independent files'), ('pickle-protocol=', None, 'Pickle protocol for modeldata (default: highest protocol)'), ('maxsize=', None, 'Maximum model size (default: 10)'), ('reproducible', None, 'Build modeldata reproducible (experimental)'), ('variants=', None, 'Build extension variants'), ('armhf', None, 'Cross build for armhf'), ('debugflags=', None, 'Comma-separated list of debug flags'), ] boolean_options = distutils.command.build.build.boolean_options + [ 'inplace', 'arch-only', 'indep-only', 'reproducible', 'armhf', ] def has_pure_modules(self): return self.indep_only and distutils.command.build.build.has_pure_modules(self) _commands_dict = dict(distutils.command.build.build.sub_commands) # pylint: disable=W0212 sub_commands = [('build_py', has_pure_modules), ('build_ext', lambda self: self.arch_only and self._commands_dict['build_ext'](self)), ('build_scripts', lambda self: self.indep_only and self._commands_dict['build_scripts'](self)), ('build_models', lambda self: self.indep_only), ('build_appicons',lambda self: self.indep_only and not self.inplace), ('build_i18n', lambda self: self.indep_only), ('build_appmeta', lambda self: self.indep_only), ('build_man', lambda self: self.indep_only and not self.inplace), ] # pylint: enable=W0212 def initialize_options(self): distutils.command.build.build.initialize_options(self) self.inplace = 0 self.parallel = None self.arch_only = False self.indep_only = False self.pickle_protocol = '-1' self.maxsize = None self.reproducible = False self.variants = None self.armhf = False self.debugflags = None def finalize_options(self): # In Python 3.5 distutils.command.build.build has a parallel option # convert 'true' to True before the base class fails if isinstance(self.parallel, str) and self.parallel.lower() == 'true': self.parallel = True distutils.command.build.build.finalize_options(self) if not self.arch_only and not self.indep_only: self.arch_only = self.indep_only = True class build_csrc (distutils.command.build_ext.build_ext): description = 'build C source code with py2pyx and cython' accepted_variants = buildlib.utils.accepted_variants() user_options = distutils.command.build_ext.build_ext.user_options + [ ('cython-opts=', None, 'Cython options'), ('variants=', None, 'Build extension variants (comma-separated list of: %s)' % buildlib.utils.variant_string()), ('armhf', None, 'Cross build for armhf'), ('debugflags=', None, 'Comma-separated list of debug flags'), ] def initialize_options(self): distutils.command.build_ext.build_ext.initialize_options(self) self.inplace = None self.cython_opts = '' self.variants = None self.armhf = None self.debugflags = None self.cc_files = [] def finalize_options(self): # deactivate parallel build in Python 3.5, does not work with this command self.parallel = 1 distutils.command.build_ext.build_ext.finalize_options(self) self.set_undefined_options('build', ('inplace', 'inplace'), ('variants', 'variants'), ('armhf', 'armhf'), ('debugflags', 'debugflags'), ) if self.variants is None: self.variants = [] else: self.variants = self.variants.split(',') for v in self.variants: if v not in self.accepted_variants: raise ValueError('unknown variant: ' + v) if self.armhf: from distutils.util import get_platform self.build_lib = self.build_lib.replace(get_platform(), 'linux-armv7l') self.build_temp = self.build_temp.replace(get_platform(), 'linux-armv7l') self.cython_opts = self.cython_opts.split() import pybiklib.debug if self.debugflags is not None: pybiklib.debug.set_flagstring(self.debugflags) # aliases groups = [] aliases = OrderedDict({'': ''}) for v in buildlib.utils.variants: if v['type'] is None or v['group'] in groups: continue groups.append(v['group']) if v['type'] == 'enum': for a, va in list(aliases.items()): aliases[a] = va + (v['id'] if v['group'] != 'glvariant' else '???') for ve in buildlib.utils.variants: if ve['type'] == 'enum' and ve['group'] == v['group']: aliases[a+ve['id']] = va+ve['id'] elif v['type'] == 'bool': for a, va in list(aliases.items()): aliases[a+v['id']] = va+v['id'] self.aliases = OrderedDict((k,v) for k,v in aliases.items() if k != v) def make_files(self, infiles, outfiles, func, args, exec_msg=None, skip_msg=None, level=1): """Works like make_file, but for operations that generate one or more output files. """ if skip_msg is None: skip_msg = "skipping %s (inputs unchanged)" % outfiles if isinstance(infiles, str): infiles = (infiles,) elif not isinstance(infiles, (list, tuple)): raise TypeError("'infiles' must be a string, or a list or tuple of strings") if exec_msg is None: exec_msg = "generating %s from %s" % (outfiles, ', '.join(infiles)) if self.force or any(newer_group(infiles, outfile) for outfile in outfiles): self.execute(func, args, exec_msg, level) else: debug(skip_msg) def compare_file(self, filename1, filename2): if self.force or not os.path.exists(filename2): return False with open(filename1, 'rb') as file1, open(filename2, 'rb') as file2: return file1.read() == file2.read() @staticmethod def run_py2pyx(py_file, pyx_file, pxd_file, pxm_file, pxc_file): info('py2pyx: %s --> %s' % (py_file, pyx_file)) from buildlib.py2pyx import create_pyx, Py2pyxError try: create_pyx(py_file, pyx_file, pxd_file, pxm_file, pxc_file) except Py2pyxError as e: error("error: %s", e) sys.exit(1) identifier_translate = bytes((i if bytes([i]).isalnum() else ord('_')) for i in range(256)) @classmethod def replace_cwd(cls, filename): with open(filename, 'rb') as f: text = f.read() cwdb_esc = bytes(ord(c) for c in os.getcwd()[:32] if ord(c)<128).translate(cls.identifier_translate) text = text.replace(os.getcwdb(), b'/tmp').replace(cwdb_esc, b'_tmp') with open(filename, 'wb') as f: f.write(text) def run_cython(self, cython_opts, infile, outfile): from Cython.Compiler.CmdLine import parse_command_line from Cython.Compiler.Main import compile info('cython: %s --> %s' % (infile, outfile)) args = ['-3', '-o', outfile] + cython_opts + [infile] options, unused_sources = parse_command_line(args) try: result = compile([infile], options) except Exception as e: error("error: %s", e) sys.exit(1) if result.num_errors > 0: sys.exit(1) self.replace_cwd(outfile) def build_pyx_(self, py_file, pyx_file, pxd_file, pxm_file, pxc_file): pxd_file_tmp = pxd_file + '.tmp' pxm_file_tmp = pxm_file + '.tmp' pxc_file_tmp = pxc_file + '.tmp' self.run_py2pyx(py_file, pyx_file, pxd_file_tmp, pxm_file_tmp, pxc_file_tmp) for px_file, px_file_tmp in ((pxd_file, pxd_file_tmp), (pxm_file, pxm_file_tmp), (pxc_file, pxc_file_tmp)): if os.path.exists(px_file_tmp): if self.compare_file(px_file_tmp, px_file): os.remove(px_file_tmp) info("unchanged file '%s'", px_file) else: if os.path.exists(px_file): os.remove(px_file) move_file(px_file_tmp, px_file) elif os.path.exists(px_file): os.remove(px_file) def build_pyx(self, py_file, pyx_file, pxd_file, pxm_file, pxc_file): self.mkpath(os.path.dirname(pyx_file)) self.make_files([py_file], pyx_file, self.build_pyx_, (py_file, pyx_file, pxd_file, pxm_file, pxc_file)) @staticmethod def find_qt_command(command): from shutil import which return which(command) or which(command+'-qt5') or command def create_extension_variant(self, extension, variantflags, variant_map): variantstr = ''.join(variantflags) info('generating extension %r with variant %r', extension.name, variantstr) def filename_copy(filename): return os.path.join(self.build_temp, filename) def make_copy(in_file, out_file): self.mkpath(os.path.dirname(out_file)) self.copy_file(in_file, out_file) def filename_variant(base, ext): if '_' in base.lstrip('_'): src_base, src_variant = base.rsplit('_', 1) if src_variant in self.accepted_variants: if src_variant not in variantflags: return None base = src_base return os.path.join(self.build_temp, base+'_'+variantstr+ext) def make_variant(in_file, out_file): self.mkpath(os.path.dirname(out_file)) self.copy_file(in_file, out_file) from buildlib.utils import modify_file info('changing to variant %r in %r, %s', variantstr, out_file, variantflags) for modulename, mvariantflags in variant_map.items(): mvariantstr = ''.join(mvariantflags) modified = modify_file(out_file, [(r'\[\[%s_VARIANT\]\]'%modulename, modulename+'_'+mvariantstr)], count=0) if not modified: warn('unchanged file: %r for module-variant: %s_%s', out_file, modulename, mvariantstr) for v in variantflags: vgroup = self.accepted_variants[v]['group'].upper() vid = self.accepted_variants[v]['id'] subs = [(r'\[\[%s\]\]' % vgroup, vid)] if self.accepted_variants[v]['type'] == 'bool': subs.append((r'\b(DEF %s = )False' % vgroup, r'\1True')) modified = modify_file(out_file, subs, count=0) if not modified: warn('unchanged file: %r for variant %r', out_file, v) modified = modify_file(out_file, [(r'\[\[VARIANT\]\]', variantstr)], count=0) if not modified: warn('unchanged file: %r for variant %r', out_file, variantstr) def depends_lines(): yield '{' for vs, dvs in self.variant_map.items(): joinkey = repr(''.join(vs)) + ':' joinvalue = list(k + '_' + ''.join(vs) for k, vs in dvs.items()) yield ' {:12} {!r},'.format(joinkey, joinvalue) yield '}' modified = modify_file(out_file, [(r'\[\[DEPENDS\]\]', '\n '.join(depends_lines()))]) def aliases_lines(): yield '{' for avs, vs in self.aliases.items(): yield ' {:12} {!r},'.format(repr(avs) + ':', vs) yield '}' modified = modify_file(out_file, [(r'\[\[ALIASES\]\]', '\n '.join(aliases_lines()))]) def get_libs(): for template in extension.libraries: vlibs = variant_libraries.get(template) if vlibs is None: yield template else: for v in variantflags: yield from vlibs.get(v, []) extvariant = Extension(extension.name+'_'+variantstr, sources=[], depends=[], language=extension.language, define_macros=extension.define_macros, include_dirs=extension.include_dirs, libraries=list(get_libs()), ) for in_file in extension.sources: base, ext = os.path.splitext(in_file) out_file = filename_variant(base, ext) if out_file is None: continue self.make_file([in_file], out_file, make_variant, [in_file, out_file]) extvariant.sources.append(out_file) for in_file in extension.depends: base, ext = os.path.splitext(in_file) if ext == '.py': continue if 'qtq' not in variantflags and os.path.basename(in_file) == 'qtq.pxd': continue if os.path.isfile(base+'.pyx'): out_file = filename_variant(base, ext) if out_file is None: continue self.make_file([in_file], out_file, make_variant, [in_file, out_file]) else: out_file = filename_copy(in_file) self.make_file([in_file], out_file, make_copy, [in_file, out_file]) extvariant.depends.append(out_file) return extvariant def build_extensions(self): def gen_extensions(variants, variantflags, selected=True): if variants: group, vs, all_vs = variants[0] for v in all_vs: yield from gen_extensions(variants[1:], variantflags if v is None else variantflags + ((group, v),), selected and v in vs) else: yield selected, variantflags variants = list(buildlib.utils.group_variants(self.variants)) self.variant_map = OrderedDict() for extension in self.extensions: built_variants = [] modulename = extension.name.split('/')[-1] for selected, variantflags in gen_extensions(variants, ()): filtered_variantflags = tuple(vf for g, vf in variantflags if g in variantgroups_by_module[modulename]) variantflags = tuple(vf for g, vf in variantflags) if 'd' not in variantflags and modulename == '_debug': continue if 'qtw' not in variantflags and modulename == '_qtui': continue variant_map = self.variant_map.setdefault(variantflags, OrderedDict()) assert modulename not in variant_map if modulename != '_qtexec': variant_map[modulename] = filtered_variantflags if not selected: continue if filtered_variantflags in built_variants: continue extvariant = self.create_extension_variant(extension, filtered_variantflags, variant_map) self.build_extension(extvariant) built_variants.append(filtered_variantflags) def build_extension(self, extension): sources = extension.sources depends = sources + extension.depends py_files = [] pyx_files = [] pyx_files_dep = [] ui_files = [] moc_files = [] c_files = [] c_files_dep = [] for in_file in extension.sources: base, ext = os.path.splitext(in_file) if ext == '.py': py_files.append(in_file) elif ext == '.pyx': pyx_files.append(in_file) else: assert False, in_file assert len(py_files) <= 1 for in_file in extension.depends: base, ext = os.path.splitext(in_file) if ext == '.py': basename = os.path.basename(base) dirname = os.path.dirname(base) pxd_file = os.path.join(dirname, '_%s.pxd' % basename) pyx_files_dep.append(pxd_file) elif ext == '.pxd': pyx_files_dep.append(in_file) elif ext == '.ui': ui_files.append(in_file) elif ext == '.h': c_files_dep.append(in_file) else: assert False, in_file # generate files from py-files with #px annotations for in_file in py_files: base, ext = os.path.splitext(in_file) assert ext == '.py' basename = os.path.basename(base) dirname = os.path.dirname(base) pyx_file = os.path.join(dirname, '_%s.pyx' % basename) pxd_file = os.path.join(dirname, '_%s.pxd' % basename) pxm_file = os.path.join(dirname, '_%s_moc.h' % basename) pxc_file = os.path.join(dirname, '_%s_priv.cpp' % basename) self.build_pyx(in_file, pyx_file, pxd_file, pxm_file, pxc_file) pyx_files.append(pyx_file) if os.path.exists(pxd_file): pyx_files_dep.append(pxd_file) if os.path.exists(pxm_file): c_files_dep.append(pxm_file) moc_files.append(pxm_file) if os.path.exists(pxc_file): c_files.append(pxc_file) def use_cc(out_file): inplace_file = os.path.join('csrc', os.path.basename(out_file)) if os.path.exists(inplace_file) and not self.force: self.mkpath(os.path.dirname(out_file)) self.copy_file(inplace_file, out_file) return True return False # generate C-files with cython if extension.language == 'c++': c_file_ext = '.cpp' cython_opts = ['--cplus'] + self.cython_opts else: c_file_ext = '.c' cython_opts = self.cython_opts assert len(pyx_files) <= 1, pyx_files for in_file in pyx_files: base, ext = os.path.splitext(in_file) assert ext == '.pyx' out_file = base + c_file_ext if not use_cc(out_file): self.make_file(pyx_files+pyx_files_dep, out_file, self.run_cython, (cython_opts, in_file, out_file)) c_files.append(out_file) # generate C++-files with uic uic_cmd = self.find_qt_command('uic') for in_file in ui_files: base, ext = os.path.splitext(in_file) assert ext == '.ui' out_file = base + '.h' if not use_cc(out_file): self.make_file([in_file], out_file, self.spawn, ( [uic_cmd, in_file, '-o', out_file, '--translate', 'gettext_translate'],)) c_files_dep.append(out_file) # generate C++-files with moc moc_cmd = self.find_qt_command('moc') for in_file in moc_files: base, ext = os.path.splitext(in_file) assert in_file.endswith('_moc.h') out_file = base + '.cpp' if not use_cc(out_file): self.make_file([in_file], out_file, self.spawn, ([moc_cmd, in_file, '-o', out_file],)) c_files.append(out_file) extension.depends = c_files_dep extension.sources = c_files self.cc_files += c_files + c_files_dep class build_ext (build_csrc): description = distutils.command.build_ext.build_ext.description def get_ext_filename(self, ext_name): filename = distutils.command.build_ext.build_ext.get_ext_filename(self, ext_name) if self.armhf: from distutils.sysconfig import get_config_var multiarch = get_config_var('MULTIARCH') filename = filename.replace(multiarch, 'arm-linux-gnueabihf') return filename def build_extension(self, extension): if sys.flags.debug: extension.define_macros.extend([('QT_DECLARATIVE_DEBUG', None), ('QT_QML_DEBUG', None)]) if self.armhf: multiarch = 'arm-linux-gnueabihf' else: multiarch = sysconfig.get_config_var('MULTIARCH') if multiarch is None: multiarch = sysconfig.get_config_var('multiarchsubdir') or '' multiarch = multiarch.strip('/') extension.include_dirs = [d.replace('', multiarch) for d in extension.include_dirs] sources = extension.sources ext_path = self.get_ext_fullpath(extension.name) depends = sources + extension.depends if self.force or newer_group(depends, ext_path, 'newer'): info('building C-Code for %r extension', extension.name) else: debug('skipping %r extension (up-to-date)', extension.name) return # build C-code build_csrc.build_extension(self, extension) # build extension module from C-code if self.armhf: info('cross building for armhf') os.environ['CC'] = 'arm-linux-gnueabihf-gcc' os.environ['CXX'] = 'arm-linux-gnueabihf-g++' with suppress(AttributeError, ValueError): import distutils.sysconfig distutils.sysconfig.customize_compiler(self.compiler) if extension.language == 'c++': #XXX: distutils uses the wrong compiler (not a problem with gcc) and flags (-Wstrict-prototypes) for C++ code # silence cc1plus: warning: command line option '-Wstrict-prototypes' is valid for C/ObjC but not for C++ # http://bugs.python.org/issue1222585 # http://bugs.python.org/issue9031 if '-Wstrict-prototypes' in self.compiler.compiler_so: info("removing command line option '-Wstrict-prototypes': option is valid for C/ObjC but not for C++") self.compiler.compiler_so.remove('-Wstrict-prototypes') if self.compiler.compiler_cxx[0] != self.compiler.compiler[0] == self.compiler.compiler_so[0]: info('replacing compiler {} by {}'.format(self.compiler.compiler_so[0], self.compiler.compiler_cxx[0])) self.compiler.compiler_so[0] = self.compiler.compiler_cxx[0] if self.armhf: self.compiler.linker_so[0] = self.compiler.compiler_so[0] distutils.command.build_ext.build_ext.build_extension(self, extension) #HACK: Due to build_csrc.compare_file the C compiler may not run, even though # the dependencies expect this. Therefore update the timestamp manually. ext_path = self.get_ext_fullpath(extension.name) try: os.utime(ext_path, None) except OSError: pass class build_scripts (distutils.command.build_scripts.build_scripts): user_options = distutils.command.build_scripts.build_scripts.user_options + [ ('inplace', 'i', 'ignore build-lib and put compiled modules into the source directory'), ('build-temp=', 't', "temporary build directory"), ] boolean_options = distutils.command.build.build.boolean_options + ['inplace'] def initialize_options(self): distutils.command.build_scripts.build_scripts.initialize_options(self) self.inplace = None self.build_temp = None def finalize_options(self): distutils.command.build_scripts.build_scripts.finalize_options(self) self.set_undefined_options('build', ('inplace', 'inplace'), ('build_temp', 'build_temp'), ) def run(self): build_dir = self.build_dir self.build_dir = self.build_temp distutils.command.build_scripts.build_scripts.run(self) self.build_dir = build_dir for script in self.scripts: outfile = os.path.basename(script) script = os.path.join(self.build_temp, outfile) if not os.path.exists(script): continue if not self.inplace: self.mkpath(self.build_dir) outfile = os.path.join(self.build_dir, outfile) outfile, ext = os.path.splitext(outfile) if ext != '.py': outfile += ext self.copy_file(script, outfile) class build_models(Command): description = 'build data for Pybik models' user_options = [ ('inplace', 'i', 'ignore build-lib and put compiled UI modules into the source ' 'directory alongside your pure Python modules'), ('force', 'f', 'forcibly build everything (ignore file timestamps)'), ('parallel=', None,'number of parallel build jobs or "True"'), ('pickle-protocol=', None, 'Pickle protocol for modeldata (default: highest protocol)'), ('maxsize=', None, 'Maximum model size (default: 10)'), ('reproducible', None, 'Build modeldata reproducible (experimental)'), ('debugflags=', None, 'Comma-separated list of debug flags'), ] boolean_options = ['inplace', 'force', 'reproducible'] def initialize_options(self): self.build_base = None self.inplace = None self.force = None self.parallel = None self.pickle_protocol = None self.maxsize = None self.reproducible = None self.debugflags = None def finalize_options(self): self.set_undefined_options('build', ('build_base', 'build_base'), ('inplace', 'inplace'), ('force', 'force'), ('parallel', 'parallel'), ('pickle_protocol', 'pickle_protocol'), ('maxsize', 'maxsize'), ('reproducible', 'reproducible'), ) if isinstance(self.parallel, str): if self.parallel.lower() == 'true': self.parallel = True else: self.parallel = int(self.parallel) self.pickle_protocol = -1 if self.pickle_protocol is None else int(self.pickle_protocol) self.reproducible = False if self.reproducible is None else bool(self.reproducible) if self.debugflags is not None: import pybiklib.debug pybiklib.debug.set_flagstring(self.debugflags) def run(self): from buildlib import modeldata if self.maxsize is not None: from ast import literal_eval maxsize = literal_eval(self.maxsize) if isinstance(maxsize, tuple): modeldata.minsize, modeldata.maxsize = maxsize else: modeldata.maxsize = maxsize modeldir = 'data/models' if self.inplace else os.path.join(self.build_base, 'share', 'models') self.mkpath(modeldir) import pybiklib.debug prefix = 'f' if pybiklib.debug.DEBUG_MODELFAST else 'd' if self.force and not self.dry_run: for filename in os.listdir(modeldir): if filename[0] == prefix: filename = os.path.join(modeldir, filename) os.remove(filename) if self.force: testfunc = None else: testfunc = lambda filename: (any(newer(os.path.join('buildlib', f), filename) for f in ('modeldata.py', 'modeldef.py', 'geom.py'))) if testfunc is None or testfunc(modeldata.get_indexfilename(modeldir)): message = 'generating model data, this may take some time' def create_modeldata(): modeldata.create_modeldata(modeldir, testfunc, self.parallel, self.pickle_protocol, self.reproducible) self.execute(create_modeldata, [], msg=message) data_files = self.distribution.data_files if self.dry_run: return for filename in os.listdir(modeldir): sourcepath = os.path.join(modeldir, filename) data_files.append(('share/pybik/models', (sourcepath,))) class build_appicons(Command): description = 'rename Pybik app-icons' user_options = [ ('force', 'f', 'forcibly build everything (ignore file timestamps)'), ] boolean_options = ['inplace', 'force', 'reproducible'] def initialize_options(self): self.build_base = None def finalize_options(self): self.set_undefined_options('build', ('build_base', 'build_base'), ) def run(self): if self.dry_run: return sourcedir = 'data/icons' data_files = self.distribution.data_files for filename in os.listdir(sourcedir): size = str(int(filename.rsplit('-', 1)[1].split('.')[0])) sourcepath = os.path.join(sourcedir, filename) builddir = os.path.join(self.build_base, 'share', 'icons', size) self.mkpath(builddir) buildpath = os.path.join(builddir, 'pybik.png') self.copy_file(sourcepath, buildpath) data_files.append(('share/icons/hicolor/{0}x{0}/apps'.format(size), [buildpath])) class build_i18n(Command): description = 'compile message catalog to binary format' user_options = [ ('inplace', 'i', 'ignore build-lib and put compiled UI modules into the source ' 'directory alongside your pure Python modules'), ('force', 'f', 'forcibly build everything (ignore file timestamps)'), ] boolean_options = ['inplace', 'force'] def initialize_options(self): self.build_base = None self.inplace = None self.force = None def finalize_options(self): self.set_undefined_options('build', ('build_base', 'build_base'), ('inplace', 'inplace'), ('force', 'force'), ) def run(self): """Compile message catalog to binary format""" if self.inplace: mo_dir = 'data/locale' else: mo_dir = os.path.join(self.build_base, 'share', 'locale') data_files = self.distribution.data_files domain = self.distribution.metadata.name for lang in buildlib.utils.get_linguas(): po_file = os.path.join('po', lang+'.po') mo_dir_lang = os.path.join(mo_dir, lang, "LC_MESSAGES") mo_file = os.path.join(mo_dir_lang, "%s.mo" % domain) self.mkpath(mo_dir_lang) def msgfmt(po_file, mo_file): self.spawn(["msgfmt", po_file, "-o", mo_file]) self.make_file([po_file], mo_file, msgfmt, [po_file, mo_file]) targetpath = os.path.join("share/locale", lang, "LC_MESSAGES") data_files.append((targetpath, (mo_file,))) class build_appmeta(Command): description = 'build translated desktop files' user_options = [ ('inplace', 'i', 'ignore build-lib and put compiled UI modules into the source directory'), ('force', 'f', 'forcibly build everything (ignore file timestamps)'), ] boolean_options = ['inplace', 'force'] def initialize_options(self): self.build_base = None self.inplace = None self.force = None def finalize_options(self): self.set_undefined_options('build', ('build_base', 'build_base'), ('inplace', 'inplace'), ('force', 'force'), ) self.appmeta_dir = 'data/app-meta' if self.inplace else os.path.join(self.build_base, 'share',' app-meta') def run(self): from buildlib import create_docs if self.distribution.appmeta_templates is None: return data_files = self.distribution.data_files self.mkpath(self.appmeta_dir) def make_translated_file(src, tmp, dst, msgfmt_type): create_docs.create_doc(src, tmp, skip='deb') self.spawn(["msgfmt", msgfmt_type, '-d', 'po', '--template', tmp, '-o', dst]) os.remove(tmp) for targetpath, template, template_depends in self.distribution.appmeta_templates: templatefile = create_docs.get_template_filename(template) tmpfile = os.path.join(self.appmeta_dir, os.path.basename(templatefile)) dstfile = os.path.join(self.appmeta_dir, os.path.basename(template)) if dstfile.endswith('.desktop'): msgfmt_type = '--desktop' elif dstfile.endswith('.appdata.xml'): msgfmt_type = '--xml' else: self.warn('Skipping %s, seems not to be a supported template.' % templatefile) continue self.make_file(glob('po/*.po') + [templatefile] + template_depends, dstfile, make_translated_file, [template, tmpfile, dstfile, msgfmt_type]) data_files.append((targetpath, [dstfile])) class build_man (Command): description = 'build the manpage' user_options = [ ('force', 'f', 'forcibly build everything (ignore file timestamps)'), ] def initialize_options(self): self.force = None self.build_base = None def finalize_options(self): self.set_undefined_options('build', ('build_base', 'build_base'), ('force', 'force'), ) def run(self): from buildlib import create_docs def create_manpage(man_template, man_rst, man_file): man_template = os.path.splitext(man_template)[0] create_docs.create_doc(man_template, man_rst) self.spawn(['rst2man', man_rst, man_file]) man_dir = os.path.join(self.build_base, 'share', 'man') self.mkpath(man_dir) tmp_dir = os.path.join(self.build_base, 'share', 'temp', 'rst') self.mkpath(tmp_dir) if self.dry_run: return for man_template in glob('data/templates/manpage_*.rst.in'): man_rst, unused_ext = os.path.splitext(os.path.basename(man_template)) base, unused_ext = os.path.splitext(man_rst) unused, section, script = base.split('_', 2) man_rst = os.path.join(tmp_dir, man_rst) man_file = os.path.join(man_dir, '.'.join((script, section))) config.MANPAGE_SECTION = section self.make_file(['pybiklib/config.py', man_template], man_file, create_manpage, [man_template, man_rst, man_file]) self.distribution.data_files.append(('share/man/man'+section, [man_file])) class build_doc (Command): description = "build documentation files" user_options = [ ('inplace', 'i', 'ignore build-lib and put compiled UI modules into the source ' 'directory alongside your pure Python modules'), ] boolean_options = ['inplace'] def initialize_options(self): self.inplace = None self.build_base = None self.doc_files = [] def finalize_options(self): self.set_undefined_options('build', ('inplace', 'inplace'), ('build_base', 'build_base')) def run(self): from buildlib import create_docs info('generating documentation files') doc_dir = os.path.join(self.build_base, 'share', 'doc') self.mkpath(doc_dir) for basename, skip in [ ('copyright', 'deb'), ('README', None), ('INSTALL', None), ]: filename = None if self.inplace else os.path.join(doc_dir, basename) info('generating file: %r', filename or basename) create_docs.create_doc(basename, filename, skip=skip) if filename: self.doc_files.append(filename) class install_lib (distutils.command.install_lib.install_lib): user_options = distutils.command.install_lib.install_lib.user_options + [ ('arch-only', None, 'Install only architecture dependent files'), ('indep-only', None, 'Install only architecture independent files'), ] boolean_options = ['arch-only', 'indep-only'] def initialize_options(self): distutils.command.install_lib.install_lib.initialize_options(self) self.data_dir = None self.arch_only = None self.indep_only = None def finalize_options(self): distutils.command.install_lib.install_lib.finalize_options(self) self.set_undefined_options('install', ('arch_only', 'arch_only'), ('indep_only', 'indep_only'), ) if not self.arch_only and not self.indep_only: self.arch_only = self.indep_only = True def build(self): if not self.skip_build: if self.distribution.has_pure_modules() and self.indep_only: self.run_command('build_py') if self.distribution.has_ext_modules() and self.arch_only: self.run_command('build_ext') class install_desktop(Command): description = 'install desktop files' user_options = [('ask', None, 'Ask before installation'),] boolean_options = ['ask'] def initialize_options(self): self.ask = False def finalize_options(self): pass def run(self): def ask(): try: answer = input('\nInstall desktop file? [Yn]: ') except EOFError: print() return False if answer.lower() not in ['y', '']: return False return True self.run_command('build_appmeta') appmeta_dir = self.get_finalized_command('build_appmeta').appmeta_dir target_dir = config.get_data_home('applications') def keyabspath(line, key, file=None): key += '=' if line.startswith(key): if file is None: file = line.split('=', 1)[1].rstrip() line = key + os.path.abspath(file) + '\n' return line self.mkpath(target_dir) for fnin in glob('%s/*.desktop' % appmeta_dir): fnout = os.path.join(target_dir, os.path.basename(fnin)) tout = '' with open(fnin, 'rt', encoding='utf-8') as fin: for line in fin: line = keyabspath(line, 'TryExec') line = keyabspath(line, 'Exec') line = keyabspath(line, 'Icon', config.APPICON192_FILE) tout += line with suppress(FileNotFoundError), open(fnout, 'rt', encoding='utf-8') as fout: if tout == fout.read(): info('desktop file %r unchanged', fnout) return if self.ask and not ask(): return info('installing desktop file to: %s', fnout) with open(fnout, 'wt', encoding='utf-8') as fout: fout.write(tout) class install (install_orig): user_options = install_orig.user_options + [ ('data-dir=', 't', 'Directory where the application will find the data'), ('arch-only', None, 'Install only architecture dependent files'), ('indep-only', None, 'Install only architecture independent files'), ] boolean_options = ['arch-only', 'indep-only'] def initialize_options(self): install_orig.initialize_options(self) self.data_dir = None self.arch_only = False self.indep_only = False def finalize_options(self): install_orig.finalize_options(self) if self.data_dir is None: self.data_dir = os.path.join(self.install_data, 'share') if not self.arch_only and not self.indep_only: self.arch_only = self.indep_only = True if not self.indep_only: self.__class__.sub_commands = [(cmd, func) for cmd, func in install_orig.sub_commands if cmd == 'install_lib'] def run(self): if not self.skip_build: # install_orig.run() will run build, but we need # to modify a file between build and install build_cmd = self.distribution.get_command_obj('build') build_cmd.arch_only = self.arch_only build_cmd.indep_only = self.indep_only self.run_command('build') self.skip_build = True filename = os.path.join(self.build_lib, 'pybiklib', 'config.py') app_data_dir = os.path.join(self.data_dir, 'pybik') if self.indep_only: from buildlib.utils import modify_file modified = modify_file(filename, [ (r'^(data_dir\s*=\s*).*$', r'\1' + repr(self.data_dir)), (r'^(appdata_dir\s*=\s*).*$', r'\1' + repr(app_data_dir)),]) if not modified: warn('unchanged file: %r', filename) install_orig.run(self) class clean (distutils.command.clean.clean): user_options = distutils.command.clean.clean.user_options + [ ('inplace', 'i', 'clean up files in the source directory'), ] boolean_options = distutils.command.clean.clean.boolean_options + [ 'inplace', ] def initialize_options(self): distutils.command.clean.clean.initialize_options(self) self.inplace = None def finalize_options(self): distutils.command.clean.clean.finalize_options(self) self.set_undefined_options('build', ('inplace', 'inplace'), ) def run(self): def remove_tree_(directory): if os.path.exists(directory): remove_tree(directory, dry_run=self.dry_run, verbose=self.verbose) else: warn("%r does not exist -- can't clean it", directory) def remove_file(filename): if os.path.exists(filename): info('removing %r', filename) if not self.dry_run: os.remove(filename) else: warn("%r does not exist -- can't clean it", filename) if self.all: remove_tree_(os.path.join(self.build_base, 'share')) distutils.command.clean.clean.run(self) remove_file('MANIFEST') if self.inplace: for dirname in ('buildlib/', 'pybiklib/', 'pybiklib/ext/', 'pybiklib/plugins/', 'tools/'): remove_tree_(dirname + '__pycache__') if self.all: dirnames = ['data/app-meta', 'data/locale', 'data/models'] for dirname in dirnames: remove_tree_(dirname) for filename in glob('pybiklib/ext/*.so'): remove_file(filename) for filename in ['copyright', 'INSTALL', 'README', 'pybik']: remove_file(filename) class sdist(distutils.command.sdist.sdist): user_options = distutils.command.sdist.sdist.user_options + [ ('debian-names', None, 'Create archive files with Debian names'), ] boolean_options = distutils.command.sdist.sdist.boolean_options + [ 'debian-names' ] def initialize_options(self): distutils.command.sdist.sdist.initialize_options(self) self.debian_names = False self.appmeta_dir = None self.distribution.get_option_dict('build_csrc')['variants'] = ('class sdist', 'ogl,es2') def finalize_options(self): distutils.command.sdist.sdist.finalize_options(self) self.set_undefined_options('build_appmeta', ('appmeta_dir', 'appmeta_dir')) def run(self): self.run_command('build_doc') self.run_command('build_csrc') self.run_command('build_appmeta') distutils.command.sdist.sdist.run(self) for archive_file in self.archive_files: if self.debian_names: debian_file = archive_file.replace('-', '_', 1).replace('.tar', '.orig.tar', 1) os.rename(archive_file, debian_file) def get_file_list(self): for lang in buildlib.utils.get_linguas(): self.filelist.files.append(os.path.join('po', lang+'.po')) distutils.command.sdist.sdist.get_file_list(self) def make_release_tree(self, base_dir, files): distutils.command.sdist.sdist.make_release_tree(self, base_dir, files) # doc files for filename in self.get_finalized_command('build_doc').doc_files: self.copy_file(filename, base_dir) # csrc dst_dir = os.path.join(base_dir, 'csrc') self.mkpath(dst_dir) cc_files = self.get_finalized_command('build_csrc').cc_files for src in cc_files: self.copy_file(src, dst_dir) # desktop- and appdata-files if self.distribution.appmeta_templates is not None: dst_dir = os.path.join(base_dir, 'data/app-meta') self.mkpath(dst_dir) for unused_targetpath, template, unused_template_depends in self.distribution.appmeta_templates: src = os.path.join(self.appmeta_dir, template) self.copy_file(src, dst_dir) # dst_dir = os.path.join(base_dir, 'po') self.mkpath(dst_dir) self.copy_file('po/LINGUAS', dst_dir) variantgroups_by_module = { '_debug': ('glvariant',), '_gldraw': ('glvariant', 'gldebug'), '_glarea': ('glvariant', 'gldebug', 'offscreen'), '_qtui': (), '_qt': ('qtvariant', 'glvariant', 'gldebug', 'offscreen'), '_qtexec': (), } scripts = ['pybiklib/pybik.py'] data_files = [ ('share/pybik/ui/cursors', glob('data/ui/cursors/*')), ('share/pybik/ui/images', glob('data/ui/images/*')), ('share/pybik/ui/qt', glob('data/ui/qt/*.*')), ('share/pybik/ui/qt/images', glob('data/ui/qt/images/*')), ('share/pybik/ui/thumbnails', glob('data/ui/thumbnails/*')), ('share/pybik/plugins', glob('data/plugins/*')), ('share/pybik/shaders', glob('data/shaders/*')), ('share/pybik/', ['data/GPL-3']), ] appmeta_templates = [ ('share/applications', 'pybik.desktop', []), ('share/metainfo', 'net.launchpad.pybik.appdata.xml', ['NEWS']), ] variant_libraries = { 'GL': {'ogl': ['GL'], 'es2': ['GLESv2']}, 'Qt': {'qtw': ['Qt5Core', 'Qt5Gui', 'Qt5Widgets'], 'qtq': ['Qt5Core', 'Qt5Gui', 'Qt5Widgets', 'Qt5Qml', 'Qt5Quick']}, } ext_modules = [ Extension('pybiklib/ext/_debug', glob('pybiklib/ext/_debug_*.pyx'), depends=glob('pybiklib/ext/gl_*.pxd')+glob('pybiklib/ext/_debug_*.pxd'), libraries=['GL'], define_macros=[('GL_GLEXT_PROTOTYPES', None)]), Extension('pybiklib/ext/_gldraw', ['pybiklib/ext/gldraw.py'], depends=glob('pybiklib/ext/gl_*.pxd'), libraries=['GL'], define_macros=[('GL_GLEXT_PROTOTYPES', None)]), Extension('pybiklib/ext/_glarea', ["pybiklib/ext/glarea.py"], depends=glob('pybiklib/ext/gl_*.pxd')+['pybiklib/ext/gldraw.py'], libraries=['GL'], define_macros=[('GL_GLEXT_PROTOTYPES', None)]), Extension('pybiklib/ext/_qtui', ["pybiklib/ext/qtui.py"], depends=['pybiklib/ext/qt.pxd', 'pybiklib/ext/qtui_p.h'] + glob('data/ui/qt/*.ui'), language='c++', include_dirs=[sysconfig.get_config_var('INCLUDEDIR')+'/qt5', sysconfig.get_config_var('INCLUDEDIR')+'//qt5'], libraries=['Qt5Core', 'Qt5Gui', 'Qt5Widgets']), Extension('pybiklib/ext/_qt', ["pybiklib/ext/qt.py"], depends=glob('pybiklib/ext/gl_*.pxd')+[ 'pybiklib/ext/qt.pxd', 'pybiklib/ext/qtq.pxd', 'pybiklib/ext/glarea.py', 'pybiklib/ext/qtui.py'], language='c++', include_dirs=[sysconfig.get_config_var('INCLUDEDIR')+'/qt5', sysconfig.get_config_var('INCLUDEDIR')+'//qt5'], libraries=['Qt']), Extension('pybiklib/ext/_qtexec', ["pybiklib/ext/qtexec.py"], depends=['pybiklib/ext/qt.pxd'], language='c++', include_dirs=[sysconfig.get_config_var('INCLUDEDIR')+'/qt5', sysconfig.get_config_var('INCLUDEDIR')+'//qt5'], libraries=['Qt5Core', 'Qt5Gui', 'Qt5Widgets']), ] packages = ['pybiklib', 'pybiklib.ext', 'pybiklib.plugins'] cmdclass = { 'build': build, 'build_csrc': build_csrc, 'build_ext': build_ext, 'build_scripts': build_scripts, 'build_models': build_models, 'build_appicons': build_appicons, 'build_i18n': build_i18n, 'build_appmeta': build_appmeta, 'build_man': build_man, 'build_doc': build_doc, 'install_data': distutils.command.install_data.install_data, 'install_lib': install_lib, 'install_desktop': install_desktop, 'install': install, 'clean': clean, 'sdist': sdist, } setup( # Metadata name=config.PACKAGE, version=config.VERSION, author=config.AUTHOR, author_email=config.CONTACT_EMAIL, url=config.WEBSITE, download_url=config.DOWNLOADS, description=config.SHORT_DESCRIPTION, long_description='\n'.join(config.LONG_DESCRIPTION), classifiers=[ 'Development Status :: 5 - Production/Stable', 'Environment :: X11 Applications :: Qt', 'Intended Audience :: End Users/Desktop', 'License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)', 'Operating System :: POSIX', 'Operating System :: POSIX :: Linux', 'Programming Language :: Python :: 3', 'Programming Language :: Python :: 3.4', 'Programming Language :: Cython', #TODO: 'Programming Language :: OpenGL Shading Language', 'Topic :: Games/Entertainment :: Puzzle Games', ], keywords='rubik cube puzzle game', license=config.LICENSE_NAME, # Metadata added in overloaded Distribution bug_contact=config.CONTACT_FILEBUG, # Files scripts=scripts, data_files=data_files, appmeta_templates=appmeta_templates, ext_modules=ext_modules, packages=packages, # setup classes distclass=Distribution, cmdclass=cmdclass, ) pybik-3.0/pybiklib/0000755000175000017500000000000013173167603014454 5ustar barccbarcc00000000000000pybik-3.0/pybiklib/languages.py0000664000175000017500000003236413173052133016775 0ustar barccbarcc00000000000000# -*- coding: utf-8 -*- # generated file languages = ( {'ast': {'ast': 'asturianu', 'bg': 'búlgaru', 'bs': 'bosniu', 'cs': 'checu', 'de': 'alemán', 'el': 'griegu', 'en_GB': 'inglés (Reinu Xuníu)', 'es': 'español', 'fi': 'finlandés', 'fr': 'francés', 'gl': 'gallegu', 'he': 'hebréu', 'it': 'italianu', 'kab': 'kabileñu', 'ms': 'malayu', 'pl': 'polacu', 'pt_BR': 'portugués (Brasil)', 'ru': 'rusu', 'uk': 'ucraín', 'uz': 'uzbequistanín', 'zh_TW': 'chinu (Taiwán)'}, 'bg': {'ast': 'астурски', 'bg': 'български', 'bs': 'босненски', 'cs': 'чешки', 'de': 'немски', 'el': 'гръцки', 'en_GB': 'английски (Обединеното кралство)', 'es': 'испански', 'fi': 'фински', 'fr': 'френски', 'gl': 'галисийски', 'he': 'иврит', 'it': 'италиански', 'kab': 'кабилски', 'ms': 'малайски', 'pl': 'полски', 'pt_BR': 'португалски (Бразилия)', 'ru': 'руски', 'uk': 'украински', 'uz': 'узбекски', 'zh_TW': 'китайски (Тайван)'}, 'bs': {'ast': 'asturijski', 'bg': 'bugarski', 'bs': 'bosanski', 'cs': 'češki', 'de': 'njemački', 'el': 'grčki', 'en_GB': 'engleski (Velika Britanija)', 'es': 'španski', 'fi': 'finski', 'fr': 'francuski', 'gl': 'galski', 'he': 'hebrejski', 'it': 'italijanski', 'kab': 'kabile', 'ms': 'malajski', 'pl': 'poljski', 'pt_BR': 'portugalski (Brazil)', 'ru': 'ruski', 'uk': 'ukrajinski', 'uz': 'uzbečki', 'zh_TW': 'kineski (Tajvan)'}, 'cs': {'ast': 'asturština', 'bg': 'bulharština', 'bs': 'bosenština', 'cs': 'čeština', 'de': 'němčina', 'el': 'řečtina', 'en_GB': 'angličtina (Velká Británie)', 'es': 'španělština', 'fi': 'finština', 'fr': 'francouzština', 'gl': 'galicijština', 'he': 'hebrejština', 'it': 'italština', 'kab': 'kabylština', 'ms': 'malajština', 'pl': 'polština', 'pt_BR': 'portugalština (Brazílie)', 'ru': 'ruština', 'uk': 'ukrajinština', 'uz': 'uzbečtina', 'zh_TW': 'čínština (Tchaj-wan)'}, 'de': {'ast': 'Asturianisch', 'bg': 'Bulgarisch', 'bs': 'Bosnisch', 'cs': 'Tschechisch', 'de': 'Deutsch', 'el': 'Griechisch', 'en_GB': 'Englisch (Vereinigtes Königreich)', 'es': 'Spanisch', 'fi': 'Finnisch', 'fr': 'Französisch', 'gl': 'Galizisch', 'he': 'Hebräisch', 'it': 'Italienisch', 'kab': 'Kabylisch', 'ms': 'Malaiisch', 'pl': 'Polnisch', 'pt_BR': 'Portugiesisch (Brasilien)', 'ru': 'Russisch', 'uk': 'Ukrainisch', 'uz': 'Usbekisch', 'zh_TW': 'Chinesisch (Taiwan)'}, 'el': {'ast': 'Αστουριανά', 'bg': 'Βουλγαρικά', 'bs': 'Βοσνιακά', 'cs': 'Τσεχικά', 'de': 'Γερμανικά', 'el': 'Ελληνικά', 'en_GB': 'Αγγλικά (Ηνωμένο Βασίλειο)', 'es': 'Ισπανικά', 'fi': 'Φινλανδικά', 'fr': 'Γαλλικά', 'gl': 'Γαλικιανά', 'he': 'Εβραϊκά', 'it': 'Ιταλικά', 'kab': 'Καμπίλε', 'ms': 'Μαλάι', 'pl': 'Πολωνικά', 'pt_BR': 'Πορτογαλικά (Βραζιλία)', 'ru': 'Ρωσικά', 'uk': 'Ουκρανικά', 'uz': 'Ουζμπεκικά', 'zh_TW': 'Κινεζικά (Ταϊβάν)'}, 'en_GB': {'ast': 'Asturian', 'bg': 'Bulgarian', 'bs': 'Bosnian', 'cs': 'Czech', 'de': 'German', 'el': 'Greek', 'en_GB': 'English (United Kingdom)', 'es': 'Spanish', 'fi': 'Finnish', 'fr': 'French', 'gl': 'Galician', 'he': 'Hebrew', 'it': 'Italian', 'kab': 'Kabyle', 'ms': 'Malay', 'pl': 'Polish', 'pt_BR': 'Portuguese (Brazil)', 'ru': 'Russian', 'uk': 'Ukrainian', 'uz': 'Uzbek', 'zh_TW': 'Chinese (Taiwan)'}, 'es': {'ast': 'asturiano', 'bg': 'búlgaro', 'bs': 'bosnio', 'cs': 'checo', 'de': 'alemán', 'el': 'griego', 'en_GB': 'inglés (Reino Unido)', 'es': 'español', 'fi': 'finés', 'fr': 'francés', 'gl': 'gallego', 'he': 'hebreo', 'it': 'italiano', 'kab': 'cabila', 'ms': 'malayo', 'pl': 'polaco', 'pt_BR': 'portugués (Brasil)', 'ru': 'ruso', 'uk': 'ucraniano', 'uz': 'uzbeko', 'zh_TW': 'chino (Taiwán)'}, 'fi': {'ast': 'asturia', 'bg': 'bulgaria', 'bs': 'bosnia', 'cs': 'tšekki', 'de': 'saksa', 'el': 'kreikka', 'en_GB': 'englanti (Iso-Britannia)', 'es': 'espanja', 'fi': 'suomi', 'fr': 'ranska', 'gl': 'galicia', 'he': 'heprea', 'it': 'italia', 'kab': 'kabyyli', 'ms': 'malaiji', 'pl': 'puola', 'pt_BR': 'portugali (Brasilia)', 'ru': 'venäjä', 'uk': 'ukraina', 'uz': 'uzbekki', 'zh_TW': 'kiina (Taiwan)'}, 'fr': {'ast': 'asturien', 'bg': 'bulgare', 'bs': 'bosniaque', 'cs': 'tchèque', 'de': 'allemand', 'el': 'grec', 'en_GB': 'anglais (Royaume-Uni)', 'es': 'espagnol', 'fi': 'finnois', 'fr': 'français', 'gl': 'galicien', 'he': 'hébreu', 'it': 'italien', 'kab': 'kabyle', 'ms': 'malais', 'pl': 'polonais', 'pt_BR': 'portugais (Brésil)', 'ru': 'russe', 'uk': 'ukrainien', 'uz': 'ouzbek', 'zh_TW': 'chinois (Taïwan)'}, 'gl': {'ast': 'asturiano', 'bg': 'búlgaro', 'bs': 'bosnio', 'cs': 'checo', 'de': 'alemán', 'el': 'grego', 'en_GB': 'inglés (Reino Unido)', 'es': 'español', 'fi': 'finés', 'fr': 'francés', 'gl': 'galego', 'he': 'hebreo', 'it': 'italiano', 'kab': 'kabile', 'ms': 'malaio', 'pl': 'polaco', 'pt_BR': 'portugués (Brasil)', 'ru': 'ruso', 'uk': 'ucraíno', 'uz': 'uzbeco', 'zh_TW': 'chinés (Taiwán)'}, 'he': {'ast': 'אסטורית', 'bg': 'בולגרית', 'bs': 'בוסנית', 'cs': 'צ׳כית', 'de': 'גרמנית', 'el': 'יוונית', 'en_GB': 'אנגלית (הממלכה המאוחדת)', 'es': 'ספרדית', 'fi': 'פינית', 'fr': 'צרפתית', 'gl': 'גליציאנית', 'he': 'עברית', 'it': 'איטלקית', 'kab': 'קבילה', 'ms': 'מלאית', 'pl': 'פולנית', 'pt_BR': 'פורטוגלית (ברזיל)', 'ru': 'רוסית', 'uk': 'אוקראינית', 'uz': 'אוזבקית', 'zh_TW': 'סינית (טייוואן)'}, 'it': {'ast': 'asturiano', 'bg': 'bulgaro', 'bs': 'bosniaco', 'cs': 'ceco', 'de': 'tedesco', 'el': 'greco', 'en_GB': 'inglese (Regno Unito)', 'es': 'spagnolo', 'fi': 'finlandese', 'fr': 'francese', 'gl': 'galiziano', 'he': 'ebraico', 'it': 'italiano', 'kab': 'cabilo', 'ms': 'malese', 'pl': 'polacco', 'pt_BR': 'portoghese (Brasile)', 'ru': 'russo', 'uk': 'ucraino', 'uz': 'usbeco', 'zh_TW': 'cinese (Taiwan)'}, 'kab': {'bg': 'Tabulgarit', 'cs': 'Tačikit', 'de': 'Talmant', 'el': 'Tagrikit', 'en_GB': 'Taglizit (Tagelda Yedduklen)', 'es': 'Taspenyulit', 'fr': 'Tafransist', 'it': 'Taṭalyanit', 'kab': 'Taqbaylit', 'ms': 'Tamalawit', 'pl': 'Tapulunit', 'pt_BR': 'Tapurtugalit (Brizil)', 'ru': 'Tarusit', 'uk': 'Tukranit', 'zh_TW': 'Tacinwat, Tamundarint (Ṭaywan)'}, 'ms': {'bg': 'Bulgaria', 'bs': 'Bosnia', 'cs': 'Czech', 'de': 'Jerman', 'el': 'Greek', 'en_GB': 'Inggeris (United Kingdom)', 'es': 'Sepanyol', 'fi': 'Finland', 'fr': 'Perancis', 'gl': 'Galicia', 'he': 'Ibrani', 'it': 'Itali', 'kab': 'Kabyle', 'ms': 'Bahasa Melayu', 'pl': 'Poland', 'pt_BR': 'Portugis (Brazil)', 'ru': 'Rusia', 'uk': 'Ukraine', 'uz': 'Uzbekistan', 'zh_TW': 'Cina (Taiwan)'}, 'pl': {'ast': 'asturyjski', 'bg': 'bułgarski', 'bs': 'bośniacki', 'cs': 'czeski', 'de': 'niemiecki', 'el': 'grecki', 'en_GB': 'angielski (Wielka Brytania)', 'es': 'hiszpański', 'fi': 'fiński', 'fr': 'francuski', 'gl': 'galicyjski', 'he': 'hebrajski', 'it': 'włoski', 'kab': 'kabylski', 'ms': 'malajski', 'pl': 'polski', 'pt_BR': 'portugalski (Brazylia)', 'ru': 'rosyjski', 'uk': 'ukraiński', 'uz': 'uzbecki', 'zh_TW': 'chiński (Tajwan)'}, 'pt_BR': {'ast': 'asturiano', 'bg': 'búlgaro', 'bs': 'bósnio', 'cs': 'tcheco', 'de': 'alemão', 'el': 'grego', 'en_GB': 'inglês (Reino Unido)', 'es': 'espanhol', 'fi': 'finlandês', 'fr': 'francês', 'gl': 'galego', 'he': 'hebraico', 'it': 'italiano', 'kab': 'kabyle', 'ms': 'malaio', 'pl': 'polonês', 'pt_BR': 'português (Brasil)', 'ru': 'russo', 'uk': 'ucraniano', 'uz': 'usbeque', 'zh_TW': 'chinês (Taiwan)'}, 'ru': {'ast': 'астурийский', 'bg': 'болгарский', 'bs': 'боснийский', 'cs': 'чешский', 'de': 'немецкий', 'el': 'греческий', 'en_GB': 'английский (Великобритания)', 'es': 'испанский', 'fi': 'финский', 'fr': 'французский', 'gl': 'галисийский', 'he': 'иврит', 'it': 'итальянский', 'kab': 'кабильский', 'ms': 'малайский', 'pl': 'польский', 'pt_BR': 'португальский (Бразилия)', 'ru': 'русский', 'uk': 'украинский', 'uz': 'узбекский', 'zh_TW': 'китайский (Тайвань)'}, 'uk': {'ast': 'астурська', 'bg': 'болгарська', 'bs': 'боснійська', 'cs': 'чеська', 'de': 'німецька', 'el': 'грецька', 'en_GB': 'англійська (Велика Британія)', 'es': 'іспанська', 'fi': 'фінська', 'fr': 'французька', 'gl': 'галісійська', 'he': 'іврит', 'it': 'італійська', 'kab': 'кабільська', 'ms': 'малайська', 'pl': 'польська', 'pt_BR': 'португальська (Бразилія)', 'ru': 'російська', 'uk': 'українська', 'uz': 'узбецька', 'zh_TW': 'китайська (Тайвань)'}, 'uz': {'bg': 'bolgar', 'bs': 'bosniy', 'cs': 'chex', 'de': 'nemischa', 'el': 'grek', 'en_GB': 'inglizcha (Birlashgan Qirollik)', 'es': 'ispancha', 'fi': 'fincha', 'fr': 'fransuzcha', 'gl': 'galisiy', 'he': 'ibroniy', 'it': 'italyan', 'kab': 'kabil', 'ms': 'malay', 'pl': 'polyakcha', 'pt_BR': 'portugalcha (Braziliya)', 'ru': 'ruscha', 'uk': 'ukrain', 'uz': 'o‘zbek', 'zh_TW': 'xitoy (Tayvan)'}, 'zh_TW': {'ast': '阿斯圖里亞文', 'bg': '保加利亞文', 'bs': '波士尼亞文', 'cs': '捷克文', 'de': '德文', 'el': '希臘文', 'en_GB': '英文(英國)', 'es': '西班牙文', 'fi': '芬蘭文', 'fr': '法文', 'gl': '加利西亞文', 'he': '希伯來文', 'it': '義大利文', 'kab': '卡比爾文', 'ms': '馬來文', 'pl': '波蘭文', 'pt_BR': '葡萄牙文(巴西)', 'ru': '俄文', 'uk': '烏克蘭文', 'uz': '烏茲別克文', 'zh_TW': '中文(台灣)'}} ) pybik-3.0/pybiklib/main.py0000664000175000017500000003326513171574645015773 0ustar barccbarcc00000000000000#-*- coding:utf-8 -*- # Copyright © 2009, 2011-2017 B. Clausius # # 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 . import sys, os from . import debug, config N_ = lambda s: s class Tee2(object): class Tee(object): def __init__(self, file1, file2): self.file1 = file1 self.file2 = file2 def write(self, data): self.file1.write(data) self.file1.flush() self.file2.write(data) def flush(self): self.file1.flush() self.file2.flush() def __init__(self, name='pybik.log', mode='w'): self.file = open(name, mode) self.file.write('logfile created\n') self.file.flush() self.stdout = sys.stdout self.stderr = sys.stderr sys.stdout = self.Tee(self.file, self.stdout) sys.stderr = self.Tee(self.file, self.stderr) def __del__(self): sys.stdout = self.stdout sys.stderr = self.stderr self.file.close() class Options: test_arg_names = ['write-y', 'write-yes', 'write-n', 'write-no', 'write-e', 'write-error', 'log-widgets', 'notime'] arg_info = [ (None, None, '\n'.join(config.LONG_DESCRIPTION)), (None, None, 'Pybik has a graphical user interface.' ' The options are intended for testing and debugging.'), (None, None, 'Options:'), (['-h', '--help'], lambda self, value: self.print_usage(), 'Show help message and exit'), (['--version'], lambda self, value: self.print_version(), 'Show version number and exit'), (['--config-file='], lambda self, value: self.__dict__.update(config_file=value), 'Specify the configuration filename'), (['--defaultconfig'], lambda self, value: self.__dict__.update(defaultconfig=True), 'Print default settings to stdout and exit'), (['--games-file='], lambda self, value: self.__dict__.update(games_file=value), 'Specify the filename for saved games'), (['--qml-file='], lambda self, value: self.__dict__.update(qml_file=value), 'Alternate user interface'), (['--variant='], lambda self, value: self.__dict__.update(variant=value), 'Extension module variant'), (['--demo='], lambda self, value: self.__dict__.update(demo=value), 'Demo module'), (['--log'], lambda self, value: self.tee(), 'Write logfile'), #TODO: test options removed in revision 4196 (['--debug='], lambda self, value: debug.set_flagstring(value), 'D is a comma-separated list of debug flags:\n{0}' .format(' '.join(debug.flag_nicks))), (None, None, 'Qt-Options, for a full list refer to the Qt-Reference,' ' but not all options make sense for this application:'), (['-qwindowgeometry G', '-geometry G'], None, 'Specifies window geometry for the main window using the X11-syntax.' ' For example: 100x100+50+50'), (['-reverse'], None, 'Sets the application layout direction to left-to-right'), (['-widgetcount'], None, 'Prints debug message at the end about number of widgets left' ' undestroyed and maximum number of widgets existed at the same time'), ] def __init__(self): self.config_file = None self.defaultconfig = False self.games_file = None self.qml_file = None self.variant = None self.demo = None self.pure_python = False self.test = [] self.test_args = [] self.ui_args = [] @staticmethod def format_opts(args): args = ((a + a.strip('--')[0].upper() if a.endswith('=') else a) for a in args) return ' ' + ', '.join(args) @staticmethod def format_help(text, indent=0): try: width = int(os.environ['COLUMNS']) - 2 except (KeyError, ValueError): width = 78 width -= indent def split(text): lines = text.split('\n') for line in lines: res = None words = line.split(' ') for word in words: if res is None: res = word elif len(res + word) + 1 <= width: res = ' '.join((res, word)) else: yield res res = word yield res return '\n'.ljust(indent+1).join(split(text)) @classmethod def print_usage(cls): print('Usage:', sys.argv[0], '[options]') for args, unused_func, text in cls.arg_info: if args is None: print() print(cls.format_help(text)) else: opts = cls.format_opts(args) if len(opts) > 18: text = '\n' + text else: opts = opts.ljust(20) text = cls.format_help(text, 20) print(opts + text) sys.exit(0) @staticmethod def print_version(): from textwrap import fill print(config.APPNAME, config.VERSION) print() print(config.COPYRIGHT) print() print('\n\n'.join(fill(text, width=78) for text in config.LICENSE_INFO.split('\n\n'))) print() print(fill(config.LICENSE_NOT_FOUND, width=78)) sys.exit(0) def tee(self): self._tee = Tee2() def parse(self, args): arg_functs = {o: f for opts, f, h in self.arg_info for o in opts or [] if f is not None} for arg in args: try: index = arg.index('=') except ValueError: key, value = arg, None else: key, value = arg[:index+1], arg[index+1:] try: func = arg_functs[key] except KeyError: self.ui_args.append(arg) else: func(self, value) for a in self.test_args: if a not in self.test_arg_names: print('unknown test argument:', a) sys.exit(1) class Main: def __init__(self, root_dir=None): self.root_dir = root_dir self.opts = Options() self.opts.parse(sys.argv) from .debug import DEBUG, DEBUG_QSGINFO, DEBUG_BASICRENDERER, DEBUG_PUREPYTHON, DEBUG_PHONE, DEBUG_CLOCALE if DEBUG: print('Qt args:', self.opts.ui_args) if DEBUG_QSGINFO: print('QSG_INFO=1') os.environ['QSG_INFO'] = '1' if DEBUG_BASICRENDERER: print('QSG_RENDER_LOOP=basic') os.environ['QSG_RENDER_LOOP'] = 'basic' if DEBUG_CLOCALE: os.environ['LANGUAGE'] = '' os.environ['LC_ALL'] = 'C.UTF-8' print('LC_ALL='+os.environ['LC_ALL']) if self.opts.defaultconfig: from .settings import settings settings.load('') settings.dump(sys.stdout, all=True) sys.exit(0) package = config.PACKAGE_FULL if DEBUG_PHONE else config.PACKAGE if self.opts.config_file is None: self.opts.config_file = config.get_config_home(package, 'settings.conf') elif not self.opts.config_file: self.opts.config_file = None if self.opts.games_file is None: self.opts.games_file = config.get_data_home(package, 'games') elif not self.opts.games_file: self.opts.games_file = None if self.opts.demo: if self.opts.games_file is not None: print('saved games not used in demo mode') self.opts.games_file = None if self.opts.config_file is not None: print('saved config not used in demo mode') self.opts.config_file = None if self.opts.qml_file is None: self.opts.qml_file = os.path.join(config.UI_DIR, 'qt', 'main.qml') #TODO: purepython mode currently not implemented if DEBUG_PUREPYTHON and False: from .ext import qtexec else: from .ext import _qtexec_ as qtexec self.qtexec = qtexec res = qtexec.exec_application(self) if res: sys.exit(res) def resolve_variant(self): from .debug import DEBUG, DEBUG_IMPORT if self.opts.variant is None: if DEBUG_IMPORT: print('no variant specified, using default') self.opts.variant = self.qtexec.aliases[''] elif self.opts.variant not in self.qtexec.depends: if self.opts.variant in self.qtexec.aliases: if DEBUG_IMPORT: print('alias variant specified:', repr(self.opts.variant)) self.opts.variant = self.qtexec.aliases[self.opts.variant] else: if DEBUG_IMPORT: print('unknown variant: ', repr(self.opts.variant), ', using default instead', sep='') self.opts.variant = self.qtexec.aliases[''] if '???' in self.opts.variant: if DEBUG_IMPORT: print('autodetect GL-variant') self.opts.variant = self.opts.variant.replace('???', self.qtexec.get_gl_variant()) if DEBUG: print('variant:', self.opts.variant) assert self.opts.variant in self.qtexec.depends def load_gllib(self): from .debug import DEBUG_IMPORT #XXX: Workaround for lp:941826, "dlopen(libGL.so) resolves to mesa rather than nvidia" # Was: "PyQt cannot compile shaders with Ubuntu's Nvidia drivers" # https://bugs.launchpad.net/ubuntu/+source/python-qt4/+bug/941826 #XXX: Also needed in compiled mode. Without this, on the phone the OpenGL entry points # in the first module are NULL and the app will crash # The Python doc says: # it may be better to determine the shared library name at development time, # and hardcode that into the wrapper module instead of using find_library() # to locate the library at runtime. # find_library() also may fail as it relies on external tools, so hardcode the names import ctypes # self.opts.variant must be a full variant name: (qtw|qtq)(ogl|es2)[os][d] gllib = {'ogl': 'libGL.so.1', 'es2': 'libGLESv2.so.2'}[self.opts.variant[3:6]] if DEBUG_IMPORT: import ctypes.util glname = gllib.split('.')[0][3:] print('OpenGL library:', gllib, glname, ctypes.util.find_library(glname)) try: ctypes.CDLL(gllib, ctypes.RTLD_GLOBAL) except OSError as e: import ctypes.util print('OpenGL library not found:', gllib, glname) print(' ', e) glname = gllib.split('.')[0][3:] gllib = ctypes.util.find_library(glname) if gllib is None: print(' not found by name {!r}, continue without preloading'.format(glname)) else: print(' retry with:', gllib) try: ctypes.CDLL(gllib, ctypes.RTLD_GLOBAL) except OSError as e: print(' not found, continue without preloading:') print(' ', e) def cb_app_post_create(self, language): self.resolve_variant() self.load_gllib() from .debug import DEBUG_IMPORT import pybiklib.ext for extname in self.qtexec.depends[self.opts.variant]: name = extname.split('_')[1] if DEBUG_IMPORT: print('importing extension', extname, 'as', name) __import__('pybiklib.ext', fromlist=(extname,)) module = getattr(pybiklib.ext, extname) sys.modules['pybiklib.ext.'+name] = module setattr(pybiklib.ext, name, module) if debug is not None: module.set_debug_flags(debug) import gettext if self.root_dir == sys.prefix: # normal installation LOCALEDIR = None else: # different root, e.g. /usr/local, source directory LOCALEDIR = config.LOCALE_DIR t = gettext.translation(config.PACKAGE, LOCALEDIR, languages=[language], fallback=True) t.install(names=['ngettext']) from pybiklib.ext import qt qt.app_post_create(_) def cb_run_app(self): from .application import MainWindow if self.opts is None: return None elif self.opts.test: #TODO: removed in revision 4196 return None else: window = MainWindow(self.opts) self.opts = None return window pybik-3.0/pybiklib/settings.py0000664000175000017500000002620613167652565016707 0ustar barccbarcc00000000000000#-*- coding:utf-8 -*- # Copyright © 2009, 2011-2017 B. Clausius # # 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 . import sys, os from ast import literal_eval from io import StringIO from collections import OrderedDict from contextlib import suppress from . import config current_settings_version = 3 class KeyStore: def __init__(self): self.schema = None self.filename = None self.keystore = {} self.callback = lambda unused_key: None self.globtree = GlobTree() self.extra_lines = [] def clone_key(self, keyfrom, keyto): self.schema[keyto] = self.schema[keyfrom] if keyfrom in self.keystore and keyto not in self.keystore: self.keystore[keyto] = self.keystore[keyfrom] def get_default(self, key): return self.schema[key][0] def get_validator(self, key): return self.schema[key][1] def get_range(self, key): validator = self.get_validator(key) if not isinstance(validator, (tuple, list)): raise ValueError('{} is not a range'.format(key)) return validator def get_value(self, key): try: return self.keystore[key] except KeyError: return self.get_default(key) def get_nick(self, key): value = self.get_value(key) validator = self.get_validator(key) if not isinstance(validator, list): raise ValueError('{} is not an enum'.format(key)) return validator[value] def set_value(self, key, value): if key not in self.keystore: if value != self.get_default(key): self.keystore[key] = value self.callback(key) elif self.keystore[key] != value: self.keystore[key] = value self.callback(key) def set_nick(self, key, nick): validator = self.get_validator(key) if not isinstance(validator, list): raise ValueError('{} is not an enum'.format(key)) value = validator.index(nick) return self.set_value(key, value) def del_value(self, key): try: value = self.keystore[key] except KeyError: pass # already the default value else: del self.keystore[key] if value != self.get_default(key): self.callback(key) else: self.callback(None) def find_match(self, key): def match(key, pattern): key = key.split('.') pattern = pattern.split('.') for k, p in zip(key, pattern): if k != p != '*': return False return True for pattern in self.schema: if match(key, pattern): return pattern return None def read_settings(self, filename): from .schema import schema, deprecated self.schema = schema self.filename = filename # read settings lines = [] if self.filename: dirname = os.path.dirname(self.filename) if dirname and not os.path.exists(dirname): os.makedirs(dirname) try: with open(self.filename, 'rt', encoding='utf-8') as settings_file: text = settings_file.read() lines = text.splitlines() # line breaks are not included except FileNotFoundError: pass except Exception: sys.excepthook(*sys.exc_info()) for line in lines: try: key, strvalue = line.split('=', 1) except ValueError: # discard invalid lines continue key = key.strip() pattern = self.find_match(key) if pattern is None: # keep unknown keys, they may be settings of a different version self.extra_lines.append(line) continue self.schema[key] = self.schema[pattern] strvalue = strvalue.strip() try: value = literal_eval(strvalue) except (ValueError, SyntaxError): # discard invalid values continue # translate enums and validate values, discard invalid values validator = self.get_validator(key) if validator is deprecated: pass elif isinstance(validator, list): try: value = validator.index(value) except ValueError: continue elif isinstance(validator, tuple): if not validator[0] <= value <= validator[1]: continue elif validator is not None: if not validator(value): continue self.keystore[key] = value self.build_globtree() def build_globtree(self): keys = list(self.schema.keys()) for key in keys: subkeys = key.split('.') if '*' in subkeys: self.globtree.insert_key(subkeys) def resolve_glob(self, key): subkeys = key.split('.') clone = self.globtree.find_key(subkeys) assert clone is not None, subkeys globkey = '.'.join(clone) assert globkey != key self.clone_key(globkey, key) def dump(self, file, all=False): # pylint: disable=W0622 keydict = self.schema if all else self.keystore for key in sorted(keydict.keys()): if '*' in key: continue try: # translate enums value = self.get_nick(key) except ValueError: value = self.get_value(key) print(key, '=', repr(value), file=file) if self.extra_lines: #XXX: this line is discarded when loading the settings file # because it does not contain a '=' print('# comments and keys unknown by version {}:'.format(config.VERSION), file=file) for line in self.extra_lines: print(line, file=file) def write_settings(self): if not self.filename: return buf = StringIO() self.dump(buf) tmpfilename = self.filename + '.tmp' with suppress(OSError): os.remove(tmpfilename) try: with open(tmpfilename, 'wt', encoding='utf-8') as settings_file: settings_file.write(buf.getvalue()) os.replace(tmpfilename, self.filename) except Exception: sys.excepthook(*sys.exc_info()) def get_by_suffix(self, key): if key.endswith('_nick'): key = key[:-5] func = self.get_nick elif key.endswith('_range'): key = key[:-6] func = self.get_range elif key.endswith('_default'): key = key[:-8] func = self.get_default else: func = self.get_value try: return func(key) except KeyError: self.resolve_glob(key) return func(key) def set_by_suffix(self, key, value): if key.endswith('_nick'): key = key[:-5] func = self.set_nick else: func = self.set_value try: func(key, value) except KeyError: self.resolve_glob(key) func(key, value) def del_by_suffix(self, key): try: self.del_value(key) except KeyError: self.resolve_glob(key) self.del_value(key) class GlobTree: __slots__ = 'nodes', 'leaves' def __init__(self): self.nodes = OrderedDict() self.leaves = [] def insert_key(self, subkeys): subkey, *subkeys = subkeys if subkeys: try: node = self.nodes[subkey] except KeyError: node = GlobTree() self.nodes[subkey] = node node.insert_key(subkeys) elif subkey not in self.leaves: self.leaves.append(subkey) else: assert False def find_key(self, subkeys): subkey, *subkeys = subkeys if subkeys: for subkey in subkey, '*': try: node = self.nodes[subkey] except KeyError: continue clone = node.find_key(subkeys) if clone is not None: return [subkey] + clone return None elif subkey in self.leaves: return [subkey] elif '*' in self.leaves: return ['*'] else: return None class Settings: __slots__ = () keystore = KeyStore() dump = keystore.dump @classmethod def reset(self): self.keystore.keystore.clear() def load(self, filename): self.keystore.read_settings(filename) version = self['version'] if version != current_settings_version: self['version'] = current_settings_version return version @classmethod def connnect(self, callback): self.keystore.callback = callback @classmethod def disconnect(self): self.keystore.callback = lambda unused_key: None @classmethod def flush(self): self.keystore.write_settings() @staticmethod def norm_key(key): if type(key) is int: return str(key) elif type(key) is tuple: def cvt_dot(keys): for key in keys: if type(key) is int: yield str(key) elif type(key) is tuple: yield '_'.join(str(v) for v in key) else: yield from key.split('.') return '.'.join(cvt_dot(key)) return key def __getitem__(self, key): key = self.norm_key(key) return self.keystore.get_by_suffix(key) def __setitem__(self, key, value): key = self.norm_key(key) self.keystore.set_by_suffix(key, value) def __delitem__(self, key): key = self.norm_key(key) self.keystore.del_by_suffix(key) settings = Settings() pybik-3.0/pybiklib/utils.py0000664000175000017500000001263313141327156016171 0ustar barccbarcc00000000000000#!/usr/bin/python3 # -*- coding: utf-8 -*- # Copyright © 2014-2015, 2017 B. Clausius # # 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 . import sys from math import sqrt, atan2 epsdigits = 5 epsilon = 10**-epsdigits filebyteorder = 'little' def get_texcoords_range(verts, normal): texcoords = [vert.rotationyx_normal(normal) for vert in verts] minx = min(x for x, y in texcoords) maxx = max(x for x, y in texcoords) miny = min(y for x, y in texcoords) maxy = max(y for x, y in texcoords) return minx, maxx, miny, maxy class Coords (tuple): def __new__(cls, args=(0,0,0)): return tuple.__new__(cls, args) def __add__(self, other): return self.__class__(s+o for s, o in zip(self, other)) def __sub__(self, other): return self.__class__(s-o for s, o in zip(self, other)) def __repr__(self): return '{}({})'.format(self.__class__.__name__, super().__repr__()) def __str__(self): return str(list(self)) class Vector(Coords): def __neg__(self): return self.__class__(-s for s in self) def __mul__(self, value): return self.__class__(s*value for s in self) def __truediv__(self, value): return self.__class__(s/value for s in self) def cross(self, other): return self.__class__(( self[1] * other[2] - other[1] * self[2], self[2] * other[0] - other[2] * self[0], self[0] * other[1] - other[0] * self[1])) def dot(self, other): return sum(s*o for s, o in zip(self, other)) def length_squared(self): return self.dot(self) def length(self): return sqrt(self.length_squared()) def normalised(self): return self / self.length() def angle(self, other): sina = self.cross(other).length() cosa = self.dot(other) return atan2(sina, cosa) def angle_plane(self, other, plane_normal): cross = self.cross(other) sina = cross.length() cosa = self.dot(other) angle = atan2(sina, cosa) if cross.dot(plane_normal) < 0: return - angle return angle def anglex(self): sina = -self[1] cosa = -self[2] if sina*sina + cosa*cosa < epsilon: cosa, sina = 1, 0 return cosa, sina def angley(self): sina = -self[0] cosa = self[2] if sina*sina + cosa*cosa < epsilon: cosa, sina = 1, 0 return cosa, sina def rotationx(self, cosa, sina): return self.__class__((self[0], cosa*self[1] - sina*self[2], sina*self[1] + cosa*self[2])) def rotationy(self, cosa, sina): return self.__class__((cosa*self[0] + sina*self[2], self[1], cosa*self[2] - sina*self[0])) def angleyx(self): ''' Same as: cosay, sinay = self.angley() cosax, sinax = self.rotationy(cosay, sinay).anglex() return cosay, sinay, cosax, sinax ''' x, y, z = self xx = x*x zz = z*z xx_zz = xx + zz if xx_zz < epsilon: if y*y + zz < epsilon: return 1, 0, 1, 0 else: return 1, 0, -z, -y else: if y*y + xx_zz*xx_zz < epsilon: return z, -x, 1, 0 else: return z, -x, -xx_zz, -y def rotationyx(self, cosay, sinay, cosax, sinax): x, y, z = self x, z = cosay*x + sinay*z, cosay*z - sinay*x y, z = cosax*y - sinax*z, sinax*y + cosax*z return self.__class__((x, y, z)) def rotationyx_normal(self, normal): ''' Same as: self.rotationyx(*normal.angleyx()) ''' vx, vy, vz = self nx, ny, nz = normal nxx = nx*nx nzz = nz*nz nxx_zz = nxx + nzz if nxx_zz < epsilon: if ny*ny + nzz < epsilon: pass else: vy = ny*vz - nz*vy else: if ny*ny + nxx_zz*nxx_zz < epsilon: vx = nz*vx - nx*vz else: vy = ny*(nz*vz + nx*vx) - nxx_zz*vy vx = nz*vx - nx*vz return vx, vy def exc_end(func, *, name=None): def _func(*args): try: return func(*args) except: sys.excepthook(*sys.exc_info()) _func.__doc__ = func.__doc__ _func.__module__ = func.__module__ _func.__name__ = name or func.__name__ return _func class ExceptionMeta (type): def __new__(cls, name, bases, namespace): for k, v in sorted(namespace.items()): if k.startswith('on_'): namespace[k] = exc_end(v, name=k) return type(name, bases, namespace) pybik-3.0/pybiklib/config.py0000644000175000017500000001171613173167402016276 0ustar barccbarcc00000000000000#-*- coding:utf-8 -*- # Copyright © 2009, 2011-2017 B. Clausius # # 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 . import os N_ = lambda s: s try: _ except NameError: _ = N_ AUTHOR = 'B. Clausius' CONTACT_EMAIL = 'barcc@gmx.de' CONTACT_WEB = 'https://answers.launchpad.net/pybik' COPYRIGHT = 'Copyright © 2009-2017, B. Clausius' LICENSE_NAME = 'GPL-3.0+' PACKAGE = 'pybik' PACKAGE_FULL = 'pybik.barcc' #TRANSLATORS: Name of the application, probably should not be translated. APPNAME = N_('Pybik') VERSION = '3.0' VERSION_SHORT = VERSION.split('~')[0] WEBSITE = 'https://launchpad.net/pybik/' DOWNLOADS = 'https://launchpad.net/pybik/+download' BUG_DATABASE = 'https://bugs.launchpad.net/pybik' CONTACT_FILEBUG = BUG_DATABASE + '/+filebug' # The following two lines are replaced by "setup.py install" data_dir = os.path.join(os.path.dirname(os.path.dirname(__file__)), 'data') appdata_dir = data_dir # The following line is replaced by "setup.py sdist" RELEASE_DATE = '2017-10-22' LOCALE_DIR = os.path.join(data_dir, 'locale') APPICON_FILE = os.path.join(appdata_dir, 'icons', 'pybik-64.png') APPICON192_FILE = os.path.join(appdata_dir, 'icons', 'pybik-192.png') LICENSE_FILE = os.path.join(appdata_dir, 'GPL-3') MODELS_DIR = os.path.join(appdata_dir, 'models') PLUGINS_DIR = os.path.join(appdata_dir, 'plugins') UI_DIR = os.path.join(appdata_dir, 'ui') SHADER_DIR = os.path.join(appdata_dir, 'shaders') def get_config_home(*args): return os.path.join(os.environ.get('XDG_CONFIG_HOME', '') or os.path.expanduser("~/.config"), *args) def get_data_home(*args): return os.path.join(os.environ.get('XDG_DATA_HOME', '') or os.path.expanduser("~/.local/share"), *args) #TRANSLATORS: short description SHORT_DESCRIPTION = N_("Rubik's cube game") LONG_DESCRIPTION = ( #TRANSLATORS: The next 7 lines belong together and form the long description N_('Pybik is a 3D puzzle game about the cube invented by Ernő Rubik.'), '', '* '+N_('Various 3D puzzles, such as cubes, towers, prisms, tetrahedra, octahedra, dodecahedra and many more'), '* '+N_('Solvers for some puzzles'), '* '+N_('Pretty patterns'), '* '+N_('Editor for move sequences'), '* '+N_('Custom colors and images on the surface of the puzzles'), ) LICENSE_INFO = N_( '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.\n\n' '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.') LICENSE_FURTHER = N_( #TRANSLATORS: Text between "<" and ">" is expanded to a link by the program and should not be modified. # Text between "" and "<|>" is the translatable text for the link. 'Read the full text of the GNU General Public License' '<|> or see .') LICENSE_NOT_FOUND = N_( 'You should have received a copy of the GNU General Public License' ' along with this program. If not, see .') def get_filebug_text(): return _( 'If you find any bugs in Pybik or have a suggestion for an improvement then please ' 'submit a <{CONTACT_FILEBUG}|>bug report<|>.' ).format(CONTACT_FILEBUG=CONTACT_FILEBUG) TRANSLATION_TEXT = N_( 'Translations are managed by the ' '' 'Launchpad translation group<|>.\n\n' 'If you want help to translate Pybik to your language you can do it through ' 'the web interface<|>.\n\n' 'Read more about "Translating with Launchpad"<|> ' 'and "Starting to translate"<|>.') REPOSITORY_SHORT = 'lp:pybik' REPOSITORY_URL = 'https://code.launchpad.net/~barcc/pybik/trunk' REPOSITORY_BROWSE = 'https://bazaar.launchpad.net/~barcc/pybik/trunk/files' REPOSITORY_DOWNLOAD = 'http://bazaar.launchpad.net/~barcc/pybik/trunk/download' pybik-3.0/pybiklib/translators.py0000664000175000017500000000754313173052131017402 0ustar barccbarcc00000000000000# generated with: ./maint.py merge-translators translators = [ ('Asturian', 'ast', False, [ ('Xuacu Saturio', 'https://launchpad.net/~xuacusk8'), ('ivarela', 'https://launchpad.net/~ivarela'), ]), ('Bulgarian', 'bg', False, [ ('Atanas Kovachki', 'https://launchpad.net/~zdar'), ]), ('Bosnian', 'bs', False, [ ('Kenan Dervišević', 'https://launchpad.net/~kenan3008'), ]), ('Czech', 'cs', False, [ ('Tadeáš Pařík', 'https://launchpad.net/~pariktadeas'), ]), ('German', 'de', True, [ ('B. Clausius', 'https://launchpad.net/~barcc'), ]), ('Greek', 'el', False, [ ('George Christofis', 'https://launchpad.net/~geochr'), ('mara sdr', 'https://launchpad.net/~paren8esis'), ]), ('English (United Kingdom)', 'en_GB', True, [ ('Andi Chandler', 'https://launchpad.net/~bing'), ('Anthony Harrington', 'https://launchpad.net/~untaintableangel'), ('James Tait', 'https://launchpad.net/~jamestait'), ('B. Clausius', 'https://launchpad.net/~barcc'), ]), ('Spanish', 'es', False, [ ('Adolfo Jayme', 'https://launchpad.net/~fitojb'), ('Paco Molinero', 'https://launchpad.net/~franciscomol'), ('Dante Díaz', 'https://launchpad.net/~dante'), ('Eduardo Alberto Calvo', 'https://launchpad.net/~edu5800'), ('José Lou Chang', 'https://launchpad.net/~obake'), ('Oscar Fabian Prieto Gonzalez', 'https://launchpad.net/~ofpprieto'), ('Aaron Farias', 'https://launchpad.net/~timido'), ]), ('Finnish', 'fi', False, [ ('Jiri Grönroos', 'https://launchpad.net/~jiri-gronroos'), ]), ('French', 'fr', False, [ ('Jean-Marc', 'https://launchpad.net/~m-balthazar'), ('Nicolas Delvaux', 'https://launchpad.net/~malizor'), ('Sylvie Gallet', 'https://launchpad.net/~sylvie-gallet'), ('Éfrit', 'https://launchpad.net/~efrit'), ('Stanislas Michalak', 'https://launchpad.net/~stanislas-michalak'), ('Havok Novak', 'https://launchpad.net/~havok-novak-deactivatedaccount'), ('Baptiste Fontaine', 'https://launchpad.net/~bfontaine'), ('Célestin Taramarcaz', 'https://launchpad.net/~ctaramarcaz'), ('lann', 'https://launchpad.net/~lann'), ('Aurélien Ribeiro', 'https://launchpad.net/~aurel-koala'), ('Pierre Soulat', 'https://launchpad.net/~pierre-soulat'), ]), ('Galician', 'gl', True, [ ('Miguel Anxo Bouzada', 'https://launchpad.net/~mbouzada'), ]), ('Hebrew', 'he', False, [ ('Yaron', 'https://launchpad.net/~sh-yaron'), ]), ('Italian', 'it', False, [ ('Claudio Arseni', 'https://launchpad.net/~claudio.arseni'), ('Gianfranco Frisani', 'https://launchpad.net/~gfrisani'), ('acc01291', 'https://launchpad.net/~acc01291'), ]), ('Kabyle', 'kab', False, [ ('Belkacem Mohammed', 'https://launchpad.net/~belkacem77'), ]), ('Malay', 'ms', True, [ ('abuyop', 'https://launchpad.net/~abuyop'), ]), ('Polish', 'pl', False, [ ('Szymon Nieznański', 'https://launchpad.net/~isamu715'), ('Michał Rzepiński', 'https://launchpad.net/~micou8'), ]), ('Brazilian Portuguese', 'pt_BR', False, [ ('Fábio Nogueira', 'https://launchpad.net/~fnogueira'), ('Rodrigo Borges Freitas', 'https://launchpad.net/~rodrigo-borges-freitas'), ('Rafael Neri', 'https://launchpad.net/~rafepel'), ]), ('Russian', 'ru', False, [ ('Aleksey Kabanov', 'https://launchpad.net/~ak099'), ('☠Jay ZDLin☠', 'https://launchpad.net/~black-buddha666'), ('Oleg Koptev', 'https://launchpad.net/~koptev-oleg'), ('scientistnik', 'https://launchpad.net/~nozdrin-plotnitsky'), ]), ('Ukrainian', 'uk', True, [ ('Yuri Chornoivan', 'https://launchpad.net/~yurchor-gmail'), ('yurchor', 'https://launchpad.net/~yurchor-deactivatedaccount'), ]), ('Uzbek', 'uz', False, [ ('Akmal Xushvaqov', 'https://launchpad.net/~uzadmin'), ]), ('Chinese (Traditional)', 'zh_TW', False, [ ('Po-Chun Huang', 'https://launchpad.net/~aphroteus'), ]), ] pybik-3.0/pybiklib/plugins/0000755000175000017500000000000013173167603016135 5ustar barccbarcc00000000000000pybik-3.0/pybiklib/plugins/challenges.py0000664000175000017500000000217012510216165020606 0ustar barccbarcc00000000000000#-*- coding:utf-8 -*- # Copyright © 2009-2013 B. Clausius # # 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 . random = lambda game: game.random() random1 = lambda game: game.random(1) random2 = lambda game: game.random(2) random3 = lambda game: game.random(3) random4 = lambda game: game.random(4) random5 = lambda game: game.random(5) random6 = lambda game: game.random(6) random7 = lambda game: game.random(7) random8 = lambda game: game.random(8) random9 = lambda game: game.random(9) random10 = lambda game: game.random(10) pybik-3.0/pybiklib/plugins/pretty_patterns.py0000664000175000017500000002226212556223565021770 0ustar barccbarcc00000000000000#-*- coding:utf-8 -*- # Copyright © 2009-2015 B. Clausius # # 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 . # pylint: disable=C0321 def play_stripes_Brick_nnn_2(game): size = game.current_state.model.sizes for unused_j in 0, 1: for i in range(size[1]-1, size[1]//2-1, -1): game.add_moves([(1, i, 0)]) for i in range(1, size[0], 2): game.add_moves([(0, i, 0)]) for i in range(1, size[2], 2): game.add_moves([(2, i, 0)]) def play_stripes_Brick_nn1_4(game): size = game.current_state.model.sizes for i in range(1, size[0], 2): game.add_moves([(0, i, 0)]) for i in range(size[1]-1, size[1]//2, -1): game.add_moves([(1, i, 0)]) for i in range(1, size[0] // 2, 2): game.add_moves([(0, i, 0)]) game.add_moves([(1, size[1]//2, 0)]) for i in range(size[0]//2+1, size[0], 2): game.add_moves([(0, i, 0)]) for i in range(size[1]-1, size[1]//2-1, -1): game.add_moves([(1, i, 0)]) def play_stripes_Brick_1nn_4(game): size = game.current_state.model.sizes for i in range(1, size[2], 2): game.add_moves([(2, i, 0)]) for i in range(size[1]-1, size[1]//2, -1): game.add_moves([(1, i, 0)]) for i in range(1, size[2] // 2, 2): game.add_moves([(2, i, 0)]) game.add_moves([(1, size[1]//2, 0)]) for i in range(size[2]//2+1, size[2], 2): game.add_moves([(2, i, 0)]) for i in range(size[1]-1, size[1]//2-1, -1): game.add_moves([(1, i, 0)]) def play_stripes_Cube_nnn_2(game): size = game.current_state.model.sizes for i in range(0, size[0], 2): game.add_moves([(0, i, 0)] * 2) for i in range(0, size[2], 2): game.add_moves([(2, i, 0)] * 2) for i in range(0, size[0], 2): game.add_moves([(0, i, 0)] * 2) def play_stripes_TowerBrick_nnn_2(game): size = game.current_state.model.sizes for i in range(0, size[0], 2): game.add_moves([(0, i, 0)]) for i in range(0, size[2], 2): game.add_moves([(2, i, 0)]) for i in range(0, size[0], 2): game.add_moves([(0, i, 0)]) def play_chessboard(game): model = game.current_state.model size = model.sizes dups = [s//2 for s in model.symmetries] # Moves are 3-Tuples (axis, slice, dir) axis=0,1,2 slice=0,...,size-1 dir=0,1 if size[0] % 2 == size[1] % 2 == 1: moves = [(0, i, 0) for i in range(1, size[0], 2)] moves += [(1, i, 0) for i in range(1, size[1], 2)] moves += [(2, i, 0) for i in range(1, size[2], 2)] elif size[1] % 2 == size[2] % 2 == 1: moves = [(1, i, 0) for i in range(1, size[1], 2)] moves += [(2, i, 0) for i in range(1, size[2], 2)] moves += [(0, i, 0) for i in range(1, size[0], 2)] elif size[2] % 2 == size[0] % 2 == 1: moves = [(2, i, 0) for i in range(1, size[2], 2)] moves += [(0, i, 0) for i in range(1, size[0], 2)] moves += [(1, i, 0) for i in range(1, size[1], 2)] for move in moves: game.add_moves([move] * dups[move[0]]) def play_t_time_Cube_odd(game): size = game.current_state.model.sizes ll = 'l{0}l{0}'.format(size[0] // 2 + 1) ff = 'f{0}f{0}'.format(size[0] // 2 + 1) game.add_code("{0}du-{1}ud-{0}duu{0}uu{0}d-{0}uu".format(ll, ff)) def play_t_time_Cube_even(game): size = game.current_state.model.sizes ll = 'l{0}l{0}l{1}l{1}'.format(size[0] // 2, size[0] // 2 + 1) ff = 'f{0}f{0}f{1}f{1}'.format(size[0] // 2, size[0] // 2 + 1) game.add_code("{0}dd2u-u2-{1}uu2d-d2-{0}dd2uuu2u2{0}uuu2u2{0}d-d2-{0}uuu2u2".format(ll, ff)) def play_t_time_Tower_odd(game): size = game.current_state.model.sizes ll = 'l{0}'.format(size[0] // 2 + 1) ff = 'f{0}'.format(size[0] // 2 + 1) game.add_code("{0}du-{1}ud-{0}duu{0}uu{0}d-{0}uu".format(ll, ff)) def play_t_time_Tower_even(game): size = game.current_state.model.sizes ll = 'l{0}l{1}'.format(size[0] // 2, size[0] // 2 + 1) ff = 'f{0}f{1}'.format(size[0] // 2, size[0] // 2 + 1) game.add_code("{0}dd2u-u2-{1}uu2d-d2-{0}dd2uuu2u2{0}uuu2u2{0}d-d2-{0}uuu2u2".format(ll, ff)) def play_plus_Cube_odd(game): size = game.current_state.model.sizes for i in range(0, (size[1]-1) // 2): game.add_moves([(1, size[1] - 1 - i, 0)] * 2) game.add_moves([(0, size[0] // 2, 0)] * 2) game.add_moves([(2, size[2] // 2, 0)] * 2) for i in range(0, (size[1]-1) // 2): game.add_moves([(1, i, 0)] * 2) game.add_moves([(0, size[0] // 2, 0)] * 2) game.add_moves([(2, size[2] // 2, 0)] * 2) def play_plus_Cube_even(game): size = game.current_state.model.sizes for i in range(0, (size[1]-1) // 2): game.add_moves([(1, size[1] - 1 - i, 0)] * 2) game.add_moves([(0, size[0] // 2 - 1, 0)] * 2) game.add_moves([(0, size[0] // 2, 0)] * 2) game.add_moves([(2, size[2] // 2, 0)] * 2) game.add_moves([(2, size[2] // 2 - 1, 0)] * 2) for i in range(0, (size[1]-1) // 2): game.add_moves([(1, i, 0)] * 2) game.add_moves([(0, size[0] // 2 - 1, 0)] * 2) game.add_moves([(0, size[0] // 2, 0)] * 2) game.add_moves([(2, size[2] // 2, 0)] * 2) game.add_moves([(2, size[2] // 2 - 1, 0)] * 2) def play_plus_Tower_on(game): size = game.current_state.model.sizes for i in range(0, (size[1]-1) // 2): game.add_moves([(1, size[1] - 1 - i, 0)] * 2) game.add_moves([(0, size[0] // 2, 0)]) game.add_moves([(2, size[2] // 2, 0)]) for i in range(0, (size[1]-1) // 2): game.add_moves([(1, i, 0)] * 2) game.add_moves([(0, size[0] // 2, 0)]) game.add_moves([(2, size[2] // 2, 0)]) def play_plus_Tower_en(game): size = game.current_state.model.sizes for i in range(0, (size[1]-1) // 2): game.add_moves([(1, size[1] - 1 - i, 0)] * 2) game.add_moves([(0, size[0] // 2 - 1, 0)]) game.add_moves([(0, size[0] // 2, 0)]) game.add_moves([(2, size[2] // 2, 0)]) game.add_moves([(2, size[2] // 2 - 1, 0)]) for i in range(0, (size[1]-1) // 2): game.add_moves([(1, i, 0)] * 2) game.add_moves([(0, size[0] // 2 - 1, 0)]) game.add_moves([(0, size[0] // 2, 0)]) game.add_moves([(2, size[2] // 2, 0)]) game.add_moves([(2, size[2] // 2 - 1, 0)]) def play_plus_Brick_ono(game): size = game.current_state.model.sizes for i in range(0, (size[1]-1) // 2): game.add_moves([(1, size[1] - 1 - i, 0)]) game.add_moves([(0, size[0] // 2, 0)]) game.add_moves([(2, size[2] // 2, 0)]) for i in range(0, (size[1]-1) // 2): game.add_moves([(1, i, 0)]) game.add_moves([(0, size[0] // 2, 0)]) game.add_moves([(2, size[2] // 2, 0)]) def play_plus_Brick_one(game): size = game.current_state.model.sizes for i in range(0, (size[1]-1) // 2): game.add_moves([(1, size[1] - 1 - i, 0)]) game.add_moves([(0, size[0] // 2, 0)]) game.add_moves([(2, size[2] // 2, 0)]) game.add_moves([(2, size[2] // 2 - 1, 0)]) for i in range(0, (size[1]-1) // 2): game.add_moves([(1, i, 0)]) game.add_moves([(0, size[0] // 2, 0)]) game.add_moves([(2, size[2] // 2, 0)]) game.add_moves([(2, size[2] // 2 - 1, 0)]) def play_plus_Brick_eno(game): size = game.current_state.model.sizes for i in range(0, (size[1]-1) // 2): game.add_moves([(1, size[1] - 1 - i, 0)]) game.add_moves([(0, size[0] // 2 - 1, 0)]) game.add_moves([(0, size[0] // 2, 0)]) game.add_moves([(2, size[2] // 2, 0)]) for i in range(0, (size[1]-1) // 2): game.add_moves([(1, i, 0)]) game.add_moves([(0, size[0] // 2 - 1, 0)]) game.add_moves([(0, size[0] // 2, 0)]) game.add_moves([(2, size[2] // 2, 0)]) def play_plus_Brick_ene(game): size = game.current_state.model.sizes for i in range(0, (size[1]-1) // 2): game.add_moves([(1, size[1] - 1 - i, 0)]) game.add_moves([(0, size[0] // 2 - 1, 0)]) game.add_moves([(0, size[0] // 2, 0)]) game.add_moves([(2, size[2] // 2, 0)]) game.add_moves([(2, size[2] // 2 - 1, 0)]) for i in range(0, (size[1]-1) // 2): game.add_moves([(1, i, 0)]) game.add_moves([(0, size[0] // 2 - 1, 0)]) game.add_moves([(0, size[0] // 2, 0)]) game.add_moves([(2, size[2] // 2, 0)]) game.add_moves([(2, size[2] // 2 - 1, 0)]) def play_minus_CubeTower_odd(game): size = game.current_state.model.sizes game.add_moves([(1, size[1] // 2, 0)] * 2) def play_minus_CubeTower_even(game): size = game.current_state.model.sizes game.add_moves([(1, size[1] // 2, 0)] * 2) game.add_moves([(1, size[1] // 2 - 1, 0)] * 2) def play_minus_Brick_non(game): size = game.current_state.model.sizes game.add_moves([(1, size[1] // 2, 0)]) def play_minus_Brick_nen(game): size = game.current_state.model.sizes game.add_moves([(1, size[1] // 2, 0)]) game.add_moves([(1, size[1] // 2 - 1, 0)]) pybik-3.0/pybiklib/plugins/__init__.py0000644000175000017500000000000013171631132020223 0ustar barccbarcc00000000000000pybik-3.0/pybiklib/plugins/transformations.py0000664000175000017500000000210612454504502021733 0ustar barccbarcc00000000000000# -*- coding: utf-8 -*- # Copyright © 2015 B. Clausius # # 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 . def invert(game): game.move_sequence.invert() game.recalc_current_state() def normalize_complete_rotations(game): game.move_sequence.normalize_complete_rotations(game.initial_state.model) game.recalc_current_state() def normalize_moves(game): game.move_sequence.normalize_moves(game.initial_state.model) game.recalc_current_state() pybik-3.0/pybiklib/pybik.py0000775000175000017500000000166313062316243016150 0ustar barccbarcc00000000000000#!/usr/bin/python3 #-*- coding:utf-8 -*- # Copyright © 2009, 2011-2015, 2017 B. Clausius # # 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 . import os import pybiklib.main root_dir = os.path.dirname(os.path.realpath(os.path.dirname(__file__))) def main(): pybiklib.main.Main(root_dir) if __name__ == '__main__': main() pybik-3.0/pybiklib/schema.py0000664000175000017500000002536613152506223016274 0ustar barccbarcc00000000000000# -*- coding: utf-8 -*- # Copyright © 2013-2017 B. Clausius # # 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 . from .debug import DEBUG_SHADER N_ = lambda s: s if DEBUG_SHADER: import os from . import config def shaders(names): for filename in os.listdir(config.SHADER_DIR): name = os.path.splitext(filename)[0] if name not in names: names.append(name) return names else: shaders = lambda s: s def tuple_validator(minlen, maxlen, itemtype, value, valuerange=None): if type(value) is not tuple: return False if not (minlen <= len(value) <= maxlen): return False for v in value: if type(v) is not itemtype: return False if valuerange is not None and not valuerange[0] <= v <= valuerange[1]: return False return True def validate_mtype(v): from .model import Model return v in Model.cache_index['types'] def validate_draw_accels(v): if type(v) is not list: return False for t in v: if type(t) is not tuple or len(t) != 2: return False if type(t[0]) is not str or type(t[1]) is not str: return False return True deprecated = type('DeprecatedType', (), {}) def migrate_game_size_blocks_moves_position(settings): mtype = settings['game.type'] size = settings['game.size'] blocks = settings['game.blocks'] moves = settings['game.moves'] position = settings['game.position'] if not tuple_validator(3, 100, int, size, (1, 10)): return from .model import Model defaultsize = Model.cache_index['type'][mtype]['defaultsize'] if len(size) < len(defaultsize): return if len(size) > len(defaultsize): size = size[:len(defaultsize)] try: size = Model.cache_index['normsize'][mtype][size] except KeyError: return settings['games',mtype,'size'] = size if type(blocks) is not str: return if type(moves) is not str: moves = '' if type(position) is not int or position < 0: position = 0 return mtype, size, blocks, moves, position def migrate_theme_face_N_color_image_mode(settings): mtype = settings['game.type'] facenames = ('Up', 'Down', 'Left', 'Right', 'Front', 'Back') for i, facename in enumerate(facenames): color = settings['theme.face',i,'color'] image = settings['theme.face',i,'image'] mode = settings['theme.face',i,'mode'] if type(color) is str: settings['theme.faces',facename,'color'] = color if type(image) is str: settings['theme.faces',facename,'image'] = image if type(mode) in ['tiled', 'mosaic']: settings['theme.faces',facename,'mode'] = mode def migrate_2_3(settings): for facename in ('Up', 'Down', 'Left', 'Right', 'Front', 'Back', 'Front_Left', 'Front_Right', 'Back_Right', 'Back_Left'): for attr in ('color', 'image', 'mode'): oldkey = '.'.join(('theme.faces', facename, attr)) if oldkey in settings.keystore.keystore: settings['theme.faces', facename.lower(), attr] = settings[oldkey] schema = { # key: (default, range/enum/validator) # None: value without restriction # tuple: contains two values (min, max) # list: contains strings for the enum text, # the index is the enum value # function: returns True, if value is valid 'version': (1, lambda v: type(v) is int), 'window.size': ((850, 650),lambda v: tuple_validator(2, 2, int, v, (10,10000))), 'window.divider': (620, (0, 10000)), 'window.sidepane_width':(220, (0, 10000)), 'window.toolbar': (True, deprecated), 'window.editbar': (True, lambda v: type(v) is bool), 'window.statusbar': (True, lambda v: type(v) is bool), #TODO: reintroduce it, but per game.type #'draw.default_rotation':((-30.,39.),lambda v: tuple_validator(2, 2, float, v)), #TODO: deprecated 'draw.lighting': (True, lambda v: type(v) is bool), 'draw.shader': (0, shaders(['lighting', 'simple', 'label'])), 'draw.selection': (1, ['quadrant', 'simple', 'gesture']), 'draw.speed': (30, (1, 100)), 'game.type': ('Cube', validate_mtype), 'game.size': (None, deprecated), 'game.blocks': (None, deprecated), 'game.moves': (None, deprecated), 'game.position': (None, deprecated), 'games.*.size': (None, lambda v: tuple_validator(0, 10, int, v, (1, 10))), 'theme.face.*.color': (None, deprecated), 'theme.face.*.image': (None, deprecated), 'theme.face.*.mode': (None, deprecated), 'theme.faces.Up.color': (None, deprecated), 'theme.faces.Down.color': (None, deprecated), 'theme.faces.Left.color': (None, deprecated), 'theme.faces.Right.color': (None, deprecated), 'theme.faces.Front.color': (None, deprecated), 'theme.faces.Back.color': (None, deprecated), 'theme.faces.Front_Left.color': (None, deprecated), 'theme.faces.Front_Right.color': (None, deprecated), 'theme.faces.Back_Right.color': (None, deprecated), 'theme.faces.Back_Left.color': (None, deprecated), 'theme.faces.Up.image': (None, deprecated), 'theme.faces.Down.image': (None, deprecated), 'theme.faces.Left.image': (None, deprecated), 'theme.faces.Right.image': (None, deprecated), 'theme.faces.Front.image': (None, deprecated), 'theme.faces.Back.image': (None, deprecated), 'theme.faces.Front_Left.image': (None, deprecated), 'theme.faces.Front_Right.image': (None, deprecated), 'theme.faces.Back_Right.image': (None, deprecated), 'theme.faces.Back_Left.image': (None, deprecated), 'theme.faces.Up.mode': (None, deprecated), 'theme.faces.Down.mode': (None, deprecated), 'theme.faces.Left.mode': (None, deprecated), 'theme.faces.Right.mode': (None, deprecated), 'theme.faces.Front.mode': (None, deprecated), 'theme.faces.Back.mode': (None, deprecated), 'theme.faces.Front_Left.mode': (None, deprecated), 'theme.faces.Front_Right.mode': (None, deprecated), 'theme.faces.Back_Right.mode': (None, deprecated), 'theme.faces.Back_Left.mode': (None, deprecated), 'theme.faces.up.color': ('#a81407', lambda v: type(v) is str), # rot 'theme.faces.down.color': ('#d94b1c', lambda v: type(v) is str), # orange 'theme.faces.left.color': ('#e3e3e3', lambda v: type(v) is str), # weiß 'theme.faces.right.color': ('#f0c829', lambda v: type(v) is str), # gelb 'theme.faces.front.color': ('#1d6311', lambda v: type(v) is str), # dunkelgrün 'theme.faces.back.color': ('#00275e', lambda v: type(v) is str), # dunkelblau 'theme.faces.front_left.color': ('#65b5b3', lambda v: type(v) is str), # hellblau 'theme.faces.front_right.color': ('#f0c829', lambda v: type(v) is str), # gelb 'theme.faces.back_right.color': ('#771193', lambda v: type(v) is str), # violett 'theme.faces.back_left.color': ('#e3e3e3', lambda v: type(v) is str), # weiß 'theme.faces.down_back_right.color': ('#00275e', lambda v: type(v) is str), # dunkelblau 'theme.faces.down_front_right.color':('#646464', lambda v: type(v) is str), # grau 'theme.faces.down_front.color': ('#1d6311', lambda v: type(v) is str), # dunkelgrün 'theme.faces.down_front_left.color': ('#f260b8', lambda v: type(v) is str), # pink 'theme.faces.down_back_left.color': ('#9b661b', lambda v: type(v) is str), # braun 'theme.faces.up_back.color': ('#86d624', lambda v: type(v) is str), # hellgrün 'theme.faces.up_back_right.color': ('#771193', lambda v: type(v) is str), # violett 'theme.faces.up_front_right.color': ('#f0c829', lambda v: type(v) is str), # gelb 'theme.faces.up_front_left.color': ('#65b5b3', lambda v: type(v) is str), # hellblau 'theme.faces.up_back_left.color': ('#e3e3e3', lambda v: type(v) is str), # weiß 'theme.faces.*.image': ('', lambda v: type(v) is str), 'theme.faces.*.mode': (0, ['tiled', 'mosaic']), 'theme.bgcolor': ('#7e9190', lambda v: type(v) is str), 'draw.accels': ([('r', 'Num+6'), ('r-', 'Shift+Num+Right'), ('l', 'Num+4'), ('l-', 'Shift+Num+Left'), ('u', 'Num+8'), ('u-', 'Shift+Num+Up'), ('d', 'Num+2'), ('d-', 'Shift+Num+Down'), ('f', 'Num+5'), ('f-', 'Shift+Num+Clear'), ('b', 'Num+0'), ('b-', 'Shift+Num+Ins'), ('R', 'Ctrl+Num+8'), ('L', 'Ctrl+Num+2'), ('U', 'Ctrl+Num+4'), ('D', 'Ctrl+Num+6'), ('F', 'Ctrl+Num+5'), ('B', 'Ctrl+Num+0'), ], validate_draw_accels), 'draw.zoom': (1.4, (0.1, 100.0)), #TRANSLATORS: The following 6 words are for the antialiasing levels: disabled, ugly, low, medium, high, higher 'draw.samples': (3, [N_('disabled'), N_('ugly'), N_('low'), N_('medium'), N_('high'), N_('higher')]), 'draw.mirror_faces': (False, lambda v: type(v) is bool), 'draw.mirror_distance': (2.1, (0.1, 10.0)), 'action.edit_moves': ('Ctrl+L', lambda v: type(v) is str), 'action.edit_cube': ('', lambda v: type(v) is str), 'action.selectmodel': ('Ctrl+M', lambda v: type(v) is str), 'action.initial_state': ('', lambda v: type(v) is str), 'action.reset_rotation':('Ctrl+R', lambda v: type(v) is str), 'action.preferences': ('Ctrl+P', lambda v: type(v) is str), } pybik-3.0/pybiklib/__init__.py0000644000175000017500000000000013171631132016542 0ustar barccbarcc00000000000000pybik-3.0/pybiklib/ext/0000755000175000017500000000000013173167603015254 5ustar barccbarcc00000000000000pybik-3.0/pybiklib/ext/gl_ogl.pxd0000664000175000017500000001465413122015410017226 0ustar barccbarcc00000000000000# generated with: tools/create-gl-pxd.py gl pybiklib/ext gl_ogl.pxd glarea.py gldraw.py gl_ogl.pxd from libc.stddef cimport ptrdiff_t from libc.stdint cimport int32_t, intptr_t, int8_t, uint8_t # defines from /usr/include/GL/gl.h: cdef extern from 'GL/gl.h': enum: GL_FALSE enum: GL_TRUE enum: GL_UNSIGNED_BYTE enum: GL_FLOAT enum: GL_POINTS enum: GL_LINES enum: GL_TRIANGLES enum: GL_CCW enum: GL_BACK enum: GL_CULL_FACE enum: GL_DEPTH_TEST enum: GL_RGB enum: GL_RGBA enum: GL_MAX_TEXTURE_SIZE enum: GL_TEXTURE_2D enum: GL_VENDOR enum: GL_RENDERER enum: GL_VERSION enum: GL_EXTENSIONS enum: GL_INVALID_ENUM enum: GL_INVALID_VALUE enum: GL_INVALID_OPERATION enum: GL_OUT_OF_MEMORY enum: GL_DEPTH_BUFFER_BIT enum: GL_COLOR_BUFFER_BIT enum: GL_MULTISAMPLE enum: GL_SAMPLE_ALPHA_TO_COVERAGE enum: GL_SAMPLE_COVERAGE enum: GL_SAMPLE_BUFFERS enum: GL_SAMPLES enum: GL_SAMPLE_COVERAGE_VALUE enum: GL_SAMPLE_COVERAGE_INVERT # defines from /usr/include/GL/glext.h: cdef extern from 'GL/glext.h': enum: GL_ARRAY_BUFFER enum: GL_STATIC_DRAW enum: GL_MAX_VERTEX_ATTRIBS enum: GL_FRAGMENT_SHADER enum: GL_VERTEX_SHADER enum: GL_DELETE_STATUS enum: GL_COMPILE_STATUS enum: GL_LINK_STATUS enum: GL_VALIDATE_STATUS enum: GL_INFO_LOG_LENGTH enum: GL_ATTACHED_SHADERS enum: GL_ACTIVE_UNIFORMS enum: GL_ACTIVE_UNIFORM_MAX_LENGTH enum: GL_ACTIVE_ATTRIBUTES enum: GL_ACTIVE_ATTRIBUTE_MAX_LENGTH enum: GL_SHADING_LANGUAGE_VERSION # typedefs from /usr/include/GL/gl.h: cdef extern from *: ctypedef unsigned int GLenum ctypedef unsigned char GLboolean ctypedef unsigned int GLbitfield ctypedef void GLvoid ctypedef int GLint ctypedef unsigned char GLubyte ctypedef unsigned int GLuint ctypedef int GLsizei ctypedef float GLfloat ctypedef float GLclampf # typedefs from /usr/include/GL/glext.h: cdef extern from *: ctypedef ptrdiff_t GLsizeiptr ctypedef ptrdiff_t GLintptr ctypedef char GLchar # other typedefs: cdef extern from *: ctypedef GLchar* const_GLchar_ptr "const GLchar*" # functions from /usr/include/GL/gl.h: cdef extern from 'GL/gl.h': cdef void glClearColor( GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha ) nogil cdef void glClear( GLbitfield mask ) nogil cdef void glCullFace( GLenum mode ) nogil cdef void glFrontFace( GLenum mode ) nogil cdef void glEnable( GLenum cap ) nogil cdef void glDisable( GLenum cap ) nogil cdef GLboolean glIsEnabled( GLenum cap ) nogil cdef void glGetBooleanv( GLenum pname, GLboolean *params ) nogil cdef void glGetFloatv( GLenum pname, GLfloat *params ) nogil cdef void glGetIntegerv( GLenum pname, GLint *params ) nogil cdef GLenum glGetError() nogil cdef GLubyte * glGetString( GLenum name ) nogil cdef void glViewport( GLint x, GLint y, GLsizei width, GLsizei height ) nogil cdef void glDrawArrays( GLenum mode, GLint first, GLsizei count ) nogil cdef void glReadPixels( GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels ) nogil cdef void glTexImage2D( GLenum target, GLint level, GLint internalFormat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, GLvoid *pixels ) nogil cdef void glTexSubImage2D( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels ) nogil cdef void glActiveTexture( GLenum texture ) nogil # functions from /usr/include/GL/glext.h: cdef extern from 'GL/glext.h': cdef void glBindBuffer (GLenum target, GLuint buffer) nogil cdef void glDeleteBuffers (GLsizei n, GLuint *buffers) nogil cdef void glGenBuffers (GLsizei n, GLuint *buffers) nogil cdef void glBufferData (GLenum target, GLsizeiptr size, void *data, GLenum usage) nogil cdef void glBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size, void *data) nogil cdef void glAttachShader (GLuint program, GLuint shader) nogil cdef void glBindAttribLocation (GLuint program, GLuint index, GLchar *name) nogil cdef void glCompileShader (GLuint shader) nogil cdef GLuint glCreateProgram () nogil cdef GLuint glCreateShader (GLenum type) nogil cdef void glDeleteProgram (GLuint program) nogil cdef void glDeleteShader (GLuint shader) nogil cdef void glDetachShader (GLuint program, GLuint shader) nogil cdef void glDisableVertexAttribArray (GLuint index) nogil cdef void glEnableVertexAttribArray (GLuint index) nogil cdef void glGetActiveAttrib (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name) nogil cdef void glGetActiveUniform (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name) nogil cdef GLint glGetAttribLocation (GLuint program, GLchar *name) nogil cdef void glGetProgramiv (GLuint program, GLenum pname, GLint *params) nogil cdef void glGetProgramInfoLog (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog) nogil cdef void glGetShaderiv (GLuint shader, GLenum pname, GLint *params) nogil cdef void glGetShaderInfoLog (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog) nogil cdef GLint glGetUniformLocation (GLuint program, GLchar *name) nogil cdef void glLinkProgram (GLuint program) nogil cdef void glShaderSource (GLuint shader, GLsizei count, GLchar **string, GLint *length) nogil cdef void glUseProgram (GLuint program) nogil cdef void glUniform1i (GLint location, GLint v0) nogil cdef void glUniformMatrix4fv (GLint location, GLsizei count, GLboolean transpose, GLfloat *value) nogil cdef void glValidateProgram (GLuint program) nogil cdef void glVertexAttribPointer (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, void *pointer) nogil # GL version 2.0 needed pybik-3.0/pybiklib/ext/qt.pxd0000664000175000017500000006121613123734200016411 0ustar barccbarcc00000000000000# -*- coding: utf-8 -*- # Copyright © 2015-2017 B. Clausius # # 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 . from libc.stdint cimport int64_t from libcpp cimport bool as cbool ctypedef void CallbackVoid() nogil ctypedef void CallbackInt(int) nogil ctypedef void CallbackString(const QString &) nogil ctypedef void CallbackDebugMessage(const QOpenGLDebugMessage &) nogil #### QtCore #### #global cdef extern from "": ctypedef unsigned char uchar ctypedef unsigned int uint ctypedef double qreal ctypedef int64_t qint64 #Qt cdef extern from "" namespace "Qt": cdef enum FocusReason: OtherFocusReason cdef enum FocusPolicy: StrongFocus cdef enum ConnectionType: DirectConnection, QueuedConnection cdef enum KeyboardModifier: ShiftModifier, ControlModifier, KeypadModifier, AltModifier ctypedef int KeyboardModifiers cdef enum Key: Key_Period, Key_Escape, Key_Right, Key_Left, Key_Up, Key_Down, Key_Shift, Key_Control, Key_Meta, Key_Alt, Key_AltGr, Key_CapsLock, Key_NumLock, Key_ScrollLock cdef enum MouseButton: LeftButton, RightButton cdef enum CursorShape: CrossCursor cdef enum TransformationMode: FastTransformation, SmoothTransformation cdef enum AspectRatioMode: IgnoreAspectRatio cdef enum ImageConversionFlag: AutoColor cdef enum ApplicationAttribute: AA_X11InitThreads AA_UseDesktopOpenGL AA_UseSoftwareOpenGL cdef enum ItemDataRole: DisplayRole, UserRole #QByteArray cdef extern from "": cdef cppclass QByteArray: QByteArray() nogil QByteArray(const char *data) nogil const char *data() nogil const int size() nogil const #QElapsedTimer cdef extern from "": cdef cppclass QElapsedTimer: QElapsedTimer() nogil void start() nogil cbool hasExpired(qint64 timeout) nogil const qint64 restart() nogil #QEvent cdef extern from "": cdef cppclass QEvent: pass #QFileSystemWatcher cdef extern from "": cdef cppclass QFileSystemWatcher: QFileSystemWatcher(QObject *parent) cbool addPath(const QString &file) cdef extern from "" namespace "QFileSystemWatcher": void directoryChanged(const QString &path) nogil void fileChanged(const QString &path) nogil #QLibraryInfo cdef extern from "" namespace "QLibraryInfo": QString location(LibraryLocation loc) cdef enum LibraryLocation: TranslationsPath #QList[QObject*] cdef extern from "": cdef cppclass QObjectList "QList ": #int size() nogil const #const QObject *at(int i) nogil const void reserve(int size) nogil void append(const QObject *t) nogil #QList[QOpenGLDebugMessage] cdef extern from "": cdef cppclass OpenGLDebugMessageList "QList": int size() nogil const const QOpenGLDebugMessage& at(int i) nogil const #QStringList cdef extern from "": cdef cppclass QStringList: int size() const const QString &operator[](int i) const #QList[QVariant] == QVariantList cdef extern from "": cdef cppclass QVariantList "QList ": QVariantList() int size() const const QVariant& at(int i) const void reserve(int size) void append(const QVariant &t) #QList[QUrl] == QUrlList cdef extern from "": cdef cppclass QUrlList "QList ": pass #QVariantList() #int size() const const QUrl& at(int i) const #void reserve(int size) #void append(const QUrl &t) #QLocale cdef extern from "": cdef cppclass QLocale: QString name() const cdef extern from "" namespace "QLocale": QLocale QLocale_system "QLocale::system" () #QMap[QString,QVariant] == QVariantMap cdef extern from "": cdef cppclass QVariantMap "QMap ": QVariantMap() QStringList keys() const QVariantList values() const #QMetaMethod cdef extern from "": cdef cppclass QMetaMethod: QByteArray methodSignature() nogil const const char *typeName() nogil const #QMetaObject cdef extern from "": cdef cppclass QMetaObject: const char *className() nogil const int propertyOffset() nogil const int propertyCount() nogil const QMetaProperty property(int index) nogil const int methodOffset() nogil const int methodCount() nogil const QMetaMethod method(int index) nogil const #QMetaObject::Connection cdef extern from "" namespace "QMetaObject": cdef cppclass Connection: pass cbool invokeMethod(QObject *obj, const char *member, ConnectionType type) nogil #QMetaProperty cdef extern from "": cdef cppclass QMetaProperty: const char *name() nogil const const char *typeName() nogil const #QMimeData cdef extern from "": cdef cppclass QMimeData: QStringList formats() const cbool hasColor() const QVariant colorData() const cbool hasUrls() const QUrlList urls() const #QModelIndex cdef extern from "": cdef cppclass QModelIndex: QVariant data(int role) const int row() const #QObject cdef extern from "": cdef cppclass QObject: QString objectName() nogil const const QMetaObject *metaObject() nogil const QVariant property(const char * name) nogil const cbool setProperty(const char *name, const QVariant &value) nogil cbool isWindowType() nogil const cdef extern from "" namespace "QObject": Connection connect(const QTimer *sender, CallbackVoid *signal, CallbackVoid slot) nogil Connection connect(const QFileSystemWatcher *sender, CallbackString *signal, CallbackString slot) nogil Connection connect(const QApplication *sender, CallbackVoid *signal, const QApplication *receiver, CallbackVoid *slot, ConnectionType type) nogil #QPoint cdef extern from "": cdef cppclass QPoint: int x() nogil const int y() nogil const #QPointF cdef extern from "": cdef cppclass QPointF: QPointF() nogil const qreal x() nogil const qreal y() nogil const void setX(qreal x) nogil void setY(qreal y) nogil #QSize cdef extern from "": cdef cppclass QSize: int height() const int width() const #QStandardPaths cdef extern from "" namespace "QStandardPaths": cdef enum StandardLocation: PicturesLocation, HomeLocation QStringList standardLocations(StandardLocation type) #QString cdef extern from "": cdef cppclass QString: QString() nogil cbool isEmpty() nogil const QByteArray toUtf8() nogil const cdef extern from "" namespace "QString": QString fromUtf8(const char *str, int size) nogil QString QString_number "QString::number"(long n) nogil #QTimer cdef extern from "": cdef cppclass QTimer: QTimer() nogil cbool isActive() nogil const void setInterval(int msec) nogil int interval() nogil const void setSingleShot(cbool singleShot) nogil void start(int msec) nogil void start() nogil void stop() nogil void deleteLater() nogil cdef extern from "" namespace "QTimer": void singleShot(int msec, CallbackVoid func) nogil void timeout() nogil #QTranslator cdef extern from "": cdef cppclass QTranslator: QTranslator() cbool load(const QString &filename, const QString &directory) #QUrl cdef extern from "": cdef cppclass QUrl: QUrl() cbool isLocalFile() const QString toLocalFile() const QString toString() const cdef extern from "" namespace "QUrl": QUrl fromLocalFile(const QString &localfile) #QVariant cdef extern from "": cdef cppclass QVariant: QVariant() nogil QVariant(int val) nogil cbool isValid() const cbool isNull() const void setValue[T](const T &value) nogil T value[T]() nogil const const char *typeName() nogil const int userType() const cbool canConvert[T]() nogil const QString toString() const #### QtGui #### #QCloseEvent cdef extern from "": cdef cppclass QCloseEvent: pass #QColor cdef extern from "": cdef cppclass QColor: void setNamedColor(const QString& name) int red() const int green() const int blue() const qreal redF() const qreal greenF() const qreal blueF() const #QCursor cdef extern from "": cdef cppclass QCursor: QCursor() QCursor(const QPixmap &pixmap, int hotX, int hotY) void setShape(CursorShape shape) #QDragEnterEvent cdef extern from "": cdef cppclass QDragEnterEvent: void acceptProposedAction() const QMimeData *mimeData() const #QDropEvent cdef extern from "": cdef cppclass QDropEvent: void acceptProposedAction() const QMimeData *mimeData() const QPoint pos() const #QFont cdef extern from "": cdef cppclass QFont: QFont() void setFamily(const QString &family) void setPixelSize(int pixelSize) void setWeight(int weight) #QIcon cdef extern from "": cdef cppclass QIcon: QIcon() QIcon(const QPixmap &pixmap) QIcon(const QString &fileName) void addFile(const QString &fileName) #QImage cdef extern from "" namespace "QImage": cdef enum Format: Format_RGBA8888 cdef extern from "": cdef cppclass QImage: QImage() QImage(const uchar *data, int width, int height, Format format) QImage(const QString &fileName) cbool load(const QString &fileName, const char* format) cbool save(const QString &fileName, const char *format, int quality) const cbool isNull() const int width() const int height() const QImage scaled(int w, int h, AspectRatioMode aspectMode, TransformationMode mode) const QImage mirrored(cbool horizontal, cbool vertical) const QImage transformed(const QTransform &matrix) const QImage convertToFormat(Format f, ImageConversionFlag flags) const const uchar *bits() const int byteCount() const #QKeyEvent cdef extern from "": cdef cppclass QKeyEvent: void ignore() KeyboardModifiers modifiers() const int key() const cbool matches(StandardKey key) const #QKeySequence cdef extern from "": cdef cppclass QKeySequence: QKeySequence() QKeySequence(int k1, int k2, int k3, int k4) QKeySequence(const QString &key) int count() const int operator[](uint i) const QString toString(SequenceFormat format) const cdef extern from "" namespace "QKeySequence": cdef enum SequenceFormat: PortableText cdef enum StandardKey: MoveToNextWord, MoveToPreviousWord QKeySequence fromString(const QString &str, SequenceFormat format) #QMouseEvent cdef extern from "": cdef cppclass QMouseEvent: KeyboardModifiers modifiers() const MouseButton button() const int x() const int y() const #QOpenGLContext cdef extern from "": cdef cppclass QOpenGLContext: QSurfaceFormat format() nogil const cbool isOpenGLES() nogil const cbool hasExtension(const QByteArray &extension) nogil const QOpenGLFunctions *functions() nogil const cdef extern from "" namespace "QOpenGLContext": QOpenGLContext *currentContext() nogil cdef enum OpenGLModuleType: LibGL, LibGLES OpenGLModuleType openGLModuleType() nogil #QOpenGLDebugLogger cdef extern from "": cdef cppclass QOpenGLDebugLogger: QOpenGLDebugLogger(QObject *parent) nogil cbool initialize() nogil void enableMessages() nogil void startLogging(LoggingMode loggingMode) nogil OpenGLDebugMessageList loggedMessages() nogil const cdef extern from "" namespace "QOpenGLDebugLogger": void messageLogged(const QOpenGLDebugMessage &debugMessage) nogil cdef enum LoggingMode: AsynchronousLogging, SynchronousLogging #QOpenGLDebugMessage cdef extern from "": ctypedef unsigned int GLuint cdef cppclass QOpenGLDebugMessage: GLuint id() nogil const QString message() nogil const #Severity severity() nogil const #Source source() nogil const #QOpenGLFramebufferObjectFormat cdef extern from "": cdef cppclass QOpenGLFramebufferObjectFormat: QOpenGLFramebufferObjectFormat() nogil int samples() nogil const void setSamples(int samples) nogil #QOpenGLFramebufferObject cdef extern from "": ctypedef unsigned int GLenum cdef cppclass QOpenGLFramebufferObject: QOpenGLFramebufferObject(int width, int height, GLenum target) nogil QOpenGLFramebufferObject(int width, int height, const QOpenGLFramebufferObjectFormat & format) nogil QOpenGLFramebufferObjectFormat format() nogil const void setAttachment(Attachment attachment) nogil cbool bind() nogil cbool release() nogil QImage toImage() nogil const cdef enum: GL_TEXTURE_2D cdef extern from "" namespace "QOpenGLFramebufferObject": cdef enum Attachment: Depth #QOpenGLFunctions cdef extern from "": cdef cppclass QOpenGLFunctions: OpenGLFeature openGLFeatures() nogil const cdef extern from "" namespace "QOpenGLFunctions": cdef enum OpenGLFeature: pass #QOpenGLTexture cdef extern from "": cdef cppclass QOpenGLTexture: QOpenGLTexture(Target target) nogil void setFormat(TextureFormat format) nogil void setSize(int width, int height, int depth) nogil void setMinMagFilters(Filter minificationFilter, Filter magnificationFilter) nogil void allocateStorage() nogil void bind() nogil void release() nogil void destroy() nogil cdef extern from "" namespace "QOpenGLTexture": cdef enum Target: Target2D cdef enum TextureFormat: RGBA32F cdef enum Filter: Linear #QPaintEvent cdef extern from "": cdef cppclass QPaintEvent: pass #QPixmap cdef extern from "": cdef cppclass QPixmap: QPixmap() QPixmap(int width, int height) QPixmap(const QString & fileName) cbool convertFromImage(const QImage &image) cbool save(const QString &fileName, const char *format, int quality) const cdef extern from "" namespace "QPixmap": QPixmap fromImage(const QImage &image) #QResizeEvent cdef extern from "": cdef cppclass QResizeEvent: const QSize &size() const #QShowEvent cdef extern from "": cdef cppclass QShowEvent: cbool spontaneous() nogil const #QStandardItem cdef extern from "": cdef cppclass QStandardItem: QStandardItem(const QString &text) void appendRow(QStandardItem *item) QVariant data(int role) const void setData(const QVariant &value) int row() const #QStandardItemModel cdef extern from "": cdef cppclass QStandardItemModel: QStandardItemModel() QStandardItemModel(QObject *parent) void appendRow(QStandardItem *item) void clear() int rowCount(const QModelIndex &parent) const QModelIndex index(int row, int column, const QModelIndex &parent) const QStandardItem *item(int row, int column) const void setItem(int row, int column, QStandardItem *item) void setHorizontalHeaderItem(int column, QStandardItem *item) int rowCount() const #QSurfaceFormat cdef extern from "": cdef cppclass QSurfaceFormat: QSurfaceFormat() nogil int depthBufferSize() nogil const int stencilBufferSize() nogil const int redBufferSize() nogil const int greenBufferSize() nogil const int blueBufferSize() nogil const int alphaBufferSize() nogil const void setSamples(int numSamples) nogil int samples() nogil const SwapBehavior swapBehavior() nogil const OpenGLContextProfile profile() nogil const void setRenderableType(RenderableType type) nogil RenderableType renderableType() nogil const int majorVersion() nogil const int minorVersion() nogil const cbool stereo() nogil const void setSwapInterval(int interval) nogil int swapInterval() nogil const void setOption(FormatOption option) nogil FormatOption options() nogil const cdef extern from "" namespace "QSurfaceFormat": cdef enum SwapBehavior: DefaultSwapBehavior, SingleBuffer, DoubleBuffer, TripleBuffer cdef enum RenderableType: DefaultRenderableType, OpenGL, OpenGLES, OpenVG cdef enum OpenGLContextProfile: NoProfile, CoreProfile, CompatibilityProfile cdef enum FormatOption: StereoBuffers, DebugContext void setDefaultFormat(const QSurfaceFormat &format) nogil QSurfaceFormat defaultFormat() nogil #QTextDocumentFragment cdef extern from "": cdef cppclass QTextDocumentFragment: QString toHtml() const cdef extern from "" namespace "QTextDocumentFragment": QTextDocumentFragment fromPlainText(const QString &plainText) #QTransform cdef extern from "": cdef cppclass QTransform: QTransform() QTransform &rotate(qreal angle) #QWheelEvent cdef extern from "": cdef cppclass QWheelEvent: QPoint angleDelta() const #### QtWidgets #### #QCoreApplication cdef extern from "": cdef cppclass QCoreApplication: QStringList arguments() void setOrganizationName(const QString &orgName) void setApplicationName(const QString &application) void setApplicationVersion(const QString &version) cbool installTranslator(QTranslator *translationFile) int exec() cdef extern from "" namespace "QCoreApplication": QCoreApplication *QCoreApplication_instance "QCoreApplication::instance"() #QApplication cdef extern from "": cdef cppclass QApplication (QCoreApplication): QApplication(int &argc, char **argv) #QGuiApplication void setWindowIcon(const QIcon &icon) QFont font() void setFont(const QFont &font) qreal devicePixelRatio() const cdef extern from "" namespace "QApplication": void aboutToQuit() nogil void setAttribute(ApplicationAttribute attribute) nogil void processEvents() nogil #QGuiApplication void lastWindowClosed() nogil void sync() nogil #QWidget cdef extern from "": cdef cppclass QWidget: void deleteLater() nogil QObject *sender() const QObject* findChild'findChild'(const QString &name) const void QWidget_showEvent"QWidget::showEvent"(QShowEvent *event) nogil void QWidget_closeEvent"QWidget::closeEvent"(QCloseEvent *event) void QWidget_keyPressEvent"QWidget::keyPressEvent"(QKeyEvent *event) void QWidget_resizeEvent"QWidget::resizeEvent"(QResizeEvent *event) cbool close() void setMinimumSize(int minw, int minh) nogil void setVisible(cbool visible) void resize(int w, int h) void show() nogil void update() void setTitle"setWindowTitle"(const QString &) void setWindowTitle(const QString &) void setWindowIcon(const QIcon &icon) void setFocus() QPixmap grab() #QDialog cdef extern from "": cdef cppclass QDialog(QWidget): int exec() #QFileDialog cdef extern from "" namespace "QFileDialog": QString getOpenFileName(QWidget *parent, const QString &caption, const QString &dir) #QLabel cdef extern from "": cdef cppclass QLabel(QWidget): void setText(const QString &) #QLineEdit cdef extern from "": cdef cppclass QLineEdit(QWidget): void QLineEdit_keyPressEvent'QLineEdit::keyPressEvent'(QKeyEvent *event) QString text() const void setText(const QString &) int cursorPosition() const void setCursorPosition(int) #QListWidget cdef extern from "": cdef cppclass QListWidget(QWidget): int currentRow() const #QListWidgetItem cdef extern from "": cdef cppclass QListWidgetItem: QListWidget *listWidget() const #QMainWindow cdef extern from "": cdef cppclass QMainWindow(QWidget): QStatusBar *statusBar() const #QMessageBox cdef extern from "": cdef cppclass QMessageBox(QWidget): QMessageBox(QWidget *parent) nogil void setText(const QString &text) void setIcon(int) void setStandardButtons(int buttons) int exec() cdef extern from "" namespace "QMessageBox": cdef enum: QMessageBox_Information 'QMessageBox::Information', QMessageBox_Close 'QMessageBox::Close', #QOpenGLWidget cdef extern from "": cdef cppclass QOpenGLWidget(QWidget): QOpenGLWidget(QWidget *parent) nogil int height() nogil const void setAcceptDrops(cbool on) nogil void setFocusPolicy(FocusPolicy policy) nogil void setMouseTracking(cbool enable) nogil #QWidget *window() nogil const QSurfaceFormat format() nogil const void setSizePolicy(QSizePolicy) nogil void paintGL() nogil void setCursor(const QCursor &) void unsetCursor() void makeCurrent() void doneCurrent() QImage grabFramebuffer() #QPushButton cdef extern from "": cdef cppclass QPushButton: pass #QSizePolicy cdef extern from "": cdef cppclass QSizePolicy: QSizePolicy() QSizePolicy(Policy horizontal, Policy vertical) void setHorizontalStretch(int stretchFactor) void setVerticalStretch(int stretchFactor) cdef extern from "" namespace "QSizePolicy": cdef enum Policy: Expanding #QStatusBar cdef extern from "": cdef cppclass QStatusBar: void showMessage(const QString &message) void addWidget(QWidget *widget, int stretch) #QTreeView cdef extern from "": cdef cppclass QTreeView: pass pybik-3.0/pybiklib/ext/qtexec.py0000644000175000017500000001110213171574244017113 0ustar barccbarcc00000000000000# -*- coding: utf-8 -*- # cython: profile=False # Copyright © 2017 B. Clausius # # 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 . # pylint: disable=C0326,W0614 # although this file is compiled with Python3 syntax, Cython needs at least division from __future__ from __future__ import print_function, division # This line makes cython happy global __name__, __package__ #px/__compiled = True __compiled = False import sys from pybiklib import config as config_ #px+from qt cimport * #px/cimport qt as Qt from .debug_purepython import * #px/from libc.stdio cimport printf def printf(fmt, *args): print(fmt % args, end='') #px/from libc.stdio cimport puts puts = print #px/cdef enum: # if True: DEBUG_MSG = 0x0002 DEBUG_MSGEXT = 0x0020 #px+cdef long debug debug = 0 def set_debug_flags(module): global debug if module.DEBUG_MSG: debug |= DEBUG_MSG if module.DEBUG_MSGEXT: debug |= DEBUG_MSGEXT #### Helpers (same as in module qt) #### #pxm-FUNC P def q2str(qstr:str)->'': return qstr #px+cdef QByteArray data = qstr.toUtf8() #px+return data.data()[:data.size()].decode('utf-8') #pxm-FUNC P def str2q(pstr)->str: return pstr #px+data = pstr.encode('utf-8') #px+return fromUtf8(data, len(data)) #### . #### def get_gl_variant(): #px+cdef int i # This function requires that the app instance is already created i = openGLModuleType() if i == LibGL: return 'ogl' elif i == LibGLES: return 'es2' else: print('Unknown openGLModuleType', i) return '' def exec_application(main): #px- global app #http://pyqt.sourceforge.net/Docs/PyQt5/gotchas.html#crashes-on-exit #setAttribute(Qt.AA_X11InitThreads) #setAttribute(Qt.AA_UseDesktopOpenGL) #setAttribute(Qt.AA_UseSoftwareOpenGL) #px+try: #px+ byteslist = [arg.encode(sys.getdefaultencoding()) for arg in main.opts.ui_args] #px+except Exception: #px+ sys.excepthook(*sys.exc_info()) #px+ byteslist = [] #px+args_buffer = b'\0'.join(byteslist) + b'\0' #px+ #px+ptr = int(args_buffer) #px+ptrlist = [] #px+for arg in byteslist: #px+ ptrlist.append(ptr) #px+ ptr += len(arg)+1 #px+ptrlist.append(0) #px+ #px+import struct #px+argv_buffer = struct.pack('{}P'.format(len(ptrlist)), *ptrlist) #px+cdef int argc = len(byteslist) #px+cdef char **argv = argv_buffer #px/cdef QApplication *app = new QApplication(argc, argv) app = QApplication(main.opts.ui_args) qargs = app.arguments() #px/if qargs.size() > 1: if len(qargs) > 1: print('Unknown arguments:') #px/for i in range(1, qargs.size()): for i in range(1, len(qargs)): print(' ', q2str(qargs[i])) return 1 app.setOrganizationName(str2q(config_.PACKAGE)) app.setApplicationName(str2q(config_.APPNAME)) app.setApplicationVersion(str2q(config_.VERSION)) app.setWindowIcon(QIcon(str2q(config_.APPICON_FILE))) # initialize translation language = q2str(QLocale_system().name()) # standard Qt translation, used for e.g. standard buttons and shortcut names # keep the translator object for the lifetime of the app object, so that the translation works #px/cdef QTranslator translator translator = QTranslator() translator.load(str2q("qt_" + language), location(TranslationsPath)) #px/app.installTranslator(&translator) app.installTranslator(translator) main.cb_app_post_create(language) #XXX: needed for threaded rendering, prevents blocking on quit #px/connect(app, &aboutToQuit, app, &sync, Qt.DirectConnection) app.aboutToQuit.connect(app.sync, type=Qt.DirectConnection) while True: pyapp = main.cb_run_app() if pyapp is None: break pyapp.cb_before_mainloop() app.exec() pyapp.cb_after_mainloop() del app #px+depends = [[DEPENDS]] #px+aliases = [[ALIASES]] pybik-3.0/pybiklib/ext/_debug_ogl.pxd0000664000175000017500000001532513122014344020052 0ustar barccbarcc00000000000000# generated from pybiklib/ext/gl_ogl.pxd from libc.stddef cimport ptrdiff_t from libc.stdint cimport int32_t, intptr_t, int8_t, uint8_t # defines from /usr/include/GL/gl.h: cdef enum: GL_FALSE = 0 GL_TRUE = 1 GL_UNSIGNED_BYTE = 0x1401 GL_FLOAT = 0x1406 GL_POINTS = 0x0000 GL_LINES = 0x0001 GL_TRIANGLES = 0x0004 GL_CCW = 0x0901 GL_BACK = 0x0405 GL_CULL_FACE = 0x0B44 GL_DEPTH_TEST = 0x0B71 GL_RGB = 0x1907 GL_RGBA = 0x1908 GL_MAX_TEXTURE_SIZE = 0x0D33 GL_TEXTURE_2D = 0x0DE1 GL_VENDOR = 0x1F00 GL_RENDERER = 0x1F01 GL_VERSION = 0x1F02 GL_EXTENSIONS = 0x1F03 GL_INVALID_ENUM = 0x0500 GL_INVALID_VALUE = 0x0501 GL_INVALID_OPERATION = 0x0502 GL_OUT_OF_MEMORY = 0x0505 GL_DEPTH_BUFFER_BIT = 0x00000100 GL_COLOR_BUFFER_BIT = 0x00004000 GL_MULTISAMPLE = 0x809D GL_SAMPLE_ALPHA_TO_COVERAGE = 0x809E GL_SAMPLE_COVERAGE = 0x80A0 GL_SAMPLE_BUFFERS = 0x80A8 GL_SAMPLES = 0x80A9 GL_SAMPLE_COVERAGE_VALUE = 0x80AA GL_SAMPLE_COVERAGE_INVERT = 0x80AB # defines from /usr/include/GL/glext.h: cdef enum: GL_ARRAY_BUFFER = 0x8892 GL_STATIC_DRAW = 0x88E4 GL_MAX_VERTEX_ATTRIBS = 0x8869 GL_FRAGMENT_SHADER = 0x8B30 GL_VERTEX_SHADER = 0x8B31 GL_DELETE_STATUS = 0x8B80 GL_COMPILE_STATUS = 0x8B81 GL_LINK_STATUS = 0x8B82 GL_VALIDATE_STATUS = 0x8B83 GL_INFO_LOG_LENGTH = 0x8B84 GL_ATTACHED_SHADERS = 0x8B85 GL_ACTIVE_UNIFORMS = 0x8B86 GL_ACTIVE_UNIFORM_MAX_LENGTH = 0x8B87 GL_ACTIVE_ATTRIBUTES = 0x8B89 GL_ACTIVE_ATTRIBUTE_MAX_LENGTH = 0x8B8A GL_SHADING_LANGUAGE_VERSION = 0x8B8C # typedefs from /usr/include/GL/gl.h: IF True: ctypedef unsigned int GLenum ctypedef unsigned char GLboolean ctypedef unsigned int GLbitfield ctypedef void GLvoid ctypedef int GLint ctypedef unsigned char GLubyte ctypedef unsigned int GLuint ctypedef int GLsizei ctypedef float GLfloat ctypedef float GLclampf # typedefs from /usr/include/GL/glext.h: IF True: ctypedef ptrdiff_t GLsizeiptr ctypedef ptrdiff_t GLintptr ctypedef char GLchar # other typedefs: ctypedef GLchar* const_GLchar_ptr # functions from /usr/include/GL/gl.h: IF True: cdef void glClearColor( GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha ) nogil cdef void glClear( GLbitfield mask ) nogil cdef void glCullFace( GLenum mode ) nogil cdef void glFrontFace( GLenum mode ) nogil cdef void glEnable( GLenum cap ) nogil cdef void glDisable( GLenum cap ) nogil cdef GLboolean glIsEnabled( GLenum cap ) nogil cdef void glGetBooleanv( GLenum pname, GLboolean *params ) nogil cdef void glGetFloatv( GLenum pname, GLfloat *params ) nogil cdef void glGetIntegerv( GLenum pname, GLint *params ) nogil cdef GLenum glGetError() nogil cdef GLubyte * glGetString( GLenum name ) nogil cdef void glViewport( GLint x, GLint y, GLsizei width, GLsizei height ) nogil cdef void glDrawArrays( GLenum mode, GLint first, GLsizei count ) nogil cdef void glReadPixels( GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels ) nogil cdef void glTexImage2D( GLenum target, GLint level, GLint internalFormat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, GLvoid *pixels ) nogil cdef void glTexSubImage2D( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels ) nogil cdef void glActiveTexture( GLenum texture ) nogil # functions from /usr/include/GL/glext.h: IF True: cdef void glBindBuffer (GLenum target, GLuint buffer) nogil cdef void glDeleteBuffers (GLsizei n, GLuint *buffers) nogil cdef void glGenBuffers (GLsizei n, GLuint *buffers) nogil cdef void glBufferData (GLenum target, GLsizeiptr size, void *data, GLenum usage) nogil cdef void glBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size, void *data) nogil cdef void glAttachShader (GLuint program, GLuint shader) nogil cdef void glBindAttribLocation (GLuint program, GLuint index, GLchar *name) nogil cdef void glCompileShader (GLuint shader) nogil cdef GLuint glCreateProgram () nogil cdef GLuint glCreateShader (GLenum type) nogil cdef void glDeleteProgram (GLuint program) nogil cdef void glDeleteShader (GLuint shader) nogil cdef void glDetachShader (GLuint program, GLuint shader) nogil cdef void glDisableVertexAttribArray (GLuint index) nogil cdef void glEnableVertexAttribArray (GLuint index) nogil cdef void glGetActiveAttrib (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name) nogil cdef void glGetActiveUniform (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name) nogil cdef GLint glGetAttribLocation (GLuint program, GLchar *name) nogil cdef void glGetProgramiv (GLuint program, GLenum pname, GLint *params) nogil cdef void glGetProgramInfoLog (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog) nogil cdef void glGetShaderiv (GLuint shader, GLenum pname, GLint *params) nogil cdef void glGetShaderInfoLog (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog) nogil cdef GLint glGetUniformLocation (GLuint program, GLchar *name) nogil cdef void glLinkProgram (GLuint program) nogil cdef void glShaderSource (GLuint shader, GLsizei count, GLchar **string, GLint *length) nogil cdef void glUseProgram (GLuint program) nogil cdef void glUniform1i (GLint location, GLint v0) nogil cdef void glUniformMatrix4fv (GLint location, GLsizei count, GLboolean transpose, GLfloat *value) nogil cdef void glValidateProgram (GLuint program) nogil cdef void glVertexAttribPointer (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, void *pointer) nogil # GL version 2.0 needed pybik-3.0/pybiklib/ext/_debug_es2.pyx0000664000175000017500000002705613170115443020020 0ustar barccbarcc00000000000000# generated from pybiklib/ext/gl_es2.pxd from libc.stdio cimport printf, puts cimport gl_[[GLVARIANT]] as gl print('Importing module:', __name__) print(' GL-type: [[GLVARIANT]]') def set_debug_flags(module): pass cdef void _gl_check_error() nogil: cdef gl.GLenum err err = gl.glGetError() while err: if err == gl.GL_INVALID_ENUM: puts('glerror: GL_INVALID_ENUM') elif err == gl.GL_INVALID_VALUE: puts('glerror: GL_INVALID_VALUE') elif err == gl.GL_INVALID_OPERATION: puts('glerror: GL_INVALID_OPERATION') elif err == gl.GL_OUT_OF_MEMORY: puts('glerror: GL_OUT_OF_MEMORY') else: printf('gl unknown: %x\n', err) err = gl.glGetError() # functions from /usr/include/GLES2/gl2.h: cdef void glActiveTexture (GLenum texture) nogil: puts('''gl: void glActiveTexture (GLenum texture)''') gl. glActiveTexture (texture) _gl_check_error() cdef void glAttachShader (GLuint program, GLuint shader) nogil: puts('''gl: void glAttachShader (GLuint program, GLuint shader)''') gl. glAttachShader (program, shader) _gl_check_error() cdef void glBindAttribLocation (GLuint program, GLuint index, GLchar *name) nogil: puts('''gl: void glBindAttribLocation (GLuint program, GLuint index, GLchar *name)''') gl. glBindAttribLocation (program, index, name) _gl_check_error() cdef void glBindBuffer (GLenum target, GLuint buffer) nogil: puts('''gl: void glBindBuffer (GLenum target, GLuint buffer)''') gl. glBindBuffer (target, buffer) _gl_check_error() cdef void glBufferData (GLenum target, GLsizeiptr size, void *data, GLenum usage) nogil: puts('''gl: void glBufferData (GLenum target, GLsizeiptr size, void *data, GLenum usage)''') gl. glBufferData (target, size, data, usage) _gl_check_error() cdef void glBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size, void *data) nogil: puts('''gl: void glBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size, void *data)''') gl. glBufferSubData (target, offset, size, data) _gl_check_error() cdef void glClear (GLbitfield mask) nogil: puts('''gl: void glClear (GLbitfield mask)''') gl. glClear (mask) _gl_check_error() cdef void glClearColor (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) nogil: puts('''gl: void glClearColor (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha)''') gl. glClearColor (red, green, blue, alpha) _gl_check_error() cdef void glCompileShader (GLuint shader) nogil: puts('''gl: void glCompileShader (GLuint shader)''') gl. glCompileShader (shader) _gl_check_error() cdef GLuint glCreateProgram () nogil: puts('''gl: GLuint glCreateProgram (void)''') cdef GLuint result = gl. glCreateProgram () _gl_check_error() return result cdef GLuint glCreateShader (GLenum type) nogil: puts('''gl: GLuint glCreateShader (GLenum type)''') cdef GLuint result = gl. glCreateShader (type) _gl_check_error() return result cdef void glCullFace (GLenum mode) nogil: puts('''gl: void glCullFace (GLenum mode)''') gl. glCullFace (mode) _gl_check_error() cdef void glDeleteBuffers (GLsizei n, GLuint *buffers) nogil: puts('''gl: void glDeleteBuffers (GLsizei n, GLuint *buffers)''') gl. glDeleteBuffers (n, buffers) _gl_check_error() cdef void glDeleteProgram (GLuint program) nogil: puts('''gl: void glDeleteProgram (GLuint program)''') gl. glDeleteProgram (program) _gl_check_error() cdef void glDeleteShader (GLuint shader) nogil: puts('''gl: void glDeleteShader (GLuint shader)''') gl. glDeleteShader (shader) _gl_check_error() cdef void glDetachShader (GLuint program, GLuint shader) nogil: puts('''gl: void glDetachShader (GLuint program, GLuint shader)''') gl. glDetachShader (program, shader) _gl_check_error() cdef void glDisable (GLenum cap) nogil: puts('''gl: void glDisable (GLenum cap)''') gl. glDisable (cap) _gl_check_error() cdef void glDisableVertexAttribArray (GLuint index) nogil: puts('''gl: void glDisableVertexAttribArray (GLuint index)''') gl. glDisableVertexAttribArray (index) _gl_check_error() cdef void glDrawArrays (GLenum mode, GLint first, GLsizei count) nogil: puts('''gl: void glDrawArrays (GLenum mode, GLint first, GLsizei count)''') gl. glDrawArrays (mode, first, count) _gl_check_error() cdef void glEnable (GLenum cap) nogil: puts('''gl: void glEnable (GLenum cap)''') gl. glEnable (cap) _gl_check_error() cdef void glEnableVertexAttribArray (GLuint index) nogil: puts('''gl: void glEnableVertexAttribArray (GLuint index)''') gl. glEnableVertexAttribArray (index) _gl_check_error() cdef void glFrontFace (GLenum mode) nogil: puts('''gl: void glFrontFace (GLenum mode)''') gl. glFrontFace (mode) _gl_check_error() cdef void glGenBuffers (GLsizei n, GLuint *buffers) nogil: puts('''gl: void glGenBuffers (GLsizei n, GLuint *buffers)''') gl. glGenBuffers (n, buffers) _gl_check_error() cdef void glGetActiveAttrib (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name) nogil: puts('''gl: void glGetActiveAttrib (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name)''') gl. glGetActiveAttrib (program, index, bufSize, length, size, type, name) _gl_check_error() cdef void glGetActiveUniform (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name) nogil: puts('''gl: void glGetActiveUniform (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name)''') gl. glGetActiveUniform (program, index, bufSize, length, size, type, name) _gl_check_error() cdef GLint glGetAttribLocation (GLuint program, GLchar *name) nogil: puts('''gl: GLint glGetAttribLocation (GLuint program, GLchar *name)''') cdef GLint result = gl. glGetAttribLocation (program, name) _gl_check_error() return result cdef void glGetBooleanv (GLenum pname, GLboolean *data) nogil: puts('''gl: void glGetBooleanv (GLenum pname, GLboolean *data)''') gl. glGetBooleanv (pname, data) _gl_check_error() cdef GLenum glGetError () nogil: puts('''gl: GLenum glGetError (void)''') return gl. glGetError () cdef void glGetFloatv (GLenum pname, GLfloat *data) nogil: puts('''gl: void glGetFloatv (GLenum pname, GLfloat *data)''') gl. glGetFloatv (pname, data) _gl_check_error() cdef void glGetIntegerv (GLenum pname, GLint *data) nogil: puts('''gl: void glGetIntegerv (GLenum pname, GLint *data)''') gl. glGetIntegerv (pname, data) _gl_check_error() cdef void glGetProgramiv (GLuint program, GLenum pname, GLint *params) nogil: puts('''gl: void glGetProgramiv (GLuint program, GLenum pname, GLint *params)''') gl. glGetProgramiv (program, pname, params) _gl_check_error() cdef void glGetProgramInfoLog (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog) nogil: puts('''gl: void glGetProgramInfoLog (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog)''') gl. glGetProgramInfoLog (program, bufSize, length, infoLog) _gl_check_error() cdef void glGetShaderiv (GLuint shader, GLenum pname, GLint *params) nogil: puts('''gl: void glGetShaderiv (GLuint shader, GLenum pname, GLint *params)''') gl. glGetShaderiv (shader, pname, params) _gl_check_error() cdef void glGetShaderInfoLog (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog) nogil: puts('''gl: void glGetShaderInfoLog (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog)''') gl. glGetShaderInfoLog (shader, bufSize, length, infoLog) _gl_check_error() cdef GLubyte * glGetString (GLenum name) nogil: puts('''gl: GLubyte * glGetString (GLenum name)''') cdef GLubyte *result = gl. glGetString (name) _gl_check_error() return result cdef GLint glGetUniformLocation (GLuint program, GLchar *name) nogil: puts('''gl: GLint glGetUniformLocation (GLuint program, GLchar *name)''') cdef GLint result = gl. glGetUniformLocation (program, name) _gl_check_error() return result cdef GLboolean glIsEnabled (GLenum cap) nogil: puts('''gl: GLboolean glIsEnabled (GLenum cap)''') cdef GLboolean result = gl. glIsEnabled (cap) _gl_check_error() return result cdef void glLinkProgram (GLuint program) nogil: puts('''gl: void glLinkProgram (GLuint program)''') gl. glLinkProgram (program) _gl_check_error() cdef void glReadPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void *pixels) nogil: puts('''gl: void glReadPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void *pixels)''') gl. glReadPixels (x, y, width, height, format, type, pixels) _gl_check_error() cdef void glShaderSource (GLuint shader, GLsizei count, GLchar **string, GLint *length) nogil: puts('''gl: void glShaderSource (GLuint shader, GLsizei count, GLchar **string, GLint *length)''') gl. glShaderSource (shader, count, string, length) _gl_check_error() cdef void glTexImage2D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, void *pixels) nogil: puts('''gl: void glTexImage2D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, void *pixels)''') gl. glTexImage2D (target, level, internalformat, width, height, border, format, type, pixels) _gl_check_error() cdef void glTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, void *pixels) nogil: puts('''gl: void glTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, void *pixels)''') gl. glTexSubImage2D (target, level, xoffset, yoffset, width, height, format, type, pixels) _gl_check_error() cdef void glUniform1i (GLint location, GLint v0) nogil: puts('''gl: void glUniform1i (GLint location, GLint v0)''') gl. glUniform1i (location, v0) _gl_check_error() cdef void glUniformMatrix4fv (GLint location, GLsizei count, GLboolean transpose, GLfloat *value) nogil: puts('''gl: void glUniformMatrix4fv (GLint location, GLsizei count, GLboolean transpose, GLfloat *value)''') gl. glUniformMatrix4fv (location, count, transpose, value) _gl_check_error() cdef void glUseProgram (GLuint program) nogil: puts('''gl: void glUseProgram (GLuint program)''') gl. glUseProgram (program) _gl_check_error() cdef void glValidateProgram (GLuint program) nogil: puts('''gl: void glValidateProgram (GLuint program)''') gl. glValidateProgram (program) _gl_check_error() cdef void glVertexAttribPointer (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, void *pointer) nogil: puts('''gl: void glVertexAttribPointer (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, void *pointer)''') gl. glVertexAttribPointer (index, size, type, normalized, stride, pointer) _gl_check_error() cdef void glViewport (GLint x, GLint y, GLsizei width, GLsizei height) nogil: puts('''gl: void glViewport (GLint x, GLint y, GLsizei width, GLsizei height)''') gl. glViewport (x, y, width, height) _gl_check_error() # functions from /usr/include/GLES2/gl2ext.h: pybik-3.0/pybiklib/ext/glarea.py0000664000175000017500000012016713167656477017111 0ustar barccbarcc00000000000000#-*- coding:utf-8 -*- # cython: profile=False # Copyright © 2009-2017 B. Clausius # # 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 . # although this file is compiled with Python3 syntax, Cython needs at least division from __future__ from __future__ import print_function, division # This line makes cython happy global __name__, __package__ # pylint: disable=W0604 #px/__compiled = True __compiled = False #px/DEF OFFSCREEN = False OFFSCREEN = False #FIXME: do not use this functions #px+from libc.stdlib cimport malloc, free #px+from libc.string cimport memset #px/from libc.math cimport cos, sin, tan, atan2, sqrt, M_PI, fabs from math import cos, sin, tan, atan2, sqrt, pi as M_PI, fabs #pxm>IF '[[GLDEBUG]]' == 'gldebug' #px+from [[_debug_VARIANT]] cimport * #pxm>IF '[[GLDEBUG]]' != 'gldebug' #px+from gl_[[GLVARIANT]] cimport * #pxm>IF_END #px+cimport [[_gldraw_VARIANT]] as gldraw #px: from . import gldraw from OpenGL.GLU import * # XXX: without the next line fails with python 3.5 from OpenGL.GL import * from OpenGL.GL.ARB.vertex_shader import glGetActiveAttribARB as glGetActiveAttrib #px. #px/from libc.stdio cimport printf def printf(fmt, *args): print(fmt % args, end='') #px/from libc.stdio cimport puts puts = print #px/cdef enum: # if True: DEBUG_MSGGL = 0x02 DEBUG_MSGEXT = 0x08 DEBUG_DRAW = 0x10 DEBUG_PICK = 0x20 #px+cdef long debug debug = 0 def set_debug_flags(module): global debug if module.DEBUG_MSGGL: debug |= DEBUG_MSGGL if module.DEBUG_MSGEXT: debug |= DEBUG_MSGEXT if module.DEBUG_DRAW: debug |= DEBUG_DRAW if module.DEBUG_PICK: debug |= DEBUG_PICK #px/cdef struct AtlasData: class AtlasData: pass #px+int x, w, h #px+char *data #px/cdef struct RenderData: class renderdata: #px+float bg_red #px+float bg_green #px+float bg_blue #px+int y #px+int width #px+int height #px+int pick_x #px+int pick_y #px+bint multisample #px/gldraw.mat4 modelview_matrix modelview_matrix = gldraw.mat4() #px/gldraw.mat4 projection_matrix projection_matrix = gldraw.mat4() #px/gldraw.mat4 picking_matrix picking_matrix = gldraw.mat4() #px+GLuint prog_render #px+GLuint projection_location #px+GLuint modelview_location #px+GLuint prog_hud # only used if DEBUG_DRAW #px+GLuint prog_pick #px+GLuint picking_location #px+GLuint projection_pick_location #px+GLuint modelview_pick_location #px+bint shader_changed #px+char *shader_vertsrc #px+char *shader_fragsrc #px+char *hud_vertsrc #px+char *hud_fragsrc #px+char *pick_vertsrc #px+char *pick_fragsrc #px/AtlasData atlasdata[gldraw.MAX_FACES] atlasdata = [AtlasData() for i in range(gldraw.MAX_FACES)] #px+int atlaslen #px/float debug_modelview1[3] debug_modelview1 = [0.] * 3 #px/float debug_modelview2[3] debug_modelview2 = [0.] * 3 #px/int debug_viewport1[2] debug_viewport1 = [0] * 2 #px/int debug_viewport2[2] debug_viewport2 = [0] * 2 #px+cdef RenderData renderdata #px/cdef struct UIData: class uidata: #px+bint synced #px+bint background_changed #px+float bg_red #px+float bg_green #px+float bg_blue #px+bint viewport_changed #px+bint rotation_changed #px+float rotationxhalf, rotationyhalf #px+bint rotation_quat_changed #px/gldraw.vec4 rotation_quat rotation_quat = gldraw.vec4() #px+int pick_x #px+int pick_y #px+bint frustum_changed #px+float fovy_radius #px+float fovy_radius_zoom #px+double bounding_sphere_radius #px+int multisample_changed #px+char *hud_vertsrc #px+char *hud_fragsrc #px+char *pick_vertsrc #px+char *pick_fragsrc #px+bint shaders_changed #px+char *shader_vertsrc #px+char *shader_fragsrc #px/AtlasData atlasdata[gldraw.MAX_FACES] atlasdata = [AtlasData() for i in range(gldraw.MAX_FACES)] #px+int atlaslen #px+bint data_changed #px+int vertexdatalen #px+char *vertexdata #px/long vertexpointers[gldraw.ATTRIB_CNT-1] vertexpointers = [None] * (gldraw.ATTRIB_CNT-1) #px+int nblocks #px/short cnts_block[gldraw.MAX_BLOCKS] cnts_block = [None] * gldraw.MAX_BLOCKS #px+int idx_debug #px+int cnt_debug #px+int cnt_pick #px+int transformations_count #px/gldraw.mat4 transformations[gldraw.MAX_TRANSFORMATIONS] transformations = [[[None]*4, [None]*4, [None]*4, [None]*4] for __t in range(gldraw.MAX_TRANSFORMATIONS)] #px+bint transformation_changed #px/short transformation_blocks[gldraw.MAX_BLOCKS] transformation_blocks = [None] * gldraw.MAX_BLOCKS #px+int animation_changed #px+int animation_blocks_count #px/short animation_blocks[gldraw.MAX_BLOCKS] animation_blocks = [None] * gldraw.MAX_BLOCKS #px+float angle #px+float rotation_x, rotation_y, rotation_z #px+cdef UIData uidata class syncpydata: pass class uipydata: pass pydata = {} ### quaternion functions #pxm-FUNC P nogil def quat_set_identity(quat:'gldraw.vec4 &'): quat[0] = 1. quat[1] = quat[2] = quat[3] = 0. # (a+bi+cj+dk)(w+xi+yj+zk) # (aw-bx-cy-dz) + (ax+bw+cz-dy)i + (ay-bz+cw+dx)j + (az+by-cx+dw)k # ii = jj = kk = ijk = -1 #pxm-FUNC P nogil def quat_mult(dest:'gldraw.vec4 &', src1:'gldraw.vec4 &', src2:'gldraw.vec4 &'): #px+cdef float a,b,c,d a = src1[0]*src2[0] - src1[1]*src2[1] - src1[2]*src2[2] - src1[3]*src2[3] b = src1[0]*src2[1] + src1[1]*src2[0] + src1[2]*src2[3] - src1[3]*src2[2] c = src1[0]*src2[2] - src1[1]*src2[3] + src1[2]*src2[0] + src1[3]*src2[1] d = src1[0]*src2[3] + src1[1]*src2[2] - src1[2]*src2[1] + src1[3]*src2[0] dest[0] = a dest[1] = b dest[2] = c dest[3] = d ##pxm-FUNC P nogil #def quat_norm(quat:'gldraw.vec4 &'): # #px+cdef float n # n = sqrt(quat[0]*quat[0] + quat[1]*quat[1] + quat[2]*quat[2] + quat[3]*quat[3]) # quat[0] /= n # quat[1] /= n # quat[2] /= n # quat[3] /= n # if quat[0] < 0.: # quat[0] = -quat[0] # quat[1] = -quat[1] # quat[2] = -quat[2] # quat[3] = -quat[3] #pxm-FUNC P nogil def quat_to_matrix(dest:'gldraw.mat4 &', src:'gldraw.vec4 &'): #px+cdef float wx2,wy2,wz2, xx2,xy2,xz2, yy2,yz2,zz2 #px+cdef float nn nn = src[0]*src[0] + src[1]*src[1] + src[2]*src[2] + src[3]*src[3] wx2 = 2*src[0]*src[1] / nn wy2 = 2*src[0]*src[2] / nn wz2 = 2*src[0]*src[3] / nn xx2 = 2*src[1]*src[1] / nn xy2 = 2*src[1]*src[2] / nn xz2 = 2*src[1]*src[3] / nn yy2 = 2*src[2]*src[2] / nn yz2 = 2*src[2]*src[3] / nn zz2 = 2*src[3]*src[3] / nn dest[0][0] = 1-yy2-zz2; dest[1][0] = xy2-wz2; dest[2][0] = xz2+wy2 dest[0][1] = xy2+wz2; dest[1][1] = 1-xx2-zz2; dest[2][1] = yz2-wx2 dest[0][2] = xz2-wy2; dest[1][2] = yz2+wx2; dest[2][2] = 1-xx2-yy2 #pxm-FUNC P nogil def quat_from_angle_axis(quat:'gldraw.vec4 &', angle:float, x:float, y:float, z:float): #px+cdef float sa, ca ca = cos(angle) sa = sin(angle) quat[0] = ca quat[1] = sa*x quat[2] = sa*y quat[3] = sa*z ### module state def init_engine(): gldraw.init_gldraw() if debug & DEBUG_MSGEXT: print('init module:', __name__) print(' from package:', __package__) print(' compiled:', __compiled) #px+print(' GL-type: [[GLVARIANT]]') print(' OFFSCREEN:', OFFSCREEN) uidata.synced = False uidata.background_changed = True uidata.viewport_changed = True uidata.rotation_changed = True uidata.rotation_quat_changed = False uidata.frustum_changed = True uidata.multisample_changed = 1 uidata.transformation_changed = False uidata.animation_changed = 0 uidata.data_changed = False uidata.shaders_changed = False uidata.bg_red = 0.0 uidata.bg_green = 0.0 uidata.bg_blue = 0.0 renderdata.y = 0 renderdata.width = 1 renderdata.height = 1 uidata.rotationxhalf = 0.0 uidata.rotationyhalf = 0.0 quat_set_identity(uidata.rotation_quat) uidata.pick_x = -1 uidata.pick_y = -1 renderdata.pick_x = -1 renderdata.pick_y = -1 #px+cdef float fovy_angle # field of view angle fovy_angle = 33.0 # field of view angle uidata.fovy_radius = tan(fovy_angle * M_PI / 360.0) uidata.fovy_radius_zoom = uidata.fovy_radius # zoom == 1. uidata.bounding_sphere_radius = 1. uidata.angle = 0 # fill modelview_matrix gldraw.matrix_set_identity(renderdata.modelview_matrix) # fill projection_matrix gldraw.matrix_set_identity(renderdata.projection_matrix) renderdata.projection_matrix[2][3] = -1. renderdata.projection_matrix[3][3] = 0. # fill picking_matrix gldraw.matrix_set_identity(renderdata.picking_matrix) renderdata.shader_changed = False renderdata.prog_render = 0 renderdata.prog_hud = 0 renderdata.prog_pick = 0 #pxm-FUNC P nogil def _sync_modelview_matrix_translation(): renderdata.modelview_matrix[3][2] = -uidata.bounding_sphere_radius * (1/uidata.fovy_radius + 1.) #pxm-FUNC P nogil def _sync_modelview_matrix_rotation(): #px+cdef gldraw.vec4 *M #px+cdef float sx, sy, cx, cy #px+cdef float m00, m11, m12, m20 #px/M = &renderdata.modelview_matrix[0][0] M = renderdata.modelview_matrix sx = sin(uidata.rotationxhalf) sy = sin(uidata.rotationyhalf) cx = cos(uidata.rotationxhalf) cy = cos(uidata.rotationyhalf) m00 = 2*cx*cx - 1. m11 = 2*cy*cy - 1. m12 = 2*sy*cy m20 = 2*sx*cx # pylint: disable=C0321,C0326 M[0][0] = m00; M[1][0] = 0.; M[2][0] = m20 M[0][1] = m12 * m20; M[1][1] = m11; M[2][1] = -m00 * m12 M[0][2] = -m11 * m20; M[1][2] = m12; M[2][2] = m00 * m11 def set_rotation_rel(x, y): #px+cdef gldraw.vec4 quat #px+cdef float nxy nxy = sqrt(x*x + y*y) quat_from_angle_axis(quat, nxy/50., y/nxy, x/nxy, 0.) quat_mult(uidata.rotation_quat, quat, uidata.rotation_quat) # avoid rotation about z-axis #uidata.rotation_quat[3] = 0. # 1. #uidata.rotation_quat[3] *= .9 # 2. #quat_norm(uidata.rotation_quat) # 3. #quat_from_angle_axis(quat, fabs(uidata.rotation_quat[3])/10., 0., 0., 1.) #quat_mult(uidata.rotation_quat, quat, uidata.rotation_quat) uidata.rotation_quat_changed = True #pxm-FUNC P nogil def _sync_projection_matrix(): # Taken from the OpenGL documentation for glFrustum: # glFrustum describes a perspective matrix that produces a perspective projection. # The current matrix (see glMatrixMode) is multiplied by this matrix and the result # replaces the current matrix, as if glMultMatrix were called with the following # matrix as its argument: # [ 2*nearVal ] # [ ---------- 0 A 0 ] # [ right-left ] # [ 2*nearVal ] # [ 0 --------- B 0 ] # [ top-bottom ] [p00 0 A 0] # [ ] = [0 p11 B 0] # [ 0 0 C D ] [0 0 C D] # [ ] [0 0 -1 0] # [ ] # [ 0 0 -1 0 ] # [ ] # # right+left top+bottom farVal+nearVal 2*farVal*nearVal # A = ---------- B = ---------- C = - -------------- D = - ---------------- # right-left top-bottom farVal-nearVal farVal-nearVal # # Typically, the matrix mode is GL_PROJECTION, and # (left, bottom, -nearVal) and (right, top, -nearVal) # specify the points on the near clipping plane that are mapped to the lower left and # upper right corners of the window, assuming that the eye is located at (0, 0, 0). # -farVal specifies the location of the far clipping plane. # Both nearVal and farVal must be positive. # # right == -left, top == -bottom => A = B = 0 # # p00 = 1 / fovy_radius / aspectx # p11 = 1 / fovy_radius / aspecty # C = -(1/fovy_radius/zoom + 1.) # D = -(1/fovy_radius/zoom + 2.) * bounding_sphere_radius/fovy_radius/zoom #px+cdef float _1_aspectx, _1_aspecty if renderdata.width < renderdata.height: _1_aspectx = 1. _1_aspecty = renderdata.width / renderdata.height else: _1_aspectx = renderdata.height / renderdata.width _1_aspecty = 1. renderdata.projection_matrix[0][0] = _1_aspectx / uidata.fovy_radius_zoom renderdata.projection_matrix[1][1] = _1_aspecty / uidata.fovy_radius_zoom renderdata.projection_matrix[2][2] = -(1/uidata.fovy_radius + 1.) renderdata.projection_matrix[3][2] = -(1/uidata.fovy_radius + 2. ) * uidata.bounding_sphere_radius / uidata.fovy_radius #pxm-FUNC P nogil def _set_picking_matrix(x:int, y:int): # Set picking matrix, restrict drawing to one pixel of the viewport # same as: _glLoadIdentity() # _gluPickMatrix(x, y, 1, 1, viewport) # same as: _glLoadIdentity() # _glTranslatef(renderdata.width - 2*x, renderdata.height - 2*y, 0.) # _glScalef(renderdata.width, renderdata.height, 1.0) renderdata.picking_matrix[3][0] = renderdata.width - 2*x renderdata.picking_matrix[3][1] = renderdata.height - 2*y renderdata.picking_matrix[0][0] = renderdata.width renderdata.picking_matrix[1][1] = renderdata.height #pxm-FUNC P nogil def _set_picking_matrix_identity(): renderdata.picking_matrix[3][0] = 0. renderdata.picking_matrix[3][1] = 0. renderdata.picking_matrix[0][0] = 1. renderdata.picking_matrix[1][1] = 1. def set_frustum(bounding_sphere_radius, zoom): uidata.frustum_changed = True if bounding_sphere_radius > 0: uidata.bounding_sphere_radius = bounding_sphere_radius uidata.fovy_radius_zoom = uidata.fovy_radius / zoom def set_background_color(red, green, blue): uidata.background_changed = True uidata.bg_red = red uidata.bg_green = green uidata.bg_blue = blue def set_antialiasing(multisample): uidata.multisample_changed = 2 if multisample else 1 def set_rotation_xy(x, y): x %= 360 # pylint: disable=C0321 if y < -120: y = -120 elif y > 120: y = 120 uidata.rotation_changed = True uidata.rotationxhalf = M_PI * x / 360.0 uidata.rotationyhalf = M_PI * y / 360.0 return x, y #pxm-FUNC PD nogil def render_resize(y:int, width:int, height:int): renderdata.y = y renderdata.width = width renderdata.height = height uidata.viewport_changed = True def set_transformations(blocks): assert uidata.nblocks == len(blocks) #px+cdef int i #px+cdef short b for i, b, unused in blocks: uidata.transformation_blocks[i] = b uidata.transformation_changed = True #pxm-FUNC P def set_animation_start(blocks, axisx:float, axisy:float, axisz:float)->'cpdef': for i, (b, unused) in enumerate(blocks): uidata.animation_blocks[i] = b uidata.animation_blocks_count = i+1 uidata.angle = 0.0 uidata.rotation_x = axisx uidata.rotation_y = axisy uidata.rotation_z = axisz uidata.animation_changed = 1 #pxm-FUNC PD def set_animation_next(angle:float): uidata.angle = -angle uidata.animation_changed = 2 def set_data(nblocks, vertexdata, vertexpointers, vertexinfo, transformations): pydata_postsync() #px+cdef int t,i,j assert nblocks <= gldraw.MAX_BLOCKS, (nblocks, gldraw.MAX_BLOCKS) uidata.nblocks = nblocks pydata['vertexdata'] = vertexdata uidata.vertexdatalen = len(vertexdata) uidata.vertexdata = vertexdata assert len(vertexpointers) == gldraw.ATTRIB_CNT-1 for i in range(gldraw.ATTRIB_CNT-1): uidata.vertexpointers[i] = vertexpointers[i] cnts_block, uidata.idx_debug, uidata.cnt_debug, uidata.cnt_pick = vertexinfo assert len(cnts_block) == nblocks for i in range(nblocks): uidata.cnts_block[i] = cnts_block[i] assert len(transformations) <= gldraw.MAX_TRANSFORMATIONS, len(transformations) uidata.transformations_count = len(transformations) for t in range(uidata.transformations_count): for i in range(4): for j in range(4): uidata.transformations[t][i][j] = float(transformations[t][i][j]) uidata.data_changed = True def pydata_postsync(): global pydata_backed if uidata.synced: pydata_backed = dict(pydata) uidata.synced = False def update_shader_version(shader_src): assert shader_src.startswith(b'#version 120\n') #px/IF '[[GLVARIANT]]' == 'es2': if False: shader_src = b'#version 100\n' + shader_src.split(b'\n', 1)[1] return shader_src def set_shaders(shader_vertsrc, shader_fragsrc): pydata_postsync() shader_vertsrc = update_shader_version(shader_vertsrc) shader_fragsrc = update_shader_version(shader_fragsrc) pydata['shader_vertsrc'] = shader_vertsrc uidata.shader_vertsrc = shader_vertsrc pydata['shader_fragsrc'] = shader_fragsrc uidata.shader_fragsrc = shader_fragsrc uidata.shaders_changed = True def set_fixedshaders(fixedshaders): pydata_postsync() fixedshaders = [update_shader_version(s) for s in fixedshaders] pydata['fixedshaders'] = fixedshaders uidata.pick_vertsrc = fixedshaders[0] uidata.pick_fragsrc = fixedshaders[1] if debug & DEBUG_DRAW: uidata.hud_vertsrc = fixedshaders[2] uidata.hud_fragsrc = fixedshaders[1] #pxm-FUNC PD nogil def sync_set_fixedshaders(): renderdata.pick_vertsrc = uidata.pick_vertsrc renderdata.pick_fragsrc = uidata.pick_fragsrc if debug & DEBUG_DRAW: renderdata.hud_vertsrc = uidata.hud_vertsrc renderdata.hud_fragsrc = uidata.hud_fragsrc def set_pick_position(x, y): uidata.pick_x = x uidata.pick_y = y #pxm-FUNC PD nogil def sync_set_pick_position(): renderdata.pick_x = uidata.pick_x renderdata.pick_y = uidata.pick_y #pxm-FUNC P def set_atlas_data(i:int, data:bytes, x:int, w:int, h:int)->'cpdef': assert i < gldraw.MAX_FACES, (i, gldraw.MAX_FACES) if i == 0: uipydata.atlasdata = [] uipydata.atlasdata.append(data) uidata.atlasdata[i].x = x uidata.atlasdata[i].w = w uidata.atlasdata[i].h = h uidata.atlasdata[i].data = data uidata.atlaslen = i+1 #pxm-FUNC PD nogil def sync_set_atlas_data(): #px+cdef int i for i in range(uidata.atlaslen): renderdata.atlasdata[i].x = uidata.atlasdata[i].x renderdata.atlasdata[i].w = uidata.atlasdata[i].w renderdata.atlasdata[i].h = uidata.atlasdata[i].h renderdata.atlasdata[i].data = uidata.atlasdata[i].data renderdata.atlaslen = uidata.atlaslen #pxm-FUNC PD nogil def sync(): uidata.synced = True if uidata.background_changed: renderdata.bg_red = uidata.bg_red renderdata.bg_green = uidata.bg_green renderdata.bg_blue = uidata.bg_blue uidata.background_changed = False if uidata.viewport_changed: _sync_projection_matrix() uidata.viewport_changed = False if uidata.rotation_changed: _sync_modelview_matrix_rotation() uidata.rotation_changed = False if uidata.rotation_quat_changed: quat_to_matrix(renderdata.modelview_matrix, uidata.rotation_quat) uidata.rotation_quat_changed = False if uidata.frustum_changed: _sync_modelview_matrix_translation() _sync_projection_matrix() uidata.frustum_changed = False if uidata.multisample_changed: renderdata.multisample = uidata.multisample_changed - 1 uidata.multisample_changed = 0 if uidata.data_changed: gldraw.sync_vertexdata(uidata.vertexdatalen, uidata.vertexdata, uidata.vertexpointers) gldraw.sync_blocks(uidata.nblocks, uidata.cnts_block, uidata.idx_debug, uidata.cnt_debug, uidata.cnt_pick) gldraw.sync_transformations(uidata.transformations_count, uidata.transformations) uidata.data_changed = False if uidata.transformation_changed: gldraw.sync_block_transformations(uidata.transformation_blocks) uidata.transformation_changed = False if uidata.animation_changed == 2: gldraw.sync_animation_next(uidata.angle, uidata.rotation_x, uidata.rotation_y, uidata.rotation_z) uidata.animation_changed = 0 elif uidata.animation_changed == 1: gldraw.sync_animation_start(uidata.animation_blocks_count, uidata.animation_blocks) uidata.animation_changed = 0 if uidata.shaders_changed: renderdata.shader_changed = True renderdata.shader_vertsrc = uidata.shader_vertsrc renderdata.shader_fragsrc = uidata.shader_fragsrc uidata.shaders_changed = False ### GL state #pxm-FUNC P nogil def _gl_print_string(msg:'char *', name:'GLenum'): #px/printf('%s %s\n', msg, glGetString(name)) printf('%s %s\n', msg, glGetString(name)) #pxm-FUNC P nogil def _gl_print_float(msg:'char *', name:'GLenum'): #px+cdef GLfloat i #px/glGetFloatv(name, &i) i = glGetFloatv(name) printf('%s %f\n', msg, i) #pxm-FUNC P nogil def _gl_print_integer(msg:'char *', name:'GLenum'): #px+cdef GLint i #px/glGetIntegerv(name, &i) i = glGetIntegerv(name) printf('%s %d\n', msg, i) #pxm-FUNC P nogil def _gl_print_bool(msg:'char *', name:'GLenum'): #px+cdef GLboolean i #px+glGetBooleanv(name, &i) #px/printf('%s %d\n', msg, i) printf('%s %d\n', msg, glGetBooleanv(name)) #pxm-FUNC PD nogil def gl_init(): if debug & DEBUG_MSGGL: puts('GL Strings:') _gl_print_string(' GL Vendor:', GL_VENDOR) _gl_print_string(' GL Renderer:', GL_RENDERER) _gl_print_string(' GL Version:', GL_VERSION) _gl_print_string(' GL Shading Language Version:', GL_SHADING_LANGUAGE_VERSION) #_gl_print_string(' GL Extensions:', GL_EXTENSIONS) _gl_print_integer(' GL_SAMPLE_BUFFERS:', GL_SAMPLE_BUFFERS) _gl_print_float(' GL_SAMPLE_COVERAGE_VALUE:', GL_SAMPLE_COVERAGE_VALUE) _gl_print_bool(' GL_SAMPLE_COVERAGE_INVERT:', GL_SAMPLE_COVERAGE_INVERT) _gl_print_integer(' GL_SAMPLES:', GL_SAMPLES) #px/IF '[[GLVARIANT]]' == 'ogl': if True: printf(' GL_MULTISAMPLE: %d\n', glIsEnabled(GL_MULTISAMPLE)) #print(' GL_SAMPLE_ALPHA_TO_COVERAGE:', glIsEnabled(GL_SAMPLE_ALPHA_TO_COVERAGE)) #print(' GL_SAMPLE_COVERAGE:', glIsEnabled(GL_SAMPLE_COVERAGE)) _gl_print_integer(' GL_MAX_VERTEX_ATTRIBS:', GL_MAX_VERTEX_ATTRIBS) _gl_print_integer(' GL_MAX_TEXTURE_SIZE:', GL_MAX_TEXTURE_SIZE) gldraw.gl_init_buffers() if debug & DEBUG_DRAW: gl_create_hud_program() gl_create_pick_program() #pxm-FUNC PD nogil def gl_exit(): gldraw.gl_delete_buffers() if renderdata.prog_render > 0: glDeleteProgram(renderdata.prog_render) if renderdata.prog_hud > 0: glDeleteProgram(renderdata.prog_hud) if renderdata.prog_pick > 0: glDeleteProgram(renderdata.prog_pick) renderdata.prog_render = 0 renderdata.prog_hud = 0 renderdata.prog_pick = 0 ### render functions #pxm-FUNC PD nogil def gl_set_atlas_texture(width:int, height:int): #px+cdef int i, x, w, h #px+cdef char *data = malloc(width*height*4) #px+memset(data, 0, width*height*4) #FIXME: GL_INVALID_OPERATION, but it works, at least on the phone a call to glTexImage2D is needed before glTexSubImage2D #px+glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, data) #px+free(data) for i in range(renderdata.atlaslen): x, w, h = renderdata.atlasdata[i].x, renderdata.atlasdata[i].w, renderdata.atlasdata[i].h data = renderdata.atlasdata[i].data glTexSubImage2D(GL_TEXTURE_2D, 0, x, 0, w, h, GL_RGBA, GL_UNSIGNED_BYTE, data) #pxm-FUNC P nogil def _gl_set_matrix(location:'GLint', matrix:'gldraw.mat4 &'): #px/glUniformMatrix4fv(location, 1, GL_FALSE, &matrix[0][0]) glUniformMatrix4fv(location, 1, GL_FALSE, matrix) #pxm-FUNC PD nogil def gl_render(): if renderdata.shader_changed: gl_create_render_program() renderdata.shader_changed = False glEnable(GL_DEPTH_TEST) glEnable(GL_CULL_FACE) glCullFace(GL_BACK) glFrontFace(GL_CCW) gldraw.gl_enable_data() glViewport(0, renderdata.y, renderdata.width, renderdata.height) if debug & DEBUG_PICK: _set_picking_matrix_identity() _gl_render_pick() else: glUseProgram(renderdata.prog_render) #px/IF '[[GLVARIANT]]' == 'ogl': if True: if renderdata.multisample: glEnable(GL_MULTISAMPLE) else: glDisable(GL_MULTISAMPLE) #px+IF OFFSCREEN: #px+ glClearColor(renderdata.bg_red, renderdata.bg_green, renderdata.bg_blue, 0.) #px/ELSE: if True: glClearColor(renderdata.bg_red, renderdata.bg_green, renderdata.bg_blue, 1.) _gl_set_matrix(renderdata.projection_location, renderdata.projection_matrix) _gl_set_matrix(renderdata.modelview_location, renderdata.modelview_matrix) glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) gldraw.gl_draw_cube() if debug & DEBUG_DRAW: gldraw.gl_draw_cube_debug() glClearColor(0, 0, 0, 0) glUseProgram(0) gldraw.gl_disable_data() glDisable(GL_CULL_FACE) glDisable(GL_DEPTH_TEST) #pxm-FUNC PD nogil def gl_render_select_debug(): #px/cdef GLfloat selectdata[12] selectdata = [0.] * 12 selectdata[0] = renderdata.debug_modelview1[0] selectdata[1] = renderdata.debug_modelview1[1] selectdata[2] = renderdata.debug_modelview1[2] selectdata[3] = renderdata.debug_modelview2[0] selectdata[4] = renderdata.debug_modelview2[1] selectdata[5] = renderdata.debug_modelview2[2] selectdata[6] = renderdata.debug_viewport1[0] / renderdata.width * 2 - 1 selectdata[7] = renderdata.debug_viewport1[1] / renderdata.height * 2 - 1 selectdata[8] = 0 selectdata[9] = renderdata.debug_viewport2[0] / renderdata.width * 2 - 1 selectdata[10] = renderdata.debug_viewport2[1] / renderdata.height * 2 - 1 selectdata[11] = 0 gldraw.gl_enable_data() glUseProgram(renderdata.prog_render) glViewport(0, renderdata.y, renderdata.width, renderdata.height) #px/gldraw.gl_draw_select_debug(&selectdata[0], sizeof(selectdata), renderdata.prog_hud) gldraw.gl_draw_select_debug(selectdata, 0, renderdata.prog_hud) glUseProgram(0) gldraw.gl_disable_data() ### picking functions #pxm-FUNC P nogil def _gl_render_pick(): glUseProgram(renderdata.prog_pick) #px/IF '[[GLVARIANT]]' == 'ogl': if True: glDisable(GL_MULTISAMPLE) glClearColor(0., 0., 0., 1.) _gl_set_matrix(renderdata.picking_location, renderdata.picking_matrix) _gl_set_matrix(renderdata.projection_pick_location, renderdata.projection_matrix) _gl_set_matrix(renderdata.modelview_pick_location, renderdata.modelview_matrix) glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) gldraw.gl_pick_cube() #pxm-FUNC PD nogil def gl_pick_polygons()->int: #px+cdef unsigned char pixel[4] #px+cdef int index if not (0 <= renderdata.pick_x < renderdata.width and 0 <= renderdata.pick_y < renderdata.height): return 0 _set_picking_matrix(renderdata.pick_x, renderdata.pick_y) glEnable(GL_DEPTH_TEST) glEnable(GL_CULL_FACE) glCullFace(GL_BACK) glFrontFace(GL_CCW) gldraw.gl_enable_data() glViewport(0, 0, 1, 1) _gl_render_pick() gldraw.gl_disable_data() glDisable(GL_CULL_FACE) glDisable(GL_DEPTH_TEST) #px/glReadPixels(0, 0, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, pixel) pixel = glReadPixels(0, 0, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, [[[0, 0, 0, 0]]])[0][0] return pixel[0]<<4 | pixel[1] | pixel[2]>>4 #pxm-FUNC P nogil def _modelview_to_viewport(vvect:'float *', mvect:'int *'): #px+cdef gldraw.vec4 *M #px+cdef gldraw.vec4 *P #px+cdef float u0, u1, u2, v0, v1, v3 #px/M = &renderdata.modelview_matrix[0][0] M = renderdata.modelview_matrix #px/P = &renderdata.projection_matrix[0][0] P = renderdata.projection_matrix # u = M^T * vvect #assert M[1][0] == 0 u0 = M[0][0]*vvect[0] + M[1][0]*vvect[1] + M[2][0]*vvect[2] + M[3][0] u1 = M[0][1]*vvect[0] + M[1][1]*vvect[1] + M[2][1]*vvect[2] + M[3][1] u2 = M[0][2]*vvect[0] + M[1][2]*vvect[1] + M[2][2]*vvect[2] + M[3][2] #u3 = 1. # v = P * u v0 = P[0][0] * u0 + P[1][0] * u1 + P[2][0] * u2 + P[3][0] #* u3 v1 = P[0][1] * u0 + P[1][1] * u1 + P[2][1] * u2 + P[3][1] #* u3 #v2 = P[0][2] * u0 + P[1][2] * u1 + P[2][2] * u2 + P[3][2] * u3 v3 = P[0][3] * u0 + P[1][3] * u1 + P[2][3] * u2 + P[3][3] #* u3 mvect[0] = int((v0 / v3 + 1) / 2 * renderdata.width) mvect[1] = int((v1 / v3 + 1) / 2 * renderdata.height) #pxm-FUNC P nogil def _viewport_to_modelview(vvect:'int *', mvect:'float *'): #px+cdef gldraw.vec4 *MT #px+cdef gldraw.vec4 *P #px+cdef float u0, u1, u2, u3, v0, v1, v2 v0 = vvect[0] / renderdata.width * 2 - 1 v1 = vvect[1] / renderdata.height * 2 - 1 v2 = 0 #v3 = 1 # P * P^-1 = I # a 0 0 0 A 0 0 0 aA 0 0 0 E = -eD/c # 0 b 0 0 * 0 B 0 0 = 0 bB 0 0 , # 0 0 e c 0 0 0 D 0 0 cC 0 # 0 0 d 0 0 0 C E 0 0 0 dD #px/P = &renderdata.projection_matrix[0][0] P = renderdata.projection_matrix # u = P^-1 * v u0 = 1 / P[0][0] * v0 u1 = 1 / P[1][1] * v1 u2 = 1 / P[2][3] #assert u2 == -1 u3 = - P[2][2] / P[3][2] / P[2][3] # MT * MT^-1 = I # a b c 0 a 0 f 0 1 0 0 0 U = -cz # 0 d e 0 * b d g 0 = 0 1 0 0, V = -ez # f g h 0 c e h 0 0 0 1 0 W = -hz # 0 0 z 1 U V W 1 0 0 0 1 #px/MT = &renderdata.modelview_matrix[0][0] MT = renderdata.modelview_matrix # v = M^-1 * u v0 = MT[0][0]*u0 + MT[0][1]*u1 + MT[0][2]*u2 - MT[0][2] * MT[3][2]*u3 v1 = MT[1][0]*u0 + MT[1][1]*u1 + MT[1][2]*u2 - MT[1][2] * MT[3][2]*u3 v2 = MT[2][0]*u0 + MT[2][1]*u1 + MT[2][2]*u2 - MT[2][2] * MT[3][2]*u3 #v3 = u3 mvect[0] = v0 / u3 mvect[1] = v1 / u3 mvect[2] = v2 / u3 def get_cursor_angle(d): #px+cdef float angle #px+cdef int i #px+cdef float x, y renderdata.debug_viewport1[0] = uidata.pick_x renderdata.debug_viewport1[1] = uidata.pick_y _viewport_to_modelview(renderdata.debug_viewport1, renderdata.debug_modelview1) for i in range(3): renderdata.debug_modelview2[i] = d[i] + renderdata.debug_modelview1[i] _modelview_to_viewport(renderdata.debug_modelview2, renderdata.debug_viewport2) x = renderdata.debug_viewport1[0] - renderdata.debug_viewport2[0] y = renderdata.debug_viewport1[1] - renderdata.debug_viewport2[1] angle = atan2(x, y) * 180.0 / M_PI return angle ### shader functions #pxm-FUNC P nogil def _gl_print_shader_log(shader:'GLuint'): #px+cdef GLint log_len #px+cdef GLsizei length #px+cdef char log[1024] #px/glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &log_len) log_len = glGetShaderiv(shader, GL_INFO_LOG_LENGTH) if log_len > 0: puts('==== shader info log:') #px/glGetShaderInfoLog(shader, 1023, &length, log) log = glGetShaderInfoLog(shader).decode('utf-8') printf('%s', log) puts('====') else: puts('==== empty shader info log') #pxm-FUNC P nogil def _gl_print_program_log(program:'GLuint'): #px+cdef GLint log_len #px+cdef GLsizei length #px+cdef char log[1024] #px/glGetProgramiv(program, GL_INFO_LOG_LENGTH, &log_len) log_len = glGetProgramiv(program, GL_INFO_LOG_LENGTH) if log_len > 0: puts('==== program info log:') #px/glGetProgramInfoLog(program, 1023, &length, log) log = glGetProgramInfoLog(program).decode('utf-8') printf('%s', log) puts('====') else: puts('==== empty program info log') #pxm-FUNC P nogil def _gl_create_compiled_shader(shadertype:'GLenum', source:'char *')->'GLuint': #px+cdef GLuint shader #px+cdef const_GLchar_ptr pchar #px+cdef GLint compile_status shader = glCreateShader(shadertype) if shader == 0: puts('Failed to create shader') return 0 #px+pchar = source #px/glShaderSource(shader, 1, &pchar, NULL) glShaderSource(shader, source.decode('utf-8')) # PyOpenGL needs str currently glCompileShader(shader) if debug & DEBUG_MSGGL: #px/glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &compile_status) compile_status = glGetShaderiv(shader, GL_INFO_LOG_LENGTH) printf('GL_INFO_LOG_LENGTH %d\n', compile_status) compile_status = compile_status <= 1 if compile_status: #px/glGetShaderiv(shader, GL_COMPILE_STATUS, &compile_status) compile_status = glGetShaderiv(shader, GL_COMPILE_STATUS) else: #px/glGetShaderiv(shader, GL_COMPILE_STATUS, &compile_status) compile_status = glGetShaderiv(shader, GL_COMPILE_STATUS) if not compile_status: _gl_print_shader_log(shader) return shader #pxm-FUNC P nogil def _get_program_iv(program:'GLuint', pname:'GLenum')->'GLint': #px+cdef GLint param #px/glGetProgramiv(program, pname, ¶m) param = int(glGetProgramiv(program, pname)) return param #pxm-FUNC P nogil def _gl_print_program_info(program:'GLuint')->'GLint': #px+cdef GLint link_status, info_log_length, param, aaml, auml #px+cdef int i #px+cdef GLsizei alength #px+cdef GLint asize, location #px+cdef GLenum atype #px+cdef char aname[1024] printf('shader program info %d\n', program) glValidateProgram(program) printf(' delete status %d\n', _get_program_iv(program, GL_DELETE_STATUS)) link_status = _get_program_iv(program, GL_LINK_STATUS) printf(' link status %d\n', link_status) printf(' validate status %d\n', _get_program_iv(program, GL_VALIDATE_STATUS)) info_log_length = _get_program_iv(program, GL_INFO_LOG_LENGTH) printf(' info log length %d\n', info_log_length) printf(' attached shaders %d\n',_get_program_iv(program, GL_ATTACHED_SHADERS)) aaml = _get_program_iv(program, GL_ACTIVE_ATTRIBUTE_MAX_LENGTH) printf(' active attribute max length %d\n', aaml) auml = _get_program_iv(program, GL_ACTIVE_UNIFORM_MAX_LENGTH) printf(' active uniform max length %d\n', auml) #px/glGetProgramiv(program, GL_ACTIVE_ATTRIBUTES, ¶m) param = glGetProgramiv(program, GL_ACTIVE_ATTRIBUTES) printf('active attributes %d:\n', param) for i in range(param): #px/glGetActiveAttrib(program, i, 1023, &alength, &asize, &atype, aname) aname, asize, atype = glGetActiveAttrib(program, i); alength = len(aname) location = glGetAttribLocation(program, aname) printf(' %d %-*s length=%d size=%d type=%d location=%d\n', i, aaml+3, aname, alength, asize, atype, location) #px/glGetProgramiv(program, GL_ACTIVE_UNIFORMS, ¶m) param = glGetProgramiv(program, GL_ACTIVE_UNIFORMS) printf('active uniforms %d:\n', param) for i in range(param): #px/glGetActiveUniform(program, i, 1023, &alength, &asize, &atype, aname) aname, asize, atype = glGetActiveUniform(program, i); alength = len(aname) location = glGetUniformLocation(program, aname) printf(' %d %-*s length=%d size=%d type=%d location=%d\n', i, auml+3, aname, alength, asize, atype, location) return link_status and info_log_length <= 1 #pxm-FUNC P nogil def _gl_program_add_shaders(program:'GLuint', vertex_source:'char *', fragment_source:'char *'): #px+cdef GLuint vertex_shader = 0, fragment_shader = 0 #px+cdef GLint link_status if debug & DEBUG_MSGGL: puts(' creating vertex shader') vertex_shader = _gl_create_compiled_shader(GL_VERTEX_SHADER, vertex_source) if vertex_shader: glAttachShader(program, vertex_shader) else: puts('error: no vertex shader') if debug & DEBUG_MSGGL: puts(' creating fragment shader') fragment_shader = _gl_create_compiled_shader(GL_FRAGMENT_SHADER, fragment_source) if fragment_shader: glAttachShader(program, fragment_shader) else: puts('error: no fragment shader') glLinkProgram(program) if debug & DEBUG_MSGGL: link_status = _gl_print_program_info(program) else: #px/glGetProgramiv(program, GL_LINK_STATUS, &link_status) link_status = glGetProgramiv(program, GL_LINK_STATUS) if not link_status: printf('link status %d\n', link_status) _gl_print_program_log(program) if vertex_shader: glDetachShader(program, vertex_shader) glDeleteShader(vertex_shader) if fragment_shader: glDetachShader(program, fragment_shader) glDeleteShader(fragment_shader) #pxm-FUNC PD nogil def gl_create_render_program(): #px+cdef GLint location if debug & DEBUG_MSGGL: puts('Creating render shaders:') if renderdata.prog_render > 0: glDeleteProgram(renderdata.prog_render) renderdata.prog_render = glCreateProgram() glBindAttribLocation(renderdata.prog_render, gldraw.ATTRIB_LOCATION+0, b'vertex_attr') glBindAttribLocation(renderdata.prog_render, gldraw.ATTRIB_LOCATION+1, b'normal_attr') glBindAttribLocation(renderdata.prog_render, gldraw.ATTRIB_LOCATION+2, b'color_attr') glBindAttribLocation(renderdata.prog_render, gldraw.ATTRIB_LOCATION+3, b'texcoord_attr') glBindAttribLocation(renderdata.prog_render, gldraw.ATTRIB_LOCATION+4, b'barycentric_attr') _gl_program_add_shaders(renderdata.prog_render, renderdata.shader_vertsrc, renderdata.shader_fragsrc) if renderdata.prog_render > 0: glUseProgram(renderdata.prog_render) location = glGetUniformLocation(renderdata.prog_render, b'tex') glUniform1i(location, 0) # 0 is the texture unit (-> glActiveTexture) renderdata.modelview_location = glGetUniformLocation(renderdata.prog_render, b'modelview') renderdata.projection_location = glGetUniformLocation(renderdata.prog_render, b'projection') location = glGetUniformLocation(renderdata.prog_render, b'object') gldraw.gl_init_object_location(location) #pxm-FUNC P nogil def gl_create_hud_program(): #px+cdef GLint location if debug & DEBUG_MSGGL: puts('Creating "hud" shaders:') if renderdata.prog_hud > 0: glDeleteProgram(renderdata.prog_hud) renderdata.prog_hud = glCreateProgram() glBindAttribLocation(renderdata.prog_hud, gldraw.ATTRIB_LOCATION+0, b'vertex_attr') glBindAttribLocation(renderdata.prog_hud, gldraw.ATTRIB_LOCATION+2, b'color_attr') _gl_program_add_shaders(renderdata.prog_hud, renderdata.hud_vertsrc, renderdata.hud_fragsrc) if renderdata.prog_hud > 0: glUseProgram(renderdata.prog_hud) #pxm-FUNC P nogil def gl_create_pick_program(): if debug & DEBUG_MSGGL: puts('Creating "pick" shaders:') if renderdata.prog_pick > 0: glDeleteProgram(renderdata.prog_pick) renderdata.prog_pick = glCreateProgram() glBindAttribLocation(renderdata.prog_pick, gldraw.PICKATTRIB_LOCATION+0, b'vertex_attr') glBindAttribLocation(renderdata.prog_pick, gldraw.PICKATTRIB_LOCATION+1, b'color_attr') _gl_program_add_shaders(renderdata.prog_pick, renderdata.pick_vertsrc, renderdata.pick_fragsrc) if renderdata.prog_pick > 0: glUseProgram(renderdata.prog_pick) renderdata.picking_location = glGetUniformLocation(renderdata.prog_pick, b'picking') renderdata.projection_pick_location = glGetUniformLocation(renderdata.prog_pick, b'projection') renderdata.modelview_pick_location = glGetUniformLocation(renderdata.prog_pick, b'modelview') pybik-3.0/pybiklib/ext/qt.py0000664000175000017500000025527513171574144016274 0ustar barccbarcc00000000000000# -*- coding: utf-8 -*- # cython: profile=False # Copyright © 2015-2017 B. Clausius # # 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 . # pylint: disable=C0326,W0614 # although this file is compiled with Python3 syntax, Cython needs at least division from __future__ from __future__ import print_function, division # This line makes cython happy global __name__, __package__ # pylint: disable=W0604 #px/__compiled = True __compiled = False #px/DEF OFFSCREEN = False OFFSCREEN = False import sys, os from warnings import warn_explicit, warn #px+cimport gl_[[GLVARIANT]] as gl from pybiklib import config as config_ from pybiklib.settings import settings #px/cimport [[_glarea_VARIANT]] as glarea from . import glarea #pxm>IF '[[QTVARIANT]]' == 'qtw' #px/cimport [[_qtui_VARIANT]] as qtui from . import qtui #pxd+from qt cimport * #pxm>IF '[[QTVARIANT]]' == 'qtq' #pxd+from qtq cimport * #pxm>IF_END #px/cimport qt as Qt from .debug_purepython import * #pxm>IF '[[QTVARIANT]]' == 'qtw' #pxh>#include "Python.h" #pxm>IF_END #pxh>#include #pxh>#include #pxh>#include #pxh>#include #pxm>IF '[[QTVARIANT]]' == 'qtw' #pxh>#include #pxh>#include #pxh>#include #pxh>#include #pxh>#include #pxh>#include #pxh>#include #pxh>#include #pxh>#include #pxh>#include #pxh>#include #pxh>#include #pxm>IF '[[QTVARIANT]]' == 'qtq' #pxh>#include #pxh>#include #pxm>IF_END #pxh> #pxc>#include "[[_qt_VARIANT]]_moc.h" #pxc> #pxd>cdef extern from "[[_qt_VARIANT]]_moc.h":# #pxm>DINDENT #px/from libc.stdio cimport printf def printf(fmt, *args): print(fmt % args, end='') #px/from libc.stdio cimport puts puts = print #px/cdef enum: # if True: DEBUG_MSG = 0x0002 DEBUG_MSGGL = 0x0004 DEBUG_MSGEXT = 0x0020 DEBUG_DRAW = 0x0040 DEBUG_FPS = 0x0080 DEBUG_VFPS = 0x0100 DEBUG_QML = 0x0200 DEBUG_GLDEBUG = 0x0400 DEBUG_PHONE = 0x0800 DEBUG_SIM = 0x1000 DEBUG_NOCONTROLS = 0x2000 #px+cdef long debug debug = 0 def set_debug_flags(module): global debug if module.DEBUG_MSG: debug |= DEBUG_MSG if module.DEBUG_MSGGL: debug |= DEBUG_MSGGL if module.DEBUG_MSGEXT: debug |= DEBUG_MSGEXT if module.DEBUG_DRAW: debug |= DEBUG_DRAW if module.DEBUG_FPS: debug |= DEBUG_FPS if module.DEBUG_VFPS: debug |= DEBUG_VFPS if module.DEBUG_QML: debug |= DEBUG_QML if module.DEBUG_GLDEBUG: debug |= DEBUG_GLDEBUG if module.DEBUG_PHONE: debug |= DEBUG_PHONE if module.DEBUG_SIM: debug |= DEBUG_SIM if module.DEBUG_NOCONTROLS: debug |= DEBUG_NOCONTROLS # Workaround to compile on xenial: # error: calls to overloaded operators cannot appear in a constant-expression # failed lines: # #px+cdef enum: # #px/SAFE_MODIFIER_MASK = Qt.ShiftModifier | Qt.ControlModifier | Qt.KeypadModifier #px+cdef enum: #px+SHIFTMODIFIER = Qt.ShiftModifier #px+CONTROLMODIFIER = Qt.ControlModifier #px+KEYPADMODIFIER = Qt.KeypadModifier #px+cdef enum: #px/SAFE_MODIFIER_MASK = SHIFTMODIFIER | CONTROLMODIFIER | KEYPADMODIFIER SAFE_MODIFIER_MASK = int(Qt.ShiftModifier | Qt.ControlModifier | Qt.KeypadModifier) #pxm>IF '[[QTVARIANT]]' == 'qtq' IGNORE_KEYS = [Qt.Key_Shift, Qt.Key_Control, Qt.Key_Meta, Qt.Key_Alt, Qt.Key_AltGr, Qt.Key_CapsLock, Qt.Key_NumLock, Qt.Key_ScrollLock] #pxm>IF_END class QtKeys: Key_Period = Qt.Key_Period Key_Escape = Qt.Key_Escape Key_Right = Qt.Key_Right Key_Left = Qt.Key_Left Key_Up = Qt.Key_Up Key_Down = Qt.Key_Down ShiftModifier = Qt.ShiftModifier ControlModifier = Qt.ControlModifier LeftButton = Qt.LeftButton RightButton = Qt.RightButton #### Data #### #px+ctypedef QObject *pQObject #pxm>IF '[[QTVARIANT]]' == 'qtq' #px+ctypedef QQuickItem *pQQuickItem #pxm>IF_END #px/cdef struct RenderData: class renderdata: pass #px+QOpenGLTexture* texture #px+int atlas_width #px+int atlas_height #px+QOpenGLFramebufferObject* pickbuffer #px+QOpenGLFramebufferObject* offscreenbuffer #px+QElapsedTimer *fps_monotonic_time #px+int fps_count #px+cbool initialized #px+Renderer *renderer #px+cbool atlas_changed #px+cbool pickxy_changed #px+QOpenGLDebugLogger *gldebuglogger #px+cdef RenderData renderdata #px+DEF maxproxy = 21 #px/cdef struct UIData: class uidata: #px+cbool atlas_changed #px+int atlas_width #px+int atlas_height #px+cbool pick_requested #px+float grid_unit_px #px+int width #px+int height #px+int gl_y #px+QFileSystemWatcher* filesystemwatcher #px+QTimer *settings_timer #px+QSurfaceFormat default_format #px/QCursor *cursors[18] cursors = [None]*18 #px+QImage offscreen_image #px+MainView *mainwindow #pxm>IF '[[QTVARIANT]]' == 'qtw' #px+int modelselect_currentpage #px+float speed #px+float animation_angle #px+float angle_max #px+QTimer *animate_timer #px+QStandardItemModel *treestore #px+MoveEdit *move_edit #px+QLabel *statuslabel #px+DrawingArea *drawingarea #px+PreferencesDialog *preferences #px+HelpDialog *help #pxm>IF '[[QTVARIANT]]' == 'qtq' #px+cbool model_pagevisible #px+int entered #px+QQmlEngine *engine #px+QObject *ctx #pxm>IF_END #px+cdef UIData uidata class PyData: filesystemwatcher_path = None filesystemwatcher_handlers = {} #px+singleshot_handler = None #px+singleshot_queue = [] app = None modelselect = None pydata = PyData() #pxm-FUNC P def init_module(): #pxm>IF '[[QTVARIANT]]' == 'qtw' qtui.init_module() #pxm>IF_END if debug & DEBUG_MSGEXT: print('init module:', __name__) print(' from package:', __package__) print(' compiled:', __compiled) #px+print(' GL-type: [[GLVARIANT]]') print(' OFFSCREEN:', OFFSCREEN) renderdata.renderer = NULL uidata.atlas_changed = False uidata.pick_requested = False uidata.filesystemwatcher = NULL uidata.width = 0 uidata.height = 0 uidata.gl_y = 0 #pxm>IF '[[QTVARIANT]]' == 'qtw' uidata.help = NULL #pxm>IF '[[QTVARIANT]]' == 'qtq' uidata.model_pagevisible = False uidata.entered = False #pxm>IF_END #### Helpers #### #pxm-FUNC P def q2str(qstr:str)->'': return qstr #px+cdef QByteArray data = qstr.toUtf8() #px+return data.data()[:data.size()].decode('utf-8') #pxm-FUNC P def str2q(pstr)->str: return pstr #px+data = pstr.encode('utf-8') #px+return fromUtf8(data, len(data)) #px+cdef QVariantList _list2q(value): #px+ cdef QVariantList qlist #px+ cdef QVariant qvalue #px+ cdef int i #px+ qlist.reserve(len(value)) #px+ for i in range(len(value)): #px+ qvalue = tovariant(value[i]) #px+ qlist.append(qvalue) #px+ return qlist #pxm-FUNC P def tovariant(value)->'QVariant': #px/cdef QVariant qvalue qvalue = list(value) if type(value) == tuple else value #px+if type(value) is bool: #px+ qvalue.setValue[cbool](value) #px+elif type(value) is int: #px+ qvalue.setValue[int](value) #px+elif type(value) is float: #px+ qvalue.setValue[double](value) #px+elif type(value) is str: #px+ qvalue.setValue[QString](str2q(value)) #px+elif type(value) is list or type(value) is tuple: #px+ qvalue.setValue[QVariantList](_list2q(value)) #px+else: #px+ print('value has wrong typ ' + repr(type(value))) return qvalue #px+cdef _q2list(const QVariantList &ql): #px+ return [fromvariant(ql.at(i)) for i in range(ql.size())] #px+cdef _qs2list(const QStringList &ql): #px+ return [q2str(ql[i]) for i in range(ql.size())] #px+cdef _q2dict(const QVariantMap &qm): #px+ cdef QStringList qkeys = qm.keys() #px+ cdef QVariantList qvals = qm.values() #px+ return {k:v for k,v in zip(_qs2list(qkeys), _q2list(qvals))} #pxm-FUNC P def fromvariant(qvalue:'const QVariant &')->'': return qvalue #px+cdef const char* typename = qvalue.typeName() #px+if typename == NULL: #px+ return None #px+if typename == b'bool': #px+ return qvalue.value[cbool]() #px+elif typename == b'int': #px+ return qvalue.value[int]() #px+elif typename == b'double': #px+ return qvalue.value[double]() #px+elif typename == b'QString': #px+ return q2str(qvalue.value[QString]()) #px+elif typename == b'void*': #px+ res = qvalue.value[int]() #px+ return None if res == 0 else '({})'.format(res) #px+elif qvalue.canConvert[QVariantMap](): #px+ return _q2dict(qvalue.value[QVariantMap]()) #px+elif qvalue.canConvert[QVariantList](): #px+ return _q2list(qvalue.value[QVariantList]()) #px+elif qvalue.canConvert[pQObject](): #px+ return 'QObject({})'.format(q2str(qvalue.value[pQObject]().objectName())) #px+else: #px+ warn(RuntimeWarning('unknown typename %s' % typename[:])) #px+ return None #### render thread #### #pxm-QD_CPPCLASS class Renderer (QObject): #pxm-FUNC HD nogil def __init__(this): pass #pxh> : QObject() {} #pxm-FUNC HD nogil def connect_gldebuglogger(self, gldebuglogger:'QOpenGLDebugLogger *'): #pxh>{ #pxh>QObject::connect(gldebuglogger, SIGNAL(messageLogged(const QOpenGLDebugMessage &)), this, #pxh- SLOT(on_messageLogged(const QOpenGLDebugMessage &)), Qt::DirectConnection); renderdata.gldebuglogger.messageLogged.connect(self.on_messageLogged) #pxh>} #pxh> #pxm-FUNC PH nogil def slot_on_beforeRendering(self): if not renderdata.initialized: glarea.gl_init() #px+IF OFFSCREEN: #px+ render_offscreen_init() renderdata.initialized = True #pxm>IF '[[QTVARIANT]]' == 'qtw' #px+IF OFFSCREEN: #px+ renderdata.offscreenbuffer.bind() #pxm>IF_END if renderdata.atlas_changed: render_update_atlas() renderdata.atlas_changed = False else: renderdata.texture.bind() glarea.gl_render() renderdata.texture.release() if debug & DEBUG_DRAW: glarea.gl_render_select_debug() if debug & DEBUG_FPS: render_fps() if renderdata.pickxy_changed: render_pick() renderdata.pickxy_changed = False #px+IF OFFSCREEN: #px+ this.offscreen_image(renderdata.offscreenbuffer.toImage()) #pxm-FUNC PHD nogil def slot_on_messageLogged(self, msg:'const QOpenGLDebugMessage &'): #px/printf('GL%05x: %s\n', msg.id(), msg.message().toUtf8().data()) printf('GL%05x: %s\n', msg.id(), msg.message()) #pxh> #pxm:Q_SIGNAL picking_result = pyqtSignal(int) debug_fps = pyqtSignal(int) # only variant qtq: offscreen_image = pyqtSignal(QImage) #px. #pxd>void picking_result(int index) nogil #pxd>void debug_fps(int fps) nogil #pxd>void offscreen_image(QImage image) nogil #pxd>void on_beforeRendering() nogil #pxm>CPPCLASS_END #pxm-FUNC P nogil def render_update_atlas(): render_destroy_texture() #px/renderdata.texture = new QOpenGLTexture(Target2D) renderdata.texture = QOpenGLTexture(Target2D) renderdata.texture.setFormat(RGBA32F) renderdata.texture.setSize(renderdata.atlas_width, renderdata.atlas_height, 1) renderdata.texture.setMinMagFilters(Linear, Linear) renderdata.texture.allocateStorage() renderdata.texture.bind() glarea.gl_set_atlas_texture(renderdata.atlas_width, renderdata.atlas_height) #pxm>IF '[[QTVARIANT]]' == 'qtw' def gl_delete_atlas(): if renderdata.texture is not NULL: renderdata.texture.destroy() renderdata.texture = NULL #pxm>IF_END #pxm-FUNC P nogil def render_fps(): #px+cdef int fps renderdata.fps_count += 1 if not renderdata.fps_monotonic_time.hasExpired(1000): return fps = 1000 * renderdata.fps_count // renderdata.fps_monotonic_time.restart() renderdata.fps_count = 0 #px/renderdata.renderer.debug_fps(fps) renderdata.renderer.debug_fps.emit(fps) #pxm-FUNC P nogil def render_pick(): if renderdata.pickbuffer is NULL: #px/renderdata.pickbuffer = new QOpenGLFramebufferObject(1, 1, GL_TEXTURE_2D) renderdata.pickbuffer = QOpenGLFramebufferObject(1, 1, GL_TEXTURE_2D) renderdata.pickbuffer.setAttachment(Depth) renderdata.pickbuffer.bind() index = glarea.gl_pick_polygons() renderdata.pickbuffer.release() #px/renderdata.renderer.picking_result(index) renderdata.renderer.picking_result.emit(index) #### beforeSynchronizing #### #px/IF OFFSCREEN: if True: #pxm-FUNC P nogil def render_offscreen_init(): #px+cdef QOpenGLFramebufferObjectFormat format format.setSamples(16) #px/renderdata.offscreenbuffer = new QOpenGLFramebufferObject(uidata.width, uidata.height, format) renderdata.offscreenbuffer = QOpenGLFramebufferObject(uidata.width, uidata.height, format) renderdata.offscreenbuffer.setAttachment(Depth) #pxm>IF '[[QTVARIANT]]' == 'qtq' uidata.mainwindow.setRenderTarget(renderdata.offscreenbuffer) #pxm>IF_END #px+printf('offscreenbuffer samples=%d (%d)\n', renderdata.offscreenbuffer.format().samples(), format.samples()) #pxm-FUNC P nogil def render_init(): renderdata.texture = NULL renderdata.pickbuffer = NULL renderdata.fps_monotonic_time = NULL renderdata.fps_count = 0 renderdata.atlas_width = 0 renderdata.atlas_height = 0 renderdata.initialized = False renderdata.atlas_changed = False renderdata.pickxy_changed = False #px/renderdata.renderer = new Renderer() renderdata.renderer = Renderer() renderdata.gldebuglogger = NULL glarea.sync_set_fixedshaders() if debug & DEBUG_GLDEBUG: render_init_gldebuglogger() if debug & DEBUG_FPS: #px/renderdata.fps_monotonic_time = new QElapsedTimer() renderdata.fps_monotonic_time = QElapsedTimer() renderdata.fps_count = 0 renderdata.fps_monotonic_time.start() if debug & DEBUG_QML: #px/dump_info('Renderer', renderdata.renderer) dump_info('Renderer', renderdata.renderer) if debug & DEBUG_MSGGL: print_surface_info() #pxm-FUNC P nogil def render_destroy_texture(): if renderdata.texture is not NULL: renderdata.texture.destroy() del renderdata.texture renderdata.texture = NULL #pxm-FUNC P nogil def render_destroy(): render_destroy_texture() if renderdata.pickbuffer is not NULL: del renderdata.pickbuffer renderdata.pickbuffer = NULL if renderdata.fps_monotonic_time is not NULL: del renderdata.fps_monotonic_time renderdata.fps_monotonic_time = NULL if renderdata.gldebuglogger is not NULL: del renderdata.gldebuglogger renderdata.gldebuglogger = NULL #pxm-FUNC P nogil def render_init_gldebuglogger(): #px+cdef OpenGLDebugMessageList messages #px+cdef QOpenGLDebugMessage message #px+cdef int i #px/renderdata.gldebuglogger = new QOpenGLDebugLogger(renderdata.renderer) renderdata.gldebuglogger = QOpenGLDebugLogger(renderdata.renderer) if not renderdata.gldebuglogger.initialize(): puts('QOpenGLDebugLogger not successfully initialized') return renderdata.gldebuglogger.enableMessages() renderdata.renderer.connect_gldebuglogger(renderdata.gldebuglogger) renderdata.gldebuglogger.startLogging(SynchronousLogging) messages = renderdata.gldebuglogger.loggedMessages() #px/printf('QOpenGLDebugLogger successfully initialized and started (%d initial messages)\n', messages.size()) printf('QOpenGLDebugLogger successfully initialized and started (%d initial messages)\n', len(messages)) #px/for i in range(messages.size()): for message in messages: #px+message = messages.at(i) renderdata.renderer.on_messageLogged(message) #pxm-FUNC P nogil def _pfmt(name:'char *', f:int, rf:int, df:int): printf(' %s: %d', name, f) if f != rf: printf(' (%d)', rf) if rf != df: printf(' [%d]', df) puts('') #pxm-FUNC P nogil def _pfmt2(name:'char *', f1:int, f2:int, rf1:int, rf2:int, df1:int, df2:int): printf(' %s: %d.%d', name, f1, f2) if f1 != rf1 or f2 != rf2: printf(' (%d.%d)', rf1, rf2) if rf1 != df1 or rf2 != df2: printf(' [%d.%d]', df1, df2) puts('') #pxm-FUNC P nogil def print_surface_info(): #px+cdef QOpenGLContext *glcontext glcontext = currentContext() glformat = glcontext.format() glrformat = defaultFormat() # requested format gldformat = uidata.default_format puts('Surface format (requested (), default []):') _pfmt('red', glformat.redBufferSize(), glrformat.redBufferSize(), gldformat.redBufferSize()) _pfmt('green', glformat.greenBufferSize(), glrformat.greenBufferSize(), gldformat.greenBufferSize()) _pfmt('blue', glformat.blueBufferSize(), glrformat.blueBufferSize(), gldformat.blueBufferSize()) _pfmt('alpha', glformat.alphaBufferSize(), glrformat.alphaBufferSize(), gldformat.alphaBufferSize()) _pfmt('depth', glformat.depthBufferSize(), glrformat.depthBufferSize(), gldformat.depthBufferSize()) _pfmt('options', glformat.options(), glrformat.options(), gldformat.options()) _pfmt('profile', glformat.profile(), glrformat.profile(), gldformat.profile()) _pfmt('renderableType', glformat.renderableType(), glrformat.renderableType(), gldformat.renderableType()) _pfmt('samples', glformat.samples(), glrformat.samples(), gldformat.samples()) _pfmt('stencil', glformat.stencilBufferSize(), glrformat.stencilBufferSize(), gldformat.stencilBufferSize()) _pfmt('stereo', glformat.stereo(), glrformat.stereo(), gldformat.stereo()) _pfmt('swapBehavior', glformat.swapBehavior(), glrformat.swapBehavior(), gldformat.swapBehavior()) _pfmt('swapInterval', glformat.swapInterval(), glrformat.swapInterval(), gldformat.swapInterval()) _pfmt2('version', glformat.majorVersion(), glformat.minorVersion(), glrformat.majorVersion(), glrformat.minorVersion(), gldformat.majorVersion(), gldformat.minorVersion()) puts('OpenGL context:') #px+cdef int i i = openGLModuleType() if i == LibGL: puts(' module type: libGL') elif i == LibGLES: puts(' module type: LibGLES') else: printf(' unknown module type: %d\n', i) i = glcontext.isOpenGLES() if glcontext.isOpenGLES(): puts(' isOpenGLES: True') else: puts(' isOpenGLES: False') if glcontext.hasExtension(QByteArray(b"GL_KHR_debug")): puts(' hasExtension GL_KHR_debug: True') else: puts(' hasExtension GL_KHR_debug: False') #XXX: not available in PyQt #puts('OpenGL functions:') #px+cdef QOpenGLFunctions *glFuncs = glcontext.functions() # needed for clang #px+cdef int features = glFuncs.openGLFeatures() #px+printf(' features: 0x%0x\n', features) #### ui: communicate with render-thread #### def set_pick_requested(pick_requested): uidata.pick_requested = pick_requested #pxm-FUNC P def set_atlas_size(width:int, height:int)->'cpdef': uidata.atlas_changed = True uidata.atlas_width = width uidata.atlas_height = height #pxm-FUNC P def set_default_surface_format(): #px/cdef QSurfaceFormat glformat glformat = QSurfaceFormat() #px+cdef int samples samples = settings['draw.samples'] if samples > 0: glformat.setSamples(2**samples) if debug & DEBUG_VFPS: glformat.setSwapInterval(0) #px+IF '[[GLVARIANT]]' != 'ogl': #px+ glformat.setRenderableType(OpenGLES) if debug & DEBUG_GLDEBUG: glformat.setOption(DebugContext) uidata.default_format = defaultFormat() setDefaultFormat(glformat) #### ui: communicate with qml #### #pxm-QD_CPPCLASS class SectionNameIndexItem (QObject): pass #pxm>Q_PROPERTY prop_section = 'QString MEMBER NOTIFY' #pxm>Q_PROPERTY prop_name = 'QString MEMBER NOTIFY' #pxm>Q_PROPERTY prop_index = 'int MEMBER' #pxh> #pxm-FUNC HD def __init__(section:str, name:str, index:int): pass #pxh>{ m_section = section; m_name = name; m_index = index; } #pxm>CPPCLASS_END #pxm-QD_CPPCLASS class TextKeyItem (QObject): pass #pxm>Q_PROPERTY prop_text = 'QString MEMBER NOTIFY' #pxm>Q_PROPERTY prop_key = 'QString MEMBER NOTIFY' #pxh> #pxm-FUNC HD nogil def __init__(text:str, key:str): pass #pxh>{ m_text = text; m_key = key; } #pxm>CPPCLASS_END #pxm-QD_CPPCLASS class FacePrefsItem (QObject): pass #pxm>Q_PROPERTY prop_color = 'QString MEMBER NOTIFY' #pxm>Q_PROPERTY prop_folder = 'QString MEMBER NOTIFY' #pxm>Q_PROPERTY prop_image = 'QString MEMBER NOTIFY' #pxm>Q_PROPERTY prop_imagemode = 'QString MEMBER NOTIFY' #pxh> #pxm-FUNC HD nogil def __init__(color:str, folder:str, image:str, imagemode:str): pass #pxh>{ m_color = color; m_folder = folder; m_image = image; m_imagemode = imagemode; } #pxm>CPPCLASS_END #pxm>IF '[[QTVARIANT]]' == 'qtq' #pxm>QD_CPPCLASS class ContextProperty (QObject): #px- class ContextProperty (QObject, metaclass=MetaSlot): #pxd>pass #pxm-FUNC PH nogil def slot_inspect(self, msg:str, val:'const QVariant &'): #px/if val.canConvert[pQObject](): if val.canConvert(pQObject): #px/dump_info(msg.toUtf8().data(), val.value[pQObject]()) dump_info(msg, val.value(QObject)) else: with gil: if val.isValid(): print('{}: {}: {}'.format(q2str(msg), val.typeName()[:], fromvariant(val))) else: print('{}: not valid: {}'.format(q2str(msg), fromvariant(val))) #pxm-FUNC PH nogil def slot_gu(self, pixel:float)->float: return uidata.grid_unit_px * pixel #pxm-FUNC PH with gil def slot_tr(self, string:str)->str: #px+try: return str2q(_(q2str(string))) #px+except: sys.excepthook(*sys.exc_info()) #pxm-FUNC PH with gil def slot_tr_tooltip(self, string:str)->str: #px+try: return str2q('') if debug & DEBUG_PHONE else str2q(_(q2str(string))) #px+except: sys.excepthook(*sys.exc_info()) #pxm-FUNC PH with gil def slot_config(self, attr:str)->str: #px+try: return str2q(getattr(config_, q2str(attr))) #px+except: sys.excepthook(*sys.exc_info()) #pxm-FUNC PH with gil def slot_config_tr(self, attr:str)->str: #px+try: return str2q(_(getattr(config_, q2str(attr)))) #px+except: sys.excepthook(*sys.exc_info()) #pxm-FUNC PH with gil def slot_get_settings(self, key:str)->'QVariant': #px+try: return tovariant(settings[q2str(key)]) #px+except: sys.excepthook(*sys.exc_info()) #pxm-FUNC PH with gil def slot_set_settings(self, key:str, value:'const QVariant &'): #px/try: assert not isinstance(value, QVariant) settings[q2str(key)] = fromvariant(value) #px+except: sys.excepthook(*sys.exc_info()) #pxm-FUNC PH with gil def slot_set_settings_arg(self, key:str, arg:str, value:'const QVariant &'): #px/try: assert not isinstance(value, QVariant) #px/if not arg.isEmpty(): if arg: settings[q2str(key).format(q2str(arg))] = fromvariant(value) #px+except: sys.excepthook(*sys.exc_info()) #pxm-FUNC PH with gil def slot_set_settings_arg_url(self, key:str, arg:str, qurl:'const QUrl &'): #px/try: assert isinstance(qurl, QUrl) #px/if arg.isEmpty(): return if not arg: return url = q2str(qurl.toString()) if not url.startswith('file:///'): return settings[q2str(key).format(q2str(arg))] = url[7:] #px+except: sys.excepthook(*sys.exc_info()) #pxm-FUNC PH with gil def slot_del_settings(self, key:str): #px+try: del settings[q2str(key)] #px+except: sys.excepthook(*sys.exc_info()) #pxm-FUNC PH with gil def slot_del_settings_arg(self, key:str, arg:str): #px+try: #px/if not arg.isEmpty(): if arg: del settings[q2str(key).format(q2str(arg))] #px+except: sys.excepthook(*sys.exc_info()) #pxm-FUNC PH nogil def slot_singlewin(self)->bool: return debug & DEBUG_PHONE #pxm-FUNC PH nogil def slot_absolute_pos(self, item:'QQuickItem *', x:'qreal', y:'qreal')->'QPointF': #TODO: can this be replaced by mapToItem? # ctx.absolute_pos(item, x, y) =?= item.mapToItem(ctx.rootitem(), x, y) #px/cdef QPointF pos, parentpos pos = QPointF() if item is NULL: pos.setX(x) pos.setY(y) else: #px/parentpos = absolute_pos(item.parentItem(), x, y) parentpos = self.absolute_pos(item.parentItem(), x, y) pos.setX(parentpos.x() + item.x()) pos.setY(parentpos.y() + item.y()) return pos #pxm-FUNC PH nogil def slot_window_pos(self, item:'QQuickItem *')->'QPointF': #px+cdef QQuickWindow *window window = item.window() #px/cdef QPointF pos pos = QPointF() pos.setX(window.x()) pos.setY(window.y()) return pos #pxm-FUNC PH nogil const def slot_rootitem(self)->'QObject *': return uidata.mainwindow.contentItem() #pxm-FUNC PH with gil def slot_animation_step(self, angle:'qreal'): glarea.set_animation_next(angle) update_drawingarea() #pxm-FUNC PH with gil def slot_animation_stopped(self): ctx_set(b'animation_running', False) ctx_set(b'animation_angle', 0) pydata.app.on_animation_ending() #pxm-FUNC PH with gil def slot_plugin_activated(self, index:int): pydata.app.on_plugin_activated(index) #pxm-FUNC PH with gil def slot_editing_finished(self, code:str, pos:int): pydata.app.on_edit_finished(q2str(code), pos) #pxm-FUNC PH with gil def slot_action(self, string:str): getattr(pydata.app, 'on_action_%s_triggered' % q2str(string))() #pxm-FUNC PH with gil def slot_key_pressed(self, key:int, modifiers:int, fromdrawingarea:bool)->bool: return pydata.app.on_key_pressed(key, modifiers & SAFE_MODIFIER_MASK, fromdrawingarea) #pxm-FUNC PH with gil def slot_rotation_changed(self, dx:int, dy:int): pydata.app.on_camrotation_changed(dx, dy) #pxm-FUNC PH nogil def slot_drawingarea_width_changed(self, width:int): uidata.width = width #pxm-FUNC PH nogil def slot_drawingarea_height_changed(self, height:int): uidata.height = height #pxm-FUNC PH with gil def slot_drawingarea_mouse_entered(self, entered:int): uidata.entered = entered pydata.app.on_mouse_entered() #pxm-FUNC PH with gil def slot_drawingarea_mouse_pressed(self, modifiers:int, button:int, x:int, y:int, height:int): pydata.app.on_mouse_pressed(modifiers, button, x, y, height) #pxm-FUNC PH with gil def slot_drawingarea_mouse_released(self, x:int, y:int): pydata.app.on_mouse_released(x, y) #pxm-FUNC PH with gil def slot_drawingarea_mouse_moved(self, buttons:int, x:int, y:int, height:int, pixeldensity:'qreal'): pydata.app.on_mouse_moved(buttons, x, y, height, pixeldensity) #pxm-FUNC PH with gil def slot_drawingarea_zoom(self, delta:'qreal'): pydata.app.on_mouse_zoom(delta) #pxm-FUNC PH with gil def slot_drag_dropped_color(self, x:int, height_y:int, color:str): pydata.app.on_mouse_drop_color(x, height_y, q2str(color)) #pxm-FUNC PH with gil def slot_drag_dropped_url(self, x:int, height_y:int, url:str): pydata.app.on_mouse_drop_url(x, height_y, q2str(url)) #pxm-FUNC PH nogil def slot_set_transient(self, val:'const QVariant &'): #px+cdef pQObject obj #px/if val.canConvert[pQObject](): if val.canConvert(QObject): #px/obj = val.value[pQObject]() obj = val.value(QObject) if obj.isWindowType(): #px/(obj).setTransientParent(uidata.mainwindow) obj.setTransientParent(uidata.mainwindow) #pxm-FUNC PH with gil def slot_dialog_text(self, string:str)->str: return str2q(pydata.app.on_dialog_text(q2str(string))) #pxm-FUNC PH with gil def slot_model_start_selection(self): if pydata.modelselect is None: pydata.modelselect = pydata.app.on_action_selectmodel_triggered() uidata.model_pagevisible = True #pxm-FUNC PH nogil def slot_model_pagevisible(self)->bool: return uidata.model_pagevisible #pxm-FUNC PH with gil def slot_model_get_modeldata(self, pageindex:int)->'QVariant': items, index, title = pydata.modelselect.on_model_get_modeldata(pageindex) ctx_set(b'selectmodel_title', title) ctx_set(b'selectmodel_index', index) return create_stdmodel(items) #pxm-FUNC PH with gil def slot_model_selected(self, pageindex:int, index:int)->bool: mtype_size = pydata.modelselect.on_convert_to_mtype_size(pageindex, index) if mtype_size is None: return True pydata.app.on_load_other_game(*mtype_size) uidata.model_pagevisible = False return False #pxm-FUNC PH with gil def slot_model_back(self): if pydata.modelselect.on_model_back(): return uidata.model_pagevisible = False #pxm-FUNC PH with gil def slot_movekey_item_changed(self): settings['draw.accels'] = ctx_get_stdmodel(b'movekey_model') #pxm-FUNC PH with gil def slot_movekey_item_added(self, index:int)->int: values = ctx_get_stdmodel(b'movekey_model') if 0 <= index < len(values): values.insert(index, ('', '')) else: index = len(values) values.append(('', '')) ctx_set_stdmodel(b'movekey_model', values) settings['draw.accels'] = values return index #pxm-FUNC PH with gil def slot_movekey_item_removed(self, index:int)->int: values = ctx_get_stdmodel(b'movekey_model') del values[index] ctx_set_stdmodel(b'movekey_model', values) settings['draw.accels'] = values return min(index, len(values)-1) #pxm-FUNC PH with gil def slot_movekey_items_reset(self): del settings['draw.accels'] ctx_set_stdmodel(b'movekey_model', settings['draw.accels']) #pxm-FUNC PH with gil def slot_keytostring(self, key:int, modifiers:int)->str: if key in IGNORE_KEYS: #px/return QString() return '' modifiers &= SAFE_MODIFIER_MASK return QKeySequence(key|modifiers, 0,0,0).toString(PortableText) #pxm-FUNC PH with gil const def slot_facesmodelitem(self, qkey:str)->'QObject *': key = q2str(qkey) assert key color = settings['theme.faces',key,'color'] folder, image = get_imagefile(key) imagemode = settings['theme.faces',key,'mode_nick'] #px/return new FacePrefsItem(str2q(color), str2q(folder), str2q(image), str2q(imagemode)) return QVariant({'color': color, 'folder': folder, 'image': image, 'imagemode': imagemode}) #pxh> #pxm:Q_SIGNAL prefupdateface = pyqtSignal() prefupdatebkgr = pyqtSignal() #px. #pxh> #pxm:Q_PROPERTY prop_edittext = 'QString MEMBER NOTIFY' prop_editposition = 'QString MEMBER NOTIFY' prop_toolbarstate = 'QVariantList MEMBER NOTIFY' prop_sidepanemodel = 'QList MEMBER NOTIFY' prop_gl_y = 'int READ WRITE' prop_debugmsg = 'QString MEMBER NOTIFY' prop_status = 'QString MEMBER NOTIFY' prop_animation_running = 'bool MEMBER NOTIFY' prop_animation_speed = 'float READ NOTIFY' prop_animation_angle = 'float MEMBER NOTIFY' prop_animation_maxangle = 'float MEMBER NOTIFY' prop_messagebox_visible = 'bool MEMBER NOTIFY' prop_messagetext = 'QString MEMBER NOTIFY' prop_selectmodel_title = 'QString MEMBER' prop_selectmodel_index = 'int MEMBER' prop_preferences_visible = 'bool MEMBER NOTIFY' prop_preferences_tabindex = 'int MEMBER NOTIFY' prop_shadermodel = 'QList MEMBER NOTIFY' prop_samplemodel = 'QList MEMBER NOTIFY' prop_activesamples = 'int MEMBER NOTIFY' prop_sampleindex = 'int MEMBER' prop_movekey_model = 'QList MEMBER NOTIFY' prop_facesmodel = 'QList MEMBER NOTIFY' prop_imagemodel = 'QList MEMBER NOTIFY' prop_helpdialog_visible = 'bool MEMBER NOTIFY' prop_aboutdialog_visible = 'bool MEMBER NOTIFY' #px. #pxh>//property access functions #pxm-FUNC PH nogil def set_gl_y(self, y:'int'): uidata.gl_y = y #pxm-FUNC PH nogil const def get_gl_y(self)->'int': return uidata.gl_y #pxh> #pxm-FUNC PH with gil const def get_animation_speed(self)->float: return settings['draw.speed'] #pxm>CPPCLASS_END #pxm>IF_END #pxm>IF '[[QTVARIANT]]' == 'qtq' class QmlError (Warning): pass #pxm>IF_END # also used in beforeSynchronizing #pxm-FUNC P nogil def dump_info(msg:'const char *', qtobj:'const QObject *'): #px+cdef const QMetaObject *mo #px+cdef QMetaProperty p #px+cdef QMetaMethod m #px+cdef int i mo = qtobj.metaObject() printf('==== %s\n', msg) #printf('Object-Name: %s\n', q2charp(qtobj.objectName())) printf('Class-Name: %s\n', mo.className()) if 0 < mo.propertyCount(): printf('Properties: %d (%d inherited)\n', mo.propertyCount(), mo.propertyOffset()) for i in range(mo.propertyCount()): p = mo.property(i) printf(' %d %s %s\n', i, p.typeName(), p.name()) if 0 < mo.methodCount(): printf('Methods: %d (%d inherited)\n', mo.methodCount(), mo.methodOffset()) for i in range(mo.methodCount()): m = mo.method(i) printf(' %d %s %s\n', i, m.typeName(), m.methodSignature().data()) #pxm>IF '[[QTVARIANT]]' == 'qtq' #pxm-FUNC P with gil def print_warnings(errors:'const QmlErrorList &'): #px+cdef int i #px+cdef QQmlError error #px/for i in range(errors.size()): for error in errors: #px+error = errors.at(i) filename = q2str(error.url().toLocalFile()) msg, line = q2str(error.description()), error.line() print('{2}:{3}:{4}: {0}'.format(msg, QmlError, filename, line, error.column()), file=sys.stderr) warn_explicit(msg, QmlError, filename, line, module=os.path.basename(filename)) #pxm>IF_END def set_debug_text(text): #pxm>IF '[[QTVARIANT]]' == 'qtw' qtui.set_debug_text(str2q(text)) #pxm>IF '[[QTVARIANT]]' == 'qtq' ctx_set(b'debugmsg', text) #pxm>IF_END def set_edit_moves(code, pos): #pxm>IF '[[QTVARIANT]]' == 'qtw' uidata.move_edit.setText(str2q(code)) uidata.move_edit.setCursorPosition(pos) #pxm>IF '[[QTVARIANT]]' == 'qtq' ctx_set(b'edittext', code) ctx_set(b'editposition', pos) #pxm>IF_END def set_status_text(text): #pxm>IF '[[QTVARIANT]]' == 'qtw' uidata.statuslabel.setText(str2q(text)) #pxm>IF '[[QTVARIANT]]' == 'qtq' ctx_set(b'status', text) #pxm>IF_END show_message_text = None #pxm-FUNC P with gil def show_message_cb(): global show_message_text #pxm>IF '[[QTVARIANT]]' == 'qtw' #px/cdef QMessageBox *dialog = new QMessageBox(uidata.mainwindow) dialog = QMessageBox(uidata.mainwindow) dialog.setWindowTitle(str2q(_(config_.APPNAME))) dialog.setText(str2q(show_message_text)) dialog.setIcon(QMessageBox_Information) dialog.setStandardButtons(QMessageBox_Close) dialog.exec() #px+del dialog #pxm>IF '[[QTVARIANT]]' == 'qtq' ctx_set(b'messagetext', show_message_text) ctx_set(b'messagebox_visible', True) #pxm>IF_END show_message_text = None def show_message(message): global show_message_text show_message_text = message #px/singleShot(100, show_message_cb) QTimer.singleShot(100, show_message_cb) #pxm>IF '[[QTVARIANT]]' == 'qtw' #pxm-FUNC P def _fill_treestore(parent:'QStandardItem *', tree): #px+cdef QStandardItem *item for transl, func, subtree in tree: #px/item = new QStandardItem(str2q(transl)) item = QStandardItem(str2q(transl)) if func is not None: item.setData(tovariant(func)) parent.appendRow(item) _fill_treestore(item, subtree) #pxm>IF_END def fill_sidepane(plugin_data): #pxm>IF '[[QTVARIANT]]' == 'qtw' # remove old plugins uidata.treestore.clear() qtui.clear_sidepane() #self.plugin_group_widgets.clear() # fill treestore with plugins #px+cdef QStandardItem *item for transl, func, subtree in plugin_data: #px/item = new QStandardItem(str2q(transl)) item = QStandardItem(str2q(transl)) if func is not None: item.setData(tovariant(func)) uidata.treestore.appendRow(item) _fill_treestore(item, subtree) # create widgets in the sidepane to display the plugins #px+cdef QPushButton *button #px+cdef QTreeView *treeview for i, [transl, func, subtree] in enumerate(plugin_data): button = qtui.create_sidepane_button(str2q(transl)) treeview = qtui.create_sidepane_treeview(uidata.treestore, i) uidata.mainwindow.connect_sidepane(button, treeview) qtui.set_active_plugin_group(-1) #pxm>IF '[[QTVARIANT]]' == 'qtq' pydata.plugin_data = plugin_data #pxm>IF_END #pxm>IF '[[QTVARIANT]]' == 'qtw' #pxm-FUNC P def _hide_row(treeview:int, index:'const QModelIndex &')->bool: funcidx = fromvariant(index.data(Qt.UserRole + 1)) if not pydata.app.on_plugin_test_idx(funcidx): return True hide_all = funcidx is None rows = uidata.treestore.rowCount(index) for r in range(rows): hide = _hide_row(treeview, uidata.treestore.index(r, 0, index)) qtui.set_row_hidden(treeview, r, index, hide) hide_all = hide_all and hide return hide_all #pxm>IF_END def update_sidepane(): #pxm>IF '[[QTVARIANT]]' == 'qtw' #px+cdef QModelIndex index for i in range(qtui.get_plugin_group_count()): index = qtui.root_index(i) qtui.hide_row(i, _hide_row(i, index)) #pxm>IF '[[QTVARIANT]]' == 'qtq' def filter_plugin_data(tree): for section, func, subtree in tree: assert func is None for transl1, func, subtree in subtree: funcidx1 = -1 if func is None else func if pydata.app.on_plugin_test_idx(funcidx1): subptree = [] for transl2, func, subtree in subtree: assert not subtree, subtree funcidx = -1 if func is None else func if pydata.app.on_plugin_test_idx(funcidx): subptree.append((section, ' • ' + transl2, funcidx)) if subptree or funcidx1 >= 0: yield section, transl1, funcidx1 for section, name, funcidx in subptree: yield section, name, funcidx ctx_set_ssi_model(b'sidepanemodel', filter_plugin_data(pydata.plugin_data)) #pxm>IF_END def set_toolbar_state(state): #pxm>IF '[[QTVARIANT]]' == 'qtw' qtui.set_toolbar_state(state[0], state[1], state[2], state[3], state[4]) #pxm>IF '[[QTVARIANT]]' == 'qtq' ctx_set(b'toolbarstate', state) #pxm>IF_END #pxm>IF '[[QTVARIANT]]' == 'qtq' def ctx_set(propname, value): uidata.ctx.setProperty(propname, tovariant(value)) #pxm-FUNC P def create_ssi_model(values)->'QVariant': #px/cdef QObjectList qlist items = [] #qlist.reserve(len(values)) for section, name, index, *unused in values: #px/qlist.append(new SectionNameIndexItem(str2q(section), str2q(name), index)) items.append({'section': str2q(section), 'name': str2q(name), 'index': index}) #px+cdef QVariant items #px+items.setValue[QObjectList](qlist) return items def ctx_set_ssi_model(propname, values): uidata.ctx.setProperty(propname, create_ssi_model(values)) def ctx_get_stdmodel(propname): #px/cdef QVariantList qlist = uidata.ctx.property(propname).value[QVariantList]() qlist = uidata.ctx.property(propname) #px+cdef QObject *qitem items = [] #px/for i in range(qlist.size()): for value in qlist: #px+qitem = qlist.at(i).value[pQObject]() #px/items.append((fromvariant(qitem.property(b'text')), fromvariant(qitem.property(b'key')))) items.append((value['text'], value['key'])) return items #pxm>IF_END #pxm-FUNC P def create_stdmodel(values)->'QVariant': #px/cdef QObjectList qlist items = [] for text, key, *unused in values: #px/qlist.append(new TextKeyItem(str2q(text), str2q(key))) items.append({'text': text, 'key': key}) #px+cdef QVariant items #px+items.setValue[QObjectList](qlist) return items #pxm>IF '[[QTVARIANT]]' == 'qtq' def ctx_set_stdmodel(propname, values): uidata.ctx.setProperty(propname, create_stdmodel(values)) def ctx_invoke(name): invokeMethod(uidata.ctx, name, Qt.DirectConnection) #pxm>IF_END #pxm>IF '[[QTVARIANT]]' == 'qtw' #pxm-QD_CPPCLASS class MainView (QMainWindow): #pxm-FUNC HD nogil def __init__(): pass #pxh> : QMainWindow() {} #pxm>IF '[[QTVARIANT]]' == 'qtq' #pxm-QD_CPPCLASS class MainView (QQuickView): #pxm-FUNC HD nogil def __init__(engine:'QQmlEngine *', parent:'QQuickWindow *'): pass #pxh> : QQuickView(engine, parent) {} #pxm>IF_END #pxm-FUNC CHD nogil def connect_renderer(self, renderer:'Renderer *'): #pxc>{ #pxm>IF '[[QTVARIANT]]' == 'qtq' #pxc-QObject::connect(this, SIGNAL(beforeRendering()), renderer, SLOT(on_beforeRendering()), Qt::DirectConnection); self.beforeRendering.connect(renderer.on_beforeRendering) #pxm>IF_END #pxc-QObject::connect(renderer, SIGNAL(picking_result(int)), this, SLOT(_on_picking_result(int)), Qt::QueuedConnection); renderer.picking_result.connect(self._on_picking_result) #pxc-QObject::connect(renderer, SIGNAL(debug_fps(int)), this, SLOT(_on_debug_fps(int)), Qt::QueuedConnection); renderer.debug_fps.connect(self._on_debug_fps) #pxc>} #pxm-FUNC CHD nogil def connect_renderer_offscreen(self, renderer:'Renderer *'): #pxc>{ #pxc>QObject::connect(renderer, SIGNAL(offscreen_image(QImage)), #pxc- this, SLOT(_on_offscreen_image(QImage)), Qt::QueuedConnection); pass #pxc>} #pxm-FUNC CHD nogil def connect_view(self): #pxc>{ #pxc-connect(this, SIGNAL(beforeSynchronizing()), this, SLOT(on_beforeSynchronizing()), Qt::DirectConnection); self.beforeSynchronizing.connect(self.on_beforeSynchronizing, type=Qt.DirectConnection) #pxc-connect(this, SIGNAL(sceneGraphInvalidated()), this, SLOT(on_sceneGraphInvalidated()), Qt::DirectConnection); self.sceneGraphInvalidated.connect(self.on_sceneGraphInvalidated, type=Qt.DirectConnection) #pxc>} #pxm>IF '[[QTVARIANT]]' == 'qtw' #pxm-FUNC CHD nogil def connect_sidepane(self, button:'QPushButton *', treeview:'QTreeView *'): #pxc-{ obsc = lambda i: lambda: self._on_button_sidepane_clicked(i) #pxc-connect(button, SIGNAL(clicked()), this, SLOT(_on_button_sidepane_clicked()), Qt::DirectConnection); button.clicked.connect(obsc(i)) #pxc-connect(treeview, SIGNAL(activated(const QModelIndex &)), this, SLOT(_on_treeview_activated(const QModelIndex &)), Qt::DirectConnection); treeview.activated.connect(self._on_treeview_activated) #pxc>} #pxm>IF_END #pxh> #pxm-FUNC PH with gil def slot__on_picking_result(self, index:int): pydata.app.on_picking_result(index) #pxm-FUNC PH nogil def slot__on_debug_fps(self, fps:int): #pxm>IF '[[QTVARIANT]]' == 'qtw' qtui.set_debug_text(QString_number(fps)) #pxm>IF '[[QTVARIANT]]' == 'qtq' uidata.ctx.setProperty(b'debugmsg', QVariant(fps)) #pxm>IF_END #pxm-FUNC PH nogil def slot__on_offscreen_image(self, image:'QImage'): uidata.offscreen_image = image #pxm>IF '[[QTVARIANT]]' == 'qtw' #pxd>void on_beforeSynchronizing() nogil #pxm>IF_END #pxm-FUNC PH nogil def slot_on_beforeSynchronizing(this): if renderdata.renderer is NULL: render_init() this.connect_renderer(renderdata.renderer) #px+IF OFFSCREEN: #px+ this.connect_renderer_offscreen(renderdata.renderer) glarea.render_resize(uidata.gl_y, uidata.width, uidata.height) glarea.sync() if uidata.atlas_changed: renderdata.atlas_changed = True renderdata.atlas_width = uidata.atlas_width renderdata.atlas_height = uidata.atlas_height glarea.sync_set_atlas_data() uidata.atlas_changed = False if uidata.pick_requested: renderdata.pickxy_changed = True glarea.sync_set_pick_position() #pxm-FUNC PH nogil def slot_on_sceneGraphInvalidated(this): if renderdata.renderer is not NULL: render_destroy() del renderdata.renderer renderdata.renderer = NULL #pxm>IF '[[QTVARIANT]]' == 'qtw' #pxh> #pxm-FUNC PH with gil def resizeEvent(this, event:'QResizeEvent *'): settings['window.size'] = event.size().width(), event.size().height() pos = qtui.splitter_pos() if pos > 0: # ignore the first resize event where sizes==[0,0] settings['window.divider'] = pos #px/this.QWidget_resizeEvent(event) QWidget.resizeEvent(this, event) #pxm-FUNC PH with gil def closeEvent(this, event:'QCloseEvent *'): destroy_resources() try: pydata.app.on_closing() finally: #px/this.QWidget_closeEvent(event) QWidget.closeEvent(this, event) #pxm-FUNC PH with gil def keyPressEvent(this, event:'QKeyEvent *'): if not pydata.app.on_key_pressed(event.key(), int(event.modifiers()) & SAFE_MODIFIER_MASK, False): event.ignore() #px/this.QWidget_keyPressEvent(event) QWidget.keyPressEvent(this, event) #pxh> #pxm:ACTION action_challenge = pydata action_new_solved = pydata action_preferences = pydata action_reset_rotation = pydata action_rewind = pydata action_previous = pydata action_stop = pydata action_play = pydata action_next = pydata action_forward = pydata action_mark_set = pydata action_mark_remove = pydata action_initial_state = pydata action_edit_cube = pydata #px. #pxm-FUNC PH with gil def slot_on_action_selectmodel_triggered(this): if pydata.modelselect is None: pydata.modelselect = pydata.app.on_action_selectmodel_triggered() uidata.modelselect_currentpage = 1 items, index, title = pydata.modelselect.on_model_get_modeldata(1) qtui.fill_page(create_stdmodel(items), str2q(title)) qtui.set_page(1) #pxm-FUNC PH with gil def slot_on_action_selectmodel_back_triggered(this): if pydata.modelselect.on_model_back(): uidata.modelselect_currentpage -= 1 items, index, title = pydata.modelselect.on_model_get_modeldata(uidata.modelselect_currentpage) qtui.fill_page(create_stdmodel(items), str2q(title)) qtui.set_page(1) else: qtui.set_page(0) #pxm-FUNC PHD with gil def _listwidget_itemActivated(self, item:'QListWidgetItem *'): index = item.listWidget().currentRow() #TODO: store index in item mtype_size = pydata.modelselect.on_convert_to_mtype_size(uidata.modelselect_currentpage, index) if mtype_size is None: uidata.modelselect_currentpage += 1 items, index, title = pydata.modelselect.on_model_get_modeldata(uidata.modelselect_currentpage) qtui.fill_page(create_stdmodel(items), str2q(title)) else: pydata.app.on_load_other_game(*mtype_size) qtui.set_page(0) while pydata.modelselect.on_model_back(): pass #pxm-FUNC PH with gil def slot_on_listwidget_itemActivated(this, item:'QListWidgetItem *'): this._listwidget_itemActivated(item) #pxm-FUNC PH with gil def slot_on_listwidget_itemClicked(this, item:'QListWidgetItem *'): this._listwidget_itemActivated(item) #pxm-FUNC PH with gil def slot_on_action_quit_triggered(this): this.close() #pxm-FUNC PH with gil def slot_on_action_editbar_toggled(this, checked:bool): qtui.set_frame_editbar_visible(checked) settings['window.editbar'] = checked #pxm-FUNC PH with gil def slot_on_action_statusbar_toggled(this, checked:bool): qtui.set_statusbar_visible(checked) settings['window.statusbar'] = checked #pxm-FUNC PH nogil def slot_on_action_help_triggered(this): if uidata.help == NULL: help_dialog() help_dialog_show() #pxm-FUNC PH nogil def slot_on_action_info_triggered(this): about_dialog() #pxm-FUNC PH with gil def slot_on_splitter_splitterMoved(self, pos:int, index:int): if index == 1: settings['window.divider'] = pos qtui.splitter_update_minimumsize() #pxm-FUNC PH with gil def slot_on_button_edit_clear_clicked(this): uidata.move_edit.setText(str2q('')) pydata.app.on_edit_finished(q2str(uidata.move_edit.text()), uidata.move_edit.cursorPosition()) #pxm-FUNC PH with gil def slot_on_button_edit_exec_clicked(this): pydata.app.on_edit_finished(q2str(uidata.move_edit.text()), uidata.move_edit.cursorPosition()) #pxm-FUNC PH with gil def slot_on_action_jump_to_editbar_triggered(this): uidata.move_edit.setFocus() #pxm-FUNC PH with gil def slot__on_button_sidepane_clicked(this): qtui.set_active_plugin_group_by_obj(this.sender()) #pxm-FUNC PH with gil def slot__on_treeview_activated(this, index:'const QModelIndex &'): func_idx = fromvariant(index.data(Qt.UserRole + 1)) if func_idx is None: return pydata.app.on_plugin_activated(func_idx) #pxm>IF_END #pxm>CPPCLASS_END #pxm>IF '[[QTVARIANT]]' == 'qtw' #pxm-QD_CPPCLASS class MoveEdit (QLineEdit): #pxd>pass #pxm-FUNC CHD def __init__(this): #pxc> : QLineEdit() { #pxc-connect(this, SIGNAL(returnPressed()), this, SLOT(on_returnpressed()), Qt::DirectConnection); this.returnPressed.connect(this.on_returnpressed, type=Qt.DirectConnection) #pxc>} #pxm-FUNC PH with gil def keyPressEvent(this, event:'QKeyEvent *'): if event.matches(MoveToNextWord): pos = pydata.app.on_edit_moves_nextword(q2str(this.text()), this.cursorPosition()) this.setCursorPosition(pos) elif event.matches(MoveToPreviousWord): pos = pydata.app.on_edit_moves_prevword(q2str(this.text()), this.cursorPosition()) this.setCursorPosition(pos) elif event.key() == Qt.Key_Right and event.modifiers() == Qt.AltModifier: pydata.app.on_edit_moves_swapnext(q2str(this.text()), this.cursorPosition()) elif event.key() == Qt.Key_Left and event.modifiers() == Qt.AltModifier: pydata.app.on_edit_moves_swapprev(q2str(this.text()), this.cursorPosition()) else: #px/this.QLineEdit_keyPressEvent(event) QLineEdit.keyPressEvent(self, event) #pxm-FUNC PH with gil const def slot_on_returnpressed(self): pydata.app.on_edit_finished(q2str(this.text()), this.cursorPosition()) #pxm>CPPCLASS_END #pxm-QD_CPPCLASS class DrawingArea (QOpenGLWidget): #pxm-FUNC HD nogil def __init__(): pass #pxh> : QOpenGLWidget() {} #pxm-FUNC PHD with gil def init(this): this.setAcceptDrops(True) this.setFocusPolicy(Qt.StrongFocus) if debug & DEBUG_NOCONTROLS: this.setMinimumSize(128, 128) # for thumbnail generation else: this.setMinimumSize(300, 300) this.setMouseTracking(True) #pxm-FUNC PH nogil def paintGL(this): uidata.mainwindow.on_beforeSynchronizing() renderdata.renderer.on_beforeRendering() #pxm-FUNC PH with gil def resizeGL(this, width:int, height:int): uidata.width = width uidata.height = height #pxm-FUNC PH with gil def keyPressEvent(this, event:'QKeyEvent *'): if not pydata.app.on_key_pressed(event.key(), event.modifiers() & SAFE_MODIFIER_MASK, True): #px/this.QWidget_keyPressEvent(event) QWidget.keyPressEvent(this, event) #pxm-FUNC PH with gil def mousePressEvent(this, event:'QMouseEvent *'): pydata.app.on_mouse_pressed(event.modifiers(), event.button(), event.x(), event.y(), this.height()) #pxm-FUNC PH with gil def mouseReleaseEvent(this, event:'QMouseEvent *'): pydata.app.on_mouse_released(event.x(), event.y()) #pxm-FUNC PH with gil def mouseMoveEvent(this, event:'QMouseEvent *'): pydata.app.on_mouse_moved(True, event.x(), event.y(), this.height(), 4) #pxm-FUNC PH with gil def wheelEvent(this, event:'QWheelEvent *'): pydata.app.on_mouse_zoom(event.angleDelta().y() / 120) #pxm-FUNC PH with gil def dragEnterEvent(this, event:'QDragEnterEvent *'): #px+cdef const QMimeData *mime_data mime_data = event.mimeData() if debug & DEBUG_MSG: #px/print('drag enter:', _qs2list(mime_data.formats())) print('drag enter:', mime_data.formats()) if mime_data.hasColor(): event.acceptProposedAction() elif mime_data.hasUrls() and mime_data.urls().at(0).isLocalFile(): event.acceptProposedAction() #pxm-FUNC PH with gil def dropEvent(this, event:'QDropEvent *'): #px+cdef const QMimeData *mime_data mime_data = event.mimeData() if mime_data.hasColor(): pydata.app.on_mouse_drop_color(event.pos().x(), this.height() - event.pos().y(), q2str(mime_data.colorData().toString())) elif mime_data.hasUrls(): pydata.app.on_mouse_drop_url(event.pos().x(), this.height() - event.pos().y(), q2str(mime_data.urls().at(0).toString())) else: if debug & DEBUG_MSG: #px/print('Skip mime type:', ' '.join(_qs2list(mime_data.formats()))) print('Skip mime type:', ' '.join(mime_data.formats())) #pxm>CPPCLASS_END #pxm-QD_CPPCLASS class PreferencesDialog (QDialog): #pxh>QStandardItemModel *liststore_movekeys; #pxd+QStandardItemModel *liststore_movekeys #pxh>bool liststore_blocked; #pxd+cbool liststore_blocked #pxh>QString current_facekey; #pxd+QString current_facekey #pxh>QString image_dirname; #pxd+QString image_dirname #pxm-FUNC HD nogil def __init__(parent:'QWidget *'): pass #pxh> : QDialog(parent), liststore_blocked(false) {} #pxm-FUNC PHD def init(this): speed_min, speed_max = settings['draw.speed_range'] mirror_min, mirror_max = settings['draw.mirror_distance_range'] #px/this.liststore_movekeys = new QStandardItemModel(this) this.liststore_movekeys = QStandardItemModel(this) qtui.setupUi_pref(this, settings['draw.speed'], speed_min, speed_max, mirror_min, mirror_max, this.liststore_movekeys) #pxh> #pxm-FUNC PH with gil def slot_on_slider_animspeed_valueChanged(this, value:int): settings['draw.speed'] = value #pxm-FUNC PH with gil def slot_on_button_animspeed_reset_clicked(this): this.findChild(str2q('slider_animspeed')).setProperty(b'value', tovariant(settings['draw.speed_default'])) del settings['draw.speed'] #pxm-FUNC PH with gil def slot_on_combobox_shader_currentIndexChanged(this, value:int): settings['draw.shader'] = value #pxm-FUNC PH with gil def slot_on_button_shader_reset_clicked(this): this.findChild(str2q('combobox_shader')).setProperty(b'currentIndex', tovariant(settings['draw.shader_default'])) del settings['draw.shader'] #pxm-FUNC PH with gil def slot_on_combobox_samples_currentIndexChanged(this, value:int): settings['draw.samples'] = value #visible = (this.sample_buffers != 2**settings['draw.samples']) this.findChild(str2q('label_needs_restarted')).setProperty(b'visible', tovariant(True)) #pxm-FUNC PH with gil def slot_on_button_antialiasing_reset_clicked(this): this.findChild(str2q('combobox_samples')).setProperty(b'currentIndex', tovariant(settings['draw.samples_default'])) del settings['draw.samples'] #pxm-FUNC PH with gil def slot_on_checkbox_mirror_faces_toggled(this, checked:bool): uidata.preferences.findChild(str2q('spinbox_mirror_faces')).setProperty(b'enabled', tovariant(checked)) settings['draw.mirror_faces'] = checked #pxm-FUNC PH with gil def slot_on_spinbox_mirror_faces_valueChanged(this, value:'double'): settings['draw.mirror_distance'] = value #pxm-FUNC PH with gil def slot_on_button_mirror_faces_reset_clicked(this): this.findChild(str2q('checkbox_mirror_faces')).setProperty(b'checked', tovariant(settings['draw.mirror_faces_default'])) del settings['draw.mirror_faces'] this.findChild(str2q('spinbox_mirror_faces')).setProperty(b'value', tovariant(settings['draw.mirror_distance_default'])) del settings['draw.mirror_distance'] #pxm-FUNC PH with gil def slot_on_button_mousemode_quad_toggled(this, checked:bool): if checked: settings['draw.selection_nick'] = 'quadrant' #pxm-FUNC PH with gil def slot_on_button_mousemode_ext_toggled(this, checked:bool): if checked: settings['draw.selection_nick'] = 'simple' #pxm-FUNC PH with gil def slot_on_button_mousemode_gesture_toggled(this, checked:bool): if checked: settings['draw.selection_nick'] = 'gesture' #pxm-FUNC PHD def fill_move_key_list(this): this.liststore_blocked = True #px+cdef QStandardItem *item for i, (move, key) in enumerate(settings['draw.accels']): #px/item = new QStandardItem(str2q(move)) item = QStandardItem(str2q(move)) this.liststore_movekeys.setItem(i, 0, item) #px/item = new QStandardItem(str2q(key)) item = QStandardItem(str2q(key)) this.liststore_movekeys.setItem(i, 1, item) #px/item = new QStandardItem(str2q(_('Move'))) item = QStandardItem(str2q(_('Move'))) this.liststore_movekeys.setHorizontalHeaderItem(0, item) #px/item = new QStandardItem(str2q(_('Key'))) item = QStandardItem(str2q(_('Key'))) this.liststore_movekeys.setHorizontalHeaderItem(1, item) this.liststore_blocked = False #pxm-FUNC PHD def get_move_key_list(this)->object: move_keys = [] row_count = this.liststore_movekeys.rowCount() for i in range(row_count): move = fromvariant(this.liststore_movekeys.item(i, 0).data(Qt.DisplayRole)) key = fromvariant(this.liststore_movekeys.item(i, 1).data(Qt.DisplayRole)) move_keys.append((move, key)) return move_keys #pxm-FUNC PH with gil def slot_on_liststore_movekeys_itemChanged(this, unused_item:'QStandardItem *'): if this.liststore_blocked: return settings['draw.accels'] = this.get_move_key_list() #pxm-FUNC PH with gil def slot_on_button_movekey_add_clicked(this): this.liststore_blocked = True qtui.add_movekey_row() this.liststore_blocked = False #pxm-FUNC PH with gil def slot_on_button_movekey_remove_clicked(this): qtui.remove_movekey_row() settings['draw.accels'] = this.get_move_key_list() #pxm-FUNC PH with gil def slot_on_button_movekey_reset_clicked(this): del settings['draw.accels'] this.fill_move_key_list() #pxm-FUNC PH with gil def slot__on_listview_faces_currentRowChanged(this, current:'const QModelIndex &'): this.current_facekey = qtui.get_liststore_faces_facekey(current) pydata.app.on_dialog_change_current_face(q2str(this.current_facekey)) #pxm-FUNC PH with gil def slot_on_button_color_clicked(this): #px+cdef QString color current_facekey = q2str(this.current_facekey) color = str2q(settings['theme.faces',current_facekey,'color']) color = qtui.color_dialog(this, color) if q2str(color): qtui.set_button_color(color) settings['theme.faces',current_facekey,'color'] = q2str(color) #pxm-FUNC PH with gil def slot_on_button_color_reset_clicked(this): current_facekey = q2str(this.current_facekey) del settings['theme.faces',current_facekey,'color'] qtui.set_button_color(str2q(settings['theme.faces',current_facekey,'color'])) #pxm-FUNC PH with gil def slot_on_combobox_image_activated(this, index:int): pydata.app.on_dialog_change_current_image(q2str(this.current_facekey), index) #pxm-FUNC PH with gil def slot_on_button_image_reset_clicked(this): pydata.app.on_dialog_reset_current_image(q2str(this.current_facekey)) #pxm-FUNC PH with gil def slot_on_radiobutton_tiled_toggled(this, checked:bool): if checked: settings['theme.faces',q2str(this.current_facekey),'mode_nick'] = 'tiled' #pxm-FUNC PH with gil def slot_on_radiobutton_mosaic_toggled(this, checked:bool): if checked: settings['theme.faces',q2str(this.current_facekey),'mode_nick'] = 'mosaic' #pxm-FUNC PH with gil def slot_on_button_background_color_clicked(this): #px+cdef QString color color = str2q(settings['theme.bgcolor']) color = qtui.color_dialog(this, color) if q2str(color): qtui.set_button_background_color(color) settings['theme.bgcolor'] = q2str(color) #pxm-FUNC PH with gil def slot_on_button_background_color_reset_clicked(this): del settings['theme.bgcolor'] qtui.set_button_background_color(str2q(settings['theme.bgcolor'])) #pxm>CPPCLASS_END def set_combobox_current_image(index_icon, imagefile, index): #px/cdef QIcon icon icon = QIcon() if imagefile is not None: icon.addFile(str2q(imagefile)) qtui.set_combobox_image(index_icon, icon, index) def set_preferences_current_face_theme(color, imageindex_icon, imagefile, imageindex, imagemode): qtui.set_button_color(str2q(color)) set_combobox_current_image(imageindex_icon, imagefile, imageindex) qtui.set_imagemode(imagemode) def get_filedialog_imagefile(): filename = q2str(getOpenFileName(uidata.preferences, str2q(_("Open Image")), uidata.preferences.image_dirname)) if filename: uidata.preferences.image_dirname = str2q(os.path.dirname(filename)) return filename #pxm>IF_END def preferences_dialog(shader_names, sample_buffers, facenames, stockicons): #pxm>IF '[[QTVARIANT]]' == 'qtw' #px/uidata.preferences = new PreferencesDialog(uidata.mainwindow) uidata.preferences = PreferencesDialog(uidata.mainwindow) uidata.preferences.init() qtui.preferences_block_signals(True) # graphic tab for nick in settings['draw.shader_range']: qtui.combobox_add_shaderitem(str2q(shader_names.get(nick, nick)), str2q(nick)) uidata.preferences.findChild(str2q('combobox_shader')).setProperty(b'currentIndex', tovariant(settings['draw.shader'])) for text in settings['draw.samples_range']: qtui.combobox_add_samplesitem(str2q(_(text)), str2q(text)) uidata.preferences.findChild(str2q('combobox_samples')).setProperty(b'currentIndex', tovariant(settings['draw.samples'])) uidata.preferences.findChild(str2q('checkbox_mirror_faces')).setProperty(b'checked', tovariant(settings['draw.mirror_faces'])) uidata.preferences.findChild(str2q('spinbox_mirror_faces')).setProperty(b'value', tovariant(settings['draw.mirror_distance'])) # mouse tab selection_nick = settings['draw.selection_nick'] if selection_nick == 'quadrant': uidata.preferences.findChild(str2q('button_mousemode_quad')).setProperty(b'checked', tovariant(True)) elif selection_nick == 'simple': uidata.preferences.findChild(str2q('button_mousemode_ext')).setProperty(b'checked', tovariant(True)) elif selection_nick == 'gesture': uidata.preferences.findChild(str2q('button_mousemode_gesture')).setProperty(b'checked', tovariant(True)) # keys tab uidata.preferences.fill_move_key_list() # theme tab for facename, facekey in facenames: qtui.add_liststore_faces_row(str2q(facename), str2q(facekey)) qtui.add_combobox_image_item(QIcon(), str2q(_('plain')), str2q('')) for filename in stockicons: qtui.add_combobox_image_item(get_icon(filename), str2q(''), str2q(filename)) qtui.add_combobox_image_item(QIcon(), str2q(_('select …')), str2q('/')) uidata.preferences.image_dirname = str2q(get_pictures_folder()) qtui.finalize_liststore_faces(uidata.preferences) qtui.set_button_background_color(str2q(settings['theme.bgcolor'])) qtui.preferences_block_signals(False) #pxm>IF '[[QTVARIANT]]' == 'qtq' ctx_set_stdmodel(b'shadermodel', ([shader_names.get(nick, nick), nick] for nick in settings['draw.shader_range'])) ctx_set(b'activesamples', sample_buffers) ctx_set(b'sampleindex', len(bin(sample_buffers)[3:])) ctx_set_stdmodel(b'samplemodel', ([_(text), text] for text in settings['draw.samples_range'])) ctx_set_stdmodel(b'movekey_model', settings['draw.accels']) ctx_set_stdmodel(b'facesmodel', facenames) images = [[fn and os.path.join(config_.UI_DIR, 'images', fn), fn] for fn in stockicons] ctx_set_stdmodel(b'imagemodel', images) #pxm>IF_END def show_preferences(): #pxm>IF '[[QTVARIANT]]' == 'qtw' uidata.preferences.show() #pxm>IF '[[QTVARIANT]]' == 'qtq' ctx_set(b'preferences_visible', True) #pxm>IF_END #pxm>IF '[[QTVARIANT]]' == 'qtw' #pxm-QD_CPPCLASS class HelpDialog (QDialog): #pxm-FUNC HD nogil def __init__(parent:'QWidget *'): pass #pxh> : QDialog(parent) {} #pxm-FUNC PHD def init(this, helptext:str): qtui.setupUi_help(this, helptext) #pxm>CPPCLASS_END #pxm-FUNC P with gil def help_dialog(): #px/uidata.help = new HelpDialog(uidata.mainwindow) uidata.help = HelpDialog(uidata.mainwindow) uidata.help.init(str2q(pydata.app.on_dialog_text('help_text'))) #pxm-FUNC P nogil def help_dialog_show(): uidata.help.show() #pxm-QD_CPPCLASS class AboutDialog (QDialog): #pxm-FUNC HD nogil def __init__(parent:'QWidget *'): pass #pxh> : QDialog(parent) {} #pxm-FUNC PHD def init(this): qtui.setupUi_about(this) #pxm-FUNC PH nogil def showEvent(self, unused_event:'QShowEvent *'): qtui.update_animation(True) #pxm-FUNC PH nogil def resizeEvent(self, unused_event:'QResizeEvent *'): qtui.update_animation(False) #pxm-FUNC PH nogil def eventFilter(self, unused_watched:'QObject *', event:'QEvent *')->bool: qtui.event_filter_stop_animation(event) return False #pxh> #pxm-FUNC HD nogil def slot_on_text_translators_anchorClicked(this, link:'const QUrl &'): pass #pxh>{ QDesktopServices::openUrl(link); } #pxm-FUNC PH nogil def slot_on_tab_widget_currentChanged(self, index:int): qtui.tab_widget_currentChanged(index) #pxm-FUNC PH with gil def slot_on_text_license_short_anchorClicked(self, url:'const QUrl &'): qtui.show_full_license(q2str(url.toString()) == 'text:FULL_LICENSE_TEXT', url) #pxm>CPPCLASS_END #pxm-FUNC P with gil def about_dialog(): #px/cdef AboutDialog *about = new AboutDialog(uidata.mainwindow) about = AboutDialog(uidata.mainwindow) about.init() qtui.fill_header(str2q(config_.APPICON_FILE), str2q(_(config_.APPNAME)), str2q(config_.VERSION), str2q(_(config_.SHORT_DESCRIPTION))) qtui.fill_about_tab(str2q(config_.COPYRIGHT), str2q(pydata.app.on_dialog_text('about_website')), str2q(pydata.app.on_dialog_text('about_translators'))) qtui.fill_contribute_tab(str2q(pydata.app.on_dialog_text('about_contribute'))) license_full = pydata.app.on_dialog_text('about_license_full') if license_full: qtui.fill_license_tab(str2q(pydata.app.on_dialog_text('about_license_short')), False, str2q(license_full)) else: qtui.fill_license_tab(str2q(pydata.app.on_dialog_text('about_license_short')), True, str2q(pydata.app.on_dialog_text('about_license_notfound'))) about.exec() about.deleteLater() #pxm>IF_END def initial_resize(): uidata.width, uidata.height = settings['window.size'] uidata.mainwindow.resize(uidata.width, uidata.height) #pxm>IF '[[QTVARIANT]]' == 'qtw' #px+cdef int s1=0, s2=0, divider_pos, divider_pos2 divider_pos = settings['window.divider'] uidata.mainwindow.show() #px/qtui.get_splitter_sizes(s1, s2) s1, s2 = qtui.get_splitter_sizes() divider_pos2 = s1 + s2 - divider_pos qtui.set_splitter_sizes(divider_pos, divider_pos2) #pxm>IF '[[QTVARIANT]]' == 'qtq' uidata.mainwindow.show() #pxm>IF_END #px/singleShot(20, _on_init_finalize) QTimer.singleShot(20, _on_init_finalize) def set_title(title): uidata.mainwindow.setTitle(str2q(title)) def load_ui(path): pass #pxm>IF '[[QTVARIANT]]' == 'qtq' #px+cdef QmlErrorList errors uidata.mainwindow.setSource(QUrl()) uidata.engine.clearComponentCache() uidata.mainwindow.setSource(fromLocalFile(str2q(path))) errors = uidata.mainwindow.errors() #px/if errors.size() > 0: if len(errors) > 0: print_warnings(errors) #pxm>IF_END def close_mainwindow(): uidata.mainwindow.close() def get_samples(): #pxm>IF '[[QTVARIANT]]' == 'qtw' #TODO: uidata.drawingarea.format().samples() returns only 0 here return defaultFormat().samples() #pxm>IF '[[QTVARIANT]]' == 'qtq' return uidata.mainwindow.format().samples() #pxm>IF_END def update_drawingarea(): #pxm>IF '[[QTVARIANT]]' == 'qtw' uidata.drawingarea.update() #pxm>IF '[[QTVARIANT]]' == 'qtq' uidata.mainwindow.update() #pxm>IF_END def set_cursor(index): if index < 0: index += 18 #pxm>IF '[[QTVARIANT]]' == 'qtw' #px/uidata.drawingarea.setCursor(uidata.cursors[index][0]) uidata.drawingarea.setCursor(uidata.cursors[index]) #pxm>IF '[[QTVARIANT]]' == 'qtq' if uidata.entered: #px/uidata.mainwindow.setCursor(uidata.cursors[index][0]) uidata.mainwindow.setCursor(uidata.cursors[index]) #pxm>IF_END def unset_cursor(): #pxm>IF '[[QTVARIANT]]' == 'qtw' uidata.drawingarea.unsetCursor() #pxm>IF '[[QTVARIANT]]' == 'qtq' if uidata.entered: uidata.mainwindow.unsetCursor() #pxm>IF_END #pxm>IF '[[QTVARIANT]]' == 'qtq' def set_mousegrab(grab): uidata.mainwindow.setMouseGrabEnabled(grab) #TODO: need setOverrideCursor, see qt-doc for QWindow::setCursor #if grab: # app.setOverrideCursor(uidata.cursors[17]) #else: # app.restoreOverrideCursor() #pxm>IF_END def save_screenshot(filename): #px+IF OFFSCREEN: #px+cdef QImage image #px+image = uidata.offscreen_image #px/ELSE: if True: #pxm>IF '[[QTVARIANT]]' == 'qtw' #px+cdef QPixmap image image = uidata.mainwindow.grab() #pxm>IF '[[QTVARIANT]]' == 'qtq' #px+cdef QImage image image = uidata.mainwindow.grabWindow() #pxm>IF_END if not (debug & DEBUG_SIM): image.save(str2q(filename), NULL, -1) #### misc qt #### def parse_color(name): #px/cdef QColor color color = QColor() color.setNamedColor(str2q(name)) return color.red(), color.green(), color.blue() def parse_color_f(name): #px/cdef QColor color color = QColor() color.setNamedColor(str2q(name)) return color.redF(), color.greenF(), color.blueF() def load_image_from_file(filename, maxsize): #px+cdef int width, height, scaled_width, scaled_height #px+cdef bytes data #px/cdef QImage image image = QImage() image.load(str2q(filename), NULL) if image.isNull(): return None # scale the image to size 2^n for OpenGL width = image.width() height = image.height() if width < 1 or height < 1: return None scaled_width = maxsize while scaled_width > width: scaled_width //= 2 scaled_height = maxsize while scaled_height > height: scaled_height //= 2 image = image.scaled(scaled_width, scaled_height, Qt.IgnoreAspectRatio, Qt.SmoothTransformation) image = image.convertToFormat(Format_RGBA8888, Qt.AutoColor) #px+data = image.bits()[:image.byteCount()] #px: data = image.bits() data.setsize(image.byteCount()) data = bytes(data) #px. return image.width(), image.height(), data #pxm>IF '[[QTVARIANT]]' == 'qtw' #pxm-FUNC P def get_icon(filename)->'QIcon': #px+cdef QPixmap pixmap from ..theme import Theme image = Theme.textures.image_from_file(filename) if image is None: return QIcon() else: width, height, data = image pixmap = QPixmap(width, height) pixmap.convertFromImage(QImage(data, width, height, Format_RGBA8888)) return QIcon(pixmap) #pxm>IF_END def keyval_from_name(keystr): keystr = '+'.join(('Num' if k == 'KP' else k) for k in keystr.split('+')) #px/cdef QKeySequence keyseq = fromString(str2q(keystr), PortableText) keyseq = fromString(keystr, PortableText) if keyseq.count() == 0: return 0 return keyseq[0] def get_pictures_folder(): #px/cdef QStringList locations = standardLocations(PicturesLocation) locations = standardLocations(PicturesLocation) #px/if locations.size() <= 0: if not locations: locations = standardLocations(HomeLocation) #px/if locations.size() <= 0: if not locations: return '' return q2str(locations[0]) def get_imagefile(facekey): imagefile = settings['theme.faces',facekey,'image'] currentfolder = get_pictures_folder() if imagefile.startswith('/'): currentfolder = os.path.dirname(imagefile) elif imagefile: imagefile = os.path.join(config_.UI_DIR, 'images', imagefile) return currentfolder, imagefile def text_to_html(text): return q2str(fromPlainText(str2q(text)).toHtml()) #pxm-FUNC P with gil def _on_filesystemwatcher_changed_1(qpath:str): if pydata.filesystemwatcher_path is not None: return pydata.filesystemwatcher_path = q2str(qpath) #px/singleShot(100, _on_filesystemwatcher_changed_2) QTimer.singleShot(100, _on_filesystemwatcher_changed_2) #pxm-FUNC P with gil def _on_filesystemwatcher_changed_2(): path = pydata.filesystemwatcher_path pydata.filesystemwatcher_path = None pydata.filesystemwatcher_handlers[path]() if os.path.isfile(path): uidata.filesystemwatcher.addPath(str2q(path)) def create_filesystemwatcher(path, callback): #px/cdef QString qpath = str2q(path) qpath = path if uidata.filesystemwatcher is NULL: #px/uidata.filesystemwatcher = new QFileSystemWatcher(NULL) uidata.filesystemwatcher = QFileSystemWatcher(None) #px/connect(uidata.filesystemwatcher, &directoryChanged, _on_filesystemwatcher_changed_1) uidata.filesystemwatcher.directoryChanged.connect(_on_filesystemwatcher_changed_1) #px/connect(uidata.filesystemwatcher, &fileChanged, _on_filesystemwatcher_changed_1) uidata.filesystemwatcher.fileChanged.connect(_on_filesystemwatcher_changed_1) pydata.filesystemwatcher_handlers[path] = callback uidata.filesystemwatcher.addPath(qpath) #XXX: avoid this function, only one active singleShot-handler #px+cdef void _on_singleShot() with gil: #px+pydata.singleshot_handler() #px+if pydata.singleshot_queue: #px+msec, pydata.singleshot_handler = pydata.singleshot_queue.pop(0) #px+singleShot(msec, _on_singleShot) #px+else: #px+pydata.singleshot_handler = None def timer_singleShot(msec, func): #px+if pydata.singleshot_handler is None: #px+pydata.singleshot_handler = func #px+singleShot(msec, _on_singleShot) #px+else: #px+pydata.singleshot_queue.append((msec, func)) #px- QTimer.singleShot(msec, func) #pxm-FUNC P with gil def _on_settings_timer_timeout(): pydata.app.on_settings_timer_timeout() #pxm-FUNC P def settings_timer_create(): #px/uidata.settings_timer = new QTimer() uidata.settings_timer = QTimer() uidata.settings_timer.setInterval(5000) uidata.settings_timer.setSingleShot(True) #px/connect(uidata.settings_timer, &timeout, _on_settings_timer_timeout) uidata.settings_timer.timeout.connect(_on_settings_timer_timeout) #pxm-FUNC P def settings_timer_start()->'cpdef': if not uidata.settings_timer.isActive(): uidata.settings_timer.start() #pxm-FUNC P def settings_timer_destroy(): uidata.settings_timer.stop() uidata.settings_timer.deleteLater() uidata.settings_timer = NULL def set_animation_speed(): #pxm>IF '[[QTVARIANT]]' == 'qtw' uidata.speed = settings['draw.speed'] #pxm>IF '[[QTVARIANT]]' == 'qtq' ctx_invoke(b'animation_speed_changed') #pxm>IF_END #pxm-FUNC P def animation_init(): #pxm>IF '[[QTVARIANT]]' == 'qtw' #px/uidata.animate_timer = new QTimer() uidata.animate_timer = QTimer() #uidata.animate_timer.setInterval(5000) #px/connect(uidata.animate_timer, &timeout, _on_animate_timer_timeout) uidata.animate_timer.timeout.connect(_on_animate_timer_timeout) #pxm>IF '[[QTVARIANT]]' == 'qtq' ctx_set(b'animation_running', False) #pxm>IF_END set_animation_speed() #pxm>IF '[[QTVARIANT]]' == 'qtw' #pxm-FUNC P with gil def _on_animate_timer_timeout(): #px+cdef float increment increment = uidata.speed * 1e-02 * 20 increment = min(increment, 45) uidata.animation_angle += increment glarea.set_animation_next(uidata.animation_angle) if uidata.animation_angle < uidata.angle_max: update_drawingarea() else: pydata.app.on_animation_ending() #pxm>IF_END #pxm-FUNC P def animate_timer_start(msec, angle_max)->'cpdef': #pxm>IF '[[QTVARIANT]]' == 'qtw' uidata.animation_angle = 0. uidata.angle_max = angle_max if not uidata.animate_timer.isActive(): uidata.animate_timer.start(msec) #pxm>IF '[[QTVARIANT]]' == 'qtq' ctx_set(b'animation_maxangle', angle_max) ctx_set(b'animation_running', True) #pxm>IF_END # only for demos def animate_timer_step(angle_max): #pxm>IF '[[QTVARIANT]]' == 'qtw' uidata.angle_max = angle_max _on_animate_timer_timeout() #pxm>IF_END pass def animate_timer_stop(): #pxm>IF '[[QTVARIANT]]' == 'qtw' uidata.animate_timer.stop() #pxm>IF '[[QTVARIANT]]' == 'qtq' ctx_set(b'animation_running', False) #pxm>IF_END #pxm>IF '[[QTVARIANT]]' == 'qtw' #pxm-FUNC P def animate_timer_destroy(): uidata.animate_timer.stop() uidata.animate_timer.deleteLater() uidata.animate_timer = NULL #pxm>IF_END #pxm-FUNC P def load_cursors(filepattern): #px/cdef QImage images[17] images = [None]*17 pos = [] # Load 3 cursors from file (n - ne) for i, (x, y) in enumerate([(8, 0), (15, 0), (15, 0)]): filename = filepattern.format(i) images[i+1] = QImage(str2q(filename)) pos.append((x, y)) # 1 cursor (nnw) x, y = pos[1] images[0] = images[2].mirrored(True, False) pos.insert(0, (15-x, y)) # 12 cursors (ene - nw) #px/cdef QTransform transform transform = QTransform() transform.rotate(90) for i in range(4, 16): x, y = pos[i-4] images[i] = images[i-4].transformed(transform) pos.append((15-y, x)) images[16] = images[0] pos.append(pos[0]) for i in range(16): x, y = pos[i+1] #px/uidata.cursors[i] = new QCursor(fromImage(images[i+1]), x, y) uidata.cursors[i] = QCursor(fromImage(images[i+1]), x, y) # cursor for center faces filename = filepattern.format('ccw') #px/uidata.cursors[16] = new QCursor(QPixmap(str2q(filename)), 7, 7) uidata.cursors[16] = QCursor(QPixmap(str2q(filename)), 7, 7) # background cursor #px/uidata.cursors[17] = new QCursor() uidata.cursors[17] = QCursor() uidata.cursors[17].setShape(Qt.CrossCursor) #pxm-FUNC P def destroy_cursors(): for i in range(18): #px+del uidata.cursors[i] uidata.cursors[i] = NULL #pxm-FUNC P def destroy_resources(): #pxm>IF '[[QTVARIANT]]' == 'qtw' uidata.drawingarea.makeCurrent() gl_delete_atlas() glarea.gl_exit() uidata.drawingarea.doneCurrent() uidata.drawingarea.setMouseTracking(False) #pxm>IF '[[QTVARIANT]]' == 'qtq' settings['window.size'] = uidata.mainwindow.width(), uidata.mainwindow.height() #pxm>IF_END def create_window(pyapp): pydata.app = pyapp init_module() # Set default format before any widget is created, so that everything uses the same format. # To test this use DEBUG_VFPS. The framerate should be then >60. set_default_surface_format() #pxm>IF '[[QTVARIANT]]' == 'qtw' #px/uidata.mainwindow = new MainView() uidata.mainwindow = MainView() #px/uidata.treestore = new QStandardItemModel() uidata.treestore = QStandardItemModel() #px/uidata.drawingarea = new DrawingArea() uidata.drawingarea = DrawingArea() qtui.setupUi_main(uidata.mainwindow, QIcon(str2q(os.path.join(config_.UI_DIR, 'qt', 'images', 'new-random.png'))), QIcon(str2q(os.path.join(config_.UI_DIR, 'qt', 'images', 'new-solved.png'))), QIcon(str2q(os.path.join(config_.UI_DIR, 'qt', 'images', 'select-model.png'))), QKeySequence(str2q(settings['action.edit_moves'])), QKeySequence(str2q(settings['action.edit_cube'])), settings['window.editbar'], settings['window.statusbar']) uidata.mainwindow.setWindowIcon(QIcon(str2q(config_.APPICON_FILE))) qtui.set_shortcuts(QKeySequence(str2q(settings['action.selectmodel'])), QKeySequence(str2q(settings['action.initial_state'])), QKeySequence(str2q(settings['action.reset_rotation'])), QKeySequence(str2q(settings['action.preferences'])), ) #px/uidata.move_edit = new MoveEdit() uidata.move_edit = MoveEdit() uidata.drawingarea.init() qtui.add_widgets(uidata.mainwindow, uidata.move_edit, uidata.drawingarea) #px/uidata.statuslabel = new QLabel() uidata.statuslabel = QLabel() uidata.mainwindow.statusBar().addWidget(uidata.statuslabel, 1) if debug & DEBUG_NOCONTROLS: qtui.hide_controls() #px+cdef QSizePolicy sizepolicy sizepolicy = QSizePolicy(Expanding, Expanding) sizepolicy.setHorizontalStretch(0) sizepolicy.setVerticalStretch(0) uidata.drawingarea.setSizePolicy(sizepolicy) #pxm>IF '[[QTVARIANT]]' == 'qtq' #px/uidata.engine = new QQmlEngine() uidata.engine = QQmlEngine() uidata.engine.setOutputWarningsToStandardError(False) #px/connect(uidata.engine, &warnings, print_warnings) uidata.engine.warnings.connect(print_warnings) #px/uidata.ctx = (new ContextProperty()) uidata.ctx = ContextProperty() uidata.engine.rootContext().setContextProperty(str2q('ctx'), uidata.ctx) if debug & DEBUG_QML: dump_info('Context Property', uidata.ctx) #px/uidata.mainwindow = new MainView(uidata.engine, NULL) uidata.mainwindow = MainView(uidata.engine, NULL) uidata.mainwindow.setResizeMode(SizeRootObjectToView) uidata.mainwindow.setTitle(str2q(_(config_.APPNAME))) #XXX: Maybe set to false and implement the relates signal handlers to be nice to system resources uidata.mainwindow.setPersistentOpenGLContext(True) uidata.mainwindow.connect_view() uidata.mainwindow.setClearBeforeRendering(False) #pxm>IF_END animation_init() settings_timer_create() load_cursors(os.path.join(config_.UI_DIR, 'cursors', 'mouse_{}.png')) def destroy_window(): destroy_cursors() settings_timer_destroy() #pxm>IF '[[QTVARIANT]]' == 'qtw' animate_timer_destroy() #pxm>IF_END pydata.app = None #pxm-FUNC P with gil def _on_init_finalize(): pydata.app.on_init_finalize() #pxm>IF '[[QTVARIANT]]' == 'qtq' #pxm-FUNC P with gil def _on_closing(): destroy_resources() pydata.app.on_closing() pydata.app = None #pxm>IF_END def app_post_create(gettext): #px/cdef QApplication *app = QCoreApplication_instance() app = QCoreApplication.instance() # font #px+cdef QFont font try: uidata.grid_unit_px = float(os.environ['GRID_UNIT_PX']) / 8 except (KeyError, ValueError): uidata.grid_unit_px = 1. fontpixelsize = 14.0 else: # On the Ubuntu phone the default font is broken without Ubuntu.Components imported font = app.font() # Default in ubuntu-ui-toolkit: fontUnits = 14.0f (to small, use 18.0), DEFAULT_GRID_UNIT_PX = 8 #TODO: use QWindow.devicePixelRatio fontpixelsize = 18.0 * uidata.grid_unit_px / app.devicePixelRatio() font.setFamily(str2q("Ubuntu")) font.setPixelSize(int(fontpixelsize)) font.setWeight(50) app.setFont(font) global _ _ = gettext #pxm>IF '[[QTVARIANT]]' == 'qtw' qtui.init_gettext(_) #pxm>IF_END #pxm>IF '[[QTVARIANT]]' == 'qtq' # variant 'qtw' uses closeEvent instead #px/connect(app, &aboutToQuit, app, &_on_closing, Qt.DirectConnection) app.aboutToQuit.connect(_on_closing, type=Qt.DirectConnection) #pxm>IF_END pybik-3.0/pybiklib/ext/qtui.py0000644000175000017500000012331713171571356016621 0ustar barccbarcc00000000000000# -*- coding: utf-8 -*- # cython: profile=False # Copyright © 2017 B. Clausius # # 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 . # pylint: disable=C0326,W0614 # although this file is compiled with Python3 syntax, Cython needs at least division from __future__ from __future__ import print_function, division # This line makes cython happy global __name__, __package__ # pylint: disable=W0604 #px/__compiled = True __compiled = False #pxd/from qt cimport * from .debug_purepython import * #pxh>#include #pxh>QString gettext_translate(const char *text, const char *disambiguation); #pxh>#include "../../data/ui/qt/main.h" #pxh>#include "../../data/ui/qt/preferences.h" #pxh>#include "../../data/ui/qt/help.h" #pxh>#include "../../data/ui/qt/about.h" #pxh>#include #pxh>#include #pxh>#include #pxh>#include #pxh>#include #pxh>#include #pxh>#include #pxh>#include #pxh>#include #pxh>#include #pxh>#include #pxh>#include #pxh>#include #pxh>#include #pxh>#include #pxh> #pxc>#include "[[_qtui_VARIANT]]_moc.h" #pxc>#include "qtui_p.h" #pxc> #px/from libc.stdio cimport printf def printf(fmt, *args): print(fmt % args, end='') #px/from libc.stdio cimport puts puts = print #px/cdef enum: # if True: DEBUG_MSGEXT = 0x1 DEBUG_DRAW = 0x2 DEBUG_FPS = 0x4 #px+cdef long debug debug = 0 def set_debug_flags(module): global debug if module.DEBUG_MSGEXT: debug |= DEBUG_MSGEXT if module.DEBUG_DRAW: debug |= DEBUG_DRAW if module.DEBUG_FPS: debug |= DEBUG_FPS #pxm-FUNC PD def init_module(): if debug & DEBUG_MSGEXT: print('init module:', __name__) print(' from package:', __package__) print(' compiled:', __compiled) #px+cdef extern from "[[_qtui_VARIANT]]_moc.h":# #pxm>INDENT #px+cdef QString gettext_translate(const char *text, const char *disambiguation) with gil #pxm-QC_CPPCLASS class ShortcutEditor (QLabel): class ShortcutEditor (QLabel): #pxh>QString *key; #pxh> #pxm-FUNC CH def __init__(parent:'QWidget *'): _("Press a key …") #pxc> : QLabel(gettext_translate("Press a key …", Q_NULLPTR), parent) #pxc>{ #pxc> setFocusPolicy(Qt::StrongFocus); #pxc> setAutoFillBackground(true); #pxc>} #pxc> #pxh>Q_SIGNAL void key_pressed(); #pxh> #pxm-FUNC CH def keyPressEvent(event:'QKeyEvent *'): pass #pxc>{ #pxc> switch (event->key()) { #pxc> case Qt::Key_Shift: case Qt::Key_Control: case Qt::Key_Meta: #pxc> case Qt::Key_Alt: case Qt::Key_AltGr: #pxc> case Qt::Key_CapsLock: case Qt::Key_NumLock: case Qt::Key_ScrollLock: #pxc> QLabel::keyPressEvent(event); #pxc> return; #pxc> } #pxc> if (event->count() != 1) { #pxc> QLabel::keyPressEvent(event); #pxc> return; #pxc> } #pxc> int mod = event->modifiers() & (Qt::ShiftModifier | Qt::ControlModifier); #pxc> QStringList keylist = QKeySequence(event->key() | int(mod)).toString().split('+'); #pxc> if ((event->modifiers() & Qt::KeypadModifier) && !keylist.contains(QStringLiteral("Num"))) #pxc> keylist.insert(keylist.size()-1, "Num"); #pxc> key = new QString(keylist.join('+')); #pxc> key_pressed(); #pxc>} #pxm>CPPCLASS_END #pxm-QC_CPPCLASS class ShortcutDelegate (QStyledItemDelegate): class ShortcutDelegate (QStyledItemDelegate): #pxh>ShortcutDelegate(QObject *parent) : QStyledItemDelegate(parent) {} #pxh> #pxm-FUNC CH const def createEditor(parent:'QWidget *', option:'const QStyleOptionViewItem &', index:'const QModelIndex &')->'QWidget *': pass #pxc>{ #pxc> ShortcutEditor *editor = new ShortcutEditor(parent); #pxc> connect(editor, SIGNAL(key_pressed()), this, SLOT(on_editor_key_pressed())); #pxc> return editor; #pxc>} #pxc> #pxh>void setEditorData(QWidget *editor, const QModelIndex &index) const {} #pxc> #pxm-FUNC CH const def setModelData(editor:'QWidget *', model:'QAbstractItemModel *', index:'const QModelIndex &'): pass #pxc>{ #pxc> if (((ShortcutEditor*)editor)->key != NULL) { #pxc> QVariant value(*((ShortcutEditor*)editor)->key); #pxc> model->setData(index, value, Qt::DisplayRole); #pxc> } #pxc>} #pxc> #pxh> #pxm-FUNC CH def slot_on_editor_key_pressed(): pass #pxc>{ #pxc> QWidget *editor = (QWidget*)this->sender(); #pxc> this->commitData(editor); #pxc> this->closeEditor(editor, QAbstractItemDelegate::NoHint); #pxc>} #pxm>CPPCLASS_END #pxm-C_CPPCLASS class ColorIconEngine (QIconEngine): class ColorIconEngine (QIconEngine): #pxh>QString color; #pxh> #pxh>ColorIconEngine() : QIconEngine(), color(QStringLiteral("black")) {} #pxh> #pxm-FUNC CH def paint(painter:'QPainter *', rect:'const QRect &', mode:'QIcon::Mode', state:'QIcon::State'): pass #pxc>{ painter->fillRect(rect, QColor(this->color)); } #pxm-FUNC CH const def clone()->'ColorIconEngine *': pass #pxc>{ #pxc> ColorIconEngine *cloned = new ColorIconEngine(); #pxc> cloned->color = color; #pxc> return cloned; #pxc>} #pxm>CPPCLASS_END #pxm-CPPCLASS class UIContainer: #pxh>Ui::MainWindow ui_main; #pxh>QLabel *label_selectmodel; #pxh>int active_plugin_group; #pxh>Ui::DialogPreferences ui_pref; #pxh>QStandardItemModel *liststore_movekeys; #pxh>QStandardItemModel *liststore_faces; #pxh>int liststore_faces_width; #pxh>ColorIconEngine *iconengine_color; #pxh>ColorIconEngine *iconengine_background_color; #pxh>Ui::DialogHelp ui_help; #pxh>Ui::AboutDialog ui_about; #pxh>int index_tab_about; #pxh>int index_tab_license; #pxh>QScrollBar *scrollbar; #pxh>QPropertyAnimation animation; #pxh> #pxm-FUNC CHP nogil def setupUi_main(window:'QMainWindow *', icon1:1, icon2:1, icon3:'const QIcon &', key1:1, key2:'const QKeySequence &'): pass #pxc>{ #pxc>// actions that belongs to no widget #pxc>QAction *action_jump_to_editbar = new QAction(window); #pxc>action_jump_to_editbar->setObjectName("action_jump_to_editbar"); #pxc>action_jump_to_editbar->setShortcut(key1); #pxc>window->addAction(action_jump_to_editbar); #pxc>QAction *action_edit_cube = new QAction(window); #pxc>action_edit_cube->setObjectName("action_edit_cube"); #pxc>action_edit_cube->setShortcut(key2); #pxc>window->addAction(action_edit_cube); #pxc>// Qt Designer code #pxc>ui_main.setupUi(window); #pxc>// ... #pxc>ui_main.splitter->setCollapsible(0, false); #pxc>ui_main.splitter->setStretchFactor(0, 1); #pxc>ui_main.splitter->setStretchFactor(1, 0); #pxc>ui_main.listwidget->setItemDelegate(new ModelSelectionItemDelegate()); #pxc>// set icons #pxc>ui_main.button_edit_exec->setIcon(QIcon::fromTheme("system-run")); #pxc>ui_main.button_edit_clear->setIcon(QIcon::fromTheme("edit-clear")); #pxc>ui_main.action_challenge->setIcon(icon1); #pxc>ui_main.action_new_solved->setIcon(icon2); #pxc>ui_main.action_quit->setIcon(QIcon::fromTheme("application-exit")); #pxc>ui_main.action_rewind->setIcon(QIcon::fromTheme("media-seek-backward")); #pxc>ui_main.action_previous->setIcon(QIcon::fromTheme("media-skip-backward")); #pxc>ui_main.action_stop->setIcon(QIcon::fromTheme("media-playback-stop")); #pxc>ui_main.action_play->setIcon(QIcon::fromTheme("media-playback-start")); #pxc>ui_main.action_next->setIcon(QIcon::fromTheme("media-skip-forward")); #pxc>ui_main.action_forward->setIcon(QIcon::fromTheme("media-seek-forward")); #pxc>ui_main.action_mark_set->setIcon(QIcon::fromTheme("list-add")); #pxc>ui_main.action_mark_remove->setIcon(QIcon::fromTheme("list-remove")); #pxc>ui_main.action_selectmodel->setIcon(icon3); #pxc>ui_main.action_selectmodel_back->setIcon(QIcon::fromTheme("back")); #pxc>ui_main.action_preferences->setIcon(QIcon::fromTheme("document-properties")); #pxc>ui_main.action_info->setIcon(QIcon::fromTheme("help-about")); #pxc>ui_main.action_help->setIcon(QIcon::fromTheme("help")); #pxc>// widgets that are not created with Qt Designer: toolbar_play #pxc>ui_main.toolbar_play->addAction(ui_main.action_selectmodel); #pxc>ui_main.toolbar_play->addAction(ui_main.action_new_solved); #pxc>ui_main.toolbar_play->addAction(ui_main.action_challenge); #pxc>ui_main.toolbar_play->addSeparator(); #pxc>ui_main.toolbar_play->addAction(ui_main.action_rewind); #pxc>ui_main.toolbar_play->addAction(ui_main.action_previous); #pxc>ui_main.toolbar_play->addAction(ui_main.action_stop); #pxc>ui_main.toolbar_play->addAction(ui_main.action_play); #pxc>ui_main.toolbar_play->addAction(ui_main.action_next); #pxc>ui_main.toolbar_play->addAction(ui_main.action_forward); #pxc>ui_main.toolbar_play->addAction(ui_main.action_mark_set); #pxc>ui_main.toolbar_play->addAction(ui_main.action_mark_remove); #pxc>// …: toolbar_selectmodel #pxc>ui_main.toolbar_selectmodel->addAction(ui_main.action_selectmodel_back); #pxc>label_selectmodel = new QLabel(); #pxc>ui_main.toolbar_selectmodel->addWidget(label_selectmodel); #pxc>ui_main.toolbar_selectmodel->setVisible(false); #pxc>// …: toolbar_common #pxc>QWidget *spacer = new QWidget(); #pxc>spacer->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); #pxc>ui_main.toolbar_common->addWidget(spacer); #pxc>// …: menu button #pxc>QToolButton *menubutton = new QToolButton(window); #pxc>menubutton->setIcon(QIcon::fromTheme("format-justify-fill")); //XXX: hmm #pxc>menubutton->setPopupMode(QToolButton::InstantPopup); #pxc>QMenu *menu = new QMenu(menubutton); #pxc>menu->addAction(ui_main.action_initial_state); #pxc>menu->addAction(ui_main.action_reset_rotation); #pxc>menu->addSeparator(); #pxc>menu->addAction(ui_main.action_editbar); #pxc>menu->addAction(ui_main.action_statusbar); #pxc>menu->addSeparator(); #pxc>menu->addAction(ui_main.action_preferences); #pxc>menu->addAction(ui_main.action_help); #pxc>menu->addAction(ui_main.action_info); #pxc>menu->addSeparator(); #pxc>menu->addAction(ui_main.action_quit); #pxc>menubutton->setMenu(menu); #pxc>ui_main.toolbar_common->addWidget(menubutton); #pxc>// add action to main window for shortcuts #pxc>window->addAction(ui_main.action_challenge); #pxc>window->addAction(ui_main.action_new_solved); #pxc>window->addAction(ui_main.action_quit); #pxc>window->addAction(ui_main.action_selectmodel); #pxc>window->addAction(ui_main.action_initial_state); #pxc>window->addAction(ui_main.action_reset_rotation); #pxc>window->addAction(ui_main.action_preferences); #pxc>window->addAction(ui_main.action_statusbar); #pxc>window->addAction(ui_main.action_info); #pxc>window->addAction(ui_main.action_rewind); #pxc>window->addAction(ui_main.action_rewind); #pxc>window->addAction(ui_main.action_previous); #pxc>window->addAction(ui_main.action_previous); #pxc>window->addAction(ui_main.action_stop); #pxc>window->addAction(ui_main.action_stop); #pxc>window->addAction(ui_main.action_play); #pxc>window->addAction(ui_main.action_play); #pxc>window->addAction(ui_main.action_next); #pxc>window->addAction(ui_main.action_next); #pxc>window->addAction(ui_main.action_forward); #pxc>window->addAction(ui_main.action_forward); #pxc>window->addAction(ui_main.action_mark_set); #pxc>window->addAction(ui_main.action_mark_set); #pxc>window->addAction(ui_main.action_mark_remove); #pxc>window->addAction(ui_main.action_mark_remove); #pxc>window->addAction(ui_main.action_editbar); #pxc>window->addAction(ui_main.action_help); #pxc>window->addAction(ui_main.action_help); #pxc>// rest #pxc>disable_tooltips(); #pxc>active_plugin_group = 0; #pxc>} #pxm-FUNC CHP def disable_tooltips(): pass #pxc>{ #pxc>//pita: If a action has no tooltip, the appropriate toolbutton uses the actions text for the tooltip. #pxc>// To remove tooltips you have to remove the tooltips for the appropriate toolbutton, #pxc>// but every time you change something on the action, the button will recreate the tooltip #pxc>ui_main.toolbar_play->widgetForAction(ui_main.action_rewind)->setToolTip(QStringLiteral("")); #pxc>ui_main.toolbar_play->widgetForAction(ui_main.action_previous)->setToolTip(QStringLiteral("")); #pxc>ui_main.toolbar_play->widgetForAction(ui_main.action_stop)->setToolTip(QStringLiteral("")); #pxc>ui_main.toolbar_play->widgetForAction(ui_main.action_play)->setToolTip(QStringLiteral("")); #pxc>ui_main.toolbar_play->widgetForAction(ui_main.action_next)->setToolTip(QStringLiteral("")); #pxc>ui_main.toolbar_play->widgetForAction(ui_main.action_forward)->setToolTip(QStringLiteral("")); #pxc>} #pxm-FUNC CHP def set_shortcuts(key1:1, key2:1, key3:1, key4:'const QKeySequence &'): pass #pxc>{ #pxc>ui_main.action_selectmodel->setShortcut(key1); #pxc>ui_main.action_initial_state->setShortcut(key2); #pxc>ui_main.action_reset_rotation->setShortcut(key3); #pxc>ui_main.action_preferences->setShortcut(key4); #pxc>} #pxm-FUNC CHP def add_widgets(window:'QMainWindow *', edit:'QLineEdit *', drawing:'QOpenGLWidget *'): pass #pxc>{ #pxc>edit->setObjectName("edit_moves"); #pxc>edit->setFrame(false); #pxc>ui_main.layout_moves->insertWidget(1, edit); #pxc>drawing->setObjectName("drawingarea"); #pxc>ui_main.verticalLayout->addWidget(drawing); #pxc>window->setTabOrder(edit, drawing); #pxc>window->setTabOrder(drawing, ui_main.box_sidepane); #pxc>drawing->setFocus(Qt::OtherFocusReason); #pxc>} #pxm-FUNC CHP nogil def set_toolbar_visible(visible:bool): pass #pxc>{ ui_main.toolbar_play->setVisible(visible); } #pxm-FUNC CHP nogil def set_frame_editbar_visible(visible:bool): pass #pxc>{ ui_main.frame_editbar->setVisible(visible); } #pxm-FUNC CHP nogil def set_statusbar_visible(visible:bool): pass #pxc>{ ui_main.statusbar->setVisible(visible); } #pxm-FUNC CHP nogil def hide_controls(): pass #pxc>{ #pxc>ui_main.toolbar_play->setVisible(false); #pxc>ui_main.toolbar_common->setVisible(false); #pxc>ui_main.frame_editbar->setVisible(false); #pxc>ui_main.statusbar->setVisible(false); #pxc>ui_main.box_sidepane->setVisible(false); #pxc>} #pxm-FUNC CHP nogil def set_visible(debug_text_visible:bool, editbar_visible:bool, statusbar_visible:bool): pass #pxc>{ #pxc>ui_main.label_debug_text->setVisible(debug_text_visible); #pxc>ui_main.action_editbar->setChecked(editbar_visible); #pxc>ui_main.action_statusbar->setChecked(statusbar_visible); #pxc>ui_main.frame_editbar->setVisible(editbar_visible); #pxc>ui_main.statusbar->setVisible(statusbar_visible); #pxc>} #pxm-FUNC CHP nogil def get_splitter_sizes(s1:'int &', s2:'int &'): pass #pxc>{ #pxc>QList list(ui_main.splitter->sizes()); #pxc>s1 = list.at(0); #pxc>s2 = list.at(1); #pxc>} #pxm-FUNC CHP nogil def set_splitter_sizes(s1:int, s2:int): pass #pxc>{ #pxc>QList list; #pxc>list.append(s1); #pxc>list.append(s2); #pxc>ui_main.splitter->setSizes(list); #pxc>} #pxm-FUNC CHP nogil def splitter_update_minimumsize(): pass #pxc>{ #pxc>int w0, w1; #pxc>get_splitter_sizes(w0, w1); #pxc>QSize s0 = ui_main.splitter->widget(0)->minimumSizeHint(); #pxc>QSize s1 = ui_main.splitter->widget(1)->minimumSizeHint(); #pxc>int w = s0.width() + ui_main.splitter->handleWidth(); #pxc>int h = std::max(s0.height(), s1.height()); #pxc>w += w1==0 ? 6 : s1.width(); #pxc>ui_main.splitter->setMinimumSize(w, h); #pxc>} #pxm-FUNC CHP nogil def set_debug_text(text:str): pass #pxc>{ ui_main.label_debug_text->setText(text); } #pxm-FUNC CHP nogil def set_toolbar_state(a:int, b:int, c:int, d:int, e:int): pass #pxc>{ #pxc>ui_main.action_rewind->setEnabled(a); #pxc>ui_main.action_previous->setEnabled(a); #pxc>ui_main.action_play->setEnabled(b); #pxc>ui_main.action_next->setEnabled(b); #pxc>ui_main.action_forward->setEnabled(b); #pxc>ui_main.action_mark_set->setEnabled(c); #pxc>ui_main.action_mark_remove->setEnabled(c); #pxc>ui_main.action_stop->setVisible(d); #pxc>ui_main.action_play->setVisible(!d); #pxc>ui_main.action_mark_set->setVisible(e); #pxc>ui_main.action_mark_remove->setVisible(!e); #pxc>disable_tooltips(); #pxc>} #pxm-FUNC CHP nogil def clear_sidepane(): pass #pxc>{ #pxc>QLayoutItem *child; #pxc>while ((child = ui_main.layout_sidepane->takeAt(0)) != 0) { #pxc>delete child; #pxc>} #pxc>} #pxm-FUNC CHP nogil def create_sidepane_button(text:str)->'QPushButton *': pass #pxc>{ #pxc>QPushButton *button = new QPushButton(ui_main.box_sidepane); #pxc>button->setText(text); #pxc>button->setFlat(true); #pxc>button->setFocusPolicy(Qt::TabFocus); #pxc>ui_main.layout_sidepane->addWidget(button); #pxc>return button; #pxc>} #pxm-FUNC CHP nogil def create_sidepane_treeview(treestore:'QStandardItemModel *', i:int)->'QTreeView *': pass #pxc>{ #pxc>QTreeView *treeview = new QTreeView(ui_main.box_sidepane); #pxc>treeview->setFrameShape(QFrame::NoFrame); #pxc>treeview->setEditTriggers(QAbstractItemView::NoEditTriggers); #pxc>treeview->setUniformRowHeights(true); #pxc>treeview->setAnimated(true); #pxc>treeview->setHeaderHidden(true); #pxc>treeview->hide(); #pxc>treeview->setModel(treestore); #pxc>treeview->setRootIndex(treestore->index(i, 0)); #pxc>ui_main.layout_sidepane->addWidget(treeview); #pxc>return treeview; #pxc>} #pxm-FUNC CHP nogil def set_active_plugin_group(i:int): pass #pxc>{ #pxc>QLayoutItem *item_treeview; #pxc>if (i == -1) i = active_plugin_group; #pxc>item_treeview = ui_main.layout_sidepane->itemAt(active_plugin_group*2+1); #pxc>if (item_treeview != NULL) #pxc>item_treeview->widget()->hide(); #pxc>item_treeview = ui_main.layout_sidepane->itemAt(i*2+1); #pxc>if (item_treeview != NULL) #pxc>item_treeview->widget()->show(); #pxc>active_plugin_group = i; #pxc>} #pxm-FUNC CHP nogil def set_active_plugin_group_by_obj(obj:'QObject *'): pass #pxc>{ #pxc>int i = ui_main.layout_sidepane->indexOf((QWidget*)obj); #pxc>this->set_active_plugin_group(i/2); #pxc>} #pxm-FUNC CHP nogil def get_plugin_group_count()->int: pass #pxc>{ return ui_main.layout_sidepane->count() / 2; } #pxm-FUNC CHP nogil def root_index(i:int)->'QModelIndex': pass #pxc>{ return ((QTreeView*)ui_main.layout_sidepane->itemAt(i*2+1)->widget())->rootIndex(); } #pxm-FUNC CHP nogil def hide_row(i:int, hide:bool): pass #pxc>{ #pxc>QWidget *button = ui_main.layout_sidepane->itemAt(i*2)->widget(); #pxc>if (hide) { #pxc> button->hide(); #pxc> if (i == active_plugin_group) set_active_plugin_group(0); #pxc>} else { #pxc> button->show(); #pxc>} #pxc>} #pxm-FUNC CHP nogil def set_row_hidden(i:int, row:int, index:'const QModelIndex &', hide:bool): pass #pxc>{ ((QTreeView*)ui_main.layout_sidepane->itemAt(i*2+1)->widget())->setRowHidden(row, index, hide); } #pxm-FUNC CHP nogil def splitter_pos()->int: pass #pxc>{ return ui_main.splitter->sizes()[0]; } #pxh>// #### #pxm-FUNC CHP nogil def setupUi_pref(window:'QDialog *', speed:int, speed_min:int, speed_max:int, mirror_min:int, mirror_max:int, _movekeys:'QStandardItemModel *'): pass #pxc>{ #pxc>liststore_movekeys = _movekeys; #pxc>liststore_movekeys->setObjectName("liststore_movekeys"); #pxc>liststore_faces = new QStandardItemModel(window); #pxc>liststore_faces->setObjectName("liststore_faces"); #pxc> #pxc>ui_pref.setupUi(window); #pxc> #pxc>ui_pref.button_animspeed_reset->setIcon(QIcon::fromTheme("edit-clear")); #pxc>ui_pref.button_shader_reset->setIcon(QIcon::fromTheme("edit-clear")); #pxc>ui_pref.button_antialiasing_reset->setIcon(QIcon::fromTheme("edit-clear")); #pxc>ui_pref.button_mirror_faces_reset->setIcon(QIcon::fromTheme("edit-clear")); #pxc>ui_pref.button_movekey_add->setIcon(QIcon::fromTheme("list-add")); #pxc>ui_pref.button_movekey_remove->setIcon(QIcon::fromTheme("list-remove")); #pxc>ui_pref.button_movekey_reset->setIcon(QIcon::fromTheme("document-revert")); #pxc>ui_pref.button_color_reset->setIcon(QIcon::fromTheme("edit-clear")); #pxc>ui_pref.button_image_reset->setIcon(QIcon::fromTheme("edit-clear")); #pxc>ui_pref.button_background_color_reset->setIcon(QIcon::fromTheme("edit-clear")); #pxc> #pxc>ui_pref.buttonBox->button(QDialogButtonBox::Close)->setDefault(true); #pxc>ui_pref.label_needs_restarted->setVisible(false); #pxc>QPalette pal(ui_pref.label_needs_restarted->palette()); #pxc>pal.setColor(QPalette::WindowText, QColor(170, 0, 0)); #pxc>ui_pref.label_needs_restarted->setPalette(pal); #pxc> #pxc>// graphic tab #pxc>ui_pref.slider_animspeed->setRange(speed_min, speed_max); #pxc>ui_pref.slider_animspeed->setValue(speed); #pxc>ui_pref.spinbox_mirror_faces->setRange(mirror_min, mirror_max); #pxc> #pxc>// keys tab #pxc>liststore_movekeys->setColumnCount(2); #pxc>ui_pref.listview_movekeys->setModel(liststore_movekeys); #pxc>ShortcutDelegate *shortcut_delegate = new ShortcutDelegate(ui_pref.listview_movekeys); #pxc>ui_pref.listview_movekeys->setItemDelegateForColumn(1, shortcut_delegate); #pxc> #pxc>// theme tab #pxc>liststore_faces_width = 30; #pxc>iconengine_color = new ColorIconEngine(); #pxc>ui_pref.button_color->setIcon(QIcon(iconengine_color)); #pxc>int height = ui_pref.button_color->iconSize().height(); #pxc>ui_pref.button_color->setIconSize( #pxc> QSize(height * ui_pref.button_color->width() / ui_pref.button_color->height(), height)); #pxc>ui_pref.button_color->setText(QStringLiteral("")); #pxc>iconengine_background_color = new ColorIconEngine(); #pxc>ui_pref.button_background_color->setIcon(QIcon(iconengine_background_color)); #pxc>height = ui_pref.button_background_color->iconSize().height(); #pxc>ui_pref.button_background_color->setIconSize( #pxc> QSize(height * ui_pref.button_background_color->width() / ui_pref.button_background_color->height(), height)); #pxc>ui_pref.button_background_color->setText(QStringLiteral("")); #pxc>} #pxm-FUNC CHP nogil def preferences_block_signals(block:bool): pass #pxc>{ #pxc>ui_pref.combobox_shader->blockSignals(block); #pxc>ui_pref.combobox_samples->blockSignals(block); #pxc>liststore_movekeys->blockSignals(block); #pxc>} #pxm-FUNC CHP nogil def combobox_add_shaderitem(name:str, nick:str): pass #pxc>{ ui_pref.combobox_shader->addItem(name, nick); } #pxm-FUNC CHP nogil def combobox_add_samplesitem(name:str, nick:str): pass #pxc>{ ui_pref.combobox_samples->addItem(name, nick); } #pxm-FUNC CHP nogil def add_movekey_row(): pass #pxc>{ #pxc>int row = ui_pref.listview_movekeys->currentIndex().row(); #pxc>liststore_movekeys->insertRow(row); #pxc>liststore_movekeys->setItem(row, 0, new QStandardItem("")); #pxc>liststore_movekeys->setItem(row, 1, new QStandardItem("")); #pxc>QModelIndex index = liststore_movekeys->index(row, 0); #pxc>ui_pref.listview_movekeys->setCurrentIndex(index); #pxc>ui_pref.listview_movekeys->edit(index); #pxc>} #pxm-FUNC CHP nogil def remove_movekey_row(): pass #pxc>{ #pxc>int row = ui_pref.listview_movekeys->currentIndex().row(); #pxc>liststore_movekeys->takeRow(row); #pxc>} #pxm-FUNC CHP nogil def add_liststore_faces_row(name:str, key:str): pass #pxc>{ #pxc>QStandardItem *item = new QStandardItem(name); #pxc>item->setData(QVariant(key)); #pxc>liststore_faces->appendRow(item); #pxc>//XXX: workaround, listview_faces should automatically set to the correct width #pxc>QFontMetrics fm(ui_pref.listview_faces->font()); #pxc>int width = fm.width(name) + 20; // 20 for the scroll bar #pxc>if (liststore_faces_width < width) liststore_faces_width = width; #pxc>} #pxm-FUNC CHP nogil def finalize_liststore_faces(window:'QWidget *'): pass #pxc>{ #pxc>ui_pref.listview_faces->setMaximumWidth(liststore_faces_width); #pxc>ui_pref.listview_faces->setModel(liststore_faces); #pxc>QObject::connect(ui_pref.listview_faces->selectionModel(), #pxc> SIGNAL(currentRowChanged(const QModelIndex &, const QModelIndex &)), #pxc> window, #pxc> SLOT(_on_listview_faces_currentRowChanged(const QModelIndex &))); #pxc>ui_pref.listview_faces->setCurrentIndex(liststore_faces->index(0, 0)); #pxc>} #pxm-FUNC CHP nogil def get_liststore_faces_facekey(index:'const QModelIndex &')->str: pass #pxc>{ return liststore_faces->itemFromIndex(index)->data().toString(); } #pxm-FUNC CHP nogil def set_button_color(color:str): pass #pxc>{ #pxc>iconengine_color->color = color; #pxc>ui_pref.button_color->update(); #pxc>} #pxm-FUNC CHP nogil def color_dialog(parent:'QWidget *', color:str)->str: pass #pxc>{ #pxc>QColorDialog dialog(parent); #pxc>dialog.setOption(QColorDialog::DontUseNativeDialog); #pxc>dialog.setCurrentColor(QColor(color)); #pxc>if (dialog.exec() == QDialog::Accepted) #pxc>return dialog.currentColor().name(); #pxc>return QString(); #pxc>} #pxm-FUNC CHP nogil def set_imagemode(imagemode:int): pass #pxc>{ #pxc>if (imagemode == 0) #pxc>ui_pref.radiobutton_tiled->setChecked(true); #pxc>else if (imagemode == 1) #pxc>ui_pref.radiobutton_mosaic->setChecked(true); #pxc>} #pxm-FUNC CHP nogil def add_combobox_image_item(icon:'const QIcon &', text:str, filename:str): pass #pxc>{ ui_pref.combobox_image->addItem(icon, text, filename); } #pxm-FUNC CHP nogil def set_combobox_image(index_icon:int, icon:'const QIcon &', index:int): pass #pxc>{ #pxc>ui_pref.combobox_image->setItemIcon(index_icon, icon); #pxc>if (index >= 0) ui_pref.combobox_image->setCurrentIndex(index); #pxc>} #pxh> #pxm-FUNC CHP nogil def set_button_background_color(color:str): pass #pxc>{ #pxc>iconengine_background_color->color = color; #pxc>ui_pref.button_background_color->update(); #pxc>} #pxm-FUNC CHP nogil def fill_page(items:'QVariant', title:str): pass #pxc>{ #pxc>ui_main.listwidget->clear(); #pxc>QList list = items.value >(); #pxc>for (int i=0; i < list.size(); ++i) { #pxc>QObject *obj = list.at(i); #pxc>QString text = obj->property("text").value(); #pxc>QString filename = obj->property("key").value(); #pxc>QListWidgetItem *item = new QListWidgetItem(QIcon(filename), text); #pxc>item->setTextAlignment(Qt::AlignHCenter | Qt::AlignBottom); #pxc>ui_main.listwidget->addItem(item); #pxc>} #pxc>label_selectmodel->setText(title); #pxc>} #pxm-FUNC CHP nogil def set_page(i:int): pass #pxc>{ #pxc>ui_main.stackedwidget->setCurrentIndex(i); #pxc>ui_main.toolbar_play->setVisible(i==0); #pxc>ui_main.toolbar_selectmodel->setVisible(i!=0); #pxc>} #pxm-FUNC CHP nogil def setupUi_help(window:'QDialog *', helptext:str): pass #pxc>{ #pxc>ui_help.setupUi(window); #pxc>ui_help.text_help->setHtml(helptext); #pxc>} #pxm-FUNC CHP nogil def setupUi_about(window:'QDialog *'): pass #pxc>{ #pxc>ui_about.setupUi(window); #pxc>index_tab_about = ui_about.tab_widget->indexOf(ui_about.tab_about); #pxc>index_tab_license = ui_about.tab_widget->indexOf(ui_about.tab_license); #pxc>// About tab animation #pxc>scrollbar = ui_about.text_translators->verticalScrollBar(); #pxc>animation.setTargetObject(scrollbar); #pxc>animation.setPropertyName(QByteArray("value")); #pxc>animation.setLoopCount(-1); #pxc>ui_about.text_translators->viewport()->installEventFilter(window); #pxc>} #pxm-FUNC CHP nogil def fill_header(fileName:str, appname:str, version:str, desc:str): pass #pxc>{ #pxc>ui_about.label_icon->setPixmap(QPixmap(fileName)); #pxc>ui_about.label_appname->setText(appname); #pxc>ui_about.label_version->setText(version); #pxc>ui_about.label_description->setText(desc); #pxc>} #pxm-FUNC CHP nogil def fill_about_tab(copyr:str, website:str, translators:str): pass #pxc>{ #pxc>ui_about.label_copyright->setText(copyr); #pxc>ui_about.label_website->setText(website); #pxc>ui_about.text_translators->setHtml(translators); #pxc>} #pxm-FUNC CHP nogil def fill_contribute_tab(contribute:str): pass #pxc>{ ui_about.label_contribute->setText(contribute); } #pxm-FUNC CHP nogil def fill_license_tab(license_short:str, license_notfound:bool, license_full:str): pass #pxc>{ #pxc>ui_about.text_license_short->hide(); #pxc>ui_about.text_license_full->hide(); #pxc>ui_about.text_license_short->setHtml(license_short); #pxc>if (license_notfound) ui_about.text_license_full->setLineWrapMode(QTextEdit::WidgetWidth); #pxc>ui_about.text_license_full->setHtml(license_full); #pxc>} #pxm-FUNC CHP nogil def tab_widget_currentChanged(index:int): pass #pxc>{ #pxc>if (index == index_tab_about) { #pxc>animation.resume(); #pxc>scrollbar->hide(); #pxc>} else { #pxc>animation.pause(); #pxc>scrollbar->show(); #pxc>} #pxc>if (index == index_tab_license) { #pxc>ui_about.text_license_short->setVisible(true); #pxc>ui_about.text_license_full->setVisible(false); #pxc>} #pxc>} #pxm-FUNC CHP nogil def update_animation(first:bool): pass #pxc>{ #pxc>int smin, smax; #pxc>if (first and animation.state() != QAbstractAnimation::Stopped) return; #pxc>smin = scrollbar->minimum(); #pxc>smax = scrollbar->maximum(); #pxc>if (smax > smin) { #pxc>animation.setDuration((smax-smin) * 40); #pxc>animation.setKeyValueAt(0., smin); #pxc>animation.setKeyValueAt(0.04, smin); #pxc>animation.setKeyValueAt(0.50, smax); #pxc>animation.setKeyValueAt(0.54, smax); #pxc>animation.setKeyValueAt(1., smin); #pxc>} #pxc>if (first) { #pxc>scrollbar->hide(); #pxc>animation.start(); #pxc>} #pxc>} #pxm-FUNC CHP nogil def event_filter_stop_animation(event:'QEvent *'): pass #pxc>{ #pxc>//assert watched == ui_about.text_translators.viewport() #pxc>if ((event->type() == QEvent::MouseButtonPress) || (event->type() == QEvent::Wheel)) { #pxc>animation.pause(); #pxc>scrollbar->show(); #pxc>} #pxc>} #pxm-FUNC CHP nogil def show_full_license(local:bool, url:'const QUrl &'): pass #pxc>{ #pxc>if (local) { #pxc>ui_about.text_license_short->setVisible(false); #pxc>ui_about.text_license_full->setVisible(true); #pxc>} else #pxc>QDesktopServices::openUrl(url); #pxc>} #pxm>CPPCLASS_END #pxm-FUNC CHP def mk_qstr(pstr:'const char *', length:int)->str: return pstr #pxc>{ return QString::fromUtf8(pstr, length); } #pxm>DEDENT #px/cdef UIContainer qtui qtui = UIContainer() #pxm-FUNC PD def init_gettext(gettext): global _ _ = gettext #px/cdef QString gettext_translate(const char *text, const char *disambiguation) with gil: def gettext_translate(text, disambiguation): pytext = _(text.decode('utf-8')).encode('utf-8') return mk_qstr(pytext, len(pytext)) #XXX: Cython cannot export C functions, so this wrapper functions are needed. #TODO: Makro for generating wrapper functions or exported function pointers #pxm-FUNC PD def setupUi_main(window:'QMainWindow *', icon1:1, icon2:1, icon3:'const QIcon &', key1:1, key2:'const QKeySequence &', editbar_visible:bool, statusbar_visible:bool): qtui.setupUi_main(window, icon1, icon2, icon3, key1, key2) qtui.set_visible(debug & (DEBUG_DRAW | DEBUG_FPS), editbar_visible, statusbar_visible) #pxm-FUNC PD def setupUi_pref(window:'QDialog *', speed:int, speed_min:int, speed_max:int, mirror_min:int, mirror_max:int, liststore_movekeys:'QStandardItemModel *'): qtui.setupUi_pref(window, speed, speed_min, speed_max, mirror_min, mirror_max, liststore_movekeys) #pxm-FUNC PD def setupUi_help(window:'QDialog *', helptext:str): qtui.setupUi_help(window, helptext) #pxm-FUNC PD def setupUi_about(window:'QDialog *'): qtui.setupUi_about(window) #pxm-FUNC PD def set_shortcuts(key1:1, key2:1, key3:1, key4:'const QKeySequence &'): qtui.set_shortcuts(key1, key2, key3, key4) #pxm-FUNC PD def add_widgets(window:'QMainWindow *', edit:'QLineEdit *', drawing:'QOpenGLWidget *'): qtui.add_widgets(window, edit, drawing) #pxm-FUNC PD nogil def set_toolbar_visible(visible:bool): qtui.set_toolbar_visible(visible) #pxm-FUNC PD nogil def set_frame_editbar_visible(visible:bool): qtui.set_frame_editbar_visible(visible) #pxm-FUNC PD nogil def set_statusbar_visible(visible:bool): qtui.set_statusbar_visible(visible) #pxm-FUNC PD nogil def hide_controls(): qtui.hide_controls() #pxm-FUNC PD nogil def get_splitter_sizes(s1:'int &', s2:'int &'): qtui.get_splitter_sizes(s1, s2) #pxm-FUNC PD nogil def set_splitter_sizes(s1:int, s2:int): qtui.set_splitter_sizes(s1, s2) #pxm-FUNC PD nogil def splitter_update_minimumsize(): qtui.splitter_update_minimumsize() #pxm-FUNC PD nogil def set_debug_text(text:str): qtui.set_debug_text(text) #pxm-FUNC PD nogil def set_toolbar_state(a:int, b:int, c:int, d:int, e:int): qtui.set_toolbar_state(a, b, c, d, e) #pxm-FUNC PD nogil def clear_sidepane(): qtui.clear_sidepane() #pxm-FUNC PD nogil def create_sidepane_button(text:str)->'QPushButton *': return qtui.create_sidepane_button(text) #pxm-FUNC PD nogil def create_sidepane_treeview(treestore:'QStandardItemModel *', i:int)->'QTreeView *': return qtui.create_sidepane_treeview(treestore, i) #pxm-FUNC PD nogil def set_active_plugin_group(i:int): qtui.set_active_plugin_group(i) #pxm-FUNC PD nogil def set_active_plugin_group_by_obj(obj:'QObject *'): qtui.set_active_plugin_group_by_obj(obj) #pxm-FUNC PD nogil def get_plugin_group_count()->int: return qtui.get_plugin_group_count() #pxm-FUNC PD nogil def root_index(i:int)->'QModelIndex': return qtui.root_index(i) #pxm-FUNC PD nogil def hide_row(i:int, hide:bool): qtui.hide_row(i, hide) #pxm-FUNC PD nogil def set_row_hidden(treeview:int, row:int, index:'const QModelIndex &', hide:bool): qtui.set_row_hidden(treeview, row, index, hide) #pxm-FUNC PD nogil def splitter_pos()->int: return qtui.splitter_pos() #pxm-FUNC PD nogil def preferences_block_signals(block:bool): qtui.preferences_block_signals(block) #pxm-FUNC PD nogil def combobox_add_shaderitem(name:str, nick:str): qtui.combobox_add_shaderitem(name, nick) #pxm-FUNC PD nogil def combobox_add_samplesitem(name:str, nick:str): qtui.combobox_add_samplesitem(name, nick) #pxm-FUNC PD nogil def add_movekey_row(): qtui.add_movekey_row() #pxm-FUNC PD nogil def remove_movekey_row(): qtui.remove_movekey_row() #pxm-FUNC PD nogil def add_liststore_faces_row(name:str, key:str): qtui.add_liststore_faces_row(name, key) #pxm-FUNC PD nogil def finalize_liststore_faces(window:'QWidget *'): qtui.finalize_liststore_faces(window) #pxm-FUNC PD nogil def get_liststore_faces_facekey(index:'const QModelIndex &')->str: return qtui.get_liststore_faces_facekey(index) #pxm-FUNC PD nogil def set_button_color(color:str): qtui.set_button_color(color) #pxm-FUNC PD nogil def color_dialog(parent:'QWidget *', color:str)->str: return qtui.color_dialog(parent, color) #pxm-FUNC PD nogil def set_imagemode(imagemode:int): qtui.set_imagemode(imagemode) #pxm-FUNC PD nogil def add_combobox_image_item(icon:'const QIcon &', text:str, filename:str): qtui.add_combobox_image_item(icon, text, filename) #pxm-FUNC PD nogil def set_combobox_image(index_icon:int, icon:'const QIcon &', index:int): qtui.set_combobox_image(index_icon, icon, index) #pxm-FUNC PD nogil def set_button_background_color(color:str): qtui.set_button_background_color(color) #pxm-FUNC PD nogil def fill_page(items:'QVariant', title:str): qtui.fill_page(items, title) #pxm-FUNC PD nogil def set_page(i:int): qtui.set_page(i) #pxm-FUNC PD nogil def fill_header(fileName:str, appname:str, version:str, desc:str): qtui.fill_header(fileName, appname, version, desc) #pxm-FUNC PD nogil def fill_about_tab(copyr:str, website:str, translators:str): qtui.fill_about_tab(copyr, website, translators) #pxm-FUNC PD nogil def fill_contribute_tab(contribute:str): qtui.fill_contribute_tab(contribute) #pxm-FUNC PD nogil def fill_license_tab(license_short:str, license_notfound:bool, license_full:str): qtui.fill_license_tab(license_short, license_notfound, license_full) #pxm-FUNC PD nogil def tab_widget_currentChanged(index:int): qtui.tab_widget_currentChanged(index) #pxm-FUNC PD nogil def update_animation(first:bool): qtui.update_animation(first) #pxm-FUNC PD nogil def event_filter_stop_animation(event:'QEvent *'): qtui.event_filter_stop_animation(event) #pxm-FUNC PD nogil def show_full_license(local:bool, url:'const QUrl &'): qtui.show_full_license(local, url) pybik-3.0/pybiklib/ext/__init__.py0000644000175000017500000000000013171631132017342 0ustar barccbarcc00000000000000pybik-3.0/pybiklib/ext/qtui_p.h0000644000175000017500000002267413124002557016731 0ustar barccbarcc00000000000000// Copyright © 2017 B. Clausius // // 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 . // some code in class ModelSelectionItemDelegate is derived from class QCommonStyle, // part of the QtWidgets module of the Qt Toolkit (v5.6.1): // Original Copyright: (C) 2015 The Qt Company Ltd. // Original license: General Public License version 2.1 or version 3 // as published by the Free Software Foundation #ifndef QTUI_P_H #define QTUI_P_H #include #include #include #include static QSizeF viewItemTextLayout(QTextLayout &textLayout, int lineWidth) { qreal height = 0; qreal widthUsed = 0; textLayout.beginLayout(); while (true) { QTextLine line = textLayout.createLine(); if (!line.isValid()) break; line.setLineWidth(lineWidth); line.setPosition(QPointF(0, height)); height += line.height(); widthUsed = qMax(widthUsed, line.naturalTextWidth()); } textLayout.endLayout(); return QSizeF(widthUsed, height); } class ModelSelectionItemDelegate : public QStyledItemDelegate { public: ModelSelectionItemDelegate() : QStyledItemDelegate() {} //~ModelSelectionItemDelegate(); QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const { return QSize(128, 128); } void _draw_text_background(QPainter *p, const QStyleOptionViewItem *option, const QRect &rect) const { QPalette::ColorGroup cg = option->widget->isEnabled() ? QPalette::Normal : QPalette::Disabled; if (cg == QPalette::Normal && !(option->state & QStyle::State_Active)) cg = QPalette::Inactive; QPalette::ColorRole crole = option->state & QStyle::State_Selected ? QPalette::Highlight : QPalette::Dark; QColor color(option->palette.brush(cg, crole).color()); color = color.darker(180); color.setAlpha(160); p->fillRect(rect, color); } void _draw_text(QPainter *p, const QStyleOptionViewItem *option, const QRect &rect) const { const int textMargin = option->widget->style()->pixelMetric(QStyle::PM_FocusFrameHMargin, 0, option->widget) + 1; QRect textRect = rect.adjusted(textMargin, 0, -textMargin, 0); // remove width padding const bool wrapText = option->features & QStyleOptionViewItem::WrapText; QTextOption textOption; textOption.setWrapMode(wrapText ? QTextOption::WordWrap : QTextOption::ManualWrap); textOption.setTextDirection(option->direction); textOption.setAlignment(QStyle::visualAlignment(option->direction, option->displayAlignment)); QTextLayout textLayout(option->text, option->font); textLayout.setTextOption(textOption); QSizeF minsize(viewItemTextLayout(textLayout, textRect.width())); QString elidedText; qreal height = 0; qreal width = 0; int elidedIndex = -1; const int lineCount = textLayout.lineCount(); for (int j = 0; j < lineCount; ++j) { const QTextLine line = textLayout.lineAt(j); if (j + 1 <= lineCount - 1) { const QTextLine nextLine = textLayout.lineAt(j + 1); if ((nextLine.y() + nextLine.height()) > textRect.height()) { int start = line.textStart(); int length = line.textLength() + nextLine.textLength(); const QFontMetrics fontmetrics(option->font); elidedText = fontmetrics.elidedText(textLayout.text().mid(start, length), option->textElideMode, textRect.width()); height += line.height(); width = textRect.width(); elidedIndex = j; break; } } if (line.naturalTextWidth() > textRect.width()) { int start = line.textStart(); int length = line.textLength(); const QFontMetrics fontmetrics(option->font); elidedText = fontmetrics.elidedText(textLayout.text().mid(start, length), option->textElideMode, textRect.width()); height += line.height(); width = textRect.width(); elidedIndex = j; break; } width = qMax(width, line.width()); height += line.height(); } const QRect layoutRect = QStyle::alignedRect(option->direction, option->displayAlignment, QSize(int(width), int(height)), textRect); _draw_text_background(p, option, QRect(layoutRect.x()+layoutRect.width()/2-minsize.width()/2-2, layoutRect.y(), minsize.width()+5, layoutRect.height()+1)); const QPointF position = layoutRect.topLeft(); for (int i = 0; i < lineCount; ++i) { const QTextLine line = textLayout.lineAt(i); if (i == elidedIndex) { qreal x = position.x() + line.x(); qreal y = position.y() + line.y() + line.ascent(); p->save(); p->setFont(option->font); p->drawText(QPointF(x, y), elidedText); p->restore(); break; } line.draw(p, position); } } void paint(QPainter *p, const QStyleOptionViewItem &opt, const QModelIndex &index) const { QStyleOptionViewItem option = opt; initStyleOption(&option, index); p->save(); p->setClipRect(option.rect); QRect iconRect = option.rect.adjusted(3, 4, -3, -6); QRect textRect = option.rect.adjusted(5, 6, -5, -8); // draw the background option.widget->style()->drawPrimitive(QStyle::PE_PanelItemViewItem, &option, p, option.widget); // draw the icon QIcon::Mode mode = QIcon::Normal; if (!(option.state & QStyle::State_Enabled)) mode = QIcon::Disabled; else if (option.state & QStyle::State_Selected) mode = QIcon::Selected; QIcon::State state = option.state & QStyle::State_Open ? QIcon::On : QIcon::Off; option.icon.paint(p, iconRect, option.decorationAlignment, mode, state); // draw the text if (!option.text.isEmpty()) { QPalette::ColorGroup cg = option.state & QStyle::State_Enabled ? QPalette::Normal : QPalette::Disabled; if (cg == QPalette::Normal && !(option.state & QStyle::State_Active)) cg = QPalette::Inactive; if (option.state & QStyle::State_Selected) { p->setPen(option.palette.color(cg, QPalette::HighlightedText)); } else { p->setPen(option.palette.color(cg, QPalette::BrightText)); } _draw_text(p, &option, textRect); } // draw the focus rect if (option.state & QStyle::State_HasFocus) { QStyleOptionFocusRect o; o.QStyleOption::operator=(option); o.rect = QRect(option.rect); o.state |= QStyle::State_KeyboardFocusChange; o.state |= QStyle::State_Item; QPalette::ColorGroup cg = (option.state & QStyle::State_Enabled) ? QPalette::Normal : QPalette::Disabled; o.backgroundColor = option.palette.color(cg, (option.state & QStyle::State_Selected) ? QPalette::Highlight : QPalette::Window); option.widget->style()->drawPrimitive(QStyle::PE_FrameFocusRect, &o, p, option.widget); } p->restore(); } }; class ModelSelectionWidget : public QListWidget { public: ModelSelectionWidget(QWidget *p) : QListWidget(p) {} protected: void mouseDoubleClickEvent(QMouseEvent *event) { event->ignore(); } QItemSelectionModel::SelectionFlags selectionCommand(const QModelIndex &index, const QEvent *event = Q_NULLPTR) const { if (dynamic_cast(event)) { return QItemSelectionModel::NoUpdate; } else return QListWidget::selectionCommand(index, event); } }; #endif // QTUI_P_H pybik-3.0/pybiklib/ext/gldraw.py0000664000175000017500000002614613170112444017107 0ustar barccbarcc00000000000000#-*- coding:utf-8 -*- # cython: profile=False # Copyright © 2009-2017 B. Clausius # # 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 . # pylint: disable=W0614,C0326 # although this file is compiled with Python3 syntax, Cython needs at least division from __future__ from __future__ import print_function, division # This line makes cython happy global __name__, __package__ # pylint: disable=W0604 #px/__compiled = True __compiled = False #px/from libc.math cimport M_PI, cos, sin from math import radians, cos, sin #pxm>IF '[[GLDEBUG]]' == 'gldebug' #pxd+from [[_debug_VARIANT]] cimport * #pxm>IF '[[GLDEBUG]]' != 'gldebug' #pxd+from gl_[[GLVARIANT]] cimport * #pxm>IF_END #px: from pybiklib.debug import DEBUG_LOGGL try: if DEBUG_LOGGL: import OpenGL OpenGL.FULL_LOGGING = True from OpenGL.GLU import * # XXX: without the next line fails with python 3.5 from OpenGL.GL import * # pylint: disable=W0614,W0401 except ImportError as e: print('The pure Python mode needs PyOpenGL (for Python 3):', e) raise SystemExit(1) import ctypes from ctypes import sizeof from OpenGL.raw.GL.VERSION.GL_2_0 import glVertexAttribPointer #px. #px/cdef enum: # if True: DEBUG_MSGEXT = 8 #px+cdef long debug debug = 0 def set_debug_flags(module): global debug if module.DEBUG_MSGEXT: debug |= DEBUG_MSGEXT #px- NULL = None #pxd>cdef enum: # #px- if True: #pxd: MAX_TRANSFORMATIONS = 60 MAX_BLOCKS = 1312 MAX_FACES = 20 ATTRIB_LOCATION = 0 PICKATTRIB_LOCATION = 5 ATTRIB_CNT = 7 #px. #pxd>ctypedef float vec4[4] #pxd>ctypedef vec4 mat4[4] #px: vec4 = lambda: [0.]*4 mat4 = lambda: [[0.]*4 for _i in range(4)] #px. #pxm-FUNC PD nogil def matrix_set_identity(matrix:'mat4 &'): matrix[0][0] = 1.; matrix[0][1] = 0.; matrix[0][2] = 0.; matrix[0][3] = 0. matrix[1][0] = 0.; matrix[1][1] = 1.; matrix[1][2] = 0.; matrix[1][3] = 0. matrix[2][0] = 0.; matrix[2][1] = 0.; matrix[2][2] = 1.; matrix[2][3] = 0. matrix[3][0] = 0.; matrix[3][1] = 0.; matrix[3][2] = 0.; matrix[3][3] = 1. #px/cdef struct Block: class Block: # pylint: disable=R0903 #px- def __init__(self): #px/vec4 *transformation self.transformation = None #px/bint in_motion self.in_motion = None #px/int idx_triangles self.idx_triangles = None #px/int cnt_triangles self.cnt_triangles = None #px/cdef struct Cube: class cube: # pylint: disable=W0232, R0903 #px/mat4 transformations[MAX_TRANSFORMATIONS] transformations = [[[None]*4, [None]*4, [None]*4, [None]*4] for __t in range(MAX_TRANSFORMATIONS)] #px+unsigned int number_blocks #px/Block blocks[MAX_BLOCKS] blocks = [Block() for __block in range(MAX_BLOCKS)] #px+int cnt_pick #px+int idx_debug #px+int cnt_debug #px+GLuint object_location #px+GLuint glbuffer #px+int vertexdatalen #px+char *vertexdata #px/long attrib_pointers[ATTRIB_CNT] attrib_pointers = [None] * ATTRIB_CNT # animated slice #px/mat4 rotation_matrix rotation_matrix = mat4() #px+cdef Cube cube #pxm-FUNC PD def init_gldraw(): if debug & DEBUG_MSGEXT: print('init module:', __name__) print(' from package:', __package__) print(' compiled:', __compiled) #px+print(' GL-type: [[GLVARIANT]]') cube.number_blocks = 0 cube.cnt_pick = 0 cube.idx_debug = 0 cube.cnt_debug = 0 cube.vertexdatalen = 0 cube.vertexdata = NULL #pxm-FUNC PD nogil def sync_block_transformations(blocks:'short *'): #px+cdef unsigned int i for i in range(cube.number_blocks): cube.blocks[i].transformation = cube.transformations[blocks[i]] cube.blocks[i].in_motion = False #pxm-FUNC PD nogil def sync_animation_start(blocks_count:int, blocks:'short *'): matrix_set_identity(cube.rotation_matrix) #px+cdef int i for i in range(blocks_count): cube.blocks[blocks[i]].in_motion = True #pxm-FUNC PD nogil def sync_animation_next(angle:float, rotation_x:float, rotation_y:float, rotation_z:float): #px/angle = angle / 180. * M_PI angle = radians(angle) #px+cdef float x, y, z x = rotation_x y = rotation_y z = rotation_z #px+cdef float c, s c = cos(angle) s = sin(angle) cube.rotation_matrix[0][0] = x*x*(1-c) + c cube.rotation_matrix[0][1] = x*y*(1-c) + z*s cube.rotation_matrix[0][2] = x*z*(1-c) - y*s cube.rotation_matrix[1][0] = y*x*(1-c) - z*s cube.rotation_matrix[1][1] = y*y*(1-c) + c cube.rotation_matrix[1][2] = y*z*(1-c) + x*s cube.rotation_matrix[2][0] = x*z*(1-c) + y*s cube.rotation_matrix[2][1] = y*z*(1-c) - x*s cube.rotation_matrix[2][2] = z*z*(1-c) + c #pxm-FUNC P nogil def matrix_mult(dest:'mat4 &', src1:'mat4 &', src2:'mat4 &'): #px+cdef int i, j, k #px+cdef float sum_ for j in range(4): for i in range(4): sum_ = 0. for k in range(4): sum_ += src1[k][i] * src2[j][k] dest[j][i] = sum_ #pxm-FUNC PD nogil def gl_draw_cube(): #px+cdef unsigned int i #px/cdef mat4 object_matrix object_matrix = mat4() for i in range(cube.number_blocks): if cube.blocks[i].in_motion: matrix_mult(object_matrix, cube.rotation_matrix, cube.blocks[i].transformation) #px/glUniformMatrix4fv(cube.object_location, 1, GL_FALSE, &object_matrix[0][0]) glUniformMatrix4fv(cube.object_location, 1, GL_FALSE, object_matrix) else: #px/glUniformMatrix4fv(cube.object_location, 1, GL_FALSE, &cube.blocks[i].transformation[0][0]) glUniformMatrix4fv(cube.object_location, 1, GL_FALSE, cube.blocks[i].transformation) glDrawArrays(GL_TRIANGLES, cube.blocks[i].idx_triangles, cube.blocks[i].cnt_triangles) #pxm-FUNC PD nogil def gl_pick_cube(): glDrawArrays(GL_TRIANGLES, 0, cube.cnt_pick) #pxm-FUNC PD nogil def gl_init_buffers(): #px/glGenBuffers(1, &cube.glbuffer) cube.glbuffer = glGenBuffers(1) #pxm-FUNC PD nogil def gl_delete_buffers(): glBindBuffer(GL_ARRAY_BUFFER, 0) #px/glDeleteBuffers(1, &cube.glbuffer) glDeleteBuffers(1, [cube.glbuffer]) cube.glbuffer = 0 #pxm-FUNC P nogil def _gl_enable_pointer(index:'GLuint', size:'GLint', type:'GLenum', normalized:'GLboolean', pointer:'long'): #px/glVertexAttribPointer(index, size, type, normalized, 0, pointer) glVertexAttribPointer(index, size, type, normalized, 0, ctypes.cast(pointer, ctypes.c_void_p)) glEnableVertexAttribArray(index) #pxm-FUNC P nogil def _gl_disable_pointer(index:'GLuint'): #px/glVertexAttribPointer(index, 4, GL_FLOAT, GL_FALSE, 0, NULL) glVertexAttribPointer(index, 4, GL_FLOAT, GL_FALSE, 0, ctypes.cast(0, ctypes.c_void_p)) glDisableVertexAttribArray(index) #pxm-FUNC PD nogil def sync_blocks(nblocks:int, cnts_block:'short *', idx_debug:int, cnt_debug:int, cnt_pick:int): #px+cdef unsigned int idx_block, idx cube.number_blocks = nblocks idx_block = 0 for idx in range(cube.number_blocks): cube.blocks[idx].idx_triangles = idx_block cube.blocks[idx].cnt_triangles = cnts_block[idx] idx_block += cnts_block[idx] cube.cnt_pick = cnt_pick cube.idx_debug = idx_debug cube.cnt_debug = cnt_debug #pxm-FUNC PD nogil def sync_vertexdata(vertexdatalen:int, vertexdata:'char *', vertexpointers:'long *'): cube.vertexdatalen = vertexdatalen cube.vertexdata = vertexdata cube.attrib_pointers[0] = 0 cube.attrib_pointers[1] = vertexpointers[0] cube.attrib_pointers[2] = vertexpointers[1] cube.attrib_pointers[3] = vertexpointers[2] cube.attrib_pointers[4] = vertexpointers[3] cube.attrib_pointers[5] = vertexpointers[4] cube.attrib_pointers[6] = vertexpointers[5] #pxm-FUNC PD nogil def sync_transformations(transformations_count:int, transformations:'mat4 *'): #px+cdef int t #px+cdef unsigned int i, j for t in range(transformations_count): for i in range(4): for j in range(4): cube.transformations[t][i][j] = float(transformations[t][i][j]) #pxm-FUNC PD nogil def gl_enable_data(): glBindBuffer(GL_ARRAY_BUFFER, cube.glbuffer) glBufferData(GL_ARRAY_BUFFER, cube.vertexdatalen, cube.vertexdata, GL_STATIC_DRAW) _gl_enable_pointer(ATTRIB_LOCATION, 3, GL_FLOAT, GL_FALSE, cube.attrib_pointers[0]) _gl_enable_pointer(ATTRIB_LOCATION+1, 3, GL_FLOAT, GL_FALSE, cube.attrib_pointers[1]) _gl_enable_pointer(ATTRIB_LOCATION+2, 3, GL_UNSIGNED_BYTE, GL_TRUE, cube.attrib_pointers[2]) _gl_enable_pointer(ATTRIB_LOCATION+3, 2, GL_FLOAT, GL_FALSE, cube.attrib_pointers[3]) _gl_enable_pointer(ATTRIB_LOCATION+4, 3, GL_FLOAT, GL_FALSE, cube.attrib_pointers[4]) _gl_enable_pointer(PICKATTRIB_LOCATION, 3, GL_FLOAT, GL_FALSE, cube.attrib_pointers[5]) _gl_enable_pointer(PICKATTRIB_LOCATION+1, 3, GL_UNSIGNED_BYTE, GL_TRUE, cube.attrib_pointers[6]) #pxm-FUNC PD nogil def gl_disable_data(): glBindBuffer(GL_ARRAY_BUFFER, 0) _gl_disable_pointer(ATTRIB_LOCATION) _gl_disable_pointer(ATTRIB_LOCATION+1) _gl_disable_pointer(ATTRIB_LOCATION+2) _gl_disable_pointer(ATTRIB_LOCATION+3) _gl_disable_pointer(ATTRIB_LOCATION+4) _gl_disable_pointer(PICKATTRIB_LOCATION) _gl_disable_pointer(PICKATTRIB_LOCATION+1) #pxm-FUNC PD nogil def gl_draw_cube_debug(): #px/cdef mat4 object_matrix object_matrix = mat4() matrix_set_identity(object_matrix) #px/glUniformMatrix4fv(cube.object_location, 1, GL_FALSE, &object_matrix[0][0]) glUniformMatrix4fv(cube.object_location, 1, GL_FALSE, object_matrix) glDrawArrays(GL_LINES, cube.idx_debug, cube.cnt_debug) #pxm-FUNC PD nogil def gl_draw_select_debug(selectdata:'GLfloat *', size:'GLsizeiptr', prog_hud:'GLuint'): #px+cdef int i, j #px+cdef GLintptr offset if cube.cnt_debug == 0: #XXX: The data used here has fixed size, but may not be initialized yet return offset = (cube.idx_debug+cube.cnt_debug) * 3 * sizeof(GLfloat) #px/glBufferSubData(GL_ARRAY_BUFFER, offset, size, &selectdata[0]) glBufferSubData(GL_ARRAY_BUFFER, offset, len(selectdata) * sizeof(GLfloat), ArrayDatatype.asArray(selectdata, GL_FLOAT)) glDisable(GL_DEPTH_TEST) glDrawArrays(GL_LINES, cube.idx_debug+cube.cnt_debug, 2) glUseProgram(prog_hud) glDrawArrays(GL_POINTS, cube.idx_debug+cube.cnt_debug+2, 2) #pxm-FUNC PD nogil def gl_init_object_location(location:'GLuint'): cube.object_location = location pybik-3.0/pybiklib/ext/debug_purepython.py0000664000175000017500000001525113167636206021222 0ustar barccbarcc00000000000000#!/usr/bin/python3 # -*- coding: utf-8 -*- # Copyright © 2016-2017 B. Clausius # # 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 . try: from PyQt5.QtCore import (pyqtProperty, pyqtSignal, pyqtSlot, Qt, QObject, QVariant, QUrl, QStandardPaths, QElapsedTimer, QFileSystemWatcher, QTimer, QByteArray, QLocale, QTranslator, QLibraryInfo, QMetaObject, QPointF) from PyQt5.QtGui import (QColor, QImage, QIcon, QKeySequence, QTextDocumentFragment, QSurfaceFormat, QOpenGLTexture, QOpenGLFramebufferObject, QTransform, QPixmap, QCursor, QOpenGLContext, QOpenGLDebugLogger, QIconEngine) from PyQt5.QtQml import QQmlEngine, QQmlComponent from PyQt5.QtWidgets import QApplication, QMainWindow, QLineEdit, QLabel, QOpenGLWidget, QDialog, QStyledItemDelegate from PyQt5.QtQuick import QQuickView, QQuickItem except ImportError as e: print('Need PyQt5 in pure python mode:', e) raise SystemExit(1) import OpenGL.GL as gl NULL = None Format_RGBA8888 = QImage.Format_RGBA8888 PortableText = QKeySequence.PortableText MoveToNextWord = QKeySequence.MoveToNextWord MoveToPreviousWord = QKeySequence.MoveToPreviousWord fromString = QKeySequence.fromString standardLocations = QStandardPaths.standardLocations PicturesLocation = QStandardPaths.PicturesLocation HomeLocation = QStandardPaths.HomeLocation fromPlainText = QTextDocumentFragment.fromPlainText setDefaultFormat = QSurfaceFormat.setDefaultFormat defaultFormat = QSurfaceFormat.defaultFormat Target2D = QOpenGLTexture.Target2D RGBA32F = QOpenGLTexture.RGBA32F Linear = QOpenGLTexture.Linear Depth = QOpenGLFramebufferObject.Depth fromLocalFile = QUrl.fromLocalFile Asynchronous = QQmlComponent.Asynchronous fromImage = QPixmap.fromImage location = QLibraryInfo.location TranslationsPath = QLibraryInfo.TranslationsPath QLocale_system = QLocale.system arguments = QApplication.arguments setAttribute = QApplication.setAttribute OpenGLES = QSurfaceFormat.OpenGLES DebugContext = QSurfaceFormat.DebugContext openGLModuleType = QOpenGLContext.openGLModuleType LibGL = QOpenGLContext.LibGL LibGLES = QOpenGLContext.LibGLES currentContext = QOpenGLContext.currentContext SynchronousLogging = QOpenGLDebugLogger.SynchronousLogging invokeMethod = QMetaObject.invokeMethod SizeRootObjectToView = QQuickView.SizeRootObjectToView GL_TEXTURE_2D = gl.GL_TEXTURE_2D class MetaSlot(type(QObject)): def __new__(cls, name, bases, namespace): import inspect qtypemap = {'QString': str, 'QList': QVariant, 'QVariantList': QVariant} def member(proptype, propname, notify): def getter(self): try: returnv = getattr(self, propname) except AttributeError: returnv = proptype() return returnv def setter(self, v): setattr(self, propname, v) notify and notify.__get__(self).emit() return getter, setter for k, v in sorted(namespace.items()): if k.startswith('slot_'): spec = inspect.getfullargspec(v) argtypes = [spec.annotations[a] for a in spec.args[1:]] rtype = spec.annotations.get('return') fname = k.split('_', 1)[1] if rtype is None: slot = pyqtSlot(*argtypes, name=fname) else: slot = pyqtSlot(*argtypes, name=fname, result=rtype) assert fname not in namespace namespace[fname] = slot(v) del namespace[k] elif k.startswith('action_'): action = k.split('_', 1)[1] fname = 'on_action_%s_triggered' % action slot = pyqtSlot(name=fname) assert fname not in namespace def _mkactionfunc(action, pydata): def on_action_X_triggered(self): getattr(pydata.app, 'on_action_%s_triggered' % action)() return on_action_X_triggered namespace[fname] = slot(_mkactionfunc(action, v)) del namespace[k] elif k.startswith('prop_'): pname = k.split('_', 1)[1] ptype, *flags = v.split() try: ptype = qtypemap.get(ptype) or eval(ptype.rstrip('*')) except NameError: print('{}: name={}, type={!r}, flags={!r}'.format(k, pname, ptype, flags)) raise assert type(ptype) is not str or ptype.isalpha(), ptype pargs = {} getter = setter = notify = None def pop(flag): if flag in flags: flags.remove(flag) return True return False if pop('NOTIFY'): fname = pname + '_changed' assert fname not in namespace, fname notify = pyqtSignal() pargs['notify'] = notify namespace[fname] = notify if pop('MEMBER'): fname = 'm_' + pname assert fname not in namespace, fname getter, setter = member(ptype, fname, notify) pargs['fget'], pargs['fset'] = getter, setter if pop('READ'): fname = 'get_' + pname assert fname in namespace, fname getter = namespace[fname] pargs['fget'] = getter if pop('WRITE'): fname = 'set_' + pname assert fname in namespace, fname setter = namespace[fname] pargs['fset'] = setter if flags: assert False, flags assert pname not in namespace, pname namespace[pname] = pyqtProperty(ptype, **pargs) del namespace[k] return type(QObject)(name, bases, namespace) pybik-3.0/pybiklib/ext/_debug_es2.pxd0000664000175000017500000001515213122014201017750 0ustar barccbarcc00000000000000# generated from pybiklib/ext/gl_es2.pxd from libc.stddef cimport ptrdiff_t from libc.stdint cimport int32_t, intptr_t, int8_t, uint8_t # defines from /usr/include/GLES2/gl2.h: cdef enum: GL_DEPTH_BUFFER_BIT = 0x00000100 GL_COLOR_BUFFER_BIT = 0x00004000 GL_FALSE = 0 GL_TRUE = 1 GL_POINTS = 0x0000 GL_LINES = 0x0001 GL_TRIANGLES = 0x0004 GL_ARRAY_BUFFER = 0x8892 GL_STATIC_DRAW = 0x88E4 GL_BACK = 0x0405 GL_TEXTURE_2D = 0x0DE1 GL_CULL_FACE = 0x0B44 GL_DEPTH_TEST = 0x0B71 GL_SAMPLE_ALPHA_TO_COVERAGE = 0x809E GL_SAMPLE_COVERAGE = 0x80A0 GL_INVALID_ENUM = 0x0500 GL_INVALID_VALUE = 0x0501 GL_INVALID_OPERATION = 0x0502 GL_OUT_OF_MEMORY = 0x0505 GL_CCW = 0x0901 GL_MAX_TEXTURE_SIZE = 0x0D33 GL_SAMPLE_BUFFERS = 0x80A8 GL_SAMPLES = 0x80A9 GL_SAMPLE_COVERAGE_VALUE = 0x80AA GL_SAMPLE_COVERAGE_INVERT = 0x80AB GL_UNSIGNED_BYTE = 0x1401 GL_FLOAT = 0x1406 GL_RGB = 0x1907 GL_RGBA = 0x1908 GL_FRAGMENT_SHADER = 0x8B30 GL_VERTEX_SHADER = 0x8B31 GL_MAX_VERTEX_ATTRIBS = 0x8869 GL_DELETE_STATUS = 0x8B80 GL_LINK_STATUS = 0x8B82 GL_VALIDATE_STATUS = 0x8B83 GL_ATTACHED_SHADERS = 0x8B85 GL_ACTIVE_UNIFORMS = 0x8B86 GL_ACTIVE_UNIFORM_MAX_LENGTH = 0x8B87 GL_ACTIVE_ATTRIBUTES = 0x8B89 GL_ACTIVE_ATTRIBUTE_MAX_LENGTH = 0x8B8A GL_SHADING_LANGUAGE_VERSION = 0x8B8C GL_VENDOR = 0x1F00 GL_RENDERER = 0x1F01 GL_VERSION = 0x1F02 GL_EXTENSIONS = 0x1F03 GL_COMPILE_STATUS = 0x8B81 GL_INFO_LOG_LENGTH = 0x8B84 # defines from /usr/include/GLES2/gl2ext.h: # typedefs from /usr/include/GLES2/gl2.h: IF True: ctypedef unsigned int GLenum ctypedef unsigned int GLuint ctypedef char GLchar ctypedef float GLfloat ctypedef ssize_t GLsizeiptr ctypedef intptr_t GLintptr ctypedef unsigned int GLbitfield ctypedef int GLint ctypedef unsigned char GLboolean ctypedef int GLsizei ctypedef uint8_t GLubyte # other typedefs: ctypedef GLchar* const_GLchar_ptr # functions from /usr/include/GLES2/gl2.h: IF True: cdef void glActiveTexture (GLenum texture) nogil cdef void glAttachShader (GLuint program, GLuint shader) nogil cdef void glBindAttribLocation (GLuint program, GLuint index, GLchar *name) nogil cdef void glBindBuffer (GLenum target, GLuint buffer) nogil cdef void glBufferData (GLenum target, GLsizeiptr size, void *data, GLenum usage) nogil cdef void glBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size, void *data) nogil cdef void glClear (GLbitfield mask) nogil cdef void glClearColor (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) nogil cdef void glCompileShader (GLuint shader) nogil cdef GLuint glCreateProgram () nogil cdef GLuint glCreateShader (GLenum type) nogil cdef void glCullFace (GLenum mode) nogil cdef void glDeleteBuffers (GLsizei n, GLuint *buffers) nogil cdef void glDeleteProgram (GLuint program) nogil cdef void glDeleteShader (GLuint shader) nogil cdef void glDetachShader (GLuint program, GLuint shader) nogil cdef void glDisable (GLenum cap) nogil cdef void glDisableVertexAttribArray (GLuint index) nogil cdef void glDrawArrays (GLenum mode, GLint first, GLsizei count) nogil cdef void glEnable (GLenum cap) nogil cdef void glEnableVertexAttribArray (GLuint index) nogil cdef void glFrontFace (GLenum mode) nogil cdef void glGenBuffers (GLsizei n, GLuint *buffers) nogil cdef void glGetActiveAttrib (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name) nogil cdef void glGetActiveUniform (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name) nogil cdef GLint glGetAttribLocation (GLuint program, GLchar *name) nogil cdef void glGetBooleanv (GLenum pname, GLboolean *data) nogil cdef GLenum glGetError () nogil cdef void glGetFloatv (GLenum pname, GLfloat *data) nogil cdef void glGetIntegerv (GLenum pname, GLint *data) nogil cdef void glGetProgramiv (GLuint program, GLenum pname, GLint *params) nogil cdef void glGetProgramInfoLog (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog) nogil cdef void glGetShaderiv (GLuint shader, GLenum pname, GLint *params) nogil cdef void glGetShaderInfoLog (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog) nogil cdef GLubyte * glGetString (GLenum name) nogil cdef GLint glGetUniformLocation (GLuint program, GLchar *name) nogil cdef GLboolean glIsEnabled (GLenum cap) nogil cdef void glLinkProgram (GLuint program) nogil cdef void glReadPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void *pixels) nogil cdef void glShaderSource (GLuint shader, GLsizei count, GLchar **string, GLint *length) nogil cdef void glTexImage2D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, void *pixels) nogil cdef void glTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, void *pixels) nogil cdef void glUniform1i (GLint location, GLint v0) nogil cdef void glUniformMatrix4fv (GLint location, GLsizei count, GLboolean transpose, GLfloat *value) nogil cdef void glUseProgram (GLuint program) nogil cdef void glValidateProgram (GLuint program) nogil cdef void glVertexAttribPointer (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, void *pointer) nogil cdef void glViewport (GLint x, GLint y, GLsizei width, GLsizei height) nogil # functions from /usr/include/GLES2/gl2ext.h: # GLES version 2.0 needed pybik-3.0/pybiklib/ext/qtq.pxd0000644000175000017500000001034413117243753016577 0ustar barccbarcc00000000000000# -*- coding: utf-8 -*- # Copyright © 2017 B. Clausius # # 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 . from qt cimport * ctypedef void CallbackErrorList(const QmlErrorList &) nogil #### QtCore #### #QList[QQmlError] cdef extern from "": cdef cppclass QmlErrorList "QList": int size() const const QQmlError& at(int i) const #QObject cdef extern from "" namespace "QObject": Connection connect(const QQmlEngine *sender, CallbackErrorList *signal, CallbackErrorList slot) nogil #### QtQml #### #QQmlComponent cdef extern from "": cdef cppclass QQmlComponent: QQmlComponent(QQmlEngine *, QObject *parent) void loadUrl(const QUrl &url) void loadUrl(const QUrl &url, CompilationMode mode) cbool isError() const cbool isLoading() const QmlErrorList errors() const QObject *beginCreate(QQmlContext *) void completeCreate() cdef extern from "" namespace "QQmlComponent": cdef enum CompilationMode: PreferSynchronous, Asynchronous #QQmlContext cdef extern from "": cdef cppclass QQmlContext: void setContextProperty(const QString &name, QObject *value) #QQmlEngine cdef extern from "": cdef cppclass QQmlEngine: QQmlEngine() void setOutputWarningsToStandardError(cbool enabled) QQmlContext *rootContext() const void clearComponentCache() cdef extern from "" namespace "QQmlEngine": void warnings(const QmlErrorList &warnings) nogil #QQmlError cdef extern from "": cdef cppclass QQmlError: QString description() const QUrl url() const int line() const int column() const #### QtQuick #### #QQuickItem cdef extern from "": cdef cppclass QQuickItem(QObject): qreal x() nogil const qreal y() nogil const qreal width() nogil const qreal height() nogil const QQuickItem *parentItem() nogil const QQuickWindow *window() nogil const #QWindow cdef extern from "": cdef cppclass QWindow: QSurfaceFormat format() nogil const void resize(int w, int h) nogil cbool close() nogil int width() nogil const int height() nogil const cbool setMouseGrabEnabled(cbool grab) nogil #void setParent(QWindow *parent) void setTransientParent(QWindow * parent) nogil #QQuickWindow cdef extern from "": cdef cppclass QQuickWindow(QWindow): void update() nogil void setCursor(const QCursor &cursor) nogil void unsetCursor() nogil void setPersistentOpenGLContext(cbool persistent) nogil void setClearBeforeRendering(cbool enabled) nogil QImage grabWindow() int x() nogil const int y() nogil const QQuickItem *contentItem() nogil const void setRenderTarget(QOpenGLFramebufferObject *fbo) nogil #QQuickView cdef extern from "": cdef cppclass QQuickView(QQuickWindow): QQuickView(QQmlEngine *engine, QQuickWindow *parent) void setSource(const QUrl &url) void setTitle(const QString &title) QmlErrorList errors() const void setResizeMode(ResizeMode) void show() cdef extern from "" namespace "QQuickView": cdef enum ResizeMode: SizeViewToRootObject, SizeRootObjectToView void beforeSynchronizing() nogil void beforeRendering() nogil pybik-3.0/pybiklib/ext/_debug_ogl.pyx0000664000175000017500000003072713170115175020111 0ustar barccbarcc00000000000000# generated from pybiklib/ext/gl_ogl.pxd from libc.stdio cimport printf, puts cimport gl_[[GLVARIANT]] as gl print('Importing module:', __name__) print(' GL-type: [[GLVARIANT]]') def set_debug_flags(module): pass cdef void _gl_check_error() nogil: cdef gl.GLenum err err = gl.glGetError() while err: if err == gl.GL_INVALID_ENUM: puts('glerror: GL_INVALID_ENUM') elif err == gl.GL_INVALID_VALUE: puts('glerror: GL_INVALID_VALUE') elif err == gl.GL_INVALID_OPERATION: puts('glerror: GL_INVALID_OPERATION') elif err == gl.GL_OUT_OF_MEMORY: puts('glerror: GL_OUT_OF_MEMORY') else: printf('gl unknown: %x\n', err) err = gl.glGetError() # functions from /usr/include/GL/gl.h: cdef void glClearColor( GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha ) nogil: puts('''gl: void glClearColor( GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha )''') gl. glClearColor(red, green, blue, alpha) _gl_check_error() cdef void glClear( GLbitfield mask ) nogil: puts('''gl: void glClear( GLbitfield mask )''') gl. glClear(mask) _gl_check_error() cdef void glCullFace( GLenum mode ) nogil: puts('''gl: void glCullFace( GLenum mode )''') gl. glCullFace(mode) _gl_check_error() cdef void glFrontFace( GLenum mode ) nogil: puts('''gl: void glFrontFace( GLenum mode )''') gl. glFrontFace(mode) _gl_check_error() cdef void glEnable( GLenum cap ) nogil: puts('''gl: void glEnable( GLenum cap )''') gl. glEnable(cap) _gl_check_error() cdef void glDisable( GLenum cap ) nogil: puts('''gl: void glDisable( GLenum cap )''') gl. glDisable(cap) _gl_check_error() cdef GLboolean glIsEnabled( GLenum cap ) nogil: puts('''gl: GLboolean glIsEnabled( GLenum cap )''') cdef GLboolean result = gl. glIsEnabled(cap) _gl_check_error() return result cdef void glGetBooleanv( GLenum pname, GLboolean *params ) nogil: puts('''gl: void glGetBooleanv( GLenum pname, GLboolean *params )''') gl. glGetBooleanv(pname, params) _gl_check_error() cdef void glGetFloatv( GLenum pname, GLfloat *params ) nogil: puts('''gl: void glGetFloatv( GLenum pname, GLfloat *params )''') gl. glGetFloatv(pname, params) _gl_check_error() cdef void glGetIntegerv( GLenum pname, GLint *params ) nogil: puts('''gl: void glGetIntegerv( GLenum pname, GLint *params )''') gl. glGetIntegerv(pname, params) _gl_check_error() cdef GLenum glGetError() nogil: puts('''gl: GLenum glGetError( void )''') return gl. glGetError() cdef GLubyte * glGetString( GLenum name ) nogil: puts('''gl: GLubyte * glGetString( GLenum name )''') cdef GLubyte * result = gl. glGetString(name) _gl_check_error() return result cdef void glViewport( GLint x, GLint y, GLsizei width, GLsizei height ) nogil: puts('''gl: void glViewport( GLint x, GLint y, GLsizei width, GLsizei height )''') gl. glViewport(x, y, width, height) _gl_check_error() cdef void glDrawArrays( GLenum mode, GLint first, GLsizei count ) nogil: puts('''gl: void glDrawArrays( GLenum mode, GLint first, GLsizei count )''') gl. glDrawArrays(mode, first, count) _gl_check_error() cdef void glReadPixels( GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels ) nogil: puts('''gl: void glReadPixels( GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels )''') gl. glReadPixels(x, y, width, height, format, type, pixels) _gl_check_error() cdef void glTexImage2D( GLenum target, GLint level, GLint internalFormat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, GLvoid *pixels ) nogil: puts('''gl: void glTexImage2D( GLenum target, GLint level, GLint internalFormat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, GLvoid *pixels )''') gl. glTexImage2D(target, level, internalFormat, width, height, border, format, type, pixels) _gl_check_error() cdef void glTexSubImage2D( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels ) nogil: puts('''gl: void glTexSubImage2D( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels )''') gl. glTexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels) _gl_check_error() cdef void glActiveTexture( GLenum texture ) nogil: puts('''gl: void glActiveTexture( GLenum texture )''') gl. glActiveTexture(texture) _gl_check_error() # functions from /usr/include/GL/glext.h: cdef void glBindBuffer (GLenum target, GLuint buffer) nogil: puts('''gl: void glBindBuffer (GLenum target, GLuint buffer)''') gl. glBindBuffer (target, buffer) _gl_check_error() cdef void glDeleteBuffers (GLsizei n, GLuint *buffers) nogil: puts('''gl: void glDeleteBuffers (GLsizei n, GLuint *buffers)''') gl. glDeleteBuffers (n, buffers) _gl_check_error() cdef void glGenBuffers (GLsizei n, GLuint *buffers) nogil: puts('''gl: void glGenBuffers (GLsizei n, GLuint *buffers)''') gl. glGenBuffers (n, buffers) _gl_check_error() cdef void glBufferData (GLenum target, GLsizeiptr size, void *data, GLenum usage) nogil: puts('''gl: void glBufferData (GLenum target, GLsizeiptr size, void *data, GLenum usage)''') gl. glBufferData (target, size, data, usage) _gl_check_error() cdef void glBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size, void *data) nogil: puts('''gl: void glBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size, void *data)''') gl. glBufferSubData (target, offset, size, data) _gl_check_error() cdef void glAttachShader (GLuint program, GLuint shader) nogil: puts('''gl: void glAttachShader (GLuint program, GLuint shader)''') gl. glAttachShader (program, shader) _gl_check_error() cdef void glBindAttribLocation (GLuint program, GLuint index, GLchar *name) nogil: puts('''gl: void glBindAttribLocation (GLuint program, GLuint index, GLchar *name)''') gl. glBindAttribLocation (program, index, name) _gl_check_error() cdef void glCompileShader (GLuint shader) nogil: puts('''gl: void glCompileShader (GLuint shader)''') gl. glCompileShader (shader) _gl_check_error() cdef GLuint glCreateProgram () nogil: puts('''gl: GLuint glCreateProgram (void)''') cdef GLuint result = gl. glCreateProgram () _gl_check_error() return result cdef GLuint glCreateShader (GLenum type) nogil: puts('''gl: GLuint glCreateShader (GLenum type)''') cdef GLuint result = gl. glCreateShader (type) _gl_check_error() return result cdef void glDeleteProgram (GLuint program) nogil: puts('''gl: void glDeleteProgram (GLuint program)''') gl. glDeleteProgram (program) _gl_check_error() cdef void glDeleteShader (GLuint shader) nogil: puts('''gl: void glDeleteShader (GLuint shader)''') gl. glDeleteShader (shader) _gl_check_error() cdef void glDetachShader (GLuint program, GLuint shader) nogil: puts('''gl: void glDetachShader (GLuint program, GLuint shader)''') gl. glDetachShader (program, shader) _gl_check_error() cdef void glDisableVertexAttribArray (GLuint index) nogil: puts('''gl: void glDisableVertexAttribArray (GLuint index)''') gl. glDisableVertexAttribArray (index) _gl_check_error() cdef void glEnableVertexAttribArray (GLuint index) nogil: puts('''gl: void glEnableVertexAttribArray (GLuint index)''') gl. glEnableVertexAttribArray (index) _gl_check_error() cdef void glGetActiveAttrib (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name) nogil: puts('''gl: void glGetActiveAttrib (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name)''') gl. glGetActiveAttrib (program, index, bufSize, length, size, type, name) _gl_check_error() cdef void glGetActiveUniform (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name) nogil: puts('''gl: void glGetActiveUniform (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name)''') gl. glGetActiveUniform (program, index, bufSize, length, size, type, name) _gl_check_error() cdef GLint glGetAttribLocation (GLuint program, GLchar *name) nogil: puts('''gl: GLint glGetAttribLocation (GLuint program, GLchar *name)''') cdef GLint result = gl. glGetAttribLocation (program, name) _gl_check_error() return result cdef void glGetProgramiv (GLuint program, GLenum pname, GLint *params) nogil: puts('''gl: void glGetProgramiv (GLuint program, GLenum pname, GLint *params)''') gl. glGetProgramiv (program, pname, params) _gl_check_error() cdef void glGetProgramInfoLog (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog) nogil: puts('''gl: void glGetProgramInfoLog (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog)''') gl. glGetProgramInfoLog (program, bufSize, length, infoLog) _gl_check_error() cdef void glGetShaderiv (GLuint shader, GLenum pname, GLint *params) nogil: puts('''gl: void glGetShaderiv (GLuint shader, GLenum pname, GLint *params)''') gl. glGetShaderiv (shader, pname, params) _gl_check_error() cdef void glGetShaderInfoLog (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog) nogil: puts('''gl: void glGetShaderInfoLog (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog)''') gl. glGetShaderInfoLog (shader, bufSize, length, infoLog) _gl_check_error() cdef GLint glGetUniformLocation (GLuint program, GLchar *name) nogil: puts('''gl: GLint glGetUniformLocation (GLuint program, GLchar *name)''') cdef GLint result = gl. glGetUniformLocation (program, name) _gl_check_error() return result cdef void glLinkProgram (GLuint program) nogil: puts('''gl: void glLinkProgram (GLuint program)''') gl. glLinkProgram (program) _gl_check_error() cdef void glShaderSource (GLuint shader, GLsizei count, GLchar **string, GLint *length) nogil: puts('''gl: void glShaderSource (GLuint shader, GLsizei count, GLchar **string, GLint *length)''') gl. glShaderSource (shader, count, string, length) _gl_check_error() cdef void glUseProgram (GLuint program) nogil: puts('''gl: void glUseProgram (GLuint program)''') gl. glUseProgram (program) _gl_check_error() cdef void glUniform1i (GLint location, GLint v0) nogil: puts('''gl: void glUniform1i (GLint location, GLint v0)''') gl. glUniform1i (location, v0) _gl_check_error() cdef void glUniformMatrix4fv (GLint location, GLsizei count, GLboolean transpose, GLfloat *value) nogil: puts('''gl: void glUniformMatrix4fv (GLint location, GLsizei count, GLboolean transpose, GLfloat *value)''') gl. glUniformMatrix4fv (location, count, transpose, value) _gl_check_error() cdef void glValidateProgram (GLuint program) nogil: puts('''gl: void glValidateProgram (GLuint program)''') gl. glValidateProgram (program) _gl_check_error() cdef void glVertexAttribPointer (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, void *pointer) nogil: puts('''gl: void glVertexAttribPointer (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, void *pointer)''') gl. glVertexAttribPointer (index, size, type, normalized, stride, pointer) _gl_check_error() pybik-3.0/pybiklib/ext/gl_es2.pxd0000664000175000017500000001342613122014201017127 0ustar barccbarcc00000000000000# generated with: tools/create-gl-pxd.py gles2 pybiklib/ext gl_es2.pxd glarea.py gldraw.py gl_es2.pxd from libc.stddef cimport ptrdiff_t from libc.stdint cimport int32_t, intptr_t, int8_t, uint8_t # defines from /usr/include/GLES2/gl2.h: cdef extern from 'GLES2/gl2.h': enum: GL_DEPTH_BUFFER_BIT enum: GL_COLOR_BUFFER_BIT enum: GL_FALSE enum: GL_TRUE enum: GL_POINTS enum: GL_LINES enum: GL_TRIANGLES enum: GL_ARRAY_BUFFER enum: GL_STATIC_DRAW enum: GL_BACK enum: GL_TEXTURE_2D enum: GL_CULL_FACE enum: GL_DEPTH_TEST enum: GL_SAMPLE_ALPHA_TO_COVERAGE enum: GL_SAMPLE_COVERAGE enum: GL_INVALID_ENUM enum: GL_INVALID_VALUE enum: GL_INVALID_OPERATION enum: GL_OUT_OF_MEMORY enum: GL_CCW enum: GL_MAX_TEXTURE_SIZE enum: GL_SAMPLE_BUFFERS enum: GL_SAMPLES enum: GL_SAMPLE_COVERAGE_VALUE enum: GL_SAMPLE_COVERAGE_INVERT enum: GL_UNSIGNED_BYTE enum: GL_FLOAT enum: GL_RGB enum: GL_RGBA enum: GL_FRAGMENT_SHADER enum: GL_VERTEX_SHADER enum: GL_MAX_VERTEX_ATTRIBS enum: GL_DELETE_STATUS enum: GL_LINK_STATUS enum: GL_VALIDATE_STATUS enum: GL_ATTACHED_SHADERS enum: GL_ACTIVE_UNIFORMS enum: GL_ACTIVE_UNIFORM_MAX_LENGTH enum: GL_ACTIVE_ATTRIBUTES enum: GL_ACTIVE_ATTRIBUTE_MAX_LENGTH enum: GL_SHADING_LANGUAGE_VERSION enum: GL_VENDOR enum: GL_RENDERER enum: GL_VERSION enum: GL_EXTENSIONS enum: GL_COMPILE_STATUS enum: GL_INFO_LOG_LENGTH # defines from /usr/include/GLES2/gl2ext.h: # typedefs from /usr/include/GLES2/gl2.h: cdef extern from *: ctypedef unsigned int GLenum ctypedef unsigned int GLuint ctypedef char GLchar ctypedef float GLfloat ctypedef ssize_t GLsizeiptr ctypedef intptr_t GLintptr ctypedef unsigned int GLbitfield ctypedef int GLint ctypedef unsigned char GLboolean ctypedef int GLsizei ctypedef uint8_t GLubyte # other typedefs: cdef extern from *: ctypedef GLchar* const_GLchar_ptr "const GLchar*" # functions from /usr/include/GLES2/gl2.h: cdef extern from 'GLES2/gl2.h': cdef void glActiveTexture (GLenum texture) nogil cdef void glAttachShader (GLuint program, GLuint shader) nogil cdef void glBindAttribLocation (GLuint program, GLuint index, GLchar *name) nogil cdef void glBindBuffer (GLenum target, GLuint buffer) nogil cdef void glBufferData (GLenum target, GLsizeiptr size, void *data, GLenum usage) nogil cdef void glBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size, void *data) nogil cdef void glClear (GLbitfield mask) nogil cdef void glClearColor (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) nogil cdef void glCompileShader (GLuint shader) nogil cdef GLuint glCreateProgram () nogil cdef GLuint glCreateShader (GLenum type) nogil cdef void glCullFace (GLenum mode) nogil cdef void glDeleteBuffers (GLsizei n, GLuint *buffers) nogil cdef void glDeleteProgram (GLuint program) nogil cdef void glDeleteShader (GLuint shader) nogil cdef void glDetachShader (GLuint program, GLuint shader) nogil cdef void glDisable (GLenum cap) nogil cdef void glDisableVertexAttribArray (GLuint index) nogil cdef void glDrawArrays (GLenum mode, GLint first, GLsizei count) nogil cdef void glEnable (GLenum cap) nogil cdef void glEnableVertexAttribArray (GLuint index) nogil cdef void glFrontFace (GLenum mode) nogil cdef void glGenBuffers (GLsizei n, GLuint *buffers) nogil cdef void glGetActiveAttrib (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name) nogil cdef void glGetActiveUniform (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name) nogil cdef GLint glGetAttribLocation (GLuint program, GLchar *name) nogil cdef void glGetBooleanv (GLenum pname, GLboolean *data) nogil cdef GLenum glGetError () nogil cdef void glGetFloatv (GLenum pname, GLfloat *data) nogil cdef void glGetIntegerv (GLenum pname, GLint *data) nogil cdef void glGetProgramiv (GLuint program, GLenum pname, GLint *params) nogil cdef void glGetProgramInfoLog (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog) nogil cdef void glGetShaderiv (GLuint shader, GLenum pname, GLint *params) nogil cdef void glGetShaderInfoLog (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog) nogil cdef GLubyte * glGetString (GLenum name) nogil cdef GLint glGetUniformLocation (GLuint program, GLchar *name) nogil cdef GLboolean glIsEnabled (GLenum cap) nogil cdef void glLinkProgram (GLuint program) nogil cdef void glReadPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void *pixels) nogil cdef void glShaderSource (GLuint shader, GLsizei count, GLchar **string, GLint *length) nogil cdef void glTexImage2D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, void *pixels) nogil cdef void glTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, void *pixels) nogil cdef void glUniform1i (GLint location, GLint v0) nogil cdef void glUniformMatrix4fv (GLint location, GLsizei count, GLboolean transpose, GLfloat *value) nogil cdef void glUseProgram (GLuint program) nogil cdef void glValidateProgram (GLuint program) nogil cdef void glVertexAttribPointer (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, void *pointer) nogil cdef void glViewport (GLint x, GLint y, GLsizei width, GLsizei height) nogil # functions from /usr/include/GLES2/gl2ext.h: # GLES version 2.0 needed pybik-3.0/pybiklib/debug.py0000664000175000017500000001331713167635574016135 0ustar barccbarcc00000000000000#-*- coding:utf-8 -*- # Copyright © 2009-2017 B. Clausius # # 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 . DEBUG = False DEBUG_FUNC = DEBUG_RAND = DEBUG_ROTATE = DEBUG_ERROR = DEBUG_SIM = DEBUG_EMPTY = False DEBUG_IMPORT = DEBUG_MSGALL = DEBUG_MSG = DEBUG_MSGGL = DEBUG_MSGEXT = DEBUG_CLOCALE = False DEBUG_DRAW = DEBUG_DRAWNORMALS = DEBUG_DRAWAXES = DEBUG_ALG = DEBUG_KEYS = DEBUG_PICK = DEBUG_MOUSEPOS = False DEBUG_NOLABEL = DEBUG_NOBLACK = DEBUG_NOBEVEL = DEBUG_NOPICK = DEBUG_INVISIBLE = False DEBUG_NOCACHE = DEBUG_MODELFAST = DEBUG_CACHEUPDATE = DEBUG_MAXSIZE5 = False DEBUG_FPS = DEBUG_VFPS = DEBUG_NOCONTROLS = False DEBUG_SHADER = DEBUG_GLDEBUG = False DEBUG_PUREPYTHON = DEBUG_INDEXONLY = DEBUG_LIVESHADER = False DEBUG_LOG = DEBUG_LOGDEBUG = DEBUG_LOGGL = False DEBUG_QML = DEBUG_LIVEQML = DEBUG_LIVEPLUGINS = False DEBUG_QSGINFO = DEBUG_BASICRENDERER = False DEBUG_PHONE = DEBUG_NOLINENO = False flag_names = sorted(_n for _n in globals().keys() if _n.startswith('DEBUG_')) __all__ = ['error', 'debug', 'debug_func', 'DEBUG'] + flag_names flag_nicks = [_n.split('_', 1)[1].lower() for _n in flag_names] def error(*args, **kwargs): print('ERROR:', *args, **kwargs) debug = lambda *args, **kwargs: None debug_func = lambda x: x def set_flags(flags): from . import debug as module module.DEBUG = True for flag in flags: setattr(module, 'DEBUG_' + flag.upper(), True) if module.DEBUG_MSGALL: module.DEBUG_IMPORT = module.DEBUG_MSG = module.DEBUG_MSGGL = True if module.DEBUG_IMPORT or module.DEBUG_MSG or module.DEBUG_MSGGL: module.DEBUG_MSGEXT = True if module.DEBUG_DRAWAXES: module.DEBUG_DRAW = True if module.DEBUG_DRAWNORMALS: module.DEBUG_DRAW = True if module.DEBUG_LOGDEBUG or module.DEBUG_LOGGL: module.DEBUG_LOG = True if module.DEBUG_LOG: import logging logging.basicConfig(filename='pybik.log', level=logging.DEBUG if module.DEBUG_LOGDEBUG else logging.INFO) if module.DEBUG_VFPS: module.DEBUG_FPS = True if module.DEBUG_FUNC: def _debug_pre_func(func, *args, **kwargs): def short_arg(arg): arg = str(arg) maxlen = 80 - debug_func.indent * 3 - 2 if len(arg) > maxlen: return arg[:maxlen] return arg func_name = ' '.join(reversed(func.__qualname__.split('.'))) print('%s--%s ' % (' |'*debug_func.indent, func_name)) debug_func.indent += 1 for arg in args: try: print('%s: %s' % (' |'*debug_func.indent, short_arg(arg))) except Exception: pass for kw, arg in kwargs.items(): try: print('%s: %s=%s' % (' |'*debug_func.indent, kw, short_arg(arg))) except Exception: pass def debug_func(func): def ret_func(*args, **kwargs): _debug_pre_func(func, *args, **kwargs) try: return func(*args, **kwargs) except Exception as e: if debug_func.last_exc != e: print(' X'*debug_func.indent) debug_func.last_exc = e raise finally: debug_func.indent -= 1 print(' |'*debug_func.indent + "--'") try: ret_func.__dict__ = func.__dict__ except AttributeError: pass ret_func.__doc__ = func.__doc__ ret_func.__module__ = func.__module__ ret_func.__name__ = func.__name__ try: ret_func.__defaults__ = func.__defaults__ except AttributeError: pass return ret_func debug_func.indent = 0 debug_func.last_exc = None module.debug_func = debug_func def meta(*bases): meta = type(bases[0]) if bases else type class _CooperativeMeta (meta): def __new__(cls, name, bases, namespace): import types print('functions in %s:' % namespace['__qualname__']) for k, v in sorted(namespace.items()): if type(v) is types.FunctionType: print(' ', k) namespace[k] = debug_func(v) return meta(name, bases, namespace) def __init__(self, name, bases, namespace): meta.__init__(self, name, bases, namespace) return _CooperativeMeta module.meta = meta if module.DEBUG_MSG: module.debug = print def set_flagstring(value): if not DEBUG: from . import config print(config.APPNAME, config.VERSION) flags = [f for f in value.split(',') if f] print('debug flags:', *flags, flush=True) for f in flags: if f not in flag_nicks: print('unknown flag:', f) raise SystemExit(1) set_flags(flags) pybik-3.0/pybiklib/application.py0000664000175000017500000012707313167635616017354 0ustar barccbarcc00000000000000#-*- coding:utf-8 -*- # Copyright © 2009-2017 B. Clausius # # 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 . import sys, os import math from collections import namedtuple, OrderedDict from .debug import (debug, DEBUG, DEBUG_MSG, DEBUG_DRAW, DEBUG_ROTATE, DEBUG_ERROR, DEBUG_MOUSEPOS, DEBUG_LIVEQML, DEBUG_LIVESHADER, DEBUG_LIVEPLUGINS, DEBUG_FUNC, DEBUG_VFPS, DEBUG_EMPTY, ) from . import config from .settings import settings from .theme import Theme from .ext import glarea, qt from . import pluginlib from .model import Model, empty_model from .gamestate import GameState from .utils import ExceptionMeta try: _, ngettext except NameError: _ = lambda string: string ngettext = lambda singular, plural, cnt: singular if cnt == 1 else plural if DEBUG_FUNC: from .debug import meta Meta = meta(ExceptionMeta) else: Meta = ExceptionMeta class AnimType: # pylint: disable=R0903 __slots__ = () NONE, FWD, BWD, KEY, NEW = range(5) AnimType = AnimType() class MainWindow (metaclass=Meta): ### init ### def __init__(self, opts): self.games_file = opts.games_file self.qmlfile = opts.qml_file # dialogs self.preferences_dialog_created = False self.progress_dialog = None # created when needed # plugins self.plugin_helper = pluginlib.PluginHelper() self.challenge_open = False self.challenge = None # glarea self.theme = Theme() self.mirror_distance = None self.glpickdata = None self.pickdata = None self.use_cursor = False self.last_mouse_x = -1 self.last_mouse_y = -1 self.button_down_background = False self.editing_model = False self.drop_colorname = None self.drop_filename = None self.animation_active = False self.stop_requested = False self.animtype = AnimType.NONE self.gesture_total = None self.move_keys = {} self.model = empty_model self.game = GameState() Model.load_index() # needed by settings # initialize settings version = settings.load(opts.config_file) if version == 1: from . import schema schema.migrate_theme_face_N_color_image_mode(settings) values = schema.migrate_game_size_blocks_moves_position(settings) #XXX: block indices are not the same in previous version #if values is not None: # GameState.migrate_1to2(self.games_file, *values) if version < 3: from . import schema schema.migrate_2_3(settings) if opts.demo is not None: import importlib demo = importlib.import_module(opts.demo) demo.run(self) def cb_before_mainloop(self): qt.create_window(self) # UI fixedshaders = self.gl_read_shader('pick.vert'), self.gl_read_shader('pick.frag') if DEBUG_DRAW: fixedshaders += self.gl_read_shader('hud.vert'), self.theme_init() self.ui_update_cursor() glarea.init_engine() self.gl_update_background_color() self.gl_prepare_faces_atlas() glarea.set_fixedshaders(fixedshaders) self.gl_read_shaders() glarea.set_antialiasing(qt.get_samples() > 1) self.camrotation = glarea.set_rotation_xy(*self.model.default_rotation) self.last_camrotation = self.camrotation self.ui_toolbar_empty() qt.load_ui(self.qmlfile) self.ui_fill_sidepane() self.move_keys = self.get_move_key_dict() settings.connnect(self.on_settings_changed) qt.initial_resize() if DEBUG: self.init_live_hacking() def on_init_finalize(self): if DEBUG_EMPTY: self.ui_update() qt.update_sidepane() else: self.ui_load_current_game() def cb_after_mainloop(self): qt.destroy_window() def on_qml_directoryChanged(self): # only variant qtq print('reloading qml') qt.load_ui(self.qmlfile) self.ui_update() def on_reload_plugins(self): import importlib for name, module in sys.modules.items(): if name.startswith(('pybiklib.plugins.')): print('reloading', name) importlib.reload(module) self.ui_fill_sidepane() qt.update_sidepane() def init_live_hacking(self): if DEBUG_LIVEQML: # only variant qtq qt.create_filesystemwatcher(os.path.join(config.UI_DIR, 'qt'), self.on_qml_directoryChanged) if os.path.dirname(self.qmlfile) != os.path.join(config.UI_DIR, 'qt'): qt.create_filesystemwatcher(self.qmlfile, self.on_qml_directoryChanged) if DEBUG_LIVESHADER: qt.create_filesystemwatcher(config.SHADER_DIR, self.on_gl_reload_shader) if DEBUG_LIVEPLUGINS: from . import plugins qt.create_filesystemwatcher(config.PLUGINS_DIR, self.on_reload_plugins) qt.create_filesystemwatcher(os.path.dirname(plugins.__file__), self.on_reload_plugins) ### helper functions ### def theme_load_face_image(self, facekey): filename = settings['theme.faces',facekey,'image'] if not self.theme.load_face_image(facekey, filename): del settings['theme.faces',facekey,'image'] def theme_init(self): for facekey, unused_facename in Model.cache_index['facenames']: color = qt.parse_color(settings['theme.faces',facekey,'color']) self.theme.faces[facekey].color = color self.theme.faces[facekey].imagemode = settings['theme.faces',facekey,'mode'] self.theme_load_face_image(facekey) @staticmethod def get_move_key_dict(): return {qt.keyval_from_name(key): move for (move, key) in settings['draw.accels']} def ui_fill_sidepane(self): # get a list of all plugins plugins = self.plugin_helper.load_plugins() # convert plugin list to a tree structure ptree = OrderedDict() for plugin_path, func in plugins: subtree = [None, ptree, None] for name, transl in plugin_path: subtree = subtree[1].setdefault(name, [None, OrderedDict(), transl]) if plugin_path: subtree[0] = func def genplugintree(tree): for unused_name, [func, subtree, transl] in tree.items(): yield transl, func, list(genplugintree(subtree)) ptree = list(genplugintree(ptree)) qt.fill_sidepane(ptree) def on_plugin_test_idx(self, funcidx): if funcidx is not None: try: self.plugin_helper.get_function(self.game.current_state.model, funcidx) except pluginlib.PluginModelCompatError: return False return True def ui_load_game(self, mtype, size): model = Model(mtype, size) self.game.load(self.games_file, model) self.model = model self.camrotation = glarea.set_rotation_xy(*self.model.default_rotation) self.gl_update_frustum() self.gl_update_gldata() self.gl_set_transformations(self.game.current_state.rotations) self.gl_update_selection() qt.update_drawingarea() qt.set_title(_(config.APPNAME) +' – '+ str(self.game.current_state.model)) self.ui_update() qt.update_sidepane() return model.type, model.size def ui_load_current_game(self): mtype = settings['game.type'] size = settings['games',mtype,'size'] self.ui_load_game(mtype, size) def ui_load_other_game(self, mtype, size): self.ui_save_game() if self.animation_active: return assert mtype is not None self.challenge = None self.challenge_open = False mtype, size = self.ui_load_game(mtype, size) settings['game.type'] = mtype settings['games',mtype,'size'] = size on_load_other_game = ui_load_other_game def ui_save_game(self): self.game.save(self.games_file) def ui_new_game(self, solved=False): if self.animation_active: return self.game.random(count=0 if solved else -1) self.challenge_open = not solved self.gl_update_gldata() self.gl_set_transformations(self.game.current_state.rotations) self.gl_update_selection() qt.update_drawingarea() self.ui_update() def animation_start(self, move_data, stop_after, animtype): if not move_data: return False self.animation_active = True self.animtype = animtype self.stop_requested = stop_after blocks = self.game.current_state.identify_rotation_blocks( move_data.axis, move_data.slice) angle_max = 360. / self.model.symmetries[move_data.axis] axisx, axisy, axisz = self.model.axes[move_data.axis] if move_data.dir: glarea.set_animation_start(blocks, -axisx, -axisy, -axisz) else: glarea.set_animation_start(blocks, axisx, axisy, axisz) qt.animate_timer_start(0 if DEBUG_VFPS else 20, angle_max) self.gl_update_selection() qt.update_drawingarea() self.ui_toolbar_playing(self.game.mark_before) return True def ui_update_statusbar(self): '''This function must be called before any action that change the move queue length to reflect total count of moves and after each single move''' if self.editing_model: mesg = _('Press the Esc key to exit Edit Mode') self.challenge_open = False else: current = self.game.move_sequence.current_place total = self.game.move_sequence.queue_length solved = self.game.current_state.is_solved() #TRANSLATORS: substitution for {move_text} in statusbar text move_text = ngettext("{current} / {total} move", "{current} / {total} moves", total).format(current=current, total=total) #TRANSLATORS: substitution for {solved_text} in statusbar text solved_text = _('solved') if solved else _('not solved') #TRANSLATORS: statusbar text mesg = _('{move_text}, {solved_text}').format( move_text=move_text, solved_text=solved_text) if self.challenge_open and solved: self.challenge_open = False qt.show_message(_('Congratulations, you have solved the puzzle!')) qt.set_status_text(mesg) def ui_update(self): # update toolbar if self.game.move_sequence.at_start(): if self.game.move_sequence.at_end(): self.ui_toolbar_empty() else: self.ui_toolbar_first() else: if self.game.move_sequence.at_end(): self.ui_toolbar_last(self.game.move_sequence.is_mark_after(-1)) else: self.ui_toolbar_mid(self.game.move_sequence.is_mark_current()) # update formula code, pos = self.game.move_sequence.format(self.game.current_state.model) qt.set_edit_moves(code, pos) self.ui_update_statusbar() def ui_update_progress(self, step, message=None, value_max=None): if self.progress_dialog is None: from . import dialogs self.progress_dialog = dialogs.ProgressDialog() canceled = self.progress_dialog.tick(step, message, value_max) return canceled def ui_end_progress(self): if self.progress_dialog is not None: self.progress_dialog.done() ### glarea helpers ### def gl_prepare_faces_atlas(self): width, height = 0, 0 faces = [self.theme.faces[fk] for fk, fn in Model.cache_index['facenames']] atlasdata = [] for fd in faces: x = width w, h, data = fd.image width += w height = max(h, height) atlasdata.append((data, x, w, h)) w = h = 64 while w < width: w *= 2 while h < height: h *= 2 width, height = w, h for fd, (unused_data, x, w, h) in zip(faces, atlasdata): fd.texrect = (x+.5)/width, .5/height, (x+w-.5)/width, (h-.5)/height qt.set_atlas_size(width, height) for i, (data, x, w, h) in enumerate(atlasdata): glarea.set_atlas_data(i, data, x, w, h) @staticmethod def gl_update_background_color(): glarea.set_background_color(*qt.parse_color_f(settings['theme.bgcolor'])) @staticmethod def gl_update_samples(): if qt.get_samples(): samples = settings['draw.samples'] samples = 2**samples if samples == 1: glarea.set_antialiasing(False) else: glarea.set_antialiasing(True) qt.update_drawingarea() @staticmethod def gl_update_zoom(): zoom = settings['draw.zoom'] glarea.set_frustum(0, zoom) qt.update_drawingarea() def gl_update_selection(self): if self.animation_active: if self.pickdata is not None: self.pickdata = None self.ui_update_cursor() return if self.use_cursor: qt.set_pick_requested(True) qt.update_drawingarea() def ui_update_cursor(self): if not self.use_cursor: return if self.pickdata is None or self.button_down_background: index = -1 elif self.pickdata.angle is None: index = -2 else: index = int((self.pickdata.angle+180) / 22.5 + 0.5) % 16 qt.set_cursor(index) def ui_unset_cursor(self): if self.use_cursor: qt.unset_cursor() def gl_set_transformations(self, rotations): self.rotations = rotations glarea.set_transformations(rotations) def gl_update_gldata(self, editing=False): selection_mode = 0 if editing else settings['draw.selection'] glmodeldata, self.glpickdata = self.model.gl_vertex_data(selection_mode, self.theme, self.mirror_distance) glarea.set_data(*glmodeldata) use_cursor = selection_mode != 2 if use_cursor != self.use_cursor: if use_cursor: self.use_cursor = use_cursor self.ui_update_cursor() else: self.ui_unset_cursor() self.use_cursor = use_cursor def gl_update_frustum(self): #TODO: The bounding_sphere_radius is optimised for the far clipping plane, # for the near clipping plane the radius without the mirror_distance # would be sufficient. s = max(self.model.sizes) if self.model.sizes else 1 if settings['draw.mirror_faces']: self.mirror_distance = settings['draw.mirror_distance'] * s sm = s + self.mirror_distance else: self.mirror_distance = None sm = s bounding_sphere_radius = math.sqrt(2*s*s + sm*sm) glarea.set_frustum(bounding_sphere_radius, settings['draw.zoom']) def ui_set_editing_mode(self, enable): self.editing_model = enable self.gl_update_gldata(editing=enable) self.gl_update_selection() @staticmethod def gl_read_shader(filename): if DEBUG_MSG or DEBUG_LIVESHADER: print('Loading shader:', filename) filename = os.path.join(config.SHADER_DIR, filename) with open(filename, 'rb') as sfile: source = sfile.read() return source @classmethod def gl_read_shaders(self): shadername = settings['draw.shader_nick'] shaders = self.gl_read_shader(shadername+'.vert'), self.gl_read_shader(shadername+'.frag') glarea.set_shaders(*shaders) def gl_reload_shader(self): self.gl_read_shaders() qt.update_drawingarea() on_gl_reload_shader = gl_reload_shader def ui_update_dropped_color(self): if self.pickdata is not None: pickdata = self.pickdata if type(pickdata) is list: pickdata = pickdata[0] unused_idx, unused_rotnum, rot = self.rotations[pickdata.blockpos] colorsym = self.model.face_symbolic_to_face_color(pickdata.symbol, rot) colornum = self.model.faces.index(colorsym) facekey = self.model.facekeys[colornum] settings['theme.faces',facekey,'color'] = self.drop_colorname else: settings['theme.bgcolor'] = self.drop_colorname def ui_update_dropped_file(self): if self.pickdata is not None: pickdata = self.pickdata if type(pickdata) is list: pickdata = pickdata[0] unused_idx, unused_rotnum, rot = self.rotations[pickdata.blockpos] colorsym = self.model.face_symbolic_to_face_color(pickdata.symbol, rot) colornum = self.model.faces.index(colorsym) facekey = self.model.facekeys[colornum] settings['theme.faces',facekey,'image'] = self.drop_filename else: debug('Background image is not supported.') ### application handlers ### def on_closing(self): settings.disconnect() self.ui_save_game() settings.flush() def on_settings_timer_timeout(self): settings.flush() def on_settings_changed(self, key): qt.settings_timer_start() if key is None: return if key == 'draw.accels': self.move_keys = self.get_move_key_dict() elif key == 'draw.speed': qt.set_animation_speed() elif key == 'draw.shader': self.gl_reload_shader() elif key == 'draw.samples': self.gl_update_samples() elif key == 'draw.selection': self.gl_update_gldata() self.gl_update_selection() qt.update_drawingarea() elif key in ['draw.mirror_faces', 'draw.mirror_distance']: self.gl_update_frustum() self.gl_update_gldata() self.gl_update_selection() qt.update_drawingarea() elif key.startswith('theme.faces.'): facekey, faceattr = key.split('.')[2:] if faceattr == 'color': color = qt.parse_color(settings['theme.faces',facekey,'color']) self.theme.faces[facekey].color = color self.gl_update_gldata() elif faceattr == 'image': self.theme_load_face_image(facekey) self.gl_prepare_faces_atlas() self.gl_update_gldata() elif faceattr == 'mode': self.theme.faces[facekey].imagemode = settings['theme.faces',facekey,'mode'] self.gl_update_gldata() qt.update_drawingarea() elif key == 'theme.bgcolor': self.gl_update_background_color() qt.update_drawingarea() elif key == 'draw.zoom': self.gl_update_zoom() else: debug('Unknown settings key changed:', key) def on_key_pressed(self, key, modifiers, fromdrawingarea): if DEBUG_ERROR and key == qt.QtKeys.Key_Period: print('DEBUG_ERROR') qt.show_message('DEBUG_ERROR from on_key_pressed') return True if fromdrawingarea: if modifiers & (qt.QtKeys.ShiftModifier | qt.QtKeys.ControlModifier): pass elif key == qt.QtKeys.Key_Right: self.camrotation_changed(2, 0) return True elif key == qt.QtKeys.Key_Left: self.camrotation_changed(-2, 0) return True elif key == qt.QtKeys.Key_Up: self.camrotation_changed(0, -2) return True elif key == qt.QtKeys.Key_Down: self.camrotation_changed(0, 2) return True if key == qt.QtKeys.Key_Escape: self.ui_set_editing_mode(False) self.ui_update() return True try: move = self.move_keys[key | modifiers] except KeyError: return False else: if self.animation_active and self.animtype != AnimType.KEY: return True if not self.animation_active: self.game.move_sequence.truncate() self.game.move_sequence.parse(move, len(move), self.game.current_state.model) self.ui_update() if not self.animation_active: move_data = self.game.step_next() self.animation_start(move_data, stop_after=False, animtype=AnimType.KEY) return True ### GL area handlers ### def animation_stop(self): self.animation_active = False self.stop_requested = False qt.animate_timer_stop() def animation_ending(self): self.gl_set_transformations(self.game.current_state.rotations) if not self.stop_requested: # go again self.ui_update_statusbar() if self.animtype == AnimType.BWD: move_data = self.game.step_back() else: move_data = self.game.step_next() if self.animation_start(move_data, stop_after=False, animtype=self.animtype): self.stop_requested = False self.gl_update_selection() qt.update_drawingarea() return self.animation_stop() self.ui_update() self.gl_update_selection() qt.update_drawingarea() on_animation_ending = animation_ending PickData = namedtuple('PickData', 'maxis mslice mdir blockpos symbol angle') def gl_resolve_pickindex(self, index): if not index: return None try: maxis, mslice, mdir, blockpos, symbol, arrowdir = self.glpickdata[index] except IndexError: #FIXME: should not happen, but it does return None if maxis is None: pickdata = [] for maxis, mslice, arrowdir in mslice: angle = glarea.get_cursor_angle(arrowdir) pickdata.append(self.PickData(maxis, mslice, mdir, blockpos, symbol, angle)) return pickdata if arrowdir is None: angle = None else: angle = glarea.get_cursor_angle(arrowdir) pickdata = self.PickData(maxis, mslice, mdir, blockpos, symbol, angle) return pickdata def debug_update_pick_text(self): if self.pickdata is not None: pos = self.pickdata.blockpos face = self.model.faces.index(self.pickdata.symbol) idx, unused_rotnum, rot = self.rotations[self.pickdata.blockpos] colorsym = self.model.face_symbolic_to_face_color(self.pickdata.symbol, rot) angle = self.pickdata.angle and format(self.pickdata.angle, '.1f') text = ('idx {idx}, pos {pos} {indices}, rot {rot!r}\n' 'face {0.symbol} ({face}), color {colorsym}\n' 'axis {0.maxis}, slice {0.mslice}, dir {0.mdir}, angle {angle}' ).format(self.pickdata, idx=idx, pos=pos, indices=self.model.cell_indices[pos], rot=rot, colorsym=colorsym, angle=angle, face=face) qt.set_debug_text(text) def mouse_rotate_picked_slice(self, total, reverse): pd = self.pickdata move = pd and (pd.maxis, (-1 if total else pd.mslice), (not pd.mdir if reverse else pd.mdir)) self.game.set_next(move) self.ui_update_statusbar() move_data = self.game.step_next() self.animation_start(move_data, stop_after=False, animtype=AnimType.NEW) def mouse_start_gesture(self, x, y, height): self.last_mouse_x = x self.last_mouse_y = y self.last_camrotation = self.camrotation glarea.set_pick_position(x, height-y) qt.set_pick_requested(True) qt.update_drawingarea() def mouse_get_gesture_move(self, x, y, total): pds = self.pickdata if not pds: return None dx = x - self.last_mouse_x dy = y - self.last_mouse_y if dx == dy == 0: return None angle = (math.atan2(-dx, dy) * 180. / math.pi) % 360. mangle = 360. * 2 move = None for pd in pds: tangle = (20. if pd.mslice == -1 else 0.) dangle = min((angle-pd.angle)%360., (pd.angle-angle)%360.) + tangle if dangle < mangle: mangle = dangle move = (pd.maxis, (-1 if total else pd.mslice), pd.mdir) dangle = min((angle-pd.angle+180)%360., (pd.angle-angle+180)%360.) + tangle if dangle < mangle: mangle = dangle move = (pd.maxis, (-1 if total else pd.mslice), not pd.mdir) return move def mouse_rotate_gesture_slice(self, x, y): if self.gesture_total is None: return None move = self.mouse_get_gesture_move(x, y, self.gesture_total) self.gesture_total = None if move is None: return self.game.set_next(move) self.ui_update_statusbar() move_data = self.game.step_next() self.animation_start(move_data, stop_after=False, animtype=AnimType.NEW) def mouse_swap_picked_block(self): pd = self.pickdata self.game.swap_block(pd.blockpos, pd.maxis, pd.mslice, pd.mdir) self.gl_set_transformations(self.game.current_state.rotations) def mouse_rotate_picked_block(self, rdir): blockpos = self.pickdata.blockpos self.game.rotate_block(blockpos, rdir) self.gl_set_transformations(self.game.current_state.rotations) def camrotation_start(self, x=None, y=None): self.button_down_background = True if x is not None: self.last_mouse_x = x self.last_mouse_y = y self.last_camrotation = self.camrotation def camrotation_changed(self, dx, dy): rx, ry = self.camrotation self.camrotation = glarea.set_rotation_xy(rx+dx, ry+dy) #TODO: configurable rotation methods #glarea.set_rotation_rel(dx, dy) self.gl_update_selection() qt.update_drawingarea() def camrotation_end(self): self.button_down_background = False self.gl_update_selection() def on_mouse_pressed(self, modifiers, button, x, y, height): if DEBUG_MOUSEPOS: print('mouse press modifiers={} button={} x={} y={}'.format(modifiers, button, x, y)) total = modifiers & qt.QtKeys.ControlModifier if settings['draw.selection'] == 2: self.gesture_total = total self.mouse_start_gesture(x, y, height) elif self.pickdata is not None: if self.animation_active: return # make a move if self.editing_model: if modifiers & qt.QtKeys.ControlModifier: if button == qt.QtKeys.LeftButton: self.mouse_rotate_picked_block(False) elif button == qt.QtKeys.RightButton: self.mouse_rotate_picked_block(True) else: if button == qt.QtKeys.LeftButton: self.mouse_swap_picked_block() else: if button == qt.QtKeys.LeftButton: self.mouse_rotate_picked_slice(total, False) elif button == qt.QtKeys.RightButton and settings['draw.selection_nick'] == 'simple': self.mouse_rotate_picked_slice(total, True) elif button == qt.QtKeys.LeftButton: self.camrotation_start(x, y) qt.update_drawingarea() def on_mouse_released(self, x, y): if DEBUG_MOUSEPOS: print('mouse release x={} y={}'.format(x, y)) if self.button_down_background: self.camrotation_end() else: self.mouse_rotate_gesture_slice(x, y) def on_camrotation_changed(self, dx, dy): # only variant qtq self.camrotation_changed(dx, dy) def on_mouse_entered(self): # only variant qtq self.ui_update_cursor() def on_mouse_moved(self, buttons, x, y, height, pixeldensity): if self.use_cursor: glarea.set_pick_position(x, height-y) if DEBUG_MOUSEPOS: print('mouse {} buttons={} x={} y={}'.format('move' if buttons else 'hover', buttons, x, height-y)) if not (buttons and self.button_down_background): self.gl_update_selection() return # perform rotation rx, ry = self.last_camrotation dx = (x - self.last_mouse_x) / pixeldensity * 4 dy = (y - self.last_mouse_y) / pixeldensity * 4 self.camrotation = glarea.set_rotation_xy(rx+dx, ry+dy) qt.update_drawingarea() def on_mouse_drop_color(self, x, height_y, color): if DEBUG_MOUSEPOS: print('dropped color', x, height_y, color) glarea.set_pick_position(x, height_y) self.drop_colorname = color qt.set_pick_requested(True) qt.update_drawingarea() def on_mouse_drop_url(self, x, height_y, url): if DEBUG_MOUSEPOS: print('dropped url', x, height_y, url) glarea.set_pick_position(x, height_y) import urllib.parse, urllib.request type, filename = urllib.parse.splittype(url) host, filename = urllib.parse.splithost(filename) if type != 'file' or host: debug('"%s" not a local file.' % url) return filename = urllib.request.url2pathname(filename) if not filename or not os.path.exists(filename): debug('"%s" not found.' % filename) return self.drop_filename = filename qt.set_pick_requested(True) qt.update_drawingarea() def on_mouse_zoom(self, delta): if DEBUG_MOUSEPOS: print('wheel event', delta) zoom = settings['draw.zoom'] * math.pow(1.1, -delta) zoom_min, zoom_max = settings['draw.zoom_range'] if zoom < zoom_min: zoom = zoom_min if zoom > zoom_max: zoom = zoom_max settings['draw.zoom'] = zoom self.gl_update_selection() def on_picking_result(self, index): if self.animation_active: if self.pickdata is not None: self.pickdata = None self.ui_update_cursor() return self.pickdata = self.gl_resolve_pickindex(index) self.ui_update_cursor() if DEBUG_DRAW: self.debug_update_pick_text() qt.update_drawingarea() if self.drop_colorname is not None: self.ui_update_dropped_color() self.drop_colorname = None elif self.drop_filename is not None: self.ui_update_dropped_file() self.drop_filename = None elif not self.use_cursor and self.pickdata is None: self.camrotation_start() qt.set_pick_requested(False) ### sidepane handlers ### def ui_plugin_activated(self, func_idx): if self.animation_active: return if func_idx < 0: return if self.game.current_state.model is empty_model: return try: func = self.plugin_helper.get_function(self.game.current_state.model, func_idx) except pluginlib.PluginModelCompatError as e: qt.show_message(e.args[0]) return # model accepted, now run the plugin function game = self.game.copy() try: func(game) except pluginlib.PluginSolverAbort as e: self.challenge = None qt.show_message(e.args[0]) return if game.plugin_mode == 'append': # append moves self.challenge_open = False position = self.game.move_sequence.mark_and_extend(game.move_sequence) changed = position >= 0 if changed: self.game.goto_next_pos(position) changed = 'animate' elif game.plugin_mode == 'replace': # replace game self.game.initial_state = game.initial_state self.game.current_state = game.current_state self.game.move_sequence = game.move_sequence self.challenge_open = False changed = True elif game.plugin_mode == 'challenge': # challenge self.game.initial_state = game.initial_state self.game.current_state = game.initial_state.copy() self.game.move_sequence.reset() self.challenge = func_idx self.challenge_open = True changed = True else: assert False if changed: self.gl_set_transformations(self.game.current_state.rotations) self.ui_update() if changed == 'animate': move_data = self.game.step_next() self.animation_start(move_data, stop_after=False, animtype=AnimType.NEW) qt.update_drawingarea() on_plugin_activated = ui_plugin_activated ### action handlers ### def on_action_challenge_triggered(self): if self.challenge is None: self.ui_new_game(solved=False) else: self.ui_plugin_activated(self.challenge) def on_action_new_solved_triggered(self): self.ui_new_game(solved=True) def on_action_selectmodel_triggered(self): from . import dialogs return dialogs.ModelSelection() def on_action_quit_triggered(self): # only variant qtq qt.close_mainwindow() def on_action_preferences_triggered(self): if not self.preferences_dialog_created: from . import dialogs sample_buffers = max(qt.get_samples(), 1) dialogs.init_preferences(sample_buffers) self.preferences_dialog_created = True qt.show_preferences() def on_action_reset_rotation_triggered(self): '''Reset cube rotation''' self.camrotation = glarea.set_rotation_xy(*self.model.default_rotation) qt.update_drawingarea() def on_action_rewind_triggered(self): if self.animation_active: self.stop_requested = True if self.animtype == AnimType.BWD: self.game.step_next() # undo the already applied move self.game.goto_prev_mark() self.animation_ending() else: needs_update = self.game.goto_prev_mark() self.gl_set_transformations(self.game.current_state.rotations) if needs_update: qt.update_drawingarea() self.ui_update() def on_action_previous_triggered(self): if self.animation_active: if self.animtype == AnimType.BWD: # request another BWD move self.stop_requested = False else: self.stop_requested = True self.game.step_back() self.animation_ending() self.stop_requested = True else: move_data = self.game.step_back() self.animation_start(move_data, stop_after=True, animtype=AnimType.BWD) def on_action_stop_triggered(self): if self.animation_active: if self.stop_requested: self.animation_ending() else: self.stop_requested = True def on_action_play_triggered(self): if not self.animation_active: move_data = self.game.step_next() self.animation_start(move_data, stop_after=False, animtype=AnimType.FWD) def on_action_next_triggered(self): if self.animation_active: sr = self.stop_requested if self.animtype == AnimType.BWD: self.stop_requested = True self.game.step_next() else: self.stop_requested = False self.animation_ending() self.stop_requested = sr else: move_data = self.game.step_next() self.animation_start(move_data, stop_after=True, animtype=AnimType.FWD) def on_action_forward_triggered(self): if self.animation_active: self.stop_requested = True if self.animtype != AnimType.BWD: self.game.step_back() # undo the already applied move self.game.goto_next_mark() self.animation_ending() else: self.game.goto_next_mark() self.gl_set_transformations(self.game.current_state.rotations) qt.update_drawingarea() self.ui_update() def on_action_mark_set_triggered(self): self.game.move_sequence.mark_current(True) self.ui_update() def on_action_mark_remove_triggered(self): self.game.move_sequence.mark_current(False) self.ui_update() def on_action_initial_state_triggered(self): if self.animation_active: return self.game.set_as_initial_state() self.ui_update() ### edit formula handlers ### def on_edit_finished(self, code, pos): if self.animation_active: self.animation_stop() self.game.set_code(code, pos) self.gl_set_transformations(self.game.current_state.rotations) qt.update_drawingarea() self.ui_update() def on_edit_moves_nextword(self, code, pos): # only variant qtw moves, mpos, cpos = self.game.move_sequence.new_from_code(code, pos, self.game.current_state.model) moves.current_place = mpos if cpos <= pos: moves.advance() unused_code, pos = moves.format(self.game.current_state.model) return pos def on_edit_moves_prevword(self, code, pos): # only variant qtw moves, mpos, cpos = self.game.move_sequence.new_from_code(code, pos, self.game.current_state.model) moves.current_place = mpos if cpos >= pos: moves.retard() unused_code, pos = moves.format(self.game.current_state.model) return pos def on_edit_moves_swapnext(self, code, pos): # only variant qtw moves, mpos, cpos = self.game.move_sequence.new_from_code(code, pos, self.game.current_state.model) moves.current_place = mpos if pos < cpos: moves.retard() moves.swapnext() code, pos = moves.format(self.game.current_state.model) qt.set_edit_moves(code, pos) def on_edit_moves_swapprev(self, code, pos): # only variant qtw moves, mpos, cpos = self.game.move_sequence.new_from_code(code, pos, self.game.current_state.model) moves.current_place = mpos if pos < cpos: moves.retard() moves.swapprev() code, pos = moves.format(self.game.current_state.model) qt.set_edit_moves(code, pos) ### misc ### def on_action_edit_cube_triggered(self): self.animation_stop() self.game.goto_start() if DEBUG_ROTATE: self.game.current_state.debug_blocksymbols(allsyms=True) self.gl_set_transformations(self.game.current_state.rotations) self.ui_set_editing_mode(True) self.ui_update() def on_dialog_text(self, key): from . import dialogs return dialogs.DialogValues.get_text(key) def dialog_get_image_data(self, imagefile): # only variant qtw stockfiles = Theme.textures.get_icons() index_icon = 1 + len(stockfiles) if imagefile.startswith('/'): index = index_icon else: try: index = stockfiles.index(imagefile) + 1 except ValueError: index = 0 imagefile = None return index_icon, imagefile, index def on_dialog_change_current_face(self, current_facekey): # only variant qtw color = settings['theme.faces',current_facekey,'color'] imageindex_icon, imagefile, imageindex = self.dialog_get_image_data(settings['theme.faces',current_facekey,'image']) imagemode = settings['theme.faces',current_facekey,'mode'] qt.set_preferences_current_face_theme(color, imageindex_icon, imagefile, imageindex, imagemode) def on_dialog_change_current_image(self, current_facekey, index): # only variant qtw stockfiles = Theme.textures.get_icons() if index == 0: filename = '' elif 0 < index <= len(stockfiles): filename = stockfiles[index-1] else: filename = qt.get_filedialog_imagefile() if filename == '': # canceled, set the old image filename = settings['theme.faces',current_facekey,'image'] index_icon, imagefile, index = self.dialog_get_image_data(filename) qt.set_combobox_current_image(index_icon, imagefile, index) else: index_icon, imagefile, index = self.dialog_get_image_data(filename) qt.set_combobox_current_image(index_icon, imagefile, -1) settings['theme.faces',current_facekey,'image'] = filename def on_dialog_reset_current_image(self, current_facekey): # only variant qtw del settings['theme.faces',current_facekey,'image'] index_icon, imagefile, index = self.dialog_get_image_data(settings['theme.faces',current_facekey,'image']) qt.set_combobox_current_image(index_icon, imagefile, index) # a: rewind enabled, previous enabled # b: play enabled, next enabled, forward enabled # c: add_mark enabled, remove_mark enabled # d: stop visible, play !visible # e: add_mark visible, remove_mark !visible # a b c d e def ui_toolbar_empty(self): qt.set_toolbar_state((0, 0, 0, 0, 0)) def ui_toolbar_first(self): qt.set_toolbar_state((0, 1, 0, 0, 0)) def ui_toolbar_mid(self, mark): qt.set_toolbar_state((1, 1, 1, 0, not mark)) def ui_toolbar_last(self, mark): qt.set_toolbar_state((1, 0, 1, 0, not mark)) def ui_toolbar_playing(self, mark): qt.set_toolbar_state((1, 1, 0, 1, not mark)) pybik-3.0/pybiklib/model.py0000664000175000017500000011575413167650010016135 0ustar barccbarcc00000000000000#!/usr/bin/python3 # -*- coding: utf-8 -*- # Copyright © 2012-2017 B. Clausius # # 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 . import sys, os import re import pickle from array import array from enum import Enum from .debug import (debug, DEBUG_DRAW, DEBUG_DRAWNORMALS, DEBUG_DRAWAXES, DEBUG_NOPICK, DEBUG_NOBEVEL, DEBUG_NOLABEL, DEBUG_NOBLACK, DEBUG_NOCACHE, DEBUG_MODELFAST, DEBUG_CACHEUPDATE) from .config import MODELS_DIR from .utils import filebyteorder, epsilon, get_texcoords_range, Vector try: _ except NameError: _ = lambda t: t def get_texcoords(vector, normal, minx, maxx, miny, maxy): x, y = vector.rotationyx_normal(normal) return (x - minx) / (maxx - minx), (y - miny) / (maxy - miny) class EmptyModel: type = '' symbols = '' symbolsI = '' faces = '' default_rotation = (0., 0.) size = sizes = () blocks = [] cell_count = 0 cells_visible_faces = [] def __init__(self, *unused_args): pass def __str__(self): return 'no puzzle' def gl_vertex_data(self, *unused_args): return (0, b'', (0, 0, 0, 0, 0, 0), ([], 0, 0, 0), []), [()] class Model: bevel_width = 0.01 if DEBUG_NOBEVEL else 0.1 cache_index = {} cache_data = {} cache_vectors = {} if DEBUG_CACHEUPDATE else [] def __init__(self, mtype, size): items = self.cache_index['type'][mtype].items() self.type = mtype for key, value in items: setattr(self, key, value) self.mformat = _(self.mformat) # size for UI and config, sizes for plugins self.size = self.cache_index['normsize'][mtype].get(size, self.defaultsize) self.sizes, filename = self.cache_index['sizes'][mtype][self.size] self.load_data(filename) self.cell_count = len(self.cell_indices) self.rotation_indices = {s:i for i, s in enumerate(self.rotation_symbols)} self._inplace_rotations = None if self.slicesmode == 'all': self.ignored_slice = [None for sz in self.sizes] elif self.slicesmode == 'mid': self.ignored_slice = [(sz-1)//2 for sz in self.sizes] elif self.slicesmode == 'last1': self.ignored_slice = [(None if a == 1 else sz-1) for a, sz in enumerate(self.sizes)] else: assert False, self.slicesmode #XXX: self.beveled_fvertdata generated here from a nested list, but # the idices come from the modeldata files self.beveled_fvertdata = self.gl_bevel_faces() @property def inplace_rotations(self): if self._inplace_rotations is None: # slow and only used in edit mode self._inplace_rotations = [] for cellidx in range(self.cell_count): inplace_rotations = [] for rotsym, blocknum_blocknum2 in self.rotated_position.items(): for blocknum, blocknum2 in enumerate(blocknum_blocknum2): if blocknum == blocknum2 == cellidx and rotsym: inplace_rotations.append(rotsym) self._inplace_rotations.append(sorted(inplace_rotations, key=len)[:2]) return self._inplace_rotations def is_user_slice(self, iaxis, mslice): return self.ignored_slice[iaxis] is None or self.ignored_slice[iaxis] != mslice def __str__(self): return self.mformat.format(*self.size) @classmethod def load_index(cls): if DEBUG_NOCACHE: try: from buildlib import modeldata except ImportError: pass else: debug('generating model index') cls.cache_index = modeldata.pool_create_indexdata() return indexfilename = os.path.join(MODELS_DIR, 'f00index' if DEBUG_MODELFAST else 'd00index') debug('loading model index:', indexfilename) with open(indexfilename, 'rb') as indexfile: cls.cache_index = pickle.load(indexfile) @staticmethod def read_vectors(datafile): vlen = array('I') vlen.fromfile(datafile, 1) if sys.byteorder != filebyteorder: vlen.byteswap() vlen = vlen[0] vectors = array('f') vectors.fromfile(datafile, vlen) if sys.byteorder != filebyteorder: vectors.byteswap() return vectors @staticmethod def isplit3_vectors(vals): it = iter(vals) for x in it: try: yield Vector((x, next(it), next(it))) except StopIteration: raise ValueError('len must be a multiple of 3') @classmethod def _load_data(self, filename): if DEBUG_NOCACHE: try: from buildlib import modeldata except ImportError: pass else: print('generating model data:', filename) _data, _vectors, *unused = modeldata.pool_create_modelfiledata(filename) _vectors = [Vector(v) for v in _vectors] return _data, _vectors filename = os.path.join(MODELS_DIR, filename) debug('loading model data:', filename) with open(filename, 'rb') as datafile: data = pickle.load(datafile) vectors = list(self.isplit3_vectors(self.read_vectors(datafile))) return data, vectors def load_data(self, filename): debug('requesting model data:', filename, self.type, self.sizes) try: data = (self.cache_data[filename] if DEBUG_CACHEUPDATE else self.cache_data)[self.type][self.sizes] except KeyError: data, vectors = self._load_data(filename) if DEBUG_CACHEUPDATE: self.cache_data[filename] = data self.cache_vectors[filename] = vectors else: self.__class__.cache_data = data self.__class__.cache_vectors = vectors data = data[self.type][self.sizes] self.vectors = self.cache_vectors[filename] if DEBUG_CACHEUPDATE else self.cache_vectors for key, value in data.items(): setattr(self, key, value) @classmethod def from_string(cls, modelstr): if modelstr == '*': return '*', '*', (), None re_model = r'''^(\w+) (?: \s+(\w+) (?: \s*(\W) \s*(\w+) (?: \s*\3 \s*(\w+) )?)? (?:\s+with \s+(.+) )?)?\s*$''' match = re.match(re_model, modelstr, re.X) if match is None: raise ValueError('Invalid model: ' + modelstr) #TODO: len(sizes) > 3 mtype, width, height, depth, exp = match.group(1, 2, 4, 5, 6) if mtype not in cls.cache_index['types']: raise ValueError('Unknown model type %r' % mtype) def convert_if_int(value): if value is None: return value try: return int(value) except ValueError: return value sizes = tuple(convert_if_int(s) for s in (width, height, depth)) return modelstr, mtype, sizes, exp def norm_symbol(self, sym): try: return self.normal_rotation_symbols[sym] except KeyError: new_sym = '' for c in sym: try: new_sym = self.normal_rotation_symbols[new_sym+c] except KeyError: raise ValueError('invalid symbol:', sym) return new_sym def blocksym_to_blockpos(self, blocksym): for i, faces in enumerate(self.cells_visible_faces): #FIXME: different blocks can have same visible faces (eg. edges for 4-Cubes) if sorted(faces) == sorted(list(blocksym)): return i raise ValueError('Invalid block symbol:', blocksym) def blockpos_to_blocksym(self, blockpos, rotsym): #TODO: use cells_visible_faces, see blocksym_to_blockpos def axisidx_to_sym(axis, idx): if idx <= self.sizes[axis] // 2: sym = self.symbols[axis] else: idx = self.sizes[axis]-1 - idx sym = self.symbolsI[axis] if idx == 0: # skip idx for corners return sym, self.face_symbolic_to_face_color(sym, rotsym) elif idx == 1 and self.sizes[axis] == 3: # for size == 3 there is only one edge return '', '' else: # symbol with index to distinguish edge, but no color because the face is not visible return sym + str(idx+1), '?' #FIXME: only for models with 3 axes, function only used with debug flags x, y, z = self.cell_indices[blockpos] symx, colorsymx = axisidx_to_sym(0, x) symy, colorsymy = axisidx_to_sym(1, y) symz, colorsymz = axisidx_to_sym(2, z) return symx + symy + symz, colorsymx + colorsymy + colorsymz def face_symbolic_to_face_color(self, face, rot): for k, v in self.face_permutations[rot].items(): if v == face: return k assert False, (face, rot) def sym_to_move(self, sym, mslice=-1): try: maxis = self.symbols.index(sym) return maxis, mslice, False except ValueError: maxis = self.symbolsI.index(sym) return maxis, mslice, True def normalize_complete_moves(self, moves): syms = ''.join((self.symbols if not mdir else self.symbolsI)[maxis] for maxis, unused_mslice, mdir in moves) syms = self.norm_symbol(syms) for sym in syms: yield self.sym_to_move(sym) def rotate_symbolic(self, axis, rdir, block, sym): rsym = (self.symbols if not rdir else self.symbolsI)[axis] block = self.rotated_position[rsym][block] sym = self.norm_symbol(sym + rsym) return block, sym def rotate_move(self, complete_move, move): caxis, unused_cslice, cdir = complete_move maxis, mslice, mdir = move caxissym = (self.symbols if cdir else self.symbolsI)[caxis] maxissym = (self.symbols if not mdir else self.symbolsI)[maxis] raxissym = self.face_permutations[caxissym][maxissym] raxis, unused_rslice, rdir = self.sym_to_move(raxissym) if mdir != rdir: mslice = self.sizes[raxis] - 1 - mslice return raxis, mslice, rdir class MoveParallel (Enum): NO, LT, COMPAT, GT = range(4) def is_parallel(self, iaxis1, slice1, iaxis2, slice2): for idx in range(self.cell_count): pos, rot = idx, '' bslice = self.cell_indices[pos][iaxis1] if bslice != slice1: continue pos, rot = self.rotate_symbolic(iaxis1, False, pos, rot) bslice = self.cell_indices[pos][iaxis2] if bslice != slice2: continue pos, rot = self.rotate_symbolic(iaxis2, False, pos, rot) bslice = self.cell_indices[pos][iaxis1] if bslice == slice1: pos, rot = self.rotate_symbolic(iaxis1, True, pos, rot) bslice = self.cell_indices[pos][iaxis2] if bslice == slice2: pos, rot = self.rotate_symbolic(iaxis2, True, pos, rot) if idx != pos or rot != '': return False else: return True assert False def parallel(self, move1, move2): if move1.axis == move2.axis: if move1.slice == move2.slice: return self.MoveParallel.COMPAT if move1.slice < move2.slice: return self.MoveParallel.LT if move1.slice > move2.slice: return self.MoveParallel.GT if self.is_parallel(move1.axis, move1.slice, move2.axis, move2.slice): if move1.axis < move2.axis: return self.MoveParallel.LT else: # move1.axis > move2.axis return self.MoveParallel.GT return self.MoveParallel.NO def _get_selected_moves(self, cellidx, vector): for iaxis, axis in enumerate(self.axes): vda = vector.dot(axis) if -epsilon < vda < epsilon: continue mslice = self.cell_indices[cellidx][iaxis] if mslice is not None: if not self.is_user_slice(iaxis, mslice): mslice = -1 yield iaxis, mslice, vda def _get_other_moves(self, cellidx, vector): '''Moves with axes that are not parallel to vector''' for iaxis, axis in enumerate(self.axes): vca = vector.cross(axis) if all(-epsilon < x < epsilon for x in vca): continue mslice = self.cell_indices[cellidx][iaxis] if mslice is not None: if not self.is_user_slice(iaxis, mslice): mslice = -1 yield iaxis, mslice, vca.normalised() def get_selected_moves2(self, cellidx, vert1, vert2): res = sorted(self._get_selected_moves(cellidx, vert2 - vert1), key=lambda m: -abs(m[2])) a1, s1, d1 = res[0] if len(res) == 1: return True, (a1, s1, d1>0) a2, s2, d2 = res[1] if s1 >= 0 and s2 < 0: return True, (a1, s1, d1>0) if s1 < 0 and s2 >= 0: return True, (a2, s2, d2>0) return False, (a1, s1, d1>0, a2, s2, d2>0) def get_selected_move_center(self, cellidx, vector): moves = ((ma, ms, md) for ma, ms, md in self._get_selected_moves(cellidx, vector) if ms in [0,self.sizes[ma]-1]) ma, ms, md = max(moves, key=lambda m: abs(m[2])) return ma, ms, md>0 @staticmethod def triangulate(indices, reverse=False): indices = iter(indices) first = next(indices) prev = next(indices) for index in indices: yield first if reverse: yield index yield prev else: yield prev yield index prev = index @staticmethod def triangulate_barycentric(count, indices, reverse=False): if count == 3: index1, index2, index3 = indices yield index1, (1., 0., 0.) index2 = index2, (0., 1., 0.) index3 = index3, (0., 0., 1.) if reverse: yield index3; yield index2 else: yield index2; yield index3 elif count == 4: # +---+ 4---3 +-1-+ # | / | | / | 3 2 1 # +---+ 1---2 +-3-+ index1, index2, index3, index4 = indices index1 = index1, (1., 1., 0.) index2 = index2, (0., 1., 0.) index3 = index3, (0., 1., 1.) index4 = index4, (0., 1., 0.) if reverse: yield index1; yield index3; yield index2; yield index1; yield index4; yield index3 else: yield index1; yield index2; yield index3; yield index1; yield index3; yield index4 elif count == 5: # +---+ 4---3 +---+ # /| /| /| /| 2| /| # + | / | 5 | / | + 3 3 2 # \|/ | \|/ | 1|/ | # +---+ 1---2 +-1-+ index1, index2, index3, index4, index5 = indices index1 = index1, (0., 1., 1.) index2 = index2, (0., 0., 1.) index3 = index3, (1., 0., 1.) index4 = index4, (1., 0., 1.) index5 = index5, (0., 0., 1.) if reverse: yield index1; yield index3; yield index2; yield index1; yield index4; yield index3 yield index1; yield index5; yield index4 else: yield index1; yield index2; yield index3; yield index1; yield index3; yield index4 yield index1; yield index4; yield index5 elif count == 6: # +---+ 1---6 +---+ # /|\ |\ /|\ |\ 1|\ |1 # + | \ | + 2 | \ | 5 + 3 \ 3 + # \| \|/ \| \|/ 2| \|2 # +---+ 3---4 +---+ index1, index2, index3, index4, index5, index6 = indices index1a = index1, (0., 1., 1.) index1b = index1, (0., 1., 1.) index2 = index2, (0., 0., 1.) index3 = index3, (1., 0., 1.) index4 = index4, (1., 0., 1.) index5 = index5, (0., 0., 1.) index6 = index6, (0., 1., 1.) if reverse: yield index1a; yield index3; yield index2; yield index1b; yield index4; yield index3 yield index1b; yield index6; yield index4; yield index4; yield index6; yield index5 else: yield index1a; yield index2; yield index3; yield index1a; yield index3; yield index4 yield index1a; yield index4; yield index6; yield index4; yield index5; yield index6 else: assert False, count def pickarrowdir(self, maxis, mdir, normal): if mdir: return Vector(self.axes[maxis]).cross(normal).normalised() else: return normal.cross(Vector(self.axes[maxis])).normalised() def _gl_pick_triangles_pickdata_helper(self, cellidx, symbol, normal, vc, vert1, vert2, pickdata): one, masd = self.get_selected_moves2(cellidx, vert1, vert2) if one: maxis, mslice, mdir = masd arrowdir = self.pickarrowdir(maxis, mdir, normal) pickdata.append((maxis, mslice, mdir, cellidx, symbol, arrowdir)) else: maxis1, mslice1, mdir1, maxis2, mslice2, mdir2 = masd vert1_scaled = vc*.1 + vert1*.9 - self.vectors[self.cell_centers[cellidx]] #d = sqrt(v1² + v2² + v3² - (v1*a1 + v2*a2 + v3*a3)²) sdist11_sdist12 = abs(vert1_scaled.dot(self.axes[maxis1])) - abs(vert1_scaled.dot(self.axes[maxis2])) if self.reversepick: sdist11_sdist12 = -sdist11_sdist12 if sdist11_sdist12 < 0: arrowdir = self.pickarrowdir(maxis1, mdir1, normal) pickdata.append((maxis1, mslice1, mdir1, cellidx, symbol, arrowdir)) arrowdir = self.pickarrowdir(maxis2, mdir2, normal) pickdata.append((maxis2, mslice2, mdir2, cellidx, symbol, arrowdir)) else: arrowdir = self.pickarrowdir(maxis2, mdir2, normal) pickdata.append((maxis2, mslice2, mdir2, cellidx, symbol, arrowdir)) arrowdir = self.pickarrowdir(maxis1, mdir1, normal) pickdata.append((maxis1, mslice1, mdir1, cellidx, symbol, arrowdir)) return one def _gl_pick_triangulate(self, color1, vertsl, normal, mirror_distance): for i, verts in enumerate(vertsl): for vert in self.triangulate(verts): yield color1 + i, vert if mirror_distance is not None: mirror_offset = normal * mirror_distance vertsl = [[v + mirror_offset for v in verts] for verts in vertsl] for i, verts in enumerate(vertsl): for vert in self.triangulate(verts, reverse=True): yield color1 + i, vert def gl_pick_triangles_center(self, cellidx, edges_iverts, symbol, normal, mirror_distance, pickdata): # selection_mode: simple, no adjacent visible faces maxis, mslice, mdir = self.get_selected_move_center(cellidx, normal) color = len(pickdata) pickdata.append((maxis, mslice, mdir, cellidx, symbol, None)) verts = [self.vectors[i] for i in edges_iverts] for vert in self.triangulate(verts): yield color, vert if mirror_distance is not None: mirror_offset = normal * mirror_distance color = len(pickdata) pickdata.append((maxis, mslice, not mdir, cellidx, symbol, None)) for vert in self.triangulate(verts, reverse=True): yield color, vert + mirror_offset def gl_pick_triangles_gesture(self, cellidx, edges_iverts, symbol, normal, mirror_distance, pickdata): # selection_mode: gesture moves = list(self._get_other_moves(cellidx, normal)) color = len(pickdata) pickdata.append((None, moves, False, cellidx, symbol, None)) verts = [self.vectors[i] for i in edges_iverts] for vert in self.triangulate(verts): yield color, vert if mirror_distance is not None: mirror_offset = normal * mirror_distance for vert in self.triangulate(verts, reverse=True): yield color, vert + mirror_offset def gl_pick_triangles_edge3(self, cellidx, edges_iverts, symbol, normal, mirror_distance, pickdata): # selection_mode: simple, face is on an edge block of a tetrahedron # the first and second vertex are on the edge of the tetrahedron vert1, vert2, vert3 = (self.vectors[i] for i in edges_iverts) vc = (vert1+vert2+vert3) / 3 color1 = len(pickdata) one = self._gl_pick_triangles_pickdata_helper(cellidx, symbol, normal, vc, vert1, vert2, pickdata) if one: vertsl = [[vert1, vert2, vert3]] else: v12 = (vert1 + vert2) / 2 vertsl = [[v12, vert2, vert3], [vert1, v12, vert3]] yield from self._gl_pick_triangulate(color1, vertsl, normal, mirror_distance) def gl_pick_triangles_edge6(self, cellidx, edges_iverts, symbol, normal, mirror_distance, pickdata): # selection_mode: simple, face is on an edge block and has 6 vertices, rotates 2 slices # the first and second vertex are on the edge vert1, vert2, vert3, vert4, vert5, vert6 = (self.vectors[i] for i in edges_iverts) vc = (vert1+vert2+vert3+vert4+vert5+vert6) / 6 v12 = (vert1 + vert2) / 2 v45 = (vert4 + vert5) / 2 color = len(pickdata) one = self._gl_pick_triangles_pickdata_helper(cellidx, symbol, normal, vc, vert1, vert2, pickdata) if one: vertsl = [[vert1, vert2, vert3, vert4, vert5, vert6]] else: vertsl = [[v12, vert2, vert3, vert4, v45], [vert1, v12, v45, vert5, vert6]] yield from self._gl_pick_triangulate(color, vertsl, normal, mirror_distance) def gl_pick_triangles_edge4(self, cellidx, edges_iverts, symbol, normal, mirror_distance, pickdata): # selection_mode: simple, face is on an edge block, 4 vertices, rotate 1 or 2 slices, # the first and second vertex are on the edge vert1, vert2, vert3, vert4 = (self.vectors[i] for i in edges_iverts) vc = (vert1+vert2+vert3+vert4) / 4 color = len(pickdata) one = self._gl_pick_triangles_pickdata_helper(cellidx, symbol, normal, vc, vert1, vert2, pickdata) if one: vertsl = [[vert1, vert2, vert3, vert4]] else: #assert ncolors == 2 ec12 = (vert1 + vert2) / 2 ec34 = (vert3 + vert4) / 2 vertsl = [[ec12, vert2, vert3, ec34], [vert1, ec12, ec34, vert4]] yield from self._gl_pick_triangulate(color, vertsl, normal, mirror_distance) def gl_pick_triangles_corner34(self, cellidx, edges_iverts, symbol, normal, mirror_distance, pickdata): # selection_mode: simple, face is on a corner block, 3 or 4 vertices, # the second vert is on the corner, the first and third are on the edges if len(edges_iverts) == 3: vert1, vert2, vert3 = (self.vectors[iv] for iv in edges_iverts) vert4 = (vert3 + vert1) / 2 else: vert1, vert2, vert3, vert4 = (self.vectors[iv] for iv in edges_iverts) vc = (vert1+vert2+vert3+vert4) / 4 # first triangle color = len(pickdata) one = self._gl_pick_triangles_pickdata_helper(cellidx, symbol, normal, vc, vert1, vert2, pickdata) if one: vertsl = [[vert1, vert2, vert4]] else: ec12 = (vert1 + vert2) / 2 vertsl = [[ec12, vert2, vert4], [vert1, ec12, vert4]] # second triangle one = self._gl_pick_triangles_pickdata_helper(cellidx, symbol, normal, vc, vert2, vert3, pickdata) if one: vertsl.append([vert2, vert3, vert4]) else: ec23 = (vert2 + vert3) / 2 vertsl.extend([[ec23, vert3, vert4], [vert2, ec23, vert4]]) yield from self._gl_pick_triangulate(color, vertsl, normal, mirror_distance) def gl_pick_triangles_corner5(self, cellidx, edges_iverts, symbol, normal, mirror_distance, pickdata): # selection_mode: simple, face is on a corner block, 5 vertices, # the second vert is on the corner, the first and third are on the edges vert1, vert2, vert3, vert4, vert5 = (self.vectors[iv] for iv in edges_iverts) vc = (vert1+vert2+vert3+vert4+vert5) / 5 vc13 = (vert1 + vert3) / 2 ec45 = (vert4 + vert5) / 2 color1 = len(pickdata) one = self._gl_pick_triangles_pickdata_helper(cellidx, symbol, normal, vc, vert1, vert2, pickdata) if one: vertsl = [[vert1, vert2, ec45, vert5]] else: vertsl = [[vert1, vert2, vc13], [vert1, vc13, ec45, vert5]] one = self._gl_pick_triangles_pickdata_helper(cellidx, symbol, normal, vc, vert2, vert3, pickdata) if one: vertsl.append([vert2, vert3, vert4, ec45]) else: vertsl.extend([[vc13, vert3, vert4, ec45], [vert2, vert3, vc13]]) yield from self._gl_pick_triangulate(color1, vertsl, normal, mirror_distance) def gl_pick_triangles_any(self, cellidx, edges_iverts, symbol, normal, mirror_distance, pickdata): # either selection_mode is quadrant or weird model (size==1 in at least one dimension) verts = [self.vectors[i] for i in edges_iverts] vc = sum(verts, Vector()) / len(verts) vert1 = verts[-1] for vert2 in verts: color1 = len(pickdata) one = self._gl_pick_triangles_pickdata_helper(cellidx, symbol, normal, vc, vert1, vert2, pickdata) if one: vertsl = [[vc, vert1, vert2]] else: #assert ncolors == 2 ec = (vert1 + vert2) / 2 vertsl = [[vc, vert1, ec], [vc, ec, vert2]] yield from self._gl_pick_triangulate(color1, vertsl, normal, mirror_distance) vert1 = vert2 def gl_pick_triangles(self, selection_mode, mirror_distance, pickdata): if DEBUG_NOPICK: return for unused_fvertdata, (normal, cellidx), (fid, picktype, edges_iverts) in self.beveled_fvertdata: if picktype is None: continue symbol = self.faces[fid] if selection_mode == 0: yield from self.gl_pick_triangles_any(cellidx, edges_iverts, symbol, normal, mirror_distance, pickdata) elif selection_mode == 1: if picktype == -1: yield from self.gl_pick_triangles_any(cellidx, edges_iverts, symbol, normal, mirror_distance, pickdata) elif picktype == 0: yield from self.gl_pick_triangles_center(cellidx, edges_iverts, symbol, normal, mirror_distance, pickdata) elif picktype == 1: yield from self.gl_pick_triangles_edge3(cellidx, edges_iverts, symbol, normal, mirror_distance, pickdata) elif picktype == 2: yield from self.gl_pick_triangles_edge4(cellidx, edges_iverts, symbol, normal, mirror_distance, pickdata) elif picktype == 3: yield from self.gl_pick_triangles_corner34(cellidx, edges_iverts, symbol, normal, mirror_distance, pickdata) elif picktype == 5: yield from self.gl_pick_triangles_corner5(cellidx, edges_iverts, symbol, normal, mirror_distance, pickdata) elif picktype == 4: yield from self.gl_pick_triangles_edge6(cellidx, edges_iverts, symbol, normal, mirror_distance, pickdata) else: assert False, (selection_mode, picktype) elif selection_mode == 2: yield from self.gl_pick_triangles_gesture(cellidx, edges_iverts, symbol, normal, mirror_distance, pickdata) else: assert False, (selection_mode, picktype) def bevel_cell_label(self, cidx, c_faces): # label faces that replace the old faces for hf_face, hf_face_id, hf_verts in c_faces: fvertdata1, (fnormal, fcidx), unused = self.beveled_fvertdata[hf_face] if cidx != fcidx: fnormal = -fnormal yield hf_face_id, fnormal, [fvertdata1[v] for v in hf_verts] def bevel_cell_black(self, cidx, c_faces, c_edges, c_verts): fton = lambda fnormal, fcidx: fnormal if cidx == fcidx else -fnormal if not DEBUG_NOBEVEL: # faces that replace the old verts for v, vertdata in c_verts: vertdata = [(self.beveled_fvertdata[f][0][v], fton(*self.beveled_fvertdata[f][1])) for f in vertdata] yield vertdata # faces that replace the old edges for f1, f3, v1, v3 in c_edges: fvertdata1, finfo, unused = self.beveled_fvertdata[f1] normal1 = fton(*finfo) fvertdata3, finfo, unused = self.beveled_fvertdata[f3] normal3 = fton(*finfo) vertdata = [(fvertdata1[v3], normal1), (fvertdata3[v3], normal3), (fvertdata3[v1], normal3), (fvertdata1[v1], normal1)] yield vertdata # black faces that replace the old faces for hf_face, hf_verts in c_faces: fvertdata1, finfo, unused = self.beveled_fvertdata[hf_face] normal1 = fton(*finfo) yield [(fvertdata1[v], normal1) for v in hf_verts] def gl_label_vertices(self, facesdata, faces, mirror_distance): if DEBUG_NOLABEL: return for faceno, normal, vertices in facesdata: fd = faces[faceno] color = fd.color if fd.imagemode: texrange = self.texranges_mosaic[faceno] else: texrange = get_texcoords_range(vertices, normal) texpos = (get_texcoords(v, normal, *texrange) for v in vertices) x1,y1,x2,y2 = fd.texrect texpos = [(tpx*(x2-x1) + x1, tpy*(y2-y1) + y1) for tpx, tpy in texpos] for (vertex, tp), baryc in self.triangulate_barycentric( len(vertices), zip(vertices, texpos)): yield vertex, normal, color, tp, baryc if mirror_distance is not None: offset = normal * mirror_distance mirror_normal = -normal for (vertex, tp), baryc in self.triangulate_barycentric( len(vertices), zip(vertices, texpos), reverse=True): yield vertex + offset, mirror_normal, color, tp, baryc def gl_black_vertices(self, facesdata): if DEBUG_NOBLACK: return for vertices in facesdata: for ivertex, normal in self.triangulate(vertices): yield ivertex, normal def gl_bevel_faces(self): width = self.bevel_width if width == 0: def bevel_points(ps): return {p: p for p in ps} else: def bevel_points(ps): def bevel_point(point1, point2, point3): point1 = self.vectors[point1] point2 = self.vectors[point2] point3 = self.vectors[point3] nd1 = (point1 - point2).normalised() nd2 = (point3 - point2).normalised() return point2 + (nd1 + nd2) * width / nd1.cross(nd2).length() lps = len(ps) return {p: bevel_point(ps[(i-1)%lps], p, ps[(i+1)%lps]) for i, p in enumerate(ps)} def face_normal(p1, p2, p3, *unused_args): p1 = self.vectors[p1] p2 = self.vectors[p2] p3 = self.vectors[p3] return (p3 - p2).cross(p1 - p2).normalised() return [(bevel_points(ps), (face_normal(*ps), cidx), (fid, picktype, ps)) for cidx, cfd in enumerate(self.facesdata) for fid, picktype, ps in cfd] def gl_debug_vertices(self, faces, mirror_distance): # yield vertices, colors # normals if DEBUG_DRAWNORMALS: for cidx, (c_faces_label, c_faces_black, c_edges, c_verts) in enumerate(self.blocksdata): for faceno, normal, vertices in self.bevel_cell_label(cidx, c_faces_label): fd = faces[faceno] color = fd.color vertex = sum(vertices, Vector()) / len(vertices) yield vertex, [0,0,0] yield vertex+normal, color if mirror_distance is not None: offset = normal * mirror_distance yield vertex+offset, [0,0,0] yield vertex+offset-normal, color # axes if DEBUG_DRAWAXES: for i, axis in enumerate(self.axes): symbol = self.symbols[i] faceno = self.faces.index(symbol) fd = faces[faceno] color = fd.color vaxis = Vector(axis)*self.sizes[i] yield -vaxis, [0,0,0] yield -vaxis+axis, color yield vaxis, [0,0,0] yield vaxis+axis, color # coordinates x = float(-self.sizes[0]) y = float(-self.sizes[1]) z = float(-self.sizes[2]) yield [x-1, y-1, z, -x, y-1, z], [255, 0, 0, 255, 0, 0] yield [x-1, y-1, z, x-1, -y, z], [0, 255, 0, 0, 255, 0] yield [x-1, y-1, z, x-1, y-1, -z], [0, 0, 255, 0, 0, 255] def gl_debug_vertices_2D(self): # selection (modelview) yield [0, 0, 0, 1, 1, 1], [255, 255, 255, 255, 255, 255] # selection (viewport) yield [0, 0, 0, 1, 1, 0], [255, 255, 0, 255, 0, 0] def gl_vertex_data(self, selection_mode, theme, mirror_distance): vertices = [] normals = [] colors = [] texpos = [] baryc = [] # list of [count vertices, face index] cnts_block = [] faces = [theme.faces[fk] for fk in self.facekeys] for cidx, (c_faces_label, c_faces_black, c_edges, c_verts) in enumerate(self.blocksdata): # bevel beveled_facesdata_label = self.bevel_cell_label(cidx, c_faces_label) beveled_facesdata_black = self.bevel_cell_black(cidx, c_faces_black, c_edges, c_verts) cnt = 0 # label vertices for v, n, c, t, b in self.gl_label_vertices(beveled_facesdata_label, faces, mirror_distance): vertices += v normals += n colors += c texpos += t baryc += b cnt += 1 # bevel, hidden labels for v, n in self.gl_black_vertices(beveled_facesdata_black): vertices += v normals += n #TODO: colors and texpos unused colors += (0,0,0) texpos += (0,0) baryc += (0,0,0) cnt += 1 cnts_block.append(cnt) idx_debug = len(vertices) // 3 cnt_debug = 0 if DEBUG_DRAW: assert len(cnts_block) == self.cell_count assert sum(cnts_block) == idx_debug for v, c in self.gl_debug_vertices(faces, mirror_distance): vertices += v colors += c cnt_debug = len(vertices) // 3 - idx_debug for v, c in self.gl_debug_vertices_2D(): vertices += v colors += c assert len(vertices) == len(colors) pickvertices, pickcolors, pickdata = self.gl_pick_data(selection_mode, mirror_distance) cnt_pick = len(pickvertices) // 3 vertices = array('f', vertices).tobytes() normals = array('f', normals).tobytes() colors = array('B', colors).tobytes() texpos = array('f', texpos).tobytes() barycentric = array('f', baryc).tobytes() pickvertices = array('f', pickvertices).tobytes() pickcolors = array('B', pickcolors).tobytes() vertexdata = vertices + normals + colors + texpos + barycentric + pickvertices + pickcolors debug('GL data: %d bytes' % len(vertexdata)) ptrnormals = len(vertices) ptrcolors = ptrnormals + len(normals) ptrtexpos = ptrcolors + len(colors) ptrbarycentric = ptrtexpos + len(texpos) ptrpickvertices = ptrbarycentric + len(barycentric) ptrpickcolors = ptrpickvertices + len(pickvertices) return ( self.cell_count, vertexdata, (ptrnormals, ptrcolors, ptrtexpos, ptrbarycentric, ptrpickvertices, ptrpickcolors), (cnts_block, idx_debug, cnt_debug, cnt_pick), self.rotation_matrices, ), pickdata def gl_pick_data(self, selection_mode, mirror_distance): # Pick TRIANGLES vertices vertices = [] colors = [] pickdata = [()] # list of (maxis, mslice, mdir, face, center, cellidx, symbol, arrowdir) for col, v in self.gl_pick_triangles(selection_mode, mirror_distance, pickdata): vertices += v colors += ((col>>4) & 0xf0, (col) & 0xf0, (col<<4) & 0xf0) assert len(vertices) == len(colors) return vertices, colors, pickdata empty_model = EmptyModel() pybik-3.0/pybiklib/gamestate.py0000664000175000017500000002125313167641176017012 0ustar barccbarcc00000000000000#-*- coding:utf-8 -*- # Copyright © 2009-2017 B. Clausius # # 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 . import os import pickle from contextlib import suppress from .model import empty_model from . import cubestate from .moves import MoveQueue class GameState: def __init__(self): self.mark_before = False self.initial_state = cubestate.CubeState(empty_model) self.initial_state.set_solved() self.current_state = self.initial_state.copy() self.move_sequence = MoveQueue() def copy(self): game = GameState() game.mark_before = self.mark_before game.initial_state = self.initial_state.copy() game.current_state = self.current_state.copy() game.move_sequence = self.move_sequence.copy() return game def set_state(self, model, blocks, moves, position): self.initial_state = cubestate.CubeState(model) try: self.initial_state.parse_block(blocks) except ValueError as e: print('Invalid block list:', *e.args) print(' start with solved game') self.initial_state.set_solved() self.current_state = self.initial_state.copy() self.move_sequence = MoveQueue() if moves.startswith('native:'): moves = moves.split(':', 1)[1].lstrip() else: moves = '' pos, unused_cpos = self.move_sequence.parse(moves, position, model) self.goto_next_pos(pos) def get_state(self): model = self.initial_state.model blocks = self.initial_state.format_block() moves, position = self.move_sequence.format(model) return model, blocks, 'native: ' + moves, position @staticmethod def _load_game_file(filename, mtype): data = None if filename is not None: try: with suppress(FileNotFoundError): with open(filename, 'rb') as datafile: data = pickle.load(datafile) except Exception as e: print('error while loading game {0}: {1.__class__.__name__}: {1}'.format(mtype, e)) if type(data) is not dict: data = {} data_games = None with suppress(KeyError): data_games = data['games'] if type(data_games) is not dict: data_games = {} data['games'] = data_games data_type = None with suppress(KeyError): data_type = data_games[mtype] if type(data_type) is not dict: data_type = {} data_games[mtype] = data_type return data, data_type def load(self, filename, model): unused_data, data_type = self._load_game_file(filename, model.type) blocks, moves, position = data_type.get(model.size, ('solved', '', 0)) self.set_state(model, blocks, moves, position) def save(self, filename): if filename is None: return model, blocks, moves, position = self.get_state() if model is empty_model: return basename = os.path.basename(filename) dirname = os.path.dirname(filename) if dirname and not os.path.exists(dirname): os.makedirs(dirname) data, data_type = self._load_game_file(filename, model.type) data_type[model.size] = blocks, moves, position import tempfile try: with tempfile.NamedTemporaryFile('wb', prefix=basename+'-temp-', dir=dirname, delete=False) as datafile: pickle.dump(data, datafile, protocol=4) os.rename(datafile.name, filename) except Exception as e: print('error while saving game {0}: {1.__class__.__name__}: {1}'.format(model.type, e)) @classmethod def migrate_1to2(self, filename, mtype, msize, blocks, moves, position): data, data_type = self._load_game_file(filename, mtype) data_type[msize] = blocks, moves, position try: with open(filename, 'wb') as datafile: pickle.dump(data, datafile, protocol=4) except Exception as e: print('error during migrantion of {0}: {1.__class__.__name__}: {1}'.format(mtype, e)) def random(self, count=-1): self.initial_state.set_solved() self.initial_state.random(count) self.current_state = self.initial_state.copy() self.move_sequence.reset() ### Funktions to control the cube for use in callbacks and plugins def step_back(self): '''One step back in the sequence of moves''' if self.move_sequence.at_start(): return None self.mark_before = self.move_sequence.is_mark_current() self.move_sequence.retard() move = self.move_sequence.current().inverted() self.current_state.rotate_slice(move) return move def step_next(self): '''One step forward in the sequence of moves''' move = self.move_sequence.current() if move: self.mark_before = self.move_sequence.is_mark_current() self.current_state.rotate_slice(move) self.move_sequence.advance() return move def set_next(self, move): '''Make one new move.''' self.move_sequence.push_current(move) def goto_prev_mark(self): if self.move_sequence.at_start(): return False while True: self.move_sequence.retard() move = self.move_sequence.current().inverted() self.current_state.rotate_slice(move) if self.move_sequence.is_mark_current(): break return True def goto_start(self): self.current_state = self.initial_state.copy() self.move_sequence.rewind_start() def goto_next_mark(self): move = self.move_sequence.current() while move: self.current_state.rotate_slice(move) self.move_sequence.advance() if self.move_sequence.is_mark_current(): break move = self.move_sequence.current() def goto_next_pos(self, pos): move = self.move_sequence.current() while move: if pos == self.move_sequence.current_place: break self.current_state.rotate_slice(move) self.move_sequence.advance() move = self.move_sequence.current() def set_code(self, code, pos): self.current_state = self.initial_state.copy() self.move_sequence.reset() pos, unused_cpos = self.move_sequence.parse(code, pos, self.current_state.model) self.goto_next_pos(pos) def add_moves(self, moves): for move in moves: self.current_state.rotate_slice(move) self.move_sequence.push(move) def add_code(self, code): for res in self.move_sequence.parse_iter(code, len(code), self.current_state.model): self.current_state.rotate_slice(res[0]) def set_plugin_mode(self, plugin_mode): ''' Set plugin mode append: append moves from the plugin to the game replace: replace initial state and moves challenge: replace initial state and clear moves, set the unsolved flag ''' self.plugin_mode = plugin_mode def recalc_current_state(self): self.current_state = self.initial_state.copy() pos = self.move_sequence.current_place self.move_sequence.rewind_start() self.goto_next_pos(pos) # game transformations def set_as_initial_state(self): self.initial_state = self.current_state.copy() self.move_sequence.truncate_before() # cube editing def swap_block(self, blockpos, maxis, mslice, mdir): self.initial_state.swap_block(blockpos, maxis, mslice, mdir) self.goto_start() def rotate_block(self, blockpos, rdir): self.initial_state.rotate_block(blockpos, rdir) self.goto_start() pybik-3.0/pybiklib/cubestate.py0000664000175000017500000002425513167635364017026 0ustar barccbarcc00000000000000#-*- coding:utf-8 -*- # Copyright © 2009-2015, 2017 B. Clausius # # 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 . import random from copy import deepcopy from .debug import DEBUG_MSG, DEBUG_RAND, DEBUG_ROTATE from .moves import MoveQueuePacked, MoveData # This class is currently used to store the initial state of the cube # and to provide the cube to plugins. class CubeState: rand = random.Random() if DEBUG_RAND: print('rand.seed(123)') rand.seed(123) def __init__(self, model): self.model = model self._blocksn = [] # list of (block-position, rotation-symbol) self._blocksr = [] # list of (block-index, rotation-symbol) # if self._blocksn[idx] == (pos, rot) # then self._blocksr[pos] == (idx, rot) def copy(self): other = CubeState(self.model) other._blocksn = deepcopy(self._blocksn) other._blocksr = deepcopy(self._blocksr) return other @property def rotations(self): return [(idx, self.model.rotation_indices[rot], rot) for pos, (idx, rot) in enumerate(self._blocksr)] def set_solved(self): # '' symbolic rotation for identity self._blocksn = [(i, '') for i in range(self.model.cell_count)] self._blocksr = [(i, '') for i in range(self.model.cell_count)] def is_solved(self): '''Check whether the cube is solved. Only test the colors of the visible faces. Cubes with rotated center faces are treated as solved. ''' face_colors = {} for blockpos, cells_visible_faces in enumerate(self.model.cells_visible_faces): for face in cells_visible_faces: color = self.get_colorsymbol(blockpos, face) try: color_ref = face_colors[face] except KeyError: face_colors[face] = color else: if color != color_ref: return False return True def is_solved_strict(self): '''Check whether the cube is solved. Test the rotation and position of the blocks. Cubes with rotated center faces are treated as not solved. ''' #FIXME: currently unused function, should be used for faces with images allrot = self._blocksn[0][1] for index, (pos, rot) in enumerate(self._blocksn): if rot != allrot: return False # Cubie rotated block = self.model.rotated_position[rot][index] if pos != block: return False # Cubie at wrong place return True def is_identity(self): for index, (pos, rot) in enumerate(self._blocksn): if index != pos or rot != '': return False return True def identify_rotation_blocks(self, maxis, mslice): if mslice == -1: for i, blockn in enumerate(self._blocksn): yield i, blockn else: for i, blockn in enumerate(self._blocksn): bslice = self.model.cell_indices[blockn[0]][maxis] if bslice == mslice: yield i, blockn def _rotate_slice(self, axis, slice_, dir_): if DEBUG_ROTATE: print('rotate axis={} slice={} dir={!s:5}\n blocks:'.format(axis, slice_, dir_), end=' ') for idx, (pos, rot) in self.identify_rotation_blocks(axis, slice_): if DEBUG_ROTATE: print('{}:{}{}'.format(idx, pos, rot), end='') pos, rot = self.model.rotate_symbolic(axis, dir_, pos, rot) if DEBUG_ROTATE: print('-{}{}'.format(pos, rot), end=' ') self._blocksn[idx] = pos, rot self._blocksr[pos] = idx, rot if DEBUG_ROTATE: print() def get_colorsymbol(self, blockpos, facesym): rot = self._blocksr[blockpos][1] return self.model.face_symbolic_to_face_color(facesym, rot) def get_colornum(self, blockpos, facesym): colorsym = self.get_colorsymbol(blockpos, facesym) return self.model.faces.index(colorsym) def format_block(self): # every block is stored as pos-sym, where sym is a symbolic rotation blocks = ['{}-{}'.format(pos, sym) for pos, sym in self._blocksn] return 'idx-rot: ' + ' '.join(blocks) __str__ = format_block def parse_block(self, blocks): if blocks == 'solved': return self.set_solved() bformat, blocks = blocks.split(':', 1) if bformat != 'idx-rot': raise ValueError('unknown block format:', bformat) blocks = blocks.strip().split(' ') if len(blocks) != self.model.cell_count: raise ValueError('wrong block count: %s, expected: %s' % (len(blocks), self.model.cell_count)) blocksn = [] for block in blocks: # every block is stored as idx-rot, where idx: index to blocklist, rot: symbolic rotation block = block.strip().split('-', 1) index, rot = block index = int(index) rot = self.model.norm_symbol(rot) blocksn.append((index, rot)) # test whether block indices is a permutation, # in fact thats not enough, e.g. swap a corner cubie with an edge, # also cubie rotation may be invalid, it can be possible that a # label is rotated inside the cube. for i1, i2 in enumerate(sorted(i for i, r in blocksn)): if i1 != i2: raise ValueError('block list is not a permutation') self._blocksn = blocksn self._blocksr = [None] * len(blocksn) for i, (pos, rot) in enumerate(blocksn): self._blocksr[pos] = (i, rot) def random(self, count=-1): sizes = self.model.sizes all_moves = [(a,s,d) for a,_sz in enumerate(sizes) for s in range(_sz) for d in (False,True)] randrange = self.rand.randrange if count < 0: count = 10 * len(all_moves) + randrange(len(all_moves)) if count: # The solved cube should be randomly rotated (lp: 1411999) for sym in self.rand.choice(self.model.rotation_symbols): self.rotate_slice(self.model.sym_to_move(sym)) packed = MoveQueuePacked() all_moves = [(a,s,d) for a,s,d in all_moves if self.model.is_user_slice(a, s)] for i in range(count): candidates = list(range(len(all_moves))) while candidates: maxis, mslice, mdir = all_moves[candidates.pop(randrange(len(candidates)))] packed.push_unpacked(MoveData(maxis, mslice, mdir), self.model) if packed.length_no_full(self.model) > i: self._rotate_slice(maxis, mslice, mdir) break packed.push_unpacked(MoveData(maxis, mslice, not mdir), self.model) else: break if DEBUG_MSG: print(count, 'random moves:', packed.format(self.model)[0]) def rotate_slice(self, move_data): self._rotate_slice(*move_data) def swap_block(self, blockpos1, maxis, mslice, mdir): if DEBUG_ROTATE: print('rotate axis={} slice={} dir={!s:5}\n from:'.format(maxis, mslice, mdir), end=' ') blockidx1, blockrot1 = self._blocksr[blockpos1] blockpos2, blockrot1r = self.model.rotate_symbolic(maxis, mdir, blockpos1, blockrot1) blockidx2, blockrot2 = self._blocksr[blockpos2] blockpos2r, blockrot2r = self.model.rotate_symbolic(maxis, not mdir, blockpos2, blockrot2) if DEBUG_ROTATE: print('{}:{}{}->{}{}\n to: {}:{}{}->{}{}'.format( blockidx1, blockpos1, blockrot1, blockpos2, blockrot1r, blockidx2, blockpos2, blockrot2, blockpos2r, blockrot2r)) assert blockpos2r == blockpos1 self._blocksn[blockidx1] = blockpos2, blockrot1r self._blocksr[blockpos2] = blockidx1, blockrot1r self._blocksn[blockidx2] = blockpos2r, blockrot2r self._blocksr[blockpos2r] = blockidx2, blockrot2r def rotate_block(self, blockpos, rdir): blockidx, blockrot = self._blocksr[blockpos] try: rot = self.model.inplace_rotations[blockpos][-1 if rdir else 0] except IndexError: # not every block can be rotated inline: e.g. edges and center faces on the 4×4×4-Cube, # edges and corners on towers and bricks #TODO: swap edge at pos n with the one at pos (size-1 - n), # rotate all center faces on the same ring return blockrot2 = self.model.norm_symbol(blockrot + rot) self._blocksn[blockidx] = blockpos, blockrot2 self._blocksr[blockpos] = blockidx, blockrot2 if DEBUG_ROTATE: sym1, colorsym1 = self.model.blockpos_to_blocksym(blockpos, blockrot) sym2, colorsym2 = self.model.blockpos_to_blocksym(blockpos, blockrot2) print('{}:{}{}->{}{} ({}:{}->{}:{})'.format(blockidx, blockpos, blockrot, blockpos, blockrot2, sym1, colorsym1, sym2, colorsym2)) self.debug_blocksymbols(allsyms=False) def debug_blocksymbols(self, allsyms): for blockpos, blockrot in self._blocksn: blocksym, colorsym = self.model.blockpos_to_blocksym(blockpos, blockrot) if allsyms or blocksym != colorsym: print(' {}:{}'.format(blocksym, colorsym), end='') print('') pybik-3.0/pybiklib/dialogs.py0000664000175000017500000004411313173050550016445 0ustar barccbarcc00000000000000#-*- coding:utf-8 -*- # Copyright © 2009, 2011-2017 B. Clausius # # 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 . import re import html from . import config from .settings import settings from .ext import qt #FIXME: buildlib.utils imports dialogs and the purepython version of qt with PyQt5 from .theme import Theme from .model import Model from .application import Meta #FIXME: Circular import: works because dialogs is imported only inside functions try: _ except NameError: _ = lambda t: t def linkedtext_to_html(text): html = qt.text_to_html(text) html = re.sub(r'<((?:http:|https:|text:).*?)\|>', r'
', html) html = re.sub(r'<\|>', r'', html) return re.sub(r'<((?:http:|https:).*?)>', r'<\1>', html) def init_preferences(sample_buffers): shader_names = {'lighting': _('Lighting'), 'simple': _('Simple'), #TRANSLATORS: labels are the colored stickers on the cube 'label': _('Labels')} facenames = [(_(name), key) for key, name in Model.cache_index['facenames']] qt.preferences_dialog(shader_names, sample_buffers, facenames, Theme.textures.get_icons()) def get_langname_from_code_func(): try: import icu except ImportError: print('PyICU is not installed') try: from .languages import languages except ImportError: print('No translations for language names') return lambda code: None else: from locale import getlocale, getdefaultlocale l = getlocale()[0] if l is None: l = getdefaultlocale()[0] if l is None: return lambda code: None try: languages = languages[l] except KeyError: try: languages = languages[l.split('_')[0]] except KeyError: return lambda code: None return lambda code: languages.get(code) else: def icu_langname_from_code(code): iculocale = icu.Locale.createFromName(code) lang = iculocale.getLanguage() if icu.Locale.createFromName(lang).getDisplayName() == lang: return None return str(iculocale.getDisplayName()) or None return icu_langname_from_code class ModelSelection (metaclass=Meta): def __init__(self): self.stack = [self.get_modeldata_main] self.pagedata = {} def get_modeldata_main(self): defaultindex = -1 defaultmtype = settings['game.type'] index = 0 modeldata_funcs = [None, self.get_modeldata_type1, self.get_modeldata_type2, self.get_modeldata_type3] factory_get_modeldata = lambda mtype, func: func and (lambda: func(mtype)) for mtype in Model.cache_index['types']: if mtype == defaultmtype: defaultindex = index size = Model.cache_index['type'][mtype]['defaultsize'] text = _(Model.cache_index['type'][mtype]['name']) thumbnail = '{}/thumbnails/{}-{}.png'.format(config.UI_DIR, mtype, 'x'.join(str(i) for i in size)) yield text, thumbnail, mtype, size, factory_get_modeldata(mtype, modeldata_funcs[len(size)]) index += 1 yield defaultindex yield _('Select Puzzle') def get_modeldata_type1(self, mtype): defaultindex = -1 defaultsize = settings['games',mtype,'size'] try: defaultsize = Model.cache_index['normsize'][mtype][defaultsize] except KeyError: defaultsize = Model.cache_index['type'][mtype]['defaultsize'] index = 0 for size in sorted(set(Model.cache_index['normsize'][mtype].values())): if size == defaultsize: defaultindex = index text = _(Model.cache_index['type'][mtype]['mformat']).format(*size) thumbnail = '{}/thumbnails/{}-{}.png'.format(config.UI_DIR, mtype, 'x'.join(str(i) for i in size)) yield text, thumbnail, mtype, size, None index += 1 yield defaultindex yield _(Model.cache_index['type'][mtype]['name']) def get_modeldata_type2(self, mtype): defaultindex = -1 defaultsize = Model.cache_index['type'][mtype]['defaultsize'] index = 0 factory_get_modeldata = lambda mtype, height: lambda: self.get_modeldata_typeheight2(mtype, height) for size in sorted(set(Model.cache_index['normsize'][mtype].values())): if size[0] == defaultsize[0] and size[2:] == defaultsize[2:]: if size == defaultsize: defaultindex = index #TRANSLATORS: 1 slice, 2 slices, 3 slices, ... text = ngettext('{} slice','{} slices',size[1]).format(size[1]) thumbnail = '{}/thumbnails/{}-{}.png'.format(config.UI_DIR, mtype, 'x'.join(str(i) for i in size)) yield text, thumbnail, mtype, size, factory_get_modeldata(mtype, size[1]) index += 1 yield defaultindex yield _(Model.cache_index['type'][mtype]['name']) def get_modeldata_type3(self, mtype): defaultindex = -1 defaultsize = Model.cache_index['type'][mtype]['defaultsize'] index = 0 factory_get_modeldata = lambda mtype, height: lambda: self.get_modeldata_typeheight3(mtype, height) for size1 in range(1,11): #FIXME: hardcoded limit try: size = Model.cache_index['normsize'][mtype][(size1, defaultsize[0], defaultsize[2])] except KeyError as e: print('hm', e) continue if size == defaultsize: defaultindex = index text = ngettext('{} slice','{} slices',size1).format(size1) thumbnail = '{}/thumbnails/{}-{}.png'.format(config.UI_DIR, mtype, 'x'.join(str(i) for i in size)) yield text, thumbnail, mtype, size, factory_get_modeldata(mtype, size1) index += 1 yield defaultindex yield _(Model.cache_index['type'][mtype]['name']) def get_modeldata_typeheight2(self, mtype, height): defaultindex = -1 defaultsize = settings['games',mtype,'size'] try: defaultsize = Model.cache_index['normsize'][mtype][defaultsize] except KeyError: defaultsize = Model.cache_index['type'][mtype]['defaultsize'] if defaultsize[1] != height: defaultsize = tuple((height if i==1 else s) for i,s in enumerate(defaultsize)) index = 0 for size in sorted(set(Model.cache_index['normsize'][mtype].values())): if size[1] == height: if size == defaultsize: defaultindex = index text = _(Model.cache_index['type'][mtype]['mformat']).format(*size) thumbnail = '{}/thumbnails/{}-{}.png'.format(config.UI_DIR, mtype, 'x'.join(str(i) for i in size)) yield text, thumbnail, mtype, size, None index += 1 yield defaultindex yield _(Model.cache_index['type'][mtype]['name'])+' – '+ngettext('{} slice','{} slices',height).format(height) def get_modeldata_typeheight3(self, mtype, height): defaultindex = -1 defaultsize = Model.cache_index['type'][mtype]['defaultsize'] if defaultsize[1] != height: defaultsize = tuple((height if i==1 else s) for i,s in enumerate(defaultsize)) index = 0 factory_get_modeldata = lambda mtype, height, width: lambda: self.get_modeldata_typeheightwidth3(mtype, height, width) for width in range(1,11): #FIXME: hardcoded limit try: size = Model.cache_index['normsize'][mtype][(width, height, defaultsize[2])] except KeyError: continue if size == defaultsize: defaultindex = index text = _('{}×{} slices').format(width, height) thumbnail = '{}/thumbnails/{}-{}.png'.format(config.UI_DIR, mtype, 'x'.join(str(i) for i in size)) yield text, thumbnail, mtype, size, factory_get_modeldata(mtype, height, width) index += 1 yield defaultindex yield _(Model.cache_index['type'][mtype]['name'])+' – '+ngettext('{} slice','{} slices',height).format(height) def get_modeldata_typeheightwidth3(self, mtype, height, width): defaultindex = -1 defaultsize = settings['games',mtype,'size'] try: defaultsize = Model.cache_index['normsize'][mtype][defaultsize] except KeyError: defaultsize = Model.cache_index['type'][mtype]['defaultsize'] if defaultsize[1] != height or defaultsize[0] != width: defaultsize = (width, height, defaultsize[2]) index = 0 for depth in range(1,11): #FIXME: hardcoded limit try: size = Model.cache_index['normsize'][mtype][(width, height, depth)] except KeyError: continue if size == defaultsize: defaultindex = index text = _(Model.cache_index['type'][mtype]['mformat']).format(*size) thumbnail = '{}/thumbnails/{}-{}.png'.format(config.UI_DIR, mtype, 'x'.join(str(i) for i in size)) yield text, thumbnail, mtype, size, None index += 1 yield defaultindex yield _(Model.cache_index['type'][mtype]['name'])+' – '+_('{}×{} slices').format(width, height) def on_model_get_modeldata(self, pageindex): assert pageindex >= 1, (pageindex, self.stack) func = self.stack[pageindex-1] try: items, defaultindex, title = self.pagedata[func] except KeyError: *items, defaultindex, title = func() self.pagedata[func] = [items, defaultindex, title] return items, defaultindex, title def on_model_back(self): if len(self.stack) > 1: self.stack.pop() return True return False def on_convert_to_mtype_size(self, pageindex, index): func = self.stack[pageindex-1] self.pagedata[func][1] = index unused_text, unused_thumbnail, mtype, size, func = self.pagedata[func][0][index] if func is None: return mtype, size else: self.stack[pageindex:] = [func] return None class ProgressDialog: def __init__(self): self.canceled_ = False self.value_max = 10 self.value = 0 def on_canceled(self): self.canceled_ = True #XXX: currently not used, so not translation needed print(('Canceling operation, please wait')) def tick(self, step, message=None, value_max=None): if message is not None: print(message) if value_max is not None: self.value_max = value_max self.value = 0 if step < 0 or self.value > self.value_max: print(' tick') else: print(' ', self.value, '/', self.value_max) self.value += step return self.canceled_ def done(self): self.canceled_ = False class DialogValues: @classmethod def get_text(self, string): return getattr(self, string)() helpstrings = [ #TRANSLATORS: The next strings form the text in the help dialog: # Title of the 1st paragraph _('Using the mouse to rotate the cube'), #TRANSLATORS: Text of the 1st paragraph, followed by bullet list items _('Position the mouse cursor over the puzzle and you will see an arrow ' 'that gives you a hint in which direction the slice under the mouse cursor will be rotated.'), _('The left mouse button rotates a single slice of the cube in the direction of the arrow.'), _('The right mouse button rotates a single slice of the cube against the direction of the arrow.'), _('To rotate the whole cube instead of a single slice press the Ctrl key together with the mouse button.'), #TRANSLATORS: Title of the 2nd paragraph _('Using the keyboard to rotate the cube'), #TRANSLATORS: Text of the 2nd paragraph, followed by bullet list items _('Make sure the keyboard focus is on the cube area (e.g. click on the background of the cube). ' 'The keys can be configured in the preferences dialog, the default is:'), #TRANSLATORS: before the item text is a list of keys _('Moves the left, right, upper, down, front or back slice clockwise.'), _('Moves a slice couterclockwise.'), _('Moves the whole cube.'), #TRANSLATORS: Title of the 3rd paragraph _('Other keys and buttons'), #TRANSLATORS: bullet list items of the 3rd paragraph _('Mouse wheel – Zoom in/out'), _('Arrow keys, Left mouse button on the background – Changes the direction of looking at the cube.'), _('Moves keyboard focus to the sequence editor above the cube area ' 'where you can edit the move sequence in the notation described below. ' 'Hit enter when done.'), #TRANSLATORS: Title of the 4th paragraph _('Notation for moves'), #TRANSLATORS: Text of the 4th paragraph, followed by bullet list items _('All moves, however they are made, are displayed progressively above the cube area:'), _('Moves the left, right, upper, down, front or back slice clockwise.'), _('Moves a slice couterclockwise.'), _('Moves the whole cube.'), _('Moves the first, second or third slice from left clockwise. ' 'The allowed numbers are in the range from 1 to the count of parallel slices. ' '"l1" is always the same as "l" ' 'and for the classic 3×3×3-Cube "l2" is the same as "r2-" and "l3" is the same as "r-".'), _('You can use a space to separate groups of moves.'), ] helpformat = '''

{}

{}

  • {}
  • {}
  • {}

{}

{}

  • 4,6,8,2,5,0 – {}
  • Shift+4, … – {}
  • Ctrl+4, … – {}

{}

  • {}
  • {}
  • Ctrl+L – {}

{}

{}

  • l, r, u, d, f, b – {}
  • l-, r-, u-, d-, f-, b- – {}
  • L, R, U, D, F, B – {}
  • l1, l2, l3 – {}
  • {}
''' @classmethod def help_text(self): return self.helpformat.format(*[html.escape(s) for s in self.helpstrings]) @staticmethod def about_website(): return '{}'.format(config.WEBSITE, _('Pybik project website')) _about_translators = None @classmethod def about_translators(self): if self._about_translators is not None: return self._about_translators html_template = ''' {}''' html_p_template = '

{}

' html_language_template1 = '{}' html_language_template2 = '{}' html_person_template = '{}' html_p_items = [] from .translators import translators langname_from_code = get_langname_from_code_func() import locale sortfunc = lambda v: locale.strxfrm(v[0]) def gentranslators(): for language, langcode, complete, persons in translators: language = langname_from_code(langcode) or language yield language, complete, persons for language, complete, persons in sorted(gentranslators(), key=sortfunc): language = html.escape(language) html_items = [(html_language_template1 if complete else html_language_template2).format(language)] for name, link in persons: name = html.escape(name) html_items.append(html_person_template.format(link, name)) html_p_items.append(html_p_template.format('
'.join(html_items))) self._about_translators = html_template.format(''.join(html_p_items)) return self._about_translators @staticmethod def about_contribute(): return linkedtext_to_html(config.get_filebug_text() +'\n\n\n'+ _(config.TRANSLATION_TEXT)) @staticmethod def about_license_short(): text = '\n\n'.join((_(config.LICENSE_INFO), _(config.LICENSE_FURTHER))) return linkedtext_to_html(text) @staticmethod def about_license_full(): try: with open(config.LICENSE_FILE, 'rt', encoding='utf-8') as license_file: text = license_file.read() text = linkedtext_to_html(text) except Exception as e: print('Unable to find license text:', e) text = '' return text @staticmethod def about_license_notfound(): text = _(config.LICENSE_NOT_FOUND) return linkedtext_to_html(text) pybik-3.0/pybiklib/theme.py0000664000175000017500000000456113141327113016125 0ustar barccbarcc00000000000000#-*- coding:utf-8 -*- # Copyright © 2009, 2011-2017 B. Clausius # # 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 . import os from glob import glob from collections import defaultdict from . import config from .ext import qt class Textures: max_size = 256 stock_dir = os.path.join(config.UI_DIR, 'images') def __init__(self): self.stock_images = {os.path.basename(f): None for f in glob(os.path.join(self.stock_dir, '*'))} self.empty_image = (1, 1, b'\x00\x00\x00\x00') def _get_stock_image(self, name): filename = os.path.join(self.stock_dir, name) self.stock_images[name] = image = qt.load_image_from_file(filename, self.max_size) return image def get_icons(self): return sorted(self.stock_images.keys()) def image_from_file(self, filename): if not filename: image = self.empty_image elif filename.startswith('/'): image = qt.load_image_from_file(filename, self.max_size) else: try: image = self.stock_images[filename] if image is None: image = self._get_stock_image(filename) except KeyError: image = None return image class FaceTheme: __slots__ = 'color imagemode image texrect'.split() class Theme: textures = Textures() def __init__(self): self.faces = defaultdict(FaceTheme) def load_face_image(self, facekey, filename): image = self.textures.image_from_file(filename) if image is None: self.faces[facekey].image = self.textures.empty_image return False self.faces[facekey].image = image return True pybik-3.0/pybiklib/moves.py0000664000175000017500000004353713167650611016174 0ustar barccbarcc00000000000000#-*- coding:utf-8 -*- # Copyright © 2009-2015, 2017 B. Clausius # # 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 . import re from collections import namedtuple from .debug import debug class MoveData (namedtuple('_MoveData', 'axis slice dir')): # pylint: disable=W0232 # axis = 0... # slice = 0...dim-1 or -1 for all slices # dir = 0 or 1 __slots__ = () def inverted(self): return self._replace(dir=not self.dir) # pylint: disable=E1101 def normalized_dirs(model, axis, dirs): symmetry = model.symmetries[axis] dirs = dirs % symmetry if dirs > symmetry // 2: dirs -= symmetry return dirs class MoveDataPacked (namedtuple('_MoveDataPacked', 'axis slice dirs')): # axis = 0... # slice = 0...dim-1, (-1 for all slices not allowed in some functions) # dirs = -symmetry/2...+symmetry/2, >0 CW <0 CCW __slots__ = () def __new__(self, maxis, mslice, mdirs, model=None): if model is not None: mdirs = normalized_dirs(model, maxis, mdirs) return super().__new__(self, maxis, mslice, mdirs) def length(self): return abs(self.dirs) def add_dirs(self, dirs, model): return self._replace(dirs=normalized_dirs(model, self.axis, self.dirs+dirs)) def unpack(self): mdir = self.dirs < 0 for unused in range(self.length()): yield self.axis, self.slice, mdir class _MoveQueueBase: class MoveQueueItem: def __init__(self, data, *, mark_after=False, code=None): assert isinstance(data, (MoveData, MoveDataPacked)) self.data = data self.mark_after = mark_after self.code = code axis = property(lambda self: self.data.axis) slice = property(lambda self: self.data.slice) dir = property(lambda self: self.data.dir) def copy(self): return self.__class__(self.data, mark_after=self.mark_after, code=self.code) def invert(self): self.data = self.data.inverted() def rotate_by(self, model, totalmove): rmove = model.rotate_move(totalmove.data, self.data) self.data = self.data.__class__(*rmove) self.code = None @classmethod def normalize_complete_moves(cls, model, totalmoves): for move in model.normalize_complete_moves(move.data for move in totalmoves): yield cls(MoveData(*move)) def update_fullmoves(self, model): self.data = self.data.update_fullmoves(model) def __init__(self): self.current_place = self._pos_0 self.moves = [] def copy(self): movequeue = self.__class__() movequeue.current_place = self.current_place movequeue.moves = [m.copy() for m in self.moves] return movequeue def __str__(self): return '{}(len={})'.format(self.__class__.__name__, len(self.moves)) class MoveQueue (_MoveQueueBase): _pos_0 = 0 @classmethod def new_from_code(cls, code, pos, model): moves = cls() mpos, cpos = moves.parse(code, pos, model) return moves, mpos, cpos def at_start(self): return self.current_place == 0 def at_end(self): return self.current_place == self.queue_length @property def _prev(self): return self.moves[self.current_place-1] @property def _current(self): return self.moves[self.current_place] @property def queue_length(self): return len(self.moves) def push(self, move_data, **kwargs): new_element = self.MoveQueueItem(MoveData(*move_data), **kwargs) self.moves.append(new_element) def push_current(self, move_data): if not self.at_end(): self.moves[self.current_place:] = [] self.push(move_data) def current(self): return None if self.at_end() else self._current.data def retard(self): if not self.at_start(): self.current_place -= 1 def rewind_start(self): self.current_place = 0 def forward_end(self): self.current_place = self.queue_length def truncate(self): self.moves[self.current_place:] = [] def truncate_before(self): self.moves[:self.current_place] = [] self.current_place = 0 def reset(self): self.current_place = 0 self.moves[:] = [] def advance(self): if not self.at_end(): self.current_place += 1 def swapnext(self): cp = self.current_place if cp+1 < self.queue_length: ma, mb = self.moves[cp], self.moves[cp+1] ma.code = mb.code = None ma.data, mb.data = mb.data, ma.data self.advance() def swapprev(self): cp = self.current_place if 0 < cp < self.queue_length: ma, mb = self.moves[cp-1], self.moves[cp] ma.code = mb.code = None ma.data, mb.data = mb.data, ma.data self.retard() def invert(self): # a mark at the end of the moves is discarded because a mark at start is not supported mark = False for move in self.moves: move.invert() move.code = None move.mark_after, mark = mark, move.mark_after self.moves.reverse() if not (self.at_start() or self.at_end()): self.current_place = len(self.moves) - self.current_place def normalize_complete_rotations(self, model): totalmoves = [] new_moves = [] for i, move in enumerate(self.moves): if i == self.current_place: self.current_place = len(new_moves) if move.slice < 0: totalmoves.append(move) else: for totalmove in reversed(totalmoves): move.rotate_by(model, totalmove) new_moves.append(move) totalmoves = list(self.MoveQueueItem.normalize_complete_moves(model, totalmoves)) self.moves = new_moves + totalmoves def push_packed(self, pmove): for move in pmove.data.unpack(): self.push(move) def normalize_moves(self, model): mqp = MoveQueuePacked() mqp_current_place = (0, 0) for i, move in enumerate(self.moves): if i == self.current_place: mqp_current_place = (len(mqp.moves)-1, mqp.moves[-1].data.length()) if mqp.moves else (0, 0) mqp.push_unpacked(move.data, model) mqp_moves = mqp.separate_full_moves(model) if len(self.moves) <= self.current_place: mqp_current_place = len(mqp_moves), 0 self.reset() for i, move in enumerate(mqp_moves): if i == mqp_current_place[0]: self.current_place = len(self.moves) + mqp_current_place[1] self.push_packed(move) if len(mqp_moves) <= mqp_current_place[0]: self.current_place = len(self.moves) def is_mark_current(self): return self.at_start() or self._prev.mark_after def is_mark_after(self, pos): return self.moves[pos].mark_after def mark_current(self, mark=True): if not self.at_start(): self._prev.mark_after = mark if self._prev.code is not None: self._prev.code = self._prev.code.replace(' ','') if mark: self._prev.code += ' ' def mark_and_extend(self, other): if not other.moves: return -1 self.mark_current() self.truncate() self.moves += other.moves return self.current_place + other.current_place def format(self, model): code = '' pos = 0 for i, move in enumerate(self.moves): if move.code is None: move.code = MoveFormat.format(move, model) code += move.code if i < self.current_place: pos = len(code) return code, pos def parse_iter(self, code, pos, model): code = code.lstrip(' ') queue_pos = self.current_place move_code = '' for i, c in enumerate(code): if move_code and MoveFormat.isstart(c, model): data, mark = MoveFormat.parse(move_code, model) if data is not None: #FIXME: invalid chars at start get lost, other invalid chars are just ignored self.push(data, mark_after=mark, code=move_code) yield data, queue_pos, i if i == pos: queue_pos = self.queue_length move_code = c else: move_code += c if i < pos: queue_pos = self.queue_length + 1 if move_code: data, mark = MoveFormat.parse(move_code, model) if data is not None: self.push(data, mark_after=mark, code=move_code) if len(code)-len(move_code) < pos: queue_pos = self.queue_length yield data, queue_pos, len(code) def parse(self, code, pos, model): queue_pos = 0 cpos = 0 for unused_data, queue_pos, code_len in self.parse_iter(code, pos, model): if cpos < pos: cpos = code_len return queue_pos, cpos class MoveQueuePacked (_MoveQueueBase): _pos_0 = (0, 0, 0) def length(self): i = 0 for move in self.moves: i += move.data.length() return i def axis_length(self, axis_dirs, axis, model): symmetry = model.symmetries[axis] if model.ignored_slice[axis] is None: vals = [0] * symmetry for m_dirs in axis_dirs: for s_base in range(symmetry): v = m_dirs + s_base if v > symmetry//2: v -= symmetry vals[s_base] += abs(v) minval = vals[0]+1 for i, v in enumerate(vals): if v < minval: f = i minval = v f = symmetry - f if f > symmetry//2: f -= symmetry return minval, f else: f = axis_dirs[model.ignored_slice[axis]] length = 0 for m_dirs in axis_dirs: v = m_dirs - f + symmetry if v > symmetry//2: v -= symmetry length += abs(v) return length, f def length_no_full(self, model): i = 0 axis = None axis_dirs = None for move in self.moves: if axis != move.data.axis: if axis is not None: i += self.axis_length(axis_dirs, axis, model)[0] axis = move.data.axis axis_dirs = [0] * model.sizes[axis] assert move.data.slice >= 0 assert axis_dirs[move.data.slice] == 0 axis_dirs[move.data.slice] = move.data.dirs if axis is not None: i += self.axis_length(axis_dirs, axis, model)[0] return i def _separate_full_moves(self, i_axis, j_axis, axis, fullmoves, model): if not fullmoves: return self.moves[i_axis:j_axis] mslice = 0 newmoves = [] for i in range(i_axis, j_axis): move = self.moves[i] for j in range(mslice, move.data.slice): moveitem = self.MoveQueueItem(MoveDataPacked(axis, j, -fullmoves, model)) newmoves.append(moveitem) assert axis == move.data.axis move.data = move.data.add_dirs(-fullmoves, model) newmoves.append(move) mslice = move.data.slice + 1 for j in range(mslice, model.sizes[axis]): moveitem = self.MoveQueueItem(MoveDataPacked(axis, j, -fullmoves, model)) newmoves.append(moveitem) moveitem = self.MoveQueueItem(MoveDataPacked(axis, -1, fullmoves)) newmoves.append(moveitem) return newmoves def separate_full_moves(self, model): i_axis = 0 axis = None axis_dirs = None newmoves = [] for i, move in enumerate(self.moves): if axis != move.data.axis: if axis is not None: fullmoves = self.axis_length(axis_dirs, axis, model)[1] newmoves += self._separate_full_moves(i_axis, i, axis, fullmoves, model) i_axis = i axis = move.data.axis axis_dirs = [0] * model.sizes[axis] assert move.data.slice >= 0 assert axis_dirs[move.data.slice] == 0, (axis_dirs, i, move.data.slice) axis_dirs[move.data.slice] = move.data.dirs if axis is not None: fullmoves = self.axis_length(axis_dirs, axis, model)[1] newmoves += self._separate_full_moves(i_axis, len(self.moves), axis, fullmoves, model) return newmoves def push_unpacked(self, move, model): # this function assumes that self.moves does not contain full moves, if move.slice < 0: # resolve full moves to slice moves for i in range(model.sizes[move.axis]): self.push_unpacked(MoveData(move.axis, i, move.dir), model) return i = len(self.moves) while True: if i <= 0: moveitem = None break # get item _moveitem = self.moves[i-1] parallel = model.parallel(_moveitem.data, move) if parallel == parallel.NO or parallel == parallel.LT: moveitem = None break moveitem = _moveitem i -= 1 if parallel == parallel.COMPAT: break assert parallel == parallel.GT # create new empty item if needed if moveitem is None: moveitem = self.MoveQueueItem(MoveDataPacked(move.axis, move.slice, 0)) self.moves.insert(i, moveitem) # combine move with the compatible moveitem.data assert move.axis == moveitem.data.axis moveitem.data = moveitem.data.add_dirs((-1 if move.dir else 1), model) # remove if empty if moveitem.data.dirs == 0: self.moves.pop(i) def format(self, model): mq = MoveQueue() for move in self.moves: mq.push_packed(move) return mq.format(model) class MoveFormat: # pylint: disable=W0232 re_flubrd = re.compile(r"(.)(\d*)(['-]?)([^ ]*)( *)(.*)") @classmethod def isstart(cls, char, model): return char.upper() in model.faces @staticmethod def intern_to_str_move(move, model): if move.slice <= -1: # Rotate entire cube if move.dir: mface = model.symbolsI[move.axis] if mface in model.faces: # opposite symbol not reversed return mface, '', '' # no opposite symbol mface = model.symbols[move.axis] mdir = '-' if move.dir else '' return mface, '', mdir elif move.slice*2 > model.sizes[move.axis]-1: mface = model.symbolsI[move.axis] if mface in model.faces: # slice is nearer to the opposite face mface = mface.lower() mslice = model.sizes[move.axis]-1 - move.slice mslice = str(mslice+1) if mslice else '' mdir = '' if move.dir else '-' return mface, mslice, mdir # no opposite face mface = model.symbols[move.axis].lower() mslice = str(move.slice+1) if move.slice else '' mdir = '-' if move.dir else '' return mface, mslice, mdir @classmethod def format(cls, move, model): mface, mslice, mdir = cls.intern_to_str_move(move, model) mark = ' ' if move.mark_after else '' move_code = mface + mslice + mdir + mark return move_code @staticmethod def str_to_intern_move(tface, tslice, tdir, model): mface = tface.upper() mslice = int(tslice or 1) - 1 mdir = bool(tdir) if mface not in model.faces: return None elif mface in model.symbols: maxis = model.symbols.index(mface) elif mface in model.symbolsI: maxis = model.symbolsI.index(mface) mslice = model.sizes[maxis]-1 - mslice mdir = not mdir else: assert False, 'faces is a subset of symbols+symbolsI' if mslice < 0 or mslice >= model.sizes[maxis]: return None if tface.isupper(): mslice = -1 return MoveData(maxis, mslice, mdir) @classmethod def parse(cls, move_code, model): tface, tslice, tdir, unused_err1, mark, unused_err2 = cls.re_flubrd.match(move_code).groups() mark = bool(mark) move = cls.str_to_intern_move(tface, tslice, tdir, model) if move is None: debug('Error parsing formula') return move, False return move, mark pybik-3.0/pybiklib/pluginlib.py0000664000175000017500000005065613167651566017042 0ustar barccbarcc00000000000000#-*- coding:utf-8 -*- # Copyright © 2009, 2011-2017 B. Clausius # # 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 . import os import sys import importlib from collections import namedtuple, OrderedDict from .debug import debug, DEBUG_MSG, DEBUG_ALG, DEBUG_LIVEPLUGINS from . import config from . import model FILE_FORMAT = 'Pybik Plugins Collection - Version 2.0' FILE_SIG = 'Format: ' + FILE_FORMAT class PluginFileError (Exception): pass class PluginSolverAbort (Exception): pass class PluginModelCompatError (Exception): pass class PluginFileLoader: def __init__(self, filename): # field name: (required, singleline, convert-func) parse_pass = lambda value, lineno, comment: value self.header_scheme = { 'Format': (True, True, self.parse_version), 'Copyright': (False, False, parse_pass), 'License': (False, False, parse_pass), 'Model': (False, False, self.parse_model), 'Ref-Blocks': (False, True, self.parse_refblocks), } self.body_scheme = { 'Path': (True, True, self.parse_path), 'Depends': (False, False, parse_pass), 'Model': (True, False, self.parse_model), 'Ref-Blocks': (False, True, self.parse_refblocks), 'Solution': (False, False, self.parse_solution), 'Moves': (False, False, self.parse_moves), 'Module': (False, True, self.parse_module), } self.conflicts = [('Solution', 'Moves', 'Module'), ('Depends', 'Moves', 'Module')] self.paras = [] self.header = None self.body = [] self.load(filename) self.parse() def load(self, filename): debug('loading plugin-file', repr(filename)) with open(filename, 'rt', encoding='utf-8') as fp: lines = fp.readlines() # parse file para = {} key = None comment = None for lineno, line in enumerate(lines): line = line.rstrip() if not line: # end para if not self.paras and not para: raise PluginFileError('File must not start with empty line.') self.paras.append(para) para = {} comment = None elif line[0] == '#': # comment if not self.paras and not para: raise PluginFileError('File must not start with comment.') comment = line elif line[0] in ' \t': if not para: raise PluginFileError('Paragraph must not start with indented line.') line = line.strip() if line[0] != '#': # multiline para[key][0].append(line) comment = None else: if not self.paras and not para and line.rstrip() != FILE_SIG: raise PluginFileError('File must start with:', FILE_SIG) key, value = line.split(':') value = value.strip() para[key] = [value] if value else [], lineno, comment comment = None if para: self.paras.append(para) @staticmethod def parse_version(value, unused_lineno, unused_comment): if value != FILE_FORMAT: raise PluginFileError('wrong file version:', value) return value @staticmethod def parse_model(modelstrings, unused_lineno, unused_comment): model_infos = [] for modelstr in modelstrings or []: try: model_info = model.Model.from_string(modelstr) except ValueError as e: debug('Error in model %s:' % modelstr, e) else: model_infos.append(model_info) return model_infos @staticmethod def parse_refblocks(value, unused_lineno, unused_comment): return value and [[v, v] for v in value.upper().split()] @staticmethod def parse_path(value, lineno, comment): if not value: raise PluginFileError('empty path') sep = value[0] if sep == '@': return value, None, lineno, comment def _translate(value): transl = True for v in value.strip(sep).split(sep): if not v: continue if transl is True: if v == '_': transl = True elif v == 'P_': transl = 'sing' elif v == '!_': transl = False else: yield v, _(v) elif transl is False: yield v, v transl = True elif transl == 'sing': vs = v transl = 'plural' elif transl == 'plural': vp = v transl = 'n' elif transl == 'n': try: vi = int(v) except ValueError: raise PluginFileError('Third value after P_ must be int.') yield (vs if vi==1 else vp).format(v), ngettext(vs, vp, vi).format(v) return value, tuple(_translate(value)), lineno, comment @staticmethod def parse_solution(value, unused_lineno, unused_comment): def split_solution(value): try: conditions, moves = value.split(',') except ValueError: raise PluginFileError('expected exactly one comma in: ' + value) conditions = conditions.strip().upper().split() conditions = [c.split('=') for c in conditions] for c in conditions: if len(c) != 2: raise PluginFileError('expected exactly one "=" in: ' + '='.join(c)) return value, conditions, moves.strip() return value and [split_solution(v) for v in value if v] @staticmethod def parse_moves(value, unused_lineno, unused_comment): if value is None: return None moves = ' '.join(value) def func(game): game.move_sequence.reset() game.add_code(moves) game.set_plugin_mode('append') return func @staticmethod def parse_module(value, unused_lineno, unused_comment): if value is None: return None value = value.split(',') if len(value) != 2: raise PluginFileError('Wrong Syntax in Module field, expected: module.func, flag') value, flag = value modulename, funcname = value.rstrip().rsplit('.', 1) from . import plugins moduleobj = importlib.import_module('.'+modulename, plugins.__package__) modulefunc = getattr(moduleobj, funcname) flag = flag.strip() if flag not in ['append', 'replace', 'challenge']: raise PluginFileError('Unknown flag %s for module' % flag) def func(game): if flag == 'append': game.move_sequence.reset() modulefunc(game) game.set_plugin_mode(flag) return func def parse(self): if not self.paras: raise PluginFileError('empty plugin file') self.header = self.paras.pop(0) default = {k:v for k,v in self.header.items() if k in self.header_scheme and k in self.body_scheme} self.parse_para(self.header, self.header_scheme) def check_conflicts(para): for conflicts in self.conflicts: if sum(int(c in para) for c in conflicts) > 1: debug('Only one field allowed of:', ', '.join(conflicts)) debug('Skipping paragraph %s in plugin file' % para.get('Path')) return False return True while self.paras: para = self.paras.pop(0) if not para: continue if DEBUG_ALG: debug(' Path:', para.get('Path')) if not check_conflicts(para): continue for k, v in default.items(): para.setdefault(k, v) try: self.parse_para(para, self.body_scheme) except PluginFileError as e: debug('Skipping paragraph in plugin file:', e, 'keys:', *para.keys()) else: self.body.append(para) self.paras = None @staticmethod def parse_para(para, scheme): for key, (required, singleline, convert_func) in scheme.items(): try: value, lineno, comment = para[key] except KeyError: if required: raise PluginFileError('missing required field {!r}'.format(key)) else: value, lineno, comment = None, None, None if singleline and value is not None: if len(value) == 0: value = None elif len(value) == 1: value = value[0] else: raise PluginFileError('{!r} is a singleline field, but {} lines found'.format(key, len(value))) para[key] = convert_func(value, lineno, comment) class PluginHelper: def __init__(self): self.scripts = OrderedDict() @staticmethod def test_model(model, models): for unused_modelstr, mtype, sizes, exp in models: if mtype == '*': return True if mtype is None: continue if model.type != mtype: continue sizedict = {} for size1, size2 in zip(sizes, model.sizes): if size1 is None: continue if type(size1) is int: if size1 != size2: break else: sizedict[size1] = size2 else: try: if exp is None or eval(exp, {}, sizedict): return True except ValueError: continue return False def get_function(self, model, index): all_models = [] for models, func in list(self.scripts.values())[index]: if self.test_model(model, models): assert func is not None return func all_models += models else: # all model rejected all_models = [model_[0] for model_ in all_models if model_[1] is not None] if not all_models: raise PluginModelCompatError(_('This plugin does not work for any model.')+'\n') elif len(all_models) == 1: raise PluginModelCompatError(_('This plugin only works for:') + '\n ' + all_models[0]) else: raise PluginModelCompatError( _('This plugin only works for:') + '\n' + '\n'.join([' • ' + m for m in all_models]) ) def load_plugins_from_directory(self, dirname): if DEBUG_MSG or DEBUG_LIVEPLUGINS: print('loading plugins from', repr(dirname)) for filename in sorted(os.listdir(dirname), key=str.lower): unused_name, ext = os.path.splitext(filename) if ext != '.plugins': continue if DEBUG_ALG: debug(' plugins:', filename) try: self.load_plugins_from_file(os.path.join(dirname, filename)) except Exception: sys.excepthook(*sys.exc_info()) def load_plugins(self): self.scripts.clear() for dirname in [config.PLUGINS_DIR, config.get_data_home(config.PACKAGE, 'plugins')]: if os.path.isdir(dirname): debug('Found plugins path:', dirname) self.load_plugins_from_directory(dirname) else: debug('Plugins path does not exist:', dirname) if DEBUG_ALG: debug('found', len(self.scripts)) return [(path, i) for i, path in enumerate(self.scripts.keys())] @staticmethod def resolve_depends(params): depends = [] # resolve dependencies to other scripts for depend in params.depends: for path, unused_models, instance in params.scripts: if path == depend: depends += instance.params.depends depends.append(depend) if DEBUG_ALG: debug(' Resolve dependencies for:', params.path) if params.depends != depends: debug(' before:', params.depends) debug(' after: ', depends) params.depends[:] = depends # resolve dependencies to params for path, unused_models, instance in params.scripts: depends = [] for depend in instance.params.depends: if params.path == depend: depends += params.depends depends.append(depend) if DEBUG_ALG: debug(' Resolve dependencies for:', path) if instance.params.depends != depends: debug(' before:', instance.params.depends) debug(' after: ', depends) instance.params.depends[:] = depends def load_plugins_from_file(self, filename, solutionfactory=None): try: file = PluginFileLoader(filename) except PluginFileError as e: print('Skipping plugin file:', e) return scripts = [] for para in file.body: path, pathitems, *unused = para['Path'] models = para['Model'] depends = para['Depends'] solution = para['Solution'] moves = para['Moves'] module = para['Module'] if depends or solution: params = ScriptParams( depends=depends or [], precond=para['Ref-Blocks'] or [], solution=solution, scripts=scripts, path=path, ) self.resolve_depends(params) func = (solutionfactory or Solution)(params) elif moves is not None: func = moves elif module is not None: func = module else: debug(' skip Path without plugin:', path) continue scripts.append((path, models, func)) if pathitems is not None: funclist = self.scripts.setdefault(pathitems, []) funclist.append((models, func)) ScriptParams = namedtuple('ScriptParams', 'depends precond solution scripts path') class Solution: def __init__(self, params): self.solved_face_colors = {} self.params = params def __call__(self, game): game.move_sequence.reset() scripts = {path: func for path, models, func in self.params.scripts} for depend in self.params.depends: instance = scripts[depend] self.execute(game, instance.params) self.execute(game, self.params) game.set_plugin_mode('append') def test_face(self, cube, blockpos, position, condition): color1 = cube.get_colorsymbol(blockpos, position) color2 = self.solved_face_colors.setdefault(condition, color1) return color1 == color2 def test_basic_condition(self, cube, position, condition): assert len(position) == len(condition) blockpos = cube.model.blocksym_to_blockpos(position) for pos, cond in zip(position, condition): if not self.test_face(cube, blockpos, pos, cond): return False return True @staticmethod def opposite(face): #FIXME: this only works for BrickModel return { 'F': 'B', 'B': 'F', 'L': 'R', 'R': 'L', 'U': 'D', 'D': 'U', }[face] def test_pattern_condition(self, cube, position, condition): if '?' in condition: conditions = (condition.replace('?', face, 1) for face in 'FLUBRD' if face not in condition if self.opposite(face) not in condition) return self.test_or_conditions(cube, position, conditions) else: return self.test_basic_condition(cube, position, condition) @staticmethod def rotated_conditions(condition): for i in range(len(condition)): yield condition[i:] + condition[:i] def test_prefix_condition(self, cube, position, condition): if condition.startswith('!*'): return not self.test_or_conditions(cube, position, self.rotated_conditions(condition[2:])) elif condition.startswith('*'): #TODO: Instead of testing only rotated conditions, test all permutations. # This should not break existing rules, and would allow to match # e.g. dfr and dfl. Could be done by comparing sorted strings after # expanding patterns. return self.test_or_conditions(cube, position, self.rotated_conditions(condition[1:])) elif condition.startswith('!'): return not self.test_pattern_condition(cube, position, condition[1:]) else: return self.test_pattern_condition(cube, position, condition) def test_or_conditions(self, cube, position, conditions): for prefix_cond in conditions: if self.test_prefix_condition(cube, position, prefix_cond): return True return False def test_and_conditions(self, cube, conditions): for position, or_cond in conditions: if not self.test_or_conditions(cube, position, or_cond.split('|')): return False return True def execute(self, game, params): rules = params.solution if rules is None: return cube = game.current_state count = 0 pos = 0 if DEBUG_ALG: print('{}:'.format(params.path)) print(' ', cube) while pos < len(rules): self.solved_face_colors.clear() rule, conditions, moves = rules[pos] if self.test_and_conditions(cube, params.precond + conditions): if DEBUG_ALG: print(' accept: {:2}. {}'.format(pos+1, rule)) if moves == '@@solved': return if moves == '@@unsolvable': raise PluginSolverAbort(_('This puzzle is not solvable.')) if count > 4 * len(rules): # this value is just guessed raise PluginSolverAbort( 'An infinite loop was detected. ' 'This is probably an error in the solution.') count += 1 game.add_code(moves) pos = 0 else: if DEBUG_ALG: print(' reject: {:2}. {}'.format(pos+1, rule)) pos += 1 raise PluginSolverAbort( 'No matching rules found. ' 'This is probably an error in the solution.') pybik-3.0/README0000644000175000017500000000562613173167575013550 0ustar barccbarcc00000000000000 About Pybik 3.0 =============== Pybik is a 3D puzzle game about the cube invented by Ernő Rubik. * Various 3D puzzles, such as cubes, towers, prisms, tetrahedra, octahedra, dodecahedra and many more * Solvers for some puzzles * Pretty patterns * Editor for move sequences * Custom colors and images on the surface of the puzzles Author: B. Clausius License: GPL-3.0+ Project page: Installation ============ If Pybik is available for your distribution, you should install Pybik with a package manager. Otherwise see the file INSTALL for installation instructions. Feedback ======== If you find any bugs in Pybik or have a suggestion for an improvement then please submit a bug report [1]. [1] Translation =========== Translations are managed by the Launchpad translation group [2]. If you want help to translate Pybik to your language you can do it through the web interface [3]. Read more about "Translating with Launchpad" [4] and "Starting to translate" [5]. [2] [3] [4] [5] License ======= 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 . Hidden Features =============== You can change shortcuts for some menu items and actions: Action | Menuitem | Default ----------------------------------------------------- selectmodel | Game->Select Model | Ctrl+M initial_state | Edit->Set as Initial State | None reset_rotation | Edit->Reset Rotation | Ctrl+R preferences | Edit->Preferences | Ctrl+P edit_moves | None (Select moves editor) | Ctrl+L edit_cube | None (Cube editor) | None Append the following lines with the shortcuts changed as you like to your Pybik config file (~/.config/pybik/settings.conf): action.selectmodel = 'Ctrl+M' action.initial_state = '' action.reset_rotation = 'Ctrl+R' action.preferences = 'Ctrl+P' action.edit_moves = 'Ctrl+L' action.edit_cube = '' The cube editor is a immature feature. To use it anyway, you must assign a shortcut to the action edit_cube. In cube editor mode swap cubies with left mouse button and rotate cubies with Ctrl and left mouse button. pybik-3.0/NEWS0000664000175000017500000000465313173167506013362 0ustar barccbarcc00000000000000Pybik 3.0 (2017-10-22): * New puzzles: Octahedron and Dodecahedron * Improved User-Interface * Support for OpenGLES v2 * Misc improvements * Complete translations: English (AE and BE), Galician, German, Malay, Ukrainian * Partial translations: French, Italian, Finnish, Russian, Spanish, Uzbek, Hebrew, Greek, Asturian, Bulgarian, Czech, Bosnian, Polish, Portuguese (Brazil), Chinese (Taiwan), Kabyle Pybik 2.1 (2015-07-29): * New puzzles: Triangular Prisms and Pentagonal Prisms * For each puzzle type, the game is saved independently * Misc improvements * Updated translations Pybik 2.0 (2015-04-27): * New puzzle: Tetrahedron * New solution: Beginner's method * Added move transformations * Other new and improved plugins * Improved rendering engine * Added simple help Pybik 1.1.1 (2014-02-11): * New and updated translations * Misc bugfixes and improvements Pybik 1.1 (2013-06-16): * Rendering engine now uses modern OpenGL - should be faster on most systems - improved lighting effect * New and updated translations Pybik 1.0.1 (2013-02-02): * Minor improvements and bugfixes * Updated translations Pybik 1.0 (2013-01-08): * Improved user interface. * Added Towers and Bricks (non cubic puzzles). * Added an option to show the back faces. * The cube can be manipulated with the keyboard. * Animation is faster and rendering more beautiful. * Added more pretty patterns. * Added a new solver. * Added new translations. Pybik 0.5 (2012-01-06): * New solutions: - Spiegel improved - Solution for the 2×2×2 Cube * New file format for solutions * Improved mouse control - Mouse button with control key rotates the whole cube - Right button moves in the opposite direction * Changeable background color Pybik 0.4 (2011-07-06): This release does not contain many new features. Most of the changes took place under the hood. A new solution (Spiegel) has been added. Pybik 0.3 (2009-12-17): * Text field to edit moves in a notation similar to Singmaster's * The state of the cube and the moves are now stored between sessions * Some sequences for pretty patterns in the sidebar Pybik 0.2 (2009-08-24): * Preferences are stored with GConf * UI Improvements and bugfixes Pybik 0.1 (2009-08-06): * Port from gnubik-2.3 to Python * Sidebar for Actions * Redesigned color dialog * Improvements in cube rendering pybik-3.0/copyright0000644000175000017500000000522513173167575014616 0ustar barccbarcc00000000000000Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Upstream-Name: Pybik Upstream-Contact: B. Clausius Source: https://launchpad.net/pybik/+download Comment: Originally this package was derived from GNUbik 2.3 and ported from C to Python. Authors of GNUbik: * John Mark Darrington is the main author and maintainer of GNUbik. * Dale Mellor Files: * Copyright: 2009-2017 B. Clausius License: GPL-3.0+ Files: data/ui/images/BEAMED?EIGHTH?NOTES.png data/ui/images/ATOM?SYMBOL.png data/ui/images/SNOWFLAKE.png data/ui/images/WHITE?SUN?WITH?RAYS.png Copyright: 2002-2010 Free Software Foundation 2012 B. Clausius License: GPL-3.0+ Comment: Images created from font FreeSerif: U+266B BEAMED EIGHTH NOTES U+269B ATOM SYMBOL U+2744 SNOWFLAKE Image created from font FreeMono: U+263C WHITE SUN WITH RAYS Files: data/ui/images/SHAMROCK.png data/ui/images/SKULL?AND?CROSSBONES.png data/ui/images/PEACE?SYMBOL.png data/ui/images/YIN?YANG.png data/ui/images/BLACK?SMILING?FACE.png data/ui/images/WHITE?SMILING?FACE.png Copyright: DejaVu Authors 2012 B. Clausius License: public-domain The DejaVu fonts are a font family based on the Vera Fonts. License of DejaVu (http://dejavu-fonts.org/wiki/Main_Page): Fonts are © Bitstream (…). DejaVu changes are in public domain. …. Glyphs imported from Arev fonts are © Tavmjung Bah (…). . The used symbols where added in version 2.4 as stated by DejaVu in the file status.txt and therefore are in the public domain. Comment: Images were created from font DejaVu-Sans-Oblique: U+2618 SHAMROCK U+2620 SKULL AND CROSSBONES U+262E PEACE SYMBOL U+262F YIN YANG U+263A WHITE SMILING FACE U+263B BLACK SMILING FACE License: GPL-3.0+ 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 . . The full text of the GPL is distributed in the original source archive in the file COPYING.